Académique Documents
Professionnel Documents
Culture Documents
Algoritmos y
Software
Algoritmos
Universidad de Yachay Tech
Francisco Ortega Zamorano
ndice
1.
Teora de Algoritmos
Concepto de Algoritmo
Calculabilidad
Mquina de Turing
Complejidad
Correccin
2.
El Software
Concepto de Software
Sistemas operativos
Lenguajes de programacin
Procesadores de lenguajes
3.
Introduccin al Pseudolenguaje
Pseudolenguaje
Diagrama de Flujo
1. Teora de Algoritmos
Concepto de Algoritmo
Algoritmo: Conjunto prescrito de instrucciones o reglas bien
definidas, ordenadas y finitas que permite realizar una
actividad mediante pasos sucesivos
Distinguimos entre:
Concepto de Algoritmo
Programacin:
Objetivo:
Establecer una secuencia de acciones que puedan ser
ejecutadas por el procesador y que realizan un trabajo
Fases:
Resolucin del problema propuesto => determinacin de un algoritmo
Adaptacin del algoritmo al computador => escribir un programa
Calculabilidad
Durante muchos aos existi la creencia de
que no exista ningn problema que no pudiera
resolverse
David Hilbert (1862-1943):
Sistema matemtico formal (smbolos, axiomas y
reglas de produccin)
Problema de "decisin (decidir si una sentencia
matemtica es un teorema)
Algoritmo general para resolver cualquier
problema matemtico (1928)
Completitud: cualquier proposicin puede ser
probada o rechazada
Consistencia: no hay contradicciones
Decidibilidad: cualquier proposicin puede ser
cierta o falsa tras una secuencia finita de pasos
Calculabilidad
Kurt Gdel: teorema de incompletitud (1931)
Problema de "decisin" de Hilbert no
computable
Church, Kleene, Post y Turing encontraron
otros problemas no computables
Ejemplo: "Problema de la parada" (no existe
ningn algoritmo que resuelva el problema de
la parada)
Afirmacin fuerte: existen problemas no
computables, esto es, no existe, y nunca
existir ningn algoritmo que los resuelva
Mquina de Turing
Para Turing, un algoritmo es todo aquello que puede realizarse sobre
una mquina abstracta que l mismo dise: "Mquina de Turing
Mquina de Turing (es el logo de nuestra escuela!):
Siguiendo unas reglas de operacin dadas y a partir de unos datos iniciales,
realiza operaciones y obtiene unos resultados en un tiempo finito
Se caracteriza por:
Disponer de una cinta, infinita por ambos extremos, dividida en celdas. Cada celda
almacena un smbolo del alfabeto prefijado
Disponer de una cabeza de lectura/escritura mvil que en cada momento accede a una
nica celda
Encontrarse siempre en un determinado estado qi de entre un conjunto finito de
estados
Realizar las siguientes acciones elementales en funcin del estado en que se encuentre y
del smbolo que lea de la cinta:
Reescritura del contenido de la celda leda
Movimiento de la cabeza a derecha o izquierda de la celda leda
Complejidad
La teora de la calculabilidad intenta identificar para qu problemas
existe una solucin algortmica (son computables) y para cules no
Es interesante conocer los recursos computacionales necesarios para
ejecutar un determinado algoritmo
La teora de la complejidad se encarga de estudiar dichas
necesidades. Slo aquellos algoritmos que utilizan una cantidad
factible de recursos son tiles en la prctica
Requisitos a considerar: Tiempo y espacio
Correccin
Objetivo bsico exigible a un programa
La mayora de los programas actuales contienen errores
Prueba / Verificacin
La prueba experimental puede ser empleada para mostrar la presencia de
errores, pero nunca su ausencia
La nica forma de demostrar la correccin de un programa es mediante la
verificacin de programas (lgica de Hoare, 1969)
Permite probar la verdad o falsedad de propiedades de programas imperativos
Especificacin Pre/Post
La precondicin indica las condiciones que debe cumplir el estado inicial del programa
La postcondicin indica las condiciones que ha de cumplir el estado final del programa
2. El Software
Concepto de Software
Software: Conjunto de instrucciones (programas de
ordenador), que cuando se ejecutan proporcionan la funcin
y el comportamiento deseado
Distinguimos entre:
Clasificacin de Pressman
Software de sistemas
Software de tiempo real
Software de gestin
Software de ingeniera y cientfico
Software empotrado
Software de inteligencia artificial
Sistemas Operativos
Concepto:
Sistemas Operativos
Evolucin histrica:
Caractersticas
Nmero de usuarios
Monousuario
Multiusuario
Nmero de tareas
Monotarea
Multitarea
Lenguajes de Programacin
Cmo se programan los ordenadores?
El principal motivo para la elaboracin de algoritmos y su codificacin
en programas es la resolucin de problemas mediante los
ordenadores
Para la resolucin de estos problemas se debe seguir una
metodologa, denominada metodologa de la Programacin
Esta tarea se divide principalmente en tres fases:
Anlisis
Diseo (o desarrollo del algoritmo)
Implementacin (del algoritmo en el ordenador)
Realizar la conversin
Mostrar el resultado
Program EuroCalcu;
Begin
......
.....
....
end
Cdigo Fuente
010101010
010100111
Programa
Lenguajes mquinas
Procesadores de Lenguajes
Traductores: programas que traducen un programa escrito en un
lenguaje de alto nivel a su correspondiente en lenguaje mquina
Intrpretes: traducen un programa (fuente) instruccin a instruccin
La ejecucin del programa se realiza a la vez que la traduccin => se lee una instruccin,
se traduce y se ejecuta
Cada vez que se desea ejecutar el programa hay que traducirlo
3. Introduccin al
Pseudolenguaje
Pseudolenguaje
Ventaja clara frente a lenguajes de programacin:
Flexibilidad en su sintaxis
Pseudolenguaje
Las palabras reservadas o clave se escribirn en maysculas o subrayadas
Las acciones se podrn expresar con diferentes niveles de refinamiento. En
todo caso el resultado final deber estar expresado en funcin de las
acciones primitivas que componen el pseudolenguaje, las cuales se describen
a continuacin y se explicarn a lo largo del curso
Dentro de la "libertad" y flexibilidad que tiene un pseudolenguaje, se deber
seguir un estilo de presentacin de los algoritmos que siga las pautas
marcadas en el anexo dedicado al estilo en programacin. Esto nos conducir
a expresar los mismos de una forma clara y legible
Los tipos estndar se denotan de la siguiente forma:
Pseudolenguaje
En la zona de declaraciones de un algoritmo se realiza:
Pseudolenguaje
Para declarar una constante: nombre de la constante, el signo = y el valor
constante que toma. Nuestro pseudolenguaje dispondr de la constante
predefinida INTRO que representa a la tecla retorno de carro leda de teclado
Para declarar una variable: nombre de la variable seguido por el nombre (o
especificacin) del tipo, utilizando como separador los dos puntos. Ejemplo: x: Z.
La variable no toma ningn valor concreto al ser declarada. Se dice que toma un
valor "indefinido"
Los subalgoritmos se usan para especificar el comportamiento exacto de aquellas
acciones no primitivas que hayamos usado en nuestro algoritmo (principal)
Un subalgoritmo se declara usando un formato similar al de un algoritmo principal. La nica
diferencia estriba en que, junto al nombre del subalgoritmo se aade la especificacin de los
parmetros que intervienen en el mismo
Los procedimientos tendrn una cabecera en la que se indicarn el nombre del mismo y sus
parmetros formales, que pueden ser de entrada (), de salida () o de entrada/salida
()
Ejemplo: PROC p(arg1:Z; arg2:N; arg3:N).
Las funciones tendrn una cabecera en la que se indicarn el nombre de la misma, los
parmetros formales y el tipo del valor que devuelve. El valor siempre se devolver en una
variable predefinida llamada Resultado
Ejemplo: FUNC f(arg1:Z) :N
Pseudolenguaje
En la zona de acciones:
Pseudolenguaje
En la zona de acciones:
Estructuras de Iteracin:
PARA vble valor1 HASTA valor2 (PASO p) HACER
acciones
FINPARA
MIENTRAS condicin HACER
acciones
FINMIENTRAS
REPETIR
acciones
HASTA QUE condicin
Pseudolenguaje. Ejemplo
Ejemplo: Calcular e imprimir el mayor de dos nmeros ledos de
teclado
Primer nivel de refinamiento:
Algoritmo escribir_mayor
Inicio
Leer dos nmero de teclado
Calcular el mayor de los dos
Escribir el resultado
Fin
Pseudolenguaje. Ejemplo
Segundo nivel de refinamiento (definitivo):
/* Algoritmo que calcula e imprime el mayor de dos
* nmeros ledos de teclado
*/
Algoritmo escribir_mayor
// Lee dos nmeros de teclado
PROC obtener_datos( x,y:N)
Inicio
escribir(Introduzca los dos numeros: )
leer(x,y)
Variables
num1,num2,mayor:N
Inicio
obtener_datos(num1,num2)
calcular_mayor(num1,num2,mayor)
imprimir(mayor)
Fin
// Calcula el mayor de dos numeros
PROC calcular_mayor( x,y:N; mayor:N)
Inicio
SI (x > y) ENTONCES
mayor x
SINO
mayor y
FINSI
Fin
Fin
Diagramas de Flujo
Herramienta grfica para la descripcin
de algoritmos
Smbolos usados en un diagrama de flujo:
Para seguir el flujo del algoritmo
Indica el comienzo y la terminacin del
algoritmo. El smbolo de comienzo tiene
una flecha de salida y el de terminacin
una de entrada
Para operaciones de Entrada y de Salida.
Tienen una flecha de entrada y una de
salida
Para cualquier primitiva que pueda realizar
el procesador. Tienen una flecha de
entrada y otra de salida
Para las bifurcaciones. Tienen una flecha
de entrada y 2 de salida (o varias en el
caso de la decisin mltiple)