Pontifícia Universidade Católica
de Goiás PUC GOIÁS
Departamento de Computação
Informática
e
Computação
Cesar Augusto da Rocha Magalhães
INFORMÁTICA E COMPUTAÇÃO
CMP 1060
CONTROLE DE FLUXO
ESTRUTURA CONDICIONAL
Os programas que vimos até agora
têm a seguinte estrutura:
INICIO
declarações
instrução 1
instrução 2
instrução 3
...
instrução N
FIM
ESTRUTURA
SEQUENCIAL
Estrutura Condicional
O caso geral da instrução se - senão:
se Se a (expressão)
se ( expressão )
entre os parenteses for
VERDADEIRA
executo a
instrução1 ;
instrução 1
senão senão executo
senão instrução2 ;
a instrução
2
Exemplo:
se (X > Y)
X=Y
senão X = X +1
// se for verdade que o valor de X é maior que Y
// atribui o valor de Y para X
// senão adciono 1 ao valor de X
Estrutura Condicional
O caso geral da instrução se - senão:
se ( expressão )
instrução1 ;
senão instrução2 ;
se Se a (expressão)
entre os parenteses for
VERDADEIRA
executo a
instrução 1
senão senão executo
a instrução
O comando senão não é obrigatório:
se ( expressão ) // se a expressao for verdadeira
instrução1 ; // executo a instrução 1 e sigo a execução
2
Estrutura Condicional
Expressões Logicas: é a expressão cujo operadores são
lógicos e cujos operandos são relações, constantes e/ou
variáveis do tipo lógico. Exemplos: X + Y = Z , X e Y = Z
Relações: X > Y o resultado será verdadeiro ou falso.
Símbolos Relacionais
Símbolo
<
>
<=
>=
==
!=
Significado
menor
maior
menor ou igual
maior ou igual
igual
diferente
Estrutura Condicional
Operadores Lógicos
SÃO CONECTORES QUE RELACIONAM PROPOSIÇÕES QUE
PODEM SER VERDADEIRAS OU FALSAS.
e conjunção (é verdadeira se e somente se
ambas as proposições são verdadeiras).
ou disjunção ( é verdadeira se pelo menos
uma delas for verdadeira).
não negação (é negação da expressão)
Estrutura Condicional
Operador Descrição
Exemplo
Resultado
&&
E
F
V
(5 > 1) && (3>10)
FALSO
&&
E
V
(2 V
>1) && (10 > 9) VERDADEIRO
||
OU
V 1) || (10 F> 11) VERDADEIRO
(3>
||
OU
V 2) || (10 > 5)
(4>
VERDADEIRO
!
NÃO
!(5>1)
FALSO
!
NÃO
!(2 > 3)
VERDADEIRO
V
Estrutura Condicional Simples
se ( expressão )
instrução1 ;
Exemplo
Desenvolver um programa para entrar com um
preço do carro e calcular o preço final de acordo
com as opções do usuário com os opcionais de
vidro elétrico, ar condicionado, trava central, pintura
metálica e ar condicionado.
Desenvolver um programa para entrar com um
preço do carro e calcular o preço final de acordo
com as opções do usuário com os opcionais de
vidro elétrico, ar condicionado, trava central, pintura
metálica e ar condicionado.
Análise:
Preço do carro
Ar condicionado
Dir hidraulica
Pintura metálica
Vidro elétrico
Trava central
Preço final carro
= 22000,00
+ 2500,00
+ 2000,00
+ 650,00
+ 500,00
+ 400,00
28050,00
Entro com o valor do carro
Pergunto pelos opcionais:
Tabela de Preços:
Ar concionado
Dir . Hidraulica
Pintura metálica
Vidro elétrico
Trava central
R$ 2500,00
R$ 2000,00
R$ 650,00
R$ 500,00
R$ 400,00
Resposta:
‘S’ ‘N’
Desenvolver um programa para entrar com um
preço do carro e calcular o preço final de acordo
com as opções do usuário com os opcionais de
vidro elétrico, ar condicionado, trava central, pintura
metálica e ar condicionado.
Análise:
Preço do carro
Ar condicionado
Dir hidraulica
Pintura metálica
Vidro elétrico
Trava central
Preço final carro
= 22000,00
+ 2500,00
+ 2000,00
+ 650,00
+ 500,00
+ 400,00
28050,00
Se não for adicionado nenhum opcional
DEFINIÇÃO
o PRECOFINAL
é o valorDAS
do preço
INICIAL
do carro
VARIÁVEIS
RESPAC
RESPDH
RESPPM
RESPVE
RESPTC
PRECOFINAL
Resposta:
‘S’ ‘N’
// programa PRECOCARRO
INICIO
Resposta:
O preço inicial do carro será = preço final sem
nenhum opcional, entretanto existe
‘S’ ‘N’a
possibilidade de se querer comprar só item(s)
RESPAC
opcionais PRECOFINAL=preço do carro = 0
RESPDH
char RESPAC, RESPDH, RESPPM, RESPVE, RESPTC;
real PRECOFINAL=0;
//leia os dados de entrada
ESCREVA("Qual o preco inicial do carro");
LEIA(PRECOFINAL);
ESCREVA(" Deseja Ar Condicionado (S/N) ? ");
LEIA(RESPAC);
ESCREVA(" Deseja Direcao Hidraulica (S/N) ? ");
LEIA(RESPDH);
ESCREVA(" Deseja Pintura Metalica (S/N) ? ");
LEIA(RESPPM);
ESCREVA(" Deseja Vidros Eletricos (S/N) ? ");
LEIA(RESPVE);
ESCREVA(" Deseja Trava Central (S/N) ? ");
LEIA(RESPTC);
// teste da resposta do cliente
RESPPM
RESPVE
RESPTC
PRECOFINAL
// teste da resposta do cliente
Resposta:
‘S’ ‘N’
RESPAC
se ( (RESPAC == 'S') ;
PRECOFINAL = PRECOFINAL + 2500. ;
RESPDH
RESPPM
RESPVE
se ( (RESPDH == 'S') ;
PRECOFINAL = PRECOFINAL + 2000. ;
RESPTC
PRECOFINAL
se ( (RESPPM == 'S') ;
PRECOFINAL = PRECOFINAL + 650. ;
se ( (RESPVE == 'S') ;
PRECOFINAL = PRECOFINAL + 500. ;
se ( (RESPTC == 'S') ;
PRECOFINAL = PRECOFINAL + 400. ;
Preço do carro
= 22000,00
Ar condicionado + 2500,00
Dir hidraulica
+ 2000,00
Pintura metálica + 650,00
Vidro elétrico
+ 500,00
Trava central
+ 400,00
Preço final do carro 28050,00
//exiba os resultados de saída
ESCREVA("R$ “, PRECOFINAL, " será o preço final do carro. “ );
FIM
INICIO
char RESPAC, RESPDH, RESPPM, RESPVE, RESPTC;
real PRECOFINAL=0;
ESCREVA("Qual o preco inicial do carro“);
LEIA( PRECOFINAL;
RESPAC
S
ESCREVA("Deseja Ar Condicionado (S/N) ?“);
RESPDH
S
LEIA( RESPAC );
ESCREVA(”Deseja Direcao Hidraulica (S/N) ?“);
RESPPM
S
LEIA( RESPDH );
RESPVE
S
ESCREVA("Deseja Pintura Metalica (S/N) ? “);
LEIA( RESPPM );
RESPTC
S
ESCREVA("Deseja Vidros Eletricos (S/N) ?“);
PRECOFINAL
28050
LEIA( RESPVE );
22000
24500
27650
27150
26500
0
ESCREVA("Deseja Trava Central (S/N) ?“);
LEIA( RESPTC );
Preço do carro
= 22000,00
se ( (RESPAC == 'S') ;
Ar condicionado + 2500,00
PRECOFINAL = PRECOFINAL + 2500. ;
se ( (RESPDH == 'S') ;
Dir hidraulica
+ 2000,00
PRECOFINAL = PRECOFINAL + 2000. ;
Pintura metálica + 650,00
se ( (RESPPM == 'S') ;
PRECOFINAL = PRECOFINAL + 650. ;
Vidro elétrico
+ 500,00
se ( (RESPVE == 'S') ;
Trava central
+ 400,00
PRECOFINAL = PRECOFINAL + 500. ;
se ( (RESPTC == 'S') ;
Preço final do carro 28050,00
PRECOFINAL = PRECOFINAL + 400. ;
ESCREVA("R$ “, PRECOFINAL, " será o preço final do carro.“) ;
RASTREAMENTO
FIM
Estrutura Condicional Composta
se ( expressão )
instrução1 ;
senão instrução2 ;
Exemplo 1
Desenvolver um programa para entrar com
dois números e exibir o maior entre eles.
INICIO
// prog para exibir o maior de 2 numeros X e Y
RASTREAMENTO
// define dois inteiros
inteiro: X, Y;
X
Y
587
943
// entra com dois números inteiros diferentes
ESCREVA( " Digite o primeiro numero : “ ) ;
LEIA( x );
ESCREVA( “Digite o segundo numero : “ );
LEIA( y );
//exibe uma mensagem dizendo qual número é maior
se (X > Y)
ESCREVA ( X, " é maior do que “, Y );
senão
ESCREVA ( X, " é menor do que “,Y );
FIM
// programa que verifica se um número é par ou ímpar*/
INICIO
Analise
N |2 `
0 quociente
Inteiro: N;
PAR
ESCREVA(" Digite um numero inteiro: “);
LEIA ( N );
se ( N % 2 == 0 );
ESCREVA( N , " É par “);
senão
ESCREVA( N , " É impar “);
FIM
Escrever um algoritmo que leia o nome e as três notas obtidas por um
aluno durante o semestre. Calcular a sua média (aritmética), informar o
nome e sua menção aprovado (media >= 7), Reprovado (media <= 5) e
Recuperação (media entre 5.1 a 6.9).
INICIO
LITERAL:NOME ;
REAL:N1, N2, N3, MEDIA ;
ESCREVA("SISTEMA DE MÉDIAS") ;
ESCREVA("DIGITE A PRIMEIRA NOTA: ") ;
LEIA(N1) ;
ESCREVA("DIGITE A SEGUNDA NOTA: ") ;
LEIA(N2) ;
ESCREVA("DIGITE A TERCERIA NOTA: ") ;
LEIA(N3) ;
MEDIA <- (N1 + N2 + N3) / 3 ;
MEDIA = (N1 + N2 + N3) / 3 ;
SE MEDIA >= 7 ENTAO
ESCREVAL("O ALUNO ",NOME, "ESTA APROVADO!") ;
SENAO
SE MEDIA <= 5 ENTAO
ESCREVAL("O ALUNO ",NOME, "ESTA REPROVADO!") ;
SENAO
ESCREVAL("O ALUNO ",NOME, "ESTA EM RECUPERAÇÃO!") ;
FIMSE
FIMSE
FIM