Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Cap. 3 Estruturas de Controle 3.1 Considerações iniciais... 34 3.2 Estrutura seqüencial... 34 3.3 Estruturas condicionais... 34 3.3.1 Estrutura condicional simples... 35 3.3.2 Estrutura condicional composta... 36 3.3.3 Estrutura condicional encandeada... 36 3.3.4 eleção de múltipla escolha... 37 3.3.5 Estrutura condicional escolha/caso... 38 3.4 Exemplos com estruturas condicionais... 39 3.5 Estruturas de repetição... 44 3.5.1 Estrutura de repetição EQUATO... 44 3.5.2 Estrutura de repetição REPITA... 46 3.5.3 Estrutura de repetição PARA-FAÇA... 48 3.6 Exemplos com estruturas de repetição... 49 Problemas... 52 Bibliografia consultada... 53 33
3.1 Considerações iniciais este capítulo serão apresentadas as chamadas estruturas de controle, que associadas aos conhecimentos anteriores, tornam os algoritmos mais flexíveis e com recursos mais amplos para resolverem problemas práticos. A primeira estrutura, a seqüencial, já está sendo exemplificada desde o Capítulo 1 e aqui será meramente ilustrada. As demais estruturas, as condicionais e as de repetição, necessárias em diversos algoritmos, serão descritas quanto a sua sintaxe básica e ilustradas através de exemplos. Ao final do Capítulo 3 terão sido estudadas ferramentas úteis nas mais diversas situações de programação. 3.2 Estrutura seqüencial Como já visto, é constituída por um conjunto de instruções executadas na ordem em que foram escritas, numa seqüência linear, de cima para baixo. O algoritmo a seguir, constituído por declaração de variáveis seguida de comandos, ilustra mais uma vez esta estrutura. Exemplo 3.1. Ilustrando estrutura seqüencial. Início E, aldo E aldo Algoritmo Est_eqüencial declare aldo, E, real // E = Entrada, = aída leia E, aldo E - escreva aldo Fim 3.3 Estruturas condicionais Imagine no Exemplo 3.1 que fosse necessário fornecer uma mensagem de saldo negativo como: Atenção: saldo negativo!. Veja que, mesmo essa simples exigência, não pode ser realizada com as instruções que estudamos até o Capítulo 2. Torna-se necessário verificar o saldo (isso pode ser feito com os operadores relacionais) mas, além disso, tomar uma decisão e apresentar a mensagem ou não. Para resolver problemas como este, que envolvem tomadas de decisões, utiliza-se as estruturas condicionais. Uma estrutura condicional permite a escolha de um grupo de ações a ser executado quando determinadas condições, representadas por expressões lógicas são ou não satisfeitas. As estruturas condicionais são baseadas nas instruções: se... então... ; escolha/caso. 34
3.3.1 Estrutura condicional simples Em que a seqüência de comandos só será executada se a condição for verdadeira. intaxe: se (condição) então seqüência de comandos outros comandos Exemplo: se (X > Y) e (X > Z) então escreva X maior que Y e Z //Continuação do algoritmo... Condição Instruções executadas se condição verdadeira X>Y e X > Z X maior que Y e Z Instruções depois da estrutura condicional Observações: a) o exemplo acima, apenas um comando escreva é executado se a condição for verdadeira. Mas, vale ressaltar, vários comandos podem ser inseridos após a instrução então. b) o diagrama de blocos costuma-se usar junto com o símbolo de decisão (losango) os termos, sim ou V quando a condição é verdadeira e, não ou F quando a condição for falsa. O exemplo a seguir resolve a questão da mensagem de saldo negativo com a estrutura condicional simples. Exemplo 3.2. Verifica se saldo do Exemplo 3.1 é negativo e informa. Início E, aldo E Algoritmo Est_Condimples declare aldo, E, real // E = Entrada, = aída leia E, aldo E aldo < 0 Atenção: saldo negativo! se (aldo < 0) então escreva Atenção: saldo negativo! escreva aldo aldo Fim 35
3.3.2 Estrutura condicional composta intaxe: se (condição) então seqüência de comandos senão seqüência de comandos Exemplo: se (X >= Y) então escreva X maior ou igual a Y senão escreva X menor que Y escreva X, Y Condição X >= Y Instruções executadas se a condição for falsa Instruções executadas se a condição for verdadeira X é menor que Y X é maior ou igual a Y X, Y 3.3.3 Estrutura condicional encandeada Existem situações em que uma condição precisa ser testada dentro de outra, o que leva a uma estrutura condicional ou de decisão encandeada, sendo mostrado abaixo um exemplo. intaxe: se (condição 1) então seqüência de comandos senão se (condição 2) então seqüência de comandos senão seqüência de comandos Exemplo: se (X > Y) então Maior X senão se (X < Y) então Maior Y senão escreva Valores iguais Condição1 Condição2 Instruções p/ condição 1 verdadeira X<Y X>Y Maior X Instruções p/ condição 1 falsa e condição 2 falsa Instruções p/ condição 1 falsa e condição 2 verdadeira Valores iguais Maior Y 36
3.3.4 eleção de múltipla escolha A estrutura condicional se... pode ser usada para fazer uma seleção de múltipla escolha como mostrado abaixo. intaxe: se (condição 1) então seqüência de comandos se (condição 2) então seqüência de comandos... se (condição n) então seqüência de comandos Exemplo: B 0 leia A se (A = 1) então B A se (A = 2) então B A 2 se (A = 3) então B A+10 escreva B B 0 Cond. 1 Comandos A Cond. 2 Comandos A=1 B A... A=2 B A 2 Cond. n Comandos A=3 B A+10 B 37
3.3.5 Estrutura condicional escolha/caso A situação anterior é bastante freqüente na construção de algoritmos que dependem de várias alternativas. Quando são necessárias várias instruções se umas após as outras ou mesmo encadeadas, o algoritmo pode ser simplificado com o uso de uma instrução específica, a chamada estrutura de controle de múltipla escolha (ou seleção de múltipla escolha), própria para testar uma variável em relação a diversos valores pré-estabelecidos. Essa estrutura agiliza o processamento das instruções, ou seja, é muito mais rápido usar escolha/caso do que diversas instruções do tipo se. Observe a sintaxe e o exemplo a seguir. A instrução senão informará se a variável não é igual a nenhuma das alternativas, ou seja, que a tentativa foi inválida. O uso da instrução senão é opcional. intaxe: escolha (variável) caso valor 1: seqüência de comandos 1 caso valor 2: seqüência de comandos 2... caso valor n: seqüência de comandos n senão seqüência de comandos fim escolha Exemplo: leia y escolha (y) caso 1: escreva I caso 2: escreva II caso 3: escreva III caso 4: escreva IV senão: escreva y diferente de 1 a 4 fim escolha var=valor 1 Comandos 1 y y = 1 I var=valor 2 Comandos 2 y = 2 II... y = 3 III var=valor n Comandos n y = 4 IV Comandos y diferente de 1 a 4 38
3.4 Exemplos com estruturas condicionais Em cada exemplo a seguir é apresentado um problema e é escolhida uma estrutura condicional para sua solução, sendo implementada em um algoritmo em português estruturado. Em alguns casos é mostrado também o correspondente programa na linguagem Java. Os diagramas de blocos não foram apresentados, ficando como exercícios. Exemplo 3.3. Reajuste de salário. Elaborar um algoritmo e correspondente código em Java para resolver o problema de um reajuste de um salário da seguinte forma: se o salário for menor ou igual a 1000,00 o salário deve ser reajustado em 10%; se for maior que 1000,00 e menor ou igual a 3000,00 o reajuste deve ser de 5%; se o salário for maior que 3000,00 não deve haver reajuste. o final o programa deve informar se o salário for reajustado ou não e o seu valor. Algoritmo Reajuste_alário declare alário, ovo_al real escreva Entre salário leia alário se (alário <= 1000) então ovo_al alário*1,10 senão se (alário <= 3000) então ovo_al alário*1,05 senão ovo_al alário se (alário ovo_al) então escreva alário reajustado:, ovo_al senão escreva alário sem reajuste:, alário Observação: Veja a indentação (deslocamentos à direita e aninhamento das instruções) no algoritmo, a qual agora é ainda mais útil, devido à presença das estruturas condicionais. 39
Código em Java do Exemplo 3.3: package cap03; import java.io.bufferedreader; import java.io.inputtreamreader; public class Ex3_3 { public static void main(tring args[]) { BufferedReader teclado = new BufferedReader(new InputtreamReader(ystem.in)); double salario = 0, novoalario = 0; try { ystem.out.print("entre o salário: "); salario = Double.parseDouble(teclado.readLine()); catch (Exception e) { ystem.out.println("informe o valor corretamente!!!"); ystem.exit(0); if (salario <= 1000) novoalario = salario * 1.10; else if (salario <= 3000) novoalario = salario * 1.05; else novoalario = salario; if else (salario!= novoalario) ystem.out.println("alário reajustado: " + novoalario); ystem.out.println("alário sem reajuste: " + salario); Observações: a) Veja a indentação (deslocamentos à direita e aninhamento das instruções). b) Comentários no programa em Java são escritos após o símbolo //. c) Em Java, ao final de cada comando usa-se ponto-e-vírgula ( ; ). d) a linguagem Java, o operador relacional diferente é escrito como!=. 40
Exemplo 3.4. Detecta triângulo. Ler três valores para os lados de um triângulo em variáveis A, B e C. Verificar se os lados fornecidos formam realmente um triângulo, e se sim, deve ser indicado qual tipo de triângulo foi formado: isósceles, escaleno ou eqüilátero. Para estabelecer esse algoritmo, é necessário saber, em primeiro lugar, que triângulo é um polígono composto por três lados, e o valor de cada lado deve ser menor que a soma dos valores dos outros dois. Assim, considerando como lados as variáveis A, B e C, é um triângulo quando A<B+C e quando B<A+C e quando C<A+B. Em segundo lugar, um triângulo é: eqüilátero quando possui todos os lados iguais; isósceles quando possui dois lados iguais e um diferente, sendo A=B ou A=C ou B=C; escaleno quando possui todos os lados diferentes. Algoritmo Detecta_Triângulo declare A, B, C real escreva Entre com valores de A, B, C leia A, B, C se (A<B+C) e (B<A+C) e (C<A+B) então se (A=B) e (B=C) escreva Eqüilátero senão se (A=B) ou (A=C) ou (B=C) então escreva Isósceles senão escreva Escaleno senão ão é triângulo Observação: Este exemplo faz uso dos operadores lógicos e, ou para formar expressões lógicas usadas nos testes condicionais. 41
Exemplo 3.5. Procedência de produto. Construa um algoritmo que tendo como dados de entrada o preço de um produto e seu código, mostre como saída sua procedência e seu preço somado a uma taxa constante (ver tabela abaixo). Caso o código não seja nenhum dos especificados, o produto deve ser declarado como importado e sua taxa é 2000,00. Código do produto: Procedência: Taxa: 1 Região ul 1000,00 2 Região udeste 750,00 3 Região Centro-Oeste 700,00 4 Região orte 500,00 5 Região ordeste 350,00 Algoritmo Procedência_Produto declare Codigo inteiro //código do produto declare P real //preço do produto escreva Entre com o preço: leia P escreva Entre com o código: leia Código escreva Produto escolha(codigo) caso 1: P P + 1000 escreva do ul, P caso 2: P P + 750 escreva do udeste, P caso 3: P P + 700 escreva Centro-Oeste, P caso 4: P P + 500 escreva orte, P caso 5: P P + 350 escreva ordeste, P senão: P P + 2000 escreva importado, P fim escolha 42
Código em Java do Exemplo 3.5: package cap03; import java.io.bufferedreader; import java.io.inputtreamreader; public class Ex3_5 { public static void main(tring args[]) { BufferedReader teclado = new BufferedReader(new InputtreamReader(ystem.in)); int codigo = 0; //código do produto double P = 0.0; //preço do produto try { ystem.out.print("entre com o preço: "); P = Double.parseDouble(teclado.readLine()); ystem.out.print("entre com o código: "); codigo = Integer.parseInt(teclado.readLine()); catch (Exception e) { ystem.out.println("informe os valores corretamente!!!"); ystem.exit(0); ystem.out.print("produto"); switch (codigo) { case 1: P = P + 1000; ystem.out.println(" do ul " + P); break; case 2: P = P + 750; ystem.out.println(" do udeste " + P); break; case 3: P = P + 700; ystem.out.println(" do Centro-oeste " + P); break; case 4: P = P + 500; ystem.out.println(" do orte " + P); break; case 5: P = P + 350; ystem.out.println(" do ordeste " + P); break; default: P = P + 2000; ystem.out.println(" do Importado " + P); break; Observações: a) ote as semelhanças entre o algoritmo e o código fonte em Java. Em Java é necessário acrescentar a instrução break finalizando cada case. b) a linguagem Java, quando um bloco de comandos é inserido após uma instrução, isto deve ser feito entre chaves, isto é, { bloco de comandos. ote este uso para delimitar o bloco de código da instrução switch, bem como para delimitar o programa principal (função main). 43
3.5 Estruturas de repetição Em todos os algoritmos anteriores, incluindo os exemplos da seção 3.4 do reajuste salarial, do teste de triângulo e da procedência de produto, observa-se uma limitação: o que fazer se alguém quiser calcular reajustes para vários salários? Testar vários triângulos? Verificar a procedência de produtos várias vezes? Considerando apenas as instruções vistas até aqui, uma solução seria repetir (copiar) os trechos de algoritmo várias vezes, isto é, entrar dados, realizar processamentos e mostrar resultados diversas vezes, em seqüências de trechos, um após o outro. Mas, imagine que se queira fazer isso 10, 20,... 100 ou mais vezes, o que é normal em processamento de dados. otase portanto, que essa solução seria inviável na prática. Os algoritmos ficariam muito grandes!... Outra maneira de resolver isso é utilizar a mesma seqüência de comandos novamente, ou seja, dispor de um mecanismo de retrocesso ao início dos comandos, fazendo com que o fluxo de execução repita esse trecho do algoritmo um certo número de vezes. Esse é o papel da estrutura de repetição, que faz o processamento de um trecho tantas vezes quantas necessárias. A esses trechos de algoritmo que são repetidos dá-se o nome de laços de repetição (loopings). O número de repetições pode ser determinado ou indeterminado, porém necessariamente finito. 3.5.1 Estrutura de repetição EQUATO É uma estrutura que faz um teste lógico no início do laço, verificando se é permitido executar o trecho de instruções dentro desse laço. Tem seu funcionamento controlado por decisão, sendo que: executa um conjunto de instruções enquanto a condição verificada for verdadeira; se a condição se torna falsa o processamento é desviado para fora do laço (sai do laço); se a condição for falsa logo de início, as instruções contidas no laço são ignoradas (nem entra no laço). o diagrama de blocos: não confundir esta nova estrutura com a estrutura de decisão usada anteriormente. Agora existe um retorno à condição após a execução do conjunto de instruções, enquanto a condição for verdadeira. Condição Instruções executadas equanto a condição for verdadeira A sintaxe em português estruturado utiliza as instruções enquanto, faça, fim enquanto. Observe a seguir que uma variável de controle precisa ser lida ou iniciada em algum momento antes da instrução enquanto, justamente para ser testada na condição. Dentro do laço esta variável também precisa ser atualizada de alguma forma. 44
intaxe: Iniciar variável de controle enquanto (condição verdadeira) faça fim enquanto seqüência de comandos atualizar a variável de controle Iniciar variável de controle Exemplo: M 1 enquanto (M<=10) faça X M 2 escreva X M M + 1 //variável M é incrementada //de 1 em 1 fim enquanto M 1 Condição M <= 10 eqüência de comandos X M 2 X Atualizar variável de controle M M+1 Exemplo 3.6. Mostra uma tabela com valores de 1 a 10 e seu quadrado. este exemplo, os comandos dentro do laço se repetirão enquanto a variável de controle M for menor ou igual a 10. A atualização desta variável (neste caso o incremento de 1 em 1) é feita dentro do laço de repetição. O diagrama de blocos fica como exercício. Algortimo Tabela_Quad declare M inteiro declare X real M 1 enquanto (M <= 10) faça X M 2 escreva M, ao quadrado é igual a:, X M M + 1 //Incrementa M de 1 em 1 fim enquanto 45
Exemplo 3.7. Calcula média de dois valores enquanto for desejado. Diferente do exemplo anterior, em que a variável M é automaticamente incrementada dentro do laço, no caso a seguir a estrutura de repetição está condicionada à resposta do usuário, que controlará, através da opção (s) = sim ou (n) = não, quantas vezes o laço será repetido para calcular uma média de dois valores. O diagrama de blocos fica como exercício. Algoritmo Média //com laço condicional declare V1, V2, Media real declare Opção literal Opção s enquanto (Opção = s ) faça escreva Digite dois valores: leia V1, V2 Média (V1+V2)/2 escreva A média é:, Média escreva Continua (s) ou (n)? leia Opção fim enquanto Enfim, de uma forma mais geral, a condição pode ser composta por uma expressão lógica, envolvendo mais de uma variável, bem como os operadores lógicos não, e, ou. Por exemplo: enquanto (A<B) e (X<10) faça //seqüência de comandos // atualizar variáveis de controle fim enquanto 3.5.2 Estrutura de repetição REPITA Esta estrutura é utilizada para realizar a repetição com teste da condição no final. Permite que um bloco de comandos seja repetido até que uma determinada condição seja verdadeira. A estrutura repita... até é parecida com a estrutura enquanto. eu funcionamento também é controlado por decisão, porém a estrutura repita... até executa um conjunto de instruções pelo menos uma vez antes de verificar a validade da condição estabelecida. Essa é a principal característica desse modo de repetição. Portanto, repita... até tem seu funcionamento em sentido contrário à enquanto, pois sempre processa um conjunto de instruções no mínimo uma vez até que a condição seja verdadeira e, se a condição for falsa, o laço continua, quando for verdadeira, o laço será encerrado. 46
intaxe: Iniciar variável de controle repita seqüência de comandos atualizar a variável de controle até (condição ser verdadeira) Iniciar variável de controle eqüência de comandos Exemplo: Cont 1 repita leia X R 2 X escreva R Cont Cont + 1 leia Op até (Cont >=10 ou Op = n ) Cont 1 X R 2 x Atualizar variável de controle R Cont Cont+1 Condição Op Cont>=10 ou Op = n Exemplo 3.8. Implementação do diagrama de blocos acima (dois elevado a X). Algoritmo Dois_Elevado_a_X declare Cont inteiro //variável contadora declare R, X real declare Op literal //variável p/ opção repita leia X R 2 x escreva R Cont Cont + 1 escreva Continua (s) ou (n)? leia Op até (Cont >= 10 ou Op = n ) Observação: Este exemplo ilustra uma condição com proposição lógica, onde o laço deve repetir até Cont ser igual ou maior que 10, ou, até a variável Op ser igual a n. 47
3.5.3 Estrutura de repetição PARA-FAÇA Os laços que possuem um número definido de execuções poderão ser processados através da estrutura de laços para... faça. Esta estrutura precisa de uma variável para controlar a contagem de repetições do laço, comumente chamada de contador. Usando para... faça há uma economia de instruções pois a própria estrutura se encarrega de iniciar, incrementar e encerrar o contador. Enfim, esta estrutura é indicada quando se sabe o número de vezes que o conjunto de instruções será repetido. o diagrama de blocos será o utilizado o símbolo denominado processamento predefinido ou preparação, representado pela figura de um hexágono. ão indicados no símbolo separados por vírgula: a variável contadora; atribuições de início; atribuição de fim; o incremento. intaxe: para var. contadora de início até fim passo incremento faça seqüência de comandos fim para Exemplo: para i de 0 até 1000 passo 2 faça y i //Raízes dos pares de 0 a 1000 escreva i, y fim para Var Início, fim, incremento eqüência de comandos i 0, 1000, 2 y i i, y Exemplo 3.9. Implementação do diagrama de blocos anterior (raiz de i com passo 2). Algoritmo Tab_RaizQuadrada declare i inteiro declare y real para i de 0 até 1000 passo 2 faça y i escreva i, y fim para Observações: a) ote como são inseridos o valor inicial, final e incremento para formar o laço de repetição para. b) É possível fazer contagens regressivas com o comando para, por exemplo, de 200 à 0 com passo 1 é feito assim: para i de 200 até 0 passo 1 faça. 48
3.6 Exemplos com estruturas de repetição Conforme o problema a ser resolvido, as estruturas de repetição enquanto, repita e para podem ser usadas como mostrado anteriormente, de forma encadeada (uma dentro da outra) e também combinadas com as estruturas condicionais se, escolha/caso. Exemplo 3.10. Gera tabuada: fazer um algoritmo que mostre na tela a tabuada dos números de 1 a 10, isto é: 1*1, 1*2,...,1*10; 2*1, 2*2,..., 2*10;... até 10*1, 10*2,... 10*10. Mostrar a tabuada de cada número por vez e perguntar ao usuário se ele deseja parar ou não. Início i 1, 10, 1 Algoritmo Gera_Tabuada declare i, j inteiro declare Opção literal F j 1, 10, 1 i * j Opção Opção = s V i para i de 1 até 10 passo 1 faça escreva Tabuada de Multiplicação de, para j de 1 até 10 passo 1 faça escreva i, *, j, =, i*j fim para escreva Parar <s> / <n>?" leia Opção se (Opção = s ) então interrompa fim para Fim Exemplo de execução: Observações: a) o diagrama de blocos, mais uma vez visando a funcionalidade, omitiu-se algumas mensagens de tela. b) A instrução interrompa interrompe imediatamente o laço em que ela está inserida e o fluxo do programa segue para o próximo comando após esse laço. o exemplo, interromperá o laço para externo que controla a variável i. Equivale à instrução break na linguagem Java, que pode ser usada em seus três tipos de laços (while, do while e for). 49
Exemplo 3.11. omatório de x ao quadrado: realizar o cálculo do somatório abaixo diversas vezes (enquanto o usuário quiser continuar). A quantidade de parcelas,, deve ser lida pelo teclado. oma = Por exemplo, se o usuário entra com = 5 o resultado deve ser 55, pois: 5 = 2 oma x = 1 2 + 2 2 + 3 2 + 4 2 + 5 2 = 1 + 4 + 9 + 16 + 25 = 55. x= 1 x= 1 x 2 Início Op s Opção = s V oma 0 F Algoritmo omatório declare x, inteiro declare oma real declare Op literal Op s enquanto (Op = s ) faça escreva Digite quantidade termos : leia x 1,, 1 oma oma+x 2 oma Op oma 0 para x de 1 até passo 1 faça oma oma + x 2 fim para escreva Resultado:, oma escreva Continua (s) ou (n)? leia Op fim enquanto Fim Observações: a) Veja que neste algoritmo foram utilizadas as estruturas enquanto e para encadeadas. b) Por quê é necessário zerar a variável oma toda vez antes de entrar no laço para? 50
Código em Java do Exemplo 3.11: package cap03; import java.io.bufferedreader; import java.io.inputtreamreader; public class Ex3_11 { public static void main(tring args[]) { BufferedReader teclado = new BufferedReader(new InputtreamReader(ystem.in)); int x = 0, = 0; double soma = 0.0; char op = 's'; while (op == 's') { try { ystem.out.print("digite a quantidade de termos : "); ; = Integer.parseInt(teclado.readLine()); catch (Exception e) { ystem.out.println("informe o valor de corretamente!!!"); ystem.exit(0); soma = 0; for (x = 1;x <= ;x++) { soma = soma + Math.pow(x,2); ystem.out.println("resultado: " + soma); try { ystem.out.print("continua (s) ou (n)?"); op = teclado.readline().charat(0); catch (Exception e) { ystem.out.println("informe o valor de op corretamente!!!"); ystem.exit(0); 51
Problemas Elabore um diagrama de blocos e pseudocódigo para resolver os problemas abaixo: 01) Ler dois valores numéricos, fazer o produto deles, e se o resultado for menor ou igual a 100 mostrá-lo na tela. 02) Ler dois valores numéricos para poder efetuar a divisão entre eles. e detectado que o resultado a ser obtido será válido mostrá-lo na tela, senão (se for uma divisão por zero), mostrar na tela a mensagem resultado inválido: divisão por zero. 03) Ler o nome e ano de nascimento de uma pessoa e calcular sua idade (em anos). Mostrar como informações: sua idade; seu nome; e uma mensagem: se já pode votar (16 anos ou mais); e se pode conseguir a carteira de habilitação (18 anos ou mais); e se pode obter gratuidade no transporte coletivo publico urbano e semiurbano (65 anos ou mais); ou uma mensagem se ela não pode nenhuma das três opções. 04) Ler uma variável literal que armazenará o código de um produto. e o código for igual a X2003 mostrar na tela o valor do produto como sendo igual a R$100,00. e o código for Z2006 mostrar o valor R$550,00. e o código for K2008 mostrar o valor R$2000,00 e se for B2009 mostrar o valor R$5000,00. e o código informado não existir emitir a mensagem Código Inválido. a) Fazer esse exercício usando a estrutura condicional seleção de múltipla escolha. b) Refazer usando a estrutura condicional escolha/caso. 05) Ler os coeficientes a, b, c da equação do segundo grau ax 2 + bx + c = 0. O algoritmo deve então classificar as raízes em: reais iguais e mostrar na tela seu valor; reais distintas e mostrar na tela seus valores; imaginárias e mostrar na tela seus valores. 06) Ler uma variável x, calcular y = 1/x e mostrar o resultado, tantas vezes quanto o usuário quiser, parando o processamento somente quando desejado. 07) Ler uma variável x, calcular y = 1/x e mostrar y tantas vezes quanto o usuário quiser, parando o processamento somente quando desejado ou se o usuário entrar com o valor de x igual a zero. esse último caso, terminar o algoritmo com a mensagem resultado inválido: divisão por zero. 08) Entrar com um número n e calcular o seu fatorial n! Lembre-se que: 0! = 0 1! = 1 2! = 2*1 = 2 3! = 3*2*1 = 6, etc. e de que fatorial de número negativo não é válido (prever isso em seu algoritmo). 09) Entrar com um número n e calcular o seu fatorial, e fazer novos cálculos enquanto o usuário desejar. Lembre-se que não é válido fatorial de número negativo (prever no algoritmo). 10) este problema você deve fazer um diagrama de blocos e pseudocódigo para entrar com as notas semestrais de uma quantidade variável de alunos. Em seguida, segundo os critérios da UIP (consulte o Manual de Informações Acadêmicas e Calendário Escolar de 2009), determinar se cada aluno foi aprovado ou não. Leve em consideração as possibilidades de aprovação direta (sem exame) ou média com a nota de exame. Obs.: para a Média emestral, M, use a seguinte equação: M = 0,4*P 1 + 0,4*P 2 + 0,2*PII. 52
Bibliografia consultada FARRER, H., e outros, Algoritmos Estruturados Programação Estruturada de Computadores, LTC, 3 a edição, Rio de Janeiro, 1999. MAZAO, J. A.. G., OLIVEIRA, J. F., Algoritmos Lógica para Desenvolvimento de Programação de Computadores, Editora Érica, 19 a edição, ão Paulo-P, 2006. CARBOI, I. F., Lógica de Programação, Thomson, ão Paulo-P, 2003. FORBELLOE, A. L. V., EBERPACHER, H. F., Lógica de Programação A Construção de Algoritmos e Estruturas de Dados, Makron Books, 2 a edição, ão Paulo-P, 2000. 53