























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
Encontra documentos específicos para os exames da tua universidade
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
Apostilas de Informática sobre a Linguagem Pascal, Por que Turbo Pascal, Equipamento necessário, Programa em Pascal, Estrutura de um programa em Pascal, Elementos básicos do Turbo Pascal.
Tipologia: Notas de estudo
1 / 31
Esta página não é visível na pré-visualização
Não perca as partes importantes!
























Prefácio
Este curso destina-se a todos aqueles que desejam aprender a linguagem Pascal, através do seu mais famoso compilador para a linha IBM/PC, o Turbo Pascal. O Turbo Pascal é muito mais que um compilador, pois ele é uma associação entre um compilador, um editor de textos e um linkeditor. Desta forma, o Turbo Pascal facilita sobremaneira o ato de programar. Além de tudo isto, o Turbo permite muitas facilidades e atividades que, com certeza, não estavam planejadas por Niklaus Wirth, o criador da linguagem Pascal. Levando-se em conta todas essas considerações, podemos até mesmo dizer que o Turbo Pascal seria uma nova linguagem, mais poderosa que a Pascal. Gostaria de salientar que a melhor forma de aprender uma linguagem é programando, assim como a melhor forma de aprender a dirigir é entrar num automóvel e sair com ele por aí, ou seja, o simples fato de ler este pequeno e simples curso de linguagem Pascal, não basta para aprender a programar em Pascal. Por fim, estou a disposição de todos, que se aventurem a acompanhar este curso, para tirar dúvidas, assim como para receber críticas.
Considero que 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. Existem diversas linguagens para se programar, umas mais adequadas a certos tipos de algoritmos, outras a outros tipos. No entanto, uma linguagem de programação não deve ser um fim em si mesma, mas um meio, uma ferramenta para se traduzir os algoritmos em programas a serem executados por computadores. Desta forma, é importante que os cursos de programação não tenham como objetivo primordial, a perfeição do conhecimento de uma linguagem específica. A linguagem deve tão somente, refletir de maneira clara e facilmente compreensível os aspectos principais dos algoritmos.
Por tudo isso, devemos ter a preocupação de ensinarmos aos estudantes a formulação sistemática e metódica de algoritmos, através de técnicas que são características da programação.
Como já disse, existem diversas linguagens de programação, podemos aprender e utilizar quantas desejarmos. Dizer qual a melhor é muito relativo. Há os que defendem o Basic, o Cobol, a C, o Pascal e tantas outras. Bom, mas a pergunta crucial que faço aqui é: Qual a primeira linguagem a ser aprendida? Neste ponto, defendo a linguagem Pascal.
De acordo com observações feitas por diversos professores, inclusive por mim, a maior parte das pessoas ficam ligadas para sempre à primeira linguagem que aprenderam, e quando aprendem uma nova linguagem, têm uma certa tendência em desenvolver os algoritmos segundo o vocabulário e regras sintáticas da primeira linguagem, só que escritas na nova.
Por este motivo, acho que a escolha da primeira linguagem a ser ensinada deve ser feita de forma judiciosa.
A primeira linguagem deve, desta forma, ser tal que forneça ao aprendiz a possibilidade de desenvolver algoritmos lógicos, sistemáticos, facilmente compreensíveis segundo os métodos modernos de programação e deve até possibilitá-lo a "dar asas à sua imaginação".
I.2 - Por que Turbo Pascal?
Um computador 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 (fonte) e produzem como saída um programa em linguagem de máquina (objeto). A diferença entre eles está na forma de executar a tarefa de tradução. O interpretador traduz
Program Primeiro_Exemplo; { este e o cabeçalho do programa } USES Crt; { Aqui estou utilizando uma UNIT, chamada CRT, existem várias, e inclusive você pode criar as suas. Nestas units temos procedures e functions previamente compiladas. }
Label fim; { a partir deste instante posso utilizar o label fim } Const Meu_Nome = 'Thelmo'; { nesta área podemos definir todas as constantes que quisermos utilizar no programa } Type n = (BRASILEIRA, PORTUGUESA, INGLESA, FRANCESA, ALEMÃ, AMERICANA);
{o Turbo Pascal possui diversos tipos de variáveis predefinidas, mas também permite definir novos tipos na subárea type }
Var idade :integer; altura :real; nome :string[30]; sexo :char; nacionalidade :n;
{ todas as variáveis que forem utilizadas no corpo do programa deverão ser declaradas na subárea Var }
Procedure Linha;
{a procedure equivale ao conceito de sub-rotina. Sua estrutura pode se tornar tão complexa como de um programa. Esta procedure, traça uma linha na posição atual do cursor }
Var i:integer; Begin For i:=1 to 80 do Write('-'); end; Function Soma(x,y:integer):integer;
{o Turbo Pascal possui diversas funções pré-definidas, mas o programador também pode definir as suas próprias }
Begin Soma:=x+y; end;
{ Podemos definir quantas procedures e functions quisermos }
{ Aqui começa o programa propriamente dito }
Begin ClrScr; { apaga a tela } Linha; { Executa a procedure linha } Writeln('Meu nome e -------> ',Meu_Nome); Linha; Write('Qual o seu nome ----> '); Readln(Nome); Linha; Write('Qual a sua idade ---> '); Readln(idade); Linha; Writeln('nossas idades somam --> ',Soma(34,idade)); Linha; goto fim; { estas linhas serão puladas } nacionalidade:=BRASILEIRA; Write('Minha nacionalidade e brasileira'); fim: Write('Prazer em conhece-lo'); End.
II.2 - Estrutura de um programa em Pascal
Todo programa em Pascal é subdividido em 3 áreas:
Na definição padrão da linguagem Pascal, o Cabeçalho do programa é obrigatório, no entanto, no Turbo Pascal ele é opcional. A área de declarações é subdividida em seis sub-áreas, a saber:
Darei agora, uma breve explicação de cada subárea, pois mais para frente estudaremos cada uma delas com profundidade. Na subárea Label, devemos declarar todos os labels que forem utilizados no corpo do programa. Os labels são utilizados em conjunto com a instrução goto. Todas as constantes que formos utilizar no nosso programa, podem se assim desejarmos, ser definidas na subárea Const.
As palavras reservadas do Turbo Pascal são palavras que fazem parte da sua estrutura e têm significados pré-determinados. Elas não podem ser redefinidas e não podem ser utilizadas como identificadores de variáveis, procedures, functions etc. Algumas das palavras reservadas são:
absolute() and array begin case const div do downto else end external() file for forward function goto if in inline() label mod nil not of or packed procedure program record repeat set shl() shr() string() then to type until var while with xor(*)
(*) --> não definidos no Pascal Standard
III.1.3 - Identificadores pré-definidos
O Turbo Pascal possui inúmeros identificadores pré-definidos, que não fazem parte da definição padrão da linguagem Pascal. Esses identificadores consistem em Procedures e Functions, que podem ser utilizados normalmente na construção de programas. Exemplos: ClrScr : limpa a tela de vídeo DelLine : deleta a linha em que está o cursor e assim por diante.
Constantemente, novas procedures e functions estão sendo criadas pela Borland International (criadora do Turbo Pascal), aumentando desta forma o número de identificadores. São UNITS que tornam o Turbo Pascal mais poderoso do que ele já é.
Regras para formação de identificadores:
O usuário também pode definir seus próprios identificadores, na verdade nós somos obrigados a isso. Nomes de variáveis, de labels, de procedures, functions, constantes etc. são identificadores que devem ser formados pelo programador. Mas para isso existem determinadas regras que devem ser seguidas:
1-) O primeiro caractere do identificador deverá ser obrigatoriamente uma letra ou um underscore (_). 2-) Os demais caracteres podem ser letras, dígitos ou underscores. 3-) Um identificador pode ter no máximo 127 caracteres. 4-) Como já dissemos anteriormente, não pode ser palavra reservada.
Exemplos de identificadores válidos:
Meu_Nome MEU_NOME igual ao anterior
__Linha Exemplo Exemplos de identificadores não válidos:
2teste : começa com número Exemplo 23 : tem um espaço
III.1.4 - Comentários
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 programas. No Turbo Pascal, tudo que estiver entre os símbolos (* e *) ou { e } será considerado como comentário.
III.1.5 - Números
No Turbo Pascal, podemos trabalhar com números inteiros e reais, sendo que os números inteiros podem ser representados na forma hexadecimal, para tanto, basta precedê-los do símbolo $. Os números reais também podem ser representados na forma exponencial. Isso tudo varia de versão para versão do turbo Pascal, citarei aqui as faixas de valores válidas para a versão 7.0:
TIPO FAIXA FORMATO Shortin g
-128..127 Signed 8-bit
Integer -32768..32767 Signed 16-bit Longint -2147483648.. 2147483647 Signed 32-bit Byte 0..255 Unsigned 8-bit Word 0..65535 Unsigned 16-bit
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.4e-4932..1.1e4932 19-20 10 comp -9.2e18..9.2e18 19-20 8
III.1.6 - Strings
Strings são conjunto de caracteres entre aspas simples.
Exemplos:
'isto é uma string' '123456' etc.
III.1.7 - Caracteres de controle
Este tipo é chamado de estruturado ou composto pois é constituído a partir de um tipo simples que é o char. O tipo string é composto por um conjunto de caracteres entre aspas simples.
SHORTINT - INTEGER - LONGINT - BYTE - WORD : Ver tabela acima.
REAL - SINGLE - DOUBLE - EXTENDED - COMP : Ver tabela acima.
III.2.2 - A declaração Var
Esta é a subárea onde devemos declarar todas as variáveis que iremos utilizar em nosso programa. Exemplo:
Program Exemplo; (* cabeçalho do programa *) Var idade,número_de_filhos : byte; altura : real; sexo : char; nome : string[30]; sim_ou_não : boolean; quantidade : integer; (* aqui começa o programa *)
Begin idade:=34; número_de_filhos:=2; sexo:='M'; nome:='José'; sim_ou_nao:=TRUE; quantidade:=3245; End.
Observações importantes: 1-) A palavra reservada Var aparece uma única vez num programa 2-) A sintaxe geral para declaração de variáveis é: variável_1,variável_2,...,variável_n : tipo; 3-) Os espaços e comentários separam os elementos da linguagem. Você pode colocar quantos espaços quiser. Observe: Varidade: integer; o compilador não reconhece a palavra Var Var idade:integer; agora sim, ou se preferir Var idade : integer; dá na mesma. 4-) As instruções são separadas entre si por ponto e vírgula ' ; '. Se você quiser, pode colocar mais de uma instrução numa única linha. Lembre-se que o limite de caracteres numa linha é de 127 5-) O tipo string deve ser procedido da quantidade máxima de caracteres que a variável pode assumir. Lembre-se que a alocação de espaço de memória para as variáveis é feita durante a compilação, portanto o compilador precisa saber desse
dado. Por outro lado, o fato de termos, por exemplo, atribuído o valor máximo de 30 não significa que tenhamos que utilizar os 30 caracteres e sim no máximo 30. 6-) Como última observação, acho muito mais claro e elegante declarar variáveis e ao mesmo tempo informar com linhas comentários os devidos motivos. Exemplo: Var idade, (* idade de determinada pessoa *) i,j (* utilizadas em loops *) : integer; nome1, (* nome genérico de pessoas ) nome2 _( nome genérico de pessoas *)_ : string[50];
III.2.3 - A declaração type
Além dos tipos de dados pré-definidos no Turbo Pascal, podemos também definir novos tipos através da declaraçäo Type. A sua sintaxe geral é:
Type identificador = (valor1,valor2,valor3,valor4, ... ,valorN);
O identificador deve seguir as regras dadas anteriormente e entre os parentêses estão os valores que podem ser assumidos. Exemplos:
Type cor = (azul,vermelho,branco,verde,amarelo); diaútil = (segunda,terça,quarta,quinta,sexta); linha = string[80]; idade = 1..99; (* a partir deste instante, além dos tipos de dados pré-definidos, podemos também utilizar os novos tipos definidos cor,dia_útil, linha e idade *)_
Var i : integer; d : idade; nome : linha; dia : dia_útil; cores : cor; (* etc. *)
Observação : Quando damos os valores que os dados podem assumir através da declaração type, o Turbo Pascal assume, automaticamente, que o valor da direita vale mais que o da esquerda e assim. Por exemplo: no caso da definição de cor, amarelo vale mais que verde, que por sua vez vale mais que branco e assim por diante.
III.3 - Constantes
III.3.1 - A declaração const
Nesta subárea, podemos definir tantas constantes quantas quisermos.
Program Operadores_aritimeticos; Uses CRT; Var x,y,z : integer; r1,r2 : real; Begin ClrScr; (* limpa a tela *) x:=10; y:=20; z:=x+y; writeln(z); (* escreve o valor de z na tela de vídeo *) x:= 20 DIV 3; y:= 20 MOD 3; writeln(x); (* escreve 6 na tela *) writeln(y); (* escreve 2 na tela *) r1:=3.24; r2:=r1/2.3; writeln(r2); end.
III.4.2 - Operadores lógicos
AND E lógico OR OU lógico XOR OU EXCLUSIVO lógico
Estes operadores só aceitam como operandos, valores lógicos, ou seja : TRUE e FALSE.
A operação AND resulta em TRUE se e somente se todos os operandos forem TRUE, se um deles ou mais de um for FALSE então o resultado será FALSE.
A operação OR resulta TRUE quando pelo menos um dos operandos for TRUE.
A operação XOR resulta TRUE quando os operandos forem diferentes entre si, isto é, quando um for TRUE o outro deverá ser FALSE.
Exemplo:
{PROGRAMA UTILIZANDO OS OPERADORES LÓGICOS}
Program operadores_logicos; Uses CRT; Var x,y : boolean; Begin x:=TRUE; y:=FALSE; Writeln( x OR y ); (* escreve TRUE *) Writeln( x AND y ); (* escreve FALSE *) Writeln( x XOR y ); (* escreve TRUE *);
End.
III.4.3 - Operadores relacionais
O Turbo Pascal possui ao todo 7 operadores relacionais que são muito utilizados nas tomadas de decisões, são eles:
= igual <> diferente > maior que < menor que >= maior ou igual que <= menor ou igual que IN testa se um elemento está incluso em um conjunto
Exemplos:
1-) Se A=30 e B=50 então
( A = B ) FALSE ( A < B ) TRUE
2-) Se A=TRUE e B=FALSE
( A <> B ) TRUE ( A = B ) FALSE
3-) Se A=50 , B=35, C='A' , D='B'
( ( A < B ) OR ( C < D ) ) TRUE
A avaliação será verdadeira se uma ou outra expressão for verdadeira, no caso, como C < D então a resposta é TRUE
III.4.4 - Operadores entre bits
Os operadores entre bits só podem ser aplicados em dados dos tipos byte ou integer e o resultado é do tipo integer. Eles agem bit a bit e podem ser aplicados na notação hexadecimal ou decimal. São eles:
SHL - SHift Left
Desloca n bits à esquerda. Durante o deslocamento, os bits à esquerda são perdidos e dígitos zeros preenchem a posição direita. Exemplos:
1-) Se X = 00010101 então
X shl 2 = 01010100
e assim por diante
Para converter um número da base 10 para a base 2, basta dividir o número, o qual queremos converter, por dois sucessivamente até que o resto seja 0, depois pegamos os restos de baixo para cima.
Exemplo:
(23) => ( ) 10 2
23 / 2 dá 11 e sobra 1 11 / 2 dá 5 e sobra 1 5 / 2 dá 2 e sobra 1 2 / 2 dá 1 e sobra 0 1 / 2 dá 0 e sobra 1 Portanto (23) => (10111) 10 2
Para converter da base 2 para a base 10, devemos fazer ao contrário:
(10111) => ( ) 2 10
4 3 2 1 0 ( 1 0 1 1 1 )
1 x 2^4 + 0 x 2^3 + 1 x 2^2 + 1 x 2^0 + 1 x 2 = 16 + 0 + 4 + 2 + 1 = 23
NOT
O operador NOT nega os bits, isto é os bits iguais a 1 se tornam 0 e os bits zero se tornam 1. Devemos lembrar, no entanto, que os inteiros possuem 2 bytes, portanto, ao se trabalhar com números decimais inteiros será afetado o byte de mais alta ordem e também o sinal. Exemplo:
NOT (255) = -
Para suprimir este problema, você deve trabalhar com bytes:
Program Exemplo; Uses CRT; Var i,j : Byte; Begin ClrScr; i:=255; j:=NOT(i); Writeln(j); (* será escrito 0 *)
End.
Este operador realiza a operação E lógico bit a bit. Relembrando, a operação E resulta em 1 se e somente se os dois operandos forem iguais a 1, caso contrário, o resultado será igual a 0. Exemplos:
1-) $0F AND $F0 = $0 pois $0F = 00001111 $F0 = 11110000 00001111 AND 11110000 = 00000000 2-) 255 AND 55 = 55 pois 255 = 11111111 55 = 00110111 11111111 AND 00110111 = 00110111
3-) 34 AND 76 = 0 pois 34 = 00100010 76 = 01001100 00100010 AND 01001100 = 00000000
OR
Este operador realiza a operação OU lógico bit a bit. Relembrando, a operação OU resulta em 1 se um ou os dois operandos forem iguais a 1. Exemplos:
1-) $0F OR $F0 = $FF pois $0F = 00001111 $F0 = 11110000 00001111 OR 11110000 = 11111111
2-) 255 OR 55 = 255 pois 255 = 11111111 55 = 00110111 11111111 OR 00110111 = 11111111
3-) 34 OR 76 = 110 pois 34 = 00100010 76 = 01001100 00100010 OR 01001100 = 01101110
XOR
Este operador realiza a operação OU EXCLUSIVO lógico bit a bit. Relembrando, a operação OU EXCLUSIVO resulta em 1 se os operandos forem diferentes entre si. Exemplos:
c:='A'; s:='interessante'; writeln('Valor de i e igual a ',i); write('valor de r = '); writeln(r); writeln(c,' ',s); end.
Este programa resultaria na seguinte tela:
Exemplos de aplicação de writeln e write Valor de i e igual a 100 valor de r = 3.1400000000E+ A interessante
Segunda forma:
Write(parâmetro : n);
onde n é um número inteiro que determina quantas colunas o cursor deve ser deslocado à direita, antes do parâmetro ser escrito. Além disso, o parâmetro é escrito da direita para a esquerda, exemplo:
Program Exemplo; Uses CRT; Begin Writeln('A'); Writeln('A':5); end.
Resultaria a seguinte tela:
A .....A
Os pontos representam espaços em branco
Terceira forma:
Write(parâmetro : n : d);
Neste caso, n tem a mesma função que o caso anterior sendo que d representa o número de casas decimais. Obviamente, parâmetro terá queser do tipo Real. Exemplo: Program Exemplo; Uses CRT; Var r : real; Begin ClrScr; r:=3.14156;
Writeln(r); Writeln(r:10:2); End. resultaria a seguinte tela:
3.1415600000E+
IV.2 - Read e Readln
Estas procedures são utilizadas para fazer leitura de dados via teclado. A procedure Read lê um dado do teclado até que se pressione a tecla ENTER, sendo que cada tecla digitada é ecoada para o vídeo. Após pressionarmos ENTER, o cursor permanecerá no mesmo lugar. Já, a procedure Readln faz a mesma coisa só que o cursor passa para a próxima linha. A sintaxe geral para estas procedures é: Read (Var_1,Var_2,Var_3,...);
Ao se digitar os valores das variáveis pedidas, deve-se separá-los por espaços.
Exemplo 1:
Program teste; Uses CRT; Var a,b,c:integer; Begin clrscr; readln(a,b,c); writeln (a,' ',b,' ',c); end.
Exemplo 2: Program teste; Uses CRT; Var i : integer; r : real; c : char; s : string[10]; Begin ClrScr; Write('Digite um numero inteiro ------> '); Readln(i); Write('Digite um numero real ---------> '); Readln(r); Write('Digite um caractere -----------> '); Readln(c); Write('Digite uma string -------------> '); Readln(s); Writeln;Writeln ; (* pula duas linhas *) Writeln(i); Writeln(r);