Está en la página 1de 15

UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO

FACULTAD DE INGENIERIA
ENRIQUE LAZCANO SANCHEZ
FUNDAMENTOS DE ALGORITMOS
TAREA NO.4
FECHA DE ENTREGA: 17 DE SEPTIEMBRE DE 2013
COMPUTACION PARA INGENIEROS

FUNDAMENTOS DE ALGORITMOS
Computabilidad: Trmino matemtico para nombrar a los estudios sobre teora de la
computacin. Consiste en encontrar la representacin adecuada para la descripcin de un
problema o un fenmeno.
Conocimiento transmisible: se da si se cierra el ciclo

Descripcin

Representacin

Modelo:
Especificacin,
generalmente en
trminos de un
lenguaje matemtico, de los pasos necesarios para reproducir, aqu y ahora, un subconjunto
determinado de la realidad descrito previamente
Cuanto ms adecuada sea la descripcin del proceso, tanto mejor ser el resultado que emula lo
real
Supongamos que se crea una mquina para producir descripciones en trminos de cadenas de
smbolos.
Dada una descripcin cualquiera, la analiza durante un tiempo finito y despus emite su dictmen
(si o no) con respecto al problema

Descripcion

Procedimiento
De

SI

NO

HAY SOLUCIN
Mquina de Turing:
Es un modelo matemtico para especificar formalmente los pasos primitivos necesarios para
representar una descripcin en trminos totalmente explcitos y claros, sin hacer la menor
referencia a conceptos u operaciones ambiguos o sobreentendidos.
Elementos:
Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un smbolo
Un diccionario de smbolos predefinido (De aqu se toman los smbolos para las celdas)
Un control finito, que posee un cojunto de estados y que tiene la capacidad de examinar algn
smbolo de alguna celda y tomar una decisin (La decisin depende del smbolo observado y del
estado en el que se encuentre en ese momento).
Funcionamiento: Mediante un conjunto de funciones matemticas simples se indica el
comportamiento completo del proceso que est siendo representado, mostrando detalladamente
los estados por los que atraviesa para lograrlo. Se parte de un estado inicial y se recorre un
conjunto de estados intermedios hasta llegar al estado final, que marca entonces el final de la
computacin.

S10

S0

S7

S14

S4

S2

CONTROL
FINITO
Teora de la computabilidad Encontrar formas de representar
descripciones de procesos, de manera tal que siempre se pueda decir que la solucin de un
problema existe o no.
Un problema se dice que es Computable si existe una mquina de decisin para l.
Un problema se dice que es No Computable si la mquina de decisin para l llega a un estado en
donde no es capaz de decir que si o que no.

1. Definicin o anlisis del


problema: Descripcin
especfica y
comprensible del
problema a resolver
2. Diseo del algoritmo:
Planteamiento de los
pasos a seguir para
resolver el problema
3. Transformacin del
algoritmo en un
programa
independientemente del
lenguaje de
programacin.
4. Ejecucin y validacin

Algoritmo: Conjunto ordenado y finito de pasos u operaciones que permite hallar la solucin de un
problema. Es un mtodo formal y sistemtico de representar la descripcin de un proceso.

CARACTERSTICAS:
Definido: debe indicar el orden de la realizacin de cada paso y no debe tener ambigedad.
Preciso: Si se sigue dos veces o ms se obtendr e el mismo resultado cada vez.
Finito: Debe terminar en algn momento. Tiene un nmero determinado de pasos.
Correcto: Sin errores
Debe tener al menos una salida
Su solucin debe ser concreta
Debe ser sencillo y legible
Eficiente y efectivo
Se ha de desarrollar en el menor tiempo posible
Un algoritmo debe describir tres partes:
Entrada(s) : elementos o condiciones iniciales necesarios para resolver el problema.
Proceso : elaboracin del procedimiento.
Salida(s): Resultados que se desean obtener
Pseudocdigo: Representacin descriptiva de las operaciones de un algoritmo. Representa una
secuencia lgica de actividades, que llevarn en conjunto a la solucin de un problema. Los
elementos que debe llevar un algoritmo son.
Cabecera del algoritmo: Existen pasos o procedimientos que se realizan para comenzar un
programa. Siempre que se haga debe ponerse un encabezado de programa, en donde debe
expresarse el identificador o nombre correspondiente con la palabra reservada que seale el
lenguaje, generalmente sta suele ser program que en algoritmia significa algoritmo.
Declaracin de Variables: En este punto se describen todas las variables que son usadas en el
algoritmo, haciendo una lista de sus nombres y especificando a qu tipo corresponde cada uno.
Declaracin de Constantes: En este punto se declararn todas las constantes de carcter estndar;
es decir, que tengan nombre y un valor ya conocido o valores que ya no pueden variar en el
transcurso del algoritmo
Cuerpo del algoritmo: Una vez aadidas la cabecera y la declaracin de variables y constantes se
procede a realizar los pasos del algoritmo
A continuacin se muestra un ejemplo:
Algoritmo rea Crculo
{Clculo del rea de un circulo pidiendo el radio al usuario}
var r, A: real
cte: p:real
Inicio
Mostrar Dame el radio
Leer r
A <- p*r^2
Mostrar El rea es:, r

Fin
Cabecera
Nombre del algoritmo
{Comentario con descripcin del problema}
Declaracin de variables y constantes
Cuerpo del algoritmo
Diagrama de flujo: Es la representacin grfica de las operaciones de un algoritmo. Contiene
smbolos grficos que se encuentran estandarizados. Los smbolos ms comnes son:

Instrucciones que se le dan a la Computadora


Un algoritmo se compone de muchos pasos, todos diferentes, los que son interpretados como
instrucciones (lenguaje de bajo nivel), sentencias o proposiciones (lenguaje de alto nivel).
Entonces, en un programa, la secuencia de instrucciones especifica las operaciones que la
computadora debe realizar.
Las instrucciones bsicas y comunes pueden dividirse en cuatro grupos:
Instrucciones de Entrada /Salida: Transferencia de datos e informacin entre dispositivos
perifricos (teclado, impresora, unidad de disco, etc.) y memoria central.

Instrucciones Aritmtico-Lgicas: Tienen la funcin de ejecutar operaciones aritmticas (suma,


resta, multiplicacin, divisin, potenciacin), lgicas (operaciones and, or, not, etc.).
Instrucciones Selectivas: Estas permiten la eleccin de una tarea entre varias alternativas en
funcin de los resultados de diferentes expresiones condicionales.
Instrucciones Repetitivas: Permiten la repeticin de secuencias de instrucciones, un nmero
determinado o indeterminado de veces.
CONSTANTES Y VARIABLES
Las constantes son datos cuyos valores no cambian, pero existen datos cuyos valores s varan
durante la ejecucin del programa, a stos los llamamos variables. En la mayora de los lenguajes
de programacin se permiten diferentes tipos de constantes: enteras, reales, caracteres y boolean
o lgicas, quienes representan datos de estos tipos.
Entonces una variable se conoce como un objeto, o partida de datos cuyo valor puede cambiar
durante la ejecucin del algoritmo o programa.
A las variables y a las constantes se les conoce o identifica por los atributos siguientes: nombre o
identificador que lo asigna y tipo que describe el uso de la variable.
Identificadores:
Deben empezar con letra, excepto o , o guin bajo y estar seguidos de cero o ms letras,
nmeros o guiones bajos
No se permiten smbolos como
$ ! ? | & - % # @ , . / \ o espacios en blanco y tabuladores
Palabras reservadas: Existe un conjunto palabras que se utilizan tanto en pseudocdigo como en
los lenguajes de programacin no pueden ser utilizadas como nombres de identificadores ni de
funciones.
OPERACION DE ASIGNACION
Se le otorgan valores a una variable. Esta operacin de asignacin se conoce como instruccin o
sentencia de asignacin, si es que est en un lenguaje de programacin
La operacin de asignacin es representada por un smbolo u operador:
La accin de asignar puede ser destructiva ya que puede perderse el valor que tuviera la variable
antes, siendo reemplazado por el nuevo valor. Las acciones de asignacin se clasifican segn sea
el tipo de expresiones en: Asignacin aritmticas, Asignacin lgica y Asignacin de caracteres
EXPRESIONES
Son la combinacin de constantes, variables, smbolos de operacin, parntesis y nombres de
funciones especiales, idea que puede ser utilizada en notaciones de matemtica tradicional. Los
valores de las variables nos permitirn determinar el valor de las expresiones, debido a que stos
estn implicados en la ejecucin de las operaciones indicadas. Estas constan de operandos y
operadores.
Segn el tipo de objetos que manipulan, pueden clasificarse en:
Aritmticas -> resultado tipo numrico.

relacionales -> resultado tipo lgico.


lgicas -> resultado tipo lgico.
caracter -> resultado tipo caracter.
Expresiones Aritmticas
Estas expresiones son anlogas a las frmulas matemticas. Las variables y constantes son
numricas (real o entera) y las operaciones son las aritmticas
Operadores aritmticos
Precedencia
- (operador monario)
^ (exponenciacin),

(radicacin)

*, / (divisin real),
+, div o / (cociente de divisin entera) , mod o % (residuo de divisin entera)
Expresiones lgicas: Su valor es siempre verdadero o falso.
Se forman combinando constantes lgicas , variables lgicas y otras expresiones lgicas, utilizando
los operadores lgicos y los operadores relacionales
Operadores relacionales
Precedencia
>, <
>=, <=
= o == (igualdad)
<> o != (desigualdad)
ENTRADA Y SALIDA DE INFORMACION
El ingreso de datos es importante para que la computadora realice los clculos; esta operacin es
la entrada, luego, estos datos se convertirn en resultados y sern la salida.
A la entrada se le conoce como operacin de Lectura (read). La operacin de lectura se realiza a
travs de los dispositivos de entrada que son (teclado, unidades de disco, CD-Rom, etc.).
La operacin de salida se realiza por medio de dispositivos como (monitor, impresora, etc), a esta
operacin se le conoce como escritura (write).
Se denomina algoritmo a un grupo finito de operaciones organizadas de manera lgica y ordenada
que permite solucionar un determinado problema. Se trata de una serie de instrucciones o reglas
establecidas que, por medio de una sucesin de pasos, permiten arribar a un resultado o solucin.

Segn los expertos en matemtica, los algoritmos permiten trabajar a partir


de un estado bsico o inicial y, tras seguir los pasos propuestos, llegar a una solucin. Cabe
resaltar que, si bien los algoritmos suelen estar asociados al mbito matemtico (ya que permiten,
por citar casos concretos, averiguar el cociente entre un par de dgitos o determinar cul es el
mximo comn divisor entre dos cifras pertenecientes al grupo de los enteros), aunque no siempre
implican la presencia de nmeros.
La mquina de Turing modela matemticamente a una mquina que opera mecnicamente sobre
una cinta. En esta cinta hay smbolos que la mquina puede leer y escribir, uno a la vez, usando un
cabezal lector/escritor de cinta. La operacin est completamente determinada por un conjunto
finito de instrucciones elementales como "en el estado 42, si el smbolo visto es 0, escribe un 1; Si
el smbolo visto es 1, cambia al estado 17; en el estado 17, si el smbolo visto es 0, escribe un 1 y
cambia al estado 6; etc". En el artculo original ("Sobre nmeros computables con una aplicacin al
Entscheidungsproblem"), Turing no imagina un mecanismo, sino una persona a la que l llama la
"computadora", quien ejecuta servilmente estas reglas mecnicas deterministas (o como Turing
pone, "de una manera desganada").
Ms precisamente, una mquina de Turing consta de:
Una cinta que se divide en celdas, una al lado de la otra. Cada celda contiene un smbolo de algn
alfabeto finito. El alfabeto contiene un smbolo especial llamado blanco (aqu escrito como 'B') y
uno o ms smbolos adicionales. La cinta se supone que es arbitrariamente extensible hacia la
izquierda y hacia la derecha, es decir, la mquina de Turing siempre es suministrada con tanta
cinta como necesite para su computacin. Las celdas que no se hayan escrito previamente se
asumen que estn rellenas con el smbolo blanco. En algunos modelos la cinta tiene un extremo
izquierdo marcado con un smbolo especial; la cinta se extiende o es indefinidamente extensible
hacia la derecha.
Un cabezal que puede leer y escribir smbolos en la cinta y mover la cinta a la izquierda y a la
derecha una (y slo una) celda a la vez. En algunos modelos el cabezal se mueve y la cinta es
estacionaria.
Un registro de estado que almacena el estado de la mquina de Turing, uno de los estados finitos.
Hay un especial estado inicial con que el registro de estado es iniciado. Turing escribe que estos
estados reemplazan el "estado de la mente" en que ordinariamente estara una persona realizando
clculos.
Una tabla finita de instrucciones (llamada ocasionalmente como tabla de accin o funcin de
transicin). Las instrucciones son usualmente 5-tuplas: qiajqi1aj1dk, (a veces 4-tuplas), que, dado
el estado (qi) la mquina est actualmente en y el smbolo (aj) se est leyendo en la cinta (el
smbolo actualmente debajo del cabezal) le indica a la mquina hacer lo siguiente en secuencia
(para los modelos de 5-tupla):
Borra o escribe un smbolo (reemplazando aj con aj1), y entonces
Mueve el cabezal (que es descrito por dk y puede tener los valores: 'L' para un paso a la izquierda,
o 'R' para uno paso a la derecha, o 'N' para permanecer en el mismo lugar) y luego

Asume el mismo o un nuevo estado como prescrito.


En los modelos de 4-tupla, son especificadas como instrucciones separadas: borrar o escribir un
smbolo (aj1) y mover el cabezal a la izquierda o la derecha (d k). Especficamente, la tabla indica a
la mquina: (ia) borrar o escribir un smbolo o (ib) mover el cabezal a la izquierda o a la derecha, y
luego (ii) asumir el mismo o un nuevo estado, pero no las dos acciones (ia) y (ib) en la misma
instruccin. En algunos modelos, si no hay ninguna entrada en la tabla para la actual combinacin
de smbolo y estado, la mquina se detendr; otros modelos requieren que estn llenas todas las
entradas.
Note que cada parte de la mquina su estado y colecciones de smbolos y sus acciones
imprimir, borrar, movimiento de la cinta es finito, discreto y distinguible; es la cantidad
potencialmente ilimitada de cinta lo que le da una cantidad ilimitada de espacio de
almacenamiento.
Funcionamient
La mquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la que el cabezal
lee el contenido, borra el contenido anterior y escribe un nuevo valor. Las operaciones que se
pueden realizar en esta mquina se limitan a:
1.
2.
3.

Mover el cabezal lector/escritor hacia la derecha.


Visualizacin de una mquina de Turing, en la que se ve el cabezal y la cinta que se lee.
Mover el cabezal lector/escritor hacia la izquierda.
El cmputo se determina a partir de una tabla de estados de la forma:
(estado, valor)
(nuevo estado, nuevo valor, direccin)
Esta tabla toma como parmetros el estado actual de la mquina y el carcter ledo de la cinta,
dando la direccin para mover el cabezal, el nuevo estado de la mquina y el valor a escribir en la
cinta.
La memoria es la cinta de la mquina que se divide en espacios de trabajo denominados celdas,
donde se pueden escribir y leer smbolos. Inicialmente todas las celdas contienen un smbolo
especial denominado "blanco". Las instrucciones que determinan el funcionamiento de la mquina
tienen la forma, "si estamos en el estado x leyendo la posicin y, donde hay escrito el smbolo z,
entonces este smbolo debe ser reemplazado por este otro smbolo, y pasar a leer la celda
siguiente, bien a la izquierda o bien a la derecha".
La mquina de Turing puede considerarse como un autmata capaz de reconocer lenguajes
formales. En ese sentido, es capaz de reconocer los lenguajes recursivamente enumerables, de
acuerdo a la jerarqua de Chomsky. Su potencia es, por tanto, superior a otros tipos de autmatas,
como el autmata finito, o el autmata con pila, o igual a otros modelos con la misma potencia
computacional.
DISEO ESTRUCTURADO DE ALGORITMOS
La fase de diseo del algoritmo, es decir, la fase en la que se construye el algoritmo que permitir
encontrar la solucin al problema, est dividida en dos pasos importantes:
Divisin: En el que a partir de la especificacin del algoritmo se divide el proceso (algoritmo en
abstracto) en varios subprocesos hasta llegar al nivel de instruccin.
Abstraccin: En el que se revisa que porciones del algoritmo se repiten o son muy utilizadas y con
las cuales se construyen funciones y/o procedimientos.
En la cabecera de un algoritmo se debe indicar el nombre (identificador) asignado al mismo. La sintaxis es:
algoritmo <nombre_del_algoritmo>
Ejemplo: Si se quiere disear el algoritmo de un programa que:
1) Pida por teclado el radio (dato real) de una circunferencia.

2) Calcule el rea de la circunferencia.


3) Muestre por pantalla el resultado (dato real).
Nota: rea de una circunferencia = pi * radio2
El algoritmo puede llamarse Area_de_una_circunferencia, por tanto, en la cabecera se puede escribir:
algoritmo Area_de_una_circunferencia
En el cuerpo se escriben todas las instrucciones del algoritmo. La sintaxis es:
(instruccin_1)
(instruccin_2)

(instruccin_n)

el cuerpo de un algoritmo Area_de_una_circunferencia es:


inicio
escribir (introduzca radio :)
leer (radio)
rea PI* radio**2
escribir (el rea de la circunferencia es:, rea)
El diagrama de flujo o diagrama de actividades es la representacin grfica del algoritmo o
proceso. Se utiliza en disciplinas como programacin,economa, procesos industriales y psicologa
cognitiva.
En Lenguaje Unificado de Modelado (UML), un diagrama de actividades representa los flujos de
trabajo paso a paso de negocio y operacionales de los componentes en un sistema. Un diagrama
de actividades muestra el flujo de control general.
En SysML el diagrama de actividades ha sido extendido para indicar flujos entre pasos que
mueven elementos fsicos (e.g., gasolina) o energa (e.g., presin). Los cambios adicionales
permiten al diagrama soportar mejor flujos de comportamiento y datos continuos.
Estos diagramas utilizan smbolos con significados definidos que representan los pasos del
algoritmo, y representan el flujo de ejecucin mediante flechas que conectan los puntos de inicio y
de fin de proceso.
Un diagrama de flujo siempre tiene un nico punto de inicio y un nico punto de trmino.Las
siguientes son acciones previas a la realizacin del diagrama de flujo
Identificar las ideas principales al ser incluidas en el diagrama de flujo. Deben estar presentes el
autor o responsable del proceso, los autores o responsables del proceso anterior y posterior y de
otros procesos interrelacionados, as como las terceras partes interesadas.

Definir qu se espera obtener del diagrama de flujo.


Identificar quin lo emplear y cmo.
Establecer el nivel de detalle requerido.
Determinar los lmites del proceso a describir.
Los pasos a seguir para construir el diagrama de flujo son:
Establecer el alcance del proceso a describir. De esta manera quedar fijado el comienzo y el final
del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al
proceso siguiente.
Identificar y listar las principales actividades/subprocesos que estn incluidos en el proceso a
describir y su orden cronolgico.
Si el nivel de detalle definido incluye actividades menores, listarlas tambin.
Identificar y listar los puntos de decisin.
Construir el diagrama respetando la secuencia cronolgica y asignando los correspondientes
smbolos.
Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el proceso
elegido.
Formato vertical: En l, el flujo y la secuencia de las operaciones, va de arriba hacia abajo. Es una
lista ordenada de las operaciones de un proceso con toda la informacin que se considere
necesaria, segn su propsito.
Formato horizontal: En l, el flujo o la secuencia de las operaciones, va de izquierda a derecha.
Formato panormico: El proceso entero est representado en una sola carta y puede apreciarse de
una sola mirada mucho ms rpido que leyendo el texto, lo que facilita su comprensin, aun para
personas no familiarizadas. Registra no solo en lnea vertical, sino tambin horizontal, distintas
acciones simultneas y la participacin de ms de un puesto o departamento que el formato
vertical no registra.
Formato Arquitectnico: Describe el itinerario de ruta de una forma o persona sobre el plano
arquitectnico del rea de trabajo. El primero de los flujogramas es eminentemente descriptivo,
mientras que los utilizados son fundamentalmente representativos.

valo o Elipse: Inicio y trmino (Abre y/o cierra el diagrama).

Rectngulo: Actividad (Representa la ejecucin de una o ms actividades o procedimientos).


Rombo: Decisin (Formula una pregunta o cuestin).
Crculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).
Tringulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).
Tringulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del
documento).
Simbologa y normas del curso grama
Crculo: Procedimiento estandarizado.
Cuadrado: Proceso de control.
Lnea ininterrumpida: Flujo de informacin va formulario o documentacin en soporte de papel
escrito.
Lnea interrumpida: Flujo de informacin va formulario digital.
Rectngulo: Formulario o documentacin. Se grafica con un doble de ancho que su altura.
Rectngulo Pequeo: Valor o medio de pago (cheque, pagar, etctera). Se grafica con un
cudruple de ancho que su altura, siendo su ancho igual al de los formularios.
Tringulo (base inferior): Archivo definitivo.
Tringulo Invertido (base superior): Archivo Transitorio.
Semi-valo: Demora.
Rombo: Divisin entre opciones.
Trapezoide: Carga de datos al sistema.
Elipsoide: Acceso por pantalla.
Hexgono: Proceso no representado.
Pentgono: Conector.
Cruz de Diagonales: Destruccin de Formularios. Segn la normativa, el flujo presupuesto es de
izquierda a derecha y de arriba hacia abajo, siendo optativo el uso de flechas. Cuando el sentido es
invertido (de derecha a izquierda o de abajo hacia arriba), es obligatorio el uso de la flecha.

Pseudocdigo
Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma) que se emplea,
dentro de la programacin estructurada, para realizar el diseo de un programa. En esencial, el
Pseudocdigo se puede definir como un lenguaje de especificaciones de algoritmos.
En esencial, el Pseudocdigo se puede definir como un lenguaje de especificaciones de
algoritmos.
Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un
problema determinado. El Pseudocdigo utiliza palabras que indican el proceso a realizar.
Ventajas de utilizar un Pseudocdigo a un Diagrama de Flujo

Ocupa menos espacio en una hoja de papel


Permite representar en forma fcil operaciones repetitivas complejas
Es muy fcil pasar de Pseudocdigo a un programa en algn lenguaje de programacin.
Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin.
Diagramas estructurados (Nassi-Schneiderman)
El diagrama estructurado N-S tambin conocido como diagrama de chapin es como un diagrama
de flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas
se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir
diferentes acciones en una caja. Un algoritmo se represente en la siguiente forma:

Estructuras Algortmicas
Las estructuras de operacin de programas son un grupo de formas de trabajo, que permiten,
mediante la manipulacin de variables, realizar ciertos procesos especficos que nos lleven a la
solucin de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:

Estructuras bsicas de la programacin estructurada


Son tres estructuras bsicas de la programacin estructurada.
a) Secuencia
b) Condicional
c) Iteracin
a) Secuencia
Un conjunto de instrucciones se realizan una despus de otra en un rden determinado ( formando
una secuencia ) que buscan un objetivo un objetivo.
b) Bifulcacin
En la secuencia de ejecucin de un programa la verificacin de una condicin hace que se puedan
tomar dos rutas distintas en la ejecucin. Posteriormente se vuelven a unir las dos rutas para lograr
el objetivo final.
c) Iteracin
Una subsecuencia de instrucciones se repite varias veces de acuerdo al estado de una condicin;
puede haber dos casos:
- Mientras una condicin sea verdadera una subsecuencia de instrucciones se sigue repitiendo.
- Mientras una condicin sea falsa una subsecuencia de instrucciones se sigue repitiendo.

También podría gustarte