You are on page 1of 16

Tema 2.

Algoritmos

Contenido del tema:


Concepto de algoritmo
Notación algorítmica
Pseudolenguaje básico
Lenguajes de programación
Introducción a C++
Francisco J. Veredas
Dpto. Lenguajes y Ciencias de la Computación
Introducción a los Computadores 1-oct-04 1
ITTSEA, Tema 2. 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”.

Conceptos relacionados: primitiva, procesador, entorno.


Introducción a los Computadores 1-oct-04 2
ITTSEA, Tema 2. Algoritmos

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:

(1) Hervir agua


(2) Poner café en una taza
(3) Echar el agua en la taza

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:

(1) Hervir agua


(1.1) Llenar un cazo con agua
(1.2) Ponerlo en la hornilla
(1.3) Encender el fuego
(1.4) Esperar hasta que hierva
(1.5) Apagar el fuego

Introducción a los Computadores 1-oct-04 3


ITTSEA, Tema 2. Algoritmos

Conceptos básicos sobre algoritmos

• Procesador: entidad capaz de “entender” un enunciado y


ejecutar el trabajo descrito.
• Entorno: conjunto de condiciones necesarias para la
ejecución del trabajo.
• Acción, o primitiva: cada etapa del enunciado.
• Secuencialidad: cada acción se ejecuta cuando la anterior
ha terminado completamente.
• Paralelismo. Existen algoritmos en los cuales algunas (o
todas) las primitivas se pueden ejecutar a la vez. Se dice
entonces que se trata de un algoritmo paralelo.

Introducción a los Computadores 1-oct-04 4


ITTSEA, Tema 2. Algoritmos

2
Definición de algoritmo

• Dado un procesador bien definido y un trabajo a ejecutar


por este procesador, un algoritmo es el enunciado de una
secuencia de acciones primitivas que realizan ese trabajo.

• Hay que considerar 3 aspectos: Caracteres


alfanuméricos,
– Primitivas de las que partimos.
símbolos especiales y
palabras en español.
– Lenguaje simbólico a utilizar.

– Representación de los datos.


Determinará la
descripción del
algoritmo y la forma de
las acciones.
Introducción a los Computadores 1-oct-04 5
ITTSEA, Tema 2. Algoritmos

Ejemplo 1: producto mediante ábaco


Producto de 2 números naturales X e Y.

Mediante un ábaco.
• Primitivas:
– Contar bolas.
– Desplazar bolas a izquierda
y derecha.

• Procesador: ábaco de 3 filas de bolas de distinto color y un


operador humano.

• Representación de los datos: bolas a la izquierda.

• Condiciones de entorno:
– Inicialmente a la izquierda no hay bolas.

Introducción a los Computadores 1-oct-04 6


ITTSEA, Tema 2. Algoritmos

3
Algoritmo para el ejemplo del ábaco

Desplazar X bolas rojas a la izquierda.


Desplazar Y bolas azules a la izquierda.
MIENTRAS haya bolas azules a la izquierda
Desplazar X bolas verdes a la izquierda.
Desplazar 1 bola azul a la derecha.
FINMIENTRAS
Contar las bolas verdes a la izquierda.
PARAR

Introducción a los Computadores 1-oct-04 7


ITTSEA, Tema 2. Algoritmos

Ejemplo 2: producto con hojas de papel


Producto de 2 números naturales X e Y.

Mediante hojas de papel.

- Primitivas:
- Leer, escribir y borrar
- Sumar y restar

– Representación de los datos: cifras escritas en el papel


(numeración arábica en base 10).

– Procesador: 3 hojas de papel y operador humano.

– Condición de entorno: las tres hojas están inicialmente


en blanco.

Introducción a los Computadores 1-oct-04 8


ITTSEA, Tema 2. Algoritmos

4
Algoritmo para las hojas de papel

Escribir X sobre la hoja 1.


Escribir Y sobre la hoja 2.
Escribir 0 sobre la hoja 3.
REPETIR
Sumar los valores de las hojas 1 y 3 y escribir el
resultado en la hoja 3, perdiéndose el valor
anterior (borrando lo que hubiese antes).
Restar 1 al valor escrito en la hoja 2 y escribir
el resultado en la misma hoja, perdiéndose el
anterior (borrando lo que hubiese antes).
HASTA QUE el valor de la hoja 2 sea 0.
Leer el valor escrito en la hoja 3.
PARAR

Introducción a los Computadores 1-oct-04 9


ITTSEA, Tema 2. Algoritmos

Estructura general de un algoritmo


• Acciones de entrada: recogen los datos para el trabajo.
• Acciones de proceso: ejecutan los cálculos.
• Acciones de salida: ofrecen los resultados.

PROCESO
Datos de entrada Datos de salida

• Datos: - De entrada.
- De salida.
- Internos (resultados intermedios).

• Interfaz: acciones de entrada + acciones de salida +


datos de entrada + datos de salida.

Introducción a los Computadores 1-oct-04 10


ITTSEA, Tema 2. Algoritmos

5
Fases de la resolución de un problema

1. Análisis del problema.

2. Diseño o definición del algoritmo.

3. Implementación del algoritmo en la


computadora.

4. Verificación y pruebas.

Introducción a los Computadores 1-oct-04 11


ITTSEA, Tema 2. Algoritmos

Notación algorítmica

Conjunto de convenios para expresar de forma no


ambigua la resolución de un problema.

• Textual: pseudolenguaje.

Notaciones • Gráfica: diagramas de flujo,


UML.
algorítmicas
• Ejecutable: lenguaje de
programación.

Introducción a los Computadores 1-oct-04 12


ITTSEA, Tema 2. Algoritmos

6
Diagramas de flujo

Introducción a los Computadores 1-oct-04 13


ITTSEA, Tema 2. Algoritmos

Ejemplo: sumar N números

Introducción a los Computadores 1-oct-04 14


ITTSEA, Tema 2. Algoritmos

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.

• Ventajas principales: flexibilidad y legibilidad.

Introducción a los Computadores 1-oct-04 15


ITTSEA, Tema 2. Algoritmos

Elementos de una notación algorítmica


– Léxicos: símbolos indivisibles mínimos.
• Combinaciones mínimas de caracteres.
• Símbolos gráficos.
– Sintácticos: reglas para combinar
jerárquicamente elementos léxicos.
• Construcción de sentencias.
• Uniones válidas de símbolos gráficos.
– Semánticos: reglas que aseguran que los
elementos sintácticos tienen significado.
• Compatibilidad de tipos.

Introducción a los Computadores 1-oct-04 16


ITTSEA, Tema 2. Algoritmos

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

Contenido de la variable Nombre simbólico

Introducción a los Computadores 1-oct-04 17


ITTSEA, Tema 2. Algoritmos

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

Constante literal Constante simbólica

Introducción a los Computadores 1-oct-04 18


ITTSEA, Tema 2. Algoritmos

9
Estructura general de un algoritmo

ALGORITMO Nombre
Declaraciones
INICIO
Acciones
FIN Nombre

Introducción a los Computadores 1-oct-04 19


ITTSEA, Tema 2. Algoritmos

Mi primer algoritmo en pseudolenguaje

ALGORITMO HolaMundo
INICIO
Escribir (“Hola Mundo”)
FIN HolaMundo

Introducción a los Computadores 1-oct-04 20


ITTSEA, Tema 2. Algoritmos

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 */ // ; { } = [ ]

Introducción a los Computadores 1-oct-04 21


ITTSEA, Tema 2. Algoritmos

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 */

Introducción a los Computadores 1-oct-04 22


ITTSEA, Tema 2. Algoritmos

11
Entrada/salida básica

• Entrada por teclado


Se usa el subprograma estándar Leer, que pone en
una(s) variable(s) lo que el usuario teclee.
Leer(variable)
Leer(var1, var2, var3)
• Salida por pantalla
Se usa el subprograma estándar Escribir, que saca por
pantalla el resultado de una(s) expresión(es).
Escribir(expresión)
Escribir(expr1, expr2, expr3)

Introducción a los Computadores 1-oct-04 23


ITTSEA, Tema 2. Algoritmos

Ejemplo: suma de números reales


ALGORITMO SumaNúmeros
/* Lee por teclado una serie de números reales y
calcula su suma (ver transparencia diagrama flujo) */
VAR // Declaraciones de variables
N n
R s = 0.0, x
INICIO
Escribir(“Introduzca el número de números.\n”); Leer(n)
MIENTRAS n > 0 HACER // Bucle para leer y acumular
Escribir(“Introduzca número: “); Leer(x)
s = s + x
n = n – 1
FINMIENTRAS
Escribir(“La suma de los números es ”, s, ‘\n’)
FIN SumaNúmeros

Introducción a los Computadores 1-oct-04 24


ITTSEA, Tema 2. Algoritmos

12
Lenguajes de programación
Lenguaje de programación Vs. traductor

Lenguaje de programación Traductor


Especificación: documento Implementación: software
No ejecutable Ejecutable en máquina
Publicado por organizaciones Desarrollados normalmente por
estándares fabricantes de ordenadores

Introducción a los Computadores 1-oct-04 25


ITTSEA, Tema 2. Algoritmos

Clases de lenguajes de programación


• Lenguajes de propósito general
– Imperativos o procedurales
Se basan en la asignación. Se especifica la secuencia de instrucciones.
• De guiones (scripts). Más simples. Suelen ser interpretados.
• Internet: Hipertexto (HTML) acceso a Internet y base de datos (PHP, ASP)
– Orientados al objeto
Se basan en la asignación y son más próximos al mundo real (objetos).
– Declarativos
Basados en reglas de deducción (lógicos) o funciones (funcionales).
Se especifica el resultado requerido.
– Visuales
Entornos que generan código automáticamente.

• Lenguajes de propósito específico


– De robótica (VAL II), bases de datos (SQL), hardware (Step-5).
Introducción a los Computadores 1-oct-04 26
ITTSEA, Tema 2. Algoritmos

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

Elementos léxicos de C++


– Palabras clave
main const
– Identificadores (igual que en pseudolenguaje)
dato1 miDato MAX_LONG cin cout
– Literales (igual que en pseudolenguaje)
• Numéricos: 12 34.5 .3 3.45e-2
• Textuales: ‘a’ ‘7’ ‘#’ ‘<’ “Hola”
– Operadores El operador de la
• Aritméticos: + - * % / división real y la entera
es el mismo
• Relacionales: < > <= >= == !=
• Lógicos: && || !
– Delimitadores (igual que en pseudolenguaje)
/* comentarios */ ; { } = [ ] //
Introducción a los Computadores 1-oct-04 28
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

Introducción a los Computadores 1-oct-04 29


ITTSEA, Tema 2. Algoritmos

Ejemplo de programa en C++


#include <iostream> // Librería estándar de E/S en C++
using namespace std; // Espacio de nombres estándar
/* Este programa convierte radianes a grados */
int main() // en C++ siempre debe haber un main()
{
// parte declarativa
const float PI=3.14159;
float radianes, grados;

// 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

You might also like