CAP. 3. PROGRAMACION ESTRUCTURADA 3.1. Técnicas de

Anuncio
MAT-103
INFORMATICA
CAP. 3.
3.1.
PROGRAMACION ESTRUCTURADA
Técnicas de programación
Las herramientas de programación fundamentalmente los diagramas de
flujo, son las representaciones gráficas utilizada para el diseño de algoritmos
y programas, este tipo de herramienta constituye el fundamento de
programación.
Las técnicas de programación se clasifican en las técnicas de
programación modular y programación estructurada, de modo que se
pueda que se pueda conseguir un programa eficaz.
3.1.1 Programación modular
La programación modular es uno de los métodos de diseño más flexibles y
potentes para mejorar la productividad de un programa, el programa se
divide en módulos (partes independientes), cada una de las cuales ejecuta
una única actividad o tarea y se codifican independientemente de otros
módulos, cada uno de estos módulos se analizan, codifican y ponen a punto
por separado.
Cada programa contiene un modulo denominado programa principal, que
controla todo lo que sucede, se transfiere el control a submodulos,
posteriormente se denominan subprogramas.
Principal
Modulo 1
Modulo 1 1
Modulo 2
Modulo 3
Modulo 1 2
Modulo 3 1
Modulo 2 1
Modulo 2 2
Modulo 2 2 1
3.2.
Programación estructurada
Pág. 1
Modulo 2 2 2
Modulo 4
Modulo 4 1
Modulo 4 2
MAT-103
INFORMATICA
Se refiere a un conjunto de técnicas que han ido evolucionando desde los
primeros trabajos, estas técnicas aumentan considerablemente la
productividad del programa reduciendo el elevado tiempo requerido para
escribir, verificar, depurar y mantener los programas.
La programación estructurada utiliza un número limitado de estructuras de
control que minimiza la complejidad de los problemas.
La programación estructurada es el conjunto de técnicas que incorporan:
 Diseño descendente (top-down)
 Recursos abstractos
 Estructuras básicas
3.2.1 Diseño descendente (top-down)
Es el proceso mediante el cual un problema se descompone en una serie de
niveles o pasos sucesivos de refinamiento (stepwise). La metodología
descendente consiste en efectuar una relación entre las sucesivas etapas de
estructuración de modo que se relacionen unas con otras mediante entradas
y salidas de información, es decir se descompone el problema en etapas o
estructuras jerárquicas, de modo que se puede considerar cada estructura
desde dos puntos de vista: que hace y como lo hace.
3.2.2 Recursos abstractos
La programación estructurada se auxilia de los recursos abstractos en lugar
de recursos concretos de que se dispone un determinado lenguaje de
programación.
Descomponer un programa en términos de recursos abstractos consiste en
descomponer una determinada acción compleja en función de un número de
acciones más simples, capaces de ser ejecutadas por una computadora y
que constituirán sus instrucciones.
3.2.3 Estructuras básicas
En mayo de 1966 Bohm y Jacopini demostraron que un programa propio
puede ser escrito utilizando solamente tres tipos de estructuras de control:
 Secuenciales
 Selectivas
 Repetitivas
Pág. 2
MAT-103
INFORMATICA
Un programa se define como propio si se cumple las
características:
siguientes
 Posee un solo punto de entrada y uno de salida o fin para el control
del programa.
 Existen caminos desde la entrada hasta la salida que se pueden
seguir y que pasan por todas las partes del programa.
 Todas las instrucciones son ejecutables y no existen lazos o bucles
infinitos (sin fin).
3.3.
Estructura secuencial
La estructura secuencial es aquella en la que la acción (instrucción) sigue
a otra en secuencia. La estructura secuencial tiene una entrada y una salida
cuya representación gráfica es:
DIAGRAMA DE
FLUJO
PSEUDOCODIGO
CODIFICACIÓN
Acción 1
Inicio
<Acción 1 >
<Acción 2 >
<Acción 3 >
<Acción n >
Fin
BEGIN
<Acción 1 >
<Acción 2 >
<Acción 3 >
<Acción n >
END.
Acción 2
Acción n
3.4.
Estructura alternativa
Estructura de control selectiva se utiliza para tomar decisiones lógicas de ahí
suelen denominar estructuras de decisión o alternativa, en la estructura
selectiva se evalúa una condición y en función del resultado de la misma se
realiza una opción u otra dependiendo de la prueba lógica.
La estructura selectiva o alternativas existen tres estructuras que suelen ser:
 Simples
 Dobles
 Múltiples
3.4.1 Alternativa simple
Pág. 3
MAT-103
INFORMATICA
La estructura alternativa simple {(Si _ entonces) en íngles (if_then)},
ejecuta una determinada acción cuando se cumple una determinada
condición que evalúa la condición.
 Si la condición es verdadera, entonces ejecuta la acción S1
 Si la condición es falsa, entonces no hacer nada.
DIAGRAMA DE
FLUJO
PSEUDOCODIGO
CODIFICACIÓN
Condición
Si <Condición> Entonces
<Acción S1>
Fin _ si
If <Condición> Then
<Acción S1>
Endif
Verdad
Falso
Acción S1
3.4.2 Alternativa doble
Es una estructura que permite elegir entre dos opciones o alternativas
posibles, en función del cumplimiento o no de una determinada condición.
Si la condición es verdadera, se ejecuta la acción S1 y si es falsa se ejecuta
la acción S2
DIAGRAMA DE
FLUJO
Verdad
Condición
Acción S1
Falso
Acción S2
PSEUDOCODIGO
CODIFICACIÓN
Si <Condición> entonces
<Acción S1>
Si_no
<Acción S2>
Fin_si
If <Condición> Then
<Acción S1>
Else
<Acción S2>
Endif
3.4.3 Alternativa múltiple
Con frecuencia en la práctica, es necesario que existan más de dos
elecciones posibles. La elección de decisión múltiple evaluara una expresión
que podrá tomar n valores distintos 1,2,3,4, ...n. Según que elija uno de
estos valores en la condición, se realizara una de las n acciones o lo que es
Pág. 4
MAT-103
INFORMATICA
igual, el flujo del algoritmo seguirá un determinado camino entre los n
posibles.
DIAGRAMA DE FLUJO
¿Condición?
1
2
3
4
5
Acción S1
Acción S2
Acción S3
Acción S4
Acción S5
PSEUDOCODIGO
………
Acción S6
CODIFICACIÓN
Case Expresión of
[e1]: Acción S1
[e2]: Acción S2
[e3]: Acción S3
Según _sea Expresión (E) hacer
[e1]: Acción S1
[e2]: Acción S2
[e3]: Acción S3
Si_no
Acción Sx
Else
Acción Sx
Fin_segun
3.5.
n
End_case
Estructura Repetitiva
Las computadoras están especialmente diseñadas para todas aquellas
aplicaciones en las cuales una operación o conjunto de ellas deben repetirse
muchas veces.
Las estructuras que repiten una secuencia de instrucciones un número
determinado de veces se denomina bucles y se llama iteración al hecho de
repetir la ejecución de una secuencia de acciones.
Bucle.- Es una estructura de control que permite la repetición de una
determinada serie de sentencias se denomina bucle.
El cuerpo del bucle contienen las sentencias que se repiten, el lenguaje
pascal proporciona tres estructuras o sentencias de control para especificar
la repetición como ser:
 While (Mientras)
Pág. 5
MAT-103
INFORMATICA
 Repeat (Repetir)
 For (Desde/para)
3.5.1 Estructura mientras
La estructura de repetición while (mientras) es aquella en la que el número
de interacciones no se conoce por anticipado y el cuerpo del bucle se repite
mientras se cumple una determinada condición por esta razón se llama
bucles condicionales.
Cuando la sentencia while se ejecuta, la primera cosa que sucede es la
evaluación de la expresión lógica.
 Si la expresión lógica se evalúa a falso (False) entonces ninguna
acción se realiza y el programa prosigue en la siguiente sentencia
después del bucle.
 Si la expresión lógica se evalúa a verdadero (True), entonces se
ejecuta el cuerpo del bucle y se evalúa de nuevo a la expresión
lógica.
Este proceso se repite mientras que la expresión lógica permanezca
verdadera, después de cada iteración, la expresión lógica se evalúa y se
verifica de nuevo.
Reglas de funcionamiento.1. La condición (Expresión lógica) se evalúa antes y después de cada
ejecución del bucle si la condición es verdadera se ejecuta el bucle y si
es falsa el control pasa a la sentencia siguiente del bucle.
Caso 1
DIAGRAMA DE FLUJO
Condición
Verdad
PSEUDOCODIGO
Falso
Mientras CONDICIÓN hacer
Acción S1
Fin _ mientras
Acción S1
Pág. 6
CODIFICACIÓN
While EXPRESIÓN LÓGICA Do
Acción S1;
MAT-103
INFORMATICA
Caso 2
DIAGRAMA DE FLUJO
Condición
CODIFICACIÓN
Falso
While
Verdad
Acción S1
Acción S2
EXPRESIÓN LÓGICA
Begín
Acción S1
Acción S2
End.
Do
2. Si la condición se evalúa es falso cuando se ejecuta por primera vez el
bucle, el cuerpo del bucle no se ejecutara nunca, en este caso se dice
que el bucle se ha ejecutado 0 veces.
3. Mientras la condición sea verdadera el bucle se ejecutara esto significa
que el bucle se ejecutara infinitamente a menos que algo en el interior
del bucle modifica la condición haciendo que su valor pase a falso, si la
expresión nunca cambia de valor, entonces el bucle no termina nunca y
se denomina bucle infinito o sin fin.
3.5.2 Estructura repetir
Es una variante de la sentencia While, es la sentencia Repeat, una de las
características de los bucles While_do es que la condición se evalúa al
principio de cada iteración, y si es falsa no se ejecuta el bucle nunca.
La sentencia Repeat especifica un bucle condicional que se repite hasta que
la condición sea verdadera, tal bucle se denomina bucle Repeat _ until.
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Repetir
Acción S1
Acción S1
Acción S2
Hasta _que <Condición>
Acción S2
Falso
Condición ?
Verdad
Pág. 7
CODIFICACIÓN
Repeat
Acción S1
Acción S2
Until <Condición>
MAT-103
INFORMATICA
Reglas de funcionamiento.
1. La condición (expresión lógica) se evalúa al final del bucle después de
ejecutarse las sentencias.
2. Si la expresión lógica es falsa, se vuelve a repetir el bucle y se ejecuta
todas las sentencias.
3. Si la expresión lógica es verdad se sale del bucle y se ejecuta la
sentencia a until.
4. La sintaxis no requiere begín y end.
3.5.3 Estructura desde/para
La sentencia for requiere que conozcamos por anticipado el número de
veces que se ejecutan las sentencias para repetir al interior del bucle, si se
desea que las sentencias controladas se ejecuten hasta que ocurra una
determinada situación y no se conoce de antemano el número de
repeticiones, entonces se debe utilizar la sentencia While o Repeat en lugar
de For.
Incrementos de contador de FOR (TO)
Caso 1
DIAGRAMA DE FLUJO
I := Vo
Vf
PSEUDOCODIGO
Desde I ← Vo HASTA Vf HACER
Acción S1
Fin _ desde
Acción S1
I
Vo = Valor Inicial
Vf = Valor final
Pág. 8
CODIFICACIÓN
For I := Vo To Vf Do
Acción S1;
MAT-103
INFORMATICA
Caso 2
DIAGRAMA DE FLUJO
I := Vo
Vf
PSEUDOCODIGO
Para I ← Vo HASTA Vf HACER
Acción S1
Fin _ para
Acción S1
CODIFICACIÓN
For I := Vo To Vf Do
begin
Acción S1
Acción S2
End.
Acción S2
I
Decremento del contador de FOR (DOWNTO)
El contador del bucle se puede decremento de uno en uno en lugar de
incrementar como en el caso anterior, el formato y el diagrama de sintaxis se
indican como:
DIAGRAMA DE FLUJO
I := Vf
Vo
PSEUDOCODIGO
Para I ← Vf HASTA Vo HACER
Acción S1
Fin _ para
Acción S1
CODIFICACIÓN
For I:= Vf Downto Vo Do
begin
Acción S1
Acción S2
End.
Acción S2
I
3.5.4 Estructura iterar
No se considera como una estructura básica de la programación
estructurada, porque no produce programas legibles, permite la salida en un
punto intermedio del bucle cuando se cumple una condición.
Pág. 9
MAT-103
INFORMATICA
Puede usarse en las estructuras mientras, repetir y desde.
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Iterar
Acciones
Condición ?
Verdad
Acciones
Salir_Si <Condicion>
Acciones
Fin_iterar>
Falso
Acciones
Pág. 10
CODIFICACIÓN
Do
Acciones
Exit_if <Condición>
Acciones
Loop
MAT-103
INFORMATICA
CAP. 4.
4.1.
ESTRUCTURA DE DATOS
Arrays unidimensionales (vectores)
Un array es una dimensión (unidimensional-vector), es un tipo de datos
estructurado compuesto de un número de elementos finitos, tamaño fijo y
elementos homogéneos. Finito indica que hay un último elemento que tiene
un final, tamaño fijo significa que el tamaño del array debe ser conocido en
tiempo de compilación, homogéneo significa que todos los elementos del
array son del mismo tipo.
Los elementos del array se almacenan en posiciones continuas de memoria,
a cada una de las cuales se puede acceder directamente.
Vector A
A[1]
25
A[2]
2
A[3]
32
A[4]
70
A[5]
51
Vector A compuesto
de 5 filas y una
columna
Ej: Supongamos que se desea almacenar las notas o calificaciones del
primer parcial de los 50 estudiantes del examen de ¿Programación? Para
almacenar estas calificaciones se necesita, reservar cincuenta posiciones de
memoria, dar un nombre al array y a cada uno de los cincuenta estudiantes,
asignarles su calificación correspondiente, es decir dar el índice o subíndice
del array.
Pág. 11
MAT-103
INFORMATICA
Vector
Calificaciones
Calificación [1]
25
Calificación [2]
70
Calificación [3]
32
Nombre del vector: Calificaciones
Subíndice:[1] [2] [3] [6]
Contenido:
Calificación [20]=70
“
“
Calificación [6]
51
Ej: Registrar las cantidades de tickets de diferentes artículos.
Articulo [1]
40
Articulo [2]
52
Articulo [3]
7
Contenido (valor) Tipo: Entero
“
“
Articulo [20]
15
Índice o Subíndice
Nombre del vector
Ej: Diseñar un vector que pueda registrar las tallas de estudiantes de la
Facultad Técnica.
Pág. 12
MAT-103
INFORMATICA
Talla[1] Talla[2] Talla[3] Talla[4] Talla[5] Talla[6] Talla[7] Talla[8] Talla[9] Talla[10]
1,54
1,64
Talla:
[1] - [10]
1,74; 2,00
4.1.1.
1,75
1,40
1,78
1,80
2,00
1,55
1,94
1,74
Nombre del Array
Índice o Subíndice
Contenido (Valor Tipo: Real)
Declaración del tipo array.-
Normalmente la estructura de un array (Vector) se describe por la
declaración del tipo Array, a continuación se asigna el almacenamiento para
uno o más array de este tipo.
Formato:
Type
Nombre_array = Array [tipo subíndice] Of Tipo;
Nombre_array = Identificador valido.
Tipo subíndice=
Puede ser de tipo ordinal: bolean o char, un tipo
enumerado o sea tipo Durango existe un
elemento por cada valor del tipo subíndice.
Tipo=
Describe el tipo de cada elemento del vector,
todos los elementos de un vector son del mismo
tipo.
Ej: Declaración de las calificaciones:
Type
Calificación=Array [1..50] Of Integer;
Ej: Declaración de cantidades de artículos:
Type
Articulo=Array [1..20] Of Integer;
Pág. 13
MAT-103
INFORMATICA
Ej: Declaración de tallas:
Type
Talla=Array [1..10] Of Real;
El subíndice o índice del array debe ser de tipo simple: entero (Integer,
ShortInt, Byte, Word), lógicos, carácter o enumerado, pero no Real.
Ejemplos típicos:
4.1.2.
1 . . 10
‘C’. . ‘N’
True . . False
Azul . . Marron
Entero
Caracteres
Lógicos
Enumerados
Variables de tipo array.-
Las declaraciones de tipo de dato Array no crea ninguna variable especifica
tipo Array en realidad la declaración Type proporciona información
perteneciente a un grupo de Array como un todo.
Las variables tipo Array son creadas utilizando la palabra reservada Var,
cuyo formato es:
Var
Nombre array: Nombre Tipo;
Nombre array = Nombre elegido por la variable.
Nombre tipo
=
Igual nombre que el utilizado en Type
Ej:
Type
Articulo=Array [1..20] Of Integer;
Var
Lista: Articulo;
Ej: Calificaciones de los estudiantes:
Type
Var
Calificación=Array [1..50] Of Integer;
Notas: Calificación;
Pág. 14
MAT-103
4.2.
INFORMATICA
Operaciones con vectores
Los vectores (arrays) no se pueden leer / escribir en una sola operación o
sentencia, la lectura y escritura de un array se debe hacer elemento a
elemento, para realizar estas operaciones se deben leer o visualizar los
componentes de un array mediante estructuras repetitivas.
Las operaciones que se pueden realizar con vectores durante el proceso de
resolución de un problema son:






Asignación
Lectura / escritura
Recorrido (acceso secuencial)
Actualizar (añadir, borrar, insertar)
Ordenación
Búsqueda
4.2.1 Asignación de un vector.La asignación de valores a un elemento del vector se realizará con la
instrucción de asignación:
A [20]

5
Asigna el valor 5 al elemento 20 del
vector A
Si se desea asignar valores a todos los elementos de un vector, se debe
recurrir a estructuras repetitivas (desde, mientras o repetir) e incluso
selectivas (si-entonces, según).
Leer (A [ I ])
Si se introducen los valores 5, 7, 8, 14 y 12 mediante asignaciones
A[1]
A[2]
A[3]
A[4]
A[5]





5
7
8
14
12
El ejemplo anterior ha asignado diferentes valores a cada elemento del
vector A; si se desea dar el mismo valor a todos los elementos, la notación
algorítmica se simplifica con el siguiente formato:
Desde I = 1 hasta 5 hacer
A [ I ] 8
Pág. 15
MAT-103
INFORMATICA
Fin _ desde
Donde A [ I ] tomará los valores numéricos A [1] =8;A
[2]
=8;
;A[5]=8; Se puede
utilizar también la notación.
A

.......
8
Para indicar la asignación de un mismo valor a cada elemento de un vector
A. Esta notación se considerará con mucho cuidado para evitar confusión
con posibles variables simples numéricas de igual nombre (A).
4.2.2 Lectura / escritura de un vector.La lectura de datos en arrays u operaciones de entrada normalmente se
realizan con estructuras repetitivas, aunque puede también hacerse con
estructuras selectivas. Las instrucciones simples de lectura se representarán
como:
Leer [A]
Escribir [A]
Leer (V[5])
Lectura del vector A
Escritura del vector A
Leer el elemento V[5] del vector V
Los elementos de un vector pueden ser visualizados situando una sentencia
de salida dentro de una estructura repetitiva.
4.2.3 Almacenamiento de arrays en memoria
La representación gráfica describe el almacenamiento de los diferentes
arrays de una o dos dimensiones, el almacenamiento en la computadora
está dispuesto fundamentalmente en secuencia contigua, de modo que cada
acceso a una matriz o tabla en la maquina debe realizar la tarea de convertir
en la posición dentro del array en una posición perteneciente a una línea.
A[1]
A[2]
A[i]
A[1,1]
A[1,2]
A[1,3]
A[1,4]
A[2,1]
A[2,2]
A[2,3]
A[2,4]
A[3,1]
A[3,2]
A[3,3]
A[3,4]
A[n]
4.2.4 Almacenamiento de un vector
Pág. 16
MAT-103
INFORMATICA
El almacenamiento de un vector en memoria se realiza en celdas o
posiciones secuenciales, así en el caso de un vector A con un subíndice de
rengo 1 a n.
Posición B
A[1]
Posición B+1
A[2]
.
.
.
A[i]
.
.
.
Posición B+n-1
4.3.
A[n]
Arrays de varias dimensiones
Es un grupo de datos pueden ser representados en una tabla o matriz con
dos o más subíndices.
Ej.:
Tablas de distancias kilométricas entre ciudades
Un cuadro de horarios de trenes o aviones
Informe de ventas periódicas (mes / semana / día / ventas totales)
Se pueden definir tablas o matrices como arrays multidimensionales, cuyos
elementos se pueden referenciar por dos, tres o más subíndices, los cuales
se dividen en dos grandes grupos:
Arrays bidimensionales 2 dimensiones
Arrays multidimensionales 3 o más dimensiones
4.3.1 Arrays bidimensionales (tablas / matrices)
Un arrays bidimensional (tabla o matriz) es un array con dos índices, al
igual que los vectores que deben ser ordinales, para localizar o almacenar
Pág. 17
MAT-103
INFORMATICA
un valor en el array se deben especificar dos posiciones (dos subíndices),
uno para la fila y otro para la columna.
C [ 3 , 4]
Elemento C de la fila 3 y columna 4
COLUMNAS
1
1
2
3
4
5
6
7
8
A[1,1] A[1,2] A[1,3]
A[1,8]
A[5,1]
A[5,8]
2
FILAS
3
4
5
A[3,4]
Array bidimensional A de 5 filas y 8 columnas
4.3.2 Declaración de los arrays bidimensionales.Los arrays bidimensionales (tablas, matrices) se crean con demarcaciones
con la palabra reservada Type y Var.
Se debe indicar en la declaración de una matriz:
1. Nombre del array.
2. Tipo del array.
3. Rango permitido (subíndice).
Formato:
Type
Identificador=Array [indice1, indice2] Of Tipo elemento;
Ej:
Type
Estudiantes=Array [1..5, 1..4] Of Real;
Var
Clase: Estudiantes;
Pág. 18
MAT-103
INFORMATICA
El orden más natural de procesar los vectores es de orden secuencial del
1ro al último, en el caso de las matrices existen diferentes órdenes para su
recorrido, lo más usuales son: recorrido por filas y recorrido por columnas.
Recorrido por filas/columnas.Los elementos de la primera fila / columna se procesa primero y a
continuación los de la segunda fila columna y a si sucesivamente.
Ej: Sea el array A de 3 filas y 4 columnas.
Recorrido por filas
A[1,1]
A[1,2]
A[1,3]
A[1,4]
A[2,1]
A[2,2]
A[2,3]
A[2,4]
A[3,1]
A[3,2]
A[3,3]
A[3,4]
Recorrido por columnas
A[1,1]
A[1,2]
A[1,3]
A[1,4]
A[2,1]
A[2,2]
A[2,3]
A[2,4]
A[3,1]
A[3,2]
A[3,3]
A[3,4]
Pág. 19
MAT-103
INFORMATICA
Almacenamiento por filas
4.4.
Almacenamiento por
columnas
A[1,1]
A[1,1]
A[1,2]
A[2,1]
A[1,3]
A[3,1]
A[1,4]
A[1,2]
A[2,1]
A[2,2]
A[2,2]
A[3,2]
A[2,3]
A[1,3]
A[2,4]
A[2,3]
A[3,1]
A[3,3]
A[3,2]
A[1,4]
A[3,3]
A[2,4]
A[3,4]
A[3,4]
Arrays multidimensionales
Un array puede ser definido de tres dimensiones, cuatro dimensiones, hasta
de n-dimensiones. Los conceptos de rango de subíndices y número de
elementos se pueden ampliar directamente desde un array de una y dos
dimensiones a estos arrays son de orden más alto.
Turno pascal no limita el número de dimensiones de un array, pero si que
debe estar declarado el tipo de cada subíndice.
Formato:
1. Type
Identificador = array [indice 1] of array [indice 2] .. of array [indice n] of tipo de elemento.
2. type
Identificador = array [índice 1, índice 2 .. índice n] of tipo de elemento.
Ejemplo:
1. type
Exámenes
= Array[1..5, 1..3] of 0..100;
Dinero = Array[1..50, 1..12, 1980..1990] of real;
2. type
Fila
T1
= array [1 . . 10] of integer;
= array [1 . . 5] of Fila;
Pág. 20
MAT-103
INFORMATICA
T2
T3
= array [1 . . 5] of array [ 1 . . 12] of integer;
= array [1 . . 5, 1 . . 12] of integer;
Pág. 21
Descargar