martes, 22 de marzo de 2011

UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO
COLEGIO DE CIENCIAS Y HUMANIDADES
PLANTEL SUR



CAMPOS JIMENEZ G. ISABEL

667



CIBERNETICA Y COMPUTACION II

LUIS ENRIQUE R. MALDONADO




BLOG DE LENGUAJE DE PASCAL


22- MARZO-2011




INDICE
  • INTRODUCCION
  • BIOGRAFIA
  • HISTORIA Y VERSIONES
  • TRADUCTORES DE PROGRAMA
  • PARTES DE UN PROGRAMA Y DISEÑO
  • VIDEOS DE LENGUAJE DE PASCAL
  • LENGUAJE DE PROGRAMACION
  • CONCLUSION
  • CIBEROGRAFIAS


INTRODUCCION

lenguaje de pascal

Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.
Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipificado. Esto implica que:
  1. El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.
  2. El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado.
Pascal fue creado inicialmente por Niklaus Wirth como un lenguaje para la enseñanza de la programación al final de los años 60. Es un descendiente de Algol y a su vez influyó mucho en otros lenguajes posteriores, como Ada. Destaca por la claridad del código y por promover «buenos hábitos» de programación.
Pascal alcanzó una gran popularidad cuando la empresa Borland lanzó Turbo Pascal, un compilador para IBM-PC rápido y barato, que además introducía mejoras importantes al lenguaje. Su sucesor, también de gran éxito, es Delphi, una herramienta de programación visual basada en Object Pascal, una versión de Pascal con objetos.

BIOGRAFIA

(Clermont-Ferrand, Francia, 1623-París, 1662) Filósofo, físico y matemático francés. Su madre falleció cuando él contaba tres años, a raíz de lo cual su padre se trasladó a París con su familia (1630). Fue un genio precoz a quien su padre inició muy pronto en la geometría e introdujo en el círculo de Mersenne, la Academia, a la que él mismo pertenecía. Allí Pascal se familiarizó con las ideas de Girard Desargues y en 1640 redactó su Ensayo sobre las cónicas (Essai pour les coniques), que contenía lo que hoy se conoce como teorema del hexágono de Pascal.
La designación de su padre como comisario del impuesto real supuso el traslado a Ruán, donde Pascal desarrolló un nuevo interés por el diseño y la construcción de una máquina de sumar

HISTORIA Y VERSIONES


El lenguaje de programación Pascal es un lenguaje de alto nivel y propósito general (aplicable a una gran cantidad de aplicaciones diversas) desarrollado por el profesor suizo Niklaus Wirth (Instituto tecnológico de Zurich, Suiza). El propósito de Wirth era crear un lenguaje para la enseñanza de técnicas de programación a estudiantes universitarios. Pero a medida que pasaban los años, Pascal se iba convirtiendo en un estándar en el mundo de la programación.
Una versión preliminar del lenguaje apareció en 1968 y el primer compilador totalmente completo apareció a finales de 1970. Desde entonces, muchos compiladores han sido construídos y están disponibles para diferentes máquinas. Durante muchos años, el libro Pascal User Manual and Report , publicado por Wirth y Kathleen Jensen en 1974, ha servido de facto como estándar de todas las versiones.
Las diferentes versiones ofrecían iterpretaciones ligeramente diferentes que impedían la compatibilidad entre ellas. Por estas razones, diferentes proyectos se iniciaron para producir una definición estándar del lenguaje y culminaron en dos estándar: uno de la Internacional Standard Organization (ISO) en 1982 y otro por un comité conjunto del American National Standards Institute (ANSI) y del Institute of Electrical and Electronics Engineers (IEEE). Estas dos versiones o definiciones se conocen como ISO Pascal y ANSI/IEEE Pascal, y difieren en algunos aspectos no especialmente significativos. Sin embargo, una versión no estándar se ha popularizado considerablemente: Turbo Pascal (marca registrada por Borland International, Inc.). Esta versión ha contribuido en gran medida a la popularización del lenguaje Pascal.

  • Alice Pascal es un viejo (1985) entorno de programación en Pascal con sintaxis dirigida para MS-DOS y Atari ST. También está disponible el código fuente.
  • Autorun Pascal Builder es un entorno para Windows para crear aplicaciones RAD (presentaciones, tutoriales, álbumes multimedia, etc.) con un lenguaje de Script tipo Pascal integrado.
  • DPas es un compilador gratuito para MS-DOS de 32 bits.
  • Free Pascal es un compilador profesional de 32 y 64 bits compatible con Turbo Pascal 7 y con la mayoría de versiones de Delphi. Hay versiones para muchos sistemas, incluyendo Linux, Mac OS y Win32.
  •  Lazarus es un clon de Delphi basado en Free Pascal.
  •  Dev-Pascal es un entorno para Windows que usa Free Pascal o GNU Pascal.
  • GNU Pascal es un compilador de 32/64 bits que funciona en todos los sistemas operativos soportados por GNU C, incluyendo Linux, FreBSD, DOS (con DJGPP o EMX), Windows (con Cygwin o mingw32) y OS/2 (con EMX). Soporta Pascal estándar, Pascal extendido, Turbo Pascal 7.0 y partes de Delphi, Mac Pascal y Pascal-SC.
  • Kylix Open Edition es un entorno de desarrollo visual para Linux de Borland compatible con Delphi. Para hacer la descarga (90,7 Mb) hay que registrarse.
  • Nemesis Pascal es un intérprete de Pascal escrito Delphi y Kylix y que funciona en Windows y Linux.
  • Pascal Pro produce código ensamblador para DOS32. Requiere TASM/MASM o NASM así como TLink32 y WDOSX u otras herramientas para generar los ejecutables. Incluye casi todos los elementos de Pascal más algunas mejoras.
  • Pascal X es un entorno de programación en Pascal para crear aplicaciones de consola de Windows. Incluye herramientas de ayuda para programadores noveles. Pueden usarse las palabras clave estándar en inglés o traducidas al portugués.
  • Think Pascal es un compilador para Macintosh, desarrollado por Think Technologies (con el nombre de Lightspeed Pascal), empresa posteriormente absorbida por Symantec. En 1997 dejó de distribuirse pero ahora se puede descargar gratuitamente.
  • Turbo Pascal 5.5 es un viejo (1989) compilador para MS-DOS de Borland, ahora distribuido gratuitamente.
  • Vector Pascal es una implementación de Pascal en Java pensada para aprovechar los juegos de instrucciones SIMD (Single Instruction-stream Multiple Data-stream) de los modernos microprocesadores, como los de MMX y AMD 3D Now!. Incluye características propias de APL y J y extensiones de Turbo Pascal y Pascal 90. Incluye también un entorno de desarrollo.
  • Virtual Pascal es un compilador de 32 bits completamente compatible con Turbo Pascal 7 y en gran parte con Delphi 2. Funciona en Windows y OS/2. Ya no está en desarrollo.



El nombre fue elegido en honor de Blaise Pascal (1623-1662), un brillante científico y matemático francés entre cuyos logros se encuentra la primera máquina calculadora mecánica en el mundo.

Sintaxis, Estatutos, Instrucción, Programa

* Sintaxis: son reglas que deben seguirse en la escritura de cada parte de un programa.

* Estatutos: comandos de Pascal diseñados para un propósito específico.

* Instrucción: forma de indicarle a la computadora que se necesita llevar a cabo. Las instrucciones se forman con los estatutos de Pascal correspondientes y siguiendo las reglas de sintaxis que Pascal determine.

* Programa: conjunto de instrucciones que indican a la computadora lo que se necesite se lleve a cabo. Es necesario que se especifiquen de acuerdo a la sintaxis de Pascal y en el orden lógico apropiado.

TRADUCTORES DE PROGRAMAS

Traductores de programas

Los traductores son un tipo de programas cuya función es convertir el código de un lenguaje en otro. Por ejemplo un compilador, que traduce código fuente en código objeto. Existen distintos tipos de traductores, entre ellos destacan:

EnsambladoresEs un tipo de traductor que convierte programas escritos en lenguaje ensamblador en programas escritos en código máquina.
PreprocesadoresTraduce un lenguaje de alto nivel a otro, cuando el primero no puede pasar a lenguaje máquina directamente.
IntérpretesSe trata de traductores-ejecutores ya que con cada instrucción realizan un proceso triple de lectura-traducción-ejecución. Son relativamente lentos, pero muy buenos para la depuración de programas.
CompiladoresEs el tipo de traductor más conocido. Se trata de un programa que traduce código fuente escrito en un lenguaje de alto nivel (Pascal) en código máquina (no siempre). Son más rápidos que los intérpretes pero presentan mayor dificultad a la hora de detectar errores.
EJEMPLO DE PASCAL

PARTES DE UN PROGRAMA Y DISEÑO

La cabecera

Independientemente de lo largo o pequeño que sea, todo programa debe comenzar con una cabecera de programa. Esta cabecera es la primera línea, comienza con la palabra clave Program seguida del nombre y terminada por ;.

Definiciones y declaraciones

Lo normal es que un programa necesite datos. Un dato es cualquier información que sea manipulada por un programa y necesite un espacio de almacenamiento en el ordenador al ejecutarse el programa. Los datos que no cambian nunca se denominan constantes, mientras que los que cambian se conocen como variables. Para reservar espacio en la memoria se han de declarar mediante una declaración de variables. Los identificadores deben comenzar con un carácter alfabético o el símbolo de subrayado. El primer carácter puede estar seguido de hasta 126 adicionales, alfabéticos, numéricos o de subrayado.

Tipos
En Pascal además de dar identificadores para las variables se debe de indicar el tipo de los datos que se usará para esa variable. El tipo de un dato tiene dos propósitos, una asignar cuánta memoria se va a asignar a un dato de tipo particular. El otro es prevenir un mal emparejamiento de tipos.

En Pascal, los tipos pueden categorizarse en predefinidos y definidos por el usuario.

Los tipos predefinidos son:



  • Boolean, admite los valores FALSE y TRUE
  • Char, son caracteres del conjunto de códigos ASCII
  • Integer, son números en el rango -32768 a 32767
  • Byte, es un subrango del tipo Integer, de 0 a 255
  • Real, son números reales en el rango 1E-38 a 1E+38

Constantes
Se usan para asociar un valor fijo a un identificador. Este puede estar definido por el usuario o puede ser literal que describe un valor. Por otra parte las constantes definidas por el usuario, llamadas constantes con nombre deben definirse en la parte de definición de constante, como por ejemplo, const PUERTO = 98. Cons es la palabra reservada correspondiente. A su vez la constante se puede definir con tipo, como por ejemplo, Const PUERTO: Integer 98;


Variables
Cuando se declara una variable, se le asigna memoria, suministrándole un lugar para poner un tipo de dato. Una declaración también suministra un nombre para ese lugar. La palabra clave es Var, pudiendo aparecer a continuación uno o más identificadores de variables, separados por comas y los tipos se separan con dos puntos (:), a continuación se muestran ejemplos,

Var tipo_interes
cant_nominal
principal : Real;
año : Integer;
mes : Byte;
inchr : Char;
salida : Boolean;
Var tipo_interes, cant_nomina, principal: Real;


Constantes con tipo
Pueden usarse para ahorrar memoria y como variables inicializadas. A continuación se da un ejemplo:

Const TEXTO="T";
MAYUSCULA="U";
peso : Byte = 80;
tipo_entrada : Char = MAYUSCULA;


Las constantes son una forma eficiente y clara de indicar al compilador que un valor no debería modificarse. Se usa como las variables, con la única diferencia que solo se puede escribir en la constante la primera vez que se declara.

Declaración de constantes

program leccion5;

const
    PI = 3.14156;

var
    radio : Integer;

begin
    write('Escribe el radio: '); readln(radio);
    writeln(2*PI*radio);
end.
Como ves, declarar una constante y usarla es muy fácil.
Las constantes pueden contener cualquier tipo de dato, incluso strings o tipos de datos más avanzados como veremos más adelante.
No es posible asignar a una constante el valor de una variable, pues no es posible saber que valor tendrá hasta que el programa se ejecute. Sin embargo, una característica curiosa de las constantes, es que pueden contener un valor consecuencia de hacer operaciones sencillas con otras constantes. Por ejemplo:
const
    PI = 3.14156;
    PI2 = 2 * PI;

Eficiencia de las constantes

Las constantes son sustituidas en tiempo de compilación por su valor declarado, cada vez donde se encuentren usadas. Esto repercute en que el procesador del ordenador no tiene que leer una dirección de memoria, sino que el valor se encuentra directamente empotrado en el código. Gracias a esto, el acceso a constantes es más rápido que el acceso a memoria.
Es una buena idea usar

Operadores
Gran parte de la manipulación de datos en un programa se ejecuta mediante operadores. Los operadores se clasifican en tres categorías, aritméticos, lógicos y relacionales.

El término expresión se refiere a una combinación de una o más constantes literales o con nombre o identificadores de variables, con uno o más operadores.

Cuando aparece más de un operador hay un orden de precedencia, y si es al mismo nivel la evaluación se efectúa de izquierda a derecha. Las precedencias son:

1 - (menos unario)
2 not
3 *, /,div,mod,and,shl,shr
4 *,-,or,xor
5 =,<,<,,<=,=,in

Sentencias
La parte de sentencias es en donde se define la lógica de un programa, es donde se manipulan los datos para obtener el resultado deseado por el usuario del programa. Las sentencias se pueden clasificar en los tipos:

  • Sentencias de asignación
  • Sentencias compuestas
  • Sentencias de control de la lógica

Una sentencia de asignación consta de un identificador de variable (o función) seguido del operador de la asignación (:=) seguido de una expresión. A continuación se indican ejemplos,

salida:=FALSE
interes:=10
pago:=principal/periodo


Una sentencia compuesta se ha de identificar en el principio con Begin y al final con end;. Una sentencia de este tipo puede estar formada por todos los tipos de sentencias incluyendo otras sentencias compuestas.

Sentencias de control de lógica

- Bucle while. Ejecuta una sentencia repetidamente hasta que la condición del bucle da FALSE. La forma es, While condicion Do sentencia

While condicion Do
 Begin
  sentencia 1
  sentencia 2
  ......
 End;


- Bucle Repeat-Until. Se usa cuando es necesario que el bucle se ejecute al menos una vez. En este caso la verificaciónde la condición ofrece esa posibilidad. La forma del bucle es,

 Repeat
  sentencia 1
  sentencia 2
  ......
 Until condicion


- Bucle For-Do. Es ideal para los casos en que está predeterminado el número de veces que se ejecutará una sentencia. La forma es,  For contador:= exp1 To exp2 Do sentencia

 For contador:=exp1 To exp2 do
  Begin
   sentencia1
   sentencia2
   .......
  End;
- If-Then-Else. Esta sentencia ejecuta una, muchas o ninguna sentencia dependiendo de la evaluación de la condición establecida. La forma general es,

If condicion Then sentencia1 [Else sentencia2]

- Sentencia Case. La forma de esta sentencia es,

Case selector Of
 Constante1 : sentencia1;
 Constante2 : sentencia2;
 Constanten : sentencian;
Else
 sentencia;


Cuando se ejecuta una sentencia Case, el valor del selector, que es una variable y puede ser cualquier tipo escalar excepto Real, se usa para determinar cuál, si la hubiera de las, sentencias del Case se ejcuta. Las constantes asociadas con la sentencia deben de ser del mismo tipo que la variable selector.


Declaración de variables

Una variable no es más que un símbolo, que representa un valor en la memoria que puede cambiar. En programación, las variables son imprescindibles, pues almacenan los datos de las operaciones que se realizan.
Todas las variables tienen un tipo


En Pascal hay que escribir un punto y coma (;) después de la declaración de una o más variables. Así pues, la sintaxis para declarar una variable es:

<nombre_de_la_variable> : <nombre_del_tipo_de_dato>;

Y para más de una variable del mismo tipo se utiliza la sintaxis:



<variable_1>, <variable_2>, ..., <variable_n> : <tipo_de_dato>;

Nota: recomiendo que, para todos los ejemplos que veas en este curso, abras un nuevo proyecto y le pongas el nombre de la lección, tal y como aprendiste en la lección anterior. Además, recomiendo que copies el código a mano, para que vayas familiarizándote con escribir código Pascal. Sobre la forma de escribir el código, ten en cuenta que el espaciado interior generalmente no importa, así por ejemplo es lo mismo numero1:=5; que numero1 := 5. Tampoco importa dejar o no espacios al principio de la línea, pero, como puede comprobarse de un primer vistazo, ello facilita ENORMEMENTE la lectura, así que es altamente recomendable respetar este estilo. Tampoco hay distinción entre mayúsculas y minúsculas, significa lo mismo Integer que integer o inTeger.
Lo primero que llama la atención de este ejemplo es la palabra clave var. Ello significa que, lo que venga a partir de ahora y hasta que no se indique lo contrario, es para declarar variables.

Declaración de las variables

Las variables se declaran poniendo el nombre que se desee, dos puntos (no importa si hay espacios o no entre medias), y el tipo de variable. Se termina con un punto y coma (obligatorio). El nombre que se desee puede ser, efectivamente, lo que se quiera, con dos normas básicas: debe empezar por una letra, y no contener símbolos. Estos son nombres válidos de variables:
a b c pericoEldeLosPalotes mi_variable a9988 variable2g
Y estas son variables NO válidas:
78s mi-variable
Concretamente, la primera, 78s empieza por un número, por lo tanto producirá un error, y mi-variable contiene el símbolo -, que significa resta, y entonces, como es de esperar, el compilador se confunde y piensa que quieres restar a la variable mi la variable variable.
Lo siguiente interesante es el tipo. Efectivamente, estas variables tienen el tipo Integer. Esto significa, en inglés, entero. Si recuerdas cuando aprendiste matemáticas, el tipo de número enteros es aquel que no tiene decimales, por ejemplo -6, 89, 7878787, etc. Pues esto es lo que significa, aunque con algunas limitaciones. Este tipo de datos no admite decimales. Así que asignar a estas variables un número real, por ejemplo, 6.78, producirá un error en tiempo de compilación.
Aprenderás muchos más tipos de datos más adelante.

Expresiones básicas

El programa empieza con begin, ya lo sabemos.
A continuación vienen tres asignaciones. Las asignaciones en Pascal se realizan con el símbolo := . Es fácil comprender que esta expresión:
numero1 := 5;
asigna el valor 6 a la variable numero1.
Y la expresión:
resultado := numero1 + numero2;
asigna a la variable resultado la suma de las variables numero1 y numero2.
La siguiente instrucción es la ya usada writeln, que como recordarás lo que hace es imprimir en la consola algo. Si te fijas, en este caso no tiene comillas. Es debido a que en vez de imprimir una cadena de caracteres, ahora lo que se imprime es directamente una variable. Más sobre esto más tarde.
Puedes ejecutar el programa y verás como produce en la salida un bonito número 11, consecuencia de imprimir la variable resultado.

Unas notas sobre los puntos y comas

Seguramente te preguntarás que utilidad tienen esos puntos y comas. ¿Porqué están ahí y porque si no los pongo el compilador me devuelve errores raros? Muy sencillo, los puntos y comas sirven para separar instrucciones. Así, por ejemplo, es posible meter varias instrucciones en una sola linea:
numero1 := 5; numero2 := 6;
significa lo mismo que:
numero1 := 5;
  numero2 := 6;
y además, curiosamente también significa lo mismo que:
numero1 :=
  5;
numero2
  := 6;
Es lo bueno del punto y coma, que se pueden poner todas las instrucciones que se quieran en una sola linea, o dividirlas en tantas lineas como se quiera si la expresión es muy larga (algo que te será de mucha utilidad cuando programes seriamente).
Hay algunas excepciones. Como ves, no se deben poner detrás de begin o de var. El último end. debe tener un punto, que como estarás pensando significa punto y final.

Instrucciones matemáticas permitidas en pascal


~Operador~Operación~Válido entre
+adiciónenteros y reales
-restaenteros y reales
*multiplicaciónenteros y reales
/divisiónenteros y reales
divdivisión enteraenteros
modrestoenteros

Por ejemplo:
program leccion3;

var
  PI : Single;
  r : Single;

begin
  PI := 3.14156;
  r := 6.7;
  write ('La circunferencia es:');
  writeln (2 * PI * r);
end.
Obtenemos:
La circunferencia es: 4.209690396E+01
Nota como hemos puesto el resultado directamente en la llamada a la función writeln. También nota como hay otra nueva función: write. Es igual que writeln pero no escribe un retorno de carro. De esa manera, lo siguiente que se escriba saldrá a continuación.

Los tipos char y string

Hasta ahora, hemos estado usando caracteres y cadenas de caracteres (strings) directamente, sin asignarlos a variables, para la función writeln. Pero se pueden usar en variables, y hacer algunas operaciones con ellos:
program leccion3;

var
  nombre : string;
  resultado : string;

begin
  write('Dime tu nombre: ');
  readln(nombre);
  resultado := 'Hola ' + nombre + ', ¿qué tal estás?';
  writeln (resultado);
end.
Al ejecutarlo, el programa espera que introduzcas un nombre y pulses intro. Ofrece lo siguiente:
Dime tu nombre: Javier
Hola Javier, ¿qué tal estás?
readln es por lo tanto una función que sirve para que el usuario del programa introduzca datos, estos se guardan en la variable especificada, y con esa variable se hacen las operaciones oportunas, en este caso, concatenar (sumar) cadenas de caracteres.
El tipo char es simplemente un carácter solo. El tipo string es una cadena (array) de caracteres. Más adelante aprenderemos a manejar cadenas.
Quizá te estés preguntando: ¿puedo introducir números con readln? Prueba:
program leccion3;

var
  r : Single;
  resultado : Single;

begin
  write('Dime el radio del círculo: ');
  readln(r);
  resultado := 2 * 3.14 * r;
  writeln (resultado);
end.
Si lo ejecutas te pide el radio del círculo e imprime el resultado. Desgraciadamente también si lo que escribes no es un número te premiará con una bonita excepción. Aprenderás un poco más adelante a hacer las conversiones de forma más segura.
¿Y qué sucede si sumas un string y un número? Prueba:
program leccion3;

var
  r : Single;
  resultado : string;

begin
  write('Dime el radio del círculo: ');
  readln(r);
  resultado := 'El resultado es: ' + 2 * 3.14 * r;
  writeln (resultado);
end.

VIDEOS DE LENGUAJE DE PASCAL

VIDEO 1

VIDEO 2

VIDEO 3