Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Niklaus Wirth
Niklaus Wirth (Winterthur Suiza, 15 de febrero de 1934), cientfico de la computacin.
En 1959 obtiene el ttulo de Ingeniero en Electrnica en la Escuela Politcnica Federal
de Zrich (ETH) en Suiza. En 1960 obtuvo un M.Sc. de la Universidad de Laval, Canad. En
1963 obtiene un Doctorado (Ph.D.) en la Universidad de California, Berkeley.
De 1963 a 1967 sirvi como profesor auxiliar de Informtica en la Universidad de
Stanford y de nuevo en la Universidad de Zrich. A partir de 1968 se convirti en profesor de
Informtica en la ETH en Suiza, tomndose dos aos sabticos en la Xerox PARC de
California.
Wirth fue el jefe de diseo de los lenguajes de programacin Euler, Algol W, Pascal,
Modula, Modula-2 y Oberon. Tambin ocup gran parte de su tiempo en el equipo de diseo e
implementacin de sistemas operativos Lilith y Oberon para el Lola en el diseo del hardware
digital y el sistema de simulacin.
Su artculo de desarrollo de un programa por refinamiento sucesivo ("program
development by stepwise refinement") se considera un texto clsico en la ingeniera del
software, as como su libro Algoritmos + Estructuras de datos = Programas, que recibi un
amplio reconocimiento, y que an hoy resulta til en la enseanza de la programacin. Recibi
el Premio Turing por el desarrollo de estos lenguajes de programacin en 1984. Se jubil en
1999.
Pascal. Lenguaje de Programacin.
El lenguaje de programacin Pascal apareci por primera vez en 1971, de la mano de
Niklaus Wirth. Wirh invent el lenguaje como una forma de mejorar el por aquel entonces
arcaico Algol. No es el primer lenguaje que Wirth disea, posteriormente invent el Modula-2
y el Oberon. Sin embargo, paradjicamente, esos dos lenguajes han sido ampliamente
superados por el Extended Pascal y el Object Pascal. De todos esos lenguajes, Pascal es el que
ms xito ha tenido.
Aunque nace a principios de los 70, Pascal cobra autntica vida a partir de
principios/mediados de los 80, popularizado por el fabuloso Turbo Pascal de MS-DOS para
PC, y sobre todo el Apple Pascal. Pascal ha sido tan popular hasta mediados de los 90, que una
gran parte (la mayor parte) de las aplicaciones desarrolladas para Mac estaban realizadas en
Pascal, as como una enorme parte tambin de los programas de MS-DOS.
Todava hoy, Pascal se ensea en las universidades como primer lenguaje, pues se trata
de un lenguaje muy legible. Fue Borland la que, hasta el Turbo Pascal 7, se encarg de la
mayor parte de la evolucin de este lenguaje. A mediados de los 90, con el boom de Windows
y el renacimiento de los sistemas Unix (entre ellos Linux) como ordenadores servidores
primero y luego como estaciones de trabajo, motiv que Pascal pasara a un segundo plano en
beneficio de C.
En ese momento, prcticamente solo Delphi (Object Pascal para Windows) consigui
mantenerse en la brecha, pero conformndose con una pequea parte del mercado solamente.
Pascal se caracteriza por ser un lenguaje de programacin estructurado fuertemente
tipificado. Esto implica que:
El tipo de dato de todas las variables debe ser declarado previamente para que su uso
quede habilitado.
Los caracteres abrir corchete ( [ ) y cerrar corchete ( ] ) se utilizan para indicar que lo
que contienen es opcional.
Cuerpo:
En el cuerpo se escriben las instrucciones del bloque de instrucciones principal del
programa. La sintaxis es:
begin
<instruccin_1>
<instruccin_2>
...
<instruccin_n>
end.
Begin y End:
Son palabras reservadas que marcan el principio y final de la seccin cuerpo. Por
ltimo, escribimos el programa principal, el cual comienza con la palabra begin y termina con
la palabra end seguida de un punto. Dentro del begin y el end final se encuentran todas las
instrucciones y llamadas a los procedimientos que hemos definido anteriormente. Ejemplo:
begin
write(Escriba el nombre del estudiante: );
readl(nombre);
..
listar; > aqu llamamos al procedimiento listar definido antes
..
end.
Las palabras reservadas son identificadores reservados predefinidos que tienen un
significado especial y no se pueden utilizar como identificadores en sus programas.
Identificador:
Nombre utilizado para describir constantes, variables, tipos, funciones e incluso el
Operadores
Operaciones
sobre
INTEGER
Funciones
Aritmticos
Lgicos
Relacionales
ABS (), PRED(),
SUCC(), SQR(),
ORD(), ODD()
+ - * div mod
< <= > >= = <>
Tipo REAL:
Subconjunto finito de los nmeros reales comprendido entre: MAXREAL ..
MINREAL, 0, MINREAL .. MAXREAL. Tambin se llaman nmeros de punto o coma
flotante.
Aritmticos
Lgicos
Operadores
+-*/
< <= > >= =
<>
Relacionales
Operaciones
sobre
REAL
Funciones
Procedimientos
READ(), READLN()
WRITE(), WRITELN()
Forma Normal: En este formato, los nmeros deben de tener un punto decimal con, al
menos, un dgito a la izquierda del punto.
2.5
0.0
3.4E-5
5.0E2
Incorrectos:
E20
.1
5.
7E0.5
La forma exponencial es conveniente para trabajar con nmeros muy grandes o muy pequeos.
Tipo CHAR:
El tipo char tiene 256 posibles valores (caracteres) que corresponden al cdigo ASCII
(American Standard Code for Infomation Interchange) de los cuales algunos son caracteres de
: INTEGER;
: BOOLEAN;
VAR
VFecha1, VFecha2 : VecFechas;
VLetras1: VecLetras1;
VLetras2: VecLetras2;
Cuerpo del programa
El cuerpo del programa es obligatoria. Siempre empieza con la palabra "BEGIN" y
finaliza con "END."; entre ambas se sitan las instrucciones del programa.
Sin(x): Seno.
Cos(x): Coseno.
Sqr(x): Cuadrado.
impar.
Funciones de Conversin de Real a Entero
Existen dos funciones para convertir un nmero real a un entero:
Round(5.4) { 5}
Trunc(5.4) { 5}
Round(5.7) { 6}
Trunc(5.7) { 5}
Round(2.0) { 2}
Trunc(2.0) { 2}
Round(-8.4) { -8}
Trunc(-8.4) { -8}
Round(-8.6) { -9}
Trunc(-8.6) { -8}
{ 11}
Succ('y') { 'z'}
Pred(10) { 9}
Pred('y') { 'x'}
{ -4}
Pred(-5) { -6}
Ord(Chr(n)) = n
Chr(Ord(c)) = c
Sentencias Repetitivas
Bucles
Los bucles son parientes cercanos de los condicionantes, pero ejecutan constantemente
un cdigo mientras se cumpla una determinada condicin. Los ms frecuentes son:
For: Ejecuta un cdigo mientras una variable se encuentre entre 2 determinados parmetros.
While: Ejecuta un cdigo mientras se cumpla la condicin que solicita.
Hay que decir que a pesar de que existan distintos tipos de bucles, ambos son capaces
de realizar exactamente las mismas funciones. El empleo de uno u otro depende, por lo
general, del gusto del programador.
Sentencias IF THEN/IF THEN ELSE
El formato de la sentencia o estructura if es el siguiente:
If expresin lgica o booleana then
Sentencial1 (simple o compuesta)
Else
Sentencia2 (simple o compuesta);
Donde podemos observar el ; que sierra la sentencia.
Si el resultado de la expresin es verdadero /true) entonces se ejecuta la sentencia
End;
La expresin o variable debe ser de tipo ordinal es decir entero, carcter, lgico o
enumerado. Cada una lista de constantes que recibe el nombre de etiquetas debe ser del mismo
tipo de la variable o expresin. Cuando termina la ejecucin de la sentencia de control salta a
la sentencia siguiente al final de la estructura (sentencia end;)
Las reglas para utilizar case son:
Una etiqueta puede estar formada por un tipo subrango si para todos los valores de
este tipo la sentencia a ejecutar es la misma, con lo que se ahorra esfuerzo en la
codificacin.
etiquetada se debe utilizar la sentencia goto etiquetada, cada etiqueta solo puede marcar una
sentencia dentro del programa.
Etiqueta: <sentencia>
Goto etiqueta
La sentencia goto debe ser evitada y su uso restringido al mximo por no decir
prohibido. No obstante en caso de necesidad jams se debe saltar al interior de un bucle for,
while o repeat.
Las sentencias o estructuras repetitivas permiten que una o mas sentencias se ejecuten
varias veces, dependiendo el numero de ejecuciones de la verificacin de una o varias
condiciones en Pascal existen tres tipos de sentencias repetitivas: WHILE, REPEAT y FOR.
Sentencia WHILE
La sentencia o bucle while indica a la computadora que se ejecuten una o mas
sentencias mientras que se cumpla una determinada condicin. La condicin viene
determinada por la variable o expresin booleana. El formato general que adopta la estructura
es la siguiente:
While
condicin
Begin
do
while condicin do
<sentencia>;
<sentencia1>;
<sentencian>
End.
Dependiendo de si se ejecuta una sentencia compuesta o una sentencia simple.
La sentencia while comprueba inicialmente si la condicin es verdadera. Si la
condicin es verdadera se ejecutan las sentencias mientras la condicin de su enunciado sea
verdadera y finaliza cuando la condicin es falsa. Si la condicin es falsa se saltan las
sentencias de bucle continuando la ejecucin del programa en la siguiente sentencia al mismo.
La expresin o variable lgica se verifica antes que la <sentencia> del interior del
bucle se ejecuten, por tanto, deben estar definidas antes de la ejecucin del bucle.
Dentro del bucle deben existir sentencias que modifiquen el valor de la variable o
expresin, pues de lo contrario si el valor inicial es verdadero nunca se podr salir del
mismo y se ejecutara indefinidamente.
Sentencia REPET-UNTIL
La sentencia o bucle repeat ejecuta las sentencias cmprendidas entre las palabras repeat
y until hasta que la expresin o variable sea verdadera (true). La sentencia o estructura repeatuntil es la siguiente:
Repeat
<sentencia>;
<sentencia>;
Until condicin;
Sentencia FOR
La sentencia repetitiva for repite la ejecucin de una o varias sentencias un numero fijo
de veces, previamente establecido, necesita una variable del control del bucle que es
necesariamente de tipo ordinal, comprendidos entre dos valores extremos (inferior y superior)
La sentencia for tiene la siguiente forma:
For variable control := valor inicial to valor final do
<sentencia>;
For variable control := valor inicial downto valor final do
<sentencia>;
Donde <sentencia> puede ser una sentencia simple o compuesta. El primer formato de
Utilizar la estructura repeat-until cuando el bucle se realice por lo menos una vez.
Ejemplos Ejercicios