Sie sind auf Seite 1von 17

Universidad Tecnolgica Nacional

Facultad Regional Buenos Aires


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

28 60 < 92 \ 124 | 156 188 220 252
29 61 = 93 ] 125 } 157 189 221 253
30 62 > 94 ^ 126 ~ 158 P 190 222 254
31 63 ? 95 _ 127 159 191 223 255

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.

Ejemplo 1: WRITELN(1350.4:10:2); resultar 1350.40 (7 enteros, 2
decimales)
Ejemplo 2: A:= 1670; WRITELN(A:8:2); resultar 1670.00 (5 enteros, 2 decimales)

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.


Selector
Sentencia_1 Sentencia_2 Sentencia_3 Sentencia_N Sentencia_4
ListaDeValores_1 ListaDeValores_2 ListaDeValores_3 ELSE ListaDeValores_4



Se codifica de la siguiente manera:

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:

CLRSCR;

Ejemplo: CLRSCR;
GOTOXY(20,10);
WRITELN(Ingrese Nombre);
GOTOXY(52,10);
READLN(Nombre);


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

{ Declaracin de variables }

Notas7, Notas8, Notas9, Notas10, Mayor27, Cant, I: WORD;
Edad, Nota : BYTE;
Porce: REAL;

BEGIN

{ Inicializacin de contadores }

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.

Edicin Preliminar (bajo revisin) Pgina 17 de 17

Das könnte Ihnen auch gefallen