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

Fundamentos de programacin

2. Sentencia SELECCIN-CASO
Esta es una estructura de decisin mltiple, evaluar una expresin que podr tomar
uno de los n valores distintos que para algunos casos puede tratarse de rangos o
valores individuales, segn cumpla con uno de estos.
Esta sentencia puede ser tratada tambin como si fuera sentencias si anidadas, deber
tener en cuenta que los rangos o valores se expresarn como condiciones.

Diagrama de Flujo
Expresin_
Variable

Rango_Valor_1

Rango_Valor_4

Rango_Valor_2
Rango_Valor_3

Accin 1

Accin 4
Accin 2

Accin 3

Pseudocdigo
Seleccionar Cuando (Expresin_Variable)
Sea (Rango_Valor_1)
Accin 1
Sea (Rango_Valor_2)
Accin 2
Sea (Rango_Valor_3)
Accin 3
Sea (Rango_Valor_4)
Accin 4
...
Fin Seleccionar

Ejercicio de aplicacin No. 1


Un mvil recorre un tramo de la carretera con Movimiento Rectilneo Uniforme
(MRU), determinar y mostrar cual es el espacio recorrido:
Espacio = Velocidad * Tiempo
Fundamentos de Programacin

Pgina 98

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

Adicionalmente mostrar un mensaje que indique el consumo de gasolina segn la tabla:


Espacio Recorrido
0 y 30
31 y 60
61 y 200

Gasolina
1 galn
2 galones
3 o mas galones

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Calcular el espacio recorrido y en base a ello mostrar cuanta gasolina se consume.
ii. Qu datos necesito conocer?
La velocidad y el tiempo (segn formula).

2. Planteamiento Lgico.
El desarrollo es simple, solamente deber ingresar la velocidad y el tiempo para
calcular el espacio recorrido, en base a ello deber observar la tabla para que
desarrolle la estructura correspondiente y muestre el mensaje solicitado.
Ejemplo:
Si el espacio recorrido es de 25 kilmetros
El mensaje es 1 galn.

3. Definicin de variables de entrada.


Se requerirn dos variables, V y T que representen a la velocidad y el tiempo
respectivamente.

4. Definicin de variables de salida.


La variable de salida estar representada por E.

5. Diseo de la solucin
5.1 Pseudocdigo
INICIO
Declaracin de variables
V, T, E: entero
Escribir(Ingrese la velocidad:)
Capturar(V)
Escribir(Ingrese el tiempo:)
Capturar(T)
E = V* T
Seleccionar Cuando (E)
Sea 0 y 30
Mostrar(Debe usar 1 galn)
Sea 31 y 60
Mostrar(Debe usar 2 galones)
Sea 61 y 200
Mostrar(Debe usar 3 o ms galones)
Fundamentos de Programacin

Pag. 99

Fundamentos de programacin
Fin Seleccionar
Mostrar(El espacio recorrido fue:, E)
FIN

5.2 Diagrama de Flujo


INICIO
Declaracin de variables
V, T, E: entero

V, T

E=V* T

0 y 30

60 y 200
31 y 60

Debe usar 1
galn

Debe usar 2
galones

E
FIN

5.3 Diseo del Formulario

Pgina 100

Debe usar 3 o
mas galones

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

5.4 Codificacin del Programa


Public Class Form1
Dim v, t, e1 As Single
Dim mensaje As String
Private Sub Button1_Click
v = Val(TextBox1.Text)
t = Val(TextBox2.Text)
e1 = v * t
Select Case e1
Case 0 To 30
mensaje = "debes usar un galn"
Case 31 To 60
mensaje = "debes usar dos galn"
Case 61 To 200
mensaje = "debes usar tres o ms galones"
End Select
TextBox3.Text = mensaje
End Sub
End Class

Ejercicio de aplicacin No. 2


En un hotel los costos por da de las habitaciones son de acuerdo al tipo, segn la tabla:
Tipo
A
B
C

Costo
35
25
15

Adems dependiendo el nmero de das que se pueda quedar se le otorga un descuento


sobre el pago diario a realizar, segn la tabla:
Das
1..3
4..7
8 a mas

Dscto
2%
10%
25%

Realizar un algoritmo en donde se ingrese el tipo de habitacin y el nmero de das que


se quedar en el hotel, de modo que se pueda calcular y mostrar el total a pagar por la
persona al momento de que se retire del hotel.
Total a pagar = Costo por da * nmero de das

Fundamentos de Programacin

Pag. 101

Fundamentos de programacin
Solucin:
1.

Anlisis.
ii. Qu te piden que realices?
Hallar cuanto pagar el cliente por los das que estuvo en el hotel.
iii. Qu datos necesito conocer?
El tipo de habitacin y el nmero de das que se quedar.

2. Planteamiento Lgico.
Para poder determinar el total a pagar por el cliente inicialmente se deber saber
cuanto le costar la habitacin para ello deber escoger el tipo de habitacin a usar
(ver cuadro 1), luego deber de mencionar el nmero de das que se quedar de modo
que se le pueda otorgar un descuento (ver cuadro 2) y posteriormente se obtenga el
total a pagar.
Ejemplo:
Si el tipo es B, el costo ser de 25 soles
Si se queda 5 das, le corresponde un descuento del 10%
Es decir el costo de la habitacin ser de:
25 25/100 = 22.5
El total a pagar finalmente ser:
22.5 * 5 = 112.5

3. Definicin de variables de entrada.


Se usarn dos variables de entrada: TIP para el tipo y ND para el nmero de das.

4. Definicin de variables de salida.


El total a pagar se mostrar en la variable TP.

5. Diseo de la Solucin.
5.1 Pseudocdigo
INICIO
Declaracin de variables
TIP: caracter
ND, PRE: entero
TP: real
Escribir(Ingrese el tipo de habitacin a usar:)
Capturar(TIP)
Escribir(Ingrese el nmero de das que se quedar:)
Capturar(ND)
Seleccionar Cuando (TIP)
Sea A: PRE = 35
Sea B : PRE = 25
Sea C: PRE = 15
Fin Seleccionar
Seleccionar Cuando (ND)
Sea 1..3: DSCT = 0.02
Pgina 102

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

Sea 4..7: DSCT = 0.1


Otro caso
DSCT = 0.25
Fin Seleccionar
PRE = PRE (PRE * DSCT)
TP = PRE * ND
Mostrar(El total a pagar ser de:, TP)
FIN

5.2 Diagrama de Flujo


INICIO
Declaracin de variables
TIP: caracter
ND, PRE: entero
TP: real

TIP, ND

TIP

C
B

PRE = 35

1y3

PRE = 25

PRE = 15

ND

Otro Caso
4y7

DSCT = 0.02

DSCT = 0.1

DSCT = 0.25

PRE = PRE (PRE * DSCT)


TP = PRE * ND
TP
FIN

Fundamentos de Programacin

Pag. 103

Fundamentos de programacin
5.3 Diseo del Formulario

5.4 Codificacin del Programa


Public Class Form2
Dim nd, pre As Integer
Dim dsct, tp As Single
Private Sub Button1_Click
nd = Val(TextBox1.Text)
Select Case nd
Case 1 To 3
dsct = 0.02
Case 4 To 7
dsct = 0.1
Case Else
dsct = 0.25
End Select
pre = pre - (pre * dsct)
tp = pre * nd
TextBox2.Text = tp
End Sub
Private Sub RadioButton1_Click
pre = 35
End Sub
Private Sub RadioButton2_Click
pre = 25
End Sub
Private Sub RadioButton3_Click
pre = 15
End Sub
End Class

3. Algoritmos de Estructura Repetitiva.


Este tipo de algoritmos se caracteriza por que entre sus instrucciones se muestran
estructuras secuenciales, estructuras selectivas y estructuras que forman bucles, es
decir un conjunto de instrucciones que se desarrollan un nmero determinado de
veces, dependiendo una condicin o un lmite.
Las estructuras repetitivas son tres: la sentencia PARA HASTA, HACER
MIENTRAS, HACER HASTA.
Pgina 104

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

Para el desarrollo de cualquiera de estas sentencias se deber tener en cuenta los


siguientes conceptos:

Bucle. Es denominado tambin lazo (Loop), es un


segmento de un algoritmo o programa, cuyas
instrucciones se repiten un nmero determinado de
veces mientras se cumple una determinada
condicin o en todo caso se le ha dado un lmite de
veces a ejecutar. En todo algoritmo se debe
establecer cuales son las sentencias que formaran
las tareas repetitivas.

Contador. Los procesos repetitivos por lo


general lo utilizan, ya que necesitan contar los
sucesos o acciones internas del bucle. Una de las
formas de controlar un bucle es mediante un
contador. Un contador es una variable cuyo valor
se aumenta o disminuye en una cantidad constante
por cada vuelta (interaccin) que da el bucle.

Acumulador.

Es denominado tambin
totalizador, es una variable cuya misin es
almacenar cantidades o valores resultantes de
sumas sucesivas. Realiza la misma funcin que
un contador con la diferencia de que el
incremento o decremento de cada suma es
variable en lugar de constante como en el caso
del contador.

1. Sentencia PARA HASTA


Esta es una sentencia repetitiva, se caracteriza por tener un inicio y un fin que sern
establecidos va programa y no tener condicionales (evaluaciones lgicas) para la
salida o ingreso al bucle; esta sentencia repetitiva es una de las mas fciles de
aplicar.

Fundamentos de Programacin

Pag. 105

Fundamentos de programacin
Diagrama de Flujo

Pseudocdigo
Para I = Nmero Hasta F
Acciones
Fin_Para
Casos de la Sentencia Desde Hasta

Caso 1.- Cuando: INICIO < FIN


Es la forma normal de trabajo para la sentencia, el incremento ser por defecto de 1
o en todo caso podr ser expresada por el programador. Ejm:
El valor de n asumimos como 10
Para i = 1 hasta n
Acciones
Fin_Para
Se ejecutar 10 veces
Para i = 6 hasta n step 2
Acciones
Fin_Para
Se ejecutar 3 veces

Caso 2.- Cuando: INICIO > FIN


Esta vez no se tratar de un incremento sino de un decremento, de acuerdo a la
cantidad que se exprese. Ejm:
El valor de n asumimos como 2
Para i = 6 hasta n step -2
Acciones
Fin_Para
Se ejecutar 5 veces
Para i = 8 hasta n step -3
Acciones
Fin_Para
Se ejecutar 3 veces
Pgina 106

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

Ejercicio de aplicacin No. 1


Desarrollar un algoritmo que permita calcular y mostrar la suma de los n primeros
nmeros naturales, deber ingresar el lmite de nmeros a sumar.
S = 1 + 2 + 3 + 4 + 5 +... + n

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Calcular la suma de n nmeros naturales.
ii. Qu datos necesito conocer?
La cantidad de nmeros a sumar.

2. Planteamiento Lgico.
Este tipo de problemas se puede desarrollar aplicando la formula general para la
suma de nmeros naturales o en todo caso haciendo uso de acumuladores y
contadores.

3. Definicin de variables de entrada.


Se requerirn una variable que represente a la cantidad de nmeros a sumar(N).

4. Definicin de variables de salida.


La suma total estar representada por la variable AC.

5. Diseo de la Solucin.
5.1 Pseudocdigo
INICIO
Declaracin de variables
I, N, AC: entero
Escribir(Ingrese la cantidad de nmeros a sumar:)
Capturar(N)
AC = 0
Para I = 1 hasta N
AC = AC + I
Fin_Para
Mostrar(El espacio recorrido fue:, AC)
FIN

Fundamentos de Programacin

Pag. 107

Fundamentos de programacin
5.2 Diagrama de Flujo
INICIO
Declaracin de variables
I, N, AC: entero
N
AC = 0
Para I=1
Hasta N

AC = AC + I

AC

FIN

5.3 Diseo del Formulario

5.4 Codificacin del Programa


Public Class Form2
Dim nd, pre As Integer
Dim dsct, tp As Single
Private Sub Button1_Click
nd = Val(TextBox1.Text)
Select Case nd
Case 1 To 3
dsct = 0.02
Case 4 To 7

Pgina 108

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

dsct = 0.1
Case Else
dsct = 0.25
End Select
pre = pre - (pre * dsct)
tp = pre * nd
TextBox2.Text = tp
End Sub
Private Sub RadioButton1_Click
pre = 35
End Sub
Private Sub RadioButton2_Click
pre = 25
End Sub
Private Sub RadioButton3_Click
pre = 15
End Sub
End Class

Ejercicio de aplicacin No. 2


Desarrollar un algoritmo que permita calcular y mostrar la suma de los n primeros
nmeros en la siguiente progresin, deber ingresar el lmite de nmeros a sumar.
S = 2 + 4 + 6 + 8 +... + n

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Calcular la suma de n nmeros de la progresin mostrada.
ii. Qu datos necesito conocer?
La cantidad de nmeros a sumar.

2. Planteamiento Lgico.
Este tipo de problemas se puede desarrollar aplicando la formula general para la
suma de nmeros pares o en todo caso haciendo uso de acumuladores y contadores.

3. Definicin de variables de entrada.


Se requerirn una variable que represente a la cantidad de nmeros a sumar(N).

4. Definicin de variables de salida.


La suma total estar representada por la variable AC.

Fundamentos de Programacin

Pag. 109

Fundamentos de programacin
5. Diseo de la solucin
5.1 Pseudocdigo

5.2 Diagrama de Flujo

INICIO
Declaracin de variables
I, N, AC, NUM: entero
Escribir(Ingrese la cantidad de nmeros a sumar:)
Capturar(N)
AC = 0
NUM = 0
Para I = 1 hasta N
NUM = NUM + 2
AC = AC + NUM
Fin_Para
Mostrar(La suma es:, AC)
FIN

INICIO
Declaracin de variables
I, N, AC, NUM: entero
N
AC = 0; NUM = 0
Para I=1
Hasta N

NUM = NUM + 2
AC = AC + NUM

AC

FIN

5.3 Diseo del Formulario

Codificacin del Programa


Public Class Form4
Dim n As Byte
Dim NUM As Integer
Dim AC As Integer
Private Sub Button1_Click
ListBox1.Items.Clear()
AC = 0
NUM = 0

Pgina 110

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

For n = 1 To Val(TextBox1.Text)
NUM = NUM + 2
ListBox1.Items.Add(Str(NUM))
AC = AC + NUM
Next n
TextBox2.Text = AC
End Sub
Private Sub cmdsalir_Click
If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") =
vbYes Then
End
End If
End Sub
Private Sub cmdlimpiar_Click
ListBox1.Items.Clear()
TextBox1.Text = 0
TextBox2.Text = 0
TextBox1.Focus()
End Sub
End Class

Ejercicio de aplicacin No. 3


Se ingresarn 30 nmeros (asumir que todos son positivos), determinar cuantos fueron
pares y cuantos fueron impares.

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Ingresar 30 nmeros y mostrar cuantos fueron pares e impares.
ii. Qu datos necesito conocer?
Cada uno de los nmeros a evaluar.

2. Planteamiento Lgico.
A medida que se van ingresando los nmeros se debern de ir evaluando para que
mediante contadores a travs de la condicin correspondiente determinar cuantos
eran pares y cuantos impares.

3. Definicin de variables de entrada.


Se requiere ingresar los nmeros, usaremos la variable N.

4. Definicin de variables de salida.


Las variables de salida sern 2 (para los impares y otra para los pares)

5. Diseo de la Solucin.

Fundamentos de Programacin

Pag. 111

Fundamentos de programacin
5.1 Pseudocdigo
INICIO
Declaracin de variables
N, CI, CP, I: entero
CI = 0
CP = 0
Para I = 1 hasta 30
Escribir(Ingrese el nmero a evaluar:)
Capturar(N)
SI (N mod 2 = 0) entonces
CP = CP + 1
Sino
CI = CI + 1
Fin_si
Fin_Para
Mostrar(El total nmeros pares fue:, CP)
Mostrar(El total nmeros impares fue:, CI)
FIN

5.2 Diagrama de Flujo


INICIO
Declaracin de variables
I, N, CP, CI: entero
CP = 0
CI = 0
Para I=1
Hasta 30
N
N mod 2 = 0

CI = CI + N

CP = CP + N

CP, CI
FIN

Pgina 112

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

5.3 Diseo del Formulario

5.4 Codificacin del Programa


Public Class Form1
Dim i As Byte
Dim ACP As Integer
Dim ACI As Integer
Private Sub CmdLimpiar_Click()
ListBox1.Items.Clear()
TextBox1.Text = 0
TextBox2.Text = 0
' CmdGenera.Focus()
End Sub
Private Sub CmdSalir_Click()
If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then
End
End If
End Sub
Private Sub Button1_Click
ListBox1.Items.Clear()
For i = 1 To 30
ListBox1.Items.Add(Str(Math.Round(Rnd() * 100, 0)))
Next i
End Sub
Private
Dim
ACP
ACI
For

Sub Button2_Click
i As Integer
= 0
= 0
i = 1 To 30
If Val(ListBox1.Items(i - 1)) Mod 2 = 0 Then
ACP = ACP + Val(ListBox1.Items(i - 1))
Else
ACI = ACI + Val(ListBox1.Items(i - 1))
End If
Next i
TextBox1.Text = ACP
TextBox2.Text = ACI
End Sub
End Class

Fundamentos de Programacin

Pag. 113

Fundamentos de programacin

Ejercicio de aplicacin No. 3


Disear un algoritmo que permita ingresar 100 nmeros y que permita mostrar al final
cuantos de los nmeros ingresados fueron positivos, cuantos fueron negativos y cuantos
fueron cero, adems se deber mostrar las suma de ellos en cada caso.

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Hallar la suma y cuantos de los 100 nmeros a ingresar fueron negativos,
positivos y cero.
ii. Qu datos necesito conocer?
Cada de uno de los 100 nmeros a evaluar.

2. Planteamiento Lgico.
Se ingresaran los 100 nmeros en un bucle, luego se debern realizar las preguntas
respectivas (>0, <0 y =0) para finalmente ir contando y acumulando los valores;
deber tener en cuenta que los ceros no se podrn ir acumulando no tiene otro valor
mas que cero pero si se puede saber cuantos fueron.

3. Definicin de variables de entrada.


Se requiere ingresar los nmeros, usaremos la variable NM.

4. Definicin de variables de salida.


Las variables de salida son varias: SP(suma de positivos), CP(contador de
positivos); SN(suma de negativos), CN(contador de negativos) y CC(contador de
ceros).

5. Diseo de la Solucin.
5.1 Pseudocdigo
INICIO
Declaracin de variables
SP, SN, CP, CN, CC, NM, I: entero
CN = 0: CP = 0: CC = 0: SP = 0: SN = 0
Para I = 1 hasta 100
Escribir(Ingrese el nmero a evaluar:)
Capturar(NM)
SI (NM > 0) entonces
CP = CP + 1
SP = SP + NM
Sino SI (NM = 0) entonces
CC = CC + 1
Sino
CN = CN + 1
SN = SN + NM
Fin_si
Pgina 114

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

Fin_si
Fin_Para
Mostrar(La cantidad de positivos es:, CP),
Mostrar(La cantidad de ceros es:, CC)
Mostrar(La cantidad de negativos es:, CN)
Mostrar(La suma de positivos es:, SP)
Mostrar(La suma de negativos es:, SN)
FIN

5.2 Diagrama de Flujo


INICIO
Declaracin de variables
SP, SN, CP, CN, CC, NM,I: entero

CP = 0; CC = 0;
CN = 0; SP = 0;
SN = 0
Para I=1
Hasta 30
NM
NM > 0

CP = CP + 1
SP = SP + N

N=0
CI = CI + 1
SI = SI + N

CC = CC + 1

CP, CC, CI, SP, SN

FIN

Fundamentos de Programacin

Pag. 115

Fundamentos de programacin
5.3 Diseo del Formulario

5.4 Codificacin del Programa


Public Class Form1
Dim i As Byte
Dim CP As Integer
Dim CN As Integer
Dim CC As Integer
Dim SP As Integer
Dim SN As Integer
Private Sub cmdgenera_Click
ListBox1.Items.Clear()
For i = 1 To 100
If (Rnd() * 50 > i) Then
ListBox1.Items.Add(Str(Math.Round(Rnd() * 100, 0)))
Else
ListBox1.Items.Add(Str(-Math.Round(Rnd() * 100, 0)))
End If
Next i
End Sub
Private Sub cmdprocesa_Click
Dim i As Integer
'ListBox1.Items.Clear()
CN = 0: CP = 0: CC = 0: SP = 0: SN = 0
For i = 1 To 30
If (Val(ListBox1.Items(i - 1)) > 0) Then
CP = CP + 1
SP = SP + Val(ListBox1.Items(i - 1))
Else
If (Val(ListBox1.Items(i - 1)) = 0) Then
CC = CC + 1
Else
CN = CN + 1
SN = SN + Val(ListBox1.Items(i - 1))
End If
End If
Next i
TextBox1.Text = CP
TextBox2.Text = CC
TextBox3.Text = CN
TextBox4.Text = SP
TextBox5.Text = SN
End Sub
Private Sub cmdnuevo_Click

Pgina 116

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

ListBox1.Items.Clear()
TextBox1.Text = 0
TextBox2.Text = 0
TextBox3.Text = 0
TextBox4.Text = 0
TextBox5.Text = 0
cmdgenera.Focus()
End Sub
Private Sub cmdsalir_Click

If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then

End
End If
End Sub
End Class

Ejercicio de aplicacin No. 4


Desarrolle un algoritmo que muestre los mltiplos de cada uno de los 50 nmeros que
se ingresaran por teclado.

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Mostrar los mltiplos de un nmero.
ii. Qu datos necesito conocer?
El nmero a evaluar.

2. Planteamiento Lgico.
Para determinar los mltiplos de un nmero, deber de dividirse el nmero entre
todos sus antecesores positivos incluyndose el mismo y si la divisin devuelve
resto igual a cero entonces se definir como mltiplo del nmero dividido. Para
lograr esto se deber utilizar dos bucles, uno para los 50 nmeros y otro para
realizar las divisiones.

3. Definicin de variables de entrada.


Se requiere ingresar el nmero, usaremos la variable N.

4. Definicin de variables de salida.


Los mltiplos estarn representados por la variable que controla el bucle (J) de las
divisiones.

5. Diseo de la Solucin.
5.1 Pseudocdigo
INICIO
Declaracin de variables
I, J, N: entero
Fundamentos de Programacin

Pag. 117

Fundamentos de programacin
Para I = 1 hasta 50
Escribir(Ingrese el nmero a evaluar:)
Capturar(N)
Para J = 1 hasta N
SI (N mod J = 0) entonces
Mostrar(es mltiplo del nmero:, J)
Fin_si
Fin_Para
Fin_Para
FIN

5.2 Diagrama de Flujo


INICIO
Declaracin de variables
N, I, J: entero

Para I=1
Hasta 50
N
Para J=1
Hasta N

N mod J= 0
J

FIN

Pgina 118

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

5.3 Diseo del Formulario

5.4 Codificacin del Programa


Public Class Form1
REM Dim i As Byte
REM Dim j As Byte
Dim c As Byte
Dim NUM As Byte
Private Sub cmdgenera_Click
Dim i As Integer
ListBox1.Items.Clear()
For i = 0 To 3

ListBox1.Items.Add(Str(CInt(Math.Round(Rnd() * 50, 0))))

Next i
End Sub

Private Sub cmdprocesa_Click


dg.RowCount = 2
For i = 0 To 3
dg.Item(i, 0).Value = Val(ListBox1.Items(i))
Next i
For i =
NUM
c =
For

0 To 3
= Val(ListBox1.Items(i))
0
j = 1 To NUM - 1
If (NUM Mod j = 0) Then
dg.RowCount = dg.RowCount + 1
c = c + 1
dg.Item(i, c).Value = j

Fundamentos de Programacin

Pag. 119

Fundamentos de programacin
End If
Next j
Next i
End Sub
Private Sub cmdsalir_Click

If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then

End
End If
End Sub

Private Sub cmdnuevo_Click


ListBox1.Items.Clear()
dg.RowCount = 0
cmdgenera.Focus()
End Sub
End Class

2. Sentencia HACER MIENTRAS


Esta sentencia repetitiva evala una condicin al inicio del bucle, si esta es
verdadera se ejecutaran una serie de acciones, las cuales seguirn realizndose hasta
que la condicin se convierta en falsa, momento en el que se dejaran de evaluar las
acciones y se proceder a continuar con la siguiente lnea de sentencias fuera del
bucle.
Diagrama de Flujo

?
V

Acciones

Pseudocodigo
Hacer Mientras (Condicin?)
Acciones
Fin_Mientras

Pgina 120

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

Ejercicio de aplicacin No. 1


Desarrolle un algoritmo que permita observar la suma de los n primeros nmeros de la
siguiente sucesin: (nmero impares)
S = 1 + 3 + 5 + 7 +...

Solucin:
1. Anlisis.
i. Qu te piden que realices?
La suma de los n primeros nmeros impares.
ii. Qu datos necesito conocer?
Cuantos nmeros sumar.

2. Planteamiento Lgico.
Primero deberemos ingresar o saber cuantos nmeros vamos a sumar, luego dentro
del bucle se deber realizar lo siguiente: controlar el bucle, generar el nmero de
manera tal que se pueda ir acumulando para obtener la suma final.

3. Definicin de variables de entrada.


Se requiere ingresar la cantidad de nmeros a sumar, usaremos la variable N.

4. Definicin de variables de salida.


La suma total de los nmeros ingresados se obtendr en la variable SN.

5. Diseo de la Solucin.
5.1Pseudocodigo
INICIO
Declaracin de variables
N, SN, CN, NUM: entero
CN = 0
SN = 0
NUM = -1
Escribir(Ingrese la cantidad de nmeros a sumar:)
Capturar(N)
Hacer Mientras (CN < N)
CN = CN + 1
NUM = NUM + 2
SN = SN + NUM
Fin_Mientras
Mostrar(La suma de los nmeros es:, SN)
FIN

Fundamentos de Programacin

Pag. 121

Fundamentos de programacin
5.2 Diagrama de Flujo

INICIO
Declaracin de variables
N, SN, CN, NUM: entero

N
CN = 0; SN = 0; NUM = -1
F
CN<N

V
CN = CN + 1
NUM = NUM + 2
SN = SN + NUM

SN

FIN

5.3 Diseo del Formulario

5.4 Codificacin del Programa


Public Class Form1
Dim NUM As Integer
Dim c As Byte
Dim AC As Integer
Private Sub Button1_Click
ListBox1.Items.Clear()
c=0
NUM = -1
AC = 0
Do While (c < Val(TextBox1.Text))
c=c+1
NUM = NUM + 2

Pgina 122

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

ListBox1.Items.Add(Str(NUM))
AC = AC + NUM
Loop
TextBox2.Text = AC
End Sub
Private Sub Button3_Click

If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then

End
End If
End Sub

Private Sub Button4_Click


ListBox1.Items.Clear()
TextBox1.Text = 0
TextBox2.Text = 0
TextBox1.Focus()
End Sub
End Class

Ejercicio de aplicacin No. 2


Realizar un algoritmo que permita que permita leer los datos de 100 alumnos
(Num_Seccin y Sexo), luego calcule y muestre:
Total de varones por cada seccin, Total de mujeres por cada seccin.
Total general de varones, Total general de mujeres.
Se sabe que solo existen 2 secciones: 1, 2 y 3
Para el sexo: H = varones y M = mujeres

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Calcular y mostrar una serie de totales (ver enunciado del problema).
ii. Qu datos necesito conocer?
El nmero de seccin y el sexo del alumno.

2. Planteamiento Lgico.
Se deber ingresar la seccin y el sexo de cada alumno para realizar las preguntas
correspondientes e ir contando el nmero de alumnos por seccin teniendo en cuenta
el sexo de estos.

3. Definicin de variables de entrada.


La seccin se captura en la variable SC y el sexo en la variable SX.

4. Definicin de variables de salida.


Para el total de varones por seccin: TVS(1, 2, 3), para el total de mujeres por
seccin: TMS(1, 2, 3), para el total general de varones: TGV y para el total general
de mujeres: TGM.
Fundamentos de Programacin

Pag. 123

Fundamentos de programacin
5. Diseo de la Solucin.
5.1 Pseudocodigo
INICIO
Declaracin de variables
SC, TVS1, TVS2, TVS3, TMS1, TMS2, TMS3, TGV, TGM, CN: entero
SX: caracter
TVS1 = 0: TVS2 = 0: TVS3 = 0: TMS1 = 0: TMS2 = 0: TMS3 = 0: TGV = 0
TGM = 0: CN = 0
Hacer Mientras (CN < 100)
CN = CN + 1
Escribir(Ingrese la seccin del alumno:)
Capturar(SC)
Escribir(Ingrese el sexo del alumno:)
Capturar(SX)
SI (SC = 1) entonces
SI (SX = H) entonces
TVS1 = TVS1 + 1
Sino
TMS1 = TMS1 + 1
Fin_si
Sino
SI (SC = 2) entonces
SI (SX = H) entonces
TVS2 = TVS2 + 1
Sino
TMS2 = TMS2 + 1
Fin_si
Sino
SI (SX = H) entonces
TVS3 = TVS3 + 1
Sino
TMS3 = TMS3 + 1
Fin_si
Fin_si
Fin_si
Fin_Mientras
TGV = TVS1 + TVS2 + TVS3
TGM = TMS1 + TMS2 + TMS3
Mostrar(El total de varones en la seccin 1 es:, TVS1)
Mostrar(El total de varones en la seccin 2 es:, TVS2)
Mostrar(El total de varones en la seccin 3 es:, TVS3)
Mostrar(El total de mujeres en la seccin 1 es:, TMS1)
Mostrar(El total de mujeres en la seccin 2 es:, TMS2)
Mostrar(El total de mujeres en la seccin 3 es:, TMS3)
Mostrar(El total general de varones es:, TGV)
Mostrar(El total general de mujeres es:, TGM)
FIN

Pgina 124

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

5.2 Diagrama de Flujo


INICIO
Declaracin de variables
SC, TVS1, TVS2, TVS3, TMS1, TMS2,
TMS3, TGV, TGM, CN: entero
SX: caracter
TVS1 = 0; TVS2 = 0; TVS3 = 0
TMS1 = 0; TMS2 = 0; TMS3 = 0
TGV = 0; TGM = 0; CN = 0
F
CN<100

TGV = TVS1 + TVS2 + TVS3


TGM = TMS1 + TMS2 + TMS3

CN = CN + 1
TVS1,TVS2,TVS3
TMS1,TMS2,TMS3
TGV,TGM

SC, SX

FIN
SC = 1

SX=H

SC = 2
TMS1 = TMS1 + 1

TVS1 = TVS1 + 1

SX=H

TMS2 = TMS2 + 1

TVS2 = TVS2 + 1

SX=H

TMS3 = TMS3 + 1

TVS3 = TVS3 + 1

Fundamentos de Programacin

Pag. 125

Fundamentos de programacin
5.3 Diseo del Formulario

5.4 Codificacin del Programa


Public Class Form2
Dim CN As Byte
Dim i As Byte
Dim TVS1 As Byte
Dim TVS2 As Byte
Dim TVS3 As Byte
Dim TMS1 As Byte
Dim TMS2 As Byte
Dim TMS3 As Byte
Dim TGV As Byte
Dim TGM As Byte
Private Sub CmdSalir_Click()

If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then

End
End If
End Sub

Private Sub cmdgenerar_Click


ListBox1.Items.Clear()
ListBox2.Items.Clear()
For i = 1 To 100
ListBox1.Items.Add(Str(Math.Round(Rnd() * 2 + 1, 0)))
If (Math.Round(Rnd() * 1 + 1, 0) = 1) Then
ListBox2.Items.Add("H")
Else
ListBox2.Items.Add("F")
End If
Next i
End Sub
Private Sub cmdnuevo_Click
ListBox1.Items.Clear()
ListBox2.Items.Clear()
TextBox1.Text = 0 : TextBox2.Text = 0 : TextBox3.Text = 0 :
TextBox4.Text = 0 : TextBox5.Text = 0 : TextBox6.Text = 0 :
TextBox7.Text = 0 : TextBox8.Text = 0
End Sub
Private Sub cmdprocesar_Click
Dim sc, sx As String

Pgina 126

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

TVS1 = 0 : TVS2 = 0
TVS3 = 0 : TMS1 = 0
TMS2 = 0 : TMS3 = 0
TGV = 0 : TGM = 0 : CN = 0
Do While (CN < 100)
CN = CN + 1
SC = Trim(ListBox1.Items(CN - 1))
SX = Trim(ListBox2.Items(CN - 1))
If (SC = "1") Then
If (SX = "H") Then
TVS1 = TVS1 + 1
Else
TMS1 = TMS1 + 1
End If
Else
If (SC = "2") Then
If (SX = "H") Then
TVS2 = TVS2 + 1
Else
TMS2 = TMS2 + 1
End If
Else
If (SX = "H") Then
TVS3 = TVS3 + 1
Else
TMS3 = TMS3 + 1
End If
End If
End If
Loop
TGV = TVS1 + TVS2 + TVS3
TGM = TMS1 + TMS2 + TMS3
TextBox1.Text = TVS1 : TextBox2.Text = TVS2
TextBox3.Text = TVS3 : TextBox4.Text = TMS1
TextBox5.Text = TMS2 : TextBox6.Text = TMS3
TextBox7.Text = TGV : TextBox8.Text = TGM
End Sub
End Class

Ejercicio de aplicacin No. 2


La seorita Vernica tiene un problema: le han pedido que desarrolle un algoritmo que
sirva para poder calcular el ingreso total diariamente por los pasajes que se pagan en un
bus, si se sabe que el pasaje de los adultos es de 2 soles, de los universitarios es 1 sol y
los nios no pagan. Se calcula que en promedio diariamente viajan 500 personas.

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Hallar el ingreso diario por concepto de pasajes en un bus.
ii. Qu datos necesito conocer?

Fundamentos de Programacin

Pag. 127

Fundamentos de programacin
Los tipos de persona que suben al carro diariamente, ya que en base a esto se sabe
que pasaje cobrar.

2. Planteamiento Lgico.
Se deber ingresar el tipo de pasajero que sube al bus para ir contabilizando los
pasajes.

3. Definicin de variables de entrada.


El tipo de pasajero estar representado por la variable TP.

4. Definicin de variables de salida.


El total diario estar representado por la variable TD.

5. Diseo de la Solucin.
5.1 Pseudocdigo
INICIO
Declaracin de variables
TD, I, CN: entero
TP: cadena
TD = 0
CN = 0
Hacer Mientras (CN < 500)
CN = CN + 1
Escribir(Ingrese el tipo de pasajero:)
Capturar(TP)
SI (TP = Adulto) entonces
TD = TD + 2
Sino
SI (TP = Universitario) entonces
TD = TD + 1
Fin_si
Fin_si
Fin_Mientras
Mostrar(El total diario por concepto de pasajes es:, TD)
FIN

Pgina 128

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

5.2 Diagrama de Flujo


INICIO
Declaracin de variables
TD, I, CN: entero
TP: cadena
TD = 0; CN = 0
F
CN<500

V
CN = CN + 1

TD

TP

FIN

TP = Adulto

TD = TD + 2

TP = Universitario

TD = TD + 1

5.3 Diseo del Formulario

Fundamentos de Programacin

Pag. 129

Fundamentos de programacin
5.4 Codificacin del Programa
Public Class Form1
Dim CN As Integer
Dim TD As Integer
Dim i As Integer
Private Sub cmdnuevo_Click
ListBox1.Items.Clear()
TextBox1.Text = 0
End Sub
Private Sub cmdsalir_Click

If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then

End
End If
End Sub

Private Sub Button1_Click


Dim x, i As Integer
ListBox1.Items.Clear()
For i = 1 To 500
x = CInt(Math.Round(Rnd() * 1 + 1))
If x = 1 Then
ListBox1.Items.Add("Adulto")
Else
ListBox1.Items.Add("Universitario")
End If
Next i
End Sub
Private Sub cmdprocesa_Click
CN = 0
TD = 0
Do While (CN < 500)
If ListBox1.Items(CN) = "Adulto" Then
TD = TD + 2
Else
TD = TD + 1
End If
CN = CN + 1
Loop
TextBox1.Text = TD
End Sub
End Class

3. Sentencia HACER HASTA


Esta sentencia repetitiva se caracteriza por ejecutar una serie de acciones antes de
realizar la evaluacin de una expresin lgica, si esta evaluacin resulta falsa se
continua con el proceso de evaluar el bucle hasta que la condicin se haga
verdadera momento en el cual se continuara con el programa principal.
En esta estructura, se ingresar al bucle por lo menos una vez, no siendo posible
esto en las otras estructuras estudiadas.

Pgina 130

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

Diagrama de Flujo

Acciones

?
V

Pseudocdigo
Hacer
Acciones
Hasta que (Condicin?)

Ejercicio de aplicacin No. 1


Desarrollar un algoritmo que permita el ingresar 20 nmeros, luego muestre la tabla de
multiplicar (del 1 al 12) de cada uno de los nmeros ingresados.

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Mostrar la tabla de multiplicar para cada uno de los 10 nmeros a ingresar.
ii. Qu datos necesito conocer?
Los nmeros.

2. Planteamiento Lgico.
A medida que se ingresan cada uno de los nmeros se debern evaluar para ir
mostrando la tabla de multiplicar.

3. Definicin de variables de entrada.


La variable para la captura de los nmeros ser N.
Fundamentos de Programacin

Pag. 131

Fundamentos de programacin
INICIO

4. Definicin de variables de salida.


Los resultados de la tabla de multiplicar se vera en NM.

5. Diseo de la Solucin.

Declaracin de variables
CN, N, NM, I: entero

5.1Pseudocdigo

CN = 0

INICIO
Declaracin de variables
CN, N, NM, I: entero
CN = 0
Hacer
Escribir(Ingrese el nmero a evaluar:)
Capturar(N)
Para I = 1 hasta 12
NM = N * I
Mostrar(tabla de multiplicar:, NM)
Fin_Para
CN = CN + 1
Hasta que (CN = 20)
FIN

N
Para I=1
Hasta 12
NM = N * I
NM
CN = CN + 1
CN=20
F
V
FIN

5.3 Diseo del Formulario

5.4 Codificacin del Programa


Public Class Form2
Dim CN As Byte
Dim NM As Integer
Dim i As Byte

Pgina 132

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

Private Sub cmdgenerar_Click


ListBox1.Items.Clear()
CN = 0
Do
ListBox1.Items.Add(Str(Math.Round(Rnd() * 100, 0)))
CN = CN + 1
Loop Until CN = 5
End Sub
Private Sub cmdprocesar_Click
Dim i As Integer
CN = 0
Do
For i = 1 To 4
NM = Val(ListBox1.Items(CN)) * i
DataGridView1.Item(CN, i).Value = NM
Next i
CN = CN + 1
Loop Until CN = 5
End Sub
Private Sub Button3_Click
ListBox1.Items.Clear()
DataGridView1.RowCount = 13
End Sub
Private Sub Button4_Click

If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then

End
End If
End Sub

Private Sub Form2_Load


ListBox1.Items.Clear()
DataGridView1.RowCount = 13
End Sub
End Class

Ejercicio de aplicacin No. 2


Desarrollar un algoritmo que permita ingresar 50 nmeros enteros diferentes de cero,
luego muestre cuantos de estos nmeros fueron pares y cuantos fueron impares.

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Averiguar cuantos de los 50 nmeros que se ingresarn fueron pares y cuantos
impares.
ii. Qu datos necesito conocer?
Los 50 nmeros.
Fundamentos de Programacin

Pag. 133

Fundamentos de programacin
2. Planteamiento Lgico.
Inicialmente se deber validar el ingreso de los nmeros porque dice que
tendrn que ser enteros diferentes de cero, luego mediante una pregunta
simple ir contando cuales son pares e impares.

3. Definicin de variables de entrada.


La variable en donde se ingresar el nmero es N.

4. Definicin de variables de salida.


Los nmeros pares sern almacenados en NP y los impares en NI.

5. Diseo de la Solucin.
5.1 Pseudocdigo

5.2 Diagrama de Flujo


INICIO

INICIO
Declaracin de variables
N, NP, NI, I: entero
NP = 0
NI = 0
Para I = 1 hasta 50
Hacer
Escribir(Ingrese el
nmero a evaluar:)
Capturar(N)
Hasta que (N <> 0)
Si (N mod 2 = 0) entonces
NP = NP + 1
Sino
NI = NI + 1
Fin_Si
Fin_Para
FIN

Declaracin de variables
N, NP, NI, I: entero

NP=0, NI=0
Para I=1
Hasta 50

N
V

N<>0
F
Nmod2=0
NP = NP + 1

NI = NI + 1

NP, NI
FIN

Pgina 134

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

5.3 Diseo del Formulario

5.4 Codificacin del Programa


Public Class Form1
Dim i As Byte
Dim x As Byte
Dim NP As Byte
Dim NI As Byte

Private Sub cmdgenerar_Click


Dim i As Integer
ListBox1.Items.Clear()
For i = 1 To 50
Do
x = Math.Round(Rnd() * 100, 0)
Loop Until (x <> 0)
ListBox1.Items.Add(Str(x))
Next i
End Sub
Private Sub cmdnuevo_Click
ListBox1.Items.Clear()
TextBox1.Text = 0
TextBox2.Text = 0
End Sub
Private Sub cmdprocesar_Click cmdprocesar.Click
Dim i As Integer
NP = 0
NI = 0
For i = 1 To 50
If (ListBox1.Items(i - 1) Mod 2 = 0) Then
NP = NP + 1
Else
NI = NI + 1
End If
Next i
TextBox1.Text = NP
TextBox2.Text = NI
End Sub
Private Sub cmdsalir_Click

If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then

End
End If
End Sub
End Class

Fundamentos de Programacin

Pag. 135

Fundamentos de programacin

Ejercicio de aplicacin No. 3


Disear un algoritmo que permita ingresar 100 nmeros positivos, luego determinar
cuantos de estos nmeros fueron de 1, 2 y 3 cifras.

Solucin:
1. Anlisis.
i. Qu te piden que realices?
Averiguar cuantos de los 100 nmeros que se ingresarn fueron de 1 , 2 y 3
cifras.
ii. Qu datos necesito conocer?
Los 100 nmeros.

2. Planteamiento Lgico.
Deber validar el ingreso de cada uno de los nmeros, ya que estos deben ser
positivos, luego habr que preguntar por los rangos iniciales y finales de modo que se
pueda saber cuantos fueron de 1, 2 y 3 cifras.
Ej:
Si (N >= 1) and (N <= 9) entonces................. rango de 1 a 9

3. Definicin de variables de entrada.


La variable en donde se ingresar el nmero es N.

4. Definicin de variables de salida.


Los contadores para cada grupo son: 1C para una cifra, 2C para dos cifras y 3C para
tres cifras.

5. Diseo de la Solucin.
5.1 Pseudocodigo
INICIO
Declaracin de variables
N, 1C, 2C, 3C, I: entero
1C = 0
2C = 0
3C = 0
Para I = 1 hasta 100
Hacer
Escribir(Ingrese el nmero a evaluar:)
Capturar(N)
Hasta que (N > 0)
Si (N >= 1 and N <= 9) entonces
1C = 1C + 1
Sino
Si (N >= 10 and N <= 99) entonces
Pgina 136

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

2C = 2C + 1

INICIO

Sino
Si (N >= 100 and N <= 999) entonces
3C = 3C + 1
Sino
Mostrar(No es un nmeros de 1, 2 o 3 cifras)
Fin_Si
Fin_Si
Fin_Si
Fin_Para
Mostrar(De 1 cifra:,1C)
Mostrar(De 2 cifras:,2C)
Mostrar(De 3 cifras:,3C)
FIN

Declaracin de variables
N, 1C, 2C, 3C, I: entero

1C=0; 2C=0; 3C=0


Para I=1
Hasta 100

N
V

N>0
F
N>=1
and
N<=9

5.2 Diagrama de Flujo

N>=10
and
N<=99
N>=100
and
N<=999
No es un
nmeros
de 1, 2 o
3 cifras

1C = 1C + 1

2C = 2C + 1

3C = 3C + 1

1C, 2C, 3C
FIN

Fundamentos de Programacin

Pag. 137

Fundamentos de programacin
5.3 Diseo del Formulario

Codificacin del Programa

Public Class Form2


Dim N As Integer
Dim i As Byte
Dim C1 As Byte
Dim C2 As Byte
Dim C3 As Byte
Dim C4 As Byte

Private Sub cmdgenerar_Click


Dim CN As Integer
Dim i As Integer
ListBox1.Items.Clear()
CN = 0
For i = 1 To 100
Do
N = Math.Round(Rnd() * 1000, 0)
Loop Until (N > 0)
ListBox1.Items.Add(N)
Next i
End Sub
Private Sub cmdnuevo_Click
ListBox1.Items.Clear()
TextBox1.Text = 0
TextBox2.Text = 0
TextBox3.Text = 0
TextBox4.Text = 0
End Sub
Private Sub cmdprocesar_Click
Dim i As Integer
C1 = 0
C2 = 0
C3 = 0
C4 = 0
For i = 1 To 100
N = ListBox1.Items(i - 1)
If (N >= 1 And N <= 9) Then
C1 = C1 + 1
Else
If (N >= 10 And N <= 99) Then
C2 = C2 + 1
Else
If (N >= 100 And N <= 999) Then

Pgina 138

Estructuracin de algoritmos
Instituto de Educacin Superior Tecnolgico Privado

C3 = C3 + 1
Else
C4 = C4 + 1
End If
End If
End If
Next i
TextBox1.Text = C1
TextBox2.Text = C2
TextBox3.Text = C3
TextBox4.Text = C4
End Sub
Private Sub cmdsalir_Click

If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then

End
End If
End Sub
End Class

Fundamentos de Programacin

Pag. 139

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