Buscar

POO1 - Aula 3 Laboratório - Estruturas de Programação

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.

Continue navegando