apuntes de algoritmos (1)

Upload: oscar-reyna-matienzo

Post on 08-Mar-2016

293 views

Category:

Documents


3 download

DESCRIPTION

ing civil topo

TRANSCRIPT

Apuntes de Algoritmos

Apuntes de Algoritmos Realizado por Ing. Kene Reyna RojasEl presente documento es una recopilacin de apuntes de algoritmos diferentes autores de libros, documentos y direcciones de internet

INDICE GENERAL1.Sistema de procesamiento de informacin02.Concepto de algoritmo02.1.Caractersticas de los algoritmos02.2.Partes de un algoritmo03.Resolucin de problemas con computadoras y las herramientas de programacin13.1.Anlisis del problema:13.2.Diseo o desarrollo del algoritmo13.3.Resolucin del algoritmo en la computadora14.Representacin de un algoritmo14.1.Diagrama de flujo14.2.Pseudocdigo25.Datos y Tipos de datos35.1.Datos numricos35.1.1.Enteros:35.1.2.Reales:35.2.Datos Lgicos:35.3.Datos carcter:36.Constantes y Variables:47.Operadores47.1.Relacionales o condicionales:47.2.Aritmticos :47.3.Alfanumricos:57.4.Lgicos o Booleanos:57.5.Parntesis:58.Expresiones69.Regla de Prioridad610.Operacin de Asignacin711.Ejercicios712.Estructura General de un Programa812.1.Partes de un programa813.Instrucciones y tipos de instrucciones913.1.Instruccin913.2.Tipos de instruccin914.Programacin Estructurada1014.1.Estructuras Secuencial1014.2.Estructuras Selectivas1414.2.1.Selectivas simples:1614.2.2.Selectivas Dobles:1714.2.3.Selectivas mltiples:1714.2.4.Ejemplos1814.2.5.Ejercicios2014.3.Estructuras Repetitivas2814.3.1.Estructura repetitiva mientras (While o Do while):3814.3.2.Estructura repetitiva para (For):3814.3.3.Estructura repetitiva repetir:3914.3.4.Ejemplos4014.3.5.Ejercicios4715.Subprogramas5915.1.Procedimientos (Subprograma):5915.2.Funciones6015.3.Algoritmos Recursivos6116.Estructuras de Datos6416.1.Arreglos unidimensionales6516.1.1.Ordenacin6616.1.2.Bsqueda7516.2.Arreglos bidimensionales78

1. Sistema de procesamiento de informacinLos temimos procesador de datos y sistema de procesamiento (tratamiento) de la informacin se utilizan con frecuencia., el uso de diario de datos e informacin son esencialmente sinnimos sin embargo existe una diferencia datos se refiere a la representacin de algn hecho, concepto o entidad real (los datos pueden tomar diferentes formas, por ejemplo palabras escritas o habladas, nmeros y dibujos), informacin implica datos procesados y organizados, un sistema en general se define como conjunto de componentes conectados e interactivos, que tienen un propsito y una unidad total. Sistema de procesamiento de informacin es un sistema que transforma datos brutos en informacin organizado, significativo y til (Aguilar, 1988)

ProcesadorEntrada=DatosSalida=Informacin

2. Concepto de algoritmoEs el conjunto de instrucciones que especifican la secuencia de operaciones a realizar en orden para resolver un sistema especfico o clase de problema. Los algoritmos son independientes tanto del lenguaje de programacin en que se expresa como de la computadora que los ejecuta. El diseo de la mayora de los algoritmos requiere creatividad y conocimientos profundos de la tcnica de la programacin. En esencia. Todo problema se puede describir por medio de un algoritmo (Aguilar, 1988)2.1. Caractersticas de los algoritmos Un algoritmo debe ser preciso e indicar el orden de realizacin 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 algn momento sea debe tener un numero finito de pasos2.2. Partes de un algoritmoLa definicin de un algoritmo debe describir tres partes: Entrada, Proceso y SalidaEntrada: son los datos que van iniciar el procesoProceso: Es la secuencia de paso que nos permite ejecutar alguna operacinSalida: Es la informacin que se requiere al resolver el problema2.3. Frfr

3. Resolucin de problemas con computadoras y las herramientas de programacinEsta se puede dividir en tres fases importantes3.1. Anlisis del problema:El problema debe estar bien definido si se desea llegar a una solucin satisfactoria, para poder definir con precisin el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle. Una buena definicin del problema junto con una descripcin detallada de las especificaciones de entrada y salida son los requisitos ms importantes para llegar a una solucin eficaz. El Anlisis 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 preguntasQu informacin debe proporcionar la resolucin del problema?Qu datos se necesitan para resolver el problema?3.2. Diseo o desarrollo del algoritmoLa descomposicin del problema original en subproblemas ms simples y a continuacin dividir estos subproblemas en otros ms simples que pueden ser implementados para la solucin en la computadora se denomina diseo descendente (Top Down Design.). Las ventajas ms importantes del diseo descendente son. El problema se comprende ms fcilmente al dividirse en partes ms simples denominados mdulos. Las modificaciones en los mdulos son ms fciles La comprobacin del problema se puede verificar fcilmenteTras los pasos anteriores es preciso representar el algoritmo mediante determinadas herramientas de programacin diagrama de flujo, pseudocdigo o diagrama N-S3.3. Resolucin del algoritmo en la computadoraUna vez que el algoritmo est diseado y representado grficamente mediante una herramienta de programacin (diagrama de flujo, pseudocdigo o diagrama N-S) se debe pasar a la fase de resolucin prctica del problema con la computadora4. Representacin de un algoritmoPara representar los algoritmos debemos utilizar mtodos grficos o numricos, que sea independiente de un lenguaje de programacin, de tal manera que nos permita visualizar el algoritmo que queramos representar, existen varios mtodos, los ms usados a nivel internacional son el diagrama de flujo y el pseudocdigo.4.1. Diagrama de flujoEs un diagrama que utiliza los smbolos (cajas) estndar mostrados y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas lneas de flujo, que indican la secuencia en que se deben ejecutar.Un diagrama de flujo (flowchart) es una de las tcnicas de representacin de algoritmos ms antigua y a la vez ms utilizada, aunque su empleo ha disminuido, estos smbolos estn normalizados por ANSI y entre las cajas ms importantes tenemos: (Aguilar, 1988)

SmboloFuncin

Terminal: representa el comienzo, inicio, final y fin de un programa. Puede representar tambin una parada o interrupcin programada

Entrada / Salida : cualquier tipo de introduccin de datos en la memoria desde los perifricos o registro dela informacin procesada en un perifrico

Proceso: Cualquier tipo de informacin que pueda originar cambio de valor, formato, posicin de la informacin almacenada en memoria, operaciones aritmticas, de transferencia, etc.

SiNo

Decisin: indican operaciones lgicas o de comparacin entre datos, normalmente dos y en funcin del resultado de la misma determina cul de los distintos caminos alternativos del programa se debe seguir normalmente tiene dos salidas respuesta s o no pero puede tener tres o ms segn los casos

Indicador de Direccin o Lnea de Flujo:indica el sentido de ejecucin de las operaciones

4.2. PseudocdigoEs un lenguaje especificado de algoritmos. El uso de tal lenguaje hace el paso de codificacin final relativamente fcil. La ventaja de un pseudocdigo es que en su uso la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y preocuparse de las reglas de un lenguaje de programacin. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas en la lgica del programa (Aguilar, 1988)El pseudocdigo es un lenguaje algortmico, de alto lenguaje utilizado para escribir con mucha ms abstraccin instrucciones de un lenguaje de programacin.5. Datos y Tipos de datos5.1. Datos numricosEl tipo numrico es el conjunto de los valores numricos, estos pueden representarse de dos formas distintas5.1.1. Enteros:Es un subconjunto finito de los nmeros enteros. Los enteros son nmeros completos, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos (Aguilar, 1988)En java existen los siguientes tipos de datos enterosByte, 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 32767Int entero de 32 bits, con rango de valores entre -2147483648 y 2147483647Long, entero largo de 64 bits, con rango de valores entre -9223372036854775808 y 92233720368547758075.1.2. Reales:El tipo real consiste en un subconjunto de los nmeros reales, Los nmeros reales siempre tienen su punto decimal y pueden ser positivos o negativos En java existen los siguientes tipos de datos realesFloat, valores de punto flotante de 32 bits, con rango de valores entre-1.40239846e-45 y 3.40282347e+38Doubl, valores de punto flotante de 64 bits, con rango de valores entre 4.9406564581246544e-324 y 1.79769313486231570e+3085.2. Datos Lgicos:Tipo lgico tambin 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 conclusionesEn java existeBoolean, sus valore son true y false

5.3. Datos carcter:Es el conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato tipo carcter contiene un solo carcter (Aguilar, 1988)Una cadena de caracteres (String) es una sucesin de caracteres que se encuentran delimitados por una comilla (apostrofo) o dobles comillas segn el tipo de lenguaje de programacin. La longitud de una cadena de caracteres es el nmero 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 ejecucin del programa tales valores se llaman constantes de igual forma existen otros valores que cambiaran durante la ejecucin del programa a estos valores se les llama variables.7. OperadoresTodos los smbolos que representan enlaces entre cada uno de los argumentos que intervienen en una operacin 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 metodologa de la programacin de Rodrguez Almeida7.2. Aritmticos :Para tratar los nmeros se utilizan los operadores aritmticos, que junto con las variables numricas forman expresiones aritmticas (Rodriguez Almeida, 1991)

Fuente: Libro de metodologa de la programacin de Rodrguez AlmeidaLos operadores mod y div son de menor prioridad

7.3. Alfanumricos:Se utiliza para unir datos alfanumricos (Rodriguez Almeida, 1991)

Fuente: Libro de metodologa de la programacin de Rodrguez AlmeidaConcatenacin, unir expresiones alfanumricas como si fueran eslabones de una cadena.7.4. Lgicos 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 expresin

Fuente: Libro de metodologa de la programacin de Rodrguez AlmeidaOR u O: Es un operador binario, afecta a dos operadores. La expresin forma es cierta cuando al menos algunos de los operandos es cierto. Es el operador lgico de disyuncin.AND o Y: es un operador binario. La expresin formada es cierta cuando ambos operandos son ciertos al mismo tiempo. Es el operador lgico de Conjuncin.NOT o no: es un operador unario. Afecta a la expresin cambiando sus estado lgico, si era verdad lo transforma en falso o viceversa 7.5. Parntesis:Los parntesis se utilizan para anidar expresiones,

Fuente: Libro de metodologa de la programacin de Rodrguez Almeida7.6. ded8. ExpresionesLas expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis, y nombres de funciones especiales. Las mismas ideas son utilizadas en notacin matemtica tradicionalCada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadasUna expresin consta de operando y operadores segn el tipo de objetos que se manipulan, se clasifican las operaciones en: Aritmticas Relacionales Lgicas Carcter

9. Regla de PrioridadSegn Rodrguez (Rodriguez Almeida, 1991), la prioridad a la hora de evaluar los operadores en cualquier expresin es Parntesis Potencias Productos y divisiones Sumas y restas Concatenacin Relacionales LgicosSegn Joyanes(Aguilar, 1988)Las expresiones que tienen dos o ms operadores requieren usar reglas matemticas que permitan determinar el orden de las operaciones, se denominan reglas de prioridad o precedencia y son:a) Las operaciones que estn encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados (interiores unos a otros), las expresiones ms internas se evalan primero.b) Las expresiones aritmticas dentro de una expresin suelen seguir el siguiente orden de prioridad: Operador exponencial (^) Operadores de multiplicacin y divisin Operadores de suma y resta Operadores lgicos or y and10. Operacin de AsignacinLa operacin de asignacin es el modo de darle valores a una variable. La operacin de asignacin se representa con el smbolo u operador ( ). LA operacin de asignacin se conoce como instruccin o sentencia de asignacin cuando se refiere a un lenguaje de programacinEl formato general de una operacin de asignacin es

Nombre de la variable Expresin

Expresin Expresin, expresin, variable o constanteEjemploA 10Significa que la variable A se le ha asignado el valor entero de 1011. Ejercicios Encontrar el valor de la variable valor despus de la ejecucin de las siguientes operacionesa. Valor 4.0*5b. X 3.0Y 2.0Valor X^Y Yc. Valor 5X 3Valor valor* X Deducir el resultado que se puede producir con las siguientes instruccionesVariables x, y = enterosX 1Y 5Escribir x, y Deducir el valor de las expresiones siguientesX A +B +CX A + B * CX A + B / CX A + B mod CX (A + B )/ CX A + (B / C)X A + (B * C)Siendo A =5, B =25, C= 10 Escribir las siguientes expresiones en forma de expresiones algortmicas

i. ii. iii. iv. v. vi. Como se intercambian los valores de las A, B y AuxAux AA BB Aux

12. Estructura General de un ProgramaEs un conjunto de instrucciones, rdenes dadas a la mquina, que producirn la ejecucin de una determinada tarea. En esencia un programa es un medio para conseguir un fin.El proceso de la programacin es por consiguiente, un proceso de solucin de problemas, y el desarrollo de un programa requiere las siguientes fases Definicin y anlisis del problema Diseo de algoritmos Diagrama de flujo pseudocdigo Codificacin del programa Depuracin y verificacin del programa Documentacin Mantenimiento12.1. Partes de un programa

Programa (algoritmo de resolucin)EntradaSalida

12.2. d13. Instrucciones y tipos de instrucciones13.1. InstruccinSon 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 secuencia13.2. Tipos de instruccin Instrucciones de inicio y finSon aquellas instrucciones que inicializan y finalizan la escritura y ejecucin del programa por ejemplo en java public class {public static void main(String[], args){}} Instrucciones de asignacinSon aquellas instrucciones que permite asignar valores a una variableEjemplo 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 lecturaEsta instruccin lee datos de un dispositivo de entrada ejemplo leer edad, tiempo. Ejemplos.a=Integer.parseInt(JOptionPane.showInputDialog("ingrese un numero: "));

Instrucciones de escrituraEsta instruccin escribe en un dispositivo de salida ejemplo escribir A, B, CEjemplosSystem.out.Println(i) Instrucciones de bifurcacinEl desarrollo lineal de un programa se interrumpe cuando se ejecuta una bifurcacin. Las bifurcaciones pueden ser segn el punto del programa a donde se bifurca hacia adelante o hacia atrs. Bifurcacin incondicional: se realiza siempre que el flujo del programa pase por la instruccin sin necesidad del cumplimiento de ninguna condicin

Accin 1Accin 2Accin 3

Bifurcacin Condicional: depende del cumplimiento de una determinada condicin. Si se cumple la condicin, el flujo sigue ejecutando la accin F2 si no cumple se ejecuta la accin F1

Accin F2Accin F1 ?

14. Programacin EstructuradaSe refiere a un conjunto de tcnicas que aumentan considerablemente la productividad del programa reduciendo un elevado grado el tiempo para escribir, verificar, depurar y mantener los programas. La programacin estructurada incorpora Diseo descendente: es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamientoRecursos abstractos: la programacin estructura se auxilia de los recursos abstractos en lugar de los recursos concretos de que se dispone Estructuras bsicas: son tres tipos de control: secuencial, selectiva y repetitivas.

14.1. Estructuras SecuencialLa estructura secuencial es aquella en la que una accin (instruccin) 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 Pseudocdigo una Estructura Secuencial se representa de la siguiente forma:Ejemplo 1Tengo un telfono y necesito llamar a alguien pero no s cmo hacerlo.

Ejemplo 2Escriba un algoritmo que pregunte por dos nmeros y muestre como resultado la suma de estos. Use Pseudocdigo y diagrama de flujos.

Ejercicios 1 al 11 extrados de Lic. Salomn Aquino de la materia Lgica 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 artculo y calcule su valor, aplicndole un 18% de IGV. 4. Dada una medida de tiempo expresada en horas, minutos y segundos con valores arbitrarios, elabore un programa que transforme dicha medida en una expresin correcta. Por ejemplo, dada la medida 3h 118 min 195 seg, el programa deber obtener como resultado 5h 1m 15s5. Escriba un programa que calcule el rea de un tringulo rectngulo, dada la altura y la base.6. Elabore un programa que realice la conversin 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.7. Elabore un programa que realice la conversin 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 centmetros equivale.8. Elabore un programa que realice la conversin de metros a pies Donde 1 m = 3.2808 pies, Por lo tanto, el usuario proporcionara el dato de N m y el programa dir a cuantos pies equivale. 9. Elabore un programa que realice la conversin 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. 10. Elabore un programa que realice la conversin de kilogramos a libras Donde 1 Kg. = 2.2046 libras. Por lo tanto, el usuario proporcionara el dato de N Kg. y el programa dir a cuantas libras equivale. 11. Elabore un programa que realice la conversin 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.12. Introducir 5 notas por teclado, obtener la suma de las notas, el promedio de las mismas y el doble de las notas.13. Un alumno desea saber cul ser su calificacin final en la materia de Algoritmos. Dicha calificacin se compone de los siguientes porcentajes:55% del promedio de sus tres calificaciones parciales.30% de la calificacin del examen final. 15% de la calificacin de un trabajo final.14. Calcular el nmero de pulsaciones que una persona debe tener por cada 10 segundos de ejercicio, si la frmula es:num. Pulsaciones = (220 - edad)/10

15. En un hospital existen tres reas: Ginecologa, Pediatra, Traumatologa. El presupuesto anual del hospital se reparte conforme a la siguiente tabla:reaPorcentaje del presupuestoGinecologa40%Traumatologa30%Pediatra30%Obtener la cantidad de dinero que recibir cada rea, para cualquier monto presupuestal.16. El coste de un automvil nuevo para un comprador es la suma total del coste del vehculo, del porcentaje de la ganancia del vendedor y de los impuestos locales o estatales aplicables (sobre el precio de venta). Suponer una ganancia del vendedor del 12% en todas las unidades y un impuesto del 6% y disear un algoritmo para leer el coste total del automvil e imprimir el coste para el consumidor.17. Un alumno desea saber cul ser su promedio general en las tres materias ms difciles que cursa y cul ser el promedio que obtendr en cada una de ellas. Estas materias se evalan como se muestra a continuacin:La calificacin de Matemticas se obtiene de la sig. Manera:Examen 90%Promedio de tareas 10%En esta materia se pidi un total de tres tareas.La calificacin de Fsica se obtiene de la sig. Manera:Examen 80%Promedio de tareas 20%En esta materia se pidi un total de dos tareas.La calificacin de Qumica se obtiene de la sig. Manera:Examen 85%Promedio de tareas 15%En esta materia se pidi un promedio de tres tareas.18. Dados las coordenadas (x1,y1) y (x2,y2) de dos puntos en el plano cartesiano, determinar la distancia (d) entre estos dos puntos19. Se tiene las votaciones de 3 candidatos (v1, v2, v3). Sobre el total (tot), determinar el porcentaje de votacin obtenido por cada uno de los candidatos (p1, p2, p3)20. Leer tres valores enteros y realizar las siguientes operaciones Sumar todos los valores Multiplicar todos los valores Restar de las suma de los dos el doble del tercero Promedio de todos los valores. Suma de las mitades de los ltimos valores21. Leer cuatro valores reales a, b, c y d. Realizar lo siguiente: Sumar el cuadrado de los extremos ms el cubo de los dems Multiplicar el promedio de los tres primeros por el promedio de los tres ltimos valores Calcular la siguiente expresin: (suponga que c es diferente de cero)

22. Si tenemos una expresin algebraica de la forma , donde conocemos los valores de los coeficientes de cada uno de los trminos A, B, C , disee una aplicacin que realice los siguiente: Calcular dos valores de la expresin para cinco valores diferentes de la variable independiente x. Elevar a la cuarta potencia todos los coeficientes de los temimos

23. Se tiene un tringulo rectngulo de base B y altura H. Calcular lo siguiente: rea de la figura Permetro de la figura hipotenusa24. Se lee el radio de un circulo y el lado de un cuadrado, se le pide que realice una aplicacin que haga lo siguiente: Calcular rea de las figuras Sumar los permetros de ambas figuras rea promedio Elevar al cubo el permetro del triangulo Calcular la altura promedio de las figuras25. Hay un cilindro, una esfera y un cono. Al leer las dimensiones bsicas de cada uno de ellos, haga una aplicacin que realice: Volumen promedio Suma de reas laterales Altura promedio26. Leer cuatro valores reales y calcular la siguiente expresin: (suponga que c es diferente de cero)

27. Leer dos valores reales p y q del teclado y escribir la media aritmtica28. Leer un valor real x del teclado. Calcular y escribir r=x2 2x329. Leer los coeficientes de un polinomio de grado tres de la forma P(x)=x3+ax2+bx+c, leer a continuacin un cierto valor para la variable independiente x y calcular y escribir y = P(x)30. Convertir a radianes un valor de ngulo medido en grados sexagesimales31. Calcular y escribir la temperatura T que corresponde a n moles de gas ideal sometido a una presin 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

32. Permitir ingresar una hora determinada con el formato H M S (H= Hora, M= Minuto, S= Segundo). Se pide imprimir la hora que ser despus de un segundo33. Ingresar un nmero de cuatro dgitos y que obtenga e imprima el nmero que resulta de invertir sus cifras.34. Realizar un programa que calcule la longitud y el rea total de tres circunferencias sabiendo que la 1ra de ellas tiene un radio R que ser introducido por teclado, la 2da tiene un radio 3R y la 3ra tiene un radio de 3R.

35. Realizar un algoritmo para hallar cuantos estudiantes tiene una academia, donde en ciencias sociales hay dos grupos de asignaturas: Filosofa con 124 alumnos y ciencias econmicas, con 220. Si hay 25 alumnos que estudian Filosofa y Ciencias Econmicas.36. 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 dems accesorios cuestan S/. 4550. Si la modista cobra S/. 500 por cada metro de tela confeccionado y la instalacin vale S/. 2000 Cundo es el costo total de la cortina instalada?37. Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el vendedor desea saber cunto 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.38. Un profesor desea saber qu porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.39. Elaborar un programa en el cual se ingrese la distancia que existe en dos vehculos y sus respectivas velocidades hallar el tiempo de alcance y el tiempo de encuentro?40. 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.41. Convierta un ngulo sexagesimal g, m, s a grados, minutos y segundos centesimales.42. Elaborar un programa en el que se ingrese la masa atmica y la cantidad de neutrones para que nos devuelva el nmero atmico, la cantidad de neutrones y protones.43. Elaborar un programa en el que ingrese el tiempo en el que se demora en llegar el sonido de una detonacin a cierto lugar. calcular la distancia donde se realiz la detonacin? 44. Elaborar un algoritmo que solicite el nmero 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.45. Elaborar un algoritmo que permita ingresar el nmero de partidos ganados, perdidos y empatados, por algn 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.46. Elabore el algoritmo que permita ingresar dos valores numricos enteros cualquiera, luego de evaluar se debe imprimir sus valores intercambiados.47. Determinar la suma de los N primeros nmeros enteros de acuerdo a la siguiente formula:

48. Cifrado de datos: dado un nmero de cuatro dgitos se reemplazar cada dgito por (dgito +7) mdulo 10. A continuacin se intercambiar el primer dgito por el tercero y el segundo por el cuarto, y ese ser el nmero cifrado49. 14.2. Estructuras SelectivasEste tipo de estructuras se utilizan cuando el programador quiere realizar algunas bifurcaciones o establecer condiciones que cumpla o alguna determinada condicin o restriccin 14.2.1. Selectivas simples:Ejecuta una determinada accin cuando se cumple una determinada condicin. A continuacin se muestra su sintaxis

Pseudocdigo

Si condicin Entonces InstruccinFin si

En Diagrama de flujo se muestra en la figura

InstruccinCondicin

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 funcin del cumplimiento o no de una determinada condicin. A continuacin se muestra su sintaxis

Instruccin 2Instruccin 1

CondicinSi condicin entoncesInstruccin 2Sino Instruccin 1Fin si

14.2.3. Selectivas mltiples:Con frecuencia en la prctica, es necesario que existan ms de dos elecciones posibles

CondicinInstruccin 1Instruccin 2Instruccin nDiagrama de Flujo

Pseudocdigo

Segn sea condicin

Case 1:Case 2:...Case n:Fin segn

14.2.4. EjemplosEjemplo 1:Resolucin de una ecuacin de primer gradoSi la ecuacin es ax + b =0, a y b son los datos y las posibles soluciones son Si a 0 entoncesx= -b/a a=0 b0 entonces solucin imposible a= 0 b =0 entonces solucin indeterminadaAlgoritmo pseudocdigoInicioLeer a, bSi a 0 entonces x - b/aSino Si b0 entoncesEscribir solucin imposibleSinoEscribir solucin indeterminadaFin- siFin si

FinEjemplo 2Resolucin de la ecuacin de segundo grado teniendo en cuenta los tres posibles valores de discriminacinLa ecuacin de segundo grado es:ax^2 + bx +c = 0El discriminante D vale D = b^2 - 4acY las races sonX1, x2 = =Si el discriminante es menor que cero, las races son imaginariasAlgoritmo PseudocdigoInicioLeer a, b, cD b^2 -4*a*cSegn sea D hacerD 0: rcraizcua(D)X1 (-b + rc)/2*aX2 (-b -rc)/2*aEscribir x1, x2Fin _ segnfinEjemplo 3Se desea disear un algoritmo que escriba los nombres de los das de la semana en funcin del valor de una variable DIA introducida por tecladoInicioLeer DaSegn_ sea DIA hacer1: escribir Lunes2: escribir Martes3: escribir Miercoles4: escribir Jueves5: escribir Viernes6: escribir Sabado7: escribir DomingoOtros: escribir ErrorFin_ segnFin

14.2.5. Ejercicios1. 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 mxima admitida (por ejemplo mxima =4), significa que el ruido es nocivo para la salud. Realizar un programa que calcule el nivel medio del ruido de una calle y determine si el nivel de ruido es nocivo o es admisible.2. Un banco antes de conceder un prstamo a 20 aos comprueba los ingresos del solicitante. Si los ingresos son superiores a 1200.00 nuevos soles mensuales el crdito se concede. Si los ingresos son inferiores a 1200.00 nuevos soles pero superiores a 1000.00 nuevos soles y est soltero el crdito se concede. Tambin 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 crdito o no3. 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 nmero de monedas que devuelva debe ser mnimo. Suponer que el sistema monetario utilizado consta de monedas de 100, 50, 25, 5, 1 unidad.4. Escriba un programa que lea tres nmeros 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 tringulo)Triangulo: True si los nmeros pueden representar longitudes de los lados de un tringulo (La suma de dos cualesquiera de los lados debe ser mayor que el otro).Equiltero: True si es un tringulo equiltero (todos los lados son iguales).Issceles: True si es un tringulo issceles (al menos dos lados son iguales).Escaleno: True si es un tringulo escaleno (no tiene dos lados iguales).5. Escribe un programa que lea los coeficientes A, B, C de la ecuacin cuadrtica AX2 + BX + C = 0 y muestre por pantalla la solucin obtenida. Considerar los casos en que no exista solucin, que existan infinitas soluciones, que exista una sola solucin (Ecuacin lineal) o que existan dos soluciones.6. Se quiere realizar un programa que determine si un alumno es apto o no. Un alumno se considera apto si su nota final es de 5 o ms 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 puntuacin del examen. Nota final = 0.2* Trabajo + 0.5*Test + 0.3*Examen. Adems debe tener la calificacin de acuerdo a la tabla:Nota >=9.5 Matrcula de Honor8.5 nFin

Una forma ms general seria

InicioLeer n, a, bFibo1aFibo2bi2Escribir fibo1, fibo2Repetirii+1Fibofibo1 + fibo2Fibo1fibo2Fibo2fiboEscribir fiboHasta que i >nFinEjemplo 13Mostrar los N primeros trminos de la siguiente serie, donde N debe estar entre 5 y 305, 7, 10, 14, 19,..InicioLeer nSi (n5) y (n30) entoncesi1s5Escribir sMientras i 10Escribir maxFinEjemplo 14Determinar simultneamente los valores mximo y mnimo de una lista de 100 nmeros ledos por tecladoInicioLeer nummaxnumminnumdesde i 2 hasta 100 hacerLeer numSi max num entoncesmaxnumsinoSi num min entoncesminnumfin sifin sifin desdeEscribir max, minFinEjemplo 15Calcular el Mximo Comn Divisor de dos nmeros A y B de acuerdo con el algoritmo de Euclides.InicioLeer A, BSi A < B entoncesauxBBAAauxMientras B 0 hacerRresto(A/B)ABBRFin mientrasEscribir ASinoMientras B 0 hacerRresto(A/B)ABBRFin mientrasEscribir AFin

Ejercicio 21InicioLeer a,b,eFa sen(a)+cos(1+a^2)-1Fb sen(b)+cos(1+b^2)-1Si fa*fb -1) y (x 1) entoncesPara i1 hasta n hacerpotx^iSi resto (i/2)=0 entoncesS s-pot/iSinoS s + pot/iFin siFin paraFin siEscribir sFin

14.3.5. Ejercicios1. Hallar el factorial de un nmero N utilizando la estructura para, mientras y repetir2. 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 estructuras4. Disear un algoritmo para imprimir la suma de los nmeros impares menores o iguales que n. Utilice las tres estructuras.5. Calcular el nmero mximo de una serie de 100 nmeros. utilice as tres estructuras. 6. Realizar un algoritmo que escriba los N primeros nmeros de la serie de Fibonacci 1,2,3,5,8,13,21, Utilice las tres estructuras7. Determinar la media de una lista indefinida de nmeros positivos ledos por teclado y estos son terminados con un nmero negativo o cero. Utilice las tres estructuras8. Calcular los factoriales de n ledo por teclado. Utilice las tres estructuras.9. Calcular el factorial de los n nmeros ledos por teclado. Utilice las tres estructuras.10. Se quiere hallar el producto de varios nmeros positivos introducidos por teclado, de manera que el proceso termina cuando se introduce un nmero negativo. Utilice las tres estructuras11. Escriba un algoritmo que encuentre el primer divisor entero de un nmero, que previamente se ha introducido por teclado. Utilice las tres estructuras.12. Escriba un algoritmo que calcule el mximo de los nmeros positivos introducidos por teclado. Sabiendo que se introducen nmeros desde teclado hasta teclear uno negativo. El negativo no cuenta.13. Escriba un algoritmo que determine cules son los mltiplos 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 ao 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 nmero introducido por teclado. Se termina cuando el nmero es negativo o 0.16. Dado un capital c, a un inters i, durante m aos, escriba un algoritmo que calcule en cuanto se habr convertido ese capital en m ao, sabiendo que es acumulativo.17. Dada la siguiente formula:

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

, Para N > 0 Para un N dado Para que N sea tal que < e (por ejemplo e = 10 - 4) Escribir un algoritmos que calcule la exponencial de a segn dicha frmula, utilizando n=10 y luego n=20. Utilice las tres estructuras19. Dadas 3 listas de 5 nmeros de telfono, donde la primera lista contiene el nmero de pasos consumidos en llamadas locales asociado a cada telfono, la segunda contiene informacin sobre llamadas nacionales y la tercera contiene informacin sobre llamadas internacionales, calcular los subtotales del coste dcada una de las categoras 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. Disear un algoritmo que determine los nmeros primos entre dos nmeros dados.21. Los empleados de una fbrica trabajan en dos turnos, diurno y nocturno. Se desea calcular el jornal diario de acuerdo con los siguientes puntos: Las tarifas de las horas es de 50 nuevos soles La tarifa de las horas nocturnas es de 80 nuevos soles Caso de ser domingo la tarifa se incrementa en un 100% tanto en el turno diurno y nocturno22. Disear el algoritmo que dado una lista nmeros ledos por teclado, indique si es par o es impar e imprima el total de nmeros ledos, adems el total de los pares e impares.23. Dado un nmero N, calcular la suma 5 +10 +15 + 20+ . . . +5* n24. Disear el algoritmo que encuentre (muestre) los nmeros pares que hay entre 100 y 1000.25. Disear el algoritmo que calcule la suma de los pares que hay entre dos nmeros dados.26. Calcular los pagos mensuales de una hipoteca y el total a pagar. El programa debe solicitar el capital, el inters anual y el nmero de aos y debe escribir la cuota a pagar mensualmente. Para calcular la cuota se utiliza la siguiente frmula: Sea C el capital del prstamo, R la tasa de inters mensual y N el nmero de pagos. La cuota mensual viene dada por:

Y el inters mensual ser: inters anual / 100 /1227. Cifrado de datos: dado un nmero de cuatro dgitos se reemplazar cada dgito por (dgito +7) mdulo 10. A continuacin se intercambiar el primer dgito por el tercero y el segundo por el cuarto, y ese ser el nmero cifrado. Nota: obtener el cociente mediante diferencias sucesivas.28. Desarrolle el algoritmo de la biseccin para el clculo de la siguiente ecuacin no lineal.

Se debe ingresar los valores de a, b, iteracin mxima y un error mnimoPara calcular el error relativo porcentual y comparar con el error mnimo, se calcula con la siguiente formula.

29. Del algoritmo del ejercicio 20 remplazar el paso 1 por la siguiente formular

A este algoritmo se le llama falsa posicin30. Desarrolle el algoritmo del trapecio que consiste en la siguiente formula.

Donde los valores de a y b es el intervalo de la integral definida y n es el nmero de segmentos. Utilizar la siguiente funcin, para verificar los resultados. F(X) = 0.2 + 25 X - 200 X2 + 675 X3 - 900 X4 + 400 X5

31. Elabore el algoritmo de integracin numrica de Simpson 1/3 que consiste de la siguiente formula

Donde los valores de a y b es el intervalo de la integral definida y n es el nmero de segmentos pares.

32. Elabore el algoritmo de integracin numrica de Simpson 3/8 que consiste de la siguiente formula

Donde los valores de a y b es el intervalo de la integral definida y n es el nmero de segmentos impares.

33. Desarrollar un algoritmo para Aproximar la siguiente funcin y = seno(x)

34. Desarrollar un algoritmo para Aproximar la siguiente funcin y = coseno(x)

35. Desarrollar un algoritmo para Aproximar la siguiente funcin y = ex

36. Desarrollar un algoritmo para Aproximar la siguiente funcin y = ln(1+x)

37. Dado n>0 hallar la suma

38. Se desea calcular la suma siendo los valores ak los elementos de la sucesin dada por ak= ak-1+ ak-2, para k > 2, con a1=1 y a2=1. El limite n ha de leerse del teclado y se supone mayor que dos.39. Se desea calcular la suma , siendo m y n dos nmeros enteros positivos que se suponen dados.40. Escriba los n primeros trminos de la sucesin dada por , siendo n un numero entero positivo dado.41. Escribir un programa que encuentre el logaritmo en cualquier base de un numero positivo x. la base y el nmero, lo ingresara el usuario y el programa debe continuar hasta que se ingrese un valor 0

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 algn 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 nmeros enteros positivos p y q escriba un algoritmo que permita hallar el mximo comn divisor de los mismos45. Calcule e imprima los nmeros primos entre 1 y 10046. Mostrar los N primeros trminos de la siguiente serie, donde N debe estar entre 5 y 305, 7, 10, 14, 1947. Mostrar los N primeros trminos de la siguiente serie, indicando adems la suma de los mismos.7, 9, 12, 16, 2148. Determinar la cantidad de trminos que son mltiplos de 3 en los 200 primeros trminos de la siguiente serie6, 8, 10, 12, 1449. Contar y sumar los nmeros enteros positivos ledos por teclado. Se termina cuando se ingresa un nmero negativo.50. Sume los nmeros del 1 al 200 menos los mltiplos de 5.51. Calcule la suma y el producto de los nmeros impares comprendidos entre 11 y 111. Resolver con tres estructuras distintas.52. Calcule el MCD (Mximo Comn Divisor) de dos nmeros 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 P0). El valor de n se solicitar al principio del programa y los nmeros sern introducidos por el usuario.

70. Realice un programa que determine si un nmero ledo del teclado es primo o no

71. Un nmero perfecto es un entero positivo, que es igual a la suma de todos los enteros positivos (excluido l mismo) que son divisores del nmero. El primer nmero perfecto es 6, ya que los divisores de 6 son 1, 2, 3 y 1 + 2 + 3 = 6. Escriba un programa que lea un nmero entero positivo n y muestre por pantalla si ese nmero es o no perfecto.

72. Realizar un programa que simule un juego de adivinar un nmero. El programa pedir al usuario dos nmeros que representan el rango de valores entre los que se encuentra el nmero a adivinar, as como el nmero de intentos para adivinar el nmero. A continuacin el programa generar un nmero aleatorio entre esos dos nmeros y el usuario deber adivinarlo en el nmero mximo de intentos antes indicado. Cada vez que el jugador introduce un nmero 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 , y1+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 cul es la correcta). Una vez preguntado por una multiplicacin el programa debe preguntar si desea realizar otra. En caso afirmativo preguntar aleatoriamente otra multiplicacin. 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 nmero dado por teclado. En cada multiplicacin el programa debe indicar si se ha acertado o no. Al final del programa, ste deber mostrar un resumen indicando el nmero de respuestas correctas y errneas, as como el porcentaje de aciertos y de fallos75. Escribir un algoritmo que calcule la suma de los nmeros enteros de n a m (m>n).76. Implementar un algoritmo que calcule el producto de dos nmeros enteros (n*m) haciendo slo sumas.77. Disear una funcin que calcule el cociente y resto de la divisin entera de dos nmeros mediante restas y sumas.

78. Escribir una funcin que calcule el cuadrado de un nmero haciendo slo sumas. Ayuda: el cuadrado de un nmero n es la suma de la n primeros nmeros impares. Ejemplo: 32=1+3+5=979. Escribir un algoritmo que convierta un nmero entero en otro nmero entero que ser el primero pero con las cifras que lo forman escritas al revs80. 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 bolvares cada mes hasta devolver el prstamo completo. Parte del pago mensual sern 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 devolverc.- La cantidad acumulada de intereses pagados al final de cada mes.d.- La cantidad del prstamo an pendiente al final de cada mes.e.- El nmero necesario de pagos mensuales para devolver el prstamo 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 nmero primo es una cantidad entera positiva nicamente divisible por uno o por s mismo. Calcular y tabular los n primeros nmeros primos.83. Por un canal trapezoidal fluye agua a una tasa de Q=20 m3/s. la profundidad crtica y, para dicho canal satisface la ecuacin

Donde g = 9.81 m2/s, Ac=rea de la seccin transversal (m2) y B ancho del canal en la superficie (m). Para este caso, el ancho y el rea de la seccin transversal se relacionan con la profundidad y por medio de

Y

Resuelva para la profundidad crtica 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 nmero de iteraciones supere a 10.

El mtodo de la secante consiste en la siguiente formula

Donde Xi-1, y Xi son valores iniciales de una ecuacin.84. Se est diseando un tanque esfrico para almacenar agua para un poblado pequeo en un pas en desarrollo. El volumen de lquido que puede conocer se calcula con

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 mtodo de newton Raphson a fin de obtener la respuesta. Determine el error despus de cada iteracin.Este mtodo de Newton Raphson consiste de la siguiente formula.

Donde Xi es el valor inicial de la ecuacin.85. Evalu e-5, con el uso de dos mtodos.

Y

Comprelo con el valor verdadero de 6.737947x 10-3. Utilice 20 trminos para evaluar cada serie y calcule los errores relativos por cada mtodo

86. Desarrolle el algoritmo para hallar el valor de un polinomio por la serie de Taylor

Tomando como tamao de paso h

Quedando la funcin de truncamiento

Trunque la serie hasta la tercera derivada87. Elaborar un algoritmo para calcular el impuesto anual de 4ta categora de acuerdo al siguiente procedimiento Si un recibo por honorario es mayor de S/. 1500 se le hace la retencin del 10% caso contrario no tiene retencin 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 retencin. Caso contrario se le hace la retencin de la suma total del 10%. Cuando la proyeccin de sus ingresos anuales por Rentas de Cuarta Categora no supere el monto afecto al impuesto (para el ejercicio2014:S/. 33,250), podr solicitar laSuspensin de Retenciones y/o Pagos a Cuenta. Deber incluir tambin en la cantidad referencial, los ingresos obtenidos por rentas de Quinta Categora en caso las tenga. Referencia:Resolucin de Superintendencia N 373-2013/SUNAT La renta de cuarta categora 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 elimpuesto anual, De haberse obtenido, luego de la deduccin un monto positivo, a ste se procede aplicar la tasa respectivaHasta27 UIT15%

Por el exceso de27 UIT21%

Y hasta54 UIT

Por el exceso de54 UIT30%

IMPUESTO ANUAL=REMUNERACIN NETA ANUALxTASA

Nota UIT = 360088. Elaborar un algoritmo para calcular el coeficiente de correlacin, segn la frmula:

^

89. de

15. SubprogramasLa resolucin de problemas complejos se facilita considerablemente si se dividen en problemas ms pequeos llamados subproblemas (Subprogramas). Las herramientas usadas en la programacin son las funciones y procedimientos (subrutinas)

15.1. Procedimientos(Subprograma):Llamados tambin subrutina, un procedimiento es un subprograma que ejecuta un proceso especfico, cuando se invoca el procedimiento, los pasos que lo definen se ejecutan y a continuacin se devuelve el control al programa que le llamoDeclaracin de un procedimiento

Procedimiento nombre (parmetros formales, parmetros variables)InicioAccionesFin

Donde Nombre: Es el nombre del procedimiento a invocarParmetros formales: Tiene el mismo significado que en las funcionesParmetros variables: En algunos lenguajes de programacin est permitido este tipo de declaracin, para designar que ellos obtendrn resultados del procedimiento en lugar de los valores actuales asociados a ellos.Invocacin a una funcin(Llamar_a) nombre (lista de parmetros actuales)Por ejemploProcedimiento divisin (dividendo, divisor, cociente, resto)InicioCociente dividendo/ divisorResto dividendo - cociente*divisorRetornoFin

Algoritmo aritmticaInicioLeer M, NLlamar_a divisin (M, N, P, Q)Escribir p, QFin15.2. FuncionesMatemticamente una funcin es una operacin que tiene uno o ms valores llamados argumentos y produce un valor denominado resultado o valor de la funcin para los argumentos dados (Aguilar, 1988)Declaracin de una funcin

Funcin nombre _ funcin (par1, par2, par3,)InicioAccionesFin

Dnde: Par1, par2, Lista de parmetros o argumentosNombre_ funcin Nombre asociado con la funcin, que ser un nombre de identificacin validoAcciones instrucciones que constituyen la definicin de la funcin y que debe contener una accin solo de asignacin que asigne un valor al nombre de la funcin, es decir, nombre_ funcin expresinPor ejemplo la funcin

Funcin fun(x)InicioFunx/(1 + x^2)FinInvocacin de una funcinUna funcin puede ser llamada solo mediante referencia de la forma siguiente:Variable de asignacin nombre _ funcin (par1, par2,)Por ejemploF_x fun(x)

Procedimiento vs funcini. Un procedimiento es llamado desde el algoritmo o programa principal mediante su nombre y una lista de parmetros actuales o bien con la instruccin llamar. Al llamar el procedimiento se detiene momentneamente el programa que se estuviera realizando y el control pasa al procedimiento llamado. Despus que las acciones del procedimiento se ejecutan, se regresa a la accin inmediatamente siguiente a la que se llam.ii. Las funciones devuelven un valor, las subrutinas pueden devolver 0,1 o ms valores y en forma de la lista de parmetrosiii. El procedimiento se declara igual que la funcin, pero su nombre no est asociado a ninguno de los resultados que obtiene

15.3. Algoritmos RecursivosEs un algoritmo que se define en trminos de s mismo. Son implementados en forma de subrutinas (Funciones,, Procedimientos, subprogramas, etc.) De tal manera que dentro de una subrutina recursiva hay una o ms llamadas a s misma.Es una herramienta muy potente en algunas aplicaciones sobre todo de clculo. La recursin puede ser utilizada como una alternativa a la repeticin o estructuras repetitivas. El uso de la recursin es particularmente idneo para la solucin de aquellos problemas que pueden definirse de modo natural en trminos recursivos (Aguilar, 1988)Recursividad directa: cuando en una subrutina hay llamadas a ella misma Recursividad indirecta: cuando se tienen varias subrutinas y estas se llaman unas a otras formado ciclos.La recursividad es un elemento muy importante en la solucin de algunos problemas VentajasAlgunos problemas son esencialmente recursivos, por lo cual su implementacin se facilita mediante un algoritmo de naturaleza recursiva, sin tener que cambiarlo a un mtodo iterativo. DesventajasPuede llegar a utilizar grandes cantidades de memoria en un instante, pues implementa una pila cuyo tamao crece linealmente, con el nmero de recursiones necesarias en el algoritmo EjemploCalcular factorial de un nmero nFuncin factorial (n)InicioSi n = 0 entoncesFactorial 1SinoFactorial n* factorial(n-1)Fin siFin InicioLeer nFact factorial(n)Escribir el factorial de n es, factFin

Ejercicios1. Disear un algoritmo que calcule el mximo comn divisor de dos nmeros mediante el algoritmo de Euclides con el siguiente procedimientoa. Dividir el nmero mayor (A) por el menor (B). Si el resto de la divisin es cero el nmero B es el mximo comn divisorb. Si la divisin no es exacta, se divide el nmero menor (B) por el resto de la divisin anteriorc. Se siguen los pasos anteriores hasta obtener un resto cero. El ltimo divisor es el mcd buscado2. Para calcular el mximo comn divisor (mcd) de dos nmeros, se recurre a una funcin especfica definida con un programa con un subprograma. Se desea calcular la salida del programa principal con dos nmeros A y B, cuyos valores son 15 y 10, es decir, el mcd (A, B) y comprobar el mtodo de paso de parmetros por valor3. Realizar un algoritmo que permita ordenar tres nmeros mediante un procedimiento de intercambios de dos variables 4. Disear una funcin que calcule la media de tres nmeros ledos del teclado y poner un ejemplo de su aplicacin5. Realizar un procedimiento que realice la conversin de coordenadas polares (r, ) a coordenadas cartesianas (x, y)X = rcos()Y = rseno()6. Funcin que calcule xy, con x R, y suponiendo que y es un valor entero y > 07. Funcin que calcule xy, con x R, y suponiendo que y es un valor entero que puede ser positivo, negativo o cero8. Funcin que calcule , siendo m y n dos enteros positivos. Puede hacer uso de las funciones que haya realizado con anterioridad para calcular el factorial.9. Funcin que calcule la suma de las componentes de un vector.10. Funcin para calcular la suma , siendo a un vector dado como argumento, a Rn y siendo n > 0, entero otro argumento.11. Funcin para calcular el producto escalar de dos vectores v Rn y w Rn, suponiendo n > 0 entero.12. Funcin Evapol(), que evalu el polinomio A(x) =a1xn+ + anx1+ an+1x0, dado el grado del polinomio n 0 entero, el vector de coeficientes a =( a1, , an+1) y el valor x. Puede hacer uso de las funciones que haya realizado con anterioridad para calcular las potencias.13. Funcin que calcule el vector de coeficientes de un polinomio C suma de otros dos (A y B). La funcin ha de recibir los grados na, nb y los vectores de coeficientes vA = (a1,, ana+1) y vB = b1,,bnb+1, de cada uno de los dos polinomios sumados. La funcin devolver el grado y el vector de coeficientes del polinomio suma C = A+B.14. Elaborar el algoritmo que permita leer un nmero y que utilice un procedimiento recursivo que invierta los dgitos del nmero.15. Elaborar el algoritmo que calcule en forma recursiva los factores primos de un nmero.16. Elaborar el algoritmo que describa los movimientos que deben realizarse para trasladar a la torre C todos los discos de diferentes tamaos colocados en forma ordenada en una torre A.Para efectuar esta tarea se dan las siguientes reglas:a) Se puede emplear una torre auxiliar Bb) Se debe mover un disco cada vezc) No se puede mover un disco de tamao menor sobre un disco de tamao mayor.17. de

16. Estructuras de Datos

Una estructura de datos es una coleccin de datos que pueden ser caracterizados por su organizacin y las operaciones que se definen en ella. La estructuras d datos son muy importantes en los sistemas de computadoras. Los tipos de datos ms frecuentes utilizados en los diferentes lenguajes de programacin son(Aguilar, 1988)

Datos simplesDatos estructuradosEstndarDefinido por el programador(No estndar)Simples o EstticosCompuestos o dinmicosEnteroRealCarcterLgicoSub rangoEnumerativoArray (vectores / matrices)RegistrosFicherosConjuntosCadenas (String)Listas (pilas / colas)Listas enlazadasArbolesGrafos

16.1. Arreglos unidimensionales (array)

Es un conjunto finito y ordenado de elementos homogneos. La propiedad ordenada significa que el elemento primero, segundo, tercero de un Arreglo puede ser identificado. Los elementos de un arreglo son homogneos, es decir del mismo tipo de datos (Aguilar, 1988)El tipo ms simple de arreglo es el arreglo unidimensional o vector (matriz de una dimensin) a continuacin la representacin de un vector

i A(i)114.0

212.0

Subndice o ndice38.0

47.0

58.40

68.20

78.15

87.25

El subndice o ndice de un elemento(1, 2, ..,n) designa su posicin en la ordenacin del vectorDeclaracin de un arregloNombre arreglo = arreglo [liminf . . . limsup] de tipo de dato

DondeNombre arreglo: nombre valido del arregloLiminf . . . limsup :lmite inferior y superior del rango del arregloTipo de dato: es el tipo d datos de los elementos del arreglo, puede ser entero, carcter, real,Asignacin a un arregloA (1) 10 se asigna el valor 10 a la posicin 1 del vector AA (5) 20 se asigna el valor 20 a la posicin 5 del vector ALectura y escritura de datosLa lectura y escritura de un arreglo u operaciones de entrada y salida normalmente se realizan con estructuras repetitivas.Final = arreglo [1.. 20] de real// LecturaDesde i = 1 hasta 20 hacerLeer final (i)Fin desde// EscrituraDesde i = 1 hasta 20 hacerEscribir final (i)Fin desde16.1.1. Ejemplos

Ejemplo 1Escribir un algoritmo que permita calcular el cuadrado de los 100 primeros nmeros enteros y a continuacin escribir una tabla que contenga dichos 100 nmeros cuadrados.AlgoritmoInicioDesde N 1 hasta 100 hacer C N*NEscribir N, CFin desde{Escritura de la tabla}Desde N 1 hasta 100 hacerA(N) N*NEscribir A(N)Fin desdeFinEjemplo 2

Se tiene N temperaturas. Se desea calcular su media y determinar entre todas ellas cuales son superiores o iguales a esa mediaAlgoritmoInicioSuma 0C 0Leer NDesde i 1 hasta N hacerLeer temp[i]Suma suma/NFin desdeDesde i 1 hasta N hacerSi temp[i] >= media entoncesC C +1Escribir temp[i]Fin siFin desde iEscribir la media es:, mediaEscribir el total de temperaturas mayores iguales a la medio es : , CFin

16.1.2. Ejercicios

1. Leer las componentes de un vector de nmeros reales de dimensin 10. Escribirlo luego en la pantalla.2. Escriba un algoritmo que devuelva el valor de la componente mxima de un vector.3. 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).4. Considere una encriptacin de mensajes muy antigua inventada por Julio Cesar, la cual se basa en que cada letra de un mensaje se le asocia a un nmero (el orden en el abecedario), luego se suma al nmero de cada letra otro nmero (la clave) y el resultado es una nueva letra, mira el abecedario. Por ejemplo, el m2ensaje cruzad el rubicon , se transformara en dsvabeUfmUsvcjdpo si le sumo el nmero 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 despus de la z va la a. Adems los espacios en blanco se convierten en letras U si la clave es 1 en V si es 2, etc.Para ello, elabore un pseudocdigo que a partir de un texto (Cadena de caracteres leda por teclado) imprima texto cifrado con la clave entera, tambin leda desde teclado.Pista: dentro del bucle que debe recorrer todas las letras del texto, use la siguiente frmula para encriptar.Texto_encriptado[i] =(texto_original[i]-a + clave) % 26+a (26 es el nmero de letras del alfabeto ASCII).5. Leer un entero n supuesto n >0 y un vector v Rn x 1, calcular y escribir el producto escalar m = vtv, m R, donde vt simboliza el vector transpuesto de v.6. Leer n (suponiendo que es entero y > 0). Leer a continuacin la n componentes de un vector de nmeros reales dimensin n. Calcular y escribir luego la media aritmtica de sus componentes.7. Leer n (suponiendo que es entero y >0) y un vector de dimensin n. Calcular y escribir la componente de mayor valor y su ndice dentro del vector.8. Leer n (suponiendo que es entero y mayor que dos). Construir un vector v Rn x 1 tal que vk = vk-1 / 3 + 0.5, para k = 2,, n y siendo v1 = 1.9. Leer n (suponiendo que es entero y mayor de dos). Construir un vector v Rn x 1 , tal que sus componentes sean los trminos de ls sucesin de Fibonacci.10. Se han medido las longitudes de tornillos procedentes de un mismo lote de fabricacin. Se han dispuesto en un vector v de dimensin n>2. Se dispone de v y n. Disee un algoritmo para calcular la media y varianza de las longitudes. La varianza se calcular como Siendo la media aritmtica de las componentes de v.11. Se quiere construir y escribir un vector v de dimensin n cuyas componentes siguen la ley vk = 3*vk-1 k, para k 2. Tanto n como v1 son cantidades que han de leerse del teclado.12. Determinar los valores de i, j, despus de la ejecucin de las instrucciones siguientes.InicioI 1J 2A[i] jA[i] iA[j + 1] j + 1I A[j] + A [i]A[3] 5J A[j] + A [i]Fin13. 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

14. Crear un vector de 70 elementos donde cada elemento del vector sea igual a su posicin15. Un avin 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. Disear un algoritmo que permita hacer la reserva de plazas de avin y se detenga media antes de la salida, cuyo momento se abrir la lista de espera.16. Dada en una lista no ordenada de nmeros y un nmero ledo por teclado:a. Disear una solucin que busque en la lista el nmero ledo. Si lo encuentra, debe informar de su posicin en la lista, sino debe devolver la posicin cero.b. Modificar el anterior para que devuelva el nmero de veces que aparece.c. Disear una solucin que busque el nmero mayor y devuelva cuantas veces aparece.d. Disear una solucin que devuelva Verdadero si el nmero ledo, aparece ms veces que el mayor.e. Disear una solucin que calcule la media de todos los nmeros.f. Disear una solucin que calcule la media entre el mayor y el menor.g. Disear una solucin 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 penltimo de la lista inicial, etc., etc., etc.17. Dadas 3 listas de 10 nmeros de telfono, donde la primera lista contiene el nmero de pasos consumidos en llamadas locales asociado a cada telfono, la segunda contiene informacin sobre llamadas nacionales y la tercera contiene informacin sobre llamadas internacionales, calcular los subtotales del coste de cada una de las categoras considerando los costes siguientes: llamada local, 5pesetas por paso, llamada nacional 10 pesetas por paso y llamada internacional50 pesetas por paso. Construir un programa que lee los datos de entrada desde el teclado e imprima los resultados finales por pantalla.18. Escriba un algoritmo que busque el valor mximo de los elementos de un vector de N nmeros reales, donde N es una constante a la que le daremos un valor cualquiera. El algoritmo debe escribir por pantalla el valor mximo. 19. Dado un vector v de dimensin n cuyas componentes son todas positivas o cero se desea reordenar sus componentes de mayor a menor por ejemplo, siV = [2 3 8 5 4]El resultado ha de ser un nuevo vectorw= [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 mtodos de ordenacin)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 automviles dispone de un modelo de vehculo en cinco colores. Para saber la aceptacin 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 nmero del color elegido (de uno a cinco) cada vez que pregunte a una persona nueva. Cuando no quiera preguntar a nadie ms introducir el valor -1. En ese momento el programa le indicara el nmero de votos que cada color ha obtenido. Posteriormente se han de ordenar los colores segn los resultados de la votacin.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 estn ms 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 ordenacin 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 ordenacin 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 aritmtica.24. La cantidad de un cierto isotopo radioactivo presente en una mezcla varia con el tiempo pues el isotopo se descompone emitiendo radiacin. Se denota mediante y(k) la cantidad en gramos de isotopo en el instante de tiempo t = k medido en aos unos cientficos han descubierto que se cumple que y(k) = 0.99*y(k-1). Si un barril de desechos radioactivos contiene 1000 gramos de isotopo Cul ser la cantidad de isotopo presente al cabo de 500 aos?25. La velocidad de un paracaidista en su descenso al suelo una vez que ha abierto el paracadas 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 cada tpica puede durar 5 minutos y que el paracadas 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 Cuntas habr al cabo de un da?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)-B28. La empresa ACME S.A. ha asignado un cdigo a cada uno de sus obreros. El cdigo est formado por 5 caracteres y tienen la siguiente estructura:XX-Y-ZZDondeXX= especialidadY=categoraZZ=numero (0 - 90)EspecialidadCO=ConstruccinCA=CarpinteraIS=InstalacionesLI=LimpiezaCategoras:F=oficialO=operarioP=Pen

Escribir un algoritmo que permita ingresar el cdigo de cada obrero y mostrar en pantalla la especialidad y la categora. Se debe considerar que el cdigo ingresado por el operador tenga 5 caracteres, si el cdigo no corresponde a una especialidad o categora, el programa deber mostrar el mensaje cdigo no valido.29. Construir un algoritmo que imprima el calendario correspondiente a un mes y ao determinado. Por ejemplo considera aos bisiestos entre 1980 y 2020. Los das domingos deben aparecer resaltados.30. Escribir un programa que imprima las n primeras lneas de pascal (n se ingresa por teclado)11 11 2 11 3 3 11 4 6 4 1

16.2. Ordenacin, Bsqueda y Intercalacin16.2.1. OrdenacinLlamado tambin clasificacin, es el proceso de organizar datos en algn orden o secuencia especfica tal como creciente o decreciente para datos numricos o alfanumricos para datos de caracteres. Los mtodos de ordenacin se dividen en dos categoras: Ordenacin de vectores, tablas (arrays) Ordenacin de archivosLos mtodos de clasificacin se explicaran aplicados a vectores (arrays unidimensionales) pero se pueden extender a matrices o tablas (arrays bidimensionales) considerando la ordenacin respecto a una fila o columna los mtodos directos son los que se realizan en el espacio ocupado por el array. Los ms populares son: Mtodo de intercambio o burbuja Mtodo de Seleccin Mtodo de Insercin

Mtodo de intercambio o de BurbujaSe basa en el principio de comparar pares de elementos adyacentes e intercambiarlos entre s, de una lista o vector hasta que estn todos ordenados.50155614351129

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 estn en orden, se mantienen como estn, en caso contrario se intercambian entre s. A continuacin 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 necesariosAlgoritmo:Desde i 1 hasta n-1 hacer {este representa el numero pasadas}Desde j 1 hasta n-1 hacer {este representa nmero de comparaciones}Si A[ j ] > A [j+1] entoncesAuxA[j]A[j] A [j+1]A [j+1] AuxFin siFin desde jFin desde i

Mtodo de SeleccinEl algoritmo de ordenacin por seleccin 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 subndice n (o bien el elemento menor en el subndice 1) A continuacin se busca el elemento mayor en la sablista de subndices 1.. n-1 y se intercambia con el elemento de subndice n-1, por consiguiente se sita el segundo elemento mayor en la posicin n-1. A continuacin se busca el elemento mayor en la sablista 1..n-2 y as sucesivamente

AlgoritmoFuncin Posmayor (j,tabla)Iniciondice_max 1Desde ndice 2 hasta j hacerSi tabla [ndice]> tabla [ndice_max] entoncesIndice_maxindiceFin siPosmayorindice_maxFin desde iFinInicio {programa principal}Desde j lmite hasta 2 hacerMayor Posmayor(j, tabla)Aux Tabla [mayor]Tabla [mayor] Tabla[j]Tabla[j] AuxFin desde jFin

Mtodo se InsercinEl mtodo se basa en considerar una parte de la lista ya ordenando y situar cada uno de los elementos restantes insertndolo en el lugar que le corresponde por su valorAlgoritmoProcedimiento desplazar (tabla, aux, k, nuevopos)InicioEncontrado falseMientras (k > 1) y (no encontrado) hacerSi tabla [k-1] >aux entoncesTabla [k] tabla [k - 1]K k 1SinoEncontrado trueFin siNuevapos kFin mientrasFinInicio {programa principal}Desde K 2 hasta N hacerAux tabla[k]Desplazar (tabla, k, aux, nuevapos)Tabla [nuevapos] auxFin desde kFin

Mtodo de ShellEste mtodo es una mejora del mtodo de insercin directa que se utiliza cuando el nmero de elementos a ordenar es grande se suele denominar tambin ordenacin por disminucin 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 estn 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 registrosAlgoritmoInicioIntervalo n div 2Mientras (intervalo > 0) hacerDesde i (intervalo - 1) hasta n hacerj i intervaloMientras (j > 0) hacerK i + intervaloSi A[j]