Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Algoritmos
y
Estructuras de Datos
* Estructuras de Control
* Programación Pascal
i
Acción 1
i
Esquemático Acción 2
i
i
Acción n
Acción 1
Acción 2
Chapín .
.
Acción n
ESTRUCTURAS DE CONTROL
Estas estructuras se usan en todos los programas que tengan que repetir un conjunto de instrucciones
cumpliendo con una condición lógica ó cuando se debe elegir un grupo de sentencias entre varias
posibles.
Cuando NO se conoce el número preciso de repetición se lo llama Bucle condicional.
Cuando SI se conoce el número de repetición se lo llama Bucle incondicional.
Cuando se presente la necesidad de efectuar una decisión lógica para ver cual es la acción a realizar
entre dos posibles se denomina ejecución condicional y cuando se elige un grupo de sentencias entre
varios grupos posibles se llama selección.
En cualquiera de las estructuras de control se pueden utilizar operadores relacionales (= < <= => > <>)
combinados ó no, con operadores lógicos (.OR. , .AND. , .NOT.).
Comenzar el programa
Pseudocódigo definir (variable)
SI variable ENTONCES acciones verdaderas
SINO acciones falsas
fin del SI
Fin del programa
Evalua
Verdadera la variable Falsa
i de i
decisión
Ejecutar acciones Ejecutar acciones
Esquemático por la alternativa por la alternativa
VERDADERA FALSA
definir (variable)
verdadera
variable
falsa
Chapín Af1
Av1
Av2 Af2
. .
Avk Afn
Definir (N)
PARA Indice = 1 a N hacer
Chapín Acción 1
Acción 2
.
Acción k
Definir (condición)
MIENTRAS condición HACER
Acción 1
Chapín
Acción 2
.
Definir (condición)
Las sentencias se ejecutan repetidamente en tanto la expresión lógica sea verdadera. Primero, verifica
y luego ejecuta, por lo cual puede no ejecutarse el grupo de sentencias si en la primera validación salió
por falso. Debido a que después del DO ejecuta una única sentencia, si ésta es compuesta (más de 1
instrucción), se las debe programar comprendidas entre BEGIN - END. Debe tener una sentencia de
asignación externa (lectura) o interna (:=) de la variable interviniente en la decisión, externa a la
estructura al comienzo y otra interna (en la estructura) para que no entre en loop.
Pseudocódigo Esquemático
Comenzar el programa g
i
REPETIR
definir (condición) Ejecutar todas las
acción 1 acciones del bucle
acción 2
. i
acción k
HASTA condición Falsa
Evalua la Verdadera
Fin del programa
condición
Definir (condición)
Acción 1
Chapín Acción 2
.
Acción k
HASTA condición
Pascal REPEAT
sentencia 1;
sentencia 2;
....;
....;
sentencia n
UNTIL expresión lógica;
Sintaxis
REPEAT g Sentencia g UNTIL g Condición g
# $
f ; f
La secuencia de sentencias se ejecutará repetidamente hasta que la expresión lógica sea verdadera, por
lo cual primero ejecuta y luego compara (a la inversa del WHILE-DO), ejecutándose al menos una vez
todas las sentencias. Esta estructura no necesita del BEGIN - END debido a que REPEAT - UNTIL actúan
como corchetes, señalando comienzo y fin de la secuencia de repetición.
Chapín i
definir (variable)
variable otras
posibilidad 1 posibilidad 2 posibilidad n posibilidades
acciones acciones acciones
para variable para variable ... para variable acciones de
= = = posibilidades
posibilidad 1 posibilidad 2 posibilidad n no previstas
expresión
Función
FOR variab.
expresión
V F
Procedimiento
Ejemplos:
1) Dado el ingreso de la altura actual del río, determinar si supera el valor de la media anual.
leer (medio)
leer (actual)
2) Dado el ingreso de la altura actual del río, durante 30 días, determinar día por día, si supera el valor de
la media anual.
leer (medio)
para dias = 1 a 30
leer (actual)
4) Dado el ingreso por día, de la altura actual del río, considerando altura = tope como último dato a
procesar, determinar día por día, si supera el valor de la media anual.
5) Dado el ingreso de la altura actual del río, compararla con las últimas 4 estadísticas y establecer con
cual de ellas coincide
leer (e2)
exh (‘ingrese estadística 3’)
leer (e3)
leer (actual)
actual
e1 e2 e3 e4 otros
(‘coincide con 1’) (‘coincide con 2’) (‘coincide con 3’) (‘coincide con 4’) (‘NO coincide’)
Un programa Pascal consta de dos partes esenciales: una descripción de acciones que deben realizarse
y una descripción de los datos que son manipulados por esas acciones.
Las acciones se describen por las llamadas sentencias y los datos por las definiciones y declaraciones.
1. Cabecera (PROGRAM)
2. Bloque
a) Declaraciones de etiquetas (LABEL) (no se usarán)
Definiciones de Constantes (CONS)
Definiciones de Tipo (TYPE)
Definiciones de Variables (VAR)
Procedimientos y Funciones (PROCEDURE / FUNCTION)
b) Sentencias.
1. LA CABECERA: está constituida por una línea que comienza con la palabra PROGRAM, seguida del
nombre del programa y las referencias a los archivos de entrada y salida, las cuales van encerradas entre
paréntesis y separados por coma. Utilizaremos INPUT, OUTPUT para referirnos al teclado y a la pantalla
respectivamente.
2. EL BLOQUE: consiste de una parte declarativa (a) y una parte ejecutable (b). Las definiciones deben
presentarse en el orden arriba establecido, aunque no es obligatorio que aparezcan todas en un programa.
La parte ejecutable debe estar comprendida entre BEGIN END. .
a) Definición de Constantes: Sirve para darle un nombre simbólico (identificador) a un valor numérico
o una cadena que permanecerá inalterable a lo largo del programa.
Definición de Tipos: Es para definir a un identificador por un tipo standard o un tipo definido por el
usuario (ej.: subrango, enumerado). Este identificador no puede usarse como variable, sino que le
asigna un tipo de dato a una variable.
Procedimientos y Funciones: Estos dos tipos de estructuras se declaran antes del inicio del programa.
En su interior se lo escribe con las mismas condiciones que un programa principal (declaración de
constantes, tipos, variables y procedimientos - funciones si es que internamente los invocan) y sus
sentencias deben estar comprendidas entre BEGIN ... END; (con un punto y coma final). No existen
prioridades de programación entre Procedimientos y Funciones, salvo el caso de que un procedimiento
llame a otro/s procedimientos o funciones, éstos deben estar declarados previamente.
b) Sentencias se deben seguir las condiciones establecidas según las estructuras de control y de
asignación. Este grupo de sentencias se la debe pensar como una única gran sentencia, por lo cual
deben estar comprendidas entre BEGIN ... END. , éste será el único END que tenga un punto indicando
fin del programa.
a) EL PUNTO y COMA se usa como separador (no como terminación), entre sentencias y/o estructuras
sucesivas.
b) BEGIN ... END son llaves que indican comienzo y fin de una sentencia compuesta, es por eso que no
necesita del punto y coma después del BEGIN.
c) UN PUNTO y COMA innecesarios se interpretaría como una sentencia nula (sentencia vacia).
Generalmente no tendrá efecto apreciable en la ejecución del programa, aunque hay situaciones en la
que puede alterar la lógica del mismo.
d) TODO PROGRAMA debe terminar con un punto en la última instrucción END.
(* Declaración de constantes *)
CONST factor = 0.5;
pi = 3.1415926;
cartel = 'Nombre usuario',
(* Declaración de tipos *)
TYPE dias = (lunes,martes,miercoles,jueves,viernes);
color = (rojo,azul,amarillo);
letra ='A'.. ‘Z';
(* Declaración de variables*)
VAR cont: INTEGER;
z: BOOLEAN;
suma: REAL,
remera: COLOR;
vec: ARRAY [1 .. 10] OF REAL;
val: ARRAY [dias] OF INTEGER;