TEMA 0: Nociones de Algoritmos

Anuncio
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
1
TEMA 0: CONCEPTOS BÁSICOS EN ALGORÍTMICA
0.1.- VISIÓN HISTÓRICA:
Un algoritmo es el conjunto de operaciones y procedimientos que deben seguirse
para resolver un problema. La palabra "algoritmo" deriva del nombre latinizado del gran
matemático árabe Mohamed Ibn Moussa Al Kow Rizmi, el cuál escribió entre los años 800 y
825 su obra Quitab Al Jabr Al Mugabala, donde se recogía el sistema de numeración
hindú y el concepto de cero. Fue Fibonacci, el que tradujo su obra al latín y la inició con
las palabras: “Algoritmi dicit”.
0.2.- DIFERENCIA ENTRE EL LENGUAJE ALGORÍTMICO Y EL INFORMÁTICO:
El lenguaje algorítmico es aquel por medio del cuál se realiza un análisis previo
del problema a resolver para encontrar un método que permita resolverlo. El conjunto de
todas las operaciones a realizar y el orden en el que deben efectuarse se denomina
algoritmo.
El lenguaje informático es aquel por medio del cuál dicho algoritmo se codifica a
un sistema comprensible por el ordenador o computadora. Este tipo de lenguaje es más
cercano a la máquina que al ser humano y podemos distinguir distintos tipos dependiendo
de la proximidad a la máquina. Se denomina lenguaje de alto nivel aquel que es más
cercano a la
comprensión humana y lenguaje de bajo nivel a aquellos que son más
comprensibles por la máquina. En concreto, nosotros vamos a estudiar un lenguaje en la
frontera de uno de bajo nivel. Es por ello que el 'C' es tan potente y rápido, pues las
funciones principales representan las funciones más básicas del ordenador.
Veamos como ejemplo un algoritmo de cómo preparar una tortilla de 6 huevos:
 Romper 6 huevos en un plato.
 Batir la clara y yema con un tenedor.
 Calentar el aceite en una sartén.
 Cuando el aceite esté caliente, verter el contenido del plato.
 Dar vueltas a la tortilla.
 Cuando la tortilla esté hecha, quitar la sartén del fuego.
1
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
2
0.3.- CONCEPTOS DE ACCIÓN Y DE PROCESADOR:
Procesador: entidad capaz de entender un enunciado y de llevar a cabo (ejecutar) el trabajo
indicado. En el ejemplo anterior, el procesador sería la persona que preparase la tortilla
siguiendo el algoritmo.
Entorno de trabajo: conjunto de utensilios necesarios para la ejecución del mismo
(específico del trabajo a realizar). En el ejemplo anterior, el entorno de trabajo sería: la
cocina, la sartén, los huevos, el plato,... etc.
En general, la ejecución de un trabajo, cualquiera que sea el entorno, no es
inmediata  serie de etapas (secuencia de acciones).
Acción: suceso que modifica el entorno. En el ejemplo anterior, cada línea del algoritmo
sería una acción.
0.4.- ACCIONES PRIMITIVAS. DESCOMPOSICIÓN DE UNA ACCIÓN:
Las acciones para un procesador dado pueden ser:
1. Primitivas: cuando el enunciado de dicha acción es suficiente para que sea ejecutada por
el procesador sin más información.
2. Compuestas: cuando tienen que ser descompuestas en acciones más sencillas
(primitivas).
Por ejemplo, romper 6 huevos (acción compuesta) podría descomponerse en las
siguientes acciones primitivas:
 Poner los 6 huevos en la superficie de trabajo.
MIENTRAS queden huevos en la superficie de trabajo HACER:
 Coger un huevo de la superficie.
 Romperlo y verter su contenido en el plato.
 Tirar las cáscaras a la basura.
FIN MIENTRAS
0.5.- CONCEPTO DE ANÁLISIS DESCENDENTE:
T: trabajo descrito por un enunciado no primitivo.
El análisis descendente de T consiste en encontrar una descomposición t1, t2, ..., tn
que sea una sucesión de enunciados cuya ejecución realice el trabajo T:
2
ETSII
Dpto. de Informática
y Sistemas
(Ei1)
t’1
Fundamentos
de Informática
ALGORÍTMICA
PARTE 1 - TEORÍA
(Ei)
T
(Ef)
t1 (Ef1=Ei2) ...
tk ... (Efn-1=Ein)
tn (Efn=Ef)
t’2
t”1
t”2
3
t”3
Ejemplo: componer 10 juegos de apuntes (de 15 hojas cada uno) partiendo de ...
Solución 1
Solución 2
Algoritmo (secuencia final de acciones primitivas)
En general, no habrá solución única, de forma que se podrá realizar diferentes
algoritmos. Es por ello por lo que habrá que determinar la EFICACIA de cada algoritmo, que
será función de la rapidez y de la economía del mismo.
0.6.- OBJETIVO DE LA PROGRAMACIÓN:
“Establecer una secuencia de acciones que puedan ser ejecutadas por el procesador
y que realicen el trabajo planteado”.
Aquí podemos distinguir dos fases:
a) Determinación del algoritmo  etapa más difícil.
b) Codificación a un lenguaje específico del procesador utilizado.
0.7.- DETERMINACIÓN DEL ALGORITMO:
Lo que pretende un algoritmo es sintetizar de alguna forma una tarea, cálculo o
mecanismo antes de ser transcrito al ordenador.
Los pasos que se deben seguir son los siguientes:
1. Análisis previo del problema.
2. Primera visión del método de resolución.
3. Descomposición en módulos.
4. Programación estructurada.
5. Búsqueda de soluciones parciales.
6. Ensamblaje de soluciones finales.
3
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
4
Ejemplo: Calcular las raíces REALES de una ecuación de segundo grado: ax2+bx+c = 0
-Algoritmo raíces
Variables reales a,b,c,x,y
Escribir "Introduzca los coeficientes de mayor a menor grado."
Leer
a,b,c
-Si sqr(b)>= 4*a*c entonces
x=(-b+sqrt(b^2-4*a*c))/2a
-Sino
Escribir "No existen raíces reales."
-Finsi
-Final
Ejercicios de Evaluación:
Aplicar la técnica de análisis descendente a la construcción de los siguientes
algoritmos:
1. Hablar por teléfono con una persona de la que desconocemos su número de teléfono
(aunque sí su nombre y dirección).
2. Contabilizar los resultados de un partido de tenis.
4
Descargar