Desarrollo de pseudocódigo utilizando PSeInt
José Roberto Colón Villalta
INDICE
Introducción ...................................................................................................................i 1. Iniciar PseInt ......................................................................................................... 1 2. ¿Qué es el pseudocódigo? ................................................................................... 4 3. Partes del análisis ................................................................................................. 5 4. Tipos de problemas .............................................................................................. 5 4.1 Problemas secuenciales .................................................................................... 6 4.2
Desarrollo de pseudocódigo para problemas secuenciales ........................... 7
4.3 Problemas condicionales ................................................................................. 10 4.4
Desarrollo de solución para problemas condicionales ................................. 12
4.5 Problemas con bucles ...................................................................................... 14 4.6 Desarrollo de soluciones para problemas con bucles ...................................... 15 5. Bibliografía .......................................................................................................... 23
Introducción
Después de iniciar el proceso de aprendizaje del desarrollo de diagramas de flujo utilizando PSeInt como paso introductorio al mundo de la programación, resulta conveniente y necesario mejorar las técnicas de análisis y acercarnos más a las instrucciones de los lenguajes de programación de cuarta generación; sin embargo, en lugar de dar un salto desde los diagramas de flujo hasta la programación, primero debemos hacer una parada preliminar en la temática del pseudocódigo, y comprender las instrucciones que se utilizan y practicar la lógica, el orden y la congruencia que nos dejó el estudio de diagramas de flujo. La práctica y el desarrollo de pseudocódigo permitirán generar y paulatinamente ampliar las competencias en la escritura de código, pero siendo un tanto permisivo, al contrario de las instrucciones y la sintaxis en algunos lenguajes de programación, como por ejemplo Java. Por lo anteriormente expuesto, es que he decidido redactar lo que a mi parecer, puede considerarse como un documento preliminar a la escritura de código en un lenguaje de programación, pero también, posterior a un primer acercamiento que debe hacerse a través del estudio de diagramas de flujo; es importante tener en cuenta, que nunca debe perderse de vista que la programación requiere además de la práctica, primordialmente de un pensamiento ordenado y lógico.
i
1. Iniciar PseInt
En la Web oficial del programa PSeInt lo definen de la siguiente forma: “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 y proporcionando un entorno de trabajo con numerosas ayudas y recursos didácticos”1 El programa instalador puede descargarse desde: http://pseint.sourceforge.net/ La familiarización con el entorno de desarrollo de PSeInt puede descubrirla en: http://pseint.sourceforge.net/slide/pseint.html Después de instalado el programa PSeInt puede acceder a su entorno siguiendo los siguientes pasos: a) En la sección de programas de su computadora o en el escritorio busque el icono del programa PSeInt, ejecútelo:
Figura #1: Ícono de la aplicación PSeInt.
b) Para solicitar un nuevo archivo lo haremos a través de la opción Nuevo en el menú Archivo.
1
¿Qué es PSeInt? (19-06-2014). Recuperado de: http://pseint.sourceforge.net/
1
Figura #2: Crear nuevo archivo en PSeInt.
c) Se carga la ventana o entorno dónde escribiremos el pseudocódigo:
Figura #3: Ventana para el desarrollo de pseudocódigo
d) En el extremo derecho de la ventana de desarrollo de pseudocódigo tenemos la barra de herramientas que contiene todos las posibles instrucciones (comandos) que podemos utilizar en nuestros pseudocódigos:
2
Figura #4: Comandos (instrucciones) para el desarrollo de pseudocódigo.
Para utilizar cualquiera de los comandos (instrucciones) de PSeInt, bastará con hacer un clic y automáticamente la instrucción se incorpora al pseudocódigo, se muestra ayuda emergente y la sintaxis de la instrucción en la parte central inferior de la ventana, o bastará con escribirlas.
Figura #5: Incorporación de instrucciones en el pseudocódigo.
3
e) Si se quiere borrar algún texto o instrucción, insertar o eliminar alguna línea bastará con utilizar las teclas básicas: Suprimir,
,
Intro, etc., como si tratase
de un editor de texto tradicional. f) Para ejecutar el pseudocódigo desarrollado, bastará con hacer clic en el botón de color verde de la barra de herramientas de PSeInt (Ejecutar…). g) Con las nociones básicas de como cargar el programa y acceder a la edición de pseudocódigo estamos listos para comenzar a trabajar .
2. ¿Qué es el pseudocódigo?
El pseudocódigo, es el conjunto de comandos (instrucciones), dónde cada uno de ellos tiene una sintaxis particular y que al utilizarse de forma ordenada y lógica se da solución a problemas que requieren lógica computacional. Después de hacer un primer acercamiento a la lógica computacional a través del desarrollo de diagramas de flujo, sugiero que el siguiente paso sea el desarrollo de pseudocódigo, todo ello, previo a la escritura de código de programación. La idea anterior, la expongo debido a mi experiencia personal, en la cual he percibido que resulta más fácil para un aprendiz de programación comenzar con desarrollo de diagramas de flujo, es decir comprender bloques (figuras) y su interacción, para pasar luego a escribir código semi-formal (pseudocódigo) y finalizar en la escritura de código de programación en un lenguaje de cuarta generación.
4
3. Partes del análisis
Para solucionar problema que requieran lógica computacional, será necesario identificar tres componentes básicos: entrada(s), proceso(s) y salida(s) y es a través de la interacción de éstos que se logra dar con la solución. La descripción de cada uno de ellos se presenta a continuación: Entrada: son los datos que nos aporta el planteamiento del problema o la
información que puedo obtener del usuario. Proceso: son los cambios o procedimientos que se aplican a las variables de
entrada y otras variables complementarias para convertirlas en salidas a través del uso de instrucciones (comandos). Salida: son los valores que muestran las variables después de ser modificadas o
después de ser sometidas a procedimientos a través del uso de instrucciones (comandos).
4. Tipos de problemas
Los problemas más sencillo de resolver utilizando pseudocódigo son los secuenciales, en este tipo de problemas bastará con colocar de forma ordenada y lógica una instrucción tras otra y el problema se resolverá, sin embargo existen problemas más complejos que requieren de más instrucciones (comandos) para resolverse, por ejemplo evaluar decisiones, repetir o combinar ambos.
5
4.1 Problemas secuenciales
Los comandos o instrucciones más frecuentes para resolver los problemas secuenciales son: Escribir , Leer y Asignar . Es necesario además comenzar a utilizar el concepto de variable, el cual resulta indispensable para desarrollar cualquier diagrama de flujo. Una variable, es un espacio de memoria que se utiliza para resguardar un dato que deberá ser procesado o que sufrirá cambios debido a operaciones o cálculos, adicionalmente una variable debe tener un nombre que la identifique de forma única. Existen normas para nombrar correctamente una variable, para el presente texto aplicaremos las más básicas: a) Nunca se utilizan espacios en blanco, símbolos especiales como (ñ,$,!,¿,?, etc.) b) Nunca el nombre de una variable comienza con mayúscula. c) Cuando el nombre de la variable está formado por más de una palabra, la primera palabra se escribe con minúsculas, la primera letra de las siguientes palabras
se
escribe
con
mayúscula.
Por
ejemplo:
precioUnitario,
cantidadBoletos, promedioEstudiante. Para la resolución de problemas secuenciales, utilizaremos además de variables, las tres instrucciones o comandos básicos: Escribir , Leer , Asignar .
6
Instrucción/Comando
Significado Se
utiliza
para
mostrar
mensajes de diferentes tipos y propósitos: resultados, cálculos, información general, etc. Se utiliza para ingresar o asignar un valor a una variable.
Se utiliza para asignar un valor o
calculo
a
Usualmente
una
variable.
denota
una
transformación en el valor de la variable. El cálculo ubicado a la derecha de la expresión se realiza y posteriormente se asigna
a
la
variable
especificada a la izquierda. Cuadro #1: Comandos o instrucciones más comunes para problemas secuenciales
4.2 Desarrollo de pseudocódigo para problemas secuenciales
Ejercicio #1: Realizar la suma de dos números. Planteamiento del problema: Solicitar al usuario dos números y luego calcular el
resultado de la sumatoria. Entrada: primerNumero, segundoNumero Proceso: realizar el cálculo a través de un cuadro ‘Asignar’ Salida: mostrar el resultado de la suma
7
Solución:
Figura #6: Solución al ejercicio #1, a través de pseudocódigo.
Explicación: se ha utilizado una instrucción Escribir antes de cada bloque Leer ,
esto con el propósito de mostrar mensajes que orienten al usuario sobre que debe escribir en cada entrada. Posteriormente, la asignación del cálculo aritmético primerNumero+segundoNumero a la variable resultado se hace escribiendo: resultado<-primerNumero+segundoNumero
Se debe recordar que en las expresiones, primero se realiza el cálculo ubicado a la izquierda y luego el resultado se asigna a la variable de la izquierda. Finalmente, se muestra el resultado a través de un comando o instrucción Escribir , observe que dicha salida está formada por cinco partes: cada trozo de mensaje de texto está encerrado entre comillas dobles “”, posteriormente una coma (,) que se utiliza para unir un mensaje a otro o para unir un mensaje a una variable, y el resto de elementos de la salida son variables: Escribir primerNumero,' + ',segundoNumero,' = ',resultado El propósito es obtener una salida más detallada y entendible para el usuario.
8
Ejercicio #2: Calcule el área de un círculo. Planteamiento del problema: Debido a que el área de un circulo se calcula a través
de la formula Pi * radio 2 y conocemos que pi es una constante, solo nos falta solicitar al usuario el valor del radio. Entrada: radio Proceso: realizar el cálculo del área del círculo. Salida: mostrar el valor del área del círculo Solución:
Figura #7: Solución al ejercicio #2, a través de diagrama de flujo
Explicación: se han utilizado las instrucciones Escribir antes del bloque Leer el
área del círculo, esto con el propósito de mostrar un mensaje que oriente al usuario sobre que debe escribir en la entrada. Posteriormente, se realiza la asignación del cálculo 3.1416*radio^2 a la variable área. Finalmente, se muestra el resultado a través de una instrucción Escribir , observe que dicha salida está formada por cinco partes, cada una de ellas separadas por comas (,) esto con el propósito de obtener una salida muy detallada. Las partes encerradas entre comillas dobles son mensajes de texto y el resto de elementos son valores contenidos en las variables.
9
4.3 Problemas condicionales
Las instrucciones o comandos que utilizamos para resolver un problema condicional son: Escribir , Leer , Asignar , Si-Entonces. Las tres instrucciones básicas están representadas en el Cuadro #1, el nuevo comando a utilizar para resolver problemas condicionales será Si-Entonces y puede describirse así: Comando/Instrucción
Uso Se utiliza para evaluar una condición, y dependiendo del resultado de la evaluación de la condición, se tomará un curso de acción si resulta cierto u otro curso de acción si resulta falso.
Cuadro #2: Comando o instrucción Si-Entonces
Complementario al uso de instrucciones condicionales, es necesario comprender algunos operadores básicos que se utilizan para construir las condiciones que se evalúan en dichas instrucciones (operadores relacionales). Desde el punto de vista de una operación del tipo Si-Entonces, el significado que tendrán las operaciones relacionales, se describe a continuación: Operando #1
Operador
Operando #2
Significado
a
=
b
Evalúa si a es igual (idéntico) a b.
a
!=
b
Evalúa si a es diferente de b.
a
>
b
Evalúa si a es mayor que b.
a
>=
b
Evalúa si a es mayor o igual que b.
a
<
b
Evalúa si a es menor que b.
a
<=
b
Evalúa si a es menor o igual que b.
Cuadro #3: Operaciones relacionales
10
Al realizar operaciones relacionales se genera un único resultado, el cual puede ser únicamente: verdadero o falso. Adicionalmente a los operadores relacionales y para expandir la posibilidad de evaluar más de una condición al mismo tiempo, es necesario comprender los operadores lógicos, por el momento solo se abordaran dos: el operador Y, y el operador O. Los operadores lógicos operan o evalúan valores del tipo verdadero o falso, y por ende el resultado que genera es únicamente: verdadero o falso. El resultado de evaluar dos operaciones utilizando el operador lógico Y se describe a continuación: Operación #1
Operador
Operación #2
Resultado
verdadero
Y
verdadero
verdadero
verdadero
Y
falso
falso
falso
Y
verdadero
falso
Falso
Y
falso
falso
Cuadro #4: Operaciones lógicas con Y
Como nota personal siempre me gusta recalcar que el operador Y tiende a generar resultados excluyentes , debido a que la mayoría de sus resultados son falso, y solo genera verdadero cuando ambas operaciones son verdaderas.
El resultado de evaluar dos operaciones utilizando el operador lógico O se describe a continuación: Operación #1
Operador
Operación #2
Resultado
verdadero
O
verdadero
verdadero
verdadero
O
falso
verdadero
falso
O
verdadero
verdadero
Falso
O
falso
falso
Cuadro #5: Operaciones lógicas con O
Como nota personal siempre me gusta recalcar que el operador O tiende a ser incluyente en los resultados que genera, debido a que la mayoría de sus resultados son verdadero , y solo genera falso cuando ambas operaciones son falsas.
11
4.4 Desarrollo de solución para problemas condicionales
Comenzaré está sección dando un giro completo a lo que he venido haciendo con los pseudocódigos, que tal si reviso el Ejercicio #2 que dice de la siguiente forma: “Calcule el área de un círculo ”, y me planteo la siguiente pregunta: ¿Qué pasa si el
usuario escribe un valor negativo en la entrada denominada radio? Resulta que se calcularía el valor del área del circulo adecuadamente, ya que el área del circulo viene dado por 3.1416*radio^2, y el valor del radio negativo se transformaría en positivo al ser elevado al cuadrado. Lo anterior resulta ser una coincidencia, y lamentablemente en el mundo de la programación y la lógica computacional no basta con la suerte y la coincidencia, en su lugar debemos abordar una nueva, importante y necesaria temática que se complementará con el uso de las instrucciones condicionales y el uso de bucles de forma progresiva, la temática es: validaciones. Una validación es una operación que permite verificar que el valor de una variable es el adecuado en términos de rangos posibles de valores y en concordancia con las operaciones o transformaciones que experimentará; por ejemplo, si deseamos procesar calificaciones de estudiantes, el rango posible de valores que puede tomar una variable denominada calificacion1 está entre 0.0 y 10.0, nunca valores negativos y nunca valores que sobrepase el diez punto cero (10.0).
Ejercicio #3: averiguar si un estudiante aprobó o reprobó ingresando su promedio y
sabiendo que se aprueba con promedio de seis o más, recuerde validar el valor del promedio. Planteamiento del problema: mostrar un mensaje de: “Aprobó” si el promedio del
estudiante está entre 6.0 y 10.0, si el promedio es menor que 6.0 pero mayor o igual a cero mostrar “Reprobó”, y en caso contrario mostrar un mensaje que exprese el error en la entrada. 12
Entrada: promedio Proceso: se deberá Leer el promedio del estudiante y evaluar a través de
instrucciones Si-Entonces, si aprobó, reprobó o si hay algún error en la entrada. Salida: mostrar “Reprobó” si el promedio es tá en el rango de 0.0 a menos de 6.0, o mostrar “Aprobó” si el promedio está en el rango de 6.0 a 10.0, en otro caso mostrar “Error en el promedio ingresado”. Solución:
Figura #8: Solución al ejercicio #3, a través de pseudocódigo.
Explicación: En la línea 2 del pseudocódigo se utiliza la instrucción Escribir el texto
que acompaña es bastante extenso y su propósito es mostrar un mensaje suficientemente claro y que aporte pista al usuario del dato que debe digitar o ingresar (“Ingrese el promedio del estudiante (entre 0.0 y 10.0)”). A continuación se
utiliza la instrucción Leer para capturar el dato que el usuario ingrese y guardarlo en la variable promedio. A continuación hay un bloque de decisiones Si-Entonces, la primera condicional se utiliza para determinar si el valor ingresado de promedio es válido: Si promedio<0.0 O promedio>10.0 Entonces
Si resulta verdadera la evaluación significa que el promedio ingresado es un valor negativo o que es mayor a diez, observe que se han utilizado operadores relacionales para comparar la variable promedio con un valor numérico; además, se 13
ha utilizado un operador lógico O para evaluar que si sucede una u otra de las partes de la condición: promedio menor que cero o promedio mayor que diez, en cualquier caso se considerará un valor incorrecto para la variable promedio. Si resulta falsa la primera condición, significa entonces que el promedio si está dentro del rango adecuado de valores (0.0 a 10.0), por tanto, solo resta evaluar con una segunda condicional si el promedio es mayor o igual a seis punto (6.0) en cuyo caso se muestra el mensaje “Aprobó”, y en caso contrario, con un promedio menor a seis punto cero se muestra el mensaje “Reprobó”. Sugerencia: las instrucciones Escribir de la condición deben ser más específicos,
cambie el bloque Salir que muestra “Aprobó” por “Aprobó con promedio ”, promedio
Luego cambie el bloque Salir que muestra “Reprobó” por “Reprobó con promedio”, promedio
Como podrá comprobar los mensajes son más completos y resultan más útiles para el usuario.
4.5 Problemas con bucles
Al trabajar con bucles se debe tener claro que habrá repetición de procesos u operaciones, en muchas ocasiones esos procesos incluyen la utilización de bloques condicionales, asignación de valores, uso de contadores y acumuladores, y demás instrucciones previamente utilizadas. Las instrucciones o comandos que hacen referencia al uso de bucles son: Para, Mientras, y Repetir ; cada una de ellas tiene fortalezas para ser utilizadas en casos
en particular, y en otros casos resulta casi indistinto cuál de ellas se utilice, siempre y cuando se haga de forma ordenada y lógica.
14
Bloque/Instrucción
Uso Se
utiliza
para
mostrar
mensajes de diferentes tipos y propósitos: resultados, cálculos, información general, etc. Se utiliza para ingresar o asignar un valor a una variable.
Se utiliza para asignar un valor o
calculo
Usualmente
a
una
variable.
denota
una
transformación en el valor de la variable. El cálculo ubicado a la derecha se realiza y se asigna a la variable especificada a la izquierda. Cuadro #6: Bloques o instrucciones utilizadas para bucles
4.6 Desarrollo de soluciones para problemas con bucles
Retomando el tema de las validaciones, un primer acercamiento se realizó en la solución del ejercicio #3; sin embargo, este método de validación no es el mejor, ya que simplemente registra si ha ocurrido un error en el dato ingresado, pero no permite repetir y corregir la entrada, simplemente termina la ejecución del pseudocódigo. En mi experiencia particular he podido comprobar que los bucles Mientras y Repetir son los más adecuados para la tarea de la validación de entradas, y si tuviera que decidirme solo por uno, le apostaría más al bucle Repetir , ya que resulta más eficaz que el bucle Mientras, debido a que requiere menos instrucciones. 15
Ejercicio #4: Desarrolle un pseudocódigo que funcione para cualquier grupo de
clase que tenga entre 1 y 50 estudiantes, por cada uno de ellos se preguntaran dos calificaciones, todas ellas con igual ponderación (50% c/u), inmediatamente se le mostrará un mensaje especificando su promedio y un mensaje adicional especificando si aprobó (promedio de seis o más), reprobó (promedio menor a cinco) o si puede realizar un examen complementario (si el promedio es cinco o más y menor a seis). Finalmente, se desea saber cuántos alumnos aprobaron, cuantos reprobaron y cuantos necesitan examen complementario. Recuerde que las calificaciones deben estar en el rango de 0.0 a 10.0 únicamente, cualquier otro valor es considerado una entrada incorrecta y deberá repetirse. Planteamiento del problema: Uso de bucles para validar entradas y para “pasar”
uno a uno a los estudiantes del salón de clase, solicitar sus calificaciones y validarlas, calcular su promedio y evaluar si aprobó, reprobó o realizará examen complementario. Entradas: cantidad de estudiantes; para cada estudiante del salón: calificacion1, calificacion2 Proceso: se deberá utilizar un bucle para validar la cantidad de estudiantes en el
aula, luego inicializar los contadores de alumnos aprobados, reprobados y complementarios, todos ellos con valor inicial cero. Dentro del bucle que representa
el salón de clase y dónde cada iteración representa un estudiante, se ingresaran dos calificaciones para cada uno de ellos, pero deberán estar validadas. Posterior a tener dos calificaciones para el estudiante, se calculará su promedio, se mostrará a través de una instrucción Escribir , se evaluará si aprobó, reprobó o realizará examen complementario, en virtud de ello se mostrará un mensaje personalizado y se contabilizará la ocurrencia en el contador adecuado. Finalmente al salir del bucle que representa el grupo de clase se mostraran los totales de los contadores. Salidas: mostrar el promedio de cada estudiante en cada iteración del bucle; y al
salir del bucle, la cantidad de estudiantes aprobados, reprobados, y que realizarán examen complementario. 16
Solución:
Figura #9: Solución al ejercicio #4 utilizando bucles Repetir.
Explicación: Se comienza validando la cantidad de estudiantes del aula utilizando
un bucle Repetir, si es un valor incorrecto (menos de 1 o mayor que 50) se repite la entrada, esto ocurrirá las veces que sea necesario hasta ingresar una cantidad de estudiantes dentro del rango permitido. Se inicializan los contadores aprobados, reprobados y complementarios, todos ellos con valor cero; posteriormente, se utiliza un bucle Para que utilice una variable de nombre estudiante que inicia desde el valor 1 e irá hasta el 50 con un avance de uno en uno, simulando un estudiante a la vez. Se inicia un bucle Repetir dentro del cual se ingresan dos calificaciones para cada estudiante, se calcula el promedio, se evalúa a través de instrucciones Si-Entonces si aprobó, reprobó o puede realizar examen complementario, al mismo tiempo que evalúa también se aumenta el contador correspondiente a cada caso de aprobación, reprobación o examen complementario.
17
Ejercicio #5: Desarrolle la validación de la cantidad de estudiantes del grupo de
clase del ejercicio #4, utilizando el bucle Mientras en lugar del bucle Repetir. Planteamiento del problema, Entradas, Proceso y Salidas: igual al ejercicio #4 Solución:
Figura #10: Validación del ejercicio #4 utilizando el bucle Mientras.
Explicación: Se ha cambiado el bucle Repetir para validar la cantidad de
estudiantes del aula por un bucle Mientras. Observe que el bucle Mientras utiliza una instrucción Escribir y Leer antes de la condición del bucle, y luego en el interior del bucle utiliza nuevamente las mismas instrucciones Escribir y Leer que estaban fuera, ¿por qué?....la razón es sencilla, si resulta que la primera vez que se solicita al usuario que ingrese la cantidad de estudiantes del aula y éste lo hace bien, este valor se evalúa en la condición del bucle Mientras, entonces resulta un valor válido y ni siquiera entra al bucle; sin embargo, si el usuario ingresa una valor incorrecto, resulta necesario que dentro del bucle se genere nuevamente la misma pregunta para que se pueda repetir la entrada y así sucesivamente hasta ingresar un valor correcto.
18
Ejercicio #6: Desarrolle el pseudocódigo para un juego que consiste en adivinar un
número secreto con un máximo de tres oportunidades, el número secreto deberá estar forzosamente en el rango de 0 a 100. Planteamiento del problema: un primer usuario ingresara un número secreto, el
cual deberá estar en el rango de cero a cien, posteriormente un segundo usuario tratara de adivinar el número secreto teniendo como máximo tres intentos. Entrada: número secreto (secreto), y en cada nuevo intento la variable: numero. Proceso: se deberá validar que el número secreto sea un valor válido entre cero y
cien, repetir un máximo de tres veces el intento por adivinar el número secreto. Salida: mostrar “Adivinó” en caso de adivinarlo, o mostrar “No adivinó” si utiliza
los tres intentos y no lo logra. Solución:
Figura #11: Solución al ejercicio #6 utilizando el bucle Para.
Explicación: Se comienza validando el valor del número secreto utilizando para ello
un bucle Repetir. Posteriormente, se utiliza un bucle Para que controle los intentos de adivinar el número secreto. Es importante mencionar que el bucle Para no es el más idóneo para este caso, ya que el contabilizará tres intentos de adivinar el número secreto, pero es posible que el usuario lo adivine en el primero, segundo o tercer intento y 19
además este bucle solo lleva el control de los intentos y no de la coincidencia del número ingresado por el usuario comparado con el número secreto. Dentro del bucle Para se ha colocado una instrucción Si-Entonces que evalúa si el usuario adivina el número secreto, en cuyo caso, se “ transforma” o se “fuerza” a la
variable intento a tomar el valor 3 y así salirse del bucle. Estando afuera del bucle que controla los intentos de adivinar, se repite la instrucción Si-Entonces que evalúa si el usuario adivino el número secreto, esto se debe a que
el usuario puede llegar a ese punto por dos razones muy diferentes: a) adivinó y salió del bucle o b) no adivinó y salió del bucle porque ya no hay intentos disponibles. Por tanto es necesario repetir la evaluación para determinar si adivinó o no el número secreto. Como podrá observar, el uso del bucle Para resulto posible, pero también resulta obvio que no fue la mejor elección para crear un pseudocódigo ordenado y lógico. Ejercicio #7: Desarrolle el ejercicio #6 utilizando únicamente bucles Mientras y
Repetir. Solución:
Figura #12: Solución al ejercicio #7 utilizando bucles Repetir.
Explicación: Se comienza validando el valor del número secreto utilizando para ello
un bucle Repetir .
20
Se inicializa el contador intento con valor 1, posteriormente, se utiliza un bucle Repetir para repetir el proceso de intentar adivinar el número secreto y
contabilizando los intentos; de este bucle puede salirse de dos formas: a) si se acaban los intentos o b) si se adivina el número secreto. Fuera del bucle que controla los intentos de adivinar, existe una instrucción SiEntonces que evalúa si el usuario adivino el número secreto o no, esto se debe a
que se puede llegar a ese punto por dos razones muy diferentes, ya expuestas en el párrafo anterior. Como podrá observar, el uso del bucle Repetir resulto mejor para resolver el presente problema que con el bucle Para. En muchas ocasiones será la experiencia la que ayudará a determinar cuál bucle es el mejor para cada situación. Ejercicio #8: En la taquilla de un estadio se ponen a disposición del público 1000
boletos para un espectáculo, cada cliente solo puede comprar como máximo 5 boletos, cada uno de ellos cuesta $10.00. Para cada cliente se mostrará el total a pagar por los boletos y sería conveniente ir mostrando también cuantos boletos disponibles quedan en la taquilla antes que cada cliente haga su respectiva compra. Al terminar de vender todos los boletos muestre cuantos clientes se atendieron. Planteamiento del problema: Se utilizará un acumulador para gestionar los boletos
disponibles, y se utilizaran bucles para repetir el proceso de venta de boletos a los clientes y validar la cantidad de boletos que se venden a cada cliente. Será necesario también contabilizar la cantidad de clientes atendidos. Entrada: boletosDisponibles, el precio de cada boleto: $10.00. Proceso: se deberá utilizar un acumulador que en este caso en lugar de
incrementarse deberá decrementarse conforme cada cliente haga su respectiva compra de los boletos, adicionalmente su utilizará un contador para los clientes que realizan compra de boletos, y bucles para repetir el proceso de venta para cada cliente y para validar que la cantidad que compran este en el rango de entre uno y
21
cinco boletos por persona (y también considerar que pueden no existir suficientes boletos en taquilla). Salida: para cada cliente mostrar el total a pagar, y al terminar de vender todos los
boletos mostrar a cuantos clientes se atendió. Solución:
Figura #13: Solución al ejercicio #8 utilizando el bucle Mientras.
Explicación: Se inicializa el acumulador boletosDisponibles con valor 1000 y el
contador clientes con valor cero. Posteriormente, se utiliza un bucle Mientras para repetir el proceso de venta de boletos para cada cliente, teniendo en cuenta que la condición que permitirá continuar vendiendo es si existen boletos disponibles aun (Mientras boletosDisponibles>0). Dentro del bucle Mientras se incrementa el contador clientes en 1 con cada nueva iteración del bucle, adicionalmente se utiliza un bucle Repetir para validar que la compra de boletos por parte del cliente sea válida, es decir que compre entre 1 y 5 boletos y también se verifica si hay suficientes boletos en taquilla (boletos>=1 Y boletos<=5 Y boletos<=boletosDisponibles). Después de realizar la venta al cliente se muestra un mensaje con el total a pagar por el cliente y se realiza el correspondiente descuento al acumulador boletosDisponibles. Finalmente, al completar la venta de boletos ( boletosDisponibles igual a cero) se muestra la cantidad de clientes atendidos en la taquilla. 22
5. Bibliografía
1. 2. 3. 4.
http://pseint.sourceforge.net/ https://lihuen.info.unlp.edu.ar/index.php?title=Programando_con_Pseint http://www.monografias.com/trabajos-pdf5/tutorial-pseint/tutorial-pseint.shtml http://www.udb.edu.sv/udb/archivo/guia/informatica-tecnologico/introduccion-ala-programacion/2013/i/guia-1.pdf 5. http://es.scribd.com/doc/7222014/Ejercicios-Resueltos-Con-Pseint
23