28
 Apostila de linguagem de programação PASCAL Profª Valéria Ap. Perez Faria Página 1 1 FUNDAMENTOS DE PROGRA MAÇÃO 1.1 O QUE SÃO ALGORITMOS ? O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo, entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de calcular e mais tarde os computadores, o uso de algoritmos ressurgiu com grande vigor, como uma forma de indicar o caminho para a solução dos mais variados problemas.  Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é o caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitos.  Ao longo dos anos surgiram muitas formas de representar os algoritmos, alguns utilizando linguagens semelhantes às linguagens de programação e outras utilizando formas gráficas. O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios. Algoritmos não se aprendem: - Copiando algoritmos - Estudando algoritmos Algoritmos só se aprendem: - Construindo algoritmos - testando algoritmos  À especificação da sequência ordenada de passos que deve ser seguida para a realização de uma tarefa, garantindo a sua repetibilidade, dá-se o nome de algoritmo. Embora esta definição de algoritmo seja correta, podemos definir algoritmo, de maneira informal e completa como: Algoritmos é um conjunto de regras, bem definidas, para a solução de um problema em um tempo finito e com um número finto de passos.  Algoritmo pode ser definido também como um conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída. Um algoritmo deve sempre possuir pelo menos um resultado, normalmente chamado de saída, e satisfazer a propriedade da efetividade, i sto é, todas as operações. especificadas no algoritmo devem ser suficientemente básicas para que possam ser executadas de maneira exata e num tempo finito. Na prática não é importante ter-se apenas um algoritmo, mas sim, um bom algoritmo. O mais importante de um algoritmo é a sua correção, isto é, se ele resolve realmente o problema proposto e o faz exatamente. Para se ter um algoritmo, é necessário: i. Que se tenha um número finito de passos; ii. Que cada passo esteja precisamente definido, sem possíveis ambiguidades; iii. Que existam zero ou mais entradas tomadas de conjuntos bem definidos; iv. Que existam uma ou mais saídas;

APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1

Embed Size (px)

Citation preview

Page 1: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 1/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 1

1 FUNDAMENTOS DE PROGRAMAÇÃO

1.1 O QUE SÃO ALGORITMOS ?

O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do

tempo, entretanto, ele foi bastante esquecido pela matemática. Com o adventodas máquinas de calcular e mais tarde os computadores, o uso de algoritmosressurgiu com grande vigor, como uma forma de indicar o caminho para asolução dos mais variados problemas.Algoritmo não é a solução do problema, pois, se assim fosse, cada problemateria um único algoritmo. Algoritmo é o caminho para a solução de umproblema, e em geral, os caminhos que levam a uma solução são muitos.Ao longo dos anos surgiram muitas formas de representar os algoritmos,alguns utilizando linguagens semelhantes às linguagens de programação eoutras utilizando formas gráficas. O aprendizado de algoritmos não seconsegue a não ser através de muitos exercícios.Algoritmos não se aprendem:- Copiando algoritmos- Estudando algoritmosAlgoritmos só se aprendem:- Construindo algoritmos- testando algoritmos

À especificação da sequência ordenada de passos que deve ser seguida paraa realização de uma tarefa, garantindo a sua repetibilidade, dá-se o nome de

algoritmo. Embora esta definição de algoritmo seja correta, podemos definiralgoritmo, de maneira informal e completa como:

Algoritmos é um conjunto de regras, bem definidas, para a solução de umproblema em um tempo finito e com um número finto de passos.

Algoritmo pode ser definido também como um conjunto de valores comoentrada e produz algum valor ou conjunto de valores como saída. Um algoritmodeve sempre possuir pelo menos um resultado, normalmente chamado desaída, e satisfazer a propriedade da efetividade, isto é, todas as operações.especificadas no algoritmo devem ser suficientemente básicas para que

possam ser executadas de maneira exata e num tempo finito.

Na prática não é importante ter-se apenas um algoritmo, mas sim, um bomalgoritmo. O mais importante de um algoritmo é a sua correção, isto é, se eleresolve realmente o problema proposto e o faz exatamente.Para se ter um algoritmo, é necessário:

i. Que se tenha um número finito de passos;ii. Que cada passo esteja precisamente definido, sem possíveisambiguidades;iii. Que existam zero ou mais entradas tomadas de conjuntos bemdefinidos;

iv. Que existam uma ou mais saídas;

Page 2: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 2/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 2

v. Que exista uma condição de _m sempre atingida para quaisquerentradas e num tempo finito.

Para que um computador possa desempenhar uma tarefa é necessário queesta seja detalhada passo a passo, numa forma compreensível pela máquina,utilizando aquilo que se chama de programa.

Neste sentido, um programa de computador nada mais é que um algoritmoescrito numa forma compreensível pelo computador.

1.1.1 POR QUE PRECISAMOS DE ALGORITMOS ?

Vejamos o que algumas pessoas importantes, para a Ciência da Computação,disseram a respeito de algoritmo: _A noção de algoritmo é básica para toda aprogramação de computadores_. [KNUTH - Professor da Universidade deStanford, autor da coleção _The art of computer programming_]“O conceito central da programação e da ciência da computação é o conceitode algoritmo”. [WIRTH - Professor da Universidade de Zurique, autor dediversos livros na área e responsável pela criação de linguagens deprogramação como ALGOL, PASCAL e MODULA-2].A importância do algoritmo está no fato de termos que especificar umasequência de passos lógicos para que o computador possa executar umatarefa qualquer, pois o mesmo por si só não tem vontade própria, faz apenas oque mandamos. Com uma ferramenta algorítmica, podemos conceber umasolução para um dado problema, independendo de uma linguagem específica eaté mesmo do próprio computador.

1.1.2 MÉTODO PARA CONSTRUIR UM ALGORITMO

Utilizando os conceitos já desenvolvidos, esquematizaremos um método paraconstruir um algoritmo logicamente correto:i. Ler atentamente o enunciado: Deve-se reler o enunciado de um exercícioquantas vezes forem necessárias, até compreendê-lo completamente. A maiorparte da resolução de um exercício consiste na compreensão completa doenunciado.ii. Retirar a relação das entradas de dados do enunciado Através do enunciado,descobrimos quais são os dados que devem ser fornecidos ao programa, viateclado, a partir dos quais são desenvolvidos os cálculos. Obs. Pode haveralgum algoritmo que não necessite da entrada de dados (pouco comum).

iii. Retirar do enunciado as informações de saída Através do enunciadopodemos descobrir quais são as informações que devem ser mostradas paracompor o resultado final, objetivo do algoritmo.4. Determinar o que deve ser feito para transformar as entradas em saídasNessa fase é que teremos a construção do Algoritmo propriamente dito.Devemos determinar qual sequência de passos ou ações é capaz detransformar um conjunto de dados nas informações de resultado.

1.2 TIPOS DE INFORMAÇÃO

Todo o trabalho realizado por um computador é baseado na manipulação das

informações contidas em sua memória. Estas informações podem serclassificadas em dois tipos:

Page 3: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 3/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 3

As instruções, que comandam o funcionamento da máquina edeterminam a maneira como devem ser tratados os dados.

Os dados propriamente ditos, que correspondem à porção dasinformações a serem processadas pelo computador.

A classificação apresentada a seguir não se aplica a nenhuma linguagem de

programação específica; pelo contrário, ela sintetiza os padrões utilizados namaioria das linguagens.

1.2.1 TIPOS INTEIROS (NUMÉRICOS)

São caracterizados como tipos inteiros, os dados numéricos positivos ounegativos. Excluindo-se destes qualquer número fracionário. Como exemplodeste tipo de dado, tem-se os valores: 35, 0, -56, 1024 entre outros.

1.2.2 TIPOS REAIS (NUMÉRICOS)

São caracterizados como tipos reais, os dados numéricos positivos e negativose números fracionários. Como exemplo deste tipo de dado, tem-se os valores:35, 0, -56, 1.2, -45.987 entre outros.

1.2.3 TIPOS CARACTERES

São caracterizados como tipos caracteres, as sequências contendo letras,números e símbolos especiais. Uma sequência de caracteres deve ser indicadaentre aspas (__). Este tipo de dado também é conhecido como string,alfanumérico, string, literal ou cadeia. Como exemplo deste tipo de dado,

tem-se os valores: “Programação”, “Rua Alfa, 52 Apto 1”, “Fone 574 -9988”,“04387-030”, “ “, “7” entre outros. 

1.2.4 TIPOS LÓGICOS

São caracterizados como tipos lógicos os dados com valor verdadeiro e falso,sendo que este tipo de dado poderá representar apenas um dos dois valores.Ele é chamado por alguns de tipo booleano, devido à contribuição do filósofo ematemático inglês George Boole na área da lógica matemática.

1.3 VARIÁVEIS

Na programação, uma variável é um objeto (uma posição, frequentementelocalizada na memória) capaz de reter e representar um valor ou expressão.Enquanto as variáveis só “existem” em tempo de execução, elas sãoassociadas a “nomes”, chamados identificadores, durante o tempo dedesenvolvimento.

1.3.1 ARMAZENAMENTO DE DADOS NA MEMÓRIA

Para armazenar os dados na memória, imagine que a memória de umcomputador é um grande arquivo com várias gavetas, onde cada gaveta pode

armazenar apenas um único valor (seja ele numérico, caractere ou lógico). Seé um grande arquivo com várias gavetas, é necessário identificar com um

Page 4: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 4/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 4

nome a gaveta que se pretende utilizar. Desta forma o valor armazenado podeser utilizado a qualquer momento.

1.3.2 CONCEITO E UTILIDADE DE VARIÁVEIS

Têm-se como definição de variável tudo aquilo que é sujeito a variações, que éincerto, instável ou inconstante. E quando se fala de computadores, temos queter em mente que o volume de informações a serem tratadas é grande ediversificado. Desta forma, os dados a serem processados serão bastantevariáveis. Como visto anteriormente, informações correspondentes a diversostipos dedados são armazenadas nas memórias dos computadores. Paraacessar individualmente cada uma destas informações, em princípio, serianecessário saber o tipo de dado desta informação (ou seja, o número de bytesde memória por ela ocupados) e a posição inicial deste conjunto de bytes namemória.Percebe-se que esta sistemática de acesso a informações na memória ébastante ilegível e difícil de se trabalhar. Para contornar esta situação criou-seo conceito de variável, que é uma entidade destinada a guardar umainformação.Basicamente, uma variável possui três atributos: um nome, um tipo de dadoassociado à mesma e a informação por ela guardada. Toda variável possui umnome que tem a função de diferenciá-la das demais.Cada linguagem de programação estabelece suas próprias regras de formaçãode nomes de variáveis. Adotaremos para os algoritmos, as seguintes regras:

i. um nome de variável deve necessariamente começar com uma letra;ii. um nome de variável não deve conter nenhum símbolo especial,

exceto a sublinha ( _ ) e nenhum espaço em branco;iii. Um nome de variável não poderá ser uma palavra reservada a umainstrução de programa.

Exemplos de nomes de variáveis: Salario - correto 1ANO - errado (não começou uma letra) ANO1 - correto SAL/HORA - errado (contém o caractere _/_) SAL_HORA - correto _DESCONTO - errado (não começou com uma letra)

Obviamente é interessante adotar nomes de variáveis relacionados às funçõesque serão exercidas pelas mesmas dentro de um programa. Outro atributocaracterístico de uma variável é o tipo de dado que ela pode armazenar. Esteatributo define a natureza das informações contidas na variável. Por último há oatributo informação, que nada mais é do que a informação útil contida navariável.Uma vez definidos, os atributos nome e tipo de dado de uma variável nãopodem ser alterados e assim permanecem durante toda a sua existência,desde que o programa que a utiliza não seja modificado. Por outro lado, oatributo informação está constantemente sujeito a mudanças de acordo com ofluxo de execução do programa. Em resumo, o conceito de variável foi criadopara facilitar a vida dos programadores, permitindo acessar informações na

Page 5: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 5/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 5

memória dos computadores por meio de um nome, em vez do endereço deuma célula de memória.Exemplo: Suponha que fosse atribuído os seguintes valores às seguintesvariáveis: A = _mesa_, B = 0, C = 2, D = -5.4, E = _João_ e E = 5.656.

1.4 INSTRUÇÕES PRIMITIVAS

Como o próprio nome diz, instruções primitivas são os comandos básicos queefetuam tarefas essenciais para a operação dos computadores, como entradae saída de dados (comunicação com o usuário e com dispositivos periféricos),e movimentação dos mesmos na memória. Estes tipos de instrução estãopresentes na absoluta maioria das linguagens de programação.Antes de passar à descrição das instruções primitiva, é necessária a definiçãode alguns termos que serão utilizados:

Dispositivo de entrada é o meio pelo qual as informações (maisespecificamente os dados) são transferidos pelo usuário ou pelos níveissecundários de memória ao computador. Os exemplos mais comuns sãoo teclado, o mouse, leitora ótica, leitora de código de barras, as fitas ediscos magnéticos.

Dispositivo de saída é o meio pelo qual as informações (geralmente osresultados da execução de um programa) são transferidos pelocomputador ao usuário ou aos níveis secundários de memória. Osexemplos mais comuns são o monitor de vídeo, impressora, fitas ediscos magnéticos.

Sintaxe é a forma como os comandos devem ser escritos, a fim de que

possam ser entendidos pelo tradutor de programas. A violação dasregras sintáticas é considerada um erro sujeito à pena do nãoreconhecimento por parte do tradutor;

Semântica é o significado, ou seja, o conjunto de ações que serãoexercidas pelo computador durante a execução do referido comando.Daqui em diante, todos os comandos novos serão apresentados pormeio de sua sintaxe e sua semântica, isto é, a forma como devem serescritos e a(s) ação(ões) que executam.

1.5 INTRODUÇÃO A LINGUAGEM PASCAL

A linguagem Pascal se destina à programação de computadores. Foidesenvolvida no final dos anos 60 na Suíça e seu nome é uma homenagem aocriador da primeira calculadora mecânica, o matemático francês do século XVIIBlaise Pascal.

Um dos principais fatores que motivaram o surgimento da linguagem foi aobtenção de uma linguagem simples, capaz de incentivar a edição deprogramas claros e facilmente legíveis, favorecendo a utilização das boastécnicas de programação.Assim como as outras linguagens de programação, o Pascal possui váriasversões. Cada fabricante cria sua própria versão com suas particularidades. As

versões mais famosas são o Turbo Pascal, da Borland International, e o MS-Pascal, da Microsoft. Existem versões de Pascal para todos os tipos de

Page 6: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 6/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 6

computadores, desde MSX e CP-500 a computadores de grande porte como oIBM 4381.À medida que o tempo passa, cada fabricante costuma atualizar e melhorar asversões de seus programas. O mesmo acontece com as linguagens deprogramação. Em 1983, a Borland criou o Turbo Pascal, versão 1. Essa versão

inicial passou por sucessivas atualizações até que em 1991 tínhamos o TurboPascal, versão 6. Neste texto, onde nos referirmos simplesmente à linguagemPascal, estamos nos referindo à versão 5 do Turbo Pascal, lançada em 1988.

1.6.1 PROGRAMAS FONTE, OBJETO E EXECUTÁVEL

Normalmente, quando pensamos em “elaborar um programa”, estamospensando em fazer um texto com palavras do tipo "read", "write", "function","end", etc. Neste texto, cada palavra escrita obedece a uma gramática rigorosaditada pela linguagem de programação. Queremos que o computador executecada comando associado a cada palavra que escrevemos. Este texto a queestamos nos referindo é chamado programa fonte.Internamente, todo computador só entende uma linguagem chamadalinguagem de máquina, formada exclusivamente por números binários, cujosúnicos algarismos são 0 e 1. Logo, o programa fonte deve passar por algumprocesso de tradução para que o computador possa entendê-lo. Essa traduçãoé chamada compilação. O programa fonte, após a compilação, recebe o nomede programa objeto.Apesar do programa objeto estar na linguagem do computador, ele ainda nãopode ser executado pois, sob um certo aspecto, está ainda incompleto. Faltaminstruções nele que ensinem o computador a executar os comandos básicos da

linguagem. Por exemplo, você pode usar uma função trigonométrica no seuprograma fonte, e na hora dela ser executada, o computador saberá comocalculá-la. Quem é que ensina ao computador a calcular valor de funçãotrigonométrica? A resposta a essa pergunta é simples: toda linguagem deprogramação possui um conjunto de instruções básicas pronto para seradicionado a qualquer programa objeto. Esse conjunto de instruções é abiblioteca padrão da linguagem. O ato de ligar (link) o programa objeto àbiblioteca padrão é chamado ligação (que algumas pessoas chamam de"linkagem", talvez pelo hábito de usar neologismos). O programa objeto após aligação com a biblioteca padrão torna-se um programa executável.+------------+ +------------+

| Programa | COMPILAÇÃO | Programa || fonte | -----------> | objeto |+------------+ +------------+

|----------->| Programa |+-------------+ | executável || Biblioteca | +-------------+| padrão |+-------------+

1.6.2 NOMES DOS ARQUIVOS EM DISCO

Os nomes com os quais os programas de qualquer linguagem de programaçãosão gravados no disco, obedecem às regras de formação de nomes do sistema

Page 7: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 7/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 7

operacional: todo arquivo do disco é especificado por um nome obrigatório comno máximo 8 caracteres e uma extensão opcional com no máximo 3caracteres. O nome e a extensão são separados por um ponto. Os caracteresque podem aparecer no nome ou extensão são letras, algarismos e algunscaracteres especiais como:

( ) - _ $ ! @ #

Não podem fazer parte do nome ou extensão os seguintes caracteres:

+ ? * \ / | < > [ ] : ; , .

É comum um programa fonte em Pascal ter extensão PAS. Se você nãomencionar a extensão de um arquivo, o Pascal incluirá automaticamente aextensão PAS, sempre que for feito algum uso do mesmo. Neste caso,dizemos que PAS é a extensão "default"( = omissão, falta) do Pascal. Aextensão, geralmente, classifica o tipo do arquivo. Algumas extensões bastantecomuns são:

PAS ---> Programa fonte em PascalBAS ---> Programa fonte em BASICC ---> Programa fonte em CFOR ---> Programa fonte em FORTRANPRO ---> Programa fonte em PROLOGASM ---> Programa fonte em AssemblyBAK ---> Arquivo cópia (back up) de outroBAT ---> Arquivo de lote (batch)

EXE ---> Programa executávelCOM ---> Programa executávelOBJ ---> Programa objetoSYS ---> Arquivo usado pelo sistema operacionalDOC ---> TextoTXT ---> TextoTPU ---> Unidade do Turbo Pascal

Por exemplo, para um programa que trate da resolução de sistemas lineares,um nome natural poderia ser SISTEMA.PAS. No entanto, o usuário poderiachamá-lo de @##!.)$$ se quisesse. Ambos são nomes válidos para o Pascal,aliás, para o DOS. Se no disco aparecer também um SISTEMA.BAK e um

SISTEMA.EXE, então é muito provável que o SISTEMA.BAK seja apenas umacópia do SISTEMA.PAS e o SISTEMA.EXE seja sua versão executável. Outrasversões de Pascal, bem como outras linguagens de programação, costumamcriar arquivos OBJ no disco, correspondentes aos programas objeto, mas não éesse o caso do Turbo Pascal. Logo, o programa objeto correspondente aSISTEMA.PAS será mantido apenas na memória e você não terá em disco umSISTEMA.OBJ.

2. FUNDAMENTOS DA PROGRAMAÇÃO EM PASCAL

Page 8: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 8/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 8

2.1 ESTRUTURAS DE UM PROGRAMA EM PASCAL

Um programa em Pascal é um conjunto de palavras e símbolos especiais(comandos, variáveis, funções, algarismos, parênteses, ...) escritos segundo asregras de uma sintaxe pré-fixada e possui a seguinte estrutura:

Cabeçalho; Especificação das unidades usadas pelo programa; Declarações de tipos, constantes, variáveis, rótulos, funções e

procedimentos; Seção principal.

O cabeçalho é usado para dar nome ao programa e possui a forma:PROGRAM Nome_do_programa;O cabeçalho é identificado pela palavra chave PROGRAM, seguida de umnome que identificará o programa, e encerra-se com um ponto-e-vírgula. Eleserve apenas para orientação do usuário.

Exemplo:PROGRAM Teste;Uma linha como essa, atribui o nome _Teste_ a um programa. A especificaçãodas unidades usadas é feita com um comando USES, seguido dos nomes dasunidades a serem usadas separadas por vírgula, com um ponto-e-vírgula nofinal da linha:USES unidade1, unidade2, ... ;Em Pascal, diversos comandos podem ser agrupados em conjuntosdenominados unidades (units).Temos assim uma unidade para vídeo, outra para manipulação de arquivos emdisco, outra com os comandos gráficos, etc. Exemplo:

USES Crt, Graph;Esta declaração permite que sejam usados no programa comandos, funções,constantes, ... das unidades CRT e GRAPH.A seção principal do programa inicia-se com a palavra chave BEGIN, seguidade linhas de comandos, e encerra-se com a palavra chave END seguida de umponto:

BEGINcomando1;comando2;... ...

END.A seção principal é a única parte obrigatória de um programa em Pascal. Noentanto, em todo programa, tudo que vier a ser usado deverá ter sidodeclarado antecipadamente de forma adequada.A execução de todo programa inicia-se pela seção principal.Não serão diferenciadas letras minúsculas de maiúsculas e serão ignorados osespaços em branco.O final de um comando ou declaração é sinalizado por um ponto-e-vírgula. Asquatro expressões a seguir serão consideradas idênticas:

(1) X := A + B +C;

(2) x:=a+b +

Page 9: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 9/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 9

C;(3) x := a + (4) X :=

b + a + Bc;

2.1.1 IDENTIFICADORES

Um identificador é um conjunto de caracteres usado para dar nome a umprograma, unidade, rótulo, variável, tipo, constante, função ou procedimento.Todo identificador deve iniciar-se com uma letra e pode ser seguido porqualquer quantidade de outras letras, algarismos ou o sinal de sublinhado ( _ ).Somente os 63 primeiros caracteres serão considerados significativos.Exemplo:Identificadores permitidos: X, a1, Nota, NomeDoAluno,Valor_Maximo_de_F, MIN2P3.Identificadores inválidos: 1a, _Nota_Um, A+B, A(2).O comprimento do nome de um identificador não tem efeito negativo sobre odesempenho de um programa. Assim, o usuário está livre para criar nomeslongos para variáveis, funções, etc. sem o risco de tornar o programa lento. Depreferência, os nomes dos identificadores devem sugerir alguma relação com oque estiver sendo identificado.Alguns identificadores especiais só podem ser usados pela linguagem com umsignificado já pré-fixado. Esses identificadores são chamados palavrasreservadas ou palavras chave e são os seguintes:ABSOLUTE GOTO RECORDAND IF REPEAT

ARRAY IMPLEMENTATION SETBEGIN IN SHLCASE INLINE SHRCONST INTERFACE STRINGDIV INTERRUPT THENDO LABEL TODOWNTO MOD TYPEELSE NIL UNITEND NOT UNTILEXTERNAL OF USESFILE OR VAR

FOR PACKED WHILEFORWARD PROCEDURE WITHFUNCTION PROGRAM XOR

Existem, ainda, alguns identificadores que, apesar de terem um significado pré-definido para o Pascal, não são palavras reservadas, como por exemplo:REAL, INTEGER, READ, WRITE, PI, SIN, COS. O significado ou a funçãodesses identificadores podem ser redefinidos e alterados pelo usuário.

Page 10: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 10/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 10

2.1.2 TIPOS DEFINIDOS DO PASCAL

O diagrama a seguir, classifica os tipos pré- definidos do Pascal que serãomais utilizados no curso.

Vale ressaltar que a linguagem não possui apenas os tipos abaixo, mas estes éque aparecerão em 99% dos problemas. Em resumo vamos trabalhar com oseguintes tipos:- Integer - Real- String - Char

- Boolean (Lógico) - Array

2.1.2.1 TIPO INTEIRO

O tipo inteiro formado pelo subconjunto de inteiros, de acordo com a seguintetabela:Tipo Domínio Tamanho-------------------------------------------------------------integer [-32768, 32767] 2 bytes-------------------------------------------------------------

TIPO PRÉ DEFINIDOS

SIMPLES ESTRUTURADO

ARRAY

STRING ORDINAL REAL

BOOLEAN CHAR INTEIRO

REAL

INTEGER

Page 11: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 11/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 11

2.1.2.2 TIPO BOOLEAN

O tipo boolean é formado pelas constantes TRUE (verdadeiro) e FALSE (falso)e é usado para se avaliar expressões lógicas. É um dos tipos mais usados doPascal.

2.1.2.3 TIPO CHARO tipo caracter (char) é formado pelo conjunto dos 256 caracteres ASCII(letras, algarismos e símbolos especiais como +, =, %, $, #, <, etc.). Asconstantes deste tipo são escritas entre apóstrofos:'A', 'B', '3', etc.

2.1.2.4 TIPO REAL

O tipo real possui o seguinte domínio e tamanho:

Tipo Domínio Dígitos Tamanho---------------------------------------------------------------------------Real [2.9E-39, 1.7E38] 11-12 6 bytes---------------------------------------------------------------------------Em Pascal, as potências de 10 são indicadas com um E. Por exemplo, 2E07 éo mesmo que 2 vezes 10 elevado a 7; 3.28E-11 é o mesmo que 3,28Multiplicado por 10 à -11.Os domínios anteriores referem-se aos valores absolutos das constantes. Comisso, temos que o tipo real da tabela acima corresponde aos números queestão na união dos intervalos [2.9E-39, 1.7E38] e [-1.7E38, -2.9E-39]. Está

sendo indicada também a quantidade de dígitos significativos de cada tipo.2.1.2.5 TIPO STRING

O tipo string é uma sequência de caracteres de comprimento variando de 0 a255. Escrevendo string[N], estamos definindo N como tamanho máximo dasequência (neste caso N deve ser menor ou igual a 255). As constantes do tipostring devem estar entre apóstrofos.Exemplo: TYPENome = string[40];Neste exemplo está sendo declarado o tipo _Nome_ que é uma sequência de

até 40 caracteres.Podem ser consideradas deste tipo as constantes 'Turbo Pascal 5.0','1991/1992' e 'UFPB - CCEN - Dep. de Matemática’. Falaremos dos tipos restantes em capítulos posteriores.

2.1.3 DECLARAÇÃO DE VARIÁVEIS

Todas as variáveis usadas por um programa em Pascal devemobrigatoriamente ser declaradas com antecedência em um bloco dedeclarações VAR da seguinte forma:VAR

Identificador, ..., Identificador: Tipo1;Identificador, ..., Identificador: Tipo2;

Page 12: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 12/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 12

... ...Seguem alguns exemplos de declaração de variáveis na linguagem Pascal:VARx, y, z: real;i, j, k: integer;

Inicio, Fim: boolean;Tamanho: integerNome_do_arquivo: string[15];Neste bloco VAR estão sendo declaradas as variáveis x, y, z como sendo dotipo real, uma variável Tamanho do tipo integer, além de outras variáveis (i, j,...). Os tipos das variáveis não podem ser mudados durante a execução doprograma e os valores que elas podem assumir devem ser compatíveis com oseu tipo declarado. Por exemplo, a variável i acima pode assumir o valor 2309,mas não pode assumir um valor fracionário como 0.71.

2.1.4 DECLARAÇÃO DE CONSTANTES

As constantes de um programa Pascal devem ser declaradas em um blocoCONST na forma:CONSTIdentificador = Expressão;Identificador = Expressão;... ...Identificador: tipo = Valor;Identificador: tipo = Valor;... ...

Seguem alguns exemplos de declaração de constantes:CONSTPi = 3.1415926;NumeroMaximoDeLinhas = 1024 + 253 + 5;Mensagem: string[20] = 'Hello world!';X: integer = 7;As constantes que são declaradas sem a especificação de tipo não podem seralteradas durante a execução do programa. Aquelas cujas declaraçõescontiverem o tipo base, chamadas _constantes tipadas_, desempenham umpapel parecido com o das variáveis e podem ser alteradas durante a execuçãodo programa. A diferença entre uma variável e uma constante tipada é que a

variável não pode ter nenhum "valor inicial" na sua declaração.

2.1.5 COMANDO DE ATRIBUIÇÃO

A atribuição de um valor ou de uma expressão a um identificador é feita atravésdo operador de atribuição := . A sintaxe de uma operação de atribuição é:Identificador := expressão;Neste tipo de operação, a expressão e o identificador devem ser do mesmotipo, exceto no caso em que o identificador for do tipo real e a expressão dotipo inteiro (pois, neste caso, o valor inteiro da expressão será

automaticamente transformado em real). Exemplo: Considere a seguintedeclaração de variáveis:

Page 13: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 13/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 13

VARa, b, c: integer;x, y: real;teste: boolean;data: string;

Neste caso, são válidas as atribuições:

a := -17;x := y + 3.14;teste := false;data := '5/12/1991'

Mas não são válidas as atribuições:

teste := a + b + 1;c := 6.02E23;

Em caso de várias atribuições a um mesmo identificador, será consideradaapenas a última atribuição efetuada.

2.1.6 COMENTÁRIOS

Comentários são usados para aumentar a clareza de um programa. Todos oscomentários são desprezados na hora da compilação, logo, eles não têminfluência no desempenho e nem no tamanho do programa objeto. Umcomentário é colocado entre chaves ou entre (* e *).

{ Este é um exemplo de comentário... }

(* e este também é um comentário! *)

Para o Pascal, as declarações VAR abaixo serão consideradas equivalentes.Para o usuário, o segundo bloco de declarações VAR oferece mais clareza.

VAR mat, nota, cod: string;

VARmat, { matrícula }nota, { nota final }

cod: { codigo do curso }string;

Page 14: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 14/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 14

2.1.7 EXPRESSÕES ARITMÉTICAS

As operações aritméticas pré-definidas do Pascal são:

+ Adição - Subtração

  / Divisão * MultiplicaçãoDIV Quociente da divisão MOD Resto da divisãointeira inteira

9/2 = 4.5 -3*7 = -219 DIV 2 = 4 9 MOD 2 = 110 DIV 2 = 5 10 MOD 2 = 0

Estas operações podem ser utilizadas com operandos reais ou inteiros, excetoDIV e MOD que exigem operandos inteiros. A prioridade entre as operações éa mesma da Matemática:

i. Primeiramente, são efetuadas as multiplicações e divisões (/, DIV eMOD);

ii. por último, são efetuadas as adições e subtrações. Temos então doisníveis de prioridades.

Dentro de um mesmo nível, são efetuadas as operações da esquerda para adireita.

Exemplo: Na expressão 5 - 2/3*7 + 1 as operaçoes são efetuadas na seguinteordem: divisão, multiplicação, subtração e adição.Se uma expressão contiver parênteses, então será executado primeiramente oque estiver entre parênteses. Exemplo:

Expressão Valor---------------------------------5 + 2*4 13(5 + 2)*4 287 DIV 2*3 97 DIV (2*3) 1

----------------------------------

Observações:i. Não existe operador pré-definido para a potenciação.ii. O sinal de multiplicação nunca poderá ser omitido.iii. A divisão / sempre fornece um resultado real, mesmo que os

operandos sejam inteiros.iv. Se todos os operandos forem inteiros e as operações envolvidas

forem +, -, *, MOD ou DIV, então o resultado será inteiro.

Page 15: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 15/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 15

2.1.8 FUNÇÕES MATEMÁTICAS PRÉ-DEFINIDAS

Entre as muitas funções pré-definidas do Pascal, as que estão relacionadascom valores numéricos são:

Função Descrição Tipo do resultado------------------------ -----------------------------------------------------LN Logaritmo natural realEXP Exponencial de base e realABS Valor absoluto real ou inteiroSQR Quadrado real ou inteiroSQRT Raiz quadrada realSIN Seno realCOS Cosseno realARCTAN Arco-tangente realROUND Arredondamento inteiroTRUNC Parte inteira inteiroINT Parte inteira realFRAC Parte fracionária realODD Testa se é ímpar booleano-------------------------------------------------------------------------------Em todas elas deve-se acrescentar um argumento entre parênteses à frente donome da função, como em COS(x) ou SQRT(y). O Pascal não tem pré-definidas funções como tangente, secante, arco-seno, ... . Em breve serámostrado como o usuário poderá definir essas funções, bem como outras comdomínio e contradomínio mais complexos.

Exemplo: O modulo do seno do quadrado de x e codificado comoABS(SIN(SQR(x))). Neste tipo de expressão, é obrigatória que a quantidade deparênteses abertos seja a mesma de fechados.Exemplo: O quociente entre x 

2 + 3x  e x 2   + 5 se escreve como (SQR(x) +

3*x)/(SQR(x) + 5) ou como (x*x + 3*x)/(x*x + 5). Nestes casos, o uso dosparênteses é fundamental.

Exemplo: A derivada do arco-seno de x, ou seja, 1 sobre a raiz quadrada dadiferença entre 1 e o quadrado de x, se escreve como 1/SQRT(1 - SQR(x)).Exemplo: O cubo de x pode ser codificado como x*x*x, ou como EXP(3*LN(x)).Em geral, x elevado a y pode ser codificado como EXP(y*LN(x)).

Exemplo: A função booleana ODD testa se um inteiro n e impar ou não.ODD(n) fornece um valor TRUE se n for ímpar e FALSE em caso contrário.Desse modo, ODD(5) = TRUE e ODD(4) = FALSE. Exemplo:

TRUNC(1.35) = 1 (inteiro) TRUNC(1.97) = 1 (inteiro)INT(1.35) = 1 (real) INT(1.97) = 1 (real)ROUND(1.35) = 1 ROUND(1.97) = 2FRAC(1.35) = 0.35 FRAC(1.97) = 0.97

As funções INT e TRUNC são numericamente equivalentes. A diferença entreelas está apenas no tipo do valor retornado.

Page 16: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 16/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 16

2.1.9 EXPRESSÕES LÓGICAS

Expressão lógica (ou expressão booleana) é uma expressão cujos operadoressão operadores lógicos e cujos operandos são relações ou variáveis do tipobooleano. Os operadores lógicos são AND (e), OR (ou), NOT (não) e XOR (ou

exclusivo). Se X e Y são variáveis ou constantes booleanas, então:

i. X AND Y é TRUE somente quando X e Y forem ambas TRUE.

ii. X OR Y é FALSE somente quando X e Y forem ambas FALSE.

iii. NOT X é TRUE quando X for FALSE e é FALSE quando X for TRUE.

Uma relação é uma comparação realizada entre valores do mesmo tipo, cujoresultado é TRUE ou FALSE. A comparação é indicada por um dos operadoresrelacionais a seguir:

= igual <> diferente< menor > maior<= menor ou igual >= maior ou igual

No caso de variáveis do tipo CHAR ou STRING, será usada a ordem alfabéticapara comparar duas constantes ou variáveis.Exemplo: Sejam a, b, c, d variáveis booleanas cujos valores são:

a := 1 < 2;b := 3 >= 5;c := a OR b;

d := a AND b;Como 1 < 2 é uma relação verdadeira, temos que a tem valor TRUE; 3 >= 5 éfalso, logo, b tem valor FALSE. Sendo a TRUE e b FALSE temos que c éTRUE, pois a OR b só seria FALSE se a e b fossem ambas FALSE. O valor ded é FALSE, uma vez que b é FALSE.Exemplo: Consideremos as variáveis x, y, z, nome1, nome2 e teste declaradasabaixo:

VARx, y, z: byte;

nome1, nome2: string;teste: boolean;Considere também as seguintes atribuições:

x := 3;y := 10;z := 4;nome1 := 'Guizinha';nome2 := 'Olezinho';teste := false;

Page 17: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 17/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 17

Temos então:Expressão Valor---------------------------------------------------------------------------------------------x <= y TRUE(x = z) OR (x + z >= y) FALSE

nome1 < nome2 TRUE(nome1 <> nome2) AND (NOT teste) TRUE(nome1 = nome2) AND (x = y) FALSE(NOT (x > z)) OR teste OR (y <> z) TRUEOdd(x) AND (NOT Odd(y)) TRUEOdd(x) XOR Odd(y + 1) FALSE(x mod 3 = 0) AND (y div 3 <> 1) FALSESqr(Sin(x)) + Sqr(Cos(x)) = 1 TRUE----------------------------------------------------------------------------------------------A prioridade das operações aritméticas, lógicas e relacionais está definida naseguinte tabela:

Prioridade Operadores-----------------------------------------------------------------------------------------------1 (alta) NOT2 *. /, DIV, MOD, AND3 +, -, OR, XOR4 (baixa) =, <=, >=, <, >, <>-----------------------------------------------------------------------------------------------

Page 18: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 18/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 18

3 - ENTRADA E SAÍDA DE DADOS

Os comandos de entrada ou saída fazem a comunicação entre o programa queestá sendo executado e os periféricos de entrada (teclado, disco) ou os desaída (vídeo, disco, impressora). A entrada ou saída de dados para um disco

será tratada em capítulo posterior.

3.1 COMANDOS DE ENTRADA

Um comando de entrada, também chamado de comando de leitura, transferedados do dispositivo de entrada (teclado) para uma ou mais variáveis namemória, funcionando como um comando de atribuição. Os dados que entramdevem ser compatíveis com os tipos das variáveis. Dois dos comandos deentradas do Pascal são READ e READLN, cujas sintaxes são:

READ(Var1, Var2, ...); ---> Transfere dados para as variáveis Var1, Var2, ...

READLN(Var1, Var2, ...); ---> Transfere dados para as variáveis Var1, Var2, ...e, após a leitura dos dados, posiciona o cursor no início da próxima linha datela.Cada comando de leitura deve ser encerrado pressionando-se a tecla ENTER.Caso haja mais de um dado a ser lido por um comando de leitura, deve-sesepará-los por pelo menos um espaço em branco.Exemplo: Suponhamos que A e B sejam duas variáveis reais de um programa.Quando a execução do programa chegar em um comando como

Read(A, B);Então o computador ficará esperando que sejam digitados dois números reaispara que sejam atribuídos às variáveis A e B. Por exemplo, digitando-se umalinha como

3.05 -5.17Pressionando-se ENTER ao final da digitação dos números, serão atribuídosos valores 3.05 a A e -5.17 a B. É como se o programa contivesse asatribuições:

A := 3.05; B := -5.17;

3.2 COMANDOS DE SAÍDA

Um comando de saída transfere dados para um dispositivo de saída (vídeo,impressora). Os dados que podem ser transferidos são valores ou expressõesenvolvendo constantes ou variáveis. Dois comandos de saída bastante usadossão WRITE e WRITELN que têm sintaxes:

WRITE(v1, v2, ...); ---> Mostra na tela os valores de v1, v2, ...

WRITELN(v1, v2, ...); ---> Mostra na tela os valores de v1, v2, ... eposiciona o cursor no início da próxima linha na tela.

Page 19: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 19/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 19

Onde v1, v2, ... acima podem ser expressões envolvendo variáveis ouconstantes do tipo inteiro, real, string, booleano ou char.Exemplo: Suponhamos que X seja uma variavel inteira de um programa, comvalor 15 no momento em que for executado o comando:WRITELN('O valor encontrado foi ', X);

Neste caso, o computador mostrará na tela algo como:

O valor encontrado foi 15.

Depois posicionará o cursor no início da linha seguinte a essa na tela. Observeque a mensagem "O valor encontrado foi "é uma constante do tipo string.Portanto, neste exemplo, o comando de saída mostra os valores de umaconstante e de uma variável.Exemplo: Suponhamos que X, Y, Z, A, B e C sejam variáveis com valoresrespectivamente iguais a ' Antonio ', ' Jose ', ' Maria ', 60, 75 e 90. Então, ocomando:

WRITELN(x, a, y, b, z, c);

Exibirá na tela algo como:Antonio 60 Jose 75 Maria 90

A sequência de comandos: WRITELN(x); WRITELN(a); WRITELN(y);WRITELN(b); WRITELN(z); WRITELN(c);Mostrará algo como:

25Antonio60Jose75Maria90

Enquanto que

WRITELN(x, y, z); WRITELN(a, b, c);

Exibirá: Antonio Jose Maria607590

Em cada um desses casos, o cursor ficará posicionado no início de uma novalinha.Exemplo: Vamos elaborar agora nosso primeiro programa completo. Queremosdigitar dois números inteiros no teclado e desejamos que o computador mostresua soma no vídeo. Sejam Num1 e Num2 os nomes das variáveis que vãoguardar na memória os valores dos números digitados no teclado. A atribuiçãode valores a Num1 e Num2, neste caso, será feita por um comando como

READ(Num1, Num2);

Page 20: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 20/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 20

Ou como:READLN(Num1, Num2);

No entanto, quando o computador executar esse tipo de comando, emmomento nenhum ele lhe indicará se ele está esperando um, dois, três ou mais

números. Tampouco indicará o tipo de dado que está sendo esperado, se é umdado numérico ou não. Devido a isso, é recomendado que antes de qualquercomando READ ou READLN, o programa contenha uma linha anterior com umWRITE ou WRITELN para mostrar alguma mensagem que oriente o usuário.

Neste caso, colocaremos um comando WRITE para mostrar a mensagemForneça dois números inteiros : _.

WRITE('Forneça dois números inteiros : ');

Uma vez introduzidos os valores de Num1 e Num2, para somá-los e mostrar oresultado da soma na tela, basta colocar a expressão Num1 + Num2 em umcomando de saída:

WRITELN('Soma = ', Num1 + Num2);

Observe que neste WRITELN temos uma constante do tipo string 'Soma = ' euma expressão aritmética Num1 + Num2.Nosso programa fica, então, com o seguinte aspecto:

PROGRAM SomaDeDoisInteiros;

VARNum1, Num2: integer;BEGINWRITE('Forneca dois numeros inteiros : ');READLN(Num1, Num2);WRITELN('Soma = ', Num1 + Num2);END.

Estamos atribuindo o nome _SomaDeDoisInteiros_ ao programa. Observe queos comandos do programa (WRITE..., READLN..., ...) devem ficar na seçãoprincipal do programa delimitados pelas palavras BEGIN e END. Não pode seromitido o ponto após o END. O bloco VAR de declaração de variáveis deve vir

antes da seção principal.É comum se deslocar para a direita as linhas de comandos compreendidasentre um BEGIN e um END. Esse tipo de deslocamento é chamadondentação. Uma vez digitado este programa, pressione simultaneamente asteclas CTRL e F9 para que ele seja executado. No caso deste programa, vocêverá em uma parte da tela algo parecido com:

Forneça dois números inteiros : 11 27Soma = 38

O caracter de sublinhado _ acima representa a posição do cursor na tela.

Qualquer outra saída de dado posterior à execução do programa seria feita apartir dessa posição. Se a seção principal deste programa fosse:

Page 21: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 21/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 21

BEGINWRITELN('Forneça dois números inteiros : ');READLN(Num1, Num2);WRITE('Soma = ', Num1 + Num2);END.

Então teríamos uma tela como:Forneça dois números inteiros :11 27Soma = 38_ 

Observe a diferença na posição final do cursor.Observação: sem parâmetros, ou seja, só o nome do comando seguidoimediatamente de um ponto e vírgula. Um WRITELN sem parâmetros causa aimpressão de uma linha em branco. Por exemplo:

WRITELN; WRITELN; WRITELN;

Isso causa a impressão de três linhas em branco.Um READLN sem parâmetros faz o computador ficar esperando que sepressione a tecla ENTER para poder continuar. Temos assim, uma maneira decausar uma pausa na execução de um programa.Durante a execução do fragmento de programa a seguir, o computador colocauma mensagem na tela (_Para continuar..._), e pára temporariamente aexecução até ser pressionado ENTER.

WRITE('Para continuar, pressione [ENTER]');READLN;... ...

3.3 FORMATAÇÃO

A impressão dos valores a serem impressos por um WRITE ou WRITELN podeser formatada através da especificação da largura do campo de impressão oudo número de casas decimais.Para valores do tipo inteiro, booleano, string ou char, basta colocar o tamanhodo campo de impressão à direita do valor a ser impresso. Neste caso, o valor eo tamanho do campo devem estar separados por dois pontos (:).

WRITE(V:n) ou WRITELN(V:n) ---> Imprime o valor de V em umcampo de n espaços

Se o valor de n for maior do que a quantidade necessária para a impressão dovalor de V, então a largura do campo será completada com espaços em brancoadicionados à esquerda.Exemplo: Consideremos x1, x2, s1, s2 variáveis com valores definidos pelasatribuições

x1 := 8; s1 := 'A';x2 := 19; s2 := '*';

Page 22: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 22/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 22

Para cada comando WRITE abaixo, temos as seguintes saídas mostradas natela:

Comando Saída

----------------------------------------------------------WRITE(x1) 8WRITE(x1:2) ^8WRITE(x1:10) ^^^^^^^^^8WRITE(x1, s1, x2, s2) 8A19*WRITE(x1, ' ', s1, ' ', x2, ' ', s2) 8^Â19^*WRITE(x1, s1:2, x2:5, s2:3) 8^Â^^19^ *̂WRITE(x1:6, x2:2) ^^^^^819WRITE(x1, ' ':5, x2) 8^^^^^19----------------------------------------------------------

O símbolo ^ na tabela acima assinala os espaços em branco. Em um comandoWRITE ou WRITELN, a impressão de n espaços em branco pode ser feitaacrescentando-se à lista de valores a serem impressos uma expressão daforma ' ':n, como no último exemplo da tabela acima. O tamanho do campo deimpressão pode ser uma expressão aritmética. Por exemplo, WRITE(dado:5) éo mesmo que WRITE(dado:(11 - 9 + 3)).Para se formatar a impressão de um valor real, devem ser fornecidos doisinteiros que correspondem ao tamanho do campo de impressão e à quantidadede casas decimais a serem impressas.

WRITE(x:M:N) ou WRITELN(x:M:N) ---> Imprime o valor de x em umcampo de largura M,com N casas decimais.

Se o valor de M for maior do que a quantidade necessária para a impressão dovalor de x, então a largura do campo será completada com espaços em brancoadicionados à esquerda. O ponto decimal ou o sinal negativo ocupam umespaço do campo de impressão. O tamanho do campo de impressão e aquantidade de casas decimais podem ser fornecidos em forma de expressãoaritmética. Valores reais sem formatação são impressos em forma de potênciasde 10.Exemplo: Consideremos Pi e X constantes reais com valores respectivamente

iguais a 3.1415926535 e -1991. A tabela a seguir mostra as diversas saídasgeradas pelo respectivo comando WRITE. Denotamos os espaços em brancopor_.

Comando Saída---------------------------------------------------------------------------------WRITE(X:9:3) -1991.000WRITE(X:15:2) ^^^^^^^-1991.00WRITE(X:10:2) ^^-1991.00WRITE(X) -1.9910000000E+03WRITE(Pi) 3.1415926535E+00WRITE(Pi:4:2) 3.14

WRITE(Pi:7:2) ^^^3.14WRITE(Pi:10:3) ^^^^^3.141

Page 23: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 23/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 23

WRITE(Pi:10:6) ^^3.141592WRITE(Pi:10:8) 3.14159265WRITE(Pi:5:0) ^^^^3-----------------------------------------------------------------------------------

Exemplo: Vamos construir agora um programa que solicita ao usuário a medida

de um ângulo em graus (um número inteiro) e mostra na tela o seno, o cossenoe a tangente do ângulo fornecido.As funções trigonométricas pré-definidas SIN(x) e COS(x) operam com umângulo x em radianos.Logo, o programa deve ser esperto o suficiente para transformar o ângulo emgraus, fornecido pelo usuário, para um valor equivalente em radianos. Isto éfeito através de uma multiplicação por Pi/180.O Pascal tem o valor de Pi pré-definido com 19 casas decimais. Vamos usartrês variáveis reais "seno", "cosseno" e "tangente" para guardar os valoresdesejados. Vamos exigir que a impressão dos valores seja em um campo com8 espaços e 4 casas decimais.PROGRAM Sen_Cos_Tg; { Calculo do seno, cosseno e tangente de um angulo}VAR

AnguloEmGraus: INTEGER;seno, cosseno, tangente, AnguloEmRadianos: REAL;BEGIN { inicio da seção principal }WRITE('Forneça a medida de um angulo (em graus) : ');READLN(AnguloEmGraus);WRITELN; { gera uma linha em branco }AnguloEmRadianos := AnguloEmGraus*Pi/180; { transforma graus em radianos}seno := SIN(AnguloEmRadianos); { Calculo dos valores }cosseno := COS(AnguloEmRadianos); { desejados. Lembre- }{ se que o Pascalnão }tangente := seno/cosseno; { tem função tangente } { pré-definida }{ Saída dos resultados }WRITELN('Seno de ', AnguloEmGraus, ' = ', seno:8:4);WRITELN('Cosseno de ', AnguloEmGraus, ' = ', cosseno:8:4);WRITELN('Tangente de ',AnguloEmGraus,' = ', tangente:8:4);END. { fim da seção principal }

Executando-se esse programa (após a digitação correta deve-se pressionarCTRL-F9 e ALT-F5), vemos na tela algo parecido com:

Forneça a medida de um angulo (em graus) : 50<----------+Seno de 50 = 0.7660 |Cosseno de 50 = 0.6428 |Tangente de 50 = 1.1918 ||Linha em branco gerada pelo WRITELN; -----------------+

Page 24: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 24/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 24

3.4 O COMANDO CLRSCRA partir da versão 4, o Pascal passou a agrupar os comandos em unidades.Todos os comandos que usamos até agora (READ, WRITE, SIN, COS, ...)fazem parte da unidade padrão chamada SYSTEM.A unidade SYSTEM não precisa ser mencionada no programa; podemos usar

seus comandos à vontade. Sempre que algum comando de uma outra unidadefor usado, o nome da unidade precisa ter sido declarado em um comandoUSES, que deve ficar logo abaixo do cabeçalho do programa. A sintaxe doUSES é

USES Nome_da_unidade_1, Nome_da_unidade_2, ...;

Um comando que faz parte da unidade CRT e que é bastante usado, é ocomando CLRSCR (Clear Screen) cuja finalidade, como o próprio nomesugere, é limpar a tela. Muitos dos livros sobre Pascal disponíveis emPortuguês, referem-se às versões anteriores à 4. Nesses livros, não é feitareferência à unidade CRT.Exemplo: Queremos fornecer três números reais a, b e c ao computador equeremos que ele nos forneça, com três casas decimais, o valor da área dotriângulo cujos lados medem a, b e c. Vamos querer também que o computadorse dê ao trabalho de limpar a tela antes de pedir os valores de a, b, c. Vamosusar a fórmula da Geometria Plana que diz que, neste caso, a área desejada éigual à raiz quadrada de p(p - a)(p - b)(p - c) onde p é a metade da soma a + b+ c.

PROGRAM AreaDoTriangulo;{ Dados os números reais a, b, ç é fornecida o valor da área dotriângulo cujos lados têm essas medidas. }USES CRT; { Permite o uso de comandos da unidade CRT, comoo CLRSCR. Deve ser colocado nesta posição, logo abaixo docabeçalho }VARa, b, c, p, area: REAL;BEGINCLRSCR; { Limpa a tela }{ Leitura dos valores de a, b e c }WRITE('Valor de a: '); READLN(a);

WRITE('Valor de b: '); READLN(b);WRITE('Valor de c: '); READLN(c);{ Calculo da área }p := (a + b + c)/2;area := SQRT(p*(p - a)*(p - b)*(p - c));{ Impressão dos resultados na tela }WRITELN;WRITELN('A área do triangulo cujos lados medem');WRITELN(a:7:3, ',', b:7:3, ' e ',c:7:3,' é' ', area:7:3);END.

A impressão de um apóstrofo é obtida colocando-se dois apóstrofos

consecutivos como parte da constante string. Assim, WRITELN(' e _ ') temcomo saída na tela um "é", que não chega a ser um "e" acentuado, mas ajuda

Page 25: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 25/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 25

a leitura. No lugar dos três READLN acima, poderíamos ter colocado apenasum READLN(a, b, c). Este programinha não é inteligente o suficiente pararejeitar na entrada valores negativos ou valores inválidos como a = 3, b = 5, c =11. Após sua execução com os valores

a = 5, b = 7 e c = 8,4, temos as seguintes mensagens na tela:

Valor de a: 5Valor de b: 7Valor de c: 8.4

A area do triangulo cujos lados medem 5.000, 7.000 e 8.400 é 17.479

4 - ESTRUTURAS DE DECISÃO

Para resolver problemas complexos, um programa deve ser capaz de tomardecisões e escolher uma entre várias possibilidades. Nestes casos, sãonecessárias avaliações bem sucedidas de condições lógicas. O Pascal dispõede duas estruturas que podem determinar uma direção específica para umprograma: o comando IF-THEN-ELSE e o comando CASE.

4.1 COMANDOS COMPOSTOS

Chamaremos de comando composto a toda sequência finita de instruçõesseparadas entre si por um ponto-e-vírgula e delimitadas pelas palavras chaveBEGIN e END.Exemplo: A sequência de comandos a seguir é um comando composto:

BEGINClrScr;Write('Valor de x? ');Readln(x)END

Todo ponto-e-vírgula escrito antes de um END é opcional. É por isso queomitimos o ponto-e-vírgula do Readln(x) acima. Também é comum seacrescentar alguns espações em branco nas linhas de comandos entre oBEGIN e o END (esse acréscimo de espaços em branco costuma ser chamado  _endentação_ ou _identificação_). Onde a sintaxe do Pascal permitir uma

instrução simples, também permitirá um comando composto.

4.2 A ESTRUTURA DE DECISÃO IF

A estrutura de decisão IF seleciona para execução um entre dois comandos, oudecide se um determinado comando será executado ou não. A estruturaconsiste das cláusulas obrigatórias IF (se) e THEN (então) seguidas,opcionalmente, de uma cláusula ELSE (senão). Sua sintaxe é:

IF condição THENBEGINcomando1;

ENDELSE

Page 26: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 26/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 26

BEGINcomando2;END;ouIF condição THEN

BEGINcomando1;END;

onde _condição_ é uma expressão booleana. Se a condição for verdadeira, istoé, for avaliada em TRUE, então será executado o comando1; se a condição forfalsa (FALSE), será executado o comando2. Na sua segunda forma (sem oELSE), o IF não executará nenhuma ação se a condição for falsa.Exemplo: Consideremos a seguinte estrutura de decisão:

IF (x > 0) THENBEGINWRITE(Sqrt(x));ENDELSEBEGINx := 1;END;

Neste caso, se x for um valor numérico positivo, então será mostrado o valor dasua raiz quadrada.Em caso contrário, será atribuído a x o valor constante 1. A condição nestecaso é a expressão lógica x > 0, o comando1 é o WRITE(Sqrt(x)) e ocomando2 é a atribuição x := 1. A condição lógica deste exemplo não

precisaria estar entre parênteses.OBSERVAÇÃO IMPORTANTE: Não deve haver ponto-e-vírgula antes doELSE. Se houvesse, o ponto-e-vírgula seria considerado o final do IF e, nestecaso, o ELSE seria considerado o comando seguinte ao IF e seria rejeitado.Exemplo: Suponhamos que x seja uma variável real de um programa econsideremos o seguinte IF:

IF (x > -1) AND (x < 1) THENBEGINWriteln('X tem modulo menor do que 1');

ENDELSEBEGINWriteln('X tem modulo >= 1');END;

Se x em determinado momento valer 2, então a expressão booleana (x > -1)AND (x < 1) será falsa e, assim, será mostrada na tela a mensagem _X temmodulo >= 1_. Os parênteses dessa expressão booleana são essenciais. Semeles, teríamos x > -1 AND x < 1Veja que o AND tem prioridade sobre os operadores de comparação > e < ,

ficaríamos com uma expressão sem sentido equivalente a x > (-1 AND x) < 1.

Page 27: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 27/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 27

Exemplo: Consideremos o seguinte fragmento de um programa, no qual estãodefinidas a variável booleana CONTINUAR, a variável do tipo charRESPOSTA, e as variáveis inteiras A e B.

...Write('Continua? (s/n) ');

Readln(resposta);Continuar := (resposta = 'S') OR (resposta = 's');(* CONTINUAR será TRUE somente quando RESPOSTA for umS, maiúsculo ou minúsculo *)IF Continuar THENBEGIN (* Inicio do comando composto 1 *)Write('Forneca o valor de A : ');Readln(A);Write('Forneca o valor de B : ');Readln(B);END (* Fim do comando composto 1. Nao pode terponto-e-vírgula aqui *)ELSEBEGIN (* Inicio do comando composto 2 *)Writeln;Writeln('Pressione ENTER para encerrar');Readln;END; (* Fim do comando composto 2 e fim do IF *)...

No IF acima, se CONTINUAR for verdadeira, então serão solicitados valorespara A e B. Em caso contrário, o programa esperará ser pressionado a tecla

ENTER para encerrar. Nas constantes do tipo char ou string, é feita distinçãoentre letras minúsculas e maiúsculas. Logo, 'S' é considerado diferente de 's'.Exemplo: Queremos, neste exemplo, elaborar um programa que solicite dousuário um número real qualquer x e que seja mostrado na tela a sua raizquadrada. Se, por exemplo, x for igual a 4, queremos ver na tela umamensagem como:

A raiz quadrada de 4.000 é 2.000

Se x for negativo, por exemplo -9, queremos ver algo como A raiz quadrada de-9.000 é 3.000 i

A função pré-de_nida SQRT(x) calcula a raiz quadrada de x, se x for maior doque ou igual a 0. Portanto, se x for negativo, deveremos calcular a raiz de -x eacrescentar um "i"à direita do resultado. Temos assim uma situação em que oprograma deve decidir se calcula SQRT(x) ou se calcula SQRT(-x), um casotípico de uma estrutura de decisão IF:

PROGRAM RaizQuadrada;VAR

x: real;BEGIN

Write('Valor de x? '); Readln(x);IF (x >= 0) THEN

Page 28: APOSTILA  DE PROGRAMAÇÃO PASCAL _ PARTE1

5/10/2018 APOSTILA DE PROGRAMAÇÃO PASCAL _ PARTE1 - slidepdf.com

http://slidepdf.com/reader/full/apostila-de-programacao-pascal-parte1 28/28

 

Apostila de linguagem de programação PASCAL

Profª Valéria Ap. Perez Faria Página 28

BEGINWriteln('A raiz quadrada de ', x:7:3, ' e'' ',SQRT(x):7:3);ENDELSEBEGIN

Writeln('A raiz quadrada de ', x:7:3, ' e'' ',SQRT(-x):7:3, ' í);END;END.