Академический Документы
Профессиональный Документы
Культура Документы
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
DECIMAL 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.
Tipo de Datos
Correspondencia
en Explicacin Ejemplo
en Java
Pseudocdigo
Texto Representa un carcter o una cadena de Hoy es String
caracteres. viernes,
Su valor debe ir encerrado entre comillas b,
dobles. El precio
Si se desea concatenar texto con del
variables (que pueden ser de tipo: entero, producto
decimal o booleano), se utiliza el signo es $20
ms (+), de la siguiente manera:
Entero suma = 20 + 50;
El valor de la suma es: + suma
Entero Representa un nmero entero. 10,29,30 int
Decimal 21.3, 43.9, float o double
Representa un nmero decimal.
23.564
Booleano Define una bandera que puede tomar dos Verdadero, boolean
posibles valores: Verdadero o Falso. falso
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.
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. El usuario deber ingresar el monto de la compra
realizada y la forma de pago utilizada. Si es contado, deber aplicar el descuento, sino se deber
mostrar un mensaje informando que para dicha forma de pago no tiene descuento.
Disear un algoritmo que devuelva el nombre del mes, a partir del nmero de mes, ingresado
por teclado, por el usuario. Si el usuario ingresa un nmero de mes que no exista, se deber
mostrar un mensaje indicando que el nmero ingresado no es correcto.
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. La tabla de multiplicacin a mostrar debe empezar en la
multiplicacin por 1.
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. La tabla de multiplicacin a mostrar debe empezar en la
multiplicacin por 1.
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(verdadero) implica que est ocupada y si es falso(falso) la butaca
est desocupada. Tenga en cuenta que el array deber ser creado e inicializado al principio del
algoritmo.
40 35 30
0 1 2
Azul Verde Amarillo
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
temporalmente dichos datos y luego realice el ordenamiento del mismo a travs del mtodo de
la burbuja.
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
entero primerNum
entero segundoNum
entero 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
flow chart Ejercicio_01_suma
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
Texto nombreUsuario
Texto 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
SI(esValido(usuario) && esValido(contrasea))
ENTONCES
IMPRIMIR: Usuario logeado con xito.
FIN SI
FIN
Diagrama deflow
Flujochart Ejercicio_02_sesion
Inicio
Texto nombreUsuario,
Texto 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
entero cantAlumInscriptos
entero cantBancosAula
SIMPLIFICACIN:
cantBancosAula Se lee la entrada de datos y se asigna a
la variable en el mismo paso.
Ingrese la cantidad de alumnos
inscriptos al cursado:
cantAlumInscriptos
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
Decimal montoTotal
Texto formaDePago
Decimal
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 Operacin 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.
entero
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
es "El mes
es es Septiembre" Noviembre"
Enero" es Mayo" El nmero
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
multiplicacion=tablaNum*contador FALSO
tablaNum + * + contador + =
+ multiplicacion
contador++
Fin
Prueba de Escritorio
Identificacin de nombres de variables, con su tipo de variable y tipo de dato.
Ejecucin de Pruebas
Bucle Mientras/
Entrada Auxiliar Operaciones Salida
While
N
m= c++
Prueba tabla tabla contador while(Contador<=
tablaNum* Mensaje
Num Hasta (c) TablaHasta)
contador
1.1 8 3 1 1<=3:si m=8*1=8 2 8*1=8
1.2 8 3 2 2<=3:si m=8*2=16 3 8*2=16
1.3 8 3 3 3<=3:si m=8*3=24 4 8*3=24
1.4 8 3 4 4<=3:no ->Fin
2.1 4 5 1 1<=5:si m=4*1=4 2 4*1=4
2.2 4 5 2 2<=5:si m=4*2=8 3 4*2=8
2.3 4 5 3 3<=5:si m=4*3=12 4 4*3=12
2.4 4 5 4 4<=5:no m=4*4=16 5 4*4=16
2.5 4 5 5 5<=5:si m=4*5=20 6 4*4=20
2.6 4 5 6 6<=5:no ->Fin
Diagrama deflow
Flujo chart Ejercicio_07_tablaDoWhile
Inicio
tablaNum
tablaHasta
VERDADERO
multiplicacion=tablaNum*contador
tablaNum + * + contador + = +
multiplicacion
contador++
FALSO
Fin
Prueba de Escritorio
Identificacin de variables de entrada, tipos de variables y tipo de datos
Ejecucin de Pruebas
Inicio
Decimal acumulador
Decimal promedio
Decimal 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
flow chartdeEjercicio_03
Diagrama Flujo
Inicio
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 / Para Salida
N de Decisin contador
Prueba
I<longitud
butacas i, ba ba==falso bv Mensaje
butacas
0<4: si 0, falso falso == falso Bv=0+1=1 La cantidad
1<4: si 1, falso falso == falso Bv=1+1=2 de Butacas
[falso, 2<4: si 2, verdadero vacas en la
Prueba Bv=2 sala es: + 2
falso, verdadero == falso
1
verdadero, 3<4: si 3, verdadero
verdadero] Bv=2
verdadero == falso
4<4: no, Fin
For
0<4: si 0, verdadero La cantidad
Bv=0
verdadero == falso de Butacas
1<4: si 1, verdadero vacas en la
[verdadero, Bv=0 sala es: + 1
Prueba verdadero == falso
verdadero,
2 2<4: si 2, verdadero
verdadero, Bv=0
verdadero == falso
falso]
3<4: si 3, falso falso == falso 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
Texto listaColoresAulas[] = [Azul, Verde, Amarillo]
entero listaCapacAulas[] = [40, 35, 30]
entero cantAlumIns
IMPRIMIR: Ingrese la cantidad de alumnos inscriptos al cursado:
TOMAR Y ASIGNAR: cantAlumIns
entero capacidadAulaAux = Obtener(listaCapacAulas,0) //Inicializacin.
flow chart de
Diagrama Ejercicio_10_buscarAula
Flujo
Inicio
entero cantAlumInscriptos
cantAlumInscriptos
entero capacidadAulaAux =
Obtener(listaCapacAulas,0)
i > Longitud de
Fin for ListaCapacAulas
Desde entero i=0, i< LongitudListaCapacAulas, i++
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
Ejercicio 11 Pila
Enunciado:
Disear un algoritmo que a partir de una pila inicial de tres elementos devuelva una pila invertida
de dichos elementos. La pila inicial se encuentra vaca, usted deber apilar los elementos y
mostrar la pila original. Luego invertir los elementos, y mostrar la nueva pila invertida.
InvertirPila()
Pseudocdigo
Alternativa 1)
INICIO
Pila de datos enteros pilaOriginal;
Pila de datos enteros pilaInvertida;
For (i=1, i<=3, i++)
apilar (pilaOriginal, i);
Fin For
IMPRIMIR Pila Inicial: + pilaOriginal
For (i=1, i<=3, i++)
Apilar (pilaInvertida, Desapilar(pilaOriginal))
Fin For
FIN
Alternativa 2)
INICIO
Pila de datos enteros pilaOriginal;
Pila de datos enteros pilaInvertida;
apilar (pilaOriginal, 1);
apilar (pilaOriginal, 2);
apilar (pilaOriginal, 3);
IMPRIMIR Pila Inicial: + pilaOriginal
entero principio= desapilar(pilaEnteros);//principio=3
apilar (pilaInvertida,principio);//el elemento principio pasa a ser final
entero medio= desapilar(pilaEnteros);//medio=2
apilar(pilaInvertida, medio);//el elemento medio seguir siendo medio
entero final = desapilar(pilaEnteros); //final=1
apilar(pilaInvertida, final);//el elemento final pasa a ser principio
IMPRIMIR: Pila Invertida: + pilaInvertida
FIN
Diagrama de Flujo
Alternativa 1)
flow chart Ejercicio_11_pilaInvertida_2
Inicio
Pila pilaOriginal
Pila pilaInvertida
i>3
apilar en pilaOriginal, 1
apilar en pilaInvertida,
(desapilar de pilaOriginal)
Pila Invertida: +
pilaInvertida
Fin
Alternativa 2)
flow chart Ejercicio_11_pilaInvertida
Inicio
Pila pilaOriginal
Pila pilaInvertida
apilar en pilaOriginal, 1
apilar en pilaOriginal, 2
apilar en pilaOriginal, 3
Pila Inicial: +
pilaOriginal
apilar en pilaInvertida,
(desapilar de pilaOriginal)
Pila Invertida: +
pilaInvertida
Fin
Ejecucin de Pruebas
Ejecucin de Pruebas
Operaciones Salida
Apilar en
Id. Pila Desapilar de Apilar en Pila Pila
Pila
Original Pila Original Invertida Invertida
Original
Prueba Apilar1 [3] Principio=11 Apilar(Principio) [3]
1 Apilar2 [2] Medio=10 Apilar(Medio) [2]
Apilar3 [1] Final=9 Apilar(Final) [1]
Prueba de Escritorio
Prueba de Escritorio
1er
Ciclo del Para
i=0
2do
Ciclo del Para
i=1
3er
Ciclo del Para
i=2
Prueba de Escritorio
Diagrama de Flujo
flow chart Ej ercicio_14_busquedaSecuencial
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