Fundamentos de Programación. Curso 2011-12 - …agronomaps.wdfiles.com/local--files/apuntes-algoritmia/Algoritmia 1... · Algoritmia básica . Depto. de Matemática Aplicada y Métodos

Post on 03-Aug-2018

227 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

Transcript

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

top related