Professional Documents
Culture Documents
Apuntes de Programación
Docente
Kene A. Reyna Rojas
01/01/2019
INDICE GENERAL
7. Operadores ............................................................................................................... 5
8. Expresiones ............................................................................................................... 7
2. Algoritmo
Definición: 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)
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.
Si
normalmente dos y en función del
resultado de la misma determina cuál
No de los distintos caminos alternativos del
programa se debe seguir normalmente
tiene dos salidas respuesta sí o no, pero
puede tener tres o más según los casos
Indicador de Dirección o Línea de Flujo:
indica el sentido de ejecución de las
operaciones
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 se representan
con int, long, short
Por ejemplo
Int X
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 se representan con float, doublé
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.
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
𝐌
i. +𝑷
𝐍
𝑵
ii. 𝑴 + (𝑷−𝑸)
(𝑴+𝑵)
iii. (𝑷−𝑸)
𝒏
(𝑴+ )
𝒑
iv. 𝒓
(𝒒− )
𝒔
(𝒔𝒆𝒏𝒐(𝒙)+𝒄𝒐𝒔𝒆𝒏𝒐(𝒙))
v. 𝒕𝒂𝒏(𝒙)
−𝒃±√𝒃𝟐 −𝟒𝒂𝒄
vi. 𝟐𝒂
Programa
Entrada (algoritmo de Salida
resolución)
Entrada: Son los datos que se ingresan por medio de una variable.
Programa: Son todas las instrucciones que representa un algoritmo
(Diagrama de Flujo de Datos o Pseudocódigo) de un problema abstracto, que
es codificado en un lenguaje de programación (Powerbuilder,Matlab) o
interprete (Perl, Java, Python) que este respeta una sintaxis.
Salida: Son los datos resultantes del programa
$th=23;
Instrucciones de lectura
Esta instrucción lee datos de un dispositivo de entrada ejemplo leer edad,
tiempo. Ejemplos en PERL.
Ejemplo 1
Print " ingrese el nombre del empleado: ";
$nombre=<STDIN>;
Ejemplo 2
chomp($th);
Instrucciones de escritura
Esta instrucción escribe en un dispositivo de salida ejemplo escribir A, B, C
Ejemplos
En PERL :
print"empleado sueldo bruto descuento sueldo neto \n";
print"==============================================\n";
print " $sb $desc $sn $nombre";
En matlab :
disp('la suma de dos números es :');
disp(s);
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 F1 Acción F2
Ejemplo en Perl
if($num <=1){
return $factor=1;}
else {
return $factor= $num*&factorial($num-1);
}
}
Ejemplo 3
A continuación, se presenta un Pseudocódigo en PERL.
Ejemplo 4
A continuación, se presenta un Pseudocódigo en PERL.
V0 k3[ ES ]
ab cd 2a
Valor 2
4cd
c a
c
2a 5b 4
ab cd 2a
Valor 2
4cd
c a
c
2a 5b 4
26. Leer un valor real x del teclado. Calcular y escribir r=x2 – 2x3
27. Elaborar un algoritmo para convertir a radianes un valor de ángulo
medido en grados sexagesimales
28. 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
29. Crea un programa para que almacene una secuencia de DNA que hay a
continuación en una variable, y la escriba en la pantalla.
Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC
30. Guarda las dos secuencias de DNA siguientes en dos variables escalares y
escríbelas en la pantalla. A continuación, crea una tercera variable que
contenga las dos primeras concatenadas. Escribe también el resultado.
Primera secuencia de DNA:
ACGGGAGGACGGGAAAATTACTACGGCATTAGC
Segunda secuencia de DNA: ATAGTGCCGTGAGAGTGATGTAGTA
31. Ingresar un numero de cuatro dígitos y que obtenga e imprima el número
que resulta de invertir sus cifras
32. 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 2R y la 3ra tiene un radio
de 3R.
A DO lc
Dónde:
є = Coeficiente de extinción molar
c = Concentración
l = Paso de luz de la cubeta. Las proteínas y los ácidos nucleicos absorben
la luz en el intervalo ultravioleta, a longitudes de onda comprendidas
entre los 210 y los 300 nm
Elaborar un algoritmo para calcular la absorbancia
34. Un vendedor recibe un sueldo base más un 10% extra por comisión de
sus ventas, el vendedor desea saber cuánto dinero obtendrá por
concepto de comisiones por las tres ventas que realiza en el mes y el total
que recibirá en el mes tomando en cuenta su sueldo base y comisiones.
35. Elaborar un programa en el cual se ingrese la distancia que existe entre
dos vehículos y sus respectivas velocidades ¿hallar el tiempo de alcance y
el tiempo de encuentro?
36. Elabore un programa en la que me devuelva la altura y la velocidad final
de un cuerpo si se deja caer, ingresando únicamente el tiempo.
37. Convierta un ángulo sexagesimal g, m, s a grados, minutos y segundos
centesimales.
38. Elaborar un programa en el que se ingrese la masa atómica y la cantidad
de neutrones para que nos devuelva el número atómico, la cantidad de
neutrones y protones.
39. Elaborar un programa en el que ingrese el tiempo en el que se demora en
llegar el sonido de una detonación a cierto lugar. ¿calcular la distancia
donde se realizó la detonación?
40. Elaborar un algoritmo que solicite el número de respuestas correctas,
incorrectas y en blanco, correspondientes a postulantes y muestre su
puntaje final considerando, que por cada respuesta correcta tendrá 4
puntos, respuestas incorrectas tendrá -1 y respuestas en blanco tendrá 0.
41. Elaborar un algoritmo que permita ingresar el número de partidos
ganados, perdidos y empatados, por algún equipo en el torneo apertura,
se debe demostrar su puntaje total, teniendo en cuenta que por cada
partido ganador obtendrá 3 puntos, empatado 1 punto y perdido 0
puntos.
42. Elabore el algoritmo que permita ingresar dos valores numéricos enteros
cualquiera, luego de evaluar se debe imprimir sus valores
intercambiados.
43. Cifrado de datos: dado un número de cuatro dígitos se reemplazará cada
dígito por (dígito +7) módulo 10. A continuación se intercambiará el
primer dígito por el tercero y el segundo por el cuarto, y ese será el
número cifrado.
44. Fibonacci fue un matemático italiano que se planteó el siguiente
problema: Dada una pareja de conejos jóvenes, y suponiendo que los
conejos tardan un año en madurar a partir del año siguiente cada pareja
madura de conejos da a luz a una pareja de conejos jóvenes ¿Cuántas
parejas de conejos habrá una vez transcurridos n años?
La respuesta es:
1 1 5 n 1 5 n
Fn (( ) ( ) )
5 2 2
Dónde:
( L1 L2 L3 )
s
2
46. Pepe quiere viajar a Londres la próxima semana y para saber cómo está
el tiempo allá estuvo mirando el programa del tiempo que transmiten en
un canal de televisión inglés.
Cuando el anunciador del tiempo dio las temperaturas de la próxima
semana Pepe se llevó una gran sorpresa pues no las entrego en grados
Celsius, sino en grados Fahrenheit ¿Puede proponer una solución
algorítmica para que Pepe pueda determinar qué tan frio esta Londres en
este tiempo?
Ayuda
Para calcular la temperatura en grados Celsius podemos utilizar la
fórmula: 5
T (C ) (T ( F ) 32)
9
T f 2( A T ) 4(G C )
50. Permita ingresar cuatro valores reales, los primeros tres son longitud,
ancho y altura (en centímetros) de un prisma rectangular. El cuarto valor
real es el peso (en gramos) del prisma. Escriba un programa para calcular
e imprimir la densidad de este objeto.
51. Elaborar un algoritmo para calcular el pronóstico por el método de
suavización exponencial simple, según la formula.
Fi 1 Ai (1 ) Fi
Donde
Fi+1: Pronostico en el periodo i+1
Fi: Pronostico realizado en el periodo i
Ai: las ventas o demanda real en el periodo i
α: Factor de ponderación o constante de ajuste exponencial
Error et At Ft
Pseudocódigo
Si condición Entonces
Instrucción
Fin si
Condici
ón
14.2.2. Selectivas Dobles:
La estructura anterior es muy limitada y normalmente se necesitará 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
Instrucción 2
Sino
Instrucción 1 Instrucción 2
Instrucción 1
Fin si
14.2.3. Problemas
ab cd 2a
Valor 4cd
c2 a2
c
2a 5b 4
[ E ][ S ] k2 k3
km
[ ES ] k1
30. Elaborar un algoritmo para calcular la velocidad inicial según la ecuación Briggs
y Haldane
k3 ( E0 [ S ])
V0
[ S ] km
31. Elaborar un programa para calcular la velocidad inicial, Cuando no se conoce
la concentración de la enzima E0 por lo que es conveniente sustituir el producto
k3E0 por Vmax (Velocidad Máxima).
Vmax [ S ]
V0
[ S ] km
32. Dd
Condición
1
Condición
Instrucción 3
2
Instrucción 4
pseudocódigo
Si condición 1 entonces
Si condición 2 entonces
Instrucción 2
Sino
Instrucción 1
Fin si
Sino
Instrucción 3
Si condición 3 entonces
Instrucción 4
Fin si
Fin si
Diagrama de Flujo
Condición
Pseudocódigo
Case 1:
Case 2:
.
.
.
Case n:
Fin según
14.2.5. 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”
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𝑎
Ejemplo 5
El ejercicio 2 de los propuestos en Código en perl
Ejemplo 7
El ejercicio 2 de los propuestos en Código de Matlab
sueldo = input ('ingrese el sueldo del cliente');
nh=input ('ingrese el número de hijos: ');
est=input ('ingrese el estado civil: '); % 0 = casado y 1 =soltero
if (sueldo > 1200)
disp('se le concede el prestamo');
else if ((sueldo <=1200) && (sueldo > 1000) && (nh==0) &&(est==1))
disp('se le concede el prestamo');
else if ((sueldo <=1200) &&(sueldo > 1000)&& (nh==0) &&(est==0))
disp('se le concede el prestamo');
else
disp(' no se le concede el prestamo');
end
end
end
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%
0 si x0
x0
si 0 x 16.67
TINS ( x) 16.67 0
33.34 x si 16.67 x 33.34
33.34 16.67
x 33.34
0 si
41. Escribir un programa que lea una nota de un examen por teclado y
devuelva la calificación que tiene. La calificación podrá ser:
Suspenso (0-4.99), Aprobado (5-6.99), Notable (7-8.99),
Sobresaliente (9-9.99) o Matrícula de Honor (10).
Realice este ejercicio utilizando la sentencia de case.
42. Elabore un algoritmo que permita averiguar si una persona debe
sacar su CUIL, sabiendo su año de nacimiento. El código de
identificación laboral es el número que se otorga a todo trabajador
al inicio de su actividad laboral en relación de dependencia
(mayores de 18 años).
43. Elabore un algoritmo que permita ingresar el monto de venta
alcanzado por un vendedor durante un mes, luego de calcular la
bonificación que le corresponde
RETENCION IAN
ENERO, FEBRERO, MARZO 12
RETENCION IAN - Retenciones de Enero a
ABRIL Marzo
9
RETENCION IAN - Retenciones de Enero a Abril
MAYO, JUNIO, JULIO 8
RETENCION IAN - Retenciones de Enero a Julio
AGOSTO 5
RETENCION IAN - Retenciones de Enero a
SETIEMBRE, OCTUBRE, Agosto
NOVIEMBRE 4
RETENCION IAN - Retenciones de Enero a
DICIEMBRE Noviembre
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 Neta de Cuarta Categoría S/.46,720
+ Ingresos de Quinta Categoría (lo que recibió como
S/.49,000
dependiente)
Total ingresos de Cuarta y Quinta Categoría S/.95,720
S/.25,200
-Deducción 7 UIT
(7 x S/.3,600)
Renta neta a la que se le aplica el impuesto S/.70,520
Falsa
Condici
Verdadera
Acciones
Acciones
Falso
Variable índice >
valor final
Verdadero
Acciones
Cuerpo del bucle
pseudocódigo
Repetir
Accion1
Acción 2
.
.
.
Hasta _que Condición
Acciones
Falsa
Verdadera
Condició
14.3.4. Ejemplos
Ejemplo 1
Hallar el factorial de un numero 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
Ejemplo 8
Dados dos números enteros, realizar el algoritmo que calcule el
cociente y el resto en código perl
print"ingrese el primer número: ";
$a=<STDIN>;
chop($a);
print"ingrese el segundo número: ";
$b=<STDIN>;
chop($b);
$resto=$a;
$cociente=0;
do
{
$resto=$resto-$b;
$cociente=$cociente+1;
}
until($resto<$b);
print"dividendo : $a, divisor: $b, cociente: $cociente, resto:$resto";
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, 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
x x 2 x3 xn
e =1+x+ + +...+ , Para N > 0
2! 3! n!
Para un N dado
𝑥𝑛
Para que N sea tal que < e (por ejemplo e = 10 - 4)
𝑛!
f ( x) sen( x) cos(1 x 2 ) 1
xi1 xi
erp x100
xi1
21. Desarrolle el algoritmo del trapecio: para calcular por medio del
método del trapecio la integral de la siguiente función.
F(X) = 0.2 + 25 X - 200 X2 + 675 X3 - 900 X4 + 400 X5
El proceso consiste de la siguiente manera
Leer el intervalo a, b y el número de sub intervalos
Dividir el intervalo en n sub intervalo
Evaluar la función en los extremos de los sub intervalos
Aplicar la formular
Salida integral aproximada
h( f ( x0 ) 2 f ( x1 ) 2 f ( x2 ) ... 2 f ( xn 1 ) f ( xn ))
It
2
ba
h
n
a = f (xo)
b = f (xn)
22. 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
23. Elabore el algoritmo de integración numérica de Simpson 1/3 que
consiste de la siguiente formula
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
3h n 1 n 3
b
a
f ( x)dx I
8
f ( x0 ) 3
i 1,2,4,5,...
f ( xi ) 2
i 3,6,9,...
f ( xi ) f ( xn )
ba
h
n
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 s
el número de segmentos es 3.
26. Desarrollar un algoritmo para Aproximar la siguiente función y =
seno(x)
e a ( x a ) e a ( x a ) 2 e a ( x a )3 e a ( x a) n
e x ea ...
1! 2! 3! n!
x x2 x3 (1) n x n
L n(a x) L n(a) ...
a 2(a) 2 3(a)3 n( a ) n
1 x x3 x5 x 2 n1
y L n( ) 2( x ... )
1 x 3 5 2n 1
34. Dado n>0 hallar la suma
n
1
s
k 1 k
n
1
35. Se desea calcular la suma s siendo los valores ak los
k 1 ak
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
36. Se desea calcular la suma s m
, siendo m y n dos números
k 1 k
log a ( x)
log b ( x)
log a (b)
2 calculando los K
3 calculando el valor de la iteración i+1
At 1 At 2 At 3 ... At n
Ft
n
Donde
Ft: Pronostico para el siguiente periodo
N: número de periodos para promediar
At-1: Ocurrencia real en el periodo pasado
At-2, At-3 y At-n: Ocurrencias reales hace dos periodos, hace tres
periodos y así sucesivamente hasta hace n periodos
77. Elaborar un algoritmo para calcular el pronóstico por el método de
media móvil ponderada, según la siguiente formula
Ft w1 At 1 w2 At 2 ... wn At n
Donde
W1: Ponderación dada en la ocurrencia real para el periodo t-1
W2: Ponderación dada en la ocurrencia real para el periodo t-2
Wn: Ponderación dada en la ocurrencia real para el periodo t-n
n : Número total de periodos en el pronostico
w 1
i 1
i
Dónde:
N: La cantidad de periodos considerados
79. Elaborar un algoritmo para medir el error en los pronósticos, según
el método de la raíz de la media del error cuadrático medio (RMSE)
At Ft
2
n
RMSE t 1 n
1 n At Ft
MAPE
n t 1 At
Px (nx ) p x q n x
Misceláneos
1. Realice un programa que pregunte aleatoriamente la tabla
de multiplicar. El programa debe indicar si la respuesta ha
sido correcta o no (en caso que la respuesta sea incorrecta
el programa debe indicar cuál es la correcta). Una vez
preguntado por una multiplicación el programa debe
preguntar si desea realizar otra. En caso afirmativo
preguntará aleatoriamente otra multiplicación. En caso
negativo el programa finalizará.
2. Modificar el ejercicio anterior de modo que el programa
pregunta aleatoriamente un total de n multiplicaciones
siendo n un número dado por teclado. En cada
multiplicación el programa debe indicar si se ha acertado o
no. Al final del programa, éste deberá mostrar un resumen
indicando el número de respuestas correctas y erróneas, así
como el porcentaje de aciertos y de fallos.
3. Realizar un programa que simule un juego de adivinar un
número. El programa pedirá al usuario dos números que
representan el rango de valores entre los que se encuentra
el número a adivinar, así como el número de intentos para
adivinar el número. A continuación el programa generará un
número aleatorio entre esos dos números y el usuario
deberá adivinarlo en el número máximo de intentos antes
indicado. Cada vez que el jugador introduce un número el
programa le dice si es mayor o menor y le indica cuantos
intentos le quedan.
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
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 numero 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
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
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
16.1.1. Ejemplos
Ejemplo 1
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
16.1.2. Ejercicios
A T
T A
C G
G C
1 n
( ai a ) 2
n i 1
c.- La desviación típica:
d.- El coeficiente de variación: a
c 1 CMfactor
SCfactor
c 1 CMfactor
CMerror
Factor x
2
Ci2
SCfactor
ki n (Total de datos)
nc ScError
CMerror
Ci2 nc
Error SCerror x 2
ki
Total Scfactor + Scerror n-1
n
X e
x
i 1
2
i
x
2
X P 2
i
i 1
38. Elabore un algoritmo para hallar la norma mediante la suma de los
valores absolutos de los elementos
n
X xi
i 1
X max xi
1i n
16.1.3. De
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
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
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
Asignación en una arreglo de dos dimensiones
A (1,2) 10 se asigna el valor 10 en la posición i = 1 y j = 2 de arreglo
bidimensional A
A (5,6) 20 se asigna el valor 20 a la posición i = 5 y j = 6 del arreglo
bidimensional 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; 1..10] de real
// Lectura
Desde i 1 hasta 20 hacer
Desde j 1 hasta 10 hacer
Leer final [i, j]
Fin desde j
Fin desde i
// Escritura
Desde i 1 hasta 20 hacer
Desde j 1 hasta 10 hacer
Escribir final [i, j]
Fin desde j
Fin desde i
Ejemplo 1
Ejemplo 2
Ejercicios
ai
max max v(ai , j ) (1 ) min v(ai , j )
j j Para el optimista
ai j j
min min v(ai , j ) (1 ) max v(ai , j )
Para el pesimista
Grados
Fuente Suma de Cuadrados de Cuadrados medios F
Libertad
c 1 CMfactor
SCfactor
c 1 CMfactor
CMerror
Factor x
2
Ci2
SCfactor
ki n (Total de datos)
nc CMerror
ScError
nc
Ci2
Error SCerror x 2
ki
m n
Ae
i 1 j 1
aij2
aij
2
A2
i 1 j 1
n
A max aij
1i n
j 1
Donde
t
µmax=es el mayor eigenvalor A A
a. Ecdscds
Las pilas son estructuras lineales que utilizan arreglos unidimencionales o listas
enlazadas, en inglés se le conoce como LIFO, que quiere decir último en entrar
primero en salir del arreglo o lista enlazada.
La pila se puede representar se las siguientes formas tal como se muestra en la
figura
Las operaciones de Los ingresos, recuperaciones o borrados en la pila se
realiza por la cima o tope de la pila es decir por la parte superior
Las operaciones sobre las pilas son:
Creación o limpieza: Inicializa pila al estado vacío.
Pila vacía: Determina si la pila está vacía.
Pila llena: Determina si la pila está llena.
Apilamiento o ingreso (METER): Inserta un nuevo elemento a la pila (en
la cima).
Desapilamiento o borrado (SACAR): Elimina el elemento en la cima de
la pila.
Apilamiento
Inicio
Leer X
Si tope ≥ N entonces
Escribir “Pila llena”
Sino
topetope+1
pila(tope) X
fin_si
Fin
Desapilamiento
Inicio
Si tope=0 entonces
Escribir “Pila vacía”
Sino
Elementopila(tope)
topetope-1
fin_si
Fin
b. Colas
Las colas es la otra estructura lineal que también utiliza los arreglos o listas
enlazadas, en ingles se le conoce como FIFO, es decir primero en entrar primero
en salir del arreglo o lista enlazada
Donde el ingreso es por la cima y la salida o borrado es por el otro extremo o
al inicio de la cola, tal como se muestra en la figura.
Escriba un programa que lea un conjunto de enteros y determine, para cada uno de
ellos, si es primo o no. Pruebe su programa con los cuatro enteros 7, 17, 35, 96
b
( p )3
b
*d k
c n
Elabore el algoritmo estructurado de recorrido inorden de un árbol binario,
empleando una pila.
Elabore el algoritmo que elimine un nodo que tiene 2 hijos de un árbol binario
Un sistema operativo particular almacena los trabajos en unas colas de espera para
ejecutarlo de acuerdo con el siguiente esquema. Los usuarios que tengan prioridades
relativas basadas en su número de identificación. 1era prioridad: Ejecutivos ID: 0-99,
2da: Jefes ID: 100-199, 3era: Empleados ID: 200-299; operarios ID 300-399. Dentro de
cada grupo de prioridad los trabajos se ejecutan en el orden en que llegan al sistema.
Si hay un trabajo de prioridad más alta, ejecutarlo antes que otro trabajo de prioridad
más baja. Trabajo de prioridad más baja se ejecutara solo cuando no haya trabajos de
prioridad más alta en espera.
Escribir el algoritmo añadir trabajo que reciba el número de identificación del usuario
y un código del trabajo a ejecutar y añada el código a la cola adecuada para el nivel de
prioridad de dicho usuario.
Escribir el algoritmo obtenersiguientetrabajo, que devuelve el código del trabajo que
este en la cola de mayor prioridad para ejecución (debe quitar el código de la cola).
Suponga que lista es una lista enlazada almacenada en memoria y que contiene sol
valores numéricos. Escribir un algoritmo que determine:
Una familia consta de cuatro hijos de 9, 8, 7 y 6 años de edad. Los padres los regalan
una computadora y un juego donde el factor más importante es el de la edad de los
jugadores las normas del juego son:
─ Es necesario que la suma de las edades de los que quieran jugar sea mayor que
la suma de las edades de los que no quieran.
─ En el caso de que la suma de las edades de los que quieran jugar sea igual a la
suma de las edades de los que no quieran hacerlo se hará lo que desee el de
mayor edad.
Los datos de entrada son la decisión de cada hijo de querer jugar o no . la salida será
la determinación de si jugaran o no (se debe entender que el juego necesita cuatro
jugadores). Elabore un algoritmo
Elabore el algoritmo que calcule la suma de los números pares e impares de los
números primos que estén comprendidos entre 1 y 5000
Elabore un algoritmo que imprima todos los bytes cuya suma de bits sean igual a 7
Elabore un algoritmo que calcule en forma recursiva los factores primos de un numero
N.
Elaborar elalgoritmo que permita ingresar una cantidad de nuevo soles como un
entero positivo, se debe calcular e imprimir el mejor desglose de moneda, es decir el
mínimo número de unidades monetarias a entregar. Considere las siguientes unidades
monetarias: 1000, 500, 100, 50, 10, 5, 2, 1 (Solución con arreglos)
Elabore el algoritmo que determine el valor mínimo de los valores máximos de cada
fila de la matriz numérica A(i,j)
Dado el vector L(x), con n elementos, hallar la cantidad de números pares e impares,
así como la suma de pares e impares. Adicionalmente debe determinar el mayor y el
menor elemento del vector.
FUNCIONES:
A.
Funciones: print
B.
Expresiones regulares: \n
Funciones: print
C.
Funciones: print
D.
Comandos básicos: variables escalares
E.
SOLUCION:
EJERCICIO: 1A
#!/usr/bin/perl -w
# Example 4-1 Storing DNA in a variable, and printing it out
EJERCICIO 1B
#!/usr/bin/perl -w
# Example 4-2 Concatenating DNA
# Store two DNA fragments into two variables called $DNA1 and $DNA2
$DNA1 = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';
$DNA2 = 'ATAGTGCCGTGAGAGTGATGTAGTA';
# Concatenate the DNA fragments into a third variable and print them
# Using "string interpolation"
$DNA3 = "$DNA1$DNA2";
print "Here is the concatenation of the first two fragments (version 1):\n\n";
print "$DNA3\n\n";
print "Here is the concatenation of the first two fragments (version 2):\n\n";
print "$DNA3\n\n";
#!/usr/bin/perl -w
# Example 4-3 Transcribing DNA into RNA
# The DNA
$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';
print "$DNA\n\n";
$RNA =~ s/T/U/g;
print "$RNA\n";
EJERCICIO 1D:
#!/usr/bin/perl -w
# Example 4-4 Calculating the reverse complement of a strand of DNA
# The DNA
$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';
print "$DNA\n\n";
#
# Next substitute all bases by their complements,
# A->T, T->A, G->C, C->G
#
$revcom =~ s/A/T/g;
$revcom =~ s/T/A/g;
$revcom =~ s/G/C/g;
$revcom =~ s/C/G/g;
print "$revcom\n";
#
# Oh-oh, that didn't work right!
# Our reverse complement should have all the bases in it, since the
# original DNA had all the bases-but ours only has A and G!
#
# Do you see why?
#
# The problem is that the first two substitute commands above change
# all the A's to T's (so there are no A's) and then all the
# T's to A's (so all the original A's and T's are all now A's).
# Same thing happens to the G's and C's all turning into G's.
#
print "\nThat was a bad algorithm, and the reverse complement was wrong!\n";
print "Try again ... \n\n";
# Make a new copy of the DNA (see why we saved the original?)
$revcom = reverse $DNA;
print "$revcom\n";
exit;
Aquí se muestra el nombre de algunas algas con alto contenido de lípidos con que se puede
pretender hacer aceite, y sus probables rendimientos:
Microalga...............................Oilcontent (% drywt)
Botryococcusbraunii.............................25 - 75
Chlorellasp.........................................28 - 32
Crypthecodiniumcohnii.........................20
Cylindrothecasp..................................16 - 37
Dunaliellaprimolecta............................23
Isochrysissp........................................25 - 33
Monallanthus salina..............................>20
Nannochlorissp....................................20 - 35
Nannochloropsissp................................31 - 68
Neochlorisoleoabundans........................35 - 54
Nitzschiasp...........................................45 - 47
Phaeodactylumtricornatum.....................20 - 30
Schizochytriumsp.................................. 50 - 77
Tetraselmissueica..................................15 – 35