Vous êtes sur la page 1sur 23

Algoritmos e Lgica de Programao

Prof. Dr. Antonio Marcos SELMINI


Estrutura de Seleo
profselmini@uninove.br

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Introduo






At esse ponto os nossos algoritmos eram caracterizados


apenas por uma estrutura sequencial, ou seja, no havia
nenhum desvio condicional;
O algoritmo comeava com a declarao de variveis,
executava um conjunto de instrues e era finalizado;
Na prtica nem sempre se tem um algoritmo sequencial;
A maioria dos problemas do dia-a-dia, e muitas das aplicaes
comerciais necessitam de testes lgicos para se chegar a
soluo do problema;
Situaes em que usamos estrutura condicional: clculo de
juros por dia de atraso, situao de um aluno em uma
disciplina, dentre outras...

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Operadores Relacionais e Lgicos






Quando comeamos a trabalhar com estrutura de seleo,


muitas vezes precisamos criar condies lgicas;
A maioria das condies lgicas so criadas so os
operadores relacionais e lgicos;
Os operadores relacionais como o prprio nome indica so
utilizados para relacionar o contedo das variveis;
 O contedo de uma varivel igual ou diferente do
contedo de outra varivel?
 O contedo de uma varivel maior ou menor do que o
contedo de outra varivel?
 Os operadores relacionais so: >, <, >=, <=, ==
(igualdade) e != (diferena);
O resultado de uma expresso relacional um valor lgico:
VERDADEIRO ou FALSO;
3

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Operadores Relacionais
Operao
Smbolo Exemplo
Significado
Igualdade
==
A == B O valor de A igual ao valor de B?
Maior
>
A > B O valor de A maior do que o valor de B?
Maior ou igual
>=
A >= B O valor de A maior ou igual ao valor de B?
Menor
<
A < B O valor de A menor do que o valor de B?
Menor ou igual
<=
A <= B O valor de A menor ou igual ao valor de B?
Diferente
!=
A != B O valor de A diferente do valor de B?




Quando em uma expresso temos os operadores aritmticos


junto com os operadores relacionais, a prioridade dos
operadores aritmticos;
importante lembrar que em C no temos um tipo especfico
para representar os valores lgicos;
O valor falso representado pelo nmero inteiro 0, enquanto
4
que, o valor verdadeiro qualquer inteiro diferente de 0;

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Operadores Lgicos








Os operadores lgicos so extremamente importantes no


desenvolvimento de programas (criao de condies
lgicas);
Normalmente temos vrias expresses aritmticas e
relacionais e devemos combinar os seus resultados com o
objetivo de obter apenas um;
Os operadores lgicos so utilizados para esse propsito;
O resultado de uma expresso que utiliza operadores
lgicos booleano (VERDADEIRO ou FALSO);
Vamos utilizar trs operadores lgicos: E, OU e NO;
O operador E e OU so binrios, enquanto que, o operador
NO unrio;
O operador E em C representado por &&. O operador ou
representado por || e o no representado por !;
5

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Operadores Lgicos Tabela Verdade

p
Verdadeiro

q
Verdadeiro

p && q
Verdadeiro

!(p && q)
Falso

p || q
Verdadeiro

!(p || q)
Falso

Verdadeiro

Falso

Falso

Verdadeiro

Verdadeiro

Falso

Falso

Verdadeiro

Falso

Verdadeiro

Verdadeiro

Falso

Falso

Falso

Falso

Verdadeiro

Falso

Verdadeiro

No se esquea que o valor verdadeiro representado por 1, enquanto


que o valor falso representado por 0.

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Simples




Uma estrutura de seleo utilizada quando um algoritmo


necessita escolher uma instruo ou um conjunto de
instrues quando uma condio (representada por uma
expresso relacional ou lgica) satisfeita;
Em portugus estruturado, a instruo de seleo
representada pela instruo se(). Sua sintaxe :
se (condio)
Incio
<instruo_1>
<instruo_2>
...
<instruo_n>
Fim

O conjunto de instrues ser executado


caso a condio resulte em um valor
verdadeiro.

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Simples em C





Em C a estrutura de seleo simples representada pelo


comando if();
Sua sintaxe :
if (condio)
{
<instruo_1>;
<instruo_2>;
...
<instruo_n>;
}

O conjunto de instrues ser executado


caso a condio resulte em um valor
verdadeiro.

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Simples Exemplo 1




Algoritmo para verificar se um nmero inteiro fornecido pelo


usurio par.
Incio
inteiro n, r
imprima("digite um valor inteiro: ")
leia("%d", &n)
r = n % 2
se(r == 0)
incio
imprima("o nmero informado par")
fim
Fim

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Simples Exemplo 1




Algoritmo para verificar se um nmero inteiro fornecido pelo


usurio par.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, r;
printf("digite um valor inteiro: ");
scanf("%d", &n);
r = n % 2;
if(r == 0)
{
printf("O nmero informado par");
}
system("pause");
}

10

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Simples Exemplo 2 em C




Algoritmo para verificar se um nmero fornecido pelo usurio


positivo.

#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
printf("digite um valor inteiro: ");
scanf("%d", &n);
if(n > 0)
{
printf("o nmero informado positivo");
}
system("pause");
}
11

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Composta






Na estrutura de seleo simples, o conjunto de instrues s


executado quando a condio lgica resultar em um valor verdadeiro;
Podemos reestruturar o comando de seleo simples para trabalhar
quando a condio lgica resultar em um valor falso tambm;
Neste caso acrescenta-se apenas um complemento ao comando se().
Sua nova estrutura passa a ser:
se(condio)
Incio
<instruo_1>
<instruo_2>
...
<instruo_n>
Fim

seno
Incio
<instruo_1>
<instruo_2>
...
<instruo_n>
Fim

12

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Composta em C





A estrutura de seleo composta em C representada pelo comando


if()-else;
Sua sintaxe :
if(condio)
{
<instruo_1>;
<instruo_2>;
...
<instruo_n>;
}

else
{
<instruo_1>;
<instruo_2>;
...
<instruo_n>;
}

13

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Composta Exemplo 1




Algoritmo para verificar se um nmero inteiro fornecido pelo usurio


par ou mpar.
Incio
inteiro n, r
imprima("digite um valor inteiro: ")
leia("%d", &n)
r = n % 2
se(r == 0)
imprima("o nmero informado par")
seno
imprima("o nmero mpar")
Fim

14

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Composta Exemplo 1 em C




Algoritmo para verificar se um nmero inteiro fornecido pelo usurio


par ou mpar.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, r;
printf("digite um valor inteiro: ");
scanf("%d", &n);
r = n % 2;
if(r == 0)
printf("o nmero informado par");
else
printf("o nmero mpar");
system("pause");
}

15

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Composta Exemplo 2




Algoritmo para verificar se um nmero fornecido pelo usurio


positivo ou negativo.
Incio
inteiro n
imprima("digite um valor inteiro: ")
leia("%d", &n)
se(n >= 0)
imprima("o nmero positivo")
seno
imprima("o nmero negativo")
Fim

16

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Composta Exemplo 2 em C




Algoritmo para verificar se um nmero fornecido pelo usurio


positivo ou negativo.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
printf("digite um valor inteiro: ");
scanf("%d", &n);
if(n > 0)
printf("o nmero positivo");
else
printf("o nmero negativo");
system("pause");
}
17

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Composta Exemplo 3




Um time de basquete est fazendo uma peneira para selecionar alguns


jogadores. Para ser aceito no time o jogador dever ter mais que 15
anos e ter altura acima de 1,80m (180cm). O algoritmo abaixo l a
idade e a altura de um jogador e imprime uma mensagem no vdeo
informando se o jogador aceito ou no.
Incio
inteiro idade
real altura
imprima("digite a sua idade: ")
leia("%d", &idade)
imprima("informe a sua altura em centmetros: ")
leia("%f", &altura)
se(idade > 15 E altura > 180)
imprima("voc foi aceito no time")
seno
imprima("voc no foi aceito no time")
Fim

18

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Composta Exemplo 3 em C




Um time de basquete est fazendo uma peneira para selecionar alguns


jogadores. Para ser aceito no time o jogador dever ter mais que 15
anos e ter altura acima de 1,80m (180cm). O algoritmo abaixo l a
idade e a altura de um jogador e imprime uma mensagem no vdeo
informando se o jogador aceito ou no.
#include <stdio.h>
#include <stdlib.h>
int main() {
int idade;
float altura;
printf("digite a sua idade: ");
scanf("%d", &idade);
printf("informe a sua altura em centmetros: ");
scanf("%f", &altura);
if(idade > 15 && altura > 180)
printf("voc foi aceito no time");
else
printf("voc no foi aceito no time");
}

19

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Indentao: usar ou no usar?


...
se(x >= y)
incio
x = 5
y = z
z = x + y
fim
seno
incio
y = 0
z = 0
x = 0
fim
...

...
se(x >= y)
incio
x =
y =
z =
fim
seno
incio
y =
z =
x =
fim
...

5
z
x + y

0
0
0

20

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Estrutura de Seleo Agrupada ou Aninhada






Dentro de um comando se() ou senao podemos ter qualquer comando,


qualquer tipo de operao, at mesmo outra instruo de seleo;
Quando usamos uma estrutura de seleo dentro de outra, chamamos
de estrutura de seleo agrupada ou aninhada;
Sintaxe:

se(condio_lgica1)
Incio
instruo_1
instruo_2
...
Fim
seno
se(condio_lgica2)
Incio
instruo_1
instruo_2
...
Fim
seno
se(condio_lgica3)
Incio
instruo_1
instruo_2
...
Fim
...

if(condio_lgica1) {
instruo_1;
instruo_2;
...
}
else
if(condio_lgica2) {
instruo_1;
instruo_2;
...
}
else
if(condio_lgica3) {
instruo_1;
instruo_2;
...
}
...

21

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Fluxograma Estrutura de Seleo

no

sim
condioA?

passoA

passoD

passoB

passoC

22

Algoritmos e Lgica de Programao


Prof. Dr. Antonio Marcos SELMINI

Bibliografia
MANZANO, Jos Augusto Navarro Garcia & OLIVEIRA, Jair Figueiredo de. Algoritmos:
Lgica para o desenvolvimento de programao. So Paulo: Editora rica, 2004.
MIZRAHI, Victoriane Viviane. Treinamento em linguagem C mdulo I.
Makron Books, 1990.

So Paulo:

FORBELLONE, Andr Luiz Villar & EBERSPACHER, Henri Figueiredo. Lgica de


Programao. Editora Pearson Brasil, 2000. A1:D560
ARRER & BECKER, Cristiano Gonalves & FARIA, Eduardo Chaves. Algoritmos
Estruturados. Editora LTC, 1999.
PREISS, Bruno R. Estruturas de Dados e Algoritmos. Editora Campus, 2001.

23