![]() |
un poco de Historia |
Lenguaje Pascal
domingo, 27 de marzo de 2011
Versiones, Comandos de Instrucción y Variables
Un poco de historia
Pascal fue diseñado alrededor de 1970 por Niclaus Wirth, quien lo diseñó para ser un lenguaje cómodo para la enseñanza de los fundamentos de la programación. Como un lenguaje de programación educativo, Pascal ha mostrado gran capacidad. Además muchos estudiantes que han programado en él, han llegado a ser programadores profesionales. Pascal ha sido ampliamente adaptado para programación de sistemas y aplicaciones.
Las razones del éxito de Pascal son claras : su simplicidad y compactes le permite que sea aprendido por novatos en pocos meses, y por experimentados programadores en pocas semanas. Su juiciosa selección del programa de control de estructuras provee soporte efectivo para programación estructurada. Su gran variedad de tipos de datos permite que los datos sean descritos detalladamente. Finalmente, Pascal ha sido cuidadosamente diseñado para ser simple y eficiente de implementar, y su libre disponibilidad de implementación de modelos permite el uso del lenguaje expandirse rápidamente. Tambien es cierto que Pascal pudo haber sido diseñado mejor; pero sus fallas son tan instructivas como su éxito.
La combinación de tipos de registros, registros variantes, arreglos y punteros, permiten que una gran variedad de estructuras de datos sean definidas, creadas y manipuladas.
Pascal es estáticamente tipeado y la verificación de tipos en tiempo de compilación permite eliminar una gran cantidad de errores de programación. Errores como intentar indexar un arreglo con un valor fuera del rango, o intentar seguir el puntero ni, pueden ser detectados en tiempo de ejecución.
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.
Comandos e Instrucciones
Una instrucción en Pascal es simple si no contiene otras instrucciones. Ejemplos de instrucciones sencillas son las de asignación y las de llamada a procedimientos. Las instrucciones simples se separan con punto-y-comas :
X := Y + Z; // asignación
Randomize; // llamada a un procedimiento
Normalmente, las instrucciones se agrupan en instrucciones compuestas, delimitadas por los comandos begin y end. Una instrucción compuesta puede aparecer en lugar de una instrucción en Pascal, genérica. Sigue un ejemplo :
begin
A := B;
C := A * 2;
end;
El punto y coma tras la última instrucción previa al end no es imprescindible, como se ve aquí :begin
A := B;
C := A * 2
end;
Ambas versiones son correctas. La primera incluye un punto y coma innecesario (pero inofensivo). El punto y coma es, de hecho, una instrucción nula, una instrucción sin código. Dése cuenta de que, a veces, las instrucciones nulas pueden ser utilizadas dentro de bucles, o en otros casos particulares.Una instrucción condicional se usa para ejecutar bien una de las instrucciones que incluye o ninguna, dependiendo de cierta comprobación. Hay dos tipos básicos de instrucciones condicionales: instrucciones if e instrucciones case.
Instrucciones If
La instrucción if puede usarse para ejecutar una instrucción sólo si se cumple una cierta condición (if-then; si...entonces), o para elegir entre dos alternativas (if-then-else; si...entonces..., y, si no, ...) La condición viene expresada mediante una expresión Booleana. Un ejemplo sencillo en Delphi puede mostrar cómo escribir instrucciones condicionales. Primero, cree una aplicación nueva, y coloque dos casillas de selección y cuatro botones en el formulario. No cambie los nombres de los botones o las casillas de selección, sino haga doble clic en cada botón para añadir un gestor de eventos para el evento OnClick correspondiente. He aquí una instrucción if sencilla para el primer botón :
procedure TForm1.Button1Click(Sender: TObject); begin // simple if statement if CheckBox1.Checked then ShowMessage ('CheckBox1 is checked') end;b>procedure TForm1.Button2Click(Sender: TObject); begin // instrucción if-then-else if CheckBox2.Checked then ShowMessage ('La casilla CheckBox2 está activada') else ShowMessage ('CheckBox2 NO está activada'); end;
Dése cuenta de que no puede colocar un punto y coma entre la primera instrucción y la palabra clave else, o el compilador mostrará un error de sintaxis. De hecho, la instrucción if-then-else, de hecho, es una sola instrucción, así que no puede colocar un punto y coma en medio de ella. Una instrucción if puede ser bastante compleja. La condición puede ser convertida en una serie de condiciones (usando los operadores Booleanos and, or y not), o bien la instrucción if puede incluir otra instrucción if. Los dos últimos botones del ejemplo IfTest muestran estos casos :procedure TForm1.Button3Click(Sender: TObject); begin // instrucción de doble condición if CheckBox1.Checked and CheckBox2.Checked then ShowMessage ('Ambas casillas están activadas') end; procedure TForm1.Button4Click(Sender: TObject); begin // instrucción if compuesta if CheckBox1.Checked then if CheckBox2.Checked then ShowMessage ('Las casillas 1 y 2 están activadas') else ShowMessage ('Sólo la casilla 1 está activada') else ShowMessage ( 'La casilla 1 no está activada. ¿A quién le importa la 2?') end;
Observe detenidamente el código y ejecute el programa, para ver si lo entiende todo. Cuando tenga dudas sobre la conformación de un programa, escribir un programa muy simple como este, puede ayudarle a aprender mucho. Puede añadir más casillas de selección y aumentar la complejidad de este breve ejemplo, haciendo todas las pruebas que necesite.
Instrucciones Case
Si sus instrucciones if se hacen muy complejas, a veces puede reemplazarlas con instrucciones case. Una instrucción case consiste en una expresión usada para seleccionar un valor, una lista de posibles valores, o una gama de valores. Estos valores son constantes, y deben ser únicos y de tipo ordinal. Finalmente, puede haber una instrucción else que sea ejecutada si ninguna de las etiquetas se corresponde con el valor del selector. Siguen dos ejemplos sencillos :case Number of 1: Text := 'Uno'; 2: Text := 'Dos'; 3: Text := 'Tres'; end; case MyChar of '+' : Text := 'Signo más'; '-' : Text := 'Signo menos'; '*', '/': Text := 'Multiplicación o división'; '0'..'9': Text := 'Número'; 'a'..'z': Text := 'Minúscula'; 'A'..'Z': Text := 'Mayúscula'; else Text := 'Carácter desconocido'; end;
Bucles en Pascal
El lenguaje Pascal tiene las instrucciones recursivas típicas de la mayoría de lenguajes de programación, incluyendo las instrucciones for, while y repeat. La mayoría de lo que hacen estos bucles le resultará familiar si conoce otros lenguajes de programación, por lo que los comentaré muy brevemente.El bucle For
Este tipo de bucle, en Pascal, está basado estrictamente en un contador, que puede ser incrementado o decrementado, cada vez que se ejecuta el bucle. He aquí un ejemplo sencillo de un bucle for que se usa para añadir los primeros diez números.var K, I: Integer; begin K := 0; for I := 1 to 10 do K := K + I;
Esta misma instrucción for podría haber sido escrita usando un contador inverso :var K, I: Integer; begin K := 0; for I := 10 downto 1 do K := K + I;
El bucle for es menos flexible en Pascal que en otros lenguajes (no es posible especificar un incremento distinto de uno), pero es sencillo y fácil de entender. Si quiere incorporar una comprobación más compleja, o proporcionar un contador personalizado, necesitará usar una instrucción while o repeat, en vez de un bucle for.Instrucciones While y Repeat
La diferencia entre el bucle while-do (mientras ... haz) y el bucle repeat-until (repite ... hasta que) consiste en que el código de la instrucción repeat se ejecuta siempre al menos una vez. Puede comprender fácilmente por qué, observando un ejemplo sencillo :while (I <= 100) and (J <= 100) do begin // usamos I y J para calcular algo ... I := I + 1; J := J + 1; end; repeat // usamos I y J para calcular algo ... I := I + 1; J := J + 1; until (I > 100) or (J > 100);
Si el valor inicial de I o J es mayor que 100, las instrucciones en el interior del bucle repeat-until son ejecutadas una vez, a pesar de ello. Sintaxis 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 La sintaxis mínima de BASIC sólo necesita los comandos LET, INPUT, PRINT, IF y GOTO. Un intérprete que ejecuta programas con esta sintaxis mínima no necesita una pila. Algunas de las primeras implementaciones eran así de simples. Si se le agrega una pila, se pueden agregar también ciclos FOR anidados y el comando GOSUB. Un intérprete de BASIC con estas características necesita que el código tenga números de línea. Los números de línea fueron un aspecto muy distintivo del BASIC clásico. Sin embargo, el uso de números de línea tiene la desventaja de requerir que el programador estime cuántas líneas ocupará la parte del programa que escribe. Este requerimiento se cumple generalmente incrementando los números de línea en un intervalo regular, como 10, pero esto lleva a problemas a la hora que el código después agregado exceda el espacio disponible entre las líneas originales. Para aliviar este problema de los primeros intérpretes de BASIC, los usuarios expertos pronto escribieron sus propios programas utilitarios para renumerar sus programas, después del ingreso inicial. Más tarde aparecieron intérpretes de BASIC que incluían un comando específico RENUMBER, el que permitía renumerar rápidamente (y las veces que se quisiera) todo el código nuevamente, con cualquier intervalo entre líneas indicado y a partir de un número entero dado; eliminando así el principal problema de la numeración de líneas obligatoria. En los dialectos modernos de BASIC MIUN ya no es necesario incluir números de línea (aunque son permitidos), y la mayoría (o todos) han añadido control de flujo estructurado y los constructores de declaración de datos similares a los de otros lenguajes, tales como C y Pascal:
- do
- loop
- while
- until
- exit
- on... goto
- gosub
- select ... case
Estructuras de un programa escrito en Pascal
La estructura básica tiene el siguiente formato:
* Cabecera o encabezado.
* Declaración o parte declarativa.
* Cuerpo del programa o parte de sentencias.
PROGRAM identificador; (*encabezado del programa*)
VAR (*parte declarativa*)
BEGIN
instrucciones (*cuerpo del programa*)
END
Opcionalmente pueden usarse comentarios en el programa, éstos no forman parte de él, pueden colocarse en cualquier parte del programa y deben ir entre paréntesis y asterisco (* Comentario*) o entre llaves.
Palabras reservadas
Palabras que sólo pueden ser usadas para un propósito específico, pues tienen un significado estándar predefinido. En la estructura básica las palabras "negrita" son palabras reservadas en Pascal. La lista completa la pueden encontrar en cualquier libro de Pascal.
Identificadores creados por el programador
Palabras creadas por el programador para ser usadas en un programa. Ejemplo: identificador para dar nombre al programa, nombres de variables, etc. ... Deben cumplir con las siguientes reglas:
1) Siempre debe comenzar con una letra del abecedario.
2) Después de la primera letra, puede tener más letras y/o dígitos y/o el carácter de subrayado (__). No hay distinción entre mayúsculas y minúsculas.
3) No puede ser palabra reservada.
4) Solamente los primeros 63 caracteres serán válidos o identificados.
El computador es una herramienta poderosa. La información ( datos de entrada ) puede almacenarse es la memoria y manejarse a velocidades excepcionalmente altas para producir resultados ( salida del programa ).
Podemos describirle al computador una tarea de manejo de datos presentándole una lista de instrucciones ( llamada programa ) que deben ser llevadas a cabo. Una vez que esta lista le ha sido proporcionada al computador, este puede llevar a cabo ( ejecutar ) dichas instrucciones.
Al principio de elaborar una lista de instrucciones ( escribir un programa ) se le llama programación. Escribir un programa de computador es muy similar a describirle las reglas de un juego a gente que nunca lo ha jugado, para que las aplique. En ambos casos se requiere de un lenguaje de descripción intangible por todas las partes involucradas en la comunicación. Por ejemplo, las reglas del juego deben ser escritas en algún lenguaje y después se leen y se aplican.
Tanto el inventor del juego como aquellos que desean jugarlo, deben estar familiarizados con el lenguaje de descripción utilizado.
Los lenguajes utilizados para la comunicación entre el hombre y el computador se llama lenguajes de programación. Todas las instrucciones presentadas al computador deben ser representadas y combinadas ( para formar un programa ) de acuerdo con las reglas de sintaxis ( gramática ) del lenguaje de programación. Sin embargo, hay una diferencia significativa entre el lenguaje de programación y un lenguaje como el español, el ingles o el ruso: las reglas de un lenguaje de programación son muy precisas y no se permiten excepciones ¨ o ¨ambiguedades¨.
Conceptos Fundamentales
TRES CONCEPTOS FUNDAMENTALES
Antes de ver en mayor detalle el lenguaje de programación Pascal, es bueno tener en claro lo que son las constantes, las variables y los identificadores.
Para eso debe tener una noción (por vaga que sea) de programa:
Un programa no es más que una serie de líneas de texto, cada una de las cuales contiene alguna definición sobre la información a ser usada en el programa o bien alguna instrucción que se desea que la computadora ejecute.
A continuación las definiciones de los conceptos enumerados: - CONSTANTE:
- VARIABLE:
- IDENTIFICADOR:
Es un concepto muy importante en Pascal, ya que sirve para nombrar las constantes, las variables e incluso el mismo programa.
Es una combinación de letras, números y el carácter '_', pudiendo empezar con cualquiera de ellos excepto números. UN IDENTIFICADOR VALIDO NO PUEDE TENER ESPACIOS.
Ejemplos de identificadores válidos son: 'radio', 'area', 'numero_1'; no son válidos '1a', 'área', 'numero 1'. En un programa, todos los identificadores deben ser distintos entre sí.
Pascal es un lenguaje donde se debe especificar a la computadora qué datos va a contener una variable.
Se recordará que una variable es un vaso o contenedor.
Pues bien: un humano puede, a simple vista, distinguir entre una palabra como 'Hola' o un número como 47. Pero la computadora no puede hacer esto, así que se le debe decir qué tipo de datos se pondrá en cada variable.
Una vez hecho esto, no puede almacenarse un valor de cualquier tipo en esa variable, sino de algunos tipos (Pascal permite ciertas conversiones de tipo).
Para decirle a Pascal el tipo de una variable, se usa una de las siguientes palabras clave en el lugar indicado en el esqueleto del programa (ver más abajo):
- INTEGER:
Número entero entre -32,768 y 32,767
- LONGLNT:
Número entero entre -2*10^31 y 2*10^31 - 1
- REAL:
- STRING:
- CHAR:
Existen otros tipos de datos, pero no son necesarios para completar el programa del Laboratorio.
ESQUELETO DE UN PROGRAMA EN PASCAL
Todos los programas de Pascal comparten ciertas características comunes, algunas de las cuales son opcionales. Esto se llama esqueleto del programa y se muestra a continuación.
Program <identificador>;
Uses WinCrt;
Const {constantes}
<identificador> = <valor>;
Var {variables}
<identificador> : <tipo>;
Begin {instrucciones}
. . .
End.
En este esqueleto, como en todas estas guías, lo que se ponga entre signos de mayor y menor (<>) indicarán elementos que deben reemplazarse en un programa real.
La línea Program es opcional y sirve para ponerle un nombre al programa; de esta manera, se tiene una idea de lo que hace el mismo.
La línea que dice 'Uses WinCrt' es una forma de que Pascal active la capacidad de leer desde el teclado y de escribir hacia la pantalla; en Windows, se hace esto sobre una pequeña ventana blanca, y en DOS sobre la pantalla completa (se debe escribir 'Uses Crt' en compiladores de DOS).
Las secciones llamadas Const y Var son para declarar las constantes y las variables, respectivamente.
Son opcionales e intercambiables.
Se pone un identificador que será el nombre con el que tanto Pascal como el programador conocerán la constante o variable.
Nótese que a una constante no se le especifica el tipo, sólo el valor. De igual manera, a una variable no se le puede dar un valor en este momento; Pascal le asigna un valor por defecto, y más adelante se verá cómo dar valor a una variable.
La sección entre las palabras Begin y End es la parte principal del programa y es aquí donde van las instrucciones del programa. Estas palabras fungen como paréntesis, de manera que se requieren estas dos pero además pueden ponerse más dentro de éstas, siempre poniendo primero el Begin y luego el End y de manera que, por ahora, en un programa correctamente escrito, haya tantos Begins como Ends.
El último End debe terminar con un punto, para que Pascal sepa que el programa ha terminado.
Nótese que al final de varias líneas del esqueleto aparece un punto y coma.
En general, todas las líneas de código Pascal terminan en punto y coma, a menos que terminen en una palabra reservada (no obstante, las líneas que terminan en un End que no sea el último del programa deben llevar punto y coma).
Las excepciones se irán viendo sobre la marcha.
Una última observación: las palabras entre llaves ({}) son comentarios, y Pascal las ignora por completo.
Son una forma valiosa de incluir información para los humanos dentro del código para la computadora.
Introducción al Sistema Pascal
INTRODUCCION PASCAL
En programacion tradicional, modular o estructurada un programa describe una serie de pasos a ser realizados para la solucion de un problema, es decir es un algoritmo, en particular este modelo de programacion se uso mucho para generar programas o aplicaciones en ambientes pc's y con consolas, es decir el programa se ejecutaba en una consola de msdos por ejemplo, y el programa o aplicacion se tenia que portar fisicamente a otras pc's, al final de su ciclo de vida de este modelo se habia mejorado y ya era posible que se ejecutara en alguna ventana-consola de ambientes windows, con mejor interfase como fonts, colores, background, etc.
En programacion orientada a objetos ( OOP ) un programa es considerado como un sistema de objetos interactuando entre si, ambientes de desarrollo visuales facilitan aun mas la construccion de programas y solucion de problemas, porque permiten abstraer al ingeniero de software de todo el GUI (interfase grafica) del problema, que constituye mas del 60% del codigo normal de un programa, en general este ambiente permitio una mejora en la interfase del programa con el usuario de la aplicacion ya que en este caso solo se manejaban formas o ventanes llenas de componentes o controles especializados en alguna tarea especifica.
A este modelo de programacion o construccion de programas los compiladores modernos se adaptaron rapidamente y tenemos aplicaciones fantasticas, en donde alguna forma o ventana esta llena de controles visibles e invisibles que realizan muchas tareas donde ademas de los componentes o controles que proporciona directamente el compilador cuando se instala, existen miles de controles o componentes extras en muchas partes del mundo realizados por programadores talentosos y que enriquecen el contenido de nuestros programas y aplicaciones visuales.
Al principio estas aplicaciones, se construian pensando en que se ejecutaban en una pc con ambiente grafico o en una serie de pc's proximas fisicamente sin embargo el rapido avance de las redes dentro de las empresas u organizaciones conllevan a que los fabricantes de compiladores cada vez incluyeran mas y mas controles o componentes que permitan ejecutar el programa o aplicacion simultaneamente en una red de pc's.
Sin embargo cuando se habla de redes actuales estamos hablando de la red de redes (internet) y si en redes internas o intranets el retraso en el tiempo de comunicacion entre sus pc's internas y la cantidad de informacion a trasmitir entre las mismas no es algo muy importante o inmanejable, este problema de tiempo de trasmision y cantidad de informacion, si es un factor muy importante cuando se pretende construir programas o aplicaciones que deban compartirse o usarse por muchas pc's conectadas a internet, desgraciadamente como factor externo que es, no esta bajo control de la empresa o del programador.
PASCAL, es un compilador que permite usar cualquiera de los tres enfoques en la solucion de problemas de informacion que puedan y deban ser resueltos empleando el computador y el lenguaje aunque se repite este curso esta enfocado al primer modelo.
Suscribirse a:
Entradas (Atom)