Você está na página 1de 41

Condicional

Kate Revoredo
katerevoredo@uniriotec.br
1

Estruturas de Controle
Para implementar a soluo de um problema no
computador (Algoritmo) preciso encontrar uma
sequncia finita de passos que permita que o problema
possa ser resolvido de maneira automtica. Para a
definio da ordem de execuo dos passos de um
algoritmo essencial a utilizao de instrues
especficas denominadas Estruturas de Controle.

Estruturas de Controle
Existem trs estruturas bsicas:

Sequncia,
Seleo, e
Repetio.

Estrutura de Controle - Sequncia


Sequncia esta estrutura define a sequncia linear das
instrues.

Ao1

Ao2

Exemplo

Soma de dois nmeros inteiros


var
a,b,c: inteiro
incio
leia(a,b)
c <- a+b
escreva(c)
fim.

Estrutura Sequncial

Estrutura de Controle- Seleo


Seleo Esta estrutura define o ponto de bifurcao onde
cada via conduz a um processamento distinto.
O formato de seleo da instruo de dois ramos
se <condio> ento <bloco 1> seno <bloco 2>
aps o teste do valor da <condio> executado um nico
<bloco>
se a <condio> for verdadeira o <bloco 1>
se a <condio> for falsa o <bloco 2>

Estrutura de Controle- Seleo


O formato de seleo da instruo
se <condio> ento <bloco 1> seno <bloco 2>
se a <condio> for verdadeira executado o
<bloco 1>
se a <condio> for falsa executado o <bloco 2>
Aps a execuo do condicional a ao z ser executada
V

F
Condio

bloco 2

bloco 1
ao z

Estrutura de Controle- Seleo


Uma <condio> expressa utilizando-se os operadores
de relao
<, >, =, , e
A expresso que se obtm relacionando-se entre si
variveis e ou constantes por meio de operadores de
relao chama-se expresso booleana.
Uma expresso booleana assume somente dois valores
mutuamente exclusivos
true (verdadeiro)
false (falso)

Definies bsicas- Operadores Aritmticos e


Relacionais
Tipo de dados Inteiro

Elemento: nmero inteiros com sem sinal


operaes

notao

relaes

notao

Adio

menor

<

Subtrao

maior

>

Multiplicao

igual

diferente

menor ou igual

<=

maior ou igual

>=

quociente inteiro

/ (ou DIV)

resto da diviso

%(ou MOD)

Definies bsicas- Operadores Aritmticos e


Relacionais
Tipo de dados Real
Elemento: nmero racionais com ou sem sinal
operaes

notao

relaes

notao

adio

menor

<

subtrao

maior

>

multiplicao

igual

quociente inteiro

/ ( ou Div) diferente

menor ou igual

<=

maior ou igual

>=

Exemplo
Enunciado
Dados dois nmeros inteiros a e b distintos, imprimir o maior
nmero.

Esboo do algoritmo
leia (a,b)
compare a com b, definindo o maior
imprima (maior)

Para efetuar a comparao ser testado a condio a > b.

Exemplo de Algoritmo com Estrutura de Controle:


Seleo
Para efetuar a comparao ser testado a condio a > b
se for verdadeira, o maior deve receber o valor de a
caso contrrio, o maior deve receber o valor de b.

Esse comando expressa que h duas alternativas a


serem executadas e aps o teste somente uma
entre elas o ser.

Exemplo de Algoritmo com Estrutura de Controle:


Seleo
Algoritmo Maior
objetivo: determinar o maior de dois nmeros distintos
entrada: a, b (inteiros)
sada: maior (inteiro)
algoritmo Maior
var
a,b,maior:inteiro
inicio
leia(a,b)
se (a>b) ento
maior <- a
seno
maior <- b
fimse
escreva(Maior: , maior)
fim

Exemplo
Algoritmo Maior
objetivo: determinar o maior de dois nmeros distintos
entrada: a, b (inteiros)
sada: maior (inteiro)
algoritmo Maior
var
a,b,maior:inteiro
inicio
Preste
ateno
na
leia(a,b)
indentao do Cdigo !!
se (a>b) ento
Esta fundamental para
facilitar a leitura do algortimo.
maior <- a
seno
maior <- b
fimse
escreva(Maior: , maior)
fim

Estrutura de Controle- Composio de Seleo


O formato da instruo de seleo pode ser reaplicado
como um bloco de comandos da seguinte forma:
se <condio1> ento
se <condio 2> ento <bloco 1>
seno <bloco 2>
V
Ao z
V
condio2

condio1
F

bloco 2

bloco1
Ao z

Estrutura de Controle- Composio de Seleo


O formato da instruo de seleo pode ser reaplicado
como um bloco de comandos da seguinte forma:
se <condio1> ento
se <condio 2> ento <bloco 1>
seno <bloco 2>
aps o teste do valor da <condio1>, se esta condio for
verdadeira executado teste para verificar se a <condio2>
verdadeira, se for executado o <bloco1> seno nenhuma
ao realizada.
Se a <condio1> for falsa executado o <bloco 2>. Aps a
execuo do condicional a Aoz ser executada

Estrutura de Controle- Composio de Seleo 2


O formato da instruo de seleo pode ser reaplicado
como um bloco de comandos da seguinte forma:
se <condio1> ento
se <condio 2> ento <bloco 1>
seno <bloco 2>
seno <bloco 3>

Composio de Seleo
V

F
condio 1

V
condio 2

F
bloco 3
bloco2

bloco1

Ao z

Exemplo
Enunciado
Dados dois nmeros a e b, no necessariamente distintos,
determinar o maior. No caso deles serem iguais a sada
deve ser uma mensagem, por exemplo, valores iguais.

Anlise
Vamos estabelecer que com esta modificao, a condio a
ser testada inicialmente a igualdade dos dois nmeros
dados. Conforme o valor desta condio deve ser impresso
uma mensagem ou ento deve ser determinado e impresso
o maior valor.

Exemplo
Algoritmo Maior_versao2
Var
a,b,maior:inteiro
inicio
leia(a,b)
se (a = b) ento
escreva (valores iguais)
seno
se (a>b) ento
maior <- a
seno
maior <- b
fimse
escreva(Maior: , maior)
fimse
fim

Exemplo
Algoritmo Maior_versao2
Var
a,b,maior:inteiro
inicio
leia(a,b)
se (a = b) ento
escreva (valores iguais)
seno
se (a>b) ento
maior <- a
seno
maior >- b
fimse

Preste ateno na indentao


do Cdigo !!
Esta fundamental para
facilitar a leitura do algoritmo.
As instrues:
se (a>b) ento
maior a;
seno
maior b
fimse
So internas ao primeiro seno .

escreva(Maior: , maior)
fimse
fim

Bloco de comando - grupo de comandos relacionados que so


tratados como uma unidade. uma srie de declaraes ou
comandos dentro do escopo de alguma estrutura de controle.

Exerccio
Programa para dado um nmero identificar se este nmero par
ou impar:

Exemplo
1. Dado trs nmeros inteiros (a, b e c) , onde os dois
primeiros definem o limite inferior e superior do
intervalo, verificar se o terceiro nmero (c) est dentro
do intervalo definido anteriormente (a,b).
Anlise do Problema:
Entrada: 50, 100, 64
Sada
64 est dentro do intervalo entre 50 e 100
Entrada: 35, 60, 14
Sada
14 est fora do intervalo entre 35 e 60

Exemplo
Esboo
entrada de dados (a, b, c)
Verificar se c maior que a e menor que b
sada do resultado ( se c est no intervalo entre a e b)

Exemplo
Esboo
entrada de dados (a, b, c)
Verificar se c maior que a e menor que b
No passo acima podemos pensar na seguinte combinao de condicionais:
Verificar se c maior que a ento
Verificar se c menor que b ento
escreva( c, est no intervalo entre , a, e, b)
seno
escreva( c, no est no intervalo entre , a, e, b)
seno
escreva( c, no est no intervalo entre , a, e, b)

sada do resultado ( se c est no intervalo entre a e b)

Exemplo
1.

Dado trs nmeros inteiros (a, b e c) , onde os dois primeiros definem o


limite inferior e superior do intervalo, verificar se o terceiro nmero (c) est
dentro do intervalo definido anteriormente (a,b).

Var
a,b,c: inteiro;
inicio
leia(a,b,c);
se (c > a ) ento
se (c < b) ento
escreva(c,est no intervalo entre,a,e,b);
seno
escreva(c, no est no intervalo entre,a,e,b);
seno
escreva(c, no est no intervalo entre,a,e,b);
fim

Exemplo- Condicional
Var
a,b,c: inteiro;
inicio
leia(a,b,c);
se (c > a ) ento
se (c < b) ento
escreva(c,est no intervalo
entre,a,e,b);
seno
escreva(c,
no
est
no
intervalo entre,a,e,b);
seno
escreva(c,
no
est
no
intervalo entre,a,e,b);
fim

Podemos ver que temos


repetidos duas vezes a
instruo para imprimir
que :
c no entre a e b

Exemplo- Condicional
Var
a,b,c: inteiro;
inicio
leia(a,b,c);
se (c > a ) ento
se (c < b) ento
escreva(c,est no intervalo
entre,a,e,b);
seno
escreva(c,
no
est
no
intervalo entre,a,e,b);
seno
escreva(c,
no
est
no
intervalo entre,a,e,b);
fim

Ser que podemos


unir os dois testes dos
condicionais em um
nico condicional?

Exemplo- Condicional
Var
a,b,c: inteiro;
inicio
leia(a,b,c);
se (c > a ) ento
se (c < b) ento
escreva(c,est no intervalo
entre,a,e,b);
seno
escreva(c,
no
est
no
intervalo entre,a,e,b);
seno
escreva(c,
no
est
no
intervalo entre,a,e,b);
fim

Ser que podemos


unir os dois testes dos
condicionais em um
nico condicional?

Resposta: SIM!
Utilizando o operador
Booleano e

Condio - Expresso Booleana


Tipo de dados Booleano (lgico)
Elemento : os valores lgicos true (verdadeiro) e false (falso)
Constantes: T e F que representam os valores true e false,
respectivamente
operaes
negao

notao
no

conjuno

disjuno

ou

Essas operaes so binrias. So avaliadas a condio da direta e


da esquerda do operador para avaliar o valor resultante da
aplicao do operador.

Condio - Expresso Booleana


Tipo de dados Booleano (lgico)
Tabela Verdade
os valores lgicos true (verdadeiro) e false (falso)
constantes
T e F que representam os valores true e false, respectivamente
Dado as condies a e b e o resultado das suas avaliaes,
vamos analisar o resultado da aplicao dos operadores:
a

no a

aeb

a ou b

Condio - Expresso Booleana


Exemplo: Sejam a = 34, b =100, c = 47
Condio 1 : c > a
avaliao da Condio1: Verdadeiro ( T)
Condio 2 : c < b
avaliao da Condio2: Verdadeiro ( T)
Pela tabela Condio1 e Condio2 = T e T
Resultado da avaliao : Verdadeiro (T)

Voltando ao Exemplo
1. Dado trs nmeros inteiros (a, b e c) , onde os dois
primeiros definem o limite inferior e superior do
intervalo, verificar se o terceiro nmero (c) est dentro
do intervalo definido anteriormente (a,b).
Anlise do Problema:
Entrada: 50, 100, 64
Sada
64 est dentro do intervalo entre 50 e 100
Entrada: 35, 60, 14
Sada
14 est fora do intervalo entre 35 e 60

Exemplo Condicional
Var
a,b,c: inteiro;
inicio
leia(a,b,c);
se (c > a ) ento
se (c < b) ento
escreva(c,est no intervalo
entre,a,e,b);
seno
escreva(c,
no
est
no
intervalo entre,a,e,b);
seno
escreva(c,
no
est
no
intervalo entre,a,e,b);
fim

Ser que podemos


unir os dois testes dos
condicionais em um
nico condicional?

Resposta: SIM!
Utilizando o operador
Booleano e

Exemplo Condicional Novo algoritmo


Var
a,b,c: inteiro;
inicio
leia(a,b,c);
Se (c > a ) e (c < b)ento
escreva(c,est
no
intervalo
entre,a,e,b);
seno
escreva(c,
no
est
no
intervalo entre,a,e,b);
fim

Exerccio: intervalo
Dados um nmero n e quatro outros, a, b, c e d,
correspondentes, respectivamente, s extremidades dos
intervalos [a,b] e [c,d], sendo a < b, c < d e a < c

determinar se n pertence somente ao intervalo [a,b] ou


somente ao intervalo [c,d] ou, se n pertence a ambos ou se n
no pertence a nenhum dos dois
em cada caso imprimir uma mensagem conveniente
os nmeros so reais.

Quais as situaes possveis?

Verificao Manual de Algoritmos


Aps a construo de um algoritmo, existe uma forma
braal de verificar se ele est realmente apresentando uma
soluo correta para o problema.
Mtodo chins  simula manualmente a execuo do
algoritmo

Exemplo
Programa para calcular a mdia de dois nmeros inteiros
fornecidos pelo usurio.
Algoritmo media
Var
a,b,soma:inteiro
media:real
Inicio
leia(a,b)
soma = a+b
media ->soma/2
escreva(media)
fim

Para a=3 e b=6 espera-se media igual 4.5


Chins
a=3 b=6
Soma=9
Media=4.5
Correto!

Exemplo
Programa para calcular a mdia de dois nmeros inteiros
fornecidos pelo usurio.
Algoritmo media
Var
a,b,soma:inteiro
media:real
Inicio
leia(a,b)
soma = a+b
media ->a/2
escreva(media)
fim

Para a=3 e b=6 espera-se media igual 4.5


Chins
a=3 b=6
Soma=9
Media=1.5
Incorreto!

Exemplo
Programa para calcular a mdia de dois nmeros inteiros
fornecidos pelo usurio.
Algoritmo media
Var
a,b,soma:inteiro
media:real
Inicio
leia(a,b)
soma = a+b
media ->a/2
escreva(media)
fim

Para a=3 e b=6 espera-se media igual 4.5


Chins
a=3 b=6
Soma=9
Media=1.5
Incorreto!

Exerccio
Var
a,b,c:inteiro
Inicio
a <- 10
b <- 8
c <- 4
a <- a+c
b <- c+a
b <- a
c <- a+b
escreva(a,b,c)
fim

Você também pode gostar