1. Lenguaje Pascal Se procederá a la comparación de las estructuras de programación utilizadas en pseudocódigo con las respectivas en lenguaje Pascal. Para ello, se seguirá de manera análoga a la descripción del pseudocódigo presentada en la parte práctica de la materia. 2. Módulos de un Programa PROGRAM USES CONST TYPE VAR PROCEDURES Y FUNCTIONS BEGIN END. { documentación } PROGRAMA CONSTRANTES TIPOS ESTRUCTURADOS VARIABLES PROCEDIMIENTOS Y FUNCIONES HACER FIN HACER FIN PROGRAMA /* documentación */ 3. Tipos de Datos más utilizados Integer Real Char String Boolean Entero Real Caracter[1] Caracter[n] /* tal que: n >= 1 */ Booleano 4. Declaración de Variables En los tipos de datos primitivos de Pascal, la precisión está data por el tipo de dato implícitamente, de manera que cada tipo de dato posee un rango de valores que puede tomar y no se permite la definición por parte del programador de su precisión. A continuación algunos rangos: Integer: -32.768 a 32.767 Real: 2.9-39 a 1.7 38 Char: un caracter, similar a string[1]. String: cadena de caracteres, desde 0 a 255 como máximo. Boolean: valores booleanos, admitiendo true y false. Sergio R. Vaquero Página 1 / 4
5. Asignación de valor a una variable 5.1. Asignación con valores del ambiente Asignación caracter: nombre:= 'Flor'; sigue:= 'Si'; nombre:= 'Flor' sigue:= 'Si' Asignación constante: pi:= 3.1416; pi:= 3,1416 Asignación aritmética: porcentaje:= (parcial/total) * 100; porcentaje:= (parcial/total) * 100 Asignación lógica: ok:= true; marca:= false; ok:= verdadero marca:= falso Asignación memoria a memoria: perim:= 2 * pi * radio; perim:= 2 * pi * radio 5.2. Asignación de valores externos al ambiente (operaciones de entradas de datos) Read(NombreDeLaVariable); Read(suma); Read(a, b, c); Leer: NombreDeLaVariable Leer: suma Leer: a, b, c En Pascal también puede utilizarse ReadLn en vez de Read, consiguiendo con este último que automáticamente se avance a la línea siguiente de la pantalla una vez efectuada la lectura. 6. Mostrando el valor contenido por la variable Write(NombreDeLaVariable); Write(suma); Write('El valor total: ', suma); Imprimir: NombreDeLaVariable Imprimir: suma Imprimir: 'El valor total es: ', suma Al igual que con la lectura de variables, la instrucción Write puede reemplazarse por WriteLn y se avanzará a la siguiente línea en la pantalla una vez efectuada la impresión. Sergio R. Vaquero Página 2 / 4
7. Operaciones entre variables y/o constantes numéricas Los operadores se utilizan idénticamente a pseudocódigo, excepto la potenciación/radicación, ya que en Pascal sólo existe potencia cuadrada y raíz cuadrada. Un ejemplo de este último caso: radio:= SQR(3.5); hip:= SQRT(SQR(lado1) + SQR(lado2)); radio:= 3.5**2 hip:= (lado1**2 + lado2**2)**(1/2) Un programa completo en Pascal: PROGRAM Ejemplo; VAR a,b: integer; c,d: real; BEGIN a:= 4; b:= 2; c:= 2.1; d:= 3.3; a:= b * 2; { asignación correcta } c:= b + a; { asignación correcta } a:= d * a; { asignación incorrecta } END. PROGRAMA Ejemplo VARIABLES a,b: entero 2 c,d: real 5,2 HACER a:= 4 b:= 2 c:= 2.1 d:= 3.3 a:= b * 2 /* asignación correcta */ c:= b + a /* asignación correcta */ a:= d * a /* asignación incorrecta */ FIN HACER FIN PROGRAMA 8. Funciones y Procedimientos preexistentes 8.1. Para variables numéricas Existen funciones y procedimientos no primitivos que provee el lenguaje Pascal para aplicar sobre variables numéricas. ABS(a: integer/real): integer/real Devuelve el valor absoluto en un número con el mismo tipo que su parámetro. INT(a: real): real Devuelve la parte entera de un número, pero en una variable real. TRUNC(a: real): integer Devuelve la parte entera de un número, pero en una variable entera. ROUND(a: real): integer Devuelve el redondeo al valor más cercano. FRAC(a: real): real Devuelve la parte fraccionaria de un número. Sergio R. Vaquero Página 3 / 4
SQR(a: integer/real): integer/real Devuelve el cuadrado de un número con el mismo tipo que su parámetro. SQRT(a: integer/real): real Devuelve la raíz cuadrada de un número. RANDOM(a: integer): integer Devuelve un número generado aleatoriamente, mayor o igual a cero y menor al parámetro. El parámetro debe ser mayor o igual a cero. Antes de ejecutar random, colocar la instrucción randomize; para inicializar el generador de números. 8.2. Para variables de tipo string o char Concatenación: se realiza idénticamente que en pseudocódigo, mediante el operador suma (+). Funciones y Procedimientos preexistentes: copy(cadena: string; inicio,cantidad: integer): string Devuelve una cadena como resultado, similar a la función de pseudocódigo subcad. length(cadena: string): integer Devuelve la cantidad de caracteres de una cadena de texto, similar al long de pseudocódigo. upcase(caracter: char): char Devuelve un caracter en su formato de mayúscula. Esto es interesante en Pascal, ya que al leer texto desde teclado, se diferencian las mayúsculas de las minúsculas; es decir, no es lo mismo Si que si. Un ejemplo: b:= 'hoy es martes'; c:= copy(b, 5, 2); { c = "es" } d:= copy(b, 8, length(b) 7); { d = "martes" } b:= 'hoy es martes' c:= subcad(b, 5, 2) /* c = "es" */ d:= subcad(b, 8, long(b) 7) /* d = "martes" */ Sergio R. Vaquero Página 4 / 4