sábado, 7 de marzo de 2009

3.- Diagramas de Flujo

  • INFORMACION DE LOS DIAGRAMAS DE FLUJO

  • Un diagrama de flujo es la representación grafica del flujo o secuencia de rutinas simples. Tiene la ventaja de indicar la secuencia del proceso en cuestión, las unidades involucradas y los responsables de su ejecución; en pocas palabras es la representación simbólica o pictórica de un procedimiento administrativo.

  • Son de gran importancia ya que ayudan a designar cualquier representación grafica de un procedimiento o parte de este; el diagrama de flujo como su nombre lo dice representa el flujo de información de un procedimiento.

  • Existen diversos métodos que se pueden llevar a cabo en procedimientos de los arreglos (vector), ya sean en forma de ordenación, como de búsqueda.

  • El método de ordenación es una de los procedimientos más comunes y útiles en el procesamiento de datos, es la clasificación u ordenación de los mismos. Se considera ordenar al proceso de reorganización un conjunto dado de objetos en una secuencia determinada.

  • El método de ordenación más conocido y popular entre estudiantes y aprendices de programación, es el método burbuja, por su facilidad de comprensión y programación.
  • El método de búsqueda es una operación que tiene por objeto la localización de un elemento dentro de la estructura de datos. Encontramos dos técnicas que utiliza este método de acceso, para encontrar elementos dentro de un array: Búsqueda secuencial y búsqueda binaria.
  • La búsqueda secuencial es la técnica más simple para buscar un elemento en un arreglo. Consiste en recorrer el arreglo elemento a elemento e ir comparando con el valor buscado (Clave). El resultado de la búsqueda es un solo valor, y será la posición del elemento buscado o cero.
  • La búsqueda binaria es el método más eficiente para encontrar elementos en un arreglo ordenado. El proceso comienza comparando el elemento central del arreglo con el valor buscado.


  • Son de gran importancia ya que ayudan a designar cualquier representación grafica de un procedimiento o parte de este; el diagrama de flujo como su nombre lo indica representa el flujo de información de un procedimiento.
  • En la actualidad los diagramas de flujo son considerados en la mayoría de las empresas o departamentos de sistemas como uno de los principales instrumentos en la realización de cualquier método o sistema.
  • Son importantes los diagramas de flujo en toda organización y departamento, ya que este permite la visualización de las actividades innecesarias y verifica si la distribución del trabajo esta equilibrada, es decir, bien distribuida en las personas, sin sobrecargo para algunas mientras otros trabajan con mucha holgura.
  • Los diagramas de flujo son importantes para el diseñador por que le ayudan en la definición, formulación, análisis y solución del problema. El diagrama de flujo ayuda al análisis a comprender el sistema de información de acuerdo con las operaciones de procedimientos incluidos, le ayudara analizar esas etapas, con el fin tanto de mejorarlas como de incrementar la existencia de sistemas de información para la administración.
  • Ejemplo:

· De uso, permite facilitar su empleo.
· De destino, permite la correcta identificación de actividades.
· De comprensión e interpretación, permite simplificar su comprensión.
· De interacción, permite el acercamiento y coordinación.
· De simbología, disminuye la complejidad y accesibilidad.
· De diagramación, se elabora con rapidez y no requiere de recursos sofisticados.

Cómo se construye
· Debe de indicar claramente dónde inicia y dónde termina el diagrama.
· Cualquier camino del diagrama debe de llevarte siempre a la terminal de fin.
· Organizar los símbolos de tal forma que siga visualmente el flujo de arriba hacia abajo y de izquierda a derecha.
· No usar lenguaje de programación dentro de los símbolos.
· Centrar el diagrama en la página.
· Las líneas deben ser verticales u horizontales, nunca diagonales.
o No cruzar las líneas de flujo empleando los conectores adecuados sin hacer uso excesivo de ellos.


1- No fraccionar el diagrama con el uso excesivo de conectores.
2 - Solo debe llegar una sola línea de flujo a un símbolo. Pero pueden llegar muchas líneas de flujo a otras líneas.

1 - Las líneas de flujo deben de entrar a un símbolo pro la parte superior y/o izquierda y salir de él por la parte inferior y/o derecha.
2 - Evitar que el diagrama sobrepase una página; de no ser posible, enumerar y emplear los conectores correspondientes.
3 - Usar lógica positiva, es decir, realizar procesos cuando es verdadera la condición y expresar las condiciones de manera clara (por ej., "no es a =/= de b" ==> "a=b").
4 -Comentar al margen únicamente cuando sea necesario.

Símbolos de los diagramas de flujo


Tipos de Diagramas de flujo
Hay varios tipos distintos de flujogramas que pueden usarse.

· Flujograma de primer nivel o de dirección descendente.

Un flujograma de primer nivel muestra los pasos principales de un proceso y puede incluir tambièn los resultados intermedios de cada paso (el producto o servicio que se produce) y los subpasos correspondientes. Este tipo de flujograma se usa por lo general para obtener un panorama básico del proceso e identificar los cambios que se producen en el proceso. Es sumamente útil para identificar los miembros correctos para el equipo (aquellas personas que participan en el proceso) y para elaborar indicadores para observar y seguir el proceso por su concentración en los resultados intermedios.



La mayoría de los procesos pueden graficarse en 4 ó 5 recuadros que representan los principales pasos o actividades del proceso. En realidad, es buena idea usar solamente 4 ó 5 recuadros, porque no obliga a tener en cuenta los pasos más importantes. Los demás pasos son normalmente subpasos de los más importantes.



· Flujograma de segundo nivel o detallado

Un flujograma detallado indica los pasos o actividades de un proceso e incluye, por ejemplo, puntos de decisión, períodos de espera, tareas que se tienen que volver a hacer con frecuencia (repetición de tareas o tareas duplicadas) y ciclos de retroalimentación. Este tipo de diagrama de flujo es útil para examinar áreas del proceso en forma detallada y para buscar problemas o aspectos ineficientes.


· Flujograma de ejecución o matriz

Un flujograma de ejecución representa en forma gráfica el proceso en términos de quién se ocupa de realizar los pasos. Tiene forma de matriz e ilustra los diversos participantes y el flujo de pasos entre esos participantes. Es muy útil para identificar quién proporciona los insumos o servicios a quién, así como aquellas áreas en las que algunas personas pueden estar ocupándose de las mismas tareas.

Elaboración de Flujogramas
Este se rige por una serie de símbolos, normas y pautas convencionales las cuales son:
1. El formato o esqueleto del flujograma debe dividirse en partes que representan a los departamentos, secciones o dependencias involucradas en el procedimiento. Cada departamento o sección debe mostrarse una sola vez en el flujograma y en el mismo orden o secuencia cronológica de su aparición en el procedimiento que se describe de izquierda a derecha.
2. Se debe mostrar una misma dependencia mas de una vez en el flujograma aun cuando las acciones del procedimiento regresen a la misma.
3. Las líneas indicadoras del flujograma deben ser más delgadas que las líneas divisorias del formato, rectas y angulares, dotadas de flechas en sus extremos terminales.
4. Cada paso o acción del procedimiento debe enumerarse con claridad y describirse brevemente con muy pocas palabras.
5. Cuando algún documento queda retenido en alguna dependencia del flujograma se indica según sea archivado: definitivamente, temporalmente o retenido por algunos días (“D”), horas (“O”) o minutos (´)
6. Cuando hay que destruir algún documento luego de ser utilizado en el procedimiento se indica con una (X) grande.
7. Cuando en el procedimiento algún documento da origen a otro se indicará en el flujograma mediante una flecha interrumpida.
8. Al igual que vimos en los organigramas en los flujogramas cuando varias líneas se intercruzan sin tener relación se indica mediante una inflexión en cualquiera de ellas.
Siempre resultará mejor que el flujograma se muestre en una sola hoja, pero cuando en su extensión se tenga que continuar en otra página, se señala mediante un símbolo cualquiera dentro de un circulo, en la página donde se interrumpe y el mismo que suele llamarse conector se colocará en otra página como sigue.

2.- Pseudocodigos

EJERCICIOS DE PROGRAMACIÓN EN PSEUDOCÓDIGO

Representación de variables
Cuando representamos datos, numéricos o alfanuméricos, debemos darles un nombre. Una variable es un nombre que representa el valor de un dato. En esencia, una variable es una zona o posición de memoria en la computadora donde se almacena información. En un pseudocódigo y también en un programa se pueden crear tantas variables como queramos.



Ejemplos:
A = 50; Variable tipo numérica A cuyo valor es 50.
Ciudad = "Asunción"; Variable alfanumérica o de tipo carácter Ciudad, cuyo valor es "Asunción"
X = C + B; Variable numérica X cuyo valor es la suma de los valores de las variables numéricas C y B. (Nota: C y B deben tener algún valor).

Asignación
Para asignar un valor a una variable se utilizará el símbolo = que en este contexto significa “es reemplazado por”. De forma general tendremos que:
Nombre_variable = expresión
El valor de Nombre_variable se sustituye por el valor de expresión
Ejemplos:
C = 13
B = 25
X = C + B (después de estas instrucciones, X contendrá el valor 13 + 25 = 38)

Existe otra forma de asignar un valor a una variable, a través de la instrucción leer:
Leer (Nombre_variable)
Esta instrucción pide al usuario un valor que será asignado a la variable Nombre_variable, es decir, en Nombre_variable se almacena el valor ingresado por el usuario.

Operadores de relación
Los operadores relacionales se utilizan para formar expresiones que al ser evaluadas producen un valor de tipo lógico: verdadero o falso.

Estructuras de selección
El formato de la estructura de selección es:

si (condición) entonces
instrucción 1
instrucción 2
...................
instrucción n
si no
instrucción a
instrucción b
...................
instrucción z
fin si

El resultado de evaluar la condición puede ser verdadero o falso: en el caso de que sea verdadero, se ejecutarán: instrucción 1, instrucción 2, ... , instrucción n. Si el resultado de evaluar condición es falso se ejecutarán: instrucción a, instrucción b, ... , instrucción z.

Ejemplo:
Si A = 5 entonces
Imprimir("A es 5")
si no
imprimir("A no es igual a 5")
fin si

Estructuras de repetición
El formato de la estructura de repetición es:

mientras (condición)
instrucción 1instrucción 2.....instrucción n
fin mientras

El resultado de evaluar condición puede ser verdadero o falso:
Mientras sea verdadero, se ejecutarán: instrucción 1, instrucción 2, ... , instrucción n. Estas instrucciones dejarán de ejecutarse cuando condición sea falso.
Ejemplo:
leer(contraseña)
mientras (contraseña < > "joshua")
imprimir("La contraseña es incorrecta !")
leer (contraseña)
fin-mientras
imprimir("Ha tecleado la contraseña correcta")
Nota: El bucle se repetirá mientras que contraseña <> “joshua” sea verdadero

Salida de resultados
Los resultados de nuestros algoritmos los vamos a mostrar al usuario a través de la instrucción imprimir, que tiene la siguiente forma general:
Imprimir(argumento 1, argumento 2, argumento 3, ... , argumento n)
Donde los argumentos pueden ser cadenas de caracteres entrecomilladas o variables:
· Si son cadenas de caracteres entrecomillados se imprime literalmente lo que está entre comillas
· Si son variables se imprime el contenido de dicha variable (no el nombre)
Ejemplo:
sueldo = 1000
trabajador = “Martínez”
Imprimir( “el sueldo de “, trabajador , ” es “, sueldo , ” Euros.“ )
La instrucción imprimir, muestra lo siguiente: el sueldo de Martínez es 1000 Euros.


EJERCICIOS: PROPUESTOS

Ejercicio 1: Observa la siguiente secuencia de instrucciones:

1. A = 5
2. B = 7
3. C = 2
4. A = A + B + C
5. B = C / 2
6. A = A / B + A ^ C
7. Imprimir(A)

Ahora responde a las siguientes cuestiones:
a) ¿Qué valor contiene A después de la cuarta instrucción?
b) ¿Qué valor contiene B después de la quinta instrucción?
c) ¿Qué valor contiene A después de la sexta instrucción?
d) ¿Qué valor imprime la última instrucción?
e) Si en lugar de Imprimir(A) hubiésemos escrito Imprimir(“A”) ¿Qué aparecería?

Ejercicio 2: Observa la siguiente secuencia de instrucciones:

1. A = 5
2. B = 7
3. C = 1
4. D = (A == B)
5. E = (A <> B)
6. F = (MOD(B/A) >= C)

Ahora responde a las siguientes cuestiones:
a) ¿Qué valor contiene D después de la cuarta instrucción?
b) ¿Qué valor contiene E después de la quinta instrucción?
c) ¿Qué valor contiene F después de la sexta instrucción?
d) ¿Cuánto valen A, B y C después de la última instrucción?

Ejercicio 3: Observa la siguiente secuencia de instrucciones:

1. leer(A)
2. leer(B)
3. leer(C)
4. D = (A == B)
5. E = (A <> B)
6. F = (MOD(B/A) >= C)

Ahora responde a las siguientes cuestiones: Supongamos que el usuario introduce 3 en A, 4 en B y 5 en C

a) ¿Qué valor contiene D después de la cuarta instrucción?
b) ¿Qué valor contiene E después de la quinta instrucción?
c) ¿Qué valor contiene F después de la sexta instrucción?
d) ¿Cuánto valen A, B y C después de la última instrucción?

Ejercicio 4: Observa la siguiente secuencia de instrucciones:

1. leer (A)
2. resultado = 1
3. mientras (A>1)
4. resultado = resultado * A
5. A = A – 1
6. fin mientras
7. imprimir(resultado)

Ahora responde a las siguientes cuestiones:
a) Si en la primera instrucción se introduce un valor 2 en A ¿Qué valor se imprime?
b) Si en la primera instrucción se introduce un valor 3 en A ¿Qué valor se imprime?
c) Si en la primera instrucción se introduce un valor 4 en A ¿Qué valor se imprime?
d) ¿Qué se está calculando?

Ejercicio 5: Observa la siguiente secuencia de instrucciones:

1. leer (A)
2. Si (A>0)
3. Imprimir (A,’es positivo’)
4. Si no
5. Imprimir (A,’es negativo’)
6. Fin si

a) Describe, instrucción por instrucción, qué se está haciendo con este algoritmo.
b) ¿Qué pasa si A = 5? ¿Y si A = - 100?
c) Escribe otro algoritmo para distinguir múltiplos de 3 y compáralo

Ejercicio 6: Observa la siguiente secuencia de instrucciones:

1. leer (NumeroA)
2. leer (NumeroB)
3. Si (NumeroA < numeroa =" 5" numerob =" -" numeroa =" 10" numerob =" 100?" numeroa =" 10" numerob =" 10?

jueves, 5 de marzo de 2009

1.- Concepto de algoritmo

ALGORITMO
Conjunto de acciones o secuencias de operaciones ejecutadas en un determinado orden para resolver un problema.
Acción
Acontecimiento producido por un actor en un tiempo finito que produce un resultado definido y preciso y además genera cierta transformación.
Analizaremos la acción
Existen diferentes tipos de acciones:
· Acción simple: Realizadas directamente
· Acción compleja: No se pueden realizar directamente sino a través de una descomposición de acciones más simples (diseño Top-down).

Transformación Generada en los elementos intervinientes. Para determinar la transformación debo conocer el ESTADO.

ESTADO Es la observación de los elementos del sistema en un instante de tiempo dado.
Hay tres tipos de estado
Estado inicial Instante donde comienza la acción.(Ei)
Estado intermedio Instante observado en cualquier momento entre el comienzo y la finalización de la acción.
Estado Final Instante observado donde finaliza la acción (Ef)
Características de los algoritmos
Definido (confiable)
Debe indicar un orden a seguir
Debe ser finito, terminar en un número finito de pasos.
*Nota: Algoritmo Se trata de una herramienta capaz de resolver un problema. Todas las situaciones problemáticas pueden ser resueltas a través de algoritmos.

ALGORITMOS:
Lenguaje algorítmico: Se realiza análisis y se elige el método a utilizar, el conjunto de operaciones y orden conforman el algoritmo.
PROGRAMAS:
Lenguaje informático: Es aquel por el cual dicho algoritmo se codifica a la computadora.
Programa > algoritmo destinado a gobernar una computadora.
Lenguaje de programación:
Pueden haber diferentes “lenguajes” tales como: visual Basic, delphi, c++, java, etc.
Pueden tener diferente metodología de programación tales como: Modular, estructurada, orientada a objetos, etc.
Cubren necesidades específicas como ser: el visual Fox Pro, es para programar bases de datos.

Metodología para la resolución de problemas
Hay cinco etapas para resolver problemas algorítmicos, estas son:
Definición del sistema: definir que va a hacer el programa y que solución obtendremos.
Diseño del sistema: Establecer que tipo de metodología usaremos para solucionar el problema (Ej. Top down o Botton up).
Codificación: Es la etapa en donde se escribe el algoritmo en un lenguaje de programación.
Cuando se compila el algoritmo, hay un “antes” y un “después”
Antes > Programa Fuente (lenguaje de programación).
Después > Programa ejecutable (lenguaje de maquina).
Prueba y depuración: Se realizan pruebas para verificar el funcionamiento del programa, se prueba con valores válidos y con no válidos para ver como se comporta y corregir si es necesario.
Documentación y Mantenimiento: Se basa en la instalación, funcionamiento y características del programa. Permite corregir errores o modificar el programa (estos cambios son el mantenimiento del programa).
Hay dos tipos de documentación, estas son:
· Interna > viene dentro del programa (Ej. Readme, características operativas)
· Externa > Viene fuera del programa, diagramas de flujo, manuales de usuario, consejos de uso, etc.

Técnicas de diseño
Hay tres tipos de técnicas, estas son:
TOP DOWN (Diseño descendente): Consiste en tomar el problema inicial y descomponerlo en problemas más pequeños, de solución sencilla.
BOTTON UP: Consiste en partir de los detalles más precisos del algoritmo completando módulos de mayor complejidad – es inverso al anterior - .
WARNIER ORR: Utiliza una representación semejante a cuadros sinópticos para Mostar el funcionamiento y organización del algoritmo.

Técnicas para la formulación de algoritmos
Hay dos tipos, estas son:
*Estos no pueden ser ejecutados por una computadora
Diagramas de Flujo > se basan en la utilización de símbolos para representar las acciones.




Primera Parte
Catedratico: M.E. Manuel Gonzalez

lunes, 23 de febrero de 2009

SOLUCION DE PROBLEMAS MEDIANTE ALGORITMOS

ETAPAS PARA LA SOLUCIÓN DE PROBLEMAS





Objetivos

Describir la diferencia entre la solución de problemas algoritmica y herística.
Presentar y describir las seis etapas para resolver un problema.
Etapas para la solución de problemas

Identificar el problema.
¿Cuál es el problema?

Comprender el problema.
¿Qué se sabe del el problema?

Antes de continuar hacia delante, es necesario comprender los aspectos que conlleva el problema, como la base de conocimiento de la persona o de la máquina para quien se va a resolver el problema.
Comenta sobre aquello que ayuda a entender el problema.
Describe el conocimiento básico y lo que se espera debe conocerse para resolver el problema.
Identificar las distintas alternativas (vias alternas) para resolver el problema.
¿De cuántas formas se puede resolver el problema? Indica los:

Aspectos a favor de cada alternativa
Aspectos en contra de cada alternativa
Seleccionar la mejor alternativa de la etapa anterior.
¿Con qué alternativa me quedo? Para seleccionar la mejor via, se requiere establecer los criterios de evaluación.
Hacer una lista de instrucciones que faciliten la solución del problema.
¿Cómo resolver el problema? Dar instrucciones, paso por paso, a partir de la base de conocimiento establecida en la etapa 2. No se pueden dar instrucciones que el ser humano o la máquina no pueda entender. En el caso de las computadoras, la base de conocimiento es muy limitada.
Lista de instrucciones, etapa por etapa:

Evaluar la solución.
¿Cuál fue el resultado? ¿Funcionó? Si el resultado es incorrecto o insatisfactorio, hay que volver a empezar.

Tipos de problemas

Algunos problemas, como hacer café o cambiar la rueda de un automoviel, se resuelven con una serie de actividades claras y específcas. Esta forma de solución se conoce como solución algorítmica. En este caso, las distintas actividades se ejecutan en un orden lógico, etapa por etapa. Estas etapas se llaman algoritmo, entre los cuales se encuentran los ordinogramas (flujogramas), las tablas de decisión y los pseudocódigos. La solución a otros problemas menos sistemáticos como qué computadora comprar, dónde invertir el capital, cuándo mover las acciones de una cuenta a otra, requiere mayor conocimiento, experiencia e inmiscuirse en un proceso de intento y error. La solución a este tipo de problemas que no resite la simpleza y claridad de ir etapa por etapa se conoce como solución heurística.
Las computadoras están construidas para trabajar con soluciones algorítmicas. El campo de la computadora que trabaja con soluciones herísticas se conoce como inteligencia artificial (IA).

Solución de problemas con computadoras

En el campo de las computadoras se entiende por solución las instrucciones que se dan a la computadora, paso por paso (etapa 5 del proceso de solución de problemas) con el propósito de obtener el mejor resultado. El resultado es la salida (output) o la respuesta asistida por la computadora. Se entiende por programa el grupo de instrucciones que, una vez codificadas en un lenguaje de computadora, hacen posible la solución.

GLOSARIO

Algoritmo
Solución algorítmica
Solución herística
Programa
Resultados
Solución

Preguntas de discusión
¿Cuá;es son las seis etapas para resolver un problema?
¿Qué es una solución de problemas algorítmica?
Menciona dos problemas de solución algorítmica.
¿Qué es una solución de problemas heurística? Menciona dos problemas de este tipo.
¿Cuáles de estos problemas puede resolver de forma eficiente la computadora?

Aplicación de conocimiento

Completa las seis etapas del proceso de solución de problemas con uno de los problemas mencionados en el número 3 de las "Preguntas de discusión".


Por cada una de las siguientes tareas, escribe una cadena numerada de instrucciones (una solución), paso por paso, de tal forma que cualquier persona pueda realizarlas sin necesidad de preguntar. Define el conocimiento básico que esperas debe poseer esa persona (prerrequisitos) para poder seguir las instrucciones. Por ejemplo, para hacer una taza de café, se debe conocer a priori qué es leche, taza, agua, harina de café, y así sucesivamente.


Hacer una taza de café
Reponer una rueda del automóvil.
Estudiar en la universidad.