Estrutura Condicional Se, Laços de repetição Estrutura de Condição, Escolha e Repetição Profª Fabíola Gonçalves C. Ribeiro INTRODUÇÃO Os comandos a seguir modificam o fluxo de execução de um algoritmo com base no teste de uma condição. Existem duas formas para implementar esse tipo de comando.. ESTRUTURA CONDICIONAL SIMPLES SE Se Condição for verdadeira então Comando1; Fimse O comando só será executado se a condição for verdadeira. Uma condição é uma comparação que possui dois valores possíveis: verdadeiro ou falso. ESTRUTURA CONDICIONAL - DECISÃO Estrutura Condicional Simples Apenas uma única condição é avaliada Estrutura Condicional Composta Duas ou mais condições são avaliadas ESTRUTURA CONDICIONAL SIMPLES Utilizando dois ou mais comandos.. Se Condição for verdadeira então comando1; comando2; comandoN; Fimse ESTRUTURA CONDICIONAL COMPOSTA Se Condição for verdadeira então Comando; Senão Comando; Fimse Se a condição for verdadeira, será executado o comando1;caso contrário, se a condição for falsa, será executado o comando2. ESTRUTURA CONDICIONAL COMPOSTA Utilizando dois ou mais comandos.. Se Condição for verdadeira então comando1; comandoN; Senão comando1; comandoN; Fimse EXEMPLO Ler um número e se ele for maior do que 20, então imprimir a metade do número. Solução 1 Algoritmo metade var real: numero, metade; escreva(“Digite número: ”); leia(numero); se(numero>20) entao metade<- numero/2; imprima(“\n metade: ”,metade); fimse fimAlgoritmo Solução 2 Algoritmo metade var real: numero; escreva(“Digite número: ”); leia(numero); se(numero>20) entao imprima(“\n metade: ”, numero/2); fimse fimAlgoritmo EXERCÍCIO/ EXEMPLO Ler um número e se ele for positivo, imprimir seu inverso; caso contrário, imprimir o valor absoluto do número. RESPOSTA Validação e Verificação Solução 1 Algoritmo inversoAbsoluto Solução 2 var Algoritmo inversoAbsoluto real: numero, inverso, absoluto; var escreva(“digite número: ”); real: numero; leia(numero); escreva(“digite número: ”); se(numero>0) entao leia(numero); inverso <- 1/numero; se(numero>0) entao escreva(“inverso: ”, inverso); escreva(“inverso: ”, 1/numero); fimse fimse senao senao absoluto<-numero*(-1); escreva(“\n absoluto:”,(numero)*-1); //ou absoluto <- abs(numero); fimsenao escreva(“\n absoluto: ”, absoluto); fimAlgoritmo fimsenao fimAlgoritmo A saída é a mesma, mas na solução 2 há economia de memória EXERCÍCIO/EXEMPLO Ler dois números diferentes e dizer qual deles é o menos SE’S ANINHADOS OU ENCAIXADOS Muitas vezes em muitas aplicações sentiremos necessidade de tomar outras decisões dentro de uma das alternativas da estrutura do se; a isso chamamos de se’s aninhados. EXEMPLO CLÁSSICO DE SE ANINHADO Ler um número e imprimir se ele é positivo Algoritmo positivo var real num; escreva(“\n Digite numero:”); leia (num); se(num>0) entao escreva(“\n POSITIVO”); senao se(num<0) escreva(“\n NEGATIVO”); senao escreva(“\n NULO”); fimse fimse fimAlgoritmo EXERCÍCIO/EXEMPLO Crie um algoritmo que verifica o menor entre três números fornecidos. Utilize Se’s alinhados.. A ESTRUTURA ESCOLHA (SWITCH) A expressão é avaliada e o valor será comparado com um dos rótulos. A opção senão é opcional O rótulo é definido como uma constante caracter, constante numérica É mais clara que Se’s aninhados. ALTERNATIVA PARA O SE’S ANINHADOS escolha( expressão de seleção) caso (rotulo1): comando 1; comando2; pare; caso(rotulo2): comando1; comando2; pare; caso(rotuloN): comando1; comando2; pare; senao comando; fimEscolha; EXEMPLO SIMPLES.... algoritmo Times var caractere: time; escreva ("Entre com o nome de um time de futebol: "); leia (time); escolha time caso "Flamengo", "Fluminense", "Vasco", "Botafogo" escreva ("É um time carioca."); pare; caso "São Paulo", "Palmeiras", "Santos", "Corínthians“ escreva ("É um time paulista."); pare; senao escreva ("É de outro estado."); fimescolha fimalgoritmo EXERCÍCIO/EXEMPLO Escreva um algoritmo que leia um peso na Terra e o número de um planeta e imprima o valor do seu peso neste planeta. A relação de planetas é dada a seguir juntamente com o valor das gravidades relativas à Terra: # Gravidade Planeta 1 0,37 Mercúrio 2 0,88 Venus 3 0,38 Marte 4 2,64 Júpiter 5 1,15 Saturno 6 1,17 Urano Peso= Pterra* gravidade 10 ESTRUTURA DE REPETIÇÃO São muito comuns as situações em que se deseja repetir uma ação ou um determinado trecho de um programa, certo número de vezes. Enquanto a condição for verdadeira, as instruções serão executadas. Exemplo: Ações semanais de um ser humano, processamento da folha de pagamento de uma empresa. ESTRUTURA DE REPETIÇÃO Estas Loops. Laços são conhecidas como: Laços ou condicionais: Enquanto-faça Repita-até ESTRUTURA DE REPETIÇÃO Estrutura do laço enquanto: Enquanto <condição for verdadeira> faça <comandos> Fimenquanto ESTRUTURA DE REPETIÇÃO Estrutura do laço enquanto: enquanto <condição for verdadeira> Faça início Comando 1; Comando 2; ... Comando n; fim-enquanto ESTRUTURA ENQUANTO Recomendado quando o número de repetições for desconhecido É uma estrutura que testa a condição no início e só repete se a condição for verdadeira Flag, teste ou chave Fala-se que é a mais poderosa estrutura de repetição CONTINUAR EXEMPLO Algoritmo enquanto1 real num; imprima(“digite numero: \n”); leia (num); enquanto(num>0) imprima (“digite numero: ”); leia (num); imprima(“o dobro do número”); num *2; fim enquanto; fimAlgoritmo ESTRUTURA DE REPETIÇÃO Estrutura do laço repita: repita <comandos> até <condição for verdadeira> faça <comandos> enquanto <condição for verdadeira> ESTRUTURA DE REPETIÇÃO Estrutura do laço repita: Repita Início Comando1; Comando2; ... Comando n; até <condição for verdadeira> ESTRUTURA FAÇA ENQUANTO, OU REPITA ATÉ Estrutura recomendada quando o número de repetições for desconhecido, sendo necessário um teste para interromper a repetição Sua diferença em relação ao enquanto é que ela testa ao final, significando que ela executa o código pelo menos uma vez. Muitos programadores nem fazem uso dessa estrutura, pouco utilizada. EXEMPLO Algoritmo facaenquanto var int a; imprima (“digite numero no intervalo 0 ate 10: ”); leia (a); faca escreva(“\n”,a); a++; enquanto(a<10) fimAlgoritmo EXERCÍCIOS Entrar com números e imprimir o triplo de cada número. O Algoritmo acaba quando entrar com o número -999. Algoritmo var real num; imprima(“\n digite numero ou -999. para terminar”); leia(num); enquanto(num< >-999) { imprima(“\ntriplo: ”,num*3); imprima(“\n digite numero ou -999 para terminar”); leia(num); } fimAlgoritmo ESTRUTURA DE REPETIÇÃO Laços contados: Para-faça Usado quando o número de repetições for conhecido durante a elaboração do algoritmo ou quando poder ser fornecido durante a execução Ex. Criar um algoritmo que possa entrar com a nota de 20 alunos e imprimir a média da turma. ESTRUTURA DE REPETIÇÃO Estrutura do laço para: Para <variável> de <início> até <final> faça <comandos> Fimpara Estrutura do laço para: para(valor inicial; <condição>; <valor de incremento>) Comando1; Comando2; ... Comandon; Fimpara VALOR DE INCREMENTO a++; a<-a+1; x--; x<-x-1; O identificador tem que ser do tipo inteiro ALGORITMO MÉDIA DA TURMA Algoritmo media20 var real media, nota; inteiro i; media<-0; i=0; for(i de 1 ate 20 faca i<- i+1) { imprima(“Digite o valor de nota: “); leia(nota); media<-media + nota; } imprima(“A média da turma é: ”, media/20); fimAlgoritmo ESTRUTURA DE REPETIÇÃO Exemplo: Para-faça algoritmo "semnome" var b,a,area:real; i:inteiro; inicio; para i de 1 ate 5 faca inicio leia(b); leia(a); area<-b*a; escreva(area); fimpara Fimalgoritmo Enquanto-faça Repita-até algoritmo "semnome" var b,a,area:real; i:inteiro; inicio i<-1; enquanto i <=5 faca inicio leia(b); leia(a); area<-b*a; escreva(area); i<-i+1; fimenquanto Fimalgoritmo algoritmo "semnome" var b,a,area:real; i:inteiro; inicio i<-1; repita inicio leia(b); leia(a); area<-b*a; escreva(area); i<-i+1; ate i<=5 Fimalgoritmo EXERCÍCIO/EXEMPLO Criar um algoritmo que imprima todos os números pares no intervalo de 1-10 Algoritmo Par var ; for(i de xx ate 10 faca i<- i+1) { imprima(“ “); } fimAlgoritmo Algoritmo transforma var inteiro f1, f2, dec, t; real c; imprima(“\n entre com a temperatura maior em Fahrenheit”); leia(f1); imprima(“\n entre com a temperatura menor em Fahrenheit”); leia(f2); imprima(“\n entre com decremento: ”); leia(dec); para(t<- f1; t>=f2; t<-t-dec) { c<-5* (t-32)/9; imprima(“\n temperatura em graus Celsius”, C); } FimAlgoritmo 41 EXERCÍCIO: VERIFICAR QUAL ESTRUTURA IDEAL Criar um algoritmo que leia 20 números inteiros para que possa ser impresso o maior e o menor número digitado. Criar um algoritmo que leia números inteiros para que possa ser impresso o maior e o menor número digitado até que o usuário informe que o flag -1 Criar um algoritmo que leia idade e sexo (0 masculino e 1 feminino) de várias pessoas. Calcule e imprima a idade média, total de pessoas do sexo feminino com idade entre 3045 inclusive e o número total de pessoas do sexo masculino. O algoritmo termina quando se digita 0 para a idade.