Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ABRIL 2007
Versin 1.1
Damaris Prez Cruz Jos Gabriel Reding Domnguez Patricia Zavaleta Carrillo
ndice de ejercicios
Introduccin.............................................................................................................4 Objetivo.....................................................................................................................5 PARTE I. ENUCIADOS DE EJERCICIOS................................................................5 Tema 1. Estructuras Secuenciales........................................................................5 Tema 2. Estructuras de Seleccin (si-entonces-sino, casos)...........................11 Tema3. Estructura Repetitiva (Mientras-Hacer, Hacer-Mientras, Desde-Para) .................................................................................................................................18 PARTE II. SOLUCIONES........................................................................................23 Soluciones Ejercicios Secuenciales....................................................................23 Soluciones Ejercicios de Seleccin....................................................................38 Soluciones Ejercicios Estructura Repetitiva......................................................73 FUENTES CONSULTADAS.................................................................................111
Introduccin
Este cuaderno es una revisin del cuaderno de ejercicios realizados el ao pasado, en este cuaderno se incluyen todos los algoritmos implementados con procedimiento y funciones y tambin todos los pasos del algoritmo implementados en un solo bloque, esto con el fin de remarcar la diferencia y la utilidad del uso de procedimientos y funciones en el desarrollo de algoritmos, cabe aclarar que tal vez no se note la utilidad del uso de procedimientos y funciones en algoritmos pequeos pero es muy til en el desarrollo de algoritmos grandes en los que se necesita una misma serie de pasos en diferentes partes del algoritmo, en este caso esta serie de pasos se implementan dentro de un procedimiento o funcin y en el lugar donde se necesita esta serie de pasos solo se hace un llamado o invocacin al procedimiento o funcin respectivo; tambien se trata de usar en el algoritmo una notacin lo mas cercana posible a la notacin del lenguaje C, con el fin de familiarizar al alumno con el uso de dicho lenguaje. Este cuaderno servir de apoyo a los profesores, en su labor cotidiana de enseanza y al estudiante le facilitar el desarrollo de su capacidad analtica y creadora, para de esta manera mejorar su destreza en la elaboracin de algoritmos que sirven como base para la codificacin de los diferentes programas que tendr que desarrollar a lo largo de su carrera. En la primer parte de este cuaderno se plantea una serie de ejercicio clasificados de acuerdo a las estructuras de control del paradigma estructurado y en la segunda parte las soluciones para cada uno de los problemas planteados, se presenta cada uno de los problemas implementando todos los pasos del algoritmo en un solo bloque y haciendo uso de procedimientos y funciones. Se recomienda a los estudiantes leer, analizar y resolver los ejercicios, posteriormente, comparar con las soluciones de los algoritmos y analizar posibles errores, mejoras o diferencias en la lgica utilizada en la solucin del problema, esto con el fin de desarrollar su capacidad analtica y creadora.
Objetivo
Este cuaderno esta dirigido a los estudiantes que toman el curso de tcnicas de programacin del tronco comn que forma los tres programas educativos ofrecidos por la DES-DACI, tiene el fin de proporcionarles una herramienta que los apoye en la prctica que requieren de realizar para afirmar los conocimiento adquiridos durante el desarrollo del curso. El contenido tiene como objetivo principal lograr que el alumno desarrolle la habilidad de plantear las sentencias computacionales que conforman el algoritmo de solucin a problemas planteados.
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin Variables: Una variable es un nombre asociado a un elemento de datos que est situado en posiciones contiguas de la memoria principal, y su valor puede cambiar durante la ejecucin de un programa. Toda variable pertenece a un tipo de dato concreto. En la declaracin de una variable se debe indicar el tipo al que pertenece. As tendremos variables enteras, reales, booleanas, etc. Declaracin de variables. Esta es la primera fase en la vida de cualquier variable. Aqu se debe especificar el tipo que va a tener el valor referenciado por la variable. Ejemplos de declaracin de variables:
Entero i, j, contador, suma; Fraccionario x, precio; Char sexo; Char *nombre, domicilio[30];
Aqu las variables i, j, contador y suma contendrn valores de tipo entero. Las variables x y precio son de tipo fraccionario. La variable sexo contendr valores de tipo carcter y las variables nombre y domicilio son espacios en memoria que guardarn cadenas de texto. El valor contenido en las variables puede ser modificado varias veces en cualquier parte del algoritmo. Cada lenguaje de programacin tiene sus propios tipos de datos, algunos de estos son comunes a todos, entre los tipos de datos comunes estn: entero, real, carcter, lgico, fecha / hora y cadena (nota: para el tipo lgico en lenguaje C, se utiliza el valor cero para denotar falso y cualquier valor mayor a cero para denotar verdadero). Algunas variables deben de inicializarse, es decir, tomar algun valor especfico al momento de declararlas, para evitar posibles errores durante la ejecucin del algoritmo (programa) en la computadora. Una vez declarada e inicializada una variable puede utilizarse en diversas sentencias, como son las asignaciones (de valores literales x=10, incremento del valor de la misma variable x=x+1, de valores contenidos en otras variables x=y), para control de ciclos (para i=1 hasta 10 hacer), chequear una condicin (x>=50), participar en una expresin (res = (max-min)/2). LAS OPERACIONES DE ENTRADA/SALIDA Una operacin de entrada tiene por objeto el obtener datos de los diferentes dispositivos de entrada; generalmente del teclado, y los almacena en memoria principal. Una operacin de salida tiene por objeto el obtener datos de memoria principal y sacarlos a los dispositivos de salida, generalmente la pantalla. En pseudocidigo la salida es con la sentencia escribir y la entrada con leer. FUNCIONES Y PROCEDIMIENTOS Funcin: conjunto de instrucciones (algoritmo) que ejecutan la solucin de una parte del problema. Tiene como resultado la devolucin de un valor. Procedimiento: Idem a la funcin, pero devuelve 0 N valores.
6
En los lenguajes de programacin un programa puede estar constituido por varias funciones o procedimientos, pero debe existir una parte principal que es la que inicia la ejecucin y lleva el control de todo el programa. Sintaxis de una funcin:
Tipo nombre_funcin (lista de parmetros) inicio declaracin de variables locales a la funcin; instruccin 1; instruccin 2; ... instruccin N; retorna valor; fin
Donde: Tipo: Especifica el tipo que devuelve la funcin. Lista de parmetros: Declaracin de una o ms variables donde la funcin recibe valores para utilizarlos dentro de ella, cada uno de las declaraciones se separa con coma. Actividad 1. En unas elecciones se presentan tres candidatos. a continuacin se presenta algoritmo para calcular estadsticas elementales de la eleccin. Se tienen en cuenta los votos en blanco y la poblacin electoral total.
DATOS DE ENTRADA: Nombre de los 3 candidatos (Candidato1, Candidato2, Candidato3 caracter[15]) Votos de los 3 candidatos (VCand1, VCand2, VCand3 entero) Votos en blanco (VEnBco entero) PROCESO: Leer Candidato1, Candidato2, Candidato3, VCand1, VCand2, VCand3, VEnBco Calcular TotVElecc, PorcCand1, PorcCand2, PorcCand3, PorcVEnBco Calcular PorcCiudadanosResponsables, PorcCiudadanosInconcientes Mostrar TotVElecc, PorcCand1, PorcCand2, PorcCand3, PorcVEnBco Mostrar PorcCiudadanosResponsables, PorcCiudadanosInconcientes DATOS DE SALIDA: Porcentaje de candidatos (PorcCand1, PorcCand2, PorcCand3 fraccionario) Porcentaje de votos en blanco (PorcCand1, PorcCand2, PorcCand3 fraccionario) Porcentaje de votos ciudadanos responsables (PorcCResp fraccionario) Porcentaje de votos ciudadanos inconcientes (PorcCInc fraccionario) 7
Inicio CARACTER Candidato1[15], Candidato2[15], Candidato3[15]; ENTERO VCand1, VCand2, VCand3, VEnBco, TotVElecc, TotElectores=50000; FRACCIONARIO PorcCand1,PorcCand2, PorcCand3, PorcVEnBco, PorcCResp, PorcCInc; // Pedir datos de entrada Escribir ("Dar Nombre candidato 1: ") Leer (Cand1) Escribir ("Dar Nombre candidato 2: ") Leer (Cand2) Escribir ("Dar Nombre candidato 3: ") Leer (Cand3) Escribir ("Dar votacin de ", Candidato1, ": ") Leer (VCand1) Escribir ("Dar votacin de ", Candidato2, ": ") Leer (VCand2) Escribir ("Dar votacin de ", Candidato3, ": ") Leer (VCand3) Escribir ("Dar votacin en blanco ") Leer (VEnBco) //A continuacin los clculos necesarios TotVElecc = VCand1 + VCand2 + VCand3 + VEnBco PorcCand1 = ( VCand1 / TotalVElecc ) * 100 PorcCand2 = ( VCand2 / TotalVElecc ) * 100 PorcCand3 = ( VCand3 / TotalVElecc ) * 100 PorcVEnBco = ( VEnBco / TotalVElecc ) * 100 PorcCResp =(TotalVElecc/TotElectores)*100 PorcCInc = 100 - PorcCResp // Mostrar resultados Escribir ("Porcentaje ", Candidato1, " = ", PorcCand1) Escribir ("Porcentaje ", Candidato2, " = ", PorcCand2) Escribir ("Porcentaje ", Candidato3, " = ", PorcCand3) Escribir ("Porcentaje de V en blanco = ", PorcVEnBco) Escribir ("Si votaron = ", PorcCResp , "%") Escribir ("NO votaron = ", PorcCInc, "%") Fin.
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin EJERCICIOS PROPUESTOS Analizar problemas y proponer algoritmos de solucin. Considerar el uso de procedimientos y funciones para cada una de las soluciones planteadas conforme sea pertinente.
Ejercicio 1.
Leer 3 variables decimales. Sumarlas, multiplicarlas y dividirlas.
Ejercicio 2.
Disear un algoritmo que permita ingresar un valor inicial y un valor final. Calcular el valor central de los nmeros.
Ejercicio 3.
Construir un algoritmo que calcule e imprima el nmero de segundos que hay en un determinado nmero de das.
Ejercicio 4.
Dada una cantidad en pesos, obtener la equivalencia en dlares, asumiendo que la unidad cambiaria es un dato desconocido.
Ejercicio 5.
Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad invertida.
Ejercicio 6.
Hacer un programa que lea 3 calificaciones y calcule su promedio. Mostrar el resultado de la siguiente manera: Utiliza un escribir para cada calificacin y en uno el promedio.
Ejercicio 7.
En un hospital existen 4 reas. Ginecologa, pediatra, urologa, y traumatologa. El presupuesto anual del hospital se reparte conforme a la siguiente tabla: re a G T U P % del presupuesto 25 15 13 47
Obtener la cantidad del dinero que recibir cada rea para cualquier monto presupuestal.
10
Ejercicio 8.
Un alumno desea saber cual ser su promedio en las 3 materias mas bonitas que cursa y cual ser el promedio de cada una de ellas estas materias se evalan como se muestra a continuacin. Matematicas Examen 3 tareas % 4 5 5 5 Lab. de programacin Examen 2 tareas % 7 0 3 0 Ingles Examen oral Quiz Examen escrito 2 tareas % 15 30 40 15
Ejercicio 9.
Calcule el nuevo salario de un trabajador si ha obtenido un porcentaje de incremento desconocido sobre su salario anterior. Leer el nombre del trabajador. Referencia: [Joyanes2003] pag. 132 136, [Rivas1985] pag. 87-99.
Selectiva doble (si - sino). Permite elegir entre dos opciones posibles en funcin del cumplimiento o no de una determinada condicin. Si la
11
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin condicin es verdadera, se ejecuta la accin 1, si es falsa, se ejecuta la accin 2. En pseudocodigo esta sentencia es:
si (condicin) instruccin(es) sino instruccin(es)
Selectivas mltiples (sis anidados o casos). Existen diferentes formas de implementacin para esta estructura aqu se debe seleccionar una de varias acciones a ejecutar dependiendo de una condicin, una de ellas es realizar anidamiento de sentencias if-else. En pseudocodigo esta sentencia es:
si (condicin1) instruccin(es)1 sino si (condicin2) instruccin(es)2 sino si (condicin3) instruccin(es)3 sino ....
Para la sintaxis de cada una de las sentencias selectivas descritas, anteriormente: Condicin.- es una expresin relacional (expresin formada variables o constantes y operadores relacionales). Instruccin(es).- puede ser una sola instruccin o varias instrucciones y en tal caso, es necesario encerrar entre llaves { } estas instrucciones. Otra forma de seleccin mltiple es el uso de la sentencia casos en la que se evaluar el contenido de una variable con respecto a N valores distintos, que pueden ser de tipo carcter o entero, como por ejemplo 1, 2, 3, . N, segn sea el valor en la variable, se realizar una de las N acciones. En pseudocodigo esta sentencia es:
switch (variable) { caso constante1: accin 1 break; caso constante2: accin 2 break; ... caso constanteN: accin N break; default: accion }
Donde: Para cada uno de los casos puede haber una o ms instrucciones que ejecutar. El uso de la opcin default es opcional.. Actividad 1.
12
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin Realizar una funcin para determinar la cantidad a pagar por un estreo, el vendedor ofrece un descuento del 10% sobre el precio sin IVA, de algn aparato si este cuesta $2000 o mas. Adems independientemente de esto ofrece un 5% de descuento si la marca es NOSY. El pago total debe incluir el IVA.
DATOS DE ENTRADA: Valor de aparato (cs fraccionario) Marca de aparato ( ms cadena de texto) PROCESO: Leer cs, ms cscs-(cs*0.10). cscs-(cs*0.05). costocs+(costo*0.15). Mostrar costo DATOS DE SALIDA: Cantidad a pagar(costo fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
inicio fraccionario cs, ms, costo escribir "introducir costo del stereo leer cs escribir "si la marca del stereo es nosy teclee 1" leer ms si(cs>=2000) entonces cscs-(cs*0.10) si(ms==1) entonces cscs-(cs*0.05) fin_si fin_si costocs+(costo*0.15) escribir "el costo del stereo es de ", costo fin
/* Parte principal, llama al procedimiento stereo */ inicio stereo() fin // principal /* Procedimiento que pide datos de entrada, realiza el calculo y muestra el resultado. */ procedimiento stereo() inicio fraccionario cs, ms, costo escribir "introducir costo del stereo leer cs escribir "si la marca del stereo es nosy teclee 1"
13
Analizar problemas y proponer algoritmos de solucin. Considerar el uso de procedimientos y funciones para cada una de las soluciones planteadas conforme sea pertinente.
Ejercicio 1.
Una persona desea iniciar un negocio, para lo cual piensa verificar cuanto de dinero le prestara el banco por hipotecar su casa. Tiene una cuenta bancaria pero no puede disponer de ella a menos que el monto por hipotecar su casa sea muy pequeo. Si el monto de la hipoteca es menor que 1 milln entonces invertir el 50% de la inversin total y un socio invertir el otro 50%. Si el monto de la hipoteca es de mas de 1 milln, entonces invertir el monto total de la hipoteca y el resto del dinero que necesite para cubrir la inversin total se repartir a partes iguales entre el socio y l.
Ejercicio 2.
Una persona debe determinar la etapa de la vida de las personas que existen en su zona habitacional. Se determinan las categoras con base en la siguiente tabla: CATEGORIA Nios Jvenes Adultos Viejos EDAD 0-12 13-29 30-59 60 en adelante
Ejercicio 3.
Una compaa de seguros esta abriendo un departamento de finanzas y estableci un programa para captar clientes que consiste en lo siguiente: si el monto por el que se efecta la fianza es menor que $50000, la cuota a pagar es el 3% del monto, si el monto es mayor que $50000 la cuota a pagar ser el 2% del monto. La afianzadora desea determinar cual ser la cuota que debe pagar un cliente.
14
Ejercicio 4.
Una frutera ofrece peras con descuento segn la siguiente tabla: N0 de kilos comprados % de descuento 0.2 0 2.01 5 10 5.01 10 15 10.01 en adelante 20 Determina cuanto pagara una persona que compre peras en esa frutera.
Ejercicio 5.
Realizar una funcin que reciba como parmetros dos valores numricos y uno de tipo carcter la funcin debe retornar el resultado de un clculo, dependiendo el carcter. El carcter puede tener los valores de +, --, /,*, %.
Ejercicio 6.
Realizar una funcin que reciba como parmetro un carcter y dependiendo del carcter, determine el estado civil de una persona. El carcter puede tener como valores U, C, S, V, D, O (Unin libre, Casado, Divorciado, Otro).
Ejercicio 7.
En una llantera se ha establecido una promocin de las llantas marca MORIRAS, dicha promocin consiste en lo siguiente: Si se compran menos de 5 llantas el precio es de $300 c/u, de $250 c/u si se compran de 5 a 10 y de $200 c/u si se compran mas de 10 llantas, obtener la cantidad de dinero que una persona tiene que pagar por cada una de las llantas que compra y lo que tiene que pagar por el total de la compra.
Ejercicio 8.
El dueo de una empresa desea planificar las decisiones financieras que tomara durante el ao la manera de planificar depende de lo siguiente: Si actualmente su capital se encuentra con saldo negativo, pedir un prstamo bancario para que su nuevo saldo sea de $10000. Si su capital tiene un saldo actual positivo pedir un prstamo bancario para tener un nuevo saldo de $20000, pero si su capital actualmente es arriba de los $20000, no pedir ningn prstamo. 5000 para equipo de computo. 2000 para mobiliario. Resto la mitad ser insumo y la otra mitad para entregar incentivos para el personal. Desplegar que cantidades destinaran para la compra de insumos y la entrega de incentivos, en caso que fuera necesario a cuanto ascendera la cantidad que pedira al banco.
15
Ejercicio 9.
Tomando como base los resultados obtenidos en un laboratorio de anlisis clnicos, un medico determina si tiene anemia o no, lo cual depende de su nivel de hemoglobina en la sangre, su edad y de su sexo. Si el nivel de hemoglobina que tiene una persona es menor que el rango que le corresponde, se determina su resultado como positivo y en caso contrario como negativo. La tabla en la que el medico se basa es la siguiente: Edad Nivel de hemoglobina (8 %) 0 1 mes 13 26 >1 y <=6 meses 10 18 >6 y <=12 meses 11 15 >1 y <=5 aos 11.5 15 >5 y <= 10 aos 12.6 15.5 >10 y <=15 aos 13 15.5 Mujeres > 15 aos 12 16 Hombres > 15 aos 14 18
Ejercicio 10.
Una institucin educativa estableci un programa para estimular a los alumnos con buen rendimiento acadmico y que cosiste en lo siguiente: Si el promedio es de 9.5 o mas y el alumno es de preparatoria, entonces este podr cursar 55 unidades y se le har un 25% de descuento. Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de preparatoria, entonces este podr cursar 50 unidades y se le har un 10% de descuento. Si el promedio es mayor que 7 y menor que 9 y el alumno es de preparatoria, este podr cursar 50 unidades y no tendr ningn descuento. Si el promedio de 7 o menor, el nmero de materias reprobadas es de 0 a 3 y el alumno es de preparatorio, entonces podr cursar 45 unidades y no tendr descuento. Si el promedio es de 7 o menor, el nmero de materias reprobadas es de 4 o ms y el alumno es de preparatoria, entonces podr cursar 40 unidades y no tendr ni un descuento. Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces podr cursar 55 unidades y se le har un 20% de descuento. Si el promedio es menor de 9.5 y el alumno es de profesional, entonces podr cursar 55 unidades y no tendr descuento. Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces podr cursar 55 unidades y tendr descuento del 25%.
16
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin Obtener el total que tendr que pagar un alumno si la colegiatura para alumnos de profesional es de 300 por cada 5 unidades y para alumnos de preparatoria es de 180 por cada 5 unidades.
Ejercicio 11.
En una empresa se requiere calcular el salario semanal de un obrero que labora en ella. Suponiendo que el pago por hora es de $20.00, obtener el salario de la siguiente manera: Las 40 horas de trabajo base, se le pagan $20 por hora. Si trabaja entre 30 y 40 horas se le hace un descuento del 15% del calculo total. Si el trabajador realiz horas extra y estas no exceden de 8, su pago es al doble por cada hora de trabajo. Cuando las horas extras exceden de 8, las primeras 8 se le pagan al doble y el resto al triple, sabiendo que no podrn ser ms de 10 horas. Si trabaja menos de 30 horas, no se le paga nada.
Ejercicio 12.
El Departamento de Seguridad Pblica y Trnsito del D.F. desea saber, para cada auto de la ciudad de Mxico, qu color de calcomana le corresponde. Conociendo el ltimo dgito de la placa de cada automvil se puede determinar el color de la calcomana utilizando la siguiente relacin: Dgito 1o2 3o4 5o6 7o8 9o0 Color Amarilla Rosa Roja Verde Azul
Ejercicio 13.
Hacer una funcin en casos donde reciba la inicial de un color y se describa ese color.
Ejercicio 14.
Cambiar a Casos el programa del estado civil de una persona (ejercicio 7)
Ejercicio 15.
Dada la letra inicial de alguna figura geomtrica (cubo, crculo, triangulo y rectngulo), realizar el clculo correspondiente al rea de la misma.
17
Ejercicio 16.
Utilizando el programa colores en casos de (ejercicio 14), convertirlo para retornar una cadena.
Ejercicio 17.
Utilizando el programa colores en casos de (ejercicio 15), convertirlo para retornar una cadena.
Donde:
18
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin El ciclo inicia evaluando la condicin si esta es falsa no se ejecutan las instrucciones que conforman el ciclo y si es verdadera si se ejecutan, de manera que este ciclo puede ejecutarse 0 o N veces. Si se va a ejecutar m{as de una instruccin dentro del ciclo se debe encerrar entre llaves ({ }) el bloque de instrucciones a ejecutar. Ciclo hacer ... mientras. Se ejecuta la primer iteracin y la condicin determinada se comprueba al final del bucle, esto permite que la iteracin se ejecute al menos una vez antes de que la condicin sea evaluada. En pseudocodigo esta sentencia es:
Hacer { instruccin(es) } mientras (condicin);
Donde: El ciclo inicia ejecutando las instrucciones que conforman el ciclo despus de eso llega a evaluar la condicin si esta es falsa termina el ciclo y si es verdadera regresa a ejecutar nuevamente las instrucciones del ciclo, de manera que este ciclo puede ejecutarse de 1 a N veces. Ciclo para. Se utilizan el ciclo para cuando se conoce con certeza el nmero de veces que se desea repetir un bucle. En pseudocodigo esta sentencia es:
Para ( VarCtl = Valor_Inicial; CondicinCierre; instruccin(es) incremento)
Donde: VarCtl es la variable de control del ciclo, inicia con el valor de inicio del ciclo (Valor_Inicial) y con cada iteracin se incrementa con el valor especificado en incremento, regresando a comprobar si ya llego hasta donde debe llegar (CondicionCierre). Actividad 1. Mostrar en pantalla 10 veces la lnea de texto Ring....
DATOS DE ENTRADA: Ninguno. PROCESO: Ninguno. DATOS DE SALIDA: 10 veces la lnez: Ring... PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio entero i1
19
Analizar problemas y proponer algoritmos de solucin. Considerar el uso de procedimientos y funciones para cada una de las soluciones planteadas conforme sea pertinente.
Ejercicio 1.
Realizar una funcin con el ciclo mientras, que muestre los primeros nmeros del 1 al 10 y retorne la suma de ellos.
Ejercicio 2.
Hacer una funcin con el ciclo mientras, que dado un numero entero decimal me muestre los siguientes 20 nmeros pares o impares del numero proporcionado.
Ejercicio 3.
Implemente el ciclo mientras para leer caracteres y finalic cuando se introduzca un *.
Ejercicio 4.
Hacer en un ciclo mientras una funcin que calcule el total de la compra, imprima el iva, con cuanto paga y el cambio.
Ejercicio 5.
Mostrar en pantalla 10 veces la lnea de texto Ring.... utilizando un ciclo hacer mientras.
Ejercicio 6.
Hacer una funcin en el ciclo hacer mientras, nmeros del 1 al 10 y retorne la suma de ellos. que muestre los primeros
Ejercicio 7.
Hacer una funcin con el ciclo hacer - mientras, que dado un numero entero decimal me muestre los siguientes 20 nmeros pares o impares del numero proporcionado.
Ejercicio 8.
Utilizar un ciclo hacer mientras, que introduzca un * . lea caracteres y finalic cuando se
20
Ejercicio 9.
Realizar un algoritmo que utilice un ciclo mientras en una funcin que calcule el total de la compra, imprima el IVA, con cuanto paga y el cambio.
Ejercicio 10.
Hacer una funcin que imprima los nmeros impares comprendidos entre el 400 y 1100.
Ejercicio 11.
Escribir los 100 nmeros pares proporcionados por el teclado.
Ejercicio 12.
Hacer una funcin que lea N edades y retorne el promedio de ellas.
Ejercicio 13.
Hacer una funcin que lea N cantidad de artculos vendidos y calcule la venta total del impuesto, y las ganancias sabiendo que a cada producto se le gana un 35%.
Ejercicio 14.
Un entrenador ha propuesto a un atleta recorrer una ruta de 5 Km. Durante 10 das, para determinar si es apto para la prueba de 5 Km. O debe buscar otra especialidad. Para considerarlo apto debe cumplir por lo menos una de las siguientes condiciones: Que en ninguna de las pruebas haga un tiempo menor a 15 minutos. Que al menos en una de las pruebas realice un tiempo mayor a 16 minutos. Que su promedio de tiempos sea mayor o igual a 15 minutos.
Ejercicio 15.
Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de inters Cul ser la cantidad de dinero que esta persona tendr al cabo de un ao si la ganancia de cada mes es reinvertida?
Ejercicio 16.
Calcule la suma siguiente: 100+99+98+97+96+95+.................+5+4+3+2+1+0.
Ejercicio 17.
Hacer un programa que calcule P = Xy.
Ejercicio 18.
Hacer un programa que calcule S = f/x 1 + f/x2 + - - - - - - - + f/x n. Utilic la funcin del problema (P = X y).
21
Ejercicio 19.
Leer en un ciclo mientras una cantidad numrica de 3 cifras, realice una funcin que reciba como argumento el numero ledo y retorne la descripcin de la cantidad.
Ejercicio 20.
Leer en un ciclo mientras una cantidad numrica de 3 cifras, realic una funcin que retorne la descripcin de la cantidad en nmeros romanos.
Ejercicio 21.
Hacer un algoritmo que lea 50 consumos en una cafetera si el consumo ingresado excede los 100, se har un descuento de 7%, mostrar todos los pagos desglosados (sobtotal, descuento y total de cada uno) y el pago total o acumulado.
Ejercicio 22.
Dada N notas calcular el promedio de las notas aprobadas y el promedio de las notas desaprobadas.
Ejercicio 23.
A una fiesta asistieron personas de diferentes edades y sexos. Construir un algoritmo dadas las edades y sexos de las personas. Calcular : -Cuantas personas asistieron a la fiesta -Cuantos hombres y cuantas mujeres -Promedio de edades por sexo -La edad de la persona ms joven que asisti -No se permiten menores de edad a la fiesta -Ingresar datos hasta que se ingrese una edad a cero [Joyanes2003], pag. 160 225
22
inicio entero valor1, valor2, valor3, suma, multiplicacin; fraccionario division; escribir "Introducir valor1" leer valor1 escribir "Introducir valor2" leer valor2 escribir "Introducir valor3" leer valor3 suma valor1 + valor2 + valor3 multiplicacion valor1 * valor2 * valor3 division valor1 / valor2 / valor3 escribir "La suma es " , suma escribir "La multiplicacion es " , multiplicacion escribir La division es " , division fin
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e
23
recibe
como
/* Funcin que calcula la multiplicacin de 3 valores que recibe como parmetros y retorna el resultado del calculo. */ entero multip(entero v1, entero v2, entero v3) entero m m valor1 * valor2 * valor3 retornar m fin /* Funcin que calcula la multiplicacin de 3 valores que recibe como parmetros y retorna el resultado del calculo. */ fraccionario divis(entero v1, entero v2, entero v3) entero d d valor1 / valor2 / valor3 retornar d fin /* Procedimiento que muestra el resultado de los clculos realizados, cuyos valores se reciben en los parmetros. */ procedimiento mostrar(entero s, entero m, fraccionario d) escribir "La suma es " , s escribir "La multiplicacion es " , m escribir La division es " , d fin /* Parte principal, primero solicita los valores para realizar los clculos usando la funcin leerEntero a la que le manda como parmetro el mensaje que se visualizar en pantalla, luego realiza cada uno de los clculos llamando a las funciones correspondientes y por ultimo muestra en pantalla el resultado de los clculos realizados usando un procedimiento al que se le pasan los valores */ inicio entero valor1, valor2, valor3, suma, multiplicacin; fraccionario division; valor1 leerEntero("Introducir valor1"); valor2 leerEntero("Introducir valor1"); valor3 leerEntero("Introducir valor1"); suma sumar(valor1, valor2, valor3) multiplicacion multip(valor1, valor2, valor3) division divis(valor1, valor2, valor3) mostrar(suma, multiplicacin, division)
24
Solucin ejercicio 2.
Disear un algoritmo que permita ingresar un valor inicial y un valor final. Calcular el valor central de los nmeros.
DATOS DE ENTRADA: Valor inicial (vi entero) Valor final (vf entero) PROCESO: Leer vi, vf Calcular vc Mostrar vc DATOS DE SALIDA: Valor central (vc fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio Entero vi, vf Fraccionario vc escribir "Introducir valor inicial" leer vi escribir "Introducir valor final" leer vf vc (v + vf) / 2 escribir "ValorCentral es igual a " , vc fin
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin /* Funcin que calcula el valor central, recibe como parmetros el valor inicial y el valor final y retorna el resultado del calculo. */ fraccionario calcula(entero valIni, entero valFin) fraccionario valCen valCen (valIni + valFin) / 2 retornar valCen fin
25
Solucin ejercicio 3.
Construir un algoritmo que calcule e imprima el nmero de segundos que hay en un determinado nmero de das.
DATOS DE ENTRADA: Valor de numero de das (nd entero) PROCESO: Leer nd ns nd * (24 *60 * 60). Mostrar ns DATOS DE SALIDA: Nmero de segundos (ns entero) PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio Entero nd, ns escribir "Introducir valor flotante 1" leer valor1 escribir "Introducir valor flotante 2" leer valor2 escribir "Introducir valor3" leer valor3 s valor1 + valor2 + valor3 m valor1 * valor2 * valor3 d valor1 / valor2 / valor3 escribir "La suma total es de ", s escribir "La multiplicacion total es de ", m
26
fin
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin /* Funcin que calcula el total de segundos que hay en el nmero de das que se pasa como parmetro a la funcin, retorna el resultado del calculo. */ entero calcula(entero numDias) entero numSeg numSeg numDias *(24 * 60 * 60) retornar numSeg fin /* Procedimiento que muestra el resultado del clculo, se recibe como parmetro el valor. */ procedimiento mostrar(entero numSeg) escribir "Total de segundos = " , numSeg fin /* Parte principal, primero solicita el nmero de das usando la funcin leerEntero a la que le manda como parmetro el mensaje que se visualizar en pantalla, luego realiza el clculo llamando a la funcin calcula y por ultimo muestra en pantalla el resultado */ inicio entero nd, ns nd leerEntero("Teclea el nmero de das: ") ns calcula(nd) mostrar(ns) fin
Solucin ejercicio 4.
Dada una cantidad en pesos, obtener la equivalencia en dlares, asumiendo que la unidad cambiaria es un dato desconocido.
DATOS DE ENTRADA: Cantidad en pesos (cp fraccionarios) equivalencia en dlares (cd - fraccionarios) PROCESO: Leer cd 27
Inicio Fraccionario cp, cd, e escribir "Introducir cantidad en pesos" leer cp escribir Introducir valor del dolar" leer cd e cp / cd escribir El total en dolar es de ", e fin
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f retornar f fin
valor
/* Funcin que calcula el total en dolares, recibe como parmetro el total de pesos, retorna el resultado del calculo. */ fraccionario calcula(fraccionario ps, fraccionario precioD) Fraccionario dolares dolares ps / precioD retornar dolares fin /* Procedimiento que muestra el resultado del clculo, se recibe como parmetro el valor. */ procedimiento mostrar(fraccionario total) escribir El total en dolar es de ", total fin /* Parte principal, primero solicita los datos de entrada usando la funcin leerFracc a la que le manda como parmetro el mensaje que se visualizar en pantalla, luego realiza el clculo llamando a la funcin calcula y por ultimo muestra en pantalla el resultado */ inicio fraccionario cp, cd, e cp leerFracc("Introducir cantidad en pesos") cd leerFracc(Introducir valor del dolar") e calcula(cp, cd)
28
fin
Solucin ejercicio 5.
Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad invertida.
DATOS DE ENTRADA: Inversin persona 1 (c1 fraccionario) Inversin persona 2 (c2 fraccionario) Inversin persona 3 (c3 fraccionario) PROCESO: Leer c1, c2, c3 s c1 + c2 + c3. P1 c1 / s * 100. P2 c2 / s * 100. P3 c3 / s * 100. Mostrar p1, p2, p3 DATOS DE SALIDA: Porcentaje de inversin persona 1 (p1 fraccionario) Porcentaje de inversin persona 2 (p2 fraccionario) Porcentaje de inversin persona 3 (p3 fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio Fraccionario c1, c2, c3, p1, p2, p3 Escribir Introducir primera cantidad leer c1 escribir Introducir segunda cantidad leer c2 escribir Introducir tercera cantidad leer c3 s c1 + c2 + c3 p1 c1 / s * 100 p2 c2 / s * 100 p3 c3 / s * 100 escribir El porcentaje de la persona escribir El porcentaje de la persona escribir El porcentaje de la persona fin
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f
valor
29
fin
/* Procedimiento que calcula el porcentaje de inversin de los 3 inversionistas y muestra estos porcentajes, recibe como parmetros las cantidades de las 3 inversiones. */ Procedimiento porcentajes(fraccionario c1, fraccionario c2, fraccionario c3) Fraccionario p1, p2, p3 s c1 + c2 + c3 p1 c1 / s * 100 p2 c2 / s * 100 p3 c3 / s * 100 escribir El porcentaje de la persona 1 es de ", p1 escribir El porcentaje de la persona 2 es de ", p2 escribir El porcentaje de la persona 3 es de ", p3 dolares ps / precioD retornar dolares fin /* Parte principal, primero solicita los datos de entrada usando la funcin leerFracc a la que le manda como parmetro el mensaje que se visualizar en pantalla, luego realiza el clculo de los porcentajes y muestra el resultado llamando al procedimiento porcentajes */ Inicio Fraccionario c1, c2, c3, p1, p2, p3 C1 leerFracc(Teclea primera cantidad a invertir") C2 leerFracc(Teclea segunda cantidad a invertir") C3 leerFracc(Teclea tercera cantidad a invertir") Porcentajes(c1, c2, c3) fin
Solucin ejercicio 6.
Hacer un programa que lea 3 calificaciones y calcule su promedio. Mostrar el resultado de la siguiente manera: Utiliza un escribir para cada calificacin y uno para el promedio.
DATOS DE ENTRADA: Calificacin 1 (c1 fraccionario) Calificacin 2 (c2 fraccionario) Calificacin 3 (c3 fraccionario) PROCESO: Leer c1, c2, c3 prom ( c1 + c2 + c3 ) / 3. Mostrar c1,c2,c3, prom 30
Inicio Fraccionario c1, c2, c3, prom escribir Introducir primera calificacin 1" leer c1 escribir Introducir segunda calificacin b" leer c2 escribir Introducir tercera calificacin c" leer c3 prom ( c1 + c2 + c3 ) / 3 escribir La primera calificacin es ", c1 escribir La segunda calificacin es ", c2 escribir La tercera calificacin es ", c3 escribir El promedio es ", prom fin
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f retornar f fin
valor
/* Procedimiento que calcula el promedio de las 3 calificaciones y muestra las calificaciones y el promedio, recibe como parmetros las 3 calificaciones. */ Procedimiento promedio(fraccionario c1, fraccionario c2, fraccionario c3) Fraccionario prom prom (c1 + c2 + c3) / 3 escribir Calificacin 1 es de ", c1 escribir Calificacin 2 es de ", c2 escribir Calificacin 3 es de ", c3 escribir Promedio es de ", prom fin /* Parte principal, primero pide las calificaciones usando la funcin leerFracc a la que le manda como parmetro el mensaje que se visualizar, luego realiza el clculo del promedio y muestra estos datos en el procedimiento promedio */ Inicio Fraccionario c1, c2, c3, prom C1 leerFracc(Teclea calificacin 1: ")
31
fin
Solucin ejercicio 7.
En un hospital existen 4 reas. Ginecologa, pediatra, urologa, y traumatologa. El presupuesto anual del hospital se reparte conforme a la siguiente tabla: re a G T U P % del presupuesto 25 15 13 47
Obtener la cantidad del dinero que recibir cada rea para cualquier monto presupuestal.
DATOS DE ENTRADA: Valor de presupuesto anual (pa fraccionario) PROCESO: Leer pa dg pa * 0.25. dt pa * 0.15. du pa * 0.13. dp pa * 0.47. Mostrar dg, dt, du, dp DATOS DE SALIDA: Cantidad de dinero Cantidad de dinero Cantidad de dinero Cantidad de dinero para para para para ginecologa (Dg fraccionario) traumatologa (dt fraccionario) urologa (du fraccionario) pediatra (dp fraccionario)
Inicio Fraccionario pa, dg, dt, du, dp escribir Introducir presupuesto anual" leer pa dg pa * 0.25 dt pa * 0.15 du pa * 0.13 dp pa * 0.47 escribir Ginecologia recibira " , dg escribir Traumatologia recibira " , dt escribir Urologia recibira " , du escribir Pediatria recibira " , dp
32
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f retornar f fin
valor
/* Procedimiento que calcula la cantidad de dinero para cada una de las reas, recibe como parmetro el presupuesto. */ Procedimiento dineroAreas(fraccionario presupuesto) Fraccionario dg, dt, du, dp dg presupuesto * 0.25 dt presupuesto * 0.15 du presupuesto * 0.13 dp presupuesto * 0.47 escribir Ginecologia recibira " , dg escribir Traumatologia recibira " , dt escribir Urologia recibira " , du escribir Pediatria recibira " , dp fin /* Parte principal, primero pide las calificaciones usando la funcin leerFracc a la que le manda como parmetro el mensaje que se visualizar, luego realiza el clculo del promedio y muestra estos datos en el procedimiento promedio */ Inicio Fraccionario Pa Pa leerFracc(Introducir presupuesto anual") DineroAreas(Pa) fin
Solucin ejercicio 8.
Un alumno desea saber cual ser su promedio en las 3 materias mas bonitas que cursa y cual ser el promedio de cada una de ellas estas materias se evalan como se muestra a continuacin. Matematicas Examen 3 tareas % 4 5 5 5 Lab. de programacin Examen 2 tareas % 7 0 3 0 Ingles Examen oral Quiz Examen % 15 30 40
33
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin escrito 2 tareas
15
DATOS DE ENTRADA: Calificacin de cada rubro de matemticas (me, a, b, c - fraccionarios) Calificacin de cada rubro de laboratorio de programacin (pe, d, e fraccionarios) Calificacin de cada rubro de ingles (io, iq, ie, f, g - fraccionarios) PROCESO: Leer me, a, b, c, pe, d, e, io, iq, ie, f, g m1 me * 0.45. m2 (a + b + c) / 3 * 0.55. m m1 + m2. p1 pe * 0.70. p2 (d + e) / 2 * 0.30. p p1 + p2. i1 io * 0.15. i2 iq * 0.30. i3 ie * 0.40. i4 (f + g) / 2 * 0.15. i i1 + i2 + i3 + i4. pg (m + p + i) / 3. Mostrar pg DATOS DE SALIDA: Promedio de matemticas (m fraccionario) Promedio de laboratorio de programacin (p fraccionario) Promedio de ingls (I fraccionario) Promedio general (pg fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio Fraccionario me, a, b, c, m1, m2,m, pe, d, e, p1, p2, p Fraccionario io, iq, ie, f, e, i1, i2, i3, i4, i, pg escribir Introducir calificacin examen de matematicas" leer me escribir Introducir calificacin tarea 1 de matematicas" leer a escribir Introducir calificacin tarea 2 de matematicas" leer b escribir Introducir calificacin tarea 3 de matematicas" leer c m1 me * 0.45 m2 (a + b + c) / 3 * 0.55 m m1 + m2 escribir Introducir calificacin examen de programacion" leer pe escribir Introducir calificacin tarea 1 de programacion" leer d
34
fin
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f retornar f fin
valor
/* Funcin que calcula el promedio de matematicas, recibe como parmetros las calificaciones que necesita para el calculo */ Procedimiento matematicas(fraccionario exam, t1, t2, t3) Fraccionario m1, m2, mate m1 exam * 0.45 m2 (t1 + t2 + t3) / 3 * 0.55 mate m1 + m2 retornar mate fin /* Funcin que calcula el promedio de programacion, recibe como parmetros las calificaciones que necesita para el calculo */ Procedimiento programacion (fraccionario exam, t1, t2)
35
36
Solucin ejercicio 9.
Calcule el nuevo salario de un trabajador si ha obtenido un porcentaje de incremento desconocido sobre su salario anterior. Leer el nombre del trabajador.
DATOS DE ENTRADA: Nombre del trabajador (nt cadena de caracteres) Valor de salario anterior (sa fraccionario) Porcentaje de incremento (pi entero) PROCESO: Leer nt, sa, pi inpi*sa/100. snsa+(sa*pi/100). Mostrar nt, sa, pi, sn DATOS DE SALIDA: Nt Nuevo salario (sn fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio Texto nt Fraccionario sa Entero pi escribir Introducir nombre del trabajador" leer nt escribir Introducir salario anterior" leer sa escribir Introducir porcentaje de incremento" leer pi inpi*sa/100 snsa+(sa*pi)/100 escribir nt, Tiene un incremento de ,in , su salario nuevo es de ", sn fin
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide una cadena de caracteres y retorna el valor ledo, recibe como parmetro una cadena de texto. */ texto leerCaracteres (texto mensaje) texto c escribir mensaje leer c retornar c fin /* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f valor
37
fin
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin /* Procedimiento que calcula el nuevo salario, retorna el resultado, recibe como parmetros. */ Procedimiento mostrar (entero porc, fraccionario salAnt, texto nombre) fraccionario nuevo, inc inc porc * salAnt / 100 nuevo salAnt + inc escribir nt, Tiene un incremento de ,in ,y su salario nuevo es de ", sn fin /* Parte principal, primero pide datos de entrada usando las funciones respectivas, luego realiza el clculo del nuevo salario y muestra el resultado en el procedimiento mostrar */ Inicio Texto nt Fraccionario sa Entero pi Nt leerCaracteres(Introducir nombre del trabajador: ") sa leerFracc(Introducir salario anterior: ") pi leerEntero(Introducir porcentaje de incremento: ") mostrar(pi, sa, Nt) fin
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin el resto del dinero que necesite para cubrir la inversin total se repartir a partes iguales entre el socio y l.
DATOS DE ENTRADA: Monto total de la inversion (mt fraccionario) Monto del banco (mb fraccionario) Monto de la hipoteca (mh fraccionario) PROCESO: Leer mt, mb, mh amt/2. pbmt-mh. rmpb/2. Mostrar a, pb, rm DATOS DE SALIDA: Monto de inversin de nuevos socios (a fraccionario) Prstamo al banco (pb fraccionario) Resto de inversion socios (rm fraccionario) mt. PSEUDOCDIGO EN UN SOLO BLOQUE:
inicio fraccionario mt, mb, mh, a, pb, rm escribir "introducir monto total de la inversion" leer mt escribir "introducir monto en el banco" leer mb escribir "introducir monto de la hipoteca" leer mh si(mh<1000000) entonces amt/2 escribir "necesita un socio y c/socio invertira ", a sino si(mh<mt) entonces pbmt-mh rmpb/2 escribir "Hacer un prestamo al banco de ", pb escribir "el resto cada socio invertira " , rm sino si(mh>=mt) entonces escribir "Se cubre la inversion total de", mt fin_si fin_si fin_si escribir "FELICIDADES ya puede iniciar su negocio" fin
39
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f retornar f fin
valor
/* Procedimiento que recibe datos de entrada, realiza clculos y muestra mensajes de acuerdo al resultado de las condiciones evaluadas. */ procedimiento hipoteca(fraccionario mt, fraccionario mb, fraccionario mh) fraccionario a, pb, rm inicio si(mh<1000000) entonces amt/2 escribir "necesita un socio y c/socio invertira ", a sino si(mh<mt) entonces pbmt-mh rmpb/2 escribir "Hacer un prestamo al banco de ", pb escribir "el resto cada socio invertira " , rm sino si(mh>=mt) entonces escribir "Se cubre la inversion total de", mt fin_si fin_si fin_si escribir "FELICIDADES ya puede iniciar su negocio" fin_procedimiento_hipoteca /* Parte principal, pide datos de entrada usando la funcin leerFracc, el procedimiento hipoteca realiza el calculo de montos de inversin necesarios y muestra resultados */ inicio fraccionario mt, mb, mh mt leerFracc("introducir monto total de la inversion") mb leerFracc("introducir monto en el banco") mh leerFracc("introducir monto de la hipoteca") hipoteca(mt, mb, mh) fin // principal
40
Solucin ejercicio 2.
Una persona debe determinar la etapa de la vida de las personas que existen en su zona habitacional. Se determinan las categoras con base en la siguiente tabla: CATEGORIA Nios Jvenes Adultos Viejos
DATOS DE ENTRADA: Edad (e entero) PROCESO: Leer e Determinar categora comparando e con rangos Mostrar categora DATOS DE SALIDA: Mensaje nio, joven, adulto o viejo PSEUDOCDIGO EN UN SOLO BLOQUE:
inicio entero e escribir "teclee la edad" leer e si(e<=12) entonces escribir "Es un nino" sino si(e<=29) entonces escribir "Es un joven" sino si(e<=59) entonces escribir "Es un adulto" sino escribir "Es un viejo" fin_si fin_si fin_si fin_si fin
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin
41
Solucin ejercicio 3.
Una compaa de seguros esta abriendo un departamento de finanzas y estableci un programa para captar clientes que consiste en lo siguiente: si el monto por el que se efecta la fianza es menor que $50000, la cuota a pagar es el 3% del monto, si el monto es mayor que $50000 la cuota a pagar ser el 2% del monto. La afianzadora desea determinar cual ser la cuota que debe pagar un cliente.
DATOS DE ENTRADA: Monto de la fianza (mf fraccionario) PROCESO: Leer mf Si mf<50000) o entonces csmf*.03. o sino csmf*.02. Mostrar cs DATOS DE SALIDA: Cuota a pagar (cs fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
42
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f retornar f fin //devuelve un valor fraccionario fraccionario compania(fraccionario mf) fraccionario cs inicio si(mf<=50000) entonces csmf*0.03 sino csmf*0.02 fin_si retorna cs fin funcin
valor
/* Parte principal, pide dato de entrada, luego realiza el clculo de la cuota a pagar y muestra el resultado */ inicio fraccionario mf, company mf leerFracc("introducir el monto de la fianza") leer mf company compania(mf) escribir "la cuota a pagar el cliente es de ", company fin // principal
Solucin ejercicio 4.
Una frutera ofrece peras con descuento segn la siguiente tabla: N0 de kilos comprados % de descuento 0.2 0 2.01 5 10 5.01 10 15 10.01 en adelante 20
43
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin Determina cuanto pagara una persona que compre peras en esa frutera.
DATOS DE ENTRADA: Kilos y precio de peras (p, k fraccionario) PROCESO: Leer p, k tpk tp*k tpt-(t/100*10) tp*k tpt-(t/100*15) tp*k tpt-(t/100*20 Mostrar tp DATOS DE SALIDA: Total a pagar (tp fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
inicio fraccionario cfruta, p, k, t, desc, tp escribir "introducir los kilos de peras p" leer p escribir "introducir el precio por kilo de la pera k" leer k t p * k si(p<=2) entonces desc0 sino si(p<=5) entonces desc t/100*10 sino si(p<=10) entonces desc t/100*15 sino si(p>10) entonces desc t/100*20 fin_si fin_si fin_si fin_si tp t - desc escribir "el pago total de las peras es ", tp fin
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f
valor
44
fin
/* Funcin que retorna el total a pagar, recibe como parmetro el precio y la cantidad de fruta. */ fraccionario fruteria (fraccionario p, fraccionario k) fraccionario t, tp, desc inicio t p * k si(p<=2) entonces desc0 sino si(p<=5) entonces desc t/100*10 sino si(p<=10) entonces desc t/100*15 sino si(p>10) entonces desc t/100*20 fin_si fin_si fin_si fin_si tp t - desc retorna tp fin funcin /* Parte principal, primero pide datos de entrada usando las funciones respectivas, luego realiza el clculo del nuevo precio y muestra el resultado */ inicio fraccionario cfruta, p, k p leerFracc("introducir los kilos de peras p") k leerFracc("introducir el precio por kilo de la pera k") cfruta fruteria(p, k) escribir "el pago total de las peras es ", cfruta fin // principal
Solucin ejercicio 5.
Realizar una funcin que reciba como parmetros dos valores numricos y uno de tipo carcter la funcin debe retornar el resultado de un clculo, dependiendo el carcter. El carcter puede tener los valores de +, --, /,*, %.
DATOS DE ENTRADA: Carcter de operacin (ca carcter) 2 valores numricos (v1, v2 fraccionarios) PROCESO: Leer ca, v1, v2 Ca+ retorna (v1+v2). Ca- retorna (v1-v2). Ca* retorna (v1*v2). 45
inicio fraccionario v1, v2, resul caracter ca escribir "teclee carcter de operacion a realizar" leer ca escribir "teclee primer valor a calcular" leer v1 escribir "teclee segundo valor a calcular" leer v2 si(ca=='+') entonces resul v1+v2 sino si(ca=='-') entonces resul v1-v2 sino si(ca=='*') entonces resul v1*v2 sino si(ca=='/') entonces resul v1/v2 sino si(ca=='%') entonces resul v1%v2 fin_si fin_si fin_si fin_si fin_si escribir "el resultado de la operacion es", resul fin // principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin /* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f valor
46
fin
//devuelve el resultado de la operacin respectiva fraccionario operac(fraccionario v1, fraccionario v2, caracter ca) inicio si(ca=='+') entonces retorna(v1+v2) sino si(ca=='-') entonces retorna(v1-v2) sino si(ca=='*') entonces retorna(v1*v2) sino si(ca=='/') entonces retorna(v1/v2) sino si(ca=='%') entonces retorna(v1%v2) fin_si fin_si fin_si fin_si fin_si fin funcin /* Parte principal, primero pide datos de entrada usando las funciones respectivas, luego realiza la operacin respectiva y muestra el resultado */ inicio fraccionario v1, v2, resul caracter ca ca leerCar("teclee carcter de operacion a realizar") v1 leerFracc("teclee primer valor a calcular") v2 leerFracc("teclee segundo valor a calcular") resul operac(v1, v2, ca) escribir "el resultado de la operacion es", resul fin // principal
Solucin ejercicio 6.
Realizar una funcin que reciba como parmetro un carcter y dependiendo del carcter, determine el estado civil de una persona. El carcter puede tener como valores U, C, S, V, D, O.
DATOS DE ENTRADA: Estado civil (e carcter) PROCESO: Leer e Mostrar mensaje comparando e DATOS DE SALIDA: Mensaje unin libre, casado, soltero, viudo, divorciado, otro 47
inicio caracter e escribir "teclee u, c, s, v, d, o, segun su estado civil" leer e escribir "Su estado civil es si(e=='u') entonces escribir "union libre" sino si(e=='c') entonces escribir "casado" sino si(e=='s') entonces escribir "soltero" sino si(e=='v') entonces escribir "viudo" sino si(e=='d') entonces escribir "divorciado" sino si(e=='o') entonces escribir "otro" sino escribir "no valido" fin_si // e=='o' fin_si // e=='d' fin_si // e=='v' fin_si // e=='s' fin_si //e=='s' fin_si //e=='u' fin // principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin /* Procedimiento que muestra el estado civil respectivo de acuerdo al carcter recibido como parmetro. */ procedimiento estado(caracter e) inicio si(e=='u') entonces escribir "union libre" sino si(e=='c') entonces escribir "casado" sino si(e=='s') entonces escribir "soltero" sino si(e=='v') entonces escribir "viudo" sino si(e=='d')
48
Solucin ejercicio 7.
En una llantera se ha establecido una promocin de las llantas marca MORIRAS, dicha promocin consiste en lo siguiente: Si se compran menos de 5 llantas el precio es de $300 c/u, de $250 c/u si se compran de 5 a 10 y de $200 c/u si se compran mas de 10 llantas, obtener la cantidad de dinero que una persona tiene que pagar por cada una de las llantas que compra y lo que tiene que pagar por el total de la compra.
DATOS DE ENTRADA: Total de llantas (y entero) PROCESO: Leer y ty*300. ty*250. ty*200. Mostrar t DATOS DE SALIDA: Total a pagar (total fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin //devuelve total a pagar entero llantera(entero y, entero t)
50
Solucin ejercicio 8.
El dueo de una empresa desea planificar las decisiones financieras que tomara durante el ao la manera de planificar depende de lo siguiente: Si actualmente su capital se encuentra con saldo negativo, pedir un prstamo bancario para que su nuevo saldo sea de $10000. Si su capital tiene un saldo actual positivo pedir un prstamo bancario para tener un nuevo saldo de $20000, pero si su capital actualmente es arriba de los $20000, no pedir ningn prstamo. 5000 para equipo de computo. 2000 para mobiliario. Resto la mitad ser para insumo y la otra mitad para entregar incentivos para el personal. Desplegar que cantidades destinaran para la compra de insumos y la entrega de incentivos, en caso que fuera necesario a cuanto ascendera la cantidad que pedira al banco.
DATOS DE ENTRADA: Monto de capital (ca fraccionario) PROCESO: Leer ca pb10000-ca. 51
Inicio fraccionario ca, resto, pb escribir "cual es su capital" leer ca si(ca<=0) entonces pb10000-ca Resto 7000 escribir "prestamo al banco de , pb sino si(ca<20000) entonces pb20000-ca resto 13000 escribir "prestamo al banco de , pb sino si(ca>=20000) entonces resto ca - 7000 fin_si fin_si fin_si insumos resto/2 incentivos resto/2 escribir "para la compra de insumos " , insumos escribir "para la entrega de incentivos " , incentivos fin // principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f retornar f fin procedimiento finanzas(fraccionario ca) inicio fraccionario pb, resto si(ca<=0) entonces pb10000-ca Resto 7000
valor
52
Solucin ejercicio 9.
Tomando como base los resultados obtenidos en un laboratorio de anlisis clnicos, un medico determina si tiene anemia o no, lo cual depende de su nivel de hemoglobina en la sangre, su edad y de su sexo. Si el nivel de hemoglobina que tiene una persona es menor que el rango que le corresponde, se determina su resultado como positivo y en caso contrario como negativo. La tabla en la que el medico se basa es la siguiente: Edad Nivel de hemoglobina (8 %) 0 1 mes 13 26 >1 y <=6 meses 10 18 >6 y <=12 meses 11 15 >1 y <=5 aos 11.5 15 >5 y <= 10 aos 12.6 15.5 >10 y <=15 aos 13 15.5 Mujeres > 15 aos 12 16 Hombres > 15 aos 14 18
DATOS DE ENTRADA: Sexo (s carcter) Edad (e entero) Nivel de hemoglobina (he entero) 53
Inicio caracter s entero e fraccionario he escribir "dar sexo m=mujeres,h=hombres" leer s escribir "teclee la edad" leer e escribir "teclee el nivel de hemoglobina" leer he si (e>15) entonces si (s==m y he>12) o (s==h y he>14) entonces escribir "no tiene anemia" sino escribir "tiene anemia" fin_si sino si (e>0 y e<=0.1 y he>13) o (e>0.1 y e<=0.6 y he>10) o (e>0.6 y e<=1 y he>11) o (e>1 y e<=5 y he>11.5) o (e>5 y e<=10 y he>12.6) o (e>10 y e<=15 y he>13) entonces escribir "No tiene anemia" sino escribir "Tiene anemia" fin_si fin_si fin //principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin /* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin
54
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f retornar f fin
valor
procedimiento analisis(caracter s, entero e, fraccionario he) inicio si (e>15) entonces si (s==m y he>12) o (s==h y he>14) entonces escribir "no tiene anemia" sino escribir "tiene anemia" fin_si sino si (e>0 y e<=0.1 y he>13) o (e>0.1 y e<=0.6 y he>10) o (e>0.6 y e<=1 y he>11) o (e>1 y e<=5 y he>11.5) o (e>5 y e<=10 y he>12.6) o (e>10 y e<=15 y he>13) entonces escribir "No tiene anemia" sino escribir "Tiene anemia" fin_si fin_si fin_procedimiento /* Parte principal, primero pide datos de entrada usando las funciones respectivas, luego en el procedimiento anlisis muestra el mensaje correspondiente de acuerdo a los datos de entrada */ Inicio caracter s entero e fraccionario he s leerCar("dar sexo m=mujeres,h=hombres") e leerEntero("teclee la edad") he leerFrac("teclee el nivel de hemoglobina") analisis(s, e, he) fin //principal
Universidad Autnoma del Carmen Cuerpo Acadmico Tecnologas de Informacin Si el promedio es mayor que 7 y menor que 9 y el alumno es de preparatoria, este podr cursar 50 unidades y no tendr ningn descuento. Si el promedio de 7 o menor, el nmero de materias reprobadas es de 0 a 3 y el alumno es de preparatorio, entonces podr cursar 45 unidades y no tendr descuento. Si el promedio es de 7 o menor, el nmero de materias reprobadas es de 4 o ms y el alumno es de preparatoria, entonces podr cursar 40 unidades y no tendr ni un descuento. Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces podr cursar 55 unidades y se le har un 20% de descuento. Si el promedio es menor de 9.5 y el alumno es de profesional, entonces podr cursar 55 unidades y no tendr descuento. Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces podr cursar 55 unidades y tendr descuento del 25%. Obtener el total que tendr que pagar un alumno si la colegiatura para alumnos de profesional es de 300 por cada 5 unidades y para alumnos de preparatoria es de 180 por cada 5 unidades.
DATOS DE ENTRADA: Promedio del alumno (Prom fraccionario) Nmero de materias reprobadas (Mr entero) Nivel actual (Nivel caracter) PROCESO: Leer prom, mr, nivel Calcular col comparando prom, mr, nivel col (55/5)180*0.25 col(55/5)*180*0.10 col(50/5)*180 col(45/5)*180 col(40/5)*180 col(55/5)*300*0.20 col(55/5)*300 Mostrar col DATOS DE SALIDA: Colegiatura a pagar (ine fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio entero mr caracter nivel fraccionario prom, coleg escribir "teclee el promedio del alumno" leer prom escribir "teclee cuantas materias reprobo" leer mr
56
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Texto leerCar (texto mensaje) texto c escribir mensaje leer c retornar c
57
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin // devuelve el valor de la colegiatura fraccionario ieducativa(fraccionario prom, entero mr, caracter nivel) inicio fraccionario coleg si(nivel=='p') entonces si (prom>=9.5) entonces escribir "Cursara 55 unid. desc. 25%" pago (55/5) * 180 desc pago *0.25 coleg pago - desc sino si (prom>=9 y prom<9.5) entonces escribir "Cursara 50 unid. desc. 10%" pago (50/5) * 180 desc pago *0.10 coleg pago - desc sino si(prom>7 y prom<9) entonces escribir "Cursara 50 unid." coleg (50/5) * 180 sino si(nr<3) entonces escribir "Cursara 45 unid." coleg (45/5) * 180 sino escribir "Cursara 40 unid." coleg (40/5) * 180 fin_si /r<3
58
inicio entero h fraccionario ss escribir "cuantas horas trabajo a la semana" leer h si(h==40) entonces salarioh*20 sino si(h>=30 y h<40) entonces salario(h*20)-((h*20)*0.15) sino si(h>40 y h<=48) entonces heh-40 salario(40*20)+(he*40) sino si(h>48, h<=50) entonces heh-48 salario(40*20)+(8*40)+(he*60) sino si(h<30) entonces salario0 escribir "Salario del trabajador es ", salario fin //principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide una cadena de caracteres y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Texto leerCaracteres (texto mensaje) texto c escribir mensaje leer c retornar c fin /* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ valor
60
61
DATOS DE ENTRADA: Nmero de placa (placa arreglo de caracteres) PROCESO: Leer placa Determinar ltimo dgito de placa mostrar color correspondiente DATOS DE SALIDA: Mensaje amarilla, rosa, roja, verde o azul PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio caracter placa[7] escribir "teclee los digitos de la placa del automovil" leer placa casos de(placa[6]) inicio caso '1': caso '2': escribir "Color de calcomania amarilla" break caso '3': caso '4': escribir "Color de calcomania rosa" break caso '5': caso '6': escribir "Color de calcomania roja" break caso '7': caso '8': escribir "el color de calcomania verde" break caso '9': caso '0': escribir "Color de calcomania azul" break fin_casos fin
62
/* Funcin que pide una cadena de caracteres y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Texto leerCaracteres (texto mensaje) texto c escribir mensaje leer c retornar c fin procedimiento transito(caracter placa[7]) inicio casos de(placa[6]) inicio caso '1': caso '2': escribir "Color de calcomania amarilla" break caso '3': caso '4': escribir "Color de calcomania rosa" break caso '5': caso '6': escribir "Color de calcomania roja" break caso '7': caso '8': escribir "el color de calcomania verde" break caso '9': caso '0': escribir "Color de calcomania azul" break fin_casos fin_transito //fin procedimiento /* Parte principal, pide digitos de la placa, luego en el procedimiento transito muestra el color de calcomana respectivo*/ Inicio caracter placa[7] placa leerCaracteres("teclee los digitos de la placa") transito(placa) fin //fin de principal
Inicio caracter color escribir "teclee letra para color" leer color colores(color) fin //principal procedimiento colores(caracter color) inicio casos de (color) inicio caso 'a': caso 'A': escribir "su color favorito es break caso 'n': caso 'N': escribir "su color favorito es break caso 'v': caso 'V': escribir "su color favorito es break caso 'b': caso 'B': escribir "su color favorito es break caso 'r': caso 'R': escribir "su color favorito es break default: escribir "ERROR_letra fin// fin casos de fin// fin colores
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Texto leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin
64
'a': 'A': escribir break caso 'n': caso 'N': escribir break caso 'v': caso 'V': escribir break caso 'b': caso 'B': escribir break caso 'r': caso 'R': escribir break default: fin// fin casos de fin// fin colores
/* Parte principal, primero pide inicial de color, luego en el procedimiento colores muestra el nombre del color */ Inicio caracter color color leerCar("teclee letra para color") colores(color) fin
Inicio caracter e escribir "teclee u, c, s, v, d, o, segun estado civil" leer e casos de (e)
65
"union libre es su estado civil" "casado es su estado civil" "soltero es su estado civil" "viudo es su estado civil" "divorciado es su estado civil" "otro es su estado civil" escribir "ERROR_letra no valida"
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin /* Procedimiento que muestra el estado civil respectivo de acuerdo al carcter recibido como parametro. */ procedimiento estado(caracter e) inicio casos de (e) inicio caso 'u': caso 'U': escribir "union libre es su estado civil" break caso 'c': caso 'C': escribir "casado es su estado civil" break caso 's': caso 'S': escribir "soltero es su estado civil" break caso 'v':
66
/* Parte principal, primero pide la letra del estado civil, luego en el procedimiento estado muestra el estado civil respectivo */ Inicio caracter e e leerCar("teclee u, c, s, v, d, o, segun estado civil") estado(e) fin
Inicio caracter lo fraccionario l, b, h, t, r, c escribir "teclee inicial de la figura geometrica" leer lo casos de (lo) inicio caso 'B': caso 'b': escribir "teclee medida del lado" leer l
67
"teclee medida de la base" "teclee medida de la altura" "el area del rectangulo es ", r "ERROR_letra no valida"
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin /* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ Fraccionario leerFracc (texto mensaje) Fraccionario f escribir mensaje leer f retornar f fin procedimiento operaciones(caracter lo)
68
valor
Inicio caracter color escribir "teclee letra para el color deseado" leer color escribir "su color favorito es " casos de (color) inicio caso 'a': caso 'A': retorna "amarillo" break caso 'n': caso 'N': retorna "naranja" break caso 'v': caso 'V': retorna "verde" break caso 'b': caso 'B': retorna "blanco" break caso 'r': caso 'R': retorna "rojo" break
70
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin caracter *colores(caracter color) inicio casos de (color) inicio caso 'a': caso 'A': retorna "amarillo" break caso 'n': caso 'N': retorna "naranja" break caso 'v': caso 'V': retorna "verde" break caso 'b': caso 'B': retorna "blanco" break caso 'r': caso 'R': retorna "rojo" break default: retorna "ERROR_letra no valida" fin// fin de casos fin// fin colores /* Parte principal, primero pide la letra del color, luego muestra el nombre del color llamando a la funcin colores a la que le pasa la letra del color deseado */ Inicio caracter color color leerCar("teclee letra para el color deseado") escribir "su color favorito es ", colores(color) fin //fin de principal
Inicio caracter e escribir "teclee u, c, s, v, d, o segn su estado civil" leer e escribir "su estado civil es %s" casos de (e) inicio caso 'u': caso 'U': retorna "union libre" break caso 'c': caso 'C': retorna "casado" break caso 's': caso 'S': retorna "soltero" break caso 'v': caso 'V': retorna "viudo" break caso 'd': caso 'D': retorna "divorciado" break caso 'o': caso 'O': retorna "otro" break default: retorna "ERROR_letra no valida" fin// fin de casos fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin caracter *estado(caracter e)
72
Inicio entero suma0 entero n1 mientras(n<=10) inicio escribir "numero ", n sumasuma+n n n+1 fin //fin de mientras escribir "Suma total es de " , sumat fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que muestra los nmeros del 1 al 10 y retorna la suma de los mismos. */ funcin suma() inicio entero suma0 entero n1 mientras(n<=10) inicio escribir "numero ", n sumasuma+n n n+1 fin //fin de mientras retorna suma fin //fin de funcin suma /* Parte principal, llama a la funcin suma y luego muestra el total de la suma */ Inicio entero sumat sumat suma() escribir "Suma total es de " , sumat fin //fin de principal
Solucin ejercicio 2.
Hacer una funcin con el ciclo mientras, que dado un numero entero decimal me muestre los siguientes 20 nmeros pares o impares del numero proporcionado.
DATOS DE ENTRADA: Nmero (n entero) PROCESO: Leer n Mostrar 20 nmeros pares o impares despus de nmero. 74
Inicio entero h1 entero n escribir "ingresar numero" leer n mientras(h<=20) inicio nn+2 escribir " numero ", n h++ fin //fin de mientras fin //fin de principal
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin /* procedimiento que muestra los 20 siguientes nmeros pares o impares de un nmero dado. */ procedimiento contador(entero n) inicio entero h1 mientras(h<=20) inicio nn+2 escribir " numero ", n h++ fin //fin de mientras retorna fin //fin de procedimiento contador /* Parte principal, pide el valor de n y llama al procedimiento contador */ Inicio n leerEntero("ingresar numero") contador(n) fin //fin de principal
75
Solucin ejercicio 3.
Implemente el ciclo mientras para leer caracteres y finalic cuando se introduzca un *.
DATOS DE ENTRADA: Carcter ledo (cad carcter) PROCESO: Mientras cad sea dif. De * leer cad. DATOS DE SALIDA: ninguno. PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio caracter cad x mientras(cad != '*') inicio escribir "teclee caracter " leer cad fin //fin de mientras fin
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin procedimiento caracteres() inicio caracter cad x mientras(cad != '*') inicio cad leerCar("teclee caracter ") fin //fin de mientras retorna fin //fin de procedimiento caracteres /* Parte principal, llama al procedimiento caracteres */ Inicio caracteres() fin //fin de principal
76
Solucin ejercicio 4.
Hacer en un ciclo mientras una funcin que calcule el total de la compra, imprima el iva, con cuanto paga y el cambio.
DATOS DE ENTRADA: Respuesta continuar (cad carcter) monto de la venta (m fraccionario) Cantidad de pago (cp fraccionario) PROCESO: Leer m, cp ivam*0.15. tpm+iva. cambiocp-tp. cajacaja+tp. Mostrar iva, cp, cambio, caja DATOS DE SALIDA: Monto del IVA (iva fraccionario) Cantidad de cambio (cambio - fraccionario) Cantidad acumulada en caja (caja fraccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio fraccionario caja0 caracter cad escribir "desea realizar venta s=si, n=no leer cad mientras(cad=='s' o cad=='S') inicio fraccionario m, iva, tp, cp, cambio escribir " teclee el monto de la venta" leer m ivam*0.15 escribir " el iva es de ", iva tpm+iva escribir " el total a pagar es de ", tp escribir " teclee cantidad con que paga el cliente" leer cp cambio cp - tp escribir " el cambio es de ", cambio caja caja + tp escribir " desea realizar venta s=si, n=no" leer cad fin //fin de mientras escribir " el monto total de la caja es de ", caja fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES: 77
Solucin ejercicio 5.
Mostrar en pantalla 10 veces la lnea de texto Ring.... utilizando un ciclo hacer mientras.
78
Inicio entero i5 hacer escribir "ring..." i i+1 mientras(i<=10) retorna fin //fin de principal
Solucin ejercicio 6.
Hacer una funcin en el ciclo hacer mientras, nmeros del 1 al 10 y retorne la suma de ellos.
DATOS DE ENTRADA: Ninguno. PROCESO: Mostrar los nmero del 1 al 10 Mostrar sumat DATOS DE SALIDA: Nmeros del 1 al 10 Suma de los primeros 10 nmeros (sumat entero) PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio entero suma0 entero n1 hacer sumasuma+n escribir "numero ", n n n+1 mientras(n<=10) escribir "la suma total es de ", suma fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que devuelve el valor de la suma de los nmeros del 1 al 10 */ funcin suma() inicio
79
", n
/* Parte principal, recibe el valor de la funcin suma y muestra el resultado */ Inicio entero sumat sumat suma() escribir "la suma total es de ", sumat fin //fin de principal
Solucin ejercicio 7.
Hacer una funcin con el ciclo hacer - mientras, que dado un numero entero decimal me muestre los siguientes 20 nmeros pares o impares del numero proporcionado.
DATOS DE ENTRADA: Nmero entero decimal (n entero) PROCESO: Leer n Mostrar 20 nmero pares o impares DATOS DE SALIDA: 20 nmeros pares o impares. PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio entero h1 entero n escribir "ingresar numero" leer n hacer nn+2 escribir " numero ", n hh+1 mientras(h<=20) fin //fin de principal
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje)
80
Solucin ejercicio 8.
Utilizar un ciclo hacer mientras, que introduzca un * .
DATOS DE ENTRADA: Carcter ledo (cad carcter) PROCESO: Hacer leer cad Mientras cad sea dif. De * . DATOS DE SALIDA: ninguno. PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio caracter cad hacer escribir "teclee caracter leer cad mientras(cad != '*') fin //fin de principal
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */
81
Solucin ejercicio 9.
Realizar un algoritmo que utilice un ciclo mientras en una funcin que calcule el total de la compra, imprima el IVA, con cuanto paga y el cambio.
DATOS DE ENTRADA: Respuesta para continuar (cad carcter) Monto de venta (m fraccionario) Cantidad pagada (cp fraccionario) PROCESO: Leer cad, m, cp ivam*0.15. tpm+iva. cambiocp-tp. cajacaja+tp. Mostrar iva, tp, cambio, caja DATOS DE SALIDA: Cantidad de IVA (iva fraccionario) Total a pagar (tp fraccionario) Cantidad de cambio (cambio fraccionario) Respuesta de salida (cad carcter) Monto total en caja (caja faccionario) PSEUDOCDIGO EN UN SOLO BLOQUE:
82
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin /* Funcin que pide un valor fraccionario y retorna ledo, recibe como parmetro una cadena de texto. */ fraccionario leerFracc (texto mensaje) fraccionario f escribir mensaje leer f retornar f fin procedimiento tienda() inicio fraccionario caja0 caracter cad cad leerCar("desea realizar venta s/n") hacer fraccionario m, iva, tp, cp, cambio m leerFracc(" teclee el monto de la venta") iva m*0.15 escribir " el iva es de ", iva
83
el valor
procedimiento impares() inicio entero i para i desde 401 hasta 1100, inc. En 2, hacer escribir i, " " fin //fin de procedimiento impares
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Procedimiento que muestra en un ciclo para los nmeros que hay desde el 401 hasta el 1100 incrementando de 2 en 2. */ procedimiento impares() inicio entero i para i desde 401 hasta 1100, inc. En 2, hacer escribir i, " "
84
Inicio entero n, i para I desde 1 hasta 100, hacer inicio escribir "ingresar numero" leer n si ((n mod 2)!= 1) entonces escribir "el es numero par" , n ii+1 fin_si fin_para fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin procedimiento pares() inicio entero n, i para I desde 1 hasta 100, hacer inicio n leerEntero("ingresar numero")
85
Inicio fraccionario prom entero e, suma0 entero i, ed escribir "cuantas edades a calcular" leer e para i desde 1 hasta e, inc en 1, hacer inicio escribir "ingresar edad" leer ed suma suma+ed fin promsuma/e escribir "el promedio de las edades es de ", prom fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */
86
Inicio entero suma0 fraccionario cp, ventaim, ganancia entero i, N escribir "cuantos articulos vendidos" leer N para i desde 1 hasta N, inc en 1, hacer inicio escribir "teclee costo del producto" leer cp sumasuma+cp fin ventaim (suma*0.35)+suma ganancia ventaim-suma escribir "Venta total con el impuesto es de ", ventaim escribir "la ganancia total es de " , ganancia fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin /* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ fraccionario leerFracc (texto mensaje) fraccionario f escribir mensaje leer f retornar f fin procedimiento articulos(entero N) inicio entero i, suma0 fraccionario cp, ventaim, ganancia para i desde 1 hasta N, inc en 1, hacer inicio cp leerFracc("teclee costo del producto") sumasuma+cp fin ventaim (suma*0.35)+suma ganancia ventaim-suma
88
valor
Inicio entero t, i, pt entero menor0 entero mayor0 entero promedio0 para I desde 1 hasta 10, inc en 1, hacer inicio escribir "en que tiempo realizo la prueba" leer t menor t si(t<15)
89
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin //devuelve 1 si es apto y 0 si no es apto entero atleta() inicio entero t, i, pt entero menor0 entero mayor0 entero promedio0 para I desde 1 hasta 10, inc en 1, hacer inicio t leerEntero("en que tiempo realizo la prueba") si(t<15) entonces retorna 0 sino si(t>16) entonces mayor mayor + 1 fin_si pt pt + t fin_si fin_para promediopt/10 si(mayor>=1 y promedio>=15) entonces retorna 1 sino retorna 0 fin_si fin //fin de funcin
90
Inicio fraccionario i, c0 escribir "que cantidad va a invertir" leer c para i desde 0 hasta 12, inc en 1, hacer inicio cc*0.02+c fin_para escribir "obtendra la cantidad de ", c fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ fraccionario leerFracc (texto mensaje) fraccionario f escribir mensaje leer f retornar f fin
valor
91
Inicio entero i entero suma0 para I desde 100 hasta 0, dec en 1, hacer inicio sumasuma+i fin escribir "la suma es de ", suma fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Procedimiento que muestra los numeros del 100 al 0 en un ciclo para que inicia en 100 hasta que llegue a 0 decrementandse en uno. */ procedimiento suma() inicio entero i entero suma0
92
Inicio entero x, y, i, po entero suma1 escribir Introduzca numero para x" leer x escribir "introduzca numero para y" leer y para i desde 2 hasta y, inc en 1, hacer inicio sumasuma*x posuma*x fin_para escribir "el resultado es ", po fin //fin de principal
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje
93
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin procedimiento calculo(entero f, entero x, entero y) inicio fraccionario s0 entero i para I desde 1 hasta y, inc en 1, hacer inicio s s + f/(potencia(x, i) * 1.0) fin escribir "el resultado es ", s retorna fin //devuelve un valor entero entero potencia(entero x, entero pot) inicio entero a, i entero suma1 para a desde 1 hasta pot, inc en 1, hacer inicio sumasuma*x fin retorna suma fin //fin de funcin potencia
95
/* Parte principal, pide el contador */ Inicio entero f, x, y f leerEntero("introduzca x leerEntero("introduzca y leerEntero("introduzca calculo(f, x, y) fin //fin de principal
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin /* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin procedimiento descripcion() inicio caracter d entero n d leerCar("desea comenzar a describir numeros s/n")
96
fin
//devuelve cadena de caracteres carcter *unidad(entero n) inicio caracter cad[20] si(n<10) casos de (n) inicio caso 1: retorna "uno" break caso 2: retorna "dos" break caso 3: retorna "tres" break caso 4: retorna "cuatro" break caso 5: retorna "cinco" break caso 6: retorna "seis" break caso 7: retorna "siete" break caso 8: retorna "ocho" break caso 9: retorna "nueve" break default: retorna "" fin// fin casos fin// fin unidad //devuelve cadena de caracteres funcin decena(entero n) inicio caracter cad[30] si(n<=15) casos de (n) inicio
97
99
/* Parte principal llama al procedimiento descripcion */ Inicio descripcion() fin //fin de principal
/* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin /* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin procedimiento descripcion(entero n) inicio caracter d d leerCar("desea comenzar a describir numeros s/n") mientras(d=='s') inicio n leerCar("teclee numero a describir) escribir "el numero es " si(n<10) entonces escribir unidad(n) sino si(n<100) entonces escribir decena(n) sino si(n<1000) entonces escribir centena(n) escribir " desea describir otro numero s/n" leer d fin_mientras fin //fin de procedimiento //devuelve cadena de caracteres caracter *unidad(entero n) inicio caracter cad[20] si(n<10) casos de (n) inicio
101
103
104
/* Parte principal llama al procedimiento descripcion */ Inicio descripcion() fin //fin de principal
Inicio Entero i Fraccionario consumo, desc, tot, PagoT 0.0 para i desde 0 hasta 50, inc en 1, hacer inicio escribir "teclee consumo: " leer consumo si consumo > 100.00 entonces desc consumo * 0.07
105
/* Funcin que pide un valor fraccionario y retorna el ledo, recibe como parmetro una cadena de texto. */ fraccionario leerEntero (texto mensaje) fraccionario f escribir mensaje leer f retornar f fin
valor
/* Funcin que retorna el valor del descuento que depende del valor de consumo recibido. */ Fraccionario calculaD (fraccionario c) si c > 100.00 entonces retorna consumo * 0.07 sino retorna 0.0 fin si fin //Funcin calculaD() /* Parte principal, desde 1 hasta 50 pide el valor de consumo y llama a la funcin calculaD a la que le pasa el consumo y devuelve el valor del descuento */ Inicio Entero i Fraccionario consumo, desc, tot, PagoT 0.0 para i desde 0 hasta 50, inc en 1, hacer inicio consumo leerFracc("teclee consumo: ") desc calculaD(consumo) tot consumo - desc PagoT PagoT + tot Escribir Subtotal = , consumo Escribir Descuento = , desc Escribir Total = , tot fin_para Escribir Pago Total: , PagoT fin //fin de principal
106
Inicio
Fin
Escribir Cuantas notas son? leer N Suma1 0 Suma2 0 C 0 S 0 Para I desde 1 hasta N, inc en 1, hacer Escribir dar nota: leer nota si nota>=70 entonces Suma1 Suma1+nota C C+1 sino Suma2 Suma2+nota S S+1 fin si fin para Pa suma1\C Pd suma2\S Escribir Promedio de aprobadas: , Pa Escribir Promedio de desaprobadas: , pd
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */
107
DATOS DE ENTRADA: suma de edades de varones (sev entero) suma de edades de mujeres (sem entero) asistentes (A entero) varones (V entero) mujeres (M entero) edad (e entero) sexo (s carcter) PROCESO: Leer e Mientras e <> 0 hacer Si e>= 18 Leer S Acumular e en sumaE Acumular 1 en A Segn sea S Acumular 1 en V o M Acumular e en sev o sem Segn sea e Menor e Incrementar 1 en: C o S Sino Mensaje Menor de edad Calcular pm, pv Mostrar pm, pv,menor,a,m,v DATOS DE SALIDA: Promedios: mujeres, varones (pm, pv fraccionario) Asistentes, contadores (A, menor, m, v enteros) PSEUDOCDIGO EN UN SOLO BLOQUE:
Inicio Entero Sev 0 Entero Sem 0 Entero A 0 Entero V 0 Escribir Teclea la edad: Leer e Menor e mientras e<>0 hacer leer e, s si e>=18 entonces a_a+1 si s == "m" entonces m m+1 sem sem+e sino v v+1
109
sino
escribir "menor de edad" fin si fin mientras pm sem\m pv sev\v escribir pm,pv,menor,a,m,v fin
PSEUDOCDIGO USANDO PROCEDIMIENTOS Y FUNCIONES:
/* Funcin que pide un valor entero y retorna el valor ledo, recibe como parmetro una cadena de texto. */ Entero leerEntero (texto mensaje) Entero e escribir mensaje leer e retornar e fin /* Funcin que pide un caracter y retorna el valor ledo, recibe como parmetro una cadena de texto. */ caracter leerCar (texto mensaje) caracter c escribir mensaje leer c retornar c fin /* Procedimiento en el que mientras la edad sea diferente de cero realiza sumatorias necesarias, despus realiza calculo de promedios y por ultimo muestra resultados */ Procedimiento fiesta(entero edad) Entero Sev 0 Entero Sem 0 Entero A 0 Entero V 0 Entero Menor edad mientras edad<>0 hacer si edad>=18 entonces a a+1 s leerCar(Teclea m= mujer, h= hombre: ) si s == "m" entonces m m+1 sem sem+e sino
110
FUENTES CONSULTADAS
[Rivas1985] Rivas , Dolores y Salas Rgulo, (1985) Introduccin a la Computacin. Tercera Edicin Esprosistemas [Joyanes2003] Joyanes Aguilar, Luis (2003) Fundamentos de la programacin. Ed. McGrawHill. Espaa. 1004 pgs. [Oviedo2003] Oviedo Regino, Efrain (2003) Lgica de programacin. Ed. Ecoediciones. Espaa. 213 pgs.
111