Universidade Federal de Ouro Preto - UFOP
Departamento de Computação - DECOM
Comissão da Disciplina Programação de Computadores I – CDPCI
Programação de Computadores I – BCC701
www.decom.ufop.br/bcc701
2014/1
Aula Teórica 04
Material Didático
Prof. Red
1
Conteúdos da Aula
 Comando de Desvio de Fluxo
 Operadores Lógicos
 Exercícios
2
Comando de Desvio de Fluxo
3
Comando de Desvio de Fluxo
O comando if é um comando de desvio do fluxo de execução.
Duas estruturas para o comando if são:
if <condição> then <comandos> end
if <condição> then <comandos> else <comandos> end
Podemos ter cada uma destas estruturas compondo o bloco de
comandos de um determinado if.
Assim, teremos o aninhamento de if’s, ou seja, um if dentro
de
outro if.
4
Comando de Desvio de Fluxo
if´s aninhados
Quando existe este
tipo de disposição do
comando if, ocorre o
que denominamos de
if’s aninhados
um end para cada if
correspondente
if <condição_a> then
<comando_1>;
  
<comando_n>;
else
if <condição_b> then
<comando_1>;
  
<comando_m>;
else
<comando_1>;
  
<comando_p>;
end
end
5
Comando de Desvio de Fluxo
usando elseif
independente da
quantidade de testes
teremos somente um
end
if <condição_a> then
<comando_1>;
  
<comando_n>;
elseif <condição_b>
<comando_1>;
  
<comando_m>;
else // opcional
<comando_1>;
  
<comando_p>;
end
6
Comando de Desvio de Fluxo
if ... then ... else ... end
if <condição1> then
<bloco “então1”>
else
if <condição2> then
<bloco “então2”>
else
if <condição3> then
<bloco “então3”>
else
if <condiçãoN> then
<bloco “entãoN”>
else
<bloco “senão”>
end end
end end
if ... then ... elseif ... end
if <condição1> then
<bloco “então1”>
elseif <condição2>
<bloco “então2”>
elseif <condição3>
<bloco “então3”>
elseif <condiçãoN>
<bloco “entãoN”>
else
<bloco “senão”>
end
7
Operadores Lógicos
8
Operadores Lógicos
• As expressões lógicas podem ser combinadas através de
operadores lógicos.
• Eles são usados para construir expressões mais complexas, que
combinam condições múltiplas:
<exprLógica1> <operadorLógico> <exprLógica2>
• Ou para negar uma condição:
<operador_de_negação> <exprLógica>
9
Operadores Lógicos
Operadores lógicos definidos no Scilab:
 E (Conjunção):
• Resulta verdadeiro se as duas expressões forem verdadeiras;
 OU (disjunção não exclusiva):
• Resulta verdadeiro se pelo menos uma das duas expressões
forem verdadeiras;
 Não (negação):
• Inverte o valor lógico da expressão, se ela for verdadeira o
resultado é falso, se ela for falsa o resultado é verdadeiro.
10
Operadores Lógicos
Operadores lógicos podem ser definidos por Tabelas Verdade
11
Operadores Lógicos
Usando Operadores Lógicos, Relacionais e Aritméticos
• Primeiro os operadores aritméticos e relacionais são avaliados,
para depois serem avaliados os operadores lógicos.
12
Operadores Lógicos
Usando Operadores Lógicos, Relacionais e Aritméticos
• A ordem de precedência dos operadores lógicos é: negação (~), E
(&) e OU (|), ou seja ~ X & Y | Z, corresponde a (((~X) & Y) | Z)
13
Operadores Lógicos
Exemplo
 Em um parque de diversões apenas pessoas entre 18 e 50
anos podem andar na montanha russa. Considerando a
existência de uma variável chamada idade, a expressão lógica
para permitir a entrada no brinquedo seria:
• (idade >= 18) & (idade <= 50)
• Mais uma vez, o uso dos parênteses é bom para facilitar a
leitura.
 Atenção: a expressão: idade >= 18 & <= 50, está incorreta pela
sintaxe do Scilab.
 A expressão 18 <= idade <= 50 também está incorreta.
14
Operadores Lógicos
Exemplo: Intervalo Numérico
15
Operadores Lógicos
Exemplo: Intervalo Numérico
16
Exercícios
1
7
Exercício 1
A função f(x), no domínio + (reias não negativos), e definida por:
Codifique um programa que calcule o valor da função para um
argumento de entrada pertencente ao domínio da função.
A seguir a ilustração de execução do programa.
18
Exercício 1 – Execução A
19
Exercício 1 – Execução B
20
Exercício 1 - Código
21
Exercício 1 – Código Alternativo
O código alternativo exibido a seguir não representa
uma boa
prática de programação, pois:
 não se beneficia dos valores em ordem crescente,
naturalmente especificados no intervalo;
 a cada elseif, devemos testar o subintervalo usando
o operador and, sem reaproveitar o teste do
subintervalo anterior;
22
Exercício 1 – Código Alternativo
23
Exercício 2
Codifique um programa em Scilab que leia 3 valores inteiros a
partir do teclado.
Estes valores inteiros representam os lados de um triângulo. O
Programa deve verificar a condição de existência do triângulo. Em
caso afirmativo, o programa classifica o triângulo de acordo com
seus lados: equilátero, ou isósceles, ou escaleno.
A seguir uma ilustração da execução do programa.
24
Exercício 2 - Execução
25
Exercício 2 - Código
26
Exercício 3
De acordo com o site Wikipedia:
• São bissextos todos os anos múltiplos de 400, p. ex.: 1600, 2000,
2400, 2800...
• São bissextos todos os múltiplos de 4 e não múltiplos de 100, p.
ex.: 1996, 2004, 2008, 2012, 2016…
• Não são bissextos todos os demais anos.
Codifique um programa que tenha como entrada um
determinado ano.
O programa imprime uma mensagem dizendo se o ano é ou não
bissexto.
27
Exercício 3 - Código
28
Exercício 4
Escreva os programas Scilab para os itens a seguir.
a) se x é maior ou igual a zero, calcule o valor da raiz
quadrada da variável x na variavel sqrt_X e mostre o
resultado. Caso contrário, mostre uma mensagem de
erro sobre o argumento da função de raiz quadrada e
coloque o valor zero em sqrt_X.
b) uma variável denominada fun é calculada como
numerador/denominador. Se o valor absoluto de
denominador for menor do que 1.0D-300, escreva
"Erro de divisão por zero". Caso contrário, calcule o
valor de fun.
29
Exercício 5
A função tangente é definida como tan  = sen  / cos .
Esta expressão pode ser avaliada para obter a tangente
se a magnitude de cos  não se aproximar demais de
zero. Se cos  for zero, a avaliação produzirá um erro de
divisão por zero. Assuma que  seja dado em graus e
escreva os códigos Scilab para avaliar tan , desde que a
magnitude de cos  seja maior ou igual a 10-20. Se a
magnitude de cos  for menor que a 10-20, escreva uma
mensagem de erro.
Observação: a leitura do ângulo deve ser feita em graus,
mas deve-se convertê-lo para radianos antes de utilizar
as funções trigonométricas do Scilab.
30
Exercício 6
Escreva um programa que permita que um usuário
forneça uma cadeia de caracteres que contenha um dia
da semana ("segunda-feira", "terça-feira", etc.) e utilize
uma construção select para converter o dia em um
número correspondente, de maneira que domingo seja
considerado o primeiro dia da semana e sábado seja
considerado o último. Mostre o número de dia resultante.
Lembre-se de considerar o caso de um nome ilegal de
dia da semana.
31
Exercício 7
Escreva um programa que permita que um usuário
forneça uma cadeia de caracteres representando o nome
de uma disciplina.
Após a leitura da string, o programa imprime uma
mensagem informando a disciplina que o aluno foi
matriculado.
OBS: disciplinas:
ingles, historia, astronomia e literatura
32
Download

Aula Teórica 4 - Decom