Introdução a logica Pascal

Introdução a logica Pascal

(Parte 1 de 3)

IntroLingPascal-ZIM.doc - Ver. 1.0a (Beta) Prof. Dalton Vinicius Kozak 16/02/05 - i -

Program Taylor; var k, n: integer; s, x: real; function Fatorial(n: integer): integer; begin

Fatorial := n*Fatorial(n-1) else

Fatorial := 1; end; function potencia(x,n: real): real; begin potencia := exp(n*ln(x)); end; begin write('Digite numero de termos e o valor x: '); read(n,x); s := 0; readkey; end.

IntroLingPascal-ZIM.doc - Ver. 1.0a (Beta) Prof. Dalton Vinicius Kozak 16/02/05 - i -

1. OBJETIVO DO DOCUMENTO1
2. INTRODUÇÃO1
2.1. A Linguagem Pascal1
2.2. Pascal ZIM!1
3. RESUMO DA LINGUAGEM PASCAL2
3.1. Estrutura Básica de um programa Pascal2
3.2. Executando um Programa no Pascal.ZIM!3
3.3. Tipos de Dados Pré-definidos4
3.4. Identificadores4
3.5. Constantes e Variáveis5
3.6. Comentários6
3.7. Comando de Atribuição6
3.8. Operadores7
3.9. Funções Pré-definidas8
3.10. Saída de Dados8
3.1. Entrada de Dados9
3.12. Estruturas de Seleção9
3.12.1. Alternativa Simples: if...then9
3.12.2. Alternativa Composta: if...then...else10
3.12.3. Seleção Múltipla: case...else10
3.13. Estruturas de Repetição1
3.13.1. Controlada no Início: while...do1
3.13.2. Controlada no Final: repeat...until1
3.13.3. Com Variável de Controle: for...do12
3.14. Estruturas de Dados Homogêneas13
3.14.1. Vetores13
3.14.2. Matrizes14
3.14.3. Vetores Multidimensionais15
3.15. Estruturas de Dados Heterogêneas15
3.16. Tipos Definidos pelo Usuário16
3.17. Módulos17
3.17.1. Funções17
3.17.2. Procedimentos17
3.17.3. Passagem de Parâmetros18
3.17.3.1. Por Valor18
3.17.3.2. Por Referência18
3.18. Escopo de Variáveis19
3.19. Arquivos20
3.19.1. Procedimento Assign20
3.19.2. Procedimento Reset21
3.19.3. Procedimento Rewrite21
3.19.4. Procedimento Append21
3.19.5. Procedimento Close21
3.19.6. Procedimentos writeln e readln21
4. CONCLUSÃO2
4.1. Comentário Final2
4.2. Compiladores Gratuitos2

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a (Beta) Prof. Dalton Vinicius Kozak 16/02/05 - i -

Figura 1. Visão da interface do Pascal ZIM!2
Figura 2. Estrutura básica de um programa Pascal2
Figura 3. Exemplo de um programa Pascal2
Figura 4. Blocos em um programa Pascal3
Figura 5. Primeiro programa no Pascal ZIM!: o tradicional "Alô, Mundo!"3
Figura 6. Mensagem de erro sintático do compilador4
Figura 7. Programa com áreas de declaração para constantes e variáveis6
Figura 8. Programa com múltiplas atribuições7
Figura 9. Programa com concatenação de strings8
Figura 10. Programa com comandos de saída8
Figura 1. Programa com comandos de saída formatada9
Figura 12. Programa com comandos de entrada e saída9
Figura 13. Programa com alternativa composta if...then...else10
Figura 14. Programa com comando de seleção múltipla case...of1
Figura 15. Programa utilizando comando while...do12
Figura 16. Programa utilizando comando repeat...until12
Figura 17. Programa utilizando comando for...do13
Figura 18. Programa utilizando vetores14
Figura 19. Programa utilizando matrizes15
Figura 20. Programa utilizando registro16
Figura 21. Programa utilizando função17
Figura 2. Programa utilizando procedimento18
Figura 23. Programa utilizando procedimento com passagem de parâmetro por referência19
Figura 24. Exemplo de escopo e visibilidade de variáveis20
Figura 25. Programa utilizando procedimentos de acesso a arquivos2
Tabela 1. Tipos de dados pré-definidos do Pascal ZIM!4
Tabela 2. Exemplos de identificadores na linguagem Pascal5

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a Prof. Dalton Vinicius Kozak 16/02/05 - 1 -

1. OBJETIVO DO DOCUMENTO

Apresentar um ambiente para aprendizado de programação baseado na linguagem Pascal, bem como um resumo desta linguagem. Trata-se de um material de apoio para à disciplina de Algoritmos: o leitor já deverá estar iniciado nas técnicas de construção de algoritmos e ter noções de português estruturado (ou portugol).

NÃO é objetivo apresentar a última palavra em ambiente de programação1 , e sim utilizar um software tipo freeware (acessível a todos!) com recursos suficientes e amigáveis para o objetivo principal, que é propiciar ao iniciante dar seus primeiros passos em programação.

2. INTRODUÇÃO

2.1. A Linguagem Pascal

A linguagem Pascal foi desenvolvida no início dos anos 70 por Nicklaus Wirth na Universidade

Técnica de Zurique, Suíça, com o objetivo de oferecer uma linguagem para o ensino de programação que fosse simples, coerente e capaz de incentivar a confecção de programas claros e facilmente legíveis, favorecendo a utilização de boas técnicas de programação. Ela foi batizada com o nome de Pascal em homenagem a Blaise Pascal, filósofo e matemático francês que viveu entre 1623 e 1662, inventor da primeira calculadora mecânica.

O mais famoso compilador desta linguagem foi desenvolvido pela Borland International em 1983, e foi denominado Turbo Pascal. Foram lançadas várias versões deste compilador para ambiente DOS, culminando com o lançamento do Delphi2 para programação em ambiente Windows. No Museum da Borland (http://community.borland.com/museum/) é possível obter versões antigas do Turbo Pascal gratuitamente.

2.2. Pascal ZIM!

O compilador Pascal ZIM! foi desenvolvido no Departamento de Ciências da Computação da

Universidade de Brasília como resultado de pesquisas e trabalhos na área de algoritmos, tradutores e linguagens de programação. É do tipo freeware3 .

1 Se você fosse aprender a pilotar, você acha que deveria iniciar num Boeing 7, ou num planador ou mono-motor? É por

2 Ambiente de desenvolvimento visual baseado no Object Pascal (Pascal orientado a objetos). No Museum da Borland há o porquê deste nome.

3 Distribuição gratuita, não podendo ser comercializado.

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a Prof. Dalton Vinicius Kozak 16/02/05 - 2 -

Figura 1. Visão da interface do Pascal ZIM!.

O Pascal ZIM! é adotado naquela Universidade como ferramenta de apoio ao ensino e aprendizagem de programação através da linguagem Pascal. Este compilador implementa um subconjunto desta linguagem e contém as estruturas de dados, funções e comandos mais utilizados por iniciantes. O arquivo de ajuda que acompanha o produto especifica as instruções suportadas. Este compilador pode ser obtido no site do PascalZIM!:

http://pascalzim.tripod.com/index.html

O aspecto da interface deste compilador pode ser visto na Figura 1. Notar a facilidade de se poder manter vários programas abertos simultaneamente (nesta figura são três, um por ficha, com o nome no padrão nome_arquivo.pas)

3. RESUMO DA LINGUAGEM PASCAL

3.1. Estrutura Básica de um programa Pascal Na Figura 2 é mostrada a estrutura básica de um programa Pascal, exemplificado na Figura 3.

program Nomeprograma;

Declarações begin comandos end.

Figura 2. Estrutura básica de um programa Pascal.

program Constante; const a = 5; begin writeln('Valor de a: ', a); end.

Figura 3. Exemplo de um programa Pascal.

No Pascal padrão, a área de declarações é subdividida em sete sub-áreas: uses, label, const, type, var, procedure e function. Algumas destas sub-áreas (as suportadas pelo Pascal ZIM!) serão abordadas mais adiante.

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a Prof. Dalton Vinicius Kozak 16/02/05 - 3 - program Qualquer;

Declarações begin comandos begin comandos end; comandos end.

Figura 4. Blocos em um programa Pascal.

O programa propriamente dito é escrito na área denominada corpo do programa, que é delimitada pelas palavras reservadas begin (início) e end (fim), seguida do ponto (.). O uso destas palavras caracteriza o que é chamado de bloco de comando, sendo os blocos internos ao programa (usados nas estruturas de controle, como as de seleção e de repetição) finalizados com ponto-e-vírgula (;) - ver Figura 4.

3.2. Executando um Programa no Pascal.ZIM!

O procedimento de execução de um programa no

Pascal ZIM! é bastante simples. Basta digitar o programa e clicar o botão "Executar", conforme mostrado na Figura 5. Outros botões relevantes - Salvar e Ajuda - são indicados. Para saber sobre os outros botões, basta passar o cursor do mouse sobre eles que uma pequena janela amarela será aberta indicando seu uso (figura ao lado).

Salvar ExecutarExecutar Ajuda

Figura 5. Primeiro programa no Pascal ZIM!: o tradicional "Alô, Mundo!".

Para o programa poder ser executado, ele deve estar sintaticamente correto (tudo escrito conforme a sintaxe da linguagem Pascal). Caso isto não ocorra, o compilador irá emitir uma mensagem avisando sobre os eventuais erros, indicando em que linha ocorreram e qual a natureza do erro. A Figura 6 mostra um exemplo disso para o primeiro programa (Figura 5), onde foi esquecido de se colocar um ponto-e-vírgula ao final do comando write: a sintaxe do Pascal exige um ponto-e-vírgula como terminador de comandos

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a Prof. Dalton Vinicius Kozak 16/02/05 - 4 -

Figura 6. Mensagem de erro sintático do compilador.

3.3. Tipos de Dados Pré-definidos

Os tipos de dados predefinidos na linguagem Pascal, e implementados no compilador

Pascal ZIM!, são mostrados na Tabela 1. A linguagem Pascal também permite que o usuário defina seus próprios tipos. Isto será visto mais adiante (item 3.16).

Tipo Descrição

Boolean Define dois valores lógicos: FALSE e TRUE. Um dado do tipo booleano ocupa um byte de espaço na memória.

Char Define os elementos do conjunto de caracteres que compõem o alfabeto ASCII, adicionados dos caracteres representados pelos códigos de 128 a 255. Um dado do tipo char ocupa um byte de espaço na memória.

Integer Define os valores inteiros compreendidos no intervalo de -2.147.483.647 até

2.147.483.647. Um dado do tipo integer ocupa quatro bytes de espaço na memória.

Real

Define os valores reais definidos no intervalo de 3.4·10-38 até 3.4·10+38 . Um dado do tipo real ocupa quatro bytes de espaço na memória.

String Define uma cadeia de caracteres. Se nenhuma restrição de tamanho for especificada, um dado do tipo string é capaz de armazenar uma seqüência contendo até 255 caracteres, onde cada caracter ocupa um byte de espaço na memória. Uma cadeia de caracteres pode ter seu tamanho definido (contendo menos de 255 caracteres), onde o tamanho especifica o número máximo de caracteres contidos na cadeia. Essa especificação deve ser indicada entre colchetes, logo após a palavra reservada string,

Tabela 1. Tipos de dados pré-definidos do Pascal ZIM!

No item 3.5 Constantes e Variáveis são apresentados alguns exemplos de declarações e usos que ilustram os tipos acima abordados.

3.4. Identificadores

Um identificador válido na linguagem Pascal é qualquer seqüência de caracteres que obedeça às seguintes regras:

• seja iniciada por um caractere alfabético (letras a,...,z, minúsculas ou maiúsculas) ;

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a Prof. Dalton Vinicius Kozak 16/02/05 - 5 -

numéricos (1, 2,..., 9, 0) ou o caractere;

• possuir, após o primeiro caractere, uma seqüência de caracteres que podem ser alfabéticos, • não seja uma palavra reservada da linguagem Pascal.

Identificadores nomeiam variáveis, constantes, funções e procedimentos. Alguns exemplos podem ser vistos na Tabela 2.

Identificadores válidos Identificadores NÃO válidos

A Nota P1 Meu_Identificador

1A E(13) A:B Meu Identificador

Tabela 2. Exemplos de identificadores na linguagem Pascal.

3.5. Constantes e Variáveis

Constantes e variáveis são definidas na área de declarações, logo após as palavras const e var, respectivamente. A constante assume o tipo do valor a ela atribuído (imutável: não pode ser alterado ao longo do programa), enquanto a variável tem o seu tipo definido na declaração e pode ter seu valor alterado quando for conveniente. As respectivas declarações são4:

const identificador = valor;[...;identificador = valor;] var identificador[,...,identificador]: tipo;

Na declaração acima, tipo é um tipo pré-definido (Tabela 1) ou definido pelo usuário (item 3.16). Exemplos:

a = 2;{ define uma constante inteira }
w = 1.25;{ define uma constante real }
sim = 'S';{ define uma constante caractere }

const teste = TRUE; { define uma constante lógica } nome = 'José'; { define uma constante string } var i, j: integer; { declara 2 variáveis inteiras } x, y, z: real; { declara 3 variáveis reais } flag: boolean; { declara uma variável lógica } letra: char; { declara uma variável caractere } nome_comleto: string[80]; { declara uma string com 80 caracteres }

A Figura 7 mostra um exemplo de programa utilizando variáveis e constantes.

4 Colchetes ([ e ]) sempre indicarão que aquilo por eles delimitado é opcional. Exceção se faz na definição de vetores/matrizes, onde os colchetes delimitam o "tamanho" destas estruturas.

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a Prof. Dalton Vinicius Kozak 16/02/05 - 6 - program AreaCirculo; const {Área de declaração de constantes} PI = 3.14159; var {Área de declaração de variáveis} R: real; begin write('Raio do círculo: '); read(R); writeln('Área do círculo: ',PI*R*R); end.

RESULTADO (TELA CONSOLE) Raio do círculo: 5 [enter]

Figura 7. Programa com áreas de declaração para constantes e variáveis.

3.6. Comentários

Comentários são textos escritos dentro do programa (código-fonte) para explicar ou descrever alguns aspectos relativos ao mesmo. Os comentários podem ser colocados em qualquer lugar do programa, e não fazem parte dele. São colocados entre os símbolos “{“ e “} “ (chaves) ou “(*” e “*)”. Exemplos:

A Figura 7 também mostra um programa com comentários explicando onde são as sub-áreas de declaração de constantes e de variáveis.

3.7. Comando de Atribuição

O comando de atribuição simplesmente define o valor de uma variável. O símbolo de atribuição no Pascal é ":=", e a sintaxe é a seguinte:

identificador := expressão; onde o identificador e o resultado da expressão devem ser de tipos compatíveis. Exemplos podem ser vistos na Figura 8.

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a Prof. Dalton Vinicius Kozak 16/02/05 - 7 - program Atribuicao; var

A, B: integer; C, D: real; T, F: boolean; Cadeia: string;

Figura 8. Programa com múltiplas atribuições.

3.8. Operadores A Tabela 3 resume os operadores do PascalZIM! utilizados nos diversos tipos de expressões.

Tipo Precedência Operador Símbolo 0 parênteses ( ) Geral 0 funções f(x) 1 Multiplicação * 1 Divisão Real / 1 Divisão Inteira ( truncada ) div 1 Resto da Divisão Inteira mod 2 Subtração -

Aritmético

2 Adição + 3 Maior que >

3 Menor que <

3 Maior ou igual >=

3 Menor ou igual <= 3 Igual =

Relacional

3 Diferente <> 4 Não not 5 e and

Lógico (boolean)

6 ou or Tabela 3. Operadores do Pascal ZIM!.

Notar que não há o operador de potenciação. Esta operação deve ser implementada através de uma função utilizando a seguinte relação: xy = ey·ln(x) . Na linguagem Pascal, as funções exp(x) (isto é, ex) e ln(x) são definidas. Para calcular x2 , pode usar sqr(x). Para x1/2 existe sqrt(x).

Existe um operador utilizado com o tipo string, denominado operador de concatenação, (símbolo +) que efetua a junção de duas variáveis ou constantes do tipo string. A Figura 9 mostra um programa onde houve a concatenação de strings.

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a Prof. Dalton Vinicius Kozak 16/02/05 - 8 - program Concatena; var PreNome, SobreNome, NomeCompleto: string[30]; begin

{ Seja o nome Alberto Roberto Silva } PreNome := 'Alberto Roberto '; SobreNome := 'Silva'; NomeCompleto := PreNome + SobreNome; writeln(NomeCompleto); end.

RESULTADO Alberto Roberto Silva

Figura 9. Programa com concatenação de strings.

3.9. Funções Pré-definidas

O compilador Pascal ZIM! implementa as seguintes funções: Abs, ArcTan, Chr, Cos, Eof,

Exp, Ln, Length, Odd, Ord, Pred, Random, Readkey, Round, Sin, Sqr, Sqrt, Succ, Trunc, Upcase. A função Help (tópicos de ajuda) do compilador fornece a descrição destas funções.

3.10. Saída de Dados

Utilizam-se os comandos write e writeln, conforme a sintaxe abaixo:

write(expressão[,...,expressão]); writeln(expressão[,...,expressão]);

A diferença entre um e outro é que o segundo comando faz o cursor passar para a próxima linha. A Figura 10 ilustra o uso destes comandos.

program Escreva; const a = 5; b = 4; c = 7; begin write(a,' e '); writeln(b); write('b - c = ', b - c); writeln(' e b + c = ', b + c); end.

RESULTADO 5 e 4 b - c = -3 e b + c = 1

Figura 10. Programa com comandos de saída.

Em se tratando de números, há a possibilidade da saída formatada, que define o tamanho total do campo numérico (incluindo o ponto), bem como a quantidade de casas decimais. O programa da Figura 1 ilustra como apode ser feita formatação da saída para números. Neste programa, a função dos colchetes é unicamente para indicar o tamanho do campo. A sintaxe da formatação é:

indentificador:tamanho_do_campo:casas_decimais

Programação - Texto Introdutório Introdução à Linguagem Pascal

IntroLingPascal-ZIM.doc - Ver. 1.0a Prof. Dalton Vinicius Kozak 16/02/05 - 9 -

Program SaidaFormatada;

a=[12.4]
a=[12.431]
b=[3]

Figura 1. Programa com comandos de saída formatada .

3.1. Entrada de Dados

Utilizam-se os comandos read e readln, conforme a sintaxe abaixo:

A diferença entre um e outro é que o segundo comando obriga que a próxima leitura de dados seja feita na linha seguinte5 . O programa mostrado na Figura 12 só funcionará se, após fornecido o primeiro valor (4), for pressionada a tecla enter , que obriga o cursor a passar para a próxima linha, onde o segundo valor (5) deve ser digitado.

program Leia; var a,b,x,y: integer; begin writeln('Digite x e y:'); read(x); read(y); writeln('Valores: x=',x,' e y=',y); writeln; { Pula 1 linha } writeln('Digite a e b:'); read(a,b); writeln('Valores: a=',a,' e b=',b); end.

Digite x e y: 4 [enter]

5 [enter] Valores: x=4 e y=5

Digite a e b: 7 8 [enter]

Valores: a=7 e b=8

Figura 12. Programa com comandos de entrada e saída.

3.12. Estruturas de Seleção

3.12.1. Alternativa Simples: if...then A sintaxe é

(Parte 1 de 3)

Comentários