Unidad 1

21

Click here to load reader

Transcript of Unidad 1

Page 1: Unidad 1

1. Desarrollar el proceso de solución de un problema

La resolución de un problema mediante un ordenador consiste en el proceso que a partir de la descripción de un problema, expresado habitualmente en lenguaje natural y en términos propios del dominio del problema, permite desarrollar un programa que resuelva dicho problema.

Este proceso exige los siguientes pasos:

Análisis del problema. Diseño o desarrollo de un algoritmo. Transformación del algoritmo en un programa (codificación). Ejecución y validación del programa.

Los dos primeros pasos son los más difíciles del proceso. Una vez analizado el problema y obtenido un algoritmo que lo resuelva, su transformación a un programa de ordenador es una tarea de mera traducción al lenguaje de programación deseado.

Análisis del problema

Cuando un usuario plantea a un programador un problema que resolver mediante su ordenador, por lo general ese usuario tendrá conocimientos más o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos de informática. Por ejemplo, un contable que necesita un programa para llevar la contabilidad de una empresa será un experto en contabilidad (dominio del problema), pero no tiene por qué ser experto en programación.

Del mismo modo, el informático que va a resolver un determinado problema puede ser un experto programador, pero en principio no tiene por qué conocer el dominio del problema; siguiendo el ejemplo anterior, el informático que hace un programa no tiene por qué ser un experto en contabilidad.

Por ello, al abordar un problema que se quiere resolver mediante un ordenador, el programador necesita de la experiencia del experto del dominio para entender el problema. Al final, si se quiere llegar a una solución satisfactoria es necesario que:

El problema esté bien definido con el máximo detalle Las especificaciones de las entradas y salidas del problema,

deben ser descritas también en detalle:

¿Qué datos son necesarios para resolver el problema?

¿Qué información debe proporcionar la resolución del problema?

Page 2: Unidad 1

Diseño del algoritmo

Un algoritmo consiste en una especificación clara y concisa de los pasos necesarios para resolver un determinado problema, pero para poder diseñar algoritmos es necesario disponer de una notación, que llamaremos ‘notación algorítmica’, que permita:

Describir las operaciones puestas en juego (acciones, instrucciones, comandos,...)

Describir los objetos manipulados por el algoritmo (datos/informaciones)

Controlar la realización de las acciones descritas, indicando la forma en que estas se organizan en el tiempo

Para poder describir cualquier tipo de acción de las que intervienen en un algoritmo, diversos autores proponen el uso de un conjunto de construcciones lógicas (secuencia, decisión e iteración) con las que es posible escribir cualquier programa. Lo que sigue a continuación es la descripción de las diferentes construcciones disponibles para el diseño de algoritmos.

Page 3: Unidad 1

1.1 Identificar el problema.

Cuando el proyecto comienza y realiza el seguimiento del progreso real de las tareas, puede revisar la programación para identificar problemas o problemas potenciales de las programaciones de las tareas. Identificar o prever los problemas permite cuidar las cuestiones que podrían afectar a la fecha de finalización del proyecto.

 SUGERENCIA   Este artículo es parte de una serie de artículos incluida dentro del Mapa del proyecto que describe un amplio conjunto de actividades de administración del proyecto. Estas actividades se denominan "objetivos" porque se organizan alrededor del ciclo de vida de administración del proyecto: crear un plan, seguir y administrar un proyecto, y cerrar un proyecto.

Objetivo anterior  |  Objetivo siguiente

Ver todos los objetivos del Mapa del proyecto

  Analizar la programación    Después de crear una programación básica, debería comprobarla para descubrir problemas o equivocaciones que requieran ajustes.Haga clic en los vínculos que procedan:

Analizar el rendimiento de los recursos y el proyecto con Microsoft Office Project Server 2007. Puede crear una vista PivotChart o un informe PivotTable para ayudarle a analizar la programación de recursos o los problemas del proyecto.Revisar el progreso de la programación para ver cómo sus tareas afectan a la fecha de finalización.Mostrar la información de la programación de las tareas para aprender cuál es la programación de un proyecto para obtener información general del modo en que el proyecto y sus tareas se están planeando. La programación de tareas puede implicar muchas configuraciones complejas que debería revisar periódicamente.

  Comparar dos versiones de un proyecto    Puede comparar dos archivos de proyecto del mismo proyecto y crear un informe personalizado y detallado para

Page 4: Unidad 1

ayudarle a identificar problemas de la programación.

Comparar dos versiones de un proyecto

  Determinar si la fecha de finalización del proyecto ha cambiado    Puede ver un resumen de conjunto de las fechas del proyecto y las tareas esenciales que afectan directamente a la fecha de finalización.

Ver cuál es el factor determinante para cumplir la fecha de terminación del proyecto (ruta crítica)

  Evaluar por qué se ha demorado la fecha de finalización de un proyecto    Revise los factores de la programación que podrían prolongar la fecha de finalización de un proyecto.Haga clic en los vínculos que procedan:

Mostrar la ruta crítica para encontrar rápidamente las tareas con problemas. Las tareas que entran dentro de la ruta crítica tienen un gran efecto en la programación, porque un retardo de una tarea crítica extiende la fecha de finalización. Dado que la ruta crítica puede cambiar a medida que modifique la programación, mostrar la ruta crítica de la programación ayuda a tomar decisiones acerca de qué cambios hacer y cómo afectan a la ruta crítica.Comprobar las dependencias de las tareas (vínculos) dentro del proyecto para revisar las dependencias de las tareas en la ruta crítica para asegurarse de que son precisos y necesarios. Las dependencias de tareas innecesarias o inexactas pueden hacer que el proyecto finalice más tarde.Administrar las dependencias y los resultados a través de los proyectospara determinar si alguno de los resultados de otros equipos o sus proyectos podrían afectar a la fecha de finalización del proyecto.Examinar las restricciones de las tareas para comprobar si son necesarias. Lasrestricciones de tareas innecesarias pueden limitar la flexibilidad de la programación haciendo que las tareas comiencen en ciertas fechas o usen todo el margendisponible. Si elimina las restricciones innecesarias, Microsoft Office Project 2007 programa las tareas en función de su duración y de las relaciones existentes entre sí.Examinar un informe visual para ver los datos del proyecto en informes Lista de campos de Microsoft Office Excel 2007 y vistas de diagrama dinámico de Microsoft Office Visio 2007.

Page 5: Unidad 1

1.2 Análisis del Problema

Ø       El análisis del problema es la fase fundamental para resolver un problema. Esta fase requiere  normalmente el máximo de imaginación y creatividad  por parte del programador o del analista.

Ø       Se analiza teniendo presente la especificación de los requerimientos dados por el cliente de la empresa o por la persona que encarga el problema.

 

Acciones que debe tener el análisis del problema:

ENTRADA        PROCESO       SALIDA 

Entrada: el objetivo de este paso es determinar los datos que se utilizaran para resolver el problema.Proceso: el objetivo es graficar el Procesamiento de Datos, que permita identificar las entradas y salidas de cada uno de los procesos.Salida: El objetivo es definir las salidas que tendrá el problema referente  a las necesidades detectadas. 

 

Pasos que se deben realizar:

Ø            Se debe examinar cuidadosamente el problema a fin de identificar qué tipo de información se necesita producir (Salida)

Page 6: Unidad 1

Ø            A continuación debe identificar aquellos elementos de información dados en el problema, que puedan ser útiles para obtener solución (Entrada y datos adicionales)

Ø            Luego, identificar los procedimientos necesarios que permitan transformar los datos de entrada en salida (Proceso).

Crear el Identificador:En este paso se crearan las variables, identificará el tipo de variables o constante y aplicarán las fórmulas que se vieron en el tema Expresiones. 

1.3 Solución de problemas.

       Las cuatro etapas de la resolución de problemas con una computadora se dan a continuación:

1.      Entender el problema: un modo de manejar un problema es la de imaginar el  tipo de salida que debe producirse para distintas entradas posibles. Después determinar el tipo de proceso necesario para convertir la entrada en salida.

2.      Encontrar un método de solución: esto es, diseñar un algoritmo que le permita definir los pasos que llevarán a la solución del problema.

3.      Traducir el método a código de computadora: este paso es generalmente sencillo cuando se ha concretado un método paso a paso y se conoce la sintaxis del lenguaje de programación.

4.      Probar y depurar: si la ejecución del programa no es la correcta, se deben encontrar y corregir los errores que contenga. Este proceso se llama depuración. Posteriormente debe ejecutarse el programa con una amplia variedad de entradas para verificar que la lógica del programa esté correcta.

Page 7: Unidad 1

 

2  Algoritmo

Definición de Algoritmo.

            La palabra algoritmo proviene del nombre del matemático islámico Abu JafarMuhamed ibn Musä al Khwàrizm quien murió en el año 847 A.C.

 

            Un algoritmo para un problema es una secuencia de pasos a seguir, no ambiguos, finitos y determinísticos que llevan a la solución de un problema,

 

            Para poder elaborar un algoritmo, es necesario recordar las siguientes observaciones:

 

1. El algoritmo debe escribirse como una expresión en algún lenguaje:

¨       Descripción narrada

¨       Notación matemática

¨       Pseudocódigo

¨       Diagramas de flujo

¨       Lenguaje de computadora.

 

2. Exactamente cada pregunta del problema debe ser contestada por la ejecución del algoritmo.

 

3. Cualquiera que sean los valores de las entradas, la ejecución terminará después de algún número finito de pasos.

 

Page 8: Unidad 1

       Por ello, para que una computadora pueda resolver un problema concreto, el usuario

y no la computadora, debe diseñar un método adecuado para la solución. La computadora

simplemente llevará a cabo paso a paso la lista de las instrucciones formuladas en el

programa del usuario.

 

3 Técnicas para la descripción de algoritmos.

1. Descripción Narrada. Se utiliza el lenguaje natural ya sea hablado o escrito. Por ejemplo, la receta para hacer un pastel.

 

2. Notación matemática: se expresa mediante fórmulas matemáticas que determinarán las salidas del problema.

 

3. Diagramas de flujo: en ésta técnica se utilizan símbolos que representan cada paso de

    los algoritmos. Los símbolos más utilizados son los siguientes:

Page 9: Unidad 1

1.4 Elaborar diagramas de flujo de la solución del problema.

Los Diagramas de flujo se dibujan generalmente usando algunos

símbolos estándares; sin embargo, algunos símbolos especiales pueden

también ser desarrollados cuando séan requeridos. Algunos símbolos

Page 10: Unidad 1

estándares, que se requieren con frecuencia para diagramar programas

de computadora se muestran a continuación:

Inicio o fin del programa

Pasos, procesos o líneas de instruccion de programa de computo

Operaciones de entrada y salida

Toma de desiciónes y Ramificación

Conector para unir el flujo a otra parte del diagrama

Cinta magnética

Disco magnético

Conector de pagina

Líneas de flujo

Anotación

Display, para mostrar datos

Envía datos a la impresora

Page 11: Unidad 1

Observación: Para obtener la correcta elaboración de los símbolos,

existen plantillas. Las puedes conseguir en Papelerías.

Simbolos gráficos

Dentro de los simbolos fundamentales para la creaación de diagramas

de flujo, los símbolos gráficos son utilizádos especificamente para para

operaciónes aritméticas y relaciónes condicionales. La siguiente es una

lista de los símbolos más comunmente utilizados:

+ Sumar

- Menos

* Multiplicación

/ División

± Mas o menos

= Equivalente a

> Mayor que

< Menor que

³Mayor o igual

que

£Menor o igual

que

¹ o

<>Diferente de

Si

No

True

False

Reglas para la creacion de Diagramas

1. Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de

izquierda a derecha.

2. Los símbolos se unen con líneas, las cuales tienen en la punta una

flecha que indica la dirección que fluye la información procesos, se

deben de utilizar solamente líneas de flujo horizontal o verticales

(nunca diagonales).

Page 12: Unidad 1

3. Se debe evitar el cruce de líneas, para lo cual se quisiera separar el

flujo del diagrama a un sitio distinto, se pudiera realizar utilizando

los conectores. Se debe tener en cuenta que solo se vana utilizar

conectores cuando sea estrictamente necesario.

4. No deben quedar líneas de flujo sin conectar

5. Todo texto escrito dentro de un símbolo debe ser legible, preciso,

evitando el uso de muchas palabras.

6. Todos los símbolos pueden tener más de una línea de entrada, a

excepción del símbolo final.

7. Solo los símbolos de decisión pueden y deben tener mas de una

línea de flujo de salida.

1.5 Crear pseudocódigos de la solución del problema.

Page 13: Unidad 1

En ciencias de la computación, y análisis

numérico el pseudocódigo (o falso lenguaje) es una descripción

informal1 de alto nivel de un algoritmo informático de programación,

compacto e informal, que utiliza las convenciones estructurales de

un lenguaje de programación verdadero2 , pero que está diseñado

para la lectura humana en lugar de la lectura mediante máquina, y

con independencia de cualquier otro lenguaje de programación.

Normalmente, el pseudocódigo omite detalles que no son esenciales

para la comprensión humana del algoritmo, tales como declaraciones

de variables, código específico del sistema y algunas subrutinas. El

lenguaje de programación se complementa, donde sea conveniente,

con descripciones detalladas en lenguaje natural, o con notación

matemática compacta. Se utiliza pseudocódigo pues este es más fácil

de entender para las personas que el código de lenguaje de

programación convencional, ya que es una descripción eficiente y con

un entorno independiente de los principios fundamentales de un

algoritmo. Se utiliza comúnmente en los libros de texto y

publicaciones científicas que se documentan varios algoritmos, y

también en la planificación del desarrollo de programas informáticos,

para esbozar la estructura del programa antes de realizar la efectiva

codificación. No existe una sintaxis estándar para el pseudocódigo,

aunque los cincos IDE's que manejan pseudocódigo tengan su

sintaxis propia. Aunque sea parecido, el pseudocódigo no debe

confundirse con los programas esqueleto que incluyen código ficticio,

que pueden ser compilados sin errores. Los diagramas de

flujo y UML pueden ser considerados como una alternativa gráfica al

pseudocódigo, aunque sean más amplios en papel.

Pseudocódigo Pseudocódigo Pseudocódigo estilo C:

Page 14: Unidad 1

estilo Fortran:

programa bizzbuzzhacer i = 1 hasta 100 establecer print_number a verdadero si i es divisible por 3 escribir "Bizz" establecer print_number a falso si i es divisible por 5 escribir "Buzz" establecer print_number a falso si print_number, escribir i escribir una nueva líneafin del hacer

estilo Pascal:

procedimiento bizzbuzzpara i := 1 hasta 100 hacer establecer print_number a verdadero; Si i es divisible por 3 entonces escribir "Bizz"; establecer print_number a falso; Si i es divisible por 5 entonces escribir "Buzz"; establecer print_number a falso; Si print_number, escribir i; escribir una nueva lína;fin

subproceso funcion bizzbuzzpara (i <- 1; i<=100; i++) { establecer print_number a verdadero; Si i es divisible por 3 escribir "Bizz"; establecer print_number a falso; Si i es divisible por 5 escribir "Buzz"; establecer print_number a falso; Si print_number, escribir i; escribir una nueva línea;}

Page 15: Unidad 1

1.6 Prueba de escritorio de la solución del problema.

Elaborar un programa de computadora implica llevar a cabo una serie de pasos secuenciales y cronológicos que comienzan con:1.    Definición del problema. Debemos identificar el problema y comprender la utilizada de la solución que se alcance, es decir, tener una visión general del problema estableciendo las condiciones iniciales y los límites del problema.2.    Análisis de los datos. Consiste en definir primero los resultados esperados, es decir la información que deberá obtenerse. Como segundo paso se tiene la identificación de los datos que se tienen como materia prima y que constituirán la entrada del programa. El tercer y último paso tiene como finalidad el proceso necesario para convertir los datos de entrada en la información que se tendrá como salida.  Para llevar a cabo un buen análisis podemos cuestionarnos ¿Qué quiero obtener?, ¿Cómo lo voy a obtener?, ¿Qué datos tengo?, este paso es de vital importancia ya que si realizamos un buen análisis evitaremos pasos innecesarios para la solución del problema.3.    Diseño del programa. Durante este paso se procede a diseñar la lógica para la solución al problema, utilizando herramientas como son el algoritmo y la prueba de escritorio.4.    Codificación. Este proceso es sumamente sencillo, ya que consiste en convertir las acciones del algoritmo en instrucciones de computadora, es decir, escribir el algoritmo en algún lenguaje de programación.5.    Prueba y depuración. El programa se ejecuta para verificar su buen funcionamiento introduciendo datos de prueba y hacer las correcciones o ajustes  pertinentes en caso de encontrar errores hasta que quede correcto.6.    Documentación. Consta de las descripciones de los pasos a dar en el proceso de resolución del problema. La documentación puede ser interna (contenida en líneas de comentarios) o externa que incluye análisis, diagramas de flujo y/o pseudocódigos, manuales.7.    Mantenimiento. Un programa que ya esta en operación podría requerir cambios o ajustes en sus datos, procesos o resultados para adecuarlo a la dinámica cambiante de las empresas o usuarios, tales cambios se denominan mantenimiento y debemos de tener en cuenta que después de cada cambio la documentación debe ser actualizada.

Page 16: Unidad 1

Definición de algoritmo.Podemos encontrar muchas definiciones de algoritmo en los textos de programación, todas ellas muy similares:•    Conjunto ordenado y finito de pasos que permite hallar la solución de un problema.•    Una secuencia de pasos que conducen a la realización de una tarea.•    Descripción exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problema o procedimiento.•    Conjunto de sentencias / instrucciones en lenguaje nativo, los cuales expresan la lógica de un programa.•    Es un sistema por el cual se llega a una solución, teniendo en cuenta que debe de ser definido, finito y preciso.•    Toda receta, proceso, rutina, método, procedimiento, técnica, formula que resuelven un determinado problema.•    Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción determinada.•    Conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas.•    Descripción precisa de una sucesión de instrucciones que permite llevar a cabo un trabajo en un número finito de pasos.•    Un conjunto de símbolos y procedimientos usados en la realización de un cálculo.Definiciones más completas o formales:•    Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones de un ordenador debe realizar para llevar a cabo un tarea en un tiempo más finito. [Donald E. Knuth, 1968]•    Descripción de un esquema de comportamiento expresado mediante un repertorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y realizables a priori. [Pierre Scholl, 1988]•    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. [Rodolfo Quispe-Otazu, 2004]

Características:Las características fundamentales que debe cumplir todo algoritmo son:•    Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación.•    Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos.

Page 17: Unidad 1

•    Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.•    Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.•    Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución.Por otra parte el algoritmo consta de 3 secciones principales:•    Datos de entrada.•    Proceso de los datos.•    Datos de salida.

Prueba de escritorio.Consiste en simular el funcionamiento del algoritmo con datos propios respecto al problema, se comprueba a mano a fin de validar la correcta operación del algoritmo. Si quedamos satisfechos con los resultados de la prueba, tendremos un algoritmo listo para la codificación, de lo contrario se debe modificar el algoritmo y posteriormente volverlo a probar hasta que este correcto, de ahí la importancia de un buen análisis para determinar bien que resultados se quieren obtener, con qué datos se cuenta y cómo se va a obtener ese resultado. Esta prueba de escritorio debe contemplar los valores máximos y mínimos para evitar errores.

Page 18: Unidad 1

Karla Aidee Lugo Galván

4C

Informática

Karla Aidee Lugo Galván

Karla Aidee Lugo Galván

4C

INFORMATICA