Вы находитесь на странице: 1из 12

UTN - FRRO

Algoritmos
y
Estructuras de Datos

* Estructuras de Control
* Programación Pascal

Prof. CLAUDIA DANIA


Magister en Docencia Universitaria
Analista Universitario de Sistemas
Licenciada en Sistemas de Información

Prof. CLAUDIA DANIA 1 / 11


SECUENCIA
Inicio del programa
Acción 1
Pseudocódigo Acción 2
.
Acción n
fin del programa

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.).

Prof. CLAUDIA DANIA 2 / 11


DECISION (entre dos alternativas)
SI / IF THEN ELSE

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

Pascal 1) IF expresión lógica THEN sentencia;


IF expresión lógica THEN BEGIN sentencia1,
sentencia2;
....;
sentenciaN
END;
2) IF expresión lógica THEN sentenciaA ELSE sentenciaB;

Sintaxis IF g Condición g THEN g Sentencia g


$ #
ELSE g Sentencia g

La sentencia en el caso 1) se ejecuta si la expresión es verdadera, en el 2) se ejecuta una de las dos


sentencias (nunca las dos). En caso de tener una sola salida programada debe ser la del verdadero.
Tanto en el verdadero como en el falso se puede ejecutar una única sentencia, por lo tanto si hay más
de una se las debe comprender entre BEGIN - END. No debe aparecer un punto y coma (;) entre la
sentencia del verdadero y la palabra ELSE, debido a que interpretaría como fin del IF y nunca ejecutaría
el falso.
Prof. CLAUDIA DANIA 3 / 11
REPETICION INCONDICIONAL
(cantidad conocida de veces)
PARA / FOR - DO i
Pseudocódigo g

Comenzar el programa Se repitió


definir (N) N veces?
hacer N veces
acción 1
Esquemático
acción 2 i
.
acción k Ejecutar todas las
fin del hacer acciones del bucle
Fin del programa
i

Definir (N)
PARA Indice = 1 a N hacer

Chapín Acción 1
Acción 2
.
Acción k

Pascal FOR variable de control:= valor1 TO / DOWNTO valor2 DO sentencia;

FOR variable de control:= valor1 TO valor2 DO BEGIN


sentencia1;
sentencia2;
....;
sentenciaN
END;
Sintaxis

Variable Valor g TO g Valor


FOR g de g := g g DO g BEGIN g Sentencia g END g
control Inicial g DOWNTO g Final # $
f ; f
Permite que una acción se repita un número específico de veces, debiendo incorporar BEGIN - END a más
de una sentencia (situación similar al WHILE-DO).
La variable de control debe ser una variable de cualquier tipo menos real debido a que cuenta cantidades
exactas, se la puede usar dentro del proceso de repetición sin modificarla, pero finalizada la repetición,
no puede utilizársela sin redefinirla.
Dicha variable de control se puede incrementar (TO) o decrementar (DOWNTO) de uno en uno.
- Si valor1 es igual a valor2, la sentencia se ejecuta una sola vez.
- Si valor1 es menor que valor2 en DOWNTO la sentencia no se ejecutará nunca.
- Si valor1 es mayor que valor2 en el caso del TO, la sentencia no se ejecutará nunca.

Prof. CLAUDIA DANIA 4 / 11


REPETICION PRE - CONDICIONAL
(cantidad desconocida de veces)
MIENTRAS / WHILE DO
Pseudocódigo Esquemático
i
Comenzar el programa f
definir (condición)
MIENTRAS condición HACER Falsa Evalua la Verdadera
acción 1
condición
acción 2
.
definir (condición) i
i
fin del MIENTRAS Ejecutar todas las
Fin del programa acciones del bucle

Definir (condición)
MIENTRAS condición HACER
Acción 1
Chapín
Acción 2
.
Definir (condición)

Pascal WHILE expresión lógica DO sentencia;

WHILE expresión lógica DO BEGIN sentencia1;


sentencia2;
....;
sentenciaN
END;

Sintaxis WHILE g Condición g DO g Sentencia g

WHILE g Condición g DO g BEGIN g Sentencia g END g


# $
f ; f

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.

Prof. CLAUDIA DANIA 5 / 11


REPETICION POS-CONDICIONAL
(cantidad desconocida de veces)
REPETIR - HASTA / REPEAT - UNTIL

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.

Prof. CLAUDIA DANIA 6 / 11


DECISION o SELECCION
(ejecución condicional, entre varias alternativas)
SELECCION MULTIPLE / CASE
Pseudocódigo Esquemático
Comenzar el programa i
definir (condición)
en CASO condición SEA IGUAL Evalua
posibilidad 1: acciones posibilidad 1 la variable
de
posibilidad 2: acciones posibilidad 2 decisión
.
posibilidad n: acciones posibilidad n
otras: acciones para otras posibilidades
fin de CASO DE SELECCION Ejecutar
Ejecutar Ejecutar Ejecutar
Fin del programa acciones
acciones acciones acciones para
.....
= = = posibilidades
posibilidad 1 posibilidad 2 posibilidad n no propuestas

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

Pascal CASE expresión OF


lista de rótulo1 : sentencia1;
lista de rótulo2 : sentencia2;
....;
lista de rótuloN : sentenciaN
END;
Sintaxis
CASE g Selector g OF g Etiqueta Case g : g Sentencia g END g
# $
! , !
#! $
; !
Permite la selección de un grupo particular de sentencias entre varios grupos posibles, la selección se
hace sobre el valor de una expresión denominada selector.
La expresión no puede ser real, generalmente es una variable simple.
Cada rótulo es uno de los valores posibles de la expresión, no deben respetar un orden determinado. Si
las sentencias son estructuradas (más de una) se las debe especificar entre BEGIN - END.
Se permiten sentencias nulas. Si el valor de la expresión no coincide con ningún rótulo, la acción a
realizar estará indefinida (algunas versiones Pascal incluyen la claúsula OTHERWISE que especifica que
hacer en dicho caso).
CASE puede ser una alternativa de la estructura IF -THEN -ELSE.
A diferencia de ésta, las comparaciones se hacen sólo por igualdad.
Prof. CLAUDIA DANIA 7 / 11
Todas estas estructuras de control se pueden anidar, ya sean del mismo tipo o distintas. Ejemplo

Sentencia de Lectura (read ó readln)

Sentencia de Asignación (:=)

expresión

Rot.1 Rot.2 Rot.3 ....... Rot N

Función

FOR variab.

expresión
V F

Procedimiento

Sentencia de Escritura (write ó writeln)

Ejemplos:
1) Dado el ingreso de la altura actual del río, determinar si supera el valor de la media anual.

exh (‘ingrese el valor medio anual’)

leer (medio)

exh (ìngrese medida actual’)

leer (actual)

actual > medio

exh (‘supera’) exh (‘no supera’)

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.

exh (‘ingrese el valor medio anual’)

leer (medio)

para dias = 1 a 30

exh (ìngrese medida actual’)

leer (actual)

actual > medio

exh (‘supera’) exh (‘no supera’)

Prof. CLAUDIA DANIA 8 / 11


3) Dado el ingreso por día, de la altura actual del río, considerando altura = 0 como fin de datos,
determinar día por día, si supera el valor de la media anual.

exh (‘ingrese el valor medio anual’)


leer (medio)
exh (ìngrese medida actual’)
leer (actual)
Mientras actual <> 0
actual > medio

exh (‘supera’) exh (‘no supera’)


exh (ìngrese medida actual’)
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.

exh (‘ingrese el valor tope’)


leer (tope)
exh (‘ingrese el valor medio anual’)
leer (medio)
exh (ìngrese medida actual’)
leer (actual)
actual > medio

exh (‘supera’) exh (‘no supera’)


hasta actual = tope

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

exh (‘ingrese estadística 1’)


leer (e1)

exh (‘ingrese estadística 2’)

leer (e2)
exh (‘ingrese estadística 3’)

leer (e3)

exh (‘ingrese estadística 4’)


leer (e4)

exh (‘ingrese el valor actual’)

leer (actual)
actual

e1 e2 e3 e4 otros

exh exh exh exh exh

(‘coincide con 1’) (‘coincide con 2’) (‘coincide con 3’) (‘coincide con 4’) (‘NO coincide’)

Prof. CLAUDIA DANIA 9 / 11


INTRODUCCION A LA PROGRAMACION
Hasta aquí hemos aprendido los principios básicos de la Diagramación Estructurada, donde cada algoritmo
está compuesto por una serie de estructuras lógicas que en conjunto tienen un único comienzo y un
único final. Con dichas estructuras se puede resolver cualquier tipo de problemas y ellas son: secuencia
- decisión - repetición.
La diagramación estructurado permite limitar el diseño del software a un pequeño número de operaciones,
facilitando de esta manera su legibilidad, prueba y mantenimiento.
Para lograr ésto, no hemos valido de una herramienta gráfica de presentación de algoritmos como el
Diagrama de Chapín, que no nos permite violar los principios de la Programación Estructurada y podemos
visualizar claramente el flujo de control del programa.
Sin embargo esta es sólo una forma de representar un algoritmo, para poder programarlo en una
computadora debemos escribirlo de otra manera, es decir en algún lenguaje de programación orientado
al tipo de problema que queremos resolver.
Estudiaremos Pascal como un medio para aplicar los principios de la Programación Estructurada.

PRESENTACION DE UN PROGRAMA PASCAL

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.

Definición de Variables: Se le da un nombre al identificador y se le asigna un tipo (no un dato


concreto). Deben estar todas las variables que se utilicen en el programa.

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.

Prof. CLAUDIA DANIA 10 / 11


Las reglas de puntuación son las siguientes:

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.

Como complemento de programación existen los denominados SEPARADORES, a saber:


- COMENTARIOS: Son mensajes, no ejecutables, para aclarar distintas etapas en el transcurso del
programa. Los mismos pueden aparecer entre (*....*) ó {....}.
- BLANCOS: Son los espacios que se deben colocar dentro de una instrucción para poder separar las
palabras y así reconocerlas.
- RETORNO: Se utiliza para poder pasar de una instrucción a la siguiente, cambiando de renglón,
cuando se está tipeando el programa en la computadora.
- SENTENCIA DE ASIGNACION: es una sentencia simple, que asigna un dato a una variable, se
presenta con dos puntos mas un signo igual (:=).

PROGRAM modelo (INPUT,OUTPUT):

(* 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;

(* Declaración de procedimientos o funciones *)


PROCEDURE XX (parametros);
VAR j : INTEGER;
BEGIN
......
END;

FUNCTION prueba (parametros): tipo de la función;


BEGIN
.....
END;

(*Comienzo del programa principal*)


BEGIN
....;
XX (...) ;
SUMA := prueba (..) + 32.25 ;
....
(* Ultima instrucción del programa principal *)
END.

Prof. CLAUDIA DANIA 11 / 11

Вам также может понравиться