SlideShare une entreprise Scribd logo
1  sur  11
Computación para
Ingenieros
Tarea 4
“Fundamentos De Algoritmos”

Oropeza Bonfanti Rodrigo

414012716

Profesor: Ing. Méndez Hernández Ernesto

17/09/2013
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".
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
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.
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.
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.
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
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
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.
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
–

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

Contenu connexe

Tendances

Introduccion a la logica de programacion
Introduccion a la logica de programacionIntroduccion a la logica de programacion
Introduccion a la logica de programacionnmqy28
 
Algorítmos - Conceptos básicos
Algorítmos - Conceptos básicosAlgorítmos - Conceptos básicos
Algorítmos - Conceptos básicoscbertolotti
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmoNombre Apellidos
 
Tutorial algoritmo representacion
Tutorial algoritmo representacionTutorial algoritmo representacion
Tutorial algoritmo representacionMichele André
 
Estructuras basicas tecnología (1)
Estructuras basicas  tecnología (1)Estructuras basicas  tecnología (1)
Estructuras basicas tecnología (1)SebastianNaranjo19
 
Entidades Primitivas Para Algoritmos
Entidades Primitivas Para AlgoritmosEntidades Primitivas Para Algoritmos
Entidades Primitivas Para AlgoritmosMary Sanchez
 
U7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSU7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSLuiS YmAY
 
Programacion Logica
Programacion LogicaProgramacion Logica
Programacion LogicaNatalia
 
Trabajo de tecnologia
Trabajo de tecnologia Trabajo de tecnologia
Trabajo de tecnologia JuanGarcia1543
 
Introduccion a Algoritmos
Introduccion a AlgoritmosIntroduccion a Algoritmos
Introduccion a Algoritmossmog2010
 
Presentacion algoritmos
Presentacion algoritmosPresentacion algoritmos
Presentacion algoritmosaralylopez88
 

Tendances (20)

Introduccion a la logica de programacion
Introduccion a la logica de programacionIntroduccion a la logica de programacion
Introduccion a la logica de programacion
 
Algorítmos - Conceptos básicos
Algorítmos - Conceptos básicosAlgorítmos - Conceptos básicos
Algorítmos - Conceptos básicos
 
Diagramas de flujo - Estructura - Definición
Diagramas de flujo - Estructura - Definición Diagramas de flujo - Estructura - Definición
Diagramas de flujo - Estructura - Definición
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmo
 
Introduccion Analisis Algoritmos
Introduccion Analisis AlgoritmosIntroduccion Analisis Algoritmos
Introduccion Analisis Algoritmos
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Tutorial algoritmo representacion
Tutorial algoritmo representacionTutorial algoritmo representacion
Tutorial algoritmo representacion
 
Estructuras basicas tecnología (1)
Estructuras basicas  tecnología (1)Estructuras basicas  tecnología (1)
Estructuras basicas tecnología (1)
 
Algorimo1
Algorimo1Algorimo1
Algorimo1
 
Tecnoooo00000000000
Tecnoooo00000000000Tecnoooo00000000000
Tecnoooo00000000000
 
Entidades Primitivas Para Algoritmos
Entidades Primitivas Para AlgoritmosEntidades Primitivas Para Algoritmos
Entidades Primitivas Para Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
U7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSU7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOS
 
Programacion Logica
Programacion LogicaProgramacion Logica
Programacion Logica
 
Tema v
Tema vTema v
Tema v
 
Trabajo de tecnologia
Trabajo de tecnologia Trabajo de tecnologia
Trabajo de tecnologia
 
Tema v
Tema vTema v
Tema v
 
Introduccion a Algoritmos
Introduccion a AlgoritmosIntroduccion a Algoritmos
Introduccion a Algoritmos
 
Presentacion algoritmos
Presentacion algoritmosPresentacion algoritmos
Presentacion algoritmos
 
Resumen prgramacion
Resumen prgramacionResumen prgramacion
Resumen prgramacion
 

Similaire à Tarea 4 algoritmos

Unidad I Algoritmos
Unidad I   AlgoritmosUnidad I   Algoritmos
Unidad I AlgoritmosEnder Melean
 
Unidad I Algoritmos
Unidad  I    AlgoritmosUnidad  I    Algoritmos
Unidad I AlgoritmosEnder Melean
 
Algoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujoAlgoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujoClariza
 
Unidad algoritmos y df
Unidad algoritmos y dfUnidad algoritmos y df
Unidad algoritmos y dfernestdo1
 
Razonamiento algoritmico
Razonamiento algoritmicoRazonamiento algoritmico
Razonamiento algoritmicopaty_cursocompu
 
Practica 09 programacion web intoduccion mari
Practica 09 programacion web intoduccion mariPractica 09 programacion web intoduccion mari
Practica 09 programacion web intoduccion mariMaribelPechaLamprea
 
Practica 09 programacion web intoduccion mari
Practica 09 programacion web intoduccion mariPractica 09 programacion web intoduccion mari
Practica 09 programacion web intoduccion mariMaribelPechaLamprea
 
Algoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
Algoritmos, Pseudocódigos, Diagrama de Flujo y MetodologíaAlgoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
Algoritmos, Pseudocódigos, Diagrama de Flujo y MetodologíaJesus Freites
 
Desarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoDesarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoLeidiCaro1
 
Estructuras algoritmicas representación
Estructuras algoritmicas representaciónEstructuras algoritmicas representación
Estructuras algoritmicas representaciónBenjamin Medina Ramirez
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionBoris Salleg
 
Fundamentos programación
Fundamentos programaciónFundamentos programación
Fundamentos programaciónMilton Escobar
 
Tarea de tegnologia pdf (1)
Tarea de tegnologia pdf (1)Tarea de tegnologia pdf (1)
Tarea de tegnologia pdf (1)anaforero11
 
Tecnicatura en programacion
Tecnicatura en programacionTecnicatura en programacion
Tecnicatura en programacionadrianfazio
 

Similaire à Tarea 4 algoritmos (20)

Tema v
Tema vTema v
Tema v
 
Unidad I Algoritmos
Unidad I   AlgoritmosUnidad I   Algoritmos
Unidad I Algoritmos
 
Unidad I Algoritmos
Unidad  I    AlgoritmosUnidad  I    Algoritmos
Unidad I Algoritmos
 
Apartes De Algoritmos
Apartes De AlgoritmosApartes De Algoritmos
Apartes De Algoritmos
 
Algoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujoAlgoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujo
 
Unidad algoritmos y df
Unidad algoritmos y dfUnidad algoritmos y df
Unidad algoritmos y df
 
Razonamiento algoritmico
Razonamiento algoritmicoRazonamiento algoritmico
Razonamiento algoritmico
 
Practica 09 programacion web intoduccion mari
Practica 09 programacion web intoduccion mariPractica 09 programacion web intoduccion mari
Practica 09 programacion web intoduccion mari
 
Practica 09 programacion web intoduccion mari
Practica 09 programacion web intoduccion mariPractica 09 programacion web intoduccion mari
Practica 09 programacion web intoduccion mari
 
Algoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
Algoritmos, Pseudocódigos, Diagrama de Flujo y MetodologíaAlgoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
Algoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
 
Desarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoDesarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamiento
 
Estructuras algoritmicas representación
Estructuras algoritmicas representaciónEstructuras algoritmicas representación
Estructuras algoritmicas representación
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacion
 
Aj
AjAj
Aj
 
Aj
AjAj
Aj
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
INTRODUCCION
INTRODUCCIONINTRODUCCION
INTRODUCCION
 
Fundamentos programación
Fundamentos programaciónFundamentos programación
Fundamentos programación
 
Tarea de tegnologia pdf (1)
Tarea de tegnologia pdf (1)Tarea de tegnologia pdf (1)
Tarea de tegnologia pdf (1)
 
Tecnicatura en programacion
Tecnicatura en programacionTecnicatura en programacion
Tecnicatura en programacion
 

Tarea 4 algoritmos

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