Você está na página 1de 6

Curso de Programao de computadores

http://webdav.sistemas.pucminas.br:8080/webdav/sistemas/sga/20091/...

Aula 02 Estruturas de deciso

1- Objetivos Permitir ao aluno resolver problemas que envolvam tomadas de deciso; Conhecer estrutura condicional simples e composta; 2- Atividades Estrutura condicional A estrutura condicional permite execuo de um conjunto de etapas ou instrues a partir do atendimento a determinada condio, representada por uma expresso lgica. Estrutura condicional simples Problema exemplo - enunciado Ler um nmero inteiro e dizer se ele par Qualquer estratgia de soluo de problemas parte do princpio de que essencial uma boa leitura do seu enunciado e seu completo entendimento. preciso desvendar o que est por trs do texto que descreve o problema. O problema exemplo acima solicita que seja informado um nmero ao programa. Este nmero ser armazenado em uma varivel e deve ser avaliado para verificar se par. Todo nmero par divisvel por dois, portanto, basta efetuar a diviso inteira por dois e avaliar o resto. Se o resto for igual a zero o nmero par. Cdigo do programa em linguagem C#: 01 02 /* Programa verifica se um nmero par e imprime uma mensagem na tela */

03 04 05 06 07 08 09 10 11 12 13

/* bibliotecas de funes */ using System;


namespace estruturaCondicional {

class Par { /* Incio do Programa*/ static void Main(string[] args) // Estabelece o incio do programa { /* variveis do programa */ int numero, resto;

1 de 6

14/08/2013 14:08

Curso de Programao de computadores

http://webdav.sistemas.pucminas.br:8080/webdav/sistemas/sga/20091/...

14 15 tela 16 17

/* leitura do nmero */ Console.WriteLine(Digite um numero inteiro :); // imprime o texto entre aspas na numero= int.Parse( Console.ReadLine()); //espera por um nmero digitado pelo // usurio e que ser armazenado na varivel numero

18 19 20

/*obteno do resto da diviso do nmero por 2*/ resto = numero%2; //operador de resto(%), divide o contedo do //numero por 2 e armazena o resto da diviso na varivel resto.

21 22 23 24 25 26 27 28

/*comando de deciso*/ If(resto == 0) //se o resto da diviso igual a zero ento excuta instruo { Console.WriteLine(O nmero digitado par!); } } } }

Anlise do programa acima: Observe que o cdigo // utilizado para o estabelecimento de comentrios, todo texto aps o // e na mesma linha considerado comentrio e no ser reconhecido como parte do programa. Na linha 19 tem-se a instruo que permite obter o resto da diviso (inteira) de um nmero inteiro por outro. O operador de resto o smbolo % (percentual). Nas linhas 22 e 25 tem-se a o comando if de deciso. Se o resultado da condio estabelecida dentro do parntese atravs do operador relacional igual (= =) for verdadeiro ento ser executada a prxima instruo, ou seja, impresso da frase O nmero digitado par! na tela do vdeo. Estrutura condicional composta Problema exemplo - enunciado Ler um nmero inteiro e dizer se ele par ou mpar O problema exemplo acima solicita que seja informado um nmero ao programa. Este nmero ser armazenado em uma varivel e deve ser avaliado para verificar se par ou mpar. Todo nmero par divisvel por dois, portanto, basta efetuar a diviso inteira por dois e avaliar o resto. Se o resto for igual a zero o nmero par, seno mpar. Cdigo do programa em linguagem C:

01 02

/* Programa verifica se um nmero par ou mpar e imprime uma mensagem na tela */

2 de 6

14/08/2013 14:08

Curso de Programao de computadores

http://webdav.sistemas.pucminas.br:8080/webdav/sistemas/sga/20091/...

03 04 05 06 07 08 09 10 11 12 13 14 15 16 17

/* bibliotecas de funes */ using System;


namespace estruturaCondicional {

class parImpar { /* Incio do Programa*/ static void Main(string[] args) // Estabelece o incio do programa { /* variveis do programa */ int numero, resto; /* leitura do nmero */ Console.WriteLine(Digite um numero inteiro :); // imprime o texto entre aspas na tela numero= int.Parse( Console.ReadLine()); //espera por um nmero digitado pelo // usurio e que ser armazenado na varivel numero

18 19 20

/*obteno do resto da diviso do nmero por 2*/ resto = numero%2; //operador de resto(%), divide o contedo do //numero por 2 e armazena o resto da diviso na varivel resto.

21 22 23 24 25 26 27 28 29 26 27 28

/*comando de deciso*/ If(resto == 0) //se o resto da diviso igual a zero ento excuta instruo { Console.WriteLine(O nmero digitado par!); } else // seno executa a prxima instruo { Console.WriteLine(O nmero digitado mpar!); } } } }

Anlise do programa acima: Na linha 19 tem-se a instruo que permite obter o resto da diviso (inteira) de um nmero inteiro por outro. O operador de resto o smbolo % (percentual). Nas linhas 22 a 29 tem-se a o comando if composto. Se o resultado da condio estabelecida dentro do parntese atravs do operador relacional igual (= =) for verdadeiro ento ser executada a prxima instruo, ou seja, impresso da frase O nmero digitado par! na tela do vdeo. Seno, ou seja, o resto diferente de zero (no problema ser ou 0 ou 1) ocorre a execuo da instruo: Console.WriteLine(O nmero digitado mpar!); que informar ao usurio que o nmero digitado mpar.

3 de 6

14/08/2013 14:08

Curso de Programao de computadores

http://webdav.sistemas.pucminas.br:8080/webdav/sistemas/sga/20091/...

Tipos de operadores aritmticos em C# Nome adio subtrao multiplicao diviso incremento decremento Resto <retornar> Operadores relacionais So operadores utilizados em operaes lgicas Nome maior maior ou igual menor menor ou igual igual diferente <retornar> Operador > >= < <= == != Operador + * / ++ -% Funo Operador binrio que permite adicionar dois valores numricos Operador binrio que permite subtrair dois valores numricos Operador binrio que permite multiplicar dois valores numricos Operador binrio que permite dividir dois valores numricos Operador unrio que permite incrementar de um o contedo de uma varivel, pode ser pr ou ps-fixado Operador unrio que permite decrementar de um o contedo de uma varivel, pode ser pr ou ps-fixado Operador binrio que permite obter o resto da diviso de dois nmeros inteiros

Exerccios propostos: 1- Ler dois nmeros inteiros e informar o maior deles. 2- Ler um nmero real e informar se ele positivo, negativo ou nulo. 3- Ler um nmero inteiro qualquer e informar o seu valor absoluto (ou mdulo). 4- Ler um nmero inteiro e dizer se ele divisvel por 7 e por 5 ao mesmo tempo. 5- Ler trs nmeros inteiros e informar qual o maior. 6- Ler os coeficientes (a e b, sendo a 0) de uma equao do primeiro grau (a.x + b = 0) e calcular e escrever a sua raiz 7- Ler trs nmeros reais e informar a soma dos dois maiores. 8- Ler trs nmeros reais e escrev-los em ordem crescente.

4 de 6

14/08/2013 14:08

Curso de Programao de computadores

http://webdav.sistemas.pucminas.br:8080/webdav/sistemas/sga/20091/...

9- Ler as medidas de trs segmentos e informar se esses segmentos podem ser os lados de um tringulo e, em caso afirmativo, informar o tipo de tringulo (escaleno, issceles ou equiltero). 10- Ler os trs coeficientes a, b e c ( sendo a 0 ), de uma equao do segundo grau e informar se ela possui razes reais iguais, razes reais diferentes ou razes imaginrias e quais so estas razes. 11- Ler as quatro notas de um aluno. Calcular a mdia das notas e verificar se ele foi ou no aprovado (media maior ou igual a 60). Informar a mdia e a situao do aluno. 12- Ler as quatro notas de um aluno. Calcular a mdia das notas e informar o seu conceito de acordo com o critrio: TIMO para mdia superior a 90; BOM para mdia superior a 75 e inferior ou igual a 90; REGULAR para mdia igual ou superior a 60 e inferior ou igual a 75; INSUFICIENTE para mdia inferior a 60.

Soluo comentada do programa de nmero 10 //incio da funo Main static void Main(string[] args) { // Declarao de variveis float a,b,c, // coeficientes da equao x1,x2, // razes da equao i1,i2,j1,j2, // razes imaginrias - delta < 0 delta; // delta da equao --> b2 - 4ac // Leitura dos coeficientes Console.WriteLine(Entre com os coeficientes a,b,c "); a = float.Parse( Console.ReadLine()); b = float.Parse( Console.ReadLine()); c = float.Parse( Console.ReadLine()); // clculo do delta observe a funo pow() delta = pow(b,2) - 4*a*c; // verifica se delta maior que zero e calcula razes reais if (delta>=0) { x1 = (-b + sqrt(delta))/(2*a); x2 = (-b - sqrt(delta))/(2*a); if (delta==0) // se delta igual a zero razes so iguais { Console.WriteLine(x1 = x2 = "+x1); } else // se delta maior que zero imprime razes distintas { Console.WriteLine(x1 = "+x1); Console.WriteLine(x2 = "+x2); } } else // se delta menor que zero calcula razes imaginrias - a + bj { i1 = -b/(2*a); j1 = sqrt(-delta)/(2*a);

5 de 6

14/08/2013 14:08

Curso de Programao de computadores

http://webdav.sistemas.pucminas.br:8080/webdav/sistemas/sga/20091/...

i2 = i1; j2 = -sqrt(-delta)/(2*a); Console.WriteLine(i1+ + +j1+" j"); Console.WriteLine(i2+ + +j2+" j") } } // fim do funo Main

<Retornar>

6 de 6

14/08/2013 14:08