Está en la página 1de 14

UNIDAD 2. DESARROLLO DE LÓGICA ALGORITMICA.

2.1 Metodología para la solución de problemas

Metodología se define como el conjunto de acciones que se deben seguir para


alcanzar ciertos objetivos previamente teniendo algo de conocimiento sobre el
tema.
En informática existen diversas metodologías para la resolución de problemas
aplicando la programación, de las fuentes consultadas se prefiere mencionar la del
libro de Informática II/Computer de Patricia Ibañez y Gerardo García que consta
de los siguientes pasos:
Identificar el problema.- En esta fase se comprende el problema y se destacan los
datos que ayudan a entender el problema.
Sugerir (o plantear) alternativas de solución.- Apela al ingenio del desarrollador en
la propuesta de las posibles soluciones al problema.
Diseñar el algoritmo.- El resultado de esta etapa es crear una serie de pasos que
servirán para resolver el problema planteado.
Desarrollar la solución y comprobar los resultados.-En esta fase se comprueban
los resultados.
Pasos que en el temario serán tratados como Análisis del problema, Diseño del
algoritmo y Construcción y prueba del Algoritmo.
Consiste en entender de qué se trata el problema planteado y realizar su posible
solución, tomando en cuenta tres aspectos:
¿Qué es lo que se pide?
¿Cómo obtener lo que se pide?
¿Qué se necesita para obtener los resultados pedidos?
Consiste en estructurar la serie de pasos a seguir para la solución al problema,
cuando se llega a esta instancia hay que preguntarse:
¿Qué se consigue con eso? 
¿Se puede ver claramente que cada paso es correcto?
Es la escritura del algoritmo resultante en la etapa de diseño en un lenguaje de
programación. El resultado de la codificación es un programa fuente.

La compilación y ejecución es el proceso de traducción del programa fuente al


lenguaje máquina. Este proceso se realiza con el compilador y el Sistema
Operativo.

El resultado es la obtención de un programa objeto que todavía no es ejecutable


directamente. Después, mediante el Sistema Operativo se realiza la carga del
programa objeto con las librerías del programa compilador, resultando en un
programa ejecutable.

Cuando el programa ejecutable se ha creado, se puede ejecutar el programa


desde el Sistema Operativo generalmente con sólo teclear su nombre. Si no hay
errores se obtiene como salida el resultado del programa.

2.2 METODOLOGIA PARA EL DISEÑO DE SOFTWARE

La metodología top-down nos permite se basa en el paradigma “Divide y


Vencerás", lo que se traduce en dividir el problema en un conjunto de
subproblemas menores, los cuales a su vez pueden ser divididos aún más, y se
continua con este proceso hasta obtener subproblemas que puedan ser
manejados y sencillos de resolver.
El uso de esta metodología nos brinda una forma de pensar que busca solucionar
los problemas menores, para luego conectarlos y de esta forma lograr solucionar
el problema principal.

Modularización
El uso de la metodología top-down nos ayuda a pensar el problema y empezar con
un diseño inicial de como debería resolverse. Esto nos puede ayudar a pensar de
antemano como debería estructurarse el código final, es decir, cuales son los
módulos que podrían realizarse para poder solucionar el problema.
Los módulos que se desarrollan deben tener una alta cohesión con los problemas
que buscan atacar, además de que tengan una baja interacción con el resto de los
módulos, es decir, que sean lo más independientes posibles.
Las metodologías de diseño de hardware denominadas Top-Down, basadas en la
utilización de lenguajes de descripción de hardware, han posibilitado la reducción
de los costos en la fabricación de circuitos integrados. Esta reducción se debe a la
posibilidad de describir y verificar el funcionamiento de un circuito mediante la
simulación del mismo, sin necesidad de implementar un prototipo físicamente. 2.1
Herramientas CAD La metodología de diseño asistida por compuatdora (Computer
Aided Design, CAD), emplea técnicas gráficas para soportar el proceso de diseño.
La introducción de dichas técnicas en el proceso de diseño de circuitos
electrónicos es fundamental, ya que mas allá de proveer interfaces gráficas para
asistir el proceso, brinda la posibilidad de simular y verificar la descripción antes
de llevar a cabo su implementación, minimizando el costo de elaborar circuitos
potencialmente defectuosos y acelerando el diseño global [20].
El diseño de hardware tiene un problema fundamental, que no existe en el diseño
de software. Este problema es el alto costo del ciclo de diseño-prototipación-
verificación (figura 2.1), ya que el costo del prototipo por lo general es bastante
elevado.
Por lo tanto se busca minimizar el costo del ciclo anterior, incluyendo la fase de
prototipación únicamente al final del mismo. Esto se consigue mediante la
inclusión de una fase de simulación y verificación que elimina la necesidad de
elaborar físicamente un prototipo. En el ciclo de diseño hardware las herramientas
CAD están presentes en todos los pasos. En primer lugar en la fase de
descripción de la idea, que será un sistema eléctrico, un diagrama en bloques, etc.
Luego en la fase de simulación y verificación en donde las diversas herramientas
permiten realizar simulación por eventos, funcional, digital o eléctrica considerando
el nivel de simulación requerido. La última etapa es comprendida por herramientas
especializadas en la fabricación del circuito propiamente dicho y se orientan a la
fabricación de circuitos impresos o Circuitos Integrados de Aplicación Específica
(Application Specific Integrated Circuits, ASIC). Estas herramientas permiten
realizar microcircuitos así como la programación de dispositivos que así lo
requieran.
A continuación se enumeran y explican brevemente algunas de las posibles
herramientas que pueden utilizarse durante el diseño e implementación del
hardware:
Descripción mediante esquemas: Consiste en describir el circuito mediante un
esquema que representa la estructura del sistema. Mas allá de un simple
diagrama de líneas puede incluir información sobre tiempos, referencias, cables,
conectores, etc.
Grafos y diagramas de flujo: La descripción se realiza por medio de grafos,
autómatas o redes de Petri. La diferencia con la captura de esquemas es que este
tipo de descripción es funcional o de comportamiento y no de estructura como
sucede en el caso anterior.
Lenguajes de descripción: Son lenguajes de computadora especializados que
permiten describir un circuito digital. Esta descripción usualmente se puede llevar
a cabo a diferentes niveles. Puede ser estructural, en donde se muestra la
arquitectura del diseño, o bien de comportamiento, en donde se describe el
comportamiento o funcionamiento del circuito global y no de los componentes por
los cuales está compuesto.
Simulación de sistemas: Estas herramientas se utilizan para la simulación global
del sistema. Los componentes que se simulan son de alto nivel, es decir del
producto una vez terminado.
Simulación funcional: Este tipo de simulación se utiliza para validar el
funcionamiento de un sistema digital a bajo nivel (nivel de compuertas), sin
embargo no se toman en consideración factores físicos de los componentes a
simular como ser retrasos, problemas eléctricos, etc. Unicamente de registra el
comportamiento del circuito frente a ciertos estímulos dados.
Simulación digital: Esta simulación es muy parecida a la simulación funcional, pero
considerando los retrasos y factores que no se consideran en la anterior. De esta
forma se garantiza el funcionamiento correcto del circuito digital a ser
implementado.
Simulación eléctrica: Es la simulación de más bajo nivel ya que se realiza a nivel
de componentes básicos (transistores, resistencias, etc). El resultado de dicha
simulación es prácticamente el mismo que en la realidad. Se utiliza tanto para
circuitos analógicos como digitales.
Implementación de circuitos impresos: Con estas herramientas se realiza el
trazado de líneas e implementación posterior de los circuitos impresos en donde
irán montados los componentes.
Implementación de circuitos integrados: Son las herramientas que se emplean al
final del ciclo de implementación. Permiten la realización de diferentes máscaras
que intervienen en la implementación del circuito final.
Programación de dispositivos: Alternativamente a la implementación de los
circuitos mediante máscaras, se puede emplear lógica programable. Los
dispositivos de lógica programable permiten la implementación el circuito mediante
la programación de los mismos. Posteriormente pueden ser reutilizados en caso
de querer modificar el diseño o el circuito por completo. Ejemplos de dichos
dispositivos son: PAL (Programmable And Logic), FPGA (Field Programmable
Gate Arrays) y PLD (Programmable Logic Devices).
¿QUÉ ES LA PROGRAMACIÓN ESTRUCTURADA?
A medida que un programa aumenta de tamaño, aumenta a su vez la complejidad
para leerlo, su tiempo de desarrollo, de mantenimiento y disminuye su calidad si
no se tiene mantiene un correcto orden y estructura del programa.
Es por esto que surgió un paradigma de programación llamado Programación
estructurada, que consiste en mejorar la claridad, calidad y acelerar el tiempo de
desarrollo, utilizando únicamente subrutinas y 3 estructuras de control: Secuencial,
de Selección (IF y SWITCH) y de Iteración (ciclos FOR y WHILE), sustituyendo
estas 3 estructuras a la instrucción de transferencia incondicional (GOTO), que
usándose de manera indiscriminada puede llevar a un código muy difícil de leer y
modificar (El llamado código espagueti).

2.3 ELEMENTOS Y REGLAS DE LOS LENGUAJES ALGORÍTMICOS.


La programación estructurada es una teoría de programación que consiste en
construir programas de fácil comprensión, es especialmente útil, cuando se
necesitan realizar correcciones o modificaciones después de haber concluido un
programa o aplicación. Al utilizar la programación estructurada, es mucho más
sencillo entender la codificación del programa, que se habrá hecho en diferentes
secciones.
Se basa en una metodología de desarrollo de programas llamada refinamiento
sucesivos: Se plantea una operación como un todo y se divide en segmentos más
sencillos o de menor complejidad, una vez terminado todos los segmentos del
programa, se procede a unificar las aplicaciones realizadas por el grupo de
programadores. Si se ha utilizado adecuadamente la programación estructurada,
esta integración debe ser sencilla y no presentar problemas al integrar la misma, y
de presentar algún problema, será rápidamente detectable para su corrección.
La representación gráfica de la programación estructurada se realiza a través de
diagramas de flujo, el cual representa el programa con sus entradas, procesos y
salidas.
La programación estructurada propone segregar los procesos en estructuras lo
más simple posibles, las cuales se conocen como secuencia, selección e
interacción, que están disponibles en todos los lenguajes modernos de
programación imperativa en forma de sentencias, combinando esquemas sencillos
se pueden llegar a construir sistemas amplios y complejos pero de fácil
entendimiento.
La programación estructurada es un método disciplinado de escribir programas
que sean claros, que se demuestre que sean correctos y fáciles de modificar.
La programación estructurada consiste en dividir los programas en módulos y se
basa en el desarrollo de programas que van de lo general a lo particular, es decir,
del conjunto al elemento, es decir de un todo a lo específico.
Para la solución de un problema en particular, se inicia considerando las funciones
que tiene que cumplir el programa en general y después se va desmembrando
estas funciones en subfunciones más pequeñas hasta llegar al caso último o más
particular y que ya no se pueda subdividir en casos más pequeños. Una vez que
ya se tiene el programa desmembrado en de lo general a lo particular, se empieza
a programar estas funciones pequeñas, particulares o módulos, de esta manera,
siempre podremos construir nuevos módulos o unidades insertando el nombre del
módulo donde corresponda y desarrollándolo a parte.
la modificación de los módulos es más fácil y se pueden referenciar cuantas veces
se requiera, con lo que se ahorra tiempo en la programación, un programa tiene
un diseño estructurado si cumple las dos siguientes condiciones:
El teorema de Estructura.
Está debidamente documentado
El teorema de Estructura dice que “un programa cumple el teorema de estructura
si y sólo (ó) si es propio y contiene únicamente las tres estructuras básicas de
control” que son la secuencial, la alternativa y la repetitiva, un programa es propio
si y sólo si cumple: que tenga un solo punto de entrada y un solo punto de salida y
que entre dos puntos de control del programa exista al menos un camino.
La programación estructurada es un estilo con el cual él se busca que el
programador elabore programas sencillos y fáciles de entender, la programación
estructurada hace uso de tres estructuras básicas de control que son: Estructura
Secuencial, Estructura Selectiva y la Estructura Repetitiva (ó Iterativa)
La programación estructurada se basa un teorema fundamental, el cual afirma que
cualquier programa, no importa el tipo de trabajo que ejecute, puede ser elaborado
utilizando únicamente las tres estructuras básicas.
2.3.1 DIAGRAMAS DE FLUJO.

Ventajas de la Programación Estructurada

Los programas son más fáciles de entender, pueden ser leídos de forma
secuencial y no hay necesidad de hacer engorrosos seguimientos en saltos de
líneas (GOTO) dentro de los bloques de código para intentar entender la lógica.
La estructura de los programas es clara, puesto que las instrucciones están más
ligadas o relacionadas entre sí.
Reducción del esfuerzo en las pruebas y depuración. El seguimiento de los fallos o
errores del programa (debugging) se facilita debido a su estructura más sencilla y
comprensible, por lo que los errores se pueden detectar y corregir más fácilmente.
Reducción de los costos de mantenimiento. Análogamente a la depuración,
durante la fase de mantenimiento, modificar o extender los programas resulta más
fácil.
Los programas son más sencillos y más rápidos de confeccionar.
Se incrementa el rendimiento de los programadores.
Desventajas de la Programación Estructurada.
Complejidad para adaptarse.
Mayor cantidad de código (aunque a la larga no, por la reutilización).

2.3.2 PSEUDOCÓDIGO

2.4 IMPLEMENTACIÓN DE ALGORITMOS.

Los algoritmos no se implementan sólo como programas, también en circuitos eléctricos, en


instalaciones industriales o maquinaria pesada. Se puede decir en pocas palabras que nuestra vida es
un ejemplo de algoritmo, pues al desarrollar nuestros quehacer diarios desarrollamos una serie de
pasos ordenados, obteniendo resultados.
Un algoritmo puede adoptar una de las estructuras siguientes o combinaciones de ellas:
Es aquel algoritmo en el que se establecen condiciones para poder realizar una acción específica, en
los lenguajes de programación se implementan las sentencias if o select case para llevar a cabo este
tipo de algoritmos. Se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar
también estructuras de decisión o alternativas.

Un algoritmo repetitivo o cíclico es aquel en el que el programador establece un


rango de repetición para una acción dada o en el que se determina que una acción
se repita de forma cíclica mientras se cumpla alguna condición. En los lenguajes
de programación se usan las sentencias While y For para llevar a cabo este tipo
de algoritmos.
¿Qué es un Algoritmo?
Es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o
resolver un problema.
Características:
Preciso:
Indicar el orden de realización de cada paso.
Definido:
Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.

Finito:
Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener
un número finito de pasos.

Diseño del Algoritmo


Proceso que convierte los resultados del análisis del problema en un diseño
modular con refinamientos sucesivos que permitan una posterior traducción a un
lenguaje. El diseño del algoritmo es independiente del lenguaje de programación
en el que se vaya a codificar posteriormente. Existen dos herramientas utilizadas
conceptualmente para diseñar algoritmos: los diagramas de flujo y el
pseudocódigo.
Ejemplo de Pseudocódigo y su Equivalente en Diagrama de Flujo y Algoritmo

Un algoritmo secuencial es aquel en el que se necesita que un paso anterior haya


concluido para continuar con otro. De esta forma, en este tipo de algoritmos se
requiere de datos de la etapa anterior, como una cadena o secuencia de
información, se caracteriza porque todos los pasos del algoritmo se realizan en
secuencia, es decir, uno tras otro. Por ejemplo: Algoritmo que lee cuatro números,
obtiene y muestra el producto,
suma y media de ellos.

2.4.1 SECUENCIALES

La estructura secuencial es aquella donde la acción (instrucción) sigue a otra


secuencia, las tareas
Se suceden de tal modo que la salida de una es la entrada de las siguiente y así
sucesivamente hasta el fin del proceso.
2.4.2 SELECTIVOS.

Se utiliza en el desarrollo de la solución de un problema debemos tomar una decisión,


para establecer un proceso o señalar un camino alternativo a seguir.

 Estructura selectiva doble. "SI ENTONCES/SINO".


 Estructura selectiva múltiple. "SI MÚLTIPLE".
 Estructura selectiva anidada ( cascada).
 Estructura selectiva simple. “SI ENTONCES”
2.4.3 REPETITIVOS.

Son operaciones que se deben ejecutar un numero repetido de veces. El conjunto de


instrucciones que se ejecuta repetidamente cierto número de veces, se llama ciclo, Bucle
o Lazo.
2.5 PRUEBA Y DEPURACIÓN.

Los errores humanos dentro de la programación de computadoras


son muchos y aumentan considerablemente con la complejidad
del problema. El proceso de identificar y eliminar errores, para dar
paso a una solución sin errores se le llama Depuración.
La Depuración o prueba resulta una tarea tan creativa como el
mismo desarrollo de la solución, por ello se debe considerar con
el mismo interés y entusiasmo.

Resulta conveniente observar los siguientes principios al realizar


una depuración, ya que de este trabajo depende el éxito de
nuestra solución.

a) Trate de iniciar la prueba de un programa con una mentalidad


saboteadora, casi disfrutando la tarea de encontrar algún error.

b) Sospeche de todos los resultados que le arroje la solución, con


lo cual deberá verificar todos.

c) Considerar todas las situaciones posibles normales y aún


algunas de las anormales.

Codificación.

La codificación es la operación de escribir la solución del


problema (de acuerdo a la lógica del diagrama de flujo o
pseudocódigo), en una serie de instrucciones detalladas en un
código reconocible por la computadora, la serie de instrucciones
detalladas se le conoce como programa fuente, el cual se escribe
en un lenguaje de programación o lenguaje alto nivel.

Existen diversos tipos de lenguaje de alto nivel, de acuerdo al tipo


de problema que se desea resolver, clasificándose en problemas:
matemáticos, científicos, administrativos o comerciales.

Documentación.
Es la guía o comunicación escrita en sus variadas formas, ya
sean en enunciados, procedimientos, dibujos o diagramas. A
menudo un programa escrito por una persona, es usado por
muchas otras. Por ello la documentación sirve para ayudar a
comprender o usar un programa o para facilitar futuras
modificaciones (mantenimiento).

La documentación debe presentarse en tres formas, externa,


interna y al usuario final. La primera debe estar integrada por los
siguientes elementos:

a) Descripción del problema.

b) Nombre del autor.

c) Diagrama de flujo y/o pseudocódigo.

d) Lista de variables y constantes.

e) Codificación del programa.

En lo referente a la documentación interna, ésta lo constituyen los


comentarios o mensajes que agregan al código, para hacer más
claro el entendimiento del proceso. A la documentación para el
usuario se le conoce como manual del usuario. En este manual
no existe información de tipo técnico, sino la descripción del
funcionamiento del programa.

También podría gustarte