You are on page 1of 17

Instituto

Tecnológico
de
Minatitlán
Cuestionario Unidad 3
Técnicas de Diseño
Detallado

Gómez Pérez Jesús Francisco


M.C. José Ángel Toledo Álvarez
Fundamentos de Programación
Cuestionario Unidad 3

1 Explique ampliamente en que consiste el diseño algorítmico y para que sirve

Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y


formulados con base a un conjunto finito de reglas no ambiguas, que proveen un
procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo
determinado; se implementan en forma de sentencias en algún lenguaje de
programación. De esta manera, la forma de escribir los algoritmos depende del lenguaje
de programación, y del paradigma usado. Estos son los algoritmos que pueden ser
interpretados por una computadora y así ser ejecutados.

Los algoritmos también pueden representarse gráficamente empleando diagramas de


flujo o formas similares. De esta manera, son fácilmente comprensibles, especialmente
para personas que no son programadores. También, de esta manera, los algoritmos son
más “universales”, pues no dependen de un lenguaje de programación específico.

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. Para identificar mas claro la ruta para solucionar un problema, lo que nos
ahorra mas tiempo, los problemas complejos pueden ser divididos en partes mas simples
y ser solucionado aparte. En la vida diaria, en la resolución de problemas en la vida
cotidiana, en el planeamiento de un problema enfocado a un lenguaje de programación.

Algoritmo voraz:

El algoritmo más sencillo que puede ocurrírsenos es, partiendo de un agregado


solución vacío, recorrer el agregado de entrada, y añadir el elemento considerado en
cada paso al agregado solución siempre que se cumplan las condiciones derivadas de
la propiedad que se apuntó.

Algoritmo divide y vencerás:

Un segundo algoritmo que puede ocurrírsenos es dividir el agregado en el número de


partes que queramos, siempre que el tamaño sea superior a un tamaño umbral que
admitamos. Obtener la solución de cada parte y combinar dichas soluciones para
construir la solución al agregado completo. Para el caso de que el tamaño sea inferior
o igual a umbral, la solución se obtiene mediante el algoritmo anterior (o cualquier
otro conocido que no divida el agregado en partes).

Algoritmo de programación dinámica:

Un tercer algoritmo que puede ocurrírsenos es, a partir de la de la relación que


establece cómo combinar las soluciones para distintas partes de los datos de entrada,
establecer los casos en que puede obtenerse la solución sin utilizar dicha relación
(casos base), y partiendo de dichos casos, guardar la solución para los mismos en una
matriz de registros (multidimensional), y reconstruir la solución al problema utilizando
los valores almacenados en la matriz de registros.

Algoritmo backtracking:

Un cuarto algoritmo que puede ocurrírsenos es, interpretando al agregado como un


conjunto, obtener todos los subconjuntos del conjunto (cuyo número es 2n), hasta
encontrar uno que cumpla con las condiciones impuestas por el problema. Es decir, se
trata de realizar una búsqueda exhaustiva. Llamamos árbol de expansión al árbol formado
por todas las posibilidades que se estudian. En cada hoja hay una posible solución.

2 Ilustre Los Elementos Y Reglas Para La Representación Grafica De Los Algoritmos

a) Descripción Narrada
b) Pseudocódigo
c) Diagramas de Flujo
d) Diagramas N- S (Nassi-Schneiderman o de Chapin)

A) DESCRIPCION NARRADA:

se caracteriza porque sigue su secuencia de pasos logicos escribiendo textualmente los


procesoso que realiza dicho algoritmo.

B) PSEUDOCODIGO:
este permite definir lo que realmente hara el algoritmo y la solucion a la que se desea
llegar pues solo es una representacion como un borrador para saber en que posible paso
se puede modificar o pueda este tener errores digamos que es una prueba de escritorio.

C) DIAGRAMAS DE FLUJO

es una representacion con simbolos de un algoritmo este sirve solo para diseñar los
procesos con simbologia propia de una diagrama de flujo pues es muy util su estructura
para que el algoritmo tenga un cierto orden para su elaboracion.

D) DIAGRAMAS NS:

este consta de cuadros o cajas que especifican un proceso realizado de la estructura de un


algoritmo. Pues representa de manera específica las acciones que realizara el proceso y
son claramente detallados los procesos que sean por ejemplo de seleccion, o decision y
otros que se realizan dentro de un algoritmo.

Las reglas son:

• se escirben de arriba hacia abajo y de izquierda a derecha


• siempre se usan flechas verticales u horizontales y no curvas
• se tiene que eviatr el cruce de flujo
• en cada paso se tiene que especificar una accion concreta

En otros tipos de representacion se escribe asi_:

• tiene un inicio
• lectura de datos
• proceso realizado
• salida o impresion de resultados
• un final
LAS VENTAJAS DE USAR FUJOGRAMAS:

Estos se utilizan para representar y diseñar un algoritmo y pues son una prueba de
escritorio el cual nos sirve para tener una nocion de lo que puede llegar a realizar dicho
procedimiento.

Son usados como modelos de estructura para saber lo que hara futuramente y tienen que
diseñarse y comprenderse todos los pasos de su elaboracion.

DESVENTAJAS DE USAR FLUJOGRAMAS:

Los diagramas que lleven muchos pasos es decir los más complejos suelen ser muy
laborioso y se puede tornar tedioso para el diseñador de algoritmos.
En un proceso de decision puede seguirse varios caminos y puede llegar a ser que se
pierda informacion o no se elabore adecuadamente.

En estos no se puede incluir detalles que ayuden al buen seguimiento de un proceso.

3 Realice 5 Implementaciones De Algoritmos Secuenciales (Utilizando Notación


Algebraica)
4. Explique ampliamente en qué consiste el diseño algorítmico de las funciones (o
métodos en la POO) e ilustre tres ejemplos de su aplicación

Diseño Algorítmico

Antes que nada debemos tener la nocion de lo que es un algoritmo,

Un algoritmo es una secuencia de pasos finitos, es decir un determinado numero de


instrucciones seguidas para realizar cierta funcion o tarea que a este se le haya asigando
puesto que en su terminacion lleva la solucion de una problematica que se haya asigando.

Los algoritmos son utilizados como guías o modelos para poder realizar un programa,
debido a que representa de forma efectiva y simple las instrucciones y las acciones que se
llevarian a cabo en el, por lo que se recomienda realizar siempre primero el algoritmo
antes de tratar de programar directamente.

Un algotimo puede ser representado de dos formas:

• pseudocódigo
• diagrama de flujo

PSEUDOCODIGO: No es más que escribir lo que realiza un algoritmo de forma entendible


con instrucciones regularmente en ingles o en su defecto en otro idioma, ya que contiene
su estructura y este es:

1.-inicio
2.-introduce las variables
3.-proceso realizado para el resultado
4.-impresion en pantalla del resultado
5.-fin

por ejemplo el pseudocodigo de un algoritmo que dado un numero x me diga si es menor


o mayor que cero. seria:

inicio

leer valor

decision mayor que cero

imprime en pantalla el resultado

fin
DIAGRAMA DE FLUJO: Se dice que es la representacion grafica de los algoritmos en si, este
consta de una simbologia como es proceso, entrada, salida, monitor, decision, conector,
teclado y otros simbolos que nos ayudan a representar los diferentes estados de un
algoritmo, esto facilita la representacion de un algoritmo asi es como la realizacion del
pseudocodigo se reconoce por su simbologia empleada en estos diagramas para su
entendimiento.
A continuación un ejemplo de diagrama de flujo:
5. Realice un mapa mental conceptual que ilustre los elementos fundamentales de las
técnicas de diseño detallado

1.-incio
2.-introduce las variables
3.-proceso realizado para el resultado
4.-impresión en pantalla del resultado
5.-fin
6. Explique ampliamente cuales son las diferencias fundamentales entre el diseño UML y
el diseño algorítmico

DISEÑO ALGORITMICO: Un algoritmo es un conjunto finito de pasos definidos,


estructurados en el tiempo y formulados con base a un conjunto finito de reglas no
ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a
un problema en un tiempo determinado; se implementan en forma de sentencias en
algún lenguaje de programación. De esta manera, la forma de escribir los algoritmos
depende del lenguaje de programación, y del paradigma usado. Estos son los algoritmos
que pueden ser interpretados por una computadora y así ser ejecutados.

1. Carácter finito. "Un algoritmo siempre debe terminar después de un número finito
de pasos".
2. Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las
operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no
ambigua para cada caso".
3. Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas
antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre.
Estas entradas son tomadas de conjuntos específicos de objetos".
4. Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación
específica con las entradas".
5. Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que
todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas
como para que en principio puedan ser hechas de manera exacta y en un tiempo
finito por un hombre usando lápiz y papel".

Knuth admite que, aunque su descripción pueda ser intuitivamente clara, carece de rigor
formal, puesto que no está exactamente claro qué significa "precisamente definido", "de
manera rigurosa y no ambigua", o "suficientemente básicas", y así sucesivamente

DISEÑO UML: El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language)


es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que
comprende el desarrollo de software. UML entrega una forma de modelar cosas
conceptuales como lo son procesos de negocio y funciones de sistema, además de cosas
concretas como lo son escribir clases en un lenguaje determinado, esquemas de base de
datos y componentes de software reusable.
*Hoy en día, UML ("Unified Modeling Language") esta consolidado como el lenguaje
estándar en el análisis y diseño de sistemas de computo.

* Mediante UML es posible establecer la serie de requerimientos y estructuras


necesarias para plasmar un sistema de software previo al proceso intensivo de escribir
código.

*UML es un lenguaje, éste posee más características visuales que programáticas,


mismas que facilitan a integrantes de un equipo multidisciplinario

*con Uml se puede participar e intercomunicarse fácilmente, estos integrantes siendo


los analistas, diseñadores, especialistas de área y desde luego los programadores.

*Entre más complejo es el sistema que se desea crear más beneficios presenta el uso
de UML ("Unified Modeling Language"), las razones de esto son evidentes, sin
embargo, existen dos puntos claves : El primero se debe a que mediante un
plano/visión global resulta más fácil detectar las dependencias y dificultades implícitas
del sistema, y la segunda razón radica en que los cambios en una etapa inicial (Análisis)
resultan más fáciles de realizar que en una etapa final de un sistema como lo seria la
fase intensiva de codificación.

*su base radica en otro paradigma empleado en diseños de sistemas de alto nivel que
es la orientación a objetos, por lo que para trabajar en UML puede ser considerado un
pre-requisito tener experiencia en un lenguaje orientado a objetos.
7. Realice el algoritmo (diagrama de flujo y pseudocódigo) que usted utilizo para entrar
al itmina y llegar a la materia de fundamentos de programación

INICIO

Ingresar a
www.itmina.edu.mx

Leer
convocatoria

Llenar solicitud de
preficha

Presentar
documentos

Pago de examen
ingreso

Imprimir solicitud

Presentar examen de
ingreso

Leer resultados en
periódico

Presentarse a
inscripción

Pago de inscripción y
requisitos
Asistir a curso de
inducción

Presentarse a clases

Asistir a clase de Fundamentos


de Programación

fin
Pseudocodigo

Inicio
Ingresar a www.itmina.edu.mx
Leer convocatoria
Llenar solicitud de preficha
Presentar documentos
Pago de examen de ingreso
Imprimir solicitud
Presentar examen de ingreso
Leer resultados en periódico
Presentarse a inscripción
Pago de inscripción y requisitos
Asistir a curso de inducción
Presentarse a clases
Asistir a clase de Fundamentos de programación
Fin
8. Explique ampliamente en qué consiste el pseudocódigo UPSAM (referencia libro de
fundamentos de algoritmos de Jose Luis Joyanes Anexo a libro que se encuentra en la
biblioteca del itmina
9. Describa en que consiste el prototipado de expresiones (nomenclatura general para
escribir expresiones en diferentes lenguajes y escriba 10 ejemplos de estos

Se comienza elaborando un prototipo del producto final: qué aspecto tendrá, cómo
funcionará,...Para muchas interfaces de usuario, este modelo puede resultar tan simple
como unos dibujos con lápiz y papel o tan complejo como el propio código operativo final.
Para interfaces de hardware o estaciones de trabajo, el modelo puede consistir en
maquetas de espuma, caucho, cartón o cartulina. Cuanto más próximo se encuentre el
prototipo al producto real, mejor será la evaluación, si bien se pueden obtener magníficos
resultados con prototipos de baja fidelidad.

Esta técnica puede ser utilizada en cualquier etapa del desarrollo. A medida que el
proceso progresa y el producto se completa, el prototipo ha de abarcar, cada vez más las
características del producto final. Llegados a un punto, la construcción de prototipos
adicionales resultará menos eficiente que usar las construcciones iniciales para el
producto.

Hay un cierto número de términos que se oyen en conjunción con los métodos de
prototipado. Los siguientes son una muestra de algunas de estas distinciones

Prototipado rápido (Rapid Prototyping)

Metodología de diseño que desarrolla rápidamente nuevos diseños, los evalúa y prescinde
del prototipo cuando el próximo diseño es desarrollado mediante un nuevo prototipo.

Prototipado reutilizable (Reusable Protyping)

También conocido como "Evolutionary Prototyping"; no se pierde el esfuerzo efectuado


en la construcción del prototipo pues sus partes o el conjunto pueden ser utilizados para
construir el producto real. Mayormente es utilizado en el desarrollo de software, si bien
determinados productos de hardware pueden hacer uso del prototipo como la base del
diseño de moldes en la fabricación con plásticos o en el diseño de carrocerías de
automóviles.

Prototipado Modular (Modular Prototyping)

También conocido como Prototipado Incremental (Incremental prototyping); se añaden


nuevos elementos sobre el prototipo a medida que el ciclo de diseño progresa.

Prototipado Horizontal (Horizontal Prototyping)

El prototipo cubre un amplio número de aspectos y funciones pero la mayoría no son


operativas. Resulta muy útil para evaluar el alcance del producto, pero no su uso real.
Prototipado Vertical (Vertical Prototyping)

El prototipo cubre sólo un pequeño número de funciones operativas. Resulta muy útil
para evaluar el uso real sobre una pequeña parte del producto.

Prototipado de Baja-fidelidad (Low-fidelity Prototyping)

El prototipo se implementa con papel y lápiz, emulando la función del producto real sin
mostrar el aspecto real del mismo. Resulta muy útil para realizar tests baratos.

Protipado de Alta-fidelidad (High-fidelity Prototyping)

El prototipo se implementa de la forma más cercana posible al diseño real en términos de


aspecto, impresiones, interacción y tiempo