You are on page 1of 151

2019

Apuntes de Programación

Docente
Kene A. Reyna Rojas
01/01/2019
INDICE GENERAL

1. Sistema de procesamiento de información ............................................................ 0

2. Concepto de algoritmo ............................................................................................. 0

2.1. Características de los algoritmos ...................................................................... 0

2.2. Partes de un algoritmo...................................................................................... 1

3. Resolución de problemas con computadoras y las herramientas de programación


1

3.1. Análisis del problema: ....................................................................................... 1

3.2. Diseño o desarrollo del algoritmo .................................................................... 1

3.3. Resolución del algoritmo en la computadora .................................................. 2

4. Representación de un algoritmo ............................................................................. 2

4.1. Diagrama de flujo .............................................................................................. 2

4.2. Pseudocódigo .................................................................................................... 3

5. Datos y Tipos de datos ............................................................................................. 4

5.1. Datos numéricos................................................................................................ 4

5.1.1. Enteros: ...................................................................................................... 4

5.1.2. Reales: ........................................................................................................ 4

5.2. Datos Lógicos: .................................................................................................... 4

5.3. Datos carácter: .................................................................................................. 4

6. Constantes y Variables: ............................................................................................ 5

7. Operadores ............................................................................................................... 5

7.1. Relacionales o condicionales: ........................................................................... 5

7.2. Aritméticos : ........................................................Error! Bookmark not defined.

7.3. Alfanuméricos: .................................................................................................. 6

7.4. Lógicos o Booleanos: ......................................................................................... 6


7.5. Paréntesis: ......................................................................................................... 7

8. Expresiones ............................................................................................................... 7

9. Regla de Prioridad .................................................................................................... 7

10. Operación de Asignación ...................................................................................... 8

11. Ejercicios ................................................................................................................ 9

12. Estructura General de un Programa ................................................................... 10

12.1. Partes de un programa ................................................................................ 10

13. Instrucciones y tipos de instrucciones ............................................................... 11

13.1. Instrucción ................................................................................................... 11

13.2. Tipos de instrucción ..................................................................................... 11

14. Programación Estructurada ................................................................................ 14

14.1. Estructuras Secuencial ................................................................................. 14

14.2. Estructuras Selectivas .................................................................................. 21

14.2.1. Selectivas simples: ................................................................................... 26

14.2.2. Selectivas Dobles: .................................................................................... 27

14.2.3. Selectivas múltiples: ................................................................................ 28

14.2.4. Ejemplos ................................................................................................... 33

14.2.5. Ejercicios ................................................................................................... 38

14.3. Estructuras Repetitivas ................................................................................ 47

14.3.1. Estructura repetitiva mientras (While o Do while): ............................... 59

14.3.2. Estructura repetitiva para (For): ............................................................. 60

14.3.3. Estructura repetitiva repetir:................................................................... 62

14.3.4. Ejemplos ................................................................................................... 63

14.3.5. Ejercicios ................................................................................................... 74

15. Subprogramas ..................................................................................................... 89

15.1. Procedimientos (Subprograma): ................................................................. 89


15.2. Funciones ..................................................................................................... 90

15.3. Algoritmos Recursivos ................................................................................. 92

16. Estructuras de Datos ........................................................................................... 95

16.1. Arreglos unidimensionales .......................................................................... 95

16.1.1. Ordenación ............................................................................................... 98

16.1.2. Búsqueda ................................................................................................ 116

16.2. Arreglos bidimensionales .......................................................................... 121

17. Estructuras lineal .............................................................................................. 131

17.1. Pilas ............................................................................................................ 131

17.2. Colas ........................................................................................................... 133

18. Estructura no lineal ........................................................................................... 135

18.1. Arboles ....................................................................................................... 135

18.2. Grafos ......................................................................................................... 135


1. Sistema de procesamiento de información

Los temimos procesador de datos y sistema de procesamiento (tratamiento) de la


información se utilizan con frecuencia, el uso diario de datos e información son
esencialmente sinónimos sin embargo existe una diferencia, datos se refiere a la
representación de algún hecho, concepto o entidad real (los datos pueden tomar
diferentes formas, por ejemplo palabras escritas o habladas, números y dibujos),
información implica datos procesados y organizados, un sistema en general se
define como conjunto de componentes conectados e interactivos, que tienen un
propósito y una unidad total. Sistema de procesamiento de información es un
sistema que transforma datos brutos en información organizado, significativo y útil
(Aguilar, 1988)

Entrada=Datos Procesador Salida=Información

Figura 1: representación de un sistema de procesamiento de información

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)

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. Fases de la resolución de problemas


Esta se puede dividir en tres fases importantes (con computadoras y las
herramientas de programación)

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

Entrada / Salida: cualquier tipo de


introducción de datos en la memoria
desde los periféricos o registro de la
información procesada en un periférico
Proceso: Cualquier tipo de información
que pueda originar cambio de valor,
formato, posición de la información
almacenada en memoria, operaciones
aritméticas, de transferencia, etc.
Decisión: indican operaciones lógicas o
de comparación entre datos,

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.

5.3. Datos carácter:


Es el conjunto finito y ordenado de caracteres que la computadora reconoce.
Un dato tipo carácter contiene un solo carácter (Char) (Aguilar, 1988)
Una cadena de caracteres (String) es una sucesión de caracteres que se
encuentran delimitados por una comilla (apostrofo) o dobles comillas según el
tipo de lenguaje de programación. La longitud de una cadena de caracteres es
el número de ellos comprendidos entre los separadores o delimitadores
Por ejemplo, podemos representar los ácidos nucleicos por T(Timina),
A(Adenina), G(Guanina) y C(Citosina).
6. Constantes y Variables:
El programa 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)

Fuente: Libro de metodología de la programación de Rodríguez Almeida.


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

Nota: Los operadores mod y div son de menor prioridad

7.3. Alfanuméricos:
Se utiliza para unir datos alfanuméricos (Rodriguez Almeida, 1991)

Fuente: Libro de metodología de la programación de Rodríguez Almeida

Concatenación, unir expresiones alfanuméricas como si fueran eslabones de


una cadena.
7.4. Lógicos o Booleanos:
Combinan sus operandos de acuerdo con las reglas del algebra de Boole con el
fin de producir un nuevo valor que se convierta en el valor de la expresión

Fuente: Libro de metodología de la programación de Rodríguez Almeida


OR u O: Es un operador binario, afecta a dos operadores. La expresión forma es
cierta cuando al menos alguno de los operandos es cierto. Es el operador lógico
de disyunción.
AND o Y: es un operador binario. La expresión formada es cierta cuando ambos
operandos son ciertos al mismo tiempo. Es el operador lógico de Conjunción.
NOT o no: es un operador unario. Afecta a la expresión cambiando su estado
lógico, si era verdad lo transforma en falso o viceversa.
7.5. Paréntesis:
Los paréntesis se utilizan para anidar expresiones,

Fuente: Libro de metodología de la programación de Rodríguez Almeida

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

Nombre de la variable  Expresión

Expresión Expresión, expresión, variable o constante


Ejemplo
A  10
Significa que la variable A se le ha asignado el valor entero de 10.
11. Ejercicios
 Encontrar el valor de la variable valor después de la ejecución de las
siguientes operaciones
a. Valor  4.0*5
b. X  3.0
Y  2.0
Valor  X^Y – Y
c. Valor  5
X3
Valor  valor* X
 Deducir el resultado que se puede producir con las siguientes instrucciones
Variables x, y = enteros
X1
Y5
Escribir x, y
 Deducir el valor de las expresiones siguientes
X  A +B +C
XA+B*C
XA+B/C
X  A + B mod C
X (A + B) / C
X  A + (B / C)
X A + (B * C)
Siendo A =5, B =25, C= 10
 Escribir las siguientes expresiones en forma de expresiones algorítmicas

𝐌
i. +𝑷
𝐍
𝑵
ii. 𝑴 + (𝑷−𝑸)
(𝑴+𝑵)
iii. (𝑷−𝑸)
𝒏
(𝑴+ )
𝒑
iv. 𝒓
(𝒒− )
𝒔
(𝒔𝒆𝒏𝒐(𝒙)+𝒄𝒐𝒔𝒆𝒏𝒐(𝒙))
v. 𝒕𝒂𝒏(𝒙)

−𝒃±√𝒃𝟐 −𝟒𝒂𝒄
vi. 𝟐𝒂

 Como se intercambian los valores de las A, B y Aux


Aux A
AB
B Aux

12. Programa informático


Es un conjunto de instrucciones u órdenes dadas a la máquina, que producirán la
ejecución de una determinada tarea. En esencia un programa es un medio para
conseguir un fin.
El proceso de la programación es, por consiguiente, un proceso de solución de
problemas, y el desarrollo de un programa requiere las siguientes fases
 Definición y análisis del problema
 Diseño de algoritmos
o Diagrama de flujo
o pseudocódigo
 Codificación del programa
 Depuración y verificación del programa
 Documentación
 Mantenimiento
12.1. Estructura General de un Programa

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

12.2. Partes de un programa en perl

print "ingrese un numero: ";


$num=<STDIN>;
print $num;

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 perl

$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

print"ingrese la cantidad de horas trabajadas: ";


$th=<STDIN>;
chop($th);

o también puede usarse

chomp($th);

Otro ejemplo de lectura en matlab:

a=input ('ingrese el valor de a:');


b=input ('ingrese el valor de b:');

 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

o Bifurcación Condicional: depende del cumplimiento de una


determinada condición. Si se cumple la condición, el flujo sigue
ejecutando la acción F2 si no cumple se ejecuta la acción F1

¿?

Acción F1 Acción F2
Ejemplo en Perl

if($num <=1){
return $factor=1;}
else {
return $factor= $num*&factorial($num-1);
}
}

14. Programación Estructurada


Se refiere a un conjunto de técnicas que aumentan considerablemente la
productividad del programa reduciendo un elevado grado el tiempo para escribir,
verificar, depurar y mantener los programas. La programación estructurada
incorpora
Diseño descendente: es el proceso mediante el cual un problema se descompone
en una serie de niveles o pasos sucesivos de refinamiento
Recursos abstractos: la programación estructura se auxilia de los recursos
abstractos en lugar de los recursos concretos de que se dispone
Estructuras básicas: son tres tipos de control: secuencial, selectiva y repetitivas.

14.1. Estructuras Secuencial


La estructura secuencial es aquella en la que una acción (instrucción) sigue a
otra en secuencia. Las tareas se suceden de tal modo que la salida de una es
la entrada de la siguiente y así sucesivamente hasta el fin del proceso.
(Wilder, 2010)
En Pseudocódigo una Estructura Secuencial se representa de la siguiente
forma:
Ejemplo 1
Tengo un teléfono y necesito llamar a alguien, pero no sé cómo hacerlo.
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.

Ejemplo 3
A continuación, se presenta un Pseudocódigo en PERL.

print" ingrese el nombre del empleado: ";


$nombre=<STDIN>;
#chop($nombre);
print" ingrese la cantidad de horas trabajadas: ";
$th=<STDIN>;
chop($th);
print" ingrese el costo por hora trabajo: " ;
$cph=<STDIN>;
chop($cph);
$sb= $th*$cph;
$desc=$sb*0.13;
$sn=$sb-$desc;
print" sueldo bruto descuento sueldo neto empleado \n";
print"==============================================\n";
print " $sb $desc $sn $nombre";

Ejemplo 4
A continuación, se presenta un Pseudocódigo en PERL.

th=input ('ingrese el total de horas trabajadas:');


cph=input ('ingrese el costo por hora trabajada: ');
sb=th*cph;
desc = sb*0.13;
sn= sb - desc;
disp('sueldo bruto');disp(sb);
disp('descuento');disp(desc);
disp('sueldo neto');disp(sn);

Ejercicios Elaborar los algoritmos de los siguientes ejercicios

1. Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15%


respectivamente. Desplegar el resultado.
2. Escribir un programa que calcule el salario de un trabajador de la manera
siguiente. El trabajador cobra un precio fijo por hora y se le descuenta el
10% en concepto de impuesto sobre la renta. El programa debe pedir el
nombre del trabajador, las horas trabajadas y el precio que cobra por
hora. Como salida debe imprimir el sueldo bruto, el descuento de renta y
el salario a pagar.
3. Programa que pida el precio de un artículo y calcule su valor, aplicándole
un 18% de IGV.
4. Elabore un algoritmo para calcular la velocidad de desdoblamiento de ES,
gobernado por la constante de velocidad K3, puede concluirse que la
velocidad en las condiciones de velocidad es:

V0  k3[ ES ]

5. Escriba un programa que calcule el área de un triángulo rectángulo, dada


la altura y la base.
6. Elabore un programa que realice la conversión de cm. a pulgadas.
Donde 1 cm = 0.39737 pulgadas. Por lo tanto, el usuario proporcionará el
dato de N cm. y el programa dirá a cuantas pulgadas es equivalente.
7. Elabore un programa que realice la conversión de pulgadas a cm.
Donde 1 cm. = 0.39737 pulgadas. Por lo tanto, el usuario proporcionará
el dato de N pulgadas y el programa dirá a cuantos centímetros equivale.
8. Elabore un programa que realice la conversión de metros a pies
Donde 1 m = 3.2808 pies, Por lo tanto, el usuario proporcionara el dato
de N m y el programa dirá a cuantos pies equivale.
9. Elabore un programa que realice la conversión de pies a metros
Donde 1 m = 3.2808 pies. Por lo tanto, el usuario proporcionará el dato
de N pies y el programa dirá a cuantos metros equivale.
10. Elabore un programa que realice la conversión de kilogramos a libras
Donde 1 Kg. = 2.2046 libras. Por lo tanto, el usuario proporcionara el dato
de N Kg. y el programa dirá a cuantas libras equivale.
11. Elabore un programa que realice la conversión de libras a kilogramos
Donde 1 Kg. = 2.2046 libras. Por lo tanto, el usuario proporcionará el dato
de N libras y el programa dirá a cuantos kilogramos equivale.
12. Introducir 5 notas por teclado, obtener la suma de las notas, el promedio
de las mismas y el doble de las notas.
13. Un alumno desea saber cuál será su calificación final en la materia de
Algoritmos. Dicha calificación se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% de la calificación del examen final.
15% de la calificación de un trabajo final.
14. Calcular el número de pulsaciones que una persona debe tener por cada
10 segundos de ejercicio, si la fórmula es:
num. Pulsaciones = (220 - edad) /10

15. En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología.


El presupuesto anual del hospital se reparte conforme a la siguiente tabla:
Área Porcentaje del presupuesto
Ginecología 40%
Traumatología 30%
Pediatría 30%
Obtener la cantidad de dinero que recibirá cada área, para cualquier
monto presupuestal.
16. El coste de un automóvil nuevo para un comprador es la suma total del
coste del vehículo, del porcentaje de la ganancia del vendedor y de los
impuestos locales o estatales aplicables (sobre el precio de venta).
Suponer una ganancia del vendedor del 12% en todas las unidades y un
impuesto del 6% y diseñar un algoritmo para leer el coste total del
automóvil e imprimir el coste para el consumidor.
17. Un alumno desea saber cuál será su promedio general en las tres materias
más difíciles que cursa y cuál será el promedio que obtendrá en cada una
de ellas. Estas materias se evalúan como se muestra a continuación:
La calificación de Matemáticas se obtiene de la sig. Manera:
Examen 90%
Promedio de tareas 10%
En esta materia se pidió un total de tres tareas.
La calificación de Física se obtiene de la sig. Manera:
Examen 80%
Promedio de tareas 20%
En esta materia se pidió un total de dos tareas.
La calificación de Química se obtiene de la sig. Manera:
Examen 85%
Promedio de tareas 15%
En esta materia se pidió un promedio de tres tareas.
18. Dados las coordenadas (x1, y1) y (x2, y2) de dos puntos en el plano
cartesiano, determinar la distancia (d) entre estos dos puntos
19. Se tiene las votaciones de 3 candidatos (v1, v2, v3). Sobre el total (tot),
determinar el porcentaje de votación obtenido por cada uno de los
candidatos (p1, p2, p3)
20. Leer tres valores enteros y realizar las siguientes operaciones
 Sumar todos los valores
 Multiplicar todos los valores
 Restar de la suma de los dos primeros el doble del tercero
 Promedio de todos los valores.
 Suma de las mitades de los últimos valores
21. Leer cuatro valores reales a, b, c y d. Realizar lo siguiente:
 Sumar el cuadrado de los extremos más el cubo de los demás
 Multiplicar el promedio de los tres primeros por el promedio de los
tres últimos valores
 Calcular la siguiente expresión: (suponga que c es diferente de cero)

ab cd  2a
Valor  2
  4cd
c a
c
2a  5b  4

22. Se tiene un triángulo rectángulo de base B y altura H. Calcular lo siguiente:


 Área de la figura
 Perímetro de la figura
 hipotenusa
23. Se lee el radio de un circulo y el lado de un cuadrado, se le pide que realice
una aplicación que haga lo siguiente:
 Calcular área de las figuras
 Sumar los perímetros de ambas figuras
 Área promedio
 Elevar al cubo el perímetro del cuadrado
 Calcular la altura promedio de las figuras
24. Hay un cilindro, una esfera y un cono. Al leer las dimensiones básicas de
cada uno de ellos, haga una aplicación que realice:
 Volumen promedio
 Suma de áreas laterales
 Altura promedio
25. Leer cuatro valores reales y calcular la siguiente expresión: (suponga que
c es diferente de cero)

ab 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.

33. Cada molécula absorbe la energía radiante a una longitud de onda


específica, a partir de la cual es posible extrapolar la concentración de un
soluto en una solución. Con arreglo a la ley de Lambert-Beer, existe una
relación lineal entre la absorbancia A (también denominada densidad
óptica, DO) y la concentración de la macromolécula, conforme a la
ecuación siguiente:

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

Queremos tener un algoritmo que nos permita saber cuántas parejas de


conejos tendremos, luego de un número determinado de años

45. Pepe quiere invertir la plata que le regalaron para su cumpleaños


plantando sandias en un terreno que tiene en Paine.
Sin embargo, se está seguro de si le alcanza la plata pues es la primera
vez que realiza este tipo de negocio, pero si sabe que cuesta 25.00 por
metro cuadrado plantar sandias.
Además, ni siquiera está segura de cuantos metros cuadrados tiene su
terreno. Lo único que sabe es que el terreno es triangular, y conoce la
longitud de los lados.
¿Cómo puede hacer Pepe para saber la cantidad de dinero que necesita?
Ayuda:
Para calcular el área de un triángulo conociendo la longitud de sus lados
podemos utilizar la fórmula:
area  s(s  L1 )(s  L2 )(s  L3 )

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

47. Elaborar un algoritmo para calcular la temperatura de fusión (Tf): Es


importante no olvidar que son dos los cebadores que se añaden a una
PCR en relación con un sitio o diana. Los dos cebadores oligonucleótidos
deben diseñarse de forma que tengan temperaturas de fusión similares.
Si los cebadores no se ajustan bien en cuanto a su Tf, la amplificación será
menos eficaz o incluso podrá no darse en absoluto, ya que el cebador con
la Tf más elevada funcionará mal a temperaturas más bajas y es posible
que el cebador con la Tf más baja no trabaje a temperaturas más
elevadas. La forma más precisa de calcular las temperaturas de fusión de
los oligonucleótidos es utilizar cálculos termodinámicos del vecino más
próximo con la fórmula:

Tfcebador  H (S  R ln(c / 4))  273.15C  16.6log10[ K  ]


Dónde:
H= entalpia
S=entropía de la formación de la hélice
R= constante molar de los gases
C= concentración de los cebadores

48. Afortunadamente, con la fórmula siguiente puede calcularse una buena


aproximación de trabajo de este valor (válido generalmente para
oligonucleótidos de entre 18 y 24 bases):

T f  2( A  T )  4(G  C )

Donde A, T, G y C son las bases púricas y pirimidínicas.

49. Elaborar un algoritmo para calcular la temperatura de fusión. En general,


los productos que tienen entre 100 y 600 pares de bases se amplifican de
forma eficaz en muchas PCR. En caso de duda, la Tf del producto puede
calcularse con la fórmula siguiente:

Tf  81.5  16.6(log10 [ K  ]  0.41(G  C)  675) / longitud

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

52. Elaborar un algoritmo para calcular el error en los pronósticos

Error  et  At  Ft

14.2. Estructuras Selectivas


Este tipo de estructuras se utilizan cuando el programador quiere realizar
algunas bifurcaciones o establecer condiciones que cumpla o alguna
determinada condición o restricción
14.2.1. Selectivas simples:
Ejecuta una determinada acción cuando se cumple una determinada
condición. A continuación, se muestra su sintaxis

Pseudocódigo

Si condición Entonces
Instrucción
Fin si

En Diagrama de flujo se muestra en la figura.

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

Si condición entonces Condición

Instrucción 2
Sino
Instrucción 1 Instrucción 2
Instrucción 1
Fin si
14.2.3. Problemas

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. 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.
3. Diseñar un algoritmo que, dado un número, indique si es par o impar
4. Desarrolle un algoritmo que permita leer dos valores distintos,
determinar cuál de los valores es el mayor y escribirlo.
5. Elabore el algoritmo que permita ingresar un valor numérico entero,
que debe evaluar o decir que es mayor que 100 caso contrario se tiene
que indicar que es menor
6. Del ejercicio 5 se debe evaluar la posibilidad cuando el valor numérico
sea igual a 100.
7. Leer un número real x, calcular y escribir r = |x|3
8. Calcular el coste de una llamada telefónica que ha durado t minutos
sabiendo que si t<1, el coste es de 0.4 euros mientras que para
duraciones superiores el coste es 0.4 + (t+1)/4 euros
9. Leer un número real del teclado. Calcular el valor de p sabiendo que si
x está en el intervalo (2,8], el resultado p toma el valor uno, en caso
contrario toma el valor cero. Escribir posteriormente el valor de p.
10. Leer las componentes de un vector de R2 (x e y). Calcule el valor de r
que se define como r= NC(x, y), si x≠0, y≠0 y x=0 o si y =0
11. Dado un numero entero x mayor que uno se ha de escribir un uno si el
número es par y un cero en caso contrario.
12. Dados dos números enteros positivos p y q, p > q, se ha de escribir un
uno si son divisibles y cero si no lo son
13. Dada una cantidad N > 1 calcular la raíz cuadrada entera aproximada r.
se ha de cumplir que r*r ≤ N < (r+1)(r+1). Por ejemplo, si N=24 se tiene
que r=4 pues 4*4 =16≤24<25=5*5.
14. Se ha de escribir un uno en el caso de que exista un trio (x, y, z) de
números enteros positivos tales que x2 + y2 = z2. Limite a x є (0, 100], y
є (0, 100]. En caso de que no se encuentre solución se ha de escribir un
cero.
15. Un restaurant ofrece un descuento del 20% para un consumo mayor a
S/. 30.00 y aplica un impuesto de 15% para todo consumo. Determinar
el importe a pagar por lo consumido, mostrando todos los importes.
16. Dos personas desean intercambiar sus identidades (nombre, dirección,
teléfono, edad) siempre y cuando la edad del primero fuese mayor que
la edad de segundo en no más de 4 años. Ingresar los datos de cada
persona y mostrar sus nuevas identidades o un mensaje mostrando la
diferencia de edades que impidiera el intercambio.
17. Leer cuatro valores reales a, b, c, y d. realizar lo siguiente:
¿Calcular la siguiente expresión? (suponga que se ingresa valor cero
a c)
ab cd  2a
Valor  2
  4cd
c a
c
2a  5b  4

18. Leer cuatro valores reales y calcular la siguiente expresión suponga


que se ingresa valor cero a c)

ab cd  2a
Valor    4cd
c2 a2
c
2a  5b  4

19. Leer un número real x y otro entero z. calcular y escribir y = xz,


suponiendo que z ≥ 0
20. Dado un número, se debe contestar si es múltiplo de 3, 6 y 9 a la vez.
Condicionar el algoritmo para cualquier número.
21. Diseñar el algoritmo que, dado un número, indique si es par o es impar
22. Elabore el algoritmo que permita ingresar dos valores numéricos
enteros positivos cualquiera, luego de evaluar se debe imprimir sus
valores intercambiados.
23. Escribir un algoritmo que lea tres números enteros por teclado y emita
un mensaje indicando si están o no en ordenados en orden creciente.
24. Escribir un algoritmo que permita introducir por teclado tres números
enteros y responda si los números son iguales.
25. Escribir un algoritmo que permita introducir por teclado tres letras y
responda si existen al menos dos letras iguales.
26. Elabore un algoritmo que solicite la edad de 2 hermanos y muestre un
mensaje indicando la edad del mayor y cuantos años de diferencia tiene
con el menor.
27. Se tiene registrado la producción (unidades) logradas por un operario a
lo largo de la semana (lunes a sábados). Elabore un algoritmo que nos
muestre o nos diga si el operario recibirá incentivos sabiendo que le
promedio de producción mínima es de 100 unidades.
28. Elabore un algoritmo que calcule el valor absoluto de un número (tanto
positivos como negativos)
29. Elaborar un programa para calcular la constante de Michaelis (la ecuación
simple de cinética enzimática de Michaelis). Este modelo cinético adopta la
hipótesis del estado estacionario, según la cual la concentración del complejo
enzima- sustrato es pequeña y constante a lo largo de la ecuación.

[ 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

14.2.4. Selectivas múltiples:


Con frecuencia en la práctica, es necesario que existan más de dos
elecciones posibles, por lo que se tiene que aplicar estructuras selectivas
múltiples en cascada o anidadas y/o una selección múltiple especial
denominada según sea el caso. Estas estructuras se van aplicar según el
análisis del problema donde se tiene que diseñar el algoritmo
Estructura múltiple en cascada o anidadas: Es la estructura múltiple más
aplicada en problemas de mayor complejidad, consiste en anidar
estructuras selectivas simples o dobles ponerlos en cascada

Diagrama de flujo de datos

Condición
1

Condición
Instrucción 3
2

Condición Instrucción 1 Instrucción 2


3

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

Estructura múltiple según sea el caso: Esto mayormente se aplica cuando


se tienen opciones de selección donde la condicional principal mayormente
acepta solamente enteros o caracteres, en casos especiales se pude poner
cadenas

Diagrama de Flujo

Condición
Pseudocódigo

Según sea condición

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𝑎

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: rcraíz cuadrada(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 “miércoles”
4: escribir “jueves”
5: escribir “viernes”
6: escribir “sábado”
7: escribir “domingo”
Otros: escribir “Error”
Fin_ según
Fin
Ejemplo 4
El ejercicio 1 de los propuestos en Código en perl
print "ingrese 1ra medida: ";
$m1=<STDIN>;
chop($m1);
print"ingrese 2da medida: ";
$m2=<STDIN>;
chop($m2);
print"ingrese 3ra medida: ";
$m3=<STDIN>;
chop($m3);
print"ingrese 4ta medida: ";
$m4=<STDIN>;
chop($m4);
$media=($m1+$m2+$m3+$m4) /4;
if ($media <= 4) {
print"el ruido no es nocivo \n";
print"su media es: $media";
}
else {
print"el ruido es nocivo \n";
print"su media es: $media”;
}

Ejemplo 5
El ejercicio 2 de los propuestos en Código en perl

print" ingrese el sueldo del cliente: " ;


$sueldo=<STDIN>;
chop($sueldo);
print"estado del cliente: ";
$est=<STDIN>;
chop($est);
print" numero de hijos: ";
$nh=<STDIN>;
chop($nh);
if ($sueldo > 1200)
{
print" se concede el préstamo";
}
elsif (($sueldo <= 1200) && ($sueldo > 1000) && ($est eq "s") &&
($nh==0))
{
print" se concede el préstamo";
}
elsif (($sueldo <= 1200) && ($sueldo > 1000) && ($est eq "c")
&& ($nh==0))
{
print" se concede el préstamo";
}
else
{
print" no se le concede el préstamo" ;
}
Ejemplo 6
El ejercicio 1 de los propuestos en Código de Matlab

m1=input ('ingrese la 1ra media: ');


m2=input ('ingrese la 2da media: ');
m3=input ('ingrese la 3ra media: ');
m4=input ('ingrese la 4ta media: ');
media=(m1+m2+m3+m4) /4;
if (media <= 4)
disp('el ruido no es nocivo');
disp('la media es ');disp(media);
else
disp('el ruido es nocivo');
disp('la media es ');disp(media);
end

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

14.2.6. Ejercicios: Elaborar los algoritmos de los siguientes problemas


1. 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
2. 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.
3. 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 cualquiera 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).
4. 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.
5. 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
6. Implementar un algoritmo que dados tres números a, b y c, los
devuelva ordenados de menor a mayor
7. 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

8. Dados el valor antiguo y el actual del contador de la luz, escribir un


algoritmo que determine a cuánto asciende la factura de la luz de
un determinado abonado. El importe es la suma de la cuota fija (S/.
12) más una cuota variable que depende del consumo y se calcula
por tramos: los primeros 100 Kw, a 0.06 el Kw, los 150 Kw siguientes
a 0.04 el Kw, si el consumo excede de 250 Kw, esa fracción se cobra
0.02 el kw
9. Supóngase que el importe del seguro obligatorio de un conductor
de un coche depende del modelo del coche, del color y de la edad
del conductor. Sean dos modelos de coche A y B y los precios del
seguro según el color:

Si el conductor tiene menos de 26 años, el precio se incrementa un


25 %; si tiene entre 26 y 30 años se incrementa un 10 %; si tiene
entre 31 y 65 años el precio no se modifica; si tiene más de 65 años
el precio se incrementará un 10 %. Además, en cualquier caso, hay
que considerar que, si el conductor tiene menos de 2 años el
permiso de conducir, el precio se incrementara un 25 % adicional.
Diseñar un algoritmo que calcule el precio del seguro para un
determinado modelo y un determinado conductor.
10. Ingresar un mes (numero) y un año e imprima cuantos días tiene.
(tener en cuenta el caso de año bisiestos.)
11. Desarrolle un algoritmo que permita leer tres valores y
almacenarlos en las variables A, B y C respectivamente. El algoritmo
debe imprimir cual es el mayor y cuál es el menor. Recuerde
constatar que los tres valores introducidos por el teclado sean
valores distintos. Presente un mensaje de alerta en caso de que se
detecte el ingreso de valores iguales
12. Elaborar el algoritmo que permita ingresar cuatro valores enteros
distintos luego de evaluar se debe decir cuál de ellos es el mayor
13. Similar al ejercicio anterior, luego de evaluar se debe decir cuál de
ellos es el mayor y el menor
14. Elaborar un algoritmo que imprima el valor medio de tres números,
ingresados por teclado (no es el promedio)
15. Determinar la cantidad de dinero que recibirá un trabajador por
concepto de las horas extras trabajadas en una empresa, sabiendo
que cuando las horas de trabajo exceden de 40, el resto se
consideran horas extras y que éstas se pagan al doble de una hora
normal cuando no exceden de 8; si las horas extras exceden de 8 se
pagan las primeras 8 al doble de lo que se paga por una hora normal
y el resto al triple.
16. Se desea agregar una letra para representar la calificación de los
alumnos, las calificaciones son notas entre 1 y 10; use los siguientes
parámetros: A para calificaciones mayores o iguales a 9, B para
calificaciones mayores o iguales a 8, C para calificaciones mayores o
iguales a 7, D para calificaciones mayores o iguales a 6, F para todas
las demás calificaciones.
17. La empresa Milagrito S.A. tiene la siguiente tabla de parámetros
para pagar las comisiones de sus ejecutivos de ventas:

Parámetro de venta Porcentaje


de
Desde Hasta comisión
S /ventas
S/. 2000 S/. 10000 7%

S/. 10000 S/. 20000 10%

S/. 20000 en adelante 15%

Escriba un programa que al introducir la cantidad vendida por el


ejecutivo de ventas, calcule de cuánto será su comisión.
18. En base al valor de dos números enteros, determine si estos son:
A. Iguales.
B. No iguales.
C. El primero es mayor que el segundo.
D. El segundo es mayor que el primero.
19. Un restaurante, desea dar a conocer a sus clientes el plato que se
ha preparado para cada uno de los tiempos de comida desayuno,
almuerzo y cena. El restaurante prepara un plato único para cada
uno de los tiempos. Cuando el cliente seleccione entre los tiempos
de comida (desayuno, almuerzo o cena) se debe desplegar el detalle
de este.
Ejemplo:
Seleccione su tiempo de Comida: desayuno
Detalle
Plátanos, Frijoles, Queso, Crema, Pan y Café
20. Elabore un programa que pida dos números y que permita mostrar
un menú con las cuatro operaciones básicas, donde el usuario
pueda seleccionar la operación que desea realizar (basta con que
seleccione el número).
21. Leer un valor x del teclado. Calcular y escribir el valor y = f(x), siendo
f una función definida a trozos del siguiente modo:

x F(x)
X є [-1,3) 10-x
X > 50 1
resto 0

22. Determinar el mayor y menor valor de 5 números ingresados desde


el teclado.
23. Ordenar de menor a mayor 5 números ingresados por teclado
24. Un profesor desea implementar un algoritmo que le permita
bonificar equitativamente a todos sus alumnos de acuerdo a la nota
conseguida en un examen, de la siguiente forma: si la nota fuera
menor que 5 se bonifica con 3 puntos; si la nota fuera mayor o igual
que 5 pero menor que 10 se bonifica con 2 puntos y si la nota fuera
mayor o igual que 10 pero menor que 15 se bonifica con 1 punto; y
si la nota fuera mayor o igual que 15 pero menor o igual que 20 se
le descuenta el residuo de la nota entre 5, determinar la nota
bonificada para cualquier alumno.
25. Un trabajador del estado percibe un sueldo básico mensual de 750
nuevos soles; además recibe incrementos de sueldo de acuerdo a
los siguientes conceptos

instrucción Porcentaje
Hasta 5to secundaria 5%
técnico 10%
profesional 20%

Condición Social Porcentaje


Casado 3%
Por cada hijo 2%
Sin vivienda 5%

También por ley está sujeto a un descuento de 10% si su sueldo


excede de S/. 800. determinar el sueldo neto que recibe un
trabajador
26. En una olimpiada de tiro al blanco se llega a un acuerdo entre los
participantes para que el puntaje obtenido sea calculado en base al
puntaje original (0 al 10) alcanzado en el tiro, multiplicado por un
factor:

Puntaje original Factor


0 0
1..5 6
6..8 9
9..10 10

Para un tiro realizado determinar su puntaje correspondiente.


27. Una tienda de ropa ha establecido los porcentajes de descuento,
que se indican a continuación, de acuerdo a ciertas características
del comprador: nacionalidad (1,2) y del producto que compra: sexo
(H, M), talla (Niño, Joven, Adulto). Se sabe que una persona puede
comprar varios productos por lo que se desea mostrar como
resultados los siguiente: nombre del comprador, cantidad de
productos comprados, importe comprado, importe descontado, el
importe a pagar; para lo cual se deben ingresar los datos que sean
necesarios. El proceso para la compra de una persona termina
cuando al ingresar el nombre del comprador se presiona ENTER

niño joven adulto


Nacionalidad sexo sexo sexo
H M H M H M
1 5 4 7 9 10 12
2 4 5 9 7 12 10

28. 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)?
29. Desarrolle un algoritmo para la siguiente función

 0 si x0
 x0
 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

30. El gobierno del Perú desea reforestar un bosque que mide


determinado número de hectáreas. Si la superficie del terreno
excede a 1 millón de metros cuadrados, entonces decidirá sembrar
de la siguiente manera.
Porcentaje de la superficie del bosque. Tipo de árbol 70% pino, 20%
oyamel, 10% cedro.
Si la superficie del terreno es menor o igual a un millón de metros
cuadrados, entonces decidirá sembrar de la siguiente manera.
Porcentaje de la superficie del bosque tipo de árbol.
50% pino
30% oyamel
20% cedro.
El gobierno desea saber el número de pinos, oyameles y cedros, que
tendrá que sembrar en el bosque. Si se sabe que en 10 metros
cuadrados caben 8 pinos, en 15 metros cuadrados caben 15
oyameles y en 18 metros cuadrados caben 10 cedros. También se
sabe que una hectárea equivale a 10 mil metros cuadrados.
31. Una fábrica ha sido sometida a un programa de control de
contaminación para lo cual se efectúa una revisión de los puntos
IMECA generados por la fábrica. el programa de control de
contaminación consiste en medir los puntos IMECA que emite la
fábrica en cinco días de una semana y si el promedio es superior a
los 170 puntos entonces tendrá la sanción de parar su producción
por una semana y una multa del 50% de las ganancias diarias cuando
no se detiene la producción. Si el promedio obtenido de puntos
IMECA es de 170 o menor entonces no tendrá ni sanción ni multa.
El dueño de la fábrica desea saber cuánto dinero perderá después
de ser sometido a la revisión.
32. Una persona se encuentra con un problema de comprar un
automóvil o un terreno, los cuales cuestan exactamente lo mismo.
Sabe que mientras el automóvil se devalúa, con el terreno sucede lo
contrario. Esta persona comprara el automóvil si al cabo de tres
años la devaluación de este no es mayor que la mitad del
incremento del valor del terreno. Ayúdale a esta persona a
determinar si debe o no comprar el automóvil.
33. Permita ingresar el mes y día de nacimiento, después de evaluar se
debe imprimir el signo zodiacal correspondiente.
34. Imprima el valor medio de tres números ingresados por el teclado.
35. Imprima el valor medio de cinco números ingresados por el teclado
36. Luego de ingresar una fecha del día con el formato Día Mes Año. Se
imprime la fecha del día siguiente
37. 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
38. Queremos conocer los datos estadísticos de una asignatura, por lo
tanto, necesitamos un algoritmo que lea el número de reprobados,
aprobados, notables y sobresalientes de una asignatura, y nos
devuelva:
¿El tanto por ciento de alumnos que han superado la asignatura?
¿El tanto por ciento de reprobados, aprobados, notables y
sobresalientes de la asignatura?
39. Ingresar un numero en forma de ARABICO (entero) y mostrar su
equivalente en ROMANO asumiendo que el número ingresado es
correcto y no debe ser mayor a 3999
Ejemplo si se ingresa el numero 123 debe aparecer como resultado
CXXIII.
40. La temperatura de un horno puede variar desde 0 hasta 100 grados
centígrados y se clasifica de acuerdo a lo siguiente:

MUY ALTA: si su valor esta entre 90°C y 100°C


ALTA: si su valor esta entre 80°C y 89°C
NORMAL: si su valor esta entre 40°C y 79°C
BAJA: si su valor esta entre 0°C y 39°C

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

Monto Bonificación (%)


0 - 1000 0
1000 – 5000 3
5000 - 20000 5
20000 a mas 8

44. Elabore un algoritmo que solicite un numero entero y muestre un


mensaje indicando la vocal correspondiente, considerando que la
vocal A =1.
45. Se desea leer un número entero de 2 cifras y que se muestre el
número de unidades, decenas que lo componen.
46. Elabore un algoritmo, dado un numero cuyo valor es leído desde
teclado, imprima por pantalla si el número es o no mayor a cero y
si el número es par o impar.
47. Elabora un algoritmo que tras leer un carácter desde teclado,
imprima por pantalla si la letra es mayúscula o minúscula. Amplié el
algoritmo, indicando si el carácter es un digito numérico (Nota:
digito numérico 48 – 57, mayúsculas 65 – 90 y minúsculas 97 - 122)
48. Elabore el algoritmo, que dada la calificación obtenida indique si
corresponde al suspenso, aprobado, notable o sobresaliente.
49. Se quiere implementar un programa para calcular las ratios de una
expresión de genes, donde cada gen determinado con un
identificador del gen (geneID), una descripción (función del gen),
una medida de la calidad de la medida que puede adquirir los
valores P = presente, M= marginal, A =Ausente, luego dos parejas
de columnas con las intensidades de la sonda de control y la sonda
diana (Target). Para cada sonda dos variables “Sig” para la señal y
“Bkg” para el ruido background. La ratio se define como la división
de las señales netas de la diana y el control; siendo la señal neta la
que resulta de restarle al ruido a la señal.
50. Elaborar un programa el índice de masa corporal (IMC) que se
define como una estimación de la grasa corporal basada en la altura
y el peso. En adultos mayores de 20 años el IMC se encuentra
dentro de una de las siguientes categorías:
Falta de peso: inferior a 18.5
Normal: 18.5 a 24.9
Sobrepeso: 25 a 29.9
Obesidad: 30 o superior
IMC= peso/altura
Para comprobar su algoritmo tomar los datos de la siguiente tabla

51. Elaborar un programa de acuerdo a la concentración de inhibición


seleccionar el inhibidor de la PCR (Reacción en cadena de la Polimerasa)
según la siguiente tabla

52. Elaborar un algoritmo para calcular la concentración c de un ácido nucleico


determinado presente en una solución se calcula conforme a las
ecuaciones siguientes:

c( pmol / l )  A260 / 0.027


ADN monocatenario:
ADN bicatenario c( pmol / l )  A260 / 0.020
ARN monocatenario
c( pmol / l )  A260 / 0.025

Oligonucleotido c( pmol / l )  100 A260 /(1.5 N A  0.71NC  1.2 NG  0.84 NT )


Dónde:

A260 = absorbancia medida a 260 nm.

53. Elaborar un algoritmo para calcular el impuesto anual de 4ta categoría de


acuerdo al siguiente procedimiento
 Si un recibo por honorario es mayor de S/. 1500 se le hace la
retención del 10% caso contrario no tiene retención en un mes.
 Si se tiene un grupo de recibos por honorarios emitidos en el
mismo mes (estos no sobre pasan de S/. 1500) la suma de estos
no deben pasar de S/. 2625 no se le hace retención. Caso
contrario se le hace la retención de la suma total del 10%.
 Cuando la proyección de sus ingresos anuales por Rentas de
Cuarta Categoría no supere el monto afecto al impuesto (para el
ejercicio 2014: S/. 33,250), podrá solicitar la Suspensión de
Retenciones y/o Pagos a Cuenta. Deberá incluir también en la
cantidad referencial, los ingresos obtenidos por rentas de Quinta
Categoría en caso las tenga. Referencia: Resolución de
Superintendencia N° 373-2013/SUNAT
 La renta de cuarta categoría de acuerdo a los procedimientos de
la Sunat que han sobres pasado el monto afecto al impuesto se
deduce con el 20% de los ingresos brutos.
 Para Calcular el impuesto anual, De haberse obtenido, luego de
la deducción un monto positivo, a éste se procede aplicar la tasa
respectiva

IMPUESTO = REMUNERACIÓN x TASA


ANUAL NETA ANUAL

Hasta 27 UIT 15%


Por el exceso de 27 UIT 21%
Y hasta 54 UIT
Por el exceso de 54 UIT 30%

Nota UIT = 3600

REMUNERACION = Remuneración x Nº de meses + Gratificaciones de Navidad y


BRUTA ANUAL mensual que falta Fiestas Patrias, Otros ingresos
para percibidos en el mes ,
culminar el Remuneraciones y Otros
año ingresos percibidos en meses
anteriores

54. Elaborar un algoritmo para calcular el impuesto anual de 5ta


categoría de acuerdo al siguiente procedimiento.

 Estas son generadas por los trabajadores dependientes cuyo


monto proyectado de remuneraciones incluidas gratificaciones,
participaciones, gratificaciones extraordinarias y otros ingresos
que percibirán durante el periodo de un año superen el monto
equivalente a 7 UIT (S/.25200 para el 2010).

 La retención mensual de este impuesto se realiza de la siguiente


manera:

 Determinar la remuneración bruta anual:

REMUNERACION = Renta Anual - 7 UIT


NETA ANUAL Proyectada
 Cálculo del impuesto anual
De haberse obtenido, luego de la deducción un monto
positivo, a éste se procede aplicar la tasa respectiva.

Hasta 27 UIT 15%


Por el exceso de 27 UIT 21%
Y hasta 54 UIT
Por el exceso de 54 UIT 30%

IMPUESTO = REMUNERACIÓN x TASA


ANUAL NETA ANUAL

 Determinación del impuesto a retener

Se sigue el siguiente procedimiento por cada uno de los meses


señalados a continuación: IAN = Impuesto Neto Anual

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

55. 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 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

Supongamos 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
Renta neta cuarta y quinta categoría S/.70,520
Impuesto 15% de renta neta S/.10,578
- Pagos adelantados en 2011 S/.9,840
Pago por regularizar en Sunat S/.738

56. Elabore un algoritmo que muestre el código que es usado para


expresar las bases nitrogenadas para mostrar, según la tabla.
57. Elabore un algoritmo, para mostrar el código estándar usado para
representar los aminoácidos. Según la tabla
58. La transcripción es el paso de DNA a RNA, donde todas las timinas
(T) de la secuencia cambian a uridinas (U). En este apartado debes
escribir un programa para transcribir secuencias de DNA. Introduce
la siguiente secuencia de DNA en el programa en forma de variable
escalar, y cambia todas sus T's por U's. Finalmente, como siempre,
escribe el resultado para comprobar que el programa hace lo
esperado.
Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC.
59. El DNA es una hélice formada por dos cadenas, una complementaria
de la otra, que avanzan en sentidos opuestos:
5' ACTCAGA 3' à
ß 3' TGAGTCT 5'
En la cadena complementaria, las sustituciones de nucleótidos son
las siguientes:
AàT
TàA
CàG
GàC

La dirección en la que siempre se deben dar las secuencias (por


consenso) es 5' à 3'.
Escribe un programa que, dada una secuencia de DNA, calcule su
complementaria (y reversa).
Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC.
60. Permita ingresar las coordenadas (x, y) de un punto y el radio R, de
un circulo con centro en el origen. Luego de evaluar se debe decir
si el punto esta fuera, dentro o sobre el circulo.

14.3. Estructuras Repetitivas


Son las estructuras que repiten una secuencia de instrucciones un
determinado número de veces a esto se le denomina bucle y se denomina
iteración al hecho de repetir la ejecución de una secuencia de acciones
Antes de explicar los tipos de estructuras repetitivas definamos que es un
Contador, acumulador o sumador
Un contador Es una variable destinada a contener diferentes valores, que
se va incrementando o decrementando cada vez que el ordenador realice
una instrucción que lo contiene. El incremento o decremento si es
negativo, llamado también paso del contador, es siempre constante
ejemplo i  1, j 0, etc.
Acumulador o sumador: Es una variable que nos va a permitir guardar un
valor que se incrementa o decrementa de forma no constante durante el
proceso. En un instante determinado tendrá un valor y al siguiente tendrá
otro valor igual o distinto. Ejemplo S S + i , a  a*i , etc

14.3.1. Estructura repetitiva mientras (While ):


La estructura repetitiva mientras, es aquella en que al cuerpo del bucle se
repite mientras se cumple una determinada condición. La representación
en Pseudocódigo y Diagrama de Flujo será:

Mientras condición hacer


Acción 1
Acción 2
.
.
.
Fin mientras

Diagrama de flujo de datos

Falsa
Condici

Verdadera

Acciones

14.3.2. Estructura repetitiva para (For):


En muchas ocasiones se conoce de antemano el número de veces que se
desea ejecutar las acciones de un bucle. En este caso en el que el número
de iteraciones es fija se debe usar la estructura desde o para
La representación en pseudocódigo y diagrama de flujo es

Desde variable (V) = vi hasta vf hacer


Acción 1
Acción 2
.
.
.
Fin desde
V: variable índice
Vi, vf : valor inicial y final de la variable

Diagrama de flujos de datos

Para o desde i = 1 hasta n hacer

Acciones

Calcular valor inicial y final

Fijar la variable índice al valor inicial

Falso
Variable índice >
valor final

Verdadero

Acciones
Cuerpo del bucle

Incrementar variable índice


14.3.3. Estructura repetitiva repetir:
Existen muchas situaciones en la que se desea que un bucle se ejecute al
menos una vez antes de comprobar la condición de repetición. La
estructura repetir se ejecuta hasta que se cumpla una condición
determinada que se comprueba al final del bucle. El bucle repetir – hasta
que se repite mientras el valor dela expresión booleana de la condición sea
falsa, justo lo opuesto de la sentencia mientras.
La representación en Pseudocódigo y Diagrama de Flujo es

pseudocódigo

Repetir
Accion1
Acción 2
.
.
.
Hasta _que Condición

Diagrama de flujo de datos

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
Factfact*i
Fin_desde
Escribir “el factorial de”, N, “es”, fact
Fin
Ejemplo 2

Realizar el algoritmo para obtener la suma de los números pares


hasta 1000.
Inicio
Suma  2
Numero  4
Mientras número <= 1000 hacer
Suma  suma + numero
Numero  número +2
Fin _ mientras
Fin
Ejemplo 3

Dado dos números enteros, realizar el algoritmo que calcule el


cociente y el resto
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 4
Ejemplo 1 en código Perl
print"ingrese un numero para hallar su factorial: ";
$n=<STDIN>;
chop($n);
$i=1;
$fact=1;
if ($n==0)
{
print"$fact" ;
}
else
{
while($i<=$n)
{
$fact=$fact*$i;
$i++;
}
print"el factorial es: $fact" ;
}
Ejemplo 5
El ejemplo 1 En código en Matlab
n=input('ingrese un numero para hallar el factorial : ');
i=1;
fact=1;
if n==0
disp('el factorial es :');
disp(fact);
else
while i<=n
fact=fact*i;
i=i+1;
end
disp('el factorial es: ');
disp(fact);
end
Ejemplo 6
Calcular el factorial de n números leídos por teclado, en código perl.
print"ingrese el número de factoriales a calcular: ";
$n=<STDIN>;
chop($n);
for($i=1;$i<=$n;$i++)
{
print"ingrese un numero: ";
$num=<STDIN>;
chop($num);
$fact=1;
for($j=1;$j<=$num;$j++ )
{
$fact=$fact*$j;
}
print"el factorial del número $num es $fact \n";
}
Ejemplo 7
Calcular el factorial de n números leídos por teclado, código
matlab
n=input('ingrese el número de factoriales a calcular: ');
for i=1:n
num=input('ingrese un numero: ');
fact=1;
for j=1:num
fact=fact*j;
end
disp(fact);
end

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
R1resto(a/i)
Para j1 hasta b hacer
R2resto (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
n2
s0
escribir 1
Para i2 hasta 100 hacer
Mientras n ≤ i hacer
Si resto (i/n) =0 entonces
ss + n
Fin si
nn+1
Fin mientras
ps+1
qi+1
Si p=q entonces
Escribir i
Fin si
n2
s0
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
s0
Mientras i ≤ n hacer
Potenciax ^ i
Factorial1
mi
J1
Repetir
Factorialfactorial*j
jj+1
Hasta que j > m
ss + potencia/factorial
ii+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
s0
Mientras i ≤ n hacer
Potenciax ^ i
Si i = 0 entonces
Factorial1
Sino
Factorial1
mi
J1
Repetir
Factorialfactorial*j
jj+1
Hasta que j > m
Fin si
ss + potencia/factorial
ii+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
Fibo11
Fibo22
i3
Escribir fibo1, fibo2
Repetir
Fibofibo1 + fibo2
Escribir fibo
Fibo1fibo2
Fibo2fibo
ii+1
Hasta que i >n
Fin

Segunda forma seria más general


Inicio
Leer n
Fibo11
Fibo22
i2
Escribir fibo1, fibo2
Repetir
ii+1
Fibofibo1 + fibo2
Fibo1fibo2
Fibo2fibo
Escribir fibo
Hasta que i >n
Fin

Una forma más general seria

Inicio
Leer n, a, b
Fibo1a
Fibo2b
i2
Escribir fibo1, fibo2
Repetir
ii+1
Fibofibo1 + fibo2
Fibo1fibo2
Fibo2fibo
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
i1
s5
Escribir s
Mientras i<n hacer
ii +1
ss + 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
i1
maxnum
Repetir
ii +1
Leer num
Si max < num entonces
maxnum
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
maxnum
minnum
desde i 2 hasta 100 hacer
Leer num
Si max ≤ num entonces
maxnum
sino
Si num ≤ min entonces
minnum
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
auxB
BA
Aaux
Mientras B ≠ 0 hacer
Rresto(A/B)
AB
BR
Fin mientras
Escribir A
Sino
Mientras B ≠ 0 hacer
Rresto(A/B)
AB
BR
Fin mientras
Escribir A
Fin

14.3.5. Ejercicios: Elaborar los algoritmos de los siguientes ejercicios:

1. Hallar el factorial de un numero N utilizando la estructura 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
5. Calcular el número máximo de una serie de 100 números.
6. Calcular los factoriales de n leído por teclado. Utilice las tres
estructuras
7. Realizar un algoritmo que escriba los N primeros números de la
serie de Fibonacci 1,2,3,5,8,13,21 (Una serie de Fibonacci se genera
a partir de la suma de los dos números anteriores)
8. Realizar un algoritmo que escriba los N primeros números de la
serie Fibonacci (Nota lea los dos primeros números de la serie)
9. 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.
10. Calcular el factorial de los n números leídos por teclado
11. La exponencial se puede aproximar mediante la serie

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)
𝑛!

 Escribir un algoritmos que calcule la exponencial de a


según dicha fórmula, utilizando n=10 y luego n=20.
12. Diseñar un algoritmo que determine los números primos entre dos
números dados.
13. Los empleados de una fábrica trabajan en dos turnos, diurno y
nocturno. Se desea calcular el jornal diario en una semana de
acuerdo con los siguientes puntos:
 Las tarifas de las horas es de 50 nuevos soles
 La tarifa de las horas nocturnas es de 80 nuevos soles
 Caso de ser domingo la tarifa se incrementa en un 100%
tanto en el turno diurno y nocturno
14. Diseñar el algoritmo que dado una lista números leídos por teclado,
indique si es par o es impar e imprima el total de números leídos,
además el total de los pares e impares.
15. Dado un número N, calcular la suma 5 +10 +15 + 20+ . . . +5* n
16. Diseñar el algoritmo que encuentre (muestre) los números pares
que hay entre 100 y 1000.
17. Diseñar el algoritmo que calcule la suma de los pares que hay entre
dos números dados.
18. ¿Calcular los pagos mensuales de una hipoteca y el total a pagar. El
programa debe solicitar el capital, el interés anual y el número de
años y debe escribir la cuota a pagar mensualmente. Para calcular
la cuota se utiliza la siguiente fórmula: Sea C el capital del préstamo,
R la tasa de interés mensual y N el número de pagos. La cuota
mensual viene dada por:
Y el interés mensual será: interés anual / 100 /12
19. 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. Nota: Obtener el cociente
mediante diferencias sucesivas.
20. Desarrolle el algoritmo de la bisección para el cálculo de la siguiente
ecuación no lineal

f ( x)  sen( x)  cos(1  x 2 )  1

Algoritmo de la Bisección en un intervalo [a, b], tal que f(a)*f(b)<0


 (1) Sea c = ( b + a )/2
 (2) Si b - c ≤ є, se aceptar c como la raíz y parar
 (3) Si f(b)*f(c) ≤ 0, tomar a = c, por el contrario hacer b = c
 (4) Volver a (1)

Se debe ingresar los valores de a, b, iteración máxima y un error


mínimo
Para calcular el error relativo porcentual y comparar con el error
mínimo, se calcula con la siguiente formula.

xi1  xi
erp  x100
xi1

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
ba
h
n

a = f (xo)
b = f (xn)
22. Desarrolle el algoritmo del trapecio que consiste en la siguiente
formula.

n1
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

n1 n2
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.
24. Elabore el algoritmo de integración numérica de Simpson 3/8 que
consiste de la siguiente formula

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 ) 

ba
h
n

Donde los valores de a y b es el intervalo de la integral definida y n


es el número de segmentos impares y múltiplo de 3.
25. Elabore el algoritmo de integración numérica de Simpson 3/8 que
consiste de la siguiente formula

n1
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)

27. Desarrollar un algoritmo para Aproximar la siguiente función y =


coseno(x)

28. Desarrollar un algoritmo para Aproximar la siguiente función y = ex


29. Desarrollar un algoritmo para Aproximar la siguiente función y =
ln(1+x)

30. Desarrollar un algoritmo para Aproximar la siguiente función y = ex

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!

31. Desarrollar un algoritmo para Aproximar la siguiente función y =


Ln(a + x)
( x  b) ( x  b) 2 ( x  b)3 ( 1) n ( x  b) n
ln(a  x)  ln(a  b)     ... 
(a  b) 2(a  b) 2 3( a  b)3 n( a  b) n

32. Desarrollar un algoritmo para Aproximar la siguiente función y =


Ln(a + x)

x x2 x3 (1) n x n
L n(a  x)  L n(a)     ... 
a 2(a) 2 3(a)3 n( a ) n

33. Desarrollar un algoritmo para Aproximar la siguiente función y

1 x x3 x5 x 2 n1
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

enteros positivos que se suponen dados.


37. Escriba los n primeros términos de la sucesión dada por
1
an  (1  ) n , siendo n un numero entero positivo dado.
n
38. Escribir un programa que imprima las n primeras líneas de pascal (n
se ingresa por teclado, además utilice las combinaciones para
calcular cada coeficiente)
1
11
121
1331
14641
39. Escribir un programa que halle los logaritmos de una base a otra
base, se conoce el número positivo “X”. la base “a” y la otra base
“b”, estos deben ser mayores que uno y diferente de uno. El
programa debe terminar hasta que se ingrese un valor X igual que
0

log a ( x)
log b ( x) 
log a (b)

40. Dado un numero entero x mayor que uno se ha de escribir un uno


si es primo y un cero en caso contrario. Para ello ha de comprobar
si x es divisible por algún entero en el intervalo (1, x).
41. Dado un numero entero mayor que uno se ha de escribir la lista de
sus divisores comprendidos en el intervalo (1, x).
42. Dado dos números enteros positivos p y q escriba un algoritmo que
permita hallar el máximo común divisor de los mismos
43. Calcule e imprima los números primos entre 1 y 100
44. Queremos un algoritmo que nos permita generar la siguiente serie:
1, 4, 9, 16, 25, 36, 49, 64, 81,… de n términos.
45. Mostrar los N primeros términos de la siguiente serie, donde N
debe estar entre 5 y 30
5, 7, 10, 14, 19
46. Mostrar los N primeros términos de la siguiente serie, indicando
además la suma de los mismos.
7, 9, 12, 16, 21
47. Determinar la cantidad de términos que son múltiplos de 3 en los
200 primeros términos de la siguiente serie
6, 8, 10, 12, 14
48. Contar y sumar los números enteros positivos leídos por teclado. Se
termina cuando se ingresa un número negativo.
49. Sume los números del 1 al 200 menos los múltiplos de 5.
50. Calcule la suma y el producto de los números impares
comprendidos entre 11 y 111. Resolver con tres estructuras
distintas.
51. Calcule el MCD (Máximo Común Divisor) de dos números A y B de
acuerdo con el algoritmo de Euclides.
52. Imprima las tablas de multiplicar desde P hasta Q, siendo P y Q dos
valores ingresados por el teclado, tal que P<=0 cada tabla debe
tener el multiplicador desde 1 hasta 12.
53. Imprima los números de Fibonacci menores que 1500. Los números
de Fibonacci se calcula como la suma de los 2 anteriores: 0, 1, 1, 2,
3, 5, 8, 13,…
54. Imprima los 50 primeros números múltiplos de 3 anteriores al 500
y la suma total de estos 50 primeros números.
55. Calcule e imprima el número de términos necesarios para que el
valor de la siguiente. Sumatoria se aproxime lo más cercanamente
a 1000 sin que lo exceda.
n
k 2 1

k 1 k
56. Gauss demostró que
n
n

i 1
i  (n  1)
2

Para verificar la validez de esta fórmula, necesitamos un algoritmo que


calcule ambos términos de la ecuación.
57. Calcule el número máximo de términos de la serie de Fibonacci cuya
suma no exceda de 10000. Ingrese por teclado dos números como
inicio de la serie.
58. La esquina de un rectángulo debe estar sobre la curva elabore el
algoritmo que determine las coordenadas de la esquina del mayor
rectángulo posible (imprima las coordenadas (x, y) y el área
máxima).
y  2 x2  18

59. Diseñe un algoritmo que permita descubrir si dos enteros positivos


son primos entre sí, es decir si su máximo común divisor es uno.
60. Dada una hoja de cartón de ancho (A) y largo (L). si se recortan
cuadrados de las esquinas, la porción restante puede doblarse para
formar una caja. Determínese el tamaño de los recortes de los
cuadrados para producir una caja de volumen máximo (imprimase
el volumen máximo).
61. Desarrollar el algoritmo de Runge Kutta para dar una solución
aproximada de una ecuación diferencial de 1er orden con los
siguientes pasos
1 Definiendo un problema de valor inicial como:

2 calculando los K
3 calculando el valor de la iteración i+1

f ( x, y )  2 x 3  12 x 2  20 x  8.5 para h  0.5 con y  1 en x  0

62. Escribir un algoritmo que permita ingresar un entero n y que


imprima si se trata o no de un número capicúa
63. Escriba un algoritmo que lea un número entero por teclado y
escriba la tabla de multiplicar de ese número
64. Calcular la suma de las siguientes series:

Donde n es un número entero introducido por teclado.


65. Realice un algoritmo que calcule y visualice el más grade, el más
pequeño y la media de n números (n>0). El valor de n se solicitará
al principio del programa y los números serán introducidos por el
usuario.
66. Realice un programa que determine si un número leído del teclado
es primo o no
67. Un número perfecto es un entero positivo, que es igual a la suma
de todos los enteros positivos (excluido él mismo) que son divisores
del número. El primer número perfecto es 6, ya que los divisores de
6 son 1, 2, 3 y 1 + 2 + 3 = 6. Escriba un programa que lea un número
entero positivo n y muestre por pantalla si ese número es o no
perfecto.
68. Escribir un algoritmo que calcule la suma de los números enteros
de n a m (m>n).
69. Implementar un algoritmo que calcule el producto de dos números
enteros (n*m) haciendo sólo sumas.
70. Diseñar una función que calcule el cociente y resto de la división
entera de dos números mediante restas sucesivos.
71. Escribir un algoritmo que calcule el cuadrado de un número
haciendo sólo sumas. Ayuda: el cuadrado de un número n es la
suma de la n primeros números impares. Ejemplo: 32=1+3+5=9
72. Escribir un algoritmo que convierta un número entero en otro
número entero que será el primero pero con las cifras que lo
forman escritas al revés
73. Escriba un algoritmo permita ingresar 2 enteros positivos e imprima
sus divisores comunes
74. Suponga que se piden X Nuevos Soles prestados a un banco, con el
acuerdo de devolver Y soles cada mes hasta devolver el préstamo
completo. Parte del pago mensual serán intereses, calculados como
el i por ciento del capital por devolver en ese momento. El resto del
pago mensual se aplica a reducir el capital a devolver. El programa
debe determinar:
a.- La cantidad de intereses pagada cada mes.
b.- La cantidad de dinero aplicada cada mes al capital por devolver
c.- La cantidad acumulada de intereses pagados al final de cada
mes.
d.- La cantidad del préstamo aún pendiente al final de cada mes.
e.- El número necesario de pagos mensuales para devolver el
préstamo completo.
f.- La cantidad del último pago (probablemente menor que Y)
Compruebe el programa usando los siguientes datos: X = 7.200.000,
Y = 360.000, i= 1%
75. Un número primo es una cantidad entera positiva únicamente

divisible por uno o por sí mismo. Calcular y tabular los n primeros


números primos.
76. Elaborar un algoritmo para calcular el pronóstico por el método
media móvil simple, según la formula

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

Se debe cumplir que la suma total de las ponderaciones debe ser


igual a uno
n

w 1
i 1
i

78. Elaborar un algoritmo para medir el error en los pronósticos, según


el método de desviación media absoluta (MAD)
n At  Ft
MAD  
i 1 n

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

80. Elaborar un algoritmo para calcular los errores de pronostico en


porcentajes, por el método error porcentual absoluto (MAPE)

1 n At  Ft
MAPE  
n t 1 At

81. Elaborar un algoritmo para calcular la probabilidad según la distribución


binomial

Px  (nx ) p x q n x

82. Elabore un algoritmo para calcular la combinación de un número   ,


m
n  
siendo m y n dos enteros positivos.
83. Elaborar un algoritmo para calcular el impuesto anual de 4ta categoría de
acuerdo al siguiente procedimiento
 Si un recibo por honorario es mayor de S/. 1500 se le hace la
retención del 10% caso contrario no tiene retención en un mes.
 Si se tiene un grupo de recibos por honorarios emitidos en el
mismo mes (estos no sobre pasan de S/. 1500) la suma de estos
no deben pasar de S/. 2625 no se le hace retención. Caso
contrario se le hace la retención de la suma total del 10%.
 Cuando la proyección de sus ingresos anuales por Rentas de
Cuarta Categoría no supere el monto afecto al impuesto (para el
ejercicio 2014: S/. 33,250), podrá solicitar la Suspensión de
Retenciones y/o Pagos a Cuenta. Deberá incluir también en la
cantidad referencial, los ingresos obtenidos por rentas de Quinta
Categoría en caso las tenga. Referencia: Resolución de
Superintendencia N° 373-2013/SUNAT
 La renta de cuarta categoría de acuerdo a los procedimientos de
la Sunat que han sobres pasado el monto afecto al impuesto se
deduce con el 20% de los ingresos brutos.
 Para Calcular el impuesto anual, De haberse obtenido, luego de
la deducción un monto positivo, a éste se procede aplicar la tasa
respectiva
Hasta 27 UIT 15%
Por el exceso de 27 UIT
21%
Y hasta 54 UIT
Por el exceso de 54 UIT 30%

Nota UIT = 3600

IMPUESTO = REMUNERACIÓN NETA x TASA


ANUAL ANUAL

REMUNERACION = Remuneración x Nº de + Gratificaciones de Navidad


BRUTA ANUAL y Fiestas Patrias, Otros
mensual meses que
ingresos percibidos en el mes
falta para
, Remuneraciones y Otros
culminar el ingresos percibidos en meses
año anteriores

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.

(Pista: (x + rand( ) % y) genera un numero aleatorio en el rango [x ,


y–1+x]).

4. Permita ingresar el nombre del bien, la cantidad a depreciar


y el número de años de depreciación, la salida debe mostrar
cada año y su depreciación. De acuerdo con el método de la
suma de los dígitos empleado en el análisis financiero para
calcular la depreciación. Por ejemplo suponga que un
automóvil de $20000 será depreciado durante un periodo
de 5 años, la suma de los dígitos del año: 1+2+3+4+5=15. De
acuerdo con el método el primer año el bien se deprecia
5/15, el segundo 4/15 y así sucesivamente.

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

Función nombre _ función (par1, par2, par3,…)


Inicio
Acciones

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
Funx/(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

15.3. Algoritmos Recursivos


Es un algoritmo que se define en términos de sí mismo. Son implementados en
forma de subrutinas (Funciones,, Procedimientos, subprogramas, etc.) De tal
manera que dentro de una subrutina recursiva hay una o más llamadas a sí
misma.
Es una herramienta muy potente en algunas aplicaciones sobre todo de
cálculo. La recursión puede ser utilizada como una alternativa a la repetición o
estructuras repetitivas. El uso de la recursión es particularmente idóneo para
la solución de aquellos problemas que pueden definirse de modo natural en
términos recursivos (Aguilar, 1988)
Recursividad directa: cuando en una subrutina hay llamadas a ella misma
Recursividad indirecta: cuando se tienen varias subrutinas y estas se llaman
unas a otras formado ciclos.
La recursividad es un elemento muy importante en la solución de algunos
problemas
Ventajas
Algunos problemas son esencialmente recursivos, por lo cual su
implementación se facilita mediante un algoritmo de naturaleza recursiva, sin
tener que cambiarlo a un método iterativo.
Desventajas
Puede llegar a utilizar grandes cantidades de memoria en un instante, pues
implementa una pila cuyo tamaño crece linealmente, con el número de
recursiones necesarias en el algoritmo
Ejemplo
Calcular factorial de un número n
Función factorial (n)
Inicio
Si n = 0 entonces
Factorial 1
Sino
Factorial  n* factorial(n-1)
Fin si
Fin

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

Función que calcule   , siendo m y n dos enteros positivos. Puede hacer


m
8.
n
uso de las funciones que haya realizado con anterioridad para calcular el
factorial.
9. Función que calcule la suma de las componentes de un vector.
n
ah
10. Función para calcular la suma s   n
, siendo a un vector dado como
h 1 h

argumento, a є Rn y siendo n > 0, entero otro argumento.


11. Función para calcular el producto escalar de dos vectores v є Rn y w є Rn,
suponiendo n > 0 entero.
12. Función Evapol(), que evalué el polinomio A(x) =a1xn+ … + anx1+ an+1x0, dado
el grado del polinomio n ≥ 0 entero, el vector de coeficientes a =( a1, …, an+1)
y el valor x. Puede hacer uso de las funciones que haya realizado con
anterioridad para calcular las potencias.
13. Función que calcule el vector de coeficientes de un polinomio C suma de
otros dos (A y B). La función ha de recibir los grados na, nb y los vectores
de coeficientes vA = (a1,…, ana+1) y vB = b1,…,bnb+1, de cada uno de los dos
polinomios sumados. La función devolverá el grado y el vector de
coeficientes del polinomio suma C = A+B.
14. Elaborar el algoritmo recursivo que permita leer un número que invierta los
dígitos del número.
15. Elaborar el algoritmo que calcule en forma recursiva los factores
primos de un número.
16. Elaborar el algoritmo que describa los movimientos que deben
realizarse para trasladar a la torre C todos los discos de diferentes
tamaños colocados en forma ordenada en una torre A.
Para efectuar esta tarea se dan las siguientes reglas:
a) Se puede emplear una torre auxiliar B
b) Se debe mover un disco cada vez
c) No se puede mover un disco de tamaño menor sobre un disco de
tamaño mayor.
17. de

16. Estructuras de Datos


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

Definido por el programador Sub rango


(No estándar) Enumerativo

Array (vectores / matrices)


Registros
Simples o Estáticos Ficheros
Conjuntos
Cadenas (String)
Datos estructurados
Listas (pilas / colas)
Compuestos o dinámicos Listas enlazadas
Arboles
Grafos

16.1. Arreglos unidimensionales (array)


Es un conjunto finito y ordenado de elementos homogéneos. La propiedad
ordenada significa que el elemento primero, segundo, tercero de un Arreglo
puede ser identificado. Los elementos de un arreglo son homogéneos, es decir
del mismo tipo de datos (Aguilar, 1988)
El tipo más simple de arreglo es el arreglo unidimensional o vector (matriz de
una dimensión) a continuación la representación de un vector

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

El subíndice o índice de un elemento(1, 2, ..,n) designa su posición en la


ordenación del vector
Declaración de un arreglo
Nombre arreglo = arreglo [liminf . . . limsup] de tipo de dato

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

Se tiene N temperaturas. Se desea calcular su media y determinar entre


todas ellas cuales son superiores o iguales a esa media
Algoritmo
Inicio
Suma  0
C0
Leer N
Desde i  1 hasta N hacer
Leer temp[i]
Suma  suma/N
Fin desde
Desde i  1 hasta N hacer
Si temp[i] >= media entonces
C C +1
Escribir temp[i]
Fin si
Fin desde i
Escribir “la media es:”, media
Escribir el total de temperaturas mayores iguales a la medio es : “, C
Fin

16.1.1. Ejemplos

Ejemplo 1

Calcular el porcentaje de cada nucleótido de una secuencia de ADN


ingresado por teclado en perl
#programa para calcular la frecuencia de bases de una secuencia de ADN
print"introducir la se cuencia de ADN :";
$mysec=<STDIN>;
chop($mysec);
$a=0;
$c=0;
$g=0;
$t=0;
$r=0;
$n=length($mysec);
print"el tamaño de la cadena es: $n \n";
@mysec=split //,$mysec;
#print @mysec;
for($i=0;$i<$n;$i++)
{
# $adn=$mysec[$i];
#print $adn;
if(@mysec[$i]eq"a")
{
$a=$a+1;
}
elsif (@mysec[$i]eq"c")
{
$c=$c+1;
}
elsif (@mysec[$i]eq"g")
{
$g=$g+1;
}
elsif (@mysec[$i]eq"t")
{
$t=$t+1;
}
else
{
$r=$r+1;
}
}
$porcentajea=100*$a/$n;
$porcentajec=100*$c/$n;
$porcentajeg=100*$g/$n;
$porcentajet=100*$t/$n;
$procentajer=100*$r/$n;
print"resultado en porcentaje de cada nucleotido es: \n";
print" Adenina: $porcentajea\n";
print" Citocina: $porcentajec\n";
print" Guanina: $porcentajeg\n";
print" Timina: $porcentajet\n";
print"otros Residuos: $procentajer\n";

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
ac
Fa sen(a)+cos(1+a^2)-1
sino
bc
Fb sen(b)+cos(1+b^2)-1
fin si
Escribir a, b, c, fa, fb, fc
ii+1
Hasta que (b-c ≤ e)
Fin

Ejercicio 26
Inicio
Leer n, x
S0
Si (x > -1) y (x ≤ 1) entonces
Para i1 hasta n hacer
potx^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

1. Determinar los valores de i, j, después de la ejecución de las


instrucciones siguientes.
Inicio
I1
J2
A[i]  j
A[j]  i
A[j + 1]  j + 1
I  A[j] + A [i]
A[3]  5
J  A[j] + A [i]
Fin
2. Dados los vectores A = 3 5 6 8 4 7 8 5 3 1 y B = 3 4 6 8 9 1 2 3 0 9,
realice un algoritmo para calcular las siguientes operaciones

3. Leer las componentes de un vector de números reales de dimensión


10. Escribirlo luego en la pantalla.
4. Leer un entero n supuesto n >0 y un vector v є Rn x 1, calcular y escribir
el producto escalar m = vtv, m є R, donde vt simboliza el vector
transpuesto de v.
5. Leer n (suponiendo que es entero y n > 0). Leer a continuación la n
componentes de un vector de números reales dimensión n. Calcular
y escribir luego la media aritmética de sus componentes
6. Leer n (suponiendo que es entero y n>0) y un vector de dimensión n.
Calcular y escribir la componente de mayor valor y su índice dentro
del vector.
7. Leer n (suponiendo que es entero y mayor que dos). Construir un
vector v є Rn x 1 tal que vk = vk-1 / 3 + 0.5, para k = 2,…,n y siendo v1 =
1.
8. Leer n (suponiendo que es entero y mayor de dos). Construir un
vector v є Rn x 1 , tal que sus componentes sean los términos de la
sucesión de Fibonacci.
9. Se han medido las longitudes de tornillos procedentes de un mismo
lote de fabricación. Se han dispuesto en un vector v de dimensión
n>2. Se dispone de v y n. Diseñe un algoritmo para calcular la media
y varianza de las longitudes. La varianza se calcular como
1 n
var   (vk   )2
n k 1

Siendo μ la media aritmética de las componentes de v.


10. Se quiere construir y escribir un vector v de dimensión n cuyas
componentes siguen la ley vk = 3*vk-1 – k, para k ≥ 2. Tanto n como
v1 son cantidades que han de leerse del teclado
11. La transcripción es el paso de DNA a RNA, donde todas las timinas (T)
de la secuencia cambian a uridinas (U). En este apartado debes
escribir un programa para transcribir secuencias de DNA. Introduce
la siguiente secuencia de DNA en el programa en forma de variable
escalar, y cambia todas sus T's por U's. Finalmente, como siempre,
escribe el resultado para comprobar que el programa hace lo
esperado.
12. El DNA es una hélice formada por dos cadenas, una complementaria
de la otra, que avanzan en sentidos opuestos:

5' ACTCAGA 3'


3' TGAGTCT 5'

A T
T A
C G
G C

En la cadena complementaria, las sustituciones de nucleótidos son


las siguientes:

La dirección en la que siempre deben dar las secuencias (por


consenso) es 5' 3'.
Escribe un programa que, dada una secuencia de DNA, calcule su
complementaria (y reversa).
Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC
13. Crear un vector de 70 elementos donde cada elemento del vector
sea igual a su posición.
14. Dado un vector "a" de n componentes reales, formular un
algoritmo para determinar los componentes máximo y mínimo.
15. Se dispone de las notas de 40 alumnos, cada uno de ellos puede
tener uno o varias notas. Escribir un algoritmo que permita
obtener la media de cada alumno y la media de la clase a partir de
la entrada de las notas desde un terminal
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, 5 pesetas 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. Supongamos que:
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. 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.
23. 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.
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). 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. Dados los arrays lineales ABC(-5:15); EJM(1935:1994);PQR(45)
Se pide calcular el número de elementos de cada array
28. 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
29. Obtener un algoritmo que lea un conjunto de n datos reales, los
almacene en un vector "a" y determine

a.- El recorrido, r = max(aj) - min(aj)


1 n
a  ai
n i 1
b.- El valor medio:

1 n
  ( ai  a ) 2
n i 1
c.- La desviación típica:

d.- El coeficiente de variación: a

30. Realice un algoritmo para determinar el puntaje de dos secuencias,


donde la coincidencia = 2, diferencia =-2 y gaps (Hueco) =-3, evalué
su algoritmo con las siguientes dos secuencias:
GA -CGGATTAG
GATCGGAATAG
Coincidencia = +2
Diferencia = -2
Gap = -3
Puntaje (T, S) = 9 *2 + 1* (-2) + 1* (-3) = 13
31. Escribir un programa que imprima las n primeras líneas de pascal (n
se ingresa por teclado)
1
11
121
1331
14641
32. En un juego de cartas cada participante saca una cara del mazo.
Cuando todos los jugadores han sacado su carta, quien obtiene la
mayor carta gana. El juego se repite hasta que se terminan las
cartas.
Implementar este juego de cartas para que un jugador juegue
contra el computador
33. Palíndromos: plegamiento o apareamiento de una hélice consigo
misma. El palíndromo también es una figura gramatical que se lee
igual en los dos sentidos, por ejemplo: DABALE ARROZ A LA ZORRA
EL ABAD. Existe ADN palindrómico de hélice sencilla y de hélice
doble. En el palíndromo de doble cadena la secuencia de bases se
lee igual en dirección 5’ P→ 3’OH en ambas cadenas.

34. Elaborar un algoritmo para implementar la matriz ANOVA para la


prueba de hipótesis con la siguiente formulas y probarlo con los
siguientes datos
Datos por Factor o Grupos (ci)

Escuela A Escuela B Escuela C Escuela D


6 6 10 9
8 7 6 9
9 8 5 9
9 6
7
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)

nc ScError
CMerror 
Ci2 nc
Error SCerror   x   2

ki
Total Scfactor + Scerror n-1

35. Elabore un algoritmo para hallar la norma euclídea de un vector,


para cuantificar el tamaño de un vector

n
X e
 x
i 1
2
i

36. Elabore un algoritmo para hallar la norma P de un vector, para


cuantificar el tamaño de un vector
n 1
 ( xi )
P P
X P
i 1

37. Elabore un algoritmo para hallar la norma P=2 de un vector, para


cuantificar el tamaño de un vector

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

39. Elabore un algoritmo para hallar la norma magnitud-máximo o


norma de vector uniforme

X  max xi
1i  n

40. Elaborar un algoritmo para calcular la frecuencia absoluta y su


acumulada absoluta; frecuencia relativa y su acumulada relativa;
frecuencia porcentual y su acumulada porcentual de una lista de n
elementos, los datos deben estar agrupados por intervalo, además
se debe calcular su media, desviación estándar y su varianza de los
datos

16.1.3. De

16.2. Ordenación, Búsqueda e intercalación:


16.2.1. Ordenación
Llamado también clasificación, es el proceso de organizar datos en algún
orden o secuencia específica tal como creciente o decreciente para datos
numéricos o alfanuméricos para datos de caracteres. Los métodos de
ordenación se dividen en dos categorías:
 Ordenación de vectores, tablas (arrays)
 Ordenación de archivos
Los métodos de clasificación se explicaran aplicados a vectores (arrays
unidimensionales) pero se pueden extender a matrices o tablas (arrays
bidimensionales) considerando la ordenación respecto a una fila o
columna los métodos directos son los que se realizan en el espacio
ocupado por el array. Los más populares son:
 Método de intercambio o burbuja
 Método de Selección
 Método de Inserción
Método de intercambio o de Burbuja
Se basa en el principio de comparar pares de elementos adyacentes e
intercambiarlos entre sí, de una lista o vector hasta que estén todos
ordenados.
50 15 56 14 35 1 12 9
A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8)
Los pasos a dar son:

 Comparar A (1) y A (2), si están en orden, se mantienen como están,


en caso contrario se intercambian entre sí.
 A continuación se comparan los elementos 2 y 3; de nuevo se
intercambian si es necesario.
 El proceso continua hasta que cada elemento del vector ha sido
comparado con sus elementos adyacentes y se han realizado los
intercambios necesarios

Algoritmo:

Desde i  1 hasta n-1 hacer {este representa el numero pasadas}


Desde j  1 hasta n-1 hacer {este representa número de comparaciones}
Si A[ j ] > A [j+1] entonces
AuxA[j]
A[j]  A [j+1]
A [j+1] Aux
Fin si
Fin desde j
Fin desde i

Método de Selección

El algoritmo de ordenación por selección de una lista o vector de n


elementos tiene los siguientes pasos.

 Encontrar el elemento mayor de la lista


 Intercambiar el elemento mayor con el elemento de subíndice n (o
bien el elemento menor en el subíndice 1)
 A continuación se busca el elemento mayor en la sablista de
subíndices 1.. n-1 y se intercambia con el elemento de subíndice n-1,
por consiguiente se sitúa el segundo elemento mayor en la posición
n-1.
 A continuación se busca el elemento mayor en la sablista 1..n-2 y así
sucesivamente

Algoritmo
Función Posmayor (j,tabla)
Inicio
Índice_max 1
Desde índice  2 hasta j hacer
Si tabla [índice]> tabla [índice_max] entonces
Indice_maxindice
Fin si
Posmayorindice_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

 Se divide la lista original (16 elementos como ejemplo) en este caso


en 8 grupos de dos(considerando un incremento o intervalo de 16/2
=8)
 Se clasifica cada grupo por separado (se comparan las parejas de
elementos y si no están ordenados) se intercambian entre sí de
posiciones)
 Se divide ahora la lista en cuatro grupos d de cuatro (intervalo de
salto 8/4 = 4) y nuevamente se clasifica cada grupo por separado.
 Un tercer paso clasifica dos grupos de ocho registros y luego un
cuarto paso completa el trabajo clasificando todos los 16 registros
Algoritmo
Inicio
Intervalo  n div 2
Mientras (intervalo > 0) hacer
Desde i  (intervalo - 1) hasta n hacer
j i – intervalo
Mientras (j > 0) hacer
K  i + intervalo
Si A[j] <= A[k] entonces
j 0
Sino {intercalar A[j], A[k]}
AuxA[j]
A[j] A[k]
A[k] aux
Fin si
j = j - intervalo
Fin mientras
Fin desde i
Intervalo  intervalo div 2
Fin mientras
Fin
Método de ordenación rápida (ojo trabajo)
16.2.2. Búsqueda
La búsqueda de información está relacionada con las tablas para consulta.
Estas tablas contienen una cantidad de información que se almacena en
forma de listas de parejas de datos
Método de búsqueda secuencial
Supongamos una lista de elementos almacenados en un vector (array
unidimensional). El método más sencillo de buscar un elemento en un
vector es explorar secuencialmente el vector o dicho en otras palabras,
recorrer el vector desde el primer elemento hasta el último. Si se encuentra
el elemento buscado visualizar un mensaje similar “fin de la búsqueda o
elemento encontrado”, en casi contrario visualizar un mensaje similar a
“elemento no encontrado” (Aguilar, 1988).
Algoritmo 1
Inicio
Leer t
(Recorrido del vector)
Desde i  1 1 hasta n hacer
Si A[i] = t entonces
Escribir “elemento encontrado”
Fin si
Fin desde
Fin
Algoritmo 2
Inicio
Leer t
I1
Mientras (A[i] <> t) y (i <= n) hacer
I  i+1 (este bucle se detiene bien con A[i]= t o bien con i >n)
Fin mientras
Si A[i] = t entonces (condición de parada)
Escribir “el elemento se ha encontrado en la psicion”, i
Sino
Escribir “el número no se encuentra en el vector”
Fin si
Fin
Método de búsqueda binaria
La búsqueda secuencial es se comienza con el primer elemento del vector
y se busca en el hasta que se encuentra el elemento o se alcanza el final
del vector, aunque este método puede ser un método adecuado para
pocos datos, se necita una técnica más eficaz para conjuntos grandes de
datos.
El método de búsqueda binaria se basa en la división sucesiva del espacio
ocupado por el vector en sucesivas mitades hasta encontrar el elemento
buscado, este vector debe estar ordenado. La búsqueda binaria utiliza el
método de divide y vencerás para localizar el valor buscado. Con este
método se examina primero el elemento central de la lista, si este es el
elemento buscado, entonces la búsqueda ha terminado. En caso contrario
se determina si el elemento buscado está en la primera o la segunda mitad
de la lista y a continuación se repite este proceso, utilizando el elemento
central de esta sablista (Aguilar, 1988)
Algoritmo
Inicio
Leer k (inicializar variables)
Bajo  1
Alto  N
Central ent((bajo + alto)/2)
Mientras (bajo <= alto) y (A[central] <>K ) hacer
Si K < A[central] entonces
Alto  central - 1
Sino
Bajo  central + 1
Fin si
Central ent((bajo + alto)/2)
Fin mientras
Si k = A[central] entonces
Escribir “valor encontrado en”, central
Sino
Escribir “valor no encontrado”
Fin si
Fin
Método de busca por claves
La búsqueda binaria proporciona un medio para reducir el tiempo
requerido para buscar en una lista. Este método, sin embargo, exige que los
datos estén ordenados. Por lo que surge este método para mejorar la
velocidad de búsqueda sin estar ordenados. El método de transformación
de claves o hashing consiste en convertir la clave dada (numérica o
alfanumérica) en una dirección (índice) dentro del arreglo. La
correspondencia entre claves y la dirección en el medio de almacenamiento
o en el arreglo se establece por una función de conversión (función o hash).
(Aguilar, 1988)
OJO Trabajo
16.2.3. Mezcla o intercalación
La intercalación es el proceso de mezclar (intercalar) dos vectores
ordenados y producir uno nuevo vector ordenado
Algoritmo

Inicio
Leer A, B (A, B vectores de M y N elementos9
I1
J1
K1
Mientras i <= M y j <= N hacer
(seleccionar siguiente elemento de A o B y añadirlo en C)
Kk+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

2. Ordenar por los métodos de inserción directa y binaria, desarrolle la


prueba de escritorio

30 50 4 3 10 2 20 9 14 15

3. Ordenar por los métodos Shell y selección directa, desarrolle la


prueba de escritorio

12 0 54 30 100 21 2 9 1 5

4. Desarrolle la prueba de escritorio del método de búsqueda de


secuencial para encontrar el número 2 de la siguiente tabla.

12 0 54 30 100 21 2 8 11 15

5. Desarrolle la prueba de escritorio del método de búsqueda de binaria


para encontrar el número 9 de la siguiente tabla.

11 10 54 30 101 20 2 9 1 5

6. Mezclar los siguientes vectores, realice la prueba de escritorio y


muestre la tabla mezclada y ordenada

34 11 15 6 1 16 23 90 4 10
30 5 14 13 10 12 20 9 14 15

16.3. Arreglos bidimensionales:

Se puede considerar como un vector de vectores. Es por consiguiente un


conjunto de elementos, todos del mismo tipo en el cual el orden de los
componentes es significativo y en el que se necesitan especificar dos subíndices
para poder identificar a cada elemento del arreglo. (Aguilar, 1988).

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

Inicializar una matriz de dos dimensiones con un valor constante K


Algoritmo
Inicio
Desde i  1 hasta M hacer
Desde j  1 hasta N hacer
Q[i,j]  K
Fin desde j
Fin desde i
fin

Ejemplo 2

Realiza la suma de dos matrices


Algoritmo
Inicio
Desde i  1 hasta m hacer
Desde j  1 hasta n hacer
S[i,j]  Q[i,j] + B[i,j]
Fin desde j
Fin desde i
fin

Ejercicios

1. Lectura / escritura de una matriz m x n. Se han de leer del teclado las


dimensiones m y n (suponga que son números enteros positivos). A
continuación se han de leer los elementos akj de una matriz A de m
filas y n columnas. Finalmente se presentará en la pantalla la matriz
leída.
2. Construir una matriz A є Rm x n cuyo elemento genérico akj viene dado
por akj = k2 – j
3. Dada una matriz (se supone ya leída) A de dimensiones m x n, se
quiere anular (poner a cero) los elementos de su diagonal principal y
escribir la matriz resultante.
4. Traza de una matriz. Dada una matriz cuadrada A є R nxn , dada
siendo n > 0 un entero también dado se ha de diseñar un algoritmo
que permita obtener la traza de A (suma de los elementos de la
diagonal)
5. Crear una matriz de n x m, intercambiar la primera fila con la
segunda. Imprimir la matriz
6. Crear una matriz de n x m. imprimir los cuatro valores que se
encuentran en los vértices de la misma
7. Crear una matriz de n x m. imprimir el mayor elemento y la fila y
columna donde se almacena.
8. Suma de matrices. Dadas (suponga que ya han sido leídas) dos
matrices A є R n x n y B є R n x n, se quiere calcular y escribir la matriz C
obtenida como suma de las anteriores c = A +B
9. Matriz traspuesta. Dada una matriz A є R n x n, calcular su traspuesta
B= At.
10. Submatriz triangular. Dada una matriz A є R n x n, se desea calcular
otra matriz B є R nxn cuyos elementos son ceros excepto los de la
submatriz triangular inferior que son iguales a los elementos de igual
posición de A. Es decir, los elementos que están por debajo de la
diagonal principal de A se copian en B, el resto de elementos de B
valen cero. Se supone que tanto m como n son números enteros
mayores que uno ya leídos.
11. Máximo de una matriz. Dada una matriz A є R n x n, calcular el
elemento mayor.
12. Máximo de cada matriz. Dada una matriz A є R n x n , con m > 1 y n >
1 dados se desea calcular un vector v є R n x n cuya componente
genérica vk, es el mayor valor de la fila k-esima de A.
13. Escribir el algoritmo que permita determinar el número de
elementos positivos de una tabla.
14. Leer una matriz de 3 por 3 elementos y calcular la suma de cada una
de sus filas y columnas, dejando dichos resultados en dos vectores,
uno de la suma de las finas y otro de las columnas.
15. Realizar los algoritmos: de la matriz inversa, producto de matrices,
multiplicación de una matriz por un escalar, matriz identidad y
matriz triangular.
16. 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.
17. Juego del Rojo-amarillo-verde. El programa genera tres dígitos
aleatorios distintos entre 0 y 9. A estos dígitos se les asignan las
posiciones 1, 2 y 3. El objetivo del juego es adivinar los dígitos así
como sus posiciones correctas en el menor número de intentos
posibles. Para cada intento, el jugador proporciona tres dígitos para
las posiciones 1, 2, y 3. El programa responde con una pista que
consta de rojo, amarillo y verde. Si un dígito adivinado está en la
posición correcta la respuesta es verde. Si el digito adivinado está en
posición incorrecta, la respuesta es amarillo. Si el dígito para una
posición dada no coincide con ninguno de los tres dígitos, la
respuesta es rojo. Ejemplo: dígitos 6,5,8 en las posiciones 1,2,3

18. Jhon Pérez ha heredado $1.000. Él ha decidido invertir su dinero por


un año. Un inversionista le ha sugerido cinco inversiones posibles:
oro, bonos, negocio en desarrollo, certificado de depósito, acciones.
Jhon debe decidir cuánto invertir en cada opción. La siguiente tabla
representa las ganancias que obtendría para cada escenario posible
de comportamiento del mercado
Utilizar el Criterio de Hurwicz: Es un criterio intermedio entre
maximin y el maximax: Supone la combinación de ponderaciones de
optimismo y pesimismo. Sugiere la definición del llamado coeficiente
de optimismo (α), y propone que se utilice como criterio de decisión
una media ponderada entre el máximo resultado asociado a cada
alternativa, y el mínimo resultado asociado a la misma.

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

Para hallar la solución óptima se marca el máximo y el mínimo de


cada alternativa. Según el coeficiente de optimismo del decidor (α),
se multiplica el máximo por éste y el mínimo se multiplica por (1-α).
Luego se suman los dos. Luego elegimos el máximo entre todas las
alternativas. En nuestro ejemplo, si suponemos que el empresario es
neutral α=0,5.
19. Lea una matriz de N x M (variables) e indique luego , Cuantos
elementos positivos contiene la matriz, Cuantos elementos pares y
positivos contiene, Cuál es el mayor elemento que contiene la matriz
y cuantas veces figura.
20. Crear una matriz de dimensiones variables y llenarlas de unos e
imprimirla.
21. Crear a una matriz N x N , cuya diagonal principal (i = j) esté formada
por unos y el resto por ceros.
22. Crear una matriz de 5 x 5 donde cada elemento de esta corresponda
a la suma de los índices de la fila con la columna (i + j).
23. Su ponga que ya ha sido leída una matriz de 9 x 5, se le pide que
encuentre el número de elementos pares que contiene la matriz.
Luego imprima la matriz completa.
24. Lea una matriz de dimensiones 5 x 5 y luego entregue:
El promedio de los elementos de la segunda fila de la matriz
La suma de elementos de la cuarta columna de la matriz.
25. Multiplicación de matrices. Suponga ya leidas A є R m x n y B є R n x p,
calcule C=A*B.
26. Matriz al cubo. Diseñe un algoritmo que permita obtener B = A 3,
siendo A є R n x n una matriz cuadrada que se supone ya leída.
27. Exponenciación de matrices. Diseñe un algoritmo que permita
obtener B = Ap, siendo A є R n x n, una matriz dada y p >0 un entero
también dado.
28. Dados dos enteros positivos m y n se desea construir la matriz S є R
n
1
m x n, cuyo elemento genérico viene dado por skj   j
k 1 h

29. Dados los array multidimensionales:


X (-5:5; 3:33) y Y (3:10; 1:15; 10:20)
Se pide calcular la longitud de cada dimensión y el número de
elementos de X e Y.
30. Un arreglo estrictamente triangular inferior A es un arreglo de n x n,
en el cual a[i, j] ≠ 0, si i<=j,
¿Cuál es el máximo número de elementos no iguales a cero en tal
arreglo?
¿Cómo pueden almacenarse secuencialmente estos elementos en la
memoria?
¿Desarrolle un algoritmos para accesar A[i, j] donde i>=j?
31. Construir un algoritmo que imprima el calendario correspondiente a
un mes y año determinado. Por ejemplo considera años bisiestos
entre 1980 y 2020. Los días domingos deben aparecer resaltados.
32. Diseñar un programa que pida la dimensión n de una matriz cuadrada
de n x n y genere una matriz espiral, matriz en diagonal, una matriz
en ángulo recto y una matriz anti diagonal tal como se muestra en las
figuras.
33. Elaborar un algoritmo para implementar la matriz ANOVA con la
siguiente formulas y probarlo con los siguientes datos
Datos por Factor o Grupos (ci)
Escuela A Escuela B Escuela C Escuela D
6 6 10 9
8 7 6 9
9 8 5 9
9 6
7

34. Elaborar un algoritmo para determinar la norma euclídea, para

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)

nc CMerror 
ScError
nc
Ci2
Error SCerror   x   2

ki

Total SCfactor + Scerror n-1

cuantificar el tamaño de un vector

m n
Ae 
i 1 j 1
aij2

35. Elaborar un algoritmo para hallar la norma P=2 de una matriz


m n

 aij
2
A2
i 1 j 1

36. Elaborar un algoritmo para desarrollar la norma columna suma


n
A  max  aij
1 j n
i 1

37. Elaborar un algoritmo para desarrollar la norma renglón suma

n
A  max  aij
1i n
j 1

38. Elaborar un algoritmo para determinar la norma 2 o norma espectral


para matrices
1
A 2  (  max ) 2

Donde
t
µmax=es el mayor eigenvalor A A
a. Ecdscds

39. Estructuras lineal


a. Pilas:

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.

Pseudocódigo de las operaciones apilamiento y desapilamiento

Apilamiento

Inicio
Leer X
Si tope ≥ N entonces
Escribir “Pila llena”
Sino
topetope+1
pila(tope) X
fin_si
Fin

Desapilamiento

Inicio
Si tope=0 entonces
Escribir “Pila vacía”
Sino
Elementopila(tope)
topetope-1
fin_si
Fin

Notaciones de expresiones aplicando pilas


Infija
Prefija
Posfija

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.

Las operaciones con la cola son las siguientes


 Creación o limpieza: Inicializa cola al estado vacío.
 Pila vacía: Determina si la cola está vacía.
 Pila llena: Determina si la cola está llena.
 Apilamiento o ingreso (METER): Inserta un nuevo elemento a la cola
(en la cima).
 Desapilamiento o borrado (SACAR): Elimina el elemento en la cima de
la cola.
c. sw
40. Estructura no lineal
a. Arboles
b. Grafos

Supongamos que un problema requiere de 2 pilas: A(n1) y B(n2). No disponemos de


mucha memoria y para evitar desbordamiento, es decir que la cantidad de elementos
de A sea mayor que n1 o que la cantidad de elementos de B sea mayor que n2.
Empleamos un solo array C con n1+n2 elementos con la particularidad que la pila A mete
sus datos por la izquierda desde el elemento 1 y la pila B mete sus datos por la derecha
desde el elemento n. Elabore las operaciones meter y sacar para este caso.

Desarrollar el algoritmo que lea una cadena de caracteres y determine si forma un


palindrome. Un palindrome es una secuencia de caracteres que se lee igual hacia
adelante que hacia atrás por ejemplo.

ABLE WAS I ERE I SAW ELBA


El carácter “.” (punto) termina la cadena. Escribir un mensaje indicando si la cadena es
un palindrome. Puede asumir que los datos son correctos y que el número máximo de
caracteres es 80.

Escriba el algoritmo de conversión de una expresión infija a prefija. Supongamos que EI


es una expresión aritmética escrita en notación infija. EI puede tener paréntesis
izquierdos y derechos, operandos (dígitos 0 – 9 y letras A - Z), operadores (^ = potencia,
* = multiplicación, / = división, + = suma, - = resta de acuerdo con sus prioridades).
Efectué la prueba de escritorio para la siguiente expresión: Z =((((X+1)*2)-5)/Y)

Convertir un número decimal de horas en un número entero de horas, minutos y


segundos. El número de segundos se redondeara al entero más próximo.
Escribir un programa que cree una tabla de conversión de
Pulgadas a centímetros (1 pulgada = 2.54 cm.)
Pies a metros (1 pie = 0.3048 metros = 12 pulgadas)
Millas por hora a Kilometros por hora (50 m/h = 80 Km/h)
Grados a radianes (360 grados = 2π radianes, π =3.141592)

Construir un programa que imprima el calendario correspondiente a un mes y año


determinado. Considere años bisiestos y año julianos entre 1900 y 2020. Los días
domingos deben aparecer resaltados.

Suponiendo que A es un conjunto [1, 3, 5, 7], B es [2, 4, 6] y C es [ 1, 2, 3] . Elabore


un algoritmo y evalué las siguientes expresiones
A+(B+C)
A+(B*C)
A+B+C
C+(A+C)
C-(A-B)
(C-A)-B

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

Represente la siguiente expresión algebraica en árbol binario Escriba los recorridos


preorden, inorden y postorden

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

Dado el siguiente bosque conviértalo a á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:

El máximo valor contenido en la lista


Calcular la media de los valores de la lista
Elimine un nodo sucesor de uno determinado
Que inserte un dato después de un nodo especifico
Elabore el algoritmo para realizar una búsqueda binaria en un arreglo numérico A(i),
donde i va desde 1 hasta n. siendo n un numero par

Elabore el algoritmo para ordenar un arreglo numérico A(i), donde i va de 1 hasta n,


emplear el método Shell.

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.

Además se imponen las siguientes restricciones:

─ No pueden jugar si solo desea hacerlo uno de los cuatro hijos


─ No pueden jugar si solo desean hacerlo los hijos de edades impares.

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.

Empleando pseudocódigo, elaborar el algoritmo que cetermine las permutaciones de


los números 1, 2, …, n; utilizando un procedimiento recursivo. N es un entero positivo
que se introduce durante la ejecución del programa.

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)

Determinar si una matriz de 3 filas por 3 columnas es un cuadrado mágico, se considera


un cuadrado mágico aquel en el cual las filas, columnas y diagonales suman la misma
cantidad.

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.

Construir un algoritmo para la expedición de facturas a los clientes de una empresa de


acuerdo con las siguientes hipótesis:

Los clientes deudores no tienen descuento.

─ Si un artículo se factura más de 5000 unidades se realizara un 10% de descuento


a los artículos del tipo M y un 5 % a los tipos N.
─ Solo en el caso de los artículos del tipo M, se añadirán al descuento del
apartado B un 5% más si la venta se realizó en la zona fronteriza de Tacna y un
3% más para la zona fronteriza de tumbes.
E. Es importante saber convertir entre mayúsculas y minúsculas. A partir de una secuencia de
DNA haz conversiones globales utilizando las funciones uc y lc, y otras en caracteres
específicos utilizando los operadores s///g y tr///.

FUNCIONES:
A.

Comandos básicos: variables escalares

Funciones: print

B.

Comandos básicos: variables escalares, concatenación de cadenas (.)

Expresiones regulares: \n

Funciones: print

C.

Comandos básicos: variables escalares

Expresiones regulares: \n, s//g

Funciones: print

D.
Comandos básicos: variables escalares

Expresiones regulares: \n, tr//

Funciones: print, reverse

E.

Comandos básicos: variables escalares

Expresiones regulares: s//g, tr//

Funciones: print, uc, lc

SOLUCION:
EJERCICIO: 1A

#!/usr/bin/perl -w
# Example 4-1 Storing DNA in a variable, and printing it out

# First we store the DNA in a variable called $DNA


$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';

# Next, we print the DNA onto the screen


print $DNA;

# Finally, we'll specifically tell the program to exit.


exit;

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';

# Print the DNA onto the screen


print "Here are the original two DNA fragments:\n\n";

print $DNA1, "\n";

print $DNA2, "\n\n";

# 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";

# An alternative way using the "dot operator":


# Concatenate the DNA fragments into a third variable and print them
$DNA3 = $DNA1 . $DNA2;

print "Here is the concatenation of the first two fragments (version 2):\n\n";

print "$DNA3\n\n";

# Print the same thing without using the variable $DNA3


print "Here is the concatenation of the first two fragments (version 3):\n\n";

print $DNA1, $DNA2, "\n";


exit;
EJERCICIO 1C:

#!/usr/bin/perl -w
# Example 4-3 Transcribing DNA into RNA

# The DNA
$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';

# Print the DNA onto the screen


print "Here is the starting DNA:\n\n";

print "$DNA\n\n";

# Transcribe the DNA to RNA by substituting all T's with U's.


$RNA = $DNA;

$RNA =~ s/T/U/g;

# Print the RNA onto the screen


print "Here is the result of transcribing the DNA to RNA:\n\n";

print "$RNA\n";

# Exit the program.


exit;

EJERCICIO 1D:
#!/usr/bin/perl -w
# Example 4-4 Calculating the reverse complement of a strand of DNA

# The DNA
$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';

# Print the DNA onto the screen


print "Here is the starting DNA:\n\n";

print "$DNA\n\n";

# Calculate the reverse complement


# Warning: this attempt will fail!
#
# First, copy the DNA into new variable $revcom
# (short for REVerse COMplement)
# Notice that variable names can use lowercase letters like
# "revcom" as well as uppercase like "DNA". In fact,
# lowercase is more common.
#
# It doesn't matter if we first reverse the string and then
# do the complementation; or if we first do the complementation
# and then reverse the string. Same result each time.
# So when we make the copy we'll do the reverse in the same statement.
#

$revcom = reverse $DNA;

#
# 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 the reverse complement DNA onto the screen


print "Here is the reverse complement DNA (using s\/\/\/g):\n\n";

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;

# See the text for a discussion of tr///


$revcom =~ tr/ACGTacgt/TGCAtgca/;

# Print the reverse complement DNA onto the screen


print "Here is the reverse complement DNA (using tr\/\/\/g):\n\n";

print "$revcom\n";

print "\nThis time it worked!\n\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

You might also like