Tomando decis�es
(Aula 3)
Em todo momento sempre estamos tomando decis�es de acordo com as condi��es que v�o surgindo em nossa vida. Por exemplo, quando sa�mos de casa temos que levar guarda-chuva se estiver chovendo. Dependendo do tempo, se est� fazendo frio ou calor, temos que decidir que roupa vamos vestir. Da mesma forma, para resolver problemas, temos que levar em considera��o as condi��es, e de acordo a cada situa��o temos que tomar decis�es.
Vejamos o problema da m�dia da aula anterior. Vamos supor que agora gostar�amos que o computador nos informasse de acordo com o resultado da m�dia se fomos aprovados ou n�o na disciplina de matem�tica. Para tanto, elaboramos o seguinte algoritmo.
Vejamos o problema da m�dia da aula anterior. Vamos supor que agora gostar�amos que o computador nos informasse de acordo com o resultado da m�dia se fomos aprovados ou n�o na disciplina de matem�tica. Para tanto, elaboramos o seguinte algoritmo.
Algoritmo |
1. Atribuir os valores a N1, N2, N3 2. Calcular a soma: S = N1 + N2 + N3 3. Calcular a m�dia: M = S/3 4. Se a m�dia for maior ou igual a 5: informar aprovado 5. Caso contr�rio: informar reprovado |
O programa correspondente a este algoritmo seria:
Analisando o programa observamos que uma condi��o � traduzida em Pascal usando os comandos IF... ELSE e a estrutura geral � a seguinte
Dependendo do resultado da condi��o o computador realiza apenas uma das tarefas. Se resultado da condi��o for verdadeiro o computador executa a tarefa 1, e se for falso ele realiza a tarefa 2.
Existem situa��es em que devemos fazer apenas uma tarefa; nesse caso n�o utilizamos o ELSE
Que acontece se existem mais de um comando a ser executado para cada condi��o? Para o computador saber que comandos ou tarefas fazem parte de uma condi��o, vamos usar blocos. Um bloco � uma seq��ncia de comandos que come�a com BEGIN e termina com END. Portanto a estrutura de IF usando bloco seria:De forma similar para o ELSE tamb�m podemos usar o bloco quando for necess�rio.
Programa |
Program resultado; Var N1,N2,N3 : Real; S, M : Real; Begin N1:=7.5; N2:=5.5; N3:=4.5; S:=N1+N2+N3; M:=S/3; If (M >= 5) Then Writeln('aprovado') Else Writeln('reprovado'); End. |
IF condi��o THEN fazer tarefa 1 ELSE fazer tarefa 2 ;
Existem situa��es em que devemos fazer apenas uma tarefa; nesse caso n�o utilizamos o ELSE
IF condi��o THEN fazer tarefa;
IF condi��o THEN BEGIN comando1; comando2; comando3; ...... END;
Tipo de dados boolean
Na aula anterior j� vimos alguns tipos de dados que o computador utiliza, como Integer para n�mero inteiros, Real para n�meros reais e Char para caracteres.
Nesta aula vamos aprender um novo tipo que � o boolean. O computador utiliza vari�veis de tipo boolean para saber o resultado de uma condi��o ou compara��o. Portanto uma vari�vel de tipo boolean pode ter apenas dois valores: FALSO ou VERDADEIRO, em Pascal isso significa, FALSE ou TRUE.
Vejamos um exemplo de como usar as vari�veis de tipo boolean. No exemplo anterior, suponha que precisamos guardar em uma vari�vel o resultado (se estamos aprovados ou n�o). Logo, o programa modificado seria:
Nesta aula vamos aprender um novo tipo que � o boolean. O computador utiliza vari�veis de tipo boolean para saber o resultado de uma condi��o ou compara��o. Portanto uma vari�vel de tipo boolean pode ter apenas dois valores: FALSO ou VERDADEIRO, em Pascal isso significa, FALSE ou TRUE.
Vejamos um exemplo de como usar as vari�veis de tipo boolean. No exemplo anterior, suponha que precisamos guardar em uma vari�vel o resultado (se estamos aprovados ou n�o). Logo, o programa modificado seria:
Programa modificado |
Program resultado; Var N1,N2,N3 : Real; S, M : Real; Result : Boolean; Begin N1:=7.5; N2:=5.5; N3:=4.5; S:=N1+N2+N3; M:=S/3; If (M >= 5) Then Result:=True Else Result:=False; End. |
Dentro de uma condi��o podem existir outras condi��es, como veremos no pr�ximo exemplo.
Problema
Fa�a um programa que dados tr�s n�meros, mostre qual � o maior deles.
Solu��o
Sejam N1, N2 e N3 os tr�s n�meros. Vamos comparar primeiro N1 e N2. Se N1 for maior, vamos comparar ele com N3. Em caso contr�rio vamos comparar N2 com N3. Dependendo do resultado dessas compara��es saberemos quem � o maior.
Algoritmo |
N1 = 3 N2 = 9 N3 = 1 Se N1 > N2 entao Se N1 > N3 entao Diga que N1 � o maior Senao Diga que N3 � o maior FimSe Senao Se N2 > N3 Diga que N2 � o maior Senao Diga que N3 � o maior FimSe FimSe |
Vemos que o algoritmo ficou um pouco diferente mas ainda assim podemos entender o que faz cada linha. Voc� pode escrever seu algoritmo como melhor achar, mas sempre escreva suas id�ias em um algoritmo antes de programar. Passar esse algorimo para um programa ficou mais f�cil.
Programa |
Program maior; Var n1, n2, n3: real; Begin N1 := 3; N2 := 9; N3 := 1; If (N1>N2) Then If (N1>N3) Then writeln ('N1 e o maior') Else writeln ('N3 e o maior') Else If (N2>N3) then writeln ('N2 e o maior') Else writeln ('N3 e o maior'); End. |
Exercicios
- Dois alunos fizeram tr�s provas cada um (P1, P2 e P3), e voc� tem a nota de cada prova de cada aluno. Mostre um algoritmo que diga qual deles tem a maior m�dia. Depois, transforme seu algoritmo em programa Pascal.
- Teorema de Pit�goras: Uma importante descoberta de Pit�goras foi o teorema que leva seu nome, ensinado hoje em escolas de todo o mundo. Ao observar os tri�ngulos ret�ngulos (que t�m um �ngulo de 90 graus, chamado �ngulo reto), o fil�sofo notou que eles obedecem a uma lei matem�tica: a soma dos quadrados dos catetos (lados menores do tri�ngulo) � igual ao quadrado da hipotenusa (lado maior). Veja a figura:
Fa�a um programa que, dados os tr�s lados de um tri�ngulo, determine ele � um tri�ngulo ret�ngulo ou n�o.a2 + b2 = c2
- Na aula anterior aprendemos como calcular o �ndice de massa corp�rea (IMC) de uma pessoa. Fa�a um programa para que o computador nos informe se estamos magros, normais ou obesos, de acordo com a seguinte condi��o: Se o IMC � menor que 20 estamos magros, precisamos nos alimentar melhor. Se o IMC est� acima de 25 estamos obesos, devemos comer menos e fazer mais exerc�cios f�sicos. Se o IMC estiver entre 20 e 25 estamos normais, ou seja, nossas alimenta��o e atividades f�sicas est�o balanceadas.
- Execute o seguinte programa (isto �, simule o que o computador faria ao execut�-lo). Indique o que ser� mostrado na tela do computador.
Program p; Var a,b,c,aux: integer; Begin a:=5; b:=3; c:=9; If (a>b) Then Begin aux:=a; a:=b; b:=aux; End; If(b>c) Then Begin aux:=b; b:=c; c:=aux; End; If(c>a) Then Begin aux:=c; c:=a; a:=c; End; Writeln(a,b,c); End.
As solu��es dos exerc�cios voce encontra aqui, por�m recomendamos que voce tente resolver antes de olhar a resposta.
Algumas considera��es
- A linguagem Pascal permite escrever muitos comandos na mesma linha, porem � recomendado que seja escrito apenas um comando por linha para facilitar o entendimento do programa e apenas em casos de comandos simples (por exemplo, atribui��es) usar mais de um comando por linha.
- Apenas com um comando Writeln podemos mostrar varios resultados. Neste caso as vari�veis devem ser separadas por um , . Tamb�m podemos incluir textos dentro do Writeln usando duas aspas ( ' ), como mostra o seguinte exemplo:
Writeln('o valor de a � : ' , a, ' e o valor de b �: ', b)
- N�o coloque o ; no comando anterior a ELSE, inclusive no comando END
0 comentários:
Postar um comentário