






































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Este documento fornece uma visão geral da linguagem de programação pascal, incluindo sua história, identificadores pré-definidos, tipos de dados, operadores e manipulação de variáveis. Além disso, é abordada a manipulação de arquivos em pascal, com definição de tipos, variáveis arquivo, leitura e gravação de registros, posicionamento de ponteiro e verificação de fim de arquivo.
Tipologia: Notas de estudo
1 / 78
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Para os cientistas que desenvolveram o primeiro programa para traduzir instruções em código de máquina, qualquer linguagem mais fácil de compreender do que a linguagem de máquina teria sido considerada uma linguagem de alto nível. Para tentar minimizar esta ineficiência (dificuldade de entendimento do significado dos números, todos semelhantes), foi desenvolvida, ainda para a primeira geração de computadores, uma linguagem que representasse as instruções por símbolos e não por números. A linguagem assenbly está mais próxima da linguagem humana, mas também não apresenta legibilidade nem portabilidade. Esta linguagem simbólica foi denominada Linguagem de Montagem (Assembly Language). Veja abaixo um trecho de um programa em linguagem assembly.
DOSSEG .MODEL SMALL EXTRN _IntDivide:PROC .CODE PUBLIC _Average ...
Segundo os padrões dos dias de hoje, a linguagem assembly é uma linguagem de nível muito baixo, porque seus comandos correspondem, um a um, ao conjunto de instruções de uma CPU. Na verdade não existe apenas uma linguagem assembly. Cada tipo de CPU que tem um conjunto de instruções exclusivo tem sua própria linguagem assembly. Para usar-se linguagem de montagem em um computador, é necessário que haja um meio de converter os símbolos alfabéticos utilizados no programa em código de máquina, de modo a poder ser compreendido pela CPU. O processo de conversão (também denominado tradução) é chamado de montagem e é realizado por um programa chamado Montador (Assembler). O montador lê cada instrução em linguagem de montagem e cria uma instrução equivalente em linguagem de máquina. A linguagem assembly continua, apesar de ser de uso tedioso e complexo, a ser importante, porque dá aos programadores total controle sobre a CPU do computador. Além disso produz-se um código compacto, rápido e eficiente.
Vantagens:
Desvantagens:
A linguagem de alto nível é uma linguagem de fácil aprendizado, apresenta uma melhor legibilidade, além de ser independente da máquina, isto é, apresenta portabilidade. Da mesma forma que os programas com instruções de máquina, os programas feitos em uma linguagem de alto nível, também requerem uma conversão para instruções de máquinas. Este processo é denominado compilação. Normalmente, a conversão de um simples comando Cobol ou C, redunda em dezenas de instruções de máquina, diferentemente de um programa em linguagem de montagem, no qual cada instrução implica uma única instrução de máquina. Veja abaixo um trecho de um programa em linguagem C (linguagem de alto nível).
Detail_procedure() { int file_status, current_line, id_num; char *name; float current_sales, ytd_sales, total_sales; ...
Vantagens:
Desvantagens:
Foram desenvolvidas diversas linguagens de programação, buscando afastar-se do modelo centrado no computador. Essas linguagens foram estruturadas buscando refletir melhor os processos humanos de solução de problemas. Essas linguagens orientadas a problema são também chamadas linguagens de alto nível, por serem afastadas do nível de máquina. As primeiras linguagens foram FORTRAN (1957), usada basicamente para manipulação de fórmulas; ALGOL (1958), para manipulação de algoritmos; COBOL (1959), para processamento comercial e ainda hoje bastante usada, especialmente em computadores de grande porte (mainframes) em bancos. Nas décadas de 60 e 70, podemos citar Pascal, a primeira linguagem de alto nível estruturada; BASIC, linguagem criada para facilitar a programação por não-profissionais; e ADA, linguagem para processamento em tempo real criada sob encomenda do DoD (Department of Defense norte-americano) e ainda hoje a única linguagem aceita para programas escritos sob encomenda do DoD. Na década de 80, surgiu o C e depois o C++ (com suporte a objetos), que estão entre as linguagens mais utilizadas hoje. Cada nova linguagem criada visa atingir níveis de abstração mais altos, isto é, afastam cada vez mais o programador do nível de máquina. Se por um lado essas novas linguagens facilitam muito o trabalho do programadores (e reduzem sua necessidade de conhecer o hardware da máquina), elas cobram um alto preço em termos de desempenho (isto é, são cada vez mais lentas, ao consumir cada vez mais ciclos de máquina e espaço em memória). Esse aumento de exigência ao poder de processamento dos computadores é compensado (e desta forma se faz menos notado) pelo aumento acelerado do poder de processamento dos novos chips (exemplificado pela chamada Lei de Moore, que afirma que o poder de processamento dos chips dobra a cada 18 meses) e pelos avanços na arquitetura dos computadores. Dentre as importantes tendências atuais, citamos as linguagens de manipulação de bancos de dados (como dBase, Clipper, FoxPro, Paradox, Access, etc) e as linguagens visuais, como o Visual Basic, Visual C e Delphi.
Quando se deseja converter para linguagem de máquina um programa escrito em linguagem de mais alto nível que o da linguagem de montagem, então o método utilizado se chama compilação. Nas linguagens de alto nível, todo programa escrito em uma determinada linguagem de programação (chamado de código fonte ou programa fonte) é convertido em sua versão em linguagem de máquina (código objeto ou programa objeto), sendo esta tradução feita antes de qualquer tentativa de execução. No processo de montagem, há uma relação de 1:1, ou seja, cada instrução do código fonte resulta em uma instrução de máquina, enquanto na compilação a relação é múltipla, cada instrução do código fonte gerando várias instruções de máquina.
O desenvolvimento de um programa certamente utilizará diversas operações que são comuns a muitos outros programas. Por exemplo, a execução de uma instrução de entrada e saída, a classificação dos dados de um arquivo, o cálculo de funções matemáticas, etc. Uma linguagem de alto nível geralmente incorpora diversas rotinas prontas (que fazem parte da linguagem) e que compõem bibliotecas (librarys) de funções pré- programadas que poderão ser utilizadas pelo programador, poupando tempo, aumentando a eficiência e evitando erros. Dessa forma, um programa em alto nível possivelmente conterá diversas chamadas de biblioteca (library calls). Essas funções não devem ser confundidas com as instruções da linguagem - na realidade, são pequenos programas externos que são chamados através de instruções especiais de chamada de biblioteca. Para serem executadas, essas rotinas precisam ser incorporadas ao código do programador, isto é, a chamada de biblioteca precisa ser substituída pelo código propriamente dito, incluindo os parâmetros necessários.
Assim, o código objeto preparado pelo compilador em geral não é imediatamente executável, pois ainda existe código (as rotinas de biblioteca) a ser incorporado ao programa. A cada chamada de biblioteca encontrada no código fonte, o compilador precisará incluir uma chamada para a rotina e o endereço dos dados que devam ser passados para a rotina. A tarefa de examinar o código objeto, procurar as referências a rotinas de biblioteca (que constituem referências externas não resolvidas), buscar a rotina da biblioteca, substituir a chamada pelo código ("resolver as
referências externas") e obter os parâmetros para incluí-los no código objeto é executada por um programa chamado Ligador (LinkEditor). O resultado da execução do Ligador é o código final pronto para ser executado pelo computador, chamado módulo de carga ou código executável. Uma biblioteca é uma coleção de códigos objeto, um para cada rotina específica, e é indexada pelo nome da rotina. Quando um programa de aplicação deseja usar uma dessas rotinas, ele insere uma chamada de biblioteca no seu código (“library call”).
O módulo de carga, após testado e depurado (isto é, depois de resolvidos todos os erros, também chamados "bugs") é armazenado em memória de massa para ser executado quando necessário. O processo de compilação e ligação é executado apenas pelo programador na fase de desenvolvimento e não mais precisará ser executado pelo usuário, quando da execução do programa.
Com o processo de execução de um programa em fases distintas (compilação / ligação / execução) apresentado, um programa para ser executado precisa primeiro ter sido convertido para código objeto pelo compilador e depois ter passado pelo ligador. Esse processo é o mais largamente utilizado, porém não é o único. O método alternativo chama-se de interpretação e, a partir do programa fonte, realiza as três fases (compilação, ligação e execução), comando por comando, em tempo de execução. Não existem fases distintas nem se produzem códigos intermediários. Todo o processo de conversão é efetuado em tempo de execução e imediatamente executado. Ou seja, cada comando é lido, verificado, convertido em código executável e imediatamente executado, antes que o comando seguinte seja sequer lido. Linguagens como C, Pascal, COBOL, etc, são linguagens tipicamente compiladas, enquanto o BASIC foi desenvolvido como linguagem interpretada (hoje também existem linguagens BASIC compiladas e o programador pode optar). As linguagens de programação tipicamente de usuário, tais como das planilhas Excel, o Word Basic (linguagem de construção de Macros do Word), o Access, etc, são todas linguagens interpretadas.
Sempre que houver duas opções, haverá vantagens e desvantagens para cada uma delas (pois se assim não fosse, a que apresentasse sempre desvantagem seria abandonada). Vamos comparar os métodos:
Biblioteca B
A figura abaixo ilustra o fluxograma do processo de desenvolvimento e depuração de programas, utilizando os métodos de compilação e interpretação.
“A programação deve ser entendida como uma arte ou técnica de se construir algoritmos, sendo que estes são métodos ou “receitas” para se resolver problemas”.
O Pascal é uma linguagem de programação de alto nível e de fins genéricos, que foi desenvolvida a partir do Algol-60. As suas instruções são formadas por expressões do tipo algébrico e certas palavras inglesas, tais como BEGIN, END, read, write, IF, THEN, REPEAT, WHILE, DO. Neste aspecto, o Pascal assemelha-se a muitas outras linguagens de alto nível. Contudo, o Pascal contém ainda alguns aspectos únicos, que foram especificamente projetados para estimular o uso da programação estruturada – o método ordenado e disciplinado de programação que tem como resultado programas claros, eficientes e livres de erros. Por esta razão, muitos educadores e programadores profissionais preferem utilizar o Pascal em vez de outras linguagens de fins genéricos.
A linguagem de programação Pascal foi criada para ser uma ferramenta educacional isto no início da década de 70 pelo Professor Niklaus Wirth do Techinical University em Zurique, Suíça. Foi batizada pelo seu idealizador de PASCAL, em homenagem à Blaise Pascal, brilhante cientista e matemático francês que entre outros feitos inventou a primeira calculadora mecânica do mundo. O pascal ganhou popularidade quando foi adotado pela Universidade da Califórnia, San Diego, em
Como já vimos, um compudor não pode entender nem tão pouco executar instruções em linguagens de alto nível. Ele só entende linguagem de máquina. Desta forma, os programas em linguagens de alto nível devem ser traduzidos antes de serem executados pelo computador. Quem faz essa tradução são os programas tradutores. Existem basicamente 2 tipos de programa tradutor: o interpretador e o compilador. Os dois aceitam como entrada um programa em linguagem de alto nível (programa fonte) e produzem como saída um programa em linguagem de máquina (programa objeto). A diferença entre eles está na forma de executar a tarefa de tradução. O interpretador traduz para a linguagem de máquina e roda uma linha por vez, até, que todo programa seja executado. Já o compilador traduz para a linguagem de máquina todo o programa fonte e só então ele é executado.
Exemplo:
PROGRAM circulo; (O Cabeçalho do programa) ...
Observações:
Esta área é utilizada para definir o uso de qualquer tipo de identificador que não seja os predefinidos, estando esta subdvidida em sete subáreas, a saber:
Uses, label, const, type, var, procedure e function.
Exemplo:
PROGRAM circulo;
(Início da Área de Declarações)**
Uses WinCrt; Var area, raio : Real;
(Fim da Área de Declarações)**
Begin Read(raio); Area := 3.14159*Sqr(raio); Write(raio,area); End.
Observações:
O Corpo do programa contém as instruções que fazem com que se efetuem as ações do programa propriamente dito. Esta área tem início com a instrução begin e é finalizada pela instrução end seguida do símbolo (.) ponto final.
Sintaxe: ... begin <intrução1>; <intrução2>;
<intruçãoN>; end.
Um programa exemplo:
Eis um programa em Pascal elementar chamado círculo, que uma vez fornecido o raio de um círculo calcula a sua área, e escreve em seguida o raio e área calculada.
PROGRAM circulo;
Uses WinCrt; Var area, raio : Real;
(Início do Corpo do Programa)**
Begin Read(raio); Area := 3.14159Sqr(raio); Write(raio,area); End.*
(Fim do Corpo do Programa)**
Observações:
Os caracteres que podem ser utilizados no Turbo Pascal são divididos em: letras, números e os caracteres especiais.
Letras:
de ‘A’ até ‘Z’ e de ‘a’ até ‘z’.
Números:
os dígitos de 0 a 9.
Caracteres especiais:
Alguns caracteres especiais são construídos por dois caracteres distintos e consecutivos:
<= >= := .. (* *) (. .)
Exemplo:
PROGRAM circulo ; (CABEÇALHO DO PROGRAMA) { Este programa tem como objetivo o cálculo da área de um círculo a partir da entrada do valor do raio deste círculo }
Uses WinCrt ; Var area , raio : Real; begin Read(raio); Area := 3.14159* Sqr (raio); Write (raio,area); end.
Comentários são textos que introduzimos no meio do programa fonte com a intenção de torná-lo mais claro. É uma boa prática em programação inserir comentários no meio dos nossos programs. No Turbo Pascal, tudo que estiver entre os símbolos (* e *) ou { e } será considerado como comentário. Os comentários são ignorados pelo compilador.
Exemplo:
PROGRAM circulo; (CABEÇALHO DO PROGRAMA) { Este programa tem como objetivo o cálculo da área de um círculo a partir da entrada do valor do raio deste círculo }**
Uses WinCrt; Var area, raio : Real; begin Read(raio); Area := 3.14159*Sqr(raio); Write(raio,area); end.
Uma Instrução no Pascal é uma ordem, ou um conjunto de ordens, que obriga o computador a executar certas ações. Existem dois tipos básicos de instruções em Pascal: simples e compostas. As instruções simples são essencialmente instruções únicas e incondicionais que executam uma ou mais tarefas, como por exemplo a declaração de uma variável, a atribuição de um valor a uma variável ou uma chamada a uma função ou procedimento do Pascal.
Exemplos:
a) taxa := 0.14*bruto; b) clrscr;
A linguagem Pascal reconhece inúmeros tipos de instruções compostas, também chamadas de instruções estruturadas. As instruções compostas incluem:
a) instruções compostas, que consistem numa seqüência de duas ou mais instruções consecutivas. Neste caso as instruções simples que formam o bloco de instruções compostas devem estar entre as palavras reservadas begin e end. b) Instruções repetitivas, que envolvem a execução de forma repetida de várias instruções simples. c) Instruções condicionais, em que uma ou mais instruções simples são executadas apenas se uma expressão lógica especificada for atendida.
Observações:
Exemplo 1: Abaixo você pode ver um exemplo de instrução composta típica.
begin X:= 1.5; Y:= 2.5; end;
Exemplo 2: Abaixo você pode ver um exemplo de instrução composta repetitiva.
For i := to 100 Do writeln(i);
Esta instrução será executa 100 vezes. Cada vez que a instrução for executada o valor atual da variável i será visualizado na tela. Assim a instrução fará com que os valores 1, 2, 3, e respectivamente até o valor 100 sejam apresentados no monitor.
Exemplo 3:
Abaixo você pode ver um exemplo de instrução composta condicional.
If (salario < 2000.0) Then writeln(‘Salário Baixo!’) Else writeln(‘Salário Bom!’);
Esta instrução faz com que a mensagem ‘Salário Baixo!’ seja mostrada caso a variável salário seja menor do que 2000.0. Se a variável salário tiver um valor armazenado maior ou igual a 2000.0 então a mensagem mostrada será ‘Salário Bom!’.
Os números podem ser escritos em Pascal de várias formas diferentes. Em particular um número pode incluir um sinal, um ponto decimal e um expoente caso se deseje. As regras seguintes aplicam-se a todos os números:
Um número inteiro não contém um ponto decimal nem um expoente. Um número inteiro é simplesmente uma seqüência de dígitos, precedida (opcionalmente) por um sinal.
Números inteiros permitidos: 25 0 1
Números inteiros não permitidos: 123,
-10 20 34
O Turbo Pascal fornece cinco tipos pré-definidos de números inteiros. Veja a tabela abaixo.
Tipo Faixa Formato Shortint -128..127 Sinalizado 8-bit Integer -32768..32767 Sinalizado 16-bit Longint -2147483648..2147483647 Sinalizado 32-bit Byte 0..255 Não Sinalizado 8-bit Word 0..65535 Não Sinalizado 16-bit
Um número real deve conter um ponto decimal ou um expoente (ou ambos). Se existir um ponto decimal, este deve aparecer entre dois dígitos. Um número real não pode então começar ou acabar com um ponto decimal.
Números reais permitidos:
-0.
3.0E+10 (3.0x10^10 ) 5.026E-17 (5.026x10-17)
Números reais não permitidos:
1,000. .
O Turbo Pascal fornece cinco tipos pré-definidos de números reais. Veja a tabela abaixo.
Tipo Faixa Dígitos Bytes Real 2.9e-39..1.7e38 11-12 6 Single 1.5e-45..3.4e38 7-8 4 Double 5.0e-324..1.7e308 15-16 8 Extended 3.4e4932..1.1e4932 19-20 10 Comp -9.2e18..9.2e18 19-20 8
Observação:
São caracterizados tipo caracteres as seqüências contendo os caracteres de ‘A’ a ‘Z’ (maíusculo e minúsculo), os dígitos de 0 a 9, o espaço em branco e os caracteres especiais. Uma strings de caracteres são um conjunto de caracteres entre aspas (apóstrofos) simples. No Pascal este tipo de dado é referenciado pelo identificador string, podendo armazenar de 1 até 255 caracteres. Existe ainda o tipo char, utilizado da mesma forma que o tipo string, porém com uma pequena diferença: é utilizado para strings com apenas um caracter de tamanho.
Cadeias de caracteres permitidas:
‘Exemplo de cadeia de caracteres’ ‘R$19,95’ ‘’ ‘Please don’’t go!’ ‘217 - 32 – Abc’
Observações:
São caracterizados tipos booleanos (lógicos) os dados que podem assumir os valores true (verdadeiro) e false (falso), sendo que este tipo de dado somente poderá representar um dos dois valores. Esta categoria inclui as constantes do tipo booleano, as variáveis, funções e expressões. As expressões do tipo booleano são formadas combinando operandos do mesmo tipo com operadores relacionais.
Dados booleanos:
true (1) false (0)