Loading AI tools
linguagem de programação Da Wikipédia, a enciclopédia livre
Pascal, é uma linguagem de programação orientada por objetos, que recebeu este nome em homenagem ao matemático e físico Blaise Pascal. Foi criada em 1970 pelo suíço Niklaus Wirth,[2] tendo em mente encorajar o uso de código estruturado.
Foram assinalados vários problemas nesta página ou se(c)ção:
|
Pascal | |
---|---|
Paradigma | Abstração de dados, Programação estruturada, Programação procedural |
Surgido em | 1970, última revisão em 2002 |
Criado por | Niklaus Wirth[1] |
Estilo de tipagem | forte |
Principais implementações | Delphi, Free Pascal, GNU Pascal, MIDletPascal, Palm & Pascal, Turbo Pascal |
Dialetos | Macintosh Pascal, Turbo Pascal, UCSD |
Influenciada por | ALGOL |
Influenciou | |
Extensão do arquivo | .pas, .pp, .inc |
O próprio, Niklaus Wirth, diz que a linguagem Pascal foi criada simultaneamente para ensinar programação estruturada e para ser utilizada na sua fábrica de software. Simultaneamente, a linguagem reflete a libertação pessoal de Wirth das restrições impostas após seu envolvimento com a especificação de ALGOL 68, e sua sugestão para essa especificação, o ALGOL W.
Pascal originou uma enorme gama de dialetos, podendo também ser considerada uma família de linguagens de programação. Grande parte de seu sucesso se deve a criação, na década de 1980, da linguagem Turbo Pascal, inicialmente disponível para computadores baseados na arquitetura 8086 (com versões para 8080 no seu início).
Pascal é normalmente uma das linguagens de escolha para ensinar programação, junto com Scheme, C e Fortran. Comercialmente, a linguagem foi sucedida pela criação da linguagem Object Pascal, atualmente utilizada nos IDEs Embarcadero Delphi (Object Pascal), Kylix e Lazarus. Academicamente, seus sucessores são as linguagens subsequentes de Niklaus Wirth: Modula-2[3] e Oberon. A partir da versão 2005, o Delphi passou a se referir a sua linguagem de programação como Delphi Language.
Assim como a linguagem C, que foi padronizado pela ANSI (ANSI C), o Pascal possui padrões pela ISO, como o Pascal Standard e o Advanced Pascal.
O primeiro compilador Pascal foi desenvolvido em Zurique para a família de computadores CDC 6000, sendo lançado em 1970. Também em 1970 foi desenvolvido o primeiro compilador Pascal norte americano, na Universidade de Illinois por Donald B. Gillies, que gerava código de máquina nativo para o mini-computador PDP-11.
Pensando-se em propagar rapidamente o uso da linguagem, foi criado, em Zurique, um "kit de conversão" que incluia um compilador que gerava código intermediário, e um simulador para ele. Esse kit foi batizado de p-System, e foi utilizado, entre outras coisas, para criar um sistema operacional para mini-computadores chamado UCSD p-System, desenvolvido pelo Instituto de Sistemas de Informação da Universidade da Califórnia em San Diego. Segundo o próprio Niklaus Wirth, o p-System e o UCSD foram instrumentais na popularização do Pascal. No padrão UCSD, as Strings passaram a ser tipos pré definidos (no Pascal padrão era utilizados packed-arrays).[4]
Nos anos 80, Anders Hejlsberg desenvolveu o compilador Blue Label Pascal o Nascom-2. Depois, ele foi trabalhar na Borland e reescreveu seu compilador transformando-o no Turbo Pascal para a plataforma IBM PC (e também CP/M 80), que era vendido a US$ 49,95, muito mais barato do que o Blue Label. Uma característica muito importante é que o Turbo Pascal é uma linguagem compilada, que gera código de máquina real para a arquitetura Intel 8088, tornando-a muito mais rápida do que as linguagens interpretadas.
Por ser mais barato, o Turbo Pascal passou a ter uma grande influência na comunidade Pascal, que começou a se concentrar na plataforma IBM PC no fim dos anos 80. Muitos usuários de PC da época migraram para o Turbo Pascal, em busca de uma linguagem estruturada que não fosse interpretada, para substituir, por exemplo, o BASIC. Pode se afirmar que o sucesso comercial de Turbo Pascal foi definitivo para a ampla divulgação da linguagem Pascal.[5]
Outra variante era o Super Pascal, que adicionava labels não numéricas, o comando return e expressões como nomes de tipos.
Durante os anos 90, compiladores que podiam ser modificados para trabalhar com arquiteturas diferentes tiveram grande destaque, incluindo nessa lista o Pascal.
O próximo grande passo para a linguagem, foi a implementação da orientação a objeto (OO ou OOP em inglês) na sua estrutura, começando com a versão 5.5 do Turbo Pascal. Mais tarde, ao projetar o Delphi, querendo funcionalidades mais elaboradas da orientação a objeto, a Borland utilizou o conceito Object Pascal criado pela Apple Inc., utilizando-o como base para uma nova linguagem, que nas versões iniciais era chamado de Object Pascal mas foi rebatizado como Delphi Programming Language nas versões posteriores. As maiores diferenças em relação às implementações OO das versões mais antigas foram a adição do conceito de objetos por referência, construtores, destrutores e propriedades, entre outros.
Em 1983, a linguagem foi padronizada, na norma internacional ISO / IEC 7185, assim como vários padrões locais específicos de cada país, incluindo a norma americana ANSI/IEEE770X3.97-1983, e ISO 7185:1983. A diferença entre as duas normas é que a padrão ISO possui o “nível 1”, extensão do arrays conformantes, enquanto a ANSI não permitiu esta extensão à linguagem original (versão Wirth). Em 1989, foi revista a ISO 7185 (ISO 7185:1990) para corrigir vários erros e ambiguidades encontradas no documento original
Em 1990, foi criado uma norma ISO / IEC 10206 padronizando o Pascal. Em 1993, o padrão ANSI foi substituído com um "ponteiro" para a norma ISO 7185:1990, que termina efetivamente o seu estatuto como um padrão diferente.
A norma ISO 7185 foi indicada para ser uma clarificação de Wirth da linguagem como detalhado em 1974 no Manual do Usuário/Utilizador e Relatório [Jensen e Wirth], mas também foi notável pela inclusão de "Parâmetros de array conformantes" como um nível 1 da norma, sendo nível 0 Pascal sem Conformantes Arrays.
Note que o próprio Niklaus Wirth se refere à linguagem 1974 como “o padrão”, por exemplo, para diferenciá-la das características específicas de implementação em nível de máquina do compilador CDC 6000. Esta linguagem foi documentada em "The Pascal Report", a segunda parte do "Pascal users manual and report".
Nas grandes máquinas (mainframes e minicomputadores) eram seguidos padrões gerais. Na IBM-PC, não eram. No IBM-PC, o Turbo Pascal e Delphi, padrão Borland, tem o maior número de usuários. Assim, é de extrema importância entender se uma determinada aplicação corresponde à linguagem original Pascal, Borland ou um dialeto do mesmo.
As versões da linguagem do IBM-PC começaram a divergir com a vinda da UCSD Pascal, uma aplicação que implementou várias prorrogações para a linguagem, juntamente com várias omissões e mudanças. Muitas características da linguagem UCSD sobrevivem atualmente, inclusive em linguagens Borlands.
A linguagem Pascal foi criada para incentivar a programação modular e estruturada, facilitando a criação de procedimentos com baixo acoplamento e alta coesão. Um programa em Pascal é composto de constantes e variáveis globais, procedimentos e funções re-entrantes e um programa principal.[6]
Procedimentos não retornam valores, funções sim.[6] Tanto em procedimentos quanto em funções os parâmetros podem ser passados por referência ou por valor.[6] É possível passar vetores e matrizes com o tamanho, mas não a quantidade de dimensões, especificado no tempo de execução.
Procedimentos e funções podem conter, dentro de seu escopo, novos procedimentos e funções. Dentro de qualquer parte do programa também podem ser criados blocos com os comandos BEGIN e END, que também possuem seu próprio escopo.[6] Nas versões originais, as variáveis só podiam ser declaradas em posições específicas e não ao decorrer do programa, o que limitava a regra de escopo.
O conjunto de procedimentos e funções pré-definidos é fixo e inclui as funções read, readln, write e writeln, para realizar E/S.[7]
Nota importante: Os programas foram desenvolvidos com o Turbo Pascal (Borland). Para funcionarem com outros compiladores, devem ser feitas as seguintes alterações:
program OlaMundo;
begin
WriteLn('Olá, Mundo!');
end.
program numerosPerfeitos;
uses crt;
var
ate, x, soma, i: integer;
begin
clrscr;
x := 0;
writeln('Numeros perfeitos abaixo de');
Readln(ate);
repeat
x := x + 1;
soma := 0;
for i := 1 to x - 1 do
begin
if x mod i = 0 then
soma := soma + i;
end;
if soma = x then
begin
writeln(x);
end;
until (x > ate);
writeln('Pressione qualquer tecla para finalizar…');
readkey;
end.
Soma dos números pares.
program Soma_Pares;
uses crt;
var
superior, soma, num: integer;
begin
soma:=0;
write ('Entre com o limite superior');
readln (superior);
num:=2;
repeat
soma:=soma+num;
num:=num+2;
until (num > superior);
writeln('A soma dos números pares de 2 até ', superior,' é ', soma);
readln;
end.
program pares;
var
x, y: integer;
begin
writeln('Digite os dois valores');
readln(x, y);
if (x mod 2)<> 0 then
x := x + 1;
while x<= y do
begin
writeln(x, ' - ');
x := x + 2;
end;
writeln('Fim da Lista');
end.
nave contra fantasma.
program fantasma ;
uses crt ;
var xf, yf, xn, yn, xt, yt, x, y, d, p, level, hpf : integer ;
var acao : char;
label byebye, inicio ;
procedure fanta2 (x,y :integer);
begin
gotoxy(x-1,y-4);
write(hpf);
TextBackground(White);
gotoxy(x-1,y-3);
write(' ');
gotoxy(x-2,y-2);
write(' ');
gotoxy(x,y-2);
write(' ');
gotoxy(x+2,y-2);
write(' ');
gotoxy(x-2,y-1);
write(' ');
gotoxy(x-2,y);
write(' ');
TextBackground(black);
repeat
gotoxy(p,y);
write(' ');
p:=p+2;
until ( p>70);
p:=0;
end;
procedure nave (x,y : integer);
begin
TextBackground(blue);
gotoxy(x,y-3);
write(' ');
gotoxy(x-1,y-2);
write(' ');
gotoxy(x-2,y-1);
write(' ');
gotoxy(x-2,y);
write(' ');
gotoxy(x+2,y);
write(' ');
TextBackground(black);
end;
procedure tiro (x,y : integer);
begin
TextBackground(red);
gotoxy(x,y);
write(' ');
TextBackground(black);
end;
procedure bomba(x,y : integer);
begin
TextBackground(White);
gotoxy(x-2,y-4);
write(' ');
gotoxy(x-3,y-3);
write(' ');
gotoxy(x-3,y-2);
write(' ');
gotoxy(x-3,y-1);
write(' ');
gotoxy(x-2,y);
write(' ');
delay(50);
TextBackground(black);
clrscr;
TextBackground(White);
gotoxy(x-1,y-4);
write(' ');
gotoxy(x-2,y-3);
write(' ');
gotoxy(x-3,y-2);
write(' ');
gotoxy(x-2,y-1);
write(' ');
gotoxy(x-1,y);
write(' ');
delay(50);
TextBackground(black);
clrscr;
TextBackground(White);
gotoxy(x-1,y-3);
write(' ');
gotoxy(x-2,y-2);
write(' ');
gotoxy(x-1,y-1);
write(' ');
delay(50);
TextBackground(black);
clrscr;
TextBackground(White);
gotoxy(x-1,y-2);
write(' ');
delay(50);
TextBackground(black);
clrscr;
gotoxy(x-1,y-2);
write('*');
delay(50);
TextBackground(black);
clrscr;
gotoxy(x-2,y-3);
write('\|/');
gotoxy(x-2,y-2);
write('-*-');
gotoxy(x-2,y-1);
write('/|\');
delay(50);
TextBackground(black);
clrscr;
gotoxy(x-3,y-4);
write('\ | /');
gotoxy(x-3,y-2);
write('- + -');
gotoxy(x-3,y-1);
write('/ | \');
delay(50);
TextBackground(black);
clrscr;
gotoxy(x-3,y-4);
write('\ | /');
gotoxy(x-3,y-2);
write('- -');
gotoxy(x-3,y-1);
write('/ | \');
delay(50);
TextBackground(black);
clrscr;
delay(500);
level:=level+1;
goto inicio;
end;
begin
xf:=5;
yf:=5;
xn:=20;
yn:=24;
d:=0 ;
p:=0;
level:=1;
while true
do
begin
inicio:
hpf:=100*level;
cursoroff;
TextBackground(black);
while true
do
begin
gotoxy(70,1);
write('level ',level);
if (hpf>0) then fanta2(xf,yf)
else bomba(xf,yf);
nave(xn,yn);
if ( d = 0 ) then xf:=xf+1
else xf:=xf-1;
if ( xf = 70 ) then d:=1;
if ( xf = 5 ) then d:=0;
if keypressed then
begin
acao:=readkey;
case acao of
#75 : begin
if (xn>5)then xn:=xn-1;
end;
#77 : begin
if (xn<70)then xn:=xn+1;
end;
#72 :begin
xt:=xn;
yt:=yn-4;
end;
#27 : goto byebye;
end;
end;
if (yt>1)then
begin
yt:=yt-1;
tiro(xt,yt);
if ((yt<yf) and (xt>xf-3) and (xt<xf+3)) then
begin
hpf:=hpf-10;
if (hpf<1)then yt:=0;
end;
end;
delay(50);
clrscr;
end;
end;
// pode baixar o programa pelo link https://drive.google.com/open?id=0B4eCVELbFzXTWUY0c0piTG1yUUU
byebye:
end.
program Teste;
var
a, b:integer;
begin
writeln('Digite um número para 7');
readln(a);
writeln('Digite o número para 6');
readln(b);
if (a > b) then { Se 7 é maior que 6 então }
writeln('7 é maior que 6')
else { Senão… }
if (a < b) then
writeln('6 é maior que 7')
else
writeln('6 é igual à 7');
end.
Há vários compiladores Pascal gratuitos, como por exemplo:
Uma extensa lista de compiladores pode ser encontrada na Pascaland. O site é escrito em francês, mas isso não faz muita diferença, já que é apenas uma lista de URLs para os compiladores.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.