Está en la página 1de 25

Algoritmos con ciclos de repetición

Facultad de Instrumentación Electrónica

Programa Educativo de ingeniería biomédica

Algoritmos y programación

Bio-programadores:
 HUMBERTO ALONSO RODRIGUEZ PAREDES
 JAVIER DEL ANGEL DEL ANGEL
 SERGIO DANIEL SALAMANCA HERNANDEZ
 VERONICA IVETH ALARCON HERNANDEZ
 IAN SHAIEL ANELL RODRIGUEZ
 JOSE DAVID AMANTE QUINTANA

Profesor: LUIS JULIAN VARELA LARA

Fecha: 14 de marzo del 2024


En este reporte se dará solución a problemas con bucles o ciclos de repetición.

Antes de iniciar es importante definir los tipos de ciclo de repetición que existen en
Pseint y C#.

Los bucles, también conocidos como "ciclos", son estructuras de control que
permiten que un conjunto de instrucciones se repita varias veces hasta que se
cumpla una condición específica. Estas estructuras son fundamentales para
automatizar tareas repetitivas y realizar cálculos iterativos.

Ciclos en Pseint
En PSeInt, hay tres tipos principales de bucles: el bucle "Mientras", el bucle "Repetir"
y el bucle "Para". Cada uno de ellos tiene sus propias aplicaciones y se utiliza según
las necesidades específicas del programa.
Bucle "Mientras" en PSeInt

El bucle "Mientras" se utiliza para repetir un conjunto de instrucciones mientras una


condición sea verdadera. La estructura básica es la siguiente:

Mientras (condición) Hacer

// Código a repetir mientras la condición sea verdadera

FinMientras
Bucle "Repetir" en PSeInt

El bucle "Repetir" se utiliza para repetir un conjunto de instrucciones hasta que una
condición sea verdadera. La estructura básica es la siguiente:

Repetir
// Código a repetir al menos una vez

Hasta Que (condición)


Bucle "Para" en PSeInt

El bucle "Para" se utiliza cuando se conoce el número exacto de iteraciones que se


deben realizar. La estructura básica es la siguiente:

Para variable <- valorInicial Hasta valorFinal Con paso paso Hacer

// Código a repetir en cada iteración

FinPara
Ciclos en C#
Instrucción for

La instrucción for ejecuta una instrucción o un bloque de instrucciones mientras una


expresión booleana especificada se evalúa como true. En el ejemplo siguiente se
muestra la instrucción for, que ejecuta su cuerpo mientras que un contador entero
sea menor que tres:

for (int i = 0; i < 3; i++)

Console.Write(i);

}
Instrucción foreach

La instrucción foreach ejecuta una instrucción o un bloque de instrucciones para


cada elemento de una instancia del tipo que implementa la interfaz
System.Collections.IEnumerable o System.Collections.Generic.IEnumerable<T>,
como se muestra en el siguiente ejemplo:

List<int> fibNumbers = [0, 1, 1, 2, 3, 5, 8, 13];

foreach (int element in fibNumbers)

Console.Write($"{element} ");

}
Instrucción do

La instrucción do ejecuta una instrucción o un bloque de instrucciones mientras que


una expresión booleana especificada se evalúa como true. Como esa expresión se
evalúa después de cada ejecución del bucle, un bucle do se ejecuta una o varias
veces. El bucle do difiere del bucle while, que se ejecuta cero o varias veces.

int n = 0;

do
{Console.Write(n);

n++;

} while (n < 5);


Instrucción while

La instrucción while ejecuta una instrucción o un bloque de instrucciones mientras


que una expresión booleana especificada se evalúa como true. Como esa expresión
se evalúa antes de cada ejecución del bucle, un bucle while se ejecuta cero o varias
veces. El bucle while difiere del bucle do, que se ejecuta una o varias veces.

int n = 0;

while (n < 5)

Console.Write(n);

n++;

Problemas por resolver:


1. Utilizando Pseint describa como son utilizados los ciclos de repetición
“Mientras” y “Para” tanto en pseudocódigo como en diagramas de flujo
clásico y de Nassi-Shneiderman.
2. Utilizando el IDE de Microsoft Visual Studio para lenguaje C#:
a) Se requiere de una aplicación que permita mostrar en pantalla un texto
que se vaya capturando desde el y concluir automáticamente la captura
cuando detecte que, el texto escrito hasta ese momento, incluye al menos 3
veces cada vocal.

b) Se requiere calcular el valor del número PI al utilizar la serie de Gregory-


Leibniz, el valor de PI calculado se acercará cada vez más a su valor exacto
conforme n va aumentando, note que la sumatoria contiene un número
infinito de términos, pero puede truncarse hasta un cierto valor de n en el cual
se considere que el valor de PI calculado cuenta con la precisión adecuada.
Se requiere ir mostrando como va cambiando el valor calculado de PI
conforme n va incrementando, dejando intervalos de un segundo entre un
cálculo y el siguiente, concluyendo en la n-sima iteración al presionar la tecla
ESC.
Pruebe hasta que valor debe llegar “n” para que el valor de PI calculado
coincida por primera vez con las primeras seis cifras significativas de su valor
exacto.
c) Generar una aplicación que pueda funcionar como un pequeño teclado
musical simple al utilizar un teclado de computadora, con las siguientes
funciones:
Utilizando una serie de teclas para reproducir las notas musicales de las
octavas 5 y 6
Utilizando alguna otra tecla para reproducir una melodía corta como “Happy
Birday” u otra similar.
Utilizando la tecla ESC para concluir el uso de la aplicación.

d) Obtener el promedio de una serie de N números con valores enteros entre


0 y 10.

e) Al concluir la captura de una serie de N números, determinar:


El de mayor valor
El de menor valor
El mayor cambio absoluto ocurrido entre dos valores consecutivos
Ciclos de repetición “Para” y “Mientras”
Lo primero que se hizó fue nombrar a nuestra variable “for” (“para”), pues ese es el
primer algoritmo que realizamos.
Una vez que lo tenemos listo, se pasó a definir nuestra variable a la cual
nombraremos como “num”, esto seguido de la palabra “como real”. Pues la variable
es un número real. Se procedió a poner el texto que queremos que nos diga nuestro
programa, en este caso es “Esto empieza en: “, simulando que acabando el conteo
podría suceder algo.

Después se le da la indicación a nuestro programa donde le explicamos que nuestra


variable empieza en el número 10 y termina en el 0, retrocediendo nuestra variable
de -1 en -1 hasta llegar al 0. Procedemos a decirle al código que escriba nuestra
variable y terminamos con nuestro ciclo de “para”.
Una vez terminado, utilizando el comando “Escribir” se le da al código que muestre
un mensaje de despedida o cierre una vez que ya termino su conteo, por lo que le
decimos que escriba "La cuenta regresiva ha finalizado" y con eso le ponemos fin a
nuestro algoritmo.
Procedemos a probarlo iniciando la ejecución del algoritmo.
Diagramas de flujo clásico y de Nassi-Shneiderman
Para el segundo código, se inicia colocando el nombre “While” (“mientras”).
Primero se definió nuestra variable a la cual nombramos “num” como número real.
Procedemos a decirle al programa que antes de comenzar nos escriba "Adivina el
número del 1 al 10" y le pedimos que lea el número que nosotros estamos
poniendo para intentar adivinar el número deseado.

Haremos que nos diga "Número incorrecto, vuelva a intentar" cada que nos
equivoquemos de número al intentarlo adivinar. En este caso el ciclo se va a
repetir una y otra vez hasta que el usuario no ingrese el número 8. Terminamos
con el ciclo de “mientras” y hacemos que al adivinar el numero el programa nos
diga "Adivinaste el número" y así le damos fin a nuestro algoritmo.
Procedemos a probarlo iniciando la ejecución del algoritmo.
Diagramas de flujo clásico y de Nassi-Shneiderman
Repetición de vocales
Primero usaremos Console.ForegroundColor para cambiar el color de los textos
que la pantalla mostrará al usuario una vez entre al programa, seguido del
respectivo Console.WriteLine(“”) que llevará el “titulo” del programa y así poder
darle al usuario una idea de lo que hace nuestra aplicación.

Así mismo repetiremos el ForegroundColor y el Console.WriteLine(“”) para


cambiar nuevamente el color del texto y en esta ocasión mostra en pantalla la
instrucción de introducir el texto que desee el usuario.

Ahora definiremos las vocales como variables enteras y les asignaremos el valor
inicial de cero.

Para el bucle que se encargará de capturar el texto haremos uso del ciclo while y
pondremos dentro de él que la entrada de texto será igual a lo que la consola lea
en la pantalla después de que el usuario escriba, esto usando Console.ReadLine()

Después aumentaremos el contador para cada vocal por cada vez que se repita
esa vocal en el texto, en este caso lo haremos con aCount+= ContarVocales(input,
‘a’) y lo repetimos para cada vocal cambiando la variable y la letra dentro del
paréntesis.
Para verificar si se ha ingresado cada vocal al menos tres veces usaremos un
ciclo if donde la condición sea que el contador de cada vocal sea mayor o igual a
3, si esto es verdadero se mostrará en pantalla el mensaje de que el código ha
finalizado ya que cada vocal se repite al menos 3 veces. Dejando al ultimo un
Thread.Sleep(5000) para que la pantalla no se cierre en un instante y le de al
usuario tiempo de leer que todo ha finalizado.

Esta parte del código es una función llamada ContarVocales que cuenta cuántas
veces aparece una vocal específica en un texto dado. Y por medio del código
sigue los siguientes pasos:
1. Parámetros:
○ texto: Es una cadena de caracteres (string) que representa el texto
en el que queremos buscar las vocales.

○ vocal: Es un carácter (char) que representa la vocal que deseamos


contar.
2. Inicialización:
○ Creamos una variable llamada count e inicializamos su valor en 0.
Esta variable se utilizará para llevar la cuenta de las veces que encontramos la
vocal en el texto.
3. Bucle foreach:
○ Recorremos cada carácter (char c) en la cadena texto.

○ Para cada carácter, comprobamos si su versión en minúsculas


(char.ToLower(c)) es igual a la vocal especificada (vocal).

○ Si es igual, incrementamos el contador count.


4. Retorno:
○ Al final del bucle, la función devuelve el valor de count, que
representa la cantidad de veces que se encontró la vocal en el texto.

En resumen, esta función es útil para contar cuántas veces aparece una vocal
específica en una cadena de texto.

Ejecución:
Aproximación al número Pi
Lo primero que se hizo en el programa fue declarar las variables, en este caso solo
se necesitó declarar una sola variable de tipo “double” con el nombre de suma y con
un valor inicial de 0(neutro aditivo).

Después se tiene que iniciar un ciclo infinito for, para esto lo que se hizo fue declarar
una variable n de tipo entero dentro del ciclo for, después se puso una condición la
cual siempre sea verdadera, esto para que el ciclo sea infinito; la condición fue que
el ciclo se ejecute siempre que n sea menor o igual a 10 o que n sea mayor a 10
(puede ser cualquier número), como podemos ver, esta condición es siempre
verdadera, n va a ir aumentando de uno en uno como en una sumatoria.

El bloque de código que se ejecutará dentro del ciclo infinito for es el siguiente.
Primero se guardará en la variable suma la fórmula de la sumatoria de Leibniz
sumando la misma variable suma, esto es para que la variable suma se vaya
actualizando cada vez que se reinicie el ciclo for, después se muestra en la consola
el resultado de suma.
Lo que sigue en el programa es un condicional if que establece que si
Console.KeyAvailable, es decir, que si hay una tecla presionada, el programa lo que
hará es guardar la tecla presionada en una variable llamada “tecla”, después esto
pasa a otro if anidado, el cual indica que si la tecla presionada guardada en la
variable “tecla” es la tecla liberadora “escape”, pasa a un “brake”, y esto significa
que el cliclo for infinito se rompe; si alguno de los dos o los dos condicionales if no
se cumple, el ciclo for se seguirá reiniciando una y otra vez hasta que se presione
la tecla liberadora escape.

El Thread.Sleep(50) indica que habrá un delay de 50 milisegundos antes de


volverse a reiniciar el ciclo for, esto para que los valores de aproximación de pi no
aparezcan demasiado rápido. Y por último el Console.ReadKey que aparece al
último, solo es para que al presionar la tecla escape no se cierre la consola, solo se
detenga la acción.
Programa ejecutándose:
Código para piano virtual
Este código se empezará asignado la variable “static void Main(string[] args), luego
de eso empezaremos con 4 Console.WriteLine para especificar las opciones que
estarán disponibles para el usuario

Como primera línea se pone el nombre que tiene el programa para que el usuario
entienda de que se trata el código, luego se pone la tecla con la que el programa se
puede cerrar, después la letra que está asignada para que se reproduzca una
canción, y por último, las letras que el usuario podrá usar para tocar el piano.

Luego de eso usaremos la constante “Bool running =true;” ya que esta únicamente
acepta valores que sean falsos o verdaderos (True y False), después se utilizará un
“While (running)”, y al final del código se agrega un “case ConsoleKey. Escape:
running = false; break;”.

De esta manera en el código se especifica cuando es que el programa estará


funcionando, y cuando el usuario ponga la tecla “Escape” el programa leerá un
“False” y se cerrará.

Con esto agregado, se asigna “var key = Console.ReadKey(true).Key;” junto con un


“switch(key)”, de esta manera el código ya puede leer los caracteres que sean
ingresados y se pueda reproducir un sonido. Luego tendremos que buscar las
frecuencias (estas son medidas en Hertz) que son solicitadas, que en este caso son
las octavas 5 y 6.
En la imagen se pueden observar las frecuencias para cada nota junto con la octava
en la que se encuentran, las frecuencias serán redondeadas a partir de .5 para
arriba.

Se coloca el siguiente algoritmo “case ConsoleKey. A: Console.Beep(523,500);


break;”
La función “Beep” es la que dará el sonido y a un lado de la frecuencia, se colocará
la duración de dicha nota en milisegundos. Por lo tanto, lo único que queda por
hacer es asignar todas las notas junto con la tecla que le quiero asignar a cada nota.
Y así sucesivamente hasta completas las notas que estén en dichas octavas,
incluso se colocarán los sostenidos correspondientes. Por último, se asignará la
letra con la que se reproducirá la canción.

Se tendrá que colocar nuevamente “static void” junto con el nombre de la melodía
o de la manera que se le quiera poner a dicha secuencia. Posteriormente se
agregarán dos “int” en el primero se pondrán las frecuencias y en el segundo se
pondrá la duración que se le quiera poner a cada frecuencia.

Se cerrará el código con un ciclo “for (int i = 0; i < frecuencias.Length; i++) {


Console.Beep(frecuencias[i], duración[i]);”

Para la canción que se quiera colocar se buscará la partitura.

Únicamente se pondrá la primera parte de la canción, para hacerlo más sencillo,


primero traduciremos todo y se anotará en una hoja.
Traducido quedará así, luego de esto anotaremos las frecuencias de cada nota a
partir de la octava 5 ya que la canción se encuentra en esa posición.

Las frecuencias de cada nota quedarán así. Ahora anotaremos las frecuencias
correspondientes en el código. Basándonos en el compás de ¾ que marca la
melodía, nos daremos una idea de la duración que tendrá cada nota, para terminar,
solo quedará iniciar el programa y verificar que la melodía tenga una cadencia
parecida.

En ambas imágenes se puede observar como quedaron las teclas designadas para
que se cierre el programa, y la tecla designada para que se reproduzca la canción.
También se puede observar como quedó la canción junto con la duración de cada
nota.

El código iniciado se ve así.


Obtener el promedio de una serie de N números con valores
enteros entre 0 y 10

Para iniciar este programa se le muestra al usuario para qué sirve, para eso
haciendo uso de la línea console.WriteLine le indicamos a nuestro programa que
muestre un texto.

Una vez que el usuario conozca el propósito del programa se le indica que ingrese
la cantidad de números que el desea ingresar para después calcular su promedio,
para eso se utilizó nuevamente el comando console.WriteLine:

Después se definió nuestra primera variable, en este caso de tipo entero, la cual
llamaremos cantidadNumeros y esta será igual al valor ingresado por el usuario en
la línea anterior, se utilizó el comando console.ReadLine con el int.Parse, esto
porque el numero que ingreso el usuario anteriormente son caracteres y
necesitamos cambiarlo a una variable de tipo entero debido a que nuestra variable
CantidadNumeros es de tipo entero.

Una vez definida nuestra variable cantidadNumeros creamos un arreglo de enteros


llamado numeros, este arreglo dependerá de nuestra variable cantidadNumeros, es
decir, nuestro arreglo numeros podrá almacenar datos de tipo entero, ¿Cuántos
datos? La cantidad ingresada en nuestra variable cantidadNumeros.

Una vez declara nuestra variable y nuestro arreglo donde se almacenaran los datos,
iniciaremos con un bucle for, para indicarle al usuario que ingrese los valores de los
números que desea promediar, las condiciones serán que iniciara con un valor de
i=0, que se detendrá hasta que i<cantidadNumeros y que i se ira incrementando de
uno en uno(i++). Después se le darán las instrucciones que se desean repetir, en
este caso vamos a repetir un texto que diga que ingrese el valor del numero 1,2,3 y
así sucesivamente y almacenaremos estos datos en nuestro arreglo números con
el comando console.ReadLine, dentro del ciclo o bucle For incluiremos una
condicional con el comando if, esto por si el usuario ingresa un numero inferior a 0
y mayor a 10, para esto se utilizó el operador lógico O(or), indicando que si al menos
una de las condiciones se cumple entonces la consola mostrara un mensaje de que
no se puede ingresar ese número, así mismo, decrementando i para que el usuario
puede ingresar el valor nuevamente.

Una vez que el ciclo For haya concluido iniciamos el calculo del promedio de los
números alamacenados en nuestro arreglo numeros, definimos una variable suma
de tipo double con un valor inicial de 0 y empezara a sumar los numeros, una vez
acabado el ciclo se define una variable de tipo double promedio, misma que tendrá
el promedio, para eso el valor con el que acabo el bucle foreach (suma) será dividido
entre la cantidadNumeros y al final, mediante el uso de console.WriteLine, le
mostraremos al usuario el valor del promedio así como también un mensaje que
diga: presiona cualquier tecla para salir y finalizamos con un conosle.ReadKey.
Prueba algoritmo C#

Como podemos observar el programa funciona correctamente, ahora veremos si


nuestra condicional if funciona poniendo un valor mayor a 10.

Funciona, debido a que ingresamos el número 11, el programa saca el mensaje y


nos permite volver a ingresar el número.
Al concluir la captura de una serie de N números, determinar:
El de mayor valor
El de menor valor
El mayor cambio absoluto ocurrido entre dos valores
consecutivos
Primero se realiza la captura de una serie de N números, esto ya se tiene gracias al
programa del punto d) el cual se encarga de obtener una serie de N números con
valores del 0-10, por lo que utilizaremos este programa. Para calcular el número con
máximo valor se aplica la función .Max() la cual en la serie de elementos de N
números, selecciona el que tenga mayor valor.

Por otro lado para calcular el número con menor valor se aplica la función .Min() a
la variable, la cual cumple una función similar a .Max() pero en este caso selecciona
el que tenga menor valor.

Para obtener el mayor cambio absoluto ocurrido entre dos valores consecutivos, lo
que se debe de realizar es colocar una nueva clase para la variable desconocida
del mayor cambio de valor absoluto, crear una variable y darle un valor la cual como
vamos a utilizar.

Seguido se abre un ciclo for el cual se va a repetir hasta que la variable i sea igual
al número de valores N.

El cual genera una variable la cual tiene un valor absoluto de una resta teniendo el
número N de la serie y el siguiente. Colocando un if con la condición de que el
resultado del valor absoluto de la resta sea mayo a la variable maxAbsoluto, y si es
mayor este sustituye el valor y así sucesivamente hasta tener el valor maxAbsoluto
más grande que se pueda.
Finalmente, en el código se escribe el valor del resultado del mayor cambio absoluto
de dos variables.

Y de igual forma se escribe lo mismo con el número de mayor y menor valor

Funcionamiento del código


Colocamos la cantidad de números que queremos utilizar

Ingresamos el valor de los números que nos solicita

Por ultimo el programa arrojara el resultado del número con mayor valor, menor
valor y el mayor valor absoluto entre dos números consecutivos, que, en este caso,
el número de mayor valor es 9, el de menor 1 y el cambio de valores es 8, debido a
que entre los valores consecutivos 1 y 9 hay un cambio de 8 unidades.
Conclusión
Gracias a la realización de estos ejercicios logramos entender mejor el
funcionamiento de los ciclos de repetición o bucles de ambos programas, tanto de
PSeInt como de C#. Logramos profundizar un poco más y subirle la dificultad a
comparación de los ejercicios anteriores. Por la investigación a la que debíamos
recurrir para la realización del código se aprendió y descubrió los diferentes tipos de
variables con las que cuenta el programa. Nos hizo darnos una idea de las increíbles
cosas que podemos lograr programando, y que con un poco de curiosidad e
imaginación podemos llegar a hacer cosas increíbles.

Referencias:

 https://codersfree.com/posts/bucles-en-pseint-automatizando-tareas-
repetitivas
 https://learn.microsoft.com/es-es/dotnet/csharp/language-
reference/statements/iteration-statements

También podría gustarte