Professional Documents
Culture Documents
Algoritmos
Concepto de algoritmo
Ordenador (procesador):
- Ejecuta operaciones simples (ej., suma y comparación).
- Gran velocidad de ejecución éstas.
Descripción en términos de estas operaciones ≡ Algoritmo
Abu Jafar Muhammad Ibn Musa
Al-Khwarizmi
Nació en 780 ¿en Bagdad?
Murió en 850.
Libro: “Hisab al-jabr al-muqabala”.
1
Algoritmo como secuencia de primitivas
Supongamos que tenemos un robot que funciona como criado del hogar y queremos
enseñarle a preparar un café instantáneo. El algoritmo podría ser el siguiente:
Sin embargo, nuestro robot puede no ser capaz de interpretar una instrucción como Hervir
agua y es posible que tengamos que explicarle como hacerlo:
2
Definición de algoritmo
Mediante un ábaco.
• Primitivas:
– Contar bolas.
– Desplazar bolas a izquierda
y derecha.
• Condiciones de entorno:
– Inicialmente a la izquierda no hay bolas.
3
Algoritmo para el ejemplo del ábaco
- Primitivas:
- Leer, escribir y borrar
- Sumar y restar
4
Algoritmo para las hojas de papel
PROCESO
Datos de entrada Datos de salida
• Datos: - De entrada.
- De salida.
- Internos (resultados intermedios).
5
Fases de la resolución de un problema
4. Verificación y pruebas.
Notación algorítmica
• Textual: pseudolenguaje.
6
Diagramas de flujo
7
Pseudolenguaje básico
• Enfoque imperativo.
• Notación algorítmica:
– Palabras clave → sintaxis fija
– Lenguaje natural → sintaxis libre
– Sangrado o indentación para aumentar legibilidad.
– Empleo de comentarios en lenguaje natural.
8
Concepto de variable
Posición de memoria que almacena un dato cuyo
valor puede cambiar durante la ejecución.
Posición de memoria
25 Temperatura
Concepto de constante
Posición de memoria que almacena un dato cuyo
valor NO puede cambiar durante la ejecución.
Posición de memoria
45 TEMP_MAX
9
Estructura general de un algoritmo
ALGORITMO Nombre
Declaraciones
INICIO
Acciones
FIN Nombre
ALGORITMO HolaMundo
INICIO
Escribir (“Hola Mundo”)
FIN HolaMundo
10
Elementos léxicos del pseudolenguaje
– Palabras clave (reservadas)
• ALGORITMO INICIO FIN VAR CONST MIENTRAS SI
– Identificadores
• temperatura, MAX_VALOR, miDato, numEnt3, Leer
– Literales
• Numéricos: 10, 25.67, -36.5e-2
• Textuales: ‘a’, ‘9’, ‘@’, ‘:’, ‘\0’, ‘\n’, “Bienvenido”
– Operadores
• Aritméticos: + - * / DIV MOD
• Relacionales: < > <= >= == !=
• Lógicos: Y O NO
– Otros
• /* Comentarios */ // ; { } = [ ]
Elementos sintácticos
– Sentencias declarativas
• Cabecera de programa ALGORITMO CalculaArea
• Declaración de CONST
constante(s) R PI=3.14159
• Declaración de VAR
variable(s) R area, r
– Sentencias ejecutables
• Asignación
• Llamada a subprograma INICIO
r = 3.45
• Expresión aritmética
r=pow(r,2.0)
• Expresión lógica
area=PI * r
– Comentarios: area >= 100.0
// Una línea FIN CalculaArea
/* o varias */
11
Entrada/salida básica
12
Lenguajes de programación
Lenguaje de programación Vs. traductor
13
Lenguajes C y C++
• Lenguaje C:
– Lenguaje de alto nivel de propósito general
– De tipo imperativo: 3ª generación
– Desarrollado por Brian W. Kernighan y Dennis
M. Ritchie de los Laboratorios Bell de California
en 1978.
• Lenguaje C++:
– Lenguaje de alto nivel de propósito general
– Orientado a objetos: 4ª. generación
– Desarrollado por Bjarne Stroustrup en 1983.
– “Extensión” de C: es “compatible” con C.
Introducción a los Computadores 1-oct-04 27
ITTSEA, Tema 2. Algoritmos
14
Elementos sintácticos de C++
– Estructura general main()
{
– Comentarios Sentencias declarativas
• Igual que en pseudolenguaje
Sentencias ejecutables
– Sentencias declarativas }
• Todas acaban con ;
• La cabecera no lleva nombre de programa
• No existen secciones de declaración de constantes o variables
• Las constante(s) simbólicas se preceden con la palabra clave
const
– Sentencias ejecutables
• Todas acaban con ; (excepto las que acaban con }).
• La asignación igual que en pseudolenguaje
• Las expresiones con los operadores de C
• Las llamadas igual que en pseudolenguaje
// parte ejecutable
cout << “Introduce radianes: ”;
cin >> radianes;
grados = radianes*180/PI; // conversión de entero a real
cout << radianes << “ radianes son ”;
cout << grados << “ grados”;
return 0;
}
Introducción a los Computadores 1-oct-04 30
ITTSEA, Tema 2. Algoritmos
15
Bibliografía
• Joyanes, L. Fundamentos de Programación.
Algoritmos y Estructuras de Datos.
3ª Edición, McGraw-Hill, 2003.
• Prieto, A., Lloris, A., Torres, J.C. Introducción a la
Informática.
3ª edición, McGraw-Hill, 2001.
• Brookshear, J.G. Introducción a las Ciencias de la
Computación.
4ª Edicion, Adisson Wesley, 1995.
• Goldschlager, L., Lister, A. Computer Science: A
Modern Introduction.
Prentice Hall. International Series in Computer Science,
1988.
Introducción a los Computadores 1-oct-04 31
ITTSEA, Tema 2. Algoritmos
16