cuestionario unidad3

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

Upload: susho

Post on 06-Jun-2015

2.963 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Cuestionario Unidad3

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

Page 2: Cuestionario Unidad3

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

Page 3: Cuestionario Unidad3

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:

Page 4: Cuestionario Unidad3

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

Page 5: Cuestionario Unidad3

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.

Page 6: Cuestionario Unidad3

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)

Page 7: Cuestionario Unidad3

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

Page 8: Cuestionario Unidad3

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.

Page 9: Cuestionario Unidad3

A continuación un ejemplo de diagrama de flujo:

Page 10: Cuestionario Unidad3

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

Page 11: Cuestionario Unidad3

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.

Page 12: Cuestionario Unidad3

*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.

Page 13: Cuestionario Unidad3

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

Page 14: Cuestionario Unidad3

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

Asistir a curso de

inducción

Presentarse a clases

Asistir a clase de Fundamentos

de Programación

fin

Page 15: Cuestionario Unidad3

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

Page 16: Cuestionario Unidad3

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.

Page 17: Cuestionario Unidad3

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