Escolar Documentos
Profissional Documentos
Cultura Documentos
Ministerio de Educacin y
Deportes
A travs del
Gua de Ejercicios
Prcticos para el Mdulo
Tcnicas de Programacin
Tabla de Contenido
INTRODUCCIN ........................................................................................................................4
Introduccin
Se desea disear un algoritmo que, de acuerdo a la altura de una persona, le permita entrar a
un juego en un parque de diversiones. En este caso, para poder subirse a la montaa rusa, si la
persona mide 1.30 mts. o ms, puede ingresar en caso contrario no puede.
Algoritmo a Probar: Prueba de Escritorio
INICIO validarAltura Altura Salida
FLOAT alturaPermitida = 1.30 Persona
SI (alturaPersona >= alturaPermitida) 1.50 Puede ingresar a la
ENTONCES: Puede ingresar a la montaa montaa rusa
rusa
1.20 No puede ingresar a la
SINO: No puede ingresar a la montaa
rusa montaa rusa
FIN_SI 1.30 Puede ingresar a la
FIN montaa rusa
1.00 No puede ingresar a la
montaa rusa
A lo largo de toda la gua se desarrollarn diferentes ejercicios, cada uno de ellos tiene un
enunciado que describe el problema, su resolucin propuesta y la prueba de escritorio para
validarlo.
Las tablas utilizadas para mostrar las pruebas de escritorio varan de acuerdo a la complejidad
del ejercicio.
Disear un algoritmo que permita aplicar un descuento del 10% al monto total de una compra
si la forma de pago empleada es de contado.
Disear un algoritmo que devuelva el nombre del mes, a partir del nmero de mes, ingresado
por teclado, por el usuario.
Disear un algoritmo que muestre por pantalla la tabla de multiplicacin del nmero que ingrese
el usuario. Para definir hasta que nmero desea que muestre la tabla de multiplicacin el usuario
tambin deber ingresar este valor.
Disear un algoritmo que realice el promedio de 4 nmeros. Los nmeros podrn ser decimales
y sern ingresados por pantalla por el usuario.
Disear un algoritmo que recorra las butacas de una sala de cine y determine cuntas butacas
desocupadas hay en la sala. Suponga que inicialmente tiene un array (arreglo) con valores
booleanos que si es verdadero(true) implica que est ocupada y si es falso(false) la butaca est
desocupada.
Sabiendo la cantidad de bancos de cada aula, el usuario deber ingresar la cantidad de alumnos
inscriptos para cursar tercer grado y el sistema deber determinar qu aula es la indicada para
la cantidad ingresada. La escuela ya sabe que la mxima capacidad de sus aulas es de 40
alumnos, por lo tanto, la cantidad de alumnos inscriptos que ingresa el usuario siempre ser un
nmero menor o igual a 40.
Listas necesarias para resolver el problema:
Azul Verde Amarillo 40 35 30
0 1 2 0 1 2
Ejercicio 11 Pila
Enunciado:
Disear un algoritmo que a partir de una pila inicial de tres elementos devuelva una pila
invertida. La pila contiene nmeros enteros como se muestra en la figura. Al comienzo la pila
est vaca, se deben apilar los siguientes elementos: 1,2,3 y luego invertir su orden.
https://www.youtube.com/
Ejercicio 14 Ordenamiento por Seleccin
watch?v=l0YwcUJB3vo
Escribir el pseudocdigo y las pruebas de escritorio para realizar la bsqueda del nombre de un
cliente en un vector que contiene 5 clientes en total. El cliente a buscar ser ingresado por
pantalla por el usuario. El algoritmo deber devolver, en caso de que ese nombre exista, la
posicin en donde se encuentra dicho cliente dentro del vector.
Soluciones Propuestas
Ejercicios Estructuras de Control
Ejercicio 1 Secuencial
Enunciado:
Escribir un algoritmo que permita realizar una suma de dos nmeros enteros. El usuario deber
ingresar primero un nmero, luego el siguiente nmero, y el sistema arrojar el resultado
correspondiente.
Pseudocdigo
INICIO
int primerNum;
int segundoNum;
int suma;
IMPRIMIR: Ingrese el primer nmero:
TOMAR: primerNumIngresado;
PrimerNum=primerNumIngresado
IMPRIMIR: Ingrese el segundo nmero
TOMAR: segundoNumIngresado;
SegundoNum=segundoNumIngresado
Suma=primerNum+segundoNum;
IMPRIMIR: El resultado de la suma es: + suma
FIN
Diagrama de Flujo
Inicio
Declaracin de
entero primerNum,
variables
entero segundoNum,
entero suma
segundoNumIngresado
segundoNum= segundoNumIngresado
Fin
Prueba de Escritorio
Identificacin de nombres de variables, con su tipo de variable y tipo de dato.
Ejecucin de Pruebas
Pseudocdigo
INICIO
String nombreUsuario;
String contrasea; //Suponiendo que la contrasea es slo de caracteres.
IMPRIMIR: Ingrese el nombre de usuario:
TOMAR: nombreIngresado;
nombreUsuario=nombreIngresado;
IMPRIMIR: Ingrese la contrasea
TOMAR: contraseaIngresada;
contrasea=contraseaIngresada;
IF(esValido(usuario) && esValido(contrasea))
THEN
IMPRIMIR: Usuario logeado con xito.
END IF
FIN
Diagrama de Flujo
Inicio
String
nombreUsuario,
String contrasea
nombreIngresado
nombreUsuario=nombreIngresado
"Ingrese la contrasea"
contraseaIngresada
contrasea=contraseaIngresada
FALSO
usuario & contrasea
son vlidos
VERDADERO
Fin
Prueba de Escritorio
Identificacin de nombres de variables, con su tipo de variable y tipo de dato.
Ejecucin de Pruebas
Inicio
cantAlumInscriptos
cantBancosAula = 35
SIMPLIFICACIN:
cantAlumInscriptos Se lee la entrada de datos y se asigna a
la variable en el mismo paso.
VERDADERO
Los bancos del
aula son
suficientes
La cantidad de bancos
Fin faltantes es: +
bancosFaltantes
Prueba de Escritorio
Identificacin de nombres de variables, con su tipo de variable y tipo de dato.
Ejecucin de Pruebas
Flotante montoTotal
String formaDePago
Flotante montoConDesc
montoTotal
formaDePago
Fin
Prueba de Escritorio
Identificacin de nombres de variables, con su tipo de variable y tipo de dato.
Ejecucin de Pruebas
Bloque de
Entrada Salida
N Decisin
Prueba Monto Forma FormaDePago Monto
Mensaje
Total DePago ==contado ConDesc
tarjeta tarjeta de La forma de pago
1 1320 de crdito== ingresada no tiene
crdito contado descuento asociado.
tarjeta tarjeta de La forma de pago
2 400 de dbito== ingresada no tiene
dbito contado descuento asociado.
El monto Total con
contado== 1320 * 0.9= descuento aplicado por
3 1320
contado contado 1188 forma de pago al contado,
es de: + 1188 + pesos.
El monto Total con
contado== 400 * 0.9= descuento aplicado por
4 400 contado
contado 360 forma de pago al contado,
es de: + 360 + pesos.
FIN
Diagrama de Flujo
Inicio
numeroMes
numeroMes
numeroMes ==
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | default
"El mes "El mes "El mes "El mes es "El mes es
"El mes
es es es Septiembre" Noviembre"
es Mayo" El nmero
Enero" Marzo" Julio"
ingresado
no
"El mes "El mes "El mes "El mes "El mes corresponde
"El mes es
es es es es es a un mes
Diciembre"
Febrero" Abril" Junio" Agosto" Octubre" vlido
Fin
Prueba de Escritorio
Identificacin de nombres de variables, con su tipo de variable y tipo de dato.
Ejecucin de Pruebas
entero tablaNum
entero tablaHasta
entero multiplicacion
entero contador=1
tablaNum
tablaHasta
VERDADERO
FALSO
multiplicacion=tablaNum*contador
contador++
tablaNum + * + contador + =
+ multiplicacion
Fin
Prueba de Escritorio
Identificacin de nombres de variables, con su tipo de variable y tipo de dato.
Ejecucin de Pruebas
entero tablaNum
entero tablaHasta
entero contador=1
tablaNum
tablaHasta
VERDADERO
multiplicacion=tablaNum*contador
contador++
tablaNum + * + contador + = +
multiplicacion
FALSO
Fin
Prueba de Escritorio
Identificacin de variables de entrada, tipos de variables y tipo de datos
Ejecucin de Pruebas
Inicio
floatante acumulador
flotante promedio
flotante numero
Ingrese el nmero:
+ i
numero
acumulador += numero
promedio=acumulador/4
Fin
Prueba de Escritorio
Identificacin de nombres de variables, con su tipo de variable y tipo de dato.
Ejecucin de Pruebas
entero butacasVacias= 0
booleano butacaActual=
ObtenerElementoEnPosicin(i);
NO
butacaActual == false
SI
butacasVacias= butacasVacias + 1
La cantidad de Butacas
vacas en la sala es: +
butacaVacias
Fin
Prueba de Escritorio
Identificacin de nombre de variables, con su tipo de variable y tipo de datos
Ejecucin de Pruebas
Bloque Auxiliar
Auxiliar Ciclo For Salida
de Decisin contador
Id.
I<longitud
butacas i, ba ba==false bv Mensaje
butacas
0<4: si 0, false false == false Bv=0+1=1 La cantidad
[false, 1<4: si 1, false false == false Bv=1+1=2 de Butacas
Prueba
false, vacas en la
1 2<4: si 2, true true == false Bv=2
true, sala es: + 2
true] 3<4: si 3, true true == false Bv=2
4<4: no, Fin For
0<4: si 0, true true == false Bv=0 La cantidad
[true, 1<4: si 1, true true == false Bv=0 de Butacas
Prueba
true, vacas en la
2 2<4: si 2, true true == false Bv=0
true, sala es: + 1
false] 3<4: si 3, false false == false Bv=0+1=1
4<4: no, Fin For
Sabiendo la cantidad de bancos de cada aula, el usuario deber ingresar la cantidad de alumnos
inscriptos para cursar tercer grado y el sistema deber determinar qu aula es la indicada para
la cantidad ingresada. La escuela ya sabe que la mxima capacidad de sus aulas es de 40
alumnos, por lo tanto, la cantidad de alumnos inscriptos que ingresa el usuario siempre ser un
nmero menor o igual a 40.
Listas necesarias para resolver el problema:
Azul Verde Amarillo 40 35 30
0 1 2 0 1 2
Pseudocdigo
INICIO
String listaColoresAulas[] = [Azul, Verde, Amarillo]
int listaCapacAulas[] = [40, 35, 30]
int cantAlumIns;
IMPRIMIR: Ingrese la cantidad de alumnos inscriptos al cursado:
TOMAR Y ASIGNAR: cantAlumIns;
int capacidadAulaAux = Obtener(listaCapacAulas,0);
Diagrama de Flujo
Inicio
entero cantAlumInscriptos
cantAlumInscriptos
entero capacidadAulaAux =
Obtener(listaCapacAulas,0)
SI
capacidadAulaAux = capacidadAulaActual
entero indiceAulaAux = i
Fin
Prueba de Escritorio
Identificacin de nombre de variables, con su tipo de variable y tipo de datos
Ejecucin de Pruebas
Entrada Auxiliares Array: Ciclo For Bloque de decisin Auxiliares Salida
N de cantAlu CapacidadAula i CapacidadAul capacidadAulaActual>= colorAul
Prueba mIns Aux aActual cantAlumIns && indiceAula a
capacidadAulaActual < Aux
capacidadAulaAux
35 >= 30 y 35 < 40? ->
1. a 40 1 35 SI; 1
capacidadAulaAux=35
30
30 >= 30 y 30 < 35? ->
1. b 35 2 30 SI; 2 Amarillo
capacidadAulaAux = 30
35 >= 35 y 35 <40? ->
2. a 40 1 35 SI; 1
35 capacidadAulaAux= 35
30 >= 35 y 30 < 35? ->
2. b 35 2 30 1 Verde
NO
Ejercicio 11 Pila
Enunciado:
Disear un algoritmo que a partir de una pila inicial de tres elementos devuelva una pila
invertida. La pila contiene nmeros enteros como se muestra en la figura. Al comienzo la pila
est vaca, se deben apilar los siguientes elementos: 1,2,3 y luego invertir su orden.
Pseudocdigo
INICIO
Pila pilaOriginal;
Pila pilaInvertida;
For (i=1, i<=3, i++)
IMPRIMIR Ingrese un nmero;
Int numero;
TOMAR Y ASIGNAR numero;
apilar (pilaOriginal, numero);
Fin For
IMPRIMIR Pila Inicial: + pilaOriginal
int principio= desapilar(pilaEnteros);//principio=3
apilar (pilaInvertida,principio);//el elemento principio pasa a ser final
int medio= desapilar(pilaEnteros);//medio=2
apilar(pilaInvertida, medio);//el elemento medio seguir siendo medio
int final = desapilar(pilaEnteros);//final=3
apilar(pilaInvertida, final);//el elemento final pasa a ser principio
IMPRIMIR: Pila Invertida: + pilaInvertida
FIN
Diagrama de Flujo
Inicio
"Ingrese un
nmero"
Pila Inicial: +
pilaOriginal
Pila Invertida: +
pilaInvertida
Fin
Prueba de Escritorio
Identificacin de nombre de variables, con su tipo de variable y tipo de datos
Ejecucin de Pruebas
Prueba de Escritorio
Prueba de Escritorio
1er
Ciclo del for
i=0
2do
Ciclo del for
i=1
3er
Ciclo del for
i=2
Prueba de Escritorio
Diagrama de Flujo
Inicio
entero
posicion
String nombre
Ingrese el nombre
del cliente a buscar
nombre
booleano seEncontr=false
NO
clientes[i]==nombre
SI
seEncontr=true
posicin=i
El cliente no se NO
encuentra en la seEncontr== true
lista
SI
El cliente buscado se
encuentra en la posicin: +
posicion
Fin
Prueba de Escritorio
Identificacin de variables de entrada, tipos de variables y tipo de datos
Ejecucin de Pruebas
Fuentes de Informacin
Frittelli, Valerio Algoritmos y Estructuras de Datos 1ra Edicin (Editorial Cientfica
Universitaria Ao 2001)
Sommerville, Ian - INGENIERA DE SOFTWARE 9na Edicin (Editorial Addison-Wesley Ao
2011).
http://informaticaucaldas.galeon.com/intro3.pdf