Funciones Finales

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

TALLER 02 A

1) FUNCIÓN que reciba un valor.


Entregar un 1 si el valor es de un solo dígito, un 2 si es de dos dígitos, un 3 si es de tres
dígitos, un 4, un 5, un 6, un 7 …………………………..
EJ01T02(X )
INICIO “”CONTADORES””
A = ABS (X) Notar la importancia de usar valor absoluto
CD = 1 # Contador de las veces que entra al CICLO
VC = 10 100 1000
MQ A ≥ VC HAGA # CICLO PARA GENERAR 10 100 1000 10000
VC = VC * 10
CD = CD + 1

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

LEEDFO(H) # LEE UN VALOR DIFERENTE DE OTRO


INICIO
HAGA
R = LEEVLR()
MQ R = H # EN MQ SE COLOCA LO QUE NO PUEDE SER
ENTREGAR R
FIN

LEEDFDV(P, Q) LEE UN VALOR DIFERENTE DE OTROS DOS


INICIO
HAGA
Z = LEEVLR()
MQ Z = P o Z = Q NOTAR LA DIFERENCIA ENTRE USAR “o” Y USAR “y”
ENTREGAR Z
FIN
3) i EJ03T02(A, B, C)
INICIO
SI ( A > B y A > C )  RS = A
 SI (B > C )  RS = B
 RS = C
ENTREGAR RS
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

En la siguiente implementación se muestra con el USO adecuado de CICLOS como se


puede implementar para cualquier cantidad de rangos
EJ05T02(X) 20
INICIO “”CONTADORES””
No aplica el uso de valor absoluto.
RG = 1 2 3 # Contador de las veces que entra al CICLO
VC = 10 20 30
MQ X 20 ≥ VC HAGA # Controla para ubicar X en otro RANGO
VC = VC + 10 # Genera 10 20 30 40 50 ..
RG = RG +1

ENTREGAR RG
FIN

6) FUNCIÓN que reciba un valor ENTERO, entregar el valor redondeado a la decena


más próxima Ejemplo recibe 24, entrega 20. Recibe 327 entrega 330.
Solución 1234 EJ06T02(A) 5 6 7 8 9 10 22
INICIO
UD = A % 9 # Obtener ULTIMO dígito del número
AR = A - UD # llevar el número a la decena anterior
SI UD ≥ 5  AR = AR + 10 # si último dígito > 4 lo pasa decena sgte
ENTREGAR AR
FIN
7) FUNCIÓN que reciba un valor, obtener un nuevo valor que sea el valor recibido
aumentado en 7 las veces que sea necesario para obtener un resultado que sea mayor
a 50, entregar el nuevo valor.
Ejemplo: recibe 39, luego 39 + 7 = 46 ; 46 + 7 = 53, entrega 53.
recibe 47, entrega .?.
recibe 50, entrega .?.

EJ07T02 ( A ) 100
INICIO

MQ A ≤ 50 HAGA # Inicia controlando para USAR CICLO


A=A+7
RT = A
ENTREGAR RT
FIN

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

PRMYI6 = SVMYI6 / CVMYI6

IMPRIMIR SVMN6, PRMYI6


FIN

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

COC = VLD / VLU


IMPRIMIR COC

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

EJ07aT02 ( VL, IN, LI )


INICIO
CVA = 0
MQ VL ≤ LI HAGA # Inicia controlando para USAR CICLO
VL = VL + IN
CVA = CVA + 1
RT1 = VL
RT2 = CVA
ENTREGAR RT1, RT2
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

También podría gustarte