Turbo Pascal Palabras reservadas: Para poder programar en cualquier lenguaje es necesario conocer los códigos mediante los cuales podamos expresar las tareas que queremos realizar. El Turbo Pascal, como lenguaje de programación posee su propio código con palabras de uso exclusivo para ciertas funciones, a estas palabras les llamaremos palabras reservadas de Turbo Pascal. Las palabras reservadas de Turbo Pascal son: AND ARR AY CONS GIN DIV T ELSE END FORW FUN ARD CTION IN EL PROCE PRO GRAM O DO WNTO FI LE FO R G IF OTO M NIL O R CKED CORD TO N VAR PA RE THE UNTIL SE OD OF SET CA D LAB NOT DURE BE RE PEAT TY PE W HILE WI TH Estas palabras no pueden ser usadas como identificadores (siguiente tópico) ya que cada una de ellas tiene una función definida en Turbo Pascal. Identificadores Los identificadores son palabras que representan constantes, variables, tipos de datos, procedimientos, funciones y algunos otros datos. Existen dos tipos de identificadores: los predefinidos de Turbo Pascal y los definidos por el programador. Algunos de los identificadores predefinidos son: integer, real, byte, single, ... Los identificadores definidos por el programador son los elementos del lenguaje tales como variables, procedimientos, funciones, etc. Un identificador es una secuencia de 1 a 127 caracteres, que inicia con una letra, no tienen espacios ni símbolos: &, !, *, etc. y no es alguna palabra reservada. Para el Turbo Pascal no existen diferencias entre mayúsculas y minúsculas, así que a un identificador denominado "valor" se le puede referir como "VALOR" o "VaLoR". 1 Todo identificador en Pascal debe ser definido previamente a su utilización. Tipos de datos El manejo de la información en Turbo Pascal se realiza mediante diferentes clases de datos. I Números enteros sin parte decimal. nteger C Caracteres del código ASCII har B Pueden contener los valores de falso o verdadero oolean R Números que pueden incluir una parte decimal eal En una secuencia de caracteres que se trata como un S tring solo dato. Variables y constantes Los tipos de datos que manejaremos en nuestro programa pueden ser de dos clases: variables o constantes. Como su nombre lo indican las variables pueden cambiar a lo largo de la ejecución de un programa, en cambio las constantes serán valores fijos durante todo el proceso. Un ejemplo de una variable es cuando vamos a sumar dos números que serán introducidos por el usuario del programa, éste puede introducir dos valores cualesquiera y no sería nada útil restringirlo a dos valores predefinidos, así que dejamos que use los valores que el necesite sumar. Ahora, si nuestro programa de operaciones matemáticas va a utilizar el valor de PI para algunos cálculos podemos definir un identificador PI con el valor de 3.1415926 constante, de tal forma que PI no pueda cambiar de valor, ahora en lugar de escribir todo el número cada vez que se necesite en nuestro programa, solo tenemos que escribir PI. Las variables y constantes pueden ser de todos los tipos vistos anteriormente: numéricos tanto enteros como reales, caracteres, cadenas de caracteres, etc. Comentarios Es posible introducir comentarios en nuestro programa que sirvan únicamente para mejorar la comprensión del código fuente. Un comentario no es tomado en cuenta al momento de la compilación del programa y es de enorme importancia al momento de crearlo, modificarlo o mantenerlo. Existen dos formas de colocar comentarios en un programa de Turbo Pascal, entre llaves: {Comentario} o entre paréntesis y asteriscos: (*Comentario*). Estructura de los programas El lenguaje utilizado en Turbo Pascal es estructurado, lo que significa que cada programa requiere una forma específica de escritura para que sea entendido por el compilador. Todo programa cuenta con algunas partes o módulos los cuales son: 2 Cabece ra Declar aciones Progra ma La cabecera del programa unicamente lleva el nombre del programa. En la sección de declaraciones se le indica al compilador todos los identificadores y unidades que se utilizarán durante la ejecución del programa. En la sección del programa se escribe el código de instrucciones que se llevarán a cabo. Sentencia PROGRAM La sentencia PROGRAM es la declaración del nombre del programa. Consta de tres partes: la palabra reservada PROGRAM, a continuación un identificador utilizado como el nombre del programa y al final un punto y coma ";". Por ejemplo: PROGRAM suma_de_dos_numeros ; Esta declaración es siempre la primer linea en cualquier programa de Turbo Pascal. Declaración de unidades Las unidades son módulos independientes del programa que, aunque no son ejecutables por si mismos, pueden ser utilizados por el programa principal sin necesidad de reescribir el código que contienen. Para la utilización de estos "subprogramas" es necesaria su declaración. La palabra reservada USES cumple el propósito de declarar las unidades en el formato siguiente: USES crt, dos; Esta linea declara y habilita para su uso a la unidad crt y a la unidad dos Cada unidad que se declara debera estar separada de la siguiente por una coma. Al final de todas las unidades declaradas se deberá colocar un punto y coma ";". Declaración de constantes y variables Para declarar las constantes se utiliza la palabra reservada CONST seguida de un identificador al que se le dará un valor determinado, un signo de igual "=", el valor que recibirá el identificador y al final un punto y coma ";". Ejemplo: CONST pi = 3.1415926; De esta forma el identificador pi recibirá el valor de 3.1415926 y no será posible cambiarlo en el transcurso del programa. Es posible declarar varias constantes sucesivamente, puede ser una por renglón o varias en un solo renglón. Cuando se hace ésto, la palabra CONST solo se pone una sola vez como cabecera y a continuación todas las constantes por definir. Ejemplo: CONST PI = 3.1415926; Nombre = 'Juan Gutiérrez'; Unidad = 1; 3 Otra forma de escribir lo mismo es así: CONST PI = 3.1415926; Nombre = 'Juan Gutiérrez'; Unidad = 1; Pero por cuestiones de legibilidad es preferible la primera opción. La declaración de variables se lleva a cabo de la misma forma, solo que en lugar de la palabra CONS utilizamos la palabra VAR, y en lugar de "= valor;", utilizamos : tipo , sustituyendo "tipo" por alguna clase válida de datos en Turbo Pascal. Ejemplo: VAR Num_entero : Integer; Nombre : String; Programa principal Despues de haber realizado todas las declaraciones se puede iniciar con el programa principal. El programa principal inicia con la palabara reservada BEGIN y termina con la palabra END., esta última con un punto al final. Cada linea de código, enunciado, sentencia o instrucción completa que se escriba deberá terminar con un punto y coma ";". Solo se omitirá el punto y coma cuando se utiliza la palabra reservada ELSE. Aunque puede también omitirse si la siguiente expresión es END o UNTIL. Asignación o igualación La operación de asignación es una de las más utilizadas en Turbo Pascal ya que nos permite darle un valor determinado a las variables que declaramos en el programa o lo que es lo mismo, igualarla a algún valor determinado. El símbolo utilizado para la operación es los dos puntos seguidos por un signo de igual := , a la izquierda de dicho símbolo se coloca el identificador al que se le asignará un nuevo valor y a la derecha se colocará un identificador o algún valor directo que se almacenará en el primer identificador. Ejemplo: Nombre := 'Juan Pérez'; {Nombre guardará la cadena "Juan Pérez"} Resta := Numero1 - Numero2; {Resta gurdará el resultado de la resta de Numero2 a Numero1} Area := (Base*Altura)/2; {Obtiene el area de un triangulo y la guarda en el identificador Area} Salida de datos a la pantalla Las instrucciones que permiten mostrar datos en la pantalla de la computadora son: Write y WriteLn. La sintaxis de los procedimientos es la siguiente: Write (indentificadores); WriteLn (indentificadores); 4 Donde los identificadores son aquellos que contienen la información que se desea mandar a la pantalla. Es posible utilizar varios de ellos por cada instrucción Write o WriteLn, unicamente se separan unos de otros por comas ",". Ejemplo: Write (Nombre, ApellidoP, ApellidoM); Esta linea de código desplegará consecutivamente los contenidos de los identificadores Nombre, ApellidoP y ApellidoM. En caso de que la variable Nombre almacenara el valor 'Rodrigo ', la variable ApellidoP 'González ' y la variable ApellidoM 'García', el resultado en pantalla sería: Rodrigo González García Podemos obtener el mismo resultado si utilizamos la siguiente estructura: Write (Nombre); Write (ApellidoP); Write (ApellidoM); Entrada de datos desde teclado Las instrucciones estandar de Turbo Pascal para obtener datos desde el teclado son Read y ReadLn. La sintaxis de estas instrucciones es muy parecida a la de Write y WriteLn: Read (Identificador); El identificador puede ser cualquier variable definida previamente, NO puede ser una constante. Puede ser también un conjunto de variables, separadas entre comas, en este caso se guardara el primer valor dado antes del [Enter] en el primer identificador proporcionado, luego el segundo y así sucesivamente hasta el último identificador. La diferencia en el uso de la instrucción Read con respecto a ReadLn es que en la primera, si se le dan mas datos de los que se introducirán se guardan en un buffer y se usarán en la siguiente instrucción Read o ReadLn del programa, en cambio ReadLn ignora todo dato posterior a los que esten definidos en la instrucción. En caso de que se le indique a Read o ReadLn que lea un tipo específico de valor, y se le proporcione otro diferente se generará un error y se detendrá la ejecución del programa. Tipos de datos Un programa debe ser capaz de manejar diferentes tipo de datos, como pueden ser números enteros, reales, caracteres, cadenas de caracteres, etc. Para lograr el manejo de toda esta información Turbo Pascal proveé diferentes tipos de datos para los identificadores que se utilizarán. Algunos de los más importantes se citan en seguida: Tipos enteros En esta categoría Turbo Pascal cuenta con 5 tipos diferentes, cada uno abarca un rango específico de valores y utilizan una diferente cantidad de memoria dependiendo de ese rango. Naturalmente el trabajar con rangos menores nos ofrece una mayor velocidad y menor espacio en memoria, pero si se utilizan enteros largos se cuenta con mayor presición. Los tipos de enteros en Turbo Pascal son: Ti po Rango de valores que acepta 5 In -32,768 a 32,767 teger W 0 a 65535 ord S -128 a 127 hortInt B 0 a 255 yte -2,147,483,648 L a 2,147,483,648 ongInt Tipos reales Los números reales son aquellos que cuentan con una parte decimal. En Turbo Pascal contamos con varios tipos de datos reales, pero no se puede utilizar, mas que el tipo real, en máquinas que no cuenten con un coprocesador matemático. Los tipos de datos reales son: Tip o acepta Re al Si ngle Do uble Ex tended Co mp Rango de valores que 2.9E-39 a 1.7E38 1.5E-45 a 3.4E38 5.0E-324 a 1.7E308 1.9E-4851 a 1.1E4932 -9.2E18 a 9.2E18 En este tipo de datos se utiliza la notación científica, que es igual a la de las calculadoras, el dígito que se encuentra a continuación de la E representa la potencia a la que se elevará el número 10 para multiplicarlo por la cantidad a la izquierda de dicha E: Tipo carácter (Char). El tipo Char depende del código de caracteres empleado por la máquina. El más utilizado es el código ASCII. Una variable o constante tipo Char puede contener un solo carácter especificado entre apóstrofes. Ejem. 'a' 'M' Tipo Lógico (Boolean). Pueden tomar dos valores True (verdadero) False (falso). El identificador estándar boolean define una variable de este tipo. Tipo Cadena (String). 6 Una cadena (string) es una secuencia de caracteres que tiene una longitud máxima de 255 caracteres. Los caracteres que componen la cadena se delimitan con apóstrofes. Ejem. 'abcd' longitud de la cadena 4 '' cadena vacía o nula. TIPOS DEFINIDOS POR EL USUARIO. Existen dos diferentes tipos de datos simples definidos por el usuario: enumerados y subrago. Tipos enumerados. Los tipos enumerados se componen de una lista de identificadores encerrados entre paréntesis y separados por comas. Ejem. Type Estaciones = (primavera, verano, otoño, invierno); Colores (rojo, amarillo, verde, azul, violeta); Los tipos enumerados son ordinales ya que llevan asociado cada uno un número entero, empezando por el primero, al que se le asigna el O, al segundo un 1, y así sucesivamente, por lo que no es independiente el orden de declaración. Un valor de tipo enumerado no puede pertenecer a dos declaraciones de tipo distintas y no pueden leerse desde teclado, ni escribirse en pantalla. Tipos subrango. Es un subconjunto de un tipo ordinal (enteros, boolean, carácter y enumerado) que se especifica indicando el primero y el último elemento del conjunto. Ejem. 1 Type Identificador=primerelemento..ultimoelemento; Ejem. 2 Type Fecha= 1..31; Var Dia: Fecha; Los tipos enteros, carácter, booleanos, enumerados y subrango se denominan tipos ordinales. Un tipo ordinal representa una secuencia ordenada de valores individuales, a los que se puede aplicar los conceptos de predecesor y sucesor. En cada tipo de datos ordinales hay un primer valor y un último valor. ESTRUCTURAS DE CONTROL. Se denominan estructuras de control a aquellas que determinan qué instrucciones deben ejecutarse y qué número de veces. Existen dos tipos de estructuras de control: alternativas o de selección y repetitivas o de iteración. ESTRUCTURAS ALTERNATIVAS. Son aquellas que bifurcan o dirigen la ejecución de un programa hacia un grupo de sentencias u otro dependiendo del resultado de una condición. Las dos sentencias alternativas de Turbo Pascal son: Sentencia alternativa simple IF-THEN-ELSE Sentencia alternativa múltiple CASE-OF. IF THEN ELSE. Formato: 7 IF (expresión lógica o booleana) THEN Sentencial (simple o compuesta) ELSE Sentencia2 (simple o compuesta); Ejem. IF n>O then Writeln (`Número positivo') ELSE Writeln (`Negativo o cero'); No puede existir un punto y coma inmediatamente antes de una palabra ELSE ya que sería interpretado como final de IF. CASE OF Formato: CASE (expresión o variable) OF (lista de constantes1):(sentencia1); (lista de conslantes2):(sentencia2); (lista de constantes3):(senteneia3); ... (lista de constantesN):(sentenciaN); ELSE (SENTENCIA) ... END; Ejem. Program menu; Var Numerodia: integer; Begin Write('introduzca el ordinal de un día laborable de la semana:') Readln (numerodia); Write (`Hoy es '); Case numerodia Of 1:Writeln ('Lunes'); 2:Writeln ('Martes'); 3:Writeln ('Miercoles'); 4:Writeln ('Jueves'); 5:Writeln ('Viernes'); 6:Writeln ('Sábado') Else Writeln ('¡¡¡Domingo!!! No es día laborable'); End. 8 ESTRUCTURAS REPETITIVAS. Son aquellas que crean un bucle (repetición continua de un conjunto de instrucciones) en la ejecución de un programa respecto de un grupo de sentencias en función de una condición. Las tres sentencias repetitivas de Turbo Pascal son: SENTENCIA WHILE Indica al ordenador que se ejecuten una o más sentencias mientras se cumpla una determinada condición. La condición viene determinada por una variable o expresión booleana. Formato: WHILE condición DO BEGIN (sentencia1); ... (sentenciaN); END; WHILE condición DO (sentencia); Esta sentencia comprueba inicialmente si la condición es verdadera. Si la condición es verdadera se ejecutan las sentencias mientras la condición de su enunciado sea verdadera y finaliza cuando la condición es falsa. Dado que la condición puede ser falsa inicialmente, es decir antes de comenzar el bucle, habrá casos en que el bucle no se ejecute. Características del bucle WHIILE: Se ejecuta mientras la condición sea verdadera, y dentro del bucle debe existir, por lo menos, una sentencia que modifique el valor de la variable o expresión, de lo contrario se puede producir una situación de bucle infinito. Si la expresión lógica es falsa al comenzar el bucle, éste no se realizará. Ejemplo. Escribir los N primeros números naturales, donde N es un valor introducido por el usuario. Program escribeenteros; Var N,contador: integer; Begin Write ('Introduzca numero maximo de enteros: '); Readln (N); Contador:=1; While contador<=N do Begin Write (contador:5); Contador:=contador+1; End; Writeln; 9 Writeln ('Fin de programa. Contador = ',contador); End. SENTENCIA REPEAT UNTIL Ejecuta las sentencias comprendidas entre las palabras reservadas REPEAT y UNTIL hasta que la expresión o variable sea verdadera. Formato: REPEAT begin (Sentencia); (Sentencia); ... end; UNTIL condición; Características del bucle REPEAT: Se ejecutan siempre una vez, por lo menos, y la terminación del bucle se produce cuando el valor de la expresión lógica o condición de salida es verdadera. Se ejecuta hasta que la expresión es verdadera, es decir, se ejecuta mientras la expresión sea falsa. Ejemplo. El mismo que con la sentencia WHILE. Program escribeenteros; Var N,contador:integer; Begin Write ('Introduzca número máximo de enteros: '); Readin (N); Contador:= O; Repeat Contador:=contador+1; Write (contador:5) Until contador = N; Writeln ('Fin de programa. Contador = ',contador) End. SENTENCIA FOR Repite la ejecución de una o varias sentencias un número fijo de veces. previamente establecido. Necesita una variable de control del bucle que es necesariamente de tipo ordinal, ya que el bucle se ejecuta mientras la variable de control toma una serie consecutiva de valores de tipo ordinal, comprendidos entre dos valores extremos (inferior y superior). Formato ascendente: 10 FOR variablecontrol:=valorinicial TO valorfinal DO (sentencia); Formato descendente: FOR variablecontrol:=valorincial DOWNTO valorfinal DO (sentencia); donde (sentencia) puede ser una sentencia simple o compuesta. Ejemplo: El mismo que con la sentencia WHILE. Program escribeenteros; Mar N,contador: integer; Begin Write ('Introduzca numero maximo de enteros: '); Readln (N); For contador:=1 to n do Write (contador:5); Writeln End. Características del bucle FOR: Aunque a primera vista pueda resultar más atractivo FOR, existen limitaciones en su aplicación ya que en el bucle FOR siempre se incrementa o decrementa (de uno en uno) los valores de la variable de control de bucle y no de dos en dos o de tres en tres, o con valores fraccionarios. El número de iteraciones de un bucle FOR siempre es fijo y se conoce de antemano: Valor final - Valor inicial +1. CUÁNDO UTILIZAR WHILE/REPEAT/FOR? Utilizar la sentencia o estructura FOR cuando se conozca el número de iteraciones, y siempre que la variable de control de bucle sea de tipo ordinal. Utilizar la estructura REPEAT-UNTIL cuando el bucle se realice por lo menos una vez. En todos los demás casos utilizar la sentencia WHILE. 11