Anda di halaman 1dari 8

Notas de Aula de o de Computadores Algoritmos e Programac a

F L AVIO K EIDI M IYAZAWA com a colaborac a o de T OMASZ KOWALTOWSKI

Instituto de Computac a o - UNICAMP

Vers ao 2000.1

Estas notas de aula n ao devem ser usadas como u nica fonte de estudo. O aluno deve ler outros livros dispon veis na literatura. Nenhuma parte destas notas pode ser reproduzida, qualquer que seja a forma ou o meio, sem a permiss ao dos autores. Os autores concedem a permiss ao expl cita para a utilizac a o e reproduc a o deste material no contexto do ensino de disciplinas regulares dos cursos de graduac a o sob a responsabilidade do Instituto de Computac a o da UNICAMP.

c Copyright 2000

Instituto de Computac a o UNICAMP Caixa Postal 6176 13083970 CampinasSP fkm,tomasz @ic.unicamp.br

ii

3 Estrutura Condicional
A estrutura condicional permite a execuc a o de instruc o es quando uma condic a o representada por uma express ao l ogica e satisfeita.

3.1 Estrutura Condicional Simples


if (condic a o) then Comando; A seguir, exemplicamos o uso da estrutura condicional simples. program maximo1; var , : integer; begin write(Entre com o primeiro n umero: ); readln ; write(Entre com o segundo n umero: ); readln  ; if  then writeln(O maior valor e , ); if  then writeln(O maior valor e , ) end.

3.2 Estrutura Condicional Composta


Note que no exemplo do algoritmo maximo1, exatamente um dos dois comandos ifs e executado, i.e., ou es de uma u nica condic a o: ! . Podemos considerar ambos os casos atrav if (condic a o) then Comando1 ou Bloco de Comandos1 else Comando2 ou Bloco de Comandos2;


ou

true

false

If (C) Then Comando1 ou Bloco de Comandos1 Else Comando2 ou Bloco de Comandos2

Comando1 ou Bloco de Comandos1

Comando2 ou Bloco de Comandos2

Figura 14: Fluxograma do comando If-Then-Else Note que depois do Comando1 ou Bloco de Comandos1 n ao h a ; (ponto e v rgula). Caso tivesse um ponto e v rgula, este estaria separando o comando if de outro comando e portanto a palavra else n ao seria continuac a o deste 24

comando if. Na gura 14 apresentamos o uxograma do comando if, e no programa seguinte exemplicamos o uso da estrutura condicional composta. program maximo2; var , : integer; begin write(Entre com o primeiro n umero: ); readln( ); write(Entre com o segundo n umero: ); readln( ); if  then writeln(O maior e ,a) else writeln(O maior e ,b) end.

3.3 Bloco de Comandos


Um bloco de comandos e um conjunto de instruc o es que vai ser considerado como sendo um comando u nico. Desta forma, e poss vel compor estruturas, como no caso do comando if, envolvendo mais comandos. Um bloco de comandos e denido pelas palavras begin e end. begin Comando1; Comando2; Comando3; . . . end; Aqui parece ser o momento para apresentar mais uma pr atica de programac a o estruturada. Sempre que um comando atuar sobre um bloco de comandos, dispomos este bloco de comandos deslocados mais a direita. Os comandos dentro de um bloco, entre begin e end estar ao alinhados e tamb em estar ao deslocados mais a direita. Isto facilita muito a visualizac a o da atuac a o de cada comando. Exemplo 3.1 No programa a seguir, exemplicamos o uso dos blocos de comandos.

program maximo3; var , : integer; begin write(Entre com o primeiro n umero: ); readln( ); write(Entre com o segundo n umero: ); readln( ); if ! then begin writeln(O maior est a na vari avel a); writeln(O maior e ,a) end else begin writeln(O maior esta na vari avel b); writeln(O maior e ,b) end end.

25

Exemplo 3.2 No exemplo seguinte apresentamos um programa que l e os coecientes de uma equac a o de segundo a a grau, , e " (equac o $#&%(')0#1'2"354 ), e imprime as raizes desta equac o (se existir). program equacaosegundograu; 67 , , " : real; var var #98 , #&@ , delta: real; begin writeln(Programa para resolver uma equac a o de segundo grau.); writeln(Equac a o na forma: a*x*x + b*x+c = 0); write(Entre com o valor de a (diferente de zero): ); readln BAC ; write(Entre com o valor de b: ); readln EDF ; write(Entre com o valor de c: ); readln BGF ; H$IPRQ ATSU(VWWX`YaV(bV(" ; if cedgfihp!54$ then begin H$IPQ #q8rSUspXtu'2vxwxyh ABB@7V ; H$IPQ #&@SUspXtXvxwxyh ABB@7V ; writeln(O valor de x1 = ,#98 , e o valor de x2 = ,#@ ); end else writeln(n ao e vel calcular raizes reais para esta equac a poss o); end.

3.4 Comando Case


O comando case e um comando que permite selecionar um conjunto de operac o es conforme uma express ao com resultado escalar. Neste comando o valor escalar e comparado com v arios outros valores que dividem as opc o es de execuc a o em casos (vamos chamar estes de valores de caso). No m aximo um caso pode ser verdadeiro. Os valores de caso podem ser tanto valores escalares como faixas de valores de escalares. Al em disso, todos os valores de caso devem ser disjuntos (sem intersec o es). Se o valor escalar e igual ao valor (ou est a dentro de uma faixa) de um caso ent ao os comandos associados a este caso s ao executados. As sintaxes do Extended Pascal e Borland Pascal diferem levemente. Assim, daremos a sintaxe do Borland Pascal e posteriormente explicitaremos a diferenc a com a sintaxe do Extended Pascal. H a duas formas para a sintaxe do comando case: A seguir apresentamos a sintaxe do caso onde n ao denimos comandos para o caso de n ao haver correspond encia com os valores escalares de cada caso. case (Express ao Escalar) of Lista Constantes Escalares1: Comando ou Bloco de Comandos1; Lista Constantes Escalares2: Comando ou Bloco de Comandos2; . . . Lista Constantes EscalaresK: Comando ou Bloco de ComandosK; end A sintaxe para a situac a o onde denimos comandos para o caso onde n ao h a correspond encia com os valores escalares de cada caso e apresentada a seguir:

26

case (Express ao Escalar) of Lista Constantes Escalares1: Comando ou Bloco de Comandos1; Lista Constantes Escalares2: Comando ou Bloco de Comandos2; . . . Lista Constantes EscalaresK: Comando ou Bloco de ComandosK; else ComandoE1; ComandoE2; . . . ComandoEE; end Cada Lista Constantes Escalares pode ser uma seq ue ncia de escalares ou faixas de escalares separados por v rgula. A diferenc a com a sintaxe do padr ao Extended Pascal e que em vez da palavra else na sintaxe anterior, e usada a palavra otherwise. No decorrer deste texto, usaremos a sintaxe do padr ao Borland Pascal. Exemplo 3.3 O seguinte programa mostra um exemplo do uso do comando case. program exemplo; var c: char; begin write(Entre com um caracter: ); readln(c); case c of A..Z,a..z: writeln(Caracter lido e letra.); 0..9: begin writeln(Caracter lido e gito.); d writeln(i.e., um caracter em [0,9].); end; +,-,*,/: writeln(Caracter e atico.); um operador matem mbolo $.); $: writeln(Caracter e o s else writeln(O caracter lido n ao e letra, nem digito.); writeln(nem operador matem atico e nem e mbolo $.); o s end; end.

27

Exemplo 3.4 O seguinte programa mostra um exemplo de menu implementado com o comando case. Program ExemploMenu; var Opcao : char; begin repeat Escolha de uma opc a o do Menu writeln(Entre com uma opc ao do menu abaixo: ); writeln([1] - Inserir dados de aluno novo no cadastro. ); writeln([2] - Remover aluno do cadastro. ); writeln([3] - Alterar os dados de um aluno. ); writeln([4] - Sair do sistema de cadastro. ); write(Opcao: ); readln(Opcao); writeln; case Opcao of 1 : begin writeln(Inserir Funcion ario.); writeln(Opc ao n ao implementada. ); end; 2 : begin writeln(Remover Funcion ario.); writeln(Opc ao n ao implementada. ); end; 3 : begin writeln(Alterar Funcion ario.); writeln(Opc ao n ao implementada. ); end; 4 : writeln(Fim da execuc ao do sistema. ); else writeln( Opc ao inv alida. ); end; case writeln; until (Opcao  4); end.

3.5 Exerc cios


1. Escreva um programa que determina a data cronologicamente maior de duas datas fornecidas pelo usu ario. Cada data deve ser fornecida por tr es valores inteiros onde o primeiro representa um dia, o segundo um m es e o terceiro um ano. 2. Fac a um programa que l e uma medida em metros e escreve esta medida em polegadas, p es, jardas e milhas. Obs.: 1 polegada
   

25.3995 mil metros 12 polegadas 3 p es 1760 jardas

1 p e 1 jarda 1 milha

3. Sabendo que o valor num erico de uma letra na codicac a o ASCII e dada pela func a o ord, (a) fac a um programa que leia uma letra e escreva a codicac a o em bin ario desta letra. Exemplo: Suponha que a letra a ser lida e a letra a. A func a o ord(a) retorna o valor deve imprimir: 01100001. Note que 47x@u'58x@('58F@('24a@F'24a@d(')4a@%('24a@ee9'583x@ft .

e o programa

28

(b) fac a um programa que leia uma letra e escreva a codicac a o em hexadecimal desta letra. Exemplo: Suponha que a letra a ser lida e a letra m. A func a o ord(m) retorna o valor 84 e o programa deve imprimir: 6D. Note que ghe8gg e '2ije8gg f k84 , onde i em hexadecimal e igual a 8gl em decimal. Obs.: a func a o ord sobre um caracter devolve um n umero entre 4 e @mm (que pode ser representado em 8 d gitos bin arios ou 2 d gitos hexadecimais).

29

Anda mungkin juga menyukai