PRÁCTICA 3 - BrunoErickFríasReséndiz
PRÁCTICA 3 - BrunoErickFríasReséndiz
PRÁCTICA 3 - BrunoErickFríasReséndiz
Grupo A
Algoritmos y Programación
Práctica 3
ID: 00445605
Ingeniería Mecatrónica
13 octubre 2021
EJERCICIO 18
OBJETIVO: Conocer la sintaxis del ciclo FOR
DESCRIPCIÓN DE PROBLEMA: Imprimir del 1 al 10 con for
PSEUDOCÓDIGO
DATOS DE ENTRADA
PROCESO
DATOS DE SALIDA
IMPRIMIR
Los números del 1 al 10
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim x As Byte
For x = 1 To 10
Print x
Next
End
PRUEBA DE ESCRITORIO
MEMORIA
𝒙
𝟎
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
PANTALLA
CONCLUSIONES
1. Consideroque este programa es importante porque fue el primer
acercamiento a la utilización del ciclo FOR.
2. En cuanto a lo aprendido, creo que este programa me ayudó a conocer
cómo es el diagrama de flujo básico de un ciclo FOR y, además, cómo es
que funcionan los ciclos FOR en general.
3. Finalmente, conbase en lo aprendido en este programa, podríamos
hacer otro que nos imprima los meses del año con base al número que
el ciclo tenga.
EJERCICIO 19
OBJETIVO: Utilizar el un step diferente a 1 dentro de un ciclo FOR
DESCRIPCIÓN DEL PROBLEMA: Tabla de conversiones grados farenheith y centígrados.
Farenheith de 0 a 300 cada 20.
PSEUDOCÓDIGO
DATOS DE ENTRADA
PROCESO
CALCULAR
cent = 5 (farh – 32) / 9 para farh de 0 a 300 cada 20
DATOS DE SALIDA
IMPRIMIR
Farh Cent
0 ?
20 ?
.
.
300 ?
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim farh As Short
Dim cent As Single
PRUEBA DE ESCRITORIO
MEMORIA
𝒇𝒂𝒓𝒉
𝟎
0, 20, 40, 60, 80, 100, 120, . . . , 300, 320
𝒄𝒆𝒏𝒕
𝟎
-17.78, -6.67, 4.44, . . . , 126.67, 137.78, 148.89
PANTALLA
CONCLUSIONES
1. Considero que este programa es importante porque fue el primer
acercamiento a la utilización del STEP diferente a 1.
2. En cuanto a lo aprendido, creo que este programa me ayudó a conocer
cómo afecta el STEP dentro de un ciclo y además, observar que se
pueden introducir operaciones matemáticas dentro de un ciclo.
3. Finalmente, conbase en lo aprendido en este programa, podríamos
hacer otro que nos haga las conversiones de grados a minutos o
viceversa.
EJERCICIO 20
OBJETIVO: Conocer el funcionamiento de los ciclos anidados.
DESCRIPCIÓN DE PROBLEMA: Imprimir las 10 tablas de multiplicar
PSEUDOCÓDIGO
DATOS DE ENTRADA
PROCESO
DATOS DE SALIDA
IMPRIMIR
1x1=1
.
.
1 x 10 = 10
2x1=2
.
.
2 x 10 =20
3x1=3
.
.
3 x10 = 30
.
.
10 x 1 = 10
.
.
10 x 10 = 100
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim x As Byte
Dim y As Byte
For x = 1 To 10
For y = 1 To 10
Print x; "x"; y; " = "; x * y
Next
Next
End
PRUEBA DE ESCRITORIO
MEMORIA
𝒙
𝟎
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
𝒚
𝟎
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
PANTALLA
CONCLUSIONES
1. Considero que este programa es importante porque me hizo pensar en
cómo encontrar la relación de las variables.
2. En cuanto a lo aprendido, creo que este programa me permitió aprender
a anidar los ciclos, es decir, poner un FOR dentro de otro FOR.
3. Finalmente, con base en lo aprendido en este programa, podríamos
hacer otro que simule ser un menú, el cual nos imprima las opciones de
platillos por sección del menú dependiendo del valor de la sección. Por
ejemplo, si es 1, es Entradas y en las entradas hay 1: ensaladas, 2:
empanadas, y así consecutivamente, etc.
EJERCICIO 21
OBJETIVO: Ejercitar el funcionamiento de los ciclos anidados y utilizar las instrucciones IF.
DESCRIPCIÓN DE PROBLEMA: Determinar de una serie de 30 valores dados por el usuario
cuantos son:
• Múltiplos de 2
• Múltiplos de 3
• Múltiplos de 2 y 5 a la vez
• El promedio
• El número mayor
• El número menor
PSEUDOCÓDIGO
DATOS DE ENTRADA
PEDIR 30 valores
PROCESO
DETERMINAR los múltiplos de 2, para los valores introducidos (1)
DETERMINAR los múltiplos de 3, para los valores introducidos (2)
DETERMINAR los múltiplos de 2 y 5 a la vez, para los valores introducidos (3)
DETERMINAR el promedio, para los valores introducidos (4)
DETERMINAR el número mayor, de los valores introducidos (5)
DETERMINAR el número menor, de los valores introducidos (6)
DATOS DE SALIDA
IMPRIMIR
valores
múltiplos de 2
múltiplos de 3
múltiplos de 2 y 5
el promedio
el número mayor
el número menor
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim x As Byte
Dim y As Integer
Dim valor As Integer
Dim m2 As Byte
Dim m3 As Byte
Dim m5 As Byte
Dim m25 As Byte
Dim prom As Single
Dim maxi As Integer
Dim mini As Integer
For x = 1 To 30
Print "Introduce un valor"
Input valor
y = y + valor
If (valor Mod 2) = 0 Then
m2 = m2 + 1
Endif
If (valor Mod 3) = 0 Then
m3 = m3 + 1
Endif
If (valor Mod 5) = 0 Then
m5 = m5 + 1
Endif
If (valor Mod 2 = 0) And (valor Mod 5 = 0) Then
m25 = m25 + 1
Endif
If x = 1 Then
maxi = valor
mini = valor
Else If valor > maxi Then
maxi = valor
Endif
If valor < mini Then
mini = valor
Endif
Next
Print
Print "El número de múltiplos de 2 es: "; m2
Print "El número de múltiplos de 3 es: "; m3
Print "El número de múltiplos de 5 es: "; m5
Print "El número de múltiplos de 2 y 5 es: "; m25
prom = y / (x - 1)
Print "El promedio es: "; prom
Print "El valor mayor de todos los números es: "; maxi
Print "El valor menor de todos los números es: "; mini
End
PRUEBA DE ESCRITORIO
MEMORIA
𝒙
𝟎
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, … 30, 31
𝒚
𝟎
712
𝒗𝒂𝒍𝒐𝒓
𝟎
23, 1, 45, 65, 2, 3, 7, 89, …, 22, 28, 30
𝒎𝟐
𝟎
14
𝒎𝟑
𝟎
10
𝒎𝟓
𝟎
6
𝒎𝟐𝟓
𝟎
1
𝒑𝒓𝒐𝒎
𝟎
23.7333336
𝒎𝒂𝒙𝒊
𝟎
23, 45, 65, …, 68, 89, 97
𝒎𝒊𝒏𝒊
𝟎
23, 1
PANTALLA
CONCLUSIONES
1. Considero que este programa es importante porque además de utilizar
el ciclo FOR, empleamos otras instrucciones y operaciones dentro de ese
ciclo.
2. En cuanto a lo aprendido, creo que fue el hecho de poder aplicar otros
temas vistos en clase dentro de un ciclo, tales como las operaciones
matemáticas básicas y el MOD, así como las diferentes instrucciones de
la familia IF.
3. A partir de este programa, podríamos hacer otro que nos separara
diversas cantidades introducidas en las diferentes denominaciones de
los billetes.
EJERCICIO 22
OBJETIVO: Practicar el uso de los ciclos FOR anidados.
DESCRIPCIÓN DE PROBLEMA: Imprimir utilizando ciclos cuantas líneas como indique el
usuario (valor de n). Si n es de dos cifras, imprimir únicamente las unidades.
PSEUDOCÓDIGO
DATOS DE ENTRADA
PEDIR n
PROCESO
DETERMINAR si n es de dos cifras o no (1)
DATOS DE SALIDA
IMPRIMIR
Pirámide de números de acuerdo con las líneas de indicadas en n
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim n As Byte
Dim i As Byte
Dim j As Byte
Dim lim As Byte
Dim nn As Byte
If n >= 10 Then
n = n Mod 10
Else
n=n
Endif
For i = n To 1 Step -1
lim = lim + 1
For j = 1 To lim
nn = n
If lim = 1 Then
Print n;
Else
Print nn;
Endif
Next
n=n-1
Print
Next
End
PRUEBA DE ESCRITORIO
MEMORIA
𝒏
𝟎
9, 7, 8, 6, …,2,1, 0
𝒊
𝟎
9, 7, 8, 6, …,2,1, 0
𝒋
𝟎
1, 2, 3, 4, …, 8, 9, 10
𝒍𝒊𝒎
𝟎
1, 2, 3, …, 8, 9
𝒏𝒏
𝟎
9, 7, 8, 6, …,2,1
PANTALLA
CONCLUSIONES
1. Considero que la importancia de este programa radica en que se
practican los ciclos anidados.
2. En cuanto a lo aprendido, creo que este programa me permitió analizar
la lógica en la relación entre el número de líneas y el ancho de ellas.
3. Finalmente, con base en lo aprendido en este programa, podríamos
hacer otro que nos imprima un triángulo entero, es decir, ambos lados
de la pirámide.
EJERCICIO 23
OBJETIVO: Usar los operadores matemáticos y los ciclos FOR anidados.
DESCRIPCIÓN DE PROBLEMA: Obtener y = ∑ ( i^3+1 )/ i! desde i=1 hasta n. Calcular el
factorial con una productoria y el cubo con otra. No utilizar ^ ó i*i*i
PSEUDOCÓDIGO
DATOS DE ENTRADA
PEDIR i
PEDIR límite superior
PROCESO
CALCULAR cubo = i * cubo
CALCULAR factorial = i * (i -1)
CALCULAR y = cubo + 1 / factorial
DATOS DE SALIDA
IMPRIMIR
y
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim i As Long
Dim n As Long
Dim vueltasuma As Single
Dim vueltacubo As Single
Dim vueltafact As Single
Dim cubo As Single
Dim factorial As Single
Dim y As Single
factorial = 1
cubo = 1
For vueltasuma = 1 To n
For vueltacubo = 1 To 3
cubo = i * cubo
Next
For vueltafact = 1 To i
factorial = factorial * vueltafact
Next
y = y + ((cubo + 1) / factorial)
Next
Print "El resultado de la sumatoria y = Sumatoria de (i^3 + 1)/i! es:"
Print y
End
PRUEBA DE ESCRITORIO
MEMORIA
𝒊
𝟎
1
𝒏
𝟎
5
𝒗𝒖𝒆𝒍𝒕𝒂𝒔𝒖𝒎𝒂
𝟎
1, 2, 3, 4, 5, 6
𝒗𝒖𝒆𝒍𝒕𝒂𝒄𝒖𝒃𝒐
𝟎
1, 2, 3, 4
𝒗𝒖𝒆𝒍𝒕𝒂𝒇𝒂𝒄𝒕
𝟎
1, 2
𝒄𝒖𝒃𝒐
𝟎
1, 1
𝒇𝒂𝒄𝒕𝒐𝒓𝒊𝒂𝒍
𝟎
1, 1
𝒚
𝟎
2, 4, 6, 8, 10
PANTALLA
CONCLUSIONES
1. Considero que este programa es importante porque nos permite
practicar la lógica matemática para resolver las operaciones de la
sumatoria.
2. En cuanto a lo aprendido, creo que este programa me permitió aprender
a relacionar operaciones matemáticas con ciclos anidados.
3. Finalmente, con base en lo aprendido en este programa, se puede hacer
cualquier otro que necesite hacer cálculos consecutivos con base en un
valor inicial.
EJERCICIO 24
OBJETIVO: Usar el MOD y la instrucción IF dentro de un ciclo FOR.
DESCRIPCIÓN DE PROBLEMA: Calcular e imprimir los números primos entre 1 y n. No
utilizar fórmula, realizar con div y mod.
PSEUDOCÓDIGO
DATOS DE ENTRADA
PEDIR n
PROCESO
CALCULAR primo = i MOD 2
DETERMINAR si primo es un número primo (1)
DATOS DE SALIDA
IMPRIMIR
primo desde 1 hasta n
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim n As Long
Dim primo As Long
Dim i As Long
For i = 1 To n
primo = i Mod 2
If primo = 0 Then
Else
Print i
Endif
Next
End
PRUEBA DE ESCRITORIO
MEMORIA
𝒏
𝟎
30
𝒑𝒓𝒊𝒎𝒐
𝟎
1, 0, 1, 0, 1, 0, …, 0, 1, 0, 1, 0
𝒊
𝟎
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, … 28, 29, 30, 31
PANTALLA
CONCLUSIONES
1. Considero que la importancia de este problema radica en aplicamos el
ciclo FOR para hacerse repetir una condición muchas veces.
2. En cuanto a lo aprendido, creo que este programa me permitió seguir
practicando la lógica del ciclo FOR.
3. Finalmente, con base en lo aprendido en este programa, podríamos
hacer otro que nos imprima los números pares o los múltiplos de cierto
número, en lugar de los primos.
EJERCICIO 25
OBJETIVO: Practicar el uso del ciclo FOR ,y además, utilizar por primera vez la función
random.
DESCRIPCIÓN DE PROBLEMA: Simular el lanzamiento de una moneda cuarenta veces. Al
final indicar lo siguiente:
• Cantidad de águilas
• Cantidad de soles
• % de águilas
• % de soles
• Máxima ocurrencia de águilas
• Máxima ocurrencia de soles.
PSEUDOCÓDIGO
DATOS DE ENTRADA
PROCESO
CALCULAR la cantidad de soles en los 40 lanzamientos
CALCULAR la cantidad de águilas en los 40 lanzamientos
CALCULAR el porcentaje de soles en los 40 lanzamientos
CALCULAR el porcentaje de águilas en los 40 lanzamientos
DETERMINAR la máxima ocurrencia de soles en los 40 lanzamientos (1)
DETERMINAR la máxima ocurrencia de águilas en los 40 lanzamientos (2)
DATOS DE SALIDA
IMPRIMIR
Cantidad de soles
Cantidad de águilas
Porcentaje de soles
Porcentaje de águilas
Máxima ocurrencia de soles (1)
Máxima ocurrencia de águilas (2)
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim i As Byte
Dim resultado As Byte
Dim sol As Byte
Dim aguila As Byte
Dim porsol As Single
Dim poragui As Single
Dim ocursol As Byte
Dim ocuragui As Byte
Dim maxocursol As Byte
Dim maxocuragui As Byte
maxocursol = 0
maxocuragui = 0
For i = 1 To 40
resultado = Rnd(0, 20)
Print resultado
If resultado <= 10 Then
sol = sol + 1
ocursol = ocursol + 1
If maxocuragui = 0 Then
maxocuragui = ocuragui
ocuragui = 0
Else If maxocuragui < ocuragui Then
maxocuragui = ocuragui
ocuragui = 0
Endif
Else
aguila = aguila + 1
ocuragui = ocuragui + 1
If maxocursol = 0 Then
maxocursol = ocursol
ocursol = 0
Else If maxocursol < ocursol Then
maxocursol = ocursol
ocursol = 0
Endif
Endif
Next
Print "Cantidad de soles: "; sol
Print "Cantidad de aguilas: "; aguila
PRUEBA DE ESCRITORIO
MEMORIA
𝒊
𝟎
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, … 38, 39, 40, 41
𝒓𝒆𝒔𝒖𝒍𝒕𝒂𝒅𝒐
𝟎
13, 7, 7, 0, 11, 2, 4, 14, …, 2, 3, 17, 11, 13
𝒔𝒐𝒍
𝟎
1, 2, 3, 4, 5, 6, …, 15, 16
𝒂𝒈𝒖𝒊𝒍𝒂
𝟎
1, 2, 3, 4, 5, 6, …, 22, 23, 24
𝒑𝒐𝒓𝒔𝒐𝒍
𝟎
40
𝒑𝒐𝒓𝒂𝒈𝒖𝒊
𝟎
60
𝒐𝒄𝒖𝒓𝒔𝒐𝒍
𝟎
1,2, 3, 4, 5, 6, 7, 8, 9
𝒐𝒄𝒖𝒓𝒂𝒈𝒖𝒊
𝟎
1, 2, 3, 4
𝒎𝒂𝒙𝒐𝒄𝒖𝒓𝒔𝒐𝒍
𝟎
1, 3, 2, 1, …, 2, 1, 5
𝒎𝒂𝒙𝒐𝒖𝒓𝒂𝒈𝒖𝒊
𝟎
1, 1, 1, 4, …, 1, 2, 1, 8
PANTALLA
CONCLUSIONES
1. Considero que la importancia de este problema es que utilizamos la
función matemática random.
2. En cuanto a lo aprendido, creo que este programa me ayudó a practicar
la función random, así como los ciclos y las operaciones matemáticas
básicas.
3. Finalmente, con base en lo aprendido en este programa, podríamos
hacer otro que nos imprima los resultados aleatorios de un dado y
obtener las probabilidades de que salgan ciertos números o un número
en específico o los pares o los impares en cierta cantidad de
lanzamientos.
EJERCICIO 26
OBJETIVO: Continuar practicando la función random y los ciclos anidados.
DESCRIPCIÓN DE PROBLEMA: Generar 4 cuadrados/rectángulos de m X n donde m y n son
valores aleatorios entre 1 y 15
Ejemplo:
******
******
******
En este ejemplo la base es 6 y la altura 3
PSEUDOCÓDIGO
DATOS DE ENTRADA
PROCESO
CALCULAR
altura = random (1,15)
base = random (1,15)
DATOS DE SALIDA
IMPRIMIR
4 cuadrados de * de acuerdo con los valores aleatorios de m y n
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim m As Byte
Dim n As Byte
Dim altura As Byte
Dim base As Byte
Dim cuadrados As Byte
PRUEBA DE ESCRITORIO
MEMORIA
𝒎
𝟎
1, 2, 3, 4, 5
𝒏
𝟎
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
𝒂𝒍𝒕𝒖𝒓𝒂
𝟎
4
𝒃𝒂𝒔𝒆
𝟎
14
𝒄𝒖𝒂𝒅𝒓𝒂𝒅𝒐𝒔
𝟎
1, 2, 3, 4, 5
PANTALLA
CONCLUSIONES
1. Considero que la importancia de este problema radica en aplicamos el
ciclo FOR para hacerse repetir un carácter muchas veces y además,
utilizamos la función random.
2. En cuanto a lo aprendido, creo que este programa me ayudó a seguir
practicando la función random y los ciclos anidados.
3. Finalmente, con base en lo aprendido en este programa, podríamos
hacer otro que nos imprima otra figura de acuerdo con los valores de
random que se asuman.
EJERCICIO 27
OBJETIVO: Conocer y utilizar las funciones matemáticas de GAMBAS.
DESCRIPCIÓN DE PROBLEMA: Realizar un ejemplo de cada una de las funciones
matemáticas.
PSEUDOCÓDIGO
DATOS DE ENTRADA
PEDIR n
PEDIR n1
PEDIR n2
PROCESO
CALCULAR
abso = Abs(n)
ent = Int(n)
deci = Frac(n)
redondeo = Round(n, 2)
incremento = n
Inc (incremento)
decremento = n
Dec (decremento)
signo = Sgn(n)
maxi = Max(n1, n2)
mini = Min(n1, n2)
aleatorio = Rnd(mini, maxi)
DATOS DE SALIDA
IMPRIMIR
abso
ent
deci
redondeo
incremento
decremento
signo
maxi
mini
aleatorio
DIAGRAMA DE FLUJO
CÓDIGO EN GAMBAS
Public Sub Main()
Dim n As Single
Dim n1 As Single
Dim n2 As Single
Dim abso As Single
Dim ent As Integer
Dim deci As Single
Dim redondeo As Integer
Dim incremento As Single
Dim decremento As Single
Dim signo As Single
Dim maxi As Single
Dim mini As Single
Dim aleatorio As Single
abso = Abs(n)
ent = Int(n)
deci = Frac(n)
redondeo = Round(n, 2)
incremento = n
Inc incremento
decremento = n
Dec decremento
signo = Sgn(n)
CONCLUSIONES
1. Considero que la importancia de este problema es que se utilizan por
primera vez las funciones matemáticas de GAMBAS.
2. En cuanto a lo aprendido, creo que este programa me permitió
comprender cómo es que operan cada una de las funciones
matemáticas y además, qué se necesita para que funcionen.
3. Finalmente, con base en lo aprendido en este programa, se pueden
hacer infinidad de programas ya que estas funciones se pueden aplicar
para obtener diferentes datos que se requieran.