Apuntes de Algoritmos Realizado por Ing. Kene Reyna Rojas
El presente documento es una recopilación recopilación de apuntes de algoritmos diferentes diferentes autores de libros, documentos y direcciones de internet internet
INDICE GENERAL 1.
Sistema de procesamiento procesamiento de información información ................................................. ........................................................... ........... 0
2.
Concepto de algoritmo .......................................... ................................................................ ............................................ ............................. ....... 0 2.1.
Características Características de los algoritmos ........................................................ ..................................................................... .............. 0
2.2.
Partes de un algoritmo. .................................................... .......................................................................... ................................. ........... 0
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 .................................................. ................................................. 1
Representación de un algoritmo ................................................ ...................................................................... ............................. ...... 1
4.
4.1.
Diagrama de flujo ........................................... ................................................................. ............................................ ............................. ....... 1
4.2.
Pseudocódigo ......................................... ............................................................... ............................................. ..................................... .............. 2
Datos y Tipos de datos .......................................... ................................................................ ............................................ ............................. ....... 3
5.
5.1.
Datos numéricos. ....................................................... ............................................................................. ........................................ .................. 3
5.1.1.
Enteros: ........................................... .................................................................. ............................................. .................................... .............. 3
5.1.2.
Reales: .......................................... ................................................................ ............................................ ........................................ .................. 3
5.2.
Datos Lógicos: ......................................... ............................................................... ............................................. ..................................... .............. 3
5.3.
Datos carácter: ........................................... ................................................................. ............................................ ................................. ........... 3
6.
Constantes y Variables: ............................................. ................................................................... ............................................ ......................... ... 4
7.
Operadores ............................................. ................................................................... ............................................ ............................................ ...................... 4 7.1.
Relacionales o condicionales: .......................................... ................................................................. ................................. .......... 4
7.2.
Aritméticos : ........................................... .................................................................. ............................................. .................................... .............. 4
7.3.
Alfanuméricos: ........................................... ................................................................. ............................................ ................................. ........... 5
7.4.
Lógicos o Booleanos: .......................................... ................................................................ ............................................ ......................... ... 5
7.5.
Paréntesis: ........................................... ................................................................. ............................................ ........................................ .................. 5
8.
Expresiones ............................................. ................................................................... ............................................ ............................................ ...................... 6
9.
Regla de Prioridad ......................................... ............................................................... ............................................. ..................................... .............. 6
10.
Operación de Asignación .......................................... ................................................................ ............................................ ...................... 7
11.
Ejercicios .......................................... ................................................................. ............................................. ............................................. ......................... .. 7
12.
Estructura General de un Programa ............................................... .................................................................... ...................... 8
12.1. 13.
Partes de un programa .......................................... ................................................................. ........................................ ................. 8
Instrucciones y tipos de instrucciones ........................................... ................................................................. ...................... 9
13.1.
Instrucción .......................................... ................................................................. ............................................. .................................... .............. 9
13.2.
Tipos de instrucción. ......................................................... ............................................................................... ............................. ....... 9
14.
Programación Estructurada Estructurada ............................................................ ............................................................................... .................... 10
14.1.
Estructuras Secuencial .......................................................... ................................................................................ ....................... 10
14.2.
Estructuras Selectivas .............................................................. ................................................................................. .................... 14
14.2.1. Selectivas simples: ......................................... ............................................................... .......................................... .................... 15 14.2.2. Selectivas Dobles: .......................................... ................................................................ .......................................... .................... 16 14.2.3. Selectivas múltiples: .......................................... ................................................................. ...................................... ............... 17 14.2.4. Ejemplos .......................................... ................................................................. ............................................. .................................. ............ 17 14.2.5. Ejercicios .......................................... ................................................................. ............................................. .................................. ............ 19 14.3.
Estructuras Repetitivas. ................................................ ....................................................................... ............................... ........ 27
14.3.1. Estructura repetitiva mientras (While o Do while): ............................... 36 14.3.2. Estructura repetitiva para (For): ............................................. ............................................................ ................ 37 14.3.3. Estructura repetitiva repetir: ............................................ ................................................................... ....................... 38 14.3.4. Ejemplos .......................................... ................................................................. ............................................. .................................. ............ 38 14.3.5. Ejercicios .......................................... ................................................................. ............................................. .................................. ............ 45 15.
Subprogramas ............................................ ................................................................... ............................................. .................................. ............ 57
15.1.
Procedimientos Procedimientos (Subprograma): (Subprograma): ..................................................... ................................................................ ............ 57
15.2.
Funciones ............................................ ................................................................... ............................................. .................................. ............ 58
15.3.
Algoritmos Recursivos ........................................... .................................................................. ...................................... ............... 59
16.
Estructuras de Datos .......................................... ................................................................ ............................................ ........................... ..... 61
16.1.
Arreglos unidimensionales unidimensionales ...................................................... ......................................................................... .................... 62
16.1.1. Ordenación.......................................... ................................................................ ............................................ ............................... ......... 63 16.1.2. Búsqueda ......................................... ............................................................... ............................................. ................................... ............ 74 16.2.
Arreglos bidimensionales bidimensionales ............................................................ ........................................................................... ................ 78
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 de 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
2.
Procesador
Salida=Información
Concepto de algoritmo
Es el conjunto de instrucciones que especifican la secuencia de operaciones a realizar en orden para resolver un sistema específico o clase de problema. Los algoritmos son independientes tanto del lenguaje de programación en que se expresa como de la computadora que los ejecuta. El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de la técnica de la programación. En esencia. Todo problema se puede describir por medio de un algoritmo (Aguilar, 1988) 2.1. Características de los algoritmos
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento ósea debe tener un numero finito de pasos
2.2. Partes de un algoritmo
La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida Entrada: son los datos que van iniciar el proceso Proceso: Es la secuencia de paso que nos permite ejecutar alguna operación Salida: Es la información que se requiere al resolver el problema 2.3. Frfr
3. Resolución de problemas con computadoras y las herramientas de programación
Esta se puede dividir en tres fases importantes 3.1. Análisis del problema:
El problema debe estar bien definido si se desea llegar a una solución satisfactoria, para poder definir con precisión el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle. Una buena definición del problema junto con una descripción detallada de las especificaciones de entrada y salida son los requisitos más importantes para llegar a una solución eficaz. El Análisis del problema exige una lectura previa del problema a fin de obtener una idea general de lo que se solicita la segunda lectura servirá para responder a las preguntas ¿Qué información debe proporcionar la resolución del problema? ¿Qué datos se necesitan para resolver el problema? 3.2. Diseño o desarrollo del algoritmo
La descomposición del problema original en subproblemas más simples y a continuación dividir estos subproblemas en otros más simples que pueden ser implementados para la solución en la computadora se denomina diseño descendente (Top – Down Design.). Las ventajas más importantes del diseño descendente son. El problema se comprende más fácilmente al dividirse en partes más simples denominados módulos. Las modificaciones en los módulos son más fáciles La comprobación del problema se puede verificar fácilmente Tras los pasos anteriores es preciso representar el algoritmo mediante determinadas herramientas de programación diagrama de flujo, pseudocódigo o diagrama N-S 3.3. Resolución del algoritmo en la computadora
Una vez que el algoritmo está diseñado y representado gráficamente mediante una herramienta de programación (diagrama de flujo, pseudocódigo o diagrama N-S) se debe pasar a la fase de resolución práctica del problema con la computadora 4. Representación de un algoritmo
Para representar los algoritmos debemos utilizar métodos gráficos o numéricos, que sea independiente de un lenguaje de programación, de tal manera que nos permita visualizar el algoritmo que queramos representar, existen varios métodos, los más usados a nivel internacional son el diagrama de flujo y el pseudocódigo. 4.1. Diagrama de flujo
Es un diagrama que utiliza los símbolos (cajas) estándar mostrados y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar.
Un diagrama de flujo (flowchart) es una de las técnicas de representación de algoritmos más antigua y a la vez más utilizada, aunque su empleo ha disminuido, estos símbolos están normalizados por ANSI y entre las cajas más importantes tenemos: (Aguilar, 1988) Símbolo
Función Terminal: representa el comienzo,
inicio, final y fin de un programa. Puede representar también una parada o interrupción programada Entrada / Salida : cualquier tipo de
Si
No
introducción de datos en la memoria desde los periféricos o registro dela 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, normalmente dos y en función del resultado de la misma determina cuál 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 existen los siguientes tipos de datos enteros Byte, enteros de 8 bits, con rango de valores entre -128 y 127 Short, entero corto de 16 bits, con rango de valores entre -32768 y 32767 Int entero de 32 bits, con rango de valores entre -2147483648 y 2147483647 Long, entero largo de 64 bits, con rango de valores entre 9223372036854775808 y 9223372036854775807 5.1.2. Reales:
El tipo real consiste en un subconjunto de los números reales, Los números reales siempre tienen su punto decimal y pueden ser positivos o negativos En java existen los siguientes tipos de datos reales Float, valores de punto flotante de 32 bits, con rango de valores entre1.40239846e-45 y 3.40282347e+38 Doublé, valores de punto flotante de 64 bits, con rango de valores entre 4.9406564581246544e-324 y 1.79769313486231570e+308 5.2. Datos Lógicos:
Tipo lógico también denominado booleano, es aquel dato que solo puede tener uno o dos valores cierto o verdadero (True ) y falso (False), este tipo de dato se utiliza para representar alternativas (si/no) a determinadas conclusiones En java existe Boolean, sus valore son true y false 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 (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 En java existe Char, valores de 16 bits, no signados de 0 65535 representa caracteres Unicode 6. Constantes y Variables:
Los programas de computadora contiene ciertos valores que no deben cambiar durante la ejecución del programa tales valores se llaman constantes de igual forma existen otros valores que cambiaran durante la ejecución del programa a estos valores se les llama variables. 7. Operadores
Todos los símbolos que representan enlaces entre cada uno de los argumentos que intervienen en una operación se llaman operadores y se utilizan para construir expresiones. (Rodriguez Almeida, 1991) Los operadores pueden ser: 7.1. Relacionales o condicionales:
Se utilizan para formar expresiones booleanas, es decir, expresiones que al ser evaluadas producen un valor booleano: verdadero o falso. Tal como se muestra en la figura (Rodriguez Almeida, 1991)
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
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 algunos 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 sus 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. Estructura General de un Programa
Es un conjunto de instrucciones, ó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. Partes de un programa
Entrada
Programa (algoritmo de resolución)
Salida
12.2. d 13. Instrucciones y tipos de instrucciones 13.1. Instrucción
Son las acciones o instrucciones que se deben escribir y posteriormente almacenar en memoria en el mismo orden en que han de ejecutarse, es decir, en secuencia 13.2. Tipos de instrucción
Instrucciones de inicio y fin
Son aquellas instrucciones que inicializan y finalizan la escritura y ejecución del programa por ejemplo en java public class { public static void main(String[], args){ } }
Instrucciones de asignación
Son aquellas instrucciones que permite asignar valores a una variable Ejemplo en java I=3; Int x []; Int [] x; Char [] c = {1, b, c, d, e} Char [] x = new char [20]; Char x [] = new char [20]; Char [] [] x =new char [3][2];
Instrucciones de lectura
Esta instrucción lee datos de un dispositivo de entrada ejemplo leer edad, tiempo. Ejemplos. a=Integer.parseInt(JOptionPane.showInputDialog("ingrese un numero: "));
Instrucciones de escritura
Esta instrucción escribe en un dispositivo de salida ejemplo escribir A, B, C Ejemplos System.out.Println(i)
Instrucciones de bifurcación
El desarrollo lineal de un programa se interrumpe cuando se ejecuta una bifurcación. Las bifurcaciones pueden ser según el punto del programa a donde se bifurca hacia adelante o hacia atrás.
o
Bifurcación incondicional: se realiza siempre que el flujo del
programa pase por la instrucción sin necesidad del cumplimiento de ninguna condición
Acción 1
Acción 2
Acción 3
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
Acción F2
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.
Ejercicios Resuelva los siguientes problemas propuestos, 1 al 11 extraídos de
Lic. Salomón Aquino de la materia Lógica Computacional.(Aquino, 2007) 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.
5. 6.
7.
8.
9.
10.
11.
12. 13.
14.
15.
16.
Dada una medida de tiempo expresada en horas, minutos y segundos con valores arbitrarios, elabore un programa que transforme dicha medida en una expresión correcta. Por ejemplo, dada la medida 3h 118 min 195 seg, el programa deberá obtener como resultado 5h 1m 15s Escriba un programa que calcule el área de un triángulo rectángulo, dada la altura y la base. Elabore un programa que realice la conversión de cm. a pulgadas. Donde 1 cm = 0.39737 pulgadas. Por lo tanto, el usuario proporcionara el dato de N cm. y el programa dirá a cuantas pulgadas es equivalente. Elabore un programa que realice la conversión de pulgadas a cm. Donde 1 cm. = 0.39737 pulgadas. Por lo tanto, el usuario proporcionara el dato de N pulgadas y el programa dirá a cuantos centímetros equivale. 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. Elabore un programa que realice la conversión de pies a metros Donde 1 m = 3.2808 pies. Por lo tanto, el usuario proporcionara el dato de N pies y el programa dirá a cuantos metros equivale. 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. Elabore un programa que realice la conversión de libras a kilogramos Donde 1 Kg. = 2.2046 libras. Por lo tanto, el usuario proporcionara el dato de N libras y el programa dirá a cuantos kilogramos equivale. Introducir 5 notas por teclado, obtener la suma de las notas, el promedio de las mismas y el doble de las notas. 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. Calcular el número de pulsaciones que una persona debe tener por cada 10 segundos de ejercicio, si la fórmula es: núm. Pulsaciones = (220 - edad)/10 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. 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
17.
18. 19.
20.
21.
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. 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. Dados las coordenadas (x1,y1) y (x2,y2) de dos puntos en el plano cartesiano, determinar la distancia (d) entre estos dos puntos 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) Leer tres valores enteros y realizar las siguientes operaciones Sumar todos los valores Multiplicar todos los valores Restar de las suma de los dos el doble del tercero Promedio de todos los valores. Suma de las mitades de los últimos valores 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) Valor
22.
ab c
2
cd
c
2a
a
4cd
2a 5b 4
Si tenemos una expresión algebraica de la forma 2 , donde conocemos los valores de los coeficientes de cada uno de los términos A, B, C , diseñe una aplicación que realice los siguiente: Calcular dos valores de la expresión para cinco valores diferentes de la variable independiente x.
Elevar a la cuarta potencia todos los coeficientes de los temimos 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 de la figura 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 triángulo inscrito en el cuadrado Calcular la altura promedio del triángulo y cuadrado 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 Leer cuatro valores reales y calcular la siguiente expresión: (suponga que c es diferente de cero)
23.
24.
25.
26.
Valor
27. 28.
29. 30.
32.
c
2
cd
c
2a
a
4cd
2a 5b 4
Leer un valor real x del teclado. Calcular y escribir r=x 2 – 2x3 Leer los coeficientes de un polinomio de grado tres de la forma P(x)=x3+ax2+bx+c, leer a continuación un cierto valor para la variable independiente x. Calcular y escribir y = P(x) Convertir a radianes un valor de ángulo medido en grados sexagesimales 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
31.
ab
nRT
Ingresar un número de cuatro dígitos y que obtenga e imprima el número que resulta de invertir sus cifras. Realizar un programa que calcule la longitud y el área total de tres circunferencias sabiendo que la 1ra de ellas tiene un radio R que será introducido por teclado, la 2da tiene un radio 3R y la 3ra tiene un radio de 3R.
33.
34.
35.
36. 37. 38.
39.
40.
41.
42.
43.
Realizar un algoritmo para resolver el siguiente problema, Orlando compro 15 metros de tela para mandar a fabricar, a S/. 2890 el metro. Para colgarla necesita 28 aros de madera cuyo valor es de S/. 235 cada uno. El riel y demás accesorios cuestan S/. 4550. Si la modista cobra S/. 500 por cada metro de tela confeccionado y la instalación vale S/. 2000 ¿Cuándo es el costo total de la cortina instalada? 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. Elaborar un programa en el cual se ingrese la distancia que existe en dos vehículos y sus respectivas velocidades ¿hallar el tiempo de alcance y el tiempo de encuentro? Elabore un programa en la que me devuelva la altura y la velocidad final de un cuerpo de se deja caer ingresando únicamente el tiempo. Convierta un ángulo sexagesimal g, m, s a grados, minutos y segundos centesimales. 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. 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? 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. 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 ganado obtendrá 3 puntos, empatado 1 punto y perdido 0 puntos. Elabore el algoritmo que permita ingresar dos valores numéricos enteros cualquiera, luego de evaluar se debe imprimir sus valores intercambiados. 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. 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
Instrucción
14.2.2.Selectivas Dobles:
La estructura anterior es muy limitada y normalmente se necesitara una estructura que permita elegir dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. A continuación se muestra su sintaxis
Si condición entonces Instrucción 2 Sino Instrucción 1 Fin si
Condición
Instrucción 1
Instrucción 2
14.2.3.Selectivas múltiples:
Con frecuencia en la práctica, es necesario que existan más de dos elecciones posibles Diagrama de Flujo
Condición
Instrucción 1
Instrucción 2
…
Instrucción n
Pseudocódigo
Según sea condición Case 1: Case 2: . . . Case n: Fin según
14.2.4.Ejemplos Ejemplo 1:
Resolución de una ecuación de primer grado Si la ecuación es ax + b =0, a y b son los datos y las posibles soluciones son Si a <> 0 entonces x= -b/a a=0 a= 0
b<>0 entonces “solución imposible” b =0 entonces “ solución indeterminada”
Algoritmo pseudocódigo
Inicio Leer a, b Si a <> 0 entonces x - b/a Sino Si b<>0 entonces Escribir “solución imposible”
Sino Escribir “solución indeterminada”
Fin- si Fin – si Fin Ejemplo 2
Resolución de la ecuación de segundo grado teniendo en cuenta los tres posibles valores de discriminación La ecuación de segundo grado es: ax^2 + bx +c = 0 El discriminante D vale D = b^2 - 4ac Y las raíces son X1, x2 =
− ±√ −4 −±√ = 2 2
Si el discriminante es menor que cero, las raíces son imaginarias Algoritmo Pseudocódigo Inicio Leer a, b, c D b^2 -4*a*c Según sea D hacer D <0: escribir “raíces complejas” D = 0: x - b/2*a D >0: rcraizcua(D) X1 (-b + rc)/2*a X2 (-b -rc)/2*a Escribir x1, x2 Fin _ según fin Ejemplo 3
Se desea diseñar un algoritmo que escriba los nombres de los días de la semana en función del valor de una variable DIA introducida por teclado Inicio Leer Día
Según_ sea DIA hacer 1: escribir “Lunes” 2: escribir “Martes” 3: escribir “Miercoles” 4: escribir “Jueves” 5: escribir “Viernes” 6: escribir “Sabado”
7: escribir “Domingo” Otros: escribir “Error”
Fin_ según Fin 14.2.5.Ejercicios 1.
2.
3.
4.
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. 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 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. Escriba un programa que lea tres números enteros y asigne el valor apropiado TRUE o FALSE a las siguientes variables booleanas y muestre el tipo de triangulo que es (si es un triángulo) Triangulo: True si los números pueden representar longitudes de los lados de un triángulo (La suma de dos cualesquiera de los lados debe ser mayor que el otro).
5.
6.
7.
8. 9.
10.
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). 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. 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 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. Implementar un algoritmo que dados tres números a, b y c, los devuelva ordenados de menor a mayor 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
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
11.
12. 13. 14.
15. 16.
17.
(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 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 incrementara 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. Diseñar un algoritmo que dado un número, indique si es par o impar Desarrolle un algoritmo que permita leer dos valores distintos, determinar cuál de los valores es el mayor y escribirlo. 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 Del ejercicio 14 se debe evaluar la posibilidad cuando el valor numérico sea igual a 100. Elabore el algoritmo que permita ingresar dos valores numéricos enteros positivos cualquiera, luego de evaluar se debe imprimir sus valores intercambiados. 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.
18. 19. 20. 21.
22.
23.
24.
25.
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 Elaborar el algoritmo que permita ingresar cuatro valores enteros distintos luego de evaluar se debe decir cuál de ellos es el mayor Similar al ejercicio anterior, luego de evaluar se debe decir cuál de ellos es el mayor y el menor Elaborar un algoritmo que imprima el valor medio de tres números, ingresados por teclado ( no es el promedio) 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 . 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. La empresa Milagrito S.A. tiene la siguiente tabla de parámetros para pagar las comisiones de sus ejecutivos de ventas:
Escriba un programa que al introducir la cantidad vendida por el ejecutivo de ventas, calcule de cuánto será su comisión. 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. 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
26.
27. 28.
29.
30.
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é 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). Leer un número real x, calcular y escribir r = |x| 3 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. 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. 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 x є [-1,3) x>50 resto
31. 32. 33. 34.
35.
36. 37.
F(x) 10-x 1 0
Leer las componentes de un vector de R 2 (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 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. 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 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. Se ha de escribir un uno en el caso de que exista un trio (x, y, z) de números enteros positivos tales que x 2 + 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. Determinar el mayor y menor valor de 5 números ingresados desde el teclado. Ordenar de menor a mayor 5 números ingresados por teclado
38.
39.
40.
41.
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. 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. 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. 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 Hasta 5to secundaria técnico profesional Condición Social casado Por cada hijo Sin vivienda
42.
Porcentaje 5% 10% 20% porcentaje 3% 2% 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 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 0 1..5 6..8 9..10
43.
Para un tiro realizado determinar su puntaje correspondiente. 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 sexo
Nacionalidad H 5 4
1 2
44.
joven sexo M 4 5
M 9 7
ab c
2
cd
c
2a
a
4cd
2a 5b 4
Leer cuatro valores reales y calcular la siguiente expresión suponga que se ingresa valor cero a c)
Valor
ab c
2
cd
c
46.
H 7 9
adulto sexo H M 10 12 12 10
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) Valor
45.
Factor 0 6 9 10
2a
a
2
4cd
2a 5b 4
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)? ¿? 47.
Desarrolle un algoritmo para la siguiente función 0 x 0 16.67 0 TINS ( x) 33.34 x 33.34 16.67 0
48.
49.
si si
si si
x
0
0 x 16.67 16.67 x
x
33.34
33.34
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. 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
50.
51. 52.
multa. El dueño de la fábrica desea saber cuánto dinero perderá después de ser sometido a la revisión. 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. Permita ingresar el mes y día de nacimiento, después de evaluar se debe imprimir el signo zodiacal correspondiente. Leer un número real x y otro entero z. Calcular y escribir: y = x z, suponiendo que z ≥ 0
53.
54.
55. 56.
57. 58.
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? 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 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. 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 oC y 100oC ALTA: si su valor esta entre 80 oC y 89oC NORMAL: si su valor esta entre 40 oC y 79oC BAJA: si su valor esta entre 0 oC y 39oC Ingresar un mes (numero) y un año e imprima cuantos días tiene, tener en cuenta el caso de año bisiestos. 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.
59.
60. 61. 62.
63.
64.
65.
Escribir un algoritmo que lea tres números enteros por teclado y emita un mensaje indicando, si están o no ordenados en orden creciente. Escribir un algoritmo que permita introducir por teclado tres números enteros y responda si los números son iguales . Escribir un algoritmo que permita introducir por teclado tres letras y responda si existen al menos dos letras iguales. 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). 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. 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. 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
66.
67. 68.
69.
70.
Elabore un algoritmo que solicite un número entero y muestre un mensaje indicando la vocal correspondiente, considerando que la vocal A =1. Se desea leer un número entero de 2 cifras y que se muestre el número de unidades, decenas que lo componen. Elabore un algoritmo, dado un número 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. 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) Elabore un algoritmo que calcule el valor absoluto de un número (tanto positivo como negativo).
71.
72.
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 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 sobrepasado 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 Por el exceso
27 UIT 27 UIT
15% 21%
54 UIT 54 UIT
30%
de Y hasta Por el exceso de IMPUESTO = REMUNERACIÓN ANUAL
REMUNERACION BRUTA ANUAL
x TASA
NETA ANUAL
= Remuneración
mensual
x Nº de
meses que falta para culminar el año
+ -Gratificaciones de Navidad y Fiestas Patrias -Otros ingresos percibidos en el mes -Remuneraciones y Otros ingresos
percibidos en meses anteriores Nota: UIT = 3600 73.
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 NETA ANUAL
=
Renta Anual Proyectada
-
7 UIT
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 Por el exceso de Y hasta Por el exceso de
27 UIT 15% 27 UIT 21% 54 UIT 54 UIT 30%
IMPUESTO = REMUNERACIÓN ANUAL
x TASA
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 ENERO, FEBRERO, MARZO RETENCION ABRIL
IAN 12 IAN - Retenciones de Enero a Marzo 9
RETENCION MAYO, JUNIO, JULIO RETENCION AGOSTO RETENCION SETIEMBRE, OCTUBRE, NOVIEMBRE RETENCION DICIEMBRE
74.
IAN - Retenciones de Enero a Abril 8 IAN - Retenciones de Enero a Julio 5 IAN - Retenciones de Enero a Agosto 4 IAN - Retenciones de Enero a Noviembre
Elaborar un algoritmo de 4ta y 5ta categoría. Según los cálculos de las siguientes tablas. Renta
Total
Renta Bruta Cuarta Categoría (lo que recibió como independiente)
S/.58,400
-Deducción de 20% de renta bruta de cuarta
S/.11,680 (20% de S/.58,400)
Renta Neta de Cuarta Categoría
S/.46,720
+ Ingresos de Quinta Categoría (lo que recibió como dependiente)
S/.49,000
Total ingresos de Cuarta y Quinta Categoría
S/.95,720
S/.25,200 (7 x S/.3,600)
-Deducción 7 UIT 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
75.
Impuesto 15% de renta neta - Pagos adelantados en 2011
S/.10,578 S/.9,840
Pago por regularizar en Sunat
S/.738
La velocidad con que se desintegra una sustancia radiactiva, es proporcional a la masa de la muestra. Elabore un algoritmo para hallar el tiempo transcurrido de un objeto radiactivo, dado por la siguiente formula: Ln(
m0
)
m
0.693t
t (1/ 2)
Dónde: Mo=masa inicial M=masa final T (1/2)=tiempo de vida media (Ejm. C-14 es 5568 años) Nota: tenga en cuenta todas las condiciones de ingreso de datos. 76.
Los gases reales se explican satisfactoriamente por muchas ecuaciones una de ellas es la ecuación de Van Der Walls. 2
( P
77.
n a v
2
)(v nb) nRT
Dónde: P=presión N=número de moles V=volumen T=Temperatura A y B = son los parámetros moleculares del gas real que caracterizan la estructura y propiedades de sus moléculas por Ejemplo O2 tienen valores para a = 1.36 Atm(1/mol)2 y b= 0.0319 (1/mol) Elabore un algoritmo para hallar la temperatura de un gas real. Nota: tenga en cuenta todas las condiciones de ingreso de datos. Elabore un algoritmo para calcular la perdida por fricción en una contracción brusca, es proporcional a la carga de velocidad en la conducción estrecha y puede calcularse mediante la ecuación.
h fc
K c
V b2 2 g c
Siendo Kc un factor de proporcionalidad, que recibe el nombre de coeficiente de perdida por contracción y V b2 la velocidad media
de aguas abajo en la sección estrecha. Se encuentra experimental que para el flujo laminar, es K c < 0.1 y la perdida por contracción hfc es despreciable. Para el flujo turbulento el valor de K c está dado por la ecuación empírica. K c
0.4(1
S b S a
)
Siendo Sa y Sb, las áreas de las secciones transversales de las conducciones aguas arriba y abajo, respectiva. Nota: el factor de proporcionalidad (g c) de la ley de newton 32.174 pies-lb/lbf-s2 y tenga en cuenta todas las condiciones de ingreso de datos. 78.
Elabore un algoritmo para calcular el diámetro en el efecto de la región de entrada sobre el coeficiente de transferencia de calor. Está representado por las siguientes relaciones para un flujo turbulento dentro de una tubería, cuando la entrada es una reducción abrupta h h L
h h L
1 0
1
60
D
0.7
2
L
D
L
20
L
D
L D
20
60
Dónde: L: es la longitud de entrada. H: es el valor promedio para un tubo de longitud infinita L HL: es el valor para un tubo muy largo Nota: tenga en cuenta todas las condiciones de ingreso de datos 79.
Elaborar un algoritmo para calcular la pendiente del terreno según la fórmula de manning. V
1
n
(R
2
3
1
* S 2 )
Donde. V= velocidad en m/s R=radio hidráulico en m S=pendiente logitudinal N=coeficiente de rugosidad Nota: tenga en cuenta todas las condiciones de ingreso de datos
80.
Elaborar un algoritmo para la magnitud de las deflexiones verticales, para tener un estimativo de dichas deflexiones en función de las condiciones de la zanja y del material de relleno, podemos aplicar la ecuación de Spangler y es recomendada por la norma ASTM.
Df * K (Wm 2 E
Y
3( RDE 1)
3
W v )
0.061 E '
Dónde: ∆Y =Deflexión del diámetro del tubo cm Df=factor de deformación a largo plazo. Splager recomienda un valor de 1.5. K=Constante de lecho de apoyo. Este valor depende del Angulo de contacto entre el tubo y el lecho de apoyo. (Ver Tabla) E= Módulo de elasticidad del material de la tubería EPVC= según la norma COVENIN el módulo de elasticidad del PVC para sistemas de alcantarillado es de 2757.88 Mpa y como un Mpa es igual a 10.2 Kg/Cm2 nos queda que:
E PVC
2.81*10
4
Kg / cm2
RDE= Relación diámetro / espesor DE=Diámetro Externo en cm E= espesor de la tubería en cm E’=Modulo de reacción del suelo en Kg/Cm2 (Ver Tabla)
Angulo Contacto K
de 0°
30°
45°
60°
0.110 0.108 0.105 0.102
90°
120°
180°
0.096 0.090 0.083
Grado de Compactación Buena Mediana Mala Ninguna 50 35 20 15 E’ (Kg/cm2)
81.
Velocidad del viento
Nota: tome en cuenta las tablas para realizar la selección de entrada de datos para calcular la deflexión Elabore un algoritmo para ayudar a un Oceanógrafo, Biólogo Pesquero y un ingeniero ambiental, que han recolectado datos de velocidad de viento, desean determinar las condiciones ambientales del mar para ello desean calcular la escala de Beaufort, con esos resultados determinar la escala de Douglas, con eso determinar el tipo de ola, su altura mínima y máxima de la ola, para ello tienen la siguiente tabla relacional.
Tipo de viento
Escala de Beaufort
Escala de Douglas
Tipo de Ola
Altura Mín.
Altura Máx.
V<1 1≤V≤3 4≤V≤6 7≤V≤10 11≤V≤16 17≤V≤21 22≤V≤27 28≤V≤33 34≤V≤40 41≤V≤47 48≤V≤55 56≤V≤63 64≤V≤71
Fuera Rango
de
Calma Ventolina Flojito Flojo Bonancible Fresquito Fresco Frescachón Temporal Temporal Fuerte Temporal Duro Temporal Muy Duro Temporal Huracanado Sin escala
82.
83.
84.
0
Calma
1
Rizado
2 3 4 5 6
Marejadilla Marejada Fuerte Marejada Gruesa Muy Gruesa
0.2 0.5 1.25 2.5 4
0.5 1.25 2.5 4 6
7
Arboleda
6
9
8
Montañosa
9
14
9 Sin escala
Enorme
14 Sin escala
100 Sin escala
Sin escala
0 0
0.2
Se desea realizar el algoritmo que resuelva el siguiente problema, cálculo de los salarios mensuales de los empleados de una empresa, sabiendo que estos se calculan en base a las horas semanales trabajadas y de acuerdo a un precio especificado por cada hora. Si se pasan de 40 semanales, las horas extraordinarias se pagaran a razón de 1.5 veces la hora ordinaria. Se desea obtener la nómina semanal, salario neto de los empleados de una empresa cuyo trabajo se paga por horas y del siguiente modo: Las horas inferiores a 35 horas (normales), se paga a una tarifa determinada que se debe introducir por teclado al igual que el número de horas y el nombre del trabajador Las horas iguales o superiores a 35 se pagaran como extras a un precio de 1.5 horas normales. Los impuestos a decidir a los trabajadores varían en función de sus sueldo mensual. o Sueldo <= S/. 20000 libre de impuestos. o Los siguientes S/15000 al 20 % El resto al 30 %. o La resolución de una ecuación de 1er grado. Si la ecuación es aX+b=0: A<>0; X=-b/a A=0; b<>0 entonces solución imposible. A=0; b=0 entonces solución indeterminada. Dado 3 números determinar si la suma de cualquier par de ellos es igual al otro número (tercer número). Si se cumple esta condición escribir iguales y en caso contrario escribir distintos.
85.
0 1 2 3 4 5 6 7 8 9 10 11 12 Sin escala
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 o Do 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
Condició n
Falsa
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
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
Para o desde i = 1 hasta n hacer
Acciones
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
Repetir Accion1 Acción 2 . . . Hasta _que Condición
Acciones
Falsa
Verdadera Condició n
14.3.4.Ejemplos Ejemplo 1
Hallar el factorial de un número N utilizando la estructura desde Inicio Leer N Fact 1 Desde i 1 hasta N hacer Factfact*i Fin_desde Escribir “el factorial de”, N , “es”, fact Fin Ejemplo 2
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 9
Determine el máximo común divisor de dos números Inicio Leer a, b Para i 1 hasta a hacer R1resto(a/i) Para j1 hasta b hacer R2resto (b/j) Si (i=j) y (r1=0) y (r2=0) entonces Mcd=i Fin si Fin para j Fin para i Escribir mcd Fin Ejemplo 10
Encuentre e imprima los números primos entre 1 y 100 Inicio n2 s0
escribir 1 Para i2 hasta 100 hacer Mientras n ≤ i hacer Si resto (i/n) =0 entonces ss + n Fin si nn+1 Fin mientras ps+1 qi+1 Si p=q entonces Escribir i Fin si n2 s0 fin para Fin Ejemplo 11
Desarrolle un algoritmo para aproximar la siguiente función por serie de Taylor
Primera forma
Inicio (x = exponente de la función y n = N° de términos de la serie de Taylor) Leer x, n I 1 s0 Mientras i ≤ n hacer Potenciax ^ i Factorial1 mi J1 Repetir Factorialfactorial*j j j+1 Hasta que j > m ss + potencia/factorial ii+1 Fin mientras e 1 +s Escribir e
Fin Segunda forma
Inicio (x = exponente de la función y n = N° de términos de la serie de Taylor) Leer x, n I 0 s0 Mientras i ≤ n hacer Potenciax ^ i Si i = 0 entonces Factorial1 Sino Factorial1 mi J1 Repetir Factorialfactorial*j j j+1 Hasta que j > m Fin si ss + potencia/factorial ii+1 Fin mientras Escribir s Fin Ejemplo 12
Realizar un algoritmo que escriba los n primeros números de la serie de Fibonacci, se sabe que la serie se origina a partir de dos números que sirve patrón o base y el tercer número es la suma de los dos anteriores 1, 2, 3, 5, 8, 13, 21,…….
Primera forma
Inicio Leer n Fibo11 Fibo22 i3 Escribir fibo1, fibo2 Repetir Fibofibo1 + fibo2 Escribir fibo Fibo1fibo2
Fibo2fibo ii+1 Hasta que i >n Fin Segunda forma seria más general
Inicio Leer n Fibo11 Fibo22 i2 Escribir fibo1, fibo2 Repetir ii+1 Fibofibo1 + fibo2 Fibo1fibo2 Fibo2fibo Escribir fibo Hasta que i >n Fin Una forma más general seria Inicio Leer n, a, b Fibo1a Fibo2b i2 Escribir fibo1, fibo2 Repetir ii+1 Fibofibo1 + fibo2 Fibo1fibo2 Fibo2fibo Escribir fibo Hasta que i >n Fin Ejemplo 13
Mostrar los N primeros términos de la siguiente serie, donde N debe estar entre 5 y 30 5, 7, 10, 14, 19,….. Inicio Leer n Si (n≥5) y (n≤30) entonces i1
s5 Escribir s Mientras i
Calcular el valor máximo de una serie de 10 números, leidos por teclado Inicio Leer num i1 maxnum Repetir ii +1 Leer num Si max < num entonces maxnum fin si hasta que I > 10 Escribir max Fin Ejemplo 15
Determinar simultáneamente los valores máximo y mínimo de una lista de 100 números leídos por teclado Inicio Leer num maxnum minnum desde i 2 hasta 100 hacer Leer num Si max ≤ num entonces
maxnum sino Si num ≤ min entonces
minnum fin si fin si fin desde Escribir max, min
Fin Ejemplo 16
Calcular el Máximo Común Divisor de dos números A y B de acuerdo con el algoritmo de Euclides. Inicio Leer A, B Si A < B entonces auxB BA Aaux Mientras B ≠ 0 hacer
Rresto(A/B) AB BR Fin mientras Escribir A Sino Mientras B ≠ 0 hacer
Rresto(A/B) AB BR Fin mientras Escribir A Fin Ejercicio 21
Inicio Leer a,b,e Fa sen(a)+cos(1+a^2)-1 Fb sen(b)+cos(1+b^2)-1 Si fa*fb <0 entonces Repetir c(b+a)/2 Fc sen(c)+cos(1+c^2)-1 Si fb*fc ≤ 0 entonces
ac Fa sen(a)+cos(1+a^2)-1 sino bc Fb sen(b)+cos(1+b^2)-1 fin si Escribir a, b, c, fa, fb, fc ii+1 Hasta que (b-c ≤ e) Fin
Ejercicio 26
Inicio Leer n, x S 0 Si (x > - 1) y (x ≤ 1) entonces Para i1 hasta n hacer potx^i Si resto (i/2)=0 entonces S s-pot/i Sino S s + pot/i Fin si Fin para Fin si Escribir s Fin 14.3.5.Ejercicios 1. Hallar el factorial de un número N utilizando la estructura para,
mientras y repetir 2. Imprimir los 30 primeras potencias de 4, es decir 4 elevado a 1, 4 elevador a 2 con las tres estructuras. 3. Calcular la suma de los n primeros enteros con las tres estructuras 4. Diseñar un algoritmo para imprimir la suma de los números impares menores o iguales que n. Utilice las tres estructuras. 5. Calcular el número máximo de una serie de 100 números. utilice as tres estructuras. 6. Realizar un algoritmo que escriba los N primeros números de la serie de Fibonacci 1,2,3,5,8,13,21…, Utilice las tres estructuras 7. Determinar la media de una lista indefinida de números positivos leídos por teclado y estos son terminados con un número negativo o cero. Utilice las tres estructuras 8. Calcular los factoriales de n leído por teclado. Utilice las tres estructuras. 9. Calcular el factorial de los n números leídos por teclado. Utilice las tres estructuras. 10. Se quiere hallar el producto de varios números positivos introducidos por teclado, de manera que el proceso termina cuando se introduce un número negativo. Utilice las tres estructuras 11. Escriba un algoritmo que encuentre el primer divisor entero de un número, que previamente se ha introducido por teclado. Utilice las tres estructuras.
12. Escriba un algoritmo que calcule el máximo de los números
positivos introducidos por teclado. Sabiendo que se introducen números desde teclado hasta teclear uno negativo. El negativo no cuenta. 13. Escriba un algoritmo que determine. cuáles son los múltiplos de 5 comprendidos entre 1 y N. 14. Escriba un algoritmo que encuentre al alumno de primer grado con mejor nota media. Se sabe que este año entraron 150 alumnos y que en primero todos tienen 5 asignaturas. Dar el nombre y la nota media. 15. Escriba un algoritmo que calcule la suma de los divisores de cada número introducido por teclado. Se termina cuando el número es negativo o 0. 16. Dado un capital c, a un interés i, durante m años, escriba un algoritmo que calcule en cuanto se habrá convertido ese capital en m año, sabiendo que es acumulativo. 17. Dada la siguiente formula: n
((a b) x
i
3) n
i 1 n1
(2 a * (i 1)) i 2
Realice un algoritmo que calcule el valor de x pidiendo al usuario los valores de n, a, b. 18. La exponencial se puede aproximar mediante la serie x
e =1+x+
x
2
2!
+
x
3
+...+
3!
x
n
,
Para N > 0
n!
Para un N dado
Para que N sea tal que
Escribir un algoritmos que calcule la exponencial de a según dicha fórmula, utilizando n=10 y luego n=20.
< e (por ejemplo e = 10 - 4) !
Utilice las tres estructuras 19. Dadas 3 listas de 5 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 década una de las categorías considerando los costes siguientes: llamada
local, 5 pesetas por paso, llamada nacional 10 pesetas por paso y llamada internacional 50 pesetas por paso. Construir un programa que lee los datos de entrada desde el teclado e imprima los resultados finales por pantalla. 20. Diseñar un algoritmo que determine los números primos entre dos números dados. 21. Los empleados de una fábrica trabajan en dos turnos, diurno y nocturno. Se desea calcular el jornal diario y semanal de acuerdo con los siguientes puntos: Las tarifas de las horas diurnas 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 22. 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. 23. Dado un número N, calcular la suma 5 +10 +15 + 20+ . . . +5* n 24. Diseñar el algoritmo que encuentre (muestre) los números pares que hay entre 100 y 1000. 25. Diseñar el algoritmo que calcule la suma de los pares que hay entre dos números dados. 26. ¿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 27. 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. 28. 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
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.
erp
xi
1
xi
xi
x100
1
29. Del algoritmo del ejercicio 20 remplazar el paso 1 por la siguiente
formular c
b
f (b)(a b)
f (a)
f (b)
A este algoritmo se le llama falsa posición. 30. Desarrolle el algoritmo del trapecio que consiste en la siguiente formula. n1
f ( xa ) 2 f ( xi ) f ( xb ) i 1
I (b a )
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 X 2 + 675 X3 - 900 X4 + 400 X5 31. Elabore el algoritmo de integración numérica de Simpson 1/3 que
consiste de la siguiente formula n1
f ( xa ) 4 I (b a )
n 2
f ( xi ) 2
i 1,3,5
j 2,4,6
3n
f ( x j ) f ( xb )
Donde los valores de a y b es el intervalo de la integral definida y n es el número de segmentos pares. 32. Elabore el algoritmo de integración numérica de Simpson 3/8 que
consiste de la siguiente formula n1
f ( xa ) 3 f ( xi ) f ( xb ) i 1
I (b a)
8n
Donde los valores de a y b es el intervalo de la integral definida y n es el número de segmentos impares. 33. Desarrollar un algoritmo para Aproximar la siguiente función y =
seno(x)
34. Desarrollar un algoritmo para Aproximar la siguiente función y =
coseno(x)
35. Desarrollar un algoritmo para Aproximar la siguiente función y = e x
36. Desarrollar un algoritmo para Aproximar la siguiente función y =
ln(1+x)
37. Dado n>0 hallar la suma n
s
1
k k 1
n
38. Se desea calcular la suma
s
k 1
1
ak
siendo los valores ak los
elementos de la sucesión dada por a k= 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
39. Se desea calcular la suma
s
1 k , siendo m y n dos números m
k 1
enteros positivos que se suponen dados. 40. Escriba los n primeros términos de la sucesión dada por a
n
1 (1 ) , siendo n un numero entero positivo dado. n
n
41. Escribir un programa que encuentre el logaritmo en cualquier base
de un numero positivo x. la base y el número, lo ingresara el usuario y el programa debe continuar hasta que se ingrese un valor 0 log ( x ) log10 ( x)
a
loga (b)
42. 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). 43. Dado un numero entero mayor que uno se ha de escribir la lista de sus divisores comprendidos en el intervalo (1, x). 44. Dado dos números enteros positivos p y q escriba un algoritmo que permita hallar el máximo común divisor de los mismos. 45. Calcule e imprima los números primos entre 1 y 100 46. Mostrar los N primeros términos de la siguiente serie, donde N debe estar entre 5 y 30. 5, 7, 10, 14, 19 47. Mostrar los N primeros términos de la siguiente serie, indicando además la suma de los mismos. 7, 9, 12, 16, 21 48. 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 49. Contar y sumar los números enteros positivos leídos por teclado. Se termina cuando se ingresa un número negativo. 50. Sume los números del 1 al 200 menos los múltiplos de 5. 51. Calcule la suma y el producto de los números impares comprendidos entre 11 y 111. Resolver con tres estructuras distintas. 52. Calcule el MCD (Máximo Común Divisor) de dos números A y B de acuerdo con el algoritmo de Euclides. 53. 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. 54. 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,… 55. Imprima los 50 primeros números múltiplos de 3 anteriores al 500 y la suma total de estos 50 primeros números.
56. 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 1
2
k
1
k
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. Calcule e imprima los factores primos de 1 y 50 59. Calcule e imprima los factores primos de un numero 60. 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. 61. 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). 2 y 2 x 18 62. 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. 63. 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). 64. 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. 65. Desarrollar el algoritmo de Runge Kutta 4to orden 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
Ingrese como dato el error mínimo y compárelo con error relativo porcentual. 66. Escribir un algoritmo que permita ingresar un entero n y que imprima si se trata o no de un número capicúa 67. Escriba un algoritmo que lea un número entero por teclado y escriba la tabla de multiplicar de ese número 68. Calcular la suma de las siguientes series:
Donde n es un número entero introducido por teclado. 69. Realice un algoritmo que calcule y visualice el más grande, 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. 70. Realice un programa que determine si un número leído del teclado es primo o no 71. 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. 72. 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]).
73. 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á. 74. 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 75. Escribir un algoritmo que calcule la suma de los números enteros de n a m (m>n). 76. Implementar un algoritmo que calcule el producto de dos números enteros (n*m) haciendo sólo sumas. 77. Diseñar una función que calcule el cociente y resto de la división entera de dos números mediante restas y sumas. 78. Escribir una función 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 79. 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 80. Escriba un algoritmo permita ingresar 2 enteros positivos e imprima sus divisores comunes 81. Suponga que se piden X Nuevos Soles prestados a un banco, con el acuerdo de devolver Y bolívares 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% 82. 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. 83. Por un canal trapezoidal fluye agua a una tasa de Q=20 m 3/s. la profundidad crítica y, para dicho canal satisface la ecuación
0
1
Q
2 3
gAc
B
Donde g = 9.81 m2/s, Ac=área de la sección transversal (m 2) y B ancho del canal en la superficie (m). Para este caso, el ancho y el área de la sección transversal se relacionan con la profundidad y por medio de B 3 y
Y Ac
3y
y
2
2
Resuelva para la profundidad crítica con el uso del algoritmo de la secante, haga elecciones iniciales de a = 0.5 y b = 2.5 y ejecute iteraciones hasta que el error aproximado caiga por debajo del 1% o el número de iteraciones supere a 10. El método de la secante consiste en la siguiente formula
xi
1
xi
f ( xi )( xi
1
xi )
f ( xi 1 ) f ( xi )
Donde Xi-1, y Xi son valores iniciales de una ecuación. 84. Se está diseñando un tanque esférico para almacenar agua para
un poblado pequeño en un país en desarrollo. El volumen de líquido que puede conocer se calcula con V
h
3
(3 R
h)
3
Donde V= volumen (m3), h = profundidad del agua en el tanque (m) y R =radio del tanque (m).
Si R = 3m ¿a qué profundidad debe llenarse el tanque de modo que contenga 30 m3? Haga tres iteraciones con el método de newton Raphson a fin de obtener la respuesta. Determine el error después de cada iteración. Este método de Newton Raphson consiste de la siguiente formula.
xi
1
xi
f ( xi )
f '(xi )
Donde Xi es el valor inicial de la ecuación. 85. Evalué e-5, con el uso de dos métodos. e
x
1 x
x
2
2!
x
3
3!
...
Y e
x
1 e
x
1
1 x
x
2
2!
x
3
3!
...
Compárelo con el valor verdadero de 6.737947x 10 -3. Utilice 20 términos para evaluar cada serie y calcule los errores relativos por cada método
erp
valor _ verdadero valor _ metodo
valor _ verdadero
x100
86. Desarrolle el algoritmo para hallar el valor de un polinomio por la
serie de Taylor f ( xi 1 ) f ( xi ) f ´( xi )( xi
1
xi )
f ´´( xi ) 2!
(xi
1
xi ) 2
f ´´´( xi ) 3!
(x i
Tomando como tamaño de paso h h
xi 1
xi
Quedando la función de truncamiento f ( xi 1 ) f ( xi ) hf ´( xi ) h 2
f ´´( xi ) 2!
h3
f ´´´( xi ) 3!
...
1
x i ) 3 ...
Trunque la serie hasta la tercera derivada 87. 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
IMPUESTO
30%
= REMUNERACIÓN
x TASA
NETA ANUAL
ANUAL
Nota UIT = 3600 88. Elaborar un algoritmo para calcular el coeficiente de correlación, según la fórmula: n
n
n
i 1
i 1
i 1
n xy x y r
n
n
n
n
2 (n x ( x ) )(n y ( y ) ) 2
i 1
2
i 1
2
i 1
i1
89. Desarrollar un algoritmo para Aproximar la siguiente función y =
ex, tal que la suma de sus términos se aproximen a un error relativo porcentual, ingresado por teclado (e =1% en decimales 0.01)
90. de
15. Subprogramas
La resolución de problemas complejos se facilita considerablemente si se dividen en problemas más pequeños llamados subproblemas (Subprogramas). Las herramientas usadas en la programación son las funciones y procedimientos (subrutinas) 15.1.
Procedimientos(Subprograma):
Llamados también subrutina, un procedimiento es un subprograma que ejecuta un proceso específico, cuando se invoca el procedimiento, los pasos que lo definen se ejecutan y a continuación se devuelve el control al programa que le llamo Declaración de un procedimiento
Procedimiento nombre (parámetros formales, parámetros variables) Inicio Acciones Fin Donde Nombre: Es el nombre del procedimiento a invocar Parámetros formales: Tiene el mismo significado que en las funciones Parámetros variables: En algunos lenguajes de programación está permitido
este tipo de declaración, para designar que ellos obtendrán resultados del procedimiento en lugar de los valores actuales asociados a ellos. Invocación a una función (Llamar_a) nombre (lista de parámetros actuales) Por ejemplo
Procedimiento división (dividendo, divisor, cociente, resto) Inicio Cociente dividendo/ divisor Resto dividendo - cociente*divisor
Retorno Fin Algoritmo aritmética Inicio Leer M, N Llamar_a división (M, N, P, Q) Escribir p, Q Fin 15.2.
Funciones
Matemáticamente una función es una operación que tiene uno o más valores llamados argumentos y produce un valor denominado resultado o valor de la función para los argumentos dados (Aguilar, 1988) Declaración de una función Función nombre _ función (par1, par2, par3,…)
Inicio Acciones Fin Dónde:
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 Par1, par2,…
() =
Función fun(x) Inicio Funx/(1 + x^2) Fin Invocación de una función
Una función puede ser llamada solo mediante referencia de la forma siguiente: Variable de asignación nombre _ función (par1, par2,…) Por ejemplo F_x fun(x)
Procedimiento vs función
i.
ii. iii.
15.3.
Un procedimiento es llamado desde el algoritmo o programa principal mediante su nombre nombre y una lista de parámetros actuales 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 procedimiento llamado. Después Después que las acciones del procedimiento se ejecutan, se regresa a la acción inmediatamente siguiente a la que se llamó. Las funciones devuelven un valor, las subrutinas pueden devolver 0,1 o más valores y en forma de la lista de parámetros El procedimiento se declara igual que la función, pero su nombre no está asociado a ninguno de los resultados resultados que obtiene obtiene Algoritmos Recursivos
Es un algoritmo que se define en términos de sí mismo. Son implementados en forma de subrutinas (Funciones,, Procedimientos, Procedimientos, subprogramas, subprogramas, etc.) De tal manera que dentro de una subrutina subrutina recursiva hay una o más llamadas a sí misma. Es una herramienta muy potente potente en algunas aplicaciones 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 subrutina hay llamadas a ella misma misma Recursividad indirecta: cuando se tienen varias subrutinas y estas se llaman unas a otras formado ciclos. ciclos. La recursividad recursividad es un elemento elemento muy importante importante en la solución solución de algunos problemas Ventajas
Algunos problemas son esencialmente recursivos, por lo cual su implementación se facilita facilita mediante un algoritmo algoritmo de naturaleza recursiva, sin tener que cambiarlo a un método iterativo. Desventajas
Puede llegar a utilizar grandes grandes cantidades cantidades de memoria en un instante, instante, pues implementa una pila cuyo tamaño tamaño crece linealmente, con el número número de recursiones necesarias en el algoritmo Ejemplo
Calcular factorial 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
2.
3. 4. 5.
6. 7.
el máximo máximo común divisor divisor de dos números mediante el algoritmo de Euclides con el siguiente procedimiento a. Dividir el número mayor mayor (A) por el el menor (B). Si el resto de la división es cero el número B es el máximo común divisor. b. Si la división no es exacta, exacta, se divide el número menor (B) por el resto resto de la división anterior. c. Se siguen los pasos anteriores anteriores hasta obtener obtener un resto cero. El último divisor es el mcd mcd buscado. Para calcular el máximo común divisor (mcd) de dos números, se recurre a una función específica definida definida con un programa con un subprograma. subprograma. Se desea calcular la salida del programa principal 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 Realizar un algoritmo que permita ordenar tres números mediante un procedimiento de intercambios de dos variables 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 Realizar un procedimiento que realice la conversión de coordenadas polares (r, ) a coordenadas cartesianas (x, y) X = rcos() Y = rseno( ) Función que calcule x y, con x є R, y suponiendo que y es un valor entero y >0 Función que calcule x y, con x є R, y suponiendo que y es un valor entero que puede ser positivo, negativo o cero
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. m
8. Función que calcule , siendo m y n dos enteros positivos. Puede hacer n
n
10. Función para calcular la suma
s
ah
h , siendo a un vector dado como n
h 1
argumento, a є R n y siendo n > 0, entero otro argumento.
11. Función para calcular calcular el producto producto escalar de dos dos vectores v є R n y w є Rn,
suponiendo n > 0 entero. 12. Función Evapol(), que evalué evalué el polinomio A(x) A(x) =a1xn+ … + a nx1+ an+1x0, dado el grado del polinomio n ≥ 0 entero, el vector de coeficientes a =( a 1, …, 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 = (a 1,…, ana+1) y vB = b 1,…,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 que permita leer un número y que utilice un procedimiento recursivo 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 tarea se dan las siguientes 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 Carácter Lógico
Estándar Datos simples Definido por el programador (No estándar)
Simples o Estáticos Datos estructurados Compuestos o dinámicos 16.1. Arreglos unidimensionales (array)
Sub rango Enumerativo Array (vectores / matrices) Registros Ficheros Conjuntos Cadenas (String) Listas (pilas / colas) Listas enlazadas Arboles Grafos
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
Subíndice o índice
i 1 2 3 4 5 6 7 8
A(i) 14.0 12.0 8.0 7.0 8.40 8.20 8.15 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 16.1.1.Ejemplos Ejemplo 1
Escribir un algoritmo que permita calcular el cuadrado de los 100 primeros números enteros y a continuación escribir una tabla que contenga dichos 100 números cuadrados. Algoritmo Inicio Desde N 1 hasta 100 hacer C N*N Escribir N, C Fin desde {Escritura de la tabla} Desde N 1 hasta 100 hacer A(N) N*N Escribir A(N) Fin desde Fin Ejemplo 2
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.2.Ejercicios
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[i] 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 1.
3.
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. Leer las componentes de un vector de números reales de dimensión 10. Escribirlo luego en la pantalla. 5. Escriba un algoritmo que devuelva el valor de la componente máxima de un vector. 6. Escriba un algoritmo que muestre por pantalla el contenido de un vector. Los valores de las componentes del vector se introducen por teclado (hasta que se introduzca un cero). 7. Considere una encriptación de mensajes muy antigua inventada por Julio Cesar, la cual se basa en que cada letra de un mensaje se le asocia a un número (el orden en el abecedario), luego se suma al número de cada letra otro número (la clave) y el resultado es una nueva letra, mira 4.
el abecedario. Por ejemplo, el m2ensaje “cruzad el rubicon” , se transformaría en “dsvabeUfmUsvcjdpo” si le sumo el número clave 1 a
cada letra (ya que la primera letra del mensaje cifrado, la d es la que va tras la c, etc). Note que la ch, ll, ñ no existen y que después de la z va la a. Además los espacios en blanco se convierten en letras U si la clave es 1 en V si es 2, etc. Para ello, elabore un pseudocódigo que a partir de un texto (Cadena de caracteres leída por teclado) imprima texto cifrado con la clave entera, también leída desde teclado. Pista: dentro del bucle que debe recorrer todas las letras del texto, use la siguiente fórmula para encriptar. Texto_encriptado[i] =(texto_original[i]- ‘a’ + clave) % 26+’a’ (26 es el número de letras del alfabeto ASCII). 8. Leer un entero n supuesto n >0 y un vector v є R n x 1, calcular y escribir el producto escalar m = v tv, m є R, donde v t simboliza el vector transpuesto de v. 9. Leer n (suponiendo que es entero y > 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.
10. Leer n (suponiendo que es entero y >0) y un vector de dimensión n.
Calcular y escribir la componente de mayor valor y su índice dentro del vector. 11. 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 v 1 = 1. 12. 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 ls sucesión de Fibonacci. 13. 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 var
1
n
(v n
k
)
2
k 1
Siendo μ la media aritmética de las componentes de v.
14. Se quiere
15. 16.
17.
18.
19.
construir y escribir un vector v de dimensión n cuyas componentes siguen la ley v k = 3*vk-1 – k, para k ≥ 2. Tanto n como v 1 son cantidades que han de leerse del teclado. Crear un vector de 70 elementos donde cada elemento del vector sea igual a su posición 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. Dadas 3 listas de 10 números de teléfono, donde la primera lista contiene el número de pasos consumidos en llamadas locales asociado a cada teléfono, la segunda contiene información sobre llamadas nacionales y la tercera contiene información sobre llamadas internacionales, calcular los subtotales del coste de cada una de las categorías considerando los costes siguientes: llamada local, 5pesetas por paso, llamada nacional 10 pesetas por paso y llamada internacional50 pesetas por paso. Construir un programa que lee los datos de entrada desde el teclado e imprima los resultados finales por pantalla. 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. Dado un vector v de dimensión n cuyas componentes son todas positivas o cero se desea reordenar sus componentes de mayor a menor por ejemplo, si V = [2 3 8 5 4] El resultado ha de ser un nuevo vector
w= [8 5 4 3 2] 20. Repetir el ejercicio anterior pero sin usar un vector auxiliar como w. el resultado que se pretende conseguir es que el propio vector v tenga sus componentes ordenadas( emplear todos los métodos de ordenación) 21. Igual que el anterior pero suponiendo que v contiene cantidades positivas y negativas, por ejemplo V=[-7 3 8 -9 5 4 0 -1] Ha de dar como resultado el propio vector reordenado así: V= [8 5 4 3 2 -1 -7 -9] 22. Un fabricante de automóviles dispone de un modelo de vehículo en cinco colores. Para saber la aceptación de cada color realiza una encuesta usando un programa en su ordenador. El programa ha de ayudarle a contar los votos de los encuestados. El encuestador tecleara el número del color elegido (de uno a cinco) cada vez que pregunte a una persona nueva. Cuando no quiera preguntar a nadie más introducirá el valor -1. En ese momento el programa le indicara el número de votos que cada color ha obtenido. Posteriormente se han de ordenar los colores según los resultados de la votación. 23. Se desea calcular la mediana de los valores contenidos en un vector T є
Rn. si n es impar la mediana es el valor central del vector ordenado, en caso contrario la mediana es la media de los dos elementos que están más al centro. En ambos casos el paso previo para calcular la mediana es ordenar el vector. Un ejemplo con n par es T = [10 23 11 15]. La ordenación produce T° = [23 15 11 10] y la mediana es (15 + 11)/2 = 13. Un ejemplo con n impar es T = [11.8 12 28 11.5 14], en este caso la ordenación produce un nuevo vector T° = [11.5 11.8 12 14 28], de donde se obtiene la mediana que es el valor central 12. Puede comprobar con lo ejemplos anteriores que la mediana no coincide con la media aritmética. 24. La cantidad de un cierto isotopo radioactivo presente en una mezcla varia con el tiempo pues el isotopo se descompone emitiendo radiación. Se denota mediante y(k) la cantidad en gramos de isotopo en el instante de tiempo t = k medido en años unos científicos han descubierto que se cumple que y(k) = 0.99*y(k-1). Si un barril de desechos radioactivos contiene 1000 gramos de isotopo ¿Cuál será la cantidad de isotopo presente al cabo de 500 años? 25. La velocidad de un paracaidista en su descenso al suelo una vez que ha abierto el paracaídas se denota mediante v(k) (m/s), siendo k el tiempo que lleva cayendo medido en segundos, k > 1. Se ha especulado con la idea de que dicha velocidad sigue la ley: v(k) = v(k-1) + 10 - 0.4*(v(k-1))2. Sabiendo que una caída típica puede durar 5 minutos y que el
paracaídas se suele abrir con una velocidad de 100 Km/h ¿con que velocidad llega al suelo? 26. Se sabe que la cantidad de bacterias de cierta especie en un cultivo es x(k) = 1.1*x(k-1), siendo k el tiempo medido en horas, k >1. Si al cabo de la primera hora x(1) se contabilizaron 100 unidades ¿Cuántas habrá al cabo de un día? 27. Suponiendo que A es un conjunto [1, 3, 5, 7], B es [2, 4, 6] y C es [1, 2, 3] evalué las siguientes expresiones. A+(B*C), A+(B+C), A+B+C, A+(B+C), C+(A+C), C-(A-B), (C-A¿)-B 28. La empresa ACME S.A. ha asignado un código a cada uno de sus obreros. El código está formado por 5 caracteres y tienen la siguiente estructura: XX-Y-ZZ Donde XX= especialidad Y=categoría ZZ=numero (0 - 90) Especialidad CO=Construcción CA=Carpintería IS=Instalaciones LI=Limpieza Categorías: F=oficial O=operario P=Peón Escribir un algoritmo que permita ingresar el código de cada obrero y mostrar en pantalla la especialidad y la categoría. Se debe considerar que el código ingresado por el operador tenga 5 caracteres, si el código no corresponde a una especialidad o categoría, el programa deberá mostrar el mensaje “código no valido”.
29. 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. 30. Escribir un programa que imprima las n primeras líneas de pascal (n se ingresa por teclado) 1 11 121 1331 14641 31. Dadas 3 listas de 5 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 década una de las categorías considerando los costes siguientes: llamada local, 5 pesetas por paso, llamada nacional 10 pesetas por paso y llamada internacional 50 pesetas por paso. Construir un programa que lee los datos de entrada desde el teclado e imprima los resultados finales por pantalla. 32. Elaborar un algoritmo para calcular el coeficiente de correlación, según la fórmula: n
n
n
n xy x y r
i 1 n
n
i 1
i 1 n
n
(n x ( x) )(n y ( y )2 ) 2
i 1
2
i 1
2
i 1
i 1
33. 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%
IMPUESTO
= REMUNERACIÓN
x TASA
NETA ANUAL
ANUAL
Nota UIT = 3600 34. Crea un array o arreglo unidimensional donde tú le indiques el tamaño
35.
36.
37. 38. 39.
por teclado y crear una función que rellene el array o arreglo con los múltiplos de un número pedido por teclado. Por ejemplo, si defino un array de tamaño 5 y elijo un 3 en la función, el array contendrá 3, 6, 9, 12, 15. Muéstralos por pantalla usando otra función distinta. Crea dos arrays o arreglos unidimensionales que tengan el mismo tamaño (lo pedirá por teclado), en uno de ellos almacenaras nombres de personas como cadenas, en el otro array o arreglo ira almacenando la longitud de los nombres, para ello puedes usar la función LONGITUD (cadena). Muestra por pantalla el nombre y la longitud que tiene. Puedes usar funciones si lo deseas. Crea una aplicación que pida un numero por teclado y después comprobaremos si el numero introducido es capicúa, es decir, que se lee igual sin importar la dirección. Por ejemplo, si introducimos 30303 es capicúa, si introducimos 30430 no es capicúa. Piensa como puedes dar la vuelta al número. Sean los vectores d= (1, 2, 3) y e = (10, 14, 16), obtenga d*e. Donde a=(a1,a2,a3), b=(b1,b2,b3) y a*b =( a 1* b1+a2* b2+a3* b3) Sean los vectores d= (3, 7, 2) y e = (10, 4, 11), obtenga 6d*20e y 15e*12d. Donde 2a*5b =( 2a1* 5b1+2a2*5 b2+2a3* 5b3) Determinar el modulo del siguiente vector a =(3, 5) a
a
2
1
a
2
2
40. Determinar el cuadrado del módulo del siguiente vector k =( 8,4,1) a
41. Calcular el
a
2
1
a
2
2
a
2
3
promedio de los elementos que se encuentren en las posiciones pares de un arreglo de n números. 42. Programar un algoritmo que obtenga la moda de un cierto número de valores dados por el usuario. Moda es el número que aparece con más frecuencia
43. Cargar un arreglo de n números y calcular la media de los que estén
en posiciones pares. 44. Se pide realizar un programa que calcule el centro de masas de un sistema de m masas puntuales. Para ello el programa pedirá conjunto de tres números reales: la coordenada x del punto, la coordenada y y su masa m. el numero n de masas será establecido por el usuario. El programa imprimirá por pantalla como resultado las coordenadas x g y y g del centro de masas del conjunto de puntos que se han introducido. Las fórmulas que dan la posición del centro de gravedad son las siguientes. n
n
mi xi x g
i 1 n
mi i 1
mi yi y g
i 1 n
mi i 1
45. Genere un vector de tamaño 20 con números entre -10 y 10. Deje en un
46.
47. 48.
49.
arreglo Z todos los números negativos y en un arreglo X todos los positivos o iguales a cero Genere un vector de tamaño 10 con números reales leídos desde teclado. Calcule el promedio e indique cuantos elementos del vector son mayores que el promedio y cuantos son menores o iguales Dado un vector con n elementos numéricos enteros ya almacenados, indique cuántos de ellos son múltiplos de 3 Se tienen 3 arreglos A, B, C de M elementos. Se debe crear otro arreglo X de tres elementos, donde cada elemento sea la suma de los elementos de cada arreglo De
16.2. Ordenación, Búsqueda y 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 AuxA[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_maxindice Fin si Posmayorindice_max Fin desde i Fin Inicio {programa principal} Desde j límite hasta 2 hacer Mayor Posmayor(j, tabla) Aux Tabla [mayor] Tabla [mayor] Tabla[j] Tabla[j] Aux Fin desde j Fin Método se Inserción
El método se basa en considerar una parte de la lista ya ordenando y situar cada uno de los elementos restantes insertándolo en el lugar que le corresponde por su valor Algoritmo
Procedimiento desplazar (tabla, aux, k, nuevopos) Inicio Encontrado false Mientras (k > 1) y (no encontrado) hacer Si tabla [k-1] >aux entonces Tabla [k] tabla [k - 1] K k – 1 Sino Encontrado true Fin si Nuevapos k Fin mientras Fin Inicio {programa principal} Desde K 2 hasta N hacer
Aux tabla[k] Desplazar (tabla, k, aux, nuevapos) Tabla [nuevapos] aux Fin desde k Fin Método de Shell
Este método es una mejora del método de inserción directa que se utiliza cuando el número de elementos a ordenar es grande se suele denominar también ordenación por disminución de incrementos. Pasos
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]} AuxA[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 16.2.4.Ejercicios
1. Ordenar los siguientes datos por el método de la burbuja, desarrolle la prueba de escritorio 34
5
45
6
1
6
23
90
4
10
2. Ordenar por el método de inserción, desarrolle la prueba de escritorio 30
50
4
3
10
2
20
9
14
15
3. Ordenar por el método Shell, 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 5
Columna 1 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 16.3.1. Ejercicios 1.
2. 3.
4.
5.
6. 7.
8. 9.
10.
11. 12.
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 a kj de una matriz A de m filas y n columnas. Finalmente se presentará en la pantalla la matriz leída Construir una matriz A є R m x n cuyo elemento genérico a kj viene dado por akj = k2 – j . 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. Traza de una matriz. Dada una matriz cuadrada A є R n x n , 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). 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. Matriz traspuesta. Dada una matriz A є R n x n, calcular su traspuesta B= At. Submatriz triangular. Dada una matriz A є R n x n , se desea calcular otra matriz B є R n x n 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. Máximo de una matriz. Dada una matriz A є R n x n , calcular el elemento mayor. 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. Dada una matriz A de M*N elementos, actualice la matriz de manera que la matriz resultante tenga divididos a los elementos de la diagonal principal por la suma de los elementos que no forman parte de ella. Escribir el algoritmo que permita determinar el número de elementos positivos de una tabla 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
13. Realizar los algoritmos: de producto de matrices, multiplicación de una
matriz por un escalar, matriz identidad y matriz triangular. 14. 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. 15. 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.
16. 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. Para el optimista
max ai
max v( ai , j ) (1 ) min v( ai , j ) j
j
Para el pesimista min ai
17.
18. 19. 20. 21.
22.
23. 24. 25.
26.
min v (ai , j ) (1 ) max v(ai , j ) j
j
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 . Lea una matriz de N x M (variables) e indique luego , Cuantos elementos positivos contiene la matriz matriz Cuantos elementos pares y positivos contiene Cuál es el mayor elemento elemento que contiene la matriz matriz y cuantas veces veces figura. Crear una matriz de dimensiones variables y llenarlas de unos e imprimirla. Crear a una una matriz N x N , cuya diagonal principal principal (i = j) esté formada formada por unos y el resto por ceros. Crear una matriz de 5 x 5 donde cada cada elemento elemento de esta esta corresponda corresponda a la suma de los índices de la fila con la columna (i + j). Su ponga que ya ha sido leída una matriz matriz de 9 x 5, se le pide que encuentre el el número de elementos pares que contiene contiene la matriz. Luego Luego imprima la la matriz matriz completa. Lea una matriz matriz de dimensiones 5 x 5 y luego luego entregue: El promedio de los elementos de la segunda segunda fila de la matriz La suma de elementos de la cuarta columna de la matriz Multiplicación de matrices. Suponga ya leidas A є R m x n y B є R n x p, calcule C=A*B. 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. Exponenciación de matrices cuadrada. Diseñe un algoritmo que permita obtener B = A p, siendo A є R n x n, una matriz dada y p >0 un entero también dado. Dados dos enteros positivos m y n se desea construir la matriz S є R m x n, n
cuyo elemento genérico viene dado por skj k 1
1
hj
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. Dados los array multidimensionales: multidimensionales: X(-5:5;3:33) y Y(3:10;1:15;10:20) Se pide calcular calcular la longitud de cada dimensión dimensión y el el número de elementos de X e Y. 29. 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 acceder A[i, j] donde d onde i>=j?. 30. Dadas 3 listas de 5 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, internacionales, calcular los subtotales del coste década una de las categorías considerando los costes siguientes: llamada local, 5 pesetas por paso, llamada nacional 10 pesetas por paso y llamada internacional 50 pesetas por paso. Construir un programa que lee los datos de entrada desde el teclado e imprima los resultados finales por pantalla. 31. Elabore un algoritmo para hallar la matriz inversa mediante el método de gauss. 32. Elabore un algoritmo para hallar la matriz inversa mediante la siguiente formula. A
1
1
A
adj ( At )
33. Crea un arreglo o array multidimensional que contenga 3 columnas y las
filas que tú quieras, las dos primeras columnas tendrán números y en la 3 columna será el resultado de sumar el número de la primera y segunda columna. Muestra el array o arreglo de la siguiente forma: 34. Crea un array o arreglo multidimensional que contenga la tabla de multiplicar del 1 al 9 (10 filas y 10 columnas). La primera fila y la columna debe contener estos números. El resto de números deberemos calcularlo, usando los números que disponemos, es decir, en la primera fila de 0, calculara 1*1, 1*2, 1*3, etc. usando las posiciones del array o arreglo. Así debe quedar al final: 35. Realizar los algoritmos ─ Recorra una matriz y cuente los elementos pares que hay en ella, deberá además cambiarlos por (-1)
36.
37.
38.
39.
algoritmo que a partir de la matriz matriz anterior genere un ─ Escribir un algoritmo vector cuyos elementos indique cuantos (-1) hay en cada fila. f ila. En memoria se encuentra almacenado un arreglo bidimensional de n x m posiciones cuyas componentes guardan un número que indica la cantidad de lluvia promedio de cada zona(n) de cada campo (m). considerar que un campo (ejm. El campo 1) esta particionado para el estudio en varias zonas (ejm. Zona 1, Zona Zona 2, etc.). se realiza algoritmos algoritmos que permita determinar ─ El promedio de lluvias por zona ─ El promedio de lluvias en cada campo, en todas las zonas del mismo. ─ El campo y la zona que más lluvias contabilizó. ─ El promedio de todas las mediciones que están almacenadas en el arreglo. ─ Mostrar las componentes de todo el arreglo. ─ Se pide armar y mostrar un arreglo de una dimensión que almacene la cantidad de lluvias mayores de cada campo En un arreglo bidimensional que almacena la cantidad de computadoras vendidas por tres vendedores en cuatro zonas diferentes. Se pide mostrar: ─ La zona que más computadoras vendió ─ El vendedor que menos computadoras vendió ─ La cantidad de computadoras vendidas por todos los vendedores en todas las zonas. Escriba un programa que ponga números aleatorios menores a 100 en un vector de dos dimensiones dimensiones de 5 por 4. Imprima Imprima los valores en pantalla en columnas. Se pide: ─ Calcular promedio de todos los números ─ Mostrar el valor máximo y mínimo ─ Intercambiar los valores de la diagonal principal por los valores de la última fila. ─ Trasladar los números mayores a 10 de la matriz a un vector unidimensional. Ordene la matriz resultante de mayor a menor. Muestre el promedio de todos los números del vector y los valores del vector ─ Mostrar matriz modificada Ingresar dos valores m (< 30) y n (<25) y a continuación por filas todos los componentes componentes de una matriz MATRIZA MATRIZA de m filas y n columnas. Desarrollar un programa que: ─ Imprima la matriz MATRIZA por columnas.
─ Calcule e imprima el valor promedio de los componentes de la matriz ─ Genere e imprima un vector VECSUMCOL donde cada componente sea la suma de la columna homologa. ─ Genere imprima un vector VECMAXFIL donde cada componente sea el valor máximo de cada fila 40. Ingresar un valor N(<25 y par) y luego por filas una matriz cuadrada de n filas y columnas. Desarrollar un programa que determine e imprima: ─ Imprima todos los elementos de la diagonal principal o secundaria según de cual resulte mayor la sumatoria de elementos. ─ Los elementos del cuarto (n/2 filas y n/2 columnas) cuya sumatoria resulte mayor (considerando que N fuera par). ─ Los elementos de la triangular superior o inferior dependiendo de cuál tenga mayor sumatoria de elementos 41. Escriba un algoritmo que genere una matriz cuadrada de dimensión N
que tenga la siguiente forma: ejemplo para n=4
42. Una empresa que distribuye mercadería hacia distintas localidades del
interior dispone de los siguientes datos de los viajes realizados por cada camión: ─ Placa del camión ─ Numero de destino(1..6) ─ Numero de chofer(1..150) ─ Distancia en kilómetros. Se pide desarrollar un programa que informe: ─ Cantidad de viajes realizados a cada destino ─ Numero de chofer con el viaje de menor cantidad de km. Recorridos. ─ Generar un vector con placas de los camiones que viajaron al destino 6 ordenado de mayor a menor.
No se sabe la cantidad de viajes a ingresar, un camión pude tener varios viajes 43. Escribir un programa que cargue una matriz de 3 x n de elementos
enteros y un vector de n elementos enteros. Genere una matriz de 3 x m
44.
45.
46. 47. 48.
49.
(siendo m calculado) con los números enteros que no se encuentran en el vector. Escribir un programa que inicialice cada elemento de una matriz de enteros con el valor de la suma del número de fila y columna en que está situado. Hacer un algoritmo que llene una matriz de 7 x 7. Calcular la suma de cada renglón y almacenarla en un vector, la suma de cada columna y almacenarla en otro vector. Además en otro vector e debe almacenar los valores de la diagonal principal. Hacer un algoritmo que llene una matriz de 15 x 15. Sumar las columnas e imprimir que columna tuvo la máxima suma y la suma de esa columna. Hacer un algoritmo que llene una matriz de 6 x 6 y que almacene la diagonal principal en un vector. Hacer un algoritmo que cargue una matriz de 5 x 6 e imprima cuantos de los números almacenados son ceros, cuántos son positivos y cuantos son negativos. 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.
50. Elaborar un programa que genere un cuadrado mágico, sabiendo que es
una matriz cuadrada con un número impar de renglones y columnas. En dicha matriz, los números de cada renglón, de cada columna y de cada una de las diagonales, suman el mismo valor. Por ejemplo
51. Elabore un algoritmo para calcular cuántos ceros aparecen en cada
renglón del arreglo.
52. Suponga que la siguiente tabla representa el precio de renta mensual de
6 cabañas de descanso durante un periodo de 5 años.
Escriba un programa para realizar las siguientes tares: ─ Llene un arreglo de 2 dimensiones con la tabla ─ Calcule el ingreso de la renta total por año para cada cabaña y almacene los totales anuales en un segundo arreglo ─ Calcule el porcentaje de incremento y decremento en el precio entre los años adyacentes para cada cabaña y almacene el porcentaje en un tercer arreglo. ─ Genere un informe que muestre los tres arreglos en una tabla con encabezados apropiados en fila y columna. 53. ade
Misceláneos 54. Elabore un algoritmo para calcular las fuerzas y reacciones
asociadas con una estructura estáticamente determinada, como se muestra en la figura
El tipo de estructura se puede describir como un sistema de dos ecuaciones algebraicas lineales. Los diagramas de cuerpo libre se muestran para calcular cada nodo de la figura anterior. La suma de las fuerzas en ambas direcciones, vertical y horizontal, deben ser cero en cada nodo, ya que el sistema está en reposo por tanto en el nodo 1.
Obteniéndose las matrices
55. Elabore un algoritmo para la siguiente figura muestra una palanca.
Si conoce uno de los pesos y todas las distancias de los pesos desde el punto de apoyo, es posible calcular los otros dos pesos utilizando dos ecuaciones simultáneas. Las dos ecuaciones tiene la siguiente forma general
Dónde: W1,w2 ,w3 son los tres pesos D1,d2,d3 son las distancias de los tres pesos que se localizan desde el punto de apoyo, respectivamente. Utilizando este formato de ecuación general, se obtienen dos ecuaciones conociendo dos puntos de equilibrio. Suponga que el peso w3 es de 5 libras y que se obtiene un estado de equilibrio para los siguientes valores de distancia: