Tema 1 - Algoritmos
Tema 1 - Algoritmos
Tema 1 - Algoritmos
Ingenierías
Tema I: ALGORITMIA
INTRODUCCION
Muchas personas piensan que un computador puede realizar tareas o trabajos de
complejidad superior a una inteligencia humana.- La realidad es que un computador no
tiene ninguna inteligencia. No olvidemos que no es más que una máquina creada por el
hombre y, por lo tanto, no podrá realizar ninguna tarea que no haya sido previamente
determinada por él.-
PROBLEMAS DE COMPUTACION
ETAPAS EN EL PROCESO DE SOLUCION DE PROBLEMAS CON COMPUTADORAS
Unidad I – Algoritmos 1
Fundamentos de Informática
Ingenierías
Problema
ANALISIS
Especificación
PROGRAMACION
Algoritmos
CODIFICACION
Programa
1. FASE DE ANALISIS
Consiste en el examen y descripción detallada de los siguientes aspectos relativos
al problema:
Equipo a utilizar (computadora, periféricos, soportes, material auxiliar)
Personal informático
Estudio de los datos de entrada
Estudio de los datos de salida o resultados
Relación entre la salida y la entrada
Descomposición del problema en módulos
2. FASE DE PROGRAMACION
Consiste en le diseño de la solución del problema planteado en forma de algoritmo.
Se debe abordar de forma sistemática, esto es, aplicando explícitamente un
conjunto de técnicas, como son la programación estructurada y el diseño descendente.
El resultado es un algoritmo o descripción del conjunto de acciones que deberán
ser realizadas por la computadora.
Para su representación de utilizan diferentes notaciones como ordinogramas,
pseudocódigos, etc.
3. FASE DE CODIFICACION
En esta fase se transcribe el algoritmo resultante de la fase anterior a un lenguaje
de programación concreto. En general es una tarea totalmente mecánica.
Al resultado se lo denomina programa, al que podemos definir como una secuencia de
instrucciones que indica las acciones que han de ejecutarse.
Unidad I – Algoritmos 2
Fundamentos de Informática
Ingenierías
EDICION
Programa fuente
COMPILACION
Programa objeto
MONTAJE
Programa ejecutable
EJECUCION
1. FASE DE EDICION
Escritura del programa fuente en la memoria del computador, grabándolo en algún
soporte permanente.- Se hace con la ayuda de un programa del sistema llamado editor
2. FASE DE COMPILACION
Traducción del programa fuente a lenguaje de máquina cuyo resultado es el
programa objeto. Para ello se dispone de programa compiladores o intérpretes, que
además comprueban la correcta sintaxis del programa.
3. FASE DE MONTAJE
En los programas compilados es necesario añadir al programa objeto algunas
rutinas del sistema o, en algunos casos subprogramas externos que se hayan compilado
separadamente. De ello se encarga el programa montador o linkeditor.
4. FASE DE EJECUCION
Consiste en probar el programa con datos de prueba, para asegurar el correcto
funcionamiento del mismo.
Unidad I – Algoritmos 3
Fundamentos de Informática
Ingenierías
Análisis
Prueba Prueba
Uso
Unidad I – Algoritmos 4
Fundamentos de Informática
Ingenierías
¿Atajo?
Programa
FASE DE IMPLEMENTACION
Unidad I – Algoritmos 5
Fundamentos de Informática
Ingenierías
Unidad I – Algoritmos 6
Fundamentos de Informática
Ingenierías
FINITUD. Un algoritmo tiene que acabar siempre tras un número finito de pasos.
Un algoritmo es finito en tiempo y espacio.
Para diseñar un algoritmo se debe comenzar por identificar las tareas más
importantes para resolver el problema y disponerlas en el orden en que han de ser
ejecutadas.
Usamos algoritmos todos los días. Son simplemente una descripción verbal o
escrita de secuencias lógicas de acción. Recetas de cocina, instrucciones para el lavado
de ropas o para descongelar la heladera son ejemplos de algoritmos escritos.
Cuando arrancamos un automóvil realizamos un procedimiento paso a paso. El
algoritmo puede ser algo como esto:
1) Poner la llave en el contacto
Unidad I – Algoritmos 7
Fundamentos de Informática
Ingenierías
Sin la frase “pero no más de 5 veces” en el paso 6, podrá suceder que nos
quedáramos intentando arrancar el automóvil para siempre, ¿ por qué ?, porque si algo
falla en el auto, la repetición de los pasos 3 al 6 no hará que arranque. Esta situación que
nunca termina se conoce como bucle infinito. Por tanto si la frase “no más de 5 veces”
no se pone en el paso 6, nuestro algoritmo no cumple con nuestra defininicón de que un
algoritmo debe terminar en una cantidad finita de tiempo para cualquiera de las posibles
condiciones.
Dominio de un algoritmo
Unidad I – Algoritmos 8
Fundamentos de Informática
Ingenierías
Unidad I – Algoritmos 9
Fundamentos de Informática
Ingenierías
METODO HEURISTICO
Si la tarea nos la hemos puesto nosotros mismos, este tipo de preguntas puede
que no sea verbal, pero tiene lugar a un nivel subconsciente.
- ¿Qué nos han dado para trabajar, es decir, cuáles son los datos?
- ¿Cuál es la apariencia de los datos?
- ¿Cuántos datos hay?
- ¿Cómo sabremos cuándo tendremos procesados todos los datos?
- ¿Cuál debe ser la apariencia de la salida?
- ¿Cuántas veces debemos repetir el proceso que estamos haciendo?
- ¿Qué condiciones especiales de error pueden aparecer?
Unidad I – Algoritmos 10
Fundamentos de Informática
Ingenierías
comprar leche, luego a comprar huevos, luego a comprar azúcar. Sabemos que ir
al mercado será para siempre lo mismos y lo único que varía es lo que se compra
(Parametrización).
Unidad I – Algoritmos 11
Fundamentos de Informática
Ingenierías
Tipos de algoritmos:
a) Algoritmos no computacionales.
b) Algoritmos computacionales.
Algoritmos computacionales: estos son desarrollados para ser resueltos mediante el uso
de una computadora. Se usan determinadas técnicas para su formulación: se pueden
resolver utilizando diagramas de flujo o pseudocódigo. Estas herramientas nos ayudan
a analizar en detalle las soluciones teniendo en cuenta que estas soluciones estarán
orientadas a su uso en una computadora.
SIMBOLO FUNCION
Unidad I – Algoritmos 12
Fundamentos de Informática
Ingenierías
Unidad I – Algoritmos 13
Fundamentos de Informática
Ingenierías
Ejemplo:
Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de
mayoría o minoría de edad según sea el caso para un nombre específico.
Unidad I – Algoritmos 14
Fundamentos de Informática
Ingenierías
Pseudocódigo
Pseudo = falso. El pseudocódigo no es realmente un código sino una imitación y
una versión abreviada de instrucciones reales para las computadoras.
Es una técnica para diseño de programas que permite definir las estructuras de
datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de
computadora para solucionar un determinado problema.
Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las
directrices y los elementos de los lenguajes de programación. Es un lenguaje de
especificación de algoritmos. El uso de tal lenguaje hace el paso de codificación final (esto
es, la traducción a un lenguaje de programación) relativamente fácil.
La ventaja del pseudocódigo es que en su uso en la planificación de un programa,
el programador se puede concentrar en la lógica y en las estructuras de control y no
preocuparse de las reglas de un lenguaje específico. Es también fácil modificar el
pseudocódigo si se descubren errores o anomalías en la lógica del programa, además de
todo esto es fácil su traducción a lenguajes como Pascal, C o Basic.
Unidad I – Algoritmos 15
Fundamentos de Informática
Ingenierías
INICIO PROGRAMA
Una estructura secuencial es aquella que acción1
ejecuta las acciones
sucesivamente unas a continuación de otras acción2
sin la posibilidad de .
omitir ninguna y naturalmente sin
bifurcaciones. acción n
FIN PROGRAMA
Decisión Doble:
Decisión Simple: SI condición ENTONCES
acción1
SI condición ENTONCES acción2
acción1 .
pseudocódigo SINO
…
acción1
acción n
acción2
FIN SI FIN SI
Unidad I – Algoritmos 16
Fundamentos de Informática
Ingenierías
Selectiva Múltiple:
Selectiva Múltiple-Casos: Una construcción SELECCIONAR indicador
similar a la anterior (equivalente en algunos
casos) es la que se muestra en el recuadro. CASO valor1 : acción1
acción n
FIN MIENTRAS
Unidad I – Algoritmos 17
Fundamentos de Informática
Ingenierías
acción2
acción n
X Li
acciones
FIN PARA
Unidad I – Algoritmos 18
Fundamentos de Informática
Ingenierías
Clasificación de estructuras
Dato es uno de esos términos que todos usan pero pocos entienden.
Dato: "hecho o valor a partir del cual se puede inferir una conclusión"
Los datos son aquello que un programa manipula. Sin datos un programa no
funcionaría correctamente. Por ejemplo, la edad y el domicilio de una persona, forman
parte de sus datos. Los datos se sitúan en objetos llamados variables.
Los programas manipulan datos de manera muy diferente según el tipo de dato del
que se trate. Y hay varios de estos tipos:
Tipos de Datos
Unidad I – Algoritmos 19
Fundamentos de Informática
Ingenierías
ENTEROS (INTEGER)
{. . . , - ( n + 1 ) , - n ,. . . , - 2 , - 1 , 0 , 1 , 2 ,. . . ., n , n + 1 , . . . }
Ejemplos: 1, 6, 29, -85, 152
BOOLEANOS
Es también llamado tipo de datos lógico. Un dato booleano es un elemento que puede
tener uno de dos valores: verdadero o falso (True o False).
CARACTERES (CHAR)
{0,1,2,3,4,5,6,7,8,9,A,B,C,D,......,X,Y,Z,’,?,#,...,+,-,*,/}
CADENAS (STRINGS)
Ejemplo: CIENCIAS
ARREGLOS
Son bloques básicos para la construcción de estructuras de datos más complejas. Casi
todas las estructuras de datos se pueden representar indirectamente mediante arreglos.
Un arreglo es un conjunto finito ordenado de elementos homogéneos, es decir que sus
componentes son todos del mismo tipo; llamado tipo base.
Un arreglo puede ser un conjunto de elementos del tipo de cadena, así como puede ser
del tipo entero.
Unidad I – Algoritmos 20
Fundamentos de Informática
Ingenierías
REGISTROS
Son los tipos de datos más complejos, y usados en la mayoría de los problemas
computacionales. Estas estructuras se destacan especialmente por la forma en que sus
elementos se organizan y por las operaciones definidas sobre ellas.
PILAS
COLAS
Una cola es similar a una pila excepto que el primer elemento de una cola es el primero
en ser retirado.
Unidad I – Algoritmos 21
Fundamentos de Informática
Ingenierías
LISTAS LIGADAS
Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al siguiente nodo
Insertar un elemento:
Borrar un elemento:
ARBOLES y GRAFOS
Son gráficos acíclicos, conexos y simples. Tienen características especiales y son muy
usados en el ambiente de las matemáticas
Raíz
Un árbol es una estructura de datos ampliamente usada que
imita la forma de un árbol (un conjunto de nodos conectados). Un
nodo es la unidad sobre la que se construye el árbol y puede Rama
tener cero o más nodos hijos conectados a él. Se dice que un
nodo 2 es padre de un nodo 7 si existe un enlace desde 2 hasta
7 (en ese caso, también decimos que 7 es hijo de 2). Sólo puede
haber un único nodo sin padres, que llamaremos raíz. Un nodo
que no tiene hijos se conoce como hoja. Los demás nodos Hoja
(tienen padre y uno o varios hijos) se les conoce como rama.
Unidad I – Algoritmos 22
Fundamentos de Informática
Ingenierías
Muchas redes de uso cotidiano pueden ser modeladas con un grafo: una red de
carreteras que conecta ciudades, una red eléctrica o la red de drenaje de una ciudad.
Existen diferentes formas de almacenar grafos en una computadora. La estructura de
datos usada depende de las características del grafo y el algoritmo usado para
manipularlo. Entre las estructuras más sencillas y usadas se encuentran las listas y las
matrices, aunque frecuentemente se usa una combinación de ambas.
Unidad I – Algoritmos 23
Fundamentos de Informática
Ingenierías
Conceptos Generales:
Las variables son zonas de memoria cuyo contenido cambia durante la fase de
procesamiento de información. Son objetos cuyo valor puede ser modificado a lo largo de
la ejecución de un programa.
Las variables llevan un nombre llamado Identificador. Este puede ser una cadena de
letras y dígitos, empezando siempre con una letra. Por ejemplo: Pi, curso99, nom_alum,
etc.
Los Identificadores son palabras creadas por los programadores para dar nombre a
los objetos y demás elementos que necesitamos declarar en un programa: variables,
constantes, tipos, estructuras de datos, archivos, subprogramas, etc.
En algunos lenguajes de programación las letras mayúsculas se tratan como
diferentes y distintas unas de otras. Por ejemplo, contador, Contador y CONTADOR son
tres nombres de identificadores distintos.
Un identificador no puede ser igual a una palabra reservada, y no debe tener el
mismo nombre que una función, ya sea definida por el usuario o de la biblioteca del
lenguaje.
Constantes: Son objetos cuyo valor permanece invariable a lo largo de la ejecución
de un programa. Una constante es la denominación de un valor concreto, de tal forma que
se utiliza su nombre cada vez que se necesita referenciarlo.
Un operador es un símbolo o palabra que significa que se ha de realizar cierta
acción entre uno o dos valores que son llamados operandos.
Las expresiones son representaciones de un cálculo necesario para la obtención de
un resultado. Son un conjunto de operadores y operandos que producen un valor. Por
ejemplo: Cos (pi * X) + 12.56 * SQR(100)
Asignación: es reemplazar el valor de una variable por otro. Dependiendo del autor
del pseudocódigo , la instrucción "reemplace el valor de la variable x por el valor de la
variable y" puede ser representado como:
xy ó x := y ó x= y
Contador y Acumulador:
Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad
constante cada vez que se produce un determinado suceso o acción.
La inicialización consiste en asignarle al contador un valor inicial. a 0; i 1
Incremento: a a + 1
Decremento: a a – 1
El acumulador es una variable que suma sobre sí misma un conjunto de valores para
de esta manera tener la suma de todos ellos en una sola variable.
La diferencia entre un contador y un acumulador es que mientras el primero va
aumentando de uno en uno, el acumulador va aumentando en una cantidad variable.
Tipos de operadores:
Aritméticos (su resultado es un número): potencia, * , / , mod, div, + , -
Relacionales (su resultado es un valor de verdad): =, <, >, <=, >=, <>
Lógicos o Booleanos (su resultado es un valor de verdad): not, and, or
Alfanuméricos : + (concatenación)
Asociativos. El único operador asociativo es el paréntesis ( ), el cual permite indicar
en qué orden deben realizarse las operaciones. Cuando una expresión se encuentra entre
paréntesis, indica que las operaciones que están dentro de ellos debe realizarse
Otro: a veces es útil la utilización de comentarios en nuestro algoritmo. Para hacer
esto se usan “//”. Por ejemplo: x 0 //inicializa la variable x con el valor cero.
Unidad I – Algoritmos 24
Fundamentos de Informática
Ingenierías
Operadores aritméticos:
Operadores de relación:
Operadores lógicos:
Funciones predefinidas:
Unidad I – Algoritmos 25