1 3 Diseno de Algoritmos

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 17

UNIDAD I

1.3 DISEÑO DE ALGORITMOS

1.3.1 Metodología para la solución de problemas.

Para resolver, o al menos plantear una posible solución, de cualquier tipo de problema
existen diferentes metodologías basadas en modelos de acuerdo al problema en
cuestión.

En la solución propuesta para resolver problemas por computadoras, existe una


metodología en 7 pasos que se describen a continuación; los cuales de recomiendan
seguir en ese orden.

Paso 1.-Definición (planteamiento) del problema.

Esta dada por el enunciado del problema, el cual debe ser claro y completo. Es
importante que se conozca exactamente que es lo que se desea que realice la
computadora, mientras esto no se conozca del todo, no tiene mucho caso continuar con
la siguiente etapa.

Paso 2.- Análisis del problema.

Esta fase requiere una clara definición donde se contemple exactamente lo que debe
hacer el programa y el resultado o solución deseada.

Dado que se busca una solución se precisan especificaciones de entrada y salida.

Para definir bien un problema es conveniente responder a las siguientes preguntas:

¿Qué entradas se requieren? (cantidad y tipo)


¿Cuál es la salida deseada? (cantidad y tipo)
¿Qué método(s) produce(n) la salida deseada?

Paso 3.- Diseño del algoritmo.

En la fase de análisis en el proceso de programación se determina que hace el


programa. En la fase de diseño se determina como hace el programa la tarea solicitada.

Los métodos utilizados para el proceso del diseño se basan en el conocido divide y
vencerás. Es decir la resolución de un problema complejo se realiza dividiendo el
problema en subproblemas y a continuación dividir estos subproblemas en otros de
nivel mas bajo, hasta que sea implementada una solución en la computadora.

Programación estructurada. M.C. Roberto Ibáñez Córdova 1


Cada programa bien diseñado consta de un programa principal (el módulo de nivel mas
alto) que llama a subprogramas (módulos) de nivel mas bajo, que a su vez pueden
llamar a otros subprogramas.

Los módulos pueden ser planeados, codificados, comprobados y depurados


independientemente y a continuación combinarlos entre sí. Este proceso implica la
ejecución de estos pasos hasta que el programa se ha terminado:

 Programar un módulo.
 comprobar el módulo.
 Si es necesario, depurar el módulo.
 Combinar el módulo, con el resto de los otros módulos.

El diseño del algoritmo es independiente del lenguaje de programación.

Paso 4.- Codificación.

Es la escritura en un lenguaje de programación de la representación de un algoritmo.


Dado que el diseño del algoritmo es independiente del lenguaje de programación
utilizado en su implementación, el código puede ser escrito con igual facilidad en un
lenguaje o en otro.

Una vez que el algoritmo se ha convertido en un programa fuente, es preciso


introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco.
Esta operación se realiza con un editor de texto, posteriormente el programa fuente se
convierte en un archivo de programa que se guarda en un disco.

El programa fuente debe ser traducido a lenguaje máquina. Este proceso se realiza con
el compilador y el sistema operativo que se encarga prácticamente de la compilación. Si
al compilar el programa fuente se presentan errores (errores de compilación), es
necesario volver a editar el programa, corregir los errores y compilar de nuevo. Esto se
repite hasta que ya no se presenten más errores, obteniéndose el programa objeto, el
cual todavía no es ejecutable directamente. Al ya no existir errores en el programa
fuente se debe instruir al sistema operativo para que efectúe la fase de montaje o
enlace, del programa fuente con las librerías del programa del compilador. Este proceso
de montaje produce un programa ejecutable.

Cuando se ha creado un programa ejecutable este se puede ya ejecutar desde el


sistema operativo con solo teclear su nombre.

Suponiendo que no existen errores durante la ejecución (errores en tiempo de


ejecución), se obtendrá la salida de resultados correctos del programa.

Programación estructurada. M.C. Roberto Ibáñez Córdova 2


Paso 5.- Prueba y depuración.

Es el proceso de ejecución del programa con una amplia variedad de datos de entrada,
llamados datos de test o prueba como son: valores normales de entrada, valores
extremos de entrada que comprueben los límites del programa y valores de entrada que
comprueben aspectos especiales del programa. Estos determinarán si el programa
contiene errores o no.

Al ejecutar un programa se pueden producir tres tipos de errores:

 Errores de Compilación: Se producen normalmente por un uso incorrecto de las


reglas del lenguaje de programación, suelen ser errores de sintaxis.

 Errores de Ejecución: Se producen por instrucciones que la computadora puede


comprender pero no ejecutar. En estos casos se detiene la ejecución del
programa y se imprime un mensaje de error. Ejemplo de esto puede ser una
división por cero.

 Errores Lógicos: Se producen en la lógica del programa y la fuente del error


suele ser el diseño del algoritmo, son más difíciles de detectar puesto que el
programa puede funcionar y no producir errores de compilación ni de ejecución
pero regresará resultados incorrectos. En este caso se debe regresar a la fase
de diseño, modificar el algoritmo, cambiar el programa fuente y compilar y
depurar una vez más.

Paso 6.- Documentación.

La importancia de la documentación debe ser destacada por su influencia en la etapa


final, ya que programas pobremente documentados son difíciles de leer, mas difíciles
de depurar y casi imposibles de mantener y modificar.

Puede ser interna y externa. La documentación interna es la contenida en líneas de


comentarios. La documentación externa incluye análisis, diagramas de flujo y/o
pseudocódigos, manuales de usuarios con instrucciones para ejecutar el programa y
para interpretar los resultados.

Paso 7.- Mantenimiento.

La documentación es vital cuando se desea corregir posibles errores futuros o bien


cambiar el programa. Estos cambios se denominan mantenimiento del programa.

Además es de buena costumbre para todo buen programador, dejar comentado su


código, esto es para que el futuro programador pueda darle mantenimiento fácilmente a
el programa, o incluso, si es el mismo creador quien debe darle mantenimiento.

Programación estructurada. M.C. Roberto Ibáñez Córdova 3


1.3.2 Definición de lenguajes algorítmicos.

Primeramente comprendamos que es un algoritmo: El término algoritmo no está


exclusivamente relacionado con las matemáticas o informática. En realidad, en la vida
cotidiana empleamos algoritmos en multitud de ocasiones para resolver diversos
problemas. Ejemplos son el uso de una lavadora (se siguen las instrucciones), para
cocinar (se siguen los pasos de la receta). También, existen ejemplos de índole
matemática, como el algoritmo de la división para calcular el cociente de dos números,
el algoritmo de Euclides para calcular el máximo común divisor de dos enteros
positivos, o incluso el método de Gauss para resolver sistemas de ecuaciones lineales,
en fin existen muchos algoritmos en nuestra vida diaria y quizás algunas veces no nos
damos cuenta de ello, pueden existir en muchas partes y si analizamos un poco,
podamos verlo de una mejor forma, a todo esto un algoritmo es una serie de pasos a
seguir, para llegar a un fin.

Definición: Un algoritmo es un conjunto finito de instrucciones o pasos


que sirven para ejecutar una tarea o resolver un problema. De un modo
más formal, un algoritmo es una secuencia finita de operaciones
realizables, no ambiguas, cuya ejecución da una solución de un
problema.

Los algoritmos no se implementan sólo como programas, algunas veces en una red
neuronal biológica (por ejemplo, el cerebro humano implementa la aritmética básica o,
incluso, una rata sigue un algoritmo para conseguir comida), también en circuitos
eléctricos, en instalaciones industriales o maquinaria pesada.

El análisis y estudio de los algoritmos es una disciplina de las ciencias de la


computación, y en la mayoría de los casos su estudio es completamente abstracto sin
usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por
eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el
análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de
la implementación particular.

Algunos escritores restringen la definición de algoritmo a procedimientos que deben


acabar en algún momento, mientras que otros consideran procedimientos que podrían
ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún
dispositivo físico que fuera capaz de funcionar eternamente.

Programación estructurada. M.C. Roberto Ibáñez Córdova 4


Definición: Los lenguajes algorítmicos permiten
representar los pasos a seguir para resolver un problema.
Los lenguajes algorítmicos más comunes son:

a) Descripción Narrada.
b) Pseudocódigo.
c) Diagramas de Flujo.

Cada uno de estos lenguajes algorítmicos utiliza un método y reglas diferentes para
representar los pasos a seguir y plantear la solución de un problema (algoritmos).

a) Descripción Narrada. Este algoritmo es caracterizado porque sigue un proceso de


ejecución común y lógico, describiendo textualmente paso a paso cada una de las
actividades a realizar dentro de una actividad determinada.

Ejemplo. Algoritmo para asistir a clases:


1. Levantarse.
2. Bañarse.
3. Vestirse.
4. Desayunar.
5. Cepillarse los dientes.
6. Salir de casa.
7. Tomar el autobús.
8. Llegar a la Escuela.
9. Buscar el aula.
10. Ubicarse en un asiento.

b) Descripción en Pseudocódigo (Pseudo = falso). El pseudocódigo no es realmente


un código sino una imitación y una versión abreviada de instrucciones reales para las
computadoras.

Es una técnica para diseño de programas que permite definir las estructuras de datos,
las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de
computadora para solucionar un determinado problema.

Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las
directrices y los elementos de los lenguajes de programación.

Programación estructurada. M.C. Roberto Ibáñez Córdova 5


INICIO Se utiliza para el indicar el inicio del algoritmo.

FIN Se utiliza para el indicar el fin del algoritmo.

PREGUNTAR Se utiliza para pedir datos y guardarlos en la(s)


variable(s) que se indica(n) después.

HACER Se utiliza para indicar procesos, que se mencionan


después de esta palabra, tales como asignaciones de
valores a variables.

MOSTRAR Se utiliza para indicar que el texto (si se escribe entre


comillas) o el contenido de una variable (si se escribe
sin comillas) deberá imprimirse en la pantalla. El texto o
la variable se escribe después de esta palabra.

Pasos: 1,2,3,….. Se utilizan para indicar el flujo de los procesos.

Considere las siguientes reglas básicas en la construcción de pseudocódigos:

 Solamente debe utilizar las palabras clave al inicio de cada paso a seguir.
 No debe codificar instrucciones de ningún lenguaje de programación dentro
de los pasos a seguir.
 No se olvide del orden de los pasos.
 En cada paso debe indicarse lo que se quiere hacer, no como se va a hacer.
 Utilice nombres apropiados de nombres dentro de los pasos, que indiquen
claramente lo que contienen.

Ejemplo. Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto,
suma y media aritmética.

1) INICIO
2) PREGUNTAR a, b, c, d
3) HACER producto = a * b * c * d
4) HACER suma=a + b + c + d
5) HACER media = suma / 4
6) MOSTRAR (producto, suma, media)

Programación estructurada. M.C. Roberto Ibáñez Córdova 6


7) FIN
c) Diagramas de Flujo (flujogramas). Son la representación gráfica de la solución
algorítmica de un problema. Para diseñarlos se utilizan determinados símbolos o figuras
que representan una acción dentro del procedimiento. Utilizan unos símbolos
normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los
símbolos unidos con flechas, denominadas líneas de flujo, que indican el orden en que
los pasos deben ser ejecutados.

Se utiliza para indicar inicio y fin de un proceso.

Se utiliza para pedir datos y guardarlos en la(s)


variable(s) que se indica(n) dentro de la figura.

Se utiliza para indicar procesos, que se colocan dentro


del rectángulo, tales como asignaciones de valores a
variables,
Se utiliza para indicar que el texto (si se escribe entre
comillas) o el contenido de una variable (si se escribe
sin comillas) deberá imprimirse en la pantalla. El texto o
la variable se escribe dentro de la figura.

Las flechas se utilizan para indicar el flujo de los


procesos

Considere las siguientes reglas básicas en la construcción de diagramas de flujo:

 Solamente debe utilizar las figuras indicadas y de un tamaño adecuado.


 No debe codificar instrucciones del lenguaje dentro de las figuras.
 Debe dibujar de arriba hacia abajo y de izquierda a derecha.
 No se olvide de las flechas, las cuales siempre se usan verticales u
horizontales, jamás curvas.
 En cada paso expresar una acción concreta, donde de preferencia debe
indicarse lo que se quiere hacer, no como se va a hacer.
 Utilice nombres apropiados dentro de las figuras, que indiquen claramente lo
que contienen.
 Evitar cruce de flujos.
 Siempre tienen una figura de inicio.
 Siempre deben tener una figura que indica el final.

Programación estructurada. M.C. Roberto Ibáñez Córdova 7


Ejemplo. Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto,
suma y media aritmética.

Ventajas de usar flujogramas.


 Rápida comprensión de las relaciones.
 Análisis efectivo de las diferentes secciones del programa.
 Pueden usarse como modelos de trabajo en el diseño de nuevos programas o
sistemas.
 Comunicación con el usuario.
 Documentación adecuada de los programas.
 Codificación eficaz de los programas.
 Depuración y pruebas ordenadas de programas.

Desventajas de los flujogramas.


 Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y
diseño.
 Acciones a seguir tras la salida de un símbolo de decisión pueden ser difíciles de
seguir si existen diferentes caminos.
 No existen normas fijas para la elaboración de los diagramas de flujo que
permitan incluir todos los detalles que el usuario desee introducir.

Programación estructurada. M.C. Roberto Ibáñez Córdova 8


En esta materia, solamente trabajaremos con pseudocódigos y diagramas de flujo.

Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo

 Ocupa menos espacio en una hoja de papel


 Permite representar en forma fácil operaciones repetitivas complejas
 Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de
programación.
 Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operación

Por estas razones en los libros es más común encontrar algoritmos escritos en
pseudocódigos que diagramas de flujo, sin embargo, los diagramas de flujo cuando se
inicia en la programación son más fáciles de entender y de utilizar.

Recordemos que para elaborar los algoritmos, debemos realizar los tres primeros pasos
para resolver problemas por computadora, que son:

Paso 1.- Definición (planteamiento) del problema.

Paso 2.- Análisis del problema.

Paso 3.- Diseño del algoritmo.

Veamos algunos ejemplos básicos donde apliquemos aunque de manera simple cada
uno de estos pasos, hasta el paso No.3 de la metodología para resolver problemas por
computadora, no es necesario sentarse frente a ella, básicamente consiste en entender
perfectamente el problema a resolver, de ser necesario habrá que hacer una
investigación profunda con muchos ejemplos hasta que quede completamente claro lo
que se desea obtener como resultado.

Programación estructurada. M.C. Roberto Ibáñez Córdova 9


Problema No.1. Determinar el área de un cuadrado.

Paso 1.- Definición (planteamiento) del problema.

Paso 2.- Análisis del problema.

Es importante conocer la fórmula que permitirá determinar el área de un cuadrado:

Área = Lado2
Area = Lado * Lado.

Para que la computadora o cualquier persona pueda darnos el área, requiere que le
proporcionemos el valor de cualquiera de los lados (valen lo mismo). Una vez que ya
conocemos el valor del lado, entonces, ya podemos determinar el área aplicando la
fórmula anterior.

Paso 3.- Diseño del algoritmo.

Pseudo código Diagrama de flujo

Programación estructurada. M.C. Roberto Ibáñez Córdova 10


1.- INICIO
2.- PREGUNTAR lado
3.- HACER area=lado*lado
4.- MOSTRAR area
5.- FIN

Problema No.2. Determinar el área de un rectángulo.

Paso 1.- Definición (planteamiento) del problema.

Paso 2.- Análisis del problema.

Es importante conocer la fórmula que permitirá determinar el área del rectángulo:

Área = Lado1 * Lado2.

Para que la computadora o cualquier persona pueda darnos el área, requiere que le
proporcionemos los valores de ambos lados. Una vez que ya los conocemos,
entonces, podremos determinar el área aplicando la fórmula anterior.

Paso 3.- Diseño del algoritmo.

Pseudocódigo Diagrama de flujo

1.- INICIO
2.- PREGUNTAR lado1

Programación estructurada. M.C. Roberto Ibáñez Córdova 11


3.- PREGUNTAR lado2
4.- HACER area=lado1*lado2
5.- MOSTRAR area
6.- FIN

Observación: En el Algoritmo, en una línea o figura se pueden pedir dos o más datos
al mismo tiempo.

Problema No.3. Determinar el área de un círculo.

Paso 1.- Definición (planteamiento) del problema.

Paso 2.- Análisis del problema.

Es importante conocer las fórmulas que permitirá determinar el área del círculo:

Área = PI * Radio2, Area = PI * Radio * Radio, Area = 3.14159 * Radio * Radio.

Para que la computadora o cualquier persona pueda darnos el área, requiere que le
proporcionemos el valor del Radio, PI no es necesario pedirlo por que es un valor
constante y nunca cambia (PI=3.14159). Una vez que ya tenemos el valor del radio,
entonces, podremos determinar el área aplicando la fórmula anterior.

Paso 3.- Diseño del algoritmo.

Programación estructurada. M.C. Roberto Ibáñez Córdova 12


Pseudocódigo Diagrama de flujo

1.- INICIO
2.- PREGUNTAR radio
3.- HACER area = PI*radio*radio
4.- MOSTRAR area
5.- FIN

Problema No.4. Elabore un Algoritmo que convierta Kilómetros a Milímetros.

Paso 1.- Definición (planteamiento) del problema.

Convertir una unidad dada en kilómetros a milímetros

1 kilómetro equivale a 1000 metros

1 metro equivale a 1000 milímetros

Por lo tanto 1 kilómetro contiene 1,000,000 milímetros

Paso 2.- Análisis del problema.

Es importante conocer la fórmula que permitirá realizar la conversión.

mm = Kms*1,000,000.

Para que la computadora o cualquier persona pueda realizar la conversión, requiere


que le proporcionemos el valor de los Kilómetros a convertir. Con este valor, podremos
determinar la cantidad de milímetros aplicando la fórmula anterior.

Paso 3.- Diseño del algoritmo.

Programación estructurada. M.C. Roberto Ibáñez Córdova 13


Pseudocódigo Diagrama de flujo

1.- INICIO
2.- PREGUNTAR kms
3.- HACER mm= kms*1,000,000
4.- MOSTRAR mm
5.- FIN

Problema No.5 Elabore un Algoritmo que convierta Millas a Kilómetros.

Paso 1.- Definición (planteamiento) del problema.

Convertir una unidad dada en millas a kilómetros

1 Milla equivale a 1609 kilómetros

Paso 2.- Análisis del problema.

En este caso se conocen las Millas y se desea convertir a kilómetros, por lo tanto,
despejamos de la fórmula y nos queda:

Kms = Millas*1.609.

Para que la computadora o cualquier persona pueda realizar la conversión, requiere


que le proporcionemos el valor de las Millas a convertir. Con este valor, podremos
determinar la cantidad de kilómetros aplicando la fórmula anterior.

Paso 3.- Diseño del algoritmo.

Pseudocódigo Diagrama de flujo

Programación estructurada. M.C. Roberto Ibáñez Córdova 14


1.- INICIO
2.- PREGUNTAR millas
3.- HACER kms= millas*1.609
4.- MOSTRAR kms
5.- FIN

Problema No.6. Elabore un programa que calcule la velocidad conociendo la distancia


y el tiempo de un móvil.

Paso 1.- Definición (planteamiento) del problema.

Distancia = Velocidad * tiempo

Paso 2.- Análisis del problema.

Velocidad = Distancia / Tiempo


Donde:

dis = distancia
tiem = tiempo
vel = velocidad

Para que la computadora o cualquier persona pueda realizar la conversión, requiere


que le proporcionemos la distancia y el tiempo del móvil. Con estos valores, podremos
determinar la velocidad aplicando la fórmula anterior.

Paso 3.- Diseño del algoritmo.

Programación estructurada. M.C. Roberto Ibáñez Córdova 15


Resumen del tema.

a) Los Diagramas de flujo y los Pseudocódigos tiene el mismo objetivo,


solamente se presentan de forma diferente. Observe que para cada línea de
pseudocódigo corresponde una figura del diagrama de flujo y que además
sirven para lo mismo.

b) Los Diagramas de flujo son más fáciles de interpretar, pero consumen


demasiado espacio, a medida que el programa crece.

c) Es importante practicar ambos métodos.

d) Más adelante, cuando se programe en la computadora, deberán primero


realizar los algoritmos con esta metodología.

e) Recuerde que para construir algoritmos (cuando se es principiante) es


necesario respetar siempre los siguientes pasos para asegurar su
aprendizaje.

 Entender el problema que se desea analizar. Es como si le pidieran su


opinión sobre el cáncer y no sabe de ello, por lo tanto, no podrá
externar opinión alguna. Si ya sabe de lo que le hablan continúe, en
caso contrario busque suficiente información del tema.

Programación estructurada. M.C. Roberto Ibáñez Córdova 16


 Identifique qué datos necesita conocer y qué fórmula(s) requiere.
Escríbalas.
 Construya su algoritmo y pida a su asesor que lo revise.

Programación estructurada. M.C. Roberto Ibáñez Córdova 17

También podría gustarte