0% encontró este documento útil (0 votos)
30 vistas29 páginas

Unidad 4

Este documento trata sobre la programación modular mediante procedimientos y funciones. Explica conceptos como módulos, parámetros de entrada y salida, y la diferencia entre procedimientos y funciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas29 páginas

Unidad 4

Este documento trata sobre la programación modular mediante procedimientos y funciones. Explica conceptos como módulos, parámetros de entrada y salida, y la diferencia entre procedimientos y funciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

El futuro pertenece a quienes creen en

la belleza de sus sueños.

Eleanor Roosevelt

Programación modular
Objetivo
Manejar la programación modular mediante los procedimientos y
funciones, aplicando todos los conceptos estudiados
anteriormente.

En esta unidad

 Programación Modular.
 Procedimientos.
 Funciones.
Carrera Profesional de Computación e Informática

Programación Modular
Con el análisis del problema, se determina lo que deberá realizar un algoritmo,
mediante el diseño se determina las diversas maneras en que se podrá realizar la solución
del problema; cuando se diseña el algoritmo se debe tener en cuenta que el desarrollo del
mismo podrá realizarse de manera modular es decir creando subalgoritmos(subprogramas o
módulos) que puedan ser utilizados por otros algoritmos; existen dos maneras para
desarrollar este tipo de subalgoritmos: módulos de tipo procedimientos y módulos de tipo
función.

La programación por módulos descompone un algoritmo de regular tamaño en otros


algoritmos más simples(tareas), cada subalgoritmo(modulo) se trabaja en forma individual
y se codifica independientemente de los otros.

En general la estructura modular, se basa en la descomposición de un problema en


una serie de subproblemas (módulos). Observe el grafico adjunto:

Modulos del
Programa Programa
Principal Sub_Programa 1 Principal

INICIO
.....
.....
FIN

Modulos
Programa Principal Secundarios
INICIO Sub_Programa 2
......
...... INICIO
...... ..... Sub_Prg 3.1
...... .....
...... FIN INICIO
...... .....
.....
......
FIN
FIN

Sub_Programa 3 Sub_Prg 3.2

INICIO INICIO
..... .....
..... .....
FIN FIN

Fundamentos de Programación Pag. 198


Carrera Profesional de Computación e Informática

Módulo.- Está constituido por una o varias instrucciones físicamente contiguas y


lógicamente encadenadas, las cuales se pueden referenciar(invocar) mediante un nombre y
pueden ser llamadas desde diferentes partes de un algoritmo.

Estos pueden ser:

• Un Programa.
• Un Procedimiento
• Una Función

Características de un módulo

Los módulos debe de tener máxima cohesión (internamente todas las sentencias
deberán realizar únicamente una actividad con la finalidad de que los algoritmos que se
crean sean exactos) y el mínimo acoplamiento (los módulos deberán ser lo menos
dependientes de otros módulos, es decir trabajar solos, los parámetros son los únicos
valores que hacen posible la relación entre módulos)

Finalmente los módulos son cajas negras que requieren entradas(datos) para generar
salidas(información).

Caja Negra
Input Output
(módulo)

Para poder crear módulos se debe tener en cuenta lo siguiente:

a) Establecer en diseño cual será el algoritmo principal (programa principal).

b) Crear una jerarquía de módulos, es decir diseñar los algoritmos teniendo en cuenta
que partes de código podrán ejecutarse de manera independiente y podrían ser
usados por otros algoritmos o dentro del mismo algoritmo (creación de los módulos
en diseño).

c) Definir los parámetros que deberán usar los módulos que se han creado, ya que
estos son los únicos que los relacionarán ya sea con el algoritmo principal u otros
módulos.

d) Crear y manejar ciertas normas y reglas para establecer la comunicación entre


módulos, para tener una mejor administración de los mismos.

Fundamentos de Programación Pag. 199


Carrera Profesional de Computación e Informática

Tipos de Variables

a) Variables Locales.- Se conoce de esta manera a aquellas variables se encuentran


declaradas dentro de un modulo y solo serán reconocidas dentro de estos.

b) Variables Globales o públicas.- Estas variables son declaradas dentro del programa
principal y serán reconocidas en todo el programa, incluyendo sus módulos
(subprogramas).

Traspaso de argumentos(parámetros) a través de módulos

Las variables que son pasadas como parámetro a los módulos pueden o no
modifican su valor dependiendo como se las pase ya sea por referencia o por valor.

a) Paso por valor

Las variables pasadas como parámetro a la función o procedimiento no


modifican su valor. Las funciones o procedimientos (módulos) crean sus variables
con los valores pasados como parámetro.

Ejemplo:

Programa Principal

INICIO
......
G=3
Invoca Calculo(4, G*8)
......
......
FIN
Asignaciones Directas

Modulo Calculo (X entero, Y entero )


-------
-------
Fin_Modulo

Los valores que asumen las variables formales X e Y(del módulo), serán 4 y G*8
(variables actuales), estos parámetros no permiten modificación alguna es decir se
consideran únicamente como parámetro de entrada.

Fundamentos de Programación Pag. 200


Carrera Profesional de Computación e Informática

b) Paso por Referencia

Las variables pasadas como parámetro a la función o


procedimiento(módulos) si pueden ser modificadas debido a que se hace referencia
a la misma posición de memoria.

En el paso de parámetros por referencia lo que se pasa en realidad es la


dirección de la variable u objeto, es por esto que el papel del argumento formal es
el de ser una referencia al argumento real; la llamada al método no provoca la
creación de una nueva variable.

De esta forma, las modificaciones que el método pueda realizar sobre estos
argumentos se realizan efectivamente sobre los argumentos actuales. En este caso,
ambos argumentos (formal y actual) se pueden considerar como la misma variable
con dos nombres, uno en el método llamante y otro en el llamado o invocado, pero
hacen referencia a la misma posición de memoria.

Ejemplo:

Programa Principal

INICIO
......
w = 5; k = 6
Invoca Calculo(w, k)
......
...... Los valores y variables
FIN hacen referencia a
posiciones de memoria

5 6

Modulo Calculo (X entero, Y entero )


-------
-------
Fin_Modulo

Tanto los valores que asumen las variables formales X e Y(del módulo) como las
variables w y k (variables actuales), serán 5 y 6 en ese orden, es decir ambos pares
de variables apuntan a los mismos valores(posiciones de memoria) de esa manera
estos parámetros permiten modificaciones es decir se consideran como parámetro
de entrada/salida.

Fundamentos de Programación Pag. 201


Carrera Profesional de Computación e Informática

I. Procedimientos

Un procedimiento es parte de un proyecto que realiza una o más tareas


relacionadas, tiene su propia denominación por medio de la cual se le puede invocar.
El procedimiento puede tener cero, uno o más argumentos (parámetros), también son
conocidos como subprogramas.

La principal característica de los procedimientos es que no devuelven


resultados sobre si mismo, pero si pueden generarlo dentro de su codificación.

Sintaxis :

Procedimiento Nomb_Proc (var1: tp_dato, var2: tp_dato, var3: tp_dato,...)


[Declaraciones locales]
Inicio
___
___
Fin

Donde:

var1, var2, .. son parámetros.


tp_dato representa el tipo de dato de los parámetros.

Estructura en un algoritmo :

INICIO
[Declaraciones locales/globales]
___ Invoca al Procedimiento
___
Nomb_Proc (var1, var2, var3, .....)
___
___
FIN
Procedimiento Nomb_Proc (var1: tp_dato, var2: tp_dato,...)
[Declaraciones locales]
Inicio
___
___
Fin

Cuando se invoca al procedimiento, se utiliza su nombre seguido de los


argumentos separados por comas los valores de los parámetros (argumentos) actuales
se trasladan a los argumentos formales correspondientes, luego se ejecutan las
sentencias incluidas en el procedimiento. Cuando se llega a la sentencia que finaliza
el módulo, la ejecución del algoritmo continuará con la línea que le sigue al
llamamiento del procedimiento.
Fundamentos de Programación Pag. 202
Carrera Profesional de Computación e Informática

Desarrollo de Problemas
a) Problema #1
Diseñar un algoritmo que mediante un procedimiento permita intercambiar los
valores de 2 números que se ingresan.

Solución:

1. Análisis.
i. ¿Qué te piden que realices?
Intercambiar los valores de 2 números.
ii. ¿Qué datos necesito conocer?
Los números que se intercambiaran.

2. Planteamiento Lógico.
Para lograr intercambiar los números se deberá de hacer por medio de una
variable auxiliar, por ejemplo:

X = 5; Y = 7
El intercambio se realizará de la siguiente forma:
AUX = Y
Y=X
X = AUX
Ahora
X = 7; Y = 5

Para este caso se usará procedimientos con traspaso de parámetros por


referencia.

3. Definición de variables de entrada.


Las variable de entrada serán X e Y.
4. Definición de variables de salida.
Las variables de salida serán N y M.
5. Diseño de la Solución.
- Visión Estructurada
Pseudocodigo

INICIO
Declaración de variables
X, Y: entero
Escribir(‘Ingrese el 1er número a intercambiar:’)
Capturar( X)
Escribir(‘Ingrese el 2do número a intercambiar:’)
Capturar( Y)
Procedimiento Inter(X ,Y)
Mostrar(‘los números intercambiados son:’, X, Y)
FIN
Fundamentos de Programación Pag. 203
Carrera Profesional de Computación e Informática

Procedimiento Inter(N: entero, M: entero)


AUX: entero
Inicio
AUX = M
M=N
N = AUX
Fin
Diagrama de Flujo

INICIO

Declaración de variables
X, Y: entero

X, Y

Inter(X, Y)

X, Y

FIN

- Visión Orientada a Objetos

Diseño del Formulario

Fundamentos de Programación Pag. 204


Carrera Profesional de Computación e Informática

Codificación del Programa

Declaración de Variables
Dim X As Integer
Dim Y As Integer

Private Sub Inter(ByRef N As Integer, ByRef M As Integer)


Dim AUX As Integer
AUX = M
M=N
N = AUX En este último tema para la parte
End Sub de codificación en VBasic, se
colocará la consistencia y
Private Sub CmdProcesar_Click() validación de datos así como el uso
If Text1.Text = "" Then GoTo Xe1 de etiquetas, llamadas a
If Text2.Text = "" Then GoTo Xe2 procedimientos, métodos, etc...
X = Val(Text1.Text)
Y = Val(Text2.Text)
Call Inter(X, Y)
Text3 = X
Text4 = Y
Exit Sub
Xe1:
MsgBox "No ingreso el primer número", vbInformation
Text1.SetFocus
Exit Sub
Xe2:
MsgBox "No ingreso el segundo número", vbInformation
Text2.SetFocus
End Sub

Private Sub CmdSalir_Click()


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

Private Sub CmdNuevo_Click()


Call limpiar
Text1.SetFocus
End Sub

Private Sub limpiar()


Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
End Sub

Private Sub Form_Load()


Call limpiar
End Sub

Fundamentos de Programación Pag. 205


Carrera Profesional de Computación e Informática

Private Sub Text1_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case 48 To 57
Case 8
Case 13
SendKeys ("{TAB}")
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text1_Validate(Cancel As Boolean)


If Len(Trim(Text1.Text)) = 0 Then
MsgBox "error, no ingreso el primer número", vbCritical
Text1.SetFocus
Cancel = True
End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case 48 To 57
Case 8
Case 13
SendKeys ("{TAB}")
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text2_Validate(Cancel As Boolean)


If Len(Trim(Text2.Text)) = 0 Then
MsgBox "error, no ingreso el segundo número", vbCritical
Text2.SetFocus
Cancel = True
End If
End Sub

b) Problema #2
Desarrolle un algoritmo que permita ingresar 3 números(asumir que todos son
diferentes), luego a cada uno deberá sumarle 10, 20 y 30 al final mostrar cual de
los números fue el mayor, usar un procedimiento para las sumas.

Solución:

1. Análisis.

i. ¿Qué te piden que realices?

Hallar el mayor de tres números, después de haberles sumado 10, 20


y 30 a cada uno en el orden de ingreso.

Fundamentos de Programación Pag. 206


Carrera Profesional de Computación e Informática

ii. ¿Qué datos necesito conocer?

Los números.

2. Planteamiento Lógico.
La asignación de los valores: 10, 20 y 30 se realizarán mediante un
procedimiento con paso de valores por referencia, para obtener el mayor de
los 3 números usaremos una variable.

3. Definición de variables de entrada.


Se requerirá conocer los números iniciales: N, M y P.
4. Definición de variables de salida.
Se usará la variable MY para expresar el número mayor.
5. Diseño de la Solución.
- Visión Estructurada

Pseudocodigo

INICIO
Declaración de variables
N, M, P, MY: entero
Escribir(‘Ingrese el primer número:’)
Capturar(N)
Escribir(‘Ingrese el segundo número:’)
Capturar(M)
Escribir(‘Ingrese el tercer número:’)
Capturar(P)
Procedimiento Suma(N, M, P)
MY = N
Si (MY < M) entonces
MY = M
Fin_Si
Si (MY < P) entonces
MY = P
Fin_Si
Mostrar(‘El mayor de los 3 números es:’, MY)
FIN

Procedimiento Suma(X1: entero, X2: entero, X3: entero)


Inicio
X1= X1 + 10
X2 = X2 + 20
X3 = X3 + 30
Fin

Fundamentos de Programación Pag. 207


Carrera Profesional de Computación e Informática

Diagrama de Flujo

INICIO

Declaración de variables
N, M, P, MY: entero

N, M, P

Suma(N, M, P)

MY=X1

MY<X2

MY=X2

MY<X3

MY=X3

MY

FIN

- Visión Orientada a Objetos


Diseño del Formulario

Fundamentos de Programación Pag. 208


Carrera Profesional de Computación e Informática

Codificación del Programa


Declaración de Variables
Dim M As Integer
Dim N As Integer
Dim P As Integer
Dim MY As Integer
Private Sub CmdProcesar_Click()
If Text1.Text = "" Then GoTo Xe1
If Text2.Text = "" Then GoTo Xe2
If Text3.Text = "" Then GoTo Xe3
N = Val(Text1.Text)
M = Val(Text2.Text)
P = Val(Text3.Text)
Call Suma(N, M, P)
MY = N
If (MY < M) Then
MY = M
End If
If (MY < P) Then
MY = P
End If
Text4 = MY
Exit Sub
Xe1:
MsgBox "No ingreso el primer número", vbInformation
Text1.SetFocus
Exit Sub
Xe2:
MsgBox "No ingreso el segundo número", vbInformation
Text2.SetFocus
Exit Sub
Xe3:
MsgBox "No ingreso el tercer número", vbInformation
Text3.SetFocus
End Sub
Private Sub CmdSalir_Click()
If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then
End
End If
End Sub
Private Sub CmdNuevo_Click()
Call limpiar
Text1.SetFocus
End Sub

Private Sub limpiar()


Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
End Sub

Fundamentos de Programación Pag. 209


Carrera Profesional de Computación e Informática

Private Sub Form_Load()


Call limpiar
End Sub

Private Sub Suma(ByRef X1 As Integer, ByRef X2 As Integer, X3 As Integer)


X1 = X1 + 10
X2 = X2 + 20
X3 = X3 + 30
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case 48 To 57
Case 8
Case 13
SendKeys ("{TAB}")
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text1_Validate(Cancel As Boolean)


If Len(Trim(Text1.Text)) = 0 Then
MsgBox "error, no ingreso el primer número", vbCritical
Text1.SetFocus
Cancel = True
End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case 48 To 57
Case 8
Case 13
SendKeys ("{TAB}")
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text2_Validate(Cancel As Boolean)


If Len(Trim(Text2.Text)) = 0 Then
MsgBox "error, no ingreso el segundo número", vbCritical
Text2.SetFocus
Cancel = True
End If
End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case 48 To 57
Case 8
Case 13
SendKeys ("{TAB}")

Fundamentos de Programación Pag. 210


Carrera Profesional de Computación e Informática

Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text3_Validate(Cancel As Boolean)


If Len(Trim(Text3.Text)) = 0 Then
MsgBox "error, no ingreso el tercer número", vbCritical
Text3.SetFocus
Cancel = True
End If
End Sub

c) Problema #3
Desarrolle un algoritmo que permita ingresar 2 números(se deberá verificar que
deben ser diferentes), luego mediante un procedimiento extraer el 10% de cada
uno de ellos y mostrar finalmente el menor de dichos números, utilizar
parámetros por valor.

Solución:

1. Análisis.

i. ¿Qué te piden que realices?

Hallar el menor de dos números después de haberles extraído el 10% a


cada uno mediante un procedimiento.

ii. ¿Qué datos necesito conocer?

Los números a evaluar.

2. Planteamiento Lógico.
Mediante el procedimiento se deberá extraer el 10% a los dos números y
finalmente se deberá verificar cual es el menor de estos.

3. Definición de variables de entrada.


Se requerirá conocer los números iniciales: A, B
4. Definición de variables de salida.
No se requieren variables de salida.
5. Diseño de la Solución.

- Visión Estructurada

Pseudocodigo

Fundamentos de Programación Pag. 211


Carrera Profesional de Computación e Informática

INICIO
Declaración de variables
A, B: real
Hacer
Escribir(‘Ingrese el primer número:’)
Capturar(A)
Escribir(‘Ingrese el segundo número:’)
Capturar(B)
Hasta que (A<>B)
Procedimiento Porcentaje(A, B)
FIN
Procedimiento Porcentaje(N: real, M: real)
Inicio
N = 0.1 * N
M = 0.1 * M
Si (M < N) entonces
Mostrar(‘El menor es:’, M)
Sino
Mostrar(‘El menor es:’, N)
Fin_Si
Fin

Diagrama de Flujo

INICIO

Declaración de variables
A, B: real

A, B

A<>B

Porcentaje(A, B)

FIN

Fundamentos de Programación Pag. 212


Carrera Profesional de Computación e Informática

- Visión Orientada a Objetos

Diseño del Formulario

Codificación del Programa

Declaración de Variables
Dim A As Integer
Dim B As Integer

Private Sub CmdProcesar_Click()


If Text1.Text = "" Then GoTo Xe1
If Text2.Text = "" Then GoTo Xe2
A = Val(Text1.Text)
B = Val(Text2.Text)
If (A = B) Then
MsgBox "Los números deben ser diferentes"
Exit Sub
End If
Call Porcentaje(A, B)
'If (A < B) Then
' Text3 = A
'Else
' Text3 = B
'End If
'con el codigo anterior no se mostraria los
'resultados ya que los parámetros son por valor
Exit Sub
Xe1:
MsgBox "No ingreso el primer número", vbInformation
Text1.SetFocus
Exit Sub
Xe2:
MsgBox "No ingreso el segundo número", vbInformation
Text2.SetFocus
End Sub

Fundamentos de Programación Pag. 213


Carrera Profesional de Computación e Informática

Private Sub Porcentaje(ByVal N As Single, ByVal M As Single)


N = 0.1 * N
M = 0.1 * M
If (M < N) Then
Text3 = M
Else
Text3 = N
End If
End Sub

Private Sub CmdSalir_Click()


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

Private Sub CmdNuevo_Click()


Call limpiar
Text1.SetFocus
End Sub

Private Sub limpiar()


Text1 = ""
Text2 = ""
Text3 = ""
End Sub

Private Sub Form_Load()


Call limpiar
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case 48 To 57
Case 8
Case 13
SendKeys ("{TAB}")
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text1_Validate(Cancel As Boolean)


If Len(Trim(Text1.Text)) = 0 Then
MsgBox "error, no ingreso el primer número", vbCritical
Text1.SetFocus
Cancel = True
End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case 48 To 57
Case 8

Fundamentos de Programación Pag. 214


Carrera Profesional de Computación e Informática

Case 13
SendKeys ("{TAB}")
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text2_Validate(Cancel As Boolean)


If Len(Trim(Text2.Text)) = 0 Then
MsgBox "error, no ingreso el segundo número", vbCritical
Text2.SetFocus
Cancel = True
End If
End Sub

II. Funciones
Son módulos diseñados para realizar una tarea específica. Una función toma
una lista de valores llamados argumentos (o parámetros actuales) y devuelve un
único valor sobre si mismo (en el nombre de la función).

Sintaxis :

Función Nomb_Función(Par1:Tipo1, Par2:Tipos2,Par3:Tipo3,....) : Tipo_Dato


Declaraciones [Locales]
Inicio
___
___
Fin

Estructura en un algoritmo :

INICIO
Invoca a la Función
[Declaraciones locales/globales]
___
___
Var = Nomb_Función(var1, var2, var3, .....)
___
___
FIN
Función Nomb_Función(par1:tipo1):Tipo
[Declaraciones locales]
Inicio
___
___
Fin

La llamada a una función debe formar parte de una expresión o sentencia. Para
invocar a una función escriba su nombre y entre paréntesis escriba los argumentos de
la función.
Fundamentos de Programación Pag. 215
Carrera Profesional de Computación e Informática

Generalmente se desea que una función dependa de más de un argumento para


darle mayor flexibilidad a la función. Una función puede tener más de un argumento.
El tipo de dato por cada argumento puede ser diferente.

Desarrollo de Problemas
a) Problema #1
Desarrolle un algoritmo que permita calcular y mostrar el promedio de notas
(examen parcial y final) de 100 alumnos; utilice una función para hallar cada
promedio.

Solución:

1. Análisis.
i. ¿Qué te piden que realices?
Calcular y mostrar el promedio de 100 alumnos (nota de examen
parcial y final).
ii. ¿Qué datos necesito conocer?
Las notas de los exámenes.

2. Planteamiento Lógico.
El desarrollo es simple, lo único que se requiere conocer son las notas de los
exámenes y proceder a calcular mediante una función los promedios.

3. Definición de variables de entrada.


Las variables de entrada serán EP y EF para cada alumno.
4. Definición de variables de salida.
La variable de salida será PR.
5. Diseño de la Solución.

- Visión Estructurada
Pseudocodigo

INICIO
Declaración de variables
EP, EF, i, PR: entero
Para i = 1 hasta 100
Escribir(‘Ingrese la nota de Examen Parcial:’)
Capturar(EP)
Escribir(‘Ingrese la nota de Examen Final:’)
Capturar(EF)
PR = Prom(EP, EF)
Mostrar(‘El promedio es:’, PR)
Fin_Para
FIN

Fundamentos de Programación Pag. 216


Carrera Profesional de Computación e Informática

Función Prom(X: entero ,Y: entero): Real


Inicio
Prom = ( X + Y )/2
Fin
Diagrama de Flujo
INICIO

Declaración de variables
EP, EF, i: entero
PR: real

Para i=1
Hasta 100

EP, EF

PR = Prom(EP, EF)

PR

FIN

- Visión Orientada a Objetos

Diseño del Formulario

Fundamentos de Programación Pag. 217


Carrera Profesional de Computación e Informática

Codificación del Programa

Declaración de Variables
Dim PR As Single
Dim i As Byte

Private Sub CmdCarga_Click()


MSFlexGrid1.Rows = 1
For i = 1 To 100
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
MSFlexGrid1.TextMatrix(i, 0) = Format(Rnd() * 20, 0)
MSFlexGrid1.TextMatrix(i, 1) = Format(Rnd() * 20, 0)
Next i
Command2.Enabled = True
End Sub

Private Sub CmdPromediar_Click()


For i = 1 To 100
PR = Prom(Val(MSFlexGrid1.TextMatrix(i, 0)), Val(MSFlexGrid1.TextMatrix(i, 1)))
MSFlexGrid1.TextMatrix(i, 2) = PR
Next i
End Sub

Private Function Prom(ByVal X As Integer, Y As Integer) As Single


Prom = Round((X + Y) / 2, 2)
End Function

Private Sub CmdSalir_Click()


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

Private Sub CmdNuevo_Click()


MSFlexGrid1.Rows = 1
Command2.Enabled = False
End Sub

b) Problema #2
En un hotel se cobra por el tipo de habitación que se desea ocupar y el número de
días que se quedará el cliente, según la tabla:

Tipo_Habitación Costo
Simple (SP) 15
Con TV (CT) 25
Con Circuito Cerrado (CC) 40

Los costos son por días; adicionalmente el cliente podrá solicitar algunos
servicios:

Fundamentos de Programación Pag. 218


Carrera Profesional de Computación e Informática

Servicio Costo
Desayuno 5
Almuerzo 9
Cena 10

Con los datos anteriores, desarrolle un algoritmo que permita saber cuanto pagará
un cliente si se hospeda en dicho hotel diariamente, teniendo en cuenta el tipo de
habitación y el servicio solicitado, use funciones.

Solución:

1. Análisis.
i. ¿Qué te piden que realices?
Calcular y mostrar el pago que realizará cada cliente que ocupe una
habitación en el hotel.

ii. ¿Qué datos necesito conocer?


El tipo de habitación y el servicio que solicitó.

2. Planteamiento Lógico.
Se deberá ingresar los datos básicos(habitación y servicio) de modo que el
algoritmo por medio de funciones vaya calculando los costos y al final del día
se totalice cuanto deberá pagar el cliente.

3. Definición de variables de entrada.


Se requerirá conocer el tipo de habitación y el servicio.
4. Definición de variables de salida.
El resultado final estará sobre la variable TOT.
5. Diseño de la Solución.

- Visión Estructurada

Pseudocodigo

INICIO
Declaración de variables
TH, SER, MH, MS, TOT: entero
Escribir(‘Ingrese el tipo de habitación:’)
Capturar(TH)
Escribir(‘Ingrese el servicio solicitado:’)
Capturar(SER)
MH = Mhab(TH)
MS = Mser(SER)
TOT = Mh + MS
Mostrar(‘El monto a pagar es:’, TOT)
FIN

Fundamentos de Programación Pag. 219


Carrera Profesional de Computación e Informática

Función Mhab(Hab: cadena): entero


Inicio
Si (Hab = ‘SP’) entonces
Mhab = 15
Sino
Si (Hab = ‘CT’) entonces
Mhab = 25
Sino
Mhab = 40
Fin_Si
Fin_Si
Fin

Función Mser(Srv: cadena): entero


Inicio
Si (Srv = ‘Desayuno’) entonces
Mser = 5
Sino
Si (Srv = ‘Almuerzo’) entonces
Mser = 9
Sino
Mser = 10
Fin_Si
Fin_Si
Fin

Diagrama de Flujo

INICIO

Declaración de variables
entero
TH, SER, MH, MS, TOT:

TH, SER

MH = Mhab(TH)
MS = Mser(SER)
TOT = Mh + MS

TOT

FIN

Fundamentos de Programación Pag. 220


Carrera Profesional de Computación e Informática

- Visión Orientada a Objetos

Diseño del Formulario

Codificación del Programa

Declaración de Variables
Dim Mh As Byte
Dim Ms As Byte
Dim TOT As Byte
Dim TH As String

Private Sub CmdProcesar_Click()


If (List1.ListIndex < 0) Then GoTo Xer1
If List1.ListIndex = 0 Then TH = "SP"
If List1.ListIndex = 1 Then TH = "CT"
If List1.ListIndex = 2 Then TH = "CC"
Mh = Mhab(TH)
Ms = Mser(List2.List(List2.ListIndex))
TOT = Mh + Ms
Text1 = TOT
Exit Sub
Xer1:
MsgBox "No ha escogido una Habitación", vbExclamation
Exit Sub
End Sub

Private Function Mhab(ByVal Hab As String) As Byte


If (Hab = "SP") Then
Mhab = 15
Else
If (Hab = "CT") Then
Mhab = 25
Else
Mhab = 40
End If
End If
End Function
Fundamentos de Programación Pag. 221
Carrera Profesional de Computación e Informática

Private Function Mser(ByVal Srv As String) As Byte


If (Srv = "Desayuno") Then
Mser = 5
Else
If (Srv = "Almuerzo") Then
Mser = 9
Else
If (Srv = "Cena") Then
Mser = 10
End If
End If
End If
End Function

Private Sub CmdSalir_Click()


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

Private Sub CmdNuevo_Click()


List1.ListIndex = -1
List2.ListIndex = -1
Text1 = 0
End Sub

Private Sub Form_Load()


List1.AddItem "Simple"
List1.AddItem "Con TV"
List1.AddItem "Con Circuito Cerrado"
List2.AddItem "Desayuno"
List2.AddItem "Almuerzo"
List2.AddItem "Cena"
End Sub

c) Problema #3
Diseñe una función que permita hallar el valor de la siguiente función (F(x))
matemática, teniendo en cuenta las restricciones.

2X + 3 .... Si X < 0
F(X) 2 ........... Si X = 0
X-5 .......... Si X > 0
Solución:

1. Análisis.

i. ¿Qué te piden que realices?


Hallar el valor de la función F(x), teniendo en cuenta las restricciones.
ii. ¿Qué datos necesito conocer?
El valor de X.
Fundamentos de Programación Pag. 222
Carrera Profesional de Computación e Informática

2. Planteamiento Lógico.
Teniendo en cuenta las restricciones se deberá diseñar la función y empezar a
realizar los cálculos(las restricciones son para los valores de X: <0, =0 y > 0).

3. Definición de variables de entrada.


Se requerirá conocer el valor de X, para evaluarlo.
4. Definición de variables de salida.
No se requieren variables de salida.
5. Diseño de la Solución.
- Visión Estructurada
Pseudocodigo

INICIO
Declaración de variables
X: entero
Escribir(‘Ingrese el valor de X, para hallar F(x):’)
Capturar(X)
Mostrar(‘El valor de F(x) es:’, ValorFX(X))
FIN
Función ValorFX(N: entero): entero
Inicio
Si (N > 0) entonces
ValorFX = N – 5
Sino
Si (N = 0) entonces
ValorFX = 2
Sino
ValorFX = 2 * N + 3
Fin_Si
Fin_Si
Fin
Diagrama de Flujo
INICIO

Declaración de variables
X: entero

El valor de F(x)
es:’, ValorFX(X)

FIN

Fundamentos de Programación Pag. 223


Carrera Profesional de Computación e Informática

- Visión Orientada a Objetos

Diseño del Formulario

Codificación del Programa

Private Sub CmdProcesar_Click()


If Text1.Text = "" Then GoTo Xe1
If Val(Text1.Text) < 0 Then
Text2 = ValorFX(Val(Text1.Text))
Text3 = ""
Text4 = ""
Else
If Val(Text1.Text) = 0 Then
Text3 = ValorFX(Val(Text1.Text))
Text2 = ""
Text4 = ""
Else
Text4 = ValorFX(Val(Text1.Text))
Text2 = ""
Text3 = ""
End If
End If
Exit Sub
Xe1:
MsgBox "No ingreso el primer número", vbInformation
Text1.SetFocus
Exit Sub
End Sub

Private Function ValorFX(ByVal N As Integer) As Integer


If (N > 0) Then
ValorFX = N - 5
Else
If (N = 0) Then
Fundamentos de Programación Pag. 224
Carrera Profesional de Computación e Informática

ValorFX = 2
Else
ValorFX = 2 * N + 3
End If
End If
End Function

Private Sub CmdSalir_Click()


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

Private Sub CmdNuevo_Click()


Call limpiar
Text1.SetFocus
End Sub

Private Sub limpiar()


Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
End Sub

Private Sub Form_Load()


Call limpiar
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case 48 To 57
Case 8, 45
Case 13
SendKeys ("{TAB}")
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text1_Validate(Cancel As Boolean)


If Len(Trim(Text1.Text)) = 0 Then
MsgBox "error, no ingreso el valor de X", vbCritical
Text1.SetFocus
Cancel = True
End If
End Sub

Fundamentos de Programación Pag. 225

También podría gustarte