Você está na página 1de 21

Introduo Programao

Vania Bogorny e
Deise Saccol

Adaptado de slides das Profas. Patrcia Jaques e Mnica Py

Lgica de
programao

ESTRUTURAS DE DECISO
Comandos de deciso ou desvio fazem parte das
tcnicas de programao, para construir estruturas de
algoritmos que no so totalmente seqenciais.
Com as instrues de desvio pode-se fazer com que o
algoritmo proceda de uma ou outra maneira, de acordo
com as decises lgicas tomadas em funo dos dados
ou resultados anteriores.
As principais estruturas de deciso so:
SE...ENTO
SE...ENTO...SENO
CASO FOR...ENTO
2

SE ... ENTO ...

Lgica de
programao

- Formato:
Se <operao lgica> ento <aes>
Significado: Se a <operao lgica> resultar em
verdadeiro, ento executar as <aes>. Seno,
simplesmente ignorar as <aes> e seguir para a
prxima instruo no algoritmo.
Usada para decidir se um conjunto de aes
opcionais deve ser executado ou no, dependendo do
valor de algum dado ou de algum resultado que j
tenha sido calculado no algoritmo. O valor do dado
ou do resultado anterior ser testado na operao
lgica.

Lgica de
programao

Exemplo da estrutura SE...ENTO:


Avisar se um nmero lido for negativo.
PSEUDOCDIGO:
Ler N
Se (N < 0)
ento exibir negativo!

INCIO

FLUXOGRAMA:

N
OPERAO LGICA:

Poder ser V ou F, dependendo do valor de N, que


foi lido antes.

N<0

Sim

negativo!

No

FIM
4

SE ... ENTO ...SENO...

Lgica de
programao

- Formato:
Se <operao lgica>

ento <aes 1>


seno <aes 2>
Significado: Se a <operao lgica> resultar em
verdadeiro, ento executar <aes 1>. Seno,
ignorar <aes 1> e executar <aes 2>.
Usada para decidir entre duas alternativas de aes.
Um dos dois conjuntos de aes ser executado e o
outro no, dependendo do valor de algum dado ou de
algum resultado que j tenha sido calculado no
algoritmo. O valor do dado ou do resultado anterior
ser testado na operao lgica, determinando qual
conjunto de aes ser executado.
5

Lgica de
programao

Exemplo da estrutura SE...ENTO...SENO:


Mostrar a diferena entre 2 nmeros quaisquer.
PSEUDOCDIGO:
Ler N1
Ler N2
Se (N1 > N2)

ento DIF = N1 - N2
seno DIF = N2 - N1

Mostrar DIF

(Obs.: Este algoritmo funciona mesmo se os dois


nmeros forem iguais, pois ser calculado N2 - N1, o
que resultar em 0. Tambm funciona se um ou ambos
forem negativos. Experimente!)
6

Lgica de
programao

INCIO

FLUXOGRAMA:

N1
N2
DIF = N2 - N1

No

N1 > N2

Sim

DIF = N1 - N2

DIF
FIM
7

Se ... Ento ... Seno ... encadeados


Se <operao lgica> ento <ao 1>
seno se <operao lgica> ento <ao 2>
seno <ao 3>
Exemplo:
se (valor<0) ento res = 0;
seno se (valor>10) ento res = 2;
seno res = 3;

CASO ... ENTO...

Lgica de
programao

Formato:
Caso <valor 1> ento <aes 1>
Caso <valor 2> ento <aes 2>
Caso <valor 3> ento <aes 3>
Caso <etc., quantos precisar>
Significado: Se <valor> for igual a <valor 1>, ento
executar <aes 1>. Se for igual a <valor 2>, ignorar
<aes 1> e executar <aes 2>, e assim por diante.
Usada para escolher apenas um conjunto de aes
dentre vrios alternativos. Aqui o teste no mais uma
operao lgica: o prprio valor de algum dado ou
resultado anterior (que pode ser de outros tipos alm
do lgico) que vai determinar qual desses conjuntos
de aes ser executado.
9

Lgica de
programao

Exemplo da estrutura CASO...ENTO:


Escolher uma das 4 operaes bsicas para
aplicar em dois nmeros.
PSEUDOCDIGO:

Ler N1
Ler N2
Ler OPERACAO (que ser do tipo caractere)
Caso OPERACAO:
+ ento RESULT = N1 + N2
- ento RESULT = N1 - N2
* ento RESULT = N1 * N2
/ ento RESULT = N1 / N2
caso contrario exibir Operao no vlida!

Exibir RESULT
10

Lgica de
programao

INCIO
FLUXOGRAMA:
N1, N2
OPER

OPER
+

R = N1 + N2

R = N1 - N2

R = N1 * N2

R = N1 / N2

R
FIM
11

Introduo Linguagem C
Deise Saccol

Adaptado de slides das Profas. Patrcia Jaques e Mnica Py

12

Estrutura condicional simples


Comando if
if (condio)
comando;

if (a<menor)
menor=a;

if (condio) {
comando1;
comando2;
comando3;
}

if (a<menor) {
menor=a;
printf (%d, menor);
}

em pseudo-cdigo:
se (a<menor) entao menor=a;
13

Estrutura condicional composta


Comando if...else
if (condio)
comando;
else
comando;
if (condio) {
comando1;
comando2;
}
else {
comando3;
comando4;
}

Executa o comando se a condio for


qualquer coisa diferente de zero!

if (peso= =peso_ideal)
printf (Vc est em forma!);
else
printf (Necessrio fazer dieta!);

em pseudo-cdigo:
se (peso= =peso_ideal)
entao exibir Vc est em forma!
senao exibir Necessrio fazer dieta!
14

Estrutura SWITCH
switch (numero){
case 1: printf ("Janeiro\n"); break;
case 2: printf ("Fevereiro\n"); break;
case 3: printf ("Marco\n"); break;
case 4: printf ("Abril\n"); break;
case 5: printf ("Maio\n"); break;
case 6: printf ("Junho\n"); break;
case 7: printf ("Julho\n"); break;
case 8: printf ("Agosto\n"); break;
case 9: printf ("Setembro\n"); break;
case 10: printf ("Outubro\n"); break;
case 11: printf ("Novembro\n"); break;
case 12: printf ("Dezembro\n"); break;
default: printf (Mes invalido\n");
}

15

Exerccio 1
1) Dados dois nmeros A e B, some 100 ao maior nmero e
imprima.
#include <stdio.h>
#include <stdlib.h>
main(){
int A, B, soma;
printf ("Digite o valor de A: ");
scanf ("%d", &A);
printf ("Digite o valor de B: ");
scanf ("%d", &B);
if (A>B)
soma=A+100;
else
soma=B+100;
printf ("O maior valor adicionado de 100 resulta em %d\n", soma);
system("pause");
}
16

Exerccio 2
2) Escreva um algoritmo para determinar se uma pessoa
maior ou menor de idade.
#include <stdio.h>
#include <stdlib.h>
main (){
int idade;
printf ("Digite a idade da pessoa: ");
scanf ("%d", &idade);
if (idade>=18)
printf ("Pessoa eh maior de idade.\n");
else
printf ("Pessoa eh menor de idade.\n");
system("pause");
}
17

Exerccio 3
Ou utilizando boolean:
#include <stdio.h>
#include <stdlib.h>
main (){
int idade;
bool status;
printf ("Digite a idade da pessoa: ");
scanf ("%d", &idade);
if (idade>=18)
status=true;
else
status=false;
if (status)
printf ("Pessoa eh maior de idade.\n");
else
printf ("Pessoa eh menor de idade.\n");
system("pause");
}

18

Exerccios
4) Faa um algoritmo que leia a quantidade
comprada de um produto e o preo unitrio
deste produto.
- Se o preo total a ser pago for inferior a R$ 100,
ento fornea um desconto de 5%.
- Se o preo total a ser pago ficar entre 100 e
1000, ento fornea um desconto de 5% e
armazene um bnus de 5% em cima do valor
total.
- Se o preo total a ser pago for superior a 1000,
ento fornea um desconto de 10%,
armazene um bnus de 5% em cima do valor
total e escreva na tela que o cliente ser
cadastrado como Cliente Vip.
19

#include <stdio.h>
#include <stdlib.h>
main(){
int qtdade;
float preco, valorTotal, descontado, bonus;
printf ("\nDigite a qtdade: ");
scanf ("%d", &qtdade);
printf ("\nDigite o preco unitario: ");
scanf ("%f", &preco);
valorTotal=qtdade*preco;
if (valorTotal<100)
descontado=valorTotal*0.95;
else if (valorTotal>=100 && valorTotal<=1000)
{
descontado=valorTotal*0.95;
bonus=valorTotal*0.05;
}
else if (valorTotal>1000)//poderia ser soh: else
{
descontado=valorTotal*0.90;
bonus=valorTotal*0.05;
printf ("\n Cliente vip!\n");
}
printf ("\n Valor Total eh %.2f\n", valorTotal);
printf ("\n Valor com desconto eh %.2f\n", descontado);
printf ("\n Bonus eh %.2f\n", bonus);
system("pause");
}

20

Exerccios
Fazer lista de exerccios parte 1
Fazer lista de exerccios parte 2

21

Você também pode gostar