0 calificaciones0% encontró este documento útil (0 votos)
297 vistas116 páginas
Este documento presenta un cuaderno de ejercicios sobre estructura de datos. Contiene una introducción y varias secciones con problemas y ejercicios de diferentes niveles de complejidad sobre conceptos como asignación, condicionales if/else, bucles while, arrays unidimensionales y bidimensionales, cálculo de promedios y otras operaciones matemáticas. El objetivo es que los estudiantes practiquen y consoliden sus conocimientos sobre estructuras de datos a través de la resolución de los problemas y ejercicios planteados.
Este documento presenta un cuaderno de ejercicios sobre estructura de datos. Contiene una introducción y varias secciones con problemas y ejercicios de diferentes niveles de complejidad sobre conceptos como asignación, condicionales if/else, bucles while, arrays unidimensionales y bidimensionales, cálculo de promedios y otras operaciones matemáticas. El objetivo es que los estudiantes practiquen y consoliden sus conocimientos sobre estructuras de datos a través de la resolución de los problemas y ejercicios planteados.
Este documento presenta un cuaderno de ejercicios sobre estructura de datos. Contiene una introducción y varias secciones con problemas y ejercicios de diferentes niveles de complejidad sobre conceptos como asignación, condicionales if/else, bucles while, arrays unidimensionales y bidimensionales, cálculo de promedios y otras operaciones matemáticas. El objetivo es que los estudiantes practiquen y consoliden sus conocimientos sobre estructuras de datos a través de la resolución de los problemas y ejercicios planteados.
Cuaderno de Ejercicios Estructura de Datos se encuentra bajo una Licencia Creative Commons Atribucin-No Comercial- Licenciamiento Recproco 3.0 Unported. IDSystems Octubre 2011 ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Ejercicio 14 Tablas de Multiplicar ........................................................................................................................ 42 PRACTICA 29 Calif Alumno ................................................................................................................................... 42 PRACTICA 30 Promedios Alumnos ....................................................................................................................... 43 PRACTICA 31 Simulacion Reloj ............................................................................................................................. 44 Ejercicio 15 Promedios ......................................................................................................................................... 44 Ejercicio 16 Promedio Grupo ............................................................................................................................... 45 Ejercicio 17 Promedio Grupo con Bidimensionales ............................................................................................. 46 Ejercicio 18 Matriz Alumnos................................................................................................................................. 47 PRACTICA 32 Supermercado ................................................................................................................................ 47 PRACTICA 33 Pares Impares Matriz ..................................................................................................................... 48 PRACTICA 34 Cuadrado Cubo ............................................................................................................................... 49 PROBLEMAS INTERMEDIOS ...................................................................................................................................... 50 PROBLEMA 1 (Si..Entonces anidadas) .................................................................................................................. 51 PROBLEMA 2 (Si..Entonces anidadas) .................................................................................................................. 52 PROBLEMA 3 (Si..Entonces anidadas) .................................................................................................................. 54 PROBLEMA 4 (Condiciones multiples) ................................................................................................................. 56 PROBLEMA 5 (Si..Entonces multiples, anidadas, oper. Logicos) .......................................................................... 59 PROBLEMA 6 (Ciclo Repetir..hasta, Si..Entonces) ................................................................................................ 61 PROBLEMA 7 (Si..Entonces, Bisiesto) ................................................................................................................... 62 PROBLEMA 8 (Si..Entonces multiples) .................................................................................................................. 63 PROBLEMA 9 (En caso de.., Si..Entonces) ............................................................................................................ 64 Ejercicio 19 Alumnos ............................................................................................................................................ 67 Ejercicio 20 Captura Productos ............................................................................................................................ 68 PRACTICA 35 Captura Alumnos ............................................................................................................................ 69 Ejercicio 21 Cuadrado Numero ............................................................................................................................ 70 Ejercicio 22 Calcular Area ..................................................................................................................................... 71 Ejercicio 23 Precio Neto ....................................................................................................................................... 72 PRACTICA 42 Fecha Larga ..................................................................................................................................... 73 PRACTICA 43 Calculo Salario ................................................................................................................................ 74 PRACTICA 44 Calificaciones Letra ......................................................................................................................... 75 PROBLEMAS AVANZADOS ........................................................................................................................................ 77 PROBLEMA 1 (Mientras.. Hacer) .......................................................................................................................... 78 PROBLEMA 2 (Arreglos, Mientras.. Hacer) ........................................................................................................... 79 PROBLEMA 3 (Mientras.. Hacer, Si.. Entonces, Contadores) ............................................................................... 80 PROBLEMA 4 (Desde..Hasta, Si..Entonces, Maximos, Minimos).......................................................................... 81 PROBLEMA 5 (Mientras.. Hacer, Si.. Entonces, contadores, arreglos) ................................................................. 83 PROBLEMA 6 (Arreglos, cadenas,ciclos, condiciones) ......................................................................................... 86 PROBLEMA 7 (Desde.. hasta, Si.. Entonces) ......................................................................................................... 88 PROBLEMA 8 (Arreglos, Ciclos Mientras) ............................................................................................................. 89 PROBLEMA 9 (Arreglos, Mientras.. hacer, Si.. Entonces) ..................................................................................... 89 PROBLEMA 10 (Cadenas, Strlen, Substr, Desde..hasta) ....................................................................................... 90 PROBLEMA 11 (Subrutinas.. procedimientos, arreglos.. registro, ciclos, condiciones) ....................................... 91 PROBLEMA 12 (Ordenacion, subrutina, arreglos, ciclos, condiciones) ................................................................ 93 PROBLEMA 13 (Ordenacion, vectores, constantes, ciclos anidados, cond multiples) ......................................... 96 PROBLEMA 14 (Archivos externos lectura, arreglos, ciclos, condicion) ............................................................... 99 PROBLEMA 15(Examen 1) .................................................................................................................................. 101 PROBLEMA 16 (Constantes, Matriz, Subrutinas, funciones, tipos datos) .......................................................... 102 ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 4
PROBLEMA 17 (Subrutinas, variables globales, condicion multiple) ................................................................. 105 PROBLEMA 18 (Ejemplo completo de Sistema ABC, Archivos externos) ........................................................... 107 ANEXO 1 DIAGRAMAS DE FLUJO ......................................................................................................................... 115 PROBLEMA 1 ...................................................................................................................................................... 116 PROBLEMA 2 ...................................................................................................................................................... 116 PROBLEMA 3 ...................................................................................................................................................... 116 PROBLEMA 4 ...................................................................................................................................................... 116 PROBLEMA 5 ...................................................................................................................................................... 116 PROBLEMA 6 ...................................................................................................................................................... 116
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 5
INTRODUCCION
El siguiente cuaderno de ejercicios para el profesor, fue elaborado en base a la materia Estructura de Datos de la Universidad de Matamoros la cual tiene por objetivo fundamental el ensear los conceptos basicos de la programacion. El temario abarca los conceptos de algoritmos, su uso, su aplicacin, las sentencias basicas y preparar al alumno para aprender los conceptos de estructuras de datos. Aunque se recomienda el uso de un lenguaje de programacion computacional para la enseanza de dichos conceptos, este Cuaderno hace referencia a 3 software basicos de enseanza de programacion no basada en un lenguaje informatico propiamente dicho como C++, Delphi, Pascal o Basic. DFD es un software para la creacion de diagramas de flujo en la cual el alumno aprende y comprende ademas de los simbolos como se va estructurando un programa y viendolo en ejecucion. El PseInt es un excelente software de programacion en pseudocodigo basado en C++ (creando en el) para el aprendizaje de los conceptos basicos sobre asignacion, condicionales, ciclos. En lenguaje espaol, con instrucciones sencillas el alumno se concentra y centra mas en los conceptos que en las instrucciones de un lenguaje informatico completo. Ademas, tiene la ventaja que el alumno puede ejecutar el programa y generar el diagrama de flujo como complemento. Por ultimo, el SLE 2.0, es otro software para la enseanza de programacion tambien basado en C++ con muchas mas instrucciones y funciones, ademas de incorporar arreglos, tipos de datos, manejo de archivos permite al estudiante adquirir el conocimiento de las estructuras de datos. Aunque no incorpora la generacion de diagramas de flujo, sus instrucciones en espaol, muy semejantes a C++ lo prepara para el aprendizaje de este importante lenguaje y le ensea las bases para la creacion correcta de algoritmos. El Cuaderno esta dividio en TRES PARTES. La primera parte de ejercicios basicos, el profesor pondra los ejercicios para realizarlos completamente por el alumno de ser posible. Si lo desea puede auxiliarse en un laboratorio tanto con el software DFD o PseInt. Esta parte cubrira los tipos de datos, asignaciones, condicionales y algunos ciclos sencillos. La segunda parte de ejercicios intermedios, se recomienda el uso exclusivo e intensivo de PseInt para que el alumno elabore los programas. Queda a discrecion del profesor mostrar la solucion al problema o que el alumno lo resuelva por su cuenta. Aqu se veran la totalidad de los ciclos, condiciones anidadas, condiciones multiples En la ultima parte de ejercicios avanzados se recomienda el uso exclusivo e intensivo de SLE 2.0 para que el alumno elabora sus programas. Queda a discrecion del profesor mostrar la solucion al problema o que el alumno lo elabore por si mismo o en equipo. Los ejercicios son mas dificiles y abarcaran ademas de los temas anteriores arreglos con vectores, matrices, registros, subrutinas (funciones y procedimientos), manejo de archivos externos.
Cada problema mencionado, llevara el objetivo que se persigue al elaborarlo asi como la solucion propuesta. Cada ejercicio ha sido realizado en cada uno de los programas para revisar su validez y funcionalidad, sin embargo, hay algunos ejercicios que contienen o pueden contener algunos errores para que el propio alumno los descubra y haga los arreglos correspondientes.
A diferencia de algunos ejercicios de libros, estos estan basados no en problemas matematicos sino de situaciones comunes reflejadas en la vida diaria y en sistemas informaticos reales.
L.S.C. Sergio Hugo Sanchez Olivares
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 6
A continuacion se detallan los ejercicios tanto para hacerse en clase como por cuenta del usuario
Objetivo Aprender a crear un algoritmo en diagrama de flujo y pseudocodigo. Asignacion de variables y realizacion de operaciones. Inicio de condicionales. PROBLEMA 1 (Asignacion) Se trata de escribir el algoritmo que permita emitir la factura correspondiente a una compra de un articulo determinado, del que se adquieren una o varias unidades. El IVA es del 15% y si el precio bruto ( precio venta mas IVA) es mayor de 50.00 pesetas se debe realizar un descuento del 5%.
Pseudocodigo:
Variables: precio, numeros de articulos(Nart), precio venta(Pv), descuento(d) Inicio Leer precio, Nart Pv= Precio * Nart IVA= Pv * 0.15 Pb= Pv + IVA Si Pb >= 50 entonces d= (Pb * 5)/100 Sino d= 0 Finsi Pl= Pb - d Escribir Pv, IVA, Pb,d, Pl Fin
Ejemplo de realizacion en DFD:
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 7
Ejemplo de realizacion en PseInt:
Codigo PSEInt
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 8
Ejemplo de realizacion usando SLE:
El mismo programa pero creado en el software SLE quedaria asi:
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 9
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 10
EJERCICIOS DE COMPRENSION
Objetivo En esta primera parte, se encuentran los ejercicios y practicas que vienen en el Manual Diseo Estructurado de Algoritmos, abarcan desde como crear las variables, hasta condicionales simples y anidadas. Tambien estan un resumen de las practicas de dicho Manual. Aunque estos ejercicios son para realizarse en el aula de clase a traves de pseudocodigo o diagramas de flujo; tambien pueden realizarse usando el siguiente software: PseInt, DFD, Edraw
Estos ejercicios deberan ser simples, pequeos y como limite contener expresiones simples de condicion SiEntoncesSino. De preferencia estos ejercicios debera realizarlos el alumno por si mismo en su cuaderno y revisarlos despues. Las soluciones contenidas en este cuaderno es para que el maestro muestre la solucion final y compare con la solucion de los alumnos.
El alumno debera generar el algoritmo en diagrama de flujo y pseudocodigo. Queda a criterio del profesor el uso de DFD, Psint o SLE Temas por ver Diagramas de flujo, pseudocodigo, asignacion de variables, tipos de datos sencillos, operaciones sencillas, condicionales (sientonces) Herramientas Cuaderno y lapiz Plantilla de diagrama de flujo DFD PSint
Objetivo Inicializar variables, mostrar texto en pantalla y capturar datos Ejercicio 1 Calcular Edad Realizar un algoritmo que calcule la edad de una persona a la cual solo se le solicitara el ao en que nacio.
Proceso ejercicio01 // Realizar un algoritmo que calcule la edad de una persona a la cual // solo se le solicitara el ao en que nacio. edad<-0; ano_nac <-0; ano_act <-0; Escribir "En que ao naciste?"; Leer ano_nac; Escribir "En que ao estamos?"; Leer ano_act; Edad <- ano_act - ano_nac Escribir "Tu edad actual es ", edad;
FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 11
Objetivo Variables y operaciones Ejercicio 2 Inversion Banco Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara despues de un ao si el banco paga a razon de 2% mensual.
Proceso ejercicio02 // Suponga que un individuo desea invertir su capital en un banco // y desea saber cuanto dinero ganara despues de un ao si el banco // paga a razon de 2% mensual.
// Constantes Interes <- 0.02; Ano <- 12;
// Variables: Ganacia <- 0; Capital <- 0;
Escribir "Cuanto dinero piensas invertir?"; Leer Capital; Ganancia <- ( Capital * interes ) * Ano; Escribir "Tu ganancia sera de: ", Ganancia;
FinProceso
Objetivo Variables y Operaciones Ejercicio 3 Descuento Supermercado Se necesita un sistema para un supermercado, el cualdara un 10% de descuento a las personas que compren mas de $1000, al cliente se le debe dar el total a pagar.
Proceso ejercicio03 // Se necesita un sistema para un supermercado, el cualdara un 10% // de descuento a las personas que compren mas de $1000, al cliente // se le debe dar el total a pagar.
Total <-0; Subtotal <- 0; Descuento <- 0;
Escribir "Cuanto compro el cliente?"; Leer Subtotal; Si subtotal > 1000 Entonces descuento <- subtotal * 0.10; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 12
Total <- subtotal - descuento; sino Total <- subtotal; FinSi Escribir "El total a pagar es: ", total;
FinProceso
Objetivo Variables y Operaciones PRACTICA 1 Comision Vendedor Un vendedor recibe un sueldo base mas un 10% extra por comision de sus ventas, el vendedor desea saber cuanto dinero obtendra por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibira en el mes tomando en cuenta su sueldo base y comisiones.
Proceso practica01 // Un vendedor recibe un sueldo base mas un 10% extra por comision de // sus ventas, el vendedor desea saber cuanto dinero obtendra por // concepto de comisiones por las tres ventas que realiza en el mes // y el total que recibira en el mes tomando en cuenta su sueldo // base y comisiones.
sueldo_base <- 0; comision <- 0; total <- 0;
Escribir "Cual es el sueldo base del vendedor?"; Leer sueldo_base; comision <- sueldo_base * 0.10; total <- (comision * 3) + sueldo_base; Escribir "Su sueldo base de: ", sueldo_base; Escribir "(+) su comision : ", comision; Escribir "le da un total de: ", total; FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 13
Objetivo Variables y Operaciones PRACTICA 2 Descuento Tienda Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto debera pagar finalmente por su compra
Proceso practica02 // Una tienda ofrece un descuento del 15% sobre el total de la compra // y un cliente desea saber cuanto debera pagar finalmente por su // compra
subtotal <- 0; total <-0; descuento <- 0;
Escribir "Cual fue la compra del cliente?"; Leer subtotal; descuento <- subtotal * 0.15 total <- subtotal - descuento; Escribir "Su compra menos el 15% de descuento es: ", total;
FinProceso
Objetivo Variables y Operaciones PRACTICA 3 Calificacion Un alumno desea saber cual sera su calificacion final en la materia de Algoritmos. Dicha calificacion se compone de tres examenes parciales
Proceso practica03 // Un alumno desea saber cual sera su calificacion final en la materia // de Algoritmos. Dicha calificacion se compone de tres examenes // parciales
calif1 <-0; calif2 <-0; calif3 <-0; calif_final <-0; Escribir "Dame la calificacion1: "; leer calif1; Escribir "Dame la calificacion2: "; leer calif2; Escribir "Dame la calificacion3: "; leer calif3;
Objetivo Variables y Operaciones PRACTICA 4 Porcentaje Hombres- Mujeres Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.
Proceso practica04 // Un maestro desea saber que porcentaje de hombres y que porcentaje // de mujeres hay en un grupo de estudiantes.
hombres <-0; mujeres <-0; cant_mujeres<-0; alumnos <-0; Escribir "Cuantos alumnos hay en total en el grupo"; Leer alumnos; Escribir "En el grupo de Algoritmos, cuantas mujeres hay?"; Leer cant_mujeres;
Escribir "El porcentaje de mujeres en el grupo es: ", mujeres, "%" Escribir "El porcentaje de hombres en el grupo es: ", hombres, "%"
FinProceso
Objetivo Variables y Operaciones PRACTICA 5 Cambio Divisas Dada una cantidad en pesos, obtener la equivalencia en dolares, asumiendo que la unidad cambiaria es un dato desconocido
Proceso practica05 // Dada una cantidad en pesos, obtener la equivalencia en dolares, // asumiendo que la unidad cambiaria es un dato desconocido
pesos<-0; dolares<-0; tipo_cambio<-0;
Escribir "Cual es el tipo de cambio vigente?"; Leer tipo_cambio; Escribir "Cuantos pesos quieres cambiar a dolares?"; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 15
Leer pesos;
dolares <- pesos / tipo_cambio; Escribir "La cantidad en dolares es: ",dolares
FinProceso
Objetivo Variables y Operaciones PRACTICA 6 Incremento Salario Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior.
Proceso practica06 // Calcular el nuevo salario de un obrero si obtuvo un incremento // del 25% sobre su salario anterior.
salario <- 0; sal_nuevo <-0; Escribir "Cuanto gana este obrero?"; Leer salario; sal_nuevo <- (salario * 0.25) + salario; Escribir "Con un aumento del 25%, ahora ganara: ", sal_nuevo;
FinProceso
Objetivo Condicionales Simples: Si Entonces Ejercicio 4 Promedio Calificaciones Se necesita un programa que reciba tres calificaciones parciales de un alumno y en base a estas darle su promedio donde si el promedio es menor a 6 se le dira que esta REPROBADO, en caso contrario el mensaje sera APROBADO.
Proceso ejercicio04 // Se necesita un programa que reciba tres calificaciones parciales // de un alumno y en base a estas darle su promedio donde si el // promedio es menor a 6 se le dira que esta REPROBADO, en caso // contrario el mensaje sera APROBADO.
prom <-0; calif1 <-0; calif2 <-0; calif3 <- 0;
Escribir "Dame la calificacion del primer parcial: "; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 16
Leer calif1; Escribir "Dame la calificacion del segundo parcial: "; Leer calif2; Escribir "Dame la calificacion del tercer parcial: "; Leer calif3; Prom <- (calif1 + calif2 + calif3) /3; Si prom < 6 Entonces Escribir "Tu promedio es: ", prom, " y estas REPROBADO"; Sino Escribir "Tu promedio es: ", prom, " y estar APROBADO"; FinSi
FinProceso
Objetivo Condicionales Simples: Si Entonces Ejercicio 5 Varios Descuentos Se necesita un programa para un supermercado, en el cual si el monto de la compra del cliente es mayor de 5000 se la hara un descuento del 30%, si es menor o igual a 5000 pero mayor que 3000 sera del 20%, si no rebasa los 3000 pero si los 1000 la rebaja efectiva es del 10% y en caso de que no rebase los $1000 no tendra beneficio
Proceso ejercicio05 // Se necesita un programa para un supermercado, en el cual si el monto // de la compra del cliente es mayor de 5000 se la hara un descuento // del 30%, si es menor o igual a 5000 pero mayor que 3000 sera del // 20%, si no rebasa los 3000 pero si los 1000 la rebaja efectiva es // del 10% y en caso de que no rebase los $1000 no tendra beneficio
total <-0; subtotal <-0; descuento <-0; Escribir "Cuanto compro el cliente?"; Leer subtotal; Si subtotal > 5000 Entonces descuento <- subtotal * 0.30; Sino si subtotal > 3000 Entonces descuento <- subtotal * 0.20; Sino si subtotal > 1000 Entonces descuento <- subtotal * 0.10; Sino descuento <-0; FinSi FinSi FinSi total <- subtotal - descuento; Escribir "El total a pagar es: ", total; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 17
FinProceso
Objetivo Condicionales Simples: Si Entonces Ejercicio 6 Promedios USA Se necesita un sistema que le muestre a un alumno su calificacionen letra y su promedio, el promedio se sca en base a 3 parciales donde si el promedio es menor a 6 su letra es NA, si es mayor o igual a 6 y cuando mucho 8 le corresponde S, si sobrepasa el 8 pero menor o igual a 9 debe tener B, todo lo demas es una E
Proceso ejercicio06 // Se necesita un sistema que le muestre a un alumno su calificacion // en letra y su promedio, el promedio se sca en base a 3 parciales // donde si el promedio es menor a 6 su letra es NA, si es mayor o // igual a 6 y cuando mucho 8 le corresponde S, si sobrepasa el 8 // pero menor o igual a 9 debe tener B, todo lo demas es una E
calif1 <- 0; calif2 <- 0; calif3 <- 0; promedio <- 0; Escribir "Dame la calificacion del primer parcial: "; Leer calif1; Escribir "Dame la calificaicon del segundo parcial: "; Leer calif2; Escribir "Dame la calificaicon del tercer parcial: "; Leer calif3; Promedio <- (calif1 + calif2 + calif3) / 3 si promedio <- 6 Entonces Escribir "Tu calificion con letra es NA"; Sino Si promedio <= 8 Entonces Escribir "Tu calificacion con letra es S"; Sino Si promedio <= 9 Entonces Escribir "Tu calificacion con letra es B"; Sino Escribir "Tu calificacion con letra es E"; FinSi FinSi
FinSi Escribir "Ya que tu promedio es: ",promedio;
FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 18
Objetivo Condicionales Simples: Si Entonces PRACTICA 11 Joven Viejo Necesitamos saber si una persona es "joven" o "vieja" basandonos en su edad. Joven es aquella menor de 45 aos
Proceso practica04 // Necesitamos saber si una persona es "joven" o "vieja" basandonos // en su edad. Joven es aquella menor de 45 aos
edad <-0 Escribir "Cual es tu edad?"; leer edad;
Si edad < 45 Entonces Escribir "Usted es una persona JOVEN"; Sino Escribir "Usted es una persona VIEJA"; FinSi
FinProceso
Objetivo Condicionales Simples: Si Entonces PRACTICA 12 Alto Chaparro Necesitamos saber si el usuario es alto o chaparro. Chaparro es aquel que mide cuando mucho 1.65 mts
Proceso practica05 //Necesitamos saber si el usuario es alto o chaparro. //Chaparro es aquel que mide cuando mucho 1.65 mts
Si altura < 1.65 Entonces Escribir "Upps! eres chaparro"; Sino Escribir "Oh! eres alto"; FinSi
FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 19
Objetivo Condicionales Simples: Si Entonces PRACTICA 13 Contrasea Necesitamos verificar que la contrasea que escribe el usuario es igual a "solrac". Dependiendo de lo ingresado desplegar el mensaje correspondiente.
Proceso practica06 // Necesitamos verificar que la contrasea que escribe el usuario // es igual a "solrac". Dependiendo de lo ingresado desplegar el // mensaje correspondiente.
contrasena <- " "; Escribir "Cual es la contrasea para entrar: "; Leer contrasena;
si contrasena = "solrac" Entonces Escribir "ACCESO AUTORIZADO"; Sino Escribir "ACCESO NO AUTORIZADO"; FinSi
FinProceso
Objetivo Condicionales Simples: Si Entonces PRACTICA 14 Ordernar 2 numeros Que lea dos numeros y los imprima en forma ascendente.
Proceso practica07 // Que lea dos numeros y los imprima en forma ascendente.
num1 <- 0; num2 <- 0; Escribir "Dame el primer numero"; Leer num1; Escribir "Dame el segundo numero"; Leer num2; Si num1 > num2 Entonces Escribir "Orden Ascendente:"; Escribir num2; Escribir num1; Sino Escribir "Orden Ascendente:"; Escribir num1; Escribir num2; FinSi ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 20
FinProceso
Objetivo Condicionales Simples: Si Entonces PRACTICA 15 Operaciones Numeros Leer 2 numeros, si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no, que los sume
Proceso practica08 // Leer 2 numeros, si son iguales que los multiplique, si el primero // es mayor que el segundo que los reste y si no, que los sume
num1 <-0; num2 <-0; resultado <-0; Escribir "Dame el primer numero"; Leer num1; Escribir "Dame el segundo numero"; Leer num2; Si num1=num2 Entonces resultado <- num1 * num2; Sino si num1 > num2 Entonces resultado <- num1 - num2; Sino resultado <- num1 + num2; FinSi FinSi Escribir "Y el resultado es: ",resultado; FinProceso
Objetivo Condicionales Simples: Si Entonces PRACTICA 16 Encontrar Numero Mayor Leer tres numeros diferentes e imprimir el numero mayor
Proceso practica09 // Leer tres numeros diferentes e imprimir el numero mayor
num1 <-0; num2 <-0; num3 <-0; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 21
Escribir "Dame el primer numero"; Leer num1; Escribir "Dame el segundo numero"; Leer num2; Escribir "Dame el tercer numero"; Leer num3; Si num1 > num2 Entonces si num1 > num3 Entonces Escribir "El numero1 ",num1, " es mayor que los otros dos"; FinSi FinSi
Si num2 > num1 Entonces si num2 > num3 Entonces Escribir "El numero2 ",num2, " es mayor que los otros dos"; FinSi FinSi
Si num3 > num2 Entonces si num3 > num1 Entonces Escribir "El numero3 ",num3, " es mayor que los otros dos"; FinSi FinSi
FinProceso Proceso practica09b // Leer tres numeros diferentes e imprimir el numero mayor
num1 <-0; num2 <-0; num3 <-0; Escribir "Dame el primer numero"; Leer num1; Escribir "Dame el segundo numero"; Leer num2; Escribir "Dame el tercer numero"; Leer num3; Si num1 > num2 Y num1 > num3 Entonces Escribir "El numero1 ",num1, " es mayor que los otros dos"; Sino si num2 > num1 Y num2 > num3 Entonces Escribir "El numero2 ",num2, " es mayor que los otros dos"; Sino Escribir "El numero3 ",num3, " es mayor que los otros dos"; finsi FinSi FinProceso ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 22
PROBLEMAS BASICOS
Objetivo Los siguientes ejercicios estan pensados para el inicio de conceptos de programacion. Aqu estan los temas basicos de los primeros conceptos, y la aplicacin de diagramas de flujo y pseudocodigo.
Estos ejercicios deberan ser simples, pequeos y como limite contener expresiones simples de condicion SiEntoncesSino. De preferencia estos ejercicios debera realizarlos el alumno por si mismo en su cuaderno y revisarlos despues. Las soluciones contenidas en este cuaderno es para que el maestro muestre la solucion final y compare con la solucion de los alumnos.
El alumno debera generar el algoritmo en diagrama de flujo y pseudocodigo. Queda a criterio del profesor el uso de DFD, Psint o SLE Temas por ver Diagramas de flujo, pseudocodigo, asignacion de variables, tipos de datos sencillos, operaciones sencillas, condicionales (sientonces) Herramientas Cuaderno y lapiz Plantilla de diagrama de flujo DFD PSint
Objetivo Aprender sobre el ciclo MIENTRAS. Mezclar con Condicional SI PROBLEMA 2 (Mientras..Hacer, Si..Entonces) Dado N notas de un estudiante calcular:
a) Cuantas notas tiene desaprobados. b) Cuantos aprobados. c) El promedio de notas. d) El promedio de notas aprobadas y desaprobadas. Inicio Leer: N X<--1 Cd<--0 NA <-0 acum_desap <-0 acum_ap <- 0 acum <- 0 Mientras x<=N hacer Leer: not Si: not < 10.5 entonces CD<--cd+1 acum_desap <- acum_desap + not Sino NA <- NA + 1 ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 23
acum_ap <- acum_ap + not fin _ si acum <- acum + not x<--x+1 Fin _ mientras prom_ap <- acum_ap /NA prom_desap <- acum_desap/CD prom <- acum / N Imprimir: prom, prom_ap, prom_desap, NA, CD Fin
Objetivo Sencillo ejemplo para practicar asignacion de variables, realizar operacin e imprimir. Si es para dos personas, mostrar como el algoritmo se repite (sin usar ciclos) PROBLEMA 3 (Asignacion) Dada las horas trabajadas de una persona la tarifa de pago. Calcular su salario e imprimirla. Inicio leer: h, t S<--h * t Imprimir: s fin
(Para dos personas)
inicio leer: h, t S<--h * t Imprimir s Leer: h, t S<--h * t Imprimir: s Fin
Objetivo Practicar el uso de sentencias condicionales SIENTONCES PROBLEMA 4 (SiEntonces) A un trabajador le pagan segun sus horas y una tarifa de pago por horas. si la cantidad de horas trabajadas es mayor a 40 horas. La tarifa se incrementa en un 50% para las horas extras. calcular el salario del trabajador dadas las horas trabajadas y la tarifa. variables: horas_trabajadas,tarifa,horas_extras,salario,tarifa_e inicio leer: horas_trabajadas,tarifa si: horas_trabajadas <= 40 entonces salario <-- horas_trabajadas * tarifa si_no ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Objetivo Trabajar con las sentencias SIENTONCES anidadas PROBLEMA 5 (Si..Entonces anidadas) A un trabajador le descuentan de su sueldo el 10% si su sueldo es menor o igual a 1000. por encima de 1000 y hasta 2000 el 5% del adicional, y por encima de 2000 el 3% del adicional. calcular el descuento y sueldo neto que recibe el trabajador dado su sueldo. variables: sueldo,sueldo_neto,descuento inicio leer: sueldo si: sueldo <= 1000 entonces descuento <-- sueldo * 0.1 si_no si: sueldo <= 2000 entonces descuento <-- (sueldo - 1000) * 0.05 + 1000 * 0.1 si_no descuento <-- (sueldo - 2000) * 0.03 + 1000 * 0.1 fin_si imprimir: descuento. Fin
Objetivo Pratica con condicionales SIENTONCES y operadores logicos (dos condiciones en 1) PROBLEMA 6 (Si..Entonces, operadores logicos) Disear un formulario que permita ingresar dos notas malas y determine su promedio, debe mostrar un comentario si este est aprobado o desaprobado. Inicio
Leer (N1) Leer (N2)
P=(N1 + N2) / 2 Escribir ("el promedio es :", P)
Si P>= 11 y P<=20 entonces Escribir ("Aprobado") ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 25
Sino
Escribir ("Desaprobado")
Fin_si
Fin
Objetivo Practica de condicionales SIENTONCES. Uso de operaciones de divicion y como calcular el residuo PROBLEMA 7 (SiEntonces) Dado un tiempo en segundos, calcular los segundos restantes que le correspondan para convertirse exactamente en minutos. variables: tiempo_seg,minutos,segundos inicio leer: tiempo_seg si minutos <-- tiempo_seg div 60 entonces segundos <-- tiempo_seg mod 60 fin_si imprimir: minutos,segundos. Fin
Objetivo Practica con sentencias condicionales SIENTONCES PROBLEMA 8 (Si..Entonces) Dada la duracion en minutos de una llamada calcular el costo, considerando? -Hasta tres minutos el costo es 0.50 -Por encima de tres minutos es 0.50 ms 0.1*cada minuto adicional a los tres primeros variables M,C
inicio leer M si M<=3 C_0.50 sino C_0.50+0.1*(M-3) fin si imprimir el "C" fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 26
Objetivo Problema simple de asignacion, lectura e impresin. PROBLEMA 9 (Asignacion) Disear un algoritmo que me permita ingresar un valor inicial y luego un valor final, para luego calcular el valor central de los nmeros. Inicio A1, A2: entero C: real Leer "Valor inicial",A1 Leer "Valor final",A2 Hacer C (A1+A2)/2 Mostrar "Valor central",C Fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 27
EJERCICIOS DE COMPRENSION
Objetivo Condicionales Multiples: SEGNHACER Ejercicio 07 Calculo Areas Se necesita un programa que tenga 3 opciones, si se selecciona la primera se calcula el perimetro de un cuadrado, si la pcion es la dos se calcula el perimetro de un triangulo equilatero, y cuando se elija la tres se calcula el perimetro de un circulo, ademas de que mandara un mensaje de "error" en caso de presionar cualquier otro numero
Proceso ejercicio07 // Se necesita un programa que tenga 3 opciones, si se selecciona la // primera se calcula el perimetro de un cuadrado, si la pcion es la // dos se calcula el perimetro de un triangulo equilatero, y cuando se // elija la tres se calcula el perimetro de un circulo, ademas de que // mandara un mensaje de "error" en caso de presionar cualquier // otro numero
opc <- 0; perimetro <- 0; lado <- 0;
Escribir "Menu de Perimetros" Escribir "==================" Escribir "1. Cuadrado " Escribir "2. Triangulo " Escribir "3. Circulo " Escribir "==================" Escribir "Cual eliges?" Leer opc; Segun opc Hacer 1: Escribir "Dame el valor de un lado del cuadrado:"; Leer lado; perimetro <- lado * 4; 2: Escribir "Dame el valor de un lado del triangulo:"; Leer lado; perimetro <- lado * 3; 3: Escribir "Dame el valor del diametro: "; Leer lado; perimetro <- lado * 3.1416; De Otro Modo: ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 28
Escribir "** ERROR ** No seleccionaste una opcion valida"; FinSegun Escribir "El resultado del perimetro calculado es: ", perimetro; FinProceso
Objetivo Condicionales Multiples: SEGNHACER Ejercicio 08 Premios Compra Un supermercado realiza una tombola solo con aquellos clientes que realizan una compra superior a $ 500, en la cual tienen que sacar de una canasta una bolita la cual tiene un numero grabado, los premios se dan bajo la siguiente tabla: # BOLITA PREMIO 1 1 shampoo CAPRICE 2 1 paquete(3) de jabones ROSA VENUS 3 1 pasta de dientes COLGATE 4 1 bolsa de detergente MAS COLOR 5 1 caja de cereal ZUCARITAS
Proceso ejercicio08_PremiosCompra // Un supermercado realiza una tombola solo con aquellos clientes que realizan una compra // superior a $ 500, en la cual tienen que sacar de una canasta una bolita la cual tiene // un numero grabado, los premios se dan bajo la siguiente tabla: // # BOLITA PREMIO // 1 1 shampoo CAPRICE // 2 1 paquete(3) de jabones ROSA VENUS // 3 1 pasta de dientes COLGATE // 4 1 bolsa de detergente MAS COLOR // 5 1 caja de cereal ZUCARITAS
compra <- 0; bolita <- 0; Escribir "Cual fue el total de la compra del cliente: "; Leer compra; si compra > 500 Entonces Escribir "Cual fue el numero de la bolita que saco de la canasta?"; Leer bolita; segun bolita Hacer 1: Escribir "Te ganaste 1 shampoo CAPRICE"; 2: Escribir "Te ganaste 1 paquete de 3 jabones ROSA VENUS"; 3: Escribir "Te ganaste 1 pasta de dientes COLGATE"; 4: Escribir "Te ganaste 1 bolsa de detergente MAS COLOR"; 5: Escribir "Te ganaste 1 caja de cereal ZUCARITAS"; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 29
FinSegun Sino Escribir "Lo sentimos, no puedes participar en el sorteo"; FinSi
FinProceso
Objetivo Condicionales Multiples: SEGNHACER PRACTICA 21 Premios Compra x Genero Un supermercado realiza una tombola con todos los clientes, si son hombres tienen que sacar de una canasta una bolita la cual tiene un numero grabado, y si son mujeres lo mismo pero de otra canasta. Los premios se dan bajo la siguiente tabla: PARA HOMBRES ======================================================================== # BOLITA PREMIO 1 Desodorante 2 SixPack de cerveza 3 Boxer 4 Rasuradora 5 Sudadera PARA MUJERES ======================================================================== # BOLITA PREMIO 1 Locion 2 Bikini 3 Crema para la cara 4 Plancha 5 Barniz de uas
Proceso practica21_PremiosCompraXGenero // Un supermercado realiza una tombola con todos los clientes, si son hombres tienen que // sacar de una canasta una bolita la cual tiene un numero grabado, y si son mujeres lo // mismo pero de otra canasta. Los premios se dan bajo la siguiente tabla: // PARA HOMBRES // ======================================================================== // # BOLITA PREMIO // 1 Desodorante // 2 SixPack de cerveza // 3 Boxer // 4 Rasuradora // 5 Sudadera // PARA MUJERES // ======================================================================== // # BOLITA PREMIO // 1 Locion // 2 Bikini // 3 Crema para la cara ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 30
// 4 Plancha // 5 Barniz de uas
genero <- " " bolita <- 0; Escribir "Cual es el genero del cliente? (H=Hombre, M=Mujer)"; Leer genero; si genero = "H" Entonces Escribir "Cual fue el numero de la bolita que saco de la canasta?"; Leer bolita; segun bolita Hacer 1: Escribir "Te ganaste 1 Desodorante"; 2: Escribir "Te ganaste 1 SixPack de cerveza"; 3: Escribir "Te ganaste 1 Boxer"; 4: Escribir "Te ganaste 1 Rasuradora"; 5: Escribir "Te ganaste 1 Sudadera"; FinSegun Sino Escribir "Cual fue el numero de la bolita que saco de la canasta?"; Leer bolita; segun bolita Hacer 1: Escribir "Te ganaste 1 Locion"; 2: Escribir "Te ganaste 1 Bikini"; 3: Escribir "Te ganaste 1 Crema para la cara"; 4: Escribir "Te ganaste 1 Plancha"; 5: Escribir "Te ganaste 1 Barniz de uas"; FinSegun
FinSi
FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 31
Objetivo Condicionales Multiples: SEGNHACER PRACTICA 22 Color Auto Una empresa automotriz necesita un programa para seleccionar el tipo de carro (auto, camioneta o vagoneta) lo cual debe aparecer en un menu, y el color (negro, blanco o rojo) en otro menu. Al final se necesita que despliegue la seleccion realizada.
Proceso practica22_ColorAuto // Una empresa automotriz necesita un programa para seleccionar el tipo de carro // (auto, camioneta o vagoneta) lo cual debe aparecer en un menu, y el color // (negro, blanco o rojo) en otro menu. Al final se necesita que despliegue la // seleccion realizada.
auto <- 0; color <- 0;
Escribir "Menu Principal" Escribir "==================" Escribir "Selecciona el tipo de automovil que deseas:" Escribir "1. Auto" Escribir "2. Camioneta" Escribir "3. Vagoneta" Escribir "==================" Escribir "Tu opcion:" Leer auto; Segun auto Hacer 1: Escribir "SubMenu Color" Escribir "--------------------" Escribir "1. Negro" Escribir "2. Blanco" Escribir "3. Rojo" Escribir "En que color lo deseas:" Leer color; Si color = 1 Entonces Escribir "Seleccionaste un AUTO en color NEGRO"; FinSi Si color = 2 Entonces Escribir "Seleccionaste un AUTO en color BLANCO"; FinSi Si color = 3 Entonces Escribir "Seleccionaste un AUTO en color ROJO"; FinSi 2: Escribir "SubMenu Color" Escribir "--------------------" Escribir "1. Negro" Escribir "2. Blanco" Escribir "3. Rojo" ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 32
Escribir "En que color lo deseas:" Leer color; Si color = 1 Entonces Escribir "Seleccionaste una CAMIONETA en color NEGRO"; FinSi Si color = 2 Entonces Escribir "Seleccionaste una CAMIONETA en color BLANCO"; FinSi Si color = 3 Entonces Escribir "Seleccionaste una CAMIONETA en color ROJO"; FinSi 3: Escribir "SubMenu Color" Escribir "--------------------" Escribir "1. Negro" Escribir "2. Blanco" Escribir "3. Rojo" Escribir "En que color lo deseas:" Leer color; Si color = 1 Entonces Escribir "Seleccionaste una VAGONETA en color NEGRO"; FinSi Si color = 2 Entonces Escribir "Seleccionaste una VAGONETA en color BLANCO"; FinSi Si color = 3 Entonces Escribir "Seleccionaste una VAGONETA en color ROJO"; FinSi De Otro Modo: Escribir "No hay seleccion de automovil" FinSegun
FinProceso
Objetivo Ciclo MIENTRAS HACER Ejercicio 09 Calificaciones Un maestro necesita un sistema para capturar las calificaciones de 3 parciales de sus alumnos, despues de ello necesita que se despliegue el promedio, y cuando ya no quiera capturar mas alumnos, necesita que se despliegue el promedio general de todos los alumnos capturados.
Proceso ejercicio09_Calificaciones // Un maestro necesita un sistema para capturar las calificaciones de 3 parciales // de sus alumnos, despues de ello necesita que se despliegue el promedio, y cuando // ya no quiera capturar mas alumnos, necesita que se despliegue el promedio general // de todos los alumnos capturados.
Escribir "Deseas capturar las calificaciones de un alumno? (s/n)"; Leer respuesta; mientras respuesta = "s" hacer Escribir "Calificacion Primer Parcial: "; Leer parcial1; Escribir "Calificacion Segundo Parcial: "; Leer parcial2; Escribir "Calificacion Tercer Parcial: "; Leer parcial3;
promedio_alumno <- ( parcial1 + parcial2 + parcial3 ) /3; Escribir "El promedio de este alumno es: ", promedio_alumno; acumulado_promedio <- acumulado_promedio + promedio_alumno total_alumnos <- total_alumnos + 1; Escribir "Deseas capturar otro alumno? (s/n)"; Leer respuesta; FinMientras promedio_general <- acumulado_promedio / total_alumnos; Escribir "El promedio general de ", total_alumnos, " alumnos fue: ", promedio_general FinProceso
Objetivo Ciclo MIENTRAS HACER Ejercicio 10 Supermercado Descuento Un supermercado dara un descuento del 10% a TODOS los clientes que el total de su compra supere los $1000, ademas se necesita saber a cuanto ascendieron los ingresos del dia
Proceso ejercicio10_SupermercadoDescuento // Un supermercado dara un descuento del 10% a TODOS los clientes que el total de // su compra supere los $1000, ademas se necesita saber a cuanto ascendieron los // ingresos del dia ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Escribir "Hay clientes en la tienda? (s/n)"; Leer respuesta;
Mientras respuesta = "s" hacer Escribir "Cuanto compro el cliente?"; Leer subtotal; Si subtotal > 1000 Entonces descuento <- subtotal * 0.10; total <- subtotal - descuento; Sino total <- subtotal FinSi
ingresos <- ingresos + total Escribir "El total a pagar del cliente es: ", total Escribir "Hay mas clientes en la tienda? (s/n)"; Leer respuesta; FinMientras Escribir "============================="; Escribir "El total de ingresos fueron: ", ingresos FinProceso
Objetivo Ciclo MIENTRAS HACER PRACTICA 25 Contrasea Se necesita un programa que pida una contrasena. Si la contrasena es igual a "abrete sesamo", se terminara el programa, de otra manera se seguira solicitando la contrasena
Proceso practuca25_contrasena // Se necesita un programa que pida una contrasena. Si la contrasena es igual a // "abrete sesamo", se terminara el programa, de otra manera se seguira solicitando // la contrasena // Aqui estamos usando el ciclo MIENTRAS... Hacer
contrasena <- "" Escribir "Cual es la contrasena?"; Leer contrasena Mientras contrasena <> "abrete sesamo" Hacer Escribir "CONTRASENA INCORRECTA" Escribir "Cual es la contrasena" ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 35
Leer contrasena FinMientras
Escribir "**** ACCESO CONCEDIDO *****" FinProceso Proceso practica25_contrasena // Se necesita un programa que pida una contrasena. Si la contrasena es igual a // "abrete sesamo", se terminara el programa, de otra manera se seguira solicitando // la contrasena // Aqui estamos usando el ciclo REPETIR...HASTA
password <- ""; Repetir Escribir "Cual es la contrasena?"; Leer password; Hasta que password = "abrete sesamo" Escribir "Es correcto, puedes continuar...";
FinProceso
Objetivo Ciclo MIENTRAS HACER PRACTICA 26 Perimetros Areas Se necesita que un programa que calcula perimetros y areas, para lo cual aparece un menu con tres opciones (1. Perimetros, 2. Areas, 3. Salir) dentro de las primeras 2 opciones aparece otro menu con 4 opciones (1.Triangulo, 2. Cuadrado, 3.Circulo 4. Regresar). Dentro del cual solo se puede volver al menu principal presionando la opcion 4.
Proceso practica26_PerimetrosAreasB // Se necesita que un programa que calcula perimetros y areas, para lo cual aparece // un menu con tres opciones (1. Perimetros, 2. Areas, 3. Salir) dentro de las primeras // 2 opciones aparece otro menu con 4 opciones (1.Triangulo, 2. Cuadrado, 3.Circulo // 4. Regresar). Dentro del cual solo se puede volver al menu principal // presionando la opcion 4.
// Este ejercicio contiene el ciclo MIENTRAS...HACER, Condicion multiple SEGUN... HACER y // Condicion simple SI...ENTONCES
menuPrincipal <- 0; submenu <- 0; lado <- 0 Mientras menuPrincipal <> 3 Hacer Escribir "=== MENU PRINCIPAL ==="; Escribir " 1. Perimetros "; Escribir " 2. Areas "; Escribir " 3. Salir "; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 36
Leer menuPrincipal; // Este programa tiene un error. Descubrir cual es en tiempo de ejecucion.
Mientras submenu <> 4 Hacer Escribir " == SubMenu =="; Escribir " 1. Triangulo "; Escribir " 2. Cuadrado "; Escribir " 3. Circulo "; Escribir " 4. Regresar "; Leer submenu Segun submenu Hacer 1: Escribir "Cual es el lado del Triangulo?" Leer lado; Si menuPrincipal = 1 Entonces //Calcular perimetro resultado <- lado * 3 Escribir "El perimetro del triangulo es: ", resultado Sino resultado <- lado * lado Escribir "El area del triangulo es: ", resultado FinSi
2: Escribir "Calculo del cuadrado" // Aqui van los calculos 3: Escribir "Calculo del circulo" De Otro Modo: // Repetimos el menu principal Escribir "=== MENU PRINCIPAL ==="; Escribir " 1. Perimetros "; Escribir " 2. Areas "; Escribir " 3. Salir "; Leer menuPrincipal; FinSegun FinMientras FinMientras // El error es que en la primera pasada no se puede seleccionar la opcion 3 de salida porque no lo hace, ya que hace // el ciclo interior tambien
FinProceso Proceso practica26_PerimetrosAreas // Se necesita que un programa que calcula perimetros y areas, para lo cual aparece // un menu con tres opciones (1. Perimetros, 2. Areas, 3. Salir) dentro de las primeras // 2 opciones aparece otro menu con 4 opciones (1.Triangulo, 2. Cuadrado, 3.Circulo ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 37
// 4. Regresar). Dentro del cual solo se puede volver al menu principal // presionando la opcion 4.
// Este ejercicio contiene el ciclo MIENTRAS...HACER, Condicion multiple SEGUN... HACER y // Condicion simple SI...ENTONCES
menuPrincipal <- 0; submenu <- 0; lado <- 0
Escribir "=== MENU PRINCIPAL ==="; Escribir " 1. Perimetros "; Escribir " 2. Areas "; Escribir " 3. Salir "; Leer menuPrincipal; Mientras menuPrincipal <> 3 Hacer Escribir " == SubMenu =="; Escribir " 1. Triangulo "; Escribir " 2. Cuadrado "; Escribir " 3. Circulo "; Escribir " 4. Regresar "; Leer submenu Segun submenu Hacer 1: Escribir "Cual es el lado del Triangulo?" Leer lado; Si menuPrincipal = 1 Entonces //Calcular perimetro resultado <- lado * 3 Escribir "El perimetro del triangulo es: ", resultado Sino resultado <- lado * lado Escribir "El area del triangulo es: ", resultado FinSi
2: Escribir "Calculo del cuadrado" // Aqui van los calculos 3: Escribir "Calculo del circulo" De Otro Modo: // Repetimos el menu principal Escribir "=== MENU PRINCIPAL ==="; Escribir " 1. Perimetros "; Escribir " 2. Areas "; Escribir " 3. Salir "; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 38
Leer menuPrincipal; FinSegun
FinMientras
FinProceso
Objetivo Ciclo REPETIR HASTA QUE Ejercicio 11 Cuadrado Numeros Se necesita un programa que muestre el cuadrado de los numeros que introduce el usuario
Proceso ejercicio11_CuadradoNumeros // Se necesita un programa que muestre el cuadrado de los numeros que introduce el // usuario
respuesta <- "s" numero <- 0; numero_elevado <- 0;
Repetir Escribir "Numero que quieres elevar al cuadrado:"; Leer numero; numero_elevado <- numero * numero; Escribir numero, " al cuadrado es: ", numero_elevado; Escribir "Dseas calcular otro numero? (s/n)"; Leer respuesta; Hasta Que respuesta = "n"
FinProceso
Objetivo Ciclo REPETIR HASTA QUE Ejercicio 12 Salarios Mensuales Se necesita un programa que calcule el salario mensual de N trabajadores, el cual se obtiene de la siguiente forma: Si trabaja 40 horas o menos, se le paga $16 por hora Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra.
Proceso ejercicio12_SalariosMensuales // Se necesita un programa que calcule el salario mensual de N trabajadores, el cual // se obtiene de la siguiente forma: // Si trabaja 40 horas o menos, se le paga $16 por hora // Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas // y $20 por cada hora extra. ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 39
salario <- 0; horas <- 0; respuesta <- "n"
Repetir Escribir "Horas trabajadas del empleado: " Leer horas;
Si horas > 40 Entonces salario <- 40 * 16 + (( horas - 40 ) * 20); Sino salario <- horas * 16; FinSi Escribir "Salario del trabajador: ", salario; Escribir "Deseas calcular otro salario? (s/n)" Leer respuesta hasta que respuesta = "n" FinProceso
Objetivo Ciclo REPETIR HASTA QUE PRACTICA 27 Suma Numeros Se necesita un programa que pregunte dos numeros, los cuales son un rango, de los cuales queremos que imprima el total de la suma de todos los numeros que se encuentran dentro de ese rango
Proceso practica25_SumaNumeros // Se necesita un programa que pregunte dos numeros, los cuales son un rango, // de los cuales queremos que imprima el total de la suma de todos los numeros // que se encuentran dentro de ese rango
num1 <- 0; num2 <- 0; suma <- 0; Escribir "Cual es el primer numero?"; Leer num1; Escribir "Cual es el segundo numero?"; Leer num2; Mientras num1 <= num2 Hacer suma <- suma + num1 num1 <- num1 + 1 FinMientras Escribir "==========================="; Escribir "La suma del rango de numeros es: ",suma
FinProceso ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 40
Objetivo Ciclo REPETIR HASTA QUE PRACTICA 28 Calculo Salario Semanal Se necesita un programa que calcule el salario semanal de n trabajadores, el cual depende de su puesto (licenciado, tecnico, obrero), del turno (primero, segundo y tercero) y las horas trabajadas. Donde los del primer turno ganar 200 adicionales a su salario, los del segundo 100 y los del tercero 300. El obrero gana 30 por hora el tecnico 50 y el licenciado 100
Proceso practica28_CalculoSalarioSemanal // Se necesita un programa que calcule el salario semanal de n trabajadores, el cual // depende de su puesto (licenciado, tecnico, obrero), del turno (primero, segundo // y tercero) y las horas trabajadas. Donde los del primer turno ganar 200 adicionales // a su salario, los del segundo 100 y los del tercero 300. El obrero gana 30 por hora // el tecnico 50 y el licenciado 100
Escribir "Deseas calcular la nomina de la semana? (s/n)"; Leer respuesta; Mientras respuesta = "s" Hacer Escribir "Cuantas fueron las horas trabajadas del empleado?"; Leer horas_trab; Escribir "Cual es su puesto de trabajo?"; Escribir "1. Obrero"; Escribir "2. Tecnico"; Escribir "3. Licenciado"; Leer puesto; Escribir "En que turno labora? (1=Matutino, 2=Vespertino, 3=Nocturno"; Leer turno; Segun turno Hacer 1: Si puesto = 1 Entonces salario <- (horas_trab * 30 )+ 200 FinSi Si puesto = 2 Entonces salario <- (horas_trab * 50 ) + 200 ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 41
FinSi Si puesto = 3 Entonces salario <- (horas_trab * 100) + 200 FinSi 2: Si puesto = 1 Entonces salario <- (horas_trab * 30 )+ 100 FinSi Si puesto = 2 Entonces salario <- (horas_trab * 50 ) + 100 FinSi Si puesto = 3 Entonces salario <- (horas_trab * 100) + 100 FinSi 3: Si puesto = 1 Entonces salario <- (horas_trab * 30 )+ 300 FinSi Si puesto = 2 Entonces salario <- (horas_trab * 50 ) + 300 FinSi Si puesto = 3 Entonces salario <- (horas_trab * 100) + 300 FinSi FinSegun Escribir "Su salario semanal es de: ", salario Escribir "===================================="; Escribir "Deseas calcular a otro empleado? (s/n)"; Leer respuesta; FinMientras FinProceso
Objetivo Ciclo HACERPARA Ejercicio 13 Tabla Multiplicar Se necesita un programa que despliega una tabla de multiplicar de un numero dado por el usuario
Proceso ejercicio13_TablaMultiplicar // Se necesita un programa que despliega una tabla de multiplicar de un numero dado // por el usuario
tabla <- 0; contador <- 0; resultado <- 0;
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 42
Escribir "Que tabla deseas visualizar:"; Leer tabla; Para contador<-1 Hasta 10 Hacer resultado <- tabla * contador; Escribir tabla, " * ", contador, " = ", resultado;
FinPara
FinProceso
Objetivo Ciclo HACERPARA Ejercicio 14 Tablas de Multiplicar Se necesita un programa que despliegue las tablas de multiplicar del uno al tres y cada tabla del 1 al 5
Proceso ejercicio14_TablasDeMultiplicar // Se necesita un programa que despliegue las tablas de multiplicar del uno al tres // y cada tabla del 1 al 5
tabla <-0 x <- 0 resultado <-0 Para tabla<-1 Hasta 3 Hacer Para x <-1 Hasta 5 Hacer resultado <- tabla * x; Escribir tabla, " * ", x, " = ", resultado; FinPara Escribir "=======================" FinPara
FinProceso
Objetivo Ciclo HACERPARA PRACTICA 29 Calif Alumno Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Estructura de Datos
Proceso practica29_CalifAlumno // Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de // Estructura de Datos
calificacion <-0; suma_calif <-0; promedio <-0; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 43
i<-0; Escribir "A continuacion dame las 7 calificaciones del alumno"; Para i<-1 Hasta 7 Hacer Escribir "Calificacion",i; Leer calificacion suma_calif <- suma_calif + calificacion FinPara promedio <- suma_calif / 7 Escribir "El promedio de calificacion del alumno es: ", promedio
FinProceso
Objetivo Ciclo HACERPARA PRACTICA 30 Promedios Alumnos Calcular el promedio de 10 alumnos los cuales tienen 7 calificaciones cada uno en la materia de Estructura de Datos.
Proceso practica30_PromediosAlumnos // Calcular el promedio de 10 alumnos los cuales tienen 7 calificaciones cada uno en // la materia de Estructura de Datos.
Escribir "A continuacion dame las 7 calificaciones de 10 alumnos"; Para alumnos <- 1 Hasta 10 Hacer Para contador<-1 Hasta 7 Hacer Escribir "Calificacion",contador," del alumno",alumnos; Leer calificacion suma_calif <- suma_calif + calificacion FinPara promedio_alumno <- suma_calif / 7 Escribir "El promedio de calificacion del alumno es: ", promedio_alumno suma_global <- suma_global + promedio_alumno FinPara promedio_general <- suma_global / 10 Escribir "El promedio general del grupo fue de: ", promedio_general FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 44
Objetivo Ciclo HACERPARA PRACTICA 31 Simulacion Reloj Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un dia desde las 0:00:00 horas hasta las 23:59:59
Proceso practica31_SimulacionReloj // Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos // y segundos de un dia desde las 0:00:00 horas hasta las 23:59:59
segundos <-0; minutos <-0; horas <-0; Para horas<-0 hasta 24 Hacer Para minutos <-0 hasta 60 Hacer Para segundos <-0 hasta 60 Hacer Borrar Pantalla Escribir "Reloj: ",horas,":",minutos,":",segundos; FinPara FinPara finpara
FinProceso
Objetivo Arrays Ejercicio 15 Promedios Se necesita un programa que utilice un arreglo de seis posiciones para almacenar los 5 parciales de un alumno y sacar su promedio, el cual se guardara en la ultima localidad. Mostras todas las calificaciones y el promedio
Proceso ejercicio15_Promedio // Se necesita un programa que utilice un arreglo de seis posiciones para almacenar // los 5 parciales de un alumno y sacar su promedio, el cual se guardara en la ultima // localidad. Mostras todas las calificaciones y el promedio
Escribir "Captura las calificaciones." Para subindice<-1 hasta 6 hacer ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 45
si subindice <> 6 entonces Escribir "Dame Calificacion Parcial ", subindice, ":" Leer calif[subindice]; acum_calif <- acum_calif + calif[subindice] Sino calif[subindice] <- acum_calif /5 FinSi FinPara
Escribir "=======================================" Escribir "Ahora imprime las calificaciones" Para subindice<-1 hasta 6 hacer si subindice = 6 entonces Escribir "Promedio: ", calif[subindice] Sino Escribir "Parcial ", subindice, ":", calif[subindice] FinSi FinPara
FinProceso
Objetivo Arrays Ejercicio 16 Promedio Grupo Se necesita un programa que utiliza 3 arreglos, en los dos primeros se colocan los promedios de dos grupos de 5 alumnos cada uno y el tercer arreglo almacenara el promedio mas alto de cada posicion. Imprimir los promedios mas altos.
Proceso ejercicio16_PromedioGrupo // Se necesita un programa que utiliza 3 arreglos, en los dos primeros se colocan // los promedios de dos grupos de 5 alumnos cada uno y el tercer arreglo almacenara // el promedio mas alto de cada posicion. Imprimir los promedios mas altos.
// Inicializar los arreglos Dimension grupo1[5], grupo2[5], prom[5];
// Inicializar variables indice <- 0;
Para indice<-1 hasta 5 hacer Escribir "Dame promedio ", indice, " del primer grupo: "; Leer grupo1[indice]; Escribir "Dame promedio ", indice, " del segundo grupo: "; Leer grupo2[indice]; si grupo1[indice] > grupo2[indice] entonces prom[indice] <- grupo1[indice]; Sino ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 46
prom[indice] <- grupo2[indice]; FinSi FinPara
Para indice<-1 hasta 5 Hacer Escribir "Promedio mayor ",indice, ":", prom[indice]; FinPara
FinProceso
Objetivo Arrays Ejercicio 17 Promedio Grupo con Bidimensionales Se necesita de un programa que utiliza un arreglo de 5 renglones y cuatro columnas para almacenar los 3 parciales y su promedio de 5 alumnos
Proceso ejercicio17_PromediosConBidimensionales // Se necesita de un programa que utiliza un arreglo de 5 renglones y cuatro columnas // para almacenar los 3 parciales y su promedio de 5 alumnos
//Arreglos Dimension calificaciones[5,4];
num_alumn<-0; parcial <-0; acum_cal <-0;
Para num_alumn<-1 hasta 5 Hacer Borrar Pantalla acum_cal <- 0 Para parcial<-1 hasta 3 Hacer Escribir "Calificacion del alumno ",num_alumn, " en parcial:", parcial Leer calificaciones[num_alumn,parcial] acum_cal <- acum_cal + calificaciones[num_alumn,parcial] FinPara calificaciones[num_alumn,parcial] <- acum_cal /3 FinPara
// Falta hacer un despliegue de todo el arreglo. FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 47
Objetivo Arrays Ejercicio 18 Matriz Alumnos Se necesita un programa que utiliza una matriz de 10 renglones y 3 columnas. En las dos primeras columnas se colocan los promedios de los 10 alumnos de dos grupos (A y B) y en la tercera columna se almacenara el promedio mas alto de cada posicion.
Proceso ejercicio18_MatrizAlumnos // Se necesita un programa que utiliza una matriz de 10 renglones y 3 columnas. // En las dos primeras columnas se colocan los promedios de los 10 alumnos de // dos grupos (A y B) y en la tercera columna se almacenara el promedio mas alto // de cada posicion.
Dimension grupos[10,3]; alumno <- 0;
Para alumno<-1 hasta 10 Hacer Escribir "Promedio del alumno ",alumno, " del primer grupo:"; Leer grupos[alumno,1]; Escribir "Promedio del alumno ",alumno, " del segundo grupo: "; Leer grupos[alumno,2];
Si grupos[alumno,1] > grupos[alumno,2] Entonces grupos[alumno,3] <- grupos[alumno,1]; Sino grupos[alumno,3] <- grupos[alumno,2]; FinSi FinPara
FinProceso
Objetivo Arrays PRACTICA 32 Supermercado Un supermercado necesita un programa en donde almacenar sus ingresos, los cuales son la sumatoria de todas las ventas realizadas a los clientes (100 clientes)
Proceso practica32_Supermercado // Un supermercado necesita un programa en donde almacenar sus ingresos, los cuales son la sumatoria de todas las ventas // realizadas a los clientes (100 clientes)
cant_ventas<-0; Escribir "Cuantas ventas de clientes quieres capturar?"; Leer cant_ventas; ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 48
Dimension ingresos[cant_ventas]; num_clientes <- 0; venta<-0; Para num_clientes<-1 hasta cant_ventas Hacer Escribir "Cuanto compro el cliente ", num_clientes; Leer venta; ingresos[num_clientes] <- venta; FinPara
FinProceso
Objetivo Arrays PRACTICA 33 Pares Impares Matriz Necesitamos un programa que capture 20 numeros y despues de capturarlos que haga revision de estos para indicarnos cuantos son pares y cuantos son impares
Proceso practica33_ParesImparesMatriz // Necesitamos un programa que capture 20 numeros y despues de capturarlos que haga // revision de estos para indicarnos cuantos son pares y cuantos son impares
Dimension numeros[20]
contador<-0 pausa <- "" Escribir "Introduce 20 numeros y el sistema nos indicara cuales de ellos son pares e impares" Para contador<-1 hasta 20 Hacer Escribir "Cual sera el numero",contador,"?"; Leer numeros[contador]; FinPara Escribir "Ahora analizara los numeros..." Para contador<-1 hasta 20 Hacer Si numeros[contador]/2 = 0 Entonces Escribir "El numero ",numeros[contador], " es numero PAR"; Sino Escribir "El numero ",numeros[contador], " es numero IMPAR"; FinSi FinPara Escribir " Una tecla para continuar..." Leer pausa FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 49
Objetivo Arrays PRACTICA 34 Cuadrado Cubo Se necesita un programa que capture 20 numeros en tres diferentes arreglos, en el primero se almacena el numero tal cual se tecleo, en el segundo se almacena el cuadrado de dicho numero y en el tercero su cubo.
Proceso practica34_CuadradoCubo // Se necesita un programa que capture 20 numeros en tres diferentes arreglos, // en el primero se almacena el numero tal cual se tecleo, en el segundo se almacena // el cuadrado de dicho numero y en el tercero su cubo.
Dimension numeros[20], cuadrados[20], cubos[20]
contador <-0; Escribir "Capture 20 numeros para calcular sus cuadrados y cubos" Para contador<-1 hasta 20 Hacer Escribir "Cual es el valor del numero ", contador Leer numeros[contador] FinPara Escribir "Realizando las operaciones... " Escribir "Numero.......CUADRADO.......CUBO"; Para contador<-1 hasta 20 Hacer cuadrados[contador] <- numeros[contador] * numeros[contador] cubos[contador] <- numeros[contador] * numeros[contador] * numeros[contador] Escribir numeros[contador],"........",cuadrados[contador],".........",cubos[contador] FinPara
FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 50
PROBLEMAS INTERMEDIOS
Objetivo Estos ejercicios pueden llevar condiciones mas complejas, condiciones mulitples (sentencias tipo CASE), o condiciones anidadas. Tambien pueden llevar ciclos MIENTRAS HASTA o DESDEHASTA.
De preferencia estos ejercicios debera realizarlos el alumno Y el profesor. O exponerlos el profesor en el pizarron para explicarlos y luego hacer segn criterio del mismo algunos otros por cuenta del alumno.
El alumno debera generar el algoritmo en diagrama de flujo y pseudocodigo. Queda a criterio del profesor el uso de DFD, Psint o SLE Temas por ver Pseudocodigo, asignacion de variables, tipos de datos sencillos, operaciones sencillas, condicionales (sientonces), condicionales multiples (En CASO DE), ciclos (MIENTRAS, HASTA, PARA) Herramientas Cuaderno y lapiz PSint
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 51
Objetivo Practicar condicionales SIENTONCES anidadas PROBLEMA 1 (Si..Entonces anidadas) "SAGA FALABELLA" se encuentra de aniversario y ha programado una serie de ofertas con la finalidad de brindar facilidades a sus clientes y al a vez de incrementar sus ventas. Estas ofertas se basan especificamente en un procentaje de descuento sobre el total de compra el cual varia de acuerdo al monto
* Por un monto mayor o igual a $500 se hara un descuento del 30% * Por un monto menor de $500 pero mayor o igual a 200 se hara un descuento del 20% * Por un monto menor de $200 pero mayor o igual a 100 se hara un descuento del 10% * Considere 100 personas INICIO | | x=x+1 | Leer Consumo | | Si consumo >=500 entonces | | | | descuento = Consumo*30/100 | | | Sino | | Si consumo >=200 entonces | | | | | | descuento = Consumo*20/100 | | | | | Sino | | | Si consumo >=100 entonces | | | | | | | | descuento = Consumo*10/100 | | | | | | | Sino | | | | Descuento=0 | | | | | | | Fin_si | | | | | Fin_si | | | Fin_si | | Totalpagar= Consumo-Descuento | Imprimir Totalpagar | | Si x<>100 entonces | | x=x+1 | | | Fin_si | FIN ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 52
Proceso problema01_DescuentosTienda // SAGA FALABELLA se encuentra de aniversario y ha programado una serie de ofertas con la finalidad // de brindar facilidades a sus clientes y a la vez incrementar sus ventas. Estas ofertas se // basan especificamente en un porcentaje de descuento sobre el total de compra, el cual varia // de acuerdo al monto: // Por un monto mayor o igual a $500 se hara un descuento del 30% // Por un monto menor de $500 pero mayor o igual a 200 se hara un descuento del 20% // Por un monto menor de $200 pero mayor o igual a 100 se hara un descuento del 10% // Considere 100 personas
x<-0; consumo <- 0; descuento <- 0;
Escribir "Cuanto fue la compra del cliente?"; Leer consumo; si consumo >= 500 Entonces descuento <- consumo * 0.30; Sino si consumo >= 200 Entonces descuento <- consumo * 0.20; Sino si consumo >= 100 Entonces descuento <- consumo * 0.10; Sino descuento <- 0; FinSi FinSi FinSi
totalPagar <- consumo - descuento; Escribir "Su total a pagar por promocion es: ", totalPagar
FinProceso
Objetivo Practicas sentencias SIEntonces anidadas PROBLEMA 2 (Si..Entonces anidadas) Una tienda se dedica a la venta de computadoras, cuenta con 10 vendedores. Cada uno de ellos tiene un sueldo mensual pero ademas de su sueldo ganan una comision por venta
* Si el monto de venta es mayor de 1000 la comsion sera del 15% * Si el monto de venta es mayor o igual a 500 y menor de 1000 la comision es del 5% * Si el monto de la venta es menor que 500 no tiene comision INICIO | | x=x+1 ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 53
| Leer "Sueldo", "Venta" | | Si venta>=1000 entonces | | Sueldo = Venta * 15/100 | | | Sino | | | | Si venta>=500 entonces | | Sueldo = Venta * 5/100 | | | | Sino | | Comision=0 | | | | Fin_si | | | Fin_si | | Sueldototal | Si x<>10 entonces | | x=x+1 | | | Fin_si | FIN Proceso problema02_VentaComputadoras // Una tienda se dedica a la venta de computadoras y cuenta con 10 vendedores. Cada uno de ellos // tiene un sueldo mensual, pero ademas de su sueldo, ganan una comision por venta. // Si el monto de venta es mayor a 1000 la comision sera del 15% // Si el monto de venta es mayor o igual a 500 y menor de 1000 la comision es del 5% // Si el monto de la venta es menor que 500 no tiene comision
venta <- 0 comision <- 0; sueldo_neto <- 0;
Escribir "Cuanto fue lo que vendio el Vendedor?"; Leer venta; si venta >= 1000 Entonces comision <- venta * 0.15; Sino si venta >= 500 Entonces comision <- venta * 0.05; Sino comision <- 0; FinSi FinSi
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 54
sueldo_neto <- venta + comision; Escribir "Su sueldo neto en el mes es de: ", sueldo_neto;
FinProceso
Objetivo Estructura con sentencias SIENTONCES anidadas PROBLEMA 3 (Si..Entonces anidadas) Katthy organiza una fiesta en la cual una computadora controla el ingreso mediante 5 claves. Si se ingresa al menos una clave incorrecta esta imprimira "TE EQUIVOCASTE DE FIESTA" y no permitira el ingreso. Si las 5 claves son correctas imprimira "BIENVENIDO A LA FIESTA" Las Claves son: 1: "TIENES" 2: "QUE SER" 3: "INVITADO" 4: "PARA" 5: "INGRESAR" INICIO
Leer Claves: C1,C2,C3,C4,C5
Si C1<>"TIENE" entonces: escribir "Te Equivocaste de Fiesta" Sino escribir "Ingrese la Clave2" Si C2<>"QUE_SER" entonces: escribir "Te Equivocaste de Fiesta" Sino escribir "Ingrese la Clave3" Si C3<>"INVITADO" entonces: escribir "Te Equivocaste de Fiesta" Sino escribir "Ingrese la Clave4" Si C4<>"PARA" entonces: escribir "Te Equivocaste de Fiesta" Sino escribir "Ingrese la Clave5" Si C5<>"INGRESAR" entonces: escribir "Te Equivocaste de Fiesta" Sino escribir "Bienvenido a la Fiesta" Fin_si Fin_si Fin_si Fin_si Fin_si FIN
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 55
Proceso problema03_FiestaKathy // Kathy organiza una fiesta en la cual una computadora controla el ingreso mediante 5 claves // Si se ingresa al menos una clave incorrecta esta mostrara: TE EQUIVOCASTE DE FIESTA y no // permitira el ingreso. Si las 5 claves son correctas mostrara: BIENVENIDO A LA FIESTA. // Las claves son: // 1. TIENES // 2. QUE SER // 3. INVITADO // 4. PARA // 5. INGRESAR
Escribir "Esta es la fiesta de Kathy, cual es la primera clave? (teclea en mayusculas)"; Leer clave1; Si clave1 <> "TIENES" Entonces Escribir "TE EQUIVOCASTE DE FIESTA"; Sino Escribir "Ahora ingresa la segunda clave: "; Leer clave2; Si clave2 <> "QUE SER" Entonces Escribir "TE EQUIVOCASTE DE FIESTA"; Sino Escribir "Ahora ingresa la tercer clave: "; Leer clave3; Si clave3 <> "INVITADO" Entonces Escribir "TE EQUIVOCASTE DE FIESTA"; Sino Escribir "Ingresa la cuarta clave: "; Leer clave4; Si clave4 <> "PARA" Entonces Escribir "TE EQUIVOCASTE DE FIESTA"; Sino Escribir "Ingresa la quinta clave: "; Leer clave5; Si clave5 <> "INGRESAR" Entonces Escribir "TE EQUIVOCASTE DE FIESTA"; Sino Escribir "CORRECTO! BIENVENIDO A LA FIESTA"; FinSi FinSi FinSi FinSi ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 56
FinSi
FinProceso
Objetivo Practicar las condiciones multiples y/o anidadas. El ejercicio puede resolverse usando las sentencias SIENTONCES de manera anidada o la sentenca EN CASO DE PROBLEMA 4 (Condiciones multiples) Disear un programa que permita controlar la venta de pasajes a los clientes segn la categora y el destino. Necesitamos identificar al cliente (ya sea un numero o el nombre), las categorias pueden ser: ECONOMICO, NORMAL, VIP. Los destindos pueden ser: Rio Bravo, Valle Hermoso, Reynosa, Monterrey. Queremos saber el precio del boleto y que lo muestre en pantalla. INICIO | Leer (cliente) | Leer (CAT) | | Si CAT= "econmico" , entonces | | Escribir ("ingrese destino") | | | | Si DES = "Tumbes", entonces | | | Escribir ("No hay pasajes") | | | | | Sino | | | Si DES ="Piura", entonces | | | | P1 = 12 | | | | Escribir (P1) | | | | | | | Sino | | | | Si DES ="Talara", entonces | | | | | P2 = 18 | | | | | Escribir (P2) | | | | | | | | | Sino | | | | | Si DES = "Lima" , entonces | | | | | | Escribir ("No hay pasajes") | | | | | Fin_si | | | | Fin_si | | | Fin_si | | Fin_si | | | Sino | | Si CAT =Imperial, entonces | | | Escribir ("Ingrese destino") | | | | | | Si DES = Tumbes, entonces | | | P3=80 | | | Escribir ("P3") ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 57
| | | | | | Sino | | | | Si DES =Piura, entonces | | | | | P4= 20 | | | | | Escribir (P4) | | | | | | | | | Sino | | | | | Si DES =Talara, entonces | | | | | | P5=30 | | | | | | Escribir (P5) | | | | | | | | | | | Sino | | | | | | Si DES = Lima , entonces | | | | | | | Escribir ("No hay pasajes") | | | | | | | | | | | | | Fin_si | | | | | Fin_si | | | | Fin_si | | | Fin_si | | | | | Sino | | | Si CAT = Bus cama , entonces | | | | Escribir ("Ingrese destino") | | | | | | | | Si DES = Tumbes, entonces | | | | P6=100 | | | | Escribir ("P6") | | | | | | | | Sino | | | | | Si DES =Piura, entonces | | | | | | Escribir ("No hay pasaje") | | | | | | | | | | | Sino | | | | | | Si DES =Talara, entonces | | | | | | | Escribir ("No hay pasaje") | | | | | | | | | | | | | Sino | | | | | | | Si DES = Lima, entonces | | | | | | | P7=170 | | | | | | | Escribir(P7) | | | | | | Fin_si | | | | | Fin_si | | | | Fin_si | | | Fin_si | | Fin_si | | |Fin_si ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 58
| FIN
Proceso problema04_VentaBoletos // Disear un programa que permita controlar la venta de pasajes a los clientes segun la categoria // y destino. Necesitamos identificar al cliente(ya sea un numero o el nombre), las categorias // pueden ser: ECONOMICO, NORMAL y VIP. Los detinos puede ser: Rio Bravo, Valle Hermoso, Reynosa // Monterrey. Queremos saber el precio del boleto y que lo muestre en pantalla.
cliente <-""; categoria <- ""; destino <- ""; precio_boleto <- 0; Escribir "Bievenido a la venta de boletos, cual es su nombre?"; Leer cliente; Escribir "Muy bien ",cliente, " tenemos 3 categorias: ECONOMICO, NORMAL y VIP, cual prefiere?"; Leer categoria
Si categoria = "ECONOMICO" Entonces Escribir "Ingrese su destino: "; Leer destino; Si destino = "Monterrey" Entonces Escribir "No hay pasajes para Monterrey en esta categoria"; Sino Si destino = "Valle Hermoso" Entonces precio_boleto <- 50.00 Sino Si destino = "Rio Bravo" Entonces precio_boleto <- 80.00 Sino precio_boleto <- 120.00 FinSi FinSi FinSi FinSi
Si categoria = "NORMAL" Entonces Escribir "Ingrese su destino: "; Leer destino; Si destino = "Monterrey" Entonces precio_boleto <- 200; Sino Si destino = "Valle Hermoso" Entonces precio_boleto <- 80.00 Sino Si destino = "Rio Bravo" Entonces precio_boleto <- 150.00 ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 59
Sino precio_boleto <- 180.00 FinSi FinSi FinSi FinSi
Si categoria = "VIP" Entonces Escribir "Ingrese su destino: "; Leer destino; Si destino = "Monterrey" Entonces precio_boleto <- 300; Sino Si destino = "Valle Hermoso" Entonces precio_boleto <- 100.00 Sino Si destino = "Rio Bravo" Entonces precio_boleto <- 180.00 Sino precio_boleto <- 200.00 FinSi FinSi FinSi FinSi Escribir "El boleto cuesta: ", precio_boleto FinProceso
Objetivo Practicar condiciones multiples, anidadas y operadores logicos PROBLEMA 5 (Si..Entonces multiples, anidadas, oper. Logicos) Hacer un programa que muestre el mensaje de acuerdo a la edad ingresada: Si la edad es de 0 a 10 aos nio, si la edad es de 11 a 14 aos pber , si la edad es de 15 a 18 aos adolescente , si la edad es de 19 a 25 aos joven , si la edad es de 26 a 65 aos adulto, si la edad es mayor de 65 anciano inicio Leer n si n >=0 y n<=10 entonces escribir nio sino si n >=11 y n<=14 entonces escribir pber sino si n>=15 y n<=18 entonces ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 60
escribir adolescent e sino si n>=19 y n<=25 entonces escribir joven sino si n>=26 y n<=65 entonces escribir adulto sino | si n>65 entonces escribir anciano fin_si fin_si fin_si fin_si fin_si fin_si fin
Proceso problema05_Edades // Hacer un programa que muestre el mensaje de acuerdo a la edad ingresada // Si la edad es de 0 a 10 aos "nio" // Si la edad es de 11 a 14 aos "puber" // Si la edad es de 15 a 18 aos "adolescente" // Si la edad es de 19 a 25 aos "joven" // Si la edad es de 26 a 65 aos "adulto" // Si la edad es mayor de 65 aos "anciano"
edad <- 0; Escribir "Cual es tu edad?"; Leer edad; Si edad >=0 Y edad <=10 Entonces Escribir "Eres nio"; Sino si edad >= 11 Y edad <=14 Entonces Escribir "Eres puberto" Sino si edad >=15 Y edad <= 18 Entonces Escribir "Eres adolescente" Sino Si edad >= 19 Y edad <= 25 Entonces Escribir "Eres Joven" Sino Si edad >=26 y edad <= 65 Entonces Escribir "Eres Adulto" Sino Escribir "Eres Anciano" ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 61
FinSi FinSi FinSi FinSi FinSi
FinProceso
Objetivo Practicar ciclo REPETIRHASTA y sentencia SI..ENTONCES PROBLEMA 6 (Ciclo Repetir..hasta, Si..Entonces) Disear un algoritmo que me permita determinar si un numero ingresado desde el teclado es un numero par o impar. Inicio A : entero Repetir Ingresar A Hasta (A > 0) Si (A mod 2 = 0) entonces Mostrar "A es par" Sino Mostrar "A es impar" Fin_Si Fin
Proceso problema06_ParesImpar // Disear un algoritmo que me permita determinar si un numero ingresado desde el teclado es // par o impar numero <-0 Escribir "Ingresa un numero entero "; Leer numero Si numero mod 2 = 0 Entonces Escribir "El numero tecleado es PAR" Sino Escribir "El numero tecleado es IMPAR" FinSi
FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 62
Objetivo Practicar condicionales SI..ENTONCES. Este ejercicio agrega la complejidad para determinar el residuo de operaciones de division y la resolucion de aos bisiestos PROBLEMA 7 (Si..Entonces, Bisiesto) Escribir un algoritmo que determine si un ao es bisiesto. Un ao es bisiesto si es mltiplo de 4 (por ejemplo 1984). Los aos mltiplos de 100 no son bisiestos, salvo si ellos son tambin mltiplos de 400 (2000 es bisiesto, pero; 1800 no lo es). Inicio Ao, B : entero Leer "Ao" Si (B mod 4000 = 0) entonces Mostrar "Ao es bisiesto" Fin_Si Si (B mod 100 = 0) entonces Mostrar "Ao no es bisiesto" Fin_Si Si (B mod 4 = 0) entonces Mostrar "Ao es bisiesto" Sino Mostrar "Ao no es bisiesto" Fin_Si Fin
Proceso problema07_Bisiesto // Escribir un algoritmo que determine si un ao es bisiesto. Un ao es bisiesto si es multiplo // de 4 (por ejemplo 1984). Los aos multiples de 100 no son bisiestos, salvo si ellos son tambien // multiplos de 400 (2000 es bisiesto pero 1800 no lo es).
ano <- 0 Escribir "Teclea un ano: " Leer ano; Si ano mod 4000 = 0 Entonces Escribir "Este ano es BISIESTO" FinSI
Si ano mod 100 = 0 Entonces Escribir "Este ano NO ES BISIESTO"
FinSi
Si ano mod 4 = 0 Entonces Escribir "Este ano SI ES BISIESTO" Sino Escribir "Este ano NO ES BISIESTO" FinSi
FinProceso ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 63
Objetivo Practicar condiciones SI..Entonces multiples PROBLEMA 8 (Si..Entonces multiples) Dado un monto calcular el descuento Descuento: 25% si m>=300 20% si 150<=m<300 no hay descuento si m<150 variable M,D Inicio leer M si M>=300 entonces D<-25*M/100 Si_no M>=150 y M<300 entonces D<-M*20/100 si_no D<-0 Fin_si Escribir descuento Fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 64
Objetivo Practicar condiciones multiples usando EN CASO DE y SIENTONCES. Se proponen dos soluciones para resolver el problema PROBLEMA 9 (En caso de.., Si..Entonces) Habitaciones de una casa rural (Alternativa mltiple - Pseudocdigo CEE)
En la siguiente tabla se muestra el nmero de camas de las habitaciones de una casa rural, adems de la planta donde est ubicada cada una de ellas:
Habitacin Camas Planta
1. Azul 2 Primera
2. Roja 1 Primera
3. Verde 3 Segunda
4. Rosa 2 Segunda
5. Gris 1 Tercera
Disee el algoritmo (en pseudocdigo) de un programa que: 1) Muestre el listado de las habitaciones de la casa rural. 2) Pida por teclado el nmero (dato entero) asociado a una habitacin. 3) Muestre por pantalla la planta y el nmero de camas de la habitacin seleccionada.
Nota: Si el nmero introducido por el usuario, no est asociado a ninguna habitacin, se mostrar el mensaje: "ERROR: <nmero> no est asociado a ninguna habitacin.".
En pantalla: Listado de habitaciones: Listado de habitaciones: Listado de habitaciones: Listado de habitaciones:
1. Azul 1. Azul 1. Azul 1. Azul 2. Roja 2. Roja 2. Roja 2. Roja 3. Verde 3. Verde 3. Verde 3. Verde 4. 4. 4. 4. Rosa Rosa Rosa Rosa 5. Gris 5. Gris 5. Gris 5. Gris
Introduzca nmero de habitacin: Introduzca nmero de habitacin: Introduzca nmero de habitacin: Introduzca nmero de habitacin: 3 33 3 La La La La Verde tiene 3 ca Verde tiene 3 ca Verde tiene 3 ca Verde tiene 3 cama/s y est en la segunda planta. ma/s y est en la segunda planta. ma/s y est en la segunda planta. ma/s y est en la segunda planta.
Listado de habitaciones: Listado de habitaciones: Listado de habitaciones: Listado de habitaciones:
1. Azul 1. Azul 1. Azul 1. Azul 2. Roja 2. Roja 2. Roja 2. Roja 3. Verde 3. Verde 3. Verde 3. Verde 4. 4. 4. 4. Rosa Rosa Rosa Rosa 5. Gris 5. Gris 5. Gris 5. Gris
Introduzca nmero de habitacin: Introduzca nmero de habitacin: Introduzca nmero de habitacin: Introduzca nmero de habitacin: 7 77 7 ERROR: 7 no est asociado a ninguna habitacin. ERROR: 7 no est asociado a ninguna habitacin. ERROR: 7 no est asociado a ninguna habitacin. ERROR: 7 no est asociado a ninguna habitacin.
SOLUCION 1:
algoritmo Habitaciones_de_una_casa_rural ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
segun_sea ( numero ) 1 : escribir( "La Azul tiene 2 cama/s y est en la primera planta." ) 2 : escribir( "La Roja tiene 1 cama/s y est en la primera planta." ) 3 : escribir( "La Verde tiene 3 cama/s y est en la segunda planta." ) 4 : escribir( "La Rosa tiene 2 cama/s y est en la segunda planta." ) 5 : escribir( "La Gris tiene 1 cama/s y est en la tercera planta." ) sino : escribir( "ERROR: ", numero, " no est asociado a ninguna habitacin." ) fin_segun_sea fin SOLUCION 2: algoritmo Habitaciones_de_una_casa_rural
segun_sea ( numero ) 1 : nombre "Azul" camas 2 planta "primera" 2 : nombre "Roja" camas 1 planta "primera" 3 : nombre "Verde" camas 3 planta "segunda" 4 : nombre "Rosa" camas 2 planta "segunda" 5 : nombre "Gris" camas 1 planta "tercera" fin_segun_sea
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 66
si ( numero >= 1 y numero <= 5 ) escribir( "La ", nombre, " tiene ", camas, " cama/s y est en la ", planta, " planta." ) sino escribir( "ERROR: ", numero, " no est asociado a ninguna habitacin." ) fin_si fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 67
Objetivo ESTRUCTURAS Ejercicio 19 Alumnos Se necesita un programa que capture el nombre, numero de control, calificacion del primero, segundo y tercer parcial y promedio final de 2 alumnos
/* Ejercicio19 Se necesita un programa que capture el nombre, numero de control, calificacion del primero, segundo y tercer parcial y promedio final de 2 alumnos*/
// Estructuras var promedio : numerico //variable normal
inicio cls() // Comenzamos capturando los datos del primer alumno imprimir ("Dame el nombre del primer alumno ") leer (ficha[1].alumno) imprimir ("Dame el numero de control del primer alumno ") leer (ficha[1].num_control) imprimir ("Dame la calificacion 1 del primer alumno ") leer (ficha[1].calif[1]) imprimir ("Dame la calificacion 2 del primer alumno ") leer (ficha[1].calif[2]) imprimir ("Dame la calificacion 3 del primer alumno ") leer (ficha[1].calif[3]) // Hacer la operacion del promedio ficha[1].calif[4] = (ficha[1].calif[1] + ficha[1].calif[2] + ficha[1].calif[3] ) /3 imprimir ("Promedio: ",ficha[1].calif[4],"\n")
// Comenzamos capturando los datos del segundo alumno imprimir ("Dame el nombre del segundo alumno ") leer (ficha[2].alumno) imprimir ("Dame el numero de control del segundo alumno ") leer (ficha[2].num_control) imprimir ("Dame la calificacion 1 del segundo alumno ") leer (ficha[2].calif[1]) imprimir ("Dame la calificacion 2 del segundo alumno ") leer (ficha[2].calif[2]) imprimir ("Dame la calificacion 3 del segundo alumno ") ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 68
leer (ficha[2].calif[3]) // Hacer la operacion del promedio ficha[2].calif[4] = (ficha[2].calif[2] + ficha[2].calif[2] + ficha[2].calif[3] ) /3 imprimir ("Promedio: ",ficha[2].calif[4],"\n")
//Ahora hacer la comparativa para saber cual obtuve mejor promedio si (ficha[1].calif[4] > ficha[2].calif[4]) { imprimir ( "\n",ficha[1].alumno," salio mejor de promedio que ", ficha[2].alumno) sino imprimir ( "\n",ficha[2].alumno," salio mejor de promedio que ", ficha[1].alumno)
}
fin
Objetivo ESTRUCTURAS Ejercicio 20 Captura Productos Se necesita un programa que almacene la clave, descripcion, precio de compra, precio de menudeo y preco de mayoreo de 10 productos
/* Ejercicio20_CapturaProductos Se necesita un programa que almacene la clave, descripcion, precio de compra, precio de menudeo y preco de mayoreo de 10 productos */
inicio cls() desde indice = 1 hasta 10 { imprimir ("Clave del producto", indice, ":") leer (producto[indice].clave)
imprimir ("Descripcion del producto", indice, ":") leer (producto[indice].descripcion)
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 69
imprimir ("Precio de compra del producto", indice, ":") leer (producto[indice].precios[1])
imprimir ("Precio de menudo del producto", indice, ":") leer (producto[indice].precios[2])
imprimir ("Precio de mayoreo del producto", indice, ":") leer (producto[indice].precios[3])
imprimir ("==============================\n") } fin
Objetivo ESTRUCTURAS PRACTICA 35 Captura Alumnos Hacer un programa para una escuela, el cual almacene el nombre, direccion, telefono, semestre, grupo y matricula de 100 alumnos
/* Practica35_CapturaAlumnos Hacer un programa para una escuela, el cual almacene el nombre, direccion, telefono, semestre, grupo y matricula de 100 alumnos */
var indice : numerico
alumnos : vector [100] registro { nombre : cadena direccion: cadena telefono: numerico semestre: numerico grupo: cadena matricula: numerico }
inicio cls() desde indice = 1 hasta 10 { imprimir("Alumno",indice,"\n") imprimir ("Nombre........:") leer (alumnos[indice].nombre)
imprimir ("Direccion.....:") leer (alumnos[indice].direccion) ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
imprimir ("==============================\n") } fin
Objetivo MODULOS Ejercicio 21 Cuadrado Numero Crear un programa que despliegue el cuadrado de un numero dado por el usuario
/* Ejercicio21_CuadradoNumero Crear un programa que despliegue el cuadrado de un numero dado por el usuario */
inicio cls() imprimir ("Primera llamada al modulo Cuadrado\n") Cuadrado()
imprimir ("Segunda llamada al modulo Cuadrado\n") Cuadrado()
imprimir ("Tercera llamada al modulo Cuadrado\n") Cuadrado() fin
/* Modulo Cuadrado */ subrutina Cuadrado() var numero, resultado: numerico inicio imprimir ("Dame un numero") leer (numero) resultado = numero * numero ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 71
imprimir ("Resultado: ",resultado,"\n\n")
fin
Objetivo MODULOS Ejercicio 22 Calcular Area Crear un programa que llame a un modulo llamado AREA el cual calcula el area de un rectangulo y para hacerlo debe recibir dos datos desde el algoritmo principal, uno es la base y otro la altura
/* Ejercicio22_CalcularArea Crear un programa que llame a un modulo llamado AREA el cual calcula el area de un rectangulo y para hacerlo debe recibir dos datos desde el algoritmo principal, uno es la base y otro la altura */
var dato1,dato2:numerico resp:cadena
inicio cls() repetir imprimir ("Dame base del rectangulo:") leer (dato1) imprimir ("Dame altura del rectangulo") leer (dato2) Area(dato1,dato2) imprimir ("Deseas calcular otra area? (s/n)") leer (resp) hasta (resp=="n") fin
/* Modulo Area */ subrutina Area(base,altura:numerico) retorna numerico var resultado: numerico
inicio resultado = base * altura imprimir ("Resultado: ",resultado,"\n\n")
retorna (resultado) fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 72
Objetivo MODULOS Ejercicio 23 Precio Neto Se necesita un programa que mande llamar a un modulo llamado PRECIO_NETO, el cual para funcionar correctamente debe recibir desde el algoritmo principal el precio y el descuento deseado, al terminar de ejecutarse se debe regresar el nuevo precio al algoritmo principal.
/* Ejercicio23_PrecioNeto Se necesita un programa que mande llamar a un modulo llamado PRECIO_NETO, el cual para funcionar correctamente debe recibir desde el algoritmo principal el precio y el descuento deseado, al terminar de ejecutarse se debe regresar el nuevo precio al algoritmo principal. */
var p_neto, prec, desc:numerico resp:cadena
inicio cls() repetir imprimir ("Precio del producto:") leer (prec) imprimir ("Descuento a realizar (% como 0.10)") leer (desc) Precio_Neto( prec, desc) imprimir ("Deseas calcular otro producto? (s/n)") leer (resp) hasta (resp=="n") fin
Objetivo MODULOS PRACTICA 42 Fecha Larga Funcion que recibe 3 datos numericos, con los cuales escribe la fecha en formato largo en la pantalla: Ej. 14 de Octubre del 2011. */
/* PRACTICA42_FechaLarga Funcion que recibe 3 datos numericos, con los cuales escribe la fecha en formato largo en la pantalla: Ej. 14 de Octubre del 2011. */
var dia, mes, ano:numerico cFecha: cadena resp:cadena
inicio cls() imprimir ("Indica la fecha dando los numeros correspondientes:\n") repetir imprimir ("Dia:") leer (dia) imprimir ("Mes:") leer (mes) imprimir ("Ao:") leer (ano) cFecha = FechaLarga( dia, mes, ano) imprimir ("La fecha es: ", cFecha, "\n\n") imprimir ("Deseas calcular otra fecha? (s/n)") leer (resp) hasta (resp=="n") fin
/* Modulo Fecha larga */ subrutina FechaLarga( vDia, vMes, vAno:numerico) retorna cadena var fecha_larga: cadena cMes: cadena
inicio /* Identificar el mes */ eval { caso (mes==1) cMes = "Enero" caso (mes==2) ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 74
cMes = "Febrero" caso (mes==3) cMes = "Marzo" caso (mes==4) cMes = "Abril" caso (mes==5) cMes = "Mayo" caso (mes==6) cMes = "Junio" caso (mes==7) cMes = "Julio" caso (mes==8) cMes = "Agosto" caso (mes==9) cMes = "Septiembre" caso (mes==10) cMes = "Octubre" caso (mes==11) cMes = "Noviembre" caso (mes==12) cMes = "Diciembre" }
fecha_larga = str(vDia,2,0) + " de " + cMes + " del " + str(vAno,2) //imprimir ("Resultado: ",fec,"\n\n")
retorna (fecha_larga) fin
Objetivo MODULOS PRACTICA 43 Calculo Salario Modulo que recibe las horas trabajadas, el precio por hora trabajada y el precio de la hora extra. Con estos datos calcular y devolver el salario de un trabajador, donde las primeras 40 horas se pagan normal y las restantes se pagan como tiempo extra
/* PRACTICA43_CalculoSalario Modulo que recibe las horas trabajadas, el precio por hora trabajada y el precio de la hora extra. Con estos datos calcular y devolver el salario de un trabajador, donde las primeras 40 horas se pagan normal y las restantes se pagan como tiempo extra */
var horas_trab, precioHora, precioHrExtra: numerico nSalario: numerico resp:cadena
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 75
inicio cls() repetir imprimir ("Cuantas horas laboro el empleado?:") leer (horas_trab) imprimir ("Cual es el precio por hora?") leer (precioHora) imprimir ("Cual es el precio por hora extra?") leer (precioHrExtra) nSalario = CalculoSalario( horas_trab, precioHora, precioHrExtra) imprimir ("El sueldo del trabajador es: ", nSalario, "\n\n") imprimir ("Deseas calcular otra trabajador? (s/n)") leer (resp) hasta (resp=="n") fin
Objetivo MODULOS PRACTICA 44 Calificaciones Letra Modulo que recibe las 3 calificaciones parciales de un alumno, el cual regresa su calificacion con letra, donde si su promedio es menor de 6 le corresponde NA, de 6 a 8 obtiene S, mayor a 8 y cuando mucho 9 saca B y superior a 9 es E
/* PRACTICA44_CalificacionesLetra Modulo que recibe las 3 calificaciones parciales de un alumno, el cual regresa su calificacion con letra, donde si su promedio es menor de 6 le corresponde NA, de 6 a 8 obtiene S, mayor a 8 y cuando mucho 9 saca B y superior a 9 es E */
var calif1, calif2, calif3: numerico cCalif:cadena resp:cadena
vPromedio = (vCalif1 + vCalif2 + vCalif3) /3 imprimir ("Promedio: ", vPromedio, "\n") si (vPromedio > 9) { cLetra = "E" sino si (vPromedio > 8) { cLetra = "B" sino si (vPromedio > 6) { cLetra = "S" sino cLetra = "NA" } } } retorna (cLetra) fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 77
PROBLEMAS AVANZADOS
Objetivo Estos ejercicios pueden llevar condiciones mas complejas, condiciones mulitples (sentencias tipo CASE), o condiciones anidadas. Tambien pueden llevar ciclos MIENTRAS HASTA o DESDEHASTA, arreglos (vectores, matrices), registros, tipos de datos, manejo de archivos externos
De preferencia estos ejercicios debera realizarlos el profesor para exponerlos en el pizarron y explicarlos.Segn criterio del mismo, se realizaran algunos otros por cuenta del alumno.
El alumno debera generar el algoritmo en diagrama de flujo y pseudocodigo. Queda a criterio del profesor el uso de DFD, Psint o SLE Temas por ver Pseudocodigo, asignacion de variables, tipos de datos sencillos, operaciones sencillas, condicionales (sientonces), condicionales multiples (En CASO DE), ciclos (MIENTRAS, HASTA, PARA), arreglos (VECTORES, MATRICES), registros, subrutinas (Funciones, Procedimientos), funciones de SLE, lenguaje SLE, archivos externos y su manejo Herramientas Cuaderno y lapiz SLE 2.0
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 78
Objetivo Practicar el ciclo MIENTRASHACER PROBLEMA 1 (Mientras.. Hacer) La compaia Barner posee una caja con $3.71 con la cual empieza todos los dias diariamente se registran egresos. Calcular los egresos de la compaia y mostrar cuanto queda en caja. (el programa termina cuando se ingresa un egreso imaginario de -1) Algoritmo INICIO
SLE /* * Problema 1_Avanzado */ var caja = 371 egreso = 0 inicio cls() imprimir ("\nInicio en caja ", caja, ".\n") mientras (egreso <> -1) { caja = caja - egreso imprimir ("\nCual es el egreso?") leer (egreso) } imprimir ("\nTotal en caja ", caja, ".\n") fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 79
Objetivo Practicar arreglos unidimensionales (vectores), ciclo MIENTRASHACER PROBLEMA 2 (Arreglos, Mientras.. Hacer) Hacer un programa que registre 20 numeros en un array de una dimension y muestre posteriormente los elementos que ocupan posiciones impares Algoritmo INICIO | | Dimensionar a[100] | | x=1 | mientras x <= 20 Hacer | | Leer a[x] | | x=x+1 | fin_mientras | | x=1 | mientras x<=20 Hacer | | escribe a[x] | | x=x+2 | fin_mientras | FIN
SLE /* Problema 02_ Arrays */ var a: vector[10] numerico x = 1 inicio cls() mientras (x<=10) { imprimir ("Dame el numero " ) leer (a[x]) x=x+1 } /* Ahora listar los impares */ imprimir ("\nListado de impares\n" ) x=1 mientras (x<=10) { imprimir ("Numero ",a[x],"\n" ) x=x+2 } Fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 80
Objetivo Practicar operaciones aritmeticas, condiciones y uso de contadores, ciclo MIENTRAS..HACER PROBLEMA 3 (Mientras.. Hacer, Si.. Entonces, Contadores) Hacer un programa que al ingresar 2 numeros por la pantalla y que se calcule la suma, resta, multiplicacion y division. El proceso debe terminar cuandon se hallan realizado 10 procesos (Hacer uso de contadores) Algoritmo INICIO
X=X+1 Leer A,B
S=A+B R=A-B M=A*B D=A/B
IMPRIMIR ,S,R,M,D
Si x=10 entonces: escribe "Fin del programa"
Sino X=X+1
Fin_si
FIN
SLE /* Problema 3 Hacer un programa que al ingresar 2 numeros por la pantalla calcule la suma, resta, multiplicaciony division. El proceso termina cuando se realicen 10 procesos Hacer uso de contadores */
var x = 1 num1 = 0 num2 = 0 suma = 0 resta = 0 multiplicacion = 0 division = 0 inicio cls() imprimir ("Realizaremos 4 operaciones basicas con 2 numeros 5 veces\n") ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 81
mientras (x<=5) { imprimir ("\n======================================================\n") imprimir ("OPERACION: ", x, "\n") imprimir ("Dame un numero:") leer (num1) imprimir ("Dame el segundo numero" ) leer (num2) /* Ahora hacer las operaciones */ suma = num1 + num2 resta = num1 - num2 multiplicacion = num1 * num2 division = num1 / num2 imprimir ("\nLa suma de los numeros es: ",suma ) imprimir ("\nLa resta de los numeros es: ",resta ) imprimir ("\nLa multiplicacion de los numeros es: ",multiplicacion ) imprimir ("\nLa division de los numeros es: ",division ) x = x + 1 } imprimir ("\nFIN") fin
Objetivo Practicar ciclo DESDE..HASTA, SI..ENTONCES, calculo de maximos y minimos PROBLEMA 4 (Desde..Hasta, Si..Entonces, Maximos, Minimos) El ing. De sistemas del banco de credito necesita conocer de una lista de 2500 cuentas cual es la que posee mayor y menor cantidad de dinero (d) Algoritmo Inicio Leer n Max ? n Min ? n Desde i ? 1 hasta 2500 hacer Leer n Si n > max entonces Max ? n Sin_no Si n < min entonces Min ? n Fin_si Fin_si Fin_desde Escrbir MXIMO Max ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 82
MINIMO Min Fin
SLE /* PROBLEMA 4 El ing de sistemas del banco de credito necesita conocer de una lista de 2500 cuentas cual es la que posee mayor y menor cantidad de dinero */
var cuenta = 0 maximo = 0 minimo = 0 contador = 0 tope_ctas = 5 // Se supone que aqui van las 2500 inicio cls() imprimir ("Monto de la cuenta: ") leer (cuenta) maximo = cuenta // aqui el valor maximo es el monto minimo = cuenta // aqui el valor minimo es el monto desde contador = 1 hasta tope_ctas { imprimir ("Monto de la cuenta: ") leer (cuenta) si (cuenta > maximo) { maximo = cuenta sino si (cuenta < minimo) { minimo = cuenta } } } imprimir ("La cuenta con el monto MAXIMO es de: ", maximo, "\n") imprimir ("La cuenta con el monto MINIMO es de: ", minimo, "\n") fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 83
Objetivo Practicar ciclo MIENTRASHACER, SI..ENTONCES, contadores, arreglos tipo registro. Se proponen 2 soluciones: 1. Introduciendo los datos que trabajaremos directamente en el programa 2. Que el usuario introduzca los datos y utilice un ciclo para ello PROBLEMA 5 (Mientras.. Hacer, Si.. Entonces, contadores, arreglos) En una empresa: se debe visualizar en una lista FICHA donde se encuentra nombre categora, edad y sueldo ademas el programa debe visualizar un mensaje existen trabajadores mayores de 65 aos en un numero de ... y el numero de trabajadores mayores de 65 aos. Algoritmo Inicio SW <- 0 mientras SW = 0 hacer Leer FICHA (NOMBRE CATEGORA, EDAD, SUELDO) Escribir FICHA Si EDAD > 65 Entonces S <- S + 1 SW <- 1 Fin_si Fin_mientras Si SW = 1 Entonces Escribir existen trabajadores... Escribir S Fin_si Fin SLE /* PROBLEMA 5 En una empresa se debe visualizar en una lista FICHA donde se encuentra nombre, categoria, edad y sueldo para que el programa visualice un mensaje "EXISTEN TRABAJADORES MAYORES DE 65 AOS EN UN NUMERO DE... " y el no. de trabajadores */
var contador = 0 adulto_mayor = 0 existen_tercer_edad = 0 ficha : vector [*] registro { nombre : cadena; categoria : cadena edad : numerico sueldo : numerico } inicio ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 84
cls() /* Inicializamos el vector FICHA para 3 trabajadores */ //dim (ficha, 3 ) ficha = { {"Mirta","Contabilidad",45,1400}, {"Jose","Intendencia",70, 980}, {"Luisa","Ventas",25,1300} } //imprimir ("Ficha 1: ",ficha[1]) //imprimir ("\nFicha 2: ",ficha[2].edad) desde contador = 1 hasta 3 { imprimir ("\nFicha ",contador,": ", ficha[contador]) si ( ficha[contador].edad > 65 ) { adulto_mayor = adulto_mayor + 1 existen_tercer_edad = 1 } } si (existen_tercer_edad == 1 ) { imprimir ("\nExisten trabajadores ",adulto_mayor, " de la tercera edad") } Fin SLE Solucion 2: /* PROBLEMA 5 En una empresa se debe visualizar en una lista FICHA donde se encuentra nombre, categoria, edad y sueldo para que el programa visualice un mensaje "EXISTEN TRABAJADORES MAYORES DE 65 AOS EN UN NUMERO DE... " y el no. de trabajadores
Variacion, permitiendo que el usuario defina cuantos trabajadores y que el mismo capture los datos para procesar despues */
var contador = 0 adulto_mayor = 0 existen_tercer_edad = 0 trabajadores = 0 i = 0 ficha : vector [*] registro { nombre : cadena; categoria : cadena edad : numerico sueldo : numerico } inicio cls() ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 85
/* Preguntamos al usuario cuantos trabajadores quiere */ imprimir ("Cuantos trabajadores quieres procesar?" ) leer (trabajadores) dim (ficha, trabajadores ) /* Ahora haremos un ciclo para la captura de los trabajadores */ desde i = 1 hasta trabajadores { /* Comienza la captura */ imprimir ("\nNombre: ") leer ( ficha[i].nombre ) imprimir ("Categoria: " ) leer ( ficha[i].categoria ) imprimir ("Edad: " ) leer ( ficha[i].edad ) imprimir ("Sueldo: " ) leer ( ficha[i].sueldo ) } /* Ahora procesamos de manera normal */ imprimir ("\n Proceso \n" )
desde contador = 1 hasta trabajadores { imprimir ("\nFicha ",contador,": ", ficha[contador]) si ( ficha[contador].edad > 65 ) { adulto_mayor = adulto_mayor + 1 existen_tercer_edad = 1 } } si (existen_tercer_edad == 1 ) { imprimir ("\nExisten trabajadores ",adulto_mayor, " de la tercera edad") } Fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 86
Objetivo Se practicara el uso de arreglos (vectores) para almacenar la informacion, como usar algunas funciones de cadena existentes en los lenguajes de programacion (como se usan en SLE), como se trabaja con operaciones usando arreglos. Ademas de manejar los ciclos y condiciones segn el problema dado.
Tambien, introduce al alumno en el concimiento de generacion de claves o identificadores o contraseas para uso posterior en lenguajes de programacion informaticos y como manejar las cadenas. PROBLEMA 6 (Arreglos, cadenas,ciclos, condiciones) Autogenerar el codigo del alumno tomando como datos los dos primeros caracteres del apellido paterno el segundo y tercer caracterde apellido materno los dos ultimos caracteres de los nombres mas el numero que le corresponde en la lista. Ademas se deber pedir dos notas para calcular su promedio del curso de matematica. se sabe que en el aula son 36 alumnos y ademas deber mostrar al final la cantidad de alumnos desaprobados. Algoritmo variables Nom(36),pat(369,Mat(36),Cod(36):Texto N1(36),N2(36),Prom(36),A,D,C:Numerico
Inicio A=0 D=0 paraC=1 hasta 36 leer Nom(c), Pat(c),Mat(c),N1(c),N2(c) cod(c)=Left(pat(c),2)+Mid(Mat(c),2.2)+Rig(Nom(c),2)+STR(c) Prom(c)=(N1(c))+N2(c))/2 escribir cod(c), prom(c) si prom(c)>=10.5 Then A=A+1 si no D=D+1 fin_si fin_para escribir A,D Fin
SLE /* PROBLEMA 6 Autogenerar el codigo del alumno tomando como datos los 2 primeros caracteres del apellido paterno el segundo y tercer caracter del apellido materno y los dos ultimos caracteres de los nombres mas el numero que le corresponde en la lsita. Ademas, debera pedir 2 calificaciones para calcular su promedio del curso de matematicas.
Se sabe que en el aula son 22 alumnos y ademas debera mostrar al final la cantidad de alumnos reprobados */ ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
inicio cls() imprimir ("Listado de alumnos\n") desde contador = 1 hasta 4 { imprimir ("Nombre del alumno: ") leer (nombre[contador]) imprimir ("Apellido Paterno: " ) leer (appaterno[contador]) imprimir ("Apellido Materno: " ) leer (apmaterno[contador]) imprimir ("Calificacion 1:" ) leer (calif1[contador]) imprimir ("Calificacion 2:" ) leer (calif2[contador]) /* Crear el codigo del alumno */ /* Usaremos algunas funciones de cadena */ codigo[contador] = substr( appaterno[contador],1,2) + substr( apmaterno[contador],2,2) + substr( nombre[contador],strlen(nombre[contador])-1) + str( contador,0,0 ) promedio[contador] = (calif1[contador] + calif2[contador]) /2 //imprimir ("\n Codigo generado: ", codigo[contador],"\n") si (promedio[contador] >= 70 ) { aprobados = aprobados + 1 sino reprobados = reprobados + 1 } } /* Ahora hacemos un ciclo para mostrar los alumnos */ imprimir ("\n\nListado de Alumnos\n") desde contador = 1 hasta 4 { imprimir ("\n Codigo generado: ", codigo[contador]," -") imprimir ( nombre[contador]," ",appaterno[contador]," >>" ) imprimir ( "Prom:",promedio[contador],"\n")
} imprimir ("====================\n") imprimir ("Aprobados: ", aprobados, "\n") imprimir ("Reprobados:", reprobados, "\n") ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 88
fin
Objetivo El alumno debera pensar como calcular el numero mayor de una lista aplicando variables temporales. Se maneja un ciclo para preguntar cuantas veces quiere repetir y condicion SI..ENTONCES PROBLEMA 7 (Desde.. hasta, Si.. Entonces) Calcular el nmero mayor de una lista de nmeros. Algoritmo real: UM, MAX entero: I, N
inicio leer N // N >0 leer NUM MAX <-- NUM desde I <-- 2 hasta 100 hacer leer NUM si NUM > MAX entonces MAX <-- NUM fin_si fin_desde fin
SLE /* Problema 7 Calcular el numero mayor de una lista de numeros */
var numero, maximo : numerico i, cuantos : numerico inicio cls() imprimir ("Cuantas veces quieres el ciclo?") leer ( cuantos ) imprimir ("Primer numero:") leer ( numero) maximo = numero desde i = 2 hasta cuantos { imprimir ("\nSiguiente numero ",i,":") leer (numero) si (numero > maximo) { maximo = numero } } imprimir ("El numero maximo encontrado es:",maximo ) ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 89
fin
Objetivo Se practicaran los arreglos (vectores) y manejo de ciclos ascendentes y descentes. En este ejercicio no se da la solucion en SLE para que el alumno lo realice por si mismo PROBLEMA 8 (Arreglos, Ciclos Mientras) Hacer un programa que registre 10 apellidos y que los muestre en forma inversa al orden con el que fueron ingresados. Algoritmo Inicio Dimensionar Apellido[10] X<-1 mientras x<=10 hacer leer Apellido[x] x<- x+1 fin_mientras X <- 10 mientras X >= 1 hacer mostrar Apellido[X] X <- X - 1 fin_mientras Fin
SLE
Objetivo Este ejercicio es similar al problema 8 y sirve para que el alumno practique los arreglos (vectores) y los ciclos MIENTRASHACER, combinado con una condicion y la operacin de residuo de una division
* Tampoco se da la solucion en SLE para que el alumno lo elabore. PROBLEMA 9 (Arreglos, Mientras.. hacer, Si.. Entonces) Elaborar un algoritmo, que permita el ingreso de 100 nmeros enteros. El programa debe sumar todos los nmeros que sean mltiplos de 3. Algoritmo Inicio Dimensionar numero[100] x<-1 mientras x<=100 hacer leer numero[x] x<-x+1 fin - mientras x<- 1 s<- 0 mientras x<=100 hacer Si (numero[x] mod 3 = 0) entonces ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 90
s<- s+numero[x] Fin_Si x<-x+1 Fin_mientras Mostrar s Fin
SLE
Objetivo Manejo de cadenas, conocer como se genera una contrasea o password, uso de funciones de cadena y contadores PROBLEMA 10 (Cadenas, Strlen, Substr, Desde..hasta) Realizar un algoritmo que permita ingresar una frase y la descomponga esta en sus palabras imprimindolas al revs. Ejem. CIUDAD CHICLAYO DADUIC OYALCIHC Algoritmo Inicio Caracter Frase [20] ; Entero L, K, C, j ; Lee cadena (Frase) ; L = longitud (Frase) ; Para i = 1 ; i = L Si (Frase [i] = ' ') entonces Ce <- ce + 1 ; Fin_Si Fin_Para Entero x = 1 Para i = 1 K = 1 C = 0 Para j = x ; Frase [j] < > '' Invertida [k] <- Frase [j] C <- C + 1 Fin_Para Para k = 1 ; k =L Mostrar "Invertida [k] Fin_Para x = j + i Fin_Para Fin
SLE /* Problema 10 Realizar un algoritmo que permita ingresar una frase y la descomponga en sus palabras imprimiendolas al reves: Ejemplo: CIUDAD DADUIC */
var palabra : cadena ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 91
invertida: cadena longitud, k, letra : numerico inicio cls() imprimir ("Dame una palabra o frase:") leer (palabra ) /* Conocer el tamao de la palabra */ longitud = strlen( palabra ) /* Hacer un ciclo segun la cantidad de letras */ letra = 0 desde k=1 hasta longitud { invertida = invertida + substr( palabra,longitud-letra,1) letra = letra + 1 } imprimir ("Palabra o frase invertida es: ", invertida ) fin
Objetivo Practicar subrutinas (procedimientos), arreglos tipo registro, ciclos y condiciones, ademas de operaciones con los arreglos PROBLEMA 11 (Subrutinas.. procedimientos, arreglos.. registro, ciclos, condiciones) ELIMINAR UN ALUMNO DEL SALON, DADA UNA POSICIN INDICADA Algoritmo Inicio Dimensionar ALUMNO[100],NOTA1[100], NOTA2[100] ENTERO i,pos,n leer n i <- 1 mientras i<=n hacer leer ALUMNO[i], NOTA1[i],NOTA2[i] i <- i+1 fin_mientras leer pos si (pos<n) entonces i <- pos mientras i<n ALUMNO[pos]<- ALUMNO[pos + 1] NOTA1 [pos]<- NOTA1[pos+1] NOTA2 [pos]<- NOTA2[pos+1] n <- n-1 fin_mientras escribir ALUMNO[pos], NOTA1[pos],NOTA2[pos] sino ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 92
si (pos=n) entonces ALUMNO[n]<- "" NOTA1 [n]<- 0 NOTA2 [n]<- 0 fin_si sino si (pos>n) entonces Escribir "Cambiar Dato" fin_si Fin
SLE /* Problema 11 Eliminar un alumno del salon, dada una posicion indicada */
var i, posicion : numerico ficha : vector [*] registro { alumno : cadena; calif1 : numerico calif2 : numerico }
inicio cls() MatrizAlumnos() MostrarFichas() imprimir ("Que ficha deseas eliminar? 0=Ninguna") leer (posicion) /* Eliminar alumno */ si (posicion<>0 && posicion<alen(ficha)+1) { ficha[posicion].alumno = "" ficha[posicion].calif1 = 0 ficha[posicion].calif2 = 0 cls() MostrarFichas() sino imprimir ("\nNingun alumno se ha eliminado") } fin
/* La siguiente subrutina inicializara la matriz de alumnos */ subrutina MatrizAlumnos() inicio ficha = { {"Ayon Amparo",85,100}, {"Badillo Ruben",85,100}, {"Bazan Jesus",70, 98}, {"Berumen Gaston",25,100}, ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
subrutina MostrarFichas() inicio desde i=1 hasta alen(ficha) { imprimir ("Ficha: ",i,"-",ficha[i],"\n") } fin
Objetivo Ejercicio muy similar al problema 11 que contiene subrutinas de procedimiento, arreglos de vector, ciclos, condiciones, pero que ademas introduce al estudiante a los metodos de ordenacion PROBLEMA 12 (Ordenacion, subrutina, arreglos, ciclos, condiciones) MOSTRAR ARTICULOS DE ABARROTES ORDENADOS POR MAYOR PRECIO Y MOSTRAR LOS 5 ARTICULOS DEMENOR PRECIO Algoritmo Inicio Dimensionar articulo[100],precio[100] enteroi,j,NE real aux1 caracter aux2 leer NE si(NE>0)entonces para i=0 hasta i<NE ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 94
leer articulo[i],precio[i] fin_para para i=0 hasta i<NE-1 para j =i+1 hasta j<NE si(precio[i] < precio[j]) entonces aux1<- precio aux2<- articulo[i] precio[i]<- precio[j] articulo[i]<- precio[j] precio[j]<- aux1 articulo[j]<- aux2 fin_si fin_para fin_para para i=0 hasta i<NE escribir articulo[i],precio[i] fin_para para i=NE hasta i>5 escribir articulo [i],precio[i] fin_para sino escribir "arreglo vacio" fin_si Fin
SLE /* Problema 12 Mostrar articulos de abarrotes ordenados por mayor precio y mostrar los 5 articulos de menos precio */
inicio cls() MatrizArticulos() MostrarArticulos() imprimir ("\nListado de Articulos segun precio\n") MostrarArtXPrecio() imprimir ("\nFin")
fin
/* La siguiente subrutina inicializara la matriz de alumnos */ ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 95
subrutina MatrizArticulos() inicio ficha = { {"Aceite",21}, {"Barritas Pia Marinela",12}, {"CocaCola 2Lt",18}, {"Pepsi 2L",15}, {"Gansito",10}, {"Pinguino",8}, {"Azucar",25}, {"Huevo x kilo",21}, {"Jamon",19.90}, {"Tortilla x kilo",7.50}, {"Agua Ciel",8}, {"Conchas Bimbo",9}, {"Harina",21}, {"Jumex Manzana",6.50}, {"Jumex Durazno",6.50} } fin
subrutina MostrarArticulos() inicio desde i=1 hasta alen(ficha) { imprimir ("Articulo: ",i,"-",ficha[i],"\n") } fin
subrutina MostrarArtXPrecio() inicio /* Comenzara nuevamente un ciclo a recorrer toda la matriz */ desde i=1 hasta alen(ficha) { /* Tenemos que evaluar fila x fila del registro para comparar los precios e irlos "moviendo" segun sean mayores al principio hacemos un segundo ciclo que recorra nuevamente los registros para compararlo con el primero quiza necesitemos algunas variables de comparacion */
Objetivo Practicar la ordenacion simple, vectores, variables, introduccion a la declaracion de constantes, ciclos anidados, condiciones multiples PROBLEMA 13 (Ordenacion, vectores, constantes, ciclos anidados, cond multiples) En una empresa de 1000 trabajadores, se har un aumento al salario de acuerdo al tiempo de servicio, para este aumento se tomar en cuenta lo siguiente: Tiempo de servicio: de 1 a 5 aos Aumento: S/. 100 Tiempo de servicio: de 5 a 10 aos Aumento: S/. 250 Tiempo de servicio: de 10 a 20 aos Aumento: S/. 400 Tiempo de servicio: de 20 aos a ms Aumento: S/. 550 Se desea obtener unalista del personal en orden creciente con respecto al sueldo modificado Algoritmo Inicio Dimensionar Nombre[1200], Tiempo[1200], Sueldo[1200] X <- 1 mientras X <= 1000 hacer leer Nombre[X], Tiempo[X] X <- X + 1 fin_mientras X <- 1 mientras X <= 1000 hacer si Tiempo[X] <= 5 entonces Sueldo[X] <- 1000 + 100 fin_si si Tiempo[X] <= 10 entonces Sueldo[X] <- 1000 + 250 fin_si si Tiempo[X] <= 20 entonces Sueldo[X] <- 1000 + 400 sino Sueldo[X] <- 1000 + 550 fin_si ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 97
X <- X + 1 fin_mientras X <- 1 mientras X <= 1000 hacer Y <- X mientras Y <= 1000 hacer si Sueldo[X] > Sueldo[Y] entonces T <- Nombre[X] Nombre[X] <- Nombre[Y] Nombre[Y] <- T T <- Tiempo[X] Tiempo[X] <- Tiempo[Y] Tiempo[Y] <- T T <- Sueldo[X] Sueldo[X] <- Sueldo[Y] Sueldo[Y] <- T fin_si Y <- Y +1 fin_mientras X <- X + 1 fin_mientras X <- 1 mientras X <= 100 hacer mostrar Nombre[X], Tiempo[X], Sueldo[X] X <- X + 1 fin_mientras Fin
SLE /* PROBLEMA 13 En una empresa de 1000 trabajadores, se hara un aumento al salario de acuerdo al tiempo de servicio, para este aumento se tomara en cuenta lo siguiente: Tiempo de servicio: 1 a 5 aos - Aumento 100 5 a 10 aos - 250 10 a 20 aos - 400 20 aos o mas 550
NOTA: TODOS GANAN UN SUELDO BASE DE 1000
Se desea obtener una lista del personal en orden creciente con respecto al sueldo */
const salario = 1000 var x = 1 y = 1 nombre : vector[1200] cadena tiempo,sueldo : vector[1200] numerico vNombre : cadena ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 98
vTiempo : numerico vSueldo : numerico inicio cls() /* Para efectos practicos solo se procesan 4*/ /* Hacer ciclo de captura de datos */ desde x=1 hasta 4 { imprimir ("Trabajador:") leer (nombre[x]) imprimir ("Tiempo:") leer (tiempo[x]) } /* Ahora hacer ciclo de asignacion de aumento de sueldo */ desde x=1 hasta 4 { eval { caso (tiempo[x] <= 5) sueldo[x] = salario + 100 caso (tiempo[x] <= 10) sueldo[x] = salario + 250 caso (tiempo[x] <= 20) sueldo[x] = salario + 400 sino sueldo[x] = salario + 550 } } /* Ahora ciclo de ordenacion */ desde x = 1 hasta 4 { y = x + 1 mientras (y <= 4) { si (sueldo[x] > sueldo[y]) { vNombre = nombre[x] nombre[x] = nombre[y] nombre[y] = vNombre
vSueldo = sueldo[x] sueldo[x] = sueldo[y] sueldo[y] = vSueldo ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 99
} y = y + 1 } } /* Ahora ciclo de mostrar la informacion */ imprimir ("Nombre Tiempo Sueldo\n") desde x=1 hasta 4 { imprimir (nombre[x]," ",tiempo[x]," ",sueldo[x],"\n") } fin
Objetivo Practicar el uso de archivos externos para manejo de la informacion. Se debera crear un archivo externo al programa en formato de texto plano (se puede utilizar el bloc de notas) para poner la informacion que estabamos haciendo dentro del propio programa.
Ahora el programa, debera ubicar este archivo de texto, abrirlo, leerlo y pasar la informacion a unas variables de vector para despues realizar la operacin de condicion e imprimirlas en pantalla.
Se hara uso de funciones para operar con archivos externos PROBLEMA 14 (Archivos externos lectura, arreglos, ciclos, condicion) Dada una lista de 100 personas se pide una relacin de las personas mayores de 35 aos. Algoritmo Inicio Dimensionar Nombre[150], Edad[150] X <- 1 mientras X <= 150 hacer leer Nombre[X], Edad[X] X <- X + 1 fin_mientras X <- 1 mientras X <= 150 hacer Si Edad[X]>= 35 Entonces mostrar Nombre[X], Edad[X] fin_si X <- X + 1 fin_mientras Fin ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 100
SLE /* PROBLEMA 14. Dada una lista de 100 personas se pide una relacion de las personas mayores de 35 aos.
En este ejercicio se usaran archivos de texto externo para procesar las listas*/
const arch_entrada = "empleados.txt" var x = 1 linea = "" nombre : vector[150] cadena edad : vector[150] numerico inicio cls() /* Primer ciclo, lectura de la informacion */ si ( not set_stdin (arch_entrada)) { imprimir ("\nNo se pudo abrir el archivo ",arch_entrada, ".\nEl programa no puede continuar.") terminar ("\nEjecucion terminada con error.\n") } mientras ( not eof()) { leer (nombre[x]) leer (edad[x]) x = x + 1 }
/* Ciclo imprimir */ desde x = 1 hasta 10 { si (edad[x] >=35) { imprimir (nombre[x]," ", edad[x],"\n") } } fin
ARCHIVO EMPLEADOS.TXT: sergio,41 claudia,38 rocio,18 laura,15 miguel,25 ramon,43 julieta,32 ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 101
mirna,48 hugo,36 lupita,23
y todos los que el usuario desee agregarle en la forma de nombre,edad.
Objetivo Ejercicio de reforzamiento que sirve de base para aplicarlo en un examen o evaluacion parcial. Incluye el uso de constantes, variables, ciclo desdehasta anidados, condicional Si..entonces PROBLEMA 15(Examen 1) Al final del curso deseamos saber cual ha sido el alumno de primer ao con mejor nota media. Se sabe que este ao entraron 150 alumnos y que en primero todos tienen 5 asignaturas. Dar el nombre del alumno y la calificacion media (promedio). Algoritmo SLE /* Problema 15 - Examen 2o. Parcial Al final del curso deseamos saber cual ha sido el alumno de primero 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 */
inicio acum = 0 desde i = 1 hasta alumnos { suma = 0 imprimir ("\nIntroduzca el nombre del alumno" ) leer (nombre ) desde j=1 hasta asignaturas { imprimir ("Introduzca la nota de asignatura: ") leer (nota) suma = suma + nota } media = suma / asignaturas si (media > acum) { acum = media ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 102
mejor_alumn = nombre } } imprimir ("El mejor alumno es: ", mejor_alumn,"\n") imprimir ("Su nota media es: ",acum ) fin
Objetivo Este ejercicio puede servir como evaluacion o examen aunque su nivel de dificultad es alta. Se practican contantes, arreglos de matriz, tipos de datos varios, subrutinas de procedimientos y funciones ya que regresaran un valor. PROBLEMA 16 (Constantes, Matriz, Subrutinas, funciones, tipos datos) Hay unos multicines con 5 salas, y cada sala con 100 personas distribuidas en 20 asientos y 5 filas. Si yo pido entrada para una sala, implementar un programa que me diga si hay sitio en dicha sala Algoritmo SLE /* Programa 16. Examen Hay unos multicines con 5 salas, y cada sala con 100 personas distribuidas en 20 asientos y 5 filas. Si yo pido entrada para una sala, implementar un programa que me diga si hay sitio en dicha sala */
const salas = 5 asientos = 20 filas = 5 var n_salas, j, k : numerico s:numerico marca : logico a : matriz[*,*,*] numerico aSalas : matriz[1,salas] numerico aAsientos : matriz[1,asientos] numerico aFilas : matriz[1,filas] numerico
inicio cls() InicializaMatriz() //MostrarSalas() //PedirDatos() //n_salas = s ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 103
n_salas = PedirDatos() mientras (n_salas <> 0) { imprimir ("n_salas:",n_salas) marca = FALSE j = 0 k = 1 repetir si (j<asientos) { j=1 k=k+1 } si (j==asientos and k>=filas) { imprimir ("Sala llena\n") marca = TRUE sino
si (a[n_salas,j,k] == 0) { a[n_salas,j,k] = 1 imprimir ("\nSala ",n_salas, " Fila ",j," Asiento ",k,"\n") marca = TRUE } } hasta (a[n_salas,j,k]==1 and marca==TRUE) MostrarSalas() n_salas = PedirDatos() }
fin
subrutina PedirDatos() retorna numerico var nosala:numerico inicio repetir imprimir ("En que sala quieres entrar?") leer (s) hasta (s>=0 && s<=salas) nosala = s retorna (nosala) fin
subrutina InicializaMatriz() var ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 104
tam,z,x,y : numerico inicio dim (a, salas,filas,asientos ) a[1,1,1]=0 a[1,2,1]=0 tam = alen( a) desde z=1 hasta 2 { desde x = 1 hasta 5 { desde y = 1 hasta 20 { imprimir ( a[z,x,y] ) } imprimir ("\n") } imprimir ("\n======\n") } fin
subrutina MostrarSalas() var tam,z,x,y : numerico inicio tam = alen( a) desde z=1 hasta 2 { desde x = 1 hasta 5 { desde y = 1 hasta 20 { imprimir ( a[z,x,y] ) } imprimir ("\n") } imprimir ("\n======\n") }
Fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 105
Objetivo Este ejercicio tambien sirve de base para un examen o evaluacion al alumno, ya que debe realizar las operaciones aritmeticas comunes pero utilizando subrutinas, variables globales, condiciones multiples. PROBLEMA 17 (Subrutinas, variables globales, condicion multiple) Realizar un programa que realice las operaciones basicas aritmeticas (suma, resta, multiplicacion y division) mediante el uso de subrutinas que sean funciones. Ademas, debera crear un menu inicial para el usuario Algoritmo SLE /* Programa 17. Examen Realizar un programa que realice las operaciones basicas aritmeticas (suma, resta, multiplicacion y division) mediante eluso de subrutinas que sean funciones. Ademas, debera crear un menu inicial para el usuario */
var operador1, operador2,resultado: numerico opcion = 0 inicio cls() Menu() mientras (opcion<>0) { eval { caso (opcion == 1) LeerDatos() resultado = Suma(operador1,operador2) imprimir ("\n\n",strdup("*",30),"\n") imprimir ("El resultado es: ",resultado,"\n") Menu() caso (opcion == 2) LeerDatos() resultado = Resta(operador1,operador2) imprimir ("\n\n",strdup("*",30),"\n") imprimir ("El resultado es: ",resultado,"\n") Menu() caso (opcion == 3) LeerDatos() resultado = Multiplicacion(operador1,operador2) imprimir ("\n\n",strdup("*",30),"\n") ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 106
imprimir ("El resultado es: ",resultado,"\n") Menu() caso (opcion == 4) LeerDatos() resultado = Division(operador1,operador2) imprimir ("\n\n",strdup("*",30),"\n") imprimir ("El resultado es: ",resultado,"\n") Menu() sino terminar ("Opcion incorrecta!\n") } } fin
subrutina LeerDatos() inicio imprimir ("Dame el primer numero: ") leer(operador1) imprimir ("Dame el segundo numero: ") leer(operador2) fin
subrutina Suma(n1:numerico; n2:numerico) retorna numerico var solucion = 0 inicio solucion = n1 + n2 retorna (solucion) fin
subrutina Resta(n1:numerico; n2:numerico) retorna numerico var solucion = 0 inicio solucion = n1 - n2 ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 107
retorna (solucion) fin
subrutina Multiplicacion(n1:numerico; n2:numerico) retorna numerico var solucion = 0 inicio solucion = n1 * n2 retorna (solucion) fin
subrutina Division(n1:numerico; n2:numerico) retorna numerico var solucion = 0 inicio solucion = n1 / n2 retorna (solucion) fin
Objetivo Este es el ejercicio final explicado por el profesor, ya que contiene todos los elementos vistos en todos los ejercicios, ademas del uso de archivos externos para grabar y leer la informacion. Subrutinas, funciones, constantes, variables, definicion de tipos, arreglos de registro, ciclos, condiciones y algunas funciones del lenguaje SLE PROBLEMA 18 (Ejemplo completo de Sistema ABC, Archivos externos) Realizar un programa que realice las operaciones basicas altas, bajas, cambios de un archivo de alumnos como un sistema escolar para inscripciones. Debe usar un archivo de texto para almacenar la informacion Algoritmo SLE /* Programa 18. Realizar un programa que realice las operaciones basicas altas, bajas, cambios de un archivo de alumnos como un sistema escolar para inscripciones Debe usar un archivo de texto para almacenar la informacion */
tipos fecha : registro ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 108
{dia,mes,ano:cadena}
var operador1, operador2,resultado: numerico opcion = 0 x = 1 linea :cadena alumno : vector[*] registro { control:cadena nombre: cadena apellido: cadena edad: cadena carrera:cadena fechaalta:fecha } totReg:numerico
inicio cls() //dim( alumno,4) Menu()
mientras (opcion<>0) { eval { caso (opcion == 1) AltaRegistro() //resultado = Suma(operador1,operador2) //imprimir ("\n\n",strdup("*",30),"\n") //imprimir ("El resultado es: ",resultado,"\n") Menu() caso (opcion == 2) BorrarRegistro() Menu() caso (opcion == 3) ModificarRegistro() Menu() caso (opcion == 4) //InicializaMatriz() ListarDatos() Menu() sino terminar ("Opcion incorrecta!\n") } } ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 109
fin
subrutina Menu() inicio imprimir (strdup("=",40),"\n") imprimir ("Sistema de Inscripciones Escolar \n") imprimir ("Selecciona una operacion. 0=Termina\n") imprimir ("1) Agregar un alumno \n") imprimir ("2) Borrar un alumno \n") imprimir ("3) Modificar datos de alumno \n") imprimir ("4) Listado de alumnos \n") leer (opcion) fin
subrutina InicializaMatriz() inicio dim(alumno,1) si (not set_stdin( arch_entrada)) { imprimir ("\nNo se pudo abrir el archivo ",arch_entrada, ".\nEl programa no puede continuar") terminar ("\nEjecucion terminada con error\n") } x=1 totReg = ContarRegistros() imprimir ("total de registros encontrados:",totReg,"\n") dim(alumno,totReg) set_stdin( arch_entrada) mientras (not eof()) { leer( alumno[x].control) leer( alumno[x].nombre) leer( alumno[x].apellido) leer( alumno[x].edad) leer( alumno[x].carrera ) leer( alumno[x].fechaalta.dia) leer( alumno[x].fechaalta.mes) leer( alumno[x].fechaalta.ano) x = x + 1 } set_stdin("") fin
subrutina ListarDatos() inicio dim(alumno,1) si (not set_stdin( arch_entrada)) ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 110
{ imprimir ("\nNo se pudo abrir el archivo ",arch_entrada, ".\nEl programa no puede continuar") terminar ("\nEjecucion terminada con error\n") } x=1 totReg = ContarRegistros() imprimir ("total de registros encontrados:",totReg,"\n") dim(alumno,totReg) set_stdin( arch_entrada) mientras (not eof()) { leer( alumno[x].control) leer( alumno[x].nombre) leer( alumno[x].apellido) leer( alumno[x].edad) leer( alumno[x].carrera ) leer( alumno[x].fechaalta.dia) leer( alumno[x].fechaalta.mes) leer( alumno[x].fechaalta.ano) x = x + 1 } set_stdin("") /* Ciclo imprimir */
desde x=1 hasta totReg { //imprimir (alumno[x].nombre,"\n") imprimir (alumno[x].control,"\t",alumno[x].nombre," ",alumno[x].apellido,"\t",alumno[x].edad,"\t",alumno[x].carrera,"\t") imprimir (alumno[x].fechaalta.dia,"/",alumno[x].fechaalta.mes,"/",alumno[x].fechaalta.ano,"\n") } set_stdin("") fin
subrutina ContarRegistros() retorna numerico var contreg=0 inicio mientras (not eof()) { leer( linea ) contreg = contreg + 1 } contreg = contreg/8 // importante: dividir entre la cantidad de campos establecido ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 111
imprimir ("conto registros:",contreg,"\n") set_stdin("") retorna (contreg) fin
subrutina AltaRegistro() var nocontrol:numerico vControl,vNombre,vApellido,vEdad,vCarrera,vDia,vMes,vAno:cadena
inicio imprimir (strdup("*",30),"\n") imprimir ("ALTAS DE ALUMNOS\n") imprimir (strdup("*",30),"\n") // Volvemos a necesitar saber cuantos registros tenemos para agregar uno nuevo automaticamente si (not set_stdin( arch_entrada)) { imprimir ("\nNo se pudo abrir el archivo ",arch_entrada, ".\nEl programa no puede continuar") terminar ("\nEjecucion terminada con error\n") }
totReg = ContarRegistros() //Saber cuantas filas tiene nuestro archivo /*El archivo de entrada debio cerrarse en la funcion anterior para poder leer desde el teclado*/ /*Pedir la informacion por el teclado al usuario */ nocontrol = totReg + 1 //Como vamos a agregar,sumamos 1 imprimir ("Control: ",nocontrol,"\n") imprimir ("Nombre : ") leer( vNombre ) imprimir ("Apellido: ") leer( vApellido ) imprimir ("Edad : ") leer( vEdad ) imprimir ("Carrera : ") leer( vCarrera ) imprimir ("Dia de Inscripcion: ") leer( vDia ) imprimir ("Mes de Inscripcion: ") leer( vMes ) imprimir ("Ano de Inscripcion: ") leer( vAno )
/*Ahora hay que agregar los datos a nuestro archivo */ si (not set_stdout(arch_salida,"at")) { ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 112
terminar( "\nNo se pudo abrir el archivo "+arch_salida) } /* A partir de ahora, imprimir grabara en el archivo no veremos nada en la pantalla */ vControl = str( nocontrol,2,0,"0" ) imprimir ("\n",vControl,",",vNombre,",",vApellido,",",vEdad,",",vCarrera,",",vDia,",",vMes,",",vAno) set_stdout("") imprimir ("REGISTRO GRABADO!\n") fin
subrutina ModificarRegistro() /* Para modificar un registro, tenemos que mostrarlos al usuario, al hacerlo, estaremos cargando la matriz para conocer en que posicion esta, luego volvemos a preguntar la informacion y se procede a grabar todos los registros*/ var pos:numerico regtotal:numerico j:numerico
inicio ListarDatos() /*Ahora pregunta que registro quiere modificar*/ imprimir ("Que registro quieres modificar? 0=Nada\n") leer(pos) si (pos<>0) { imprimir ("Control: ",alumno[pos].control,"\n") imprimir ("Nombre : ") leer( alumno[pos].nombre ) imprimir ("Apellido: ") leer( alumno[pos].apellido ) imprimir ("Edad : ") leer( alumno[pos].edad ) imprimir ("Carrera : ") leer( alumno[pos].carrera ) imprimir ("Dia de Inscripcion: ") leer( alumno[pos].fechaalta.dia ) imprimir ("Mes de Inscripcion: ") leer( alumno[pos].fechaalta.mes ) imprimir ("Ano de Inscripcion: ") leer( alumno[pos].fechaalta.ano ) } /*Ahora hay que grabar los datos a nuestro archivo */ si (not set_stdout(arch_salida)) { terminar( "\nNo se pudo abrir el archivo "+arch_salida) } ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 113
/* A partir de ahora, imprimir grabara en el archivo no veremos nada en la pantalla */ //vControl = str( nocontrol,2,0,"0" ) regtotal = alen(alumno)
inicio /* Iniciamos mostrando los registros al usuario */ ListarDatos() /* Ahora pregunta que registro quiere borrar */ imprimir ("Que registro quieres eliminar? 0=Nada\n") leer( posicion ) si (posicion <> 0 ) { /*Ahora hay que grabar los datos a nuestro archivo saltandose el registro que queremos eliminar */ si (not set_stdout(arch_salida)) { terminar( "\nNo se pudo abrir el archivo "+arch_salida) } /* A partir de ahora, imprimir grabara en el archivo no veremos nada en la pantalla */ //vControl = str( nocontrol,2,0,"0" ) regtotal = alen(alumno)
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 114
si (j<>posicion) { imprimir (alumno[j].control,",",alumno[j].nombre,",",alumno[j].apellido,",",alumno[j].edad,",",alumno[j].carr era,",") imprimir (alumno[j].fechaalta.dia,",",alumno[j].fechaalta.mes,",",alumno[j].fechaalta.ano) j=2 sino j=2 } desde contador=2 hasta regtotal { si (contador<>posicion) { imprimir ("\n",alumno[j].control,",",alumno[j].nombre,",",alumno[j].apellido,",",alumno[j].edad,",",alumno[j]. carrera,",") imprimir (alumno[j].fechaalta.dia,",",alumno[j].fechaalta.mes,",",alumno[j].fechaalta.ano) j=j+1 sino j=j+1 } } set_stdout("") imprimir ("\nREGISTRO ELIMINADO!\n") } fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 115
ANEXO 1 DIAGRAMAS DE FLUJO
En este apartado se presentan algunas practicas para trabajar unicamente con diagramas de flujo (sin pseudocodigo) ya sea a mano, usando el programa DPD, o Edraw. El alumno debera realizar los diagramas correspondientes a cada uno de los problemas presentados
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS
Cuaderno de Ejercicios Pgina 116
PROBLEMA 1 Hacer el diagrama de flujo para sumar dos numeros leidos por el teclado y escribir el resultado
PROBLEMA 2 Modificar el anterior pero para sumar 100 numeros leidos por el teclado
PROBLEMA 3 Modificar el anterior para que permita sumar N numeros. El valor de N se debe leer previamente por teclado
PROBLEMA 4 Hacer un diagrama de flujo que permita escribir los 100 primeros pares
PROBLEMA 5 Hacer un diagrama de flujo que permita escribir los 100 primeros pares
PROBLEMA 6 Hacer un diagrama de flujo que simule un reloj