Funciones Finales
Funciones Finales
Funciones Finales
ENTREGAR CD
FIN
==============================================================
PROGRAMA: Leer serie de registros c/u con un valor, determinar e imprimir
La cantidad de DIGITOS que tiene c/valor
INICIO
HAGA
A=LEEVLR ()
CD = EJ01T02(A)
IMPRIMIR A, CD
MQ F3 = OFF
FIN
============================================================
PROGRAMA: Leer serie de registros c/u con dos valores diferentes entre sí, determinar
e imprimir
Para C/ registro el mayor de los dos valores leídos
…………………………………………………………………………………………….
INICIO
HAGA
A=LEEVLR ()
B=LEEDFO (A)
MYD = EJ02T02 (A, B)
IMPRIMIR A, B, MYD
MQ F3 = OFF
FIN
EJ02T02( X , Y)
INICIO
SI ( X > Y ) R = X
R=Y
ENTREGAR R
FIN
3) PROGRAMA que lea una serie de registros c/u con tres valores diferentes entre sí, determinar e
imprimir el mayor de los tres valores.
INICIO
HAGA
A=LEEVLR ()
B=LEEDFO (A).
C=LEEDFDV (A, B). recuerde hacer ESTA FUNCIÓN
MY = EJ03T02(A, B, C)
IMPRIMIR MY
MQ F3 = OFF
FIN
……………………………………………………………………………………………..
3) ii
EJ03T02(X, Y, Z) )
INICIO
SI (X >Y) SI ( X > Z ) M=X.
M=Z
SI (Y > Z) M=Y
M=Z
ENTREGAR M
FIN
………………………………………………………………………………………………………
3) iii
EJ03T02(A, B, C)
INICIO
R = EJ02T02(A, B)
R = EJ02T02(R, C)
ENTREGAR R
FIN
4) FUNCIÓN que reciba un valor X y un valor Y, leer y entregar un valor que debe ser
mayor que X ó menor que Y.
EJO4T02(X, Y) 85 15
INICIO
HAGA
Z = LEEVLR() 13
MQ Z ≤ X y Z ≥ Y NOTAR LA DIFERENCIA ENTRE USAR “0” Y USAR “y”
ENTREGAR Z
FIN
5) FUNCIÓN que reciba un valor, entregar:
1 si el valor recibido es < 10,
2 si el valor está entre 10 y 19,
3 si el valor está entre 20 y 29,
4 si el valor está entre 30 y 39,
5 si el valor es mayor que 40 y 49
6.
Solución
EJO5T02(A)
INICIO
SI ( A<10 )R = 1 muy limitado, se necesitarían muchos SI
SI (A ≥10 y A<20 )R = 2
SI (A≥20 Y A<30)R = 3
SI (A≥30 y A<40)R=4
R=5
ENTREGAR R
FIN
ENTREGAR RG
FIN
EJ07T02 ( A ) 100
INICIO
8) PROGRAMA que lea una serie de registros c/u con: 1 valor, determinar e imprimir la
cantidad de valores leídos > 0, la cantidad de valores leídos <0, la cantidad de valores
leídos = 0, el porcentaje de valores leídos > 0, el porcentaje de valores leídos < 0 y el
porcentaje de valores leídos = 0.
INICIO
CP = 0 # Inicia tres contadores, uno por c/ situación y
CN = 0 # y un cuarto de TODOS los registros
CI = 0
TR = 0
HAGA # CICLO PARA LEER TODOS LOS REGISTROS
VL = LEEVLR( ) # LEE UN VALOR CUALQUIERA
TR = TR + 1 # CUENTA TODOS LOS REGISTROS LEÍDOS
SI ( VL > 0 ) CP = CP + 1
SI VL < 0 CN = CN + 1
CI = CI + 1
MQ F3 = OFF
PP = CP/ TR*100
PN = (CN*100) / TR
PI = 100- (PP+PN)
IMPRIMIR PP, PN, PI
FIN
9) PROGRAMA que lea una serie de registros c/u con: 2 valores ≥ 0, determinar e imprimir
por cada registro a cuál de los siguientes rangos pertenece c/u de ellos.
# rango valores
1 < 10
2 entre 10 y 14
3 entre 15 y 24
4 entre 25 y 29
5 entre 30 y 39
6 entre 40 y 44
7 entre 45 y 54
8 entre 55 y ?? que valor ??
Etc
Etc
INICIO
HAGA # CICLO PARA LEER TODOS LOS REGISTROS
VU = LEEMYIO(0) # LEE UN VALOR MAYOR Ó IGUAL A 0
VD = LEEMYIO(0) # LEE UN VALOR MAYOR Ó IGUAL A 0
RVU = EJ09T02(VU) # CON FUNCIÓN EJ09T02 OBTIENE LO SOLICITADO
RVD = EJ09T02(VD)
IMPRIMIR VU, RVU, VD, RVD
MQ F3 = OFF
FIN
EJ09T02(X) 46
INICIO “”CONTADORES””
No aplica el uso de valor absoluto.
RG = 1 2 3 45 6 7
VC = 10 15 25 30 40 45 50
MQ X ≥ VC HAGA # Controla para ubicar X en otro RANGO
SI RG % 2 = 1 VC = VC + 5 # CONDICION para sumar 5 ó 10
VC = VC + 10
RG = RG + 1
ENTREGAR RG
FIN
10) FUNCIÓN que reciba un valor, determinar y entregar la suma de los dígitos del valor
recibido. ACUMULADORES
EJ10T02 ( Z )
INICIO * ACUMULADORES
SD = 0 # ACUMULADOR para SUMAR todos los dígitos,
MQ Z > 0 HAGA # verifica que el número tenga DIGITOS
UD = Z % 10 # obtener ULTIMO DÍGITO de un número
SD = SD + UD # acumula SUMANDO cada dígito
Z = Z // 10 # obtener resultado ENTERO de la división
ENTREGAR SD
FIN
11) PROGRAMA que lea una serie de registros c/u con un valor, determinar e imprimir la
suma de los valores leídos que tienen menos de 6 dígitos y el promedio de los valores
que tengan 6 ó más dígitos. (326 +5 +894 +89)/4
INICIO
SVMN6 = 0
SVMYI6 = 0
CVMYI6= 0
HAGA # CICLO PARA LEER TODOS LOS REGISTROS
VL = LEEVLR () # LEE UN VALOR CUALQUIERA
CDVL = EJ01T02 (VL) # obtener CANTIDAD de dígitos
SI CDVL < 6 SVMN6 = SVMN6 + VL
SVMYI6 = SVMYI6 + VL
CVMYI6 = CVMYI6 + 1
MQ F3 = OFF
12) PROGRAMA que lea una serie de registros c/u con: 2 valores, determinar e imprimir
por cada registro el cociente del valor que tenga mayor cantidad de dígitos dividido por
el valor que tiene menor cantidad de dígitos. 586 4926
INICIO
HAGA # CICLO PARA LEER TODOS LOS REGISTROS
VLU = LEEVLR () 586
VLD = LEEVLR () 4926
CDVLU = EJ01T02(VLU) 3
CDVLD = EJ01T02(VLD) 4
SI CDVLU < CDVLD COC = VLU / VLD
MQ F3 = OFF
FIN
13) PROGRAMA que lea una serie de registros c/u con: 1 valor, determinar e imprimir en
cuántos registros el valor leído fue mayor al valor leído en el registro anterior.
INICIO
CRMYRA = 0 1
VRA = LEEVLR() 10
HAGA # CICLO PARA LEER TODOS LOS REGISTROS
VL = LEEVLR() # LEE UN VALOR CUALQUIERA
SI VL > VRA CRMYRA = CRMYRA + 1
VRA = VL
MQ F3 = OFF
IMPRIMIR CRMYRA
FIN
14) PROGRAMA que lea una serie de registros c/u con 3 valores: determinar e imprimir por
cada registro: el primer valor aumentado en 8 las veces que sea necesario para ser
superior a 600, el segundo valor aumentado en 6 las veces que sea necesario para ser
superior a 700, el tercer valor aumentado en 7 las veces que sea necesario para ser
superior a 600. Para cada valor determinar e imprimir también las veces que fue
necesario aumentarlo para lograr el objetivo.
INICIO
HAGA # CICLO PARA LEER TODOS LOS REGISTROS
VLU = LEEVLR()
VLD = LEEVLR()
VLT = LEEVLR()
VLUA , VNAU = EJ07aT02(VLU, 8, 600)
VLDA , VNAD = EJ07aT02(VLD, 6, 700)
VLTA, VNAT = EJ07at02(VLT, 7, 600)
IMPRIMIR VLUA, VNAU, VLDA, VNAD, VLTA, VNAT
MQ F3 = OFF
FIN
15) PROGRAMA que lea una serie de registros c/u con: 2 valores, determinar e imprimir por cada
registro el cociente del valor que tenga mayor cantidad de dígitos PARES dividido por el valor que tiene
menos cantidad de dígitos IMPARES.
INICIO
HAGA # CICLO PARA LEER TODOS LOS REGISTROS
VLU = LEEVLR()
VLD = LEEVLR()
CDPVLU, CDIVLU = EJ10aT02(VLU)
CDPVLD, CDIVLD = EJ10aT02(VLD)
SI CDPVLU > CDPVLD NUM = CDPVLU
NUM = CDPVLD
SI CDIVLU > CDIVLD DEN = CDIVLU
DEN = CDIVLD
COC = NUM / DEN
IMPRIMIR COC
MQ F3 = OFF
FIN
INICIO
CDI = EJ10aT02 ( Z ) 0
CDP = 0
MQ Z > 0 HAGA # verifica que el número tenga DIGITOS
UD = Z % 10
SI UD % 2 = 0 CDP = CDP + 1
CDI = CDI + 1
Z = Z // 10
ENTREGAR CDP, CDI
FIN
16) PROGRAMA que lea una serie de registros c/u con: 2 valores, determinar e imprimir
por cada registro: la suma de las partes decimales de ambos valores y el producto de
las partes enteras de ambos valores. Determinar e imprimir en cuántos registros el
primer valor tenía mayor parte decimal que el segundo valor.
INICIO
MYP = 0 456.6 489.2
HAGA # CICLO PARA LEER TODOS LOS REGISTROS
VLU = LEEVLR() 456.6
VLD = LEEVLR() 489.2
PEU = VLU456.6 // 1 = 456
PED = VLD489.2 // 1= 489
PDU = VLU 456.6 – PEU456= 0.6
PDD = VLD 489.2 – PED 489=0.2
SPD = PDU 0.6 + PDD 0.2 = 0.8
PPE = PEU 456 * PED489 = xxxxxxxxxxxxx
SI ( PDU > PDD ) MYP = MYP + 1
MQ F3 = OFF
Imprimir MYP , SPD, PPE
FIN