Sunteți pe pagina 1din 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

Introducción a los Computadores

 

ITTSEA, Tema 2. Algoritmos

1-oct-04

1

Concepto de algoritmo Ordenador (procesador): - Ejecuta operaciones simples (ej., suma y comparación). - Gran
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
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
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
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.
Caracteres
• Hay que considerar 3 aspectos:
alfanuméricos,
– Primitivas de las que partimos.
símbolos especiales y
palabras en español.
– Lenguaje simbólico a utilizar.
Determinará la
– Representación de los datos.
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
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
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.
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
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
• - De entrada.
Datos:
- 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
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
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
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
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 –
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
Concepto de variable
Posición de memoria que almacena un dato cuyo
valor puede cambiar durante la ejecución.
Posición de memoria
Temperatura
25
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
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
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
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
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:
// Una línea
area >= 100.0
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
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
Lenguajes de programación
Lenguaje de programación Vs. traductor
Lenguaje de programación
Traductor
Especificación: documento
Implementación: software
No ejecutable
Publicado por organizaciones
Ejecutable en máquina
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
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
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
• -
Aritméticos: +
*
% /
El operador de la
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
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

Introducción a los Computadores

 

ITTSEA, Tema 2. Algoritmos

1-oct-04

31

16