Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
A
ALLG
GOORRIIT
TMMO
OSS Y
YPPRRO
OGGRRA
AMMA
ASS
¿Qué es la programación?
Algoritmos
Variable
TIPO DESCRIPCION
Entero (Integer) Valor numérico entero
Real (Single, Double) Valor numérico con punto decimal
Lógico (Boolean) Contiene falso o verdadero (0 ó 1)
Carácter Contiene un carácter alfanumérico
Cadena (String) Contiene un conjunto de caracteres
Expresiones
Reglas de prioridad
Aquellas expresiones que tienen dos o más operandos requieren una regla
matemática que permita determinar el orden de las operaciones, se denominan
reglas de prioridad y son:
Para poder definir con precisión el problema se requiere que las especificaciones de
entrada y salida sean escritas con detalle.
§ Diagramas de Flujo
§ Diagrama de Nassi-Sheiderman (N-S)
§ Pseudo código
Nosotros nos abocaremos al uso de los diagramas de flujo. Esta es una técnica de
representación mediante el uso de símbolos estándares que permiten la
identificación de la entrada, proceso y salida, estos son:
SIMBOLO DESCRIPCION
ENTRADA, SALIDA
PROCESO
DECISION
INDICADOR de flujo
CONECTOR de página
PREPARACION
LLAMADA A SUBRUTINA
SALIDA A PANTALLA
SALIDA A IMPRESORA
ENTRADA MANUAL
COMENTARIO
Bucle.
Bucles anidados.
Inicio Inicio
Inicio
A
A Inicio
Inicio
B
B
Inicio
C
Contador.
cont = cont +1 cont = cont +2
Sumador.
Suma = 0
Suma = suma + dato
Productor.
Prod = 1
Prod = prod * dato
Ø Estructuras Selectivas
Ø Estructuras Repetitivas
Estructuras Selectivas.
Si – Entonces
F
Condición
V
Acción 1
Esta estructura es utilizada cuando se requiere realizar una o mas acciones en caso
de que la condición se cumpla y acciones diferentes en caso de que la condición no
se cumpla.
F
Condición
V Acción 2
Acción 1
Caso
Variable
1 N
2 3
Acción 1 Acción N
Acción 2 Acción 3
Estructuras Repetitivas.
ü Mientras (While)
ü Hacer - Mientras (Do – While)
ü Para (For – Next)
Mientras
Utilice esta estructura para ejecutar una acción o bloque de acciones un número
indefinido de veces mientras la condición sea verdadera (ó hasta que la condición
sea falsa)
Hacer – Mientras
Para
Los arreglos (arrays) son una colección de elementos del mismo tipo almacenados
ordenadamente en una variable contenedora. Son muy útiles para utilizar variables
de tipo vectorial, matricial ó tensorial en general. Los arreglos ó matrices
comienzan de 0 hasta N-1. por ejemplo en una matriz de 4 elementos:
EJEMPLO 1
Solución
F=1*2*3*…*N
N
F =ΠI
I =1
Iß1
FßF*I (ciclo para todo I < N)
Prueba de escritorio
1º Se ingresa el valor N = 5
2º Se inicializan las variables I = 1 y F = 1
3º Se realiza el bloque de instrucciones mientras el
valor de I sea menor al valor de N.
4º Imprimir o mostrar el resultado final F = 120 (valor real del factorial de 5).
F = 120 Solución
EJEMPLO 2
NK = N * N * N * N * … * N
1 2 3 4 … k
Solución
P←N
I ←1
I ← I +1
mientras I sea menor a K
P ← P* N
Prueba de escritorio
N=2
K=4
I<K I P
1 (Iß1) 2 (PßN)
Si 2 2*2=4
Si 3 4*2=8
SI 4 8 * 2 = 16
D.F.D 1.2
P = 16 Solución
EJEMPLO 3
Solución
Valores iniciales:
T = -1 S=1
T
S=S+
2 I − 1 I = 2, 3, 4,... N
T = T * ( −1)
Prueba de escritorio
N=5
I<N I S T
1 1 -1
SI 2 1-1/3 1
SI 3 1-1/3+1/5 -1
SI 4 1-1/3+1/5-1/7 1
SI 5 1-1/3+1/5-1/7+1/9 -1
NO - - -
EJEMPLO 4
Solución
Para realizar este tipo de operaciones, utilizaremos el operador MOD, este operador
se encuentra en la mayoría de los lenguajes de programación modernos. El
operador MOD retorna el valor del residuo de una división.
por ejemplo:
Prueba de escritorio
X = 21
21 2
(1) 10
EJEMPLO 5
Solución
Si N MOD I = 0 ⇒ N no es primo, (I = 2, 3, … ,N - 1)
Prueba de escritorio
N=5
I N MOD I = 0 flag I<N–1
1 TRUE
2 5 MOD 2 = 1 No continúa TRUE Si
3 5 MOD 3 = 2 No continúa TRUE Si
4 5 MOD 4 = 1 No continúa TRUE Si
N=9
I N MOD I = 0 flag I<N–1
1 TRUE
2 9 MOD 2 = 1 No continúa TRUE Si
3 9 MOD 3 = 0 Si Cambia FALSE Si
4 9 MOD 4 = 1 No Continúa FALSE Si
5 9 MOD 5 = 4 No Continúa FALSE Si
6 9 MOD 6 = 3 No Continúa FALSE Si
7 9 MOD 7 = 2 No Continúa FALSE Si
8 9 MOD 8 = 1 No Continúa FALSE No
2
La variable “flag” es de tipo boolean , es decir que adopta los valores True (1) y false (0)
EJEMPLO 6
Solución
S = 1 + 2 + 3 + 5 + 7 + 11 + 13 + …
I 1 2 3 4 5 6 7 …. N
1º Leer el valor de N
2º Asignar valores iniciales
3º Si c < N entonces continuar, si no ir al paso 10º
4º Incrementar X = X + 1
5º si X es primo entonces continuar, si no ir al paso 9ª
6º imprimir valor X
7º acumular suma S = S + X
8º incrementar c = c + 1
9º volver al paso 3ª
10º Imprimir valor S
11º Terminar
EJEMPLO 7
Solución
S=0+1+1+2+3+5+8+…
I 1 2 3 4 5 6 7 … N
c ← a + b
a ←b
b←c
También en este caso será necesario utilizar un contador “cont” para poder
controlar la cantidad de términos de la serie (cont < N)
Serie de Fibonacci
1º Leer el valor de N
2º a = 0; b = 1; cont = 2; S = 0 + 1
3º Imprimir serie: 0, 1
4º Si cont < N entonces continuar, si no ir al paso 10º
5º c = a + b; a = b; b = c
6º cont = cont + 1
7º S=S+c
8º Imprimir c
9º volver al paso 4ª
10º Imprimir valor S
11º Terminar
Prueba de escritorio
N=7
0112358
S = 20 Solución
EJEMPLO 8
Solución
A1 B1
A B
2 2
Sean los vectores: A = A3 y B = B3
: :
AN BN
Ao B
cos(θ ) =
AB
P = A o B = A1 * B1 + A2 * B2 + A3 * B3 + ... + AN * BN
MA = A = A12 + A22 + A32 + ... + AN2
MB = B = B12 + B22 + B32 + ... + BN2
Será suficiente utilizar un bucle para calcular los valores de “P”, “MA” y “MB” para el subíndice
“I” desde 1 hasta N.
I A(I) B(I) P MA MB
0 0 0
1 -1 0 0 1 0
2 2 1 2 5 1
3 0 -1 2 5 2
2
θ = ar cos = 50.77 = 50º 46’ Solución
5* 2
EJEMPLO 9
Realizar un diagrama de flujo que permita ordenar una lista de números reales.
Solución
3 5 -1 0 -2
3 5 -1 0 -2
3 5 -1 0 -2
3 -1 5 0 -2
3 -1 0 5 -2
3 -1 0 -2 5
Con esto conseguimos arrastrar el valor mayor de la lista hasta el último (en el
ejemplo es el número 5). So repetimos los pasos anteriores, ordenaremos el
siguiente valor mayor arrastrándolo hasta el fondo.
3 -1 0 -2 5
-1 3 0 -2 5
-1 0 3 -2 5
-1 0 -2 3 5
En este caso llevamos el número 3 hasta el final, nótese que la última verificación
no es necesaria debido a que se llevó anteriormente el número 5 y lógicamente éste
es mayor a 3. Ahora sólo queda ordenar los valores restantes:
-1 0 -2 3 5
-1 0 -2 3 5
-1 -2 0 3 5
-1 -2 0 3 5
-2 -1 0 3 5
1º) 5 – 1 = 4 comparaciones
2º) 5 – 2 = 3 comparaciones
3º) 5 – 3 = 2 comparaciones
4º) 5 – 1 = 1 comparación
INICIO
I=1 N-1
Leer N
J=1 N-I
I=1 N
Temp X(J)
NO X(J) X(J+1)
X(J+1) Temp
D.F.D 1.9
I=1 N
X(I)
FIN
EJEMPLO 10
Diseñar un diagrama de flujo para calcular el producto de una matriz de MxN por
una matriz de NxP
Solución
a11 a12 a13 ... a1N b11 b12 b13 ... b1P c11 c12 c13 ... c1P
a a 22 a 23
... a 2 N b b22 b23
... b2 P c c 22 c 23 ... c 2 P
21 21 21
a31 a32 a33 ... a3 N * b31 b32 b33 ... b3P = c31 c32 c33 ... c3 P
: : : : : : : : : : : : : : :
a M 1 aM 2 aM 3 ... a MN MxN bN 1 bN 2 bN 3 ... bNP NxP c M 1 cM 2 cM 3 ... c MP MxP
Así tendremos:
N
c1 j = ∑ a1k * bkj para todo j = 1 hasta P
k =1
y análogamente:
N
c 2 j = ∑ a 2 k * bkj para todo j = 1 hasta P
k =1
N
cij = ∑ aik * bkj
k =1
INICIO
Leer M, N, P
I=1 M
I=1 M
J=1 P
J=1 N
C(I,J) 0
Leer A(I, J)
Leemos los elementos
de la matriz A de M x N K=1 N
I=1 N
J=1 P C (I, J)
Leer B(I, J)
Leemos los elementos
de la matriz B de N x P
FIN
D.F.D 1.10
PROBLEMAS PROPUESTOS
1 3 5 7
1) Calcular la suma de la siguiente serie: S = + + + + ... para n términos.
2 8 32 128
2) Imprimir y hallar la suma de N números múltiplos de 3.
3) Realizar un diagrama de flujo que obtenga las soluciones reales y complejas de
la ecuación de 2º grado.
4) Diseñar un algoritmo que halle la suma y la media de N números introducidos.
5) Realizar un diagrama de flujo que lea un número entero cualquiera y lo
invierta, por ejemplo al leer 12586 debe escribir el valor de 68521.
6) Realizar un diagrama de flujo que calcule una tabla de valores de altura Vs
tiempo de un objeto lanzado hacia arriba con velocidad inicial y altura inicial como
datos.
7) Realizar un diagrama de flujo para ordenar una lista de números usando el
método de la selección.
8) Diseñar un algoritmo para obtener la suma de los N primeros números
múltiplos de M.
9) Diseñe un diagrama de flujo para obtener un cuadrado mágico. Un cuadrado
mágico es aquel del cual se obtiene el mismo valor sumando los valores de las filas,
columnas y diagonales (e número de lados debe ser impar).
6 1 8
7 5 3
2 9 4
(Se halla partiendo en el número 1 colocado en la parte media superior, el siguiente
valor se coloca dos casillas abajo y una a la izquierda, si esta casilla estuviese
ocupada entonces el valor es colocado debajo del número actual).
9 20 1 12 23
15 21 7 18 4
16 2 13 24 10
22 8 19 5 11
3 14 25 6 17