Linguagem de
Programação 11
Estruturas de Decisão e Repetição.
Prof. Luiz José Hoffmann Filho
[email protected]
Estrutura de Decisão
• Em algoritmos, na maioria das vezes necessitamos tomar
decisões no andamento do algoritmo. Essas decisões
interferem diretamente no andamento do programa.
• Os comandos de decisão ou desvio fazem parte das técnicas
de programação que conduzem a estruturas de programas
que não são totalmente sequenciais.
• Com as instruções de salto ou desvio pode-se fazer com que
o programa proceda de uma ou outra maneira, de acordo
com as decisões lógicas tomadas em função dos dados ou
resultados anteriores.
[email protected]
if {}
• A estrutura de decisão “ IF ” normalmente vem
acompanhada de um comando, ou seja, se
determinada opção for satisfeita pelo comando “IF”
então execute determinado comando.
• Exemplo:
• Um aluno somente estará aprovado se sua média for
maior ou igual a 7.0.
[email protected]
if {}
• Exemplo:
#include <stdio.h>
#include <stdlib.h>
int main() {
float media;
printf(“Digite a média do aluno : ”);
scanf(“%f”, &media);
if (media >= 7) {
printf(“Aprovado”);
}
return 0;
}
if {}
INICIO
Media
Media
>= 7.0
sim
Aprovado
não
FIM
if {} else {}
• Funciona exatamento como a estrutura “if”, com
apenas uma diferença, com “if” somente podemos
executar comandos caso a condição seja verdadeira,
diferente do “if/else” pois sempre um comando será
executado independente da condição, ou seja, caso a
condição seja verdadeira o comando da condição
será executado, caso contrário o comando da
condição falsa será executado.
IF Aninhados
• Um IF aninhado é um comando if que é o objeto de
outro IF ou ELSE.
• Exemplo:
if ( x = 0) {
if( y = 1) {
k =1;
} else {
if(j = 0) {
t =1;
}
}
}
if {} else {}
• Em C:
#include <stdio.h>
#include <stdlib.h>
int main() {
float media;
printf(“Digite a média do aluno : ”);
scanf(“%f”, &media);
if (media >= 7) {
printf(“Aprovado”);
} else {
printf(“Reprovado”);
}
return 0;
}
if {} else {}
INICIO
Media
não
Media
>= 7.0
Reprovado
Aprovado
FIM
[email protected]
sim
If {} else {} if{}
• Exemplo:
if ( x < 0) {
j = 0;
} else if (x >10) {
j =1;
} else {
j =2;
}
[email protected]
O ? alternativo
• Não se esqueça que o operador “?” é um
alternativo ao “if”.
• A expressão Condicional
if (b) printf(“entrou aqui\n”);
if (b != 0) printf(“entrou aqui”);
São iguais, em C o teste é se a condição é
verdadeira ou falsa, ou seja, é 0 ou 1.
[email protected]
switch case{}
 A estrutura de decisão escolha/caso é utilizada
para testar na condição, uma única expressão,
que produz um resultado, ou, então, o valor de
uma variável, em que está armazenado um
determinado conteúdo. Compara-se, então, o
resultado obtido no teste com os valores
fornecidos em cada cláusula “caso”.
[email protected]
switch case{}
 Síntaxe em C:
switch (<expressão>) {
case 1:
<Sequencia de comandos 1>
break;
case 2 :
<Sequencia de comandos 2>
break;
default :
<Sequencia de comandos 3>
}
[email protected]
switch case{}
void main() {
int valor;
printf(“Digite um valor”);
scanf (“%i”,&valor);
switch (valor) {
case 1:
printf(“Voce digitou 1”);
break;
case 2 :
printf(“Voce digitou 2”);
break;
default :
printf(“Valor zero ou maior que 2”);
}
[email protected]
switch case{}
INICIO
valor
Sim
Você digitou 1
Valor = 1
Não
Valor zero ou
maior que 2
Sim
Não
Valor = 2
FIM
Você digitou 2
[email protected]
Switch case{}
• O comando switch difere do comando if por que
switch só pode testar igualdade, enquanto if pode
avaliar uma expressão lógica ou relacional.
• Duas constantes case no mesmo switch não podem
ter valores idênticos. Obviamente, um comando
switch incluído em outro switch mais externo pode
ter as mesmas constantes case;
• Se constantes de caractees são usadas em um
comando switch, elas são automaticamente
convertidas para suas valores inteiros.
[email protected]
switch case{} – Uso do Break
void main() {
int valor;
printf(“Digite um valor”);
scanf (“%i”,&valor);
switch (valor) {
case 1:
printf(“Voce digitou 1”);
break;
case 2 :
printf(“Voce digitou 2”);
case 3:
printf(“Voce digitou 3”);
O que irá acontecer
aqui?
break;
}
[email protected]
Estrutura de Repetição
 Utilizamos os comandos de repetição quando
desejamos que um determinado conjunto de
instruções ou comandos sejam executados um
número definido ou indefinido de vezes, ou
enquanto um determinado estado de coisas
prevalecer ou até que seja alcançado.
[email protected]
for () { }

Para número definido de repetições.

Essa estrutura de repetição é utilizada quando
se sabe o numero de vezes que um trecho do
algoritmo deve ser repetido.

O incremento, ou seja, o contador é adicionado
automático.
for () { }

Em C:
void main() {
int i, soma;
for (i=1; i<= 100; i++) {
printf(“%d”,i);
soma = soma + i;
}
printf(“%i”,soma);
}
for () { }
INICIO
Aqui eu posso ter
uma expressão!
num = 1
Para um laço infinito:
for(;;) {
printf(“lanço infinito”);
}
num<=10?
não
soma
FIM
sim
num
num = num + 1
soma =soma+ num
while(<condição>){}
 Para número indefinido de repetições e teste
no inicio.
 É utilizada quando não se sabe o número de
vezes que um trecho do algoritmo vai ser
repetido, embora também possa ser utilizada
quando se conhece esse número.
 Essa estrutura baseia-se na análise de uma
condição. A repetição será feita enquanto a
condição for verdadeira.
[email protected]
while(<condição>){}
 Síntaxe em C:
while (<condição>)
{
<Comandos>
}
[email protected]
while(<condição>){}
 Em C:
void main() {
int x, y;
x = 0;
y = 10;
while (x < y) {
x = x + 2;
}
}
[email protected]
while(<condição>){}
INICIO
Aqui eu posso ter
uma expressão!
x=1
Para um laço infinito:
while(1) {
printf(“lanço infinito”);
}
y = 10
sim
x < y?
x=x+2
não
FIM
[email protected]
do {} while();
Para número indefinido de repetições e teste
no final.
 A diferença entre a estrutura enquanto e a
estrutura repita é que nesta ultima os
comandos serão repetidos pelo menos uma vez,
já que a condição de parada se encontra no
final.

do {} while();

Em C:
void main() {
int x,y;
x = 1;
y = 5;
do {
x = x + 2;
y = y + 1;
} while ( x <= y) ;
}
do {} while();
INICIO
x=1
y=5
não
x=x+2
x >= y?
y=y+1
sim
FIM
Comando de Desvio
•
Comando return : Usado para retornar de uma função;
o Exemplo : return; return 0; return x;
•
Comando break: terminar um case no switch ou terminar um laço de
repetição;
o Exemplo: for(;;) {
if (i ==0 )
break;
}
•
Comando exit: Da mesma forma que podemos sair de um laço podemos sair
de um programa.
•
Comando continue: força que ocorra a próxima interação.
o
Exemplo: for (i=0;i<100;i++)
if (I == 10)
continue;
}
[email protected]
Download

PPT