Escolar Documentos
Profissional Documentos
Cultura Documentos
ESTRUTURAS DE DECISO
COMANDOS DE DECISO
As estruturas de deciso (condicionais) so utilizadas para tomar uma deciso baseada no resultado da avaliao de uma condio de controle e seleciona uma ou mais aes possveis (comandos) para serem executados pelo computador. No Pascal, existe trs tipos de estrutura de deciso: O comando IF, que pode ser utilizado de duas formas: simples ou composto; e o comando CASE, que utilizado para uma deciso seletiva.
ESTRUTURAS DE DECISO
DECISO SIMPLES ( IF-THEN )
Utilizado quando se deseja executar uma ao (um comando ou uma seqncia de comandos) caso uma determinada condio seja verdadeira. A estrutura de deciso simples do Pascal o IF, e deve ser utilizada da seguinte forma: IF <condio> THEN <comando>
Neste caso, o <comando> s ser executado se a <condio> resultar no valor TRUE. A <condio> deve ser uma expresso lgica. O <comando> pode ser um comando simples ou um comando composto. Um comando composto formado por dois ou mais comandos, separados por pontoe-vrgula e delimitados por BEGIN e END.
ESTRUTURAS DE DECISO
DECISO SIMPLES ( IF-THEN )
EXEMPLO: Program EXEMPLO_DE_DECISAO_SIMPLES; {Ler um nmero inteiro e exib-lo se for positivo} Var N : integer; Begin readln(N); if N > 0 then writeln(N); End. No exemplo acima, o comando WRITE s ser executado se a condio N>0 for verdadeira. Caso contrrio, nenhuma ao ser executada.
ESTRUTURAS DE DECISO
DECISO COMPOSTA ( IF-THEN-ELSE )
Utilizada quando se deseja executar um entre dois comandos (ou uma entre duas seqncias de comandos) dependendo do resultado de uma condio. A estrutura de deciso composta do Pascal tambm o IF, mas executado com a seguinte sintaxe: IF <condio> THEN <comando1> ELSE <comando2> Neste caso, se a <condio> resultar no valor TRUE, ser executado o <comando1>; caso contrrio, ser executado o <comando2>. Tambm aqui, a <condio> deve ser uma expresso lgica, e <comando1> e <comando2> devem ser um comando simples ou um comando composto.
ESTRUTURAS DE DECISO
DECISO COMPOSTA ( IF-THEN-ELSE ) EXEMPLO:
Program EXEMPLO_DE_DECISAO_COMPOSTA; {L um nmero e determinar se maior que zero ou no} Var N : integer; Begin redln(N); if N > 0 then writeln (N,' maior que zero' ) else writeln (N,' no maior que zero') End.
Neste exemplo, a mensagem que ser exibida depender do resultado da expresso lgica N>0. Se for verdadeira, ser executado o comando WRITE que sucede a palavra THEN. Caso contrrio, ser executado o WRITE que sucede a palavra ELSE. Em nenhuma hiptese sero executados os dois comandos. Em algoritmos mais complexos, comum a utilizao de IF's aninhados, ou seja, uma estrutura IF possuindo como <comando> uma outra estrutura IF.
ESTRUTURAS DE DECISO
EXEMPLO: Program EXEMPLO_DE_IFS_ANINHADOS; {Determinar se um nmero maior, menor ou igual a Var N : integer; Begin readln(N); if N > 0 then writeln (N,' maior que zero' ) else if N < 0 then writeln (N,' menor que zero') else writeln (N,' igual a zero') End. zero}
Pode-se observar que diversas linhas deste programa terminaram sem o ponto-evrgula, isto porque o ponto-e-vrgula s utilizado para separar comandos e/ou estruturas.
ESTRUTURAS DE DECISO
Deve-se tomar cuidado quando da utilizao de IF's aninhados, pois a clusula ELSE sempre relacionada ao ltimo IF. Se, dentro de algum programa, precisarmos contornar este fato, podemos faz-lo com os delimitadores BEGIN e END. EXEMPLO:
LINGUAGEM ALGORITMICA se COND1 ento Se COND2 ento Comando1 seno Comando2 LINGUAGEM PASCAL if COND1 then begin if COND2 then comando1 end else Comando2
ESTRUTURAS DE DECISO
DECISO MLTIPLA ( CASE-OF )
Utilizada quando se deseja executar um entre vrios comandos (ou uma entre vrias seqncias de comandos) dependendo do resultado de uma expresso. A estrutura de seleo (deciso mltipla) do Pascal o CASE, e obedece a seguinte sintaxe:
CASE <expresso> OF <lista-de-constantes-1> : <comando-1>; <lista-de-constantes-2> : <comando-2>; ... [ELSE <comando-n>] END A <expresso> deve resultar um tipo escalar (outros tipos que no o REAL e o STRING). A <lista-de-constantes-x> devem conter uma ou mais constantes (separadas por vrgula), e devem ser do mesmo tipo da <expresso>. O <comando-x> pode ser um comando simples ou composto.
ESTRUTURAS DE DECISO
EXEMPLO: Program EXEMPLO_DE_DECISAO_MLTIPLA; {Simulador de uma calculadora bsica de nmeros inteiros} Uses CRT; Neste exemplo, a mensagem que ser exibida Var depender do contedo da varivel OP. Se X,Y : integer; for igual a uma das constantes especificadas, OP : char; ser executado o comando WRITELN Begin correspondente. Se nenhuma constante for clrscr; write('Digite os operandos: '); igual ao contedo de OP, ser executado o WRITELN do ELSE. readln(X,Y); write('Digite o operador: '); Podemos tambm escrever o mesmo readln(OP); programa acima sem utilizar a estrutura case OP of '+' : writeln(X + Y); CASE, apenas utilizando IF's aninhados. '-' : writeln(X - Y); '*','x','X' : writeln(X * Y); '/' : writeln(X div Y); else writeln('operao invlida'); end {case}; readkey; End.
Neste exemplo, o comando WRITELN ser executado repetidas vezes enquanto a varivel N possuir um valor igual ou inferior a 100. O programa ter como sada a seqncia dos nmeros inteiros de 1 a 100.
Program EXEMPLO_DE_REPEAT; {escrever os nm. inteiros de 1 a 100} Var N : Integer; Begin N := 1; repeat writeln(N); N := N + 1 until N > 100 End.
O exemplo anterior equivalente ao exemplo do WHILE, onde o comando WRITELN ser executado repetidas vezes at que a varivel N possua um valor superior a 100.
EXERCICIOS ( FOR )
Escreva um programa que leia um conjunto 100 nmeros inteiros e exiba o valor mdio dos mesmos. Escreva um programa que leia um conjunto de nmeros inteiros e exiba o valor mdio dos mesmos. Obs: A condio de sada do lao ser a leitura do valor 0 (flag).