Mobirise Website Builder

Bem Vindo

Ao final desta disciplina, os alunos serão capazes de:
• Compreender alguns conceitos fundamentais de lógica de programação e algoritmos
• Desenvolver raciocínio lógico estruturado para resolução de problemas
• Criar e executar algoritmos simples utilizando o VisuAlg
• Implementar estruturas de controle (condicionais e repetições)
• Trabalhar com variáveis, tipos de dados e operadores
• Analisar e otimizar algoritmos básicos

A lógica

Mobirise Website Builder

A lógica é a ciência que estuda as formas válidas de raciocínio e argumentação.

Ela é fundamental em várias áreas do conhecimento, incluindo a matemática, a filosofia e a ciência da computação.

Lógica é a base do pensamento estruturado e racional.

Na programação, a lógica é essencial para a criação de algoritmos e para a resolução de problemas de forma eficiente.

Mobirise Website Builder

Usando a Lógica para criar um ambiente de estudo organizado.

-Para estudar, é necessário um local adequado.
-Uma mesa organizada ajuda a manter o foco.
-Ter os materiais necessários à disposição evita distrações.
-Um ambiente silencioso facilita a concentração


Mobirise Website Builder

A lógica de programação (ou, por extensão, lógica computacional) é uma forma de organizar pensamentos que permite a tradução do raciocínio lógico humano para a linguagem das máquinas, permitindo que elas realizem alguma determinada tarefa.

Lógica

Lógica por associação de ideias.

-Um celular sem bateria não pode ser usado.
-Um carro sem combustível não anda.
-Um aluno sem estudar pode ter dificuldades na prova.

Relação lógica entre elementos.

-Todos os smartphones são dispositivos eletrônicos.
-O celular que você usa é um smartphone.
-Logo, seu celular é um dispositivo eletrônico.

Pensamento Computacional - 4 pilares

Decomposição

A decomposição consiste em quebrar um problema complexo em partes menores e mais gerenciáveis. Isso facilita a análise e a resolução, pois fica mais fácil lidar com cada parte separadamente.

Problema principal: Fazer um café
  • Pegar a cafeteira
  • Colocar água
  • Colocar o pó de café
  • Ligar a cafeteira
  • Aguardar
  • Servir
Problema principal: Calcular a média final de um aluno
  • Ler a primeira nota
  • Ler a segunda nota
  • Somar as notas
  • Dividir por 2
Problema principal: Calcular o valor total da compra
  • Ler o preço do primeiro produto
  • Ler o preço do segundo produto
  • Ler o preço do terceiro produto
  • Somar os três preços
  • Mostrar o valor total

Isso mostra que algoritmo não nasce no computador — nasce na organização do pensamento.

Abstração

A abstração é o processo de remover detalhes desnecessários e focar apenas no que realmente importa para resolver um problema.

Cadastro de aluno – Situação real
  • Nome
  • Idade
  • Altura
  • Cor do cabelo
  • Número do tênis
  • CPF
  • Nota
Pergunta do problema

Quero saber se o aluno foi aprovado.

Aplicando abstração: para saber aprovação, só importa a nota. Todo o resto é descartado.

Uso do smartphone – Situação real

Quando você faz uma ligação,Você não pensa em:

  • Antenas
  • Satélites
  • Protocolos
Você só usa:
  • Número
  • Clicar em Chamar

Isso também é abstração.Abstrair é enxergar apenas o que resolve o problema.

Mobirise Website Builder
Reconhecimento de Padrões

O reconhecimento de padrões consiste em identificar semelhanças entre problemas diferentes para reutilizar soluções já conhecidas.

Exemplo 1 — Média de notas (padrão de soma + divisão)

Problemas diferentes

  • Média de aluno
  • Média de salários
  • Média de temperaturas
Apesar de serem situações diferentes, o padrão é o mesmo:
  • Ler valores
  • Somar
  • Dividir pela quantidade

Aprendendo um padrão, você resolve vários exercícios.

Mobirise Website Builder
Algoritmos

Um algoritmo é uma sequência lógica, finita e bem definida de passos que devem ser seguidos para resolver um problema ou realizar uma tarefa.
Algoritmo é organizar o pensamento em passos.

Algoritmo

Consistem em uma série de instruções, raciocínios ou operações que visam um objetivo, em geral a solução de um problema.

Algoritmo é a aplicação da lógica para resolver um problema específico. 

Para isso, essa série de instruções deve ser finita e operada de maneira sistemática; é um processo sistemático para a resolução de um problema ou uma sequência
ordenada de passos a ser observada para a realização de uma tarefa.

Não é só no ambiente digital que os algoritmos estão presentes.

Você provavelmente já os usou em diversos momentos da sua vida. 

Mobirise Website Builder

Tipos de Algoritmo:

1-Descrição Narrativa

Consiste em :
1- Analisar a descrição do problema;
2- Escrever em uma linguagem natural o passo a passo a ser seguido para a resolução do problema.
A vantagem da utilização desse tipo de algoritmo está na facilidade, pois usa uma língua natural, como o português.
A desvantagem é que, a língua natural é passível de interpretações diferentes, o que pode dificultar na transcrição do algoritmo para o programa.

2-Fluxograma

Consiste em:
1- Analisar a descrição do problema e escrever o passo a passo
2- Criar uma solução através de símbolos gráficos pré-definidos.
A vantagem do uso desse tipo de algoritmo está no entendimento facilitado pela utilização de elementos gráficos.

3-Pseudocódigo

Pseudocódigo ou Linguagem de Programação é uma linguagem escrita e formal que especifica um conjunto de instruções e regras usadas para gerar programas (software / aplicativos). Um software pode ser desenvolvido para rodar em um computador, dispositivo móvel ou em qualquer equipamento que permita sua execução.

Mobirise Website Builder
Lógica e Algoritmo ( descrição narrativa )

Lógica: Para escovar os dentes, é necessário usar pasta de dente e uma escova.
Algoritmo:
1-Pegar a escova de dentes.
2-Colocar pasta de dente na escova.
3-Escovar os dentes por alguns minutos.
4-Enxaguar a boca.
5-Guardar a escova de dentes.

Mobirise Website Builder
Lógica e Algoritmo ( descrição narrativa )

Lógica: Você sabe que, para cozinhar qualquer macarrão, precisa de água quente e um tempo de cozimento adequado.
Algoritmo:
1-Pegar um pacote de miojo.
2-Esquentar a água.
3-Colocar o miojo na panela.
4-Esperar 3 minutos.
5-Adicionar o tempero e misturar.
6-Comer desesperadamente.


Podemos dizer que a lógica ajuda a entender o problema e encontrar soluções e algoritmo organiza essas ideias em passos organizado para resolver o problema e/ou atingir o objetivo .


O ato de ir ao cinema , fazer um café, lavar um carro, tomar um banho, postar uma foto no Instagram, pedir comida por um aplicativo, criar uma playlist no Spotify ou YouTube Music, configurar um celular novo, fazer um PIX  torna-se comum quando precisamos executá-los,  com  horários , locais estabelecidos, configurações definidas (valores conhecidos, modelos, regras etc) e assim criamos uma rotina em cima dessas tarefas.
Desta maneira,  usando a forma descritiva, podemos demonstrar esta ação em um simples algoritmo não estruturado.

Fazer café

 Esquentar a água.
 Colocar o filtro no suporte.
 Colocar o pó de café no filtro.
Despejar a água quente no filtro.
Esperar o café coar.
Servir na xícara e beber.

Tomar banho

Ligar o chuveiro.
Pegar a roupa. 
Ensaboar o corpo.
Pegar a toalha. 
Secar o corpo. 
Vestir a roupa limpa.

Lavar o carro 

Passar o pano no carro.
Ligar a mangueira.
Pegar o material de uso na lavagem.
Molhar o carro.
Secar o carro.

Importante

Podemos transformar qualquer rotina em um algoritmo, pois ele é apenas uma sequência lógica de passos para alcançar um objetivo.

No entanto, a ordem dos passos é fundamental para que o algoritmo funcione corretamente. Para ilustrar esse conceito, alteramos propositalmente a sequência dos passos em algumas rotinas, como "Tomar Banho" e "Lavar o Carro".

Em alguns algoritmos, a ordem dos passos pode ser alterada sem prejudicar o resultado final.

Mas, existem casos em que, se a sequência das ações não for respeitada, o resultado pode ser inesperado ou até mesmo desastroso. 

Imagine tomar banho antes de tirar a roupa...

Passar o pano no carro antes de enxaguá-lo...

Calçar o tênis antes das meias...

Essas inversões tornam a execução do processo incorreta ou sem sentido.


Isso mostra que um algoritmo bem estruturado não é apenas uma lista de ações, mas sim uma sequência lógica que deve ser seguida corretamente para alcançar o resultado esperado.



Imagine a situação e tente organizar uma solução: Uma familia ( pai , mãe , filha1 e filha2 - adultas e não habilitadas a dirigir ) saiu para viagem até um local distante a 45 km de sua casa Somente o pai e o avô da familia dirigem. Ao chegar no local , já existia um carro que pertencem as duas pessoas idosas, que moram nessa casa (o Sr. dirige) que eram pais da mãe da família A familia levou suas mochilas, malas, sacolas para ficarem 2 dias na casa ( sábado e domingo - retornando no domingo ). Ao chegar no primeiro dia (sábado as 11:30h ) o carro estourou um componente que o inutilizava e ele não andava A familia depende do carro e esse problema precisa ser resolvido. Na cidade existe mecânico mas o dia é sabado. O preço da peça e do serviço para trocá-la já está no orçamento do mês ( o dono já havia se programado para a troca da peça - mas ela estourou um pouco antes ) O carro geralmente é consertado em uma oficina especializada na propria marca do carro desde a compra do mesmo. Existe sinal de telefonia, existe uma linha de onibus ( de hora em hora ) que liga as duas cidades. O preço a passagem é aproximadamente R$ 19,00 . O carro não tem seguro. A peça será comprada na internet pois o valor é aproximadamente R$ 200,00 mais barata do que na cidade onde o carro quebrou e na cidade origem da familia. O prazo para a peça chegar a cidade é segunda feira. A troca da peça significa o carro parado na oficina no minimo 1,2 dias


Exercícios

Exercício - Texto Descritivo

Dicas para um bom Algoritmo....

Finito

O algoritmo deve ter um fim, ou seja, não pode entrar em um loop infinito.
Exemplo: Se você quer um algoritmo para somar dois números, ele precisa chegar a um resultado final.

Definido

Cada passo do algoritmo deve ser claro e sem ambiguidades.
Exemplo ruim: “Colocar um pouco de açúcar no café” (quanto é “um pouco”?)
Exemplo bom: “Adicionar 2 colheres de chá de açúcar no café.” 

Eficiência

O algoritmo deve resolver o problema de forma rápida e com menos recursos possíveis.
Exemplo: Se você quer encontrar um nome em uma lista de 10.000 nomes, um algoritmo que busca nome por nome seria lento. Mas se estiver organizada alfabeticamente, a busca será mais rápida.

Bem Estruturado

Bem estruturado e ordenado
O algoritmo deve ter uma sequência lógica de passos.
Exemplo ruim: “Adicionar pó de café, depois colocar a água, depois esquentar a água.” (A ordem está errada!)
Exemplo correto: Primeiro esquenta a água, depois coloca o pó de café e então despeja a água.

Generalidade

Um bom algoritmo deve funcionar para diferentes entradas de dados e não apenas para um único caso específico.
Exemplo ruim: Um algoritmo que só calcula a soma de 2 + 2.
Exemplo bom: Um algoritmo que recebe qualquer dois números e retorna a soma.

Na última aula....

1-Ligar o celular.
2-Desbloquear a tela.
3-Entrar no aplicativo Ifood.
4-Escolher um restaurante ou um item.
5-Realizar o pagamento na aba do carrinho.

1-Escolha o aplicativo que quer usar.
2-Abra a loja de aplicativos do seu dispositivo.
3-Procure ele na loja.
4-Baixe o aplicativo.
5-Abra o aplicativo de comida.
6-Crie uma conta.
7-Escolha um restaurante.
8-Olhe o cardápio.
9-Escolha o prato.
10-Coloque no carrinho.
11-Finalize o pedido.
12-Coloque o endereço.
13-Coloque a forma de pagamento.
14-Pague o pedido
espere o pedido chegar.
15-Pegue o pedido com o entregador
16-Coma a comida.

1-Ligar o aparelho. 2-Escolher o idioma.
3-Conectar a internet.
4-Fazer login na conta.
5-Aceitar os termos de uso.
6-Restaurar dados (opcional).
7-Finalizar a configuração.

1- Abra a caixa do smartphone.
2-Pressione o botão de ligar.
3-Coloque o idioma da sua preferência.
4-Conecte a uma rede wifi ou dados móveis.
5-Insira ou configure um cartão SIM.
6-Transfira os dados de um outro aparelho (opcional).
7-Fazer o login na conta Google ou ID Apple.
8-Configurar segurança ou biometria.
9-Atualizar o sistema e aplicativos.
10-E por fim, personalizar o aparelho.

Lógica: Para pedir comida é necessário um aparelho celular com internet.
Algorítimo:
1-Abrir o aplicativo "iFood".
2-Escolher a comida de sua preferência.
3-Adicionar a sacola.
4-Editar o pedido.
5-Adicionar seu endereço.
6-Adicionar forma de pagamento.
7-Realizar o pagamento.
8-Aguardar o recebimento do pedido em seu endereço.

1- Pego o celular
2-Escolho o idioma.
3-Conecto o telefone a internet.
4-Copio os dados do aparelho antigo e passo para o novo.
5-Faço login na minha conta no google.
6-Defino a senha do celular novo.

Algumas observações

Após olharmos algumas respostas .....

Sequência

Com certeza vocês seguiram uma sequência....mas e se trocássemos alguns passos?
O resultado ainda seria o mesmo  ?
Existe alguma etapa que, se mudar de lugar, não faz diferença ?
E alguma que, se colocarmos na ordem errada, atrapalha tudo ?
* Ordene as etapas.

Instruções

Vocês forneceram instruções para que seus algoritmos atingissem o objetivo da melhor maneira ?
Os passos que vocês descreveram eram claros o suficiente para que qualquer pessoa conseguisse seguir ?
* Desenvolva etapas bem definidas.

Informações

Vocês tiveram todas as informações necessárias para descrever o processo ?
Pela lógica o usuário tinha um smartphone , tinha um app de entrega de comidas, tinha dinheiro.... 
* Busque todas as informações relevantes.

Variáveis

Fornecer informações - entrada

Nem sempre temos todas as informações e na maioria dos casos precisamos usar a  entrada de dados através de variáveis.

Exemplificando

No processo de pedir comida, precisamos saber o que a pessoa quer pedir, certo?
E se ela quiser um hambúrguer ao invés de pizza ?
E o local de entrega do lanche ? Ele não é fixo ( constante ) , certo ?
Essa informação precisa ser flexível ! E é aí que entram as variáveis !
Na lista de músicas , as músicas escolhidas são sempre as mesmas ? Claro que não.
Observem que nos exercícios respondidos a maioria respondeu :
"Abrir o app, selecionar o lanche - a comida e confirmar o pedido."
Não tivemos respostas assim :
"Abrir o app, selecionar uma PIZZA e confirmar o pedido."

Introduzindo variáveis com o exemplo de Habilitação de um Celular 

Na atividade anterior, vocês descreveram os passos para habilitar um celular novo. Agora, vamos analisar quais informações podem mudar de uma pessoa para outra.
Lógica:
O smartphone é novo ,já está com o usuário, possui um número ( chip ).

Algoritmo:
1-Ligar o celular.
2-Escolher o idioma.
3-Conectar-se a uma rede Wi-Fi.
4-Inserir o chip e desbloqueá-lo.
5-Fazer login com uma conta (Google, Apple, etc.).
6-Restaurar ou configurar como novo.

 Identifique quais Informações que podem variar no algoritmo acima....

Na última aula conversamos sobre....

 As variáveis são espaços , lugares na memória do computador para guardamos "valores" ( caracteres , números, booleanos e datas ). 

qtde_pessoas_churrasco
qtde_horas_de_churrasco
acompanhamentos

As variáveis também podem receber valores  após o cálculo de uma fórmula :
- total_gasto
- troco 

Em um algoritmo computacional , temos :
Informações de Entrada ,
Processamento da lógica , Informações de Saída.

Escreval("Preço Sanduiche")
Leia(preco_sanduiche)
Escreval("Qtde Sanduiche")
Leia (qtde_de_sanduiche)

Observe que NÃO tivemos ainda um processamento mas , somente entrada e saída. Certo ?

Leia(preco_sanduiche)
Leia(preco_liquido)
Leia(qtde_de_sanduiche)
Leia(qtde_de_liquido)

As variáveis (algoritmo computacional) guardam informações que podem ser dos tipos :
inteiro: define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais.
real: define variáveis numéricas do tipo real, ou seja, com casas decimais.
caractere: define variáveis do tipo string, ou seja, cadeia de caracteres.
lógico: define variáveis do tipo lógico, ou seja, com valor VERDADEIRO ou FALSO.

Desafio

Mobirise Website Builder

Responda sobre o exercício 1

Na sua opinião o que esse algoritmo pode calcular ?

Usando o VisualG

Tente alterar o exercício para que ele tenha um processamento e mostre a saída desse processamento.

Desenvolvendo lógica e algoritmo

Informações sobre ...

Uma escola quer um algoritmo para calcular a média das notas dos alunos. As disciplinas são semestrais e possuem 2 notas a serem computadas.

Mobirise Website Builder

Lógica ...

Precisaremos de entrar com 2 notas, que podem tem casas decimais e com essas notas calcular a média.

Lembrando...

Alguns pontos relevantes....
Precisamos dar nomes que identifiquem a função que a variável terá dentro do algoritmo.
Precisamos saber definir quais serão as variáveis de entrada.
Precisamos saber qual será o objetivo do algoritmo e se possível for, melhorá-lo.

Pintar Parede

Para pintar uma parede, sabemos que 1 litro de tinta cobre 5m². Precisamos criar um algoritmo que mostre a quantidade de tinta que precisaremos compra.

O que será calculado ?
E quantas variáveis precisaremos ?

Consegue definir as variáveis de entrada ?

É possível melhorar  esse algoritmo ? Como ?

Peso de aço

Os engenheiros frequentemente precisam calcular o peso de barras de aço para projetos estruturais.
Para simplificar esse cálculo, podemos usar a seguinte fórmula: P = 0,00617 x d² x h

Pela lógica 

Precisaremos do valor do diâmetro e do comprimento

Objetivo

Conseguiremos calcular o peso de 1 barra com as medidas fornecidas....

Pergunta

Podemos melhorar o objetivo  desse algoritmo computacional?

Calcular Custo do Concreto

Para calcular a quantidade de areia temos algumas variáveis. Pela lógica , precisaremos de cimento , areia e brita. Pela lógica devemos conhecer a quantidade média usada para ser usada em 1 m³.
Vamos definir como se os sacos de cimento fossem vendidos em padrões de 50 kg, ok ?

Seguindo a lógica

Se para fazer 1 m3 de concreto precisamos de 0,5 m3 de areia e 0,75 m3 de brita podemos fazer alguns cálculos.

mais lógica...

Como já sabemos a quantidade de cimento, areia e brita para 1m3 podemos saber para qualquer volume. E sabendo o preço cobrado $ podemos calcular o custo.

continuando 

Para calcular o volume e consequentemente a quantidade de cimento, areia e brita , precisamos saber as medidas a serem calculadas....

Começaremos pelo simples.

Vamos fazer ,inicialmente , o mais simples e aos poucos iremos melhorar , dentro do nosso conhecimento.
Ok ?!

Calculando Tijolos de uma Parede

Vamos tentar juntos criar um algoritmo computacional , um pequeno programa de computador para calcular a quantidade de tijolos necessários para construir uma parede.

Introdução a Valores Lógicos

1. O que são valores booleanos?

Os valores lógicos / booleanos são um conceito fundamental na lógica computacional e na programação. O termo "booleano" vem do matemático George Boole, que desenvolveu a "Álgebra Booleana" no século XIX. Esse sistema de lógica usa apenas dois valores:

Verdadeiro (True)
Falso (False)

Na computação, os valores booleanos são essenciais para tomada de decisões, pois permitem comparar valores e controlar o fluxo do programa.

Como exemplo, suponha que a, b e c sejam variáveis do tipo inteiro.
Então, temos que a =2, a>b e c<=b são todos exemplos de expressões relacionais.

Na expressão a =2, estamos comparando o valor da variável a com a constante 2. O resultado desta comparação é o valor lógico verdadeiro se o valor de a é igual a 2; caso contrário, o resultado é o valor lógico falso.

Na expressão a >b, estamos comparando os valores das variáveis a e b. O resultado desta comparação é o valor lógico verdadeiro se o valor de a é maior do que o de b. Caso contrário, o resultado é o valor lógico falso.

Na expressão c <=b, estamos comparando os valores das variáveis c e b. O resultado desta comparação é o valor lógico verdadeiro se o valor de c é menor ou igual ao valor de b. Caso contrário, o resultado é o valor lógico falso.

2. Exercício: Identificando valores booleanos

Responda apenas "Verdadeiro" ou "Falso" para as seguintes questões:

a) O Brasil está na América do Sul.
b) Vocês são alunos de Odontologia.
c) Banana é um legume.
d) Uma semana tem 7 dias.
e) Dia 25 de dezembro é comemorado o Natal.
Cada uma dessas perguntas permite apenas duas respostas: Verdadeiro ou Falso. Isso significa que elas são expressões booleanas, pois resultam em um dos dois valores possíveis.

Expressões booleanas em algoritmos.

As expressões booleanas podem ser formadas através de comparadores:
a expressão 5 = 5 tem como resultado booleano "verdadeiro".
a expressão 5 > 6 tem como resultado booleano "falso".
a expressão 8 > 4 tem como resultado booleano "verdadeiro".
a expressão 7 <> 2 tem como resultado booleano "verdadeiro".

Operadores

Comparadores em algoritmos:

= (igual)

<> (diferente) ou != (diferente)

> (maior que)

< (menor que)

>= (maior ou igual)

<= (menor ou igual)

Comparadores em algoritmos.

Exemplo prático: Comparando notas
Agora, vamos aplicar o conceito de valores booleanos em um programa simples. Suponha que queremos verificar se um aluno obteve nota suficiente para ser aprovado. Para isso, definimos uma média mínima e comparamos a nota do aluno com essa média.
O resultado dessa comparação será um valor booleano (Verdadeiro ou Falso).
A media <- 6.0 e a nota <- 5.0 , então nota > media terá qual valor booleano ?

Exercícios.

a - Crie um algoritmo que leia um número inteiro e mostre na tela o seu dobro e a sua terça parte.
b- Faça um algoritmo que leia o salário de um funcionário, calcule e mostre o seu novo salário, com 15% de aumento.
c-Faça um algoritmo que leia a largura e altura de uma parede, calcule e mostre a área a ser pintada e a quantidade de tinta necessária para o serviço, sabendo que cada litro de tinta pinta uma área de 2 m quadrados.
d-Crie um programa que leia o número de dias trabalhados em um mês e mostre o salário de um funcionário, sabendo que ele trabalha 8 horas por dia e ganha R$ 35,00 por hora trabalhada
e- Crie um programa que leia o preço de um produto, peça quanto de desconto será dado no preço total , calcule e mostre o novo valor do produto com desconto

Introdução ao desvio condicional (SE)

Agora que vimos um sobre os valores booleanos, podemos usar essa informação para tomar decisões em programas.
Para isso, utilizamos a estrutura SE (ou if em algumas linguagens de programação). 

Condições

O desvio condicional SE usa uma ou várias "condições" para desviar "o caminho do algoritmo"


Boolenas

As condições, que controlam o desvio do caminho do algoritmo, são expressões que geram valores booleanos ( verdadeiro ou falso ).


Exemplos

No dia a dia:
Se estiver sol , irei a praia. 
Se o preço do ingresso for menor que 150,00 , irei ao show.

Na computação:
Se ( condição ) Então
    faça isso
Senão
    faça outra coisa
Fimse


Observações

-Observe que , o que estamos estudando é uma nova forma de construir nossos programas.

-Agora podemos determinar algumas condições para que algo aconteça ou não.

-E o que determinará por qual caminho o algoritmo deve seguir, é o resultado da condição booleana.


Mobirise Website Builder

Exemplo 1 - Se...Então

Nesse exemplo, atribuímos 2 valores a 2 variáveis ( linha 5 e linha 6 )
Na linha 7 , usando o comando Se ( desvio condicional ) e usando uma expressão booleana ( nota >= media ) , condicionamos o nosso programa a escrever "Aprovado" se o valor de nota for maior ou igual ao valor da media. 

exemplo2

Exemplo 2 - Se...Então...Senão

Nesse novo exemplo, mantivemos o mesmo código até a linha 8.
Diferentemente do exemplo anterior que o programa somente mostrava "APROVADO" caso a condição booleana (nota>=media) fosse VERDADEIRA, nesse exemplos caso a condição booleana seja FALSA a palavra "Reprovado" será mostrada na tela.

Desafios

Mobirise Website Builder

Desafio 1

Verificar se um número é positivo ou negativo. O algoritmo deve mostrar "POSITIVO" ou "NEGATIVO".

Mobirise Website Builder

Desafio 2

Determinar se um aluno passou ou não com base em duas notas de uma disciplina. O algoritmo deve dizer se foi "APROVADO" ou "REPROVADO".

Mobirise Website Builder

Desafio 3

No algoritmo do troco , altere para verificar se o valor pago é suficiente, caso não seja avise "Valor Insuficiente".

Mobirise Website Builder

Desvio condicional "Se" ( com apenas uma condição booleana )

Devemos entender que, ao criarmos alguma "condição" para desviar nosso "caminho" de nosso algoritmo, algumas tarefas serão executadas - realizadas e outras não. 
Se estiver sem chuva ,irei de bicicleta elétrica para o trabalho, senão irei de carro. Veja que a pessoa criou uma condição ( estar sem chuva ) para definir de qual modo irá para o trabalho : de bicicleta OU de carro.

Explicando com mais um exemplo...

O algoritmo agora criou outras 'condições' depois que alguma condição ocorreu. Na linha 12 se a condição media_aluno >= media_escola o program irá executar o que está na linha 13 ( deixando de executar as linhas 17,18,19,20,21 e22 ok ?).
Na linha 13 existe outra "condição booleana" a ser verificada , certo ? Nessa linha já sabemos que a media_linha é maior ou igual a media_escola, certo ?! Então o algoritmo quer mostrar se o aluno(a) é ou não excelente e para isso foi criado uma "condição booleana" que determina que  "se  a média do aluno(a) for maior que  9,00 (nove)"  devemos dizer "Média Excelente".
A condição única determina que a linha 14 só será executada "Se (media_aluno>9)".
Depois o programa , sem nenhuma "condição" executa a linha 16 e escreve "Aluno Aprovado", ok ? 

Mobirise Website Builder

Fizemos um desvio condicional onde verificamos apenas 1 condição para determinar se o aluno está ou não APROVADO. Verificamos se a Média do aluno é maior ou igual a Média da Escola :
Se (media_aluno >= media_escola)

Observem que no exercício das notas podemos melhorar. Podemos colocar o algoritmo para verificar se as notas são válidas. Notas válidas , em um sistema escolar, são notas que os valores são maior ou igual a 0 e menor ou igual a 10. 
Se (Nota1 >=0)  E (Nota1 <=10) , também podemos fazer a verificação com a Nota2 : 
Se (Nota1 >=0) E (Nota1 <=10).

Compare as duas observações: Para definir se o aluno está ou não APROVADO precisamos de apenas 1 condição ( usando uma expressão booleana ). Ok ? Mas , para definirmos se as notas (nota1 e nota2) são ou não válidas , precisamos de 2 condições. Ok ? 
- Para a nota ( nota1 e nota2 ) ser válida , ela precisa ser maior ou igual a 0 E menor ou igual a 10. 
- Percebam que se 1 das 2 condições for FALSA , a nota não será válida.

Operadores lógicos "E" e "OU"

Introdução

Agora que aprendemos a usar o SE para tomar decisões com base em uma única condição, chegou o momento de aumentar o poder do nosso raciocínio lógico.
Imagine que queremos validar duas condições ao mesmo tempo: por exemplo, que uma nota esteja entre 0 e 10, ou que uma pessoa tenha mais de 18 anos e tenha carteira de motorista.
Nesses casos, usamos os operadores lógicos para combinar condições dentro do comando SE. Com isso, conseguimos criar decisões mais completas e realistas nos nossos algoritmos.

Operador "E"

O operador "E" exige que todas as condições sejam verdadeiras para o resultado ser verdadeiro. Lembra das notas válidas de um sistema escolar ? Para que elas fossem válidas existem 2 condições : ser maior ou igual a 0 zero  E  ser menor ou igual a 10.  Então , as 2 condições devem ser verdadeiras pois se uma delas NÃO for o resultado será FALSO.

Nota           maior ou igual a zero        menor ou igual a dez      RESULTADO
--------------------------------------------------------------------------------
4,0                     VERDADEIRO                        VERDADEIRO             VERDADEIRO
11,0                     VERDADEIRO                             FALSO                         FALSO
-5,0                         FALSO                               VERDADEIRO                  FALSO 
7,5                       VERDADEIRO                       VERDADEIRO             VERDADEIRO 

Operador "OU"

O operador OU exige que pelo menos uma condição seja verdadeira para o resultado ser verdadeiro.
Vamos dar como exemplo uma entrada no ônibus. Digamos que a lei estabeleça que pessoas com menos de 7 anos e mais de 60 anos possa andar de ônibus de graça.

Idade           menor que 7 anos     OU    maior ou igual a 60 anos    RESULTADO
---------------------------------------------------------------------------------
18                         FALSO                                          FALSO                          FALSO
 6                     VERDADEIRO                                  FALSO                      VERDADEIRO
61                         FALSO                                     VERDADEIRO              VERDADEIRO
 3                     VERDADEIRO                                  FALSO                      VERDADEIRO  

Laços de Repetição (Loops),Contadores e Acumuladores

Nesta aula, vamos aprender um novo recurso muito importante na programação: os laços de repetição, também chamados de loops.

Imagine que você precise repetir uma mesma tarefa várias vezes: "Somar 3 números digitados pelo usuário".
Se não tivermos um comando de repetição, teríamos que escrever várias vezes o mesmo bloco de comandos, o que não é prático.

Para resolver isso, usamos os laços de repetição, que fazem o computador executar um bloco de comandos várias vezes automaticamente, conforme as condições que definirmos.

Loop Para Até

Enquanto Faça.

Repita até

Loop Para Até

O primeiro tipo de loop que vamos estudar é o
Para ... Ate ... Faça,
que é usado quando sabemos exatamente quantas vezes queremos repetir uma tarefa.

Mobirise Website Builder
Mobirise Website Builder
Mobirise Website Builder

Contador

Ou variável contadora, é um tipo de variável que usamos para obter uma contagem de um valor conhecido ( 1 , 2 , 3 etc ). 

Mobirise Website Builder

Acumulador

Ou variável acumuladora, é um tipo de variável que usamos para acumular valores desconhecidos. 

Mobirise Website Builder

Enquanto ... faça

Esta estrutura repete uma sequência de comandos enquanto uma determinada condição (especificada através de uma expressão lógica) for satisfeita.

enquanto < expressão lógica > faca
    < sequencia de comandos  >
fimenquanto

Existirá uma  expressão lógica a ser avaliada antes de cada repetição do laço. Quando seu resultado for VERDADEIRO, é executada.
O comando fimenquanto Indica o fim da que será repetida.

Cada vez que a execução atinge este ponto, volta-se ao início do laço para a expressão lógica  que seja avaliada novamente. Se o resultado desta avaliação for VERDADEIRO, a será executada mais uma vez; caso contrário, a execução prosseguirá a partir do primeiro comando após fimenquanto.
Importante: Como o laço enquanto...faca testa sua condição de parada antes de executar sua sequência de comandos, esta sequência poderá não ser executada.

Mobirise Website Builder

Repita até

Esta estrutura repete uma sequência de comandos até que uma determinada condição (especificada através de uma expressão lógica) seja satisfeita.
repita
      < sequencia de comandos > 
ate < expressão lógica >


até < expressão lógica >  Cada vez que o programa chega neste ponto, é avaliada: se seu resultado for FALSO, os comandos presentes entre esta linha e a linha repita são executados; caso contrário, a execução prosseguirá a partir do primeiro comando após esta linha.


Exercícios

Exercícios - Loop, Acumulador e Contador

Subprogramas

Sub-rotinas são blocos de comandos separados dentro de um algoritmo, criados para realizar uma tarefa específica. Elas recebem esse nome porque são partes menores de um algoritmo maior. Existem dois tipos principais de sub-rotinas: procedimentos e funções.
Você pode pensar em uma sub-rotina como uma receita dentro de outra receita. Em vez de repetir os mesmos passos várias vezes, você os coloca uma vez só dentro da sub-rotina e chama quando precisar.
Subprograma é um programa que auxilia o programa principal através da realização de uma determinada subtarefa. Também costuma receber os nomes de sub-rotina, procedimento, função, método ou módulo. Os subprogramas são chamados dentro do corpo do programa principal como se fossem comandos. Após seu término, a execução continua a partir do ponto onde foi chamado. É importante compreender que a chamada de um subprograma simplesmente gera um desvio provisório no fluxo de execução.

Há um caso particular de subprograma que recebe o nome de função. Uma função, além de executar uma determinada tarefa, retorna um valor para quem a chamou, que é o resultado da sua execução. Por este motivo, a chamada de uma função aparece no corpo do programa principal como uma expressão, e não como um comando.

Cada subprograma, além de ter acesso às variáveis do programa que o chamou (são as variáveis globais), pode ter suas próprias variáveis (são as variáveis locais), que existem apenas durante sua chamada.

Ao se chamar um subprograma, também é possível passar-lhe determinadas informações que recebem o nome de parâmetros (são valores que, na linha de chamada, ficam entre os parênteses e que estão separados por vírgulas). A quantidade dos parâmetros, sua seqüência e respectivos tipos não podem mudar: devem estar de acordo com o que foi especificado na sua correspondente declaração.

Para se criar subprogramas, é preciso descrevê-los após a declaração das variáveis e antes do corpo do programa principal. O VisuAlg possibilita declaração e chamada de subprogramas nos moldes da linguagem Pascal, ou seja, procedimentos e funções com passagem de parâmetros por valor ou referência. Isso será explicado a seguir.

Mobirise Website Builder

Exemplos de Procedimento e Função
Observe que na função precisamos passar os parâmetros e os tipos que eles são e o tipo que a função irá retornar , inteiro, real, caracter etc ( linha 4).
Para desviar o programa para um procedimento basta escrever o nome do procedimento.
Uma função retorna apenas um valor e faz isso através da palavra (comando) retorne.
O valor retornado pela função, pode ser atribuído a uma variável ( linha 11 ) ou pode ser testada com comandos , por exemplo o comando "Se"

Mobirise Website Builder

Funções Nativas do VisualG

1-compr (c : caracter) : Retorna um inteiro contendo o comprimento (quantidade de caracteres) da expressão. Observe que o que está dentro do parênteses é chamado de parâmetro e deve ser do tipo caracter
nome <- "UENF"
escreval(compr(nome))

2-copia (c : caracter ; p, n : inteiro) : Retorna uma string(palavra) contendo uma cópia parcial do parâmetro c; a partir do caracter p, contendo n caracteres. Os caracteres são numerados da esquerda para a direita, começando de 1.
texto<-"Engenharia da UENF"
escreval(copia( texto, 7, 10)) 

3-maiusc (c : caracter) : Retorna um valor caracter contendo a expressão em maiúsculas.
texto <- "engenharia da uenf"
escreval(maiusc(texto))

4-minusc (c : caracter) : Retorna um valor caracter contendo a expressão em minúsculas
texto <- "UENF"
escreval(minusc(texto))

5-pos (subc, c : caracter) : Retorna um inteiro que indica a posição em que a cadeia subc se encontra em c, ou zero se subc não estiver contida em c.
textooriginal<- "O melhor açaí do Brasil está no ...."
procurado <- "Brasil"
escreval(pos(procurado,textooriginal)) 

6-int (Int( expressão) - Retorna a parte inteira do valor representado por expressão
algumnumero <- 6.7944
escreva(int(algumnumero) 

Mobirise Website Builder

Comando de Seleção Múltipla: Caso

Esse comando possui um bug em algumas versões do software :
Algoritmo "Caso"
Var
    t:caracter
Inicio
   leia(t)
   t<-maiusc(t)
   escolha t
       caso "Pix"
           escreva("Você fez pix")
        caso "Din"
           escreva("Você pagou em din")
        outrocaso
           escreva("forma de pagamento inválido")
     fimescolha
Fimalgoritmo

O VisuAlg implementa (com certas variações) o comando case do Pascal. A sintaxe é a seguinte:
escolha < expressao de selação >
caso < valor1 > , < valor2>, < valor3 >
     < sequencia de comandos que deseja executar >
caso < valor3 > , < valor4>, < valor5 >
    < sequencia de comandos que deseja executar >
outrocaso

fimescolha