Você está na página 1de 39

Linguagem de Programação

Programação Pascal

Márcio F. Campos Carlos A. Pilar

Versão 23 outubro de 2006

1

MEU PRIMEIRO PROGRAMA

6

 

1.1

6

1.2

RECURSOS DA

6

1.3

EXEMPLO:

6

1.4

PRÁTICA:

6

1.5

7

2

VARIÁVEIS

 

8

2.1

8

2.2

RECURSOS DA

8

2.3

EXEMPLO:

8

2.4

PRÁTICA

8

2.5

EXEMPLO DOIS

8

2.6

PRÁTICA

9

3

ALGUMAS FUNÇÕES PRÉ-DEFINIDAS

10

3.1 OBJETIVO: APRESENTAR FUNÇÕES

10

3.2 RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, READLN; SQR(ELEVAR

AO QUADRADO), SQRT(RAIZ QUADRADA)

10

3.3 EXEMPLO:

 

10

3.4 PRÁTICA

10

4

ATRIBUIÇÃO DE VALORES

11

4.1 OBJETIVO: APRESENTAR O COMANDO DE ATRIBUIÇÃO DE VALORES À

11

4.2 RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, READLN; SINAL DE

ATRIBUIÇÃO “:=”

 

11

4.3

EXEMPLO:

11

4.4

PRÁTICA:

11

4.5

DESAFIO:

11

5

13

6

13

 

6.1

OBJETIVO:

APRESENTAR O CONCEITO DE

13

6.2

RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, CONST

13

6.3

EXEMPLO:

13

6.4

PRÁTICA:

13

6.5

DICA:

14

7

VARIÁVEIS

 

15

7.1 OBJETIVO:

APRESENTAR O CONCEITO DE VARIÁVEIS

15

7.2 RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, CONST

15

7.3 EXEMPLO:

 

15

7.4 PRÁTICA:

15

8

CONTROLES DO

16

8.1 OBJETIVO: APRESENTAR CONTROLES DE FLUXO DE PROGRAMA

16

8.2 RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, IF/THEN

16

8.3 EXEMPLO:

 

16

8.4 PRÁTICA:

16

9

FUNÇÕES MOD E DIV

17

9.1 OBJETIVO:

APRESENTAR AS FUNÇÕES MOD E

17

9.2 RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, IF/THEN, MOD E DIV

17

9.3 EXEMPLO:

 

17

9.4

PRÁTICA:

17

10

18

 

10.1 OBJETIVO: LISTA DE

 

18

10.2 RECURSOS DA LINGUAGEM: UTILIZAÇÃO DOS COMANDOS E FUNÇÒES APRENDIDAS ATÁ O

MOMENTO

 

18

10.3

PRÁTICA:

18

11

LAÇOS

 

19

11.1

OBJETIVO: APRESENTAR COMANDOS DE REPETIÇÃO FOR

DO

 

19

11.2

RECURSOS DA LINGUAGEM : PROGRAM, WRITE, WRITELN, DELAY, BEGIN/END; READ,

READLN; FOR

DO.

 

19

11.3

EXEMPLOS:

19

11.4

PRÁTICA:

19

12

LAÇOS

 

20

12.1

OBJETIVO: APRESENTAR COMANDOS DE REPETIÇÃO WHILE

DO

20

12.2

RECURSOS DA LINGUAGEM : PROGRAM, WRITE, WRITELN, DELAY, BEGIN/END; READ,

READLN; WHILE

DO.

 

20

12.3

EXEMPLO:

20

12.4

PRÁTICA:

20

13

LAÇOS III

 

21

13.1

OBJETIVO: APRESENTAR COMANDOS DE REPETIÇÃO REPEAT

UNTIL

 

21

13.2

RECURSOS DA LINGUAGEM : PROGRAM, WRITE, WRITELN, DELAY, BEGIN/END; READ,

READLN; REAPEAT

UNTIL

 

21

13.3

EXEMPLO:

21

13.4

PRÁTICA:

21

14

EXERCÍCOS

 

22

14.1

OBJETIVO: LISTA DE EXERCÍCIOS EM

 

22

14.2

RECURSOS DA LINGUAGEM: UTILIZE OS COMANDOS DE LOOP: FOR

DO,

WHILE

DO,

REPEAT

UNTIL.

 

22

14.3

PRÁTICA:

22

15

SELEÇÃO MÚLTIPLA

 

23

15.1

OBJETIVO: APRESENTAR O COMANDO DE SELEÇÃO MÚLTIPLA. CASE

OF.

23

15.2

RECURSOS DA LINGUAGEM: PROGRAM, WRITE, WRITELN, DELAY, BEGIN/END., CASE

OF

23

15.3

EXEMPLO:

23

15.4

PRÁTICA:

24

16

EXECÍCIOS LAÇOS II

 

25

16.1

OBJETIVOS: APRESENTAR PROBLEMAS DE LAÇOS MÚLTIPLOS( LOOPS DENTRO DE

25

16.2

RECURSOS DA LINGUAGEM: PROGRAM, WRITLN, READLN, BEGIN, END, FOR

DO

25

16.3

EXEMPLO:

25

16.4

PRÁTICA:

25

17

DIFERENÇAS ENTRE OS TIPOS DE LAÇOS

 

26

17.1

OBJETIVO: DESTACAR AS PRINCIPAIS DIFERENÇAS ENTRE OS COMANDOS DE REPETIÇÃO, FOR

DO,

REAPEAT

UNTIL

E WHILE

DO

26

17.2

RECURSOS DA LINGUAGEM: PROGRAM, BEGIN

END,

FOR

DO,

REAPEAT

UNTIL

E WHILE

DO.26

17.3

EXEMPLO:

26

17.4

PRÁTICA:

26

18

VARIÁVEIS MULTIDIMENSIONAIS

 

27

18.1

OBJETIVO: APRESENTAR O CONCEITO DE VARIÁVEIS MULTIDIMENSIONAIS (VETORES E

 

27

 

18.2

RECURSOS DA LINGUAGEM: PROGRAM, WRITE, READ, FOR

DO,

DELAY,BEGIN

END

27

18.3

EXEMPLO:

27

18.4

PRÁTICA:

27

18.5

DESAFIO:

27

19

MATRIZES

28

 

19.1

OBJETIVO:

APRESENTAR CONCEITOS DE

28

19.2

RECURSOS DA LINGUAGEM: PROGRAM, BEGIN

END,

FOR

DO.

28

19.3

EXEMPLO:

28

19.4

PRÁTICA:

28

19.5

DESAFIO:

28

20

29

 

20.1

OBJETIVO: APRESENTAR A UTILIZAÇÃO DE TRECHOS DE PROGRAMAS REUTILIZÁVEIS

(PROCEDIMENTOS), SEM PASSAGEM DE PARÂMETROS

 

29

20.2

RECURSOS DA LINGUAGEM: PROGRAM, BEGIN

END,

WRITELN, READLN, PROCEDURE

29

20.3

EXEMPLO:

29

20.4

PRÁTICA:

29

21

PASSAGEM DE PARÂMETRO

 

30

 

21.1

OBJETIVO: MOSTRAR PASSAGEM DE PARÂMETRO DE PROCEDIMENTOS, TANTO POR VALOR

QUANTO POR REFERÊNCIA

 

30

21.2

RECURSOS DA LINGUAGEM: PROGRAM, BEGIN

END,

WRITELN, READLN, PROCEDURE

30

21.3

EXEMPLO:

30

21.4

PRÁTICA:

30

22

FUNÇÕES

31

 

22.1

OBJETIVO: MOSTRAR O CONCEITO DE

 

31

22.2

RECURSOS DA LINGUAGEM: FUNCTION <NOME DA FUNÇÃO>

 

31

22.3

EXEMPLO:

31

22.4

PRÁTICA:

31

23

ESCOPO DE

32

 

23.1

OBJETIVO: APRESENTAR O CONCEITO DE ESCOPO DE VARIÁVEIS

 

32

23.2

RECURSOS DA LINGUAGEM: VAR, PROCEDURE, FUNCTION, BEGIN

END

 

32

23.3

EXEMPLO:

32

23.4

PRÁTICA:

32

24

REGISTROS

33

 

24.1

OBJETIVO: APRESENTAR O CONCEITO DE

 

33

24.2

RECURSOS DA LINGUAGEM: TYPE, RECORD

33

24.3

EXEMPLO:

33

24.4

PRÁTICA:

33

25

REGISTROS

34

 

25.1

OBJETIVO: APRESENTAR O CONCEITO DE REGISTROS E COMANDOS PARA OPERAÇÕES COM

ARQUIVOS

 

34

25.2

RECURSOS DA LINGUAGEM: ASSIGN; REWRITE;

 

34

25.3

EXEMPLO:

34

25.4

PRÁTICA:

34

26

ARQUIVOS

35

 

26.1

OBJETIVO: LER ARQUIVOS DO TIPO TEXTO, MOSTRANDO NA TELA OU NA IMPRESSORA OS

RESULTADOS PESQUISADOS, TENDO COMO BASE O PROGRAMA DA AULA

 

35

26.2 RECURSOS DA LINGUAGEM: RESET; ASSIGN; CLOSE; READLN; EOF()

 

35

26.3 EXEMPLO:

 

35

26.4 PRÁTICA:

36

27

ARQUIVO DIRETO

37

 

27.1

OBJETIVO: APRESENTAR O CONCEITO DE ARQUIVO DIRETO (FILE OF

37

27.2

RECURSOS DA LINGUAGEM: ASSIGN, RESET, REWRITE, FILE OF E

37

27.3

EXEMPLO:

37

27.4

PRÁTICA:

37

28

ARQUIVO

38

 

28.1

OBJETIVO: INSERIR DADOS EM UM ARQUIVO DO TIPO FILE OF

38

28.2

RECURSOS DA LINGUAGEM: ASSIGN, RESET, WRITE, SEEK, FILESIZE,

38

28.3

EXEMPLO:

38

28.4

PRÁTICA:

39

1

Meu Primeiro Programa

1.1 Objetivo.

Apresentar a elaboração de um programa simples em pascal, mostrando a estrutura básica de

um programa nessa linguagem.

1.2 Recursos da Linguagem.

A linguagem pascal possui um conjunto de palavras reservadas que são comandos executados

pelo computador na resolução de um algoritmo escrito em uma linguagem de programação. As

palavras reservadas não podem ser utilizadas de outra forma. Os principais comandos da

linguagem pascal apresentados neste primeiro programa são.

Program: esta palavra reservada delimita o início do programa.

Write: esta comando escreve um conjunto de carateres em um periférico de saída que pode

ser uma impressora, um arquivo ou em uma impressora.

Writeln: este comando faz exatamente aquilo que o comando write, porém faz pular uma

linha.

Delay: aguarda um tempo fixo pré-determinado.

Begin/End: este par de comandos define o escopo de um conjunto de comandos/instruções.

{ }: o conjunto de pares de chaves possibilita escrever comentários ao longo do programa.

1.3 Exemplo:

program primeiro;

(prg1a)

{cabeçalho o programa}

uses crt;

{uso da unit crt}

begin

{declara o início do prg}

clrscr;

{limpa a tela}

write(‘alô mundo’);

{escreve na tela sem mudar de

linha}

delay(3000);

{impede a execução imediata do

próximo

comando}

end.

1.4 Prática:

Digite o programa acima no turbo pascal e faça-o executar.

Aumente ou diminua o tempo do comando delay, compile, execute e verifique o que acontece.

O comando textcolor(Red) modifica a cor do texto. Escreva este comando antes do comando write. Compile, execute e verifique o que acontece. O pascal possui uma tabela de cores que podem ser usadas.

O comando writeln escreve na tela mudando de linha. Modifique o programa acima de forma imprimir de 5 a 10 linhas sendo cada uma de uma cor diferente.

1.5

Adiante.

A tabela 1 lista as palavras reservadas no pascal padrão e não podem se modificadas.

AND

END

MOD

REAPEAT

ARRAY

FILE

MIL

SET

BEGIN

FOR

NOT

THEN

CASE

FORWARD

OF

TO

CONST

FUNCTION

OR

TYPE

DIV

GOTO

PACKED

UNTIL

DO

IF

PROCEDURE

VAR

DOWNTO

IN

PROGRAM

WHILE

ELSE

LABEL

RECORD

WITH

Tabela 1.

A tabela 2 lista as cores que podem ser utilizadas. Pode-se utilizar tanto as cores quanto os números.

Número

Cor

Número

Cor

0

Black

8

Darkgray

1

Blue

9

Lightblue

2

Green

10

Lightgreen

3

Cyan

11

Lightcyan

4

Red

12

Lightred

5

Magenta

13

Lightmagenta

6

Brown

14

Yellow

7

Lightgray

15

white

Tabela 2.

2

Variáveis

2.1 Objetivo.

Apresentar o conceito de variável e os comandos de leitura.

2.2 Recursos da Linguagem.

read, readln.

2.3 Exemplo:

program multiplica2;

(prg2a)

uses crt;

var numero

:

interger;

{uma

variável

pode

assumir valores

diferentes durante a execução do prg; A variável número é do

tipo inteiro, ou seja, somente assume valores do tipo 0,1(- 1),2(-2),3(-3),4(-4),5(-5) etc}

begin

 

write(‘digite um número qualquer’);

read(numero);

write(numero*2);

delay(3000);

end.

2.4 Prática.

Digite, compile e execute o programa acima.

Modifique o programa acima de forma que o número digitado seja multiplicado por 3 (faça também para 4 ou 5). Não se esqueça de compilar e executar, logo após.

Altere o programa acima os comandos write para writeln e read para readln. Compile e execute.

2.5 Exemplo dois.

program soma;

uses crt;

var numero1, numero2

begin

(prg2b)

: integer;

writeln(‘digite o primeiro número’);

readln(numero1);

writeln(‘digite o segundo número’);

readln(numero2);

writeln(numero1 + numero2);

delay(3000);

end.

2.6

Prática.

Escreva o programa acima no ambiente turbo pascal, compile-o e execute-o.

Modifique o programa para ao invés de somar, subtrair, multiplicar e dividir (lembre-se de que não é possível a divisão por zero). Ao fazer a modificação do programa certifique-se de salvá-lo com outro nome.

Experimente informar dois números inteiros acima de 30000. Verifique o que acontece!

No caso do problema identificado acima, mude o tipo de integer para longint ou real.

3

Algumas Funções pré-definidas.

3.1 Objetivo: apresentar funções pré-definidas.

3.2 Recursos da Linguagem: Program, Writeln, Delay, Begin/End, readln; SQR(elevar ao quadrado), SQRT(raiz quadrada).

3.3 Exemplo:

(prg3a)

program quadrado;

uses crt;

var numero : integer;

begin

 

writeln(‘digite um número’);

readln(numero);

writeln(sqr(numero));

delay(3000);

end.

3.4

Prática.

Digite o programa acima. Compile-o e execute-o.

Modifique o programa acima de forma a calcular a raiz quadra de de um número.

um número

Experimente, no programa

negativo. Lembre-se que não existe a raiz quadrada de números negativos no conjunto dos números reais.

feito

no

item

2, digitar

4

Atribuição de valores.

4.1 Objetivo: apresentar o comando de atribuição de valores à variáveis.

4.2 Recursos da Linguagem: Program, Writeln, Delay, Begin/End, readln; sinal de atribuição “:=”.

4.3 Exemplo:

(prg4a)

program area_quadrado;

uses crt;

var lado, area

: integer;

begin

 

writeln (‘digite o tamanho lado do quadrado’);

readln(lado);

area := lado * lado;

{ou area := sql(lado)}

writeln(‘este é o valor da área do quadrado’, area);

delay(3000);

end.

{ o end

final do programa sempre acaba em ponto}

4.4 Prática:

Digite, compile e execute o programa acima.

Faça uma programa que calcule a área do retângulo (base x altura).

x

altura)/2.

Faça uma programa que calcule a área do trapézio ((base maior + base menor) x altura )/2.

Faça

uma

programa

que

calcule a

área do triângulo

(base

4.5 Desafio:

Faça uma programa para calcular a área da casa abaixo.

3 m 10 m 8m quarto cozinha 2m banheiro 6m 6m sala 4m 2m
3 m
10 m
8m
quarto
cozinha
2m
banheiro
6m
6m
sala
4m
2m

11

área da casa acima para qualquer

valor, mantendo o formato geométrico da casa (quarto= retangulo; sala= trapézio + triângulo; cozinha = retângulo; banheiro = retângulo).

Faça um programa que calcule a

5

6

6.1 Objetivo: apresentar o conceito de constante.

6.2 Recursos da Linguagem: Program, Writeln, Delay, Begin/End, const.

6.3 Exemplo:

Constantes.

(prg5a)

program area_circulo; uses crt; const

pi = 3.1415;

{definição da constante}

var

 

area, raio: real;

{Observe! Duas variáveis do tipo real sendo declaradas ao mesmo tempo}

begin

 

writeln(‘digite o raio do círculo’); readln(raio);

area :=

pi * sqr(raio);

{ o valor de pi é igual a 3.1415}

writeln(area); writeln(‘o valoe de pi é’, pi);

delay(3000);

end.

(prg5b)

program graus; uses crt; const conerte_far_ celsius = 0.55 {definição da constante} var

farenheit, celsuis: real;

begin

 

writeln(‘digite a temperatura em graus farenheit’); readln(farenheit); celsius := converte_far_celsius * (farenheit –32); writeln (‘a temperatura em celsius é ‘, celsius);

delay(3000);

end.

6.4 Prática:

Faça um programa que solicite ao usuário o valor do raio de forma a

calcular o volume de uma esfera (bola de frescobol), cuja fórmula é

Volume

const. Faça um programa em que dado uma valor em celsius, obtenha-se um valor em farenheit, dado a fórmula far = 1.888 * celsius + 32. Dica use o comando const. Faça uma programa que solicite o preço de um produto e este seja majorado em 20%. Dica use o comando const.

=

4/3 * pi * R 3 (onde R é o raio). Dica: use o comando

6.5

Dica:

Como visto os tipo desempenham o papel de informar ao programa como serão interpretados os bytes associados às variáves. Porém cada tipo possui um escopo de valores. Ex:

Tipo Const Byte Integer Longint Shortint Real 11 casas após a vírgula).

escopo : valor único. : 0 a 255 : -32768 a 32767 : -2147483648 a 2147483647 : -128 a 127 : qualquer número real (com precisão de

7

Variáveis Alfanuméricas.

7.1 Objetivo: apresentar o conceito de variáveis alfanuméricas.

7.2 Recursos da Linguagem: Program, Writeln, Delay, Begin/End, const.

7.3 Exemplo:

program caracteres; uses crt; const

(prg6a)

bem_vindo = ‘seja bem vindo ao ORT

’;

var

 

nome : string;

begin

 

writeln(‘digite o seu nome’); readln(nome); writeln(bem_vindo + nome);

{ o comando + concatena strings}

delay(3000);

end.

program caraceres2; uses crt; var

(prg6b)

letraminúscula, letramaiuscula : char; {equivale ao string de apenas uma posição}

begin

 

writeln(‘digite qualquer letra munúscula’); readln(letraminuscula); letramaiuscula := upcase(letraminuscula); {a função upcase transforma letras minúsculas em letras maiúsculas} writeln(letramaiuscula);

delay(3000);

end.

7.4 Prática:

Faça uma programa que aceite uma frase em letras minúsculas de forma a transformá-las em letras maiúsculas. Faça uma programa que aceite o nome e o sobrenome de uma pessoa e imprima-os invertidos (sobrenome e nome). A função length(string) fornece o número de caracteres da variável informada. Faça uma programa que calccule o tamanho, em letras, de uma frase.

8

Controles do fluxo.

8.1 Objetivo: apresentar controles de fluxo de programa.

8.2 Recursos da Linguagem: Program, Writeln, Delay, Begin/End, if/then.

8.3 Exemplo:

(prg7a)

program maior_que_dez; uses crt; var valor : interger; begin

writeln(‘digite um valor’); readln(valor); if valor > 10 then writeln (‘voce digitou um valor maior que

10’);

delay(3000);

end.

(prg7b)

program medias; uses crt; var nota1, nota2, media : real problema} begin

{olhe o tipo! Com inteiro pode dar

writeln(‘digite a sua primeira nota’)

readln(nota1);

writeln(‘digite a sua Segunda nota’)

readln(nota2);

media := (nota1+nota2)/2; {olha o parenteses!} if media > 5 then writeln(‘parabens voce passou!’) else writeln(‘bem vindo ao curso de verão’); { repare o ponto e virgula apenas no final do else!} end.

8.4 Prática:

Digite os programas acima e execute-os no ambiente turbo pascal. Faça um programa que calcule o valor de (delta) em uma equação de segundo grau, informando o seu valor caso seja positivo, caso contrário dar mensagem de negativo. Lembre-se, = b 2 – 4ac. Faça um programa que calcule a equação do segundo grau, sendo dados os coeficientes a, b e c. Lembre-se (–b +/- )/2a. A relação peso/altura é dada pela fórmula XXXXXXX. Faça uma programa que verifique se o seu peso está compatível com sua altura.

9

Funções mod e div

9.1 Objetivo: apresentar as funções mod e div.

9.2 Recursos da linguagem: Program, Writeln, Delay, Begin/End, if/then, mod e div.

9.3 Exemplo:

(prg8a)

program e_par?; uses crt; var numero, resto : integer; begin

writeln(‘digite um número inteiro’); readln(numero); resto := numero mod 2; {a função mod fornece o resto de uma divisão inteira}

if resto = 0 then begin {quando o if/then tem mais de um comando deve-se usar os comandos begin/end} writeln(‘o numero digitado e par’);

delay(3000);

end {quando exite else após o end, não se usa ;} else begin

writeln (‘o número é ímpar’);

end.

end; {fim do else}

delay(3000);

(prg8b)

program dividindo_mesada; uses crt; var mesada, filhos, mesada_filho: integer; begin

writeln(‘informe o total da mesada no mês’); readln(mesada); writeln(‘informe o número de filhos’); readln(filhos); mesada_filho := mesada div filhos; writeln(‘este é o valor da mesada_filhos ’, mesada_filhos);

delay(3000);

end.

9.4 Prática:

Digite os programas acima e faça-os executar em turbo pascal. Elabore um programa em que dado um ano, verifique se este é bissexto ou não (divida-o por 4 e verifique o resto).

10 Exercícios.

10.1 Objetivo: lista de exercícios.

10.2 Recursos da Linguagem:

aprendidas atá o momento.

10.3 Prática:

utilização

dos

comandos

e

funçòes

Deseja-se

kilometragem

consumidos(TLC). Para se obter o consumo em Km/L deve-se usar a

fórmula: (KF-KI)/TLC.

Elabore um programa para calcular o perímetro do círculo. Deve-se

o Perímetro(p) = 2 r, onde

solicitar

do perímetro é dado por

a

de litros

calcular

o

consumo de

e

a

um automóvel.

e

o

Sabe-se

inicial(KI)

final(KF)

total

raio

(

r

).

O cálculo

(pi) é uma constante de valor 3.14.

Sabendo-se que um automóvel percorreu 500m , faça um programa que solicite um tempo de percurso de forma a calcular a velocidade média. Sabe-se que velocidade média = espaço / tempo.

Sabendo-se que um automóvel atinge a velocidade de 100 m/s em t segundos, calcule a aceleração, onde a aceleração = velocidade / tempo. O programa deve mostrar as diferentes acelerações para cada uma dos tempos informados.

para um grupo de funcionários de uma

empresa. A regra básica é a que se segue. Caso o salário seja maior ou igual que 1500 reais, então terá aumento de 10%; caso contrário 15%. O programa deve aceitar um salário e calcular o respectivo aumento.

Deseja-se dar um aumento

Deseja-se classificar um grupo de pessoas conforme a faixa de idade, da forma de se segue:

< 13 anos : infantil

de 13 aos 19 : adolescente

de 20 aos 35: jovem

de 36 aos 60: meia idade

61 em diante: idoso

11 Laços.

11.1 Objetivo: apresentar comandos de repetição for

11.2 Recursos da Linguagem : Program, Write, Writeln, Delay, Begin/End;

do (loop).

read, readln; for

do.

11.3 Exemplos:

(prg10a)

program mostra_for; uses crt; cont max = 20; var incremento begin

: integer; {deve ser uma variável inteira!}

for incremento :=

1 to max do { o begin/end do for

é executado

max vezes; a variável incremento é atualizada automaticamente até atingir o número max }

begin

writeln(‘este é o valor do incremento dentro do loop’,

incremento);

end.

end;

delay(3000);

11.4 Prática:

Faça um programa que imprima os 20 primeiro pares a partir do 0(zero). Dica: use a função mod. Idem para os ímpares. Idem para os primos. Lembre-se que os números primos são aqueles divididos por si mesmos e por 1. Idem para a raiz quadrada dos 20 primeiros números inteiros. Dica:

use a função sqrt. Idem para o quadrado dos 20 primeiros números inteiros. Dica: use a função sqr. Faça uma programa que solicite ao usuário digitar 10 números distintos, tendo como resposta do mesmo o maior deles. Idem para o menor.

12 Laços II.

12.1 Objetivo: apresentar comandos de repetição while

12.2 Recursos da Linguagem : Program, Write, Writeln, Delay, Begin/End;

do (loop).

read, readln; while

do.

12.3 Exemplo:

(prg11a)

program mostra_while; uses crt;

var incremento begin

: integer;

incremento : = 1;

while incremento <= 20 do begin writeln(‘o incremento está valendo’, incremento);

{atenção ! }

delay(3000);

incremento := incremento + 1 {atenção !} end; {fim do enquanto}

end.

12.4 Prática:

Faça um programa que imprima os 20 primeiro pares a partir do 0(zero). Dica: use a função mod. Idem para os ímpares. Idem para os primos. Lembre-se que os números primos são aqueles divididos por si mesmos e por 1 Idem para a raiz quadrada dos 20 primeiros números inteiros. Dica:

use a função sqrt. Idem para o quadrado dos 20 primeiros números inteiros. Dica: use a função sqr. Faça uma programa que solicite ao usuário digitar 10 números distintos, tendo como resposta do mesmo o maior deles. Idem para o menor.

13 Laços III.

13.1 Objetivo: apresentar comandos de repetição repeat

13.2 Recursos da Linguagem : Program, Write, Writeln, Delay, Begin/End;

until (loop).

read, readln; reapeat

until.

13.3 Exemplo:

(prg12a)

program mostra_repeat; uses crt;

var incremento begin

: integer;

incremento : = 1; repeat

{atenção ! }

writeln(‘o incremento está valendo’, incremento);

delay(3000);

incremento := incremento + 1 {atenção !} until keypressed; { observe que o teste é feito ao final; isto quer dizer que o programa entra no loop pelo menos uma única vez} end.

13.4 Prática:

Faça um programa que imprima os 20 primeiro pares a partir do 0(zero). Dica: use a função mod. Idem para os ímpares Faça um programa que imprima os 20 primeiro pares a partir do 0(zero). Dica: use a função mod. Idem para os ímpares. Idem para os primos. Lembre-se que os números primos são aqueles divididos por si mesmos e por 1 Idem para a raiz quadrada dos 20 primeiros números inteiros. Dica:

use a função sqrt. Idem para o quadrado dos 20 primeiros números inteiros. Dica: use a função sqr. Faça uma programa que solicite ao usuário digitar 10 números distintos, tendo como resposta do mesmo o maior deles. Idem para o menor.

14 Exercícos Laços.

14.1 Objetivo: lista de exercícios em loop’s.

14.2 Recursos da Linguagem: utilize os comandos de loop: for

while

do,

repeat

14.3 Prática:

until.

do,

Em um frigorífico deseja-se verificar qual o boi mais gordo e o mais magro. Cada boi possui um número de identificação. Na medida que o boi passa na balança um funcionário digita o peso e o numero de identificação do animal. Sabendo-se que serão pesados 25 bois, faça um programa que imprima o número de identificação do boi mais pesado e do mais leve. Deseja-se mostrar na tela a tabuada de uma determinado número. Faça uma programa em que dado um número, apresente a respectiva tabuada (1 a 10) .

Dada a seguinte equação: f(x) =

verifique o valor de f(x) para os valores de x maiores que –4 e menores que 15. Dada uma equação do segundo grau, elabore um programa que solicite os coeficientes a,b e c de forma que se calcule o e caso o seja positivo ou zero, calcule e imprima os vértices (x v = -b/(2 a) e y v = - /(4a). Deve-se testar os resultados para cinco equações diferentes. Dica utilize um loop. Faça uma programa que mostra a tabuada exponencial do número 5. Calcule o valor de 5 elevado aos expoentes de 0 a 20.

2x + 1. Faça uma programa que

15 Seleção Múltipla.

15.1 Objetivo: apresentar o comando de seleção múltipla. Case

15.2 Recursos da Linguagem: Program, Write, Writeln, Delay, Begin/End.,

of.

of.

15.3 Exemplo:

Case

(prg14a)

program case_of; uses crt; operador : char; operando1, operando2 : real;

var

begin

writeln(‘digite o operando 1’);

readln(operando1);

writeln(‘digite o operando 2’);

readln(operando2);

writeln(‘digite qual a operação desejada: +, -, *, /’); readln(operador); case operador of ‘+’ : writeln(operador1 + operador2); ‘-’ : writeln(operador1 - operador2); ‘*’ : writeln(operador1* operador2); ‘/’ : writeln(operador1 / operador2); end; {case}

end.

(prg14b)

program case_of_else; uses crt; operador : char; operando1, operando2 : real;

var

begin

writeln(‘digite o operando 1’);

readln(operando1);

writeln(‘digite o operando 2’);

readln(operando2);

writeln(‘digite qual a operação desejada: +, -, *, /’); readln(operador); case operador of ‘+’ : writeln(operador1 + operador2); ‘-’ : writeln(operador1 - operador2); ‘*’ : writeln(operador1* operador2); ‘/’ : writeln(operador1 / operador2); else: writeln(‘operador inválido’); end; {case}

end.

15.4 Prática:

Faça um programa que apresente um menu de opções para o cálculo da área das seguintes figuras geométricas: (a) quadrado, (b) retângulo, (c) triângulo, (d) trapézio e (e) círculo.

Um banco classifica seus clientes segundo a média do saldo mensal, conforme a tabela abaixo:

Média do saldo mensal

status

< 500

uma estrela

de 500,01 a 1.500

duas estrelas

de 1.500,01 a 5.000

três estrelas

acima de 5.000,01

vip

Faça uma programa que aceite o saldo médio do cliente e imprima em qual status este se encontra.

16 Execícios Laços II.

16.1 Objetivos: apresentar problemas de laços múltiplos( Loop’s dentro de loop’s).

16.2 Recursos da linguagem: program, writln, readln, begin, end, for

16.3 Exemplo:

do.

program tabuada; uses crt;

(Prg15a)

var i,j

: integer;

begin

for i := 1 to 9 do begin

 
 

clrscr; writeln(‘esta é a tabuada de’, i); for j := 1 to 9 do begin

writeln(i, “

x

“,j, “ = “, i*j);

end; {fim do j} writeln(‘para a proxima tabela digite qualquer tecla’); readkey(); end; {fim do i}

end.

16.4 Prática:

Faça um aprograma que usando-se um loop dentro de outro, como o do exemplo 14.1, em que mostre quando o valo r de i > j. Faça uma tabuada que informe mostre os valores de 1 a 20.

Faça um programa que mostre uma tabuada dado uma faixa de valores. Faça uma programa que calcule quantos triângulos retângulos

existem, dado que os lados podem variar na faixa de

a 25. Dica: use o teorema de Pitágoras (a 2 = b 2 + c 2 ); um triângulo só existe se cada lado for menor que a soma de outros dois; atenção, este programa necessita de 3 loop’s embutidos um dentro do outro! Idem para o problema acima, exceto que para a fórmula a 3 = b 3 + c 3 . Sendo que neste caso esta fórmula não está associada a nenhuma figura geométrica!

valores de 1

17 Diferenças entre os tipos de laços.

17.1 Objetivo: destacar as principais diferenças entre os comandos de

repetição, for

do,

reapeat

Linguagem:

do.

until

17.2 Recursos

reapeat

da

until

e while

17.3 Exemplo:

e while

do.

program,

begin

end,

for

do,

FOR

WHILE

REPEAT

 

program forexemp; var i : integer; begin for i := 1 to 10 do begin

 

Program whileexemp;

Program repeatexemp; Var i : integer;

Var

i : integer;

Begin i:= 1; while i < 11 do begin

Begin

 
 

i:= 1; repeat

writeln(3*i);

writeln(3*i);

delay(1000);

writeln(3*i);

delay(1000);

 

end;

delay(1000)

i := i +1 until i > 10 end.

end.

i := i+ 1;

 

end;

end.

 

O comando for

do

deve ser

O while

do

faz um teste de

O

reapeat

do

permite a

utilizado quando se sabe a priori o número de repetições que se deseja.

condição no início do loop, caso esta seja verdadeira a repetição é executada

execução de pelo menos uma única vez dentro do corpo do comando, já que

Atenção: no for

do

a variável

(begin

end

do while), caso

o

teste do controle do

de controle (i) é atualizada automaticamente.

seja falsa o controle do

loop ocorre apenas ao

programa passa para a primeira instrução após o

final do mesmo. Repare que o corpo do comando

 

begin

end

do while.

repeat

do

é executado

Atenção: observe que a variável de controle (i) deve ser atualizada dentro do próprio loop.

enquanto a condição do until é falsa. Ao se

tornar verdadeira o loop

é

encerrado.

 
 

Atenção: semelhantemente

ao while

 

do,

a variável

de controle deve ser atualizada dentro do próprio loop.

17.4 Prática:

Digite e execute os programas acima.

Para os programas acima, faça as seguintes alterações:

No programa FOR faça listar a tabuada de 1 a 20.

No programa WHILE inicialize a variável de controle i com

11.

No programa REPEAT inicialize a variável de controle i

com 11.

18 Variáveis Multidimensionais

18.1 Objetivo:

apresentar

o

(vetores e matrizes).

conceito

de

variáveis

multidimensionais

18.2 Recursos

da

linguagem:

program,

write,

read,

for

do,

delay,begin

end.

18.3 Exemplo:

(prg17a)

program vetor_manual; uses crt; cont nmax = 5; type

vetor = array[1

var

nmax] of integer;

i: integer;

vet: vetor;

begin

for i := 1 to nmax do begin

writeln(‘entre como número’); readln(vet[i]); {preenchendo o vetor, na posicao i}

end.

end;

18.4 Prática:

Faça um programa que imprima o vetor acima e na ordem inversa. É necessário digitar o programa acima. Idem acima, so que imprime na ordem correta da entrada de dados. Faça um programa que preencha um vetor de 10 posições, apenas com números pares. Idem para ímpares. Faça um programa que aceite uma palavra de até 10 caracteres e imprima na ordem inversa. A entrada da palavra deve ser de caracter a caracter. Acione ao programa acima a seguinte funcionalidade: imprimir a posição i do vetor onde ocorrer uma letra informada. Faça uma menu de opções.

18.5 Desafio:

Faça um programa que, dado um nome e o sobrenome de um indivíduo, imprima o sobrenome e o nome, nesta ordem! Ex: Rui Barbosa , o programa imprime Barbosa, Rui.

19 Matrizes

19.1 Objetivo: apresentar conceitos de matrizes.

19.2 Recursos da Linguagem: program, begin

19.3 Exemplo:

end,

(prg18a)

program matriz; uses crt;

const nlinmax = 10; ncolmax = 10;

type matriz = array[1

var i, j : integer; minha_matriz : matriz;

nlinmax,

begin

1

for i := 1 to nlinmax do begin

for j := 1 to ncolmax do begin

nconmax];

for

do.

randomize; valor := random(j); minha_matriz[i,j] := valor; end; {end fo for j} end; {endo do for i} end. {end do pgm}

19.4 Prática:

Digite e execute o programa acima do exemplo18.1

Atualize o programa acima para que este leia uma matriz randômica

e a imprima ;

Faça uma programa que imprima apenas os valores da matriz cujos os números da linha sejam iguais aos números das colunas.

Faça uma programa que imprima apenas os valores da matriz cujos os números da linha sejam iguais ou menores aos números das colunas. Faça uma programa que imprima apenas os valores da matriz cujos os números da linha sejam iguais ou maiores aos números das colunas.

19.5 Desafio:

Faça um programa que preencha automaticamente uma matriz 11x11 sendo que toda a coluna 6 e linha 6 devem conter o número 1, de outra forma deve conter 0 (forma de cruz). O programa deve, também, imprimir a respectiva matriz. Faça um programa que preencha automaticamente uma matriz 11x11 sendo que deve ser formado uma estrela. Tenha como base as linhas 3

e 9 e as coluna 6. O programa deve, também, imprimir a respectiva matriz.

20 Procedimentos.

20.1 Objetivo:

apresentar

a

utilização

de

trechos

de

programas

reutilizáveis (procedimentos), sem passagem de parâmetros.

20.2 Recursos procedure.

20.3 Exemplo:

da

Linguagem:

program,

(prg19a)

begin

end,

writeln,

readln,

program procedimento; uses crt; var

lado, base, altura, area : real; {variáveis globais, vistas por todo o pgm} opcao : integer; procedure quadrado; begin

writeln(‘digite o lado ’); readln(lado); area := lado*lado;

writeln(area:4:2);

delay(1000);

end; {fim do procedure quadrado}

procedure retangulo; begin

writeln(‘digite a base e altura’); readln(base, altura); area := base * altura;

writeln(area:4:2);

delay(1000);

end; {fim do procedimento retângulo}

Begin {inicio do programa principal!!!} Writeln(‘escolha qual a sua opção’); Writeln(‘1 – quadrado’); Writeln(‘2 – retângulo’); Readln(opcao); Case opcao of 1 : quadrado; 2: retangulo; else writeln(‘opcao invalida’); end; {fim do case} end. {end do pgm}

20.4 Prática:

Digite e execute o programa acima (19.1). Adicione ao programa acima os procedimentos para cálculo da área do triângulo, trapézio, círculo e losango. Insira no programa uma opção para saída. Faça um programa que implemente uma calculadora. Para cada operação utilize um procedimento diferente.

21 Passagem de parâmetro.

21.1 Objetivo: mostrar passagem de parâmetro de procedimentos, tanto por valor quanto por referência.

21.2 Recursos procedure.

21.3 Exemplo:

readln,

da

Linguagem:

program,

begin

end,

writeln,

(prg20a)

program procedimento2; uses crt; var

a,b,c : integer; { estas variáveis são globais }

procedure incrementa (x:integer, var y:integer); { Em x a passagem do parâmetro é dita por valor, ou seja, e passado uma cópia do valor da variável para o procedimento. Em y a passagem é por referência, ou seja, é passado um endereço de memória, sendo assim se o valor da variável for alterado no procedimento este volta alterado ao programa principal; x e y são os parâmetros do procedimento. } begin

x := 2*x + y;

y := 3*x;

writeln(‘este é o valor de x’, x); writeln(‘este é o valor de y’, y);

delay(2000);

end; { fim do procedimento}

begin { inicio do programa principal}

a := 2;

b:= 3; writeln(‘este é o valor de a’ , a); writeln(‘este é o valor de b’, b); incrementa(a,b); writeln(‘este é o valor de a’ , a); writeln(‘este é o valor de b’, b);

end.

21.4

Prática:

Reescreva os programa de cálculo da área do triângulo e retângulo passando a base e a altura por valor, usando procedimentos. Reescreva os programa de cálculo da área do triângulo e retângulo passando a base e a altura por referência, usando procedimentos.

22 Funções

22.1 Objetivo: mostrar o conceito de funções.

22.2 Recursos da Linguagem: function <nome da função>

22.3 Exemplo:

program eleva_ao_cubo; uses crt; var

x : real;

function cubo(x :real); begin

cubo := x*x*x; end; { fim da função}

Begin

(prg21a)

Writeln(‘digite um número’); Readln(x); Writeln(‘este é o cubo de x: ‘, cubo(x));

End.

22.4 Prática:

Elabore uma função que solicite um número e eleve ao expoente 15 (use o comando exp(ln)). Elabore uma função em que solicite uma cadeia de caracteres imprima os 5 primeiros. Dado a fórmula matemática f(x) = x 2 - 3x + 5. Faça uma programa que calcule o f(x). Tendo como base o programa acima faça o mesmo para as seguintes funções matemáticas:

f(x) = 2x + 5 f(x) = x 7 + 1 f(x) = e 3

23 Escopo de variáveis.

23.1 Objetivo: apresentar o conceito de escopo de variáveis.

23.2 Recursos da Linguagem: var, procedure, function, begin

23.3 Exemplo:

(prg22a)

end.

program escopo_de_variáveis; var

global_x, global_y : integer; {variáveis globais, visíveis em todo o programa} procedure incrementa;

var local_x

procedimento incrementa}

: integer; {esta variável só é vista dentro do

begin

 

local_x := 3; local_x := local_x + 1; global_x := local_x; writeln(‘local_x = ‘, local_x); writeln(‘global_x = ‘, local_x);

delay(1000);

end;

procedure troca (var x : integer, y : integer); referência e y por valor} var temp :integer; begin

{ x é passado por

temp := x;

x := y;

y := temp;

writeln(‘dentro do procedimento x é igual a ‘, x); writeln(‘dentro do procedimento y é igual a ‘, y);

delay(1000);

end;

begin {programa principal}

writeln(‘digite dois números:’); readln(global_x); readln(global_y);

incrementa;

troca(global_x, global_y); writeln(‘global_x = ‘, global_x); writeln(‘global_y = ‘, global_y);

end.

23.4 Prática:

Copie e execute o programa acima. Observe o que acontece com cada variável. Adicione ao programa acima o seguinte comando: writeln(local_x), dentro do programa principal. Execute-o.

24 Registros.

24.1 Objetivo: apresentar o conceito de registro.

24.2 Recursos da Linguagem: type, record.

24.3 Exemplo:

program cadastro; const

nmax = 5;

(prg23a)

type

 

ficha = record

 

nmat

: integer;

nome

: string;

end; { observe que na descrição do registro existe um end sem

begin}

 

vetor = array[1

nmax]

of ficha;

var

vetfichas : vetor;

i : integer;

procedure inclui; begin

for i := 1 to nmax do begin

writeln(‘digite o número de matrícula do aluno’); readln(vetfivhas[i].nmat); writeln(‘digite o nome do aluno’); readln(vetfivhas[i].nome); end; {fim do for}

end;

procedure imprime; begin

writeln(‘matricula e nome’); for i := 1 to nmax do begin

writeln(vetfichas[i].nmat); writeln(vetfichas[i].nome); end; {end do for} end; {end da procedure}

Begin { programa principal} inclui; imprime;

delay(1000);

end. {end do programa principal}

24.4 Prática:

Digite e execute o programa acima. Faça um programa, que utilize um vetor de registros( máximo de 6 proprietários), que mostre o número do chassi do carro, o nome do proprietário e a data de pagamento do IPVA. Ao final imprima na ordem inversa ao que foi digitado.

25 Registros.

25.1 Objetivo: Apresentar o conceito de registros e comandos para operações com arquivos textos.

25.2 Recursos da Linguagem: assign; rewrite; close.

25.3 Exemplo:

(prg24a)

program arquivo_texto; uses crt; var

nome

: string[30];

nota

: real;

meuarquivo : text;

grava

: boolean;

op

: string;

begin

 

assign(meuarquivo, ‘meuarq.dat’)

{

observe que meuarquivo é o nome lógico do arquivo}

{meuarquivo.dat é o nome físico do arquivo} rewrite(meuarquivo)

este comando cria o arquivo para gravação pela primeira vez} grava := true; while grava do begin

{

 

writeln(‘digite o nome do aluno ’); readln(nome); writeln(‘digite a nota do aluno ’); readln(nota);

writeln(meuarquivo,nome,nota(4:2));

 

writeln(‘deseja gravar mais registros? S/N ‘); readln(op); if op = ‘N’ or op = ‘n’ then grava := false; end; {while} close(meuarquivo); {fechabdo o arquivo}

end.

25.4 Prática:

Elabore um programa para gravar os dados de uma agenda: nome, endereço, telefone, esporte preferido.

Elabore um programa para gravar os dados de uma seja maior que C e menor que M.

agenda cujo nome

26 Arquivos texto.

26.1 Objetivo: ler arquivos do tipo texto, mostrando na tela ou na impressora os resultados pesquisados, tendo como base o programa da aula 24.

26.2 Recursos da Linguagem: reset; assign; close; readln; eof() .

26.3 Exemplo:

(prg25a)

program ler_arquivo_texto; uses crt; var

nome

: string[30];

nota

: real;

meuarquivo : text;

begin

 

assign(meuarquivo, ‘meuarq.dat’); reset(meuarquivo) ; { este comando abre o arquivo e no primeiro registro.} writeln(‘este é o arquivo’); readln(meuarquivo, nome, nota); {primeira leitura} while not eof(meuarquivo) do begin

writeln(nome); writeln(nota); readln(meuarquivo, nome, nota); {leitura de reposição} end; {while} close(meuarquivo); {fechabdo o arquivo}

end.

(prg25b)

program adiciona_dados_em_arquivo_texto; uses crt; const nmax = 10; var

nome

: string[30];

 

nota

: real;

meuarquivo : text;

i

: integer;

begin

assign(meuarquivo, ‘meuarq.dat’); reset(meuarquivo); for i := 1 to nmax do begin

append(meuarquivo); {posiciona na última posição do

arquivo}

writeln(‘digite o nome’); readln(nome); writeln(‘digite a nota’);

readln(nota); writeln(meuarquivo, nome,nota);

end; {for} close(meuarquivo); {sempre que houver um assign haverá um close}

end.

26.4 Prática:

Elabore um menu de opções que permita as seguintes opções:

Grava pela primeira vez dados de um poço de petróleo (número do poço, vazão,em barris por hora, e a profundidade do poço). Insere mais 15 novos poços. Ler os dados dos arquivos e imprime na tela.

Pesquise a função IORESULT(nome do arquivo), e verifique como o programa acima pode ser melhorado.

27 Arquivo Direto.

27.1 Objetivo: apresentar o conceito de arquivo direto (file of

27.2 Recursos da Linguagem: assign, reset, rewrite, file of e close.

27.3 Exemplo:

).

(prg26a)

program gravar_arquivo_indexado; use crt; const nmax = 10; type registro = record nome : string[10];

 

nota

: real;

end;

var

 

reg

: registro;

i

: integer;

meuarquivo_index

: file of reg

Begin

Assign(meuarquivo_index, ‘meuarqid.dat’); Rewrite(meuarquivo_index); For i:= 1 to nmax do Begin

Writeln(‘digite o nome’); Readln(reg.nome); Writeln(‘digite a nota’); Readln(reg.nota); Write(meuarquivo_index, reg); {note que o comando write foi usado em arquivo indexado} End; Close(meuarquivo_index);

End.

Atenção: o arquivo do tipo texto é mais lento, no que diz respeito ao acesso, do que o arquivo indexado. Exemplo, para ler o enésimo registro em um arquivo texto, é necessário percorrer todos os registros anteriores.

27.4 Prática:

Faça um programa que crie um arquivo indexado que implemente uma agenda com nome, endereço, telefone e e-mail.

28 Arquivo indexado.

28.1 Objetivo: inserir dados em um arquivo do tipo FILE OF

28.2 Recursos da Linguagem: assign, reset, write, seek, filesize, close.

28.3 Exemplo:

(prg27a)

program insere_em_arquivo_direto; { este programa insere mais dados em um arquivo já existente} uses crt; const nmax = 10; type

var

registro_direto = record nome : string[10];

: real;

end;

nota

reg : registro_direto;

meuarquivo_index : file of registro_direto;

i : integer;

Begin {programa principal} Assign(meuarquivo_index, ‘meuarqid.dat’); Reset(meuarquivo_index); For i := 1 to nmax do Begin

Writeln(‘qual o nome do aluno’); Readln(reg.nome); Writeln(‘qual a nota do aluno’); Readln(reg.nota); Seek(meuarquivo_index,filesize(meuarquivo_index)) {procura o final do arquivo para inserir mais dados} Write(meuarquivo_index,reg); { note que para gravar o arquivo direto deve-se usar apenas o comando write; não é necessário especificar os atributos individuais do registro} end; {end do for} close(meuarquivo_index); {não esqueça de fechar seu arquivo}

end.

(prg27b)

program ler_dados_em_arquivo_direto; { este programa ler dados de um arquivo já existente} uses crt; type

var

registro_direto = record nome : string[10];

: real;

end;

nota

reg : registro_direto; meuarquivo_index : file of registro_direto;

Begin {programa principal} Assign(meuarquivo_index, ‘meuarqid.dat’); Reset(meuarquivo_index); While not(eof(meuarquivo_index)) do

{ eof é a função que identifica o fim do arquivo}

Begin

Read(meuarquivo_index,reg); Writeln(reg.nome); writeln(reg.nota);

delay(3000);

{ somente se pode ler do arquivo file of com o comando read} end; {end do for} close(meuarquivo_index); {não esqueça de fechar seu arquivo}

end.

28.4 Prática:

Faça um programa que utilize procedimentos de forma a criar um arquivo, inserir mais dados, exibir um arquivo gravado na tela e sair do programa. Escolha o tema.