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


Programas em Pascal: Calculos, Áreas e Ordenação de Dados, Notas de estudo de Informática

Este documento contém vários exemplos de programas em pascal que realizam diferentes cálculos, como a soma de números, área de figuras geométricas e ordenação de dados. Além disso, aprenda a utilizar variáveis, funções e estruturas de repetição.

Tipologia: Notas de estudo

2013

Compartilhado em 28/08/2013

Garoto
Garoto 🇪🇸

4.6

(121)

1 / 31

Toggle sidebar

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

Não perca as partes importantes!

bg1
32
End.
Program Exemplo_3;
Uses CRT;
{ Este programa escreve na tela os quadrados dos números de 1 até 20 }
Var i : Integer;
Begin
ClrScr;
For i:=1 to 20 do
Begin
Write('Valor de i --> ');
Write(i:3);
Write('..... quadrado de i = ');
Writeln(i*i:5);
End;
End.
Program Exemplo_4;
Uses CRT;
{Este programa calcula a soma entre todos os números compreendidos entre dois
números lidos do teclado }
Label INICIO;
Var i,Numero_1,Numero_2,soma : Integer;
Tecla : Char;
Begin
INICIO:
ClrScr;
Write('Primeiro Numero --> ');
Readln(Numero_1);
Write('Segundo Numero ---> ');
Readln(Numero_2);
Writeln;
Writeln;
Soma:=0;
For i:=Numero_1 to Numero_2 do Soma:=Soma+i;
Writeln('Soma entre ',Numero_1,' e ',Numero_2,' = ',soma);
Writeln;
Writeln;
Write('Deseja Continuar ? --> ');
tecla:=ReadKey;
If ((Tecla = 'S') OR (Tecla='s')) Then Goto INICIO;
ClrScr;
Write('Tchau .........');
End.
Program Exemplo_5;
Uses CRT;
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Pré-visualização parcial do texto

Baixe Programas em Pascal: Calculos, Áreas e Ordenação de Dados e outras Notas de estudo em PDF para Informática, somente na Docsity!

End.

Program Exemplo_3; Uses CRT; { Este programa escreve na tela os quadrados dos números de 1 até 20 } Var i : Integer; Begin ClrScr; For i:=1 to 20 do Begin Write('Valor de i --> '); Write(i:3); Write('..... quadrado de i = '); Writeln(i*i:5); End; End.

Program Exemplo_4; Uses CRT; {Este programa calcula a soma entre todos os números compreendidos entre dois números lidos do teclado }

Label INICIO; Var i,Numero_1,Numero_2,soma : Integer; Tecla : Char; Begin INICIO: ClrScr; Write('Primeiro Numero --> '); Readln(Numero_1); Write('Segundo Numero ---> '); Readln(Numero_2); Writeln; Writeln; Soma:=0; For i:=Numero_1 to Numero_2 do Soma:=Soma+i; Writeln('Soma entre ',Numero_1,' e ',Numero_2,' = ',soma); Writeln; Writeln; Write('Deseja Continuar? --> '); tecla:=ReadKey; If ((Tecla = 'S') OR (Tecla='s')) Then Goto INICIO; ClrScr; Write('Tchau .........'); End.

Program Exemplo_5; Uses CRT;

{Programa para cálculo de fatorial de um número lido do teclado. Lembrando que fatorial de um número é definido como segue: N! = 1.2.3.4...N e 0! = 1} Label Inicio,fim; Var n,Fatorial,i : Integer; Begin Clrscr; Inicio: Write('N = ( menor que 0 = fim) --> '); Readln(n); If n<0 then goto Fim; Fatorial:=1; Writeln; If (n>0) Then For i:=1 to n do Fatorial:=Fatorial*i; Writeln('Fatorial de ':30,n,' = ',fatorial); Writeln; Goto Inicio; Fim: End.

V.4 - Repeat Until

Repete um bloco de instruções até que uma certa condição seja satisfeita. Sua sintaxe é:

Repeat Comando_1; Comando_2; Comando_3;

... Until (expressão_lógica);

Neste caso, todos os comandos entre as palavras reservadas Repeat e Until serão executadas, até que a expressão lógica seja verdadeira (TRUE), obviamente, devemos ter o cuidado para que ela venha a ser TRUE em determinado momento, pois caso contrário, teremos um LOOP INFINITO, (o programa fica preso dentro da estrutura Repeat - Until).

Exemplos:

Program Exemplo_1; Uses CRT;

{Programa exemplo para mostrar o funcionamento da estrutura Repeat Until}

Var i : Integer; Begin

if n> then Repeat i:=i+1; fatorial:=fatorial*i; Until i=n; Writeln('fatorial de ':30,n,' = ',fatorial); Writeln; goto inicio; fim: End.

V.5 - While Do

A estrutura While..Do permite controlar o número de vezes que uma instrução ou bloco de instruções será executado. Ela difere da instrução Repeat..Until porque esta só avalia a expressão lógica no final do primeiro Loop , enquanto que a instrução While..Do avalia a expressão lógica antes da primeira interação, isto significa que, eventualmente, pode não ocorrer sequer a primeira interação.

A sintaxe de While..Do é:

While <expressão_lógica> Do ;

ou

While <expressão_lógica> Do Begin comando_1; comando_2;

... End;

Exemplos:

Program Exemplo_1; Uses CRT; {Programa exemplo que escreve na tela de 0 até 10} Var i : Integer; Begin ClrScr; i:=0; While (i<11) Do Begin Writeln(i); i:=i+1; End End. Program Exemplo_2; Uses CRT;

{Programa que lê números do teclado e depois informa a média dos números lidos, a quantidade lida, e soma deles}

Label INICIO; Const Quant_de_num : Integer = 0; Soma : Real = 0; Media : Real = 0; Var Numero : Real; Tecla : Char; Begin INICIO: ClrScr; Write('Valor numérico (menor que 0=fim) --> '); Readln(Numero); While (Numero>=0) Do Begin Soma := Soma + Numero; Quant_de_num := Quant_de_num + 1; Write('Valor numérico (menor que 0=fim) --> '); Readln(Numero); End; If Quant_de_num > 0 Then Begin Media := Soma/Quant_de_num; Writeln; Writeln('Quantidade de números = ',Quant_de_num); Writeln('Soma ................ = ',Soma:10:2); Writeln('Media ............... = ',Media:10:2); End Else Writeln('Não se realizou cálculos'); Writeln; Write('Deseja continuar? ---> '); tecla:=ReadKey; If (Tecla='s') Or (Tecla='S') Then Begin Quant_de_num:=0; Soma := 0; Goto Inicio; End; End.

V.6 - Case

Esta instrução nos permite selecionar uma opção baseada no valor de uma variável ou expressão. Existem duas sintaxes, a saber:

Sintaxe número 1:

Case <expressão ou variável> of <valor 1> : Comando_1; <valor 2> : Comando_2;

{Programa exemplo da instrução Case. Calcula a soma, ou a subtração, ou a multiplicação, ou a divisão entre dois números lidos do teclado}

Var oper : Char; x,y : Real; Begin ClrScr; Write('Valor de X = '); Readln(x); Write('Valor de Y = '); Readln(y); Writeln; Write('Operação --> '); oper:=ReadKey; Writeln(oper);Writeln; Case Oper of '+' : Write('X + Y = ':10,x+y:6:2); '-' : Write('X - Y = ':10,x-y:6:2); '' : Write('X * Y = ':10,xy:6:2); '/' : Write('X / Y = ':10,x/y:6:2); Else Writeln(oper,' não e operação'); End; (* case ) End. ( programa *)

Program Exemplo_2; Uses CRT;

{Programa para cálculo de área de figuras}

Var escolha,continua : Char; x,y : real; Begin Repeat ClrScr; Write('Calculo de área de figuras':53); Gotoxy(25, 5);Write('1 - Sair do programa'); Gotoxy(25, 7);Write('2 - Triângulo'); Gotoxy(25, 9);Write('3 - Quadrado'); Gotoxy(25,11);Write('4 - Retângulo'); Gotoxy(25,13);Write('5 - Circulo'); TextBackGround(7); TextColor(0+16); Gotoxy(10,17);Write('Sua escolha ---> '); escolha:=ReadKey; Textbackground(0); Textcolor(14); Case escolha of '2' : Begin ClrScr; Writeln('Calculo da área de triangulos':55);

continua:='s'; While Continua='s' Do Begin Writeln; Write('Base = '); Readln(x); Write('Altura = '); Readln(y); Writeln; Writeln('Área = ',xy/2:8:2); Writeln; Writeln; Write('Mais cálculos (s/n) --> '); continua:=ReadKey; Writeln;Writeln; End; End; '3' : Begin ClrScr; Writeln('Calculo da área de quadrados':55); continua:='s'; While Continua='s' Do Begin Writeln; Write('lado = '); Readln(x); Writeln; Writeln('Área = ',xx:8:2); Writeln; Writeln; Write('Mais cálculos (s/n) --> '); continua:=Readkey; Writeln;Writeln; End; End; '4' : Begin ClrScr; Writeln('Calculo da área de retangulos':55); continua:='s'; While Continua='s' Do Begin Writeln; Write('comprimento = '); Readln(x); Write('largura = '); Readln(y); Writeln; Writeln('Área = ',x*y:8:2); Writeln; Writeln;

Imagine que nós precisemos declarar 100 variáveis do tipo integer, isso poderia ser feito da seguinte forma:

Var i1,i2,i3,i4,...,i100 : Integer;

Embora isso pareça uma brincadeira (de mal gosto), é possível. Mas podemos também dizer que é um grande incômodo. E se além dessas 100 variáveis, precisarmos também 1000 do tipo Char ou 2000 ou .... Como podemos ver, as coisas podem se complicar. Mas para quem acessa BBS, coisa de louco, então o cara pode achar MUITO LEGAL. (:-))

VI.2.1 - Arrays unidimensionais

Turbo Pascal nos fornece um tipo de dado estruturado chamado Array, que nos permite criar um grande número de variáveis de determinado tipo,sem os inconvenientes anteriores.

Exemplo 1:

Type Arranjo = Array[1..100] of Integer;

Var i : Arranjo;

ou

Var i : Array[1..100] of Integer; Após a declaração acima, teríamos definidas 100 variáveis do tipo Integer, cujos nomes seriam:

i[1] - i[2] - i[3] -... - i[100]

Exemplo 2:

Type faixa = 1..2000; Arranjo = Array[faixa] Of Char;

Var Arranjo_simples : Arranjo;

Após as declarações acima, teríamos definidas 2000 variáveis do tipo char com o nome Arranjo_simples.

Exemplos:

Program Exemplo_1; Uses Crt;

{Lê 10 números inteiros do teclado e os escreve na tela ao contrário do que foram lidos}

Type faixa = 1..10; arranjo = Array[faixa] Of Integer; Var a : arranjo; i : Integer; Begin ClrScr; For i:=1 to 10 do Begin Write('a[',i:2,'] = '); Readln(a[i]); End; ClrScr; For i:=10 downto 1 do writeln(a[i]); End.

Program Exemplo_2; Uses CRT;

{Programa que lê no máximo 100 números reais do teclado e os coloca em ordem crescente}

Const Num_max = 100; Type faixa = 1..Num_max; arranjo = Array[faixa] of Real; Var i,j,n : Integer; a : arranjo; z : Real; Begin ClrScr; Writeln('Ordenação de números lidos do teclado':40+19); {escreve no meio da linha} Writeln;Writeln; { pula duas linhas } n:=0; Writeln('digite um no. menor que 0 para terminar':40+19); Writeln;Writeln; Repeat n:=n+1; Write('a[',n:3,'] = '); Readln(a[n]); Until (n=Num_max) Or (a[n]<0); n:=n-1; { elimina o ultimo no. lido pois e' negativo } ClrScr; For i:=1 to n-1 Do For j:=i+1 to n Do If a[i] >= a[j] Then Begin z:=a[i]; a[i]:=a[j]; a[j]:=z;

Const No_de_alunos = 30; Type Classe = Array[1..No_de_alunos] Of Real; Var n : Integer; a : Classe; Begin ClrScr; For n:=1 to No_de_alunos Do Begin Write('Aluno no. ',n:2,' ---> '); Readln(a[n]); End; ClrScr; Writeln('Alunos com media menor que 5':40+15); Writeln('numero nota'); For n:=1 to No_de_alunos Do If a[n]< Then Writeln(n:2,a[n]:10:1); End.

VI.2.2 - Arrays Multidimensionais

No item anterior, trabalhamos com Arrays unidimensionais, ou seja, de uma dimensão. No entanto, é possível trabalhar com arrays de mais de uma dimensão e nesses casos, eles são chamados de multidimensionais.

Exemplos:

Var a : array[1..10,2..5] Of Integer;

Na declaração acima, definimos um Array de 40 elementos chamado 'a'. Ele é constituído de 10 linhas numeradas de 1 a 10 por 4 colunas numeradas de 2 a 5. O acesso a cada elemento é feito da seguinte forma:

a[1,2] a[1,3] ... a[1,5] a[2,2] a[2,3] ... a[2,5] ... ... ... ... a[10,2] a[10,3] ... a[10,5]

Poderíamos definir o mesmo array da seguinte forma:

Var a : array[1..10] of array[2..5] Of Integer; Ou da seguinte forma:

Type b = array[2..5] Of Integer;

Var a : array[1..10] Of b;

Podemos também definir arrays de maior número de dimensões pelo mesmo processo, exemplo:

Var a : array[1..5,1..6,1..7] Of Integer;

Exemplo:

Program Exemplo; Uses CRT;

{Programa Matriz => Tem a finalidade de ler uma matriz do teclado e em seguida multiplicar uma coluna ou linha por uma constante. Neste programa, procurei utilizar o maior número possível de conceitos dados até aqui}

(* definição das constantes do programa *)

Const NUM_MAX_COL = 20; (* número máximo de colunas *) NUM_MAX_LIN = 10; (* número máximo de linhas *) Var a : array[1..NUM_MAX_LIN,1..NUM_MAX_COL] of integer; i,j,k,p, nl,nc : integer; lc : char; Begin ClrScr; (* lê o número de linhas da matriz *) Repeat Write('Numero de linhas da matriz ----------> '); Readln(nl); Until nl<=NUM_MAX_LIN; (* lê o número de colunas da matriz *) Repeat Write('Numero de colunas da matriz ---------> '); Readln(nc); Until nc<=NUM_MAX_COL; (* lê a constante de multiplicaçåo *) Write('Constante para multiplicação --------> '); Readln(k); (* pergunta se é uma coluna ou linha para ser multiplicada *) Repeat Write('Coluna ou linha para mult. (c/l) ----> '); Readln(lc); Until (lc='c') Or (lc='l'); (* pergunta pelo número da coluna ou da linha a ser multiplicada *) If lc='c' Then Repeat Write('Numero da coluna para a multip. -----> '); Readln(p); Until p<=nc Else Repeat

Imaginem que queiramos armazenar os seguintes dados a respeito de uma pessoa:

Nome - Idade - Sexo - Altura

Até o momento, não temos nenhum tipo de variável capaz de fazer isso, pois como podemos reparar, os quatros itens são de tipos diferentes, a saber:

Nome ---> String Idade --> Integer Sexo ---> Char Altura -> Real

Como veremos a seguir, o tipo Record resolver-nos-á o problema.

VI.3.2 - Definição de Records

A definição de uma variável do tipo record, começa com a palavra reservada Record, a qual é seguida pelos campos (variáveis) e os seus tipos. A palavra reservada End seguida de um ponto e vírgula, termina a definição do Record.

Exemplo:

Var Nome_Do_Registro : Record Nome : String[30]; Idade : Integer; Sexo : Char; Altura: Real; End;

OU

Type Registro = Record Nome : String[30]; Idade : Integer; Sexo : Char; Altura: Real; End;

Var Nome_Do_Registro : Registro;

VI.3.3 - Acesso aos elementos da estrutura

Para acessarmos os elementos da estrutura, ou seja, os campos, nós devemos incluir o nome da variável seguida de um ponto e depois o nome do campo, exemplos:

Nome_Do_Registro.Altura := 1.78; Nome_Do_Registro.Sexo := 'M'; Etc...

Exemplos:

Program Exemplo_1; Uses CRT;

{Lê uma variável do tipo record do teclado e em seguida a mostra no monitor}

Type Pessoas = Record Nome : String[30]; Idade : Integer; Sexo : Char; Altura : Real; End; Var p : Pessoas; Begin ClrScr; Write('Nome ------> '); Readln(p.Nome); Write('Idade -----> '); Readln(p.Idade); Write('Sexo ------> '); Readln(p.Sexo); Write('Altura ----> '); Readln(p.Altura); Writeln; Writeln('Voce digitou os seguintes dados :'); Writeln;Writeln; Writeln(p.nome); Writeln(p.idade); Writeln(p.sexo); Writeln(p.altura:6:2); End.

Podemos também definir arrays de records, vejam o exemplo abaixo:

Program Exemplo_2; Uses CRT;

{Programa para ler dados de no máximo 20 pessoas. Em seguida é feita uma listagem em ordem alfabética pelo nome}

Label fim;

Type Pessoas = Record Nome : String[30]; Idade : Integer; Sexo : Char; Altura : Real; End;

End;

Exemplo:

Program Exemplo_1; Uses CRT;

{ lê uma variável tipo record e em seguida a mostra }

Type Pessoas = Record Nome : String[30]; Idade : Integer; Sexo : Char; Altura : Real; End;

Var p : Pessoas;

Begin ClrScr; With p do Begin Write('Nome ------> '); Readln(Nome); Write('Idade -----> '); Readln(Idade); Write('Sexo ------> '); Readln(Sexo); Write('Altura ----> '); Readln(Altura); Writeln; Writeln('Você digitou os seguintes dados :'); Writeln;Writeln; Writeln(nome); Writeln(idade); Writeln(sexo); Writeln(altura:6:2); End; End.

VI.4 - Tipo Set

VI.4.1 - Definição e declaração

Na matemática, usamos uma linguagem não só adequada às suas necessidades, mas também ao estudo de outras ciências. Uma boa parte dessa linguagem vem da teoria de conjuntos.

Em matemática, definimos um conjunto como sendo uma coleção de objetos, nomes, números etc. Chamamos de elementos aos objetos, nomes, números etc. que pertencem a esse conjunto. Pois bem, na linguagem Pascal, também podemos utilizar estes conceitos. Na linguagem Pascal, um conjunto é uma coleção de elementos semelhantes. O tamanho do conjunto pode ser variável, sendo que no caso específico do Turbo Pascal, o conjunto pode ter no máximo 256 elementos. Um conjunto pode consistir em zero ou mais elementos do mesmo tipo base que, obrigatoriamente deverá ser um tipo simples, podendo ser qualquer escalar com exceção do REAL. Em Pascal, os conjuntos têm seus elementos inclusos em colchetes e separados por vírgulas. Podemos ter também a representação da sub-faixa.

Exemplos:

[1,3,5,7,9,11,13] - alguns inteiros [3..7] - inteiros entre 3 e 7 [3,4,5,6,7] - equivalente ao anterior ['A'..'Z'] - caracteres alfabéticos maiúsculos [gol,passat,fusca] - marcas de carro [] - conjunto vazio

Declaração

A forma geral para definição de conjuntos é:

Type = SET OF ;

Exemplos:

Type caracteres = set of Char; letras_maiúsculas = set of 'A'..'Z'; dígitos = set of 0..9; carros = set of (fusca,gol,escort,opala);

Var c : caracteres; letras : letras_maiúsculas; números : dígitos; marca : carros;

etc.

VI.4.2 - Operações em tipos Set

Atribuição : ( := )

O operador de atribuição é o mesmo utilizado para tipos simples, exemplos: