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