You are on page 1of 5

Pascal (lenguaje de programacin)

Pascal es un lenguaje de programacin desarrollado por


el profesor suizo Niklaus Wirth entre los aos 1968 y
1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programacin a sus
alumnos, utilizando la programacin estructurada y estructuracin de datos. Sin embargo con el tiempo su utilizacin excedi el mbito acadmico para convertirse en
una herramienta para la creacin de aplicaciones de todo
tipo.

para el desarrollo de aplicaciones Windows, pero tambin


tiene la capacidad de compilacin cruzada del mismo cdigo para Mac, iOS y Android. Otra versin multiplataforma llamado Free Pascal, con el IDE Lazarus, es popular entre los usuarios de Linux, ya que tambin ofrece
desarrollo escribe una vez, compila para todos (write once, compile anywhere). CodeTyphon es una distribucin
de Lazarus con ms paquetes preinstalados y compiladores cruzados.

Pascal se caracteriza por ser un lenguaje de programacin


estructurado fuertemente tipado. Esto implica que:

2 Caractersticas nicas

1. El cdigo est dividido en porciones fcilmente legibles llamadas funciones o procedimientos. De esta
forma Pascal facilita la utilizacin de la programacin estructurada en oposicin al antiguo estilo de
programacin monoltica.

Otra diferencia importante es que en Pascal, el tipo de


una variable se ja en su denicin; la asignacin a variables de valores de tipo incompatible no estn autorizadas
(en C, en cambio, el compilador hace el mejor esfuerzo
para dar una interpretacin a casi todo tipo de asigna2. El tipo de dato de todas las variables debe ser declaciones). Esto previene errores comunes donde variables
rado previamente para que su uso quede habilitado.
son usadas incorrectamente porque el tipo es desconocido; y tambin evita la necesidad de notacin hngara, que
vienen a ser prejos que se aaden a los nombres de las
1 Historia
variables y que indican su tipo.
Pascal, llamado as en honor del matemtico y lsofo
francs Blaise Pascal, fue desarrollado por Niklaus Wirth.

3 Implementaciones

Antes de su trabajo en Pascal, Wirth haba desarrollado


Euler y ALGOL W y ms tarde pas a desarrollar los Las primeras versiones del compilador de Pascal, enlenguajes Modula-2 y Oberon, al estilo de Pascal.
tre ellas la ms distribuida fue UCSD Pascal, traducan
Inicialmente, Pascal era en gran parte, pero no ex- el lenguaje en cdigo para una mquina virtual llamada
clusivamente, destinado a ensear a los estudiantes la mquina-P. La gran ventaja de este enfoque es que para
programacin estructurada.[1] Una generacin de estu- tener un compilador de Pascal en una nueva arquitectura
diantes usa Pascal como lenguaje de introduccin de cur- de mquina solo haca falta reimplementar la mquina-P.
sos de graduacin. Las variantes de Pascal tambin se han Como consecuencia de esto, solo una pequea parte del
usado para todo, desde proyectos de investigacin a jue- intrprete tena que ser reescrita hacia muchas arquitecgos de PC y sistemas embebidos. Existen nuevos compi- turas.
ladores de Pascal que son ampliamente utilizados.[2]
En los aos 1980, Anders Hejlsberg escribi el compilaPascal fue el lenguaje primario de alto nivel utilizado para
el desarrollo en el Apple Lisa, y en los primeros aos del
Macintosh. Algunas partes del sistema operativo original
del Macintosh se traducen a mano al lenguaje ensamblador del Motorola 68000 de sus fuentes Pascal.[3] El sistema de Tipopuesta TeX de Donald E. Knuth fue escrito en
WEB, el sistema de Programacin literaria original, basado en DEC PDP-10 Pascal, mientras que aplicaciones
como Total Commander, Skype y Macromedia Captivate
fueron escritos en Delphi (Object Pascal).

dor Blue Label Pascal para el Nascom-2. Ms tarde fue a


trabajar para Borland y reescribi su compilador que se
convirti en Turbo Pascal para el IBM PC. Este nuevo
compilador se vendi por 49 dlares, un precio orientado
a la distribucin masiva.

El econmico compilador de Borland tuvo una larga inuencia en la comunidad de Pascal que comenz a utilizarlo principalmente en el IBM PC. En busca de un lenguaje estructurado muchos acionados al PC reemplazaron el BASIC por este producto. Dado que Turbo PasObject Pascal (Embarcadero Delphi) todava se utiliza cal slo estaba disponible para una arquitectura, tradu1

5 LIBRERIAS

ca directamente hacia el cdigo mquina del Intel 8088, (Resultado); Write ('Pulse [Intro] para nalizar...'); END.
logrando construir programas que se ejecutaban mucho
ms rpidamente que los producidos en los esquemas interpretados.

4.4 Bucles

Durante los aos 1990, estuvo disponible la tecnologa


para construir compiladores que pudieran producir cdiUn ejemplo de bucle:
go para diferentes arquitecturas de hardware. Esto permiti que los compiladores de Pascal tradujeran directa- PROGRAM MultiplosDe3 (INPUT, OUTPUT); VAR
Numero, Cnt: INTEGER; BEGIN Cnt := 0; Write ('Enmente al cdigo de la arquitectura en que corre.
tra el primer nmero de la serie: '); ReadLn (Numero);
Con Turbo Pascal versin 5.5, Borland agreg
WHILE Numero <> 0 DO BEGIN IF (Numero MOD
programacin orientada a objetos a Pascal.
3) = 0 THEN INC (Cnt); Write ('Dame otro numero (0
Sin embargo, Borland despus decidi mejorar esa exten- para terminar): '); ReadLn (Numero); END; WriteLn
sin del lenguaje introduciendo su producto Delphi, di- ('La cantidad de mltiplos de 3 ingresados es ', Cnt);
seado a partir de estndar Object Pascal, propuesto por Write ('Pulse [Intro] para nalizar...'); END.
Apple Inc. como base. Borland tambin lo llam Object
Pascal en las primeras versiones, pero cambi el nombre
Un ejemplo de bucle:
a 'lenguaje de programacin Delphi' en sus ltimas verprogram tabla; uses crt; var i,n:integer; begin clrscr; for
siones.
i:=1 to 10 do begin write(ingrese la tabla de mutliplicar
que desea ver: ); readln(n); writeln( i, x,n, =,i*n); end;
readln; end.

4.1

Ejemplos

Hola Mundo

Un sencillo ejemplo del programa Hola Mundo:


PROGRAM HolaMundo (OUTPUT); BEGIN WriteLn('Hola Mundo!') { como la siguiente instruccin
no es ejecutable end. no se requiere ; aunque puede
ponerse segn las preferencias del programador } END.

4.2

4.5 Funciones y recursividad


PROGRAM CalcularFactorial (INPUT, OUTPUT); (*
Funcin que calcula el factorial de n (n!) de forma recursiva. *) FUNCTION Factorial (CONST N: INTEGER):
INTEGER; BEGIN IF N > 1 THEN Factorial := N *
(Factorial (N - 1)) ELSE Factorial := N; END; VAR
Base: INTEGER; BEGIN Write ('Valor de N: '); ReadLn
(Base); WriteLn ('N! = ', Factorial (Base)); Write ('Pulse
[Intro] para nalizar...'); END.

Suma

PROGRAM Suma (INPUT, OUTPUT); VAR Sumando1, Sumando2,Suma:INTEGER; BEGIN Writeln('ingrese un numero: '); ReadLn(Sumando1);
Writeln('ingrese otro numero: '); ReadLn(Sumando2);
Suma:=Sumando1 + Sumando2; WriteLn ('La suma es:
',Suma); Write ('Pulse [Intro] para nalizar...'); readkey
END.

4.6 Vectores

PROGRAM NotasDeAlumnos; uses crt; Type vecalumnos = array [1..40] of string; var Nombre,
Apellido: vecalumnos; Nota: array [1..40] of real;
Begin clrscr; /*Limpia pantalla*/ For i:= 1 to 40 do
begin write(Ingrese Nombre: ); readln(Nombre[i]);
write(Ingrese Apellido: ); readln(Apellido[i]); write(Ingrese Nota: ); readln(Nota[i]); end; For i:= 1 to 40
do begin write(Nombre[i], ,Apellido[i]); if (Nota[i]
4.3 Raz cuadrada
>=7) then writeln( aprob) else writeln( no aprob);
end; writeln(); Write ('Pulse [Intro] para nalizar...');
PROGRAM Raiz (INPUT, OUTPUT); (* Obtener la Readln; end.
raz cuadrada de un nmero real x cualquiera.*) VAR
Valor, Resultado: REAL; BEGIN WriteLn ('** Calcular
la raz cuadrada **'); Write ('Introduzca el valor: ');
ReadLn (Valor); (* Raz cuadrada del valor absoluto
de x para evitar races imaginarias *) Resultado := sqrt 5 Librerias
(abs (Valor)); Write ('La raz cuadrada de ', Valor, ' es
'); IF Valor < 0 THEN (* Si es negativo, el resultado es Las librerias contienen procedimientos y funciones. El
imaginario *) WriteLn (Resultado ,'i') ELSE WriteLn objetivo es poner esas funciones a disposicin de ser usa-

3
das.
Cuando planeemos usar libreras, nos hemos de remitir a
la seccin USES de nuestro programa.
Por ejemplo para usar el procedimiento clrscr, que se encarga de borrar la pantalla de la terminal donde aparece
la salida de nuestro programa en modo texto,y la funcin
readkey, que obliga al programa a detenerse y a no continuar hasta que el usuario presione una tecla se debe usar
la libreria CRT. program MiPrograma;
uses CRT;

descendiente de Delphi cuenta con una librera de


objetos mejorada llamada CLX, que es la versin
para Linux de la VCL. Sin embargo el proyecto ya
se haba descontinuado mucho antes de que Borland
vendiera todos sus productos de desarrollo a Embarcadero Technologies, actual dueo de Delphi.
Lazarus es un clon de Delphi, basado en Free Pascal
es software libre.
MidletPascal para la plataforma J2ME.

var

TMT. Pascal.

nombre: string[10];

PIC Micro Pascal, para microcontroladores PIC.

begin

Smart Mobile Studio traduce un programa en dialecto Object Pascal a JavaScript, especialmente diseado para ser utilizado en dispositivos mviles.

clrscr; nombre:= 'Manuel'; writeln(nombre); readkey;


end.

Oxygene es un compilador que genera archivos jar.

Compilador

7 Actualidad

Varios compiladores de Pascal estn disponibles para el


uso del pblico en general:
Actualmente sigue utilizndose este lenguaje en el desarrollo de aplicaciones, gracias a la aparicin de herra Dev-Pascal
mientas de desarrollo para nuevas plataformas como
Oxygene o Smart Mobile Studio y la modernizacin
Epox
de compiladores y entornos ms antiguos como Delphi,
Compilador GNU Pascal (GPC), escrito en C, ba- Free Pascal y Lazarus. Hoy en da se usa el compilador
sado en GNU Compiler Collection (GCC). Se dis- Free Pascal y similares para ensear programacin en las
escuelas.[4] Tambin se usan compiladores ms antiguos
tribuye bajo licencia GPL.
como el Turbo Pascal.[5]
Free Pascal est escrito en Pascal (el compilador est creado usando Free Pascal), es un compilador estable y potente. Tambin distribuido libremente ba8 Vase tambin
jo la licencia GPL. Este sistema permite mezclar
cdigo Turbo Pascal con cdigo Delphi, y soporta
UCSD Pascal
muchas plataformas y sistemas operativos.
Turbo Pascal fue el compilador Pascal dominante
para PC durante los aos 1980 y hasta principios de
los aos 1990, muy popular debido a sus magncas
extensiones y tiempos de compilacin sumamente
cortos. Actualmente, versiones viejas de Turbo Pascal (hasta la 7.0) estn disponibles para descargarlo
gratuito desde el sitio de Borland (es necesario registrarse).

Niklaus Wirth
Pascal Script

9 Referencias
[1] Essential Pascal by Marco Cant

Delphi es un producto tipo RAD (Rapid Application Development) inicialmente desarrollado por
Borland y actualmente por Embarcadero. Utiliza el
lenguaje de programacin Delphi, descendiente de
Pascal, para crear aplicaciones para la plataforma
Windows. Las ltimas versiones tambin generan
ejecutables para MacOS X, Linux y .NET.

[2] tiobe.com, Programming Community Index for January


2011.

Kylix fue una versin de Delphi para el sistema operativo Linux promovida por la antigua Borland reiterando la rama de Pascal de sus productos. Como

[5] Sitio web de Programacin 1 de la Facultad de Ingeniera


(Universidad de la Repblica - Uruguay). Consultado el
24 de octubre de 2012.

[3] Hertzfeld, Andy. "Hungarian folklore.org: Macintosh Stories. Retrieved 2012-03-06.


[4] PP4S: Pascal Programming For Schools. (en ingls).
Consultado el 14 de diciembre de 2013.

10 ENLACES EXTERNOS

10

Enlaces externos
Wikiversidad alberga proyectos de aprendizaje sobre Pascal (lenguaje de programacin).Wikiversidad

Museo de Borland, permite la descarga gratuita de


software antiguo
Essential Pascal
Turbo-Pascal.com
FreePascal El compilador libre de pascal multiplataforma.
Pascal con Free Pascal, en espaol.
Pascal Programming for Schools
Club Delphi Comunidad Delphi en espaol.

11
11.1

Origen del texto y las imgenes, colaboradores y licencias


Texto

Pascal (lenguaje de programacin) Fuente: https://es.wikipedia.org/wiki/Pascal_(lenguaje_de_programaci%C3%B3n)?oldid=


92084095 Colaboradores: AstroNomo, Moriel, Josmanbernal, Lourdes Cardenal, Hashar, ManuelGR, Vanbasten 23, Robbot, Angus,
Jagarsoft, Aparejador, Zwobot, Zorosandro, Drjackzon, Dodo, Triku, Ascnder, Sms, Cookie, Tano4595, Barcex, Robotito, Teo tez, Rondador, Renabot, FAR, Javuchi, Boticario, Petronas, Orgullomoore, Edub, Patricio.lorente, Rembiapo pohyiete (bot), Orgullobot~eswiki,
Further (bot), RobotQuistnix, Platonides, Alhen, Samiam95124~eswiki, Yrbot, BOT-Superzerocool, Vitamine, YurikBot, Museo8bits,
GermanX, No s qu nick poner, Eskimbot, Baneld, CHV, Verdecito, Erufailon, BOTpolicia, CEM-bot, Laura Fiorucci, Alexav8,
Roberpl, Programador, Thijs!bot, Viejo15, Fernandopcg, XCesar, RoyFocker, Albireo3000, MorZilla, Isha, Arcibel, MetalMind, Vitorres,
JAnDbot, JuanPaBJ16, Poc-oban, Kved, Tonny logicc, Gsrdzl, TXiKiBoT, Ignacioerrico, Netito777, Kasumin~eswiki, Nioger, Plux,
Developer, ZEOSWAV, Biasoli, AlnoktaBOT, Cinevoro, VolkovBot, Technopat, Matdrodes, Prettytic, House, DJ Nietzsche, Shooke,
Lucien leGrey, Muro Bot, Edmenb, FBaena, SieBot, Lamanada, Loveless, Nachet70, BOTarate, Maximoalberto, Manw, Ivanics,
Locos epraix, Javierito92, HUB, Eduardosalg, Leonpolanco, LordT, Furti, Petruss, Ener6, Alexbot, Juan Mayordomo, Aipni-Lovrij,
Camilo, UA31, AVBOT, Louperibot, Haztuznezo, Angel GN, SpBot, Diegusjaimes, Luckas-bot, Aimwiki, FariBOT, Barteik, ArthurBot,
SuperBraulio13, ChristianH, Xqbot, Jkbw, Botarel, Stuy, RubiksMaster110, Jucapac, Hprmedina, RedBot, Marsal20, Giudicejesica,
Rro4785, Duuk-Tsarith, Humbefa, Jorge c2010, GrouchoBot, EmausBot, Africanus, WikitanvirBot, MerlIwBot, UAwiki, Sebrev,
Acastiello, Jakye gtz, Elvisor, Syum90, Legobot, IceMakerAX, Ivanretro, Addbot, Balles2601, Diego Diaz Martinez, Ruben12rae2000,
Manirodrigo, Jarould, Matiia, Crystallizedcarbon, Silentter, AlvaroMolina, Mrm40s, Juanito Banana 42, Salvadorsoar, Silvia choque,
Nino1345 y Annimos: 277

11.2

Imgenes

Archivo:Wikiversity-logo-Snorky.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/1/1b/Wikiversity-logo-en.svg Licencia: CC BY-SA 3.0 Colaboradores: Trabajo propio Artista original: Snorky

11.3

Licencia del contenido

Creative Commons Attribution-Share Alike 3.0

You might also like