Tema V. Fundamentos de      algoritmos  Objetivo: El alumno explicará la  importancia de llevar un método  formal para res...
1.1. La computabilidad y concepto de                algoritmo:             Máquina de Turing.Partes de un programa Todo pr...
1.1. La computabilidad y concepto de             algoritmo:          Máquina de Turing.
1.1. La computabilidad y concepto de                  algoritmo:               Máquina de Turing.Teoría de la computabilid...
1.1. La computabilidad y concepto              de algoritmo:            Máquina de Turing.Máquina de Turing La Máquina de ...
1.1. La computabilidad y concepto de                algoritmo:             Máquina de Turing.Máquina de Turing Una máquina...
1.1. La computabilidad y concepto de                 algoritmo:              Máquina de Turing.Cinta Aun cuando las comput...
1.1. La computabilidad y concepto de                 algoritmo:              Máquina de Turing.Cabeza de Lectura / Escritu...
1.1. La computabilidad y concepto de                algoritmo:             Máquina de Turing.ControladorEl controlador es ...
1.1. La computabilidad y concepto de                       algoritmo:                    Máquina de Turing.Máquina de Turing
5.2 Elementos de los algoritmos y tipos                de datosFundamentos de AlgoritmosUno de los algoritmos másantiguos ...
5.2 Elementos de los algoritmos y tipos                      de datosFundamentos de Algoritmos    Un algoritmo se puede de...
5.2 Elementos de los algoritmos y tipos                  de datosCaracterísticas de los algoritmosPrecisión:   Los pasos a...
5.2 Elementos de los algoritmos y tipos                   de datosCaracterísticas de los algoritmosConciso y Detallado:  D...
5.2 Elementos de los algoritmos y tipos                   de datosMódulos de un algoritmo
5.2 Elementos de los algoritmos y tipos                      de datosTipos de algoritmos   Cualitativos    Son aquellos e...
5.3 Representación de los algoritmos            (diagrama de flujo y pseudocódigo)Diagrama de Flujo  Para el diseño de alg...
5.3 Representación de los algoritmos         (diagrama de flujo y pseudocódigo)Construcción de los Diagramas de Flujo  Su ...
5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)  Símbolos para los Diagramas de Flujo         Símb...
5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)
5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)
5.3 Representación de los algoritmos      (diagrama de flujo y pseudocódigo)Reglas para la construcción de Diagramas de Fl...
5.3 Representación de los algoritmos       (diagrama de flujo y pseudocódigo)Reglas para la construcción de Diagramas de F...
5.3 Representación de los algoritmos           (diagrama de flujo y pseudocódigo)     Reglas para la construcción de Diagr...
5.3 Representación de los algoritmos      (diagrama de flujo y pseudocódigo)Tipos de Instrucciones  Una instrucción puede ...
5.3 Representación de los algoritmos       (diagrama de flujo y pseudocódigo)Instrucciones de definición de datos  Son aqu...
5.3 Representación de los algoritmos         (diagrama de flujo y pseudocódigo)Instrucciones primitivas  Se consideran com...
5.3 Representación de los algoritmos      (diagrama de flujo y pseudocódigo)Instrucciones de asignación  Son aquellas inst...
5.3 Representación de los algoritmos       (diagrama de flujo y pseudocódigo)Instrucciones de salida  Son aquellas instruc...
5.3 Representación de los algoritmos       (diagrama de flujo y pseudocódigo)Tipos de datos:    Los datos a procesar por u...
5.3 Representación de los algoritmos      (diagrama de flujo y pseudocódigo)Datos Simples  La principal característica es ...
5.3 Representación de los algoritmos     (diagrama de flujo y pseudocódigo)          Datos numéricosDentro de los tipos de...
5.3 Representación de los algoritmos       (diagrama de flujo y pseudocódigo)Datos alfanuméricos  Dentro de este tipo de d...
5.3 Representación de los algoritmos     (diagrama de flujo y pseudocódigo)Datos lógicos  Dentro de este tipo de datos enc...
5.3 Representación de los algoritmos      (diagrama de flujo y pseudocódigo)Variables  Las variables son objetos que puede...
5.3 Representación de los algoritmos     (diagrama de flujo y pseudocódigo)Constantes Las constantes son datos que no camb...
5.3 Representación de los algoritmos        (diagrama de flujo y pseudocódigo)Operaciones aritméticas  Los operadores son ...
5.3 Representación de los algoritmos     (diagrama de flujo y pseudocódigo)Pseudocódigo Se puede definir como el lenguaje ...
5.3 Representación de los algoritmos       (diagrama de flujo y pseudocódigo)Pseudocódigo
5.3 Representación de los algoritmos       (diagrama de flujo y pseudocódigo)Prueba de Escritorio  La prueba de escritorio...
5.3 Representación de los algoritmos         (diagrama de flujo y pseudocódigo)         inicioletra    ‘Z’; letra>=’A’ ; l...
1.1. La computabilidad y concepto de             algoritmo:          Máquina de Turing.
5.3 Representación de los algoritmos            (diagrama de flujo y pseudocódigo)                                        ...
5.3 Representación de los algoritmos            (diagrama de flujo y pseudocódigo)Un diagrama de flujo es la representació...
5.4 Estructuras básicas    (secuencia, condicional e iteración)Un algoritmo contiene instrucciones elementales seleccionad...
5.4.1. Estructuras de Control.El control de la secuencia se consigue combinando variasinstrucciones, llamadas estructuras ...
5.4.1.1. Ejecución secuencial.La ejecución secuencial consiste deejecutar una instrucción y al terminar,realizar lo que in...
5.4.1.2. Ejecución condicional.Consiste de ejecutar un grupo deacciones A ó un grupo de accionesB (pero no ambos) en funci...
5.4.1.2. Ejecución condicional.Un algoritmo que solo contiene las estructuras de controlanteriores funciona para tareas de...
5.4.1.3. Iteración definida.Sirve para ejecutar un grupo deinstrucciones A exactamente Nveces, donde N es un enteropositivo.
5.4.1.3. Iteración definida.Es importante notar que en el caso de la iteración definidaexiste una variable implícita llama...
5.4.1.4. Iteración condicional.Conocida también como iteración indefinida,se utiliza para repetir un bloque de acciones A,...
5.4.1.4. Iteración condicional.En este caso, a diferencia de la iteración definida, la condición deparo C depende exclusiv...
5.4.1.5.                CICLO ITERATIVOCICLO ITERATIVO Se entiende por ciclo iterativo la unión de símbolosgráficos que en...
5.4 Estructuras básicas      (secuencia, condicional e iteración)Es conveniente realizar lasolución de problemas con lacom...
5.4 Estructuras básicas    (secuencia, condicional e iteración)Aplicaciones del Ciclo IterativoCalcular el valor de la exp...
5.4 Estructuras básicas    (secuencia, condicional e iteración)Aplicaciones del Ciclo IterativoOtro de los conceptos depro...
5.4 Estructuras básicas                (secuencia, condicional e iteración)    Otro elemento útil para el cálculo de fórmu...
5.4.2. Combinación de         estructuras de control.Un algoritmo puede contener estructuras decontrol de flujo combinadas...
1.5. Resolución de problemas básicos de                  ingeniería.  Es importante mencionar que para realizar un  buen d...
1.5.1. Ejemplos.Ejemplo: Obtener las raíces de una ecuacióncuadrática.Este ejemplo presenta el pseudocódigo y eldiagrama d...
1.5.1. Ejemplos.
1.5.1. Ejemplos.
La importancia de las pruebas.    Aquí se presentan solo algunas de las númerosas historias relacionadas    con errores en...
La importancia de las pruebas.Hace algunos años una anciana danesa recibió, cercano a su cumpleañosnúmero 107, una carta ...
1.5.1. Ejemplos.•Diseña un algoritmo que lea un número natural distinto de 0desde teclado y muestre por pantalla todos los...
1.5.1. Ejemplos.algoritmo : Divisores# Algoritmo que escribe los divisores de un número dado{numero=X ∧ (X ∈ N) ∧ X>0}# De...
Tema v
Tema v
Tema v
Tema v
Tema v
Tema v
Tema v
Tema v
Upcoming SlideShare
Loading in …5
×

Tema v

784 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
784
On SlideShare
0
From Embeds
0
Number of Embeds
267
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tema v

  1. 1. Tema V. Fundamentos de algoritmos Objetivo: El alumno explicará la importancia de llevar un método formal para resolver problemas en la computadora; asimismo aplicará dicho método en la resolución de problemas matemáticos sencillos.
  2. 2. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.Partes de un programa Todo programa esta constituido por un conjunto de órdenes o instrucciones capaces de manipular un conjunto de datos. Éstas órdenes o instrucciones pueden ser divididas en tres grandes bloques claramente diferenciados, correspondientes cada uno de ellos a una parte del diseño de un programa.
  3. 3. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.
  4. 4. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.Teoría de la computabilidadEs la parte de lacomputación que estudialos problemas de decisiónque pueden ser resueltoscon un algoritmo oequivalentemente con unamáquina de Turing. Máquina ENIGMA Segunda Guerra Mundial
  5. 5. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.Máquina de Turing La Máquina de Turing se introdujo en 1936 por Alan M. Turing para resolver problemas computables. Es la base de las computadoras modernas.
  6. 6. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.Máquina de Turing Una máquina de Turing esta formada por tres componentes: Una Cinta, Un Controlador y Una Cabeza de lectura/escritura.
  7. 7. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.Cinta Aun cuando las computadoras modernas utilizan un dispositivo de acceso aleatorio con capacidad finita, la memoria de la máquina de Turing es infinita. La cinta, en cualquier momento mantiene una secuencia de caracteres del conjunto de caracteres aceptado por la máquina. Cinta o Banda de Moebius August Ferdinand Möbius y Johann Benedict Listing en 1858
  8. 8. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.Cabeza de Lectura / Escritura La cabeza de lectura/escritura en cualquier momento señala a un símbolo en la cinta. Llamamos a este símbolo el símbolo actual. La cabeza de lectura/escritura lee y escribe un símbolo a la vez desde la cinta. Después de leer y escribir se mueve a la izquierda, a la derecha o permanece en su lugar. La lectura, la escritura y el desplazamiento, todos se realizan bajo instrucciones del controlador.
  9. 9. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.ControladorEl controlador es la contraparte teórica de la unidad central deproceso (CPU) en las computadoras modernas. Es un autómata deestado finito, una máquina que tiene un número finitopredeterminado de estados y se mueve de un estado a otro con baseen la entrada. En cualquier momento puede estar en uno de estosestados.
  10. 10. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.Máquina de Turing
  11. 11. 5.2 Elementos de los algoritmos y tipos de datosFundamentos de AlgoritmosUno de los algoritmos másantiguos conocidos es el algoritmode Euclides. El término algoritmoproviene del matemáticoMuhammad ibn Musa al-Khwarizmi,que vivió aproximadamente entrelos años 780 y 850 D.C. en laactual nación iraní. Describió larealización de operacioneselementales en el sistema denumeración decimal. De al-Khwarizmi se obtuvo la derivaciónalgoritmo.
  12. 12. 5.2 Elementos de los algoritmos y tipos de datosFundamentos de Algoritmos Un algoritmo se puede definir como un conjunto pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema de un cierto tipo. Por tanto debe ser: Precisión Determinismo Finitud
  13. 13. 5.2 Elementos de los algoritmos y tipos de datosCaracterísticas de los algoritmosPrecisión: Los pasos a seguir en el algoritmo deben ser precisados claramente.Determinismo: El algoritmo, dado un conjunto de datos idénticos de entrada, siempre debe arrojar los mismos resultados.Finitud: El algoritmo, independientemente de la complejidad del mismo, siempre debe ser de longitud finita.
  14. 14. 5.2 Elementos de los algoritmos y tipos de datosCaracterísticas de los algoritmosConciso y Detallado: Debe reflejar con el máximo detalle el orden de ejecución de cada acción u operación que vaya a realizar la computadora.Claro y Sencillo: Con el objetivo de facilitar su entendimiento y compresión por parte del programador.
  15. 15. 5.2 Elementos de los algoritmos y tipos de datosMódulos de un algoritmo
  16. 16. 5.2 Elementos de los algoritmos y tipos de datosTipos de algoritmos Cualitativos Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. No Gráficos Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo). Gráficos Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo).
  17. 17. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Diagrama de Flujo Para el diseño de algoritmos se utilizan técnicas de representación. Una de estas técnicas son los denominados Diagramas de Flujo, que se definen como la representación gráfica que, mediante el uso de símbolos estándar conectados o unidos mediante líneas de flujo, muestran la secuencia lógica de las operaciones o acciones que deben realizar las computadoras, así como la corriente o flujo de datos en la resolución de un programa.
  18. 18. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Construcción de los Diagramas de Flujo Su correcta construcción es sumamente importante porque a partir del mismo se puede escribir un programa en algún lenguaje de programación. Es importante mantener un estándar para la realización de dichos diagramas, esto con el fin de facilitar el intercambio de algoritmos mediante su esquematización gráfica. Es por eso que a continuación se muestran los símbolos a ocupar durante el curso.
  19. 19. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo) Símbolos para los Diagramas de Flujo Símbolo utilizado para marcar el inicio o fin del diagrama de flujo. Símbolo utilizado para representar un proceso. En su interior se expresan asignaciones, operaciones aritméticas, cambios de valor de celdas en memoria, etc. Símbolo utilizado para representar una decisión. En su interior se almacena una condición, y dependiendo del resultado de la evaluación de la misma se sigue por una de las ramas o caminos alternativos. Símbolo utilizado para introducir los datos de entrada. Expresa lectura. Símbolo utilizado para representar la impresión de un resultado. Expresa escritura.
  20. 20. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)
  21. 21. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)
  22. 22. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Reglas para la construcción de Diagramas de Flujo1.Todo diagrama de flujo debe tener un inicio y un fin2. Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas, verticales y horizontales.
  23. 23. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Reglas para la construcción de Diagramas de Flujo3. Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar conectadas. La conexión puede ser a un símbolo que exprese lectura, proceso, decisión, impresión, conexión o fin de diagrama.
  24. 24. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo) Reglas para la construcción de Diagramas de Flujo4. El diagrama de flujo debe ser construido de arriba hacia abajo y de izquierda a derecha.5. La notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de programación.6. Es conveniente cuando realizamos una tarea compleja poner comentarios que expresen o ayuden a entender lo que hicimos.7. Si el diagrama de flujo requiriera más de una hoja para su construcción, debemos utilizar los conectores adecuados y enumerar las páginas convenientemente.8. No puede llegar más de una línea a un símbolo.
  25. 25. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Tipos de Instrucciones Una instrucción puede ser considerada como un hecho o suceso de duración limitada que genera unos cambios previstos en la ejecución de un programa, por lo que debe ser una acción previamente estudiada y definida.
  26. 26. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Instrucciones de definición de datos Son aquellas instrucciones utilizadas para informar al procesador del espacio que debe reservar en memoria, con la finalidad de almacenar un dato mediante el uso de variables simples o estructuras de datos más complejas como, por ejemplo, tablas. La definición consiste en indicar un nombre a través del cual haremos referencia al dato y un tipo a través del cual informaremos al procesador de las características y espacio que deberá reservar en memoria.
  27. 27. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Instrucciones primitivas Se consideran como tal las instrucciones de asignación y las instrucciones de entrada/salida.Instrucciones de entrada Son aquellas instrucciones encargadas de recoger el dato de un dispositivo de entrada, y seguidamente almacenarlo en memoria en una variable previamente definida, para la cual se ha reservado suficiente espacio en memoria.
  28. 28. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Instrucciones de asignación Son aquellas instrucciones cuyo cometido es almacenar un dato o valor simple obtenido como resultado al evaluar una expresión en una variable previamente definida y declarada.
  29. 29. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Instrucciones de salida Son aquellas instrucciones encargadas de recoger los datos procedentes de variables evaluadas y depositarlos en un dispositivo de salida.
  30. 30. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Tipos de datos: Los datos a procesar por una computadora pueden clasificarse en: Simples Estructurados
  31. 31. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Datos Simples La principal característica es que solo ocupan sólo una casilla de memoria, por lo tanto, una variable simple hace referencia a un único valor a la vez. Dentro de este grupo se encuentran: enteros, reales, caracteres, booleanos, enumerados y subrangos.Datos Estructurados Se caracterizan por el hecho de que con un nombre (identificador de variable estructurada) se hace referencia a un grupo de casillas de memoria. Es decir un dato estructurado tiene varios componentes.
  32. 32. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo) Datos numéricosDentro de los tipos de datosnuméricos encontramos losenteros y los reales. Los reales son números queLos enteros son números que pueden ser precedidos delpueden estar precedidos del signo + ó -, y que tienen unasigno + ó -, y que no tienen parte decimal.parte decimal.
  33. 33. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Datos alfanuméricos Dentro de este tipo de datos encontramos los de tipo caracter (simple) y cadena de caracteres (estructurado). Son datos cuyo contenido pueden ser letras del abecedario (a,b,c,…z), dígitos (0,1,2,…9) o símbolos especiales (#, $, ^, *, %, …, etc). Debemos remarcar que aunque este tipo de datos puede contener números, no pueden ser utilizados para realizar operaciones aritméticas. Un dato tipo cadena de caracteres contiene un conjunto de caracteres, y se escribe entre comillas. La longitud de una cadena depende de los lenguajes de programación.
  34. 34. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Datos lógicos Dentro de este tipo de datos encontramos los booleanos. Son datos que sólo pueden tomar dos valores: verdadero (true) y falso (false).
  35. 35. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Variables Las variables son objetos que pueden cambiar su valor durante la ejecución de un programa. Al igual que las constantes, pueden existir tipos de variables como tipos de datos.
  36. 36. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Constantes Las constantes son datos que no cambian durante la ejecución de un programa. Para nombrar las constantes utilizamos identificadores. Existen tipos de constantes como tipos de datos, por lo tanto, puede haber constantes de tipo entero, real, carácter, cadena de caracteres, etc.
  37. 37. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Operaciones aritméticas Los operadores son símbolos que sirven para conectar los datos facilitando la realización de diversas clases de operaciones.
  38. 38. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Pseudocódigo Se puede definir como el lenguaje intermedio entre el lenguaje natural y el lenguaje de programación seleccionado. Esta notación se encuentra sujeta a unas determinadas reglas que permiten y facilitan el diseño de algoritmos. El pseudocódigo surge como método para la representación de instrucciones en una metodología estructurada y nació como un lenguaje similar al inglés, que utilizaba palabras reservadas de este idioma (start, end, stop, while, repeat, for, if, if-else, etc.) y que posteriormente se fue adaptando a otros lenguajes de habla hispana.
  39. 39. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Pseudocódigo
  40. 40. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Prueba de Escritorio La prueba de escritorio es una herramienta útil para entender que hace un determinado algoritmo, o para verificar que un algoritmo cumple con la especificación sin necesidad de ejecutarlo. Básicamente, una prueba de escritorio es una ejecución ‘a mano’ del algoritmo, por lo tanto se debe llevar registro de los valores que va tomando cada una de las variables involucradas en el mismo. Esta prueba consiste en que dar diferentes datos de entrada al programa y seguir la secuencia indicada en el diagrama, hasta obtener los resultados.
  41. 41. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo) inicioletra ‘Z’; letra>=’A’ ; letra - 1 letra fin
  42. 42. 1.1. La computabilidad y concepto de algoritmo: Máquina de Turing.
  43. 43. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)   La estructura general de un algoritmo en pseudocódigo sería:   NOMBRE DEL PROGRAMA   DEFINICIÓN DE CADA MÓDULO   CUERPO DEL PROGRAMA DATOS: parámetros, constantes, variables, ...   ALGORITMO descripción detallada de las órdenes y acciones que se deben ejecutar para resolver elproblema ... FIN DEL ALGORITMO    
  44. 44. 5.3 Representación de los algoritmos (diagrama de flujo y pseudocódigo)Un diagrama de flujo es la representación detallada en forma gráfica de comodeben realizarse los pasos en la computadora para producir resultados.Esta representación gráfica se da cuando varios símbolos (que indican diferentesprocesos en la computadora), se relacionan entre si mediante líneas que indican elorden en que se deben ejecutar los procesos. Los símbolos utilizados han sidonormalizados por el instituto norteamericano de normalización (ANSI). Todo diagrama debe tener un inicio y un fin. Se deben se usar solamente líneas de flujo horizontales y/o verticales. Se debe evitar el cruce de líneas utilizando los conectores.   Se deben usar conectores solo cuando sea necesario.   No deben quedar líneas de flujo sin conectar. Se deben trazar los símbolos de manera  que se puedan leer de arriba hacia abajo y de izquierda a derecha.   Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras. Utilizar comentarios ya sea al margen o mediante el símbolo grafico comentarios para que este sea entendible por cualquier persona que lo consulte. Si el diagrama abarca mas de una hoja es conveniente enumerarlo e identificar de donde viene y a donde se dirige.
  45. 45. 5.4 Estructuras básicas (secuencia, condicional e iteración)Un algoritmo contiene instrucciones elementales seleccionadascuidadosamente que pueden ser realizadas por un robot ó unprocesador; el procesador recibe las órdenes y ejecuta lo queindican, resulta obvio que la disposición de las instrucciones resultacrucial al momento de llevarlas a cabo. Por tanto, el algoritmo debeincluir instrucciones de control que modifiquen la ruta que debeseguir el procesador, además de indicar que debe hacerse en cadapaso, así como el momento en el cual debe detenerse.Se ha probado que para implementar cualquier algoritmo, sonsuficientes tres construcciones básicas para control de flujosecuencia, condicional y ciclos iterativos (repetitivos). Acontinuación se describe cada una de ellas y se muestra surepresentación tanto en pseudocódigo como en diagrama de flujo.
  46. 46. 5.4.1. Estructuras de Control.El control de la secuencia se consigue combinando variasinstrucciones, llamadas estructuras de control de flujo, osimplemente estructuras de control.Incluso la receta del pastel contiene algunas de ellas, porejemplo:
  47. 47. 5.4.1.1. Ejecución secuencial.La ejecución secuencial consiste deejecutar una instrucción y al terminar,realizar lo que indica el siguiente pasodel algoritmo.
  48. 48. 5.4.1.2. Ejecución condicional.Consiste de ejecutar un grupo deacciones A ó un grupo de accionesB (pero no ambos) en función delresultado de la evaluación de unacondición C (Verdadero ó Falso).
  49. 49. 5.4.1.2. Ejecución condicional.Un algoritmo que solo contiene las estructuras de controlanteriores funciona para tareas de longitud fija, dado que cadainstrucción se ejecuta solamente una vez. Sin embargo,generalmente se requiere que algunas instrucciones seanejecutadas más de una vez (como en el algoritmo de obtencióndel mcd); existen estructuras de control que se encargan de laejecución repetida de bloques de instrucciones, se conocen deforma genérica como estructuras iterativas o ciclos.
  50. 50. 5.4.1.3. Iteración definida.Sirve para ejecutar un grupo deinstrucciones A exactamente Nveces, donde N es un enteropositivo.
  51. 51. 5.4.1.3. Iteración definida.Es importante notar que en el caso de la iteración definidaexiste una variable implícita llamada contador, cont en elejemplo, y sirve para tener un registro del número deiteraciones realizadas hasta el momento y para llegar a lacondición de paro. Otra variable muy utilizada cuando setrabaja con ciclos es conocida como acumulador, y sirve paraalmacenar resultados parciales de alguna operaciónimportante dentro del ciclo; además, al terminar el ciclo,almacena el resultado final deseado.
  52. 52. 5.4.1.4. Iteración condicional.Conocida también como iteración indefinida,se utiliza para repetir un bloque de acciones A,mientras una condición c sea verdadera, c esuna condición de paro.
  53. 53. 5.4.1.4. Iteración condicional.En este caso, a diferencia de la iteración definida, la condición deparo C depende exclusivamente de las operaciones realizadas dentrodel cuerpo del ciclo.Cuando en un algoritmo se utilizan iteraciones, es necesario tenercuidado de no crear ciclos infinitos, esto se hace con operacionesdentro del bloque de instrucciones que garanticen que la condiciónde paro se cumplirá.
  54. 54. 5.4.1.5. CICLO ITERATIVOCICLO ITERATIVO Se entiende por ciclo iterativo la unión de símbolosgráficos que en su conjunto indica cómo repetir cierto proceso; lasestructuras básicas más comunes son:
  55. 55. 5.4 Estructuras básicas (secuencia, condicional e iteración)Es conveniente realizar lasolución de problemas con lacomputadora de maneraconversacional, es decir, que elprograma de computadora nosvaya indicando mediantemensajes las opciones y si sedesea repetir el proceso conotros datos. El bosquejo generalde un diagrama de flujoconversacional puede ser elsiguiente:
  56. 56. 5.4 Estructuras básicas (secuencia, condicional e iteración)Aplicaciones del Ciclo IterativoCalcular el valor de la expresióny almacenar en la variableindicada a la izquierda del signoigual, se genera el concepto decontador o expresión quepermite contar (que consta deun ciclo iterativo que ejecutavarias veces la instrucción dereemplazo: C=C+1):
  57. 57. 5.4 Estructuras básicas (secuencia, condicional e iteración)Aplicaciones del Ciclo IterativoOtro de los conceptos deprogramación de gran utilidad esla estructura que nos permitellevar a cabo sumatorias (en ellasel proceso que se repite es laacumulación de expresionessimilares, por ejemplo sumar ndígitos o sumar una y otra vez elvalor de una variable X elevada aun exponente que crece en cadaocasión)
  58. 58. 5.4 Estructuras básicas (secuencia, condicional e iteración) Otro elemento útil para el cálculo de fórmulas es el que resulta de aplicar el concepto de reemplazo del valor de la variable a lo que se llamará una multiplicación reiterada, la cual permite obtener factoriales de tipo descendente o ascendente.Obténganse el factorial de: 5!Se sabe que su factorial ascendente es: 1 x 2 x 3 x 4 x 5 De dicha multiplicación se observa la presencia del elemento llamado contador, que multiplica su valor por el de la variable del factorial obtenido en el paso anterior, en efecto:F = 1 Valor inicial de la variable del factorialF = 1 x 2 Valor anterior de F multiplicado por 2, es decir, F = F x 2F = 1 x 2 x 3 Valor anterior de F multiplicado por 3, es decir, F = F x 3F = 1 x 2 x 3 x 4 Valor anterior de F multiplicado por 4, es decir, F = F x 4F = 1 x 2 x 3 x 4 x 5 Valor anterior de F multiplicado por 5, es decir, F = F x 5
  59. 59. 5.4.2. Combinación de estructuras de control.Un algoritmo puede contener estructuras decontrol de flujo combinadas de formacompleja; secuencias, condicionales eiteraciones pueden estar intercaladas yanidadas.
  60. 60. 1.5. Resolución de problemas básicos de ingeniería. Es importante mencionar que para realizar un buen diseño de pseudocódigos y diagramas de flujo es necesario realizar las tres fases mencionadas en el desarrollo de algoritmos:1. Analizar.2. Diseñar.3. Probar.
  61. 61. 1.5.1. Ejemplos.Ejemplo: Obtener las raíces de una ecuacióncuadrática.Este ejemplo presenta el pseudocódigo y eldiagrama de flujo que utiliza la fórmula generalpara obtener las raíces reales de una ecuación decuadrática:
  62. 62. 1.5.1. Ejemplos.
  63. 63. 1.5.1. Ejemplos.
  64. 64. La importancia de las pruebas. Aquí se presentan solo algunas de las númerosas historias relacionadas con errores en el software, varias han terminado incluso con pérdida de vidas. Es importante realizar simpre pruebas exhaustivas cuando se diseñan algoritmos y programas, sin asumir de antemano que son correctos. A principios de los años 60’s, una nave espacial de la serie Mariner enviada a Venus se perdió debido a un error en el programa del control de vuelo, esto costó varios millones de dólares. En una serie de incidentes entre 1986 y 1987, muchos pacientes recibieron sobredosis masivas de radiación de un sistema de terapia de radiación Therac-25; tres de ellos fallecieron a causa de complicaciones relacionadas. Un componente de hardware de seguridad que bloqueaba la radiación fue sustituido por revisiones por software, pero debido a un error en el programa no realizaba bien la tarea.
  65. 65. La importancia de las pruebas.Hace algunos años una anciana danesa recibió, cercano a su cumpleañosnúmero 107, una carta computarizada de las autoridades escolares localescon instrucciones sobre como realizar su inscripción a primer grado deeducación primaria. Resulta que el campo “año” en la base de datos soloalmacenaba dos dígitos.En el cambio de milenio, los problemas de software se convirtieron ennoticia de primera plana con el llamado problema del año 2000, mejorconocido como “Y2K bug”. El miedo era que el 1o de enero del año 2000todo dejaría de funcionar, ya que las computadoras usaban sólo dosdígitos para almacenar el año y por esto, asumirían que “00” era el año1900 en lugar del 2000. Esto dio como resultado un gran (existoso) y muycostoso esfuerzo para corregir programas en todo el mundo.Estos son solo algunos ejemplos de la importancia que tiene realizarpruebas a los diseños de software elaborados.
  66. 66. 1.5.1. Ejemplos.•Diseña un algoritmo que lea un número natural distinto de 0desde teclado y muestre por pantalla todos los divisores de dichonúmero.
  67. 67. 1.5.1. Ejemplos.algoritmo : Divisores# Algoritmo que escribe los divisores de un número dado{numero=X ∧ (X ∈ N) ∧ X>0}# Declaración de variablesvar numero, contador : entero fvar # Cuerpo del algoritmo escribe(Introduce un número natural no nulo : ); lee(numero); escribe(1); contador := 2; mientras (contador < numero) hacer si (numero resto contador) = 0 entonces escribe(contador) fsi; contador := contador + 1 fmientras; escribelin(contador){numero=X ∧ contador=X}falgoritmo.

×