116
ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS Cuaderno de Ejercicios Página 1 CUADERNO DE TRABAJO 2011 Cuaderno de Ejercicios Estructura de Datos se encuentra bajo una Licencia Creative Commons Atribución-No Comercial- Licenciamiento Recíproco 3.0 Unported . IDSystems Octubre 2011

40128779 Cuaderno Ejercicios Alumno

Embed Size (px)

Citation preview

Page 1: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 1

CUADERNO DE TRABAJO 2011

Cuaderno de Ejercicios Estructura de Datos se encuentra bajo una Licencia Creative Commons Atribución-No Comercial-

Licenciamiento Recíproco 3.0 Unported. IDSystems Octubre 2011

Page 2: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 2

Contenido Contenido ................................................................................................................................................................... 2 INTRODUCCION .......................................................................................................................................................... 5

PROBLEMA 1 (Asignacion) ...................................................................................................................................... 6 EJERCICIOS DE COMPRENSION ................................................................................................................................ 10

Ejercicio 1 Calcular Edad ...................................................................................................................................... 10 Ejercicio 2 Inversion Banco .................................................................................................................................. 11 Ejercicio 3 Descuento Supermercado .................................................................................................................. 11 PRACTICA 1 Comision Vendedor .......................................................................................................................... 12 PRACTICA 2 Descuento Tienda ............................................................................................................................. 13 PRACTICA 3 Calificacion ....................................................................................................................................... 13 PRACTICA 4 Porcentaje Hombres-Mujeres .......................................................................................................... 14 PRACTICA 5 Cambio Divisas ................................................................................................................................. 14 PRACTICA 6 Incremento Salario ........................................................................................................................... 15 Ejercicio 4 Promedio Calificaciones ...................................................................................................................... 15 Ejercicio 5 Varios Descuentos .............................................................................................................................. 16 Ejercicio 6 Promedios USA ................................................................................................................................... 17 PRACTICA 11 Joven Viejo ..................................................................................................................................... 18 PRACTICA 12 Alto Chaparro ................................................................................................................................. 18 PRACTICA 13 Contraseña ..................................................................................................................................... 19 PRACTICA 14 Ordernar 2 numeros ....................................................................................................................... 19 PRACTICA 15 Operaciones Numeros .................................................................................................................... 20 PRACTICA 16 Encontrar Numero Mayor .............................................................................................................. 20

PROBLEMAS BASICOS ............................................................................................................................................... 22 PROBLEMA 2 (Mientras..Hacer, Si..Entonces)...................................................................................................... 22 PROBLEMA 3 (Asignacion) .................................................................................................................................... 23 PROBLEMA 4 (Si…Entonces) ................................................................................................................................. 23 PROBLEMA 5 (Si..Entonces anidadas) .................................................................................................................. 24 PROBLEMA 6 (Si..Entonces, operadores logicos) ................................................................................................. 24 PROBLEMA 7 (Si…Entonces) ................................................................................................................................. 25 PROBLEMA 8 (Si..Entonces) ................................................................................................................................. 25 PROBLEMA 9 (Asignacion) .................................................................................................................................... 26

EJERCICIOS DE COMPRENSION ................................................................................................................................ 27 Ejercicio 07 Calculo Areas .................................................................................................................................... 27 Ejercicio 08 Premios Compra ............................................................................................................................... 28 PRACTICA 21 Premios Compra x Genero ............................................................................................................. 29 PRACTICA 22 Color Auto ...................................................................................................................................... 31 Ejercicio 09 Calificaciones .................................................................................................................................... 32 Ejercicio 10 Supermercado Descuento ................................................................................................................ 33 PRACTICA 25 Contraseña ..................................................................................................................................... 34 PRACTICA 26 Perimetros Areas ............................................................................................................................ 35 Ejercicio 11 Cuadrado Numeros ........................................................................................................................... 38 Ejercicio 12 Salarios Mensuales ........................................................................................................................... 38 PRACTICA 27 Suma Numeros ............................................................................................................................... 39 PRACTICA 28 Calculo Salario Semanal ................................................................................................................. 40 Ejercicio 13 Tabla Multiplicar ............................................................................................................................... 41

Page 3: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 3

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

Page 4: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 5: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 enseñar los conceptos basicos de la programacion. El temario abarca los conceptos de algoritmos, su uso, su aplicación, 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 enseñanza de dichos

conceptos, este Cuaderno hace referencia a 3 software basicos de enseñanza 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 español, 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 enseñanza 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 español, muy semejantes a C++ lo prepara para el aprendizaje de este importante lenguaje y le enseña 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

Page 6: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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:

Page 7: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 7

Ejemplo de realizacion en PseInt:

Codigo PSEInt

Page 8: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 8

Ejemplo de realizacion usando SLE:

El mismo programa pero creado en el software SLE quedaria asi:

Page 9: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 9

Page 10: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 10

EJERCICIOS DE COMPRENSION

Objetivo En esta primera parte, se encuentran los ejercicios y practicas que vienen en el Manual Diseño 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, pequeños y como limite contener expresiones simples de condicion Si…Entonces…Sino. 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 (si…entonces)

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 año en que nacio.

Proceso ejercicio01 // Realizar un algoritmo que calcule la edad de una persona a la cual // solo se le solicitara el año en que nacio. edad<-0; ano_nac <-0; ano_act <-0; Escribir "En que año naciste?"; Leer ano_nac; Escribir "En que año estamos?"; Leer ano_act; Edad <- ano_act - ano_nac Escribir "Tu edad actual es ", edad; FinProceso

Page 11: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 año 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 año 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;

Page 12: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 13: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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; calif_final <- (calif1 + calif2 + calif3) /3; Escribir "Tu calificacion final es: ", calif_final;

Page 14: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 14

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; mujeres <- (cant_mujeres * 100) / alumnos hombres <- ((alumnos- cant_mujeres) * 100) / alumnos 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?";

Page 15: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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: ";

Page 16: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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;

Page 17: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 18: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 años

Proceso practica04 // Necesitamos saber si una persona es "joven" o "vieja" basandonos // en su edad. Joven es aquella menor de 45 años 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 altura <- 0; Escribir "Cuanto mides?"; Leer altura; Si altura < 1.65 Entonces Escribir "Upps! eres chaparro"; Sino Escribir "Oh! eres alto"; FinSi FinProceso

Page 19: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 19

Objetivo Condicionales Simples: Si… Entonces

PRACTICA 13

Contraseña

Necesitamos verificar que la contraseña que escribe el usuario es igual a "solrac". Dependiendo de lo ingresado desplegar el mensaje correspondiente.

Proceso practica06 // Necesitamos verificar que la contraseña que escribe el usuario // es igual a "solrac". Dependiendo de lo ingresado desplegar el // mensaje correspondiente. contrasena <- " "; Escribir "Cual es la contraseña 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

Page 20: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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;

Page 21: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 22: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 aplicación de diagramas de flujo y pseudocodigo. Estos ejercicios deberan ser simples, pequeños y como limite contener expresiones simples de condicion Si…Entonces…Sino. 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 (si…entonces)

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

Page 23: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 operación 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 SI…ENTONCES

PROBLEMA 4

(Si…Entonces)

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

Page 24: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 24

tarifa_extra <-- tarifa + 0.50 * tarifa horas_extras <-- horas_trabajadas - 40 salario <-- horas_extras * tarifa_extra + 40 * tarifa fin_si imprimir: salario. Fin

Objetivo Trabajar con las sentencias SI…ENTONCES 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 SI…ENTONCES y operadores logicos (dos condiciones en 1)

PROBLEMA 6

(Si..Entonces,

operadores

logicos)

Diseñar 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")

Page 25: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 25

Sino Escribir ("Desaprobado") Fin_si Fin

Objetivo Practica de condicionales SI…ENTONCES. Uso de operaciones de divicion y como calcular el residuo

PROBLEMA 7

(Si…Entonces)

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 SI…ENTONCES

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 más 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

Page 26: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 26

Objetivo Problema simple de asignacion, lectura e impresión.

PROBLEMA 9

(Asignacion)

Diseñar un algoritmo que me permita ingresar un valor inicial y luego un valor final, para luego calcular el valor central de los números.

Inicio A1, A2: entero C: real Leer "Valor inicial",A1 Leer "Valor final",A2 Hacer C « (A1+A2)/2 Mostrar "Valor central",C Fin

Page 27: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 27

EJERCICIOS DE COMPRENSION

Objetivo Condicionales Multiples: SEGÚN…HACER

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:

Page 28: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 28

Escribir "** ERROR ** No seleccionaste una opcion valida"; FinSegun Escribir "El resultado del perimetro calculado es: ", perimetro; FinProceso

Objetivo Condicionales Multiples: SEGÚN…HACER

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

Page 29: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 29

FinSegun Sino Escribir "Lo sentimos, no puedes participar en el sorteo"; FinSi FinProceso

Objetivo Condicionales Multiples: SEGÚN…HACER

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 uñas

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

Page 30: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 30

// 4 Plancha // 5 Barniz de uñas 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 uñas"; FinSegun FinSi FinProceso

Page 31: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 31

Objetivo Condicionales Multiples: SEGÚN…HACER

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"

Page 32: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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.

Page 33: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 33

parcial1 <- 0; parcial2 <- 0; parcial3 <- 0; promedio_alumno <- 0; promedio_general <- 0; acumulado_promedio <- 0; acumulador <- 0; total_alumnos <- 0; contador <- 0; respuesta <- "n"; 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

Page 34: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 34

total <- 0; subtotal <- 0; descuento <- 0; ingresos <- 0; respuesta <- "n"; 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

Contraseña

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"

Page 35: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 ";

Page 36: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 37: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 ";

Page 38: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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.

Page 39: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 40: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 puesto <- 0; turno <- 0; horas_trab <- 0; salario <- 0; respuesta <-"n" 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

Page 41: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 HACER…PARA

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;

Page 42: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 HACER…PARA

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 HACER…PARA

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;

Page 43: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 HACER…PARA

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. alumnos <- 0 contador <- 0 calificacion <- 0 suma_calif <- 0 suma_global <- 0 promedio_alumno <- 0 promedio_general <- 0 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

Page 44: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 44

Objetivo Ciclo HACER…PARA

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 // Inicializar los arreglos Dimension calif[6]; // Inicializar variables subindice <- 0; acum_calif <- 0; Escribir "Captura las calificaciones." Para subindice<-1 hasta 6 hacer

Page 45: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 46: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 47: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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;

Page 48: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 49: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 50: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 DESDE…HASTA. De preferencia estos ejercicios debera realizarlos el alumno Y el profesor. O exponerlos el profesor en el pizarron para explicarlos y luego hacer según 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 (si…entonces), condicionales multiples (En CASO DE…), ciclos (MIENTRAS, HASTA, PARA)

Herramientas Cuaderno y lapiz PSint

Page 51: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 51

Objetivo Practicar condicionales SI…ENTONCES 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

Page 52: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 SI…Entonces 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

Page 53: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 54: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 54

sueldo_neto <- venta + comision; Escribir "Su sueldo neto en el mes es de: ", sueldo_neto; FinProceso

Objetivo Estructura con sentencias SI…ENTONCES 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

Page 55: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 clave1<-""; clave2<-""; clave3<-""; clave4<-""; clave5<-""; 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

Page 56: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 56

FinSi FinProceso

Objetivo Practicar las condiciones multiples y/o anidadas. El ejercicio puede resolverse usando las sentencias SI…ENTONCES de manera anidada o la sentenca EN CASO DE…

PROBLEMA 4

(Condiciones

multiples)

Diseñar un programa que permita controlar la venta de pasajes a los clientes según la categoría 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= "económico" , 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")

Page 57: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 58: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 58

| FIN

Proceso problema04_VentaBoletos // Diseñar 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

Page 59: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 años “niño”, si la edad es de 11 a 14 años “púber” , si la edad es de 15 a 18 años “ adolescente” , si la edad es de 19 a 25 años “joven” , si la edad es de 26 a 65 años “ adulto”, si la edad es mayor de 65 “anciano”

inicio

Leer n

si n >=0 y n<=10 entonces

escribir “niño ”

sino

si n >=11 y n<=14 entonces

escribir “púber “

sino

si n>=15 y n<=18 entonces

Page 60: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 años "niño"

// Si la edad es de 11 a 14 años "puber"

// Si la edad es de 15 a 18 años "adolescente"

// Si la edad es de 19 a 25 años "joven"

// Si la edad es de 26 a 65 años "adulto"

// Si la edad es mayor de 65 años "anciano"

edad <- 0;

Escribir "Cual es tu edad?";

Leer edad;

Si edad >=0 Y edad <=10 Entonces

Escribir "Eres niño";

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"

Page 61: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 61

FinSi

FinSi

FinSi

FinSi

FinSi

FinProceso

Objetivo Practicar ciclo REPETIR…HASTA y sentencia SI..ENTONCES

PROBLEMA 6

(Ciclo

Repetir..hasta,

Si..Entonces)

Diseñar 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 // Diseñar 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

Page 62: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 62

Objetivo Practicar condicionales SI..ENTONCES. Este ejercicio agrega la complejidad para determinar el residuo de operaciones de division y la resolucion de años bisiestos

PROBLEMA 7

(Si..Entonces,

Bisiesto)

Escribir un algoritmo que determine si un año es bisiesto. Un año es bisiesto si es múltiplo de 4 (por ejemplo 1984). Los años múltiplos de 100 no son bisiestos, salvo si ellos son también múltiplos de 400 (2000 es bisiesto, pero; 1800 no lo es).

Inicio Año, B : entero Leer "Año" Si (B mod 4000 = 0) entonces Mostrar "Año es bisiesto" Fin_Si Si (B mod 100 = 0) entonces Mostrar "Año no es bisiesto" Fin_Si Si (B mod 4 = 0) entonces Mostrar "Año es bisiesto" Sino Mostrar "Año no es bisiesto" Fin_Si Fin

Proceso problema07_Bisiesto // Escribir un algoritmo que determine si un año es bisiesto. Un año es bisiesto si es multiplo // de 4 (por ejemplo 1984). Los años 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

Page 63: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 64: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 64

Objetivo Practicar condiciones multiples usando EN CASO DE… y SI…ENTONCES. Se proponen dos soluciones para resolver el problema

PROBLEMA 9

(En caso de..,

Si..Entonces)

Habitaciones de una casa rural (Alternativa múltiple - Pseudocódigo CEE)

En la siguiente tabla se muestra el número de camas de las habitaciones de una casa rural, además de la

planta donde está ubicada cada una de ellas:

Habitación Camas Planta

1. Azul 2 Primera

2. Roja 1 Primera

3. Verde 3 Segunda

4. Rosa 2 Segunda

5. Gris 1 Tercera

Diseñe el algoritmo (en pseudocódigo) de un programa que:

1º) Muestre el listado de las habitaciones de la casa rural.

2º) Pida por teclado el número (dato entero) asociado a una habitación. 3º) Muestre por pantalla la planta y el número de camas de la habitación seleccionada.

Nota: Si el número introducido por el usuario, no está asociado a ninguna habitación, se mostrará el mensaje:

"ERROR: <número> no está asociado a ninguna habitación.".

En pantalla:

Listado de habitaciones:Listado de habitaciones:Listado de habitaciones:Listado de habitaciones: 1. Azul1. Azul1. Azul1. Azul 2. Roja2. Roja2. Roja2. Roja 3. Verde3. Verde3. Verde3. Verde 4.4.4.4. RosaRosaRosaRosa 5. Gris5. Gris5. Gris5. Gris Introduzca número de habitación:Introduzca número de habitación:Introduzca número de habitación:Introduzca número de habitación: 3333 LaLaLaLa Verde tiene 3 caVerde tiene 3 caVerde tiene 3 caVerde 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. Azul1. Azul1. Azul1. Azul 2. Roja2. Roja2. Roja2. Roja 3. Verde3. Verde3. Verde3. Verde 4.4.4.4. RosaRosaRosaRosa 5. Gris5. Gris5. Gris5. Gris Introduzca número de habitación:Introduzca número de habitación:Introduzca número de habitación:Introduzca número de habitación: 7777 ERROR: 7 no está asociado a ninguna habitación.ERROR: 7 no está asociado a ninguna habitación.ERROR: 7 no está asociado a ninguna habitación.ERROR: 7 no está asociado a ninguna habitación.

SOLUCION 1: algoritmo Habitaciones_de_una_casa_rural

Page 65: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 65

variables entero numero inicio escribir( "Listado de habitaciones: " ) escribir( "1. Azul " ) escribir( "2. Roja " ) escribir( "3. Verde " ) escribir( "4. Rosa " ) escribir( "5. Gris " ) escribir( "Introduzca número de habitación: " ) leer( numero ) 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 habitación. " ) fin_segun_sea fin SOLUCION 2: algoritmo Habitaciones_de_una_casa_rural variables entero numero , camas cadena nombre , planta inicio escribir( "Listado de habitaciones: " ) escribir( "1. Azul " ) escribir( "2. Roja " ) escribir( "3. Verde " ) escribir( "4. Rosa " ) escribir( "5. Gris " ) escribir( "Introduzca número de habitación: " ) leer( numero ) 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

Page 66: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 habitación. " ) fin_si fin

Page 67: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 ficha : vector [2] registro //Estructura { alumno : cadena; num_control : numerico calif : vector[4] numerico //arreglo simple } 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 ")

Page 68: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 */ var indice : numerico producto : vector [10] registro { clave : numerico descripcion : cadena precios : vector[3] numerico } 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)

Page 69: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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)

Page 70: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 70

imprimir ("Telefono......:") leer (alumnos[indice].telefono) imprimir ("Semestre......:") leer (alumnos[indice].semestre) imprimir ("Grupo.........:") leer (alumnos[indice].grupo) imprimir ("Matricula.....:") leer (alumnos[indice].matricula) 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

Page 71: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 72: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 /* Modulo Precio Neto */ subrutina Precio_Neto( precio, descuento:numerico) retorna numerico var nuevo_precio: numerico inicio nuevo_precio = precio - (precio * descuento) imprimir ("Resultado: ",nuevo_precio,"\n\n") retorna (nuevo_precio) fin

Page 73: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 73

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 ("Año:") 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)

Page 74: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 75: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 /* Modulo */ subrutina CalculoSalario( vHoras, vPrecio, vExtras:numerico) retorna numerico var vSueldo: numerico inicio vSueldo = (vHoras * vPrecio) + ( (vHoras - 40) * vExtras) retorna (vSueldo) 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 inicio

Page 76: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 76

cls() repetir imprimir ("Calificacion 1:") leer (calif1) imprimir ("Calificacion 2:") leer (calif2) imprimir ("Calificacion 3:") leer (calif3) cCalif = LetraCalif( calif1, calif2, calif3) imprimir ("La calificacion del alumno es: ", cCalif, "\n\n") imprimir ("Deseas calcular otra alumno? (s/n)") leer (resp) hasta (resp=="n") fin /* Modulo */ subrutina LetraCalif( vCalif1, vCalif2, vCalif3:numerico) retorna cadena var vPromedio: numerico cLetra:cadena inicio 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

Page 77: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 DESDE…HASTA, 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.Según 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 (si…entonces), 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

Page 78: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 78

Objetivo Practicar el ciclo MIENTRAS…HACER

PROBLEMA 1

(Mientras..

Hacer)

La compañia Barner posee una caja con $3.71 con la cual empieza todos los dias diariamente se registran egresos. Calcular los egresos de la compañia y mostrar cuanto queda en caja. (el programa termina cuando se ingresa un egreso imaginario de -1)

Algoritmo INICIO Caja=371 Egreso=0 mientras egreso <> -1 Hacer: Caja= Caja - Egreso Leer Egreso Fin_mientras Escribir Caja FIN

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

Page 79: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 79

Objetivo Practicar arreglos unidimensionales (vectores), ciclo MIENTRAS…HACER

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

Page 80: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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")

Page 81: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 “MÁXIMO” Max

Page 82: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 83: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 83

Objetivo Practicar ciclo MIENTRAS…HACER, 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 categoría, edad y sueldo ademas el programa debe visualizar un mensaje “existen trabajadores mayores de 65 años en un numero de ...” y el numero de trabajadores mayores de 65 años.

Algoritmo Inicio SW <- 0 mientras SW = 0 hacer Leer FICHA (NOMBRE CATEGORÍA, 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 AÑOS 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

Page 84: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 AÑOS 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()

Page 85: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 86: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 según el problema dado. Tambien, introduce al alumno en el concimiento de generacion de claves o identificadores o contraseñas 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 */

Page 87: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 87

var nombre, appaterno, apmaterno, codigo : vector [22] cadena calif1, calif2, promedio : vector [22] numerico contador, aprobados, reprobados : numerico 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")

Page 88: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 número mayor de una lista de números.

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 )

Page 89: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 MIENTRAS…HACER, combinado con una condicion y la operación 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 números enteros. El programa debe sumar todos los números que sean múltiplos 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

Page 90: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 contraseña 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 imprimiéndolas al revés. 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

Page 91: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 91

invertida: cadena longitud, k, letra : numerico inicio cls() imprimir ("Dame una palabra o frase:") leer (palabra ) /* Conocer el tamaño 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 POSICIÓN 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

Page 92: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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},

Page 93: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 93

{"Berumen Gerardo",85,100}, {"Camargo Zacarias",70, 98}, {"Garcia Carmen",25,100}, {"Gomez Eder",85,100}, {"Gonzalez Karen",70, 98}, {"Gonzalez Julio",25,100}, {"Hernandez Omar",85,100}, {"Ibarra Christian",70, 98}, {"Maldonado Daniel",25,100}, {"Martinzez Juan",85,100}, {"Mendoza Mario",70, 98}, {"Pedraza Brenda",25,100}, {"Prado Daniel",85,100}, {"Resendiz Victor",70, 98}, {"Robles David",25,100}, {"Rocha Nancy",85,100}, {"Salazar Ruben",70, 98}, {"Tristan Agustin",25,100} } fin 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

Page 94: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 */ var i,j : numerico aux1, aux2 : numerico vArticulo : cadena vPrecio : numerico ficha : vector [*] registro { articulo : cadena; precio : numerico } inicio cls() MatrizArticulos() MostrarArticulos() imprimir ("\nListado de Articulos segun precio\n") MostrarArtXPrecio() imprimir ("\nFin") fin /* La siguiente subrutina inicializara la matriz de alumnos */

Page 95: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 95

subrutina MatrizArticulos() inicio ficha = { {"Aceite",21}, {"Barritas Piña 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 */ vArticulo = ficha[i].articulo vPrecio = ficha[i].precio desde j=i+1 hasta alen(ficha) { si ( vPrecio < ficha[j].precio) {

Page 96: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 96

vPrecio = ficha[i].precio vArticulo = ficha[i].articulo ficha[i].precio = ficha[j].precio ficha[i].articulo = ficha[j].articulo ficha[j].precio = vPrecio ficha[j].articulo = vArticulo } } } MostrarArticulos() fin

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 años Aumento: S/. 100 Tiempo de servicio: de 5 a 10 años Aumento: S/. 250 Tiempo de servicio: de 10 a 20 años Aumento: S/. 400 Tiempo de servicio: de 20 años a más 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[120 0] 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

Page 97: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 años - Aumento 100 5 a 10 años - 250 10 a 20 años - 400 20 años 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

Page 98: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 vTiempo = tiempo[x] tiempo[x] = tiempo[y] tiempo[y] = vTiempo vSueldo = sueldo[x] sueldo[x] = sueldo[y] sueldo[y] = vSueldo

Page 99: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 operación 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 relación de las personas mayores de 35 años.

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

Page 100: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 100

SLE /* PROBLEMA 14. Dada una lista de 100 personas se pide una relacion de las personas mayores de 35 años. 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

Page 101: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 desde…hasta anidados, condicional Si..entonces

PROBLEMA

15(Examen

1)

Al final del curso deseamos saber cual ha sido el alumno de primer año con mejor nota media. Se sabe que este año 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 año entraron 150 alumnos y que en primero todos tienen 5 asignaturas. Dar el nombre y la nota media */ const alumnos = 5 //en realidad 150 asignaturas = 5 var nombre, mejor_alumn : cadena nota, suma, media, acum : numerico i,j : numerico 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

Page 102: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 103: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 104: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 105: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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")

Page 106: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 Menu() inicio imprimir (strdup("=",30),"\n") imprimir ("Selecciona una operacion. 0=Termina\n ") imprimir ("1) Suma\n") imprimir ("2) Resta\n") imprimir ("3) Multiplicacion\n") imprimir ("4) Division\n") leer (opcion) 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

Page 107: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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 */ const arch_entrada = "alumnos.txt" arch_salida = "alumnos.txt" tipos fecha : registro

Page 108: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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") } }

Page 109: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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))

Page 110: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 111: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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")) {

Page 112: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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) }

Page 113: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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) imprimir (alumno[1].control,",",alumno[1].nombre,",",alumno[1].apellido,",",alumno[1].edad,",",alumno[1].carrera,",") imprimir (alumno[1].fechaalta.dia,",",alumno[1].fechaalta.mes,",",alumno[1].fechaalta.ano) desde j=2 hasta regtotal { 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) } set_stdout("") imprimir ("REGISTRO MODIFICADO!\n") fin subrutina BorrarRegistro() var posicion : numerico regtotal:numerico contador = 1 j= 1 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)

Page 114: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 114

si (j<>posicion) { imprimir (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=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

Page 115: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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

Page 116: 40128779 Cuaderno Ejercicios Alumno

ESTRUCTURA DE DATOS – CUADERNO EJERCICIOS

Cuaderno de Ejercicios Página 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