Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Algoritmia básica
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Introducción
Computación: Manipular la información y realizar los cálculos apropiados para resolver un problema
Algoritmo: Sucesión finita de pasos no ambiguos que se pueden ejecutar en un tiempo finito y que conducen a la solución de un problema
Ni la palabra computación ni la palabra algoritmo llevan implícita la palabra ordenador
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Un poco de Historia Abu Jafar Muhammad Ibn Musa Al-Khwarizmi (Bagdad, 780-850)
Escribió el libro “Hisab al-jabr al-muqabala” (El arte de resolver ecuaciones)
La palabra algoritmo deriva de su nombre
La palabra algebra deriva del título de este libro
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Resolución de un problema
Análisis del problema
Diseño del algoritmo
Programación del algoritmo
Definición del problema
Especificaciones de entrada
Especificaciones de salida
Codificación del programa
Ejecución del programa
Comprobación y depuración
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Concepto de variable
Una variable es una ubicación de memoria en el computador o en la calculadora que tiene un nombre (identificador) y en la que se pueden almacenar diferentes valores.
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Ejemplo 1 Diseñar un algoritmo que permita determinar el área de un círculo y la longitud de la circunferencia que lo circunscribe
Análisis del problema
1. Utilizar las fórmulas: a) Area = π*Radio*Radio b) Longitud = 2*π*Radio
2. Variable de entrada: Radio (real)
3. Variables de salida: Área y Longitud (reales)
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Ejemplo 1 (cont.) Diseño del algoritmo
Recordar que un algoritmo debe cumplir: a) Indicar el orden de ejecución de los pasos b) Estar definido sin ambigüedad c) Ser finito
1. Leer la variable Radio
2. Aplicar las fórmulas: a) Area = π*Radio*Radio b) Longitud = 2*π*Radio
3. Escribir las variables Área y Longitud
C
F
R
A, L
a), b)
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Ejemplo 2
Diseñar un algoritmo que permita calcular las raíces de la ecuación de segundo grado ax2+bx+c=0 (sólo en el caso de que las dos raíces sean reales)
Análisis del problema
1. Utilizar las fórmulas: a) x1 = (-b+sqrt(b2-4ac)/2a b) x2 = (-b-sqrt(b2-4ac)/2a
2. Variables de entrada: a, b, c (reales)
3. Variables de salida: x1 y x2 (reales)
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Diseño del algoritmo
1. Leer las variables a, b y c
3. Escribir las variables x1 y x2
Ejemplo 2 (cont.)
2. Utilizar las fórmulas: a) x1 = (-b+sqrt(b2-4ac)/2a b) x2 = (-b-sqrt(b2-4ac)/2a
C
F
a,b c
x1, x2
a), b)
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Taller
Diseñar un algoritmo que permita calcular el producto de las matrices A y B, ambas de dimensión 2x2 y elementos reales
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Estructuras de bifurcación (condicionales)
Se producen cuando en un punto del algoritmo hay que tomar una decisión, cuyo resultado condiciona la marcha posterior del algoritmo
C
F
a,b
adiós
a > b
F
hola
si no
Ejemplo: Leer dos números a y b. Si a>b escribir “hola”, en caso contrario, escribir “adiós”
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Ejemplo 3 Diseñar un algoritmo que permita calcular las raíces de la ecuación de segundo grado ax2+bx+c=0
Análisis del problema 1. Si b2-4ac ≥ 0, utilizar las fórmulas:
a) x1 = (-b+sqrt(b2-4ac))/2a b) x2 = (-b-sqrt(b2-4ac))/2a
3. Variables de entrada: a, b, c (reales)
4. Variables de salida: x1 y x2 (reales)
2. Si b2-4ac < 0, utilizar las fórmulas: a) x1 = −b/2a + I*sqrt(4ac−b2))/2a b) x2 = −b/2a − I*sqrt(4ac−b2))/2a
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Ejemplo 3 (cont.) Diseño del algoritmo 1. Leer las variables a, b y c
4. Escribir las variables x1 y x2
2. Calcular d = b2 − 4ac 3. Si d ≥ 0 entonces: Utilizar las fórmulas:
x1 = (−b + sqrt(d))/2a x2 = (− b − sqrt(d))/2a
En caso contrario: Utilizar las fórmulas:
x1 = −b/2a + I*sqrt(d))/2a x2 = −b/2a − I*sqrt(d))/2a
Terminar condición
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
x1 = (−b + sqrt(d))/2a x2 = (− b − sqrt(d))/2a
Ejemplo 3 (cont.) a,b,c
d > 0 si no
d = b2 − 4ac
x1 = −b/2a + I*sqrt(d))/2a x2 = −b/2a − I*sqrt(d))/2a
X1, x2
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Un poco de Lógica 1 Los operadores lógicos permiten comparar el valor de dos constantes o variables
Operación Operador Igual que = Mayor o igual que >= Mayor que > Menor que < Menor o igual que <= Distinto a <>
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Un poco de Lógica 2 Una variable lógica es el resultado de comparar el valor de dos constantes o variables mediante una operación lógica.
Una variable lógica sólo puede tomar dos valores: verdadero (T) o falso (F).
L = A * B
Operador lógico (=, >=, >, <, <=, <>)
Variable lógica ( T, F)
EJEMPLO A = 3, B = 7 L = A >= B L = Falso L = A <> B L = Verdadero
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Un poco de Lógica 3 Las variables lógicas pueden operarse entre sí mediante las operaciones de relación. Las más usuales son and y or.
and El resultado de su aplicación es true si ambos operandos son true y es false si alguno de ellos es false.
or El resultado de su aplicación es true si alguno de los operandos es true y es false si ambos son false.
A B A and B
V V V
V F F
F V F
F F F
A B A or B
V V V
V F V
F V V
F F F
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C. 18
Un poco de Lógica 4
L = (a>b) and (d<=c)
L = (a*b > c*d) or (a<=d)
L = (a*b > c*d) or (a>=d)
L = true
EJEMPLOS A = 5, B = -2, C = 4, D = -2
true true
false false
L = false
false true
L = true
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Taller 2
Diseñar un algoritmo que permita resolver la ecuación cúbica ax3+bx2+cx=d por el método de Ferro – Tartaglia – Cardano – Bombelli
1. Leer a, b, c, d
2. Calcular: 2 3
2
1 1 23 3 27
= − = − +
b cb bp c q da a a a a
3. Calcular: 2 3
2 3 = +
q pr
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Taller 2 (cont. 1) 3. Si r>0 entonces: Calcular: 3 3
2 2 = + − − +
q qy r r
En caso contrario: Si r=0 entonces: Calcular: 32
2=
qy
En caso contrario: Calcular:
2 2
2= = − ρ = +
qs t r s t
Si s>0 entonces: 13
θ =
tarctgs
En caso contrario:
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Si s<0 entonces:
Taller 2 (cont. 2)
13 θ = + π
tarctgs
En caso contrario:
Si t>0 entonces: 6π
θ =
En caso contrario: 6π
θ = −
Fin de condición
Fin de condición
Fin de condición
32 cos= ρ θy Calcular:
Fin de condición
Fin de condición
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Taller 2 (cont. 3)
4. Calcular: 1 3= −
bx ya
5. Calcular: 1 1α = β = +α γ = +βa b x c x
6. Resolver la ecuación: 2 0α +β + γ =x x
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Taller 2 (cont. 4) a, b, c, d
p, q, r
r>0
y
si
r=0
y
si
no no
s, t, ρ
s<0
si
no
θ
t>0
si
no
θ θ
y
x1, α, β, ϒ
αx2+βx+γ=0
x1, x2, x3
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Estructuras repetitivas (bucles)
Un bucle (loop) es un conjunto de instrucciones del programa que se repite varias veces.
EJEMPLO:
Diseñar un algoritmo que permita escribir los primeros N números naturales
1. Leer N 2. Hacer I=1 3. Escribir I 4. Si I<N hacer I=I+1 ir a 3 en caso contrario, TERMINAR
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Ejemplo (cont.)
N
I=1
I
I<N si
no
FIN
I=I+1 Bucle
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Tipos de bucles. Bucle desde … hasta Se utiliza cuando sabemos de antemano el número de veces que se va a repetir una cierta tarea
I=I0,N,Δ
PROCESO
La variable de control del bucle (I) se inicializa con el valor I0 y se va incrementando en una cantidad Δ (paso) con cada repetición. El proceso se detiene cuando I ≥ N.
I=I0
I≤N si
no
I=I0+Δ
PROCESO
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Tipos de bucles. Bucle desde … hasta (cont.)
EJEMPLO:
Diseñar un algoritmo que permita escribir los primeros N números naturales
N
I=1,N,1
I
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Taller 3
Diseñar un algoritmo que permita calcular el producto escalar de los vectores u = (u1, u2, …, un) y v = (v1, v2, …, vn).
1 1 2 21
n
n n i ii
p u v u v u v u v=
= + + + =∑…
1. Leer n 2. Leer u, v 3. p ← 0 4. Desde i=1 hasta n, con paso 1, hacer: p ← p + ui*vi Fin bucle 5. Escribir p
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Bucles anidados
Los bucles pueden anidarse uno dentro de otro, siempre y cuando se cumpla la condición:
Inicio bucle 1 Inicio bucle 2 Inicio bucle n Fin bucle n Fin bucle 2 Fin bucle 1
Inicio bucle 1 Inicio bucle 2 Inicio bucle n Fin bucle 2 Fin bucle n Fin bucle 1
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Bucles anidados (cont.)
Veamos su funcionamiento con un ejemplo:
J=1,3,1
PROCESO
I=1,5,2
I = 1
J = 1, 2, 3
I = 3
J = 1, 2, 3
I = 5
J = 1, 2, 3
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Taller 4
Diseñar un algoritmo que permita calcular la suma de las matrices
11 12 1 11 12 1
21 22 2 21 22 2
1 2 1 2
,
n n
n n
m m mn m m mn
a a a b b ba a a b b b
a a a b b b
= =
A B
… …… …
� � � � � �… …
( ),i j ij ijijs a b a b= + = +
( )1,2, , 1,2, ,i m j n= =… …
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Taller 4 (cont.)
Para recorrer todos los elementos de una matriz (mxn) necesitamos dos bucles anidados:
i
j
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Taller 4 (cont.)
1. Leer m, n 2. Leer A y B
3. Desde i=1 hasta m, con paso 1, hacer:
Fin bucle en i
Desde j=1 hasta n, con paso 1, hacer:
Fin bucle en j
4. Escribir S
s(i,j) = a(i,j) + b(i,j)
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Tipos de bucles. Bucle mientras … hacer Se utiliza cuando sabemos de antemano la condición necesaria para que una cierta tarea se repita
Cond. V F
PROCESO
Cond.
PROCESO
Las tareas que componen el proceso se realizan una y otra vez mientras la condición que controla el bucle sea verdadera. PELIGRO: Si la condición siempre es verdadera, el bucle se repetirá infinitas veces. El ordenador se “cuelga”.
Dep
to. d
e M
atem
átic
a A
plic
ada
y M
étod
os In
form
átic
os
E.T
.S. d
e In
geni
eros
de
Min
as –
U.P
.M.
Fundamentos de Programación. Curso 2011-12
López Benito, A., Conde Lázaro, C.
Tipos de bucles. Bucle mientras … hacer (cont.) EJEMPLO:
Diseñar un algoritmo que permita sumar los primeros números naturales hasta que su suma sea mayor que un valor S prefijado.
S
suma ≤ S
suma = 0 n = 1
suma = suma+n n = n+1
suma, n-1