Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Todos los ejercicios se harán en clase usando pseint, se recomienda que el estudiante los haga usando el
mismo entorno o el Raptor, para que desarrolle su lógica.
PSeInt es una herramienta para asistir a un estudiante en sus primeros pasos en programación. Mediante un
simple e intuitivo pseudolenguaje en español (complementado con un editor de diagramas de flujo), le permite
centrar su atención en los conceptos fundamentales de la algoritmia computacional, minimizando las
dificultades propias de un lenguaje real y proporcionando un entorno de trabajo con numerosas ayudas y
recursos didácticos.
Para contactarse con el autor (para reportar bugs, solicitar mejoras, dejar comentarios o sugerencias, etc) siga
este enlace http://pseint.sourceforge.net/
El proyecto se distribuye como software libre bajo licencia GPL.
Copyleft 2003-2014, por Pablo Novara (zaskar_84@yahoo.com.ar).
Paneles acoplables:
Panel de Comandos: permite introducir acciones o estructuras de control en su algoritmo mediante un click. Se
ubica por defecto en la parte izquierda de la ventana y al seleccionar una de sus primitivas introduce en el
código del proceso actual la plantilla de la misma, marcando con recuadros las partes de la misma que debe
completar (expresiones, acciones, valores, etc). Puede mostrar u ocultar este panel mediante el ítem Mostrar
Panel de Comandos del menú Configuración.
Vale la pena revisar en la ayuda las secciones Expresiones y Acciones secuenciales para conocer más
respecto al entorno de trabajo del pseint.
Estructuras secuenciales.
Ejercicio1.
Elabore un algoritmo que pida el nombre del usuario y le de la bienvenida a la clase.
¿Qué vamos a hacer? Vamos a definir una variable llamada “name” como carácter para guardar el nombre del
estudiante, y luego vamos a pedir el nombre mediante un aviso o letrero en pantalla, el usuario escribirá el
nombre y finalmente se mostrará la bienvenida a la clase.
ejercicio2.
Introducir dos valores enteros cualquiera y hacer las cuatro operaciones aritméticas básicas desplegando el
valor de c/u de ellas.
¿Qué vamos a hacer? Vamos a usar las variables num1 y num2 que almacenarán los valores enteros
introducidos por el usuario; sum, rest, mult serán variables que recogerán los resultados de sumar, restar y
multiplicar los dos valores. Como los resultados son enteros las definiremos de ese tipo.
Div será la variable que recogerá el resultado de dividir los dos valores. Como es posible que al dividir dos
números enteros resulten decimales, vamos a definirla como real.
Será necesario pedir los valores mediante un aviso o letrero.
Realizar las cuatro operaciones y guardar los resultados en la variable respectiva.
Finalmente, mostrar los resultados de cada operación.
Una alternativa al diagrama de flujo es hacer un diagrama Nassi Schneiderman como el siguiente
Pseudocódigo
ejercicio3.
Algoritmo para determinar la Energía potencial de un cuerpo. Fórmula Ep = m * h * g
¿Qué vamos a hacer? Vamos a definir la masa “m” y la altura “h” como enteros (si la definen como real podrán
introducir valores enteros con decimales).
La energía potencial “Ep” y la gravedad “g” las definiremos como real; ya que como la gravedad es 9.81 y es
real, la Ep será también un real.
Pedir la masa y la altura mediante un aviso o letrero.
Calcular la Energía potencial y guardar el resultado en Ep.
Finalmente, mostrar resultados.
ejercicio4.
Elabore el algoritmo que pida el nombre del estudiante y dos calificaciones, luego que calcule el promedio de
las calificaciones; en pantalla muestre el nombre del estudiante y el promedio que obtuvo.
Diagrama Nassi-Schneiderman
Pseudocódigo
ejercicio5.
Algoritmo que determina la altura en problemas de caída libre. fórmula h = V(i)*t + (g*t^2)/2
Diagrama Nassi-Schneiderman
Pseudocódigo
ejercicio6.
Algoritmo para calcular el cuadrado y el cubo de un número, con operador de potencia. Luego a esas potencias
sacarles la raiz cuadrada y cúbica
¿Qué vamos a hacer? Podemos declarar la variable “num” como entera o como real; para tener mayor
flexibilidad a la hora de teclear datos, la declararemos como real. Por lo anterior, las variables siguientes
también serán declaradas como real: “cuad”, “cubo”, “raiz_cuad” y “raiz_cub”.
Habrá que solicitar el valor del número con el que queremos trabajar, esto lo haremos mediante un letrero o
aviso. Aplicaremos el operador de potencia para calcular el cuadrado y el cubo del valor de entrada, los
resultados se guardarán en las variables “cuad” y “cubo” respectivamente. Podemos mostrar esos resultados.
Calcularemos las raices cuadrada y cúbica de los valores residentes en “cuad” y “cubo”; los resultados se
guardarán en “raiz_cuad” y “raiz_cub” respectivamente. Se mostrarán los resultados mediante avisos.
Condicional Si-Entonces
Al ejecutarse esta instrucción, se evalúa la Expresión Lógica, también llamada condición, que es una
proposición que puede ser verdadera o falsa, y se ejecutarán las instrucciones que correspondan según el valor
de verdad que tenga la condición: las acciones o instrucciones A si la condición es verdadera, o las acciones o
instrucciones B si la condición es falsa.
Las acciones o instrucciones de la parte verdadera deben aparecer siempre, pero las de la parte falsa
aparecerán sólo si es necesario. En ese caso, si la condición es falsa no se ejecuta ninguna instrucción y la
ejecución del programa continúa con la instrucción siguiente.
VARIANTE ejercicio2.
introducir dos valores enteros cualquiera y hacer las cuatro
operaciones aritméticas básicas desplegando el valor de c/u
de ellas. Hacer que la resta siempre sea positiva
ejercicio8.
En el siguiente ejercicio vamos a proceder de forma diferente, ya que realizaremos una prueba de escritorio,
que consiste en seguir el flujo del algoritmo asignando valores a las variables, realizar las acciones y
operaciones que vienen ahí hasta obtener un resultado. Introduciremos dos o tres conjuntos de datos para
obtener dos o tres resultados y, de este análisis, trataremos de escribir la redacción del problema que se
soluciona con el algoritmo revisado.
Variables enteras
cal1
cal2
cal3
Variables reales
prom
Variables carácter
status
ejercicio9.
Veamos el siguiente diagrama y hagamos otra prueba de escritorio.
Variables enteras
num
residuo
Introduzca otro conjunto de datos y en la libreta obtenga el resultado al que llega. Pruebe con un número impar,
por ejemplo, 11.
ejercicio10.
Haga usted la prueba de escritorio y determine cuál
podría ser la redacción del problema.
Redacción del ejercicio10.Algoritmo que permite introducir dos números enteros, el primero mayor que el
segundo, y determina si el primer número es divisible entre el segundo número (es divisible cuando el residuo
es cero)
El siguiente ejercicio se puede hacer de varias formas, la más directa y lógica es aquella en la que se hacen
comparaciones sucesivas.
ejercicio11.
Hacer un algoritmo que determine cuál es el mayor de tres números enteros diferentes (tres formas diferentes)
(se reutilizará en los ejercicios 12 y 13)
En la libreta haga la prueba de escritorio del algoritmo anterior y compruebe si en cada conjunto de datos se
obtiene el resultado propuesto en la siguiente tabla.
Con la anterior tabla de datos revise los dos algoritmos siguientes y determine si se llega a los mismos
resultados anteriores.
Pedir a los estudiantes que guarden sus cosas, su cel. Y que sólo pongan atención al frente de la clase.
ejercicio12.
Algoritmo para determinar si tres valores diferentes que representan lados, pueden formar entre sí un triángulo.
¿Qué vamos a hacer? Vamos a Analizar lo siguiente...
Suponga que tenemos las variables A, B y C, y que cada una representa un lado ¿cuál de los siguientes
conjuntos de datos nos permite formar un triángulo y porqué?
Conj. A B C
1 5 10 3
2 5 10 5
3 5 10 7
¿qué tiene ese conjunto (que nos permite formar un triángulo) que no tienen los otros dos?
Mostrar el algoritmo que resuelve el ejercicio12.
ejercicio13.
Hacer un algoritmo que permita introducir tres valores diferentes y que los muestre ordenados de mayor a
menor.
Pista. Pruebe con los siguientes conjuntos de datos
Conj. num1 num2 num3 El mayor es Le sigue Y el menor es
1 10 5 2 10 5 2
2 10 2 5 10 5 2
3 2 10 5 10 5 2
4 5 10 2 10 5 2
5 5 2 10 10 5 2
6 2 5 10 10 5 2
ejercicio14.
Hacer un algoritmo que calcule y muestre en pantalla el sueldo diario de un obrero que percibe $11.00 por cada
hora de trabajo y $19.55 por cada hora extra. La jornada normal de trabajo consta de 8 horas, arriba de eso se
considera como tiempo extra. Si la jornada excede las 13 horas de trabajo, se le retendrá el 10% como ahorro.
¿Qué vamos a hacer? Vamos a hacer lo siguiente...
Debemos usar diversas variables para hacer referencia a los datos que tenemos. Nos piden calcular el sueldo
diario (Suel_dia), mismo que es proporcional a las horas trabajadas (Hrs_trab) y a las horas extra (Hrs_extra), y
que es disminuido por el ahorro (Ahorro). Hay que pensar en los posibles casos que se presenten para
expresarlos en forma de ecuación matemática.
Caso1. Cantidad de horas trabajadas, 8 o menos. El sueldo diario estará definido por las horas trabajadas por el
pago por hora de once pesos (Suel_dia = Hrs_trab * 11)
Caso2. Cantidad de horas trabajadas más de 8 pero menos o iguales a 13. Primero determinar la cantidad de
horas extras (Hrs_extra = Hrs_trab – 8) y luego el sueldo diario, Suel_dia = 8 * 11 + Hrs_extra * 19.55.
Caso3. Cantidad de horas trabajadas mayores a 13. Determinamos las horas extra (Hrs_extra = Hrs_trab – 8),
calculamos el sueldo diario (Suel_dia = 8 * 11 + Hrs_extra * 19.55), calculamos el ahorro (Ahorro = Suel_dia*.1)
y finalmente determinamos el sueldo diario definitivo (Suel_dia = Suel_dia – Ahorro).
ejercicio14.5.
Hacer un algoritmo que a los estudiantes de una universidad les permita calcular el pago de sus mensualidades
en base al siguiente criterio: a) al adelantar mensualidades se aplicará un descuento del 10%
b) En mensualidades atrasadas se aplicará un cargo extra del 10%
c) El pago de la mensualidad del mes corriente no lleva descuento pero tampoco se aplica cargo extra.
El monto de la mensualidad es de $650.00
Pistas: Pago de una mensualidad adelantada y la del mes actual, el total es de $1,235.00.
Pago de una mensualidad atrasada y la del mes actual, el total es de $1,365.00.
Pago de dos mensualidades atrasadas y la del mes actual y una adelantada, el total es de $2,665.00
ejercicio15.
Hacer un algoritmo que muestre un menú y permita elegir al usuario cuál de las cuatro operaciones aritméticas
básicas quiere hacer (incluir opción para salir).
(en Pseint, mostrar que las opciones pueden ser numéricas si pone las opciones del lenguaje en modo estricto
o cadena de texto cambiando a modo flexible)
ejercicio16.
Hacer un algoritmo que le permita seleccionar diversos tipos de conversiones del sistema Internacional al
sistema Inglés. No olvidar la opción de salir.
• Distancia: mts a yardas (1 mt = 1.0936 yardas)
• Velocidad: m/min a ft/min (1 m/min = 3.28 ft/min)
• Temperatura: grados C a F (ºC = (ºF – 32) / 1.8
• Masa: Kgs a Lbs ( 1 Kg = 2.2046 lbs)
• salir
Estructuras repetitivas.
También reciben el nombre de ciclos, lazos, bucles, iteración. Son estructuras muy usadas en programación
debido a que permiten que un conjunto de instrucciones se repita. En Pseint se tienen tres diferentes
estructuras para hacer ciclos.
a) Repetir (que aunque tiene una forma de sintaxis similar al do...while de lenguaje C tiene una gran
diferencia: el do...while se repite por el verdadero, y el Repetir se repite por el falso)
b) Mientras (similar en forma de sintaxis al while de lenguaje C)
c) Para (similar en forma de sintaxis al for de lenguaje C)
Las tres estructuras de pseint se pueden controlar por contador, mientras que por centinela es más sencillo
controlar al Repetir y al Mientras.
Primero se verán algunos ejemplos de ciclos con centinela usando el ciclo Repetir. Abra el algoritmo del
ejercicio 2, y observe qué hay que agregarle para que se pueda repetir el proceso con el ciclo Repetir.
ejercicio2_Repetir.
introducir dos valores enteros cualquiera y hacer las cuatro operaciones aritméticas básicas desplegando el
valor de c/u de ellas
Ahora abra el algoritmo del ejercicio 4, y observe qué hay que agregarle para que se pueda repetir el proceso
con el ciclo Repetir.
ejercicio4_Repetir.
elabore el algoritmo que pida el nombre del estudiante y dos calificaciones, luego que calcule el promedio de las
calificaciones; en pantalla muestre el nombre del estudiante y el promedio que obtuvo.
A continuación se verán los mismos ejercicios pero ahora usando el ciclo Mientras. Abra el algoritmo del
ejercicio 2, y observe qué hay que agregarle para que se pueda repetir el proceso usando el ciclo Mientras.
ejercicio2_Mientras.
introducir dos valores enteros cualquiera y hacer las cuatro operaciones aritméticas básicas desplegando el
valor de c/u de ellas
Abra el algoritmo del ejercicio 4, y observe qué hay que agregarle para que se pueda repetir el proceso usando
el ciclo Mientras.
ejercicio4_Mientras.
elabore el algoritmo que pida el nombre del estudiante y dos calificaciones, luego que calcule el promedio de las
calificaciones; en pantalla muestre el nombre del estudiante y el promedio que obtuvo.
Por último, vea el algoritmo del ejercicio9 y tomando como guía los ejercicios anteriores, determine qué hay que
agregarle para que se pueda repetir el proceso, primero con el ciclo Repetir, y de forma separada con el ciclo
Mientras.
ejercicio9_Repetir.
Hacer un algoritmo que identifique si un número es par o impar mostrando un mensaje en la pantalla.
Se le pide al estudiante, seleccione unos cuatro o cinco algoritmos más con los cuales pueda practicar el uso
del ciclo Repetir y del ciclo Mientras
Acumuladores y contadores
Son instrucciones muy usadas en programación para llevar un acumulado de valores, en el primer caso, y un
conteo de valores, en el segundo caso. Su estructura es muy similar ya que ambos deben iniciarse en algún
valor antes de usarse, frecuentemente este valor de inicialización es cero, pero puede ser cualquier otro.
También vale la pena mencionar que estas estructuras pueden aumentar o disminuir su valor según la
operación aritmética con que se construyan.
Ejemplos.
Para acumulados positivos (mediante la suma)
acum ← 0;
acum ← acum + variable;
Ejercicio 18.
Algoritmo para una tienda de abarrotes. El algoritmo
nos permite introducir los precios de los artículos
que lleva un cliente y al final muestra el total a pagar
y la cantidad de artículos vendidos. Usar ciclo
mientras.
Ejercicio 19.
Elabore el algoritmo que permita calcular la suma de N números diferentes y que muestre el resultado de la
suma. Usar ciclo mientras en un algoritmo y ciclo repetir en otro algoritmo.
¿Qué vamos a hacer? Vamos a hacer lo siguiente...
Por simplicidad usaremos sólo números enteros, así que todas las variables serán Enteras. La variable num
para guardar los diferentes números que proporcione el usuario. La variable cont que llevará un conteo de la
cantidad de números que se han sumado. La variable suma que llevará el acumulado de la suma de los
diferentes números que se introduzcan. Y las variables lim en el primer algoritmo, que guardará cuántos
números deseamos que se sumen; y la variable resp en el otro algoritmo para capturar la respuesta del usuario
si desea agregar otro número a la suma.
ejercicio 20.
Elabore el algoritmo que permita introducir N calificaciones de un grupo de estudiantes y que las vaya sumando
para calcular el promedio del grupo. También debe determinar y mostrar en pantalla cuántos están aprobados y
cuántos están reprobados. La mínima aprobatoria es 70.
¿Qué vamos a hacer? Vamos a hacer lo siguiente...
Definiremos calif para introducir una a la vez, las calificaciones de los estudiantes. Definiremos suma como el
acumulador de todas las calificaciones. Definiremos N_est como la cantidad de estudiantes que se tienen en el
grupo. Todas ellas serán definidas como enteras. Definiremos prom para guardar el promedio de las
calificaciones, y como podemos tener decimales, será definida como real.
Definiremos aprob y reprob como los contadores respectivamente de la cantidad de estudiantes aprobados y la
cantidad de estudiantes reprobados.
ejercicio 22.
hacer un algoritmo que sume los N números naturales (enteros) que se encuentren entre dos valores límite
(limite inicial y límite final, donde limite inicial < limite final))
Variable
valor
Inicial
incremento
valor
Final
Mejorar el algoritmo asegurándose que limite inicial sea < limite final; usar ciclo repetir.
ejercicio 23.
Hacer un algoritmo que sume los primeros N múltiplos del 3.
¿Qué vamos a hacer? Vamos a hacer lo siguiente...
Los múltiplos los obtendremos multiplicando 3 por cada número entero, de forma similar a una tabla del 3.
Vamos a preguntar cuántos múltiplos queremos que se sumen y eso se guardará en una variable N.
Utilizaremos un contador (usaremos i) para que lleve el control de los números enteros desde 1 hasta el valor N
solicitado anteriormente. Necesitaremos un acumulador (lo llamaremos suma) para llevar el acumulado de la
suma de los múltiplos de 3. Un ciclo nos permitirá repetir el proceso N veces y finalmente se mostrarán los
resultados.
ejercicio 24.
hacer un algoritmo que sume los primeros N múltiplos de cualquier número.
¿Qué vamos a hacer? Vamos a hacer lo siguiente...
El ejercicio es muy parecido al anterior. Lo nuevo es que ahora en lugar de tener al 3 como un número fijo de
quien queremos los múltiplos, añadiremos la variable num que guardará el valor del número que queremos los
múltiplos.
Ejercicio 25.
Lea la siguiente anécdota atribuída a Carl Friedrich Gauss
En 1784, tras su séptimo cumpleaños, el pequeño entró en una escuela pública de educación primaria donde las
clases las impartía un profesor llamado Büttner. La escuela estaba ubicada en una habitación sombría, de techo
bajo, suelo desigual, … donde cerca de un centenar de pupilos de Büttner iban y venían. El profesor imponía
una disciplina rígida y nadie podía llevarle la contraria. En esta escuela, que seguía el patrón de la Edad
Media, Gauss llevaba dos años como alumno sin provocar ningún incidente reseñable.
El primer día que Gauss asistió a la clase de Aritmética, en la que había niños de hasta 15 años, ocurrió un
incidente que Gauss solía contar ya anciano para el deleite de sus contertulios. Cuando el profesor proponía un
problema, el alumno que acababa el primero tenía que llevar su pizarrita hasta la mesa del profesor. El segundo
que lo lograra colocaba la suya encima, y así sucesivamente. El primer día que el joven Gauss entró en clase, el
profesor Büttner, a viva voz, estaba dictando un problema de aritmética para sus alumnos. Justo al acabar de
dictar el problema, Gauss colocó su pizarrita sobre la mesa del profesor, quien con absoluta seguridad afirmó:
“Debe estar mal.” Mientras, el resto de los alumnos continuaron con su tarea (contando, multiplicando, y
sumando). Büttner recorría la clase observando a sus alumnos con una mirada irónica, casi compasiva, hacia
sus alumnos. Sólo un niño estaba sentado, callado, con su tarea ya finalizada, consciente de que la había
resuelto correctamente y que su resultado era el único posible.
Al final de la clase, el profesor dio por acabado el examen y volvió las pizarras hacia arriba. La primera, la del
joven Gauss, sólo contenía un número. Cuando Büttner lo leyó, para su sorpresa y la de todos los presentes,
resultó que la respuesta del joven Gauss era correcta. Muchos de sus compañeros, sin embargo, habían
obtenido una respuesta errónea.
Existe la firme creencia que el problema en cuestión fue el hacer la suma de los números enteros enteros del 1 al
100. y que la forma en que Gauss obtuvo la respuesta fue la siguiente.
100 99 98 97 96... 52 51
1 2 3 4 5 ... 49 50
101 101 101 101 101 ... 101 101 por lo que 101 X 50 = 5050
Tomado con fines educativos de: http://francis.naukas.com/2010/04/15/iii-carnaval-de-matematicas-toda-la-verdad-sobre-la-anecdota-
de-gauss-el-nino-prodigio-su-profesor-y-la-suma-de-1-a-100/
Elabore el algoritmo que le permita obtener los mismos resultados que a Gauss. El algoritmo debe funcionar
para obtener la suma entre cualquier par de números que sean inicio y final de la suma de números.
Pista. Algunas series numéricas son simétricas, es decir, tienen una cantidad par de valores que al colocarlos
en la forma que lo hizo Gauss, se tiene una cantidad precisa de sumas formadas por dos operandos o
sumandos. Compruebe esto intentando determinar si los números que están entre los siguientes límites
(incluyendo los límites) forman una serie simétrica.
a) 3 al 15 b) 6 al 22 c) 9 al 18 d) 16 al 31
Ejemplos: a) 3 4 5 6 7 8 9 b) 6 7 8 9 10 11 12 13 14
15 14 13 12 11 10 x 22 21 20 19 18 17 16 15 x