dcc 001 programação de computadores 1o semestre de 2007a condição de um if é uma expressão...

47
AULA TEÓRICA 03 COMANDO CONDICIONAL Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM BCC701 Programação de Computadores I www.decom.ufop.br/red 2017-1 1

Upload: others

Post on 24-Feb-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

AULA TEÓRICA 03

COMANDO CONDICIONAL

Universidade Federal de Ouro Preto - UFOP

Departamento de Computação - DECOM

BCC701 – Programação de Computadores I

www.decom.ufop.br/red

2017-1

1

Page 2: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

2

Programação Estruturada é uma forma de

programação de computadores que preconiza que

todos os programas possíveis podem ser

reduzidos a apenas três estruturas:

Sequência

Decisão (desvio, condição)

iteração

Programação Estruturada

Page 3: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

3

Sequência

Os programas constituem-se de uma

sequência de instruções, ou comandos,

executados um após o outro, conforme o

fluxograma ao lado.

Programação Estruturada

Page 4: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

4

Comando Condicional

Os programas possuem um, ou mais, comandos

condicionais, que permitem a alteração na ordem de

execução do programa, ou seja, do fluxo de execução

dos comandos.

Comando Condicional

Você tem que

tomar uma

decisão !

Obter um

%t

ou

%f.

Page 5: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

5

Problema

Seu carro tem combustível para rodar 15 Km.

Qual caminho escolher ?

Comando Condicional

Posto B

25 km

Posto A

10 km

Page 6: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

6

Problema

Seu carro tem combustível para rodar 15 Km.

Qual caminho escolher ?

Comando Condicional

Se 15 >= 25 Então

Vou para o Posto B; // se 15 >= 25 resultar em #t

Fim

Se 15 >= 10 Então

Vou para o Posto A; // se 15 >= 10 resultar em #t

Fim

Page 7: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

7

Estrutura 1

if <condição> then

<bloco de comandos>

end

1) A condição é avaliada;

2) Se for %t executa-se o bloco de comandos, e a

seguir os comandos que estiverem após o end;

3) Se for %f executa-se somente os comandos que

estiverem após o end;

Comando Condicional if then end

OBSERVAÇÕES: • um bloco é um conjunto de quaisquer comandos Scilab sintaticamente corretos (inclusive outro if). • if, then e end: são palavras reservadas do Scilab e não podem ser usadas para nomear variáveis.

Page 8: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

8

if

Comando Condicional if then end

end

then condição é

verdadeira

Comando 1;

Comando 2;

Comando n;

Comando n+1;

Comando n+2;

Page 9: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

9

if

Comando Condicional if then end

end

then condição é

falsa

Comando 1;

Comando 2;

Comando n;

Comando n+1;

Comando n+2;

Page 10: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

10

Fluxograma

Comando Condicional if then end

início

fim

x = 16

x > 0

x = sqrt(x)

%t %f

. . .

Page 11: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

11

Equação do Segundo Grau Fórmula de Bhaskara

• A nome Fórmula de Bhaskara foi dada em

homenagem ao matemático Bhaskara Akaria,

considerado o mais importante matemático indiano

do século XII.

• ax2 + bx + c = 0 • a ≠ 0

Page 12: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

12

Equação do Segundo Grau Programa V1

printf("\n Raízes Reais de uma Equação do

Segundo Grau");

a = input(" Digite o Coeficiente a: ");

b = input(" Digite o Coeficiente b: ");

c = input(" Digite o Coeficiente c: ");

delta = b^2 - 4 * a * c;

x1 = (-b + sqrt(delta)) / (2*a);

x2 = (-b - sqrt(delta)) / (2*a);

printf(" x1 = %g\n", x1);

printf(" x2 = %g\n", x2);

Page 13: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

13

Equação do Segundo Grau Programa V1 Execução 1

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: -2.25

Digite o Coeficiente b: 1.45

Digite o Coeficiente c: 3.26

x1 = -0.923858

x2 = 1.5683

Verificação:

-->-2.25 * (1.5683)^2 + (1.45 * 1.5683)...

--> + 3.26

ans =

0.0000140

Está correto ?

Page 14: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

14

Equação do Segundo Grau Programa V1 Execução 2

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: 0

Digite o Coeficiente b: 2

Digite o Coeficiente c: 8

/ (2*a)

!--error 27

Divisão por zero...

at line 7 of exec file called by :

ce', -1

O coeficiente a não pode ser nulo !

Uma solução é solicitar ao usuário uma nova entrada.

Page 15: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

15

Equação do Segundo Grau Programa V2

clc; clear;

printf("\n Raízes Reais de uma Equação do

Segundo Grau");

a = input(" Digite o Coeficiente a: ");

if (a == 0) then

a = input(" Digite o Coeficiente a: ");

end

b = input(" Digite o Coeficiente b: ");

c = input(" Digite o Coeficiente c: ");

delta = b^2 - 4 * a * c;

x1 = (-b + sqrt(delta)) / (2*a);

x2 = (-b - sqrt(delta)) / (2*a);

printf(" x1 = %g\n", x1);

printf(" x2 = %g\n", x2);

Page 16: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

16

Equação do Segundo Grau Programa V2 Execução 1

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: 0

Digite o Coeficiente a: 1

Digite o Coeficiente b: 2

Digite o Coeficiente c: -3

x1 = 1

x2 = -3

Page 17: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

17

Equação do Segundo Grau Programa V2 Execução 2

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: 0

Digite o Coeficiente a: 0

Digite o Coeficiente b: 1

Digite o Coeficiente c: -3

) / (2*a)

!--error 27

Divisão por zero...

at line 10 of exec file called by :

sce', -1

Zero na segunda digitação !

Solução: encerrar o programa se o for digitado 0 para o

coeficiente a.

Page 18: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

18

Estrutura 2

if <condição> then

<bloco de comandos a>

else

<bloco de comandos b>

end

1) A condição é avaliada;

2) Se for %t executa-se o bloco de comandos a, e a

seguir os comandos que estiverem após o end;

3) Se for %f executa-se o bloco de comandos b, e a

seguir os comandos que estiverem após o end;

Comando Condicional if then else end

OBSERVAÇÃO: else é palavra reservada do Scilab e não pode ser usada para nomear variáveis.

Page 19: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

19

if

end

then condição é

verdadeira

Comando 1;

Comando 2;

Comando n;

Comando n+1;

Comando n+2;

Comando Condicional if then else end

else

Comando a;

...

Comando b;

Page 20: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

20

if

end

then condição é

falsa

Comando 1;

Comando 2;

Comando n;

Comando n+1;

Comando n+2;

Comando Condicional if then else end

else

Comando a;

...

Comando b;

Page 21: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

21

Fluxograma início

fim

x = 16

x > 0

x = sqrt(x)

%t %f

. . .

Comando Condicional if then else end

x = sqrt(-x)

Page 22: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

22

Equação do Segundo Grau Programa V3

clc; clear;

printf("\n Raízes Reais de uma Equação do

Segundo Grau");

a = input(" Digite o Coeficiente a: ");

if (a == 0) then

printf("\n ERRO: coeficiente a = 0");

printf("\n F I M D O P R O G R A M A !");

else

b = input(" Digite o Coeficiente b: ");

c = input(" Digite o Coeficiente c: ");

delta = b^2 - 4 * a * c;

x1 = (-b + sqrt(delta)) / (2*a);

x2 = (-b - sqrt(delta)) / (2*a);

printf(" x1 = %g\n", x1);

printf(" x2 = %g\n", x2);

end

Page 23: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

23

Equação do Segundo Grau Programa V3 Execução 1

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: 0

ERRO: coeficiente a = 0

F I M D O P R O G R A M A !

OBS.: a = 0

Page 24: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

24

Equação do Segundo Grau Programa V3 Execução 2

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: -4

Digite o Coeficiente b: 2

Digite o Coeficiente c: 1

x1 = -0.309017

x2 = 0.809017

OBS.: a ≠ 0

Page 25: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

25

Equação do Segundo Grau Programa V4 Raízes Reais

clc; clear;

printf("\n Raízes Reais de uma Equação do Segundo Grau");

a = input(" Digite o Coeficiente a: ");

if (a == 0) then

printf("\n ERRO: coeficiente a = 0");

printf("\n F I M D O P R O G R A M A !");

else

b = input(" Digite o Coeficiente b: ");

c = input(" Digite o Coeficiente c: ");

delta = b^2 - 4 * a * c;

if delta < 0 then

printf("\n ERRO: Delta < 0 - FIM DO PROGRAMA !");

else

x1 = (-b + sqrt(delta)) / (2*a);

x2 = (-b - sqrt(delta)) / (2*a);

printf(" x1 = %g\n", x1);

printf(" x2 = %g\n", x2);

end

end

Page 26: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

26

Equação do Segundo Grau Programa V4 Raízes reais

Execução 1

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: 2

Digite o Coeficiente b: 1

Digite o Coeficiente c: 4

ERRO: Delta < 0 - FIM DO PROGRAMA !

Execução 2

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: 1

Digite o Coeficiente b: 4

Digite o Coeficiente c: -6

x1 = 1.16228

x2 = -5.16228

Page 27: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

27

Equação do Segundo Grau Programa V4 Raízes reais

Execução 3

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: -1

Digite o Coeficiente b: 4

Digite o Coeficiente c: -4

x1 = 2

x2 = 2

OBS.: as raízes são iguais; Seria suficiente somente

imprimir x1 = x2 = 2.

Caso das raízes iguais.

Basta alterar o quadrado azul do slide 23.

Page 28: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

28

Equação do Segundo Grau Programa V5 Raízes Reais

clc; clear;

printf("\n Raízes Reais de uma Equação do Segundo Grau");

a = input(" Digite o Coeficiente a: ");

if (a == 0) then

printf("\n ERRO: coeficiente a = 0");

printf("\n F I M D O P R O G R A M A !");

else

b = input(" Digite o Coeficiente b: ");

c = input(" Digite o Coeficiente c: ");

delta = b^2 - 4 * a * c;

if delta < 0 then

printf("\n ERRO: Delta < 0 - FIM DO PROGRAMA !");

else

if (delta == 0) then

x = -b / (2*a);

printf(" x1 = x2 = %g\n", x);

else // delta > 0

x1 = (-b + sqrt(delta)) / (2*a);

x2 = (-b - sqrt(delta)) / (2*a);

printf(" x1 = %g\n", x1);

printf(" x2 = %g\n", x2);

end

end

end

Page 29: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

29

Equação do Segundo Grau Programa V5 Raízes reais

Execução 1

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: -1

Digite o Coeficiente b: 4

Digite o Coeficiente c: -4

x1 = x2 = 2

Execução 2

Raízes Reais de uma Equação do Segundo Grau

Digite o Coeficiente a: 1

Digite o Coeficiente b: 4

Digite o Coeficiente c: -6

x1 = 1.16228

x2 = -5.16228

Page 30: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

30

Operador Relacional Condição

A condição de um if é uma expressão relacional, que utiliza

operadores relacionais:

<expr 1> <operador Relacional> <expr 2>

Onde:

<expr n> é uma expressão, que pode ser um valor

numérico, ou uma expressão matemática que resulta em um

valor numérico.

a avaliação de uma expressão relacional pode resultar em

verdadeiro (%t ou %T) ou falso (%f ou %F).

Page 31: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

31

Operador Relacional Scilab

Operador Descrição

> Maior que.

>= Maior ou igual a.

< Menor que.

<= Menor ou igual a.

== Igual a.

<> ou ~= Diferente de.

Page 32: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

32

Operador Relacional Scilab Exemplos

-->p = %t

p =

T

-->q = 5 + 3 < 2

q =

F

-->a = 0

a =

0.

-->a == 0

ans =

T

-->a <> 0

ans =

F

Os operadores aritméticos têm precedência sobre operadores relacionais Expressão relacional: 5 + 3 < 2

Page 33: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

33

Operador Relacional Scilab Exemplos

Prioridade de Execução

• Quando temos uma combinação entre expressões

matemáticas e expressões lógicas, primeiramente o

Scilab calcula as expressões matemáticas; a seguir, o

Scilab calcula as expressões lógicas.

• os operadores matemáticos tem maior prioridade de

execução, com relação aos operadores relacionais.

Page 34: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

34

Armazenando nomes em variáveis

Exemplo

• ler o nome de um aluno

• ler a nota desse aluno

• se a nota for maior ou igual a 6, imprimir que o aluno

passou

• caso contrário, imprimir que o aluno está reprovado.

Page 35: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

35

Armazenando nomes em variáveis

// Leitura do nome do usuário

Nome = input("Digite seu nome, por favor“, “s”)

// Leitura da pontuação

Pontos = input(Nome + ", qual foi sua pontuação? ")

// Impressão do resultado

if Pontos >= 60 then

printf("%s, com %g pontos você passou!",Nome,Pontos);

else

printf("%s, com %g pontos você não passou :(",...

Nome,Pontos);

end

Page 36: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

36

Armazenando nomes em variáveis

Execução 1

Digite seu nome, por favor: Bart Simpson

Bart Simpson, qual foi sua pontuação? 5.9

Bart Simpson, com 5.9 pontos você não passou

:(

Execução 2

Digite seu nome, por favor: Sheldon Cooper

Sheldon Cooper, qual foi sua pontuação? 10

Sheldon Cooper, com 10 pontos você passou!

Page 37: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

37

Um certo nerd ...

Certa vez a mãe disse ao filho estudante de

computação:

“Filho, por favor vá ao mercado e compre 1 caixa de

leite.

Se eles tiverem ovos, traga 6.

Ele retornou com 6 caixas de leite.

A mãe disse:

"Porque diabos você comprou 6 caixas de leite?".

Ele disse:

"PORQUE ELES TINHAM OVOS!".

Page 38: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

38

Um certo nerd ...

compre uma caixa de leite;

if eles tem ovos ? then

traga 6 caixas de leite;

end

6 leite caixas trazer!

Page 39: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

EXERCÍCIOS

39

Page 40: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

40

Codifique um programa que calcule o volume de uma

pirâmide, em cm3, através da fórmula:

Volume = 1/3 * ÁreaBase * altura

onde

ÁreaBase = comprimento * largura

O usuário deve fornecer os valores do comprimento, da

largura e da altura. Ao entrar um valor, ele também será

solicitado a indicar se o valor digitado foi em polegadas (‘p’)

ou em centímetros (‘c’). Quando a entrada for em

polegadas, o programa a converte automaticamente para

centímetros.

Ao final, o programa imprime o volume calculado.

Observação: 2.54 cm = 1 polegada.

Exercício 1

Page 41: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

41

Exercício 1 Solução

Page 42: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

42

Exercício 1 Solução

Page 43: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

43

Exercício 1 Solução

Page 44: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

44

Na química, o pH de uma solução aquosa é medido por

sua acidez.

A escala do pH varia entre 0 e 14, inclusive. Uma solução

como pH igual a 7 é dita neutra; uma solução com o pH

maior que 7 é dita básica; e uma solução com o pH menor

que 7 é dita ácida.

Codifique um programa que tenha como entrada o pH de

uma solução. O programa imprime se o ph é neutro, básico

ou ácido.

Exercício 2

Page 45: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

45

Codifique um programa que converta uma temperatura

em graus celsius para graus kelvin, ou para graus

fahrenheit.

Após o usuário fornecer a temperatura em celsius, o

usuário deve responder ‘f’ para conversão em fahrenheit, ou

‘k’ para conversão em kelvin.

Fórmulas:

Exercício 3

Page 46: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

46

Codifique um programa que gere um valor inteiro

aleatório. A seguir o programa imprime a mensagem

“O NÚMERO GERADO É PAR”

caso o número gerado seja par;

caso contrário imprime a mensagem:

“O NÚMERO GERADO É ÍMPAR”

Dica:

floor(rand() * 1000)

Exercício 4

Page 47: DCC 001 Programação de Computadores 1o Semestre de 2007A condição de um if é uma expressão relacional, que utiliza operadores relacionais:

47

Perguntas ?