Upload
internet
View
103
Download
1
Embed Size (px)
Citation preview
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