Home
Guia de Pascal - UFPR - Universidade Federal do Paraná
Contents
1. else writeln Valor i end 78
2. Fim end Observe como o comando for foi deslocado 3 espa os para a direita com rela o ao alinhamento begin end do programa bem como o comando write foi deslocado outros 5 espa os com rela o a coluna do comando for e portanto 6 com rela o a ao begin end J o comando que imprime a mensagem de fim ficou alinhado na mesma coluna do comando for mostrando que est fora do seu escopo isto consiste em um comando independente do for Exemplo 59 program exemplo identacao ruim var i integer begin for i 1 to 10 do write i writeln Fim end O motivo da identa o confusa do segundo exemplo que visualmente quem l o c digo tem a falsa impress o de que o comando que imprime o texto Fim est no escopo do comando for e portanto ser repetido 10 vezes o que n o verdade Se esta fosse de fato a inten o do programador ent o ele deveria ter escrito da maneira como mostrado no exemplo abaixo Exemplo program corrigindo identacao ruim var i integer begin for i 1 to 10 do begin write i writeln fim end end Isto introduzindo o begin e o end que o programador provavelmente tinha esquecido O n mero de espa os do deslocamento depende da prefer ncia do programador Costuma se utilizar entre 3 e 5 espa os em branco H programadores que utilizam a tabula o tab por m esta pode ser desconfigurada conforme o edi
3. e CorVeiculo Ano MES SaLdO Parcela Quitada e Este nome eh muito longo e raramente deve ser usado mas eh valido Exemplos de identificadores inv lidos e 12porcento 4por4 iniciam por n mero e cor veiculo cont m espa o em branco e pre o possui um caracter inv lido cedilha e p ssaro apresenta acentua o e b54 n o inicia por letra ou por sublinhado Observa es e N o se pode declarar uma vari vel com o mesmo nome que foi atribu do ao programa ou a qualquer outro identificador previamente declarado no mesmo escopd e Como o compilador Pascal ignora o estado de mai sculas e min sculas os iden tificadores podem ser grafados de maneiras diferentes e ter o mesmo significado como por exemplo saldo SALDO Saldo ou SaLdO SPara informa es sobre escopo veja a se o 4 1 5 23 5 5 Tipos de dados em Pascal A linguagem Pascal por defini o uma linguagem fortemente tipada Ser tipada significa que as vari veis e constantes possuem um tipo precisamente definido isto o compilador deve conhecer detalhes de quantidade de bytes para seu armazenamento e o formato de convers o decimal bin rio J uma linguagem dita fortemente tipada com raras exce es n o permite que tipos sejam misturados Tal ocorr ncia provoca erro de compila o ou at mesmo durante a execu o do programa Na se o 4 1 3 mostrou se que poss vel declarar novos tipos sob demanda do pro gramador
4. maior ou igual and conjun o or disjun o XOr disjun o exclusiva not nega o O tipo do retorno sempre boolean e o resultado da opera o segue as regras da l gica cl ssica que s o resumidas nas tabelas verdade apresentada na figura 1 Express o Resultado Express o Resultado false and false false false or false false false and true false false or true true true and false false true or false true true and true true true or true true a AND b OR Express o Resultado false xor false false Express o Resultado false xor true true not false true true xor false true not true false true xor true false d NOT c XOR Figura 1 Conjunto de tabelas verdade dos operadores l gicos As express es podem ser utilizadas nos seguintes casos e em comandos de atribui o ver se o 7 1 38 e em comandos que exigem um condicional ver se o 7 e como argumento de fun es ou procedimentos ver se o 4 1 5 6 2 1 Exemplos Sao exemplos de express es booleanas bem formadas e 3 lt 3 e JOAO gt JOSE 2 3 lt gt 5 e comp lt gt COMP eii gt a4 eii gt a4 e conhece pascal and conhece e reprovouNota xor reprovouPresenca e media gt 7 and percentualFaltas lt 0 75 e idade gt 65 or tempo servico gt 25 e not chovendo and temperatura gt 30 or tem cerveja e a
5. Delimitadores de bloco 7 1 Comando de atribui o O comando de atribui o usado exclusivamente para se atribuir um valor a uma vari vel O valor previamente armazenado naquela posi o de mem ria substitu do pelo novo Sintaxe var lt expressao gt Com isto ocorre a atribui o do resultado da avalia o da express o para a vari vel indicada lado esquerdo do operador de atribui o Em fun o da linguagem ser tipada as atribui es s funcionam se o tipo do valor atribu do for o mesmo da vari vel que recebe o novo valor Quando ocorre uma atribui o de tipos diferentes o programa aborta com uma mensagem do tipo type mismatch H vezes em que o pr prio compilador detecta incompatibilidades de tipos Exemplo program exemplo atribuicao var x alpha real m n fatorial integer nome string letra char begin x 10 75 41 alpha sqrt ln y beta y x y 1 m m n x n DIV fatorial 1 nome Fulano de Tal letra A end 7 2 Comandos de entrada Os comandos de entrada s o usados para se carregar um determinado valor fornecido pelo usu rio em mem ria Este valor pode ser digitado ou fornecido atrav s de arquivo Os comandos de entrada da linguagem Pascal s o read e readln cujas sintaxes respectivas s o apresentadas na seq encidT Sintaxe read lt dispositivo gt lista de variaveis 5 readln d
6. MENOS QUATRO quatro MAX 10000000 4 1 3 Se o de declara o de tipos Em Pascal toda vari vel ver se o possui um tipo Isto relacionado com a maneira como o computador vai interpretar a sequ ncia de bits no endere o de mem ria acessado Na linguagem Pascal existem alguns tipos pr definidos ver se o 5 5 Aqui contudo o programador pode declarar seus pr prios tipos de dados Assim um identificador pode ser usado para denotar este novo tipo ao se declarar vari veis no c digo fonte A declara o feita tendo como in cio a palavra reservada type Segue ent o uma lista contendo um novo identificador um s mbolo de igual e a defini o do novo tipo baseada em tipos pr existentes Finalmente um s mbolo de ponto e v rgula P Abaixo h alguns exemplos de como se declarar novos tipos Exemplo type diaMes integer tipoSaldo real letra minuscula a z nomes array 1 MAX of letra minuscula 4 1 4 Se o de declara o de vari veis globais Em Pascal toda vari vel global ver se o deve ser declarada Assim o com pilador passa a conhecer aquele nome e tamb m reserva espa o de mem ria para o conte do da vari vel Adicionalmente a declara o propicia que o compilador possa interpretar corretamente o mapeamento entre o formato bin rio da m quina corres pondente ao espa o de mem ria alocado e a maneira como estes bits ser o manipu
7. No Free Pascal n o permitido haver duplicidade nas constantes Analogamente aos comandos if aqui somente um nico comando executado em cada caso Quando necess rio mais de um comando deve se utilizar os delimitadores de bloco ver se o 7 7 Ao contr rio do que ocorre com o if aqui deve existir o ponto e v rgula na ins tru o que precede o else Em suma o comando case funciona baseado em casamentos de padr es e n o t o gen rico quando o comando if Este por sua vez trabalha com express es booleanas que podem ser t o complexas quanto se precise Vale frisar que todo trecho que utilize case pode ser reescrito como um aninhamento de comandos if then else embora o c digo fique menos leg vel Exemplo program exemplo case of var a b integer resposta escolha byte begin writeln Digite dois inteiros read a b writeln Escolha a operacao a ser realizada writeln 7 1 Soma 2 Subtracao 3 Multiplicacao 4 divisao read escolha case escolha of 1 writeln a b a b 2 writeln a 2 b a b 3 begin resposta a x b 48 writeln a b resposta end 4 writeln a b a b 5 255 writeln Escolha errada else writeln Entrada incorreta end O c digo anterior escrito com o case equivale a este outro c digo que utiliza if program ope
8. ent o o valor da vari vel de controle comparado com lt EAO 2 gt e se for maior ou igual o comando executado e a vari vel de controle decrementada de uma unidade 5 o ciclo se repete at que o valor da vari vel de controle ultrapasse o limite estabelecido em EAO 2 no caso da forma com to ou se torne inferior a EAO 2 no caso da forma com downto E imperativo dizer que variavel de controle deve ser de tipo ordinal e que EAO 1 gt e EAO 2 s o express es aritm ticas cujos valores de retorno tamb m s o de um tipo ordinal Estas duas express es s o avaliadas antes que o comando seja executado sendo que proibido que se modifique o valor da vari vel de controle pelo comando Finalmente n o adianta alterar vari veis que mudem o valor de lt EAO 2 gt uma vez que esta express o foi avaliada antes do in cio do la o Exemplo 53 program exemplo for do 1 var i n integer begin writeln Informe um numero inteiro positivo read n for i 1 to n do writeln i writeln Fim end rograma imprime de maneira crescente todos os n meros entre 1 en Seo O d te tod tre 1 S n mero lido for negativo ou nulo ent o a mensagem Fim impressa imediatamente isto nenhum n mero aparece na tela Exemplo program exemplo for do 2 var i n integer begin writeln Informe um numero inteiro positivo read n for i n downto 1 do
9. preferivel escrever um comando por linha preferencialmente dei xando espacos em branco de maneira regular Usar uma linha em branco entre blocos com o mesmo sentido tamb m boa pr tica inicializa o de vari veis leitura de vari veis processamento das informa es por exemplo muito importante que o programador mantenha a consist ncia do padr o por toda a reda o do programa 8 2 Nao h distin o entre mai sculas e min sculas Embora ambas as vers es seguintes gerem o mesmo programa execut vel a vers o com comandos e identificadores em mai sculas tem a legibilidade prejudicada Vers o 1 program calcular imc var nome string altura peso imc real begin write Digite o nome do paciente readln nome write Digite a altura em metros Ex 1 78 readln altura write Digite o peso em quilogramas Ex 93 readln peso writeln imc peso alturaxaltura writeln 7O paciente nome tem o I M C igual a imc 4 2 write Pressione qualquer tecla para sair end Vers o 2 PROGRAM CALCULAR IMC VAR NOME STRING ALTURA PESO IMC REAL BEGIN WRITE DIGITE O NOME DO PACIENTE READIN NOME WRIIE DIGITE A ALTURA EM METROS EX 1 78 READIN ALTURA 57 WRITE DIGITE 0 PESO EM QUILOGRAMAS EX 93 READIN PESO WRITELN IMC PESO ALTURAwALTURA WRITELN 0 PACIENTE gt NOME gt
10. vel ele apenas cont m as instru es que servem para que o compilador gere o programa de fato 10 3 5 Erros de compila o Caso o programa fonte n o respeite as regras gramaticais da linguagem aqui Pascal o compilador produz mensagens de erro correspondentes Observe o que ocorre se 66 7 por exemplo fosse omitido o ao final da primeira linha gt cat alomamae pas program alomamae begin writeln Alo mamae end gt fpc alomamae pas Free Pascal Compiler version 2 2 2 8 2008 12 20 for i386 Copyright c 1993 2008 by Florian Klaempfl1 Target OS Linux for 1386 Compiling alomamae pas alomamae pas 3 1 Fatal Syntax error expected but BEGIN found Fatal Compilation aborted Error usr bin ppc386 returned an error exitcode normal if you did not specify a sou Durante o processo de compila o ap s ler a palavra reservada program e o identificador alomamae o compilador esperava encontrar o simbolo Ao inv s disso encontrou na linha 3 coluna 1 o simbolo begin Como resultado deste erro nao foi gerado o programa executavel Na verdade o compilador incapaz de dizer com absoluto acerto o local exato onde ocorreu o erro Neste caso sabe se que faltou um ponto e virgula no final da linha 1 3 5 1 Exerc cios Sugere se que o leitor produza erros de sintaxe na sua c pia deste programa fonte e que explore o compilador para come ar a compreender as me
11. writeln n writeln Fim end O programa anterior imprime de maneira decrescente todos os n meros entre n e 1 Se o n mero lido for negativo ou nulo ent o a mensagem Fim impressa ime diatamente isto nenhum n mero aparece na tela Este programa absolutamente equivalente ao primeiro exemplo apresentado na se o Exemplo program tabuada 1 ao 10 const MAX 10 var i j integer begin for i 1 to MAX do begin writeln Tabuada do i for j MAX downto 1 do writeln i x j i x j writeln end end 54 Este ltimo exemplo mostrou como comandos do tipo for do podem ser alinhados para se obter a impress o de todas as tabuadas do 1 ao 10 N o poss vel definir um la o de execu o infinita usando se o comando for do 7 7 Delimitadores de bloco Os delimitadores de bloco serve para agrupar comandos a fim de que sejam visto como um conjunto de instru es encapsulado Isto aglomera mais de um comando em um bloco que encarado pelo compilador como um nico comando O modo de usar simples basta escrever os comandos desejados entre um begin e um end O seguinte trecho de programa ilustra um uso deste tipo de comando begin a b 1 b a 1 if a gt b then writeln A maior do que B end 55 8 Legibilidade do c digo Esta se o apresenta algumas t cnicas para se escrever c digos elegantes de f
12. 2 72 end A 12 Frac Cabe alho function frac x real real Descri o Retorna a parte n o inteira de x Exemplo program exemploFrac begin writeln frac 123 456 0 3 Imprime 0 456 writeln frac 123 456 0 3 Imprime 0 456 end A 13 Inc Cabe alho procedure inc var x qualquerTipoOrdinal incremento qualquerTipoOrdinal Descri o Incrementa em x o valor de incremento Se incremento n o for especificado tido como 1 Exemplo program exemplolnc var i integer begin la VI inc i p aao inc i 2 i 4 end 69 A 14 Insert Cabe alho procedure insert const s1 string var s2 string indice integer Descri o Insere a string s1 em s2 na posi o indice empurrando todos os caracteres depois de indice para a direita O resultado truncado para 255 caracteres Exemplo programa exemplolnsert var s string begin s Free Pascal is difficult to use insert NOT s pos difficult s writeln s end A 15 Int Cabecalho function int x real real Descri o Retorna a parte inteira de um x real Exemplo program exemplolnt begin writeln int 123 456 0 1 Imprime 123 0 writeln int 123 456 0 1 Imprime 123 0 end A 16 Length Cabecalho function length s string integer Descri o Retorna o tamanho de s limitado a 255 Se s estiver v
13. 5 8 Um manual pormenorizado de todos os procedimentos e fun es providos pelo compilador Free Pascal pode ser encontrado em A J Abs Cabe alho function abs x qualquerTipoNumerico qualquerTipoNumerico Descri o Retorna o valor absoluto de x O resultado da fun o do mesmo tipo que o par metro dado que pode ser de qualquer tipo num rico Exemplo program exemploAbs var r real i integer begin r abs 1 0 r 1 0 i abs 21 1 21 end A 2 ArcTan Cabecalho function arctan x real real Descri o Retorna o arco tangente de x que pode ser de qualquer tipo real O resultado dado em radianos Exemplo program exemploArctan var 64 r real begin r arctan 0 r 0 r arctan 1 pi r 0 25 end A 3 Break Cabe alho procedure break Descri o Salta para a instru o seguinte ao final do comando de repeti o corrente Tudo o que estiver entre o break e o fm do comando de repeti o ignorado A express o booleana do comando de repeti o n o avaliada Pode ser usado com os comandos while do repeat until e for do Ressalta se que pode ser muito danoso ao c digo pois possui efeito semelhante ao goto ver se o 7 4 Exemplo program exemploBreak var i longint begin i 0 while i 10 do begin inc i if i gt 5 then break writeln i end 7 end A 4 Chr Cabecalho fu
14. TEM O IMC IGUAL A IMC 4 2 WRITE PRESSIONE QUALQUER TECLA PARA CONTINUAR END A leitura do c digo fica mais fluente quando letras min sculas s o utilizadas 8 3 Coment rios A maior parte das linguagens de programa o modernas permite que o programador insira textos que n o fa am parte do programa propriamente dito s o coment rios adicionais que facilitam a compreens o por parte de quem l o c digo Conforme vimos na se o 5 3 em Pascal isto poss vel com o uso equilibrado dos s mbolos rex e yer Es Exemplo x Este programa faz o calculo do MDC pelo metodo de Euclides x x Feito por Marcos Castilho e Data 12 05 2009 program MDCporEuclides var a b resto longint 2 bytes eh pouco para numeros grandes begin read a b os valores lidos devem ser nao nulos if not a 0 or b 0 then begin resto a mod b while resto lt gt 0 do quando o resto for zero temos o MDC em b begin ai bi b resto resto a mod b end writeln MDC b end else writeln 70 algoritmo nao funciona para entradas nulas Algumas dicas para uso dos coment rios no c digo e Aus ncia de coment rios ruim mas o excesso tamb m Use o bom senso para 58 decidir os lugares relevantes no c digo que merecem coment rios Se o c digo precisa de muitos coment rios provavelmente est mal escrito e N o escreva coment rios lon
15. and not b or b and not a 6 2 2 Ordem de preced ncia Assim como acontece com as express es aritm ticas se o 6 1 2 as express es l gicas tamb m precisam de uma ordem de preced ncia entre os operadores para evitar am big idades na interpreta o da express o e As opera es entre par nteses ocorrem primeiro e Em seguida os operadores un rios not un rio e Em seguida os operadores multiplicativos x div mod and e Em seguida os operadores aditivos or xor 39 e Em seguida os operadores relacionais lt gt gt gt lt lt e Finalmente realiza opera es da esquerda para a direita em geral Observa o Segundo o guia de refer ncia em sua vers o de dezembro de 2008 o compilador Free Pascal contrariamente ao Turbo Pascal n o consegue garantir a preced ncia quando avalia express es para acontecerem da esquerda para a direita informando que o compilador decidir qual avaliar primeiro baseado em regras de otimiza o Assim na express o seguinte a g 3 f 2 f 2 pode ser executada antes de g 3 Se o programador quiser garantir que g 3 ocorra antes deve escrever seu c digo assim el g 3 a el f 2 Sempre que for feita a constru o de express es l gicas contendo express es arit m ticas em conjunto com operadores relacionais as senten as contendo operadores relacionais precisam estar entre par nteses ou o co
16. begin armazena 65 na variavel a que equivale a A op AZ b ord 7A 2 c c chr b d 68 Retorna a A b 67 c C 72 obtem o codigo ASCII de A 65 e soma a 2 b eh um inteiro obtem o caractere correspondente ao codigo ASCII 67 valor de writeln Variaveis a a b b c c d d end A 21 Pi Cabe alho function pi real Descri o Retorna o valor de pi 3 1415926535897932385 Exemplo program exemploPi begin writeln pi 3 1415926 writeln sin pi end A 22 Pos Cabecalho function pos const substring string const s string integer Descri o Retorna o ndice da substring em s se esta a contiver Caso contr rio 0 retornado busca case sensitive Exemplo program exemploPos var s string begin s The first space in this sentence is at position writeln s pos s s The last letter of the alphabet doesn t appear in this sentence if pos Z s 0 and pos z s 0 then writeln s end A 23 Power Cabecalho function power base expon real real 73 Descri o Retorna baseeX Poente Exemplo program exemploPower begin writeln power 2 3 Deve imprimir 8 end A 24 Pred Cabecalho function pred x qualquerTipoOrdinal mesmoTipo Descri o Retorna o elemento que precede x E
17. cadeia de caracteres 5 6 Tipo array matriz 5 7 Tipo record registro 5 8 Tipo file arquivo ERRA E AEE RD ECA SUAR A A pat 6 1 1 Exemplos 3 s e e seda rs e SG poe RA kJa a ES sina pd Ps E TETTE TT TETIS TTT ITE FT TITET TTT A NR SS 6 2 1 Exemplos sm eda mo gs alea ela kaa E RAE oa A 12 12 13 13 14 14 15 19 20 20 20 22 22 24 24 25 26 26 27 28 28 29 30 31 o poao dj So e opto ko i to ke kal 7 Comandos da linguagem Pascal pj d e oko apo raj alo di ei o a Bro iea era E Tr T rrTT E Tr A an Sr ld S TTT TTT TT TTT CO 7 4 Comando de desvio incondicional Goto 75 Comandos de desvio condicional 7 5 1 7 6 1 Desvio condicional simples if then 7 5 2 Desvio condicional completo if then else 7 5 3 Comando de desvio condicional por caso case Repeti o condicional com teste no in cio while do 7 6 2 Repeti o condicional com teste no final repeat until 7 6 3 Repeti o por enumera o for do 7 7 Delimitadores de bloco 8 Legibilidade do c digo 8 1 Espa os e linhas em branco s o ignorados lo 8 2 Nao h distin o entre mai sculas e min sculas 8 3 Coment rios o oso 8 4 Identacao ou alinhamento de c digo por colunas 8 5 Realcedesintaxel o A 8
18. coment rios com a condi o de que os tipos de coment rios sejam diferentes Exemplos x Isto eh um comentario Ele pode ter mais de uma linha Aqui esta outro comentario dentro do primeiro Isso eh totalmente valido Este eh um terceiro comentario Tambem valido ji x Isto eh um comentario x Este eh outro comentario Porem eh um comentario invalido pelo excesso de linhas Primeiro comentario Segundo comentario O primeiro comentario sera fechado a seguir E a chave a seguir esta sobrando 5 4 Identificadores Identificadores s o utilizados para denominar programas r tulos constantes vari veis tipos procedimentos fun es e units criados pelo programador S o regras em Pascal para se constituir corretamente um identificador 1 Um identificador n o pode ser igual a uma palavra reservada 2 Um identificador deve ter no m ximo 255 caracteres 3 Os s mbolos que constituem um identificador podem ser 22 e letras A ate Z ou a at z e d gitos 0 at 9 e um sublinhado 4 O primeiro s mbolo deve ser uma letra ou o sublinhado Assim n o s o aceitos espa os ou caracteres especiais em qualquer parte de um identificador At mesmo o cedilha considerado um caractere especial Sao exemplos de identificadores v lidos e a al b568 codigo raizquadrada preco especial e veiculo elemento do conjunto raiz quadrada b54
19. da checagem de tipo da linguagem pois uma vari vel do tipo real pode receber a soma de um real com um inteiro Neste caso Apesar de estarmos no Brasil em Pascal os n meros em ponto flutuante s o escritos com um ponto n o com v rgula 26 antes da opera o o computador faz a convers o do inteiro para um formato em ponto flutuante Exemplo program type real var a b c real d integer begin a 14 5 b sqrt 10 b eh igual a raiz de 10 d 10 d eh inteiro c a d c eh a soma de um real com inteiro writeln a a b b c ec d d writeln writeln a a 0 2 ajusta para duas casas decimais apos o ponto end Fun es predefinidas relacionadas abs arctan cos exp frac int log pi power random randomize round sin sqr sqrt trunc e val Vide anexo A 5 5 5 Tipo boolean booleano O boolean booleano um tipo l gico que assume apenas um entre dois poss veis valores false ou true que equivalem respectivamente a falso ou verdadeiro 0 ou 1 Sempre que um valor diferente de 0 for associado a uma vari vel booleana esta ser verdadeira Exemplo program type bool var a b c d boolean begin a false b true c boolean 0 valor igual a zero false d boolean 10 valor diferente de zero true writeln Variaveis a a b b c c d d end As va
20. de desvio condicional servem para desviar o fluxo de execu o dos co mandos com base em uma condi o definida pelo programador 44 Existem dois comandos de desvio condicional em Pascal Um deles possibilita duas formas de uso 1 if then 2 if then else 3 case of Cada forma de uso ser apresentada nas se es subsequentes 7 5 1 Desvio condicional simples if then Nesta primeira variante poss vel executar um comando desejado apenas se uma condi o booleana for satisfeita ou seja for avaliada como true verdadeira Caso contr rio o resultado seja false o comando n o executado Sintaxe if lt expressao booleana gt then comando gt Note que as palavras if e then s o reservadas O comando a ser executado nico Se o programador precisar de uma sequ ncia de comandos ent o os delimitadores de bloco devem ser empregados ver se o 7 7 Observe tamb m que como em Pascal todo comando termina por ponto e v rgula e neste caso o comando if then termina somente ap s lt comando gt aninhado ent o o ponto e v rgula somente aparece no final de toda a constru o Exemplo program exemplo condicional 1 var n integer begin writeln Informe um numero inteiro positivo read n if n mod 2 0 then writeln 0 numero n eh par writeln fim end O programa anterior imprime a mensagem O numero n eh par apenas e t
21. de repeti o servem para desviar o fluxo de execu o de maneira que um determinado trecho do c digo possa ser repetido por um n mero determinado de vezes A este desvio d se o nome de la o ou loop O Pascal disp e dos seguintes comandos de repeti o 1 while do 2 repeat until 3 for do Todos estes ser o apresentados na sequ ncia 7 6 1 Repeti o condicional com teste no in cio while do Em Pascal o while do o comando de repeti o condicional com teste no in cio Usa se o while do para repetir um comando enquanto a avalia o de sua express o booleana resulte em verdade true Tal express o avaliada antes do comando ser executado Sintaxe while lt expressao booleana gt do comando gt As palavras while e do s o reservadas O comando a ser executado nico Caso o programador deseje executar uma sequ ncia de comandos o delimitador de blocos deve ser utilizado ver se o 7 7 Como em Pascal todo comando termina por ponto e v rgula e neste caso o co mando while do termina somente ap s o lt comando gt ent o o ponto e v rgula somente aparece no final e n o no meio da constru o Exemplo 50 program exemplo while do 1 var n integer begin writeln Informe um numero inteiro positivo read n while n 5 0 do begin writeln n n n l end writeln Fim end O programa imprime de maneira decrescente
22. do mesmo tipo que o retorno da fun o vir a fornecer Assim se determinada fun o retornar um valor real pode se invoc la em qualquer lugar onde se admita um valor real importante observar que o compilador faz a checagem do n mero de par metros e respectivos tipos da lista de argumentos do cabe alho do subprograma com os mesmos itens da ativa o deste Caso o n mero de argumento a ordem ou os tipos n o compatibilizem o compilador acusa erro Exemplos Neste primeiro exemplo o procedimento aloMamae ativado pelo programa prin cipal program umProcedimento procedure aloMamae begin writeln writeln Alo Mamae writeln end begin aloMamae end Aqui faz se a chamada do procedimento perfil S o passados como parametro o nome a idade e o peso do indiv duo Embora as vari veis globais sejam denominadas 16 n i e p elas poderiam perfeitamente se chamarem nome idade e peso visto que as vari veis do procedimento perfil t m escopo local program outroProcedimento procedure perfil nome string idade integer peso real begin writeln Nome nome writeln Idade idade writeln Peso peso end var n string i integer p real begin n Blaise Pascal ice 39 p 70 5 perfil n i p end Este terceiro exemplo apresenta um procedimento em que alguns par metros s o agrupados por tipo no cabe alho
23. lados em opera es comandos de leitura ou de impress o Vari veis s o declaradas atrav s da palavra reservada var Nesta se o do pro grama cada nova vari vel ou lista de vari veis separadas por v rgula declarada por um novo nome de identificador seguido do s mbolo de dois pontos e sucedido pelo nome do tipo da vari vel seja um tipo pr definido pelo compilador ou um novo tipo definido pelo programador conforme explicado na se o 8 1 3 Como sempre todo comando em Pascal deve ser terminado por um ponto e v rgula A diferen a entre vari veis globais ou locais ser caracterizada na se o 4 1 5 Exemplos var i j k idade integer b byte 14 raiz x y z media real letra char nome string saldo tiposaldo 4 1 5 Se o de declara o de procedimentos e fun es Procedimentos e fun es s o formas de escrever subprogramas na linguagem Pascal Estes c digos s s o executados quando ativados no programa principal Assim feita a declara o de um procedimento procedure identificador lista de parametros gt e cabecalho do procedimento x begin e corpo do procedimento x end 7 Uma fun o por sua vez declarada desta forma function lt identificador gt lista de parametros tipo e cabecalho da funcao x begin e corpo da funcao x end 7 As palavras procedure e function s o reserva
24. leitura do c digo seja intuitiva e se pare a mais com um texto em l ngua nativa do que com um c digo de m quina 62 Refer ncias Car82 FBF 86 Guil Rin92 Syn VCo7 Wir78 S Carvalho Introdu o Programa o com Pascal Editora Campus 1982 Harry Farrer Christiano Gon alves Becker Eduardo Chaves Faria Frede rico Ferreira Campos Filho Helton F bio de Matos Marcos Augusto dos Santos and Miriam Louren o Maia Pascal Estruturado Livros T cnicos e Cient ficos Editora S A 2nd edition 1986 Manuais on line do freepascal Dispon veis juntamente com o compilador em http www freepascal org Roberto Rinaldi Turbo Pascal 6 0 Comandos e Fun es Livros rica Editora Ltda 1992 http en wikipedia org wiki Syntax highlighting Acessado em 7 de Maio de 2009 Michael Van Canneyt Free pascal Reference guide http www freepascal org docs var August 2007 N Wirth Programa o Sistem tica em PASCAL Editora Campus 1978 63 A Fun es e procedimentos predefinidos no com pilador Nesta se o s o brevemente descritas os principais procedimentos e fun es predefi nidos pelo compilador Free Pascal Existem fun es adicionais para finalidades es pec ficas que exigem o uso de bibliotecas Units contudo tal t pico excede a finali dade deste guia r pido Fun es espec ficas para se trabalhar com entrada e sa da em arquivos s o descritas na se o
25. o somente se o resto da divis o inteira de n por 2 for nulo Em ambos os casos a mensagem fim impressa na tela Caso o programador queira imprimir tamb m a mensagem fim apenas no caso da avalia o do condicional o programa deveria ter sido escrito desta outra forma que segue Exemplo 45 program exemplo condicional 2 var n integer begin writeln Informe um numero inteiro positivo read n if n mod 2 0 then begin writeln 0 numero n eh par writeln fim end end 7 5 2 Desvio condicional completo if then else Nesta segunda e ltima variante poss vel executar um comando desejado apenas se uma condi o booleana for satisfeita ou seja for avaliada como true e ao mesmo tempo garantir que um segundo comando seja executado t o somente se a condi o booleana for avaliada como false Sintaxe if lt expressao booleana gt then lt comando 1 gt else lt comando 2 gt Note que as palavras if then e else s o reservadas O comando a ser executado nico tanto o primeiro quanto o segundo Se o programador precisar de uma sequ ncia de comandos ent o deve usar um delimitador de bloco ver se o 7 7 Observar tamb m que como em Pascal todo comando termina por ponto e v rgula e neste caso o comando if then else termina somente ap s lt comando 2 gt ent o o ponto e v rgula aparece apenas no final e n o no meio da cons
26. para armazenar palavras isto seq encias de s mbolos ASCII Em Pascal as palavras assim como o tipo char devem estar entre ap strofos aspas simples Pode se concatenar strings e caracteres usando o operador de adi o Exemplo program type str var a b d string c char begin a hello b world os 2108 d a b c Wnttp pt wikipedia org wiki ASCII 28 writeln d hello world end Funcoes predefinidas relacionadas concat copy delete insert length lowercase pos upcase e val Vide anexo A 5 6 Tipo array matriz Em sua forma elementar o tipo array utilizado para armazenar sob um mesmo nome de variavel uma quantidade fixa de elementos do mesmo tipo Por isto o tipo array tamb m conhecido como um arranjo homog neo Para formas de uso mais complexas recomendamos a leitura do guia de refer ncia da linguagem Pascal A declara o de uma vari vel do tipo array feita assim array lista de tipos enumeraveis 5 of tipo onde tipo qualquer tipo previamente definido pelo programador ou pr definido pela linguagem e lt lista de tipos enumeraveis gt uma lista de faixas de n meros separadas por v rgula Por restri o dos tipos enumer veis os valores devem ser do tipo ordinal e conhe cidos em tempo de compila o Os casos mais comuns de matrizes s o de uma e de duas dimens es embora pos sam ser d
27. todos os n meros entre n e 1 Se o n mero lido for negativo ou nulo ent o a mensagem Fim impressa imedia tamente isto nenhum n mero aparece na tela Isto ocorre porque a avalia o da express o condicional ocorre antes do bloco de instru es ser executado Como o while do repete um bloco de instru es enquanto determinada condi o for verdadeira poss vel definir um la o de execu o infinita caso a express o avaliada nunca se altere para falsa No c digo a seguir se um n mero negativo ou nulo for digitado como entrada o programa termina sem nunca ter impresso n mero algum na sa da Contudo se o n mero entrado for positivo e n o nulo ser impresso infinitamente Exemplo program exemplo while do 2 var n integer begin writeln Informe um numero inteiro positivo read n while n gt 0 do writeln n writeln Fim end 7 6 2 Repeti o condicional com teste no final repeat until O repeat until o comando de repeti o condicional com teste no final Funciona de modo contrastante ao while do ou seja repete at que uma dada express o booleana resulte em verdadeiro Esta express o avaliada ap s o bloco de instru es ter sido executado Sintaxe repeat ol lt comandos 5 until lt expressao booleana gt As palavras repeat e until s o reservadas Contrariamente ao comando while do o repeat until pode executar v rios c
28. 6 Simplicidade e lateza ss sis sud au 44 ua aks ka a 423 8 7 Nomes dos identificadores o oso A Funcoes e procedimentos predefinidos no compilador A 6 Continue AS Cos AT Exp A 14 Insert A16 Length A 17 Log 41 41 42 43 43 44 45 46 47 50 50 ol 53 dO 56 56 57 58 59 61 61 61 sp Pa Seri o pes o ieo pra ol 72 AA EE E E O A 72 sm ra E Sas TR ST 73 RR q DA e S 73 oa dms p knoto Ta ETA RE me oo 73 TTT ETT TTT PE TTT 74 a da e tn E a CR A elua 74 OE e Se E 74 AA SPE AA PAN SDA eo san a A 75 SR VAS e Sko Ea a Da 75 da a E a EK o ds NJE E a a 75 ipse SAN Sp doj keo MSGS Dia A dad da RA 76 ra mks ASA PJ A E SZ Na A SE KA E A ka 76 Lu a REC sia Ruo ao nkla a e Rr 7 ap sera td ANNA sas es a 77 Os GU or dau e bu a DIR A 7 1 Introdu o Este texto um material complementar disciplina C1055 Algoritmos e Estrutu ras de Dados I ministrada no curso de Bacharelado em Ci ncia da Computa o da Universidade Federal do Paran O presente documento foi concebido com a finalidade de servir como um guia r pido de refer ncia da linguagem Pascal vers o Free Pascal destinado ao estudante no in cio do curso Portanto n o dispensa o acompanhamento de material did tico apropriado para o aprendizado de algoritmos Definitivamente este material n o constitui por si s um curso de programa o em Pascal Desta forma recomenda se consulta farta l
29. 9 8 4 e2x 9 8 4 cos X y71 la exp y sqrt 2 376 x PI 9 mod 5 2 x 7 39 e 9 mod 5 2 7 e 6 45 5 0 x 2 01 e 6 5 2 As fun es cos ln exp e sgrt s o pr definidas pelo compilador e retornam respectivamente o cosseno logaritmo exponencial e raiz quadrada do argumento 6 1 2 Ordem de preced ncia Em uma express o complexa o compilador executa cada opera o separadamente segundo uma ordem pr estabelecida Isto conhecido como ordem de preced ncia dos operadores Em outras palavras suponha a express o 5p412 Sem maiores informa es uma express o amb gua pois 5 4 9e9 x2 18 mas por outro lado 412 8 e 5 8 13 Isto reflete a diferen a entre as express es D 4 2 5 4x2 Em Pascal as opera es s o realizadas segundo a ordem de preced ncia seguinte e as opera es entre par nteses ocorrem primeiro e em seguida as de multiplica o ou divis o seja real ou inteira e em seguida as de adi o ou subtra o e finalmente realiza opera es da esquerda para a direita Assim no exemplo acima 5 4 x 2 significa que a multiplica o ser feita em primeiro lugar e o resultado ser 13 As express es podem ser utilizadas nos seguintes casos e em comandos de atribui o ver se o 7 1 e cm express es l gicas ver se o 6 2 e como argumento de fun es ou procedimentos ver se o 4 1 5 36 Ex
30. Guia r pido de refer ncia da linguagem Pascal Vers o Free Pascal Marcos Castilho Everaldo Gomes Jos Ivan Gon alves J nior Loirto Alves dos Santos Rene Kultz Eleandro Maschio Krynski Marcos Castilho Vers o 0 2 Dezembro de 2009 Este texto est em constru o A vers o atual pode ser encontrada em http www inf ufpr br cursos ci0O55 Sum rio Introdu o 2 Breve hist rico da linguagem 3 O compilador Pascal yTRETTTTTTTTTCI aj SE AS fa E a keo I RE pn a NO e E TT CN A dg RSA e PAR RR RR SS 3 5 1 Exerc cios clic 4 Estrutura de um programa fonte em Pascal 4 1 Cabe alho ou preamibulo sc cu nas Xi ss mao koron Sea SA Tr rr Ea am om a aka a Kokoj 2 Fo man evo Drama o T E Re qe ar ak Sedo 4 2 Programa principal 4 su 44695 gea aa pda a p dedo kokosa a E RA 5 Elementos basicos 5 1 S mbolos cessa 8 la ae e Siga Sla ikon UBV i ET Oo i di koka 5 2 BPalavrasreservadas s s sss soso 5 3 Comendo lt ulo sin odio ntaj Kal Eca E e RO NC Boao 5 4 Identificadores je s mks Kon a ar o al a db a ae ka aa 3 5 5 Tipos de dados em PR av ss ike ss sss kusa sa kus aj 5 5 1 A fam lia de tipos ordinal 5 5 2 Nipoeemmeravell ease ue sea a e aj dose DU doe Ar OE ESSA DAS SS a E 5 5 4 A fam lia de tipos real csswrarrpscsrasa ba ko 4 5 5 5 Tipo boolean booleano 5 5 6 Tipo char caractere 5 5 7 Tipo string
31. Na presente se o ser o enumerados todos os tipos considerados b sicos para o compilador Free Pascal Conv m lembrar que isto pode mudar de um com pilador para outro Logo procure sempre informa es atualizadas para a vers o do compilador que tem em uso Os tipos que interessam para a disciplina introdut ria de programa o s o os seguintes e a fam lia de tipos ordinal a fam lia de tipos real e boolean booleano e char caractere e string cadeia de caracteres e array matriz e record registro e file arquivo Contudo importante observar que para n veis avan ados de programa o existem outros tipos pr definidos na linguagem Consultar o guia de refer ncia para maiores informa es 5 5 1 A fam lia de tipos ordinal Os tipos ordinais representam n meros conhecidos em linguagem informal como sendo os tipos inteiros Segundo o guia de refer ncia da linguagem em sua vers o de dezembro de 2008 tem se que com exce o do int64 qword e dos tipos reais todos os tipos b sicos s o do tipo ordinal Conservam as seguintes caracter sticas 1 S o enumer veis e ordenados ou seja poss vel iniciar uma contagem de um por um destes n meros em uma ordem espec fica Esta propriedade implica que as opera es de incremento decremento e ordem funcionam 24 2 Existem menores e maiores valores poss veis A seguir relacionada uma lista com os tipos inteiros e respectivas faix
32. Repeti o por enumera o for do O for do o comando de repeti o por enumera o do Pascal Usa se para repetir um bloco de comandos por um n mero fixo e predeterminado de vezes O controle feito por uma vari vel denominada vari vel de controle a qual respeita os limites estabelecidos que dependem de um valor inicial e de um valor final Tais limites s o definidos antes do comando ser executado e n o podem ser alterados Sintaxe for lt variavel de controle gt lt EAO 1 gt to lt EAO 2 gt do lt comando gt for lt variavel de controle gt lt EAO 1 gt downto lt EAO 2 gt do lt comando gt As palavras for do to e downto s o reservadas O comando a ser executado nico devendo ser utilizados os delimitadores de bloco ver se o 7 7 no caso de haver mais de um Como em Pascal todo comando termina por ponto e v rgula e neste caso o comando for do termina somente ap s lt comando gt ent o o ponto e v rgula somente aparece no final e n o no meio da constru o O comportamento do for do o seguinte 1 o valor de lt EAO 2 gt avaliado 2 a vari vel de controle recebe o valor da avalia o de EAO 1 gt 3 caso tenha sido usada a forma com to ent o o valor da vari vel de controle comparado com lt EAO 2 gt e se for menor ou igual o comando executado e a vari vel de controle incrementada de uma unidade 4 caso tenha sido usada a forma com downto
33. a grava o na mem ria principal Desta forma o tamanho que os arquivos podem ocupar dependem basicamente do espa o livre em disco ou em RAM Um arquivo declarado da seguinte maneira 31 var F file of lt tipo gt observando se que lt tipo gt pode ser uma estrutura de qualquer tipo exceto o pr prio tipo file E poss vel n o se informar o tipo do arquivo o que resulta em um arquivo sem tipo Segundo o guia de refer ncia isto equivalente a um arquivo de bytes Para se usar uma vari vel do tipo arquivo alguns comandos s o necess rios assign associa o nome da vari vel interno ao programa a um nome de arquivo em disco por exemplo O nome do arquivo dependente do sistema operacional reset abre o arquivo para somente leitura rewrite abre o arquivo para leitura e escrita close fecha o arquivo Segue um exemplo em que um arquivo de registros record usado para arma zenar uma agenda em disco type agenda record nome string rg fone longint end var F file of agenda begin assign F dados agenda db reset F comandos que manipulam a agenda close F end Um arquivo especial o do tipo text que armazena dados que podem ser ma nipulados pelas bibliotecas padr o de entrada e sa da inclusive as entradas default input teclado e output tela O c digo a seguir mostra o uso de um arquivo do tipo text var F text i inte
34. ajado a n o se limitar ao corrente guia 3 1 Obtendo o compilador O compilador pode ser instalado a partir dos pacotes dispon veis na p gina do projeto Free Pascal bastando que seja escolhido o pacote correspondente ao seu hardware e sistema operacional Nos laborat rios do Departamento de Inform tica da Universidade Federal do Parana usa se o Debian GNU Linux Para instalar o compilador neste ambiente basta executar como root o seguinte comando apt get install fp compiler http www freepascal org Caso queira o usu rio pode instalar todo o ambiente de desenvolvimento dis pon vel em uma fam lia de pacotes incluindo a documenta o atrav s do seguinte comando apt get install fp docs fpc lazarus O Lazarus um ambiente de desenvolvimento e pode ser usado alternativamente ao editor de texto Todavia este material escrito para aqueles que usam editores de texto e shell 3 2 Editando um programa fonte Para se gerar um programa fonte deve se usar um editor de texto simples No Linux existem v rios editores tais como o vi o emacs o gedit e o joe Ainda h a op o de usar outro editor ASCII de sua prefer ncia incluindo o dispon vel no ambiente Lazarus No Windows escolha um editor como o Notepad Bloco de Notas ou algum fornecido por um ambiente de desenvolvimento em Pascal como o editor do Turbo Pascal Em nenhuma hip tese utilize editores das suites de escrit rio pois estes inserem
35. as de valores O programador deve escolher o tipo mais conveniente representa o da vari vel pois a diferen a b sica entre eles a quantidade de bytes usada em mem ria e o fato de necessitar que n meros negativos sejam representados Para um estudante de Ci ncia da Computa o a diferen a est na interpreta o do n mero em bin rio se est em complemento de 2 ou em bin rio puro Tipo Faixa dos limites Tamanho em bytes byte 0 255 1 shortint 128 127 1 smallint 32768 32767 2 word 0 65535 2 integer smallint ou longint 2 ou 4 cardinal longword 4 longint 2147483648 2147483647 4 longword 0 2147483647 4 int64 9223372036854775808 9223372036854775807 8 qword 0 18446744073709551615 8 Tabela 4 Tipos ordinais em Pascal Fun es predefinidas relacionadas abs chr dec inc int odd ord power pred random randomize round succ trunc e val Vide anexo A 5 5 2 Tipo enumer vel Os tipos enumer veis s o definidos pelo programador Possuem uma certa seq ncia de poss veis valores ordinais que as vari veis daquele tipo poder o assumir Exemplo program tipo enum type TipoEsportes Futebol Basquete Volei var Esportel Esporte2 TipoEsportes begin Esportel Futebol Esporte2 Basquete Perceba que Esportel tem o valor Futebol nao se trata de um tipo string if Esportel Futebol then writeln 0 primeiro esp
36. azio O retornado TO Exemplo program exemploLength var S string i integer begin s 3 3973 for i 1 to 10 do begin s 8 x writeln length S 2 vt sx end end A 17 Log Cabecalho function ln x real real Descri o Retorna o logaritmo natural de um x positivo Exemplo program exemploLog begin writeln In 1 Prints 0 writeln In Eep 1 Prints 1 end A 18 Lowercase Cabecalho function lowercase c char0uString char0uString Descri o Retorna o argumento c convertido para min sculas O retorno char ou string conforme o tipo de c Exemplo program exemploLowercase var i begin for i longint ord A to ord Z do write lowercase chr i 71 writeln writeln lowercase ABCDEFGHIJKLMNOPQRSTUVWXYZ end A 19 Odd Cabecalho function odd x longint boolean Descri o Retorna true se x for mpar false caso o contr rio Exemplo program ExemploOdd begin if odd 1 then writeln Tudo certo com o 1 if not odd 2 then Writeln Tudo certo com o 2 end A 20 Ord Cabecalho function ord x qualquerTipoOrdinal longint Descricao Retorna o valor ordinal ASCII do caractere x A fun o ord n o exclusiva do tipo char e pode ser utilizada em outros tipos por m foge do escopo deste guia Exemplo program type char var a c d char b integer
37. cadas e uma s rie de outras possibilidades Aprenda Pascal tutorial bastante did tico com exemplos e escrito em ingl s de f cil compreens d Altamente recomendado O manual presente foi idealizado como um guia r pido em portugu s para o mate rial citado A p gina oficial da disciplina anteriormente mencionada det m contatos atualizados para a notifica o de poss veis erros assim como para o recebimento de cr ticas e sugest es acerca deste guia http www inf ufpr br cursos ci055 2 Breve hist rico da linguagem A linguagem Pascal foi desenvolvida em 1968 pelo professor Niklaus Wirth do Ins tituto de inform tica da ETH Eidgen ssische Technische Hochschule em Zurique Su a Sua denomina o uma homenagem a Blaise Pascal 1623 1662 matem tico e fil sofo franc s que inventou a primeira calculadora mec nica Foi baseada em al gumas linguagens estruturadas existentes at ent o como o ALGOL e PL I O desejo de Wirth era dispor para o ensino de programa o de uma nova lin guagem que fosse simples coerente e capaz de incentivar a confec o de programas claros e facilmente leg veis favorecendo a utiliza o de boas t cnicas de programa o Al m disso a linguagem deveria ser de f cil implementa o ou seja os compiladores precisariam ser compactos eficientes e econ micos FBF 86 O Pascal somente ganhou popularidade quando foi adotado pela Universidade da Calif rnia San Die
38. caracteres n o ASCII que o compilador n o conhece Al m disso os compiladores geralmente n o sabem lidar com acentua o negrito it lico entre outras formata es Ent o aceite o fato escreva em ASCII puro 3 3 Compilando Para se compilar um programa fonte em Pascal usando o Free Pascal no Linus basta abrir um shell e executar o programa fpc Suponha que o seu arquivo fonte tenha o nome alomamae e contenha o seguinte texto program alomamae begin writeln Alo mamae end Este c digo fonte ap s compilado e executado produzir na tela a mensagem Alo mamae Para compilar abra um shell e digite fpc alomamae pas Este comando produziu em seu diret rio de trabalho um arquivo bin rio de nome alomamae Para execut lo fa a o seguinte alomamae e aparecer na tela a mensagem de sa da do programa Na sequencia deste material ser explicado como construir programas fontes sint tica e semanticamente corretos que podem ser compilados sem gerarem erros de com pila o 3 4 Exemplo de intera o com a m quina para compilar A seguir apresenta se uma sess o de trabalho em que se compila o programa alomamae pas gt 1s 1 rw r r 1 marcos c3sl 60 Ago 4 11 18 alomamae pas Este comando mostra que no diret rio de trabalho existe um arquivo de nome alomamae pas que foi criado s 11h18min do dia 4 de agosto de 2009 Este arquivo de propriedade do usu rio marcos que
39. cil lei tura e compreens o por quem os l Apesar de ter a linguagem Pascal como foco o conte do aqui descrito pode ser projetado para qualquer outra linguagem de pro grama o cujo compilador ignore espa os tabula es ou linhas em branco Em par ticular tamb m se apresentam considera es para as linguagens que n o s o case sensitive isto que n o diferenciam mai sculas de min sculas As pr ximas se es descrevem conven es e sugest es que ajudam a padronizar o c digo e que devem ser levadas em considera o As id ias aqui apresentadas podem n o fazer muito sentido para um programador aprendiz mas s o fundamentais na arte da programa o em particular quando se escrevem programas com algumas milhares de linhas 8 1 Espa os e linhas em branco s o ignorados Ambos os exemplos geram rigorosamente o mesmo c digo execut vel inclusive com o mesmo tamanho em bytes pois o compilador ignora linhas em branco e espa os Contudo a legibilidade da primeira vers o privilegiada Vers o 1 program OiPessoal begin write 0i writeln Pessoal end Versao 2 program OiPessoal begin write ODi writeln Pessoal end Versao 3 program OiPessoal begin write Oi writeln Pessoal 7 end 56 Vers o 4 program OiPessoal begin write Oi writeln Pessoal end Em resumo
40. cont m 10 caracteres Para acessar cada caractere separadamente utilize nome variavel indice do caractere desejado Exemplo var s string begin s hello world writeln s 4 resultado eh a segunda letra L de hello end 5 7 Tipo record registro O tipo record usado para aglomerar sob um mesmo nome de vari vel uma cole o de outras vari veis de tipos potencialmente diferentes Por isto uma estrutura heterog nea contrariamente ao tipo array que homog neo A sintaxe para se usar uma vari vel do tipo record a seguinte 30 record Id 15 lt tipo 1 gt Id 25 lt tipo 2 gt lt Idn gt lt tipo n gt onde lt Id i gt um identificador e tipo i um tipo qualquer da linguagem ou previamente definido pelo programador Exemplo program tipo record 1 var cliente record nome string idade integer cpf longint sexo char endereco string salario real end 7 Normalmente boa pol tica declarar um tipo para o record como mostrado a seguir Exemplo program tipo record 1 type tipo cliente record nome string idade integer cpf longint sexo char endereco string salario real end var cliente tipo cliente 5 8 Tipo file arquivo O tipo file usado basicamente para armazenamento de dados em mem ria se cund ria Contudo poss vel tamb m se utilizar deste tipo par
41. cont m informa es sobre os comandos de sa da apenas menciona que s o modificadores 43 ser indicado por um r tulo previamente declarado na se o de r tulos ver se o 4 1 1 Sintaxe goto lt label gt em que label um r tulo declarado com o comando label Aten o preciso observar que o comando de desvio incondicional n o faz parte dos comandos aceitos no contexto de programa o estruturada Sempre poss vel reconstruir o c digo de maneira mais elegante embora talvez menos eficiente e obter o mesmo resultado Outra observa o que o uso do goto de dentro para fora de la os ou vice e versa n o algo muito razo vel de se fazer a chance de o programador estar fazendo algo errado bastante alta Exemplo program alomamae label alo 100 FIM begin goto 100 alo writeln Alo mamae goto fim 100 writeln Inicio goto alo FIM end Este programa inicia pelo comando que desvia o codigo para o rotulo 100 que imprime a mensagem Inicio na tela Em seguida executa o desvio para o rotulo alo que imprime na tela a mensagem Alo mamae Finalmente desvia o c digo para o r tulo fim e o programa termina Observe que o exemplo seguinte cumpre exatamente com a mesma finalidade Exemplo program alomamae melhorado begin writeln Inicio writeln Alo mamae end 7 5 Comandos de desvio condicional Os comandos
42. da palavra e n o ser o interpre tados pelo compilador de outra forma 5 2 Palavras reservadas Palavras reservadas s o componentes da pr pria linguagem Pascal e n o podem ser redefinidas ou seja denominar elementos criados pelo programador Por exemplo begin palavra reservada que indica o in cio de um bloco de c digo n o pode ser nome r tulos constantes tipos ou quaisquer outros identificadores no programa O compilador Pascal n o faz distin o entre mai sculas e min sculas Assim tanto identificadores quando palavras reservadas podem ser grafados com varia es de mai sculas e min sculas sem altera o de significado begin BEGIN Begin ou BeGiN Conforme o guia de refer ncia da linguagem Free Pascal vers o de dezembro de 2008 as palavras reservadas s o divididas em tr s grupos O primeiro cont m as palavras reservadas para a vers o do Turbo Pascal O segundo compreende as palavras reservadas do Delphi e o ltimo encerra as do Free Pascal http pt wikipedia org wiki Turbo Pascal 20 Esta diferen a existe porque no Turbo Pascal as palavras do Delphi n o s o reser vadas A tabela abaixo apresenta uma lista das palavras reservadas reconhecidas pelo compilador Turbo Pascal absolute else nil set and end not shl array file object shr asm for of string begin function on then break goto operator to case if or type const implementation pac
43. das O corpo de um procedimento ou de uma fun o constitu do por comandos da mesma maneira que o programa principal ver se o 42 com a diferenca de que nos subprogramas os comandos s s o executados quando o procedimento ou a fun o tiverem sido invocados no programa principal O cabe alho de um procedimento ou de uma fun o constitu do da mesma ma neira que o cabe alho do programa principal Isto permite a declara o de cons tantes de vari veis ou de tipos A diferen a reside no fato de que tais elementos possuem abrang ncia escopo local e n o est o acess veis a outros subprogramas ou ao programa principal Uma vari vel declarada em um subprograma existe somente durante a execu o deste Pode inclusive ter o mesmo nome de um identificador previamente usado seja em outro subprograma seja at no programa principal A lista de par metros uma sequ ncia que pode ser vazia de nomes de identifi cadores separados por v rgula com seus respectivos tipos precedidos por dois pontos Para cada novo tipo deve se usar o separador ponto e v rgula Os par metros s o argumentos repassados ao procedimento ou fun o em foco O retorno caracter stica espec fica de fun es tem o respectivo tipo definido ap s a lista de par metros precedido por dois pontos O valor de retorno especificado atrav s de uma atribui o ao identificador da fun o como se este fosse uma vari
44. das nesta ordem embora n o seja obrigat rio que se usem todas estas declara es A seguir ser explicada como a sintaxe de cada uma 4 1 1 Se o de declara o de r tulos Um r tulo label um nome para uma localiza o no c digo fonte para o qual o fluxo de execu o do programa pode ser direcionado de outra localiza o pelo uso de um comando goto Os r tulos podem ser sequ ncia de d gitos ou identificadores Logo os r tulos s o apenas necess rios quando se usa um ou mais comandos de desvio incondicional goto ver se o 7 4 Exemplo label alo 100 FIM 4 1 2 Se o de declara o de constantes Constantes s o teis quando o programador precisa se referir a informa es que n o se alteram durante o programa ou seja s o est ticas Contrastam portanto com as vari veis que permitem reatribui o de valores A declara o feita atrav s da palavra reservada const Nesta se o do programa cada constante nova declarada por um nome de identificador ainda n o utilizado seguido do s mbolo igual e sucedida pela constante num rica ou alfanum rica desejada sempre terminando com um ponto e v rgula Usualmente os nomes de constantes s o escritos em letras mai sculas para con trastarem com os nomes de vari veis Exemplo const PI 3 14159 MEU CPF 000 123 456 78 ERRO MSG Erro na execucao do programa QUATRO 4 13
45. de alto n vel em um programa de baixo n vel ou seja um programa que seja formado por um conjunto de instru es a serem realizadas pelo processador O processo de compila o ocorre em duas etapas e An lise sint tica de um c digo fonte segundo as regras gramaticais da linguagem escolhida e Gera o do programa execut vel semanticamente equivalente Este guia abrange a primeira parte isto cont m material que explica como escrever programas sintaticamente corretos A gera o do c digo execut vel por sua vez dependente de plataforma e de sistema operacional e foge do prop sito deste documento Existem v rios compiladores dispon veis para a linguagem Pascal Alguns deles s o sens veis plataforma No contexto deste manual e da disciplina correlata foi adotado o compilador Free Pascal por basicamente por dois motivos e E software livre e E fornecido para diversas plataformas incluindo o Linuz E absolutamente fundamental que os leitores deste material consultem o guia de referencia da linguagem Pascal para o compilador Free Pascal a fim de obter uma completa explica o de todas as regras para esta vers o da linguagem Este guia foi criado com o intuito de ser uma primeira refer ncia a esta linguagem Quando forem apresentados exemplos de programas sendo compilados serao feitos para a vers o em Linuz Conforme antedito h muito material sobre outros compiladores para a linguagem O leitor encor
46. do programa seja enfadonha Entretanto esses atributos s o relativamente subjetivos e a habilidade de escrever programas simples claros e eficientes s alcan ada com muita pr tica o que exige dedica o e tempo necess rio que o programador tenha um bom conhecimento em algoritmos bem como doss recursos que a linguagem de programa o fornece pois isto ajuda na tarefa de alcan ar o bom senso necess rio para se escrever c digos elegantes 8 7 Nomes dos identificadores Em linguagens de programa o os identificadores s o trechos de texto que nomeiam entidades da linguagem Em Pascal essas entidades s o os nomes das vari veis constantes dos tipos de dados procedimentos e fun es Assim ao se programar em Pascal necess rio escolher um nome para cada uma dessas entidades com exce o dos tipos b sicos da linguagem A escolha do nome dos identificadores muito importante na legibilidade do c digo fonte pois n o ajuda muito ter um c digo identado comentado e com a sintaxe real ada se os nomes dos identificadores complicarem a leitura do c digo Por exemplo se uma determinada vari vel for armazenar o CPF de algum usu rio um bom nome para esta vari vel cpf Observe como outras escolhas poderiam ir contra a legibilidade do c digo e numero cadastro pessoa fisica e cadastro e numero e campo02 61 A regra geral a simplicidade e a clareza como mencionado anteriormente O ideal que a
47. e desvio condicional por caso case O comando case serve para facilitar a visualizacao de varios comandos if then else aninhados com a diferen a de que no lugar de avaliar express es booleanas s o avaliadas express es cujo resultado seja de algum tipo enumerado ou ordinal exceto boolean e char O comando constitu do por uma express o e por constantes de caso As cons tantes devem ser conhecidas em tempo de compila o Todas as constantes devem ser do mesmo tipo O compilador avalia a express o e caso haja o casamento de uma das constan tes com o valor da express o a senten a que segue esta constante executada O programa continua ent o ap s o end final do comando 47 Na situa o em que n o h casamento de nenhuma constante com o valor da express o executam se as instru es aninhadas em else O trecho do else opcional e executado apenas no caso de n o haver qualquer casamento de constante com o valor da express o Ainda neste caso se n o houver este trecho o fluxo de execu o seguir para o comando que sucede o end Sintaxe case lt expressao do case gt of ctel comando 1 cte2 comando 2 cte3 comando 3 cteN comando N else comando do else end Observe que case of e else s o palavras reservadas As constantes do comando s o ctel cte2 cteN Conforme explicado anteriormente estas constantes po dem ser tamb m de tipos enumer veis isto da forma A B
48. eclaradas com dimens es maiores As de uma nica dimens o s o costu meiramente denominadas vetores as de duas dimens es s o chamadas de matrizes propriamente ditas Exemplos program tipo array 1 const MAX 10 MIN 5 var exemplos de vetores alunos array MIN MAX of string notas array 1 3 of integer dados array 0 MAX 1 of real exemplos de matrizes tabela array MIN MAX 1 10 of real tabuleiro array 1 3 1 MAX 1 of integer dados array 0 MAX 1 MIN MAX of real exemplos de array de dimensao 3 cubo array MIN MAX 1 10 0 50 of real end Para se acessar o conte do de um vetor deve se usar o nome da vari vel e um 29 indexador do tipo ordinal entre colchetes Exemplos alunos 2 Fulano de Tal notas 1 95 read dados 9 tabela 1 5 0 405 write tabuleiro 2 1 read dados 0 O cubo 1 2 3 PI I Tentar acessar um indice fora da faixa definida no tipo enumeravel gera erro de execu o no programa O compilador n o aceita que se passe o tipo array como par metro em fun es e procedimentos por isto normalmente o programador deve declarar um novo tipo para o array Exemplo type vetor de reais array 1 10 of real var v vetor de reais Vale ressaltar que o tipo string uma forma especial de array de caracteres char Suponha uma palavra com 10 letras Significa que esta string
49. ger begin assign F dados entrada txt 32 end reset F read F i comandos que manipulam a variavel i write F i imprime i no arquivo texto ASCII write i imprime i na tela close F 33 6 Express es l gicas aritm ticas e operadores Existem dois tipos de express es em Pascal as l gicas e as aritm ticas S o basica mente usadas por comandos quando necess rio produzir um c lculo complexo ou na tomada de decis es em comandos que exigem certos testes Express es s o formadas por dois componentes os operadores e os operandos Como a linguagem Pascal tipada ocorre que as express es tamb m produzem re sultados de tipo definido Este tipo depende essencialmente dos operandos e dos operadores que comp em a express o O restante desta se o detalha os aspectos mais importantes das constru es que envolvem express es 6 1 Express es aritm ticas S o express es aritm ticas e Constantes e Vari veis dos tipos ordinal e real e Fun es cujo tipo de retorno sejam ordinais ou reais e Se E e E s o duas express es aritim ticas ent o as seguintes tamb m s o EEE E E E El x E B Eo BE div E E mod E E e Somente s o express es aritm ticas as que podem ser constru das com as regras acima Os s mbolos x div mod s o operadores aritm ticos bin rios isto operam sobre dois operandos para
50. go em 1973 No mesmo per odo em seus cursos tamb m foram feitas implementa es de compiladores para mini e microcomputadores Rin92 Na d cada de 80 come ou a ser utilizada para prop sitos comerciais com o lan amento do Turbo Pascal pela empresa americana Borland International Posteriormente a linguagem foi sucedida pela linguagem Object Pascal utilizadas nas IDEs Borland Delphi Kylix e Lazarus Atualmente a linguagem Pascal foi padronizada pela ISO nos padr es Standard Pascal e Advanced Pascal Embora n o tenha sido a primeira linguagem a incorporar os conceitos de Pro grama o Estruturada o Pascal considerado um marco na evolu o das linguagens de programa o devido a v rias inova es introduzidas na poca tais como a cria o de novos tipos a estrutura o de dados a aloca o din mica de vari veis com o aux lio de ponteiros a declara o de identificadores para constantes a utiliza o de procedimentos que l em e escrevem campos individuais em vez de registros completos o uso de fun es e procedimentos recursivos entre outras 3 O compilador Pascal C digo fonte um conjunto de palavras ou s mbolos escritos de maneira ordenada contendo instru es em uma linguagem de programa o conhecida Normalmente o c digo fonte escrito em uma linguagem de alto n vel ou seja com grande capacidade de abstra o O compilador um programa que traduz um c digo fonte escrito em uma linguagem
51. gos demais a id ia manter o c digo o mais limpo poss vel e Descrever o comportamento de fun es e procedimentos interessante e Indicar pontos no c digo que s o fundamentais para o bom funcionamento do programa tamb m 8 4 Identa o ou alinhamento de c digo por colunas Identa o uma palavra que vem do ingl s identation e significa neste contexto o alinhamento de comandos em colunas de acordo com o n vel hier rquico de aninha mento destes comandos Identa o uma pr tica em programa o estruturada e vi vel em compiladores que ignoram espa os ou linhas em branco Em geral boa pr tica de programa o identar blocos de comandos de maneira que visualmente o programa fique mais claro e mostre quais linhas de c digo s o executadas por um determinado comando em um certo trecho do programa O objetivo permitir que programas fiquem melhor apresentados e mais f ceis de se entender Sempre que um bloco de comandos estiver no escopo de um comando significa estar sob o controle do comando a identa o passa a ser interessante A t cnica elementar deslocar este bloco mais a direita do que o comando principal Isto facilita muito a visualiza o de diferentes escopos no programa Os dois exemplos abaixo ilustram esta situa o o primeiro est bem identado o segundo n o Exemplo program exemplo identacao boa var i integer begin for i 1 to 10 do write i writeln
52. gram calculoDaMedia function media notal nota integer real begin media notal nota2 2 end var a b integer begin writeln Digite a media do primeiro semestre readln a writeln Digite a media do segundo semestre readln b 18 writeln Media anual media a b end Por fim este exemplo apresenta o uso uma fun o recursiva que retorna o n zimo elemento da s rie de Fibonacci function fibonacci n integer integer begin if n 3 then fibonacci l else fibonaci fibonacci n 1 fibonacci n 2 end qi 4 22 Programa principal O trecho demarcado como programa principal onde efetivamente escrito o pro grama na linguagem Pascal Qualquer subprograma procedimento ou fun o tra tados na se o 4 1 5 s executado quando chamado primariamente a partir do programa principal O programa principal constitu do de comandos sequenciais ver se o 7 que s o executados iniciando da instru o begin at que seja encontrada a instru o end e o ponto final do programa A execu o dos comandos contidos no programa principal feita de cima para baixo e da esquerda para a direita ignorando se os espa os em branco e as linhas vazias Este comportamento s se altera quando utilizados comandos que manipulem o fluxo natural de execu o do programa conforme explicado na se o O pr xima cap tulo cont m mais i
53. ispositivo gt lista de variaveis gt em que lista de vari veis gt uma lista de identificadores de vari veis separados por v rgula e dispositivo o nome de um dispositivo de entrada ver se o 5 8 Caso o nome do dispositivo seja omitido ent o se considera a entrada padr o te clado As vari veis devem ser de um tipo b sico da linguagem isto tipos ordinais reais char string ou boolean A diferen a entre as duas formas do comando read s existe no caso de leitura de strings readln acrescentar o CR carriage return ao final da string lida como parte da mesma Exemplo program exemplo leitura var x alpha real m n fatorial integer nome string letra char arq file of real begin readln nome read x read arq alpha read m n fatorial letra end HO guia de refer ncia do Free Pascal em sua vers o de dezembro de 2008 n o cont m informa es sobre os comandos de leitura apenas menciona que s o modificadores 42 7 3 Comandos de sa da Os comandos de sa da s o usados para se exibir conte dos de vari veis bem como mensagens que devem ser fornecidas para o usu rio do programa Os comandos de sa da da linguagem Pascal s o write e writeln conforme sinta xes seguintes Sintaxe write lt dispositivo gt lt lista gt writeln lt dispositivo gt lt lista gt em que lt lista gt uma lista de ele
54. iteratura que apresenta em profundi dade aspectos sem nticos dos elementos da linguagem aqui abordados Os estudantes s o encorajados a ter por costume buscar outras fontes e conquistar autonomia para enfrentar situa es das mais diversas em programa o de computadores O material did tico prim rio do curso indicado na p gina oficial da disciplina e inclui notas de aula bem como demais refer ncias bibliogr ficas pertinentes Algu mas das principais refer ncias s o Wir78 VCOT Car82 Gui A documenta o completa da linguagem pode ser encontrada juntamente com o compilador escolhido para este cursd Free Pascal Sup e se que os estudantes tenham contato e estudem minimamente Guia de refer ncia da linguagem uma refer ncia para a linguagem Pascal tal como implementada pelo citado compilador Descreve as constru es permitidas e lista os tipos de dados suportados N o um tutorial Guia do programador descreve as peculiaridades do compilador Free Pascal e prov uma vis o de como o compilador gera o c digo e de como o programador pode modificar este c digo Guia do usu rio descreve o processo de instala o e uso do compilador Free Pascal nas diferentes plataformas suportadas Guia das bibliotecas descreve as bibliotecas auxiliares que n o est o dispon veis na vers o b sica do compilador Serve para problemas que envolvem por exem plo bibliotecas gr ficas fun es matem ticas compli
55. ked unit constructor in procedure until continue inherited program uses destructor inline record var div interface reintroduce while do label repeat with downto mod self xor Tabela 1 Palavras reservadas do Turbo Pascal S o palavras reservadas do Delphi as class except exports finalization finally initialization is library on out property raise threadvar try Tabela 2 Palavras reservadas do Free Pascal O compilador Free Pascal suporta todas as palavras reservadas descritas acima e mais as seguintes dispose false true exit new Tabela 3 Palavras reservadas do Delphi Aten o as palavras reservadas variam conforme o compilador utilizado Portanto indispens vel consultar o guia de refer ncia para a vers o do compilador que tenha em m os 21 5 3 Coment rios Os coment rios s o colocados no arquivo fonte para ajudar a entender o que determi nado bloco de c digo faz Coment rios n o s o interpretados pelo compilador O Free Pascal suporta tr s tipos de coment rios Dois destes j eram utilizados por compiladores Pascal antigos um terceiro vem da linguagem C A seguir uma lista de coment rios v lidos x Eis um comentario Ele pode ter mais de uma linha x Um outro comentario Tambem pode ter mais de uma linha Um comentario que compreende apenas ate o final da linha Voc pode colocar coment rios dentro de
56. mentos separados por v rgula em que cada elemento pode ser um identificador de vari vel uma express o aritm tica ou uma string entre aspas simples e lt dispositivo gt o nome de um dispositivo de sa da ver se o 5 8 Tanto o dispositivo quanto a lista de vari veis podem ser vazios Caso o nome do dispositivo seja omitido ent o se considera a sa da padr o tela Um dispositivo interessante o 1st que remete impressora padr o As vari veis devem ser de um tipo b sico da linguagem isto tipos ordinais reais char string ou boolean A diferen a entre as duas formas do comando write que writeln acrescentar o CR carriage return ao final do conte do impresso Isto faz com que o cursor seja levado pr xima linha do dispositivo de sa da Exemplo program exemplo leitura var x alpha real m n fatorial integer nome string letra char arq file of real begin Trecho com a leitura das variaveis omitido writeln Nome do usuario nome write x gt f 2 In alpha write arq alpha write lst m n gt fatorial letra write Di writeln end 7 4 Comando de desvio incondicional Goto O comando de desvio incondicional o goto e serve para desviar o fluxo de execu o do programa incondicionalmente para outro ponto do c digo Este outro ponto deve 120 guia de refer ncia do Free Pascal em sua vers o de dezembro de 2008 n o
57. mpilador vai gerar erro de execu o Por exemplo na express o a Dor bx 0 o operador or possui maior preced ncia em rela o aos operadores relacionais Assim o compilador tenta realizar primeiro a express o 0 or b O operador or n o foi constru do para operar com dados num ricos mas apenas com dados do tipo boolean o que gera erro A maneira correta de construir a express o utilizar par nteses para separar as senten as relacionais da seguinte maneira a lt 0 or b lt 0 Deste modo como os par nteses possuem maior preced ncia em rela o ao or as senten as relacionais s o reduzidas a valores l gicos antes da utiliza o do operador 40 7 Comandos da linguagem Pascal Existem dois tipos de comandos em Pascal os comandos simples e os compostos Neste texto vamos apresentar apenas os comandos compat veis com o n vel da disci plina b sica de programa o de computadores ou de introdu o aos algoritmos Por este motivo recomendamos fortemente que o leitor consulte o guia de re fer ncia do compilador utilizado para conhecer todos os comandos dispon veis na linguagem Os comandos que ser o apresentados s o os seguintes e Comandos Simples Comando de atribui o Comando de desvio incondicional goto e Comandos Compostos Comandos de desvio condicional if then else case Comandos de repeti o while do repeat until for
58. nction chr x byte char Descricao Retorna o caractere correspondente ao valor x na tabela ASCII Exemplo program exemploChr begin 65 write chr 65 Escreve A end A 5 Concat Cabe alho function concat s1 s2 83 sn string Descri o Concatena as strings s1 s2 sn em uma nica string O truncado para 255 caracteres O mesma resultado pode ser obtido com o operador Exemplo program exemploConcat var s string begin s concat Seria mais facil com o operador end A 6 Continue Cabecalho procedure continue Descri o Salta para o fim do comando de repeti o corrente O c digo entre continue e o fim do comando de repeti o ignorado Pode ser usado com os comandos while do repeat until e for do Ressalta se que pode ser muito danoso ao c digo pois possui efeito semelhante ao goto ver se o 7 4 Exemplo program exemploContinue var i longint begin i 0 while i 10 do begin inc i if i 5 then continue writeln i end 7 end 66 A Copy Cabecalho function copy const s string indice integer quantidade integer string Descri o Retorna uma string que uma c pia da quantidade de caracteres de s inici ando na posi o indice Se isto ultrapassar o tamanho de s ent o o resultado truncado Se indice extrapolar os limites de s ent o
59. nsagens de erro e a procurar corrigi los Experimente por exemplo as seguintes altera es e escreva program errado por exemplo pogram e escreva writeln errado por exemplo writenl e apague o ponto final ap s o end na ltima linha e esque a de abrir ou de fechar as aspas da mensagem e esque a de abrir ou de fechar os par nteses e escreva alomam e com til na linha 1 Fa a uma altera o por vez e observe quais mensagens de erro ser o retornadas pelo compilador 11 4 Estrutura de um programa fonte em Pascal O c digo fonte de um programa em Pascal deve ser estruturado de maneira que res peite a gram tica formalizada para esta linguagem Com isto o compilador pode transformar o programa fonte em um c digo execut vel Um programa em Pascal consiste de dois blocos o cabe alho e o programa prin cipal A figura abaixo ilustra a estrutura b sica de um programa Os textos que aparecem entre os s mbolos lt e gt n o s o parte do programa mas estruturas que ser o detalhadas mais frente neste documento Igualmente os textos que apare cem entre os s mbolos Y e constituem coment rios no c digo e s o explicados na se o 9 9 e inicio do cabecalho x program lt nome do programa gt e declaracao dos rotulos x x declaracao das constantes x x declaracao dos tipos x x declaracao das variaveis x e declaracao dos procedimentos e funcoes x x termin
60. nstru es sobre os elementos b sicos da lingua gem Pascal 19 5 Elementos b sicos Neste cap tulo discutem se os elementos b sicos que comp em a linguagem Pascal Em primeiro lugar s o apresentados os s mbolos e as palavras reservadas usados na constru o de um c digo fonte se es 5 1 e respectivamente Na se o 5 3 s o discutidas as alternativas para a inser o de coment rios no c digo fonte A se o 5 4 trata da cria o de identificadores v lidos para a linguagem Pascal A partir da se o s o apresentados os tipos de dados utilizados em Pascal S o elencados desde os tipos b sicos como o inteiro e o caractere at aqueles mais complexos como os que s o voltados constru o de estruturas de dados 5 1 S mbolos E possivel inserir quaisquer simbolos num arquivo fonte em Pascal O compilador dar um significado adequado a cada simbolo presente no c digo Os simbolos seguintes tem significados especiais por se tratarem de operadores ou indicadores de que determinada parte do c digo n o se trata de uma instru o e ou s mbolos que podem indicar ao compilador que aquela parte do c digo onde se encontram n o uma instru o rni mes Tlo a Ix ELI DA Os s mbolos abaixo seguem a mesma regra mas s o sempre usados em par note que lt sem espa o diferente de lt lt gt t 4 4 Dentro de uma string tais s mbolos fazem parte
61. o do cabecalho x e inicio do programa principal x begin lt comandos gt end e termino do programa principal x O programa propriamente dito conhecido como programa principal o texto que aparece entre as palavras reservadas ver se o 5 2 begin e end O programa termina com um ponto finaf O cabe alho tudo o que aparece a partir da palavra reservada program at o que vai imediatamente antes do begin do programa principal O cabe alho n o constitui c digo execut vel mas cont m informa es necess rias para o processo de compila o bem como c digos para subprogramas ver se o que podem ser ativados por algum comando no programa principal Cada t pico ser explicado no decorrer desta se o 4 1 Cabe alho ou pre mbulo Todo programa em Pascal come a com a palavra reservada program ver se o 5 2 seguida de um identificador ver se o 5 4 que o nome do programa e um s mbolo Nas ilustra es deste texto as palavras reservadas aparecem em negrito 12 de ponto e v rgula No cabe alho tamb m deve se especificar se necess rio 1 Os r tulos para comandos de desvio incondicional se algum tiver sido usado 2 As constantes se alguma foi usada no programa 3 Os tipos definidos pelo usu rio se algum foi necess rio 4 As vari veis globais usadas no programa 5 Os c digos dos subprogramas eventualmente usados pelo programa As declara es devem ser inseri
62. omandos sem a delimita o de bloco por begin e end ver se o 7 7 Como em Pascal todo comando termina por ponto e v rgula e neste caso o comando repeat until termina somente ap s a express o booleana ent o o ponto e v rgula somente aparece no final e n o no meio da constru o Exemplo program exemplo repeat until 1 var n integer begin writeln Informe um numero inteiro positivo read n repeat writeln n n n l until n lt 0 writeln Fim end O programa imprime de maneira decrescente todos os n meros entre n e 1 Con tudo aqui reside a principal diferen a entre o repeat until e o while do se o n mero lido for negativo ou nulo o n mero ser impresso seguido da mensagem de Fim Isto ocorre porque a avalia o da express o somente feita ap s a execu o do bloco de comandos Dependendo da avalia o da express o booleana poss vel definir um la o de execu o infinita tal como apresentado no exemplo a seguir Um inteiro positivo n o nulo lido do teclado imprimido infinitamente Caso um n mero nulo ou negativo seja lido o programa termina ap s imprimir o n mero uma nica vez e exibir a mensagem Fim Exemplo program exemplo repeat until 2 var n integer begin writeln Informe um numero inteiro positivo read n repeat writeln n until n 0 writeln Fim end 52 7 6 3
63. orte eh Futebol e nao Futebol pois end 25 5 5 3 Tipo sub faixa Os tipos sub faixas possuem valores numa determinada escala que pode ser cons titu da de n meros ou letras Exemplo program tipo sub faixa type Tipo uma cinco l 5 Vai de 1 ate 5 Tipo a a f a f Vai de a ate f var Numero Tipo um a cinco Letra Tipo a a f begin Numero 3 OK Esta na faixa writeln Numero Letra p OK Esta na faixa writeln Letra Letra z Esta fora da faixa estabelecida O compilador mostrara um warning writeln Letra end 5 5 4 A fam lia de tipos real Os tipos reais compreendem aqueles representados internamente pelo computador e interpretados como sendo de ponto flutuante Assim como no caso dos ordinais variam basicamente na quantidade de bytes usada para cada endere o de mem ria e na representa o de sinais seja no expoente ou na mantissa Abaixo apresenta se uma lista com os tipos reais e suas faixas de valores conforme o guia de refer ncia em sua vers o de dezembro de 2008 Tipo Faixa dos limites Tamanho em bytes real depende da plataforma 40u8 single 1 5E 45 3 4E38 4 double 5 0E 324 1 7E308 8 extended 1 9E 4932 1 1E4932 10 comp 2E64 1 2E63 1 8 currency 922337203685477 5808 922337203685477 5807 19 20 Tabela 5 Tipos reais em Pascal Aqui reside uma das raras exce es
64. pertence ao grupo c3sl O arquivo pode ser lido por qualquer usu rio mas pode ser alterado apenas pelo dono Como ltima informa o ele ocupa 60 bytes de disco gt fpc alomamae pas Free Pascal Compiler version 2 2 2 8 2008 12 20 for i386 Copyright c 1993 2008 by Florian Klaempfl1 Target OS Linux for i386 Compiling alomamae pas Linking alomamae 6 lines compiled 0 2 sec O comando acima invocou o compilador que imprimiu algumas mensagens de versao e autoria fundamentalmente informando que compilou as 6 linhas do programa em 0 2 segundos gt Is 1 rwxr xr x 1 marcos c3sl 114400 Ago 4 11 28 alomamae rw r r 1 marcos c3sl 1832 Ago 4 11 28 alomamae o rw r r 1 marcos c3sl 60 Ago 4 11 18 alomamae pas O comando acima mostra que s 11h28 minutos do dia 4 de agosto de 2009 foram criados pelo compilador dois arquivos novos alomamae e alomamae o O primeiro um arquivo execut vel ocupando 114 400 bytes em disco o segundo um arquivo tempor rio utilizado pelo compilador durante o processo de gera o de c digo O leitor deste material n o deve se preocupar com este arquivo no momento gt alomamae Alo mamae gt Finalmente foi executado o programa e vemos a sa da conforme esperado Tentar executar o arquivo fonte produziria o seguinte erro gt alomamae pas bash alomamae pas Permiss o negada gt Isto ocorre porque o c digo fonte n o como explicado um arquivo execut
65. press o Resultado 2 9 8 4 16 2x 9 8 4 14 2 x 9 8 4 16 9 mod 5 2x7 18 9 mod 5 2 7 14 6 5x2 16 6 5 2 22 Tabela 6 Exemplo de uso de express es 6 2 Express es l gicas S o express es l gicas e constantes do tipo boolean e vari veis do tipo boolean e fun es cujo tipo de retorno seja boolean e se E e E s o duas express es aritm ticas ou vari veis ou constantes do mesmo tipo ent o as seguintes s o express es l gicas E E E lt gt Es E gt Es E gt Es E lt Es Ei lt Fo e Se L e Lo s o duas express es l gicas ent o as seguintes tamb m s o Lj or Ls L and Ls Lj xor Ls not L1 L e Somente s o express es aritm ticas as que podem ser constru das com as regras acima 37 Os s mbolos lt gt gt gt lt lt s o operadores relacionais bin rios Podem ter como argumento express es aritm ticas ou ent o vari veis ou constantes do tipo mas sempre resultam em tipo boolean Os s mbolos and or xor e not s o operadores booleanos os dois primeiros s o bin rios e o ltimo un rio Significam respectivamente as opera es l gicas de conjun o disjun o disjun o exclusiva e nega o A tabela abaixo explica cada um destes s mbolos operador significado igual lt gt diferente gt maior ou igual lt menor lt
66. procedure variosTipos a b integer c real d integer begin writeln Inteiros a e b writeln Real c writeln Novamente inteiro d end Neste quarto exemplo mostrado como se faz a passagem de par metro por re fer ncia em um procedimento Para fun es a sintaxe tamb m v lida program porReferencia procedure duplica var n integer begin n 2 x n end var numero integer begin numero 10 duplica numero writeln numero end Exemplo que exp e um procedimento recursivo que conta de um inteiro n at zero procedure contaAteZero n integer begin 17 if n gt 0 then begin writeln n contaAteZero n 1 end end Aqui apresenta se um exemplo em que se utiliza um tipo estruturado predefinido como parametro program tipoEstruturado type vetorl0int array 1 10 of integer procedure exibeVetor v vetorl0int var i integer begin writeln writeln Vetor digitado for i 1 to 10 do writeln v i end var i integer vetor vetorlOint begin for i 1 to 10 do begin writeln Digite um valor para a posicao i readln vetor i end exibeVetor vetor end Neste outro exemplo evidencia se a chamada a passagem de par metro e o retorno de uma fun o que recebe duas notas inteiras e devolve a m dia anual um valor real de um aluno pro
67. produzir um resultado A tabela abaixo explica cada um destes s mbolos operador significado adi o subtra o i multiplicagao divis o real div divis o inteira mod resto de divis o inteira 34 O tipo do retorno depende do tipo dos operandos e dos operadores Em geral as opera es de adi o e subtra o e multiplica o retornam o mesmo tipo dos operandos Se estiverem sendo operados um real e um inteiro o resultado do tipo real Para as opera es de divis o inteira div e resto de divis o inteira mod o re sultado inteiro mas os operandos tamb m devem ser inteiros As opera es com a divis o real resultam sempre em tipo real mesmo que um ou mais operandos sejam do tipo inteiro A tabela abaixo resume esta explica o operador tipo dos operandos tipo do resultado inteiros inteiro reais real real e inteiro real inteiros inteiro reais real real e inteiro real inteiros inteiro reais real real e inteiro real inteiros real real e inteiro real reais real div inteiros inteiro real e inteiro ERRO reais ERRO mod inteiros inteiro real e inteiro ERRO reais ERRO Observamos que nas opera es de divis o real ou inteira o segundo operando n o pode ser nulo o que acarretar erro de execu o 6 1 1 Exemplos S o exemplos de express es aritm ticas bem formadas 2x
68. racoes var a b integer resposta integer escolha integer begin writeln Digite dois inteiros read a b writeln Escolha a operacao a ser realizada writeln 1 Soma 2 Subtracao 3 Multiplicacao 4 divisao read escolha if escolha 1 then writeln a b 2 a b else if escolha 2 then writeln a b a b else if escolha 3 then begin resposta a x b writeln a b resposta end else if escolha 4 then writeln a b gt a b else if escolha gt 5 and escolha lt 255 then writeln Escolha errada else writeln Entrada incorreta end O pr ximo exemplo explora mais as possibilidades do case program exemplo case sofisticado var numero integer begin writeln Digite um numero read numero 49 case numero of 1 writeln Numero um 2 3 5 7 11 13 17 19 23 29 writeln Numero esta entre os 10 primeiros primos 4 8 12 16 20 24 28 writeln Numero menor do que 30 e divisivel por quatro else writeln Nada de especial com esse numero end 7 end No exemplo acima toda v rgula dentro da especifica o das constantes conside rada um or Sempre que forem encontrados dois pontos entre constantes l se at pois especifica uma escala de poss veis valores 7 6 Comandos de repeti o Os comandos
69. ri veis ou constantes do tipo boolean s o elementos fundamentais na de fini o e entendimento de express es booleanas que ser o apresentadas na se o 6 2 27 5 5 6 Tipo char caractere O tipo char ou caractere armazena apenas um caracter da tabela ASCI9 e ocupa exatamente um byte de mem ria Na realidade n o o caractere que armazenado na mem ria mas o c digo ASCII correspondente O c digo ASCII do caractere A por exemplo 65 Ent o se for atribu do A a uma vari vel do tipo caractere na verdade ser atribu do o valor 65 para esta vari vel Pode se atribuir diretamente o valor ASCII a uma vari vel caractere inserindo se o sustenido na frente do n mero correspondente por exemplo a 465 Exemplo program type char var a c d char b integer begin a 1A armazena 65 na variavel a que equivale a A b ord A 2 obtem o codigo ASCII de A 65 e acrescenta 2 observe que b que recebe isto eh um inteiro c chr b armazena em c o caractere correspondente ao valor 67 em ASCII d 68 writeln Variaveis a a b b c ec d d retorna a A b 67 c C end Por se tratar de um tipo ordinal o tipo char pode ser utilizado em comandos case ver se o 7 5 3 Fun es predefinidas relacionadas chr lowercase ord e upcase Vide anexo A 5 5 7 Tipo string cadeia de caracteres O tipo string utilizado
70. sqrt 4 writeln sqrt 2 end 0 3 Imprime 2 000 0 3 Imprime 1 414 A 31 Succ Cabe alho function succ x qualquerTipoOrdinal mesmoTipo Descri o Retorna o elemento que sucede x Exemplo program exemploSucc begin writeln pred 3 Deve imprimir 4 end 76 A 32 Trunc Cabe alho function trunc x real longint Descri o Trunca o real x O resultado sempre ser igual ou menor ao valor original Exemplo program exemploRound begin writeln trunc 1234 56 Imprime 1234 end A 33 Upcase Cabecalho function upcase c charOuString charOuString Descricao Retorna o argumento c convertido para mai sculas O retorno char ou string conforme o tipo de c Exemplo program exemploUpcase begin writeln upcase abcdefghijklmnopgrstuvwxyz end A 34 Val Cabe alho procedure val const s string var v var codigo word Descri o Converte o valor representado em s para um valor num rico e armazena este conte do na vari vel v que pode ser dos tipos longint real ou byte Caso a convers o n o seja bem sucedida o par metro codigo conter o ndice do caractere de s que impossibilitou a convers o Admite se espa os no in cio de s TT Exemplo programa exemploVal var i codigo integer begin val 72012 i codigo if codigo lt gt 0 then writeln Erro na posicao codigo
71. tor O importante manter o mesmo n mero de espa os em todo o c digo Deve se tamb m ter cuidado para n o se avan ar mais do que a ltima coluna da direita pois o resultado tamb m confuso conforme exemplo seguinte Exemplo program outro exemplo identacao ruim var i integer begin for i 1 to 10 do for j 1 to 10 do for k 1 to 10 do for 1 1 to 10 do write i j k 1 end 60 8 5 Realce de sintaxe O realce de sintaxe syntax highlighting uma funcionalidade presente na mai oria dos editores de texto para programa o Essa funcionalidade permite que cada categoria de termos da linguagem seja apresentada na tela com um realce formato ou cor espec fico Geralmente utilizada colora o para destacar os termos mas tamb m podem ser utilizados negrito it lico ou outras fontes Dessa forma coment rios tipos b sicos da linguagem n meros e comandos s o real ados facilitando a leitura do c digo fonte E importante lembrar que o realce n o afeta o significado do c digo fonte e sua nica fun o facilitar a leitura e edi o Afinal de contas o compilador funciona sobre um arquivo totalmente escrito usando se os caracteres vis veis da tabela ASCII 8 6 Simplicidade e clareza Simplicidade e clareza s o dois atributos muito importantes para aumentar a legibi lidade do c digo fonte A clareza torna o programa intelig vel e a simplicidade evita que a leitura
72. tru o o que um erro comum para principiantes Exemplo program exemplo condicional 3 var n integer begin writeln Informe um numero inteiro positivo read n if n mod 2 0 then writeln 0 numero n eh par else writeln 0 numero n eh impar writeln fim end 46 O programa anterior imprime a mensagem O numero n eh par apenas e t o somente se o resto da divis o inteira de n por 2 for nulo Caso contr rio a mensagem O numero n eh impar ser impressa Independentemente do desvio realizado a mensagem fim exibida na tela Assim uma maneira de distinguir o desvio condicional simples do completo visualizar a else como parte opcional do comando if No exemplo a seguir o programa gera um menu de op es Existe uma outra forma mais adequada de fazer o mesmo menu utilizando o comando case que ser visto na se o 7 5 3 Exemplo program par impar var opc integer begin writeln writeln MENU 9 1 Cadastro 2 Busca writeln 3 Ajuda writeln 4 Sair writeln read opc if opc 1 then writeln Cadastrando else if opc 2 then writeln Buscando else if opc 3 then writeln Mostrando ajuda else if opc 4 then writeln Saindo do programa else writeln Opcao Invalida end 7 5 3 Comando d
73. uma string vazia retornada Exemplo program exemploCopy var s t string begin t 1234567 s copy t 1 2 s 12 s copy t 4 2 s 45 s copy t 4 8 s 4567 end A 8 Cos Cabe alho function cos x real real Descri o Retorna o cosseno de x onde x um ngulo em radianos Exemplo program exemploCos var r real begin r cos Pi r I r cos Pi 2 r 0 r cos 0 J4 t 1 end A 9 Dec Cabe alho procedure dec var x qualquerTipoOrdinal decremento qualquerTipoOrdinal 67 Descri o Decrementa de x o valor de decremento Se decremento n o for especificado tido como 1 Exemplo program exemploDec var i integer begin kos uk dec i i 0 dec i 2 i 2 end A 10 Delete Cabecalho procedure delete var s string indice integer quantidade integer Descricao Remove de s a quantidade de caracteres iniciando na posi o indice Todos os caracteres depois daqueles deletados s o trazidos para imediatamente ap s o indice e o tamanho de s ajustado Exemplo program exemploDelete var s string begin s This is not easy delete s 9 4 s This is easy end A 11 Exp Cabe alho function exp var x real real Descri o Retorna e 68 Exemplo program exemploExp begin writeln exp 1 8 2 Deve imprimir
74. vel do tipo definido como retorno 15 O compilador n o aceita tipos estruturados como par metro ou como retorno de subprogramas a menos que estes tenham sido previamente definidos pelo programador na se o de declara o de tipos A linha que cont m o cabe alho do procedimento ou fun o define a assinatura ou prot tipo do subprograma isto estabelece o nome os par metros com respectivos tipos e no caso das fun es o tipo de retorno Os par metros podem ser passados de duas maneiras tanto para procedimentos quanto para fun es por valor ou por refer ncia Na assinatura do subprograma a diferen a que os par metros passados por refer ncia levam a palavra var antes da lista de par metros Os par metros passados por valor recebem uma c pia dos valores das vari veis usadas como argumento na chamada do subprograma Os par metros passados por refer ncia remetem na verdade pr pria vari vel que sofrer todas as altera es realizadas Os subprogramas s o invocados ou no programa principal ou por outro subpro grama da seguinte maneira e Os procedimentos s o invocados pelo seu nome e lista de argumentos da mesma maneira como se invocaria um comando qualquer da linguagem garantindo se o n mero de par metros da assinatura do subprograma e os respectivos tipos e As fun es s o invocadas tamb m por seu nome e lista de argumentos contudo a invoca o deve ser feita onde se espere um valor
75. xemplo program exemploPred begin writeln pred 3 Deve imprimir 2 end A 25 Random Cabe alho function random x longint longIntOuReal Descricao Retorna um n mero aleat rio maior do que 0 e menor do que x Exemplo program exemploRandom begin randomize writeln random 3 Imprimira 0 l ou 2 end A 26 Randomize Cabecalho procedure randomize 74 Descri o Inicializa o gerador de n meros aleat rios do Pascal garantindo que a sequ ncia de n meros gerados mude a cada execu o Exemplo Vide fun o anterior A 27 Round Cabecalho function round x real longint Descri o Arredonda o real x para o inteiro mais pr ximo Exemplo program exemploRound begin writeln round 1234 56 Imprime 1235 end A 28 Sin Cabecalho function sin x real real Descri o Retorna o seno de x onde x um ngulo em radianos Exemplo program exemploSin var r real begin r sin Pi r 0 ru sin PI 2 for end A 29 Sqr Cabecalho function sgr x real real Descri o Retorna o quadrado de x To Exemplo program exemploSqr var i Integer begin for i l to 10 do writeln sqr i 3 end A 30 Sqrt Cabe alho function sgrt x real real Descri o Retorna a raiz quadrada de um x positivo Exemplo program exemploSqrt var i Integer begin writeln
Download Pdf Manuals
Related Search
Related Contents
bombas sumergibles RV9 Lipo Slim MX 18E2 - Tohatsu Argentina 取扱説明書 Samsung MAX-KC930 Kasutusjuhend S-Ergo 100 series Copyright © All rights reserved.
Failed to retrieve file