3. estruturas de controle centro federal de educação tecnológica da paraíba coordenação de...

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

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


1 download

TRANSCRIPT

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