0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
232 Ansichten17 Seiten
El documento describe la estructura básica de un programa en Pascal, incluyendo las secciones PROGRAM, USES, CONST, TYPE, VAR, y las funciones y expresiones que se pueden utilizar. Explica los tipos de datos fundamentales como enteros, reales, lógicos y caracteres, y cómo declarar variables y constantes.
El documento describe la estructura básica de un programa en Pascal, incluyendo las secciones PROGRAM, USES, CONST, TYPE, VAR, y las funciones y expresiones que se pueden utilizar. Explica los tipos de datos fundamentales como enteros, reales, lógicos y caracteres, y cómo declarar variables y constantes.
El documento describe la estructura básica de un programa en Pascal, incluyendo las secciones PROGRAM, USES, CONST, TYPE, VAR, y las funciones y expresiones que se pueden utilizar. Explica los tipos de datos fundamentales como enteros, reales, lógicos y caracteres, y cómo declarar variables y constantes.
Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Codificacin de algoritmos en Turbo Pascal
Materia: Algoritmos y Estructuras de Datos
El Pascal plantea la codificacin de acuerdo a la siguiente estructura:
PROGRAM Identificador_NN;
USES
CONST
TYPE
VAR
PROCEDURE Identificador_NN (parmetros); . PROCEDURE Identificador_NN (parmetros); . FUNCTION Identificador_NN (parmetros): TipoIdentificador_NN; ............ FUNCTION Identificador_NN (parmetros): TipoIdentificador_NN;
BEGIN ... END.
PROGRAM: A continuacin de la palabra PROGRAM, se indica el nombre del programa. El nombre de un programa es un identificador con las mismas caractersticas que los que utilizaremos para definir nombres de constantes, tipos, variables, procedimientos, funciones, unidades, programas y campos de registros. Para definir un identificador hay que tener en cuenta las siguientes caractersticas: 1. Es una secuencia de 63 caracteres como mximo. 2. El primer carcter debe ser una letra (A..Z, a..z) o un carcter de subrayado ( _ ). 3. A partir del segundo carcter se pueden utilizar letras, nmeros, y el carcter de subrayado ( _ ). 4. No estn permitidas las letras acentuadas (, , , , ), con diresis (), ni las siguientes (, ). 5. Pascal no diferencia entre letras maysculas y minsculas. 6. Es recomendable definir identificadores que den una idea de lo que representan. En el caso del identificador del programa, si por ejemplo se tratara de un algoritmo que realiza la inscripcin de alumnos a la facultad, podra denominarse inscribe. Una buena eleccin de los identificadores favorece la lectura y comprensin de un programa. 7. No se pueden utilizar como nombres de identificadores palabras reservadas del Pascal.
USES: En esta seccin se indican las bibliotecas (unidades) que utilizar el programa. Pascal posee una lista de procedimientos y funciones estndar, por lo que si se desean utilizar en un programa funciones adicionales, se deber indicar en la seccin USES el nombre de la/s bibliotecas que las contienen. Ejemplo: El comando para borrar la pantalla: CLRSCR no es una funcin estndar, est contenida en la biblioteca CRT, por lo que si se desea utilizar dicho comando, ser necesario indicar el uso de esta biblioteca, es decir: USES CRT;
CONST: En esta seccin se declaran las constantes del programa. Son similares a las variables, pero a diferencia de estas mantienen el valor que se les asigna en el momento de su declaracin, durante toda la ejecucin del programa. Edicin Preliminar (bajo revisin) Pgina 1 de 1
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Ejemplo: Supongamos un programa, en el que se procesan Notas de alumnos de un establecimiento, y sobre la base de estas se realizan distintas estadsticas con relacin a la cantidad de alumnos que aprobaron o desaprobaron materias. Existir un valor que permanecer constante durante toda la ejecucin del programa, y es la Nota mnima con la que se aprueba una materia. Si declaramos una constante con este valor y la utilizamos a lo largo del programa en todas las sentencias donde se desee determinar si un alumno aprob o no una materia, en el caso de que la misma cambiara, bastara simplemente con reemplazar el valor anterior por el nuevo en un slo lugar del programa, es decir en la declaracin:
CONST NotaMin := 4;
El Pascal predefine automticamente algunas constantes como (PI 3.1415...). Las constantes pueden almacenar distintos tipos de datos (enteros, reales, carcter, etc.), y slo podrn ser utilizadas en expresiones que permitan su uso.
TYPE: Si bien Pascal tiene sus tipos de variables estndar (INTEGER, REAL, STRING, etc.), en esta seccin podemos declarar nuestros propios tipos, para utilizarlos en la definicin de variables, como as tambin de estructuras de datos ms complejas (registros, arreglos, etc.). Ms adelante volveremos a esta seccin para detallar su uso.
VAR: En esta seccin se declaran la totalidad de las variables estticas que va a utilizar el programa a codificar.
Los tipos predefinidos que provee el Pascal para la declaracin de variables son los siguientes:
Variables Numricas de Tipo Entero
Tipo de Variable Rango de Valores Espacio en Memoria Formato BYTE 0..255 1 byte 8 bits sin signo SHORTINT -128..127 1 byte 8 bits con signo WORD 0..65535 2 bytes 16 bits sin signo INTEGER -32768..32767 2 bytes 16 bits con signo LONGINT -2147483648..2147483647 4 bytes 32 bits con signo
Para clarificar el rango de valores de cada uno de los tipos de variables tomemos como ejemplo el tipo INTEGER:
16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01
Las variables de tipo INTEGER utilizan dos bytes, lo que equivale a 16 bits. Como el tipo INTEGER expresa nmeros con signo, el bit 16 se utiliza para indicar el mismo (0 positivos, 1 negativos), quedando para representar los nmeros que se almacenan en este tipo de variables 15 bits. Es decir, se pueden expresar valores del orden de 2 15 1 = 32767 que llega a 32768 para los negativos, por una forma particular en que se almacenan los negativos. Edicin Preliminar (bajo revisin) Pgina 2 de 2
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Variables Numricas de Tipo Real. A diferencia de las variables enteras se almacenan en memoria como mantisa y exponente (ambos con signo).
Tipo de Variable Rango de Valores Dgitos significativos Espacio en Memoria SINGLE 1.5e-45..3.4e38 7 / 8 dgitos 4 bytes REAL 2.9e-39..1.7e38 11 / 12 dgitos 6 bytes DOUBLE 5.0e-324..1.7e308 15 / 16 dgitos 8 bytes EXTENDED 3.4e-4932..1.1e4932 19 / 20 dgitos 10 bytes COMP -9.2e18..9.2e18 19 / 20 dgitos (slo enteros) 8 bytes
Se almacenan en memoria en forma semejante a la descripta para el tipo INTEGER, pero en este caso algunos bits son utilizados para la mantisa y otros para el exponente.
Variables de Tipo Lgico
BOOLEAN: Toman valores booleanos (verdadero/falso), expresados como TRUE y FALSE y ocupan 1 byte de memoria.
Variables de Tipo Carcter
Tipo de Variable Cantidad de Caracteres Espacio en Memoria STRING 255 caracteres 256 bytes STRING[X] X caracteres X + 1 bytes CHAR 1 carcter 1 byte
Los caracteres que se deseen almacenar en este tipo de variables, deben ser encerrados entre apstrofes. Ejemplo: A:= Ejemplo
Declaracin de Variables: La declaracin de una variable define el tipo de dato que esta va a almacenar. El Pascal no asigna un valor inicial como ocurre con otros lenguajes.
VAR a: STRING[20]; * Declara la variable a como STRING de 20 caracteres. cont1, cont2: INTEGER; * Declara las variables cont1 y cont2 de tipo INTEGER. tot1, tot2: REAL; * Declara a las variables tot1 y tot2 de tipo REAL.
Expresiones
Expresiones Aritmticas: Estn constituidas por variables y/o constantes relacionadas entre s por los siguientes operadores aritmticos.
Operador Descripcin Ejemplo Observacin Prioridad * Multiplicacin A * B Si los dos operandos son enteros el resultado es entero, en caso contrario real (1). / Divisin A / B El resultado es real. DIV Cociente de una divisin entera A DIV B Los dos operandos deben ser enteros. 9 DIV 2, resulta 4. MOD Resto de una divisin entera A MOD B Los dos operandos deben ser enteros. 9 MOD 2, resulta 1. 1 + Suma A + B (1) - Resta A B (1) 2 Edicin Preliminar (bajo revisin) Pgina 3 de 3
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Cuando el smbolo + se aplica a variables de tipo carcter, recibe el nombre de concatenacin. Ejemplo: X:= A + B, entonces X = AB
La evaluacin de las expresiones se realiza efectuando primero las operaciones de mayor prioridad (1), continuando con las de menor (2). En el caso de producirse igualdad de prioridades, se procede de izquierda a derecha. Se pueden utilizar juegos de parntesis ( ), para forzar prioridades pues tienen la mxima.
Ejemplo: A * (B - C)
Los resultados parciales que se obtienen durante la evaluacin dependen de los operandos participantes de la misma, siendo igual al del operando que tiene un tipo que posee mayor precisin: a) Si ambos son BYTE, el resultado es BYTE, excepto que el uso del operador de REAL. b) Si uno es BYTE y el otro INTEGER, el resultado es INTEGER, excepto que el uso del operador de REAL. c) Si uno es entero y el otro REAL, el resultado es REAL.
El Pascal dispone adems, de un conjunto de funciones estndar que permiten realizar operaciones de gran utilidad. Son referenciadas mediante un identificador seguido entre parntesis de un argumento, que es una expresin numrica, sobre la cual una vez evaluada acta la funcin. El resultado de la evaluacin del argumento debe ser de un tipo admitido por la funcin. Las funciones trigonomtricas trabajan con ngulos expresados en radianes.
Funcin Descripcin Tipo del argumento Tipo del resultado Ejemplos ABS(x) Valor absoluto Entero o Real Igual al del argumento ABS(-5) 5 ABS(-7.3) 7.3 ARCTAN(x) Arco tangente Real Real ARCTAN(1) PI / 4 ARCTAN(-1) -PI / 4 COS(x) Coseno del ngulo Real Real COS(PI) -1 EXP(x) Exponencial: e x Real Real EXP(1) 2.71 FRAC(x) Parte decimal Real Real FRAC(2.54) 0.54 INT(x) Parte entera Real Real INT(2.54) 2.0 LN(x) Logaritmo natural: ln x Real > 0 Real LN(2.71.) 1 LN(EXP(1)) 1 ROUND(x) Entero ms prximo Real Longint ROUND(1.5) 2 ROUND(-1.2) -1 ROUND(-1.6) -2 SIN(x) Seno del ngulo Real Real SIN(PI) 0 SQR(x) Cuadrado: x 2 Entero o Real Igual al del argumento SQR(5) 25 SQR(3.0) 9.0 SQRT(x) Raz cuadrada Real 0 Real SQRT(25.0) 5.0 TRUNC(x) Parte entera Real Longint TRUNC(2.54) 2
Expresiones Lgicas: Estas expresiones se utilizan en la comparacin de datos y en el cumplimiento o no de determinadas condiciones o situaciones. Se pueden comparar datos del mismo tipo (numricos, carcter, lgicos). Edicin Preliminar (bajo revisin) Pgina 4 de 4
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Operadores relacionales:
Operador Descripcin Ejemplo Observacin = Igual A = B <> Distinto A <> B > Mayor A > B < Menor A < B >= Mayor o igual A >= B <= Menor o igual A <= B Todos los operadores tienen la misma prioridad y esta es menor que la de los numricos. Si se desea forzar su prioridad, debern utilizarse juegos de parntesis, tal como se indicara en la evaluacin de las expresiones numricas.
Toda comparacin devuelve un valor lgico TRUE o FALSE (Verdadero o Falso, se cumple o no se cumple). Si se comparan datos de tipo lgico, tener presente que FALSE < TRUE. Si se comparan datos de tipo carcter, se comienza con el primer carcter de cada dato, de ser iguales, el segundo, luego el tercero, y as sucesivamente, hasta determinar el cumplimiento o no de la condicin testeada. Para este tipo de datos, Pascal determina que un carcter es menor o mayor a otro basndose en sus valores ASCII, los cuales se detallan en la siguiente tabla, universalmente reconocida.
0 32 64 @ 96 ` 128 160 192 224 1 33 ! 65 A 97 a 129 161 193 225 2 34 66 B 98 b 130 162 194 226 3 35 # 67 C 99 c 131 163 195 227 4 36 $ 68 D 100 d 132 164 196 228 5 37 % 69 E 101 e 133 165 197 229 6 38 & 70 F 102 f 134 166 198 230 7 39 71 G 103 g 135 167 199 231 8 40 ( 72 H 104 h 136 168 200 232 9 41 ) 73 I 105 i 137 169 _ 201 233 10 42 * 74 J 106 j 138 170 202 234 11 43 + 75 K 107 k 139 171 203 235 12 44 , 76 L 108 l 140 172 204 236 13 45 - 77 M 109 m 141 173 205 237 14 46 . 78 N 110 n 142 174 206 238 15 47 / 79 O 111 o 143 175 207 239 16 48 0 80 P 112 p 144 176 208 240 17 49 1 81 Q 113 q 145 177 209 241 18 50 2 82 R 114 r 146 178 210 242 19 51 3 83 S 115 s 147 179 211 243 20 52 4 84 T 116 t 148 180 212 244 21 53 5 85 U 117 u 149 181 213 245 22
54 6 86 V 118 v 150 182 214 246 23 55 7 87 W 119 w 151 183 215 247 24 56 8 88 X 120 x 152 184 216 248 25 57 9 89 Y 121 y 153 185 217 249 26 58 : 90 Z 122 z 154 186 218 250 27 59 ; 91 [ 123 { 155 187 219 251 Edicin Preliminar (bajo revisin) Pgina 5 de 5
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Los 256 valores (contando el cero) son los que pueden expresarse con un byte, dado que el byte est formado por 8 bits, resulta 2 8 = 256 valores posibles. Si observamos esta tabla detenidamente podemos sacar algunas conclusiones: Los cdigos del 0 al 31, no pueden ser representados grficamente, indican movimientos de cursor, pitidos (7), retorno del cursor al principio del rengln, etc. En orden numrico creciente, los caracteres que usualmente se utilizan, estn en primer lugar el espacio en blanco, luego los dgitos, las letras maysculas y por ltimo las letras minsculas. Las letras acentuadas, la y dificultan un ordenamiento alfabtico, pues tienen un valor ASCII que no las ubicara en la posicin correcta. Ejemplo: Si ordenamos en forma ascendente, la palabra pera resultara antes que ato. Utilizando adecuadamente los valores comprendidos entre el 179 y el 218, se puede mejorar notoriamente el diseo de las pantallas:
Para la impresin mediante una impresora de matriz de puntos son importantes los valores ASCII 10(Mueve el cabezal al principio del rengln siguiente), 12 (Expulsa la hoja), 13 (Mueve el cabezal al principio del rengln actual) y 32 (Espacio en blanco).
Operadores booleanos: Slo actan con operandos booleanos.
Si A, B, C y D son variables booleanas y contienen: A TRUE B TRUE C FALSE D FALSE
Operador Descripcin Ejemplo Observaciones Prioridades NOT Negacin NOT A FALSE NOT C TRUE Opera con un nico operando y da como resultado la inversa de su valor. 1 AND Conjuncin A AND B TRUE B AND C FALSE Opera con dos operandos y da como resultado TRUE, slo si ambos contienen TRUE. 2 OR Adicin A OR B TRUE A OR C TRUE B OR D TRUE C OR D FALSE Opera con dos operandos y da como resultado TRUE, si por lo menos uno de ellos contiene TRUE. 3
En las expresiones lgicas, se puede utilizar parntesis ( ), para priorizar operaciones.
Ejemplo: 1) (A > B) AND (A > C) OR (B = C) 2) NOT (A > B) (equivalente a A <= B)
En el siguiente cuadro se unifican las prioridades de todos los operadores:
Edicin Preliminar (bajo revisin) Pgina 6 de 6
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Operadores Prioridad NOT 1 * , / , DIV , MOD , AND 2 + , - , OR 3 < , > , = , <= , >= , <> 4
PROCEDURE Identificador (Parmetros); BEGIN Cuerpo del Procedimiento END;
FUNCTION Identificador (Parmetros): TipoIdentificador; BEGIN Cuerpo de la Funcin END; .................
Tanto los procedimientos como las funciones que utiliza un programa se indican a continuacin de la seccin VAR. Para comenzar slo nos referiremos a los procedimientos y/o funciones sin parmetros ni variables locales, conceptos que detallaremos ms adelante. Estos procedimientos y/o funciones al igual que el programa tienen un cuerpo dnde se detallan las instrucciones que deben ejecutarse una a continuacin de otra. PROGRAM identificador;
Declaraciones, Procedimientos y Funciones
BEGIN Cuerpo del Programa END.
Es importante observar que el END del PROGRAM, es seguido por un punto . y no por ; como ocurre en los procedimientos, funciones y dems estructuras de Pascal a las que nos referiremos ms adelante.
Estructuras del Cuerpo del Programa:
ASIGNACION: Asigna a una variable, el resultado de una expresin. La expresin debe determinar un tipo de resultado del mismo del que ha sido definida la variable, o aceptable por la misma.
Variable Expresin
A:= B - 1; A:= 5; A:= C3 + R; A:= ABS(-5); Si A es una variable del tipo entero, las expresiones deben dar un resultado entero. Si A es una variable del tipo real, las expresiones pueden dar un resultado entero o real.
B: = Ejemplo; B debe ser una variable del tipo STRING[7] como mnimo.
C:= M < N; D:= TRUE; Edicin Preliminar (bajo revisin) Pgina 7 de 7
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Las variables C y D deben ser de tipo BOOLEAN.
Como se puede observar todas las sentencias finalizan con un ;. El ; es el smbolo que indica la finalizacin de una instruccin y es obligatoria su utilizacin cuando a continuacin comienza otra, siendo opcional cuando as no fuera, excepto que a continuacin hubiera un ELSE en cuyo caso est prohibido.
LECTURA (READ / READLN): Permite cargar informacin en variables, ingresada por teclado, o leda de un archivo.
Datos ingresados por teclado
Variable_1, Variable_2, ..., Variable_N
Datos ledos de un archivo
Registro Archivo
Se recomienda realizar la lectura desde teclado mediante READLN pues en algunos casos la sentencia READ tiene un comportamiento no deseable, debido a que su forma de operar es compleja para el uso que se le da en nuestra asignatura.
READ(Variable_1); ...... READ(Variable_N); o READLN(Variable_1, Variable_2, , Variable_N)
La lectura desde un archivo puede realizarse indistintamente con las sentencias READ o READLN.
READ(Archivo, Registro);
El concepto de registro, necesario para la lectura de archivos, ser explicado ms adelante en el desarrollo de la seccin TYPE.
EJEMPLOS: READLN(A); READLN(A, B, C);
VISUALIZACION / IMPRESION / GRABACION (WRITE / WRITELN): Permite visualizar datos por monitor, imprimir datos por impresora, o grabar informacin en archivos.
Visualizacin de datos con cambio de rengln (por monitor)
Variables, 'XXXXXX', ExpresionAritmetica
Impresin de datos con cambio de rengln (por impresora)
Edicin Preliminar (bajo revisin) Pgina 8 de 8
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Visualizacin / Impresin de datos sin cambio de rengln
Grabacin de datos en un archivo
La Codificacin es la siguiente:
1) WRITELN(A, B, C, xxxxxxx, F * 325); 2) WRITELN(LST, A, B, C, xxxxxxx, F * 325); 3) WRITE(A, B, C, xxxxxxx, F * 325); WRITE(LST, A, B, C, xxxxxxx, F * 325); 4) WRITE(Archivo, Registro);
Para poder indicar salida por impresora, es necesario incluir la biblioteca PRINTER en la seccin USES, es decir: USES PRINTER;
Ejemplos: WRITELN(El resultado es: , total:3, %); WIRTELN(El Cociente entre A y B es , A / B:6:2); WRITELN(2500); WRITELN; (Produce un salto de rengln)
Formato de impresin:
Se pueden utilizar a continuacin de cada tem (constante, variable de caracteres, o expresin numrica) en una lista de salida correspondiente a una impresin o visualizacin, colocando dos puntos : y a continuacin un valor entero. El valor indica la cantidad total de espacio asignado al tem, el cual se alinear a la derecha del mismo. Si el tem es numrico y tiene un valor real, podr repetirse a continuacin dos puntos : y un valor entero, que asignar en este caso espacio para los dgitos decimales. Es importante Notar que si no alcanzara el espacio los decimales se vern truncados, no as la parte entera. LST, Variables, 'XXXXX', Expresin Aritmtica Archivo Registro .........................................................................................................
En caso de imprimirse valores reales, si no se utiliza formato de impresin, se producir una salida en Notacin exponencial.
DECISION (IF THEN ELSE): Permite al programa realizar 2 acciones diferentes basndose en el resultado de una condicin representada por una Expresin Lgica (TRUE/FALSE).
Condicin Sentencia_1 Sentencia_2 Caso 1
IF Condicin THEN Sentencia_1 ELSE Edicin Preliminar (bajo revisin) Pgina 9 de 9
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Sentencia_2;
Si resulta verdadera la condicin se ejecuta la Sentencia_1, en caso contrario la Sentencia_2. Analizando la codificacin podemos decir que Pascal determina que la sentencia IF THEN ELSE ha terminado cuando encuentra el ;.
Caso 2
Condicin Sentencia_1
IF Condicin THEN Sentencia_1
Como se observa en el Caso 2, no es obligatorio que la sentencia IF THEN ELSE tenga codificada la parte ELSE si no se desea ejecutar alguna sentencia en caso de no cumplirse la condicin. Analizando el cdigo podemos observar que el compilador al encontrar un ; a continuacin de la Sentencia 1 determina que ha finalizado la sentencia IF THEN ELSE
Caso 3 Condicin Sentencia_1 Sentencia_2 Sentencia_3 IF Condicin THEN BEGIN Sentencia_1; Sentencia_2 END ELSE Sentencia_3;
En este caso como debemos ejecutar dos sentencias en caso de que se cumpla la condicin, resulta necesario transformar a estas en una sentencia compuesta encerrndolas entre un BEGIN y un END y no terminar con un ; por estar este prohibido precediendo a un ELSE. Condicin_1 Condicin_3 Sentencia_5 Sentencia_6 Sentencia_7 Condicin_2 Sentencia_1 Sentencia_2 Sentencia_3 Sentencia_4
IF Condicin_1 THEN BEGIN {Sentencia compuesta de IF Condicin_2 y Sentencia_4} IF Condicin_2 THEN BEGIN {Sentencia compuesta de Sentencia_1 y Sentencia_2} Edicin Preliminar (bajo revisin) Pgina 10 de 10
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Sentencia_1; Sentencia_2 END ELSE Sentencia_3; Sentencia_4 END ELSE IF Condicin_3 THEN Sentencia_5 ELSE BEGIN {Sentencia compuesta de Sentencia_6 y Sentencia_7} Sentencia_6; Sentencia_7 END; {Indica fin de la Sentencia IF Condicin_3, y a su vez fin de la Sentencia IF Condicin_1}
Obsrvese que el IF Condicin_3 THEN ELSE no es considerado como una sentencia compuesta (encerrado entre un BEGIN y un END), dado que el IF THEN ELSE se cuenta como una nica sentencia independientemente de la complejidad del mismo.
Caso 5 Condicin_1 Sentencia_2 Condicin_2 Sentencia_1
Este es un caso particular, ya que si se codificara simplemente, resultara:
IF Condicin_1 THEN IF Condicin_2 THEN Sentencia_1 ELSE Sentencia_2;
Dado que el compilador Pascal no tiene en cuenta las indentaciones, la Sentencia_2 se efectuar cuando la Condicin_2 resulte FALSE y no cuando sea FALSE la Condicin_1, pues aparea cada ELSE con el THEN anterior ms prximo correspondiente a una sentencia IF no terminada. Para salvar esta situacin, recurrimos a dar por terminado el IF Condicin_2 con un ELSE vaco, como se muestra a continuacin:
IF Condicin_1 THEN IF Condicin_2 THEN Edicin Preliminar (bajo revisin) Pgina 11 de 11
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Sentencia_1 ELSE (Para que la Sentencia_2, corresponda a la salida ELSE por FALSE de la Condicin_1) Sentencia 2;
SELECCIN MLTIPLE (CASE OF): Permite al programa realizar diferentes acciones sobre la base del contenido de un Selector. La expresin selector debe dar un resultado del tipo ordinal, es decir, integer (-32768 a 32767), char, boolean o enumerado.
CASE Selector OF ListaDeValores_1: Sentencia_1; ListaDeValores_2: Sentencia_2; ListaDeValores_3: Sentencia_3; ListaDeValores_4: Sentencia_4; ELSE Sentencia N END;
ListaDeValores_N puede contener constantes de tipo: integer, char, boolean o enumerado y se expresan:
Lista de Valores Coincidencia con alguno
1) valor1, valor2, valor3 De los 3 valores 2) valor1..valor2 De los valores comprendidos entre valor1 y valor2 3) valor1, valor2..valor3 Valor1 o los valores comprendidos entre valor2 y valor3 4) valor1, valor2 De los 2 valores tipo CHAR 5) valor1..valor2 De los valores tipo CHAR comprendidos entre valor 1 y valor 2 6) valor1..valor2, valor3 De los valores tipo CHAR valor1 o comprendidos entre valor2 y valor3
La lgica del CASE OF es la siguiente: En caso de que el valor del Selector coincida con alguno de los valores indicados en lista de valores 1, se ejecuta la sentencia 1, en caso de coincidir con alguno de los valores indicados en la lista de valores 2, se ejecuta la sentencia 2 y as sucesivamente. En caso de que no coincida con ninguna lista de valores, se ejecuta la sentencia indicada en la seccin ELSE. La seccin ELSE puede no ser indicada, en cuyo caso el compilador en caso de que el valor del Selector no coincida con ninguna lista de valores, no realizar ninguna accin. Edicin Preliminar (bajo revisin) Pgina 12 de 12
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
En cualquiera de las alternativas, la sentencia a ejecutar, puede ser simple o compuesta.
CASE Selector OF Lista de Valores 1: BEGIN Sentencia 1; Sentencia 2 END; Lista de Valores 2: Sentencia 3; ................... END;
ESTRUCTURA REPETITIVA EXACTA (FOR DO): Repite una sentencia simple o compuesta haciendo que una variable (Indice) de tipo ordinal (entera, char, boolean o enumerado) tome valores durante cada repeticin comprendidos entre un valor inicial (expresin Vi) y un valor de prueba (expresin Vp) (ambos del mismo tipo de Indice) con incrementos o decrementos de 1.
Vp Vi Indice Sentencia_1 Vp Vi Indice Sentencia_1 Sentencia_2
FOR Indice := Vi TO/DOWNTO Vp DO FOR Indice := Vi TO/DOWNTO Vp DO Sentencia_1; BEGIN Sentencia_1; Sentencia_2 END;
La sentencia se repetir N veces. En la primera iteracin la variable Indice almacenar el valor Vi, luego la incrementar (TO) o decrementar (DOWNTO) en 1, y as sucesivamente hasta finalizar con el valor Vp en la ltima iteracin. Si se utiliza TO y es Vi > Vp o DOWNTO y es Vi < Vp, no se efecta ninguna iteracin.
HACER MIENTRAS (WHILE DO): Repite una sentencia simple o compuesta mientras se cumpla una Condicin Lgica. Tambin se lo suele llamar ciclo 0 a N, ya que en caso de no cumplirse la Condicin Lgica la primera vez, la sentencia no se realizar ninguna vez.
CondicinLgica Sentencia_1 V F CondicinLgica Sentencia_1 Sentencia_2
WHILE CondicinLgica DO WHIL E CondicinLgica DO Sentencia_1; BEGIN Sentencia_1; Sentencia_2 END; Edicin Preliminar (bajo revisin) Pgina 13 de 13
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Ejemplo 1: Cant:=0; Total:=0; READLN(Valor); WHILE Valor <> -1 DO BEGIN Total := Total + Valor; Cant := Cant + 1; READLN(Valor) END; WRITELN(Promedio:, Total / Cant:8:2);
Ejemplo 2: Reemplazar con WHILE DO la estructura FOR DO
FOR J := 1 TO Fin Do J := 1; Sentencia_N; WHILE J <= Fin DO BEGIN Sentencia_N; J := J + 1 END;
REPETIR HASTA (REPEAT UNTIL): Repite una o varias sentencias hasta que se cumpla una condicin. F Sentencia_1 CondicinLgica V Sentencia_1 Sentencia_2 CondicinLgica
REPEAT REPEAT Sentencia_1 Sentencia_1; UNTIL CondicinLgica; Sentencia_2 UNTIL CondicinLgica;
Se puede observar que independientemente de que se quieran repetir 1 o ms instrucciones, no es necesaria la transformacin en una sentencia compuesta dado que los identificadores REPEAT y UNTIL las delimitan.
La Lgica de esta estructura es la siguiente: 1) Ejecuta la Sentencia 1,2,... 2) Si no cumple la condicin lgica, vuelve a ejecutar la sentencia 1,2,...
Es decir que a diferencia del WHILE DO, esta estructura ejecuta la/las sentencias por lo menos una vez. Por esto, tambin se la llama ciclo 1 a N. Edicin Preliminar (bajo revisin) Pgina 14 de 14
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Recomendaciones para una adecuada codificacin:
1) Utilizar indentaciones para permitir visualizar mejor las estructuras, o sentencias subordinadas a otras. Esto permite una ms fcil interpretacin del cdigo (al humano, pues para el compilador es indistinto). 2) Utilizar comentarios en diferentes lugares del programa, para describir por ejemplo que funcin cumple un conjunto de instrucciones (Ej.: Calcular un Promedio). Para que el compilador reconozca que se trata de un comentario y no de una sentencia, se debe utilizar uno de los siguientes formatos: (* Comentario *) o { Comentario } 3) Utilizar una codificacin uniforme: a) Sentencias / Palabras Reservadas de Pascal con maysculas, variables con minsculas. b) Todos los identificadores elegidos por el programador (ej.: nombre de variable, nombre de programa, nombre de procedimiento, etc.) van en minscula, excepto la primera letra que va en mayscula. En nombres largos compuestos por dos o ms palabras debe ir en mayscula la inicial de cada palabra. c) Para facilitar la interpretacin del programa se recomienda elegir los identificadores de modo que puedan fcilmente asociarse con lo que representa o significan.
Instrucciones para el borrado y ubicacin del cursor en la Pantalla
POSICIONAMIENTO DEL CURSOR (GOTOXY): Posiciona el cursor en el lugar de la pantalla que se le indique, permitiendo que las sentencias READ, READLN, WRITE, WRITELN, soliciten valores o informen resultados a partir de esa posicin. Para el uso de esta sentencia es necesario incluir la biblioteca CRT en la seccin USES, es decir: USES CRT; Se codifica:
GOTOXY(Columna de la Pantalla, Fila de la Pantalla);
Las coordenadas X e Y de una pantalla se encuentran normalmente establecidas con rangos de 1 a 80 para columnas y de 1 a 25 para filas.
LIMPIAR / BORRAR LA PANTALLA (CLRSCR): Borra toda la informacin de la pantalla, posicionando el cursor en la fila 1, columna 1. Para el uso de esta sentencia es necesario incluir la biblioteca CRT en la seccin USES, es decir: USES CRT; Se Codifica:
1 25 10 1 52 20 80 X Y Ingrese Su Nombre y Apellido:
Edicin Preliminar (bajo revisin) Pgina 15 de 15
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
Ejemplo de un Algoritmo codificado en Pascal:
Dada una cantidad de alumnos recibidos en una Universidad, de los que se conoce la Edad a la que se recibieron y su mejor Nota en la carrera (valores enteros entre 1 y 10), informar: a) Cantidad de alumnos que obtuvieron 7, 8, 9 y 10. b) Porcentaje de alumnos con Notas mayores o iguales a 9. c) Cantidad de alumnos recibidos, mayores a 27 aos.
C Notas7 <--- 0 Notas8 <--- 0 Notas9 <--- 0 Notas10 <--- 0 Mayor27 <--- 0 Cant Porce <--- (Notas9 + Notas10)*100/Cant Notas7, Notas8, Notas9, Notas10, Porce, Mayor27 F Cant 1 I Edad, Nota Nota INC(Notas7) INC(Notas8) INC(Notas9) INC(Notas10) 7 8 9 10 Edad > 27 INC(Mayor27)
Edicin Preliminar (bajo revisin) Pgina 16 de 16
Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin ALGORITMOS Y ESTRUCTURAS DE DATOS
PROGRAM Alumnos; USES CRT; { se utiliza la biblioteca CRT pues se usa la sentencia CLRSCR } VAR
Notas7:= 0; Notas8:= 0; Notas9:= 0; Notas10:= 0; Mayor27:= 0; CLRSCR; WRITELN('Ingrese la cantidad de alumnos recibidos'); READLN(Cant); FOR I := 1 TO Cant DO { Proceso de datos de los alumnos } BEGIN WRITELN('Ingrese la Edad a la que se recibi y la Nota mxima del alumno ', I); READLN(Edad, Nota); CASE Nota OF 7: INC(Notas7); 8: INC(Notas8); 9: INC(Notas9); 10: INC(Notas10) END; IF Edad > 27 THEN INC(Mayor27); WRITELN; END; Porce := (Notas9 + Notas10)*100 / Cant;
{ Impresin de resultados }
WRITELN('Cantidad de alumnos con Nota mxima 7: ', Notas7:5); WRITELN('Cantidad de alumnos con Nota mxima 8: ', Notas8:5); WRITELN('Cantidad de alumnos con Nota mxima 9: ', Notas9:5); WRITELN('Cantidad de alumnos con Nota mxima 10: ', Notas10:5); WRITELN('Porcentaje de alumnos con Nota mxima >= a 9: ', Porce:6:2); WRITELN('Cantidad de alumnos recibidos con m s de 27 aos: ', Mayor27:5); GOTOXY(1, 25); WRITE('Presione una tecla para finalizar'); READKEY END.
Modelo de Educación Flexible y Competencias Multigrado en Instituciones Educativas Rurales de Los Municipios No Certificados Del Valle Del Cauca-Colombia