• Nenhum resultado encontrado

Comando Condicional de Seleção if e Expressões Lógicas

N/A
N/A
Protected

Academic year: 2021

Share "Comando Condicional de Seleção if e Expressões Lógicas"

Copied!
28
0
0

Texto

(1)

Comando Condicional de Seleção

if e Expressões Lógicas

INF01202

(2)

Sumário

I

Expressões lógicas

I

Operadores lógicos

I

Precedência de operadores

I

Operadores relacionados

I

Comando condicional if

I

Com um único comando

I

Com múltiplos comandos

I

Exemplo

(3)

Motivação

11 INF 01202 – Marcelo Walter – Aula 04

NOVO ASSUNTO:

Operadores lógicos ou booleanos

ü

Expressar em programas decisões lógicas

ü

Analogia com situações do dia-a-dia

ü

Exemplo:

Vou à praia se tiver sol e tiver dinheiro

Vou visitar meu pai se for dia dos pais ou

final de semana

ü

Hoje tem sol. Vou à praia?

ü

Hoje é sábado. Visito meu pai?

E

OU

NÃO

SIM

(4)

Expressões lógicas com operadores lógicos

Slide 8

Operadores lógicos ou

booleanos

8 F F F F V V F V && F V F V V V F V || V F F V !

Em C, as expressões

lógicas

retornam um

valor

:

0

, se falso;

1 ou

outro valor que

não zero

, se verdadeiro.

negação ! unário “ou” || binário “e” && Significado Operador Tipo binário

Cortesia: Prof. Mara Abel 4 / 28

(5)

Operadores relacionais

Slide 9

Operadores Relacionais

9

Em C, as expressões relacionais retornam um

valor

:

0

, se falso;

1 ou

outro valor que

não zero

, se verdadeiro.

O conteúdo de x é maior que o de y

x > y

>

O conteúdo de x é menor que o de y

x < y

<

O conteúdo de x é maior ou igual ao de y

x >= y

>=

O conteúdo de x é menor ou igual ao de y

x <= y

<=

O conteúdo de x é diferente do de y

x != y

!=

O conteúdo de x é igual ao de y

x == y

==

Comentário Exemplo Operador

(6)

Exemplos do emprego de operadores relacionais

14 INF 01202 – Marcelo Walter – Aula 04

Operadores Relacionais

A é maior que 10? (a > 10) X é negativo? (x < 0) y é diferente de 10? (y != 10) nota é igual a 5? (nota == 5)

Cuidado, aqui usamos dois sinais de igualdade consecutivos

Cortesia: Prof. Marcelo Walter 6 / 28

(7)

Mistura de operadores lógicos e relacionais

Slide 10 INF 01202

A expressão lógica em C

Retorna um valor lógico:

falso: zero;

verdadeiro: 1 (ou qualquer valor diferente de zero).

Operandos podem ser expressões aritméticos ou lógicas,

incluindo operadores aritméticos, relacionais e lógicos.

Exemplos:

(a > b) || (c < d) valor > 10 !(a + c < b) (a == b) (a == b) && (a>=c) (a != b)

!((a >= b) || (a+c)) // se resultado da soma 0, considera V!

Sintaxe:

<operando> <operador booleano> <operando> ou

<operando> <operador relacional> <operando>

(8)

Vejamos um exemplo prático

/* Programa que calcula algumas expressões lógicas */ #include <stdio.h>

int main() {

int a, b, c, d, valor; //Entrada

a = 1; b = 3; c = 5; d = 7; valor = 9;

int e1, e2, e3, e4, e5, e6, e7; //Saída e1 = (a > b) || (c < d); e2 = valor > 10; e3 = !(a + c < b); e4 = (a == b); e5 = (a == b) && (a>=c); e6 = (a != b); e7 = !((a >= b) || (a+c));

printf("Entradas: a=%d, b=%d, c=%d, d=%d, valor=%d\n", a, b, c, d, valor);

printf("Saídas: e1=%d, e2=%d, e3=%d, e4=%d, e5=%d, e6=%d, e7=%d\n", e1, e2, e3, e4, e5, e6, e7);

return 0;

(9)

Cuidados com inspirações da matemática

Slide 11 INF 01202

Expressões lógicas ou relacionais

a) codigo (variável inteira) entre 1 e 100

(valores limites considerados):

(codigo > 0 && codigo < 101)

ou

(codigo >= 1 && codigo <= 100)

(0 < codigo < 101)

Obs: esse trecho de código não gera erro de sintaxe, mas semanticamente não corresponde ao que foi pedido!!

(10)

Outros exemplos de misturas lógicas

Slide 12

Expressões lógicas ou

relacionais

12

a) codigo entre 1 e 100 (valores limites

considerados):

(codigo > 0 && codigo < 101)

(0 < codigo < 101)

b) contador maior ou igual a maximo ou valor igual a

procurado:

( contador >= maximo || valor == procurado )

c) valor igual a 1 ou 2 ou entre 5 e 7 (inclusive):

(valor == 1 || valor == 2 || (valor >=5 && valor

<=7))

Cortesia: Prof. Mara Abel 10 / 28

(11)

Precedência de operadores lógicos com exemplo

Precedência de operadores

em C

ordem operador 1o ! funções 2o * / % 3o + - 4o < > <= >= 5o == != 6o && 7o || Na expressão: (x != 10 || y > 1 && y < 10)

Pela precedência dos operadores, primeiro serão resolvidos “>” e “ <“: y > 1 e y < 10 O próximo operador a ser considerado,

pela precedência será “!=“

x != 10

Restam os operadores “&&” e “||”, como “&&” é o de maior prioridade, será o próximo:

y < 1 && y < 10

Finalmente o “||” será resolvido. A versão a seguir com parênteses mostra

a ordem de execução da expressão:

( (x != 10) || ( ( y > 1) && (y < 10) ) ) RECOMENDAÇÃO:usar parênteses não só

para alterar a precedência de operadores, como também para tornar mais claras as expressões.

(12)

Testes com os exemplos

19 INF 01202 – Prof Edison – Aula 04

Exemplo anterior com valores

x=10, y=1

x=12, y=5

Y > 1 Y < 10 x != 10 y>1 && y<10 (x != 10) || ( ( y > 1) && (y < 10) )

Y > 1 Y < 10 x != 10 y>1 && y<10 (x != 10) || ( ( y > 1) && (y < 10) )

F V F F F

V V V V V

Cortesia: Prof. Edison Pignaton de Freitas

Vejamos como ca em formato de árvore, com regras de precedência.

(13)

Motivação para comandos de seleção condicional

21 INF 01202 – Prof Edison – Aula 04

Seleções

int main() { Instrução1; Instrução2; … … Instrução n; }

Programa sequencial

Programa com seleção condicional

?

(14)

Comandos de seleção condicional

22 INF 01202 – Prof Edison – Aula 04

ü Condicional Simples   if (condição)   comando; ü Seleção Dupla   if (condição)  comando; else   comando; ü Seleção múltipla   switch (expressão)   {

  case valor1: comando;   ...

  }

Comandos de seleção condicional

Aula de Hoje!

Cortesia: Prof. Edison Pignaton de Freitas 14 / 28

(15)

Comando if (condicional simples, com único comando)

Slide 22

< expressão lógica >verdadeira falsa < comando >

if

( expressão lógica )

comando

;

C

se

< expressão lógica >

< comando >

Linguagem algorítmica

Comando condicional simples

(16)

Exemplo #1

Slide 23

Ex1:

Ler um valor e, no caso

de ser menor do que 10, emitir

uma mensagem.

Algoritmo:

1. Início.

2. Ler Valor.

3. Se Valor < 10

3.1 escrever

mensagem

4. Fim.

/* Lê valor e informa se maior que 10 */ #include <stdio.h>

int main() // programa principal {

int val1; // declaração da variável informada

printf("Valor 1:\n"); // mensagem impressa na tela

scanf("%d", &val1); // leitura da informação digitada

if (val1 < 10)

printf("%d é menor que 10\n", val1); // mensagem

return 0;

}

Comando condicional

simples

Cortesia: Prof. Mara Abel 16 / 28

(17)

Exemplo #2 (Enunciado e Algoritmo)

Slide 17 INF 01202

Ex2:

Processar uma venda de livros em uma livraria. Obter código do tipo de livro vendido (A, B, C) e número de unidades, calcular e informar valor a pagar.

Preços: Tipo A: R$ 10,00 Tipo B: R$ 20,00

Tipo C: R$ 30,00

Caso tenham sido vendidos mais de 10 livros, emitir uma mensagem.

Comando condicional

simples

Algoritmo ProcessaUmaVenda

{processa uma venda e avisa caso tenham sido vendidas maisde 10 unidades}

entradas: codigo {do tipo do livro} nro_livros {vendidos}

saídas: valor total a ser pago (variavel valor_total)

mensagem (caso tenham sido vendidas mais de 10 unidades) 1. início

2. ler codigo, nro_livros

3. calcular preço a pagar (valor_total) 4. informar valor_total

5. se nro_livros > 10

5.1 informar “mais de 10 livros vendidos” 6. fim se codigo = ´A´ valor_total

nro_livros* 10; se codigo = ´B´ valor_total

nro_livros* 20; se codigo = ´C’ valor_total

nro_livros* 30;

(18)

Exemplo #2 (Enunciado e Algoritmo Completo)

Slide 18 INF 01202

Ex2: Processar uma venda de livros em uma livraria.

Obter código do tipo de livro vendido (A, B, C) e número de unidades. Preços: Tipo A: R$ 10,00

Tipo B: R$ 20,00 Tipo C: R$ 30,00

Calcular e informar preço total. Caso tenham sido vendidas mais de 10 livros, emitir uma mensagem.

Algoritmo ProcessaUmaVenda

{processa uma venda e avisa caso tenham sido vendidas maisde 10 unidades}

entradas: codigo {do tipo do livro} nro_livros {vendidos}

saídas: valor total a ser pago (variável valor_total)

mensagem (caso tenham sido vendidas mais de 10 unidades) 1. início

2. ler codigo, nro_livros 3. se codigo = ´A´ 3.1 valor_total  nro_livros* 10; 4. se codigo = ´B´ 4.1 valor_total

nro_livros* 20; 5 se codigo = ´C’ 5.1 valor_total

nro_livros* 30; 6. informar valor_total 7. se nro_livros > 10

7.1 informar “mais de 10 livros vendidos” 8. fim

Cortesia: Prof. Claudio Jung 18 / 28

(19)

Exemplo #2 (Código em C)

/* processa uma venda e avisa caso se mais de 10 unidades vendidas foram vendidas */

#include<stdio.h>

int main(void)

{

char codigo;

int nro_livros;

float apagar;

printf("digite o codigo do produto e número de unidades:\n"); scanf(" %c %d",&codigo, &nro_livros);

if (codigo == 'a'|| codigo == 'A') apagar = nro_livros*10;

if (codigo == 'b'|| codigo == 'B') apagar = nro_livros*20;

if (codigo == 'c' || codigo == 'C') apagar = nro_livros*30;

printf("o valor a pagar é de R$ %6.2f.\n",apagar); if (nro_livros > 10)

printf("Foram vendidas mais de 10 unidades do tipo %c.\n", codigo); return 0;

}

gcc exemplo-livros.c -o exemplo-livros #./exemplo-livros

(20)

Exemplo #3 (Enunciado)

Slide 27

Localização de um ponto no

plano

Dados um par de valores

x

e

y

, que

representam as coordenadas de um ponto no

plano, determinar a localização do ponto: se

em um quadrante, em um dos eixos ou na

origem.

Saída: mensagem adequada

Entradas

: coordenadas x e y de um ponto.

Processamento

: testes, verificando onde

o par de valores se enquadra.

Cortesia: Prof. Mara Abel 20 / 28

(21)

Exemplo #3 (Ententendo o Enunciado)

35 INF 01202 – Prof Edison – Aula 04

Quadrante 1

Quadrante 2

Quadrante 4

Quadrante 3

Eixo dos Xs

Eixo dos Ys

x = 0 e y = 0

x < 0 e y > 0

x = 0 e y ≠ 0

x > 0 e y > 0

x ≠ 0 e y = 0

x > 0 e y <0

x < 0 e y < 0

Origem

(22)

Exemplo #3 (Pensamento Computacional → Passos)

Slide 29

Passos do Algoritmo

• leitura dos valores de x e y.

• determinação, pela avaliação de condições, de

onde o ponto se encontra: se em um quadrante,

em um eixo ou na origem.

• escrita da mensagem, onde é indicada a

localização do ponto – apenas 1 mensagem por

par de valores.

Cortesia: Prof. Mara Abel 22 / 28

(23)

Exemplo #3 (Algoritmo)

Slide 30

Escrita do algoritmo em pseudolinguagem

Algoritmo LocalizaQuadrante

Entradas

: x, y (coordenadas)

Saída

: mensagem (localização)

1. início

2. ler x , y

3. se x = 0 e y = 0 escrever “ponto na

origem”

4. se x > 0 e y > 0 escrever “quadrante 1”

5. etc…

(...)

9. se x  0 e y = 0 escrever “eixo dos x”

10.fim

(24)

Exemplo #3 (Código em C)

/* Obtem coordenadas e informa localização */ #include <stdio.h> int main() { float x, y; //Entrada printf("Coordenadas: x = "); scanf("%f", &x); printf("e y = "); scanf("%f", &y); if ( x == 0 && y == 0 )

printf("\n Ponto na origem"); if ( x > 0 && y > 0 )

printf("\n Ponto no quadrante 1"); if ( x < 0 && y > 0 )

printf("\n Ponto no quadrante 2"); if ( x < 0 && y < 0 )

printf("\n Ponto no quadrante 3"); if ( x > 0 && y < 0 )

printf("\n Ponto no quadrante 4"); if ( x == 0 && y != 0 )

printf("\n Ponto no eixo dos y"); if ( x != 0 && y == 0 )

printf("\n Ponto no eixo dos x"); printf("\n"); return 0; } gcc exemplo-coordenadas.c -o exemplo-coordenadas ./exemplo-coordenadas 24 / 28

(25)

Comando if (cond. composto, com múltiplos comandos)

33 INF 01202 – Prof Edison – Aula 04

< expressão lógica > verdadeira falsa < comando1 > if ( expressão lógica ) { comando 1; ... comando n; } se < expressão lógica > < comandoS > < comando2 > 1comando composto

C

Linguagem algorítmica

Comando condicional composto

(26)

Exemplo #4 (Livros, com desconto)

Slide 34

Ex2: Processar uma venda de livros em uma livraria.

Obter código do tipo de livro vendido (A, B, C) e número de unidades. Preços: Tipo A: R$ 10,00

Tipo B: R$ 20,00 Tipo C: R$ 30,00

Calcular e informar preço a pagar. Se o livro for do Tipo A, dar 10% de desconto. Caso tenham sido vendidas mais de 10 livros, emitir uma mensagem.

Algoritmo UmaVenda

{processa uma venda e avisa caso tenham sido vendidas mais de 10 unidades}

entradas: codigo {do tipo do livro} nro_livros {vendidos} saídas: apagar

mensagem {caso tenham sido vendidas mais de 10 unidades} 1. início

2. ler codigo, nro_livros 3. calcular preço a pagar 4. informar apagar 5. se nro_livros > 10

5.1 informar “mais de 10 livros vendidos” 6. fim se codigo = ´A´ apagar

nro_livros* 10; apagar  apagar * 0.9; se codigo = ´B´ apagar

nro_livros* 20;

Cortesia: Prof. Mara Abel 26 / 28

(27)

Exemplo #4 (Código em C)

/* processa uma venda e avisa caso se mais de 10 unidades vendidas foram vendidas */

#include<stdio.h>

int main(void)

{

char codigo;

int nro_livros;

float apagar;

printf("digite o codigo do produto e número de unidades:\n"); scanf(" %c %d",&codigo, &nro_livros);

if (codigo == 'a'|| codigo == 'A') { apagar = nro_livros*10; apagar = apagar * 0.90; } if (codigo == 'b'|| codigo == 'B') apagar = nro_livros*20; if (codigo == 'c' || codigo == 'C') apagar = nro_livros*30;

printf("o valor a pagar é de R$ %6.2f.\n",apagar); if (nro_livros > 10)

printf("Foram vendidas mais de 10 unidades do tipo %c.\n", codigo); return 0;

}

gcc exemplo-livros-desconto.c -o exemplo-livros-desconto #./exemplo-livros-desconto

(28)

Cuidados nos erros comuns

I

Confundir atribuição com comparação igual

I

Esquecer as chaves em comando condicional com múltiplos

comandos

Referências

Documentos relacionados

DENTES E OCLUSÃO: Dentição decídua mista permanente Falhas dentárias não sim Conservação dentária boa regular ruim Conservação gengival boa regular

Ia untuk menolong juga orang di Timor Leste yang tidak mengenal ejaan dan daftar kata-kata resmi yang Institut Nasional Ilmu Bahasa sedang memajukan, dan orang dari luar negeri

TABELA 1: Percentual de freqüência numérica (%FN), percentual de biomassa (%W), percentual de freqüência de ocorrência (%FO), Índice de Importância Relativa (IIR) e o

Algumas tabelas que criamos apresentam uma alta variabilidade, seja pela imprecisão de informação ou por uma rotatividade dessa. Estudando o lucro de uma empresa,

O arrematante adquire o bem(ns) no estado de conservação em que o mesmo se encontra e declara que tem pleno conhecimento de suas condições e instalações, nada tendo

O Regulamento de Inspeção Industrial e Sanitária de Produtos de Origem Animal do Ministério da Agricultura, Pecuária e Abastecimento – MAPA (BRASIL,

ANEXO VI: Entrevista Semi-estrurada B, respondida pelos professores que destacaram que o tema "florestamento" no RS, não havia repercutido na escola: Durante encontro de formação

Dentro do programa de escrever livros técnicos de primeira leitura para enge- nheiros, arquitetos e tecnólogos, apresento agora, junto com o colega e amigo Jarbas Prado de