Condicionais INF1031 – Introdu¸ c˜ ao a Computa¸ c˜ ao Noemi Rodriguez [email protected] Departamento de Inform´ atica, PUC-Rio 2 de Setembro de 2020 Noemi Rodriguez Condicionais 1
CondicionaisINF1031 – Introducao a Computacao
Noemi [email protected]
Departamento de Informatica, PUC-Rio
2 de Setembro de 2020
Noemi Rodriguez Condicionais 1
Condicionais
Construcoes condicionais (if)I programa nao faz a mesma coisa para qualquer entrada
I exemplos
Noemi Rodriguez Condicionais 2
Condicionais
Construcoes condicionais (if)and break do else elseif end
false for function goto if in
local nil not or repeat return
then true until while
Noemi Rodriguez Condicionais 3
Condicionais
Construcoes condicionais (if)
I Permitem fazer tomadas de decisaoI Execucao das instrucoes condicionadas a um teste
I Execucao do codigo deixa de ser sequencial, linha a linhaI Instrucoes codificadas podem ou nao ser avaliadas
Noemi Rodriguez Condicionais 4
Condicionais
Construcoes if then
I Execucao de comandos condicionada a testeI Uso de uma expressao para teste
I Se, e somente se, a expressao booleana resultar em verdadeiro,o bloco de comandos do if e executado
a = io . read ("*n")
if a < 0 then
a = 0
end
-- neste ponto , valor de ’a ’ nunca e negativo
Noemi Rodriguez Condicionais 5
Condicionais
Construcoes if then
I Execucao de comandos condicionada a testeI Uso de uma expressao para testeI Se, e somente se, a expressao booleana resultar em verdadeiro,
o bloco de comandos do if e executado
a = io . read ("*n")
if a < 0 then
a = 0
end
-- neste ponto , valor de ’a ’ nunca e negativo
Noemi Rodriguez Condicionais 5
Condicionais
I na aula passada vimos o uso de booleanos
print (" Entre com o valor Celsius :")
cel = io . read ("*n")
comfebre = cel >= 37
print (" esta com febre ? " , comfebre )
Noemi Rodriguez Condicionais 6
Condicionais
Construcoes if then
I Execucao de comandos condicionada a testeI e se so quiser imprimir caso esteja com febre?
print (" Entre com o valor Celsius :")
cel = io . read ("*n")
if cel >= 37 then
print (" esta com febre !! ")
end
Noemi Rodriguez Condicionais 7
Condicionais
Construcoes if then
I Execucao de comandos condicionada a teste
I outro exemplo:
print (" Entre com o numero :")
a = io . read ("*n")
if a %2 == 0 then
print ("o n umero e par !")
end
-- n~ao faz nada se for impar ...
Noemi Rodriguez Condicionais 8
Condicionais
Construcoes if then else
I Se a expressao for verdadeira, executa o bloco if;caso contrario, executa o bloco else
print (" Entre com o numero :")
a = io . read ("*n")
if a %2 == 0 then
print ("o n umero e par !")
else
print ("o n umero e ımpar !")
end
Para clareza do codigo
Note que os blocos de comandos sao indentados
I Deslocamento da linha para a direita
Noemi Rodriguez Condicionais 9
Condicionais
Construcoes if then else
I Se a expressao for verdadeira, executa o bloco if;caso contrario, executa o bloco else
print (" Entre com o numero :")
a = io . read ("*n")
if a %2 == 0 then
print ("o n umero e par !")
else
print ("o n umero e ımpar !")
end
Para clareza do codigo
Note que os blocos de comandos sao indentados
I Deslocamento da linha para a direita
Noemi Rodriguez Condicionais 9
Condicionais
Construcoes if then elseif then ... else
I selecao exclusiva dentre multiplas condicoes
print (" Entre com o valor de temperatura :")
t = io . read ("*n")
if t < 20 then
print (" clima frio ")
elseif t > 30 then
print (" clima quente ")
else
print (" clima agradavel ")
end
Noemi Rodriguez Condicionais 10
Expressoes booleanas
Operadores relacionais== ( igual a) ~= ( diferente de )
< ( menor que ) <= ( menor ou igual a)
> ( maior que ) >= ( maior ou igual a)
I Expressoes booleanas resultam em valor false ou true
I O valor nil e interpretado como falsoI Qualquer valor diferente de nil e false e tratado como
verdadeiro
I Operadores == e ~= operam sobre quaisquer valores
I Demais operadores operam sobre numeros e strings, apenas
Noemi Rodriguez Condicionais 11
Expressoes booleanas
Operadores logicosand ( conjun c~ao ) or ( disjun c~ao ) not ( nega c~ao )
I Operam sobre valores booleanos
I Resultam em um valor booleano
Exemplos:print (" Entre com o valor de temperatura :")
t = io . read ("*n")
if t >= 20 and t <= 30 then
print (" clima agradavel ")
end
if not b then -- se ’b ’ n~ao tem valor definido
b = 0
end
-- neste ponto , valor de ’b ’ estar a definido
Noemi Rodriguez Condicionais 12
Expressoes booleanas
Operadores logicosand ( conjun c~ao ) or ( disjun c~ao ) not ( nega c~ao )
I Operam sobre valores booleanos
I Resultam em um valor booleano
Exemplos:print (" Entre com o valor de temperatura :")
t = io . read ("*n")
if t >= 20 and t <= 30 then
print (" clima agradavel ")
end
if not b then -- se ’b ’ n~ao tem valor definido
b = 0
end
-- neste ponto , valor de ’b ’ estar a definido
Noemi Rodriguez Condicionais 12
Expressoes booleanas
Operadores logicosand ( conjun c~ao ) or ( disjun c~ao ) not ( nega c~ao )
I Operam sobre valores booleanos
I Resultam em um valor booleano
Exemplos:print (" Entre com o valor de temperatura :")
t = io . read ("*n")
if t >= 20 and t <= 30 then
print (" clima agradavel ")
end
if not b then -- se ’b ’ n~ao tem valor definido
b = 0
end
-- neste ponto , valor de ’b ’ estar a definido
Noemi Rodriguez Condicionais 12
— lab 1 —
Noemi Rodriguez Condicionais 13
Expressoes booleanas
Operadores logicos
and false true
false false false
true false true
or false true
false false true
true true true
not false true
true false
Noemi Rodriguez Condicionais 14
Bibliotecas padraoLua oferece diferentes bibliotecas com funcoes utilitariasI Biblioteca matematica: math
I Oferece funcoes matematicasI math.abs(x): retorna o valor absoluto de xI math.sqrt(x): retorna o valor da raiz quadrada de xI math.min(x, ...): retorna valor mınimoI math.max(x, ...): retorna valor maximo
I math.sin(x): retorna valor do seno (x em rad)I math.cos(x): retorna valor do cosseno (x em rad)I math.tan(x): retorna valor do cosseno (x em rad)I math.acos(x): retorna valor da tangente (x em rad)I math.asin(x): retorna o arco seno (em radianos)I math.acos(x): retorna o arco cosseno (em rad)I math.atan(x): retorna o arco tangente (em rad)I math.atan2(y,x): retorna o arco tangente de y/x (em rad)I math.deg(x): converte de radianos para grausI math.rad(x): converte de graus para radianosI math.pi: constante numerica – valor de π
I math.floor(x): retorna maior valor inteiro menor que xI math.ceil(x): retorna menor valor inteiro maior que x
Noemi Rodriguez Condicionais 15
Aplicacao
Determinacao de raızes de equacao do 2o grau: ax2 + bx + c = 0
−b ±√b2 − 4ac
2a
I Objetivo: Escrever um programa que capture 3 valoresnumericos (valores dos coeficientes a, b e c) e exiba umamensagem informando:I Que nao ha raızes reais; ouI Que so existe uma raiz real, seguida do valor da raiz; ouI Que existem duas raızes reais, seguida dos valores das raızes.
Noemi Rodriguez Condicionais 16
Aplicacao
Determinacao de raızes de equacao do 2o grau: ax2 + bx + c = 0
−b ±√b2 − 4ac
2a
I Objetivo: Escrever um programa que capture 3 valoresnumericos (valores dos coeficientes a, b e c) e exiba umamensagem informando:I Que nao ha raızes reais; ouI Que so existe uma raiz real, seguida do valor da raiz; ouI Que existem duas raızes reais, seguida dos valores das raızes.
Noemi Rodriguez Condicionais 16
Aplicacao
Determinacao de raızes de equacao do 2o grau: ax2 + bx + c = 0
−b ±√b2 − 4ac
2a
a , b , c = io . read ("*n" ,"*n" ,"*n")
delta = b ^2 - 4* a*c
if delta < 0 then
io . write (" Nao existem raizes reais \n")
elseif delta == 0 then
x = -b / (2* a)
io . write (" Existe um unica raiz : " ,x ,"\n")
else
x1 = (-b - math . sqrt ( delta )) / (2* a)
x2 = (-b + math . sqrt ( delta )) / (2* a)
io . write (" Existem duas raizes : " ,x1 ," e " ,x2 ,"\n")
end
Noemi Rodriguez Condicionais 17