Tarea 4 algoritmos

11

Click here to load reader

Transcript of Tarea 4 algoritmos

Page 1: Tarea 4 algoritmos

Computación para Ingenieros

Tarea 4

“Fundamentos De Algoritmos”

Oropeza Bonfanti Rodrigo 414012716

Profesor: Ing. Méndez Hernández Ernesto

17/09/2013

Page 2: Tarea 4 algoritmos

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

Page 3: Tarea 4 algoritmos

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

Page 4: Tarea 4 algoritmos

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.

Page 5: Tarea 4 algoritmos

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.

Page 6: Tarea 4 algoritmos

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.

Page 7: Tarea 4 algoritmos

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

Page 8: Tarea 4 algoritmos

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

Page 9: Tarea 4 algoritmos

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.

Page 10: Tarea 4 algoritmos

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

Page 11: Tarea 4 algoritmos

– 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á.