Apuntes de programacion con pascal PDF

Title Apuntes de programacion con pascal
Author Diego Rangel Sanz
Course Introducción a la Programación
Institution Universidad Rey Juan Carlos
Pages 133
File Size 2.9 MB
File Type PDF
Total Downloads 68
Total Views 174

Summary

Introduccion al lenguaje de programacion de pascal...


Description

Tecnología de la Información

INICIACIÓN A LA PROGRAMACIÓN EN PASCAL

Uso del compilador gratuito: Free-Pascal

José Emilio Bascuñana Fernández

INTRODUCCIÓN

1.- Concepto de computación o informática El concepto de computación o informática puede definirse como la ciencia que estudia los conocimientos científicos y técnicos que permiten el tratamiento automático de la información por medio de máquinas de cálculo automático, electrónicas o computadores.

2.- Concepto de algoritmo Los algoritmos tienen su origen en los matemáticos hindúes y árabes. La palabra algoritmo proviene de la traducción al latín de un libro de aritmética escrito por un matemático árabe conocido por Al’Kahwarizmi. Un algoritmo es la descripción de un método preciso para resolver automáticamente un problema. Desde el punto de vista de la computación, un algoritmo consta de una representación de los datos que se manejan, y de una secuencia ordenada de instrucciones u órdenes que resuelven el problema planteado. Un algoritmo debe ser un conjunto ordenado de pasos o instrucciones que especifican, de forma precisa y sin ambigüedades, la secuencia de operaciones que se han de realizar para resolver un problema. Los métodos más habituales para representar cualquier algoritmo son: - Diagramas de flujo u organigramas. - Pseudocódigos, que son lenguajes específicos. - Lenguaje natural. - Métodos formales matemáticos.

3.- Lenguajes de programación Un lenguaje de programación no deja de ser un lenguaje que permite comunicar una serie de conceptos acerca de un mismo tema entre dos elementos(máquinas, humanos, etc) que conocen y comprenden ese mismo lenguaje. Constará de los siguientes elementos: - Alfabeto. - Léxico. - Sintaxis. -Semántica.

3.1.- Lenguajes máquina El alfabeto que utiliza para escribir las instrucciones es el binario, es decir, 0 y 1 (es el único directamente ejecutable por el ordenador) Ya nadie programa utilizando este tipo de lenguaje.

3.2.- Lenguajes ensambladores Se trata de lenguajes de programación bastante próximos al lenguaje máquina. Aquí se sustituyen las cadenas binarias por un conjunto de códigos nemotécnicos más sencillos de recordar y utilizar. Depende de cada máquina en concreto.

3.3.- Lenguajes de alto nivel Son los más próximos al lenguaje natural y, por lo tanto, los más utilizados hoy en día. Pueden expresar instrucciones muy complejas (que se traducirán a gran cantidad de instrucciones máquina) y no serán directamente ejecutables por el ordenador. Para que esto pueda ocurrir se usan lenguajes compilados que utilizan un programa especial llamado compilador que es un programa capaz de traducir un conjunto de instrucciones de alto nivel a código máquina directamente ejecutable por el ordenador. 2

Programación en Pascal I. INTRODUCCIÓN A PASCAL 1. Tipos de datos, constantes y variables Un programador puede necesitar representar números enteros, caracteres alfanuméricos, personas o listados de empleados en su programa, por lo que necesitará dispones de diferentes tipos que permitan codificar la información que necesita para resolver el problema planteado. Normalmente existen los siguientes tipos de datos: - Tipos simples: Se utilizan para representar datos numéricos (enteros y reales), datos alfanuméricos (caracteres) y datos lógicos o booleanos. - Tipos estructurados: Permiten representar tablas, listas, cadenas, etc. - Tipos definidos por el programador: Utilizan como base los tipos simples y estructurados y permiten al programador crear una abstracción de la información que desea manipular en su programa.

Constantes (CONST) : Su valor no cambia a lo largo de la ejecución del programa. Variables (VAR) : El valor de un dato puede cambiar a lo largo de la ejecución del programa.

2. Símbolos e identificadores en pascal Un identificador es una palabra válida que puede ser utilizada para representar el nombre de una variable, de una constante, de un programa o de un subprograma en el lenguaje considerado.Su sintaxis es: IDENTICADOR: Letra * Ejemplo: Son identificadores válidos: peso, altura_base, dato1, nombre_apellidos. El vocabulario válido en Pascal está formado por: • Letras: Pueden utilizarse 52 letras diferentes, 26 mayúsculas y 26 minúsculas. (Sin Ñ y ñ). • Dígitos: Los comprendidos entre 0 y 9. • Signos de puntuación y caracteres especiales: Como, por ejemplo, =, -, *, +, , [, ], (, ), etc. • Operador de asignación: := • Operadores aritméticos: +, -, *, /, DIV(cociente entero), MOD (resto de la división entera). (+ también concatena cadenas) • Operadores lógicos: , =, , = • Cadenas de caracteres: Una cadena de caracteres se construye en Pascal como la unión de un conjunto de letras, dígitos y/o caracteres especiales en cualquier orden. Aparecerá delimitada por el símbolo comilla, seguida por un conjunto de caracteres: ‘cadena de letras, dígitos y/o caracteres especiales’ * Ejemplos: Cadena vacía: ‘ ‘ Cadena de cuatro dígitos: ‘1234’ Cadena formada por caracteres alfabéticos: ‘Luís y María-Tornado bailan’ 3

• Números: Se construyen usando la regla numero < . numero> (Aquí los símbolos < y > significan opcional) * Ejemplos: 1234 es el número positivo 1234 23.08 es el número real 23,08 +2 -32.3E+2 equivale a -32.3 10 = -3230 • Palabras estándar: - Para identificar los tipos de datos predefinidos en Pascal: INTEGER, REAL, CHAR, BOOLEAN, SHORTING, LONGINT, etc. - Para identificar funciones o procedimientos (subprogramas) predefinidos en Pascal: WRITE; READ; ABS, FUNCTION, etc. - Palabras Reservadas: tienen un significado semántico especial. Por ejemplo, la palabra PROGRAM se utilizará para representar el nombre del programa. Otros ejemplos de palabras reservadas son: CONST; TYPE; VAR; BEGIN; END; WHILE; DO; REPEAT; UNTIL; NOT; IF THEN; ELSE; FOR; FUNCTION; PROCEDURE, etc. Estas palabras no pueden usarse como identificadores debido a que todas ellas tienen un significado especial en Pascal. Una buena costumbre para programar es utilizar letras mayúsculas para las palabras reservadas y las minúsculas para los identificadores definidos por el usuario (excepto la primera letra que suele ir en mayúscula); si el identificador está formado por varias palabras, normalmente se separan por un subrayado o se pone en mayúscula la primera letra de cada palabra. Así el código será más legible.

3. Comentarios en pascal Permiten que cualquier código sea más legible. Son partes del programa que realmente no hacen nada, es decir, no se ejecutan. Hay dos formas de escribir comentarios: {comentario} o también (*comentario*)

4. Estructura de un programa en pascal Un programa en Pascal consta de dos partes claramente diferenciadas. Por un lado, una parte de declaraciones, en la que se declaran los nombres y tipos de variables, nombre de constantes, tipos de datos a utilizar en el programa , etc, seguida por una parte de instrucciones, que contiene el conjunto de instrucciones encargadas de codificar el algoritmo diseñado. De esta forma, un programa en Pascal puede considerarse dividido en las siguientes partes: • Una Cabecera de programa: PROGRAM Nombre_Programa (lista de archivos); Donde la lista de archivos es opcional y, si aparece, corresponde a un conjunto de archivos que serán utilizados por el programa. Por ejemplo Input, Output. • Una sección de declaración de datos y subprogramas. Esta sección puede dividirse en el conjunto de elementos que pueden ser declarados: - Declaración de constantes: * Ejemplo: CONST a=25; (* La constante a no variará su valor a lo largo del programa*) numero_pi= 3.141592; 4

Mi_nombre=`José Emilio´; Color= Rojo; - Declaración de tipos de datos: Se identifican mediante la palabra reservada TYPE y permite definir datos no predefinidos por el lenguaje. * Ejemplo: TYPE color = (rojo, verde, amarillo); - Declaración de variables: Se utiliza la palabra reservada VAR para definir variables globales que van a ser utilizadas. - Declaración de funciones y procedimientos que el programa necesite. En esta sección se declaran los dos tipos de subprogramas que pueden construirse en Pascal. Cada uno de ellos podrá identificarse mediante una palabra reservada, FUNCTION para al caso de las funciones y PROCEDURE para el de los procedimientos. • Un bloque de sentencias o “programa principal”. Este bloque estará delimitado por las palabras reservadas BEGIN y END, con la particularidad de que esta última terminará con un punto y no con punto y coma “;” como la mayoría de las instrucciones en Pascal. La estructura general de un programa en Pascal se muestra en el cuadro siguiente. PROGRAM Inicial; CONST numero_pi= 3.141592; VAR num1, num2: integer; X: real; TieneHijos: boolean; Nombre, Apellidos: String; FUNCTION factorial(numero:integer):integer; BEGIN Sentencias; ………….. END; PROCEDURE sistema (VAR parametro1:real; parametro2:real;……); BEGIN Sentencias; ………….. END; BEGIN (*Programa principal*) Sentencia1; Sentencia2; ………….. END.

• Programa 1 Escribe y ejecuta el siguiente programa que permite mostrar en pantalla un mensaje: PROGRAM Bienvenida; BEGIN Writeln(‘ Bienvenido a la programación en Pascal ‘); Readln( ); END.

5. Clasificación de los tipos de datos en Pascal 5

En función de cómo se reserva la memoria necesaria para almacenar la información, una primera clasificación de los tipos de datos es: • Tipos o datos estáticos. Es el caso de los tipos simples, estructurados o del tipo cadena. Cuando se declaran estos tipos, se reserva la cantidad de memoria necesaria. • Tipos o datos dinámicos. Durante la ejecución de un programa puede darse el caso de necesitar solicitar más memoria para almacenar una información. Para resolver este problema, Pascal utiliza el tipo puntero que permite solicitar (y liberar) la cantidad de memoria que necesita el programa durante su ejecución. En función del tipo de información que almacenan los datos puede hablarse de los siguientes tipos: • Tipos simples. Son directamente utilizables por el programador y permiten representar un dato con características muy concretas. Por ejemplo, datos numéricos (enteros, reales), datos lógicos, datos de tipo carácter, etc. • Tipos cadena. Permiten representar cadenas o grupos de caracteres (código ASCII), utilizando un único identificador como nombre de la variable tipo cadena. • Tipos estructurados. Deben ser, en cierta forma, definidos por el programador. Un dato estructurado permite crear una colección de datos de un mismo tipo(como los arrays, los conjuntos o los archivos) o de diferentes tipos (como los registros) y manipularlos como si de una única estructura se tratase. Es decir, en lugar de tener cuatro variables de tipo entero, pueden agruparse y crear una lista (o array) formada por cuatro datos de tipo entero. Aquí se deberá especificar el tamaño de la colección datos y el tipo de éstos. * Ejemplo:

La declaración VAR Posicion= array[1..4] of integer; reserva en memoria una lista de 4 datos enteros:

• Tipo puntero. Permite la implementación de datos dinámicos en Pascal. Este tipo de datos permite solicitar memoria al sistema de forma dinámica. Es decir, utilizando el tipo puntero (y una función predefinida de Pascal llamada new ) puede solicitarse en tiempo de ejecución la cantidad de memoria necesaria. Ahora bien, cuando una cantidad de memoria es solicitada al sistema, ésta se marca como ocupada para que ningún otro proceso o programa pueda sobrescribir (y por tanto destruir) datos. Para liberar memoria se usa una función predefinida en Pascal, dispose.

5.1 Tipos simples en Pascal Los tipos simples en Pascal son: Integer, Char, Bolean, Real, Enumerados y Subrangos. Estos seis tipos de datos pueden clasificarse de la forma siguiente:  Ordinales : Integer, Char , Boolean, Enumerados, Subrango. • Tipos simples   No ordinales : Re al.  Pr edefinidos : Integer , Re al , Boolean, Char. • Tipos simples   Definidos por el programador : Enumerados y Sunrangos.

5.1.1 Tipos simples ordinales Un tipo de dato es ordinal si: - Existe un primero y un último elemento. - Cada elemento, excepto el último tiene un elemento que le sigue llamado sucesor. 6

- Cada elemento, excepto el primero, tiene un elemento que le precede llamado antecesor. Estos tipos son, en Pascal, Integer, Char, Booloan, Enumerados y Subrangos. Para cualquier tipo de datos ordinal pueden definirse tres funciones que permiten obtener información sobre ellos: ord(x), succ(x) y pred(x).

5.1.2 Tipos enteros en Pascal Existen varias formas de declarar variables de tipo entero en Pascal: Tipo SHORTINT INTEGER LONGINT BYTE WORD

Nºde bytes 1 2 4 1 2

Rango -128..127 -32768..32767 -2147483648..2147483647 0..255 0..65535

5.1.3 Tipo real en Pascal Los números reales se pueden representar de dos formas en Pascal: • Notación decimal = parte_entera.parte_decimal. • Notación científica = mantisa*10exponente. 4

3

-2

23.904 ; 3E4 = 13*10 =130000 ; -3.22E+3 = -3.22*10 = -3220 ; 4.5E-2 = 4.510 =0.0451 El tipo REAL es el más utilizado y admite cinco subtipos diferentes, según el número de dígitos con significado: Tipo REAL SINGLE DOUBLE EXTENDED COMP

Nº Bytes 6 4 8 10 8

Dígitos representables De 11 a 12 De 7 a 8 De 15 a 16 De 19 a 20 De 19 a 20

Rango 2.9*10-39..1.7*10 38 -45 38 1.5*10 ..3.4*10 -324 5.0*10 ..1.7*10308 1.9*10-4851..1.1*10 4932 -9.2*10-18 ..9.2*1018

5.1.4 Tipo Boolean El tipo lógico, o Boolean, definido en Pascal representa a un conjunto de datos que sólo pueden tomar dos valores constantes predefinidos: - Cierto, TRUE (T) - Falso, FALSE (F) Además de las funciones ORD, SUCC y PRED, Pascal proporciona otra tres que devuelven valores voléanos en función del parámetro o dato que se les proporcione: • ODD(Numero). Esta función devuelve el valor true si el número es impar y false si es par. • EOLN,EOF. Estas funciones se utilizan para procesar archivos. • NOT (negación). Si el valor de una variable es true lo transforma en false , y viceversa. • AND (conjunción). Permite realizar la Y-Lógica, o conjunción, de dos variables lógicas. Esta función devuelve el valor true si ambos operadores están a true. En caso contrario devuelve false. • OR (disyunción). Permite realizar la O-Lógica, o disyunción, de dos variables lógicas. Se caracteriza porque sólo se obtiene como resultado false si ambos operadores están a false. En caso contrario devuelve true. La prioridad de los operadores lógicos es : NOT> AND> OR

5.1.5 Tipo Char 7

Este topo se utiliza para representar el conjunto de caracteres alfanuméricos del ordenador. (En Pascal, el código ASCII extendido). Para declarar variables de este tipo se usa la palabra reservada CHAR. Sobre este tipo de variables se puede usar la función CHR(x) que devuelve el carácter que corresponde al ordinal x. Ejemplo: CHR(68)=`D´

5.1.6 Tipo Enumerado Define un conjunto de valores nuevos definidos por el programador. La sintaxis es: TYPE Nombre_tipo_enumerado=(ident1, ident2,…….identN); VAR Dato: Nombre_tipo_enumerado; * Ejemplo TYPE VAR

Semana=(lunes, martes, miércoles, juebes, viernes, sábado, domingo); Dia: semana;

Los únicos operadores que pueden utilizarse con este tipo son los de asignación (para cargar un valor a la variable). Tampoco se pueden leer desde el teclado ni escribirse en pantalla directamente.

5.1.7 Tipo Subrango Es un tipo ordinal simple definido por el programador, cuyos elementos están comprendidos entre un límite inferior y uno superior. Se pueden definir subrangos de cualquier tipo ordinal: enteros, caracteres, enumerados previamente definidos, etc. La sintaxis es: TYPE Nombre_subrango= limite_inferior .. limite_superior; VAR Dato: Nombre_subrango; * Ejemplo TYPE Semana=(lunes, martes, miércoles, jueves, viernes, sábado, domingo); DiasLaborables = lunes .. viernes; VAR Laborable:DiasLaborables; diasMes: 1 .. 31; meses: 1 .. 12;

6. Prioridad entre operadores lógicos y aritméticos La mostramos en la tabla siguiente: Operador (,) NOT /. *, DIV, MOD, AND

Prioridad 1(superior) 2 3 8

+, -, OR , =,=,

4 5 (inferior)

7. Funciones aritméticas predefinidas en Pascal Función abs(x) round(x) sqr(x) sqrt(x) exp(x) ln(x) cos(x) sin(x) arctan(x) trunc(x)

Significado Valor absoluto de x Redondeo x a su entero más cercano Cuadrado de x Raíz cuadrada de x x Función exponencial e Logaritmo neperiano de x Coseno de x (en radianes) Seno de x (en radianes) Arcotangente de x (en radianes) Truncar x a su parte entera

8. Sentencia de asignación La sentencia de asignación se utiliza para asignar (almacenar) valores en las variables que han sido previamente declaradas. La instrucción de asignación sitúa un valor en una posición concreta de la memoria. La variable que se encuentra a la izquierda del símbolo de asignación (:=) tiene que ser un tipo igual o compatible al valor o tipo de la expresión que se encuentra a la derecha. La sintaxis de la instrucción de asignación es: Variable:= expresión;

8. Sentencias de entrada Existen dos procedimientos predefinidos: READ y READLN para aceptar una variable o un conjunto de variables separadas por comas, además readln puede ser utilizada sin variable alguna. La sintaxis es: Read(variable); Read(variable1, variable2, ….., variableN); Readln(variable); Readln(variable1, variable2, ….variableN); Readln; Mientras que readln, después de leer todos los valores para las variables de entrada, avanza hasta la siguiete línea de entrada donde se leerán los siguientes valores, read no lo hace. El efecto que produce readln, sin variables es que la ejecución del programa no continúa hasta que se pulse una tecla. Solo se pueden leer datos de tipo entero, real, carácter o cadenas (string), pero no booleanos ni de tipo enumerado. Los valores y el tipo de cada valor deben concordar con el tipo de variable que se va a asignar; si no es así, se producirá un error.

9. Sentencias de salida La salida de datos, o escritura, es un término que se aplica a una operación de salida de valores hacia un periférico (monitor, impresoras, etc). 9

Existen dos procedimientos predefinidos: WRITE y WRITELN para aceptar una variable o un conjunto de variables separadas por comas, además writeln puede ser utilizada sin variable alguna. La sintaxis es: Write(variable); Write(variable1, variable2, ….., variableN); Writeln(variable); Writeln(variable1, variable2, ….variableN); Writeln; Writeln, después de escribir todos los valores para las variables, avanza hasta la línea siguiente, esdecir, produce un salto de línea; write no lo hace, deja el cursor en la última posición donde ha escrito un dato. Writeln, sin variables de entrada, finaliza la salida en esa línea. • Descriptores de formato Pascal permite especificar de forma simple el formato de la salida añadiendo descriptores de formato a las variables de salida. La sintaxis es:

:w :w:d donde w y d representan a dos expresiones de tipo entero. : w especifica que el valor que se va a mostrar utilizará un total de w espacios. El valor a visualizar se justifica a la derecha. Los valores reales se muestran en forma exponencial. :w:d se utilizan para mostrar valores reales de forma decimal. :w es la anchura del campo, mientras que :d indica el número de dígitos decimales que deben ser visualizados. ( el punto del decimal cuenta como un carácter).

• Programa 2 Escribe el siguiente programa y ejecútalo para comprobar el funcionamiento de las sentencias que aparecen en él: Program pruebaEscritura; Var nombre:string[20]; edad:0..100; peso:real; sexo:char; altura:real; BEGIN nombre:='Pedro'; edad:=25; peso:= 75.60; sexo:='M'; altura:=1.96; writeln('Salida de datos: '); writeln('_______________ '); writeln; (*El texto encerrado entre comillas se escribe tal cual*) writeln('Nombre: ', nombre); writeln('Edad: ',edad, ' Peso: ',peso:3:5,' Sexo: ',sexo); writeln('Altura: ',altura:5:2); readln; END. 10

Al ejecutarlo, produce la salida siguiente:

• Programa 3 Escribe el siguiente programa que intercamb...


Similar Free PDFs