Você está na página 1de 32

Algoritmos e Programao

Estrutura de Controle de Fluxo


Tema 3

Prof. Jeanne Dobgenski


Operadores Relacionais

Os operadores relacionais e os operadores


lgicos so usados para a composio de
expresses lgicas, ou seja, aquelas que
resultam em apenas duas possibilidades:
verdadeiro ou falso.
Operadores Relacionais
Operao Operador em Exemplo
C
Igual == a == b (a igual a b?)
Diferente != a != b (a diferente de b?)

Maior que > a>b (a maior que b?)


Menor que < a<b (a menor que b?)
Maior ou igual que >= a>=b (a maior ou igual a
b?)
Menor ou igual <= a<=b (a menor ou igual
que a b?)
Operadores Lgicos
Operao Operador Significado
em C

Operador unrio de negao. Tem a


Negao maior precedncia entre os operadores
!
(lgico NO) lgicos. Exemplo: !(VERDADEIRO) =
FALSO e !(FALSO) = VERDADEIRO

Operador binrio que resulta


Conjuno
&& VERDADEIRO somente se seus dois
(lgico E)
operandos lgicos forem verdadeiros.

Operador binrio que resulta


Disjuno
|| VERDADEIRO quando um de seus
(lgico OU)
operandos lgicos for verdadeiro.
Tabela Verdade

A B A && B A || B !A

F F F F V
F V F V V
V F F V F
V V V V F
Estrutura de Controle Simples

// forma geral da sentena int main()


if (expresso) {
comando; float x = y =10.0;
else float z = 0;
comando; if (x >= y) // simples
z = x+y;
printf(\n z = %6.2f, z);
}

Explicao:
comando pode ser um nico comando, um bloco deles (inicializado
por { e finalizado por }) ou nada. O else opcional. Lembre-se de
que apenas o cdigo associado ao if ou ao else ser executado,
nunca ambos.
Estrutura de Controle Composta

int main()
{
float x = y =10.0;
float z = 0;
if (x > y) // composta
z = x+y;
else
z = x/y;
printf(\n z = %6.2f, z);
}
Estrutura de Controle de Seleo
Aninhada
// forma geral da sentena int main()
if (expresso) {
comando; float x =20.0;
else if (expresso) float y =10.0;
comando; float z = 0;
else if (expresso) if (x >= y)
comando; z = x-y;
... else if (x != 0 && y>0)
else z = y/x;
comando; else
z = x+y;
printf(\nz = %6.2f, z);
}
Estrutura de Controle de Escolha
Mltipla
switch (expresso)
{
case constante_1: comandos
break;
case constante_2: comandos
break;
...
case constante_n: comandos
break;
default: seqncia de comandos
}
Estrutura de Controle de Escolha
Mltipla
int main() switch (opcao)
{ {
int opcao, x = y = 10; case 1:
printf("\n 1 - adio"); printf("\n x + y = %d\n", x+y);
printf("\n 2 - subtrao"); break;
printf("\n 3 - diviso"); case 2:
printf("\n 4 - multiplicao"); printf("\n x y = %d\n", x - y);
printf("\n Digite a opo desejada:"); break;
scanf("%d", &opcao); case 3:
printf("\n x/y = %d\n", x/y);
break;
case 4:
printf("\n x*y = %d\n", x*y);
break;
default :
printf("Opcao Invalida\n");
}
return (0);
}
Estrutura de Controle de Fluxo
Continuando
Comando de Lao Enquanto: Sintaxe

while (expresso lgica ou teste)


{
comando_1;
comando_2;

comando_n;
}
Comando de Lao Enquanto (While)
int main() Estado X Y
{ Valores iniciais 1 5
int X, Y; Final do primeiro teste 1<5 3 6
Final do segundo teste 3<6 5 7
X = 1; Final do terceiro teste 5<7 7 8
Y = 5; Final do quarto teste 7<8 9 9
while (X < Y) Quinto teste 9<9 falso,
{ portanto sai do loop while e vai
X = X + 2; para o prximo comando.
Y = Y + 1;
} // Fim enquanto
printf(X = %d e Y =
%d\n, X, Y);
}// Fim main
Comando de Lao Faa-enquanto:
Sintaxe
do
{
comando 1;
comando 2;
comando 3;

comando N;
} while (expresso lgica);
Comando de lao Faa-enquanto (do-
while)
int main() X Y Estado
{ 1 5 Valores iniciais
int X, Y; 3 6 Primeiro teste 3 < 6
5 7 Segundo teste 5 < 7
X = 1; 7 8 Terceiro teste 7 < 8
Y = 5; 9 9 Quarto teste 9<9 falso,
do portanto sai do loop do-
{ while e vai para o prximo
X = X + 2; comando.
Y = Y + 1;
} while( X < Y);
printf(X = %d e Y = %d\n,
X, Y);
}// Fim main
Comando de Lao Para: Sintaxe

for(inicializao ; condio ; incremento)


comando (ou bloco de comandos);

O comando pode ser vazio. O teste


condicional sempre executado no topo do
for, isto , se a condio for falsa o comando
interno do for no executado.
Comando de Lao Para (for)
int main() Estado i X Y
{ Valores iniciais 0 1 5
int X, Y, i; Primeiro lao 1 3 6
Segundo lao 2 5 7
X = 1; Terceiro lao 3 7 8
Y = 5; Quarto lao 9 9
for (i = 0; i<4; i++)
{
X = X + 2;
Y = Y + 1;
} // Fim para
printf(X=%d e Y= %d\n, X, Y);
}// Fim main
Comando de Lao Para (for):
Variaes
Exemplos:
1) for(x=0; x!=123; )
scanf(%d, &x);
2) for( ; ; )
printf(\n Esse lao infinito!! \n);
3) for(t=0; t<valor; t++) ;
Estrutura de Controle de Fluxo

Agora sua vez


Exerccio 1

Desenvolva um programa que leia um


nmero inteiro e retorne se o nmero lido
positivo ou negativo.
Exerccio 1 - Soluo

/* Linguagem C - Exerccios em Aula - Aula 3 - Expresses condicionais. */


#include <stdio.h>

int main()
{
int a;
printf("Digite um numero: ");
scanf("%d", &a);
if (a > 0)
printf("O valor e positivo.");
else
printf("O valor e negativo.");
return (0);
}
Exerccio 2

Implemente um programa que leia uma


letra e indique se ela vogal ou consoante.
Exerccio 2 - Soluo

/* Linguagem C - Estrutura de multi-condies switch. */


#include <stdio.h>

int main()
{
char opcao = b;
switch (opcao)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("1. Vogais\n");
break;
default :
printf("2. Consoantes\n");
}
return (0);
}
Exerccio 3

Faa um programa que imprima a tabuada


de 2 a 9.
Exerccio 3 - Soluo
/* Linguagem C - programa que gera a tabuada de 2 a 9 */
#include<stdio.h>
int main ()
{
int i,j,k;
printf("\n");
for (k=0; k<=1; k++)
{
printf("\n");
for(i=1;i<5;i++)
printf(" TABUADA DO %3d ", i+4*k+1);
printf("\n");
for(i=1;i<=10; i++)
{
for(j=2+4*k; j<=5+4*k; j++)
printf(" %3d x %3d = %3d ", j, i, j*i);
printf("\n");
}// for i
}// for k
}// main
Estrutura de Controle de Fluxo

Finalizando
Tabela Verdade

A B A && B A || B !A

F F F F V
F V F V V
V F F V F
V V V V F
Estrutura de Controle de Seleo
Aninhada
// forma geral da sentena int main()
if (expresso) {
comando; float x =20.0;
else if (expresso) float y =10.0;
comando; float z = 0;
else if (expresso) if (x >= y)
comando; z = x-y;
... else if (x != 0 && y>0)
else z = y/x;
comando; else
z = x+y;
printf(\nz = %6.2f, z);
}
Estrutura de Controle de Escolha
Mltipla
int main() switch (opcao)
{ {
int opcao, x = y = 10; case 1:
printf("\n 1 - adio"); printf("\n x + y = %d\n", x+y);
printf("\n 2 - subtrao"); break;
printf("\n 3 - diviso"); case 2:
printf("\n 4 - multiplicao"); printf("\n x y = %d\n", x - y);
printf("\n Digite a opo desejada:"); break;
scanf("%d", &opcao); case 3:
printf("\n x/y = %d\n", x/y);
break;
case 4:
printf("\n x*y = %d\n", x*y);
break;
default :
printf("Opcao Invalida\n");
}
return (0);
}
Comando de Lao Enquanto (while)
int main() Estado X Y
{ Valores iniciais 1 5
int X, Y; Final do primeiro teste 1<5 3 6
Final do segundo teste 3<6 5 7
X = 1; Final do terceiro teste 5<7 7 8
Y = 5; Final do quarto teste 7<8 9 9
while (X < Y) Quinto teste 9<9 falso,
{ portanto sai do loop while e vai
X = X + 2; para o prximo comando.
Y = Y + 1;
} // Fim enquanto
printf(X = %d e Y =
%d\n, X, Y);
}// Fim main
Comando de lao Faa-enquanto (do-
while)
int main() X Y Estado
{ 1 5 Valores iniciais
int X, Y; 3 6 Primeiro teste 3 < 6
5 7 Segundo teste 5 < 7
X = 1; 7 8 Terceiro teste 7 < 8
Y = 5; 9 9 Quarto teste 9<9 falso,
do portanto sai do loop do-
{ while e vai para o prximo
X = X + 2; comando.
Y = Y + 1;
} while( X < Y);
printf(X = %d e Y = %d\n,
X, Y);
}// Fim main
Comando de Lao Para (for)
int main() Estado i X Y
{ Valores iniciais 0 1 5
int X, Y, i; Primeiro lao 1 3 6
Segundo lao 2 5 7
X = 1; Terceiro lao 3 7 8
Y = 5; Quarto lao 9 9
for (i = 0; i<4; i++)
{
X = X + 2;
Y = Y + 1;
} // Fim para
printf(X=%d e Y= %d\n, X, Y);
}// Fim main

Você também pode gostar