Computación para
Ingenieros
Tarea 4
“Fundamentos De Algoritmos”

Oropeza Bonfanti Rodrigo

414012716

Profesor: Ing. Ménde...
Para empezar, debemos de entender primero que como se maneja y controla un
programa. Todo programa esta constituido por un...
La máquina de Turing se convirtió en un instrumento ideal para probar si un
procedimiento es efectivamente computable o no...
con base en la entrada. En cualquier momento puede estar en uno de
estos estados.
Cabeza de Lectura / Escritura
La cabeza ...
Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos
para definir los pasos del proceso.
No Gráficos: Rep...
Símbolo utilizado para introducir los datos de entrada.
Expresa lectura.

Símbolo utilizado para representar la impresión ...
5. La notación utilizada en el diagrama de flujo debe ser independiente del
lenguaje de programación.
6. Es conveniente cu...
Son aquellas instrucciones cuyo cometido es almacenar un dato o valor simple
obtenido como resultado al evaluar una expres...
de caracteres, y se escribe entre comillas. La longitud de una cadena depende
de los lenguajes de programación.

Datos lóg...
PRUEBA DE ESCRITORIO
La prueba de escritorio es una herramienta útil para entender que hace un
determinado algoritmo, o pa...
–

Hacer mientras (do while): Realiza un conjunto de instrucciones y
continua mientras se cumpla una condición. A diferenc...
Próxima SlideShare
Cargando en…5
×

Tarea 4 algoritmos

993 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
993
En SlideShare
0
De insertados
0
Número de insertados
8
Acciones
Compartido
0
Descargas
9
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Tarea 4 algoritmos

  1. 1. Computación para Ingenieros Tarea 4 “Fundamentos De Algoritmos” Oropeza Bonfanti Rodrigo 414012716 Profesor: Ing. Méndez Hernández Ernesto 17/09/2013
  2. 2. Para empezar, debemos de entender primero que como se maneja y controla 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. Entrada de datos: Instrucciones que toman datos de un dispositivo externo depositándolos después en la memoria principal para posteriormente procesarlos Proceso: Instrucciones encargadas de procesar la información recaudada Salida de Datos: Instrucciones que toman los resultados depositados en la memoria principal una vez procesados los datos de entrada TEORÍA DE LA COMPUTABILIDAD La palabro computabilidad se puede definir como el término matemático para nombrar a los estudios sobre teoría de la computación. Consiste en encontrar la representación adecuada para la descripción de un problema o un fenómeno. La computabilidad se encarga de encontrar formas de representar descripciones de procesos, de manera tal que siempre se pueda decir que la solución de un problema existe o no Asímismo, la computabilidad es la parte de la computación que estudia los problemas de decisión que pueden ser resueltos con un algoritmo o equivalentemente con una 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. La máquina de Turing es una caja negra (tan simple como una máquina de escribir y tan compleja como un ser humano) capaz no sólo de leer y escribir un alfabeto de símbolos finito a partir de una cantidad finita pero muy grande de cinta de papel, sino de modificar su propia configuración o "estado mental".
  3. 3. La máquina de Turing se convirtió en un instrumento ideal para probar si un procedimiento es efectivamente computable o no. Turing empleó su maquina y definió un algoritmo como cualquier conjunto de instrucciones para su máquina simple Funcionamiento Una máquina de Turing es un dispositivo que transforma un INPUT en un OUTPUT después de algunos pasos. Consiste en una cabeza de lectura/escritura que examina una dimensión posiblemente infinita de una cinta bidireccional dividida en cuadros cada uno de los cuales está identificado con un 0 o un 1. Para llevar a cabo algún algoritmo, la máquina se inicializa en algún estado interno arbitrario. A continuación, se pone en marcha, la máquina lee el bit que se encuentra en ese momento en su interior y ejecuta alguna operación con ese bit (lo cambia o no, dependiendo de su estado interno). Después se mueve hacia la derecha o hacia la izquierda, y vuelve a procesar el siguiente bit de la misma manera. Al final se para, dejando el resultado al lado izquierdo. Una máquina de Turing esta formada dos elementos básicos: un control finito y una cinta infinita. Cinta de longitud infinita: dividida en celdas (cada celda puede contener un símbolo. 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. Control finito, que posee un conjunto de estados y que tiene la capacidad de examinar algún símbolo de alguna celda y tomar una decisión (La decisión depende del símbolo observado y del estado en el que se encuentre en ese momento). El controlador es la contraparte teórica de la unidad central de proceso (CPU) en las computadoras modernas. Es un autómata de estado finito, una máquina que tiene un número finito predeterminado de estados y se mueve de un estado a otro
  4. 4. con base en la entrada. En cualquier momento puede estar en uno de estos estados. 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. FUNDAMENTOS DE ALGORITMOS Un algoritmo se puede definir como un conjunto ordenado y finito de pasos u operaciones que permite hallar la solución de un problema. Es un método formal y sistemático de representar la descripción de un proceso. Uno de los algoritmos más antiguos conocidos es el algoritmo de Euclides. El término algoritmo proviene del matemático Muhammad ibn Musa al-Khwarizmi, que vivió aproximadamente entre los años 780 y 850 D.C. en la actual nación iraní. Describió la realización de operaciones elementales en el sistema de numeración decimal. De al-Khwarizmi se obtuvo la derivación algoritmo. CARACTERÍSTICAS DE LOS ALGORITMOS Precisió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. Conciso 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. TIPOS DE ALGORITMOS Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
  5. 5. 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 (pseudocódigo). Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo). 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. 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. 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.
  6. 6. Símbolo utilizado para introducir los datos de entrada. Expresa lectura. Símbolo utilizado para representar la impresión de un resultado. Expresa escritura. Símbolo utilizado para expresar una decisión múltiple. En su interior se almacena un selector, y dependiendo del valor de dicho selector se sigue por una de las ramas o caminos alternativos. Conector dentro de la misma página Conector con otra página externa Otros símbolos Salida en pantalla Entrada por teclado REGLAS PARA LA CONSTRUCCIÓN DE DIAGRAMAS DE FLUJO 1.Todo diagrama de flujo debe tener un inicio y un fin 2. Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas, verticales y horizontales. 3. 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. 4. El diagrama de flujo debe ser construido de arriba hacia abajo y de izquierda a derecha.
  7. 7. 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. 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. 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. 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. Instrucciones de asignación
  8. 8. 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. Instrucciones de salida Son aquellas instrucciones encargadas de recoger los datos procedentes de variables evaluadas y depositarlos en un dispositivo de salida. TIPOS DE DATOS: 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. Datos numéricos Dentro de los tipos de datos numéricos encontramos los enteros y los reales. o Los enteros son números que pueden estar precedidos del signo + ó -, y que no tienen parte decimal. o Los reales son números que pueden ser precedidos del signo + ó -, y que tienen una parte decimal. Datos alfanuméricos Dentro de este tipo de datos encontramos los de tipo carácter (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
  9. 9. de caracteres, y se escribe entre comillas. La longitud de una cadena depende de los lenguajes de programación. 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). 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. 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. DISEÑO DESCENDENTE (TOP-DOWN) Este es un proceso en el cual el problema se descompone en una serie de niveles o pasos sucesivos (stepwise). Esta metodología consiste en crear una relación entre las etapas de estructuración, las que son sucesivas, de tal forma que se interrelacionen mediante entradas y salidas de información. PSEUDOCÓDIGO Representación descriptiva de las operaciones de un algoritmo. Representa una secuencia lógica de actividades, que llevarán en conjunto a la solución de un problema. 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.
  10. 10. 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. ESTRUCTURAS BÁSICAS Ejecución secuencial La ejecución secuencial consiste de ejecutar una instrucción y al terminar, realizar lo que indica el siguiente paso del algoritmo.Las tareas se dan de tal forma que la salida de una es la entrada de la que sigue y así en lo sucesivo hasta cumplir con todo el proceso. Ejecución condicional Consiste de ejecutar un grupo de acciones A ó un grupo de acciones B (pero no ambos) en función del resultado de la evaluación de una condición C (Verdadero ó Falso). Un algoritmo que solo contiene las estructuras de control anteriores funciona para tareas de longitud fija, dado que cada instrucción se ejecuta solamente una vez. Sin embargo, generalmente se requiere que algunas instrucciones sean ejecutadas más de una vez (como en el algoritmo de obtención del mcd); existen estructuras de control que se encargan de la ejecución repetida de bloques de instrucciones, se conocen de forma genérica como estructuras iterativas o ciclos. Tipos de ciclos: – Mientras (while): Se lleva a cabo mientras se cumpla una condición. Primero evalúa la condición y luego ejecuta el conjunto de instrucciones. De no cumplirse la condición desde el inicio, no hace nada y sigue con el flujo normal del algoritmo
  11. 11. – Hacer mientras (do while): Realiza un conjunto de instrucciones y continua mientras se cumpla una condición. A diferencia del anterior, este ciclo se ejecuta por lo menos una vez – Desde hasta (for): Se utiliza cuando se conoce el número de veces que se va a repetir un conjunto de instrucciones. Requiere de un valor inicial, un valor final y un contador Iteración definida Sirve para ejecutar un grupo de instrucciones A exactamente N veces, donde N es un entero positivo. 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 es una condición de paro. En este caso, a diferencia de la iteración definida, la condición de paro C depende exclusivamente de las operaciones realizadas dentro del cuerpo del ciclo. Cuando en un algoritmo se utilizan iteraciones, es necesario tener cuidado de no crear ciclos infinitos, esto se hace con operaciones dentro del bloque de instrucciones que garanticen que la condición de paro se cumplirá.

×