Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 3 DECISÕES, CONDIÇÕES E OPERADORES RELACIONAIS Os computadores possuem uma característica no mínimo interessante que é a capacidade de tomar decisões por meio de processamento lógico. A tomada de decisão executada por um computador estabelece uma ação de desvio na operação do fluxo do programa. Um determinado trecho do programa pode realizar uma ou outra tarefa de processamento. Isto posto, é necessário entender separadamente condição e decisão. Condição pode ser entendida como uma obrigação que se impõe e se aceita, enquanto decisão é o ato ou efeito de decidir, ou seja, de optar, de tomar uma decisão. Nota-se então que o ato de tomar uma decisão está calcado no fato de haver uma condição. A condição a ser definida para um computador é uma expressão lógica cujo resultado é um valor falso ou verdadeiro. Para ter uma expressão lógica como condição, usa-se uma relação lógica entre dois elementos e um operador relacional. Os elementos de uma expressão lógica (condição) são representados por relações binárias entre variáveis e constantes. Assim sendo, são possíveis as relações de variáveis versus variáveis e de variáveis versus constantes. O estabelecimento de uma condição, ou seja, de uma relação lógica entre dois elementos é feito com operadores relacionais, que se encontram na tabela seguinte: 2 A partir do uso de operadores relacionais, são condições válidas numa relação lógica de tomada de decisão do tipo variável versus variável as relações, por exemplo, entre as variáveis A e B : A = B, A > B, A < B, A >= B, A <= B e A != B. A partir do uso de operadores relacionais, são condições válidas numa relação lógica de tomada de decisão do tipo variável versus constante (ou constante versus variável) as relações, por exemplo, entre a variável A e a constante de valor numérico inteiro 5: A = 5, A > 5, A < 5, A >= 5, A<=5 e A != 5. Os operadores relacionais possuem o mesmo nível de precedência, portanto não há necessidade de se preocupar em alterá-lo. 3.1 DESVIO CONDICIONAL O processo de tomada de decisão a partir de uma condição pode ser realizado de duas formas distintas, sendo desvio condicional simples e desvio condicional composto. 3.1.1 Desvio Condicional Simples Um desvio condicional será simples, quando houver uma condição que desvia a execução do programa caso o resultado lógico avaliado seja verdadeiro. Se o resultado lógico avaliado for falso, nada acontece, e o programa simplesmente segue o seu fluxo de execução. Um desvio condicional simples é definido na linguagem C# por meio da instrução if, que possui a seguinte sintaxe: if (condição) 1 instrução executada quando a condição for verdadeira; 2 instrução executada após condição ser verdadeira e/ou falsa; 3 Em algumas construções com grandes quantidades de linhas de código, a legibilidade do código apresentado não é muito intuitiva e, se faz necessário, melhorá-la para fácil compreensão e leitura. A seguir, será apresentado o código com a inserção de melhores práticas: 3 if (condição) { 1 instrução executada quando a condição for verdadeira; 2 } 3 instrução executada após condição ser verdadeira e/ou falsa; 4 Se o resultado lógico da condição for verdadeiro, será executada a instrução que estiver posicionada imediatamente abaixo da instrução if. Se o resultado lógico da condição for falso, será executada a instrução que estiver posicionada após o trecho de código considerado verdadeiro. Caso venha a existir mais de uma instrução a ser executada com a condição verdadeira para uma determinada condição, elas devem estar inseridas em um bloco delimitado pelos símbolos { e }. Note que é considerado um bloco o conjunto de instruções entre um { e um } conforme o exemplo seguinte: if (condição) { 1 <instrução 1 executada quando condição for verdadeira>; 2 <instrução 2 executada quando condição for verdadeira>; 3 <instrução 3 executada quando condição for verdadeira>; 4 <instrução N executada quando condição for verdadeira>; 5 } 6 <instrução executada após condição ser verdadeira e/ou falsa>; 7 A instrução if também pode ser escrita de uma forma visual um pouco diferente da apresentada anteriormente. Aliás essas são as duas formas mais comuns de encontrar programas codificados na linguagem C#. Observe a seguir a segunda forma também utilizada: if (condição) { 1 <instrução 1 executada quando condição for verdadeira>; 2 <instrução 2 executada quando condição for verdadeira>; 3 <instrução 3 executada quando condição for verdadeira>; 4 <instrução N executada quando condição for verdadeira>; 5 } 6 <instrução executada após condição ser verdadeira e/ou falsa>; 7 Para exemplificar a utilização de decisão simples dentro de um programa, considere a necessidade de desenvolver um programa que leia dois valores numéricos inteiros, efetue a adição dos valores e apresente o seu resultado, caso o valor somado seja maior que dez. 4 Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula02_Ex01 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex01 { 6 7 class Program { 8 static void Main(string[] args' { 9 10 int A, B, R; 11 Console.Write("Entre o valor <A>: "); 12 A = int.Parse(Console.ReadLine()); 13 Console.Write("Entre o valor <B>: "); 14 B = int.Parse(Console.ReadLine()); 15 R = A + B; 16 17 Console.WriteLine(); 18 if (R > 10) { 19 Console.WriteLine("Resultado = {0}", R); 20 } 21 Console.WriteLine(); 22 Console.Write("Tecle <Enter> para encerrar... "); 23 Console.ReadLine(); 24 } 25 } 26 } 27 Execute duas ações. Na primeira entre valores que somados gerem um resultado maior que 10, e na segunda valores que somados sejam no máximo iguais a 10. Perceba que, após indicar as variáveis como do tipo int, é solicitada a leitura dos dois valores que são implicados pelas variáveis A e B. Depois é efetuado o processamento da adição das variáveis A e B, o qual é implicado pela variável R. Nesse ponto, por meio de uma condição estabelecida para a instrução if, o programa verifica se a condição é verdadeira (ou seja, se o valor da variável R é maior que 10); se for, o programa executa a linha que apresenta o resultado da operação, caso a condição seja falsa o programa não apresenta nenhum resultado e é encerrado. Além da instrução de tomada de decisão o programa usa outro modo de formatação de saída na linguagem C# caracterizado pelo uso da instrução 5 Console.WriteLine("Resultado = {0}", R). O conteúdo da variável R está sendo apresentado junto com a mensagem "Resultado = {0}" por meio do código de formatação {0} que insere o valor da variável R no string. O valor de formatação {0} se refere à quantidade de valores a ser apresentada num string. Por exemplo, para escrever os valores de três variáveis, a saída deve ser Console. WriteLine("Resultado = {0}, {1}, {2}", A, B, C);. Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex01 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 3.1.2 Desvio CondicionalComposto Anteriormente, foi visto como usar a instrução if do tipo simples para avaliar uma determinada condição (desvio condicional simples). Agora será estudado como usar a instrução if... else. Numa instrução If ... else se a condição for verdadeira, será executada a instrução que estiver posicionada entre as instruções if e else. Sendo a condição falsa, será executada a instrução que estiver posicionada logo após a instrução else, como é indicado na seguinte sintaxe: if <(<condição>)> { 1 <instrução executada quando condição for verdadeira>; 2 } else { 3 <instrução executada quando condição for falsa>; 4 } 5 <instrução executada após condição ser verdadeira ou falsa>; 6 Caso seja necessário considerar mais de uma instrução para as condições verdadeira ou falsa, utilizar-se-á delimitação de blocos com os símbolos { e }, como indicado em seguida: if <(condição)> { 1 <instrução 1 executada quando condição for verdadeira>; 2 <instrução 2 executada quando condição for verdadeira>; 3 <instrução N executada quando condição for verdadeira>; 4 } else { 5 <instrução 1 executada quando condição for falsa>; 6 <instrução 2 executada quando condição for falsa>; 7 6 <instrução N executada quando condição for falsa>; 8 } 9 cinstrução executada após condição ser verdadeira ou falsa>; 10 A instrução if ... else também pode ser escrita de uma forma um pouco diferente da apresentada anteriormente. Aliás, estas são as duas formas mais comuns de encontrar programas codificados na linguagem C#. Observe a seguir a segunda forma também utilizada: if <(condição)> { 1 <instrução 1 executada quando condição for verdadeira>; 2 <instrução 2 executada quando condição for verdadeira>; 3 <instrução N executada quando condição for verdadeira>; 4 } else { 5 <instrução 1 executada quando condição for falsa>; 6 <instrução 2 executada quando condição for falsa>; 7 <instrução N executada quando condição for falsa>; 8 } 9 <instrução executada após condição ser verdadeira ou falsa>; 10 Como exemplo, considere um programa que faça a leitura de dois valores numéricos do tipo inteiro e efetue a adição desses valores. Caso o resultado obtido seja maior que 10, o programa apresenta a mensagem "Resultado ultrapassa dez.". Caso o resultado do valor somado não seja maior que 10, o programa deve apresentar a mensagem "Resultado não ultrapassa dez.". Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex02 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex02 { 6 7 class Program { 8 static void Main(string[] args) { 9 int A, B, R; 10 Console.Write("Entre o valor <A>: "); 11 A = int.Parse(Console.ReadLine()); 12 Console.Write("Entre o valor <B>: "); 13 B = int.Parse(Console.ReadLine()); 14 15 R = A + B; 16 Console.WriteLine(); 17 7 18 if (R > 10) { 19 Console.WriteLine("Resultado ultrapassa dez."); 20 } else { 21 Console.WriteLine("Resultado nao ultrapassa dez."); 22 } 23 24 Console.WriteLine(); 25 Console.Write("Tecle <Enter> para encerrar... "); 26 Console.ReadLine(); 27 } 28 } 29 } 30 Ao fazer um teste de execução do programa, se forem fornecidos os valores 5 e 5, o resultado apresentado será a mensagem "Resultado não ultrapassa dez.". Caso sejam fornecidos os valores 5 e 7, o resultado apresentado será a mensagem "Resultado ultrapassa dez.". Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula02_Ex02 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 3.2 OPERADORES LÓGICOS Existem ocasiões em que é necessário trabalhar com o relacionamento de mais de uma condição para se tomar uma decisão. Para esses casos é necessário fazer utilizar os chamados operadores lógicos. Os operadores lógicos usados na linguagem C# são: && ou & (operadores de conjunção); | | ou | (operadores de disjunção); ^ (operador de disjunção exclusiva); ! (não - operador de negação). Assim como os operadores aritméticos, os operadores lógicos também possuem prioridade para execução, sendo executados do maior para o menor os operadores de negação (!), operador de conjunção simples (&), operador de 8 disjunção exclusiva operador de disjunção simples (|), operador de conjunção duplo (&&) e o operador de disjunção duplo (| |). Os exemplos apresentados a seguir consideram o uso de duas condições para se estabelecer e tomar uma decisão, no entanto essa relação lógica pode ser construída com mais de duas condições, ou seja, com quantas condições forem necessárias. 3.2.1 Operador Lógico de Conjunção O operador lógico de conjunção (&&) é utilizado quando dois relacionamentos lógicos de uma determinada condição necessitam ser verdadeiros para obter-se um resultado lógico verdadeiro; caso contrário, o resultado do valor lógico retornado será falso. Se a primeira condição possui valor lógico falso, a segunda condição não é avaliada. Em seguida, é apresentada a tabela verdade para esse tipo de operador: O programa seguinte mostra, com a utilização do operador de conjunção &&, que somente será apresentada a mensagem O valor está entre 20 e 90, caso o valor fornecido para a variável NUMERO esteja entre 20 e 90. Qualquer valor fornecido fora da faixa definida apresenta a mensagem O valor não está entre 20 e 90. Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex03 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex03 { 6 7 class Program { 8 static void Main(string[] args) { 9 9 10 int NUMERO; 11 Console.Write("Entre um valor: "); 12 NUMERO = int.Parse(Console.ReadLine()); 13 14 Console.WriteLine(); 15 16 if (NUMERO >= 20 && NUMERO <= 90) { 17 Console.WriteLine("0 valor esta entre 20 e 90"); 18 } else { 19 Console.WriteLine("0 valor nao esta entre 20 e 90"); 20 } 21 22 Console.WriteLine(); 23 Console.Write("Tecle <Enter> para encerrar... "); 24 Console.ReadLine(); 25 } 26 } 27 } 28 O operador lógico de conjunção (8c) é utilizado de forma semelhante ao operador lógico &&. A diferença está no fato de o operador lógico 8c realizar a verificação lógica de todas as condições envolvidas na decisão. Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex03 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 3.2.2 Operador Lógico de Disjunção Inclusiva O operador lógico de disjunção ( | | ) é utilizado quando pelo menos um dos relacionamentos lógicosde uma condição necessita ser verdadeiro para obter--se um resultado lógico verdadeiro; caso contrário, o valor do resultado lógico retornado será falso. Se a primeira condição possuir valor lógico verdadeiro, a segunda condição não será avaliada. Em seguida é apresentada a tabela verdade para esse tipo de operador: 10 O programa seguinte lê um valor numérico inteiro referente aos códigos 1, 2 ou 3. Qualquer outro valor deve apresentar a mensagem Código inválido. Se o valor estiver correto, apresentar o valor do código escrito por extenso. Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex04 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex04 { 6 7 class Program { 8 9 static void Main(string[] args) { 10 11 int codigo; 12 Console.Write("Entre o codigo de acesso: "); 13 codigo = int.Parse(Console.ReadLine()); 14 Console.WriteLine(); 15 16 if (codigo == 1 I I codigo == 2 | | codigo == 3) { 17 if (codigo ==1) { 18 Console.WriteLine("um"); 19 } 20 if (codigo == 2) { 21 Console.WriteLine("dois"); 22 } 23 if (codigo == 3) { 24 Console.WriteLine("tres"); 25 } 26 } else { 27 Console.WriteLine("codigo invalido"); 28 } 29 30 Console.WriteLine(); 31 Console.Write("Tecle <Enter> para encerrar... "); 32 Console.ReadLine(); 33 } 34 } 35 } 36 Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex04 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 11 3.2.3 Operador Lógico de Disjunção Exclusiva O operador lógico de disjunção exclusiva (^) é utilizado quando se necessita que uma das condições seja falsa para obter-se um resultado lógico verdadeiro; caso contrário, se o valor lógico das condições for falso ou verdadeiro, o valor do resultado lógico retornado será falso. Em seguida, é apresentada a tabela verdade para o operador ^. O programa a seguir realiza a entrada do nome e respectivo sexo de duas pessoas que pretendem formar um par para participar de uma quadrilha em uma festa junina. Os administradores da festa determinaram que somente serão aceitos pares heterogêneos (formados por pessoas de sexos diferentes). Não serão aceitos casais formados por pessoas do mesmo sexo. Para atender esse requisito, o programa deve, após a entrada do sexo das duas pessoas, verificar se elas formam ou não um par, e no caso deve apresentar mensagem informando esta possibilidade; caso contrário, o programa deve indicar a impossibilidade de formação do par. Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex05 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 12 namespace Aula2_Ex05 { 6 class Program { 7 static void Main(string[] args) { 8 9 string nome1, nome2, sexo1, sexo2; 10 Console.Write("Entre com o primeiro nome ..........: ") ; 11 nome1 = Console.ReadLine(); 12 Console.Write("Entre com o sexo do primeiro nome ..: "); 13 sexo1 = Console.ReadLine(); 14 Console.Write ("Entre o segundo nome ..........: ") ; 15 nome2 = Console.ReadLine(); 16 Console.Write("Entre o sexo do segundo nome ..: "); 17 sexo2 = Console.ReadLine(); 18 19 Console.WriteLine(); 20 21 if (sexol == "M" ^ sex02 == "M") { 22 Console.WriteLine(nome1 + " dança com " + nome2); 23 } else { 24 Console.WriteLine("nome1 + " não dança com " + nome2); 25 } 26 Console.WriteLine(); 27 Console.Write("Tecle <Enter> para encerrar... "); 28 Console.ReadLine(); 29 } 30 } 31 } 32 Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex05 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 3.2.4 Operador Lógico de Negação O operador lógico de negação (!) é utilizado quando é necessário estabelecer que uma determinada condição deve ser não verdadeira ou deve ser não falsa. O operador ! inverte o estado lógico de uma condição. Em seguida é apresentada a tabela verdade para esse tipo de operador: 13 O operador ! executa uma determinada operação, invertendo o resultado lógico da condição. O exemplo seguinte apresenta, com a utilização do operador !, que somente será efetuado o cálculo de X = (A + B) * C, se o valor da variável X não for maior que 5. Qualquer valor de 5 para baixo efetua o cálculo X = (A - B) * C. Se forem informados os valores 5, 1 e 2, respectivamente, para as variáveis A, B e C, resulta para a variável X o valor 12, pois o valor 2 da variável X é controlado pela instrução if (!(C > 5)) como sendo verdadeiro, uma vez que não é maior que 5. Sendo assim, os valores 5 e 1 são somados resultando 6 e multiplicados por 2 resultando 12. Mas se forem informados os valores 5, 1, e 6, respectivamente, para as variáveis A, B e C, resulta para a variável X o valor 24 como sendo falso. Sendo assim, os valores 5 e 1 são subtraídos resultando 4 e multiplicados por 6 resultando 24. Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex06 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex06 { 6 7 class Program { 8 9 static void Main(string[] args) { 10 11 float a, b, c, x; 12 13 Console.Write("Entre o valor <a>: "); 14 A = float.Parse(Console.ReadLine()); 15 Console.Write("Entre o valor <b>: "); 16 B = float.Parse(Console.ReadLine()); 17 Console.Write("Entre o valor <c>: "); 18 C = float.Parse(Console.ReadLine()); 19 Console.WriteLine(); 20 21 if (! (C > 5)) { 22 x = (a + b) * c; 23 } else { 24 x = (a - b) * c; 25 } 26 Console.WriteLine("O resultado de X equivale a: " + x) ; 27 Console.WriteLine(); 28 Console.Write("Tecle <Enter> para encerrar... "); 29 Console.ReadLine(); 30 14 } 31 } 32 } 33 Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex06 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/CloseProject. 3.3 DESVIO CONDICIONAL ENCADEADO Para demonstrar a utilização dos operadores lógicos em um exemplo maior, considere a necessidade de desenvolver um programa que efetue a leitura de três valores para os lados de um triângulo, considerando lados como A, B e C. O programa deve verificar se os lados fornecidos formam realmente um triângulo, e se for a condição verdadeira, deve ser indicado o tipo de triângulo formado, sendo isósceles, escaleno ou equilátero. Para estabelecer esse algoritmo, é necessário, em primeiro lugar, saber o que é um triângulo. Caso não se saiba, consequentemente não será possível resolver o problema. Triângulo é uma forma geométrica (polígono) composta por três lados, e cada lado é menor que a soma dos outros dois lados. Perceba que é uma regra (uma condição) e deve ser considerada. É um triângulo quando A<B+C, quando B<A+C e quando C<A+B. Ao saber que os valores informados para os três lados formam um triângulo, são analisados os valores para estabelecer o tipo de triângulo formado, sendo isósceles, escaleno ou equilátero. Um triângulo é 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, sendo A <> B e B <> C equilátero quando possui todos os lados iguais, sendo A = B e B = C. Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex07 e acione o botão OK. using System; 1 15 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Aula2_Ex07 { 7 8 class Program { 9 10 static void Main(string[] args) { 11 12 float a, b, c; 13 14 Console.Write("Informe o lado a: "); 15 a = float.Parse(Console.ReadLine()); 16 Console.Write("Informe o lado B: "); 17 b = float.Parse(Console.ReadLine()); 18 Console.Write("Informe o lado C: "); 19 c = float.Parse(Console.ReadLine()); 20 21 Console.WriteLine(); 22 23 if (A < B + C && B < A + C && C < A + B) { 24 if (A = B && B == C) { 25 Console.WriteLine("Triangulo Equilátero"); 26 } else if (A = B || A == C || C = B) { 27 Console.WriteLine("Triangulo Isosceles"); 28 } else { 29 Console.WriteLine("Triangulo Escaleno"); 30 } 31 } else { 32 Console.WriteLine("Valores nao formam um triangulon"); 33 } 34 Console.WriteLine(); 35 Console.Write("Tecle <Enter> para encerrar...."); 36 Console.ReadLine(); 37 } 38 } 39 } 40 O exemplo anterior demonstra, com a utilização dos operadores lógicos, a capacidade de um programa definir se determinados valores fornecidos formam realmente um triângulo. Se a condição for verdadeira, esse programa indica o tipo de triângulo formado. Se forem fornecidos, respectivamente, os valores 8, 2 e 3 para os lados A, B e C, será apresentada a mensagem "Não é triângulo", pois a primeira condição da instrução if (A < B + C) and (B < A + C) and (C < A + B) then resulta o valor lógico falso, uma vez que 8 é maior que a soma de 2 com 3. Caso sejam fornecidos os valores 8, 8 e 2, a primeira instrução if será verdadeira, indicando que os lados fornecidos formam um triângulo. Apesar de o lado A ser igual ao lado B, mas este não ser igual ao lado C, o triângulo 16 formado não é equilátero. Desta forma a segunda instrução if tem seu resultado lógico como falso, sobrando a verificação da condição para a terceira instrução if que indica o triângulo como sendo isósceles, pois o lado A é igual ao lado B. Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex07 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 3.4 DESVIO CONDICIONAL SEQUENCIAL Para demonstrar o desvio condicional sequencial, será criado um programa calculadora simples, que faz a leitura de dois valores reais e apresenta o resultado da operação matemática escolhida. Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex08 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Ling; 3 using System.Text; 4 5 namespace Aula2_Ex08 { 6 7 class Program { 8 9 static void Main(string[] args) { 10 11 float R, A, B; int OPCAO; 12 13 Console.Write("Informe o lo. valor: "); 14 A = float.Parse(Console.ReadLine()); 15 Console.Write("Informe o 2o. valor: "); 16 B = float.Parse(Console.ReadLine()); 17 Console. WriteLine(); 18 19 Console.WriteLine("[1] .............. Adicao"); 20 Console.WriteLine("[2] ........... Subtracao"); 21 Console.WriteLine("[3] ....... Multiplicacao"); 22 Console.WriteLine("[4] ............. Divisão"); 23 Console.WriteLine(); 24 25 Console.Write("Escolha uma opcao —> "); 26 OPCAO = int.Parse(Console.ReadLine()); 27 28 if (OPCAO == 1) { 29 R = A + B; 30 17 Console.WriteLine("Resultado = " + R); 31 } 32 if (OPCAO == 2) { 33 R = A - B; 34 Console.WriteLine("Resultado = " + R); 35 } 36 if (OPCAO == 3) { 37 R = A * B; 38 Console.WriteLine("Resultado = " + R); 39 } 40 if (OPCAO == 4) { 41 if (B == 0) { 42 Console.WriteLine("ERRO - Divisão por zero!"); 43 } else { 44 R = A / B; 45 Console. WriteLine("Resultado = " + R) ; 46 } 47 } 48 Console.WriteLine(); 49 Console.Write("Tecle <Enter> para encerrar... "); 50 Console.ReadLine(); 51 } 52 } 53 } 54 O programa anterior apresenta uma sequência de instruções do tipo If, uma após outra, e cada uma delas verifica se o botão de opção está ativo. Isso feito, é verificado se seu valor é verdadeiro e sendo a operação é então efetuada. Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex08 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 3.5 DESVIO CONDICIONAL SELETIVO Note que, ao trabalhar com uma sequência grande de desvios condicionais encadeados ou mesmo sequenciais, pode-se deixar o programa difícil de ser interpretado. O programa anterior é um exemplo. Existe uma forma mais adequada e eficiente para atender a este tipo de situação, que é a estrutura de controle com múltipla escolha, denominada estrutura switch, que possui a sintaxe: switch <variável> { 1 case <opção 1>: <operação 1>; break; 2 18 case <opção 2>: <operação 2>; break; 3 case <opção N>: <operação N>; break; 4 default : <operação default>; break; 5 } 6em que: < variável > - nome da variável a ser controlada na decisão; <opção> - conteúdo da variável a ser verificado; < operação - execução de alguma ação específica. Para exemplificar o uso dessa estrutura, será criado primeiramente um programa simples que pedirá como entrada um valor numérico inteiro que esteja entre 1 e 12. Em seguida, o programa deve apresentar o nome do mês correspondente ao valor informado. Caso seja informado um valor de mês inexistente, o programa deve avisar o erro cometido ao usuário. O programa em questão fará o controle por meio de uma sequência de comandos if que estarão dispostos de forma encadeada. Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex09 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex09 { 6 7 class Program { 8 9 static void Main(string[] args) { 10 int MES; 11 Console.Write("Entre o mes (numérico): "); 12 MES = int.Parse(Console.ReadLine()); 13 Console.WriteLine(); 14 if (MES == 1) { 15 19 Console.WriteLine("Janeiro"); 16 } else if (MES == 2) { 17 Console.WriteLine("Fevereiro"); 18 } else if (MES == 3) { 19 Console.WriteLine("Marco"); 20 } else if (MES == 4) { 21 Console.WriteLine("Abril"); 22 } else if (MES == 5) { 23 Console.WriteLine("Maio"); 24 } else if (MES == 6) { 25 Console.WriteLine("Junho"); 26 } else if (MES == 7) { 27 Console.WriteLine("Julho"); 28 } else if (MES == 8) { 29 Console.WriteLine("Agosto"); 30 } else if (MES == 9) { 31 Console.WriteLine("Setembro"); 32 } else if (MES == 10) { 33 Console.WriteLine("Outubro"); 34 } else if (MES == 11) { 35 Console.WriteLine("Novembro"); 36 } else if (MES == 12) { 37 Console.WriteLine("Dezembro"); 38 } else { 39 Console.WriteLine("Mes invalido"); 40 } 41 Console.WriteLine(); 42 Console.Write("Tecle <Enter> para encerrar... "); 43 Console.ReadLine(); 44 } 45 } 46 } 47 Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex09 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. A partir do projeto do programa anterior será criada uma outra versão do programa utilizando o comando switch em vez de usar os comandos if. Observe que o uso de switch torna o programa menor e mais legível, mas tem como restrição o fato de poder ser usado apenas em situações onde se aplica o operador relacional "igual a". Execute o comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula_Ex10 e acione o botão OK. using System; 1 20 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex10 { 6 7 class Program { 8 9 static void Main(string[] args) { 10 11 int MES; 12 Console.Write("Entre o mes (numérico): "); 13 MES = int.Parse(Console.ReadLine()); 14 Console.WriteLine() ; 15 16 switch (MES) { 17 case 1: Console.WriteLine("Janeiro"); break; 18 case 2: Console.WriteLine("Fevereiro"); break; 19 case 3: Console.WriteLine("Marco") ; break; 20 case 4: Console.WriteLine("Abril"); break; 21 case 5: Console.WriteLine("Maio"); break; 22 case 6: Console.WriteLine("Junho"); break; 23 case 7: Console.WriteLine("Julho"); break; 24 case 8: Console.WriteLine("Agosto"); break; 25 case 9: Console.WriteLine("Setembro"); break; 26 case 10: Console.WriteLine("Outubro"); break; 27 case 11: Console.WriteLine("Novembro"); break; 28 case 12: Console.WriteLine("Dezembro"); break; 29 default : Console.WriteLine("Mes inválido"); break; 30 } 31 Console.WriteLine (); 32 Console.Write("Tecle <Enter> para encerrar... "); 33 Console.ReadLine(); 34 } 35 } 36 } 37 Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex10 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. A instrução switch aceita inclusive valores do tipo string. Assim sendo após cada comando case pode-se usar um valor colocado entre aspas inglesas. Nesta versão do programa, em vez de colocar valores numéricos entre os valores 1 e 12 far-se-á a entrada de strings (literais por extenso) como um, dois, três (sem acento), quatro e assim por diante até doze. Para tanto, considere o programa a seguir que deve ser criado após a execução do comando File/New Project, selecione na caixa de diálogo New 21 Project a opção Console Application, informe no campo Name o nome Aula2_Ex11 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex11 { 6 7 class Program { 8 9 static void Main(string[] args) { 10 11 string MES; 12 Console.Write("Entre o mes (numérico): "); 13 MES = Console.ReadLine(); 14 Console.WriteLine(); 15 16 switch (MES) { 17 case "um" : Console.WriteLine("Janeiro"); break; 18 case "dois" : Console.WriteLine("Fevereiro"); break; 19 case "tres" : Console.WriteLine("Marco"); break; 20 case "quatro" : Console.WriteLine("Abril"); break; 21 case "cinco" : Console.WriteLine("Maio"); break; 22 case "seis" : Console.WriteLine("Junho"); break; 23 case "sete" : Console.WriteLine("Julho"); break; 24 case "oito" : Console.WriteLine("Agosto"); break; 25 case "nove" : Console.WriteLine("Setembro"); break; 26 case "dez" : Console.WriteLine("Outubro"); break; 27 case "onze" : Console.WriteLine("Novembro"); break; 28 case "doze" : Console.WriteLine("Dezembro"); break; 29 default : Console.WriteLine("Mes invalido"); break; 30 } 31 Console.WriteLine(); 32 Console.Write("Tecle <Enter> para encerrar... "); 33 Console.ReadLine(); 34 } 35 } 36 } 37 É oportuno relembrar que o comando switch é útil apenas nos casos em que a tomada de decisão sequencial ou encadeada faz uso de condições que estejam baseadas no operador relacional "igual a". Outro detalhe importante é que o comando default na estrutura de tomada de decisão seletiva é opcional. Ele pode ser omitido quando não se desejar definir uma ação quandoas condições gerais não forem satisfeitas. Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que 22 o projeto Aula2_Ex11 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 3.6 ALEATORIEDADE Considerando o estudado até o momento, observe o desenvolvimento de um programa de jogo de adivinhação simples, em que o computador sorteia valores entre 1 e 5 e o usuário do programa tenta adivinhar o resultado. Para tanto, considere o programa a seguir que deve ser criado após a execução do comando File/New Project, selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex12 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex12 { 6 7 class Program { 8 9 static void Main(string[] args) { 10 11 int NR, PEDIDO; 12 Random RANDOMICO = new Random (); 13 NR = RANDOMICO.Next(1, 6); 14 Console.Write("Entre um numero entre 1 e 5: "); 15 PEDIDO = int.Parse(Console.ReadLine()); 16 Console.WriteLine(); 17 18 if (PEDIDO == NR) { 19 Console.WriteLine("Acertou - foi sorteado: {0}.", NR) ; 20 } else { 21 Console.WriteLine("Errou - foi sorteado: {0}.", NR); 22 } 23 Console.WriteLine(); 24 Console.Write("Tecle <Enter> para encerrar... "); 25 Console.ReadLine(); 26 } 27 } 28 } 29 A instrução Random RANDOMICO = new Random(); especifica um objeto chamado RANDOMICO do tipo Random, sendo instanciado a partir do construtor Random() que é uma função que gera valores aleatórios. Note que esta é a primeira declaração explícita que se faz a um objeto, o que ocorre de 23 forma muito semelhante a uma variável, pois uma variável pode representar ou definir um objeto (GOSLING, JOY, STEELE e BRACHA, 2005). A variável NR obtém um valor numérico sorteado entre a faixa do número 1 (inclusive) e números menores que 6, sendo neste caso o valor máximo sorteado 5. Como a variável NR é do tipo int, a geração de números aleatórios ocorre nessa faixa de valores. O uso da faixa de valores 1, 6 limita a geração dos números entre 1 e 5, como já mencionado. Se os valores da faixa forem omitidos, a geração de número aleatório fica na faixa de abrangência do dado numérico escolhido. Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex12 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 3.7 TRATAMENTO DE EXCEÇÕES O tratamento de exceções está diretamente associado à capacidade de fazer em um programa o tratamento de erros operacionais, que ocorrem não devido a falhas de lógica de programação, mas ao uso incorreto do programa pelos seus usuários ou algumas vezes por operações internas da linguagem que precisam ser devidamente controladas. A medida que os programas tornam-se mais complexos e maiores, aumenta a necessidade de se preocupar com o tratamento de possíveis erros que venham a ocorrer. O conceito de tratamento de erros por exceções usado .ela linguagem C# foi projetado para situações em que um método (uma função) que detecta um erro não consegue lidar com esse erro e então aciona uma exceção (DEITEL & DEITEL, 2001). A ação de tratamento de exceções informa ao programa a necessidade de vigiar possíveis erros operacionais, evitando que o programa seja interrompido inesperadamente. O erro de exceção pode também ocorrer devido a algum tipo de erro gerado pelo programa, que inicialmente foge do conhecimento do desenvolvedor. Para o desenvolvedor tudo está aparentemente certo, sua 24 lógica parece perfeita, mas o programa não aceita a implementação, e começa a retornar uma série de erros, que deixa a equipe de desenvolvimento de "cabelo em pé". Note que a exceção delimita um tipo de erro incomum, portanto não é qualquer erro. É fundamental ao desenvolvedor saber distinguir um erro de exceção de um erro comum, normalmente cometido por imperícia e falta de conhecimento da ferramenta em uso. O trabalho de tratamento de erros não é uma tarefa muito fácil, pois é difícil saber onde um determinado erro pode ocorrer. É necessário desenvolver com o tempo a sensibilidade necessária para perceber esses detalhes. Para o tratamento de exceções na linguagem C# usa-se o comando de tratamento com a cláusula try (testar) que pode fazer referência a um conjunto subsequente de cláusulas catch (capturar). O trecho do código de programa que necessita ser testado (para saber se é válido) é definido após a instrução try e antes da instrução catch, como se fosse uma ação válida. Se nenhum erro for constatado, o teste foi bem sucedido e o programa continua seu processamento normalmente após o final do bloco catch. No entanto, se algum erro ocorrer na operação, o bloco definido em catch é executado e assim pode ser tratado. De forma geral, o código de tratamento de exceções deve ser escrito de acordo com a seguinte estrutura sintática: try { 1 Definição do código de programa que poderá gerar exceções. 2 Por exemplo: ExceçãoTipol, ExceçãoTipo2 e ExceçãoTipoN. 3 } catch(ExceçãoTipo1 et1) { 4 Definição do código de tratamento da exceção: ExceçãoTipo1. 5 } catch(ExceçãoTipo2 et2) { 6 Definição do código de tratamento da exceção: ExceçãoTipo2. 7 } catch(ExceçãoTipoN etN) { 8 Definição do código de tratamento da exceção: ExceçãoTipoN. 9 } 10 Para demonstrar uma ocorrência de erro típico, considere um simples programa que tenha a finalidade de apresentar o resultado da divisão de dois valores do tipo int. Para tanto, considere o programa a seguir que deve ser criado após a execução do comando File/New Project. Selecione na caixa de diálogo New 25 Project a opção Console Application, informe no campo Name o nome Aula2_Ex13 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex13 { 6 7 class Program { 8 9 static void Main(string[] args) { 10 11 int dividendo, divisor, quociente; 12 13 Console.Write("Entre o valor do dividendo ..: "); 14 dividendo = int.Parse(Console.ReadLine()); 15 16 Console.Write("Entre o valor do divisor . . . . : ") ; 17 divisor = int.Parse(Console.ReadLine()); 18 quociente = dividendo / divisor; 19 Console.WriteLine(); 20 Console.WriteLine("Resultado = {0}", quociente); 21 Console.WriteLine(); 22 Console.Write("Tecle <Enter> para encerrar... "); 23 Console.ReadLine(); 24 } 25 } 26 } 27 Ao executar o programa, se forem fornecidos, respectivamente, para o dividendo e para o divisor os valores 5 e 2, obter-se-á um resultado 2 (considerando que o programa calcula o quociente inteiro de dois valores fornecidos de acordo com o tipo int). Mas se forem fornecidos os valores 5 e 0 (zero) o resultado não será apresentado. Alguns instantes após a efetivação da entrada ocorre a apresentação da caixa de advertênciainformando a ocorrência da exceção DivideByZeroException, como mostra a Figura 3.1. 26 Figura 1 - Advertência por erro de divisão por zero O erro apresentado indica a tentativa de divisão por zero. Note que a mensagem de erro indica qual exceção foi capturada. No caso foi capturada a exceção DivideByZeroException. Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex13 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. Observe que após ocorrer o erro o programa foi interrompido e abortado. Para evitar que um programa seja abortado e finalizado de forma mais natural é que se deve tratar uma exceção de erro. No exemplo apresentado o erro foi capturado pela exceção (que é um objeto interno do ambiente de desenvolvimento) DivideByZeroException que será tratada e capturada com o bloco try para que o eventual erro seja tratado no bloco catch. Ao aparecer a caixa de advertência, o programa fica em estado de suspensão e para continuar a usar o ambiente, ele deve ser interrompido. Para tanto, feche a caixa de advertência e em seguida execute o comando de menu Debug/Stop Debbuging. Considere o programa a seguir que deve ser criado após a execução do comando File/New Project. Selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex14 e acione o botão OK. using System; 1 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Aula2_Ex14 { 7 8 class Program { 9 10 static void Main(string[] args) { 11 12 int dividendo, divisor, quociente; 13 Console.Write("Entre o valor do dividendo ..: "); 14 dividendo = int.Parse(Console.ReadLine()); 15 Console.Write("Entre o valor do divisor . . . . : ") ; 16 27 divisor = int.Parse(Console.ReadLine()); 17 18 try { 19 20 quociente = dividendo / divisor; 21 Console.WriteLine(); 22 Console.WriteLine("Resultado = {0}", quociente); 23 24 } catch (DivideByZeroException dbze) { 25 26 Console.WriteLine(); 27 Console.WriteLine("Erro - divisão por zero"); 28 29 } 30 Console.WriteLine(); 31 Console.Write("Tecle <Enter> para encerrar... "); 32 Console.ReadLine(); 33 } 34 } 35 } 36 Ao executar o programa, se forem fornecidos, respectivamente, para o dividendo e para o divisor os valores 5 e 2, obter-se-á um resultado 2. No entanto, se forem fornecidos os valores 5 e 0 (zero), o resultado não será apresentado, em seu lugar surge a mensagem "Erro - divisão por zero.", indicando que o erro de exceção DivideByZeroException foi devidamente tratado. Sempre que ocorre o controle de um determinado tipo de exceção na cláusula catch, essa exceção, que é um dos objetos da linguagem C#, é associada a uma variável que pode ser usada para realizar algum controle ou operação. Observe no uso da cláusula catch (DivideByZeroException dbze) a variável "dbze" como sendo do tipo objeto DivideByZeroException. É muito comum encontrar as variáveis na cláusula catch ou mesmo associadas a objetos predefinidos, grafadas em caracteres minúsculos, e sendo normalmente a abreviação do nome do objeto de exceção tratada. Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex14 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. 28 O programa Aula2_Ex14, ao ter disparada sua exceção, escreve uma mensagem definida pelo próprio programador, no entanto há a possibilidade de apresentar uma mensagem (em inglês) gerada pelo próprio programa. Considere o programa a seguir que deve ser criado após a execução do comando File/New Project. Selecione na caixa de diálogo New Project a opção Console Application, informe no campo Name o nome Aula2_Ex15 e acione o botão OK. using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 5 namespace Aula2_Ex15 { 6 7 class Program { 8 9 static void Main(string[] args) { 10 11 int dividendo, divisor, quociente; 12 13 Console.Write("Entre o valor do dividendo ..: "); 14 dividendo = int.Parse(Console.ReadLine()); 15 Console.Write("Entre o valor do divisor . . ..: "); 16 divisor = int.Parse(Console.ReadLine()); 17 18 try { 19 20 quociente = dividendo / divisor; 21 Console.WriteLine(); 22 Console.WriteLine("Resultado = {0}", QUOCIENTE); 23 24 } catch (DivideByZeroException dbze) { 25 26 Console.WriteLine(); 27 Console.WriteLine(dbze.Message); 28 } 29 Console.WriteLine(); 30 Console.Write("Tecle algo para encerrar... "); 31 Console.ReadKey(); 32 } 33 } 34 } 35 Observe que neste programa há duas novidades. Primeiramente o uso da instrução Console.WriteLine(dbze.Message);, em que a variável dbze definida junto com o trecho catch (DivideByZeroException dbze) captura o código de erro interno e direciona o fluxo de saída sinalizado com a cláusula 29 Message a apresentar a mensagem "Attempted to divide by zero." Indicando a tentativa da ação de dividir um número por zero. A segunda novidade relaciona-se ao uso da instrução Console.ReadKey(); que aceita o acionamento de qualquer tecla do teclado para dar continuidade à execução do programa. O método ReadKey() faz uma parada na execução do programa até que alguma tecla seja acionada no teclado. Execute o comando File/Save All para gravar o projeto do programa, quando apresentada a caixa de diálogo Save Project, apontada para a sequência de diretório \Usuário\documents\visual studio 2010\Projects, em que o projeto Aula2_Ex15 será gravado como indicado. Acione o botão Save e em seguida execute o comando de menu File/Close Project. Como visto, o tratamento de exceções evita que um erro inesperadamente interrompa um programa, pois é possível interpretar a exceção ocorrida e finalizar o programa adequadamente, ou comandar outra ação lógica direcionada ao programa. O conjunto de objetos de exceções da linguagem C# é extenso e uma forma de saber quais exceções estão associadas a uma determinada classe é consultar a documentação oficial da linguagem. Para encerrar esta aula, feche o ambiente integrado Visual C# com o comando de menu File/Exit ou com as teclas de atalho <Alt> + <F4>. 30 Exercícios de Fixação Desenvolva os programas seguintes em linguagem C# a partir do ambiente integrado de programação Visual C# com as técnicas de tomada de decisão apresentadas nesta aula. Não se esqueça de gravar cada projeto e de encaminhá-los para compor o fator da nota. 1. Efetuar a leitura de três valores (variáveis A, B e C) de qualquer tipo e apresentar os valores em ordem crescente. 2. Efetuar a leitura de três valores numéricos (variáveis A, B e C) e calcular a equação completa de segundo grau, levando em consideração quepara ser uma equação completa de segundo grau, as variáveis A, B e C devem ser diferentes de zero. Considere ainda que se o valor de DELTA for igual a zero, existirá apenas uma raiz; se o valor de DELTA for menor que zero, não será possível obter as raízes; se o valor de DELTA for maior que zero, existirão duas raízes. 3. Efetuar a leitura de quatro valores reais referentes a quatro notas escolares de um aluno, e apresentar mensagem informando que o aluno está aprovado caso o valor da média escolar seja maior ou igual a 5. Caso o aluno não seja aprovado, apresentar mensagem informando que o aluno encontra-se reprovado. Ao final, além das mensagens, apresentar o valor da média do aluno. 4. Efetuar a leitura de quatro valores reais referentes a quatro notas escolares de um aluno e apresentar mensagem informando que o aluno está aprovado se o valor da média escolar for maior ou igual a 7. Se o valor da média for menor que 7, solicitar a nota de exame, somar com o valor da média e obter nova média. Se a nova média for maior ou igual a 5, apresentar mensagem informando que o aluno foi aprovado em exame. Caso o aluno não seja aprovado, indicar mensagem informando esta condição. Ao final, além das mensagens, apresentar o valor da média do aluno. 5. Efetuar a leitura de dois valores numéricos inteiros e apresentar o resultado da diferença do maior valor pelo menor.
Compartilhar