Você está na página 1de 116

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 1



CUADERNO DE TRABAJO
2011
















Cuaderno de Ejercicios Estructura de Datos se encuentra bajo una Licencia Creative Commons Atribucin-No Comercial-
Licenciamiento Recproco 3.0 Unported. IDSystems Octubre 2011
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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 Contrasea ..................................................................................................................................... 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 (SiEntonces) ................................................................................................................................. 23
PROBLEMA 5 (Si..Entonces anidadas) .................................................................................................................. 24
PROBLEMA 6 (Si..Entonces, operadores logicos) ................................................................................................. 24
PROBLEMA 7 (SiEntonces) ................................................................................................................................. 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 Contrasea ..................................................................................................................................... 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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 4

PROBLEMA 17 (Subrutinas, variables globales, condicion multiple) ................................................................. 105
PROBLEMA 18 (Ejemplo completo de Sistema ABC, Archivos externos) ........................................................... 107
ANEXO 1 DIAGRAMAS DE FLUJO ......................................................................................................................... 115
PROBLEMA 1 ...................................................................................................................................................... 116
PROBLEMA 2 ...................................................................................................................................................... 116
PROBLEMA 3 ...................................................................................................................................................... 116
PROBLEMA 4 ...................................................................................................................................................... 116
PROBLEMA 5 ...................................................................................................................................................... 116
PROBLEMA 6 ...................................................................................................................................................... 116


ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 5

INTRODUCCION

El siguiente cuaderno de ejercicios para el profesor, fue elaborado en base a la materia Estructura de Datos de la
Universidad de Matamoros la cual tiene por objetivo fundamental el ensear los conceptos basicos de la programacion.
El temario abarca los conceptos de algoritmos, su uso, su aplicacin, las sentencias basicas y preparar al alumno
para aprender los conceptos de estructuras de datos.
Aunque se recomienda el uso de un lenguaje de programacion computacional para la enseanza de dichos
conceptos, este Cuaderno hace referencia a 3 software basicos de enseanza de programacion no basada en un
lenguaje informatico propiamente dicho como C++, Delphi, Pascal o Basic.
DFD es un software para la creacion de diagramas de flujo en la cual el alumno aprende y comprende ademas de
los simbolos como se va estructurando un programa y viendolo en ejecucion.
El PseInt es un excelente software de programacion en pseudocodigo basado en C++ (creando en el) para el
aprendizaje de los conceptos basicos sobre asignacion, condicionales, ciclos. En lenguaje espaol, con instrucciones
sencillas el alumno se concentra y centra mas en los conceptos que en las instrucciones de un lenguaje informatico
completo. Ademas, tiene la ventaja que el alumno puede ejecutar el programa y generar el diagrama de flujo como
complemento.
Por ultimo, el SLE 2.0, es otro software para la enseanza de programacion tambien basado en C++ con muchas
mas instrucciones y funciones, ademas de incorporar arreglos, tipos de datos, manejo de archivos permite al estudiante
adquirir el conocimiento de las estructuras de datos. Aunque no incorpora la generacion de diagramas de flujo, sus
instrucciones en espaol, muy semejantes a C++ lo prepara para el aprendizaje de este importante lenguaje y le ensea
las bases para la creacion correcta de algoritmos.
El Cuaderno esta dividio en TRES PARTES. La primera parte de ejercicios basicos, el profesor pondra los ejercicios
para realizarlos completamente por el alumno de ser posible. Si lo desea puede auxiliarse en un laboratorio tanto con el
software DFD o PseInt. Esta parte cubrira los tipos de datos, asignaciones, condicionales y algunos ciclos sencillos.
La segunda parte de ejercicios intermedios, se recomienda el uso exclusivo e intensivo de PseInt para que el
alumno elabore los programas. Queda a discrecion del profesor mostrar la solucion al problema o que el alumno lo
resuelva por su cuenta. Aqu se veran la totalidad de los ciclos, condiciones anidadas, condiciones multiples
En la ultima parte de ejercicios avanzados se recomienda el uso exclusivo e intensivo de SLE 2.0 para que el
alumno elabora sus programas. Queda a discrecion del profesor mostrar la solucion al problema o que el alumno lo
elabore por si mismo o en equipo. Los ejercicios son mas dificiles y abarcaran ademas de los temas anteriores arreglos
con vectores, matrices, registros, subrutinas (funciones y procedimientos), manejo de archivos externos.

Cada problema mencionado, llevara el objetivo que se persigue al elaborarlo asi como la solucion propuesta.
Cada ejercicio ha sido realizado en cada uno de los programas para revisar su validez y funcionalidad, sin embargo, hay
algunos ejercicios que contienen o pueden contener algunos errores para que el propio alumno los descubra y haga los
arreglos correspondientes.

A diferencia de algunos ejercicios de libros, estos estan basados no en problemas matematicos sino de
situaciones comunes reflejadas en la vida diaria y en sistemas informaticos reales.

L.S.C. Sergio Hugo Sanchez Olivares



ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 6





A continuacion se detallan los ejercicios tanto para hacerse en clase como por cuenta del usuario

Objetivo Aprender a crear un algoritmo en diagrama de flujo y pseudocodigo.
Asignacion de variables y realizacion de operaciones.
Inicio de condicionales.
PROBLEMA 1
(Asignacion)
Se trata de escribir el algoritmo que permita emitir la factura correspondiente a una compra de
un articulo determinado, del que se adquieren una o varias unidades. El IVA es del 15% y si el
precio bruto ( precio venta mas IVA) es mayor de 50.00 pesetas se debe realizar un descuento
del 5%.

Pseudocodigo:

Variables: precio, numeros de articulos(Nart), precio venta(Pv), descuento(d)
Inicio
Leer precio, Nart
Pv= Precio * Nart
IVA= Pv * 0.15
Pb= Pv + IVA
Si Pb >= 50 entonces
d= (Pb * 5)/100
Sino
d= 0
Finsi
Pl= Pb - d
Escribir Pv, IVA, Pb,d, Pl
Fin

Ejemplo de realizacion en DFD:

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 7


Ejemplo de realizacion en PseInt:

Codigo PSEInt

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 8




Ejemplo de realizacion usando SLE:

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

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 9

















ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 10

EJERCICIOS DE COMPRENSION

Objetivo En esta primera parte, se encuentran los ejercicios y practicas que vienen en el Manual Diseo
Estructurado de Algoritmos, abarcan desde como crear las variables, hasta condicionales simples y
anidadas. Tambien estan un resumen de las practicas de dicho Manual. Aunque estos ejercicios son
para realizarse en el aula de clase a traves de pseudocodigo o diagramas de flujo; tambien pueden
realizarse usando el siguiente software: PseInt, DFD, Edraw

Estos ejercicios deberan ser simples, pequeos y como limite contener expresiones simples de
condicion SiEntoncesSino.
De preferencia estos ejercicios debera realizarlos el alumno por si mismo en su cuaderno y
revisarlos despues. Las soluciones contenidas en este cuaderno es para que el maestro muestre
la solucion final y compare con la solucion de los alumnos.

El alumno debera generar el algoritmo en diagrama de flujo y pseudocodigo. Queda a criterio del
profesor el uso de DFD, Psint o SLE
Temas por ver Diagramas de flujo, pseudocodigo, asignacion de variables, tipos de datos sencillos, operaciones
sencillas, condicionales (sientonces)
Herramientas Cuaderno y lapiz
Plantilla de diagrama de flujo
DFD
PSint

Objetivo Inicializar variables, mostrar texto en pantalla y capturar datos
Ejercicio 1
Calcular
Edad
Realizar un algoritmo que calcule la edad de una persona a la cual solo se le solicitara el ao en
que nacio.

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

FinProceso



ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 11


Objetivo Variables y operaciones
Ejercicio 2
Inversion
Banco
Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero
ganara despues de un ao si el banco paga a razon de 2% mensual.

Proceso ejercicio02
// Suponga que un individuo desea invertir su capital en un banco
// y desea saber cuanto dinero ganara despues de un ao si el banco
// paga a razon de 2% mensual.

// Constantes
Interes <- 0.02;
Ano <- 12;

// Variables:
Ganacia <- 0;
Capital <- 0;

Escribir "Cuanto dinero piensas invertir?";
Leer Capital;
Ganancia <- ( Capital * interes ) * Ano;
Escribir "Tu ganancia sera de: ", Ganancia;

FinProceso


Objetivo Variables y Operaciones
Ejercicio 3
Descuento
Supermercado
Se necesita un sistema para un supermercado, el cualdara un 10% de descuento a las personas
que compren mas de $1000, al cliente se le debe dar el total a pagar.

Proceso ejercicio03
// Se necesita un sistema para un supermercado, el cualdara un 10%
// de descuento a las personas que compren mas de $1000, al cliente
// se le debe dar el total a pagar.

Total <-0;
Subtotal <- 0;
Descuento <- 0;

Escribir "Cuanto compro el cliente?";
Leer Subtotal;
Si subtotal > 1000 Entonces
descuento <- subtotal * 0.10;
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 12

Total <- subtotal - descuento;
sino
Total <- subtotal;
FinSi
Escribir "El total a pagar es: ", total;

FinProceso

Objetivo Variables y Operaciones
PRACTICA 1
Comision
Vendedor
Un vendedor recibe un sueldo base mas un 10% extra por comision de sus ventas, el vendedor
desea saber cuanto dinero obtendra por concepto de comisiones por las tres ventas que realiza
en el mes y el total que recibira en el mes tomando en cuenta su sueldo base y comisiones.

Proceso practica01
// Un vendedor recibe un sueldo base mas un 10% extra por comision de
// sus ventas, el vendedor desea saber cuanto dinero obtendra por
// concepto de comisiones por las tres ventas que realiza en el mes
// y el total que recibira en el mes tomando en cuenta su sueldo
// base y comisiones.

sueldo_base <- 0;
comision <- 0;
total <- 0;

Escribir "Cual es el sueldo base del vendedor?";
Leer sueldo_base;
comision <- sueldo_base * 0.10;
total <- (comision * 3) + sueldo_base;
Escribir "Su sueldo base de: ", sueldo_base;
Escribir "(+) su comision : ", comision;
Escribir "le da un total de: ", total;
FinProceso














ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 13

Objetivo Variables y Operaciones
PRACTICA 2
Descuento
Tienda
Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber
cuanto debera pagar finalmente por su compra

Proceso practica02
// Una tienda ofrece un descuento del 15% sobre el total de la compra
// y un cliente desea saber cuanto debera pagar finalmente por su
// compra

subtotal <- 0;
total <-0;
descuento <- 0;

Escribir "Cual fue la compra del cliente?";
Leer subtotal;
descuento <- subtotal * 0.15
total <- subtotal - descuento;
Escribir "Su compra menos el 15% de descuento es: ", total;

FinProceso

Objetivo Variables y Operaciones
PRACTICA 3
Calificacion
Un alumno desea saber cual sera su calificacion final en la materia de Algoritmos. Dicha
calificacion se compone de tres examenes parciales

Proceso practica03
// Un alumno desea saber cual sera su calificacion final en la materia
// de Algoritmos. Dicha calificacion se compone de tres examenes
// parciales

calif1 <-0;
calif2 <-0;
calif3 <-0;
calif_final <-0;
Escribir "Dame la calificacion1: ";
leer calif1;
Escribir "Dame la calificacion2: ";
leer calif2;
Escribir "Dame la calificacion3: ";
leer calif3;

calif_final <- (calif1 + calif2 + calif3) /3;
Escribir "Tu calificacion final es: ", calif_final;

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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?";
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 15

Leer pesos;

dolares <- pesos / tipo_cambio;
Escribir "La cantidad en dolares es: ",dolares


FinProceso

Objetivo Variables y Operaciones
PRACTICA 6
Incremento
Salario
Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario
anterior.

Proceso practica06
// Calcular el nuevo salario de un obrero si obtuvo un incremento
// del 25% sobre su salario anterior.

salario <- 0;
sal_nuevo <-0;
Escribir "Cuanto gana este obrero?";
Leer salario;
sal_nuevo <- (salario * 0.25) + salario;
Escribir "Con un aumento del 25%, ahora ganara: ", sal_nuevo;


FinProceso


Objetivo Condicionales Simples: Si Entonces
Ejercicio 4
Promedio
Calificaciones
Se necesita un programa que reciba tres calificaciones parciales de un alumno y en base a estas
darle su promedio donde si el promedio es menor a 6 se le dira que esta REPROBADO, en caso
contrario el mensaje sera APROBADO.

Proceso ejercicio04
// Se necesita un programa que reciba tres calificaciones parciales
// de un alumno y en base a estas darle su promedio donde si el
// promedio es menor a 6 se le dira que esta REPROBADO, en caso
// contrario el mensaje sera APROBADO.

prom <-0;
calif1 <-0;
calif2 <-0;
calif3 <- 0;

Escribir "Dame la calificacion del primer parcial: ";
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 16

Leer calif1;
Escribir "Dame la calificacion del segundo parcial: ";
Leer calif2;
Escribir "Dame la calificacion del tercer parcial: ";
Leer calif3;
Prom <- (calif1 + calif2 + calif3) /3;
Si prom < 6 Entonces
Escribir "Tu promedio es: ", prom, " y estas REPROBADO";
Sino
Escribir "Tu promedio es: ", prom, " y estar APROBADO";
FinSi

FinProceso

Objetivo Condicionales Simples: Si Entonces
Ejercicio 5
Varios
Descuentos
Se necesita un programa para un supermercado, en el cual si el monto de la compra del cliente
es mayor de 5000 se la hara un descuento del 30%, si es menor o igual a 5000 pero mayor que
3000 sera del 20%, si no rebasa los 3000 pero si los 1000 la rebaja efectiva es del 10% y en caso
de que no rebase los $1000 no tendra beneficio

Proceso ejercicio05
// Se necesita un programa para un supermercado, en el cual si el monto
// de la compra del cliente es mayor de 5000 se la hara un descuento
// del 30%, si es menor o igual a 5000 pero mayor que 3000 sera del
// 20%, si no rebasa los 3000 pero si los 1000 la rebaja efectiva es
// del 10% y en caso de que no rebase los $1000 no tendra beneficio

total <-0;
subtotal <-0;
descuento <-0;
Escribir "Cuanto compro el cliente?";
Leer subtotal;
Si subtotal > 5000 Entonces
descuento <- subtotal * 0.30;
Sino
si subtotal > 3000 Entonces
descuento <- subtotal * 0.20;
Sino
si subtotal > 1000 Entonces
descuento <- subtotal * 0.10;
Sino
descuento <-0;
FinSi
FinSi
FinSi
total <- subtotal - descuento;
Escribir "El total a pagar es: ", total;
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 17


FinProceso

Objetivo Condicionales Simples: Si Entonces
Ejercicio 6
Promedios
USA
Se necesita un sistema que le muestre a un alumno su calificacionen letra y su promedio, el
promedio se sca en base a 3 parciales donde si el promedio es menor a 6 su letra es NA, si es
mayor o igual a 6 y cuando mucho 8 le corresponde S, si sobrepasa el 8 pero menor o igual a 9
debe tener B, todo lo demas es una E

Proceso ejercicio06
// Se necesita un sistema que le muestre a un alumno su calificacion
// en letra y su promedio, el promedio se sca en base a 3 parciales
// donde si el promedio es menor a 6 su letra es NA, si es mayor o
// igual a 6 y cuando mucho 8 le corresponde S, si sobrepasa el 8
// pero menor o igual a 9 debe tener B, todo lo demas es una E

calif1 <- 0;
calif2 <- 0;
calif3 <- 0;
promedio <- 0;
Escribir "Dame la calificacion del primer parcial: ";
Leer calif1;
Escribir "Dame la calificaicon del segundo parcial: ";
Leer calif2;
Escribir "Dame la calificaicon del tercer parcial: ";
Leer calif3;
Promedio <- (calif1 + calif2 + calif3) / 3
si promedio <- 6 Entonces
Escribir "Tu calificion con letra es NA";
Sino
Si promedio <= 8 Entonces
Escribir "Tu calificacion con letra es S";
Sino
Si promedio <= 9 Entonces
Escribir "Tu calificacion con letra es B";
Sino
Escribir "Tu calificacion con letra es E";
FinSi
FinSi

FinSi
Escribir "Ya que tu promedio es: ",promedio;


FinProceso


ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 18

Objetivo Condicionales Simples: Si Entonces
PRACTICA 11
Joven Viejo
Necesitamos saber si una persona es "joven" o "vieja" basandonos en su edad. Joven es aquella
menor de 45 aos

Proceso practica04
// Necesitamos saber si una persona es "joven" o "vieja" basandonos
// en su edad. Joven es aquella menor de 45 aos

edad <-0
Escribir "Cual es tu edad?";
leer edad;

Si edad < 45 Entonces
Escribir "Usted es una persona JOVEN";
Sino
Escribir "Usted es una persona VIEJA";
FinSi

FinProceso

Objetivo Condicionales Simples: Si Entonces
PRACTICA 12
Alto
Chaparro
Necesitamos saber si el usuario es alto o chaparro. Chaparro es aquel que mide cuando mucho
1.65 mts

Proceso practica05
//Necesitamos saber si el usuario es alto o chaparro.
//Chaparro es aquel que mide cuando mucho 1.65 mts

altura <- 0;
Escribir "Cuanto mides?";
Leer altura;

Si altura < 1.65 Entonces
Escribir "Upps! eres chaparro";
Sino
Escribir "Oh! eres alto";
FinSi


FinProceso




ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 19

Objetivo Condicionales Simples: Si Entonces
PRACTICA 13
Contrasea
Necesitamos verificar que la contrasea que escribe el usuario es igual a "solrac". Dependiendo
de lo ingresado desplegar el mensaje correspondiente.

Proceso practica06
// Necesitamos verificar que la contrasea que escribe el usuario
// es igual a "solrac". Dependiendo de lo ingresado desplegar el
// mensaje correspondiente.

contrasena <- " ";
Escribir "Cual es la contrasea para entrar: ";
Leer contrasena;

si contrasena = "solrac" Entonces
Escribir "ACCESO AUTORIZADO";
Sino
Escribir "ACCESO NO AUTORIZADO";
FinSi


FinProceso

Objetivo Condicionales Simples: Si Entonces
PRACTICA 14
Ordernar 2
numeros
Que lea dos numeros y los imprima en forma ascendente.

Proceso practica07
// Que lea dos numeros y los imprima en forma ascendente.

num1 <- 0;
num2 <- 0;
Escribir "Dame el primer numero";
Leer num1;
Escribir "Dame el segundo numero";
Leer num2;
Si num1 > num2 Entonces
Escribir "Orden Ascendente:";
Escribir num2;
Escribir num1;
Sino
Escribir "Orden Ascendente:";
Escribir num1;
Escribir num2;
FinSi
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 20



FinProceso


Objetivo Condicionales Simples: Si Entonces
PRACTICA 15
Operaciones
Numeros
Leer 2 numeros, si son iguales que los multiplique, si el primero es mayor que el segundo que
los reste y si no, que los sume

Proceso practica08
// Leer 2 numeros, si son iguales que los multiplique, si el primero
// es mayor que el segundo que los reste y si no, que los sume

num1 <-0;
num2 <-0;
resultado <-0;
Escribir "Dame el primer numero";
Leer num1;
Escribir "Dame el segundo numero";
Leer num2;
Si num1=num2 Entonces
resultado <- num1 * num2;
Sino
si num1 > num2 Entonces
resultado <- num1 - num2;
Sino
resultado <- num1 + num2;
FinSi
FinSi
Escribir "Y el resultado es: ",resultado;
FinProceso

Objetivo Condicionales Simples: Si Entonces
PRACTICA 16
Encontrar
Numero
Mayor
Leer tres numeros diferentes e imprimir el numero mayor

Proceso practica09
// Leer tres numeros diferentes e imprimir el numero mayor

num1 <-0;
num2 <-0;
num3 <-0;
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 21

Escribir "Dame el primer numero";
Leer num1;
Escribir "Dame el segundo numero";
Leer num2;
Escribir "Dame el tercer numero";
Leer num3;
Si num1 > num2 Entonces
si num1 > num3 Entonces
Escribir "El numero1 ",num1, " es mayor que los otros dos";
FinSi
FinSi

Si num2 > num1 Entonces
si num2 > num3 Entonces
Escribir "El numero2 ",num2, " es mayor que los otros dos";
FinSi
FinSi

Si num3 > num2 Entonces
si num3 > num1 Entonces
Escribir "El numero3 ",num3, " es mayor que los otros dos";
FinSi
FinSi

FinProceso
Proceso practica09b
// Leer tres numeros diferentes e imprimir el numero mayor

num1 <-0;
num2 <-0;
num3 <-0;
Escribir "Dame el primer numero";
Leer num1;
Escribir "Dame el segundo numero";
Leer num2;
Escribir "Dame el tercer numero";
Leer num3;
Si num1 > num2 Y num1 > num3 Entonces
Escribir "El numero1 ",num1, " es mayor que los otros dos";
Sino
si num2 > num1 Y num2 > num3 Entonces
Escribir "El numero2 ",num2, " es mayor que los otros dos";
Sino
Escribir "El numero3 ",num3, " es mayor que los otros dos";
finsi
FinSi
FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 22


PROBLEMAS BASICOS

Objetivo Los siguientes ejercicios estan pensados para el inicio de conceptos de programacion. Aqu estan
los temas basicos de los primeros conceptos, y la aplicacin de diagramas de flujo y pseudocodigo.

Estos ejercicios deberan ser simples, pequeos y como limite contener expresiones simples de
condicion SiEntoncesSino.
De preferencia estos ejercicios debera realizarlos el alumno por si mismo en su cuaderno y
revisarlos despues. Las soluciones contenidas en este cuaderno es para que el maestro muestre
la solucion final y compare con la solucion de los alumnos.

El alumno debera generar el algoritmo en diagrama de flujo y pseudocodigo. Queda a criterio del
profesor el uso de DFD, Psint o SLE
Temas por ver Diagramas de flujo, pseudocodigo, asignacion de variables, tipos de datos sencillos, operaciones
sencillas, condicionales (sientonces)
Herramientas Cuaderno y lapiz
Plantilla de diagrama de flujo
DFD
PSint


Objetivo Aprender sobre el ciclo MIENTRAS.
Mezclar con Condicional SI
PROBLEMA 2
(Mientras..Hacer,
Si..Entonces)
Dado N notas de un estudiante calcular:

a) Cuantas notas tiene desaprobados.
b) Cuantos aprobados.
c) El promedio de notas.
d) El promedio de notas aprobadas y desaprobadas.
Inicio
Leer: N
X<--1
Cd<--0
NA <-0
acum_desap <-0
acum_ap <- 0
acum <- 0
Mientras x<=N hacer
Leer: not
Si: not < 10.5 entonces
CD<--cd+1
acum_desap <- acum_desap + not
Sino
NA <- NA + 1
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 23

acum_ap <- acum_ap + not
fin _ si
acum <- acum + not
x<--x+1
Fin _ mientras
prom_ap <- acum_ap /NA
prom_desap <- acum_desap/CD
prom <- acum / N
Imprimir: prom, prom_ap, prom_desap, NA, CD
Fin



Objetivo Sencillo ejemplo para practicar asignacion de variables, realizar operacin e imprimir.
Si es para dos personas, mostrar como el algoritmo se repite (sin usar ciclos)
PROBLEMA 3
(Asignacion)
Dada las horas trabajadas de una persona la tarifa de pago. Calcular su salario e imprimirla.
Inicio
leer: h, t
S<--h * t
Imprimir: s
fin

(Para dos personas)

inicio
leer: h, t
S<--h * t
Imprimir s
Leer: h, t
S<--h * t
Imprimir: s
Fin


Objetivo Practicar el uso de sentencias condicionales SIENTONCES
PROBLEMA 4
(SiEntonces)
A un trabajador le pagan segun sus horas y una tarifa de pago por horas. si la cantidad de horas
trabajadas es mayor a 40 horas. La tarifa se incrementa en un 50% para las horas extras.
calcular el salario del trabajador dadas las horas trabajadas y la tarifa.
variables: horas_trabajadas,tarifa,horas_extras,salario,tarifa_e
inicio
leer: horas_trabajadas,tarifa
si: horas_trabajadas <= 40 entonces
salario <-- horas_trabajadas * tarifa
si_no
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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 SIENTONCES anidadas
PROBLEMA 5
(Si..Entonces
anidadas)
A un trabajador le descuentan de su sueldo el 10% si su sueldo es menor o igual a 1000. por
encima de 1000 y hasta 2000 el 5% del adicional, y por encima de 2000 el 3% del adicional.
calcular el descuento y sueldo neto que recibe el trabajador dado su sueldo.
variables: sueldo,sueldo_neto,descuento
inicio
leer: sueldo
si: sueldo <= 1000 entonces
descuento <-- sueldo * 0.1
si_no
si: sueldo <= 2000 entonces
descuento <-- (sueldo - 1000) * 0.05 + 1000 * 0.1
si_no
descuento <-- (sueldo - 2000) * 0.03 + 1000 * 0.1
fin_si
imprimir: descuento.
Fin


Objetivo Pratica con condicionales SIENTONCES y operadores logicos (dos condiciones en 1)
PROBLEMA 6
(Si..Entonces,
operadores
logicos)
Disear un formulario que permita ingresar dos notas malas y determine su promedio, debe
mostrar un comentario si este est aprobado o desaprobado.
Inicio

Leer (N1)
Leer (N2)

P=(N1 + N2) / 2
Escribir ("el promedio es :", P)

Si P>= 11 y P<=20 entonces
Escribir ("Aprobado")
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 25


Sino

Escribir ("Desaprobado")

Fin_si

Fin


Objetivo Practica de condicionales SIENTONCES. Uso de operaciones de divicion y como calcular el
residuo
PROBLEMA 7
(SiEntonces)
Dado un tiempo en segundos, calcular los segundos restantes que le correspondan para
convertirse exactamente en minutos.
variables: tiempo_seg,minutos,segundos
inicio
leer: tiempo_seg
si minutos <-- tiempo_seg div 60 entonces
segundos <-- tiempo_seg mod 60
fin_si
imprimir: minutos,segundos.
Fin


Objetivo Practica con sentencias condicionales SIENTONCES
PROBLEMA 8
(Si..Entonces)
Dada la duracion en minutos de una llamada calcular el costo, considerando?
-Hasta tres minutos el costo es 0.50
-Por encima de tres minutos es 0.50 ms 0.1*cada minuto adicional a los tres primeros
variables
M,C

inicio
leer M
si M<=3
C_0.50
sino
C_0.50+0.1*(M-3)
fin si
imprimir el "C"
fin






ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 26





Objetivo Problema simple de asignacion, lectura e impresin.
PROBLEMA 9
(Asignacion)
Disear un algoritmo que me permita ingresar un valor inicial y luego un valor final, para
luego calcular el valor central de los nmeros.
Inicio
A1, A2: entero
C: real
Leer "Valor inicial",A1
Leer "Valor final",A2
Hacer C (A1+A2)/2
Mostrar "Valor central",C
Fin
































ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 27



EJERCICIOS DE COMPRENSION


Objetivo Condicionales Multiples: SEGNHACER
Ejercicio 07
Calculo Areas
Se necesita un programa que tenga 3 opciones, si se selecciona la primera se calcula el perimetro
de un cuadrado, si la pcion es la dos se calcula el perimetro de un triangulo equilatero, y cuando
se elija la tres se calcula el perimetro de un circulo, ademas de que mandara un mensaje de
"error" en caso de presionar cualquier otro numero

Proceso ejercicio07
// Se necesita un programa que tenga 3 opciones, si se selecciona la
// primera se calcula el perimetro de un cuadrado, si la pcion es la
// dos se calcula el perimetro de un triangulo equilatero, y cuando se
// elija la tres se calcula el perimetro de un circulo, ademas de que
// mandara un mensaje de "error" en caso de presionar cualquier
// otro numero

opc <- 0;
perimetro <- 0;
lado <- 0;

Escribir "Menu de Perimetros"
Escribir "=================="
Escribir "1. Cuadrado "
Escribir "2. Triangulo "
Escribir "3. Circulo "
Escribir "=================="
Escribir "Cual eliges?"
Leer opc;
Segun opc Hacer
1:
Escribir "Dame el valor de un lado del cuadrado:";
Leer lado;
perimetro <- lado * 4;
2:
Escribir "Dame el valor de un lado del triangulo:";
Leer lado;
perimetro <- lado * 3;
3:
Escribir "Dame el valor del diametro: ";
Leer lado;
perimetro <- lado * 3.1416;
De Otro Modo:
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 28

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



Objetivo Condicionales Multiples: SEGNHACER
Ejercicio 08
Premios
Compra
Un supermercado realiza una tombola solo con aquellos clientes que realizan una compra
superior a $ 500, en la cual tienen que sacar de una canasta una bolita la cual tiene un numero
grabado, los premios se dan bajo la siguiente tabla:
# BOLITA PREMIO
1 1 shampoo CAPRICE
2 1 paquete(3) de jabones ROSA VENUS
3 1 pasta de dientes COLGATE
4 1 bolsa de detergente MAS COLOR
5 1 caja de cereal ZUCARITAS

Proceso ejercicio08_PremiosCompra
// Un supermercado realiza una tombola solo con aquellos clientes que realizan una compra
// superior a $ 500, en la cual tienen que sacar de una canasta una bolita la cual tiene
// un numero grabado, los premios se dan bajo la siguiente tabla:
// # BOLITA PREMIO
// 1 1 shampoo CAPRICE
// 2 1 paquete(3) de jabones ROSA VENUS
// 3 1 pasta de dientes COLGATE
// 4 1 bolsa de detergente MAS COLOR
// 5 1 caja de cereal ZUCARITAS

compra <- 0;
bolita <- 0;
Escribir "Cual fue el total de la compra del cliente: ";
Leer compra;
si compra > 500 Entonces
Escribir "Cual fue el numero de la bolita que saco de la canasta?";
Leer bolita;
segun bolita Hacer
1:
Escribir "Te ganaste 1 shampoo CAPRICE";
2:
Escribir "Te ganaste 1 paquete de 3 jabones ROSA VENUS";
3:
Escribir "Te ganaste 1 pasta de dientes COLGATE";
4:
Escribir "Te ganaste 1 bolsa de detergente MAS COLOR";
5:
Escribir "Te ganaste 1 caja de cereal ZUCARITAS";
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 29

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

FinProceso


Objetivo Condicionales Multiples: SEGNHACER
PRACTICA 21
Premios
Compra x
Genero
Un supermercado realiza una tombola con todos los clientes, si son hombres tienen que sacar de
una canasta una bolita la cual tiene un numero grabado, y si son mujeres lo mismo pero de otra
canasta. Los premios se dan bajo la siguiente tabla:
PARA HOMBRES
========================================================================
# BOLITA PREMIO
1 Desodorante
2 SixPack de cerveza
3 Boxer
4 Rasuradora
5 Sudadera
PARA MUJERES
========================================================================
# BOLITA PREMIO
1 Locion
2 Bikini
3 Crema para la cara
4 Plancha
5 Barniz de uas

Proceso practica21_PremiosCompraXGenero
// Un supermercado realiza una tombola con todos los clientes, si son hombres tienen que
// sacar de una canasta una bolita la cual tiene un numero grabado, y si son mujeres lo
// mismo pero de otra canasta. Los premios se dan bajo la siguiente tabla:
// PARA HOMBRES
// ========================================================================
// # BOLITA PREMIO
// 1 Desodorante
// 2 SixPack de cerveza
// 3 Boxer
// 4 Rasuradora
// 5 Sudadera
// PARA MUJERES
// ========================================================================
// # BOLITA PREMIO
// 1 Locion
// 2 Bikini
// 3 Crema para la cara
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 30

// 4 Plancha
// 5 Barniz de uas

genero <- " "
bolita <- 0;
Escribir "Cual es el genero del cliente? (H=Hombre, M=Mujer)";
Leer genero;
si genero = "H" Entonces
Escribir "Cual fue el numero de la bolita que saco de la canasta?";
Leer bolita;
segun bolita Hacer
1:
Escribir "Te ganaste 1 Desodorante";
2:
Escribir "Te ganaste 1 SixPack de cerveza";
3:
Escribir "Te ganaste 1 Boxer";
4:
Escribir "Te ganaste 1 Rasuradora";
5:
Escribir "Te ganaste 1 Sudadera";
FinSegun
Sino
Escribir "Cual fue el numero de la bolita que saco de la canasta?";
Leer bolita;
segun bolita Hacer
1:
Escribir "Te ganaste 1 Locion";
2:
Escribir "Te ganaste 1 Bikini";
3:
Escribir "Te ganaste 1 Crema para la cara";
4:
Escribir "Te ganaste 1 Plancha";
5:
Escribir "Te ganaste 1 Barniz de uas";
FinSegun

FinSi

FinProceso






ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 31

Objetivo Condicionales Multiples: SEGNHACER
PRACTICA 22
Color Auto
Una empresa automotriz necesita un programa para seleccionar el tipo de carro (auto, camioneta
o vagoneta) lo cual debe aparecer en un menu, y el color (negro, blanco o rojo) en otro menu. Al
final se necesita que despliegue la seleccion realizada.

Proceso practica22_ColorAuto
// Una empresa automotriz necesita un programa para seleccionar el tipo de carro
// (auto, camioneta o vagoneta) lo cual debe aparecer en un menu, y el color
// (negro, blanco o rojo) en otro menu. Al final se necesita que despliegue la
// seleccion realizada.

auto <- 0;
color <- 0;

Escribir "Menu Principal"
Escribir "=================="
Escribir "Selecciona el tipo de automovil que deseas:"
Escribir "1. Auto"
Escribir "2. Camioneta"
Escribir "3. Vagoneta"
Escribir "=================="
Escribir "Tu opcion:"
Leer auto;
Segun auto Hacer
1:
Escribir "SubMenu Color"
Escribir "--------------------"
Escribir "1. Negro"
Escribir "2. Blanco"
Escribir "3. Rojo"
Escribir "En que color lo deseas:"
Leer color;
Si color = 1 Entonces
Escribir "Seleccionaste un AUTO en color NEGRO";
FinSi
Si color = 2 Entonces
Escribir "Seleccionaste un AUTO en color BLANCO";
FinSi
Si color = 3 Entonces
Escribir "Seleccionaste un AUTO en color ROJO";
FinSi
2:
Escribir "SubMenu Color"
Escribir "--------------------"
Escribir "1. Negro"
Escribir "2. Blanco"
Escribir "3. Rojo"
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 32

Escribir "En que color lo deseas:"
Leer color;
Si color = 1 Entonces
Escribir "Seleccionaste una CAMIONETA en color NEGRO";
FinSi
Si color = 2 Entonces
Escribir "Seleccionaste una CAMIONETA en color BLANCO";
FinSi
Si color = 3 Entonces
Escribir "Seleccionaste una CAMIONETA en color ROJO";
FinSi
3:
Escribir "SubMenu Color"
Escribir "--------------------"
Escribir "1. Negro"
Escribir "2. Blanco"
Escribir "3. Rojo"
Escribir "En que color lo deseas:"
Leer color;
Si color = 1 Entonces
Escribir "Seleccionaste una VAGONETA en color NEGRO";
FinSi
Si color = 2 Entonces
Escribir "Seleccionaste una VAGONETA en color BLANCO";
FinSi
Si color = 3 Entonces
Escribir "Seleccionaste una VAGONETA en color ROJO";
FinSi
De Otro Modo:
Escribir "No hay seleccion de automovil"
FinSegun

FinProceso



Objetivo Ciclo MIENTRAS HACER
Ejercicio 09
Calificaciones
Un maestro necesita un sistema para capturar las calificaciones de 3 parciales de sus alumnos,
despues de ello necesita que se despliegue el promedio, y cuando ya no quiera capturar mas
alumnos, necesita que se despliegue el promedio general de todos los alumnos capturados.

Proceso ejercicio09_Calificaciones
// Un maestro necesita un sistema para capturar las calificaciones de 3 parciales
// de sus alumnos, despues de ello necesita que se despliegue el promedio, y cuando
// ya no quiera capturar mas alumnos, necesita que se despliegue el promedio general
// de todos los alumnos capturados.

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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
Contrasea
Se necesita un programa que pida una contrasena. Si la contrasena es igual a "abrete sesamo", se
terminara el programa, de otra manera se seguira solicitando la contrasena

Proceso practuca25_contrasena
// Se necesita un programa que pida una contrasena. Si la contrasena es igual a
// "abrete sesamo", se terminara el programa, de otra manera se seguira solicitando
// la contrasena
// Aqui estamos usando el ciclo MIENTRAS... Hacer

contrasena <- ""
Escribir "Cual es la contrasena?";
Leer contrasena
Mientras contrasena <> "abrete sesamo" Hacer
Escribir "CONTRASENA INCORRECTA"
Escribir "Cual es la contrasena"
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 35

Leer contrasena
FinMientras

Escribir "**** ACCESO CONCEDIDO *****"
FinProceso
Proceso practica25_contrasena
// Se necesita un programa que pida una contrasena. Si la contrasena es igual a
// "abrete sesamo", se terminara el programa, de otra manera se seguira solicitando
// la contrasena
// Aqui estamos usando el ciclo REPETIR...HASTA

password <- "";
Repetir
Escribir "Cual es la contrasena?";
Leer password;
Hasta que password = "abrete sesamo"
Escribir "Es correcto, puedes continuar...";


FinProceso


Objetivo Ciclo MIENTRAS HACER
PRACTICA 26
Perimetros
Areas
Se necesita que un programa que calcula perimetros y areas, para lo cual aparece un menu con
tres opciones (1. Perimetros, 2. Areas, 3. Salir) dentro de las primeras 2 opciones aparece otro
menu con 4 opciones (1.Triangulo, 2. Cuadrado, 3.Circulo 4. Regresar). Dentro del cual solo se
puede volver al menu principal presionando la opcion 4.

Proceso practica26_PerimetrosAreasB
// Se necesita que un programa que calcula perimetros y areas, para lo cual aparece
// un menu con tres opciones (1. Perimetros, 2. Areas, 3. Salir) dentro de las primeras
// 2 opciones aparece otro menu con 4 opciones (1.Triangulo, 2. Cuadrado, 3.Circulo
// 4. Regresar). Dentro del cual solo se puede volver al menu principal
// presionando la opcion 4.


// Este ejercicio contiene el ciclo MIENTRAS...HACER, Condicion multiple SEGUN... HACER y
// Condicion simple SI...ENTONCES

menuPrincipal <- 0;
submenu <- 0;
lado <- 0
Mientras menuPrincipal <> 3 Hacer
Escribir "=== MENU PRINCIPAL ===";
Escribir " 1. Perimetros ";
Escribir " 2. Areas ";
Escribir " 3. Salir ";
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 36

Leer menuPrincipal;
// Este programa tiene un error. Descubrir cual es en tiempo de ejecucion.

Mientras submenu <> 4 Hacer
Escribir " == SubMenu ==";
Escribir " 1. Triangulo ";
Escribir " 2. Cuadrado ";
Escribir " 3. Circulo ";
Escribir " 4. Regresar ";
Leer submenu
Segun submenu Hacer
1:
Escribir "Cual es el lado del Triangulo?"
Leer lado;
Si menuPrincipal = 1 Entonces
//Calcular perimetro
resultado <- lado * 3
Escribir "El perimetro del triangulo es: ", resultado
Sino
resultado <- lado * lado
Escribir "El area del triangulo es: ", resultado
FinSi

2:
Escribir "Calculo del cuadrado"
// Aqui van los calculos
3:
Escribir "Calculo del circulo"
De Otro Modo:
// Repetimos el menu principal
Escribir "=== MENU PRINCIPAL ===";
Escribir " 1. Perimetros ";
Escribir " 2. Areas ";
Escribir " 3. Salir ";
Leer menuPrincipal;
FinSegun
FinMientras
FinMientras
// El error es que en la primera pasada no se puede seleccionar la opcion 3 de salida porque no lo hace,
ya que hace
// el ciclo interior tambien

FinProceso
Proceso practica26_PerimetrosAreas
// Se necesita que un programa que calcula perimetros y areas, para lo cual aparece
// un menu con tres opciones (1. Perimetros, 2. Areas, 3. Salir) dentro de las primeras
// 2 opciones aparece otro menu con 4 opciones (1.Triangulo, 2. Cuadrado, 3.Circulo
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 37

// 4. Regresar). Dentro del cual solo se puede volver al menu principal
// presionando la opcion 4.


// Este ejercicio contiene el ciclo MIENTRAS...HACER, Condicion multiple SEGUN... HACER y
// Condicion simple SI...ENTONCES

menuPrincipal <- 0;
submenu <- 0;
lado <- 0

Escribir "=== MENU PRINCIPAL ===";
Escribir " 1. Perimetros ";
Escribir " 2. Areas ";
Escribir " 3. Salir ";
Leer menuPrincipal;
Mientras menuPrincipal <> 3 Hacer
Escribir " == SubMenu ==";
Escribir " 1. Triangulo ";
Escribir " 2. Cuadrado ";
Escribir " 3. Circulo ";
Escribir " 4. Regresar ";
Leer submenu
Segun submenu Hacer
1:
Escribir "Cual es el lado del Triangulo?"
Leer lado;
Si menuPrincipal = 1 Entonces
//Calcular perimetro
resultado <- lado * 3
Escribir "El perimetro del triangulo es: ", resultado
Sino
resultado <- lado * lado
Escribir "El area del triangulo es: ", resultado
FinSi

2:
Escribir "Calculo del cuadrado"
// Aqui van los calculos
3:
Escribir "Calculo del circulo"
De Otro Modo:
// Repetimos el menu principal
Escribir "=== MENU PRINCIPAL ===";
Escribir " 1. Perimetros ";
Escribir " 2. Areas ";
Escribir " 3. Salir ";
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 38

Leer menuPrincipal;
FinSegun

FinMientras

FinProceso


Objetivo Ciclo REPETIR HASTA QUE
Ejercicio 11
Cuadrado
Numeros
Se necesita un programa que muestre el cuadrado de los numeros que introduce el usuario

Proceso ejercicio11_CuadradoNumeros
// Se necesita un programa que muestre el cuadrado de los numeros que introduce el
// usuario

respuesta <- "s"
numero <- 0;
numero_elevado <- 0;

Repetir
Escribir "Numero que quieres elevar al cuadrado:";
Leer numero;
numero_elevado <- numero * numero;
Escribir numero, " al cuadrado es: ", numero_elevado;
Escribir "Dseas calcular otro numero? (s/n)";
Leer respuesta;
Hasta Que respuesta = "n"

FinProceso


Objetivo Ciclo REPETIR HASTA QUE
Ejercicio 12
Salarios
Mensuales
Se necesita un programa que calcule el salario mensual de N trabajadores, el cual se obtiene de la
siguiente forma:
Si trabaja 40 horas o menos, se le paga $16 por hora
Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada
hora extra.

Proceso ejercicio12_SalariosMensuales
// Se necesita un programa que calcule el salario mensual de N trabajadores, el cual
// se obtiene de la siguiente forma:
// Si trabaja 40 horas o menos, se le paga $16 por hora
// Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas
// y $20 por cada hora extra.
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 39


salario <- 0;
horas <- 0;
respuesta <- "n"

Repetir
Escribir "Horas trabajadas del empleado: "
Leer horas;

Si horas > 40 Entonces
salario <- 40 * 16 + (( horas - 40 ) * 20);
Sino
salario <- horas * 16;
FinSi
Escribir "Salario del trabajador: ", salario;
Escribir "Deseas calcular otro salario? (s/n)"
Leer respuesta
hasta que respuesta = "n"
FinProceso


Objetivo Ciclo REPETIR HASTA QUE
PRACTICA 27
Suma
Numeros
Se necesita un programa que pregunte dos numeros, los cuales son un rango, de los cuales
queremos que imprima el total de la suma de todos los numeros que se encuentran dentro de ese
rango

Proceso practica25_SumaNumeros
// Se necesita un programa que pregunte dos numeros, los cuales son un rango,
// de los cuales queremos que imprima el total de la suma de todos los numeros
// que se encuentran dentro de ese rango

num1 <- 0;
num2 <- 0;
suma <- 0;
Escribir "Cual es el primer numero?";
Leer num1;
Escribir "Cual es el segundo numero?";
Leer num2;
Mientras num1 <= num2 Hacer
suma <- suma + num1
num1 <- num1 + 1
FinMientras
Escribir "===========================";
Escribir "La suma del rango de numeros es: ",suma

FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 40









Objetivo Ciclo REPETIR HASTA QUE
PRACTICA 28
Calculo
Salario
Semanal
Se necesita un programa que calcule el salario semanal de n trabajadores, el cual depende de su
puesto (licenciado, tecnico, obrero), del turno (primero, segundo y tercero) y las horas trabajadas.
Donde los del primer turno ganar 200 adicionales a su salario, los del segundo 100 y los del
tercero 300. El obrero gana 30 por hora el tecnico 50 y el licenciado 100

Proceso practica28_CalculoSalarioSemanal
// Se necesita un programa que calcule el salario semanal de n trabajadores, el cual
// depende de su puesto (licenciado, tecnico, obrero), del turno (primero, segundo
// y tercero) y las horas trabajadas. Donde los del primer turno ganar 200 adicionales
// a su salario, los del segundo 100 y los del tercero 300. El obrero gana 30 por hora
// el tecnico 50 y el licenciado 100

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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 41

FinSi
Si puesto = 3 Entonces
salario <- (horas_trab * 100) + 200
FinSi
2:
Si puesto = 1 Entonces
salario <- (horas_trab * 30 )+ 100
FinSi
Si puesto = 2 Entonces
salario <- (horas_trab * 50 ) + 100
FinSi
Si puesto = 3 Entonces
salario <- (horas_trab * 100) + 100
FinSi
3:
Si puesto = 1 Entonces
salario <- (horas_trab * 30 )+ 300
FinSi
Si puesto = 2 Entonces
salario <- (horas_trab * 50 ) + 300
FinSi
Si puesto = 3 Entonces
salario <- (horas_trab * 100) + 300
FinSi
FinSegun
Escribir "Su salario semanal es de: ", salario
Escribir "====================================";
Escribir "Deseas calcular a otro empleado? (s/n)";
Leer respuesta;
FinMientras
FinProceso


Objetivo Ciclo HACERPARA
Ejercicio 13
Tabla
Multiplicar
Se necesita un programa que despliega una tabla de multiplicar de un numero dado por el usuario

Proceso ejercicio13_TablaMultiplicar
// Se necesita un programa que despliega una tabla de multiplicar de un numero dado
// por el usuario

tabla <- 0;
contador <- 0;
resultado <- 0;

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 42

Escribir "Que tabla deseas visualizar:";
Leer tabla;
Para contador<-1 Hasta 10 Hacer
resultado <- tabla * contador;
Escribir tabla, " * ", contador, " = ", resultado;

FinPara

FinProceso


Objetivo Ciclo HACERPARA
Ejercicio 14
Tablas de
Multiplicar
Se necesita un programa que despliegue las tablas de multiplicar del uno al tres y cada tabla del 1
al 5

Proceso ejercicio14_TablasDeMultiplicar
// Se necesita un programa que despliegue las tablas de multiplicar del uno al tres
// y cada tabla del 1 al 5

tabla <-0
x <- 0
resultado <-0
Para tabla<-1 Hasta 3 Hacer
Para x <-1 Hasta 5 Hacer
resultado <- tabla * x;
Escribir tabla, " * ", x, " = ", resultado;
FinPara
Escribir "======================="
FinPara

FinProceso


Objetivo Ciclo HACERPARA
PRACTICA 29
Calif Alumno
Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Estructura de Datos

Proceso practica29_CalifAlumno
// Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de
// Estructura de Datos

calificacion <-0;
suma_calif <-0;
promedio <-0;
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 43

i<-0;
Escribir "A continuacion dame las 7 calificaciones del alumno";
Para i<-1 Hasta 7 Hacer
Escribir "Calificacion",i;
Leer calificacion
suma_calif <- suma_calif + calificacion
FinPara
promedio <- suma_calif / 7
Escribir "El promedio de calificacion del alumno es: ", promedio

FinProceso


Objetivo Ciclo HACERPARA
PRACTICA 30
Promedios
Alumnos
Calcular el promedio de 10 alumnos los cuales tienen 7 calificaciones cada uno en la materia de
Estructura de Datos.

Proceso practica30_PromediosAlumnos
// Calcular el promedio de 10 alumnos los cuales tienen 7 calificaciones cada uno en
// la materia de Estructura de Datos.

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


ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 44




Objetivo Ciclo HACERPARA
PRACTICA 31
Simulacion
Reloj
Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un dia
desde las 0:00:00 horas hasta las 23:59:59

Proceso practica31_SimulacionReloj
// Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos
// y segundos de un dia desde las 0:00:00 horas hasta las 23:59:59

segundos <-0;
minutos <-0;
horas <-0;
Para horas<-0 hasta 24 Hacer
Para minutos <-0 hasta 60 Hacer
Para segundos <-0 hasta 60 Hacer
Borrar Pantalla
Escribir "Reloj: ",horas,":",minutos,":",segundos;
FinPara
FinPara
finpara

FinProceso


Objetivo Arrays
Ejercicio 15
Promedios
Se necesita un programa que utilice un arreglo de seis posiciones para almacenar los 5 parciales
de un alumno y sacar su promedio, el cual se guardara en la ultima localidad. Mostras todas las
calificaciones y el promedio

Proceso ejercicio15_Promedio
// Se necesita un programa que utilice un arreglo de seis posiciones para almacenar
// los 5 parciales de un alumno y sacar su promedio, el cual se guardara en la ultima
// localidad. Mostras todas las calificaciones y el promedio

// Inicializar los arreglos
Dimension calif[6];

// Inicializar variables
subindice <- 0;
acum_calif <- 0;

Escribir "Captura las calificaciones."
Para subindice<-1 hasta 6 hacer
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 45

si subindice <> 6 entonces
Escribir "Dame Calificacion Parcial ", subindice, ":"
Leer calif[subindice];
acum_calif <- acum_calif + calif[subindice]
Sino
calif[subindice] <- acum_calif /5
FinSi
FinPara

Escribir "======================================="
Escribir "Ahora imprime las calificaciones"
Para subindice<-1 hasta 6 hacer
si subindice = 6 entonces
Escribir "Promedio: ", calif[subindice]
Sino
Escribir "Parcial ", subindice, ":", calif[subindice]
FinSi
FinPara

FinProceso


Objetivo Arrays
Ejercicio 16
Promedio
Grupo
Se necesita un programa que utiliza 3 arreglos, en los dos primeros se colocan los promedios de
dos grupos de 5 alumnos cada uno y el tercer arreglo almacenara el promedio mas alto de cada
posicion. Imprimir los promedios mas altos.

Proceso ejercicio16_PromedioGrupo
// Se necesita un programa que utiliza 3 arreglos, en los dos primeros se colocan
// los promedios de dos grupos de 5 alumnos cada uno y el tercer arreglo almacenara
// el promedio mas alto de cada posicion. Imprimir los promedios mas altos.

// Inicializar los arreglos
Dimension grupo1[5], grupo2[5], prom[5];

// Inicializar variables
indice <- 0;

Para indice<-1 hasta 5 hacer
Escribir "Dame promedio ", indice, " del primer grupo: ";
Leer grupo1[indice];
Escribir "Dame promedio ", indice, " del segundo grupo: ";
Leer grupo2[indice];
si grupo1[indice] > grupo2[indice] entonces
prom[indice] <- grupo1[indice];
Sino
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 46

prom[indice] <- grupo2[indice];
FinSi
FinPara

Para indice<-1 hasta 5 Hacer
Escribir "Promedio mayor ",indice, ":", prom[indice];
FinPara

FinProceso


Objetivo Arrays
Ejercicio 17
Promedio Grupo
con
Bidimensionales
Se necesita de un programa que utiliza un arreglo de 5 renglones y cuatro columnas para
almacenar los 3 parciales y su promedio de 5 alumnos

Proceso ejercicio17_PromediosConBidimensionales
// Se necesita de un programa que utiliza un arreglo de 5 renglones y cuatro columnas
// para almacenar los 3 parciales y su promedio de 5 alumnos

//Arreglos
Dimension calificaciones[5,4];

num_alumn<-0;
parcial <-0;
acum_cal <-0;

Para num_alumn<-1 hasta 5 Hacer
Borrar Pantalla
acum_cal <- 0
Para parcial<-1 hasta 3 Hacer
Escribir "Calificacion del alumno ",num_alumn, " en parcial:", parcial
Leer calificaciones[num_alumn,parcial]
acum_cal <- acum_cal + calificaciones[num_alumn,parcial]
FinPara
calificaciones[num_alumn,parcial] <- acum_cal /3
FinPara

// Falta hacer un despliegue de todo el arreglo.
FinProceso





ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 47




Objetivo Arrays
Ejercicio 18
Matriz
Alumnos
Se necesita un programa que utiliza una matriz de 10 renglones y 3 columnas. En las dos primeras
columnas se colocan los promedios de los 10 alumnos de dos grupos (A y B) y en la tercera
columna se almacenara el promedio mas alto de cada posicion.

Proceso ejercicio18_MatrizAlumnos
// Se necesita un programa que utiliza una matriz de 10 renglones y 3 columnas.
// En las dos primeras columnas se colocan los promedios de los 10 alumnos de
// dos grupos (A y B) y en la tercera columna se almacenara el promedio mas alto
// de cada posicion.

Dimension grupos[10,3];
alumno <- 0;

Para alumno<-1 hasta 10 Hacer
Escribir "Promedio del alumno ",alumno, " del primer grupo:";
Leer grupos[alumno,1];
Escribir "Promedio del alumno ",alumno, " del segundo grupo: ";
Leer grupos[alumno,2];

Si grupos[alumno,1] > grupos[alumno,2] Entonces
grupos[alumno,3] <- grupos[alumno,1];
Sino
grupos[alumno,3] <- grupos[alumno,2];
FinSi
FinPara

FinProceso


Objetivo Arrays
PRACTICA 32
Supermercado
Un supermercado necesita un programa en donde almacenar sus ingresos, los cuales son la
sumatoria de todas las ventas realizadas a los clientes (100 clientes)

Proceso practica32_Supermercado
// Un supermercado necesita un programa en donde almacenar sus ingresos, los cuales son la sumatoria
de todas las ventas
// realizadas a los clientes (100 clientes)

cant_ventas<-0;
Escribir "Cuantas ventas de clientes quieres capturar?";
Leer cant_ventas;
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 48


Dimension ingresos[cant_ventas];
num_clientes <- 0;
venta<-0;
Para num_clientes<-1 hasta cant_ventas Hacer
Escribir "Cuanto compro el cliente ", num_clientes;
Leer venta;
ingresos[num_clientes] <- venta;
FinPara

FinProceso


Objetivo Arrays
PRACTICA 33
Pares
Impares
Matriz
Necesitamos un programa que capture 20 numeros y despues de capturarlos que haga revision
de estos para indicarnos cuantos son pares y cuantos son impares

Proceso practica33_ParesImparesMatriz
// Necesitamos un programa que capture 20 numeros y despues de capturarlos que haga
// revision de estos para indicarnos cuantos son pares y cuantos son impares

Dimension numeros[20]

contador<-0
pausa <- ""
Escribir "Introduce 20 numeros y el sistema nos indicara cuales de ellos son pares e impares"
Para contador<-1 hasta 20 Hacer
Escribir "Cual sera el numero",contador,"?";
Leer numeros[contador];
FinPara
Escribir "Ahora analizara los numeros..."
Para contador<-1 hasta 20 Hacer
Si numeros[contador]/2 = 0 Entonces
Escribir "El numero ",numeros[contador], " es numero PAR";
Sino
Escribir "El numero ",numeros[contador], " es numero IMPAR";
FinSi
FinPara
Escribir " Una tecla para continuar..."
Leer pausa
FinProceso



ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 49




Objetivo Arrays
PRACTICA 34
Cuadrado
Cubo
Se necesita un programa que capture 20 numeros en tres diferentes arreglos, en el primero se
almacena el numero tal cual se tecleo, en el segundo se almacena el cuadrado de dicho numero y
en el tercero su cubo.

Proceso practica34_CuadradoCubo
// Se necesita un programa que capture 20 numeros en tres diferentes arreglos,
// en el primero se almacena el numero tal cual se tecleo, en el segundo se almacena
// el cuadrado de dicho numero y en el tercero su cubo.

Dimension numeros[20], cuadrados[20], cubos[20]

contador <-0;
Escribir "Capture 20 numeros para calcular sus cuadrados y cubos"
Para contador<-1 hasta 20 Hacer
Escribir "Cual es el valor del numero ", contador
Leer numeros[contador]
FinPara
Escribir "Realizando las operaciones... "
Escribir "Numero.......CUADRADO.......CUBO";
Para contador<-1 hasta 20 Hacer
cuadrados[contador] <- numeros[contador] * numeros[contador]
cubos[contador] <- numeros[contador] * numeros[contador] * numeros[contador]
Escribir numeros[contador],"........",cuadrados[contador],".........",cubos[contador]
FinPara


FinProceso











ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 50



PROBLEMAS INTERMEDIOS


Objetivo Estos ejercicios pueden llevar condiciones mas complejas, condiciones mulitples (sentencias tipo
CASE), o condiciones anidadas. Tambien pueden llevar ciclos MIENTRAS HASTA o
DESDEHASTA.

De preferencia estos ejercicios debera realizarlos el alumno Y el profesor. O exponerlos el
profesor en el pizarron para explicarlos y luego hacer segn criterio del mismo algunos otros por
cuenta del alumno.

El alumno debera generar el algoritmo en diagrama de flujo y pseudocodigo. Queda a criterio del
profesor el uso de DFD, Psint o SLE
Temas por ver Pseudocodigo, asignacion de variables, tipos de datos sencillos, operaciones sencillas, condicionales
(sientonces), condicionales multiples (En CASO DE), ciclos (MIENTRAS, HASTA, PARA)
Herramientas Cuaderno y lapiz
PSint


























ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 51

Objetivo Practicar condicionales SIENTONCES anidadas
PROBLEMA 1
(Si..Entonces
anidadas)
"SAGA FALABELLA" se encuentra de aniversario y ha programado una serie de ofertas con la
finalidad de brindar facilidades a sus clientes y al a vez de incrementar sus ventas. Estas ofertas
se basan especificamente en un procentaje de descuento sobre el total de compra el cual varia
de acuerdo al monto

* Por un monto mayor o igual a $500 se hara un descuento del 30%
* Por un monto menor de $500 pero mayor o igual a 200 se hara un descuento del 20%
* Por un monto menor de $200 pero mayor o igual a 100 se hara un descuento del 10%
* Considere 100 personas
INICIO
|
| x=x+1
| Leer Consumo
|
| Si consumo >=500 entonces
| |
| | descuento = Consumo*30/100
| |
| Sino
| | Si consumo >=200 entonces
| | |
| | | descuento = Consumo*20/100
| | |
| | Sino
| | | Si consumo >=100 entonces
| | | |
| | | | descuento = Consumo*10/100
| | | |
| | | Sino
| | | | Descuento=0
| | | |
| | | Fin_si
| | |
| | Fin_si
| |
| Fin_si
|
| Totalpagar= Consumo-Descuento
| Imprimir Totalpagar
|
| Si x<>100 entonces
| | x=x+1
| |
| Fin_si
|
FIN
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 52

Proceso problema01_DescuentosTienda
// SAGA FALABELLA se encuentra de aniversario y ha programado una serie de ofertas con la finalidad
// de brindar facilidades a sus clientes y a la vez incrementar sus ventas. Estas ofertas se
// basan especificamente en un porcentaje de descuento sobre el total de compra, el cual varia
// de acuerdo al monto:
// Por un monto mayor o igual a $500 se hara un descuento del 30%
// Por un monto menor de $500 pero mayor o igual a 200 se hara un descuento del 20%
// Por un monto menor de $200 pero mayor o igual a 100 se hara un descuento del 10%
// Considere 100 personas

x<-0;
consumo <- 0;
descuento <- 0;

Escribir "Cuanto fue la compra del cliente?";
Leer consumo;
si consumo >= 500 Entonces
descuento <- consumo * 0.30;
Sino
si consumo >= 200 Entonces
descuento <- consumo * 0.20;
Sino
si consumo >= 100 Entonces
descuento <- consumo * 0.10;
Sino
descuento <- 0;
FinSi
FinSi
FinSi

totalPagar <- consumo - descuento;
Escribir "Su total a pagar por promocion es: ", totalPagar

FinProceso



Objetivo Practicas sentencias SIEntonces anidadas
PROBLEMA 2
(Si..Entonces
anidadas)
Una tienda se dedica a la venta de computadoras, cuenta con 10 vendedores. Cada uno de ellos
tiene un sueldo mensual pero ademas de su sueldo ganan una comision por venta

* Si el monto de venta es mayor de 1000 la comsion sera del 15%
* Si el monto de venta es mayor o igual a 500 y menor de 1000 la comision es del 5%
* Si el monto de la venta es menor que 500 no tiene comision
INICIO
|
| x=x+1
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 53

| Leer "Sueldo", "Venta"
|
| Si venta>=1000 entonces
| | Sueldo = Venta * 15/100
| |
| Sino
| |
| | Si venta>=500 entonces
| | Sueldo = Venta * 5/100
| |
| | Sino
| | Comision=0
| |
| | Fin_si
| |
| Fin_si
|
| Sueldototal
| Si x<>10 entonces
| | x=x+1
| |
| Fin_si
|
FIN
Proceso problema02_VentaComputadoras
// Una tienda se dedica a la venta de computadoras y cuenta con 10 vendedores. Cada uno de ellos
// tiene un sueldo mensual, pero ademas de su sueldo, ganan una comision por venta.
// Si el monto de venta es mayor a 1000 la comision sera del 15%
// Si el monto de venta es mayor o igual a 500 y menor de 1000 la comision es del 5%
// Si el monto de la venta es menor que 500 no tiene comision

venta <- 0
comision <- 0;
sueldo_neto <- 0;

Escribir "Cuanto fue lo que vendio el Vendedor?";
Leer venta;
si venta >= 1000 Entonces
comision <- venta * 0.15;
Sino
si venta >= 500 Entonces
comision <- venta * 0.05;
Sino
comision <- 0;
FinSi
FinSi

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 54

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

FinProceso


Objetivo Estructura con sentencias SIENTONCES anidadas
PROBLEMA 3
(Si..Entonces
anidadas)
Katthy organiza una fiesta en la cual una computadora controla el ingreso mediante 5 claves. Si
se ingresa al menos una clave incorrecta esta imprimira "TE EQUIVOCASTE DE FIESTA" y no
permitira el ingreso. Si las 5 claves son correctas imprimira "BIENVENIDO A LA FIESTA"
Las Claves son:
1: "TIENES"
2: "QUE SER"
3: "INVITADO"
4: "PARA"
5: "INGRESAR"
INICIO

Leer Claves: C1,C2,C3,C4,C5

Si C1<>"TIENE" entonces:
escribir "Te Equivocaste de Fiesta"
Sino
escribir "Ingrese la Clave2"
Si C2<>"QUE_SER" entonces:
escribir "Te Equivocaste de Fiesta"
Sino
escribir "Ingrese la Clave3"
Si C3<>"INVITADO" entonces:
escribir "Te Equivocaste de Fiesta"
Sino
escribir "Ingrese la Clave4"
Si C4<>"PARA" entonces:
escribir "Te Equivocaste de Fiesta"
Sino
escribir "Ingrese la Clave5"
Si C5<>"INGRESAR" entonces:
escribir "Te Equivocaste de Fiesta"
Sino
escribir "Bienvenido a la Fiesta"
Fin_si
Fin_si
Fin_si
Fin_si
Fin_si
FIN

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 55

Proceso problema03_FiestaKathy
// Kathy organiza una fiesta en la cual una computadora controla el ingreso mediante 5 claves
// Si se ingresa al menos una clave incorrecta esta mostrara: TE EQUIVOCASTE DE FIESTA y no
// permitira el ingreso. Si las 5 claves son correctas mostrara: BIENVENIDO A LA FIESTA.
// Las claves son:
// 1. TIENES
// 2. QUE SER
// 3. INVITADO
// 4. PARA
// 5. INGRESAR

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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 56

FinSi

FinProceso


Objetivo Practicar las condiciones multiples y/o anidadas. El ejercicio puede resolverse usando las
sentencias SIENTONCES de manera anidada o la sentenca EN CASO DE
PROBLEMA 4
(Condiciones
multiples)
Disear un programa que permita controlar la venta de pasajes a los clientes segn la
categora y el destino. Necesitamos identificar al cliente (ya sea un numero o el nombre), las
categorias pueden ser: ECONOMICO, NORMAL, VIP. Los destindos pueden ser: Rio Bravo, Valle
Hermoso, Reynosa, Monterrey. Queremos saber el precio del boleto y que lo muestre en
pantalla.
INICIO
| Leer (cliente)
| Leer (CAT)
|
| Si CAT= "econmico" , entonces
| | Escribir ("ingrese destino")
| |
| | Si DES = "Tumbes", entonces
| | | Escribir ("No hay pasajes")
| | |
| | Sino
| | | Si DES ="Piura", entonces
| | | | P1 = 12
| | | | Escribir (P1)
| | | |
| | | Sino
| | | | Si DES ="Talara", entonces
| | | | | P2 = 18
| | | | | Escribir (P2)
| | | | |
| | | | Sino
| | | | | Si DES = "Lima" , entonces
| | | | | | Escribir ("No hay pasajes")
| | | | | Fin_si
| | | | Fin_si
| | | Fin_si
| | Fin_si
| |
| Sino
| | Si CAT =Imperial, entonces
| | | Escribir ("Ingrese destino")
| | |
| | | Si DES = Tumbes, entonces
| | | P3=80
| | | Escribir ("P3")
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 57

| | |
| | | Sino
| | | | Si DES =Piura, entonces
| | | | | P4= 20
| | | | | Escribir (P4)
| | | | |
| | | | Sino
| | | | | Si DES =Talara, entonces
| | | | | | P5=30
| | | | | | Escribir (P5)
| | | | | |
| | | | | Sino
| | | | | | Si DES = Lima , entonces
| | | | | | | Escribir ("No hay pasajes")
| | | | | | |
| | | | | | Fin_si
| | | | | Fin_si
| | | | Fin_si
| | | Fin_si
| | |
| | Sino
| | | Si CAT = Bus cama , entonces
| | | | Escribir ("Ingrese destino")
| | | |
| | | | Si DES = Tumbes, entonces
| | | | P6=100
| | | | Escribir ("P6")
| | | |
| | | | Sino
| | | | | Si DES =Piura, entonces
| | | | | | Escribir ("No hay pasaje")
| | | | | |
| | | | | Sino
| | | | | | Si DES =Talara, entonces
| | | | | | | Escribir ("No hay pasaje")
| | | | | | |
| | | | | | Sino
| | | | | | | Si DES = Lima, entonces
| | | | | | | P7=170
| | | | | | | Escribir(P7)
| | | | | | Fin_si
| | | | | Fin_si
| | | | Fin_si
| | | Fin_si
| | Fin_si
| |
|Fin_si
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 58

|
FIN

Proceso problema04_VentaBoletos
// Disear un programa que permita controlar la venta de pasajes a los clientes segun la categoria
// y destino. Necesitamos identificar al cliente(ya sea un numero o el nombre), las categorias
// pueden ser: ECONOMICO, NORMAL y VIP. Los detinos puede ser: Rio Bravo, Valle Hermoso, Reynosa
// Monterrey. Queremos saber el precio del boleto y que lo muestre en pantalla.

cliente <-"";
categoria <- "";
destino <- "";
precio_boleto <- 0;
Escribir "Bievenido a la venta de boletos, cual es su nombre?";
Leer cliente;
Escribir "Muy bien ",cliente, " tenemos 3 categorias: ECONOMICO, NORMAL y VIP, cual prefiere?";
Leer categoria

Si categoria = "ECONOMICO" Entonces
Escribir "Ingrese su destino: ";
Leer destino;
Si destino = "Monterrey" Entonces
Escribir "No hay pasajes para Monterrey en esta categoria";
Sino
Si destino = "Valle Hermoso" Entonces
precio_boleto <- 50.00
Sino
Si destino = "Rio Bravo" Entonces
precio_boleto <- 80.00
Sino
precio_boleto <- 120.00
FinSi
FinSi
FinSi
FinSi

Si categoria = "NORMAL" Entonces
Escribir "Ingrese su destino: ";
Leer destino;
Si destino = "Monterrey" Entonces
precio_boleto <- 200;
Sino
Si destino = "Valle Hermoso" Entonces
precio_boleto <- 80.00
Sino
Si destino = "Rio Bravo" Entonces
precio_boleto <- 150.00
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 59

Sino
precio_boleto <- 180.00
FinSi
FinSi
FinSi
FinSi

Si categoria = "VIP" Entonces
Escribir "Ingrese su destino: ";
Leer destino;
Si destino = "Monterrey" Entonces
precio_boleto <- 300;
Sino
Si destino = "Valle Hermoso" Entonces
precio_boleto <- 100.00
Sino
Si destino = "Rio Bravo" Entonces
precio_boleto <- 180.00
Sino
precio_boleto <- 200.00
FinSi
FinSi
FinSi
FinSi
Escribir "El boleto cuesta: ", precio_boleto
FinProceso


Objetivo Practicar condiciones multiples, anidadas y operadores logicos
PROBLEMA 5
(Si..Entonces
multiples,
anidadas,
oper.
Logicos)
Hacer un programa que muestre el mensaje de acuerdo a la edad ingresada: Si la edad es de 0 a
10 aos nio, si la edad es de 11 a 14 aos pber , si la edad es de 15 a 18 aos
adolescente , si la edad es de 19 a 25 aos joven , si la edad es de 26 a 65 aos adulto, si la
edad es mayor de 65 anciano
inicio
Leer n
si n >=0 y n<=10 entonces
escribir nio
sino
si n >=11 y n<=14 entonces
escribir pber
sino
si n>=15 y n<=18 entonces
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 60

escribir adolescent e
sino
si n>=19 y n<=25 entonces
escribir joven
sino
si n>=26 y n<=65 entonces
escribir adulto
sino
| si n>65 entonces
escribir anciano
fin_si
fin_si
fin_si
fin_si
fin_si
fin_si
fin

Proceso problema05_Edades
// Hacer un programa que muestre el mensaje de acuerdo a la edad ingresada
// Si la edad es de 0 a 10 aos "nio"
// Si la edad es de 11 a 14 aos "puber"
// Si la edad es de 15 a 18 aos "adolescente"
// Si la edad es de 19 a 25 aos "joven"
// Si la edad es de 26 a 65 aos "adulto"
// Si la edad es mayor de 65 aos "anciano"

edad <- 0;
Escribir "Cual es tu edad?";
Leer edad;
Si edad >=0 Y edad <=10 Entonces
Escribir "Eres nio";
Sino
si edad >= 11 Y edad <=14 Entonces
Escribir "Eres puberto"
Sino
si edad >=15 Y edad <= 18 Entonces
Escribir "Eres adolescente"
Sino
Si edad >= 19 Y edad <= 25 Entonces
Escribir "Eres Joven"
Sino
Si edad >=26 y edad <= 65 Entonces
Escribir "Eres Adulto"
Sino
Escribir "Eres Anciano"
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 61

FinSi
FinSi
FinSi
FinSi
FinSi

FinProceso



Objetivo Practicar ciclo REPETIRHASTA y sentencia SI..ENTONCES
PROBLEMA 6
(Ciclo
Repetir..hasta,
Si..Entonces)
Disear un algoritmo que me permita determinar si un numero ingresado desde el teclado es
un numero par o impar.
Inicio
A : entero
Repetir
Ingresar A
Hasta (A > 0)
Si (A mod 2 = 0) entonces
Mostrar "A es par"
Sino
Mostrar "A es impar"
Fin_Si
Fin

Proceso problema06_ParesImpar
// Disear un algoritmo que me permita determinar si un numero ingresado desde el
teclado es
// par o impar
numero <-0
Escribir "Ingresa un numero entero ";
Leer numero
Si numero mod 2 = 0 Entonces
Escribir "El numero tecleado es PAR"
Sino
Escribir "El numero tecleado es IMPAR"
FinSi


FinProceso








ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 62

Objetivo Practicar condicionales SI..ENTONCES. Este ejercicio agrega la complejidad para determinar el
residuo de operaciones de division y la resolucion de aos bisiestos
PROBLEMA 7
(Si..Entonces,
Bisiesto)
Escribir un algoritmo que determine si un ao es bisiesto. Un ao es bisiesto si es mltiplo de 4
(por ejemplo 1984). Los aos mltiplos de 100 no son bisiestos, salvo si ellos son tambin
mltiplos de 400 (2000 es bisiesto, pero; 1800 no lo es).
Inicio
Ao, B : entero
Leer "Ao"
Si (B mod 4000 = 0) entonces
Mostrar "Ao es bisiesto"
Fin_Si
Si (B mod 100 = 0) entonces
Mostrar "Ao no es bisiesto"
Fin_Si
Si (B mod 4 = 0) entonces
Mostrar "Ao es bisiesto"
Sino
Mostrar "Ao no es bisiesto"
Fin_Si
Fin

Proceso problema07_Bisiesto
// Escribir un algoritmo que determine si un ao es bisiesto. Un ao es bisiesto si es multiplo
// de 4 (por ejemplo 1984). Los aos multiples de 100 no son bisiestos, salvo si ellos son tambien
// multiplos de 400 (2000 es bisiesto pero 1800 no lo es).

ano <- 0
Escribir "Teclea un ano: "
Leer ano;
Si ano mod 4000 = 0 Entonces
Escribir "Este ano es BISIESTO"
FinSI

Si ano mod 100 = 0 Entonces
Escribir "Este ano NO ES BISIESTO"

FinSi

Si ano mod 4 = 0 Entonces
Escribir "Este ano SI ES BISIESTO"
Sino
Escribir "Este ano NO ES BISIESTO"
FinSi

FinProceso
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 63



Objetivo Practicar condiciones SI..Entonces multiples
PROBLEMA 8
(Si..Entonces
multiples)
Dado un monto calcular el descuento
Descuento:
25% si m>=300
20% si 150<=m<300
no hay descuento si m<150
variable M,D
Inicio
leer M
si M>=300 entonces
D<-25*M/100
Si_no
M>=150 y M<300 entonces
D<-M*20/100
si_no
D<-0
Fin_si
Escribir descuento
Fin


































ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 64

Objetivo Practicar condiciones multiples usando EN CASO DE y SIENTONCES. Se proponen dos
soluciones para resolver el problema
PROBLEMA 9
(En caso de..,
Si..Entonces)
Habitaciones de una casa rural (Alternativa mltiple - Pseudocdigo CEE)

En la siguiente tabla se muestra el nmero de camas de las habitaciones de una casa rural, adems de la
planta donde est ubicada cada una de ellas:

Habitacin Camas Planta


1. Azul 2 Primera


2. Roja 1 Primera


3. Verde 3 Segunda


4. Rosa 2 Segunda


5. Gris 1 Tercera

Disee el algoritmo (en pseudocdigo) de un programa que:
1) Muestre el listado de las habitaciones de la casa rural.
2) Pida por teclado el nmero (dato entero) asociado a una habitacin.
3) Muestre por pantalla la planta y el nmero de camas de la habitacin seleccionada.

Nota: Si el nmero introducido por el usuario, no est asociado a ninguna habitacin, se mostrar el mensaje:
"ERROR: <nmero> no est asociado a ninguna habitacin.".

En pantalla:
Listado de habitaciones: Listado de habitaciones: Listado de habitaciones: Listado de habitaciones:

1. Azul 1. Azul 1. Azul 1. Azul
2. Roja 2. Roja 2. Roja 2. Roja
3. Verde 3. Verde 3. Verde 3. Verde
4. 4. 4. 4. Rosa Rosa Rosa Rosa
5. Gris 5. Gris 5. Gris 5. Gris

Introduzca nmero de habitacin: Introduzca nmero de habitacin: Introduzca nmero de habitacin: Introduzca nmero de habitacin: 3 33 3
La La La La Verde tiene 3 ca Verde tiene 3 ca Verde tiene 3 ca Verde tiene 3 cama/s y est en la segunda planta. ma/s y est en la segunda planta. ma/s y est en la segunda planta. ma/s y est en la segunda planta.



Listado de habitaciones: Listado de habitaciones: Listado de habitaciones: Listado de habitaciones:

1. Azul 1. Azul 1. Azul 1. Azul
2. Roja 2. Roja 2. Roja 2. Roja
3. Verde 3. Verde 3. Verde 3. Verde
4. 4. 4. 4. Rosa Rosa Rosa Rosa
5. Gris 5. Gris 5. Gris 5. Gris

Introduzca nmero de habitacin: Introduzca nmero de habitacin: Introduzca nmero de habitacin: Introduzca nmero de habitacin: 7 77 7
ERROR: 7 no est asociado a ninguna habitacin. ERROR: 7 no est asociado a ninguna habitacin. ERROR: 7 no est asociado a ninguna habitacin. ERROR: 7 no est asociado a ninguna habitacin.


SOLUCION 1:

algoritmo Habitaciones_de_una_casa_rural
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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 nmero de habitacin: " )

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 habitacin." )
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 nmero de habitacin: " )

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

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 66

si ( numero >= 1 y numero <= 5 )
escribir( "La ", nombre, " tiene ", camas,
" cama/s y est en la ", planta,
" planta." )
sino
escribir( "ERROR: ", numero,
" no est asociado a ninguna habitacin." )
fin_si
fin








































ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 67

Objetivo ESTRUCTURAS
Ejercicio 19
Alumnos
Se necesita un programa que capture el nombre, numero de control, calificacion del primero,
segundo y tercer parcial y promedio final de 2 alumnos

/* Ejercicio19
Se necesita un programa que capture el nombre, numero de control, calificacion del primero, segundo y tercer
parcial y promedio final de 2 alumnos*/

// Estructuras
var
promedio : numerico //variable normal

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 ")
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 68

leer (ficha[2].calif[3])
// Hacer la operacion del promedio
ficha[2].calif[4] = (ficha[2].calif[2] + ficha[2].calif[2] + ficha[2].calif[3] ) /3
imprimir ("Promedio: ",ficha[2].calif[4],"\n")

//Ahora hacer la comparativa para saber cual obtuve mejor promedio
si (ficha[1].calif[4] > ficha[2].calif[4])
{
imprimir ( "\n",ficha[1].alumno," salio mejor de promedio que ", ficha[2].alumno)
sino
imprimir ( "\n",ficha[2].alumno," salio mejor de promedio que ", ficha[1].alumno)

}

fin


Objetivo ESTRUCTURAS
Ejercicio 20
Captura
Productos
Se necesita un programa que almacene la clave, descripcion, precio de compra, precio de
menudeo y preco de mayoreo de 10 productos

/* Ejercicio20_CapturaProductos
Se necesita un programa que almacene la clave, descripcion, precio de compra, precio de menudeo y preco de mayoreo
de 10 productos */

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)

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 69

imprimir ("Precio de compra del producto", indice, ":")
leer (producto[indice].precios[1])

imprimir ("Precio de menudo del producto", indice, ":")
leer (producto[indice].precios[2])

imprimir ("Precio de mayoreo del producto", indice, ":")
leer (producto[indice].precios[3])

imprimir ("==============================\n")
}
fin


Objetivo ESTRUCTURAS
PRACTICA 35
Captura
Alumnos
Hacer un programa para una escuela, el cual almacene el nombre, direccion, telefono, semestre,
grupo y matricula de 100 alumnos

/* Practica35_CapturaAlumnos
Hacer un programa para una escuela, el cual almacene el nombre, direccion, telefono, semestre, grupo y matricula de
100 alumnos */

var
indice : numerico

alumnos : vector [100] registro
{
nombre : cadena
direccion: cadena
telefono: numerico
semestre: numerico
grupo: cadena
matricula: numerico
}

inicio
cls()
desde indice = 1 hasta 10
{
imprimir("Alumno",indice,"\n")
imprimir ("Nombre........:")
leer (alumnos[indice].nombre)

imprimir ("Direccion.....:")
leer (alumnos[indice].direccion)
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 71

imprimir ("Resultado: ",resultado,"\n\n")

fin


Objetivo MODULOS
Ejercicio 22
Calcular Area
Crear un programa que llame a un modulo llamado AREA el cual calcula el area de un rectangulo y
para hacerlo debe recibir dos datos desde el algoritmo principal, uno es la base y otro la altura

/* Ejercicio22_CalcularArea
Crear un programa que llame a un modulo llamado AREA el cual calcula el area de un rectangulo y para hacerlo debe
recibir dos datos desde el algoritmo principal, uno es la base y otro la altura */

var
dato1,dato2:numerico
resp:cadena

inicio
cls()
repetir
imprimir ("Dame base del rectangulo:")
leer (dato1)
imprimir ("Dame altura del rectangulo")
leer (dato2)
Area(dato1,dato2)
imprimir ("Deseas calcular otra area? (s/n)")
leer (resp)
hasta (resp=="n")
fin

/* Modulo Area */
subrutina Area(base,altura:numerico) retorna numerico
var
resultado: numerico

inicio
resultado = base * altura
imprimir ("Resultado: ",resultado,"\n\n")

retorna (resultado)
fin





ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 72





Objetivo MODULOS
Ejercicio 23
Precio Neto
Se necesita un programa que mande llamar a un modulo llamado PRECIO_NETO, el cual para
funcionar correctamente debe recibir desde el algoritmo principal el precio y el descuento
deseado, al terminar de ejecutarse se debe regresar el nuevo precio al algoritmo principal.

/* Ejercicio23_PrecioNeto
Se necesita un programa que mande llamar a un modulo llamado PRECIO_NETO, el cual para funcionar correctamente
debe recibir desde el algoritmo principal el precio y el descuento deseado, al terminar de ejecutarse se debe
regresar el nuevo precio al algoritmo principal. */

var
p_neto, prec, desc:numerico
resp:cadena

inicio
cls()
repetir
imprimir ("Precio del producto:")
leer (prec)
imprimir ("Descuento a realizar (% como 0.10)")
leer (desc)
Precio_Neto( prec, desc)
imprimir ("Deseas calcular otro producto? (s/n)")
leer (resp)
hasta (resp=="n")
fin

/* 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





ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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 ("Ao:")
leer (ano)
cFecha = FechaLarga( dia, mes, ano)
imprimir ("La fecha es: ", cFecha, "\n\n")
imprimir ("Deseas calcular otra fecha? (s/n)")
leer (resp)
hasta (resp=="n")
fin

/* Modulo Fecha larga */
subrutina FechaLarga( vDia, vMes, vAno:numerico) retorna cadena
var
fecha_larga: cadena
cMes: cadena

inicio
/* Identificar el mes */
eval
{
caso (mes==1)
cMes = "Enero"
caso (mes==2)
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 74

cMes = "Febrero"
caso (mes==3)
cMes = "Marzo"
caso (mes==4)
cMes = "Abril"
caso (mes==5)
cMes = "Mayo"
caso (mes==6)
cMes = "Junio"
caso (mes==7)
cMes = "Julio"
caso (mes==8)
cMes = "Agosto"
caso (mes==9)
cMes = "Septiembre"
caso (mes==10)
cMes = "Octubre"
caso (mes==11)
cMes = "Noviembre"
caso (mes==12)
cMes = "Diciembre"
}

fecha_larga = str(vDia,2,0) + " de " + cMes + " del " + str(vAno,2)
//imprimir ("Resultado: ",fec,"\n\n")

retorna (fecha_larga)
fin


Objetivo MODULOS
PRACTICA 43
Calculo
Salario
Modulo que recibe las horas trabajadas, el precio por hora trabajada y el precio de la hora extra.
Con estos datos calcular y devolver el salario de un trabajador, donde las primeras 40 horas se
pagan normal y las restantes se pagan como tiempo extra

/* PRACTICA43_CalculoSalario
Modulo que recibe las horas trabajadas, el precio por hora trabajada y el precio de la hora extra. Con estos datos
calcular
y devolver el salario de un trabajador, donde las primeras 40 horas se pagan normal y las restantes se pagan como
tiempo extra */

var
horas_trab, precioHora, precioHrExtra: numerico
nSalario: numerico
resp:cadena

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 75

inicio
cls()
repetir
imprimir ("Cuantas horas laboro el empleado?:")
leer (horas_trab)
imprimir ("Cual es el precio por hora?")
leer (precioHora)
imprimir ("Cual es el precio por hora extra?")
leer (precioHrExtra)
nSalario = CalculoSalario( horas_trab, precioHora, precioHrExtra)
imprimir ("El sueldo del trabajador es: ", nSalario, "\n\n")
imprimir ("Deseas calcular otra trabajador? (s/n)")
leer (resp)
hasta (resp=="n")
fin

/* 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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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




ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 77




PROBLEMAS AVANZADOS




Objetivo Estos ejercicios pueden llevar condiciones mas complejas, condiciones mulitples (sentencias tipo
CASE), o condiciones anidadas. Tambien pueden llevar ciclos MIENTRAS HASTA o
DESDEHASTA, arreglos (vectores, matrices), registros, tipos de datos, manejo de archivos
externos

De preferencia estos ejercicios debera realizarlos el profesor para exponerlos en el pizarron y
explicarlos.Segn criterio del mismo, se realizaran algunos otros por cuenta del alumno.

El alumno debera generar el algoritmo en diagrama de flujo y pseudocodigo. Queda a criterio del
profesor el uso de DFD, Psint o SLE
Temas por ver Pseudocodigo, asignacion de variables, tipos de datos sencillos, operaciones sencillas, condicionales
(sientonces), condicionales multiples (En CASO DE), ciclos (MIENTRAS, HASTA, PARA), arreglos
(VECTORES, MATRICES), registros, subrutinas (Funciones, Procedimientos), funciones de SLE,
lenguaje SLE, archivos externos y su manejo
Herramientas Cuaderno y lapiz
SLE 2.0





















ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 78

Objetivo Practicar el ciclo MIENTRASHACER
PROBLEMA 1
(Mientras..
Hacer)
La compaia Barner posee una caja con $3.71 con la cual empieza todos los dias diariamente se
registran egresos. Calcular los egresos de la compaia y mostrar cuanto queda en caja. (el
programa termina cuando se ingresa un egreso imaginario de -1)
Algoritmo INICIO

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









ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 79

Objetivo Practicar arreglos unidimensionales (vectores), ciclo MIENTRASHACER
PROBLEMA 2
(Arreglos,
Mientras..
Hacer)
Hacer un programa que registre 20 numeros en un array de una dimension y muestre
posteriormente los elementos que ocupan posiciones impares
Algoritmo INICIO
|
| Dimensionar a[100]
|
| x=1
| mientras x <= 20 Hacer
| | Leer a[x]
| | x=x+1
| fin_mientras
|
| x=1
| mientras x<=20 Hacer
| | escribe a[x]
| | x=x+2
| fin_mientras
|
FIN

SLE /* Problema 02_ Arrays */
var
a: vector[10] numerico
x = 1
inicio
cls()
mientras (x<=10)
{
imprimir ("Dame el numero " )
leer (a[x])
x=x+1
}
/* Ahora listar los impares */
imprimir ("\nListado de impares\n" )
x=1
mientras (x<=10)
{
imprimir ("Numero ",a[x],"\n" )
x=x+2
}
Fin

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 80


Objetivo Practicar operaciones aritmeticas, condiciones y uso de contadores, ciclo MIENTRAS..HACER
PROBLEMA 3
(Mientras..
Hacer, Si..
Entonces,
Contadores)
Hacer un programa que al ingresar 2 numeros por la pantalla y que se calcule la suma, resta,
multiplicacion y division. El proceso debe terminar cuandon se hallan realizado 10 procesos
(Hacer uso de contadores)
Algoritmo INICIO

X=X+1
Leer A,B

S=A+B
R=A-B
M=A*B
D=A/B

IMPRIMIR ,S,R,M,D

Si x=10 entonces:
escribe "Fin del programa"

Sino
X=X+1

Fin_si

FIN

SLE /* Problema 3
Hacer un programa que al ingresar 2 numeros por la pantalla calcule la suma,
resta, multiplicaciony division. El proceso termina cuando se realicen 10 procesos
Hacer uso de contadores */

var
x = 1
num1 = 0
num2 = 0
suma = 0
resta = 0
multiplicacion = 0
division = 0
inicio
cls()
imprimir ("Realizaremos 4 operaciones basicas con 2 numeros 5 veces\n")
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 81

mientras (x<=5)
{
imprimir
("\n======================================================\n")
imprimir ("OPERACION: ", x, "\n")
imprimir ("Dame un numero:")
leer (num1)
imprimir ("Dame el segundo numero" )
leer (num2)
/* Ahora hacer las operaciones */
suma = num1 + num2
resta = num1 - num2
multiplicacion = num1 * num2
division = num1 / num2
imprimir ("\nLa suma de los numeros es: ",suma )
imprimir ("\nLa resta de los numeros es: ",resta )
imprimir ("\nLa multiplicacion de los numeros es: ",multiplicacion )
imprimir ("\nLa division de los numeros es: ",division )
x = x + 1
}
imprimir ("\nFIN")
fin


Objetivo Practicar ciclo DESDE..HASTA, SI..ENTONCES, calculo de maximos y minimos
PROBLEMA 4
(Desde..Hasta,
Si..Entonces,
Maximos,
Minimos)
El ing. De sistemas del banco de credito necesita conocer de una lista de 2500 cuentas cual es la
que posee mayor y menor cantidad de dinero (d)
Algoritmo Inicio
Leer n
Max ? n
Min ? n
Desde i ? 1 hasta 2500 hacer
Leer n
Si n > max entonces
Max ? n
Sin_no
Si n < min entonces
Min ? n
Fin_si
Fin_si
Fin_desde
Escrbir MXIMO Max
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 82

MINIMO Min
Fin

SLE /* PROBLEMA 4
El ing de sistemas del banco de credito necesita conocer de una lista de 2500
cuentas cual es la que posee mayor y menor cantidad de dinero */

var
cuenta = 0
maximo = 0
minimo = 0
contador = 0
tope_ctas = 5 // Se supone que aqui van las 2500
inicio
cls()
imprimir ("Monto de la cuenta: ")
leer (cuenta)
maximo = cuenta // aqui el valor maximo es el monto
minimo = cuenta // aqui el valor minimo es el monto
desde contador = 1 hasta tope_ctas
{
imprimir ("Monto de la cuenta: ")
leer (cuenta)
si (cuenta > maximo)
{
maximo = cuenta
sino
si (cuenta < minimo)
{
minimo = cuenta
}
}
}
imprimir ("La cuenta con el monto MAXIMO es de: ", maximo, "\n")
imprimir ("La cuenta con el monto MINIMO es de: ", minimo, "\n")
fin











ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 83


Objetivo Practicar ciclo MIENTRASHACER, SI..ENTONCES, contadores, arreglos tipo registro. Se
proponen 2 soluciones:
1. Introduciendo los datos que trabajaremos directamente en el programa
2. Que el usuario introduzca los datos y utilice un ciclo para ello
PROBLEMA 5
(Mientras..
Hacer, Si..
Entonces,
contadores,
arreglos)
En una empresa: se debe visualizar en una lista FICHA donde se encuentra nombre categora,
edad y sueldo ademas el programa debe visualizar un mensaje existen trabajadores
mayores de 65 aos en un numero de ... y el numero de trabajadores mayores de 65 aos.
Algoritmo Inicio
SW <- 0
mientras SW = 0 hacer
Leer FICHA (NOMBRE CATEGORA, EDAD, SUELDO)
Escribir FICHA
Si EDAD > 65 Entonces
S <- S + 1
SW <- 1
Fin_si
Fin_mientras
Si SW = 1 Entonces
Escribir existen trabajadores...
Escribir S
Fin_si
Fin
SLE /* PROBLEMA 5
En una empresa se debe visualizar en una lista FICHA donde se encuentra
nombre, categoria, edad y sueldo
para que el programa visualice un mensaje "EXISTEN TRABAJADORES MAYORES
DE 65 AOS EN UN NUMERO DE... " y el no. de trabajadores */

var
contador = 0
adulto_mayor = 0
existen_tercer_edad = 0
ficha : vector [*] registro
{
nombre : cadena;
categoria : cadena
edad : numerico
sueldo : numerico
}
inicio
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 84

cls()
/* Inicializamos el vector FICHA para 3 trabajadores */
//dim (ficha, 3 )
ficha = { {"Mirta","Contabilidad",45,1400},
{"Jose","Intendencia",70, 980},
{"Luisa","Ventas",25,1300}
}
//imprimir ("Ficha 1: ",ficha[1])
//imprimir ("\nFicha 2: ",ficha[2].edad)
desde contador = 1 hasta 3
{
imprimir ("\nFicha ",contador,": ", ficha[contador])
si ( ficha[contador].edad > 65 )
{
adulto_mayor = adulto_mayor + 1
existen_tercer_edad = 1
}
}
si (existen_tercer_edad == 1 )
{
imprimir ("\nExisten trabajadores ",adulto_mayor, " de la tercera edad")
}
Fin
SLE Solucion 2: /* PROBLEMA 5
En una empresa se debe visualizar en una lista FICHA donde se encuentra
nombre, categoria, edad y sueldo
para que el programa visualice un mensaje "EXISTEN TRABAJADORES MAYORES
DE 65 AOS EN UN NUMERO DE... " y el no. de trabajadores

Variacion, permitiendo que el usuario defina cuantos trabajadores y
que el mismo capture los datos para procesar despues */

var
contador = 0
adulto_mayor = 0
existen_tercer_edad = 0
trabajadores = 0
i = 0
ficha : vector [*] registro
{
nombre : cadena;
categoria : cadena
edad : numerico
sueldo : numerico
}
inicio
cls()
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 85

/* Preguntamos al usuario cuantos trabajadores quiere */
imprimir ("Cuantos trabajadores quieres procesar?" )
leer (trabajadores)
dim (ficha, trabajadores )
/* Ahora haremos un ciclo para la captura de los trabajadores */
desde i = 1 hasta trabajadores
{
/* Comienza la captura */
imprimir ("\nNombre: ")
leer ( ficha[i].nombre )
imprimir ("Categoria: " )
leer ( ficha[i].categoria )
imprimir ("Edad: " )
leer ( ficha[i].edad )
imprimir ("Sueldo: " )
leer ( ficha[i].sueldo )
}
/* Ahora procesamos de manera normal */
imprimir ("\n Proceso \n" )

desde contador = 1 hasta trabajadores
{
imprimir ("\nFicha ",contador,": ", ficha[contador])
si ( ficha[contador].edad > 65 )
{
adulto_mayor = adulto_mayor + 1
existen_tercer_edad = 1
}
}
si (existen_tercer_edad == 1 )
{
imprimir ("\nExisten trabajadores ",adulto_mayor, " de la tercera edad")
}
Fin













ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 86


Objetivo Se practicara el uso de arreglos (vectores) para almacenar la informacion, como usar algunas
funciones de cadena existentes en los lenguajes de programacion (como se usan en SLE), como
se trabaja con operaciones usando arreglos.
Ademas de manejar los ciclos y condiciones segn el problema dado.

Tambien, introduce al alumno en el concimiento de generacion de claves o identificadores o
contraseas para uso posterior en lenguajes de programacion informaticos y como manejar las
cadenas.
PROBLEMA 6
(Arreglos,
cadenas,ciclos,
condiciones)
Autogenerar el codigo del alumno tomando como datos los dos primeros caracteres del
apellido paterno el segundo y tercer caracterde apellido materno los dos ultimos caracteres
de los nombres mas el numero que le corresponde en la lista. Ademas se deber pedir dos
notas para calcular su promedio del curso de matematica. se sabe que en el aula son 36
alumnos y ademas deber mostrar al final la cantidad de alumnos desaprobados.
Algoritmo variables
Nom(36),pat(369,Mat(36),Cod(36):Texto
N1(36),N2(36),Prom(36),A,D,C:Numerico

Inicio
A=0
D=0
paraC=1 hasta 36
leer Nom(c), Pat(c),Mat(c),N1(c),N2(c)
cod(c)=Left(pat(c),2)+Mid(Mat(c),2.2)+Rig(Nom(c),2)+STR(c)
Prom(c)=(N1(c))+N2(c))/2
escribir cod(c), prom(c)
si prom(c)>=10.5 Then
A=A+1
si no
D=D+1
fin_si
fin_para
escribir A,D
Fin

SLE /* PROBLEMA 6
Autogenerar el codigo del alumno tomando como datos
los 2 primeros caracteres del apellido paterno
el segundo y tercer caracter del apellido materno
y los dos ultimos caracteres de los nombres
mas el numero que le corresponde en la lsita.
Ademas, debera pedir 2 calificaciones para calcular su promedio
del curso de matematicas.

Se sabe que en el aula son 22 alumnos y ademas debera mostrar al final
la cantidad de alumnos reprobados */
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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")
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 88

fin


Objetivo El alumno debera pensar como calcular el numero mayor de una lista aplicando variables
temporales. Se maneja un ciclo para preguntar cuantas veces quiere repetir y condicion
SI..ENTONCES
PROBLEMA 7
(Desde.. hasta,
Si.. Entonces)
Calcular el nmero mayor de una lista de nmeros.
Algoritmo
real: UM, MAX
entero: I, N

inicio
leer N // N >0
leer NUM
MAX <-- NUM
desde I <-- 2 hasta 100 hacer
leer NUM
si NUM > MAX entonces
MAX <-- NUM
fin_si
fin_desde
fin

SLE /* Problema 7
Calcular el numero mayor de una lista de numeros */

var
numero, maximo : numerico
i, cuantos : numerico
inicio
cls()
imprimir ("Cuantas veces quieres el ciclo?")
leer ( cuantos )
imprimir ("Primer numero:")
leer ( numero)
maximo = numero
desde i = 2 hasta cuantos
{
imprimir ("\nSiguiente numero ",i,":")
leer (numero)
si (numero > maximo)
{
maximo = numero
}
}
imprimir ("El numero maximo encontrado es:",maximo )
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 89

fin


Objetivo Se practicaran los arreglos (vectores) y manejo de ciclos ascendentes y descentes.
En este ejercicio no se da la solucion en SLE para que el alumno lo realice por si mismo
PROBLEMA 8
(Arreglos,
Ciclos
Mientras)
Hacer un programa que registre 10 apellidos y que los muestre en forma inversa al orden con
el que fueron ingresados.
Algoritmo
Inicio
Dimensionar Apellido[10]
X<-1
mientras x<=10 hacer
leer Apellido[x]
x<- x+1
fin_mientras
X <- 10
mientras X >= 1 hacer
mostrar Apellido[X]
X <- X - 1
fin_mientras
Fin

SLE

Objetivo Este ejercicio es similar al problema 8 y sirve para que el alumno practique los arreglos
(vectores) y los ciclos MIENTRASHACER, combinado con una condicion y la operacin de
residuo de una division

* Tampoco se da la solucion en SLE para que el alumno lo elabore.
PROBLEMA 9
(Arreglos,
Mientras..
hacer, Si..
Entonces)
Elaborar un algoritmo, que permita el ingreso de 100 nmeros enteros.
El programa debe sumar todos los nmeros que sean mltiplos de 3.
Algoritmo
Inicio
Dimensionar numero[100]
x<-1
mientras x<=100 hacer
leer numero[x]
x<-x+1
fin - mientras
x<- 1
s<- 0
mientras x<=100 hacer
Si (numero[x] mod 3 = 0) entonces
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 90

s<- s+numero[x]
Fin_Si
x<-x+1
Fin_mientras
Mostrar s
Fin

SLE

Objetivo Manejo de cadenas, conocer como se genera una contrasea o password, uso de funciones de
cadena y contadores
PROBLEMA 10
(Cadenas,
Strlen, Substr,
Desde..hasta)
Realizar un algoritmo que permita ingresar una frase y la descomponga esta en sus palabras
imprimindolas al revs. Ejem.
CIUDAD CHICLAYO
DADUIC OYALCIHC
Algoritmo
Inicio
Caracter Frase [20] ;
Entero L, K, C, j ;
Lee cadena (Frase) ;
L = longitud (Frase) ;
Para i = 1 ; i = L
Si (Frase [i] = ' ') entonces
Ce <- ce + 1 ;
Fin_Si
Fin_Para
Entero x = 1
Para i = 1
K = 1
C = 0
Para j = x ; Frase [j] < > ''
Invertida [k] <- Frase [j]
C <- C + 1
Fin_Para
Para k = 1 ; k =L
Mostrar "Invertida [k]
Fin_Para
x = j + i
Fin_Para
Fin

SLE /* Problema 10
Realizar un algoritmo que permita ingresar una frase y la descomponga
en sus palabras imprimiendolas al reves: Ejemplo:
CIUDAD
DADUIC
*/

var
palabra : cadena
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 91

invertida: cadena
longitud, k, letra : numerico
inicio
cls()
imprimir ("Dame una palabra o frase:")
leer (palabra )
/* Conocer el tamao de la palabra */
longitud = strlen( palabra )
/* Hacer un ciclo segun la cantidad de letras */
letra = 0
desde k=1 hasta longitud
{
invertida = invertida + substr( palabra,longitud-letra,1)
letra = letra + 1
}
imprimir ("Palabra o frase invertida es: ", invertida )
fin



Objetivo Practicar subrutinas (procedimientos), arreglos tipo registro, ciclos y condiciones, ademas de
operaciones con los arreglos
PROBLEMA 11
(Subrutinas..
procedimientos,
arreglos..
registro, ciclos,
condiciones)
ELIMINAR UN ALUMNO DEL SALON, DADA UNA POSICIN INDICADA
Algoritmo
Inicio
Dimensionar ALUMNO[100],NOTA1[100], NOTA2[100]
ENTERO i,pos,n
leer n
i <- 1
mientras i<=n hacer
leer ALUMNO[i], NOTA1[i],NOTA2[i]
i <- i+1
fin_mientras
leer pos
si (pos<n) entonces
i <- pos
mientras i<n
ALUMNO[pos]<- ALUMNO[pos + 1]
NOTA1 [pos]<- NOTA1[pos+1]
NOTA2 [pos]<- NOTA2[pos+1]
n <- n-1
fin_mientras
escribir ALUMNO[pos], NOTA1[pos],NOTA2[pos]
sino
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 92

si (pos=n) entonces
ALUMNO[n]<- ""
NOTA1 [n]<- 0
NOTA2 [n]<- 0
fin_si
sino
si (pos>n) entonces
Escribir "Cambiar Dato"
fin_si
Fin

SLE /* Problema 11
Eliminar un alumno del salon, dada una posicion indicada */

var
i, posicion : numerico
ficha : vector [*] registro
{
alumno : cadena;
calif1 : numerico
calif2 : numerico
}

inicio
cls()
MatrizAlumnos()
MostrarFichas()
imprimir ("Que ficha deseas eliminar? 0=Ninguna")
leer (posicion)
/* Eliminar alumno */
si (posicion<>0 && posicion<alen(ficha)+1)
{
ficha[posicion].alumno = ""
ficha[posicion].calif1 = 0
ficha[posicion].calif2 = 0
cls()
MostrarFichas()
sino
imprimir ("\nNingun alumno se ha eliminado")
}
fin

/* La siguiente subrutina inicializara la matriz de alumnos */
subrutina MatrizAlumnos()
inicio
ficha = { {"Ayon Amparo",85,100},
{"Badillo Ruben",85,100},
{"Bazan Jesus",70, 98},
{"Berumen Gaston",25,100},
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 94

leer articulo[i],precio[i]
fin_para
para i=0 hasta i<NE-1
para j =i+1 hasta j<NE
si(precio[i] < precio[j]) entonces
aux1<- precio
aux2<- articulo[i]
precio[i]<- precio[j]
articulo[i]<- precio[j]
precio[j]<- aux1
articulo[j]<- aux2
fin_si
fin_para
fin_para
para i=0 hasta i<NE
escribir articulo[i],precio[i]
fin_para
para i=NE hasta i>5
escribir articulo [i],precio[i]
fin_para
sino
escribir "arreglo vacio"
fin_si
Fin

SLE /* Problema 12
Mostrar articulos de abarrotes ordenados por mayor precio y
mostrar los 5 articulos de menos precio */

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 */
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 95

subrutina MatrizArticulos()
inicio
ficha = { {"Aceite",21},
{"Barritas Pia Marinela",12},
{"CocaCola 2Lt",18},
{"Pepsi 2L",15},
{"Gansito",10},
{"Pinguino",8},
{"Azucar",25},
{"Huevo x kilo",21},
{"Jamon",19.90},
{"Tortilla x kilo",7.50},
{"Agua Ciel",8},
{"Conchas Bimbo",9},
{"Harina",21},
{"Jumex Manzana",6.50},
{"Jumex Durazno",6.50}
}
fin

subrutina MostrarArticulos()
inicio
desde i=1 hasta alen(ficha)
{
imprimir ("Articulo: ",i,"-",ficha[i],"\n")
}
fin

subrutina MostrarArtXPrecio()
inicio
/* Comenzara nuevamente un ciclo a recorrer toda la matriz */
desde i=1 hasta alen(ficha)
{
/* Tenemos que evaluar fila x fila del registro para comparar los
precios e irlos "moviendo"
segun sean mayores al principio
hacemos un segundo ciclo que recorra nuevamente los
registros para compararlo con el primero
quiza necesitemos algunas variables de comparacion */

vArticulo = ficha[i].articulo
vPrecio = ficha[i].precio

desde j=i+1 hasta alen(ficha)
{
si ( vPrecio < ficha[j].precio)
{
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 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 aos Aumento: S/. 100
Tiempo de servicio: de 5 a 10 aos Aumento: S/. 250
Tiempo de servicio: de 10 a 20 aos Aumento: S/. 400
Tiempo de servicio: de 20 aos a ms Aumento: S/. 550
Se desea obtener unalista del personal en orden creciente con respecto al sueldo modificado
Algoritmo
Inicio
Dimensionar Nombre[1200], Tiempo[1200], Sueldo[1200]
X <- 1
mientras X <= 1000 hacer
leer Nombre[X], Tiempo[X]
X <- X + 1
fin_mientras
X <- 1
mientras X <= 1000 hacer
si Tiempo[X] <= 5 entonces
Sueldo[X] <- 1000 + 100
fin_si
si Tiempo[X] <= 10 entonces
Sueldo[X] <- 1000 + 250
fin_si
si Tiempo[X] <= 20 entonces
Sueldo[X] <- 1000 + 400
sino
Sueldo[X] <- 1000 + 550
fin_si
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 97

X <- X + 1
fin_mientras
X <- 1
mientras X <= 1000 hacer
Y <- X
mientras Y <= 1000 hacer
si Sueldo[X] > Sueldo[Y] entonces
T <- Nombre[X]
Nombre[X] <- Nombre[Y]
Nombre[Y] <- T
T <- Tiempo[X]
Tiempo[X] <- Tiempo[Y]
Tiempo[Y] <- T
T <- Sueldo[X]
Sueldo[X] <- Sueldo[Y]
Sueldo[Y] <- T
fin_si
Y <- Y +1
fin_mientras
X <- X + 1
fin_mientras
X <- 1
mientras X <= 100 hacer
mostrar Nombre[X], Tiempo[X], Sueldo[X]
X <- X + 1
fin_mientras
Fin

SLE /* PROBLEMA 13
En una empresa de 1000 trabajadores, se hara un aumento al salario de
acuerdo al tiempo de servicio, para este aumento se tomara en cuenta
lo siguiente:
Tiempo de servicio:
1 a 5 aos - Aumento 100
5 a 10 aos - 250
10 a 20 aos - 400
20 aos o mas 550

NOTA: TODOS GANAN UN SUELDO BASE DE 1000

Se desea obtener una lista del personal en orden creciente con
respecto al sueldo */

const
salario = 1000
var
x = 1
y = 1
nombre : vector[1200] cadena
tiempo,sueldo : vector[1200] numerico
vNombre : cadena
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 98

vTiempo : numerico
vSueldo : numerico
inicio
cls()
/* Para efectos practicos solo se procesan 4*/
/* Hacer ciclo de captura de datos */
desde x=1 hasta 4
{
imprimir ("Trabajador:")
leer (nombre[x])
imprimir ("Tiempo:")
leer (tiempo[x])
}
/* Ahora hacer ciclo de asignacion de aumento de sueldo */
desde x=1 hasta 4
{
eval
{
caso (tiempo[x] <= 5)
sueldo[x] = salario + 100
caso (tiempo[x] <= 10)
sueldo[x] = salario + 250
caso (tiempo[x] <= 20)
sueldo[x] = salario + 400
sino
sueldo[x] = salario + 550
}
}
/* Ahora ciclo de ordenacion */
desde x = 1 hasta 4
{
y = x + 1
mientras (y <= 4)
{
si (sueldo[x] > sueldo[y])
{
vNombre = nombre[x]
nombre[x] = nombre[y]
nombre[y] = vNombre

vTiempo = tiempo[x]
tiempo[x] = tiempo[y]
tiempo[y] = vTiempo

vSueldo = sueldo[x]
sueldo[x] = sueldo[y]
sueldo[y] = vSueldo
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 99

}
y = y + 1
}
}
/* Ahora ciclo de mostrar la informacion */
imprimir ("Nombre Tiempo
Sueldo\n")
desde x=1 hasta 4
{
imprimir (nombre[x]," ",tiempo[x],"
",sueldo[x],"\n")
}
fin



Objetivo Practicar el uso de archivos externos para manejo de la informacion. Se debera crear un archivo
externo al programa en formato de texto plano (se puede utilizar el bloc de notas) para poner la
informacion que estabamos haciendo dentro del propio programa.

Ahora el programa, debera ubicar este archivo de texto, abrirlo, leerlo y pasar la informacion a
unas variables de vector para despues realizar la operacin de condicion e imprimirlas en
pantalla.

Se hara uso de funciones para operar con archivos externos
PROBLEMA
14 (Archivos
externos
lectura,
arreglos,
ciclos,
condicion)
Dada una lista de 100 personas se pide una relacin de las personas mayores de 35 aos.
Algoritmo
Inicio
Dimensionar Nombre[150], Edad[150]
X <- 1
mientras X <= 150 hacer
leer Nombre[X], Edad[X]
X <- X + 1
fin_mientras
X <- 1
mientras X <= 150 hacer
Si Edad[X]>= 35 Entonces
mostrar Nombre[X], Edad[X]
fin_si
X <- X + 1
fin_mientras
Fin
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 100


SLE /* PROBLEMA 14.
Dada una lista de 100 personas se pide una relacion de las personas mayores
de 35 aos.

En este ejercicio se usaran archivos de texto externo para procesar las listas*/

const
arch_entrada = "empleados.txt"
var
x = 1
linea = ""
nombre : vector[150] cadena
edad : vector[150] numerico
inicio
cls()
/* Primer ciclo, lectura de la informacion */
si ( not set_stdin (arch_entrada)) {
imprimir ("\nNo se pudo abrir el archivo ",arch_entrada,
".\nEl programa no puede continuar.")
terminar ("\nEjecucion terminada con error.\n")
}
mientras ( not eof())
{
leer (nombre[x])
leer (edad[x])
x = x + 1
}

/* Ciclo imprimir */
desde x = 1 hasta 10
{
si (edad[x] >=35)
{
imprimir (nombre[x]," ", edad[x],"\n")
}
}
fin

ARCHIVO EMPLEADOS.TXT:
sergio,41
claudia,38
rocio,18
laura,15
miguel,25
ramon,43
julieta,32
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 101

mirna,48
hugo,36
lupita,23

y todos los que el usuario desee agregarle en la forma de nombre,edad.



Objetivo Ejercicio de reforzamiento que sirve de base para aplicarlo en un examen o evaluacion parcial.
Incluye el uso de constantes, variables, ciclo desdehasta anidados, condicional Si..entonces
PROBLEMA
15(Examen
1)
Al final del curso deseamos saber cual ha sido el alumno de primer ao con mejor nota media.
Se sabe que este ao entraron 150 alumnos y que en primero todos tienen 5 asignaturas. Dar el
nombre del alumno y la calificacion media (promedio).
Algoritmo
SLE /* Problema 15 - Examen 2o. Parcial
Al final del curso deseamos saber cual ha sido el alumno
de primero con mejor nota media. Se sabe que este ao entraron
150 alumnos y que en primero todos tienen 5 asignaturas. Dar
el nombre y la nota media */

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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 102

mejor_alumn = nombre
}
}
imprimir ("El mejor alumno es: ", mejor_alumn,"\n")
imprimir ("Su nota media es: ",acum )
fin


Objetivo Este ejercicio puede servir como evaluacion o examen aunque su nivel de dificultad es alta.
Se practican contantes, arreglos de matriz, tipos de datos varios, subrutinas de procedimientos y
funciones ya que regresaran un valor.
PROBLEMA
16
(Constantes,
Matriz,
Subrutinas,
funciones,
tipos datos)
Hay unos multicines con 5 salas, y cada sala con 100 personas distribuidas en 20 asientos y 5
filas.
Si yo pido entrada para una sala, implementar un programa que me diga si hay sitio en dicha
sala
Algoritmo
SLE /* Programa 16. Examen
Hay unos multicines con 5 salas, y cada sala con 100 personas
distribuidas en 20 asientos y 5 filas.
Si yo pido entrada para una sala, implementar un programa que
me diga si hay sitio en dicha sala */

const
salas = 5
asientos = 20
filas = 5
var
n_salas, j, k : numerico
s:numerico
marca : logico
a : matriz[*,*,*] numerico
aSalas : matriz[1,salas] numerico
aAsientos : matriz[1,asientos] numerico
aFilas : matriz[1,filas] numerico

inicio
cls()
InicializaMatriz()
//MostrarSalas()
//PedirDatos()
//n_salas = s
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 103

n_salas = PedirDatos()
mientras (n_salas <> 0)
{
imprimir ("n_salas:",n_salas)
marca = FALSE
j = 0
k = 1
repetir
si (j<asientos)
{
j=1
k=k+1
}
si (j==asientos and k>=filas)
{
imprimir ("Sala llena\n")
marca = TRUE
sino

si (a[n_salas,j,k] == 0)
{
a[n_salas,j,k] = 1
imprimir ("\nSala ",n_salas, " Fila ",j," Asiento ",k,"\n")
marca = TRUE
}
}
hasta (a[n_salas,j,k]==1 and marca==TRUE)
MostrarSalas()
n_salas = PedirDatos()
}

fin

subrutina PedirDatos() retorna numerico
var
nosala:numerico
inicio
repetir
imprimir ("En que sala quieres entrar?")
leer (s)
hasta (s>=0 && s<=salas)
nosala = s
retorna (nosala)
fin

subrutina InicializaMatriz()
var
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 104

tam,z,x,y : numerico
inicio
dim (a, salas,filas,asientos )
a[1,1,1]=0
a[1,2,1]=0
tam = alen( a)
desde z=1 hasta 2
{
desde x = 1 hasta 5
{
desde y = 1 hasta 20
{
imprimir ( a[z,x,y] )
}
imprimir ("\n")
}
imprimir ("\n======\n")
}
fin

subrutina MostrarSalas()
var
tam,z,x,y : numerico
inicio
tam = alen( a)
desde z=1 hasta 2
{
desde x = 1 hasta 5
{
desde y = 1 hasta 20
{
imprimir ( a[z,x,y] )
}
imprimir ("\n")
}
imprimir ("\n======\n")
}

Fin








ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 105


Objetivo Este ejercicio tambien sirve de base para un examen o evaluacion al alumno, ya que debe realizar
las operaciones aritmeticas comunes pero utilizando subrutinas, variables globales, condiciones
multiples.
PROBLEMA
17
(Subrutinas,
variables
globales,
condicion
multiple)
Realizar un programa que realice las operaciones basicas aritmeticas (suma, resta,
multiplicacion y division) mediante el uso de subrutinas que sean funciones. Ademas, debera
crear un menu inicial para el usuario
Algoritmo
SLE /* Programa 17. Examen
Realizar un programa que realice las operaciones basicas aritmeticas (suma, resta, multiplicacion
y division)
mediante eluso de subrutinas que sean funciones. Ademas, debera crear un menu inicial para el
usuario */

var
operador1, operador2,resultado: numerico
opcion = 0
inicio
cls()
Menu()
mientras (opcion<>0)
{
eval
{
caso (opcion == 1)
LeerDatos()
resultado = Suma(operador1,operador2)
imprimir ("\n\n",strdup("*",30),"\n")
imprimir ("El resultado es: ",resultado,"\n")
Menu()
caso (opcion == 2)
LeerDatos()
resultado = Resta(operador1,operador2)
imprimir ("\n\n",strdup("*",30),"\n")
imprimir ("El resultado es: ",resultado,"\n")
Menu()
caso (opcion == 3)
LeerDatos()
resultado = Multiplicacion(operador1,operador2)
imprimir ("\n\n",strdup("*",30),"\n")
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 106

imprimir ("El resultado es: ",resultado,"\n")
Menu()
caso (opcion == 4)
LeerDatos()
resultado = Division(operador1,operador2)
imprimir ("\n\n",strdup("*",30),"\n")
imprimir ("El resultado es: ",resultado,"\n")
Menu()
sino
terminar ("Opcion incorrecta!\n")
}
}
fin

subrutina 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
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 107

retorna (solucion)
fin

subrutina Multiplicacion(n1:numerico; n2:numerico) retorna numerico
var
solucion = 0
inicio
solucion = n1 * n2
retorna (solucion)
fin

subrutina Division(n1:numerico; n2:numerico) retorna numerico
var
solucion = 0
inicio
solucion = n1 / n2
retorna (solucion)
fin



Objetivo Este es el ejercicio final explicado por el profesor, ya que contiene todos los elementos vistos en
todos los ejercicios, ademas del uso de archivos externos para grabar y leer la informacion.
Subrutinas, funciones, constantes, variables, definicion de tipos, arreglos de registro, ciclos,
condiciones y algunas funciones del lenguaje SLE
PROBLEMA
18 (Ejemplo
completo de
Sistema
ABC,
Archivos
externos)
Realizar un programa que realice las operaciones basicas altas, bajas, cambios de un archivo
de alumnos como un sistema escolar para inscripciones.
Debe usar un archivo de texto para almacenar la informacion
Algoritmo
SLE /* Programa 18.
Realizar un programa que realice las operaciones basicas altas, bajas, cambios de un archivo
de alumnos como un sistema escolar para inscripciones
Debe usar un archivo de texto para almacenar la informacion */

const
arch_entrada = "alumnos.txt"
arch_salida = "alumnos.txt"

tipos
fecha : registro
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 108

{dia,mes,ano:cadena}

var
operador1, operador2,resultado: numerico
opcion = 0
x = 1
linea :cadena
alumno : vector[*] registro
{ control:cadena
nombre: cadena
apellido: cadena
edad: cadena
carrera:cadena
fechaalta:fecha
}
totReg:numerico

inicio
cls()
//dim( alumno,4)
Menu()


mientras (opcion<>0)
{
eval
{
caso (opcion == 1)
AltaRegistro()
//resultado = Suma(operador1,operador2)
//imprimir ("\n\n",strdup("*",30),"\n")
//imprimir ("El resultado es: ",resultado,"\n")
Menu()
caso (opcion == 2)
BorrarRegistro()
Menu()
caso (opcion == 3)
ModificarRegistro()
Menu()
caso (opcion == 4)
//InicializaMatriz()
ListarDatos()
Menu()
sino
terminar ("Opcion incorrecta!\n")
}
}
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 109

fin

subrutina Menu()
inicio
imprimir (strdup("=",40),"\n")
imprimir ("Sistema de Inscripciones Escolar \n")
imprimir ("Selecciona una operacion. 0=Termina\n")
imprimir ("1) Agregar un alumno \n")
imprimir ("2) Borrar un alumno \n")
imprimir ("3) Modificar datos de alumno \n")
imprimir ("4) Listado de alumnos \n")
leer (opcion)
fin

subrutina InicializaMatriz()
inicio
dim(alumno,1)
si (not set_stdin( arch_entrada))
{
imprimir ("\nNo se pudo abrir el archivo ",arch_entrada,
".\nEl programa no puede continuar")
terminar ("\nEjecucion terminada con error\n")
}
x=1
totReg = ContarRegistros()
imprimir ("total de registros encontrados:",totReg,"\n")
dim(alumno,totReg)
set_stdin( arch_entrada)
mientras (not eof())
{
leer( alumno[x].control)
leer( alumno[x].nombre)
leer( alumno[x].apellido)
leer( alumno[x].edad)
leer( alumno[x].carrera )
leer( alumno[x].fechaalta.dia)
leer( alumno[x].fechaalta.mes)
leer( alumno[x].fechaalta.ano)
x = x + 1
}
set_stdin("")
fin

subrutina ListarDatos()
inicio
dim(alumno,1)
si (not set_stdin( arch_entrada))
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 110

{
imprimir ("\nNo se pudo abrir el archivo ",arch_entrada,
".\nEl programa no puede continuar")
terminar ("\nEjecucion terminada con error\n")
}
x=1
totReg = ContarRegistros()
imprimir ("total de registros encontrados:",totReg,"\n")
dim(alumno,totReg)
set_stdin( arch_entrada)
mientras (not eof())
{
leer( alumno[x].control)
leer( alumno[x].nombre)
leer( alumno[x].apellido)
leer( alumno[x].edad)
leer( alumno[x].carrera )
leer( alumno[x].fechaalta.dia)
leer( alumno[x].fechaalta.mes)
leer( alumno[x].fechaalta.ano)
x = x + 1
}
set_stdin("")
/* Ciclo imprimir */

desde x=1 hasta totReg
{
//imprimir (alumno[x].nombre,"\n")
imprimir (alumno[x].control,"\t",alumno[x].nombre,"
",alumno[x].apellido,"\t",alumno[x].edad,"\t",alumno[x].carrera,"\t")
imprimir
(alumno[x].fechaalta.dia,"/",alumno[x].fechaalta.mes,"/",alumno[x].fechaalta.ano,"\n")
}
set_stdin("")
fin

subrutina ContarRegistros() retorna numerico
var
contreg=0
inicio
mientras (not eof())
{
leer( linea )
contreg = contreg + 1
}
contreg = contreg/8 // importante: dividir entre la cantidad de campos
establecido
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 111

imprimir ("conto registros:",contreg,"\n")
set_stdin("")
retorna (contreg)
fin

subrutina AltaRegistro()
var
nocontrol:numerico
vControl,vNombre,vApellido,vEdad,vCarrera,vDia,vMes,vAno:cadena

inicio
imprimir (strdup("*",30),"\n")
imprimir ("ALTAS DE ALUMNOS\n")
imprimir (strdup("*",30),"\n")
// Volvemos a necesitar saber cuantos registros tenemos para agregar uno nuevo
automaticamente
si (not set_stdin( arch_entrada))
{
imprimir ("\nNo se pudo abrir el archivo ",arch_entrada,
".\nEl programa no puede continuar")
terminar ("\nEjecucion terminada con error\n")
}

totReg = ContarRegistros() //Saber cuantas filas tiene nuestro archivo
/*El archivo de entrada debio cerrarse en la funcion anterior para poder leer desde el
teclado*/
/*Pedir la informacion por el teclado al usuario */
nocontrol = totReg + 1 //Como vamos a agregar,sumamos 1
imprimir ("Control: ",nocontrol,"\n")
imprimir ("Nombre : ")
leer( vNombre )
imprimir ("Apellido: ")
leer( vApellido )
imprimir ("Edad : ")
leer( vEdad )
imprimir ("Carrera : ")
leer( vCarrera )
imprimir ("Dia de Inscripcion: ")
leer( vDia )
imprimir ("Mes de Inscripcion: ")
leer( vMes )
imprimir ("Ano de Inscripcion: ")
leer( vAno )

/*Ahora hay que agregar los datos a nuestro archivo */
si (not set_stdout(arch_salida,"at"))
{
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 112

terminar( "\nNo se pudo abrir el archivo "+arch_salida)
}
/* A partir de ahora, imprimir grabara en el archivo no veremos nada en la pantalla */
vControl = str( nocontrol,2,0,"0" )
imprimir
("\n",vControl,",",vNombre,",",vApellido,",",vEdad,",",vCarrera,",",vDia,",",vMes,",",vAno)
set_stdout("")
imprimir ("REGISTRO GRABADO!\n")
fin

subrutina ModificarRegistro()
/* Para modificar un registro, tenemos que mostrarlos al usuario, al hacerlo, estaremos cargando la
matriz para conocer en que posicion esta, luego volvemos a preguntar la informacion
y se procede a grabar todos los registros*/
var
pos:numerico
regtotal:numerico
j:numerico

inicio
ListarDatos()
/*Ahora pregunta que registro quiere modificar*/
imprimir ("Que registro quieres modificar? 0=Nada\n")
leer(pos)
si (pos<>0)
{
imprimir ("Control: ",alumno[pos].control,"\n")
imprimir ("Nombre : ")
leer( alumno[pos].nombre )
imprimir ("Apellido: ")
leer( alumno[pos].apellido )
imprimir ("Edad : ")
leer( alumno[pos].edad )
imprimir ("Carrera : ")
leer( alumno[pos].carrera )
imprimir ("Dia de Inscripcion: ")
leer( alumno[pos].fechaalta.dia )
imprimir ("Mes de Inscripcion: ")
leer( alumno[pos].fechaalta.mes )
imprimir ("Ano de Inscripcion: ")
leer( alumno[pos].fechaalta.ano )
}
/*Ahora hay que grabar los datos a nuestro archivo */
si (not set_stdout(arch_salida))
{
terminar( "\nNo se pudo abrir el archivo "+arch_salida)
}
ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 113

/* A partir de ahora, imprimir grabara en el archivo no veremos nada en la pantalla */
//vControl = str( nocontrol,2,0,"0" )
regtotal = alen(alumno)

imprimir
(alumno[1].control,",",alumno[1].nombre,",",alumno[1].apellido,",",alumno[1].edad,",",alumno[1].c
arrera,",")
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)

ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 114

si (j<>posicion)
{
imprimir
(alumno[j].control,",",alumno[j].nombre,",",alumno[j].apellido,",",alumno[j].edad,",",alumno[j].carr
era,",")
imprimir
(alumno[j].fechaalta.dia,",",alumno[j].fechaalta.mes,",",alumno[j].fechaalta.ano)
j=2
sino
j=2
}
desde contador=2 hasta regtotal
{
si (contador<>posicion)
{
imprimir
("\n",alumno[j].control,",",alumno[j].nombre,",",alumno[j].apellido,",",alumno[j].edad,",",alumno[j].
carrera,",")
imprimir
(alumno[j].fechaalta.dia,",",alumno[j].fechaalta.mes,",",alumno[j].fechaalta.ano)
j=j+1
sino
j=j+1
}
}
set_stdout("")
imprimir ("\nREGISTRO ELIMINADO!\n")
}
fin


















ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 115



ANEXO 1 DIAGRAMAS DE FLUJO


En este apartado se presentan algunas practicas para trabajar unicamente con diagramas de flujo (sin pseudocodigo) ya
sea a mano, usando el programa DPD, o Edraw. El alumno debera realizar los diagramas correspondientes a cada uno de
los problemas presentados






































ESTRUCTURA DE DATOS CUADERNO EJERCICIOS

Cuaderno de Ejercicios Pgina 116


PROBLEMA 1
Hacer el diagrama de flujo para sumar dos numeros leidos por el teclado y escribir el
resultado



PROBLEMA 2
Modificar el anterior pero para sumar 100 numeros leidos por el teclado



PROBLEMA 3
Modificar el anterior para que permita sumar N numeros. El valor de N se debe leer
previamente por teclado



PROBLEMA 4
Hacer un diagrama de flujo que permita escribir los 100 primeros pares



PROBLEMA 5
Hacer un diagrama de flujo que permita escribir los 100 primeros pares



PROBLEMA 6
Hacer un diagrama de flujo que simule un reloj

Você também pode gostar