Está en la página 1de 41

UNIVERSIDAD DE ORIENTE

NÚCLEO NUEVA ESPARTA


ESCUELA DE INGENIERÍA Y CIENCIAS APLICADAS

ALGORITMOS Y ESTRUCTURAS DE DATOS I.


CÓDIGO: 230-1214

Msc. María Virginia Gil Guevara C.I 17.654.555


Núcleo Temático

Programación

2 Estructurada
Competencia Específica
Aplica los principios de programación estructurada,
desarrollando soluciones algorítmicas a problemas
complejos, empleando para ello los diferentes tipos
de módulos parametrizados.
Saberes Fundamentales

Conceptual
▪ Interpreta y generaliza los principios de la programación estructurada.
▪ Comprende los procesos involucrados en el diseño descendente y en
la programación modular.
Saberes Fundamentales

Procedimental
▪Aplica los elementos de la programación estructurada de manera adecuada y
racional, para la resolución de problemas.
▪Usa adecuadamente conocimientos en la elaboración de algoritmos y
programas.
▪Expresa en forma oral y escrita con el uso adecuado de los términos los
conocimientos adquiridos en el desarrollo del contenido del núcleo para lo
solución de problemas, y discute en grupo sobre los resultados obtenidos.
Saberes Fundamentales

Actitudinal- Valórico

▪Participa de manera permanente con interés y empatía en diferentes


actividades relacionadas con el tópico de estudio.
▪Trabaja en grupo respetando el esfuerzo del mismo, para la recolección y
lectura de información adicional y en el desarrollo de aplicaciones
relacionadas con el tópico.
Estrategías

Metodológicas Evaluación
▪Revisión de material de apoyo. ▪Mini-programas.
▪Discusiones socializadas. ▪Asignaciones.
▪Lluvias de ideas. ▪Talleres y quizes.
▪Resolución de problemas. ▪Exámenes teórico-prácticos.
▪Demostraciones prácticas en el salón ▪Proyecto.
de clases con ejercicios modelos. ▪Exposición.
 Teorema de la programación estructurada. Características y
Ventajas.
 Técnicas de programación estructurada.
📖  Procedimientos y Funciones.
Contenido
 Resolución de Problemas tanto de forma algorítmica como en
un lenguaje de programación establecido.
Teorema de Programación
Estructurada
Características de la
programación estructurada

▪El programa completo tiene un diseño modular.

▪Los módulos se diseñan con metodología descendente.

▪Cada módulo se codifica utilizando las tres estructuras de control básicas:


secuencia, selección y repetición. (Joyanes, 2003, p.52)
Ventajas

Mayor productividad en el diseño del Minimiza complejidad y errores


programa: Utiliza un número limitado de estructuras de control
que minimizan la complejidad de los programas y,
Estas técnicas aumentan considerablemente
por consiguiente, reducen los errores, hace los
la productividad en el diseño del programa
programas más fáciles de escribir, verificar, leer y
reduciendo en elevado grado el tiempo
mantener. Los programas deben estar dotados de
requerido para escribir, verificar, depurar y
una estructura.
mantener los programas.

.(Joyanes, 2003, p.50)


Técnicas de programación
estructurada.
Técnicas de programación
estructurada.

Diseño descendente o top down

Técnicas
programación Programación modular
estructurada

Estructuras de control básicas:


secuencia, condicionales y
repetitivas.

Elaborado con información de Joyanes, 2003, p.52)


Diseño descendente TOP-
DOWN

Aplica la técnica divide y vencerás:

Dividir estos Hasta que los


Problema Dividirlo en subproblemas en problemas sean
complejo subproblemas otros más más fáciles de
simples resolver

Este método de diseñar la solución de un problema principal


obtenido de las soluciones de sus subproblemas , se conoce ¿Por qué
descendente?
como diseño descente o top down (Joyanes, 2003,p.206).
Diseño descendente TOP-
DOWN

Corresponde en diseño del algoritmo a:


Problema Algoritmo
principal principal

Subproblema 1 Subproblema 2 Subproblema n Subalgoritmo 1 Subalgoritmo 3 Subalgoritmo n

Implementación en herramienta de programación

“El problema principal se soluciona por el correspondiente programa o algoritmo principal, también
denominado controlador o conductor(drive); y la solución de los subproblemas mediante subprogramas,
conocidos como procedimientos(subrutinas) o funciones. Los subprogramas en lenguaje algorítmico
se denominan subalgoritmos. (Joyanes, 2003,p.206).
Diseño descendente TOP-
DOWN

▪Ejemplo: Algoritmo que dado dos números enteros permita realizar la suma,
resta, multiplicación y división de los mismos.

Calculadora

Solicitar
Sumar Restar Multiplicar Dividir
números
Ventajas del diseño TOP-
DOWN

📌 El problema se comprende más fácilmente al dividirse en partes más simples denominadas


módulos.

📌 Las modificaciones en los módulos son más fáciles.

📌 La comprobación del problema se puede verificar fácilmente.

Nota: tras los pasos anteriores (diseño descendente y refinamiento por


pasos) es preciso representar el algoritmo mediante una determinada
herramienta de programación.

(Joyanes, 2003, p.224)


Programación Modular -
Características

Módulos Programa principal Más pequeños Control temporal

• El programa se divide • Cada programa • Si la tarea asignada a • Un módulo puede


en módulos(funciones contiene un módulo cada submódulo es transferir
y procedimientos), denominado demasiado compleja, temporalmente el
cada uno de los programa principal, éste deberá romperse control al otro
cuales ejecuta una que controla todo lo en otros módulos más módulo; sin embargo,
única actividad o que sucede; se pequeños. cada módulo debe
tarea y se analizan, transfiere el control a eventualmente
se codifican y ponen submódulos, y luego devolver el control al
a punto por separado lo devuelven al módulo del cual se
independientemente. finalizar. recibe originalmente
el control.

(Joyanes, 2003, p.224)


Programación Modular -
Ventajas

📌 Método de diseño flexible y potente para mejorar la productividad de un programa.

📌 La independencia de los módulos permite que diferentes programadores pueden trabajar


simultáneamente en el programa. Reduce tiempo del diseño y codificación.

📌 Cada módulo puede modificarse radicalmente sin afectar a otros módulos.

📌 Fácil de comprender y depurar.

📌 Reutilización de código

(Joyanes, 2003, p.49)


Módulo:

Tipos de módulos
Subalgoritmo o Subprograma
Procedimiento

📌 Son las partes independientes en las que se divide Función


un problema producto del diseño descendente. Es una
sección de código separada del programa principal
que puede ser llamada en un momento dado.
📌 Puede realizar las mismas acciones que
Algoritmo
principal(Raíz)
el algoritmo principal o programa:

Modulo 1 Módulo 2 Módulo 3 1.-Acepta datos.


2.-Realiza cálculos
Módulo 1.1 Módulo 2.1 3.-Devuelve resultados

Módulo 1.2
(Joyanes, 2003, pp.206-207)
Módulo
Subalgoritmo,Subprograma

Esquema de llamadas a subprogramas o subalgoritmos.

Un programa o algoritmo con un subprograma Un programa con diferentes niveles de subprogramas

Programa Principal Programa Principal Subprograma 1 Subprograma 1.1

Subprograma

Subprograma 2

Subalgoritmo

Algoritmo Principal

(Joyanes, 2003, pp.207)


Módulo:
Subalgoritmo o Subprograma

En un subprograma hay que distinguir dos


Un Subprograma hace
el mismo papel que el aspectos fundamentales:
programa principal.

Puede tener una


📌 La definición del subprograma: Es la
sección de
declaraciones especificación de los parámetros de entrada y/o
(variables, constantes)
y posee también unos
datos de entrada y de salida y las sentencias del subprograma.
salida(parámetros)
📌 La llamada al subprograma: Es una
Esto permite que el sentencia que pasa el control del programa al
subprograma sea
totalmente
independiente. subprograma.
Procedimientos y
Funciones.
Procedimientos

Procedimiento

Es un fragmento del programa que realiza una tarea concreta, y recibe un nombre por el que puede
ser llamado o activado desde otra parte del programa. Puede tener una serie de variables de
comunicación denominadas argumentos, que permiten el paso de información entre el programa y el
procedimiento. (Prieto y otros, 2002, p.56).
Estructura de Procedimiento
1era línea: Cabecera del procedimiento

Procedimiento Nombre_Proc [(Lista de Parámetros Formales)]


Declaración
Declaración o Constantes
∆declaración de constantes locales
definición Variables
∆Declaración de variables locales
Inicio
∆Cuerpo del Algoritmo
Fin Procedimiento

Llamada o
Llamar Nombre_proc[(Lista de parámetros actuales o reales)]
invocación

(Notación para el trabajo de Algoritmos en Pseudocódigo de la Universidad de Oriente,2004)


Ámbito de Identificadores Ámbito= Parte del programa o algoritmo
locales y globales donde se conoce el identificador

Las variables utilizadas en los programas principales y subprogramas se


clasifican en dos tipos:

📌 Locales: aquella que está declarada y definida 📌 Globales: una variable global es aquella que
dentro de un subprograma. El significado de una está declarada para el programa o algoritmo
variable se confina al procedimiento en el que está principal, del que dependen todos los
declarada. Cuando otro subprograma utiliza el subprogramas.
mismo nombre se refiere a una posición de
memoria diferente.

(Joyanes, 2003, pp.220)


Algoritmo principal(Raíz)
A:entero, B:entero, C:entero

Ámbito de Identificadores
locales y globales Modulo 1
Módulo 2 Módulo 3
X:entero,Y:entero,Z:
A:real,X:entero B:entero,D:entero
entero

Reglas de Ámbito

📌 Una variable o constante declarada en un Algoritmo ¿Cuál es el Problema? o Nombre


Declaración
módulo(local) es únicamente accesible desde allí. Constantes
Un parámetro formal se considera también una ∆ AQUÍ SE DECLARAN LAS CONSTANTES GLOBALES
Tipos
declaración local. Nombre_Tipo = Tipo de dato
Variables
📌 Las variables locales (de un módulo), pueden ∆ AQUÍ SE DECLARAN LAS VARIABLES GLOBALES
Inicio
llamarse igual a las de otros, incluso igual que una ∆Cuerpo del Algoritmo
Fin
variable global, se toma en cuenta la interna.
Correspondencia posicional

Parámetros formales y reales Se logra aparejando(colocarlos en el mismo orden) los


parámetros actuales con los formales para que
adquieran los valores que le corresponden.
Comunicación con módulo:
paso de parámetros:

📌 Cuando un programa llama a un


Formales:
subprograma, los datos envían a través de la Son los Actuales o
declarados en Reales:
lista de parámetros y se establece una Son los
el encabezado
correspondencia entre los parámetros de los parámetros
subprogramas utilizados en la
actuales y formales. llamada al
o módulo.
subprograma o
módulo.

(Joyanes, 2003, p.223)


Parámetros de Entrada,
Salida y E/S

Entrada

•Proporcionan valores desde el programa que llama y que se utilizan dentro de un


subprograma. En los subprogramas función, las entradas son los argumentos en el
sentido tradicional.

Salida

•Producen los resultados del subprograma; de nuevo si se utiliza el caso de una


función; este devuelve un valor calculado por dicha función, mientras que con
procedimientos pueden calcularse cero, una, o varias salidas.

Entrada y Salida (E/S)

•Un solo parámetro se utiliza para mandar argumentos a un programa y para devolver
resultados.

(Joyanes, 2003, p.224)


Paso de parámetros por
valor y por referencia

📌 POR VALOR: se tratan como variables locales y los 📌 POR REFERENCIA: En numerosas ocasiones se
valores iniciales se proporcionan copiando los valores de requiere que ciertos parámetros sirvan como parámetros de
los correspondientes parámetros actuales a los parámetros salida, es decir, se devuelvan los resultados de la unidad o
formales. Los cambios que se produzcan por efecto del programas que llaman. Este método se denomina paso por
subprograma no produce cambios en los parámetros referencia o también de llamada por dirección o variable.
originales. Parámetros de entrada y salida.
▪ Los parámetros son sólo de entrada.

(Joyanes, 2003, pp.225-226


Ejemplo: algoritmo que permita calcular el área y el perímetro de un rectángulo. POR REFERENCIA

Utilizando sólo procedimientos

Procedimiento solicitar_datos( ↑L:real, ↑ A:real)


Variables
Calculos_rectangulo Inicio
Escribir ”Introduzca el Largo del Rectángulo”
Leer L
Escribir ”Introduzca el Ancho del Rectángulo”
Leer A
Fin procedimiento
Solicitar datos Perimetro area

POR VALOR

Algoritmo calculos_rectancgulo Procedimiento area (L:real, A:real)


Declaración Variables
Constantes Inicio
Tipos Escribir”El área es:”,Largo*Ancho
Variables
Fin procedimiento
Largo,Ancho:real
Inicio
Largo0
Ancho0 Procedimiento perimetro (L:real, A:real)
Llamar solicitar_datos(Largo,Ancho) Variables
Llamar area(Largo,Ancho) Inicio
Llamar perimetro(Largo,Ancho) Escribir “El perímetro es:”,2*A+2*L
Fin Fin procedimiento
Funciones

Función

Es una operación que toma uno o más valores llamados argumentos y produce un valor
denominado resultado.

Pueden ser:
▪ Funciones internas o predefinidas: propias del lenguaje de programación.
▪ Funciones externas o definidas por el programador.

(Joyanes, 2003,p.207)
Estructura de Función
1era línea: Cabecera de la función

Función Nombre_Func[(Lista de Parámetros Formales)]:Tipo de dato


Declaración
Constantes
∆declaración de constantes locales
Declaración o Variables
definición ∆declaración de variables locales
Inicio
∆Cuerpo del Algoritmo
∆ Retorna el valor resultado en el nombre de la función
Nombre_func  nombre_variable o valor del tipo de la función
Fin Función

Nombre_variable  Nombre_Función[(Lista de parámetros actuales o reales)]


Llamada o
invocación Escribir Nombre_Función[(Lista de parámetros actuales o reales)]

También se puede llamar en estructuras condicionales y repetitivas. Como


resultado para evaluar la condición. Ejemplo: Si(sumar(A,B)=10) entonces
Fin si

(Notación para el trabajo de Algoritmos en Pseudocódigo de la Universidad de Oriente,2004)


Ejemplo: algoritmo que permita calcular el área y el perímetro de un rectángulo.

Utilizando procedimientos y Funciones

Procedimiento solicitar_datos( ↑L:real, ↑ A:real)


Calculos_rectangulo
Variables
Inicio
Escribir ”Introduzca el Largo del Rectángulo”
Leer L
Escribir ”Introduzca el Ancho del Rectángulo”
Solicitar datos Perimetro area Leer A
Fin procedimiento

Función area (L:real, A:real):real


Algoritmo calculos_rectancgulo
Variables
Declaración
Constantes Inicio
Tipos area L*A
Variables Fin Función
Largo,Ancho:real
Inicio
Largo0
Función perimetro (L:real, A:real):real
Ancho0
Variables
Llamar solicitar_datos(Largo,Ancho)
Escribir “El área es: ”, area(Largo,Ancho) Inicio
Escribir“Elperímetro es:”,perimetro(Largo,Ancho) perimetro  2*A+2*L
Fin Fin procedimiento
Ejemplo: Algoritmo que dado dos números enteros permita realizar la suma, resta,
multiplicación y división (primer número entre el segundo número).

Calculadora

Solicitar números Sumar Restar Multiplicar Dividir


Ejemplo: Algoritmo que dado dos números enteros permita realizar la suma, resta, multiplicación y división
(primer número entre el segundo número).
Algoritmo calculadora Función sumar(↓Num1, ↓Num2:entero):entero
Declaración Variables
Constantes Inicio
Tipos sumar  Num1+ Num2
Variables Fin Función
N1,N2:entero
Inicio Procedimiento restar(↓Num1, ↓Num2:entero)
N10 Variables
Inicio
N20
Escribir “Resta=”,Num1-Num2
Δ solicitar datos
Fin Procedimiento
Llamar Solicitar_numeros(N1,N2)
Escribir ”Suma =”, Suma(N1,N2)
Función multiplicar(↓Num1, ↓Num2:entero):entero
Llamar Resta(N1,N2) Variables
Escribir ”Multiplicación=”, Multiplicacion(N1,N2) Inicio
Escribir”División =”, Division(N1,N2) multiplicar  Num1* Num2
Fin Fin Función

Procedimiento solicitar_numeros(↓↑Num1, Función Dividir(↓Num1, ↓Num2:entero):real


↓↑Num2:entero) Variables
Variables Inicio
Inicio Si (Num2>0)entonces
Escribir “Introduzca Primer Número” dividir Num1/Num2
Leer Num1 Sino
Escribir “Introduzca segundo Número” dividir 0
Leer Num2 Fin si
Fin Procedimiento Fin Función
Ejemplo: Una importante empresa turística de la isla de Margarita requiere de un algoritmo para ser
utilizado en la venidera temporada vacacional, para manejar las ventas del día de los paquetes que
ofrece:
TIPO PAQUETE PRECIO POR PERSONA(Bs.)
Cubagua 36000
Isla de coche 40000

Se requiere:
1. Registrar las ventas de acuerdo a la cantidad, por tipo de paquete
2. Mostrar cantidad de paquetes, y monto recaudado por tipo y totalizado.

Ventas_paquetes

Menu Registrar_ventas Monto_ventas


Algoritmo ventas_paquetes Procedimiento menu (↓↑op:entero)
Declaración Variables
Constantes Inicio
cubagua=36000 Repetir
coche=40000 Escribir “Introduzca la opción”
Tipos Escribir “1.-Registrar ventas”
Variables
Escribir “2.-Monto recaudado por tipo y total”
opc:entero
c_cubagua:entero Escribir “3.-Salir”
c_coche:entero Leer opc
Inicio Si (opc <1 o opc >3) entonces
opc0 Escribir “Opción inválida”
c_cubagua0 Fin si
c_coche 0 Hasta (opc > =1) y (opc < =3)
Repetir Fin Procedimiento
Llamar menu(opc)
caso opc
1: Llamar registrar_ventas(c_cubagua,c_coche) Procedimiento monto_ventas (↓cub, ↓ coc:entero)
Variables
2: Llamar monto_ventas(c_cubagua,c_coche)
mon_cub,mon_coc:real
Fin caso Inicio
Hasta (opc=3) mon_cub  cub*cubagua
Fin mon_coc  coc*coche
Escribir “Cubagua: se vendieron:”,cub,”con Monto=”,mon_cub
Procedimiento registrar_ventas (↓↑cub, ↓↑ coc:entero) Escribir “Coche: se vendieron:”,coc,”con Monto=”,mon_coc
Variables Escribir “ Monto Total =”,(mon_cub+mon_coc)
Inicio Fin Procedimiento
Escribir “Introduzca la cantidad de paquetes cubagua”
Leer cub
Escribir “Introduzca la cantidad de paquetes coche”
Leer coc
Fin Procedimiento
Diferencias entre
Procedimientos y Funciones

1.-
Las Funciones devuelven
un valor, los
procedimientos pueden
2.-
El procedimiento se
devolver 0,1 o n valores y
en forma de lista de
parámetros.
declara igual que la
función, pero su nombre no
está asociado a ninguno de
3.- La llamada a una función
los resultados que obtiene. debe ser recibida por una
variable del tipo que
devuelve la función o en su
defecto por una instrucción
escribir, los procedimientos
no.

(Joyanes, 2003, pp.207)


Procedimiento

Efectos laterales 📌 Las variables globales, deben pasarse como


parámetro actual a los procedimientos, no se
deben modificar ni utilizar para consulta
directamente. Esto permite que los procedimientos
sean independiente.

📌 Las modificaciones que se produzcan mediante Función


una función o procedimiento en los elementos 📌 No modificar variables globales ni directamente
situados fuera del subprograma sin pasarlos por ni como parámetro de entrada y salida.
parámetros se conoce como efectos laterales. 📌 No utilizar variables globales sin pasarlas
como parámetro
📌 Considerados mala técnica de programación.
📌 No utilizar variables de entrada y salida.
📌 No ejecutar instrucciones de
entrada/salida(escribir en pantalla o leer del
teclado)
(Joyanes, 2003,p.235)
Referencias Bibliográficas

Caraballo, Y. (2014). Facultad de Ciencias de la UCV. Recuperado el 11 de 06 de 2016, de


http://www.ciens.ucv.ve/algoritmosyprogramacion/documentos/ND2011-
02_GuiasDeClase_YusneyiCarballoBarrera.pdf.

Guardati, S. (2007). Estructura de Datos Orientada a Objetos. México: Pearson PrenticeHall.

Joyanes, L. (1998). Metodología de la Programación. Madrid, España: McGrawHill.

Joyanes, L. (2003). Fundamentos de Programación. Algoritmos, Estructuras de Datos y Objetos.


Madrid, España: Mc Graw Hill.

Pinales, F., & Velázquez Amador, C. (2014). PROBLEMARIO DE ALGORITMOS RESUELTOS


CON DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO. Recuperado el 11 de 06 de 2016, de
Universidad Autónoma de Aguascalientes:
www.uaa.mx/direcciones/dgdv/editorial/docs/algoritmos.pdf.

Prieto, A., Lloris, A., & Torres, J. (2002). Introducción a la Informática. Madrid: McGrawHill.
📖
Gracias por su atención!

También podría gustarte