Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Programação estruturada em Pascal: cálculos e manipulação de dados, Notas de estudo de Informática

Este documento contém exemplos de programas em pascal que realizam cálculos de áreas de figuras geométricas, manipulação de dados em arrays e arquivos, além de explicar conceitos básicos de programação estruturada. Inclui também a implementação de funções e procedimentos.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 13/02/2009

kemuel-kesley-12
kemuel-kesley-12 🇧🇷

3.5

(2)

7 documentos

1 / 107

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
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.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Programação estruturada em Pascal: cálculos e manipulação de dados e outras Notas de estudo em PDF para Informática, somente na Docsity!

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.

Existem linguagens de programaçäo interpretadas e compiladas. O Cobol é compilado, o Basic pode ser tanto compilado como interpretado e assim por diante. A linguagem Pascal é tradicionalmente compilada. Por outro lado, o processo de compilação é de certa forma, moroso, pois deve seguir as seguintes etapas:

1-) Devemos utilizar um editor de textos para escrever e armazenar em disco o nosso programa fonte. 2-) Utilizar um compilador para traduzir o programa fonte para um programa em linguagem de máquina. 3-) Finalmente, devemos juntar ao programa compilado as diversas rotinas necessárias que, normalmente, ficam armazenadas numa biblioteca. Após todo esse processo, suponha que você chegue à conclusão de que o programa tenha que sofrer modificações, pois bem, você terá que repetir os três passos descritos, e assim sucessivamente até que o programa fique ao seu gosto. O compilador Turbo Pascal facilita todo esse processo, pois ele possui numa forma integrada, um editor de textos compatível com o Wordstar, um compilador e um linkeditor. O processo de compilação pode ser feito tanto em disco como em memória, o que faz com que ele seja muito rápido. Além disso, o Turbo Pascal atende aos padrões da linguagem Pascal definidos por Niklaus Wirth, "o pai da linguagem".

Na realidade, o Turbo Pascal vai muito além, pois ele possui inúmeras procedures e funções a mais do que as existentes no padrão da linguagem Pascal.

I.3 - Equipamento necessário****.

Todos os exemplos e programas contidos neste curso, foram escritos num compatível 486DX 50 com dois acionadores de discos de dupla face e alta densidade, um winchester de 340 megabytes, um monitor monocromático e 640 Kbytes de memória RAM. No entanto, a configuração mínima poderia ser um IBM/PC-XT com um winchester de 40M.

II - Um programa em Pascal

II.1 - O primeiro programa

Bom, acho que aqueles que nunca tiveram a oportunidade de fazer um programa em Pascal, devem estar muito curiosos para saber como deve ser o seu aspecto. Por isso, antes de prosseguir com os meandros da linguagem Pascal, eu mostrarei um pequeno programa devidamente comentado.

PROGRAMA EXEMPLO.PAS -> Pequeno exemplo de um programa em Pascal. Tem a finalidade única e exclusiva de mostrar os diversos componentes de um programa em Pascal. {Tudo que estiver entre chaves são comentários e não são levados em conta pelo compilador.}

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 }

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.

O Turbo Pascal tem basicamente 6 tipos de variáveis pré-definidas a saber: Integer, Real, Byte, Boolean, Char e String. No entanto, podemos definir novos tipos de variáveis na subárea Type. Todas as variáveis utilizadas no programa devem ser declaradas na subárea Var, pois a alocação de espaço de memória para as variáveis é feita durante a compilação. Na subárea Procedures, podemos definir quantas sub-rotinas quisermos. Elas são chamadas durante o programa pelos seus respectivos nomes.

Finalmente, na subárea Functions podemos definir novas funções que depois poderemos utilizar no programa embora o Turbo Pascal possua inúmeras funções pré-definidas. Estas sub- áreas só são obrigatórias caso nós estejamos precisando. Exemplo: se não vamos utilizar variáveis no nosso programa (coisa rara) então não precisamos utilizar a subárea Var. De acordo com a definição padrão da Linguagem Pascal, estas sub-áreas devem aparecer na seqüência que foi dada anteriormente, ou seja, Label - Const - Type - Var - Procedures - Functions. Mas no Turbo Pascal isto é livre. Por fim, como dito no programa exemplo, existe a possibilidade de se usar a declaração USES, que nos permite utilizar UNITS que nada mais são do que bibliotecas de funções e procedures previamente declaradas.

III - Noções Básicas preliminares

III.1 - Elementos básicos do Turbo Pascal

III.1.1 - Caracteres utilizados

Os caracteres que podem ser utilizados no Turbo Pascal são divididos em:

Letras: 'A' até 'Z', 'a' até 'z'

Números: 0,1,2,3,4,5,6,7,8 e 9

Especiais: + - * / = ^ < > ( ) [ ] { }. , : ; ' # $

Observações:

1-) O Turbo Pascal não faz distinção entre letras maiúsculas e minúsculas, de tal forma que no desenvolvimento deste curso eu utilizarei os dois tipos da forma que achar mais conveniente. 2-) Embora na maioria das linguagens o sinal de atribuição de valores a variáveis seja o = , em Pascal, o símbolo de atribuição é := ,

exemplos: A = 100 em Basic A := 100 em Pascal 3-) Dois pontos em seguida (..) indica um delimitador de faixa, exemplo: 1..30 --> todos inteiros entre 1 e 30 inclusive.

III.1.2 - Palavras reservadas

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:

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

Existem alguns caracteres que têm significados especiais. São os caracteres de controle. Exemplos:

Control G => Bell ou beep Contorl L => Form Feed etc. Em Turbo Pascal, também podemos utilizar estes caracteres. Para tanto, eles devem ser escritos pelo seus valores ASCII correspondentes, precedidos do símbolo # , ou então a letra correspondente precedida do símbolo ^. Exemplo: Control G => #7 ou ^G

III.2 - Definição de variáveis

Como já dissemos, todas as variáveis que forem utilizadas no corpo do programa, devem ser declaradas numa subárea específica chamada Var. Para estudarmos essa subárea devemos primeiro ver os tipos de variáveis pré-definidos em Turbo Pascal.

III.2.1 - Tipos de dados pré-definidos

Os tipos de dados pré-definidos em Turbo Pascal são divididos em duas categorias:

Escalares Simples:

  • Char
  • Boolean
  • todos os tipos de inteiros citados acima
  • todos os tipos de reais citados acima

Escalares estruturados:

  • String
  • Array
  • Record
  • File
  • Set
  • Text Inicialmente, iremos estudar os escalares simples e o tipo String pela sua utilização prática inicial. Os demais tipos estruturados serão vistos mais para frente.

CHAR:

O tipo char corresponde a todos os caracteres que podem ser gerados pelo teclado tais como dígitos, letras e símbolos tais como & , # , ***** etc. Os caracteres devem vir entre aspas simples. ('José')

BOOLEAN:

O tipo boolean só pode assumir os valores FALSE e TRUE.

STRING :

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 *)

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.

Sintaxe:

Const Meu_nome = 'Thelmo'; cor_preferida = 'verde'; número_máximo = 24345;

(* e assim por diante *)

Toda vez que nos referirmos às constantes acima, o Turbo Pascal substituí-las-á pelos seus respectivos valores.

III.3.2 - Constantes pré-definidas

Existem algumas constantes pré-definidas e que podemos utilizá-las sem ter que declará-las. São elas:

PI = 3.1415926536E + 00

FALSE

TRUE

NIL Pointer nulo, veremos mais adiante. MAXINT = 32767

III.3.3 - Constantes tipadas

A declaração de variáveis na subárea Var, apenas reserva espaço de memória para elas, mas não as inicializa, ou seja, até que se atribua valores a elas, seus valores serão desconhecidos. Sob certas circunstâncias, seria interessante que pudéssemos ao mesmo tempo em que declaramos a variável, dar seu valor inicial. Isto é possível com o conceito de constante tipada cuja sintaxe é: Const variável : tipo = valor;

Exemplos:

const Contador : integer = 100; c : char = 'A';

Estamos definindo duas variáveis, uma chamada contador que é inteira e vale inicialmente 100 , e outra chamada c que é do tipo char e cujo valor inicial é 'A'.

III.4 Operadores

III.4.1 - Operadores aritméticos

+ adição / divisão entre números reais

- subtração DIV divisão entre números inteiros ***** multiplicação MOD resto da divisão

PROGRAMA EXEMPLO : Mostra como utilizar operadores aritméticos

Program Operadores_aritimeticos; Uses CRT; Var x,y,z : integer; r1,r2 : real; Begin

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 X shl 5 = 10100000

2-) 55 shl 3 = 184

55 = 00110111 deslocando 3 à esquerda ficaria: 10111000 que é igual a 184

3-) $F0 shl 2 = $C

$F0 = 11110000 deslocando 2 à esquerda ficaria: 11000000 que é igual a $C

SHR - SHift Right

Desloca n bits à direita. Durante o deslocamento, os bits à esquerda são preenchidos com zeros e os da direita são perdidos. Exemplos:

1-) Se X = 10101100 então

X shr 3 = 00010101 X shr 6 = 00000010

2-) 55 shr 3 = 6

55 = 00110111 deslocando 3 à direita ficaria: 00000110 que é igual a 6

3-) $F0 shr 2 = $3C

$F0 = 11110000 deslocando 2 à direita ficaria: 00111100 que é igual a $3C

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.

AND

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

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:

1-) $0F XOR $F0 = $FF pois $0F = 00001111 $F0 = 11110000 00001111 XOR 11110000 = 11111111

2-) 255 XOR 55 = 200 pois 255 = 11111111 55 = 00110111 11111111 XOR 00110111 = 11001000

3-) 34 XOR 76 = 110 pois 34 = 00100010