Aula prática 4. Comandos de Desvio. Resumo. 1 Comandos de Desvio Condições mutuamente exclusivas... 2

Documentos relacionados
Aula prática 4. Comandos de Desvio. Resumo. 1 Comandos de Desvio Condições mutuamente exclusivas... 2

Comandos de Desvio 2

Comandos de Desvio 1

Universidade Federal de Ouro Preto UFOP. Instituto de Ciências Exatas e Biológicas ICEB. Departamento de Computação DECOM

PROGRAMAÇÃO DE COMPUTADORES I - BCC Aula Prática 04 Exercício 1

Aula 05: Condicionais (if / else)

Comandos de Desvio 1

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM. Programação de Computadores I - BCC /1.

Comandos de repetição while

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

Comandos de desvio de fluxo. Expressões lógicas.

Agenda. Programação estruturada. Sequência. Decisão: Desvio de fluxo INTRODUÇÃO. Expressões lógicas.

Comandos de repetição while

Aula Teórica 04. Material Didático Prof. Red

Comandos de desvio de fluxo. Expressões lógicas.

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

Aula Teórica 03. Comandos Condicionais (Decisão)

Material Didático Proposto

Programação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais

Aula 05: Condicionais (Parte 2)

Ler os valores dos coeficientes a, b e c Calcular o valor de delta Obter as raízes da equação Imprimir as raízes da equação

Aula 04: Fluxogramas e condicionais

Aula Teórica 04. Material Didático

Comandos de repetição while

Material Didático Unificado.

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores

PROGRAMAÇÃO A. Estrutura Condicional

Material Didático Unificado. Variáveis correspondem a nomes para endereços de memória que são gerenciados pelo Scilab.

Comandos de desvio de fluxo. Expressões lógicas.

Prática 10 - Funções

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If...

AULA TEÓRICA 03 COMANDO CONDICIONAL

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Material Didático Unificado.

ESTRUTURA CONDICIONAL E SELEÇÃO

INSTITUTO FEDERAL CATARINENSE Campus Ibirama

Aula Teórica 06. Material Didático Proposto. Conteúdos da Aula. Estruturas de Repetição Exercícios

Fixação de conteúdo teórico

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação

Fixação de conteúdo teórico

Programação de Computadores I BCC701 Aula Teórica 08 Exercícios

Introdução à Programação

Universidade Federal de Uberlândia Faculdade de Computação. Estruturas de repetição

Parte I - Expressões lógicas e operadores

Algoritmos e Programação

Introdução ao Scilab. Comandos de entrada e saída de dados.

Lista de Exercícios 2

Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica

Estruturas condicionais

Funções: Primeira Parte

Aula 03 - Introdução ao Scilab (p2)

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

Estruturas de Repetição

Programação I PRG Engenharia de Telecomunicações 2ª Fase Professor: Cleber Jorge Amaral

Aula 6: Comandos Estruturados Estrutura Condicional

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

MC-102 Aula 05 Comandos Condicionais

Aula 6 Oficina de Programação Estruturas Condicionais no C. Profa. Elaine Faria UFU

Aula 15: Repetição (Parte 3)

Universidade Federal de Ouro Preto UFOP. Instituto de Ciências Exatas e Biológicas ICEB. Departamento de Computação DECOM

Programação de Computadores I BCC Primeira Avaliação 19/01/2013 Valor (2,0)

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

CAPÍTULO IV. Estruturas Condicionais CAPÍTULO IV ESTRUTURAS CONDICIONAIS ESTRUTURA CONDICIONAL SIMPLES

LINGUAGEM C: COMANDOS DE REPETIÇÃO

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

É um interpretador,, ou seja, um programa que executa programas; ao contrário de um compilador, não traduz um programa para instruções de máquina.

Sintaxe Básica de Java Parte 2

Introdução a programação Comandos de repetição

Laços de repetição for, while, do-while

Introdução à Ciência da Computação SCC0120 Prof. Zhao Liang. Aula de Laboratório 1: Operadores, comandos básicos e comando IF 27/03/2012

Introdução a Programação de Jogos

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Exercício... Para começar... Resolução... Para começar... Para começar...

Capítulo 4: Condicionais

ALGORITMO I ESTRUTURA DE CONTROLE DECISÃO SE / CASO;

Programação Estruturada

CAPÍTULO IV. Estruturas Condicionais CAPÍTULO IV ESTRUTURAS CONDICIONAIS ESTRUTURA CONDICIONAL SIMPLES

Introdução a programação Controle de Fluxo

Comandos de Repetição

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

Introdução à Ciência da Computação

Notas de Aula de Algoritmos e Programação de Computadores

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Capítulo 2: Condicionais. Pontifícia Universidade Católica Departamento de Informática

Estruturas Condicionais

Programação científica C++

Estruturas de Seleção Seleção Simples e Composta (parte 1)

Universidade Federal de Ouro Preto -UFOP Departamento de Computação - DECOM Programação de Computadores I BCC701. Aula Teórica 08.

Professor Mauricio Lederer Algoritmos. Entrada e saída de dados

Sub-rotinas David Déharbe

Variáveis, Atribuição, Entrada e Saída

Working 03 : Conceitos Básicos II

Estruturas de controle: Estrutura de DECISÃO

INTRODUÇÃO AO AMBIENTE DE PROGRAMAÇÃO MATLAB

Introdução à Computação

Transcrição:

Programação de Computadores I UFOP DECOM 2013 2 Aula prática 4 Comandos de Desvio Resumo Nesta aula você irá resolver problemas que requerem uma decisão com base em um teste, ou condição. Para implementar a solução de problemas desse tipo, são utlizados comandos de desvio do fluxo de execução do programa, tais como if-then- ou switch. Sumário 1 Comandos de Desvio 1 1.1 Condições mutuamente exclusivas........................ 2 2 Problemas 2 1 Comandos de Desvio Suponha que você quer escrever um programa Scilab para calcular o valor de f (x), onde f é a função definida a seguir, e x é um valor especificado pelo usuário. f (x) = ln 1 1 x Note que essa função não é definida se x = 1. Portanto, seu programa deverá testar se o valor especificado pelo usuário é igual a 1 e, em caso afirmativo, informar ao usuário que esse não é um valor válido. Caso contrário, o programa deve calcular e imprimir o valor de f (x). O programa poderia ser então escrito do seguinte modo: x = input("informe o valor de x (deve ser diferente de 1): ") if x <> 1 then printf("f(%g) = %g\n", x, 1/log(1-x)) printf("valor inválido: deve ser diferente de 1") Um comando if-then- tem a seguinte sintaxe: if condição then bloco de comandos 1 bloco de comandos 2 A condição deve ser uma expressão booleana, isto é, uma expressão cujo valor é verdadeiro (%t) ou é falso (%f). Cada bloco de comandos é uma sequência de comandos, incluindo, possivelmente, outros comandos de desvio. A execução de um comando if-then- é feita do seguinte modo: primeiro, a condição é avaliada; se o valor resultante for %t, o bloco de comandos 1 é executado; caso contrário (se o valor for %f), o bloco de comandos 2 é executado. Observação: a parte do comando pode ser omitida, caso não se deseje executar nenhum comando particular no caso em que a condição seja falsa. 1

1.1 Condições mutuamente exclusivas Em algumas situações, podemos querer testar um conjunto de condições mutuamente exclusivas, tal como na computação da função definida a seguir: g(x, y) = x + y x 0 e y 0 x + y 2 x 0 e y < 0 x 2 + y x < 0 e y 0 x 2 + y 2 x < 0 e y < 0 Para computar o valor de g(x, y) podemos escrever o seguinte trecho de código em Scilab: if x >= 0 & y >= 0 then gx = x + y // bloco 1 if x >= 0 & y < 0 then gx = x + y^2 // bloco 2 if x >= 0 & y < 0 then gx = x^2 + y // bloco 3 // x < 0 & y < 0 gx = x^2 + y^2 // bloco 4 No comando acima, a condição da cláusula if é avaliada e, caso seja verdadeira, o bloco de comnados 1 é executado. Caso contrário, é avaliada a condição da cláusula if e, caso esta seja verdadeira, o bloco 2 é executado, e assim por diante. Caso nenhuma das condições anteriores seja verdadeira, é executado o bloco de comandos 4, correspondente à cláusula. Expressões booleanas podem ser construídas usando-se operadores relacionais (tal como < ou <=), e podem ser combinadas por meio de operadores booleanos, tais como & e. Os operadores relacionais e os operadores booleanos disponíveis em Scilab são mostrados nas tabelas a seguir. Operadores Relacionais operação descrição x < y x menor que y x <= y x menor ou igual a y x > y x maior que y x >= y x maior ou igual a y x == y x igual a y x ~= y x diferente de y x <> y Operadores Lógicos operação descrição semântica ~b negação (não) %t se e somente se b é falsa b1 & b2 conjunção (ê) %t se e somente se b1 e b2 são ambas verdadeiras b1 b2 disjunção (ou) %f se e somente se b1 e b2 são ambas falsas 2 Problemas 2

Tarefa 1: Tarifa de correio (exercício 2.11) O custo de enviar um pacote pelo correio é de R$ 15,00 para o primeiro kg e R$ 5,00 para cada meio kg ou fração acima de 1 kg. Se o pacote pesar mais de 35 kg, uma tarifa adicional de R$ 15,00 é adicionada ao custo. Nenhum pacote com mais de 50 kg é aceito. Escreva um programa que leia o peso do pacote, em kg, e calcule o custo de envio desse pacote. Seu programa deve também testar se o valor informado para o peso do pacote é válido (isto é, se é maior que 0), imprimindo uma mensagem indicativa de valor inválido, caso contrário. OBS: Imprima o custo de envio no formato correto, isto é, com 2 casas decimais. Correios: cálculo da tarifa por pacote --------------------------------------- Informe o peso do pacote (em kg): 54 Peso acima do valor permitido Correios: cálculo da tarifa por pacote --------------------------------------- Informe o peso do pacote (em kg): 3.4 Custo de envio = 40.00 OBS: Teste o seu programa para valores de peso que possam exercitar todos os caminhos de execução do programa, tais como: 1, 1.7, 6, 38.2, 50, 54. Solução: clear;clc; // Custo de envio de um pacote pelo correio printf("correios: cálculo da tarifa por pacote\n"); printf("---------------------------------------"); // lê o peso do pacote peso = input("informe o peso do pacote (em kg): "); // calcula tarifa if peso <=0 then printf("valor inválido"); if peso > 50 then printf("peso acima do valor permitido"); tarifa = 15 + 5*ceil((peso-1)*2); if peso > 35 then tarifa = tarifa + 15; // informa o custo de envio printf("custo de envio = %5.2f",tarifa); 3

Tarefa 2: Tarifa de Energia A conta de energia elétrica de consumidores residenciais de uma cidade é calculada do seguinte modo, onde o consumo é dado em kilowatts (kw): Se o consumo é de até 500 kw, a tarifa é de R$ 0,02 por unidade. Se o consumo é maior que 500 kw, mas não excede 1000 kw, a tarifa é de R$ 0,10 para os 500 primeiros kw e de R$ 0,05 para cada kw excedente a 500. Se o consumo é maior que 1000 kw, a tarifa é de R$ 0,35 para os 1000 primeiros kw e de R$ 0,10 para cada kw excedente a 1000. Em toda conta, é cobrada uma taxa básica de serviço de R$ 5,00, indepentemente da quantidade de energia consumida. Escreva um programa que leia o consumo de energia elétrica de uma residência e imprima a sua conta de energia, no formato indicado no exemplo abaixo. O programa deve verificar se o valor fornecido para o consumo de energia é um valor inteiro positivo e, caso contrário, terminar exibindo uma mensagem indicativa de valor inválido. Cálculo da Conta de Energia Elétrica ------------------------------------ Informe o consumo de energia: 547 -------------------------------------- Consumo = 547 Custo da energia consumida = R$ 304.70 Tarifa básica de serviço = R$ 5.00 Valor a pagar = R$ 309.70 -------------------------------------- Solução: clear; clc; // Conta de Energia Elétrica printf("cálculo da Conta de Energia Elétrica\n"); printf("------------------------------------\n"); tservico = 5.0; // Lê o consumo de energia consumo = input("informe o consume de energia: "); if consumo < 0 int(consumo) <> consumo then printf("valor inválido"); if consumo <= 500 then custo = consumo * 0.02; if consumo <= 100 then custo = 500* 0.1 + (consumo - 500) * 0.05; custo = 1000 * 0.35 + (consumo - 1000) * 0.1; // imprime a conta de energia printf("--------------------------------------\n"); printf("consumo = %g \n", consumo); printf("custo da energia consumida = R$ %6.2f \n", custo); printf("tarifa básica de serviço = R$ %6.2f \n", tservico); printf("valor a pagar = R$ %6.2f \n", custo + tservico); printf("--------------------------------------"); 4

Tarefa 3: Refração da Luz (exercício 3.12) Refração é a mudança de direção de uma onda (por exemplo, de luz, ou de som) em razão de uma mudança no seu meio de transmissão, como ilustrado na figura abaixo. Ao passar de um meio 1, com índice de refração n 1, para um meio 2, com índice de refração diferente, n 2, a frqu^ncia da onda permanece a mesma, mas sua velocidade de fase se altera (de v 1 para v 2 ), observando-se então uma mudança no ângulo de incidência da onda (de θ 1 para θ 2 ). Esse fenômeno é descrito pela chamada Lei de Snell: sin θ 1 sin θ 2 = v 1 v 2 = n 1 n 2 Escreva um programa que leia os índices de refração de dois meios, n 1 e n 2, e o ângulo de incidência θ 1 (em graus), e calcule e imprima os dados a seguir. 1. O ângulo de refração θ 2 correspondente (em graus). Se (n 1 /n 2 ) sin θ 1 > 1, a equação acima não dará valores reais para θ 2. Neste caso, a onda é toralmente refletida de volta para o meio 1, e o seu programa deverá exibir a mensagem reflexão total. 2. O ângulo crítico θ c (em graus), que é o ângulo de incidência para o qual θ 2 = 90 o. Como sin(90 o ) = 1, o valor do ângulo crítico é θ c = sin 1 (n 2 /n 1 ), que somente é definido se n 2 n 1. Se o valor do ângulo crítico não for definido, seu programa simplesmente não deverá imprimir tal valor. Seu programa deve verificar se os valores fornecidos para os índices de refração n 1 e n 2 são maiores ou iguais a 1, e também se o valor fornecido para θ 1 está no intervalo 0 θ 1 90 o. Caso alguma dessas condições não seja satisfeita, o programa deve terminr, imprimindo a mensagem valores inválidos. Refração de onda ---------------- indice de refração do meio 1 (>= 1) = 1.7 indice de refração do meio 2 (>= 1) = 1 ângulo de incidência (0 a 90 graus) = 30 ângulo de refração = 58.2117 graus ângulo crítico = 36.0319 graus Refração de onda ---------------- indice de refração do meio 1 (>= 1) = 1.7 indice de refração do meio 2 (>= 1) = 1 ângulo de incidência (0 a 90 graus) = 45 reflexão total ângulo crítico = 36.0319 graus 5

Refração de onda ---------------- indice de refração do meio 1 (>= 1) = 1 indice de refração do meio 2 (>= 1) = 1.7 ângulo de incidência (0 a 90 graus) = 45 ângulo de refração = 24.5789 graus Solução: clc; clear; // Refração de onda // n1 sin(theta1) = n2 sin(theta2) printf("refração de onda\n"); printf("----------------\n"); // Le indices de refração dos meios e ângulo de incidência n1 = input("indice de refração do meio 1 (>=1) = "); n2 = input("indice de refração do meio 2 (>=1) = "); theta1 = input("ângulo de incidência (0 a 90 graus) = "); if n1<1 n2<1 theta1 <0 theta1 > 90 then printf("valores inválidos\n"); // Cálculo do ângulo de refração r = (n1/n2) * sind(theta1); if r > 1 then printf("reflexão total\n") printf("ângulo de refração = %g graus\n", asind(r)); // Cálculo do ângulo crítico if n2 <= n1 then printf("ângulo crítico = %g graus\n", asind(n2/n1)); Dicas: 1. Scilab provê funções trigonoétricas para lidar com ângulos expressos em radianos ou em graus. Algumas delas são mostradas na tabela a seguir: função descrição sin(r) seno do ângulo r, dado em radianos cos(r) coseno do ângulo r, dado em radianos asin(x) valor, em radianos, do ângulo cujo seno é x (0 x 1) acos(x) valor, em radianos, do ângulo cujo coseno é x (0 x 1) sind(a) seno do ângulo a, dado em graus cosd(a) coseno do ângulo a, dado em graus asind(x) valor, em graus, do ângulo cujo seno é x (0 x 1) acosd(x) valor, em graus, do ângulo cujo coseno é x (0 x 1) 2. Para testar seu programa, você poderá usar alguns dos índices de refração a seguir. 6

meio índice de refração vácuo 1.0 Gases- a 0 o C e 1 atm ar 1.000293 hidrogênio 1.000132 Líquidos- a 20 o água 1.3330 álcool etílico 1.361 benzeno 1.501 Sólidos- temp. ambiente gelo 1.31 quartzo 1.458 diamante 2.419 7