







































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Fundamentos de informática, Profesor: Pedro Latorre, Carrera: Ingeniería de Tecnologías Industriales, Universidad: UniZar
Tipo: Ejercicios
1 / 47
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!








































Bienvenido a Aprenda Pascal! Este manual es una introducción simple y completa al lenguaje de programación Pascal, incluyendo punteros. Puede encontrar su versión original en : http://web.mit.edu/taoyue/www/tutorials/pascal/pas-x.html. He tratado de hacer las cosas tan claras como sea posible. Si usted no entiende nada, pruebe los programas en su compilador de Pascal e irá aprendiendo poco a poco algunas cosas. Pascal es un lenguaje sintácticamente estricto. Esto significa que si usted comete un error, el compilador se detendrá y le informará de su error. Si usted quiere ver con mayor profundidad temas que estén mas allá de estructuras de datos básicos, recurra a los libros de la bibliografía de la materia. Para programar en Pascal (o en cualquier lenguaje de alto nivel), usted necesitará un compilador. Usted puede utilizar cualquier compilador de Pascal standard con este manual. Si necesita descargar un compilador, o si usted es la primera vez que va a programar y no sabe que compílador utilizar visite el link “Compiladores” para más información.
Por favor elija su destino desde la barra de herramientas de abajo.
Continuar Contenido
Pascal grew out of ALGOL, a programming language intended for scientific computing. Meeting in Zurich, an international committee designed ALGOL as a platform-independent language. This gave them more more free rein in the features they could put into it, but also made it more difficult to write compilers for it. Many computer vendors did not. The lack of compilers on many platforms, combined with its lack of pointers and many basic data types such as characters, led to ALGOL not being widely accepted. Scientists and engineers flocked to FORTRAN, a programming language which was available on many platforms. ALGOL mostly faded away except as a language for describing algorithms. Back to top
In the 1960s, several computer scientists worked on extending ALGOL. One of these was Dr. Niklaus Wirth of the Swiss Federal Institute of Technology (ETH-Zurich), a member of the original group that created ALGOL. In 1971, he published his specification for a highly-structured language which resembled ALGOL in many ways. He named it Pascal after the 17th-century French philosopher and mathematician who built a working mechanical digital computer. Pascal is very data-oriented, giving the programmer the ability to define custom data types. With this freedom comes strict type-checking, which ensured that data types didn't get mixed up. Pascal was intended as a teaching language, and was widely adopted as such. Pascal is free-flowing, unlike FORTRAN, so student programmers didn't have to worry about formatting. In addition, Pascal reads very much like a natural language, making it very easy to understand code written in it. Back to top
One of the things that killed ALGOL was the difficulty of creating a compiler for it. Dr. Wirth avoided this by having his Pascal compiler compile to an intermediate, platform-independent object code stage. Another program turned this intermediate code into executable code. Prof. Ken Bowles at the University of California at San Diego (UCSD) seized on the opportunity this offered to adapt the Pascal compiler to the Apple II, the most popular microcomputer of the day. UCSD P-System became a standard, and was widely used at universities. This was aided by the low cost of Apple II's compared to mainframes, which were necessary at the time to run other languages such as FORTRAN. Back to top
By the early 1980's, Pascal has already become widely accepted at universities. Two things happened to make it even more popular. First, the Educational Testing Service, the company which writes and administers the principal college entrance exam in the United States, decided to add a Computer Science exam to its Advanced Placement exams for high school students. For this exam, it chose the Pascal language. Because of this, secondary- school students as well as college students began to learn Pascal. Pascal remained the official language of the AP exams until 1999, when it was replaced by C++, which gave way to Java very soon afterwards. Second, a small company named Borland International came out with the Turbo Pascal compiler for the IBM Personal Computer. This compiler was truly revolutionary. It did take some shortcuts and made some modifications to standard Pascal, but these were minor and led to its greatest advantage: speed. Turbo Pascal compiled at a dizzying rate: several thousand lines a minute. At the time, the available compilers for the PC platform were slow and bloated. When Turbo Pascal came out, it was a breath of fresh air. Soon, Turbo Pascal became the de facto standard for programming on the PC. When computing magazines published source code for utility programs, it was usually in either assembly or Turbo Pascal. At the same time, Apple came out with its Macintosh series of computers. Since UCSD Pascal has first been implemented on the Apple II, Apple made Pascal the standard programming language for the Mac. When programmers received the API and example code for Mac programming, it was all in Pascal. Back to top
From version 1.0 to 7.0 of Turbo Pascal, Borland continued to expand the language. One of the criticisms of the original version of Pascal was its lack of separate compilation for modules. Dr. Wirth even created a new programming language, Modula-2, to address that problem. Borland added this to Pascal with its units feature. By version 7.0, many advanced features had been added. One of these was DPMI (DOS Protected Mode Interface), a way to run DOS programs in protected mode, gaining extra speed and breaking free of the 640K barrier instituted by Microsoft its early versions of DOS. Turbo Vision, a text-based windowing system, allowed programmers to create great-looking interfaces in practically no time at all. Pascal even became object-oriented, as version 5.5 adopted the Apple Object Pascal extensions. When Windows 3.0 came out, Borland created Turbo Pascal for Windows, bringing the speed and ease of Pascal to the graphical user interface. It seemed that Pascal's future was secure. Back to top
However, this was not so. In the 1970s, Dennis Ritchie and Brian Kernighan of AT&T Bell Laboratories created the C Programming Language. Ritchie then collaborated with Ken Thompson to design the UNIX operating system. AT&T had, at that time, a monopoly on telephone service in the United States, and was permitted to keep that monopoly in exchange for being banned from the computer business. AT&T thus gave away the operating system, with source code, to universities for free. Thus, a whole generation of computer science students learned Pascal in the introductory programming courses, then learned C when they delved into operating systems. Slowly but surely, C began to filter into the computer programming world. The killer, ironically enough, was object orientation and the move to Windows on the PC platform. Bjarne Stroustrop introduced object-orientation to most of the world when he created C++. Object Pascal was quickly created in response, but for most programmers, the first thing that pops to mind when OOP is mentioned is C++. At the same time, As the world moved towards Windows, the job of keeping up with it became greater. Windows was programmed in C (K&R C, to be specific), and Microsoft released the API entirely in C. Example code came in C. Most third-party programs were written in C. Programming Windows applications in Pascal went against the tide. Many colleges and universities moved away from Pascal, choosing C++, or the new Java, for their programming courses. Finally, the AP exam moved to C++, ending Pascal's dominance in high schools. Back to top
Despite its fading away as the de facto standard, Pascal is still extremely useful. C and C++ are very symbolic languages. Where Pascal chooses words (e.g. begin - end ), C/C++ chooses symbols ( { - } ). Also, C and C++ are not strongly-typed languages. In Pascal, mixing types often led to an error. In C/C++, nothing would happen. You could even treat pointers as integers and do pointer arithmetic with them. In this way, you could very easily crash your program. When the AP exam switched to C++, only a subset of C++ was adopted. Many features, like arrays, were considered too dangerous, and ETS provided its own "safe" version of these features. Java corrects many of these problems of C++ (there are no actual pointers in Java). Another reason: speed and size. The Borland Pascal compiler is still lightning- fast. Borland has revitalized Pascal for Windows with Delphi, a Rapid-Application-Development environment. Instead of spending several hours writing a user interface for a Windows program in C/C++, you could do it in ten minutes with Delphi's graphical design tools. You could do the same in Visual BASIC, but Delphi is so much faster than Visual BASIC. Also, Pascal remains preferred at many universities, partly due to the complexity of teaching introductory programming in Java or C++. Teaching Java requires the teaching of handles and object orientation - a lot of overhead for a beginning programming course. To teach simple procedural programming, Pascal remains the top choice. Thus, even after C, C++, and Java took over the programming world, Pascal retains a niche in the market. Many small-scale freeware, shareware, and open-source programs are written in Pascal/Delphi. So enjoy learning it while it lasts. It's a great introduction to computer programming. It's not scary like C, dangerous like C++, or abstract like Java. In another twenty years, you'll be one of the few computer programmers to know and appreciate Pascal.
Back to top
La estructura básica de un programa en Pascal es:
PROGRAM PnombredelPrograma ( FileList ) ;
CONST (* Declaración de Constantes *)
TYPE (* Declaración de Tipos *)
VAR (* Declaración de Variables *)
(* Definiciones de Subprogramas *)
BEGIN (* Instrucciones Ejecutables *) END. Los elementos de un programa deben estar en el órden correcto, aunque algunos pueden eomitirse si no se necesitan. Aquí hay un programa que no hace nada, pero tiene todos los elementos requeridos:
program NoHaceNada ; begin end. Los comentarios en Pascal comienzan con un (* y terminan con un *). No se pueden anidar comentarios :
( ( ) ) dará un error porque el compilador aparea el primer (* con el primer ) , ignorano todo lo del medio. El segundo ) quedará sin su correspondiente (. En Turbo Pascal, { Comentario } es una alternativa a ( Comentario ). La llave abierta significa comienzo de un bloque de comentarios,y la llave cerrada significa el final del mismo. Los comentarios tienen dos propósitos: primero, hace el código más fácil de entender. Si usted escribe el código sin comentarios, puede volver a el un año después y tendrá mucha dificultad tratando de entender que quiso hacer o porque lo hizo de ese modo. Otro uso de los comentarios es para encontrar errores. Cuando usted no sabe qué está causando un error en su código, puede poner como comentario el segmento del código bajo sospecha de error. Recuerde la resticción anterior respecto de comentarios anidados. No incurrirá en error si hace esto: { ( Comentario *) }
Todoslos espacios y los end-of-lines son ignorados por el compilador de Pascal a menos que esten dentro de un string. Sin embargo, para hacer más legible un programa, debería indentar las sentencias y poner sentencias diferentes en distintas líneas.
Identificadores son nombres que ayudan a referenciar valores almacenados, tales como variables y constantes. Todo programa debe ser identificado (de aquí su nombre) porun identificador. Reglas para identificadores:
Las variables son similares a las constantes, pero sus valores puedn ser cambiados mientras el programa se ejecuta. En Pascal las variables deben declararse antes de que puedan ser usadas:
var IdentifierList1 : DataType1 ; IdentifierList2 : DataType2 ; IdentifierList3 : DataType3 ; ... IdentifierList es una serie de identificadores, separados por comas (,). Todos los identificadores de la lista son declarados como pertenecientes al mismo tipo de datos. Los tipos de datos principales en Pascal son: integer real char Boolean Note que aunque hay constantes que puedan ser cadenas de caracteres (strings), no hay un tipo de datos llamado string excepto en algunas implementaciones especializadas (como Turbo Pascal). Mas información sobre tipo de datos en Pascal:
Una vez declarada una variable, puede almacenar un valor en ella. Esto se llama asignación. Para asignar un valor auna variable, siga ésta sintaxis: nombre_variable := expresión ; Note que contrariamente a otros lenguajes, cuyo operador de asignación es el signo igual, Pascal usa dos puntos seguido del signo igual. La expresión puede ser sólo un valor : un_real := 385.385837; o puede ser una expresión aritmética : un_real := 37573.5 * 37593 + 385.8 / 367.1; Los operadores aritméticos en Pascal son:
div y mod sólo opera con enteros. / trabaja con reales y enteros pero siempre da un resultado real. Las demás operaciones operan con reales y enteros. Para las operaciones que trabajan con reales y enteros, el resultado será entero si lo son todos los operandos y será real si lo es por lo menos un operando. Por lo tanto, 3857 + 68348 * 38 div 56834 dará un entero, pero 38573 div 34739 mod 372 + 35730 - 38834 + 1. será real porque 1.1 es real. A cada variable sólo se le puede asignar un valor que represente un datodel mismo tipo que el de la variable. No se le puede asignar un valor real a una variable entera. Sin embargo, hay ciertos tipos de datos que son compatibles con otros. Se le puede asignar un valor entero a una variable real. Suponga que tiene la siguiente sección de declaración de variables: var un_entero : integer; un_real : real; Cuando se ejecuta el siguiente bloque de instrucciones, un_entero := 375; un_real := un_entero; un_real tendrá un valor de 375.0, o 3.75e2. En Pascal el signo menos puede ser utilizado para obtener un valor negativo. El signo mas puede usarse para obtener un valor positivo, sin embargo no se lo hace porque no es necesario dado que por defecto todos los valores positivos. No deben usarse dos operandos seguidos (uno al lado del otro)! un_real := 37.5 * -2; Esto puede tener sentido para usted ya que está tratando de multiplicar por el número negativo –2. Sin embargo, para Pascal es confuso y no sabrá si multiplicar o restar. Esto se puede evitar usando paréntesis : un_real := 37.5 * (-2); La computadora sigue las operaciones con un orden similar al que usted sigue cuando hace operaciones aritméticas:
La computadora resuelve cada expresión de acuerdo con las siguientes reglas:
Dado que Pascal ignora los espacios y los end-of-lines,hace falta puntuación para decirle al compilador cuando una sentencia termina. Debe haber un punto y coma siguiendo:
program Stupid;
const a = 5; b = 385.3;
var alpha, beta : real;
begin (* main ) alpha := a + b; beta := b / a end. ( main *) En general, conviene identar dos o cuatro espacios en cada bloque y dejar una línea en blanco entre bloques (como ente los bloques de constantes const y variables var). Lo más importante, use comentarios libremente! Si alguna vez usted vuelve a un programa que escribió hace diez años, probablemente no recuerde la lógica con el que lo escribió a menos que lo documente. Es una buena idea comentar la parte ejecutable del programa (main), para distinguirla de los subprogramas.
Ahora usted ya sabe usar variables y cambiarles su valor. ¿Listo para su primer programa? Pero hay un pequeño problema: usted aún no aprendió como mostrar los datos en la pantalla! ¿Cómo va a saber si el programa funciona o no si no puede ver ninguna salida? Entonces, aquí hay un MUY breve resumen de la próxima lección. Para ver datos en la pantalla, use: writeln ( argumentos ); Argumento está compuesto por cualquier cadena de caracteres o nombres de variables separados por comas. Un ejemplo es: writeln ('La suma da = ', sum);
Aquí sigue el programa de ejemplo para el capítulo 1: Encuentre la suma y el promedio de cinco enteros. El promedio debe ser real. Los cinco números son: 45 7 68 2 34 Use una constante para representar el núnero de enteros que manejará el programa – defina alguna constante con el valor 5. La salida deberia ser algo asi: Numero de enteros = 5 Numero1 = 45 Numero2 = 7 Numero3 = 68 Numero4 = 2 Numero5 = 34 Suma = 156 Promedio = 3.1200000000E+ Como puede ver, la salida por defecto de los números reales es la notación científica. En la siguiente sección se verá como formatearlo para fijar el punto decimal. Para ver una posible solución, haga click en Continuar.
Entrada significa leer un dato desde la memoria, del teclado, del mouse o de un archivo en un disco. No veremos cómo leer un dato proveniente del mouse porque la sintaxis difiere de máquina a máquina, y puede requerir una interrupción complicada al driver del mouse. Si desea ver el código fuente para un mouse para DOS, vea el siguiente link: http://web.mit.edu/taoyue/www/tutorials/pascal/pas-mou.html Esta unidad no trabajará bajo Windows, Macintosh, o X-Windows, porque estos sistemas operativos manejan toda entrada del mouse por usted y no le permiten una interface con el mouse directamente. El formato basico para leer entradas de datos es: read ( Lista_de_Variables ); Variable_List es una serie de identificadores de variables separados por comas. read, sin embargo, no va a la siguiente línea. Esto puede ser un problema con entradas de caracteres, porque el carácter de end-of-line es leido como un espacio. Para leer datos de entrada y luego ir a la siguiente línea: readln ( Lista_de_Variables ); Suponga que lee los enteros a, b, c, y d. 45 97 3 1 2 3 Esto será el resultado de varias sentencias:
read (a); read (b); 45 97 readln (a); read (b); 45 1 read (a, b, c, d); 45 97 3 1 readln (a, b); readln (c, d); 45 97 1 2
La sentenci a read no salta a la siguiente línea, mientras que readln siempre salta a la siguiente línea luego de cada lectura. Cuando se leen enteros, se saltan todos los espacios hasta que se encuentra un número. A partir de ahí,todo número subsecuete es leído, hasta que se alcace un carácter no unmérico (incluído el espacio).
Cuando se lee un entero, el valor leído es 8352. Inmediatamente después lee el carácter '.' Si trata de leer ese número en dos enteros, tampoco funcionará porque cuando la computadora busca el segundo dato, ve '.' y para avisando que no puede encintrar ningún dato para leer. Con valores reales,la computadora también salta los espacios en blanco y luego lee todo lo que pueda ser leido. Sin embargo, hay una restricción: un real sin parte entera debe comenzar con 0. . es invalido y la computadora no lo puede leer como real, pero
es correcto. Aseguresé que todos los identificadores en la lista de argumentos se refieran a variables! En el argumento de una instrucción de lectura de datos de entrada no puede haber constantes ni valores literales.
Para escribir datos en la pantalla, también hay dos sentencias: write ( Lista_de_Argumentos ); writeln ( Lista_de_Argumentos ); La sentencia writeln salta a la línea siguiente cuando termina. En la lista de argumentos se pueden usar cadenas de caracteres, constantes o values literales. Para que aparezcan comillas con una cadena de caractres, se deben usar dos comillas consecutivas: ´´
El uso de archivos para entrada/salida es diferente según el compilador de Pascal que se emplee. Sin embargo, el modo de lectura/escritura en archivos es el mismo en todos los compiladores: read ( file_variable , argument_list ); write ( file_variable , argument_list ); Lo mismo con readln y writeln. La mayoría de los sistemas Pascal requieren que se declare un archivo en la sección de variables: var ... filein, fileout : text; Usualmente se usa el tipo de datos texto. La diferencia entre compiladores de Pascal aparece luego de abrir un archivo para lectura o escritura. En la mayoría de los compiladores dePascal, incluido Metrowerks Codewarrior y el traductor de Pascal incluido con Unix/Linux, usan: reset ( file_variable, 'filename.extension' ); para abrir un archivo para lectura. Usan: rewrite ( file_variable, 'filename.extension' ); para abrir un archivo para escritura. Note que no se puede abrir un archivo para ambas cosas (lectura y escritura). Un archivo abierto con reset sólo puede ser usado con read y readln. Un archivo abierto con rewrite sólo puede ser usado con write y writeln. Turbo Pascal hace esto de modo diferente.Primero se debe asignar un archivo a una variable, luego se llama a reset o rewrite usando sólo la variable. assign (file_variable, 'filename.extension'); reset (file_variable) El modo de representar el path difiere dependiendo del sistema operativo. Ejemplos: Unix: ~login_name/filename.ext DOS/Win: c:\directory\name.pas Mac: Disk_Name:Programs Directory:File Name.pas Antes de terminar el programa se deben cerrar los archivos! Esto es igual para todos los compiladores: close ( File_Identifier ); El siguiente programa usa archivos. Fue escrito para Turbo Pascal y DOS, y crea file2.txt con el primer carácter proveniente de file1.txt: program CopyOneByteFile;
var mychar : char; filein, fileout : text;
begin assign (filein, 'c:\file1.txt'); reset (filein); assign (fileout, 'c:\file2.txt'); rewrite (fileout); read (filein, mychar); write (fileout, mychar); close(filein); close(fileout) end.
EOLN es una función Booleana que es verdadera (TRUE) cuando se alcanza el final de una línea (end of a line) en un archivo de entrada abierto. eoln ( file_variable ) Para ver si la entrada standard (el teclado) está en un end-of-line, simplemente poner eoln sin ningún parametro: eoln EOFTRUE cuando se alcanza el final del archivo. eof ( file_variable ) o eof para la entrada standard. Normalmente no se pulsa el carácter end-of-file desde el teclado. En máquinas DOS/Windows, este carácter es Control-Z or F6. En máquinas UNIX/Linux, el carácter end-of-file es Control-D.