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.
ou
true
false
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.
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.
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.
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