Cursos de Informática Grátis www.megainforcursos.com

10 de agosto de 2012

Tomando decis�es (Aula 3)


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.
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:
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.
Analisando o programa observamos que uma condi��o � traduzida em Pascal usando os comandos IF... ELSE e a estrutura geral � a seguinte
IF condi��o THEN
  fazer tarefa 1
ELSE
  fazer tarefa 2 ;
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
IF condi��o THEN
    fazer tarefa;
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:
IF condi��o  THEN
BEGIN
      comando1;
      comando2;
      comando3;
      ......
 END;
De forma similar para o ELSE tamb�m podemos usar o bloco quando for necess�rio.
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:
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
  1. 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.
  2. 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:
     a2 + b2 = c2
    Fa�a um programa que, dados os tr�s lados de um tri�ngulo, determine ele � um tri�ngulo ret�ngulo ou n�o.
  3. 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.
  4. 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

 
Design by Wordpress Theme | Bloggerized by Free Blogger Templates | coupon codes