Professional Documents
Culture Documents
2. Concepto de algoritmo
Es el conjunto de instrucciones que especifican la secuencia de operaciones a
realizar en orden para resolver un sistema específico o clase de problema. Los
algoritmos son independientes tanto del lenguaje de programación en que se
expresa como de la computadora que los ejecuta. El diseño de la mayoría de los
algoritmos requiere creatividad y conocimientos profundos de la técnica de la
programación. En esencia. Todo problema se puede describir por medio de un
algoritmo (Aguilar, 1988)
2.1. Características de los algoritmos
Un algoritmo debe ser preciso e indicar el orden de realización de cada
paso
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se
debe obtener el mismo resultado cada vez
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en
algún momento ósea debe tener un numero finito de pasos
2.2. Partes de un algoritmo
La definición de un algoritmo debe describir tres partes: Entrada, Proceso y
Salida
Entrada: son los datos que van iniciar el proceso
Proceso: Es la secuencia de paso que nos permite ejecutar alguna operación
Salida: Es la información que se requiere al resolver el problema
2.3. Frfr
3. Resolución de problemas con computadoras y las herramientas de programación
Esta se puede dividir en tres fases importantes
3.1. Análisis del problema:
El problema debe estar bien definido si se desea llegar a una solución
satisfactoria, para poder definir con precisión el problema se requiere que las
especificaciones de entrada y salida sean descritas con detalle. Una buena
definición del problema junto con una descripción detallada de las
especificaciones de entrada y salida son los requisitos más importantes para
llegar a una solución eficaz. El Análisis del problema exige una lectura previa
del problema a fin de obtener una idea general de lo que se solicita la segunda
lectura servirá para responder a las preguntas
¿Qué información debe proporcionar la resolución del problema?
¿Qué datos se necesitan para resolver el problema?
3.2. Diseño o desarrollo del algoritmo
La descomposición del problema original en subproblemas más simples y a
continuación dividir estos subproblemas en otros más simples que pueden ser
implementados para la solución en la computadora se denomina diseño
descendente (Top – Down Design.). Las ventajas más importantes del diseño
descendente son.
El problema se comprende más fácilmente al dividirse en partes más
simples denominados módulos.
Las modificaciones en los módulos son más fáciles
La comprobación del problema se puede verificar fácilmente
Tras los pasos anteriores es preciso representar el algoritmo mediante
determinadas herramientas de programación diagrama de flujo, pseudocódigo
o diagrama N-S
3.3. Resolución del algoritmo en la computadora
Una vez que el algoritmo está diseñado y representado gráficamente
mediante una herramienta de programación (diagrama de flujo, pseudocódigo
o diagrama N-S) se debe pasar a la fase de resolución práctica del problema
con la computadora
4. Representación de un algoritmo
Para representar los algoritmos debemos utilizar métodos gráficos o numéricos,
que sea independiente de un lenguaje de programación, de tal manera que nos
permita visualizar el algoritmo que queramos representar, existen varios métodos,
los más usados a nivel internacional son el diagrama de flujo y el pseudocódigo.
4.1. Diagrama de flujo
Es un diagrama que utiliza los símbolos (cajas) estándar mostrados y que tiene
los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas
líneas de flujo, que indican la secuencia en que se deben ejecutar.
Un diagrama de flujo (flowchart) es una de las técnicas de representación de
algoritmos más antigua y a la vez más utilizada, aunque su empleo ha
disminuido, estos símbolos están normalizados por ANSI y entre las cajas más
importantes tenemos: (Aguilar, 1988)
Símbolo Función
Terminal: representa el comienzo,
inicio, final y fin de un programa.
Puede representar también una
parada o interrupción programada
4.2. Pseudocódigo
Es un lenguaje especificado de algoritmos. El uso de tal lenguaje hace el paso
de codificación final relativamente fácil. La ventaja de un pseudocódigo es que
en su uso la planificación de un programa, el programador se puede
concentrar en la lógica y en las estructuras de control y preocuparse de las
reglas de un lenguaje de programación. Es también fácil modificar el
pseudocódigo si se descubren errores o anomalías en la lógica del programa
(Aguilar, 1988)
El pseudocódigo es un lenguaje algorítmico, de alto lenguaje utilizado para
escribir con mucha más abstracción instrucciones de un lenguaje de
programación.
5. Datos y Tipos de datos
5.1. Datos numéricos
El tipo numérico es el conjunto de los valores numéricos, estos pueden
representarse de dos formas distintas
5.1.1. Enteros:
Es un subconjunto finito de los números enteros. Los enteros son números
completos, no tienen componentes fraccionarios o decimales y pueden
ser negativos o positivos (Aguilar, 1988)
En java existen los siguientes tipos de datos enteros
Byte, enteros de 8 bits, con rango de valores entre -128 y 127
Short, entero corto de 16 bits, con rango de valores entre -32768 y 32767
Int entero de 32 bits, con rango de valores entre -2147483648 y
2147483647
Long, entero largo de 64 bits, con rango de valores entre -
9223372036854775808 y 9223372036854775807
5.1.2. Reales:
El tipo real consiste en un subconjunto de los números reales, Los
números reales siempre tienen su punto decimal y pueden ser positivos o
negativos
En java existen los siguientes tipos de datos reales
Float, valores de punto flotante de 32 bits, con rango de valores entre-
1.40239846e-45 y 3.40282347e+38
Doublé, valores de punto flotante de 64 bits, con rango de valores entre
4.9406564581246544e-324 y 1.79769313486231570e+308
5.2. Datos Lógicos:
Tipo lógico también denominado booleano, es aquel dato que solo puede
tener uno o dos valores cierto o verdadero (True ) y falso (False), este tipo de
dato se utiliza para representar alternativas (si/no) a determinadas
conclusiones
En java existe
Boolean, sus valore son true y false
6. Constantes y Variables:
Los programas de computadora contiene ciertos valores que no deben cambiar
durante la ejecución del programa tales valores se llaman constantes de igual
forma existen otros valores que cambiaran durante la ejecución del programa a
estos valores se les llama variables.
7. Operadores
Todos los símbolos que representan enlaces entre cada uno de los argumentos
que intervienen en una operación se llaman operadores y se utilizan para construir
expresiones. (Rodriguez Almeida, 1991) Los operadores pueden ser:
7.1. Relacionales o condicionales:
Se utilizan para formar expresiones booleanas, es decir, expresiones que al ser
evaluadas producen un valor booleano: verdadero o falso. Tal como se
muestra en la figura (Rodriguez Almeida, 1991)
7.2. Aritméticos :
Para tratar los números se utilizan los operadores aritméticos, que junto con
las variables numéricas forman expresiones aritméticas (Rodriguez Almeida,
1991)
Fuente: Libro de metodología de la programación de Rodríguez Almeida
7.3. Alfanuméricos:
Se utiliza para unir datos alfanuméricos (Rodriguez Almeida, 1991)
7.6. ded
8. Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de
operación, paréntesis, y nombres de funciones especiales. Las mismas ideas son
utilizadas en notación matemática tradicional
Cada expresión toma un valor que se determina tomando los valores de las
variables y constantes implicadas y la ejecución de las operaciones indicadas
Una expresión consta de operando y operadores según el tipo de objetos que se
manipulan, se clasifican las operaciones en:
Aritméticas
Relacionales
Lógicas
Carácter
9. Regla de Prioridad
Según Rodríguez (Rodriguez Almeida, 1991), la prioridad a la hora de evaluar los
operadores en cualquier expresión es
Paréntesis
Potencias
Productos y divisiones
Sumas y restas
Concatenación
Relacionales
Lógicos
Según Joyanes(Aguilar, 1988)Las expresiones que tienen dos o más operadores
requieren usar reglas matemáticas que permitan determinar el orden de las
operaciones, se denominan reglas de prioridad o precedencia y son:
a) Las operaciones que están encerradas entre paréntesis se evalúan primero.
Si existen diferentes paréntesis anidados (interiores unos a otros), las
expresiones más internas se evalúan primero.
b) Las expresiones aritméticas dentro de una expresión suelen seguir el
siguiente orden de prioridad:
Operador exponencial (^)
Operadores de multiplicación y división
Operadores de suma y resta
Operadores lógicos or y and
10. Operación de Asignación
La operación de asignación es el modo de darle valores a una variable. La
operación de asignación se representa con el símbolo u operador ( ). LA
operación de asignación se conoce como instrucción o sentencia de asignación
cuando se refiere a un lenguaje de programación
El formato general de una operación de asignación es
𝐌
i. +𝑷
𝐍
𝑵
ii. 𝑴 + (𝑷−𝑸)
(𝑴+𝑵)
iii. (𝑷−𝑸)
𝒏
(𝑴+ )
𝒑
iv. 𝒓
(𝒒− )
𝒔
(𝒔𝒆𝒏𝒐(𝒙)+𝒄𝒐𝒔𝒆𝒏𝒐(𝒙))
v. 𝒕𝒂𝒏(𝒙)
−𝒃±√𝒃𝟐 −𝟒𝒂𝒄
vi. 𝟐𝒂
Como se intercambian los valores de las A, B y Aux
Aux A
AB
B Aux
Programa
Entrada (algoritmo de Salida
resolución)
12.2. d
13. Instrucciones y tipos de instrucciones
13.1. Instrucción
Son las acciones o instrucciones que se deben escribir y posteriormente
almacenar en memoria en el mismo orden en que han de ejecutarse, es decir,
en secuencia
13.2. Tipos de instrucción
Instrucciones de inicio y fin
Son aquellas instrucciones que inicializan y finalizan la escritura y
ejecución del programa por ejemplo en java
public class {
public static void main(String[], args){
}
}
Instrucciones de asignación
Son aquellas instrucciones que permite asignar valores a una variable
Ejemplo en java
I=3;
Int x [];
Int [] x;
Char [] c = {1, b, c, d, e}
Char [] x = new char [20];
Char x [] = new char [20];
Char [] [] x =new char [3][2];
Instrucciones de lectura
Esta instrucción lee datos de un dispositivo de entrada ejemplo leer
edad, tiempo. Ejemplos.
a=Integer.parseInt(JOptionPane.showInputDialog("ingrese un numero:
"));
Instrucciones de escritura
Esta instrucción escribe en un dispositivo de salida ejemplo escribir A, B, C
Ejemplos
System.out.Println(i)
Instrucciones de bifurcación
El desarrollo lineal de un programa se interrumpe cuando se ejecuta una
bifurcación. Las bifurcaciones pueden ser según el punto del programa a
donde se bifurca hacia adelante o hacia atrás.
o Bifurcación incondicional: se realiza siempre que el flujo del
programa pase por la instrucción sin necesidad del cumplimiento
de ninguna condición
Acción 1
Acción 2
Acción 3
¿?
Acción Acción F2
F1
Ejemplo 2
Escriba un algoritmo que pregunte por dos números y muestre como
resultado la suma de estos. Use Pseudocódigo y diagrama de flujos.
ab cd 2a
Valor 2
4cd
c a
c
2a 5b 4
ab cd 2a
Valor 2
4cd
c a
c
2a 5b 4
27. Leer dos valores reales p y q del teclado y escribir la media aritmética
28. Leer un valor real x del teclado. Calcular y escribir r=x2 – 2x3
29. Leer los coeficientes de un polinomio de grado tres de la forma
P(x)=x3+ax2+bx+c, leer a continuación un cierto valor para la variable
independiente x y calcular y escribir y = P(x)
30. Convertir a radianes un valor de ángulo medido en grados
sexagesimales
31. Calcular y escribir la temperatura T que corresponde a n moles de gas
ideal sometido a una presión P cuando ocupa un volumen V. Se supone
que los valores de P y V se proporcionan por teclado. R es una constante
universal de los gases
PV nRT
32. Permitir ingresar una hora determinada con el formato H M S (H= Hora,
M= Minuto, S= Segundo). Se pide imprimir la hora que será después de
un segundo
33. Ingresar un número de cuatro dígitos y que obtenga e imprima el
número que resulta de invertir sus cifras.
34. Realizar un programa que calcule la longitud y el área total de tres
circunferencias sabiendo que la 1ra de ellas tiene un radio R que será
introducido por teclado, la 2da tiene un radio 3R y la 3ra tiene un radio
de 3R.
Pseudocódigo
Si condición Entonces
Instrucción
Fin si
Condición
Instrucción
14.2.2. Selectivas Dobles:
La estructura anterior es muy limitada y normalmente se necesitara una
estructura que permita elegir dos opciones o alternativas posibles en
función del cumplimiento o no de una determinada condición. A
continuación se muestra su sintaxis
Si condición entonces
Condición
Instrucción 2
Sino
Instrucción 1
Fin si Instrucción 1 Instrucción 2
Diagrama de Flujo
Condición
…
Pseudocódigo
Case 1:
Case 2:
.
.
.
Case n:
Fin según
14.2.4. Ejemplos
Ejemplo 1:
Resolución de una ecuación de primer grado
Si la ecuación es ax + b =0, a y b son los datos y las posibles soluciones
son
Si a <> 0 entonces x= -b/a
a=0 b<>0 entonces “solución imposible”
a= 0 b =0 entonces “ solución indeterminada”
Algoritmo pseudocódigo
Inicio
Leer a, b
Si a <> 0 entonces
x - b/a
Sino
Si b<>0 entonces
Escribir “solución imposible”
Sino
Escribir “solución indeterminada”
Fin- si
Fin – si
Fin
Ejemplo 2
Resolución de la ecuación de segundo grado teniendo en cuenta los
tres posibles valores de discriminación
La ecuación de segundo grado es:
ax^2 + bx +c = 0
El discriminante D vale
D = b^2 - 4ac
Y las raíces son
−𝑏 ±√𝑏2 −4𝑎𝑐 −𝑏±√𝐷
X1, x2 = =
2𝑎 2𝑎
Si el discriminante es menor que cero, las raíces son imaginarias
Algoritmo Pseudocódigo
Inicio
Leer a, b, c
D b^2 -4*a*c
Según sea D hacer
D <0: escribir “raíces complejas”
D = 0: x - b/2*a
D >0: rcraizcua(D)
X1 (-b + rc)/2*a
X2 (-b -rc)/2*a
Escribir x1, x2
Fin _ según
fin
Ejemplo 3
Se desea diseñar un algoritmo que escriba los nombres de los días de
la semana en función del valor de una variable DIA introducida por
teclado
Inicio
Leer Día
Según_ sea DIA hacer
1: escribir “Lunes”
2: escribir “Martes”
3: escribir “Miercoles”
4: escribir “Jueves”
5: escribir “Viernes”
6: escribir “Sabado”
7: escribir “Domingo”
Otros: escribir “Error”
Fin_ según
Fin
14.2.5. Ejercicios
1. Para calcular el nivel de ruido de una calle de una ciudad se
realizan 4 medidas, una cada 8 horas, en un punto concreto. Si la
media de las medidas del nivel de ruido supera la máxima
admitida (por ejemplo máxima =4), significa que el ruido es nocivo
para la salud. Realizar un programa que calcule el nivel medio del
ruido de una calle y determine si el nivel de ruido es nocivo o es
admisible.
2. Un banco antes de conceder un préstamo a 20 años comprueba los
ingresos del solicitante. Si los ingresos son superiores a 1200.00
nuevos soles mensuales el crédito se concede. Si los ingresos son
inferiores a 1200.00 nuevos soles pero superiores a 1000.00
nuevos soles y está soltero el crédito se concede. También se le
concede si tiene ingresos entre 1200.00 y 1000.00 nuevos soles y
está casado sin hijos. Realizar un programa que pida los ingresos
mensuales y el estado civil del solicitante y si tiene hijos y diga si
se le da el crédito o no
3. Escriba un programa que lea el importe de la compra y la cantidad
recibida y calcule el cambio a devolver, teniendo en cuenta que el
número de monedas que devuelva debe ser mínimo. Suponer que
el sistema monetario utilizado consta de monedas de 100, 50, 25,
5, 1 unidad.
4. Escriba un programa que lea tres números enteros y asigne el
valor apropiado TRUE o FALSE a las siguientes variables booleanas
y muestre el tipo de triangulo que es (si es un triángulo)
Triangulo: True si los números pueden representar longitudes de
los lados de un triángulo (La suma de dos cualesquiera de los lados
debe ser mayor que el otro).
Equilátero: True si es un triángulo equilátero (todos los lados son
iguales).
Isósceles: True si es un triángulo isósceles (al menos dos lados son
iguales).
Escaleno: True si es un triángulo escaleno (no tiene dos lados
iguales).
5. Escribe un programa que lea los coeficientes A, B, C de la ecuación
cuadrática AX2 + BX + C = 0 y muestre por pantalla la solución
obtenida. Considerar los casos en que no exista solución, que
existan infinitas soluciones, que exista una sola solución (Ecuación
lineal) o que existan dos soluciones.
6. Se quiere realizar un programa que determine si un alumno es
apto o no. Un alumno se considera apto si su nota final es de 5 o
más y no apto en caso contrario. La nota final se calcula como la
media ponderada del trabajo realizado en casa, la media obtenida
en los tests y la puntuación del examen. Nota final = 0.2* Trabajo +
0.5*Test + 0.3*Examen. Además debe tener la calificación de
acuerdo a la tabla:
Nota >=9.5 Matrícula de Honor
8.5 <= Nota < 9.5 Sobresaliente
6.5 <= Nota < 8.5 Notable
5 <= Nota < 6.5 Aprobado
Nota < 5 Suspenso
7. Escribir un algoritmo tal que dada la temperatura máxima del mes
y la temperatura medida hoy, actualice el valor de la máxima si la
temperatura leída hoy es mayor que dicho máximo.
8. Implementar un algoritmo que dados tres números a, b y c, los
devuelva ordenados de menor a mayor
9. El cuadrante de un punto (x, y) se puede determinar a partir del
signo de x e y. Escribir un algoritmo tal que dadas las coordenadas
x e y, indique a que cuadrante pertenece el punto
x F(x)
x є [-1,3) 10-x
x>50 1
resto 0
instrucción Porcentaje
Hasta 5to secundaria 5%
técnico 10%
profesional 20%
ab cd 2a
Valor 2
4cd
c a
c
2a 5b 4
45. Leer cuatro valores reales y calcular la siguiente expresión
suponga que se ingresa valor cero a c)
ab cd 2a
Valor 4cd
c2 a2
c
2a 5b 4
46. Escribir un algoritmo cree un menú de conversión para:
¿Pulgadas a centímetros (1 pulgada = 2.54 cm)?
¿Pies a metros (1 pie = 0.3048 metros = 12 pulgadas)?
¿Millas por hora a kilómetros por hora (60 millas\hora = 80
Km\hora)?
¿Grados a radianes (360 grados = 2pi radianes, pi=3.141592)?
¿?
65. Escribir un algoritmo que permita introducir por teclado tres letras
y responda si existen al menos dos letras iguales.
RETENCION IAN
ENERO, FEBRERO, MARZO 12
RETENCION IAN - Retenciones de Enero a
ABRIL Marzo
9
RETENCION IAN - Retenciones de Enero a
MAYO, JUNIO, JULIO Abril
8
RETENCION IAN - Retenciones de Enero a
AGOSTO Julio
5
RETENCION IAN - Retenciones de Enero a
SETIEMBRE, OCTUBRE, Agosto
NOVIEMBRE 4
RETENCION IAN - Retenciones de Enero a
DICIEMBRE Noviembre
78. Elaborar un algoritmo de 4ta y 5ta categoría. Según los cálculos de
las siguiente tabla.
Renta Total
Renta Bruta Cuarta Categoría (lo que recibió como
S/.58,400
independiente)
S/.11,680
-Deducción de 20% de renta bruta de cuarta (20% de
S/.58,400)
Renta
S Neta de Cuarta Categoría S/.46,720
+ Ingresos
u de Quinta Categoría (lo que recibió como
S/.49,000
dependiente)
p
Total
o ingresos de Cuarta y Quinta Categoría S/.95,720
n S/.25,200
-Deducción 7 UIT
g (7 x S/.3,600)
Renta
a neta a la que se le aplica el impuesto S/.70,520
mos que no se percibió más ingresos que lo mencionados y no se
efectuó donaciones ni reportó pérdidas en años anteriores. En
consecuencia, se le debe aplicar una tasa de impuesto a la renta
de 15% (para rentas gravadas de hasta 27 UIT, S/.97,200).
De este modo, el impuesto a pagar es S/.10,578 (15% de
S/.70,520), pero como se ya efectuó pagos adelantados en todo el
2014 por S/.9,840, solo debería regularizar S/.738 ante la Sunat
por este tributo de 2014. Tal como se muestra en la tabla
m0 0.693t
Ln( )
m t (1/ 2)
Dónde:
Mo=masa inicial
M=masa final
T (1/2)=tiempo de vida media (Ejm. C-14 es 5568 años)
Nota: tenga en cuenta todas las condiciones de ingreso de datos.
80. Los gases reales se explican satisfactoriamente por muchas
ecuaciones una de ellas es la ecuación de Van Der Walls.
n2 a
( P 2 )(v nb) nRT
v
Dónde:
P=presión
N=número de moles
V=volumen
T=Temperatura
A y B = son los parámetros moleculares del gas real que
caracterizan la estructura y propiedades de sus moléculas por
Ejemplo O2 tienen valores para a = 1.36 Atm(1/mol)2 y b= 0.0319
(1/mol)
Elabore un algoritmo para hallar la temperatura de un gas real.
Nota: tenga en cuenta todas las condiciones de ingreso de datos.
Vb2
h fc K c
2 gc
Siendo Kc un factor de proporcionalidad, que recibe el nombre de
coeficiente de perdida por contracción y Vb2 la velocidad media
de aguas abajo en la sección estrecha. Se encuentra experimental
que para el flujo laminar, es Kc < 0.1 y la perdida por contracción
hfc es despreciable. Para el flujo turbulento el valor de Kc está
dado por la ecuación empírica.
Sb
Kc 0.4(1 )
Sa
h D 0.7 L
1 0 2 20
hL L D
h D L
1 60 20 60
hL L D
Dónde:
L: es la longitud de entrada.
H: es el valor promedio para un tubo de longitud infinita L
HL: es el valor para un tubo muy largo
Nota: tenga en cuenta todas las condiciones de ingreso de datos
1 2 1
V (R 3 * S 2 )
n
Donde.
V= velocidad en m/s
R=radio hidráulico en m
S=pendiente logitudinal
N=coeficiente de rugosidad
Nota: tenga en cuenta todas las condiciones de ingreso de datos
A<>0; X=-b/a
A=0; b<>0 entonces solución imposible.
A=0; b=0 entonces solución indeterminada.
89. Dado 3 números determinar si la suma de cualquier par de ellos es
igual al otro número (tercer número). Si se cumple esta condición
escribir iguales y en caso contrario escribir distintos.
Falsa
Condició
n
Verdadera
Acciones
Falso
Variable índice >
valor final
Verdadero
Acciones
Cuerpo del bucle
Acciones
Repetir
Accion1
Acción 2
. Acciones
.
.
Hasta _que Condición
Falsa
Verdadera
Condició
n
14.3.4. Ejemplos
Ejemplo 1
Hallar el factorial de un número N utilizando la estructura desde
Inicio
Leer N
Fact 1
Desde i 1 hasta N hacer
Factfact*i
Fin_desde
Escribir “el factorial de”, N, “es”, fact
Fin
Ejemplo 2
Inicio
Leer M, N
Resto M
Cociente 0
Repetir
Resto resto – N
Cociente cociente + 1
Hasta_ que resto < N
Escribir “dividiendo”, M, “divisor”, N, “Cociente”, cociente, Resto
Fin
Ejemplo 9
Determine el máximo común divisor de dos números
Inicio
Leer a, b
Para i 1 hasta a hacer
R1resto(a/i)
Para j1 hasta b hacer
R2resto (b/j)
Si (i=j) y (r1=0) y (r2=0) entonces
Mcd=i
Fin si
Fin para j
Fin para i
Escribir mcd
Fin
Ejemplo 10
Encuentre e imprima los números primos entre 1 y 100
Inicio
n2
s0
escribir 1
Para i2 hasta 100 hacer
Mientras n ≤ i hacer
Si resto (i/n) =0 entonces
ss + n
Fin si
nn+1
Fin mientras
ps+1
qi+1
Si p=q entonces
Escribir i
Fin si
n2
s0
fin para
Fin
Ejemplo 11
Desarrolle un algoritmo para aproximar la siguiente función por
serie de Taylor
Primera forma
Inicio
(x = exponente de la función y n = N° de términos de la serie de
Taylor)
Leer x, n
I 1
s0
Mientras i ≤ n hacer
Potenciax ^ i
Factorial1
mi
J1
Repetir
Factorialfactorial*j
jj+1
Hasta que j > m
ss + potencia/factorial
ii+1
Fin mientras
e 1 +s
Escribir e
Fin
Segunda forma
Inicio
(x = exponente de la función y n = N° de términos de la serie de
Taylor)
Leer x, n
I 0
s0
Mientras i ≤ n hacer
Potenciax ^ i
Si i = 0 entonces
Factorial1
Sino
Factorial1
mi
J1
Repetir
Factorialfactorial*j
jj+1
Hasta que j > m
Fin si
ss + potencia/factorial
ii+1
Fin mientras
Escribir s
Fin
Ejemplo 12
Realizar un algoritmo que escriba los n primeros números de la
serie de Fibonacci, se sabe que la serie se origina a partir de dos
números que sirve patrón o base y el tercer número es la suma de
los dos anteriores
1, 2, 3, 5, 8, 13, 21,…….
Primera forma
Inicio
Leer n
Fibo11
Fibo22
i3
Escribir fibo1, fibo2
Repetir
Fibofibo1 + fibo2
Escribir fibo
Fibo1fibo2
Fibo2fibo
ii+1
Hasta que i >n
Fin
Inicio
Leer n
Fibo11
Fibo22
i2
Escribir fibo1, fibo2
Repetir
ii+1
Fibofibo1 + fibo2
Fibo1fibo2
Fibo2fibo
Escribir fibo
Hasta que i >n
Fin
Inicio
Leer n, a, b
Fibo1a
Fibo2b
i2
Escribir fibo1, fibo2
Repetir
ii+1
Fibofibo1 + fibo2
Fibo1fibo2
Fibo2fibo
Escribir fibo
Hasta que i >n
Fin
Ejemplo 13
Mostrar los N primeros términos de la siguiente serie, donde N
debe estar entre 5 y 30
5, 7, 10, 14, 19,…..
Inicio
Leer n
Si (n≥5) y (n≤30) entonces
i1
s5
Escribir s
Mientras i<n hacer
ii +1
ss + i
Escribir s
Fin mientras
Sino
Escribir número fuera de rango
Fin si
Fin
Ejemplo 14
Calcular el valor máximo de una serie de 10 números, leidos por
teclado
Inicio
Leer num
i1
maxnum
Repetir
ii +1
Leer num
Si max < num entonces
maxnum
fin si
hasta que I > 10
Escribir max
Fin
Ejemplo 14
Determinar simultáneamente los valores máximo y mínimo de una
lista de 100 números leídos por teclado
Inicio
Leer num
maxnum
minnum
desde i 2 hasta 100 hacer
Leer num
Si max ≤ num entonces
maxnum
sino
Si num ≤ min entonces
minnum
fin si
fin si
fin desde
Escribir max, min
Fin
Ejemplo 15
Calcular el Máximo Común Divisor de dos números A y B de
acuerdo con el algoritmo de Euclides.
Inicio
Leer A, B
Si A < B entonces
auxB
BA
Aaux
Mientras B ≠ 0 hacer
Rresto(A/B)
AB
BR
Fin mientras
Escribir A
Sino
Mientras B ≠ 0 hacer
Rresto(A/B)
AB
BR
Fin mientras
Escribir A
Fin
Ejercicio 21
Inicio
Leer a,b,e
Fa sen(a)+cos(1+a^2)-1
Fb sen(b)+cos(1+b^2)-1
Si fa*fb <0 entonces
Repetir
c(b+a)/2
Fc sen(c)+cos(1+c^2)-1
Si fb*fc ≤ 0 entonces
ac
Fa sen(a)+cos(1+a^2)-1
sino
bc
Fb sen(b)+cos(1+b^2)-1
fin si
Escribir a, b, c, fa, fb, fc
ii+1
Hasta que (b-c ≤ e)
Fin
Ejercicio 26
Inicio
Leer n, x
S0
Si (x > -1) y (x ≤ 1) entonces
Para i1 hasta n hacer
potx^i
Si resto (i/2)=0 entonces
S s-pot/i
Sino
S s + pot/i
Fin si
Fin para
Fin si
Escribir s
Fin
14.3.5. Ejercicios
1. Hallar el factorial de un número N utilizando la estructura para,
mientras y repetir
2. Imprimir los 30 primeras potencias de 4, es decir 4 elevado a 1, 4
elevador a 2 con las tres estructuras.
3. Calcular la suma de los n primeros enteros con las tres estructuras
4. Diseñar un algoritmo para imprimir la suma de los números
impares menores o iguales que n. Utilice las tres estructuras.
5. Calcular el número máximo de una serie de 100 números. utilice
as tres estructuras.
6. Realizar un algoritmo que escriba los N primeros números de la
serie de Fibonacci 1,2,3,5,8,13,21…, Utilice las tres estructuras
7. Determinar la media de una lista indefinida de números positivos
leídos por teclado y estos son terminados con un número negativo
o cero. Utilice las tres estructuras
8. Calcular los factoriales de n leído por teclado. Utilice las tres
estructuras.
9. Calcular el factorial de los n números leídos por teclado. Utilice las
tres estructuras.
10. Se quiere hallar el producto de varios números positivos
introducidos por teclado, de manera que el proceso termina
cuando se introduce un número negativo. Utilice las tres
estructuras
11. Escriba un algoritmo que encuentre el primer divisor entero de un
número, que previamente se ha introducido por teclado. Utilice
las tres estructuras.
12. Escriba un algoritmo que calcule el máximo de los números
positivos introducidos por teclado. Sabiendo que se introducen
números desde teclado hasta teclear uno negativo. El negativo no
cuenta.
13. Escriba un algoritmo que determine cuáles son los múltiplos de 5
comprendidos entre 1 y N.
14. Escriba un algoritmo que encuentre al alumno de primer grado
con mejor nota media. Se sabe que este año entraron 150
alumnos y que en primero todos tienen 5 asignaturas. Dar el
nombre y la nota media.
15. Escriba un algoritmo que calcule la suma de los divisores de cada
número introducido por teclado. Se termina cuando el número es
negativo o 0.
16. Dado un capital c, a un interés i, durante m años, escriba un
algoritmo que calcule en cuanto se habrá convertido ese capital en
m año, sabiendo que es acumulativo.
17. Dada la siguiente formula:
n
((a b) i
3) n
x i 1
n 1
(2 a * (i 1))
i 2
x x 2 x3 xn , Para N > 0
e =1+x+ + +...+
2! 3! n!
Para un N dado
𝑥𝑛
Para que N sea tal que < e (por ejemplo e = 10 - 4)
𝑛!
Escribir un algoritmos que calcule la exponencial de a
según dicha fórmula, utilizando n=10 y luego n=20.
f ( x) sen( x) cos(1 x 2 ) 1
xi1 xi
erp x100
xi1
29. Del algoritmo del ejercicio 20 remplazar el paso 1 por la siguiente
formular
f (b)(a b)
c b
f (a) f (b)
A este algoritmo se le llama falsa posición
30. Desarrolle el algoritmo del trapecio que consiste en la siguiente
formula.
n1
f ( xa ) 2 f ( xi ) f ( xb )
I (b a) i 1
2n
Donde los valores de a y b es el intervalo de la integral definida y n
es el número de segmentos. Utilizar la siguiente función, para
verificar los resultados.
F(X) = 0.2 + 25 X - 200 X2 + 675 X3 - 900 X4 + 400 X5
n1 n2
f ( xa ) 4 f ( xi ) 2 f ( x j ) f ( xb )
i 1,3,5 j 2,4,6
I (b a)
3n
Donde los valores de a y b es el intervalo de la integral definida y n
es el número de segmentos pares.
n1
f ( xa ) 3 f ( xi ) f ( xb )
I (b a) i 1
8n
Donde los valores de a y b es el intervalo de la integral definida y n
es el número de segmentos impares.
elementos de la sucesión dada por ak= ak-1+ ak-2, para k > 2, con
a1=1 y a2=1. El limite n ha de leerse del teclado y se supone mayor
que dos.
n
1
39. Se desea calcular la suma s m , siendo m y n dos números
k 1 k
2 calculando los K
Q2
0 1 3 B
gAc
B 3 y
Y
y2
Ac 3 y
2
f ( xi )( xi1 xi )
xi1 xi
f ( xi1 ) f ( xi )
(3R h)
V h3
3
Donde V= volumen (m3), h = profundidad del agua en el tanque
(m) y R =radio del tanque (m)
Si R = 3m ¿a qué profundidad debe llenarse el tanque de modo
que contenga 30 m3? Haga tres iteraciones con el método de
newton Raphson a fin de obtener la respuesta. Determine el error
después de cada iteración.
Este método de Newton Raphson consiste de la siguiente formula.
f ( xi )
xi1 xi
f '( xi )
x x 2 x3
e 1 x ...
2! 3!
1 1
e x
ex x x3 2
1 x ...
2! 3!
Compárelo con el valor verdadero de 6.737947x 10-3. Utilice 20
términos para evaluar cada serie y calcule los errores relativos por
cada método
f ´´( xi ) f ´´´( xi )
f ( xi1 ) f ( xi ) f ´( xi )( xi 1 xi ) ( xi 1 xi ) 2 ( xi 1 xi )3 ...
2! 3!
Tomando como tamaño de paso h
h xi 1 xi
f ´´( xi ) f ´´´( xi )
f ( xi 1 ) f ( xi ) hf ´( xi ) h 2 h3 ...
2! 3!
n n n
n xy x y
r i 1 i 1 i 1
n n n n
(n x ( x) )(n y ( y ) 2 )
2 2 2
i 1 i 1 i 1 i 1
89. de
15. Subprogramas
La resolución de problemas complejos se facilita considerablemente si se dividen
en problemas más pequeños llamados subproblemas (Subprogramas). Las
herramientas usadas en la programación son las funciones y procedimientos
(subrutinas)
15.1. Procedimientos(Subprograma):
Llamados también subrutina, un procedimiento es un subprograma que
ejecuta un proceso específico, cuando se invoca el procedimiento, los pasos
que lo definen se ejecutan y a continuación se devuelve el control al programa
que le llamo
Declaración de un procedimiento
Procedimiento nombre (parámetros formales, parámetros variables)
Inicio
Acciones
Fin
Donde
Nombre: Es el nombre del procedimiento a invocar
Parámetros formales: Tiene el mismo significado que en las funciones
Parámetros variables: En algunos lenguajes de programación está permitido
este tipo de declaración, para designar que ellos obtendrán resultados del
procedimiento en lugar de los valores actuales asociados a ellos.
Invocación a una función
(Llamar_a) nombre (lista de parámetros actuales)
Por ejemplo
Procedimiento división (dividendo, divisor, cociente, resto)
Inicio
Cociente dividendo/ divisor
Resto dividendo - cociente*divisor
Retorno
Fin
Algoritmo aritmética
Inicio
Leer M, N
Llamar_a división (M, N, P, Q)
Escribir p, Q
Fin
15.2. Funciones
Matemáticamente una función es una operación que tiene uno o más valores
llamados argumentos y produce un valor denominado resultado o valor de la
función para los argumentos dados (Aguilar, 1988)
Declaración de una función
Fin
Dónde:
Par1, par2,… Lista de parámetros o argumentos
Nombre_ función Nombre asociado con la función, que será un nombre de
identificación valido
Acciones instrucciones que constituyen la definición de la función y que debe
contener una acción solo de asignación que asigne un valor al nombre de la
función, es decir, nombre_ función expresión
Por ejemplo la función
𝒙
𝒇(𝒙) =
𝟏 + 𝒙𝟐
Función fun(x)
Inicio
Funx/(1 + x^2)
Fin
Invocación de una función
Una función puede ser llamada solo mediante referencia de la forma
siguiente:
Variable de asignación nombre _ función (par1, par2,…)
Por ejemplo
F_x fun(x)
Procedimiento vs función
i. Un procedimiento es llamado desde el algoritmo o programa principal
mediante su nombre y una lista de parámetros actuales o bien con la
instrucción llamar. Al llamar el procedimiento se detiene
momentáneamente el programa que se estuviera realizando y el
control pasa al procedimiento llamado. Después que las acciones del
procedimiento se ejecutan, se regresa a la acción inmediatamente
siguiente a la que se llamó.
ii. Las funciones devuelven un valor, las subrutinas pueden devolver 0,1 o
más valores y en forma de la lista de parámetros
iii. El procedimiento se declara igual que la función, pero su nombre no
está asociado a ninguno de los resultados que obtiene
Inicio
Leer n
Fact factorial(n)
Escribir “el factorial de n es”, fact
Fin
Ejercicios
1. Diseñar un algoritmo que calcule el máximo común divisor de dos
números mediante el algoritmo de Euclides con el siguiente
procedimiento
a. Dividir el número mayor (A) por el menor (B). Si el resto de la división
es cero el número B es el máximo común divisor
b. Si la división no es exacta, se divide el número menor (B) por el resto de
la división anterior
c. Se siguen los pasos anteriores hasta obtener un resto cero. El último
divisor es el mcd buscado
2. Para calcular el máximo común divisor (mcd) de dos números, se recurre a
una función específica definida con un programa con un subprograma. Se
desea calcular la salida del programa principal con dos números A y B,
cuyos valores son 15 y 10, es decir, el mcd (A, B) y comprobar el método
de paso de parámetros por valor
3. Realizar un algoritmo que permita ordenar tres números mediante un
procedimiento de intercambios de dos variables
4. Diseñar una función que calcule la media de tres números leídos del
teclado y poner un ejemplo de su aplicación
5. Realizar un procedimiento que realice la conversión de coordenadas
polares (r, ) a coordenadas cartesianas (x, y)
X = rcos()
Y = rseno()
6. Función que calcule xy, con x є R, y suponiendo que y es un valor entero y
>0
7. Función que calcule xy, con x є R, y suponiendo que y es un valor entero
que puede ser positivo, negativo o cero
Una estructura de datos es una colección de datos que pueden ser caracterizados
por su organización y las operaciones que se definen en ella. La estructuras d
datos son muy importantes en los sistemas de computadoras. Los tipos de datos
más frecuentes utilizados en los diferentes lenguajes de programación
son(Aguilar, 1988)
Entero
Real
Estándar Carácter
Lógico
Datos simples
i A(i)
1 14.0
2 12.0
3 8.0
Subíndice o índice 4 7.0
5 8.40
6 8.20
7 8.15
8 7.25
Donde
Nombre arreglo: nombre valido del arreglo
Liminf . . . limsup :límite inferior y superior del rango del arreglo
Tipo de dato: es el tipo d datos de los elementos del arreglo, puede ser
entero, carácter, real,…
Asignación a un arreglo
A (1) 10 se asigna el valor 10 a la posición 1 del vector A
A (5) 20 se asigna el valor 20 a la posición 5 del vector A
Lectura y escritura de datos
La lectura y escritura de un arreglo u operaciones de entrada y salida
normalmente se realizan con estructuras repetitivas.
Final = arreglo [1.. 20] de real
// Lectura
Desde i = 1 hasta 20 hacer
Leer final (i)
Fin desde
// Escritura
Desde i = 1 hasta 20 hacer
Escribir final (i)
Fin desde
16.1.1. Ejemplos
Ejemplo 1
Escribir un algoritmo que permita calcular el cuadrado de los 100
primeros números enteros y a continuación escribir una tabla que
contenga dichos 100 números cuadrados.
Algoritmo
Inicio
Desde N 1 hasta 100 hacer
C N*N
Escribir N, C
Fin desde
{Escritura de la tabla}
Desde N 1 hasta 100 hacer
A(N) N*N
Escribir A(N)
Fin desde
Fin
Ejemplo 2
14. Crear un vector de 70 elementos donde cada elemento del vector sea
igual a su posición
15. Un avión dispone de 180 plazas de las cuales 60 son de no fumador y
numeradas del 1 al 60 y 120 plazas numeradas de 61 al 120. Diseñar un
algoritmo que permita hacer la reserva de plazas de avión y se detenga
media antes de la salida, cuyo momento se abrirá la lista de espera.
16. Dada en una lista no ordenada de números y un número leído por
teclado:
a. Diseñar una solución que busque en la lista el número leído. Si lo
encuentra, debe informar de su posición en la lista, sino debe devolver
la posición cero.
b. Modificar el anterior para que devuelva el número de veces que
aparece.
c. Diseñar una solución que busque el número mayor y devuelva
cuantas veces aparece.
d. Diseñar una solución que devuelva Verdadero si el número leído,
aparece más veces que el mayor.
e. Diseñar una solución que calcule la media de todos los números.
f. Diseñar una solución que calcule la media entre el mayor y el menor.
g. Diseñar una solución que cree una lista inversa a la dada. Es decir,
que genere una nueva lista tal que su primer elemento sea el último de
la lista inicial, su segundo elemento sea el penúltimo de la lista inicial,
etc., etc., etc.
17. Dadas 3 listas de 10 números de teléfono, donde la primera lista
contiene el número de pasos consumidos en llamadas locales asociado a
cada teléfono, la segunda contiene información sobre llamadas
nacionales y la tercera contiene información sobre llamadas
internacionales, calcular los subtotales del coste de cada una de las
categorías considerando los costes siguientes: llamada local, 5pesetas
por paso, llamada nacional 10 pesetas por paso y llamada
internacional50 pesetas por paso. Construir un programa que lee los
datos de entrada desde el teclado e imprima los resultados finales por
pantalla.
18. Escriba un algoritmo que busque el valor máximo de los elementos de
un vector de N números reales, donde N es una constante a la que le
daremos un valor cualquiera. El algoritmo debe escribir por pantalla el
valor máximo.
19. Dado un vector v de dimensión n cuyas componentes son todas
positivas o cero se desea reordenar sus componentes de mayor a menor
por ejemplo, si
V = [2 3 8 5 4]
El resultado ha de ser un nuevo vector
w= [8 5 4 3 2]
20. Repetir el ejercicio anterior pero sin usar un vector auxiliar como w. el
resultado que se pretende conseguir es que el propio vector v tenga sus
componentes ordenadas( emplear todos los métodos de ordenación)
21. Igual que el anterior pero suponiendo que v contiene cantidades
positivas y negativas, por ejemplo
V=[-7 3 8 -9 5 4 0 -1]
Ha de dar como resultado el propio vector reordenado así:
V= [8 5 4 3 2 -1 -7 -9]
22. Un fabricante de automóviles dispone de un modelo de vehículo en
cinco colores. Para saber la aceptación de cada color realiza una
encuesta usando un programa en su ordenador. El programa ha de
ayudarle a contar los votos de los encuestados. El encuestador tecleara
el número del color elegido (de uno a cinco) cada vez que pregunte a
una persona nueva. Cuando no quiera preguntar a nadie más
introducirá el valor -1. En ese momento el programa le indicara el
número de votos que cada color ha obtenido. Posteriormente se han de
ordenar los colores según los resultados de la votación.
23. Se desea calcular la mediana de los valores contenidos en un vector T
є Rn. si n es impar la mediana es el valor central del vector ordenado, en
caso contrario la mediana es la media de los dos elementos que están
más al centro. En ambos casos el paso previo para calcular la mediana es
ordenar el vector. Un ejemplo con n par es T = [10 23 11 15]. La
ordenación produce T° = [23 15 11 10] y la mediana es (15 + 11)/2 = 13.
Un ejemplo con n impar es T = [11.8 12 28 11.5 14], en este caso la
ordenación produce un nuevo vector T° = [11.5 11.8 12 14 28], de
donde se obtiene la mediana que es el valor central 12.
Puede comprobar con lo ejemplos anteriores que la mediana no
coincide con la media aritmética.
24. La cantidad de un cierto isotopo radioactivo presente en una mezcla
varia con el tiempo pues el isotopo se descompone emitiendo radiación.
Se denota mediante y(k) la cantidad en gramos de isotopo en el instante
de tiempo t = k medido en años unos científicos han descubierto que se
cumple que y(k) = 0.99*y(k-1). Si un barril de desechos radioactivos
contiene 1000 gramos de isotopo ¿Cuál será la cantidad de isotopo
presente al cabo de 500 años?
25. La velocidad de un paracaidista en su descenso al suelo una vez que
ha abierto el paracaídas se denota mediante v(k) (m/s), siendo k el
tiempo que lleva cayendo medido en segundos, k > 1. Se ha especulado
con la idea de que dicha velocidad sigue la ley: v(k) = v(k-1) + 10 -
0.4*(v(k-1))2. Sabiendo que una caída típica puede durar 5 minutos y
que el paracaídas se suele abrir con una velocidad de 100 Km/h ¿con
que velocidad llega al suelo?
26. Se sabe que la cantidad de bacterias de cierta especie en un cultivo es
x(k) = 1.1*x(k-1), siendo k el tiempo medido en horas, k >1. Si al cabo de
la primera hora x(1) se contabilizaron 100 unidades ¿Cuántas habrá al
cabo de un día?
27. Suponiendo que A es un conjunto [1, 3, 5, 7], B es [2, 4, 6] y C es [1, 2,
3] evalué las siguientes expresiones.
A+(B*C), A+(B+C), A+B+C, A+(B+C), C+(A+C), C-(A-B), (C-A¿)-B
28. La empresa ACME S.A. ha asignado un código a cada uno de sus
obreros. El código está formado por 5 caracteres y tienen la siguiente
estructura:
XX-Y-ZZ
Donde
XX= especialidad
Y=categoría
ZZ=numero (0 - 90)
Especialidad
CO=Construcción
CA=Carpintería
IS=Instalaciones
LI=Limpieza
Categorías:
F=oficial
O=operario
P=Peón
Algoritmo:
Método de Selección
Algoritmo
Función Posmayor (j,tabla)
Inicio
Índice_max 1
Desde índice 2 hasta j hacer
Si tabla [índice]> tabla [índice_max] entonces
Indice_maxindice
Fin si
Posmayorindice_max
Fin desde i
Fin
Inicio {programa principal}
Desde j límite hasta 2 hacer
Mayor Posmayor(j, tabla)
Aux Tabla [mayor]
Tabla [mayor] Tabla[j]
Tabla[j] Aux
Fin desde j
Fin
Método se Inserción
El método se basa en considerar una parte de la lista ya ordenando y situar
cada uno de los elementos restantes insertándolo en el lugar que le
corresponde por su valor
Algoritmo
Procedimiento desplazar (tabla, aux, k, nuevopos)
Inicio
Encontrado false
Mientras (k > 1) y (no encontrado) hacer
Si tabla [k-1] >aux entonces
Tabla [k] tabla [k - 1]
K k – 1
Sino
Encontrado true
Fin si
Nuevapos k
Fin mientras
Fin
Inicio {programa principal}
Desde K 2 hasta N hacer
Aux tabla[k]
Desplazar (tabla, k, aux, nuevapos)
Tabla [nuevapos] aux
Fin desde k
Fin
Método de Shell
Este método es una mejora del método de inserción directa que se utiliza
cuando el número de elementos a ordenar es grande se suele denominar
también ordenación por disminución de incrementos.
Pasos
16.2.2. Búsqueda
OJO Trabajo
Inicio
Leer A, B (A, B vectores de M y N elementos9
I1
J1
K1
Mientras i <= M y j <= N hacer
(seleccionar siguiente elemento de A o B y añadirlo en C)
Kk+1
Si A[i] < B[j] entonces
C[k] A[i]
i= i + 1
sino
C[k] B[j]
J j + 1
Fin si
Fin mientras
Si i <= M entonces
Desde r i hasta M hacer
K k +1
C[k] A[r]
Fin desde
sino
Desde r j hasta N hacer
K k +1
C[k] B[r]
Fin desde
Fin si
Escribir C (vector clasificado)
Fin
16.2.4. Ejercicios
1. Ordenar los siguientes datos por el método de la burbuja, desarrolle
la prueba de escritorio
34 5 45 6 1 6 23 90 4 10
30 50 4 3 10 2 20 9 14 15
12 0 54 30 100 21 2 9 1 5
12 0 54 30 100 21 2 8 11 15
11 10 54 30 101 20 2 9 1 5
34 11 15 6 1 16 23 90 4 10
30 5 14 13 10 12 20 9 14 15
Fila 1
Fila 2
Fila 3
Fila 4
Fila 5
Columna 1 Columna 5
Columna 2 Columna 4
Columna 3
Ejemplo 1
Ejemplo 2
ai
max max v(ai , j ) (1 ) min v(ai , j )
j j Para el optimista
min
ai min v(ai , j ) (1 ) max v(ai ,
j j
j )
Para el pesimista
a. Ecdscds