26
3. Estruturas de controle 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Coordenação de Informática Professor: Lafayette B. Melo Professor: Lafayette B. Melo LINGUAGEM C LINGUAGEM C

3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

Embed Size (px)

Citation preview

Page 1: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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

Page 2: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM 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

Page 3: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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

Page 4: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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

Page 5: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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!!”);

}

Page 6: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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;

...

Page 7: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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”);

Page 8: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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”);

}

Page 9: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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++)

Page 10: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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!

Page 11: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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”);}

Page 12: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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 (“-”);};

Page 13: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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

Page 14: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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);

}

Page 15: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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);

}

Page 16: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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);

}

Page 17: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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();

}

}

Page 18: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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);}

Page 19: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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++);

Page 20: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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();

}

Page 21: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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();}

}

Page 22: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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

}

}

Page 23: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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

Page 24: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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);}

Page 25: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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”);

}

}

Page 26: 3. Estruturas de controle Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo LINGUAGEM C

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