Вы находитесь на странице: 1из 32

EJERCICIO 28

 Objetivo: Aprender a utilizar WHILE-WEND con un ejercicio básico.


 Descripción del problema: Realice un programa que imprima del 1 al 10 utilizando WHILE-
WEND.
 Pseudocódigo:
ENTRADA

PROCESO

SALIDA
IMPRIMIR x
 Diagrama de Flujo:

INICIO

x=1

¿x<=10?

SI

IMPRIMIR
x

NO

x=x+1

FIN

 Código 28:
Public Sub Main()
Dim x As Byte
x=1

While x <= 10
Print x
Inc x
Wend
End
 Prueba de escritorio:
Memoria:
x= 0,1,2,3,4,5,6,7,8,9,10,11

Pantalla:

 Conclusiones: Fue un ejercicio útil para conocer mejor el funcionamiento de los ciclos
WHILE-WEND
EJERCICIO 29

 Objetivo: Aprender a utilizar REPEAT-UNTIL con un ejercicio básico.


 Descripción del problema: Realice un programa que imprima del 1 al 10 utilizando REPEAT-
UNTIL.
 Pseudocódigo:
ENTRADA

PROCESO

SALIDA
IMPRIMIR x

 Diagrama de Flujo:

INICIO

x=1

IMPRIMIR
x
SI

x=x+1

¿x>10?

NO

FIN

 Código 29:
Public Sub Main()
Dim x As Byte
x=1

Repeat
Print x
Inc x
Until x > 10
End

 Prueba de escritorio:
Memoria:
x=0,1,2,3,4,5,6,7,8,9,10,11

Pantalla:

 Conclusiones: Fue un ejercicio útil para conocer mejor el funcionamiento de los ciclos
REPEAT-UNTIL

EJERCICIO 30

 Objetivo: Aprender a realizar código con anidación de ciclos utilizando WHILE-WEND.


 Descripción del problema: Realizar un programa que imprima las tablas de multiplicar del
1-10 utilizando WHILE-WEND.
 Pseudocódigo:
ENTRADA

PROCESO

SALIDA
IMPRIMIR x X y = xy
 Diagrama de Flujo:
INICIO

x=1

¿x<11?

SI

y=1

¿y<11?

SI

IMPRIMIR
x X y= xy
NO
NO

y=y+1

x=x+1

FIN

 Código 30:
Public Sub Main()
Dim x As Byte
Dim y As Byte

x=1
While x < 11
y=1
While y < 11
Print x; "x"; y; "="; x * y
Inc y
Wend
Inc x
Wend
End
 Prueba de escritorio:
Memoria:
x=0,1,2,3,4,5,6,7,8,9,10,11
y=0,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,
2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11
Pantalla:

 Conclusiones: Este ejercicio aumentó el nivel de complejidad al tener que anidar un ciclo
dentro de otro. Se aprendió más sobre el funcionamiento de los ciclos WHILE-WEND.
EJERCICIO 31

 Objetivo: Aprender a realizar código con anidación de ciclos utilizando REPEAT-UNTIL.


 Descripción del problema: Realizar un programa que imprima las tablas de multiplicar del
1-10 utilizando REPEAT-UNTIL.
 Pseudocódigo:
ENTRADA

PROCESO
DETERMINAR SI x > 11
DETERMINAR SI y > 11

SALIDA
IMPRIMIR x X y = xy

 Diagrama de Flujo:
INICIO

x=1

y=1

IMPRIMIR
xXy=y
NO

NO y=y +1

¿y>10?

SI

x=x +1

¿x>10?

SI

FIN
 Código 31:
Public Sub Main()
Dim x As Byte
Dim y As Byte
x=1

Repeat
y=1
Repeat
Print x; "x"; y; "="; x * y
Inc y
Until y > 10
Inc x
Until x > 10
End
 Prueba de escritorio:
Memoria:
x=0,1,2,3,4,5,6,7,8,9,10,11
y=0,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,
2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11,1,2,…,9,10,11

Pantalla:
 Conclusiones: Este ejercicio aumentó el nivel de complejidad al tener que anidar un ciclo
dentro de otro. Se aprendió más sobre el funcionamiento de los ciclos REPEAT-UNTIL.

EJERCICIO 32

 Objetivo: Aprender a programar mini juegos básicos utilizando ciclos.

 Descripción del problema: Realice un juego de adivinar un número en el que la


computadora selecciona un número aleatorio entre 1 y 1000. El usuario tiene hasta 10
oportunidades para adivinar.

1. El programa debe indicar si el número ingresado por el usuario es mayor o menor que el
número por adivinar.
2. Al final de cada juego se debe decir al usuario si gana o pierde y luego preguntar si desea
jugar otra vez.
3. Se debe mostrar la cantidad de juegos ganados y perdidos cada vez que termina un juego.

 Pseudocódigo:
ENTRADA
PEDIR n
PEDIR y

PROCESO
DETERMINAR SI n<x ó n>x ó n=x

SALIDA
IMPRIMIR más grande ó más chico ó ADIVINASTE
IMPRIMIR Bien jugado
Juegos ganados: ganados
Juegos perdidos: perdidos

 Diagrama de Flujo:
INICIO

juegos=1

x=num.entero
aleatorio.de 1-1000

y=1

PEDIR n

¿n<x? NO
SI

¿n>x?
SI NO
IMPRIMIR
Mas grande
NO
IMPRIMIR IMPRIMIR
Mas chico ADIVINASTE

ganados=ganados+1

y=11

y=y+1

¿y>10?

SI

PEDIR y

B A
B A

¿y=1? NO
SI

juegos=juegos+1 j=NO
NO

j=SI

¿j=NO?

SI

FIN

 Código 32:

Public Sub Main()

Dim x As Integer

Dim y As Byte

Dim n As Integer

Dim j As Boolean

Dim ganados As Byte

Dim juegos As Byte

juegos = 1

'Volver a jugar?

Repeat

x = Int(Rnd(1, 1000.9999))

Print "Tienes 10 intentos\n"


'Juego

y=1

Repeat

Print y; "."; " Adivina el numero-->";

Input n

'numero es mayor o menor

If n < x Then

Print "Mas grande"

Else If n > x Then

Print "Mas chico"

Else

Print "ADIVINASTE"

Inc ganados

y = 11

Endif

Inc y

Until y > 10

'pregunar si seguir en el juego

Print "Volver a jugar? (Si.1/No.2):";

Input y

If y = 1 Then

Inc juegos

j = True

Else

j = False

Endif

Until j = False
Print "Bien jugado"

Print "Juegos Ganados:"; ganados

Print "Juegos Perdidos:"; juegos - ganados

End

 Prueba de escritorio:
Memoria:
x=0,957,646
y=0,1,2,3,4,5,6,7,8,11,12,1,2,3,4,5,6,7,8,9,10,11,12
n=0,500,750,875,950,975,960,955,957,500,750,635,700,675,650,640,645,647,646
j= FALSE, TRUE, FALSE
ganados=0,1,2
juegos=0,1,2

Pantalla:

 Conclusiones: Este programa necesitaba de una anidación de ciclos más compleja, esto
llevó a que el mayor aprendizaje fuera la anidación de ciclos REPEAT-UNTIL, y crear un
juego entretenido con código.
EJERCICIO 33

 Objetivo: Aprender más sobre los ciclos y su funcionamiento usando varias variables
dentro del mismo.
 Descripción del problema: Realicé un programa que calculé e imprima los primeros n
términos de la serie de Fibonacci.
 Pseudocódigo:
ENTRADA
PEDIR n

PROCESO
DECLARAR a = a + 1
DECLARAR a=b
DECLARAR b=x
DECLARAR b= x+a

SALIDA
IMPRIMIR x-

 Diagrama de Flujo

INICIO

PEDIR n

b=1

¿x<=n?

SI

IMPRIMIR
x-

a=b

NO
b=x

x= a+b

IMPRIMIR

FIN
 Código 33:

Public Sub Main()

Dim n As Integer

Dim x As Integer

Dim a As Integer

Dim b As Integer

a=1

'Pedir n-esimo termino

Print "Hasta que termino:";

Input n

b=1

While x <= n

Print x; "-";

a=b

b=x

x=a+b

Wend

End

 Prueba de escritorio:
Memoria:
n=0,18
x=0, 1,1,2,3,5,8,13
a=0,1,2,0,1,1,2,3,5,8
b=0,1,0,1,1,2,3,5,8,13

Pantalla:
 Conclusiones: Este código fue difícil de visualizar la solución al inicio por la cantidad de
variables y el uso de acumuladores dentro del ciclo.

EJERCICIO 34

 Objetivo: Crear un programa que resuelva un problema de la vida diaria.


 Descripción del problema: Realice un programa que calcule la superficie de un terreno
que le corresponde a un heredero después de n generaciones, partiendo de una superficie
inicial en la generación uno. Se supone que hay división a partes iguales entre herederos.
Se debe preguntar cuántos herederos hay en cada generación.
 Pseudocódigo:
ENTRADA
PEDIR m, g
PEDIR h
PROCESO
CALCULAR m=m/h
SALIDA
IMPRIMIR te tocan m metros
 Diagrama de Flujo:
INICIO

PEDIR m, g

x=1

¿x<=g?

SI

PEDIR h

m=m/h
NO

x=x+1

IMPRIMIR
Te tocan m
metros

FIN

 Código 34:
Public Sub Main()
Dim m As Single
Dim g As Byte
Dim x As Byte
Dim h As Byte

Print "Cuantos mtrs?:";


Input m
Print "Cuantas generaciones?:";
Input g
x=1
While x <= g
Print "Cuantos herederos (gen"; x; ")?:";
Input h
m=m/h
Inc x
Wend
Print "Te tocan:"; m; "m"
End

 Prueba de escritorio:
Memoria:
m=0.0, 10000.0,5000.0,2500.0,500
g=0,3
x=0,1,2,3,4
h=0,2,2,5
Pantalla:

 Conclusiones: Se aprendió a utilizar nuestros conocimientos en ciclos para resolver


problemas con utilidad en la vida diaria.

EJERCICIO 35

 Objetivo: Incorporar una fórmula matemática a un programa de ciclos.


 Descripción del problema: Calcular e imprimir el valor de pi con una aproximación de n
iteraciones
 Pseudocódigo:
ENTRADA
PEDIR n
PROCESO
DETERMINAR SI el residuo de y/2=0
CALCULAR p-(4/x) ó p+(4/x)
SALIDA
IMPRIMIR pi
 Diagrama de Flujo:

INICIO

PEDIR
n

x=1

y=1

¿residuo de y/
2=0?
SI NO

p= p-(4/x) p= p+(4/x)
NO

x= x+2

y=y+1

¿y>n?

SI

PRINT
pi

FIN

 Código 35:
Public Sub Main()

Dim x As Long

Dim y As Long

Dim n As Long

Dim p As Float

Print "Cuantas iteraciones?:";

Input n

x=1

y=1

Repeat

If y Mod 2 = 0 Then

p = p - (4 / x)

Else

p = p + (4 / x)

Endif

x=x+2

Inc y

Until y > n

Print "La aproximacion de Pi es: "; p

End

 Prueba de escritorio:
Memoria:
x=0,1,3,5,8,…,200000,200002
y=0,1,2,3,4,…,100000,100001
n=0,100000
p=0.0,4.0,2.666,3.46,2.9666,…,4.1415
Pantalla:
 Conclusiones: Se obtuvo una aproximación muy exacta del valor de pi, es el resultado de
utilizar una fórmula matemática en dentro de un ciclo.

EJERCICIO 36

 Objetivo: Utilizar los ciclos WHILE y REPEAT combinados en un solo código

 Descripción del problema: Realizar un programa que imprima tantos renglones como
indique el usuario (valor de n). Imprimir las unidades únicamente.

Ej.: Si n= 5:

1 1
22 22
333 333
4444 4444
5555555555
4444 4444
333 333
22 22
1 1

 Pseudocódigo:
ENTRADA
PEDIR n

PROCESO
DETERMINAR SI x<=n
DETERMINAR SI y <=x
DETERMINA SI y< 2n+1-2x
DETERMINAR SI y<=x
DETERMINAR SI y<= n-x
DETERMINAR SI y<=2x
DETERMINAR SI y< n-x
DETERMINAR SI x>=n

SALIDA
IMPRIMIR la unidad de x
IMPRIMIR Espacio
IMPRIMIR la unidad de x
IMPRIMIR la unidad de n-x
IMPRIMIR Espacio
IMPRIMIR la unidad de n-x
 Diagrama de Flujo:
INICIO

PEDIR n

x=1

¿x<=n?

SI

y=1

¿y<=x?

SI
IMPRIMIR
unidades de
x
NO
NO

y=y+1

y=1

¿y<(2n+1)-(2x)?

SI
IMPRIMIR
espacio

NO
y=y+1

y=1

D C E
D C E

¿y<=x?

SI
IMPRIMIR
unidades de
x
NO

y=y+1

IMPRIMIR
intro

x=x+1

x=1

y=1

¿y<=n-x?

SI
IMPRIMIR
unidades de
n-x
NO

y=y+1

y=1

G F
G F

¿y<=2x?

SI
IMPRIMIR
espacio

NO
y=y+1

y=1

¿y<=n-x?

SI
IMPRIMIR
unidades de
n-x
NO NO

y=y+1

IMPRIMIR
intro

x=x+1

¿x>=n?

SI

FIN
 Código 36:
Public Sub Main()
Dim n As Integer
Dim x As Integer
Dim y As Integer

Print "Hasta que numero-->";


Input n

'PARTE SUPERIOR
x=1
While x <= n
y=1
While y <= x
Print x Mod 10;
Inc y
Wend
'espacios
y=1
While y < (2 * n + 1) - (2 * x)
Print " ";
Inc y
Wend
'2 da piramide
y=1
While y <= x
Print x Mod 10;
Inc y
Wend
Print
Inc x
Wend

'PARTE INFERIOR
x=1
Repeat
y=1
While y <= n - x
Print (n - x) Mod 10;
Inc y
Wend
'espacios
y=1
While y <= 2 * x
Print " ";
Inc y
Wend
'2da piramide
y=1
While y <= n - x
Print (n - x) Mod 10;
Inc y
Wend
Print
Inc x
Until x >= n
End
 Prueba de escritorio:
Memoria:
n=0,7
x=0,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,1,2,3,4,5,6,7
y=0,1,2,1,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,9,10,1
1,12,13,…,1,2,3,1,2,1,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7,1,2,3,4,5,6,7,8,…,1,2,3,4
,5,6,1,2,3,4,5,1,2,3,4,1,2,3,1,2,1

Pantalla:

 Conclusiones: Fue un ejercicio de mayor complejidad a los anteriores, el mayor reto fue la
integración de los dos ciclos dentro del mismo programa.
EJERCICIO 37

 Objetivo: Utilizar ciclos para resolver un problema complejo, utilizando sumas


únicamente.
 Descripción del problema: Realice un programa que calcule x elevado a la n con sucesión
de sumas. No puede utilizar asterisco o circunflejo en todo del programa.
 Pseudocódigo:
ENTRADA
PEDIR x
PEDIR n
PROCESO
DECLARAR z=1
DECLARAR suma = potencia
DECLARAR y=1
CALCULAR potencia= potencia + suma
SALIDA
IMPRIMIR X a la n = potencia

 Diagrama de Flujo:
INICIO

PEDIR x,n

z=1

potencia=x

¿z<n?

SI

y=1

suma=potencia

¿x<y?

SI

potencia=potencia+
suma
NO

y=y+1 NO

z=z+1

IMPRIMIR x
a la n
=potencia

FIN
 Código 37:
Public Sub Main()
Dim n As Integer
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim j As Integer
Dim suma As Integer
Dim potencia As Integer

Print "Dame valor:";


Input x
Print "Dame potencia:";
Input n

z=1
potencia = X
While z < n
y=1
suma = potencia
While y < x
potencia = potencia + suma
Inc y
Wend
Inc z
Wend
Print x; "velevado a la "; n; "="; potencia
End
 Prueba de escritorio:
Memoria:
n=
x=
y=
z=
j=
suma=
potencia=

Pantalla:
 Conclusiones: Lo más difícil de realizar el programa era el “pensar” como la computadora
que realiza las operaciones con sumas. Ya logrado eso el programa no era extenso.

 Bibliografía:

 Apuntes de la clase de Algoritmos y programación del profesor Vidal

 Microsiervos.com. (2018). Cómo calcular el valor de π por diferentes métodos |


Microsiervos (Ciencia). [online] Available at:
http://www.microsiervos.com/archivo/ciencia/calcular-el-valor-de-pi-metodos.html
[Accessed 23 Mar. 2018].
GRUPO B
UNIVERSIDAD ANAHUAC

Algoritmos y Programación

Práctica 4

Rafael Soto Peña


No. Exp. 00286336
Ingeniería Industrial
23/Marzo/2018

Вам также может понравиться