38
Estrutura de Condição, Escolha e Repetição Profª Fabíola Gonçalves C. Ribeiro Estrutura Condicional Se, Laços de repetição

Estrutura de Condição, Escolha e Repetiçãofabiola/GGI030%20-%20Programa%e7%e3o%20O… · Estrutura de Condição, Escolha e Repetição Profª Fabíola Gonçalves C. Ribeiro Estrutura

Embed Size (px)

Citation preview

Estrutura de Condição, Escolha e

Repetição

Profª Fabíola Gonçalves C. Ribeiro

Estrutura Condicional Se, Laços de repetição

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

Va

lida

ção e

Ve

rificação

Solução 1

Algoritmo inversoAbsoluto

var

real: numero, inverso, absoluto;

escreva(“digite número: ”);

leia(numero);

se(numero>0) entao

inverso <- 1/numero;

escreva(“inverso: ”, inverso);

fimse

senao

absoluto<-numero*(-1);

//ou absoluto <- abs(numero);

escreva(“\n absoluto: ”, absoluto);

fimsenao

fimAlgoritmo

Solução 2

Algoritmo inversoAbsoluto

var

real: numero;

escreva(“digite número: ”);

leia(numero);

se(numero>0) entao

escreva(“inverso: ”, 1/numero);

fimse

senao

escreva(“\n absoluto:”,(numero)*-1);

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 são conhecidas como: Laços ou Loops.

Laços 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++;

x--;

O identificador tem que ser do tipo inteiro

a<-a+1;

x<-x-1;

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 Enquanto-faça Repita-até

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

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 30-

45 inclusive e o número total de pessoas do sexo masculino. O

algoritmo termina quando se digita 0 para a idade.