3. estruturas de controle centro federal de educação tecnológica da paraíba coordenação de...
TRANSCRIPT
3. Estruturas de controle3. Estruturas de controle
Centro Federal de Educação Tecnológica da ParaíbaCentro Federal de Educação Tecnológica da ParaíbaCoordenação de InformáticaCoordenação de InformáticaProfessor: Lafayette B. MeloProfessor: Lafayette B. Melo
LINGUAGEM CLINGUAGEM C
3. Estruturas de controle3. Estruturas de controleTÓPICOSTÓPICOS
1. Introdução à Linguagem C1. Introdução à Linguagem C
2. Operadores e Expressões2. Operadores e Expressões
3. Estruturas de Controle3. Estruturas de Controle
4. Entrada e Saída4. Entrada e Saída
5. Matrizes e strings5. Matrizes e strings
6. Funções6. Funções
7. Ponteiros7. Ponteiros
8. Estruturas e Uniões8. Estruturas e Uniões
9. Arquivos Texto9. Arquivos Texto
10. Arquivos Binários10. Arquivos Binários
3. Estruturas de controle3. Estruturas de controle
Os comandos de controle de fluxo são utilizados para definir o fluxo de execução do programa e podem ser
agrupados em comandos de laço e de decisão
Veremos então:– Comandos de decisão
• If e if – else• switch
• Comandos de laço
• for• while
• do-while• goto
3. Estruturas de controle3. Estruturas de controle
3. Estruturas de controle3. Estruturas de controle
O que são– Os comandos de Controle de Fluxo são utilizados para definir o fluxo
de execução do programa– Podem ser agrupados nos comandos if, switch, while, for, do-while
e goto
IF– Sintaxe: if (condição) comando;
else comando;
– Apenas um dos comandos, o associado ao if ou o associado ao else será executado
3. Estruturas de controle3. Estruturas de controlePrograma com if - número mágico
main()
{
int magico,adivinha;
randomize();
magico = random (100);
printf (“Adivinhe o numero!”);
scanf (“%d”,&adivinha);
if (adivinha == magico)
printf (“Ok, voce acertou!”);
else printf (“Voce errou!!”);
}
3. Estruturas de controle3. Estruturas de controle– If aninhado: if objeto de um else ou de outro if– if (x) if (x) {
if (y) printf (“ola!”); if (y) printf (“ola”);
else printf (“oi!”); } else printf (“oi”!);
– Escada if-else-if
if (condição)
comando;
else if (condição)
comando;
else if (condição)
comando;
...
3. Estruturas de controle3. Estruturas de controle
Programa modificação de número mágico
if (adivinha == magico) {
printf (“Ok, voce acertou!\n”);
printf (“%d e o numero magico\n”);
}
else if (adivinha > magico)
printf (“valor alto!\n”);
else
printf (“valor baixo!\n”);
3. Estruturas de controle3. Estruturas de controle
– Expressões Condicionais: em C o fato de não se utilizar nas condições do If apenas operadores lógicos ou de atribuiçao pode se resultar em ganho
Programa divisão do primeiro pelo segundo número
main()
{
int a, b;
printf (“digite dois numeros: “);
scanf (“%d%d”,&a,&b);
if (b) printf (“%d\n”,a/b);
else printf (“não divido por zero\n”);
}
3. Estruturas de controle3. Estruturas de controle
• Note que:
int num;
if (num != 0)…
if (num == 0)…
for (i = 0; string[i] != ‘\0’; i++)
EQUIVALE A
int num;
if (num)…
if (!num)…
for (i = 0; string[i]; i++)
3. Estruturas de controle3. Estruturas de controle
SWITCH - substitui a escada if-else-if– O computador testa uma variável sucessivamente contra uma lista de valores. Sintaxe:
switch (variável) {case constante1 :
sequência de comandosbreak;case constante2:
sequência de comandosbreak;...default:
sequência de comandos}
O switch só testa constantes!
Não pode haver 2 constantes case com valores iguais no mesmo switch!
3. Estruturas de controle3. Estruturas de controlePrograma switch de menu...char ch;
printf (“1. Verificar erros \n“);printf (“2. Corrigir erros \n“);printf (“3. Exibir erros \n“);printf (“4. Outra opção \n“);ch = getchar();switch (ch) {
case ‘1’:verficar();break;
case ‘2’:corrigir();break;
case ‘3’:exibir();break;
default:printf(“nenhuma opção escolhida”);}
3. Estruturas de controle3. Estruturas de controle
Programa de saídaint t;for (t=0;t<10;t++)
switch (t) {case 1:printf (“Agora”);break;case 2:printf (“é”);case 3:case 4:printf (“hora “);printf (“ de ir embora! \n”);case 5:case 6:printf (“vamos... “);break;case 7:case 8:case 9:printf (“-”);};
3. Estruturas de controle3. Estruturas de controle
Programa de switch aninhadoswitch (x) {
case 1:switch (y) {
case 0:printf(“erro na divisão”);break;
case 1:processa (x,y);
}case 2: ...
– Obs.: Loops - permitem que o computador repita um conjunto de instruções até que alcance uma certa condição
3. Estruturas de controle3. Estruturas de controle
FOR - faz o incremento um número determinado de vezes e de acordo com determinadas condições. Sintaxe:– for (inicialização; condição; incremento)
comando
Programa exemplo simplesmain()
{
int x;
for (x=1;x<=100;x++) printf (“%d “,x);
}
3. Estruturas de controle3. Estruturas de controle
Programa exemplo de decrementomain()
{
int x;
for (x=100;x>0;x--) printf (“%s “,x);
}
Programa exemplo de atribuiçãomain()
{
int x;
for (x=0;x<=100;x=x+5) printf (“%d “,x);
}
3. Estruturas de controle3. Estruturas de controle
Cuidado com a condição falsa !!!x=10;
for (y=10;y!=x;++y) printf (“%d”,y);
printf (“%d”,y);
Programa variação com duas variáveis de controlemain()
{
int x,y;
for (x=0,y=0;x+y<100;++x,y++)
printf (“%d “,x+y);
}
3. Estruturas de controle3. Estruturas de controlePrograma com condições como expressões válidas em cmain()
{
int i, j, resposta;
char feito = ‘ ‘;
for (i=1;i<100 && feito != ‘N’;i++) {
for (j=1;j<10;j++) {
printf (“quanto e %d + %d? “,i,j);
scanf (“%d”,&resposta);
if (resposta != i+j) printf (“Errado\n”);
else printf (“Certo \n”);
}
printf(“mais? “);
feito = getche();
}
}
3. Estruturas de controle3. Estruturas de controleVariação de expressões válidas em c em qualquer lugar do formain(){
int t;for (prompt();t=readnum();prompt())
sqrnum(t);}
prompt(){
printf (“digite um inteiro: “);}readnum(){
int t;scanf(“%d”,&t);return t;
}sqrnum(num)int num;{
printf(“%d\n”,num*num);}
3. Estruturas de controle3. Estruturas de controle
For sem todas as expressõesfor (x=0;x!=123;)
Loop infinitofor (;;)
printf (“este loop rodará para sempre\n);
Saindo de um Loopfor (;;) {
ch = getche();
if (ch == ‘A’) break;
}
printf (“voce digitou um A”);
Loop sem corpo (retardo)for (t=0;t < ALGUM_VALOR;t++);
3. Estruturas de controle3. Estruturas de controle
WHILE - enquanto uma condição ocorre repete. Sintaxe:while (condição)
comando;
Exemplo simplesespera_por_char(){
char ch;ch = ‘\0’;while (ch != ‘A’) ch = getche();
}
3. Estruturas de controle3. Estruturas de controle
Condições separadas-1 variável como expressão condicionalfuncao1(){
int trab;trab = 1;while (trab) {
trab = process1();if (trab)
trab = process2();if (trab)
trab = process3();}
}
3. Estruturas de controle3. Estruturas de controleExemplo simplesmain()
{
char str[255];
printf(“digite uma sequencia: “);
gets (str);
center (strlen(str));
printf(str);
}
center(len)
int len;
{
len = (80 - len)/2;
while (len>0) {
printf(“ “);
len--;
}
}
3. Estruturas de controle3. Estruturas de controle
DO-WHILE - repete algo enquanto uma condição ocorre.
Sintaxe:do {
comando;
} while (condição);
Exemplo simplesmain()
{
int num;
do {
scanf (“%d”,&num);
} while (num < 100);
O do-while é muito usado para rotina seleção de menu!!!
3. Estruturas de controle3. Estruturas de controle
Programa - número mágico outra versãomain(){
int magico,adivinha, tentativas=0;randomize();magico = random (100);do {
printf(“adivinhe: “);scanf (“%d”,&adivinha);if (adivinha == magico) {
printf (“** acertou **”);printf (“%d e o numero magico\n”,magico);
}else if (adivinha> magico) printf (“valor alto”); else printf (“valor baixo”);tentativas++;} while (adivinha != magico);
printf (“voce tentou %d vezes\n”,tentativas);}
3. Estruturas de controle3. Estruturas de controle
Loops aninhados - exemplo das 4 potências de 1 a 9main()
{
int i, j, k, temp;
printf (“ i i^2 i^3 i^4 i^5\n”);
for (i=1;i<10;i++) {
for (j=1;j<5;j++) {
temp = 1;
for (k=0;k<j;k++)
temp=temp*i;
printf (“%9d”,temp);
}
printf(“/n”);
}
}
3. Estruturas de controle3. Estruturas de controle
Uso de break e continueint t;
for (t=0;t<100;t++) {
printf (“%d “,t);
if (t==10) break;
}
int x;
for (x=0;x<100;x++) {
if (x%2) continue;
printf (“%d “,x);
}
Uso de rótulos e goto