Estruturas de Controle
Linguagem de Programação Estruturada Prof. Leandro Carlos Fernandes
2º semestre 2015
Estruturas de Controle
• ESTRUTURA SEQUENCIAL
• ESTRUTURAS CONDICIONAIS – Estrutura Condicional Simples – Estrutura Condicional Composta
– Seleção entre duas ou mais Seqüências de Comandos
• ESTRUTURA DE REPETIÇÃO – Repetição com Teste no Início – Repetição com Teste no Final – Repetição Contada
1
O Comando While
while (condição) { comandos;
}
• 1º avalia condição
• se condição é verdadeira, executa comandos do bloco
• ao término do bloco, volta a avaliar condição
• repete o processo até que condição seja falsa
while f v while
f v
O Comando While
• O comando while que tem a seguinte forma geral:
while (condição) {
seqüência_de_comandos;
}
• seria equivalente a:
if (condição) {
seqüência_de_comandos;
"Volte para o comando if"
}
While - Exemplo
voidpula_brancos () {
intch;
while((ch = getchar()) == ' '|| /* brancos */
ch == '\n'|| /* newline */
ch == '\t') /* tabs */
; /* não faz nda */
}
4 f u n ç ã o q u e p u l a
b r a n c o s \n
Exemplo de utilização
• Desenvolver algoritmo para o problema:
–Ler a variável SEXO.
–Enquanto o valor fornecido não for correto (M,m,F,f) exibir mensagem de erro e solicitar novamente a leitura.
–Quando o valor fornecido estiver correto, ler a variável ANO.
–Escrever ANO e SEXO
Algoritmo
programa TESTE1 declare as variáveis inicio
ler (SEXO)
enquanto SEXO (f, F, m, M) faça início
escrever “ERRO”
ler (SEXO) fimler ANO
escrever (ANO,SEXO) fim
Exemplo
#include <stdio.h>
#include <conio.h>
intmain () { charsexo; intano;
printf("Informe o sexo (m ou f): ");
sexo = getche();
while(sexo != 'f'&& sexo !=‘F' && sexo != ‘m'&& sexo !=‘M') { printf("\nValor inválido, informe novamente: ");
sexo = getche();
}printf("\nInforme o ano: "); scanf("%d",&ano);
printf("\nAno:%d sexo:%c",ano,sexo);
return0;
O Comando For
for(pré_cmd; teste; pós_cmd) { comandos;
}
• em termos de while, equivale a:
pré_cmd;
while(teste) { comandos;
pós_cmd;
}
8 for
f v
pré_cmd teste
pós_cmd bloco for
f v
pré_cmd teste
pós_cmd bloco
O Comando For
• O loop for é usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira que se possa ter um bom controle sobre o loop.
for(inicialização; condição; incremento) { seqüência_de_comandos;
}
9
O Comando For
• 1º executa pré_cmd(inicialização), que permite iniciar variáveis
• 2º avalia teste(condição): se verdadeiro, executa comandos do bloco, senão encerra
• laçoao término do bloco, executa pós_cmd (incremento)
• reavalia teste
• repete o processo até que teste seja falso
O Comando For
• Exemplo: Escreve a tabuada do 2 na tela
#include <stdio.h>
intmain( ) { inti;
for( i=1; i <=10; i++)
printf("2 x %d = %d\n", i, 2*i);
return0;
}
O Comando For
• Podemos omitir qualquer um dos elementos (inicialização, condição ou incremento) do for.
• Por exemplo:
for (inicialização; ;incremento) { seqüência de comandos;
–Este é um loop infinito porque será executado para sempre } (não existindo a condição, ela será sempre considerada verdadeira), a não ser que ele seja interrompido.
–Para interromper um loop como este usamos o comando break.
12
O Comando For
#include <stdio.h>
#include <conio.h>
intmain () { intcount;
charch;
for(count = 1; ; count++) { ch = getch();
if(ch == 'X') break;
printf("\nLetra: %c", ch);
} return0;
}
13
A ausência do 2º termo do laço é interpretada como verdadeiro,
então o controle do término do processo iterativo deve ser realizado de outra forma. Neste
caso, pelo comando break
O Comando Do-While
• do...whileé utilizado sempre que o bloco de comandos deve ser executado ao menos uma vezdo {
comandos;
} while(condição);
• 1º executa comandos
• 2º avalia condição:
–se verdadeiro, executa novamente os comandos do bloco; senão encerra laço
do
v f
teste bloco do
v f
teste bloco
O Comando Do-While
#include <stdio.h>
intmain( ) { int i;
do{
printf("Escolha a fruta pelo numero:\n");
printf("\t(1)...Mamao\n");
printf("\t(2)...Abacaxi\n");
printf("\t(3)...Laranja\n\n");
scanf("%d", &i);
} while( (i < 1) || (i > 3) );
switch( i ) {
case1: printf ("\t\tVoce escolheu Mamao.\n");
break;
case2: printf ("\t\t Voce escolheu Abacaxi.\n");
break;
case3: printf ("\t\t Voce escolheu Laranja.\n");
break;
}return0;
}
Acumuladores
• É a utilização de um elemento (variável) com o propósito de armazenar os resultados parciais de operação iterativa.
• O efeito é dado pela característica repetitiva do conjunto.
• O arranjo é dado na forma:
acumulador = acumulador operação termo
Exemplo
• Faça um programa para calcular o valor da seguinte série:
5099 4 ...
3 7 2 5 1 3
1
S
Exemplo
#include <stdio.h>
intmain () { floatsoma; inti;
soma = 1/1;
for(i = 2; i<=50; i++) {
soma = soma + (float) (2*i-1)/i;
printf("O resultado da soma eh: %f", soma);
return0;
}