Buscar

TEORIA 4 - PROGRAMAÇÃO 1 - SCILAB - 2016/2 - DECOM - UFOP


Continue navegando


Prévia do material em texto

Aula Teórica 04 
Material Didático 
Prof. Red 
1 
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 
Conteúdos da Aula 
 Comando de Desvio de Fluxo 
Operadores Lógicos 
 Exercícios 
 
 
 
2 
3 
Comando de Desvio de Fluxo 
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 
5 
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 
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 
Comando de Desvio de Fluxo 
6 
if <condição_a> then 
 <comando_1>; 
    
 <comando_n>; 
elseif <condição_b> 
 <comando_1>; 
    
 <comando_m>; 
else // opcional 
 <comando_1>; 
    
 <comando_p>; 
end 
usando elseif 
independente da 
quantidade de testes 
teremos somente um 
end 
Comando de Desvio de Fluxo 
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 
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 
8 
Operadores Lógicos 
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: 
10 
 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. 
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 
1
7 
Exercícios 
Exercício 1 
A função f(x), no domínio + (reias não negativos), e definida por: 
 
18 
 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. 
 
 
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 
22 
 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; 
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 
27 
 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. 
Exercício 3 - Código 
28 
Exercício 4 
29 
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. 
Exercício 5 
30 
 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. 
Exercício 6 
31 
 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 
consideradoo 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. 
Exercício 7 
32 
 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