Professional Documents
Culture Documents
Bienvenido al curso de Algoritmia. Este es un curso inicial que cubre únicamente los aspectos
básicos de la algoritmia y por lo mismo esta pensado para personas que se inician en la
programación de computadoras. Este curso está en constante mejora: periodicamente reviso los
contenidos, añado más ejercicios, reformulo algunos ejercicios existentes y quito los inadecuados.
Por ahora el curso es para leerse en línea sin rectricciones de ningún tipo y espero que para seguir
así me hagan llegar sus comentarios y sugerencias, para saber si el curso es de utilidad.
Capítulo 1: Conceptos Básicos de Algoritmia
1.1 Algoritmo
1.2 Pseudocódigo
1.3 Variables
1.4 Literales
1.5 Instrucciones Algoritmicas Básicas
1.6 Expresiones Aritméticas
1.7 Expresiones Lógicas
Capítulo 2: Estructuras de Secuencia
2.1 Concepto
2.2 Ejercicios
Capítulo 3: Estructuras de Selección
3.1 Concepto
3.2 Estructura de Selección Simple SI
3.3 Estructura de Selección Doble SI-SINO
3.4 Estructura de Selección Doble en Cascada SI-SINO-SI
3.5 Estructura de Selección Múltiple SEGUN
3.6 Ejercicios
Capítulo 4: Estructuras de Repetición
edad ?
descuento ?
• La siguiente instrucción declara las variables nota1, nota2 y nota3, todas de tipo
ENTERO.
ENTERO nota1, nota2, nota3
Esto crea los casilleros de memoria nota1, nota2 y nota3. Luego de la creación, las
variables están indefinidas ( ? ).
nota1 ?
nota2 ?
nota3 ?
1.4 Literales
Se denominan literales a todos aquellos valores que figuran en el pseudocódigo y pueden ser:
Literales enteros
12, 20300, 15, etc.
Literales reales
3.1416, 2345.456, etc.
Literales de carácter
'a', 'B', ';', '<', '+', etc.
Lieterales de cadena
"Hola", "Algoritmos Computacionales", etc.
Literales lógicos
verdadero, falso
Solución
e = a/b/c
Como todos los operadores tienen la misma jerarquía, la evaluación será de izquierda a derecha:
Primero, se dividirá a entre b. Segundo, el resultado ya obtenido de a/b se dividirá entre c. Note que
el orden de ejecución esta de acuerdo con la expresión algebraica, por lo que no se requiere ninguna
pareja de paréntesis.
Ejemplo 1.5:- ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?
Solución
e = a*b*c/d/e
Como todos los operadores tienen la misma jerarquía, la evaluación será de izquierda a derecha:
Primero, se multiplicará a por b.
Segundo, el resultado ya obtenido de a*b se multiplicará por c.
Tercero, el resultado ya obtenido de a*b*c se dividirá entre d.
Cuarto, el resultado ya obtenido de a*b*c/d se divivirá entre e.
Note que el orden de ejecución esta de acuerdo con la expresión algebraica, por lo que no se
requiere ninguna pareja de paréntesis.
Ejercicio 1.6:- ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?
Solución
e = 4/((a+b)/(c/d)) + v/w/p + 5*m*n*q
Aplicando las reglas de jerarquía de los operadores aritméticos:
Primero, se sumará a más b.
Segundo, se dividirá c entre d.
Tercero, el resultado ya obtenido de a+b se dividirá entre el resultado ya obtenido de c/d.
Cuarto, se dividirá 4 entre el resultado ya obtenido de ((a+b)/(c/d))
Quinto, se dividirá v entre w.
Sexto, se dividirá el resultado ya obtenido de v/w entre p.
Séptimo, se multiplicará 5 por m.
Octavo, se multiplicará el resultado ya obtenido de 5*m por n.
Noveno, se multiplicará el resultado ya obtenido de 5*m*n por q.
Décimo, se sumará el resultado ya obtenido de 4/((a+b)/(c/d)) más el resultado ya obtenido de
v/w/p.
Undécimo, se sumará el resultado ya obtenido de 4/((a+b)/(c/d)) + v/w/p más el resultado ya
obtenido de 5*m*n*q.
Se ha utilizado la mínima cantidad posible de paréntesis. Pueden usarse paréntesis adicionales, lo
que no es un error. Por ejemplo, otra solución posible que arroja el mismo resultado final es:
e = (4/((a+b)/(c/d))) + ((v/w)/p) + (5*m*n*q)
Note que usando correctamente las reglas de jerarquía, es posible usar menos parejas de paréntesis.
1.7 Expresiones Lógicas
Una expresión lógica combina variables, literales, operadores aritméticos, operadores relacionales y
operadores lógicos. Los operadores relacionales y los operadores lógicos se muestran en las tablas
3.1 y 3.2.
Tabla 1.3 Operadores relacionales
Operador Significado Ejemplo
> mayor que a>b
>= mayor o igual que a >= b
< menor que a<b
<= menor o igual que a <= b
== igual a a == b
!= diferente de a != b
Tabla 1.4 Operadores lógicos
Operador Significado Ejemplo
! no !a
&& y a && b
|| ó a || b
David Espinoza Sandoval Lima, Perú
Estructuras de Secuencia
2.1 Concepto
2.2 Ejercicios 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13
2.1 Concepto
Una estructura secuencial es aquella en la que las instrucciones estan una a continuación de la otra
siguiendo una secuencia única, sin cambios de ruta. La estructura secuencial tiene una entrada y una
salida.
En la Figura 4.1 se muestra el diagrama de flujo y el pseudocódigo de una estructura secuencial.
Diagrama de Flujo Pseudocódigo
Inicio
.
.
acción 1
acción 2
acción 3
.
.
Fin
Figura 2.1 Estructura Secuencial: Diagrama de Flujo y Pseudocódigo
2.2 Ejercicios
Ejercicio 1:- Diseñe un pseudocódigo que halle el área y el perímetro de un rectángulo. Considere
que: area = base x altura y perimetro = 2 x (base+altura).
Algoritmo
INICIO
// Declaración de variables
REAL base, altura, area, perimetro
// Entrada de datos
LEER base, altura
// Proceso de cálculo
area = base*altura
perimetro = 2*(base+altura)
// Salida de resultados
IMPRIMIR area, perimetro
FIN
Ejemplo 2:- Diseñe un pseudocódigo para convertir una longitud dada en metros a sus equivalentes
en centímetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centímetros, 1 pulgada =
2.54 centimetros, 1 pie = 12 pulgadas, 1 yarda = 3 pies.
Algoritmo
INICIO
// Declaración de variables
REAL cmetr,ccent, cpies, cpulg, cyard
// Entrada de datos
LEER cmetr
// Proceso de cálculo
ccent = cmetr*100
cpulg = ccent/2.54
cpies = cpulg/12
cyard = cpies/3
// Salida de resultados
IMPRIMIR cpulg, cpies, cyard
FIN
Ejercicio 3:- Una institución benéfica europea ha recibido tres donaciones en soles, dolares y
marcos. La donación será repartida en tres rubros: 60% para la implementación de un centro de
salud, 40% para un comedor de niños y el resto para gastos administrativos. Diseñe un algoritmo
que determine el monto en euros que le corresponde a cada rubro. Considere que: 1 dólar = 3.52
soles, 1 dólar = 2.08 marcos, 1 dólar = 1.07 euros.
Algoritmo
INICIO
// Declaración de variables
REAL c soles, cdolares, c marcos, ceuros, rubro1, rubro2, rubro3
// Entrada de datos
LEER csoles, cdolares, cmarcos
// Proceso de cálculo
ceuros = (csoles/3.52 + cdolares + cmarcos/2.08)*1.07
rubro1 = ceuros*0.60
rubro2 = ceuros*0.40
rubro3 = ceuros*0.20
// Salida de resultados
IMPRIMIR rubro1, rubro2, rubro3
FIN
Ejercicio 4:- En una competencia atlética de velocidad el tiempo se mide en minutos, segundos y
centésimas de segundo y, el espacio recorrido se mide en metros. Diseñe un algoritmo para
determinar la velocidad promedio de un atleta en km/hr. Considere que: 1 hora = 60 minutos, 1
minuto = 60 segundos, 1 segundo = 100 centésimas de segundo, 1 kilómetro = 1000 metros.
Algoritmo
INICIO
// Declaración de variables
ENTERO tmin, tseg, tcen
REAL thor, velkmhr, espmt, espkm
// Entrada de datos
LEER tmin, tseg, tcen, espmt
// Cálculo del tiempo total empleado en horas
thor = tmin/60 + tseg/3600 + tcen/360000
// Salida de resultados
IMPRIMIR velkmhr
FIN
Ejercicio 5:- Diseñe un algoritmo que determine la cifra de las unidades de un número natural.
Solución 1
Análisis
Puede comprobarse que la cifra de las unidades de un número es igual al resto de la división del
número entre 10. Observe para ello las siguientes divisiones:
3245 10
5 324
768 10
8 76
9 10
9 0
Podemos concluir entonces que:
unidades = numero % 10
Siendo % el operador residuo. Este operador permite obtener el residuo de una división, así como /
permite obtener el cociente.
Algoritmo
INICIO
// Declaración de variables
ENTERO numero, unidades
// Entrada de datos
LEER numero
// Proceso de cálculo
unidades = numero % 10
// Salida de resultados
IMPRIMIR unidades
FIN
Solución 2
Análisis
El residuo de una división entera puede obtenerse también sin recurrir al operador %, de la
siguiente forma:
unidades = numero - (numero / 10) * 10
observe para esto que en la división (numero/10) los operandos son enteros por lo que el cociente
será un entero. Así por ejemplo, si numero es igual a 3245, la división (numero/10) produce 324,
aunque matemáticamente sea 324.5; es decir, se descarta la parte decimal.
Algoritmo
INICIO
// Declaración de variables
ENTERO numero, unidades
// Entrada de datos
LEER numero
// Proceso de cálculo
unidades = numero - (numero/10)*10
// Salida de resultados
IMPRIMIR unidades
FIN
Ejercicio 6:- Diseñe un algoritmo que determine la suma de las cifras de un número entero positivo
de 4 cifras.
Solución 1
Análisis
Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10. Para el efecto, considere el
caso de un número N igual a 3245:
3245 10
5 324
unidades = N%10
cociente = N/10
324 10
4 32
decenas = cociente%10
cociente = cociente/10
32 10
2 3
centenas = cociente%10
millares = cociente/10
Algoritmo
INICIO
// Declaración de variables
ENTERO N, suma, millares, centenas, decenas, unidades, resto
// Entrada de datos
LEER N
// Proceso de cálculo
unidades = N%10
cociente = N/10
decenas = cociente%10
cociente = cociente/10
centenas = cociente%10
millares = cociente/10
suma = unidades + decenas + centenas + millares
// Salida de resultados
IMPRIMIR suma
FIN
Solución 2
Análisis 2
Considerando que el número tiene 4 cifras, las cifras también pueden ser obtenidas mediante
divisiones sucesivas entre 1000, 100 y 10. Para el efecto, considere el caso de un número N igual a
3245:
3245 1000
245 3
millares = N/1000
resto = N%1000
245 100
45 2
centenas = resto/100
resto = resto%100
45 10
3 4
decenas = resto/10
unidades = resto%10
Algoritmo
INICIO
// Declaración de variables
ENTERO N, suma, millares, centenas, decenas, unidades, resto
// Entrada de datos
LEER N
// Proceso de cálculo
millares = N/1000
resto = N%1000
centenas = resto/100
resto = resto%100
decenas = resto/10
unidades = resto%10
suma = unidades + decenas + centenas + millares
// Salida de resultados
IMPRIMIR suma
FIN
Ejercicio 7:- Diseñe un algoritmo que lea la hora actual del día HH:MM:SS y determine cuantas
horas, minutos y segundos restan para culminar el día.
Algoritmo
INICIO
// Declaración de variables
ENTERO hor1, min1, seg1, hor2, min2, seg2, segres, resto
// Entrada de datos
LEER hor1, min1, seg1
// Salida de resultados
IMPRIMIR hor2, min2, seg2
FIN
Ejercicio 8:- Diseñe un algoritmo para sumar dos tiempos dados en horas, minutos y segundos.
Algoritmo
INICIO
// Declaración de variables
ENTERO hor1, min1, seg1, hor2, min2, seg2, hor3, min3, seg3, totseg, resto
// Entrada de datos
LEER hor1, min1, seg1, hor2, min2, seg2
// Salida de resultados
IMPRIMIR hor3, min3, seg3
FIN
Ejercicio 9:- El sueldo neto de un vendedor se calcula como la suma de un sueldo básico de S/.250
más el 12% del monto total vendido. Diseñe un algoritmo que determine el sueldo neto de un
vendedor sabiendo que hizo tres ventas en el mes.
Algoritmo
INICIO
// Declaración de variables
REAL venta1, venta2, venta3, ventatot, comision, sueldoneto
// Entrada de datos
LEER venta1, venta2, venta3
// Proceso de cálculo
ventatot = venta1 + venta2 + venta3
comision = 0.12*ventatot
sueldoneto = 250 + comision
// Salida de resultados
IMPRIMIR sueldoneto
FIN
Ejercicio 10:- Diseñe un algoritmo que determine el porcentaje de varones y de mujeres que hay en
un salón de clases.
Algoritmo
INICIO
// Declaración de variables
REAL porcvar, porcmuj
ENTERO varones, mujeres, total
// Entrada de datos
LEER varones, mujeres
// Proceso de cálculo
total = varones + mujeres
porcvar = varones*100.0/total
porcmuj = mujeres*100.0/total
// Salida de resultados
IMPRIMIR porcvar, porcmuj
FIN
Ejercicio 11:- En países de habla inglesa es común dar la estatura de una persona como la suma de
una cantidad entera de pies más una cantidad entera de pulgadas. Así, la estatura de una persona
podría ser 3' 2" ( 3 pies 2 pulgadas ). Diseñe un algoritmo que determine la estatura de una persona
en metros, conociendo su estatura en el formato inglés. Considere que: 1 pie = 12 plg, 1 plg = 2.54
cm, 1 m = 100 cm.
Algoritmo
INICIO
// Declaración de variables
REAL estmt
ENTERO cpies, cplgs
// Entrada de datos
LEER cpies, cplgs
// Proceso de cálculo
estmt = (cpies*12 + cplgs)*2.54/100
// Salida de resultados
IMPRIMIR estmt
FIN
Ejercicio 12:- Diseñe un algoritmo que exprese la capacidad de un disco duro en megabytes,
kilobytes y bytes, conociendo la capacidad del disco en gigabytes. Considere que: 1 kilobyte = 1024
bytes, 1 megabyte = 1024 kilobyte, 1 gigabyte = 1024 megabytes.
Algoritmo
INICIO
// Declaración de variables
REAL cgigabyte, cmegabyte, ckilobyte, cbyte
// Entrada de datos
LEER cgigabyte
// Proceso de cálculo
cmegabyte = cgigabyte*1024
ckilobyte = cmegabyte*1024
cbyte = ckilobyte*1024
// Salida de resultados
IMPRIMIR cmegabyte, ckilobyte, cbyte
FIN
Ejercicio 13:- Diseñe un algoritmo que intercambie las cifras de las unidades de dos números
naturales.
Algoritmo
INICIO
// Declaración de variables
ENTERO numero1, numero2, unidades1, unidades2
// Entrada de datos
LEER numero1, numero2
// Salida de resultados
IMPRIMIR n1, n2
FIN
David Espinoza Sandoval Lima,Perú
Estructuras de Selección
3.1 Concepto
3.2 Estructura de Selección Simple SI
3.3 Estructura de Selección Doble SI-SINO
3.4 Estructura de Selección Doble en Cascada SI-SINO-SI
3.5 Estructura de Selección Múltiple SEGUN
3.6 Ejercicios 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15
3.1 Introducción
Las estructuras de selección son estructuras de control utilizadas para la toma decisiones dentro de
un programa. A estas estructuras se conocen también como estructuras selectivas o estructuras de
decisión y son las siguientes:
• La estructura de selección simple (SI).
• La estructura de selección doble (SI-SINO).
• La estructura de selección múltiple (SEGUN)
3.2 Estructura de Selección Simple SI
La estructura de selección simple permite ejecutar una acción o un grupo de acciones sólo si se
cumple una determinada condición. Así, en el gráfico 3.1, si la condición es verdadera se ejecuta la
acción acciona; en caso contrario, no se hace nada.
Diagrama de Flujo Pseudocódigo (acción simple)
SI( condicion ) acciona
SI( condicion1 )
accion1
SINO
SI( condicion2 )
accion2
SINO
SI( condicion3 )
accion3
SINO
acciondefecto
Pseudocódigo ( Forma 2 )
SI( condicion1 )
accion1
accion2
accion3
SINO
acciondefecto
SEGUN( selector ){
CASO c1 : accion1
CASO c2 : accion2
CASO c3 : accion3
CASO cn : accionn
DEFECTO : acciondefecto
// Entrada de datos
LEER horas, minutos
// Si hay alguna fracción de hora, incrementa las horas a pagar en una unidad
SI( minutos > 0 )
horas = horas + 1
// Salida de resultados
IMPRIMIR pago
FIN
Algoritmo 2
INICIO
// Declaración de variables
ENTERO horas, minutos, horasPagar
REAL pago
// Entrada de datos
LEER horas, minutos
// Salida de resultados
IMPRIMIR pago
FIN
Ejercicio 2:- Diseñe un algoritmo que determine si ún número es o no es, par positivo.
Algoritmo
INICIO
// Declaración de variables
REAL numero
CADENA tipoNumero
// Entrada de datos
LEER numero
// Salida de resultados
IMPRIMIR tipoNumero
FIN
Ejercicio 3:- Diseñe un algoritmo que lea tres números y determine el número mayor.
Algoritmo
INICIO
// Declaración de variables
REAL numero1, numero2, numero3, numeroMayor
// Entrada de datos
LEER numero1, numero2, numero3
// Determina el mayor
numeroMayor = numero1
SI( numero2 > numeroMayor )
numeroMayor = numero2
SI( numero3 > numeroMayor )
numeroMayor = numero3
// Salida de resultados
IMPRIMIR mayor
FIN
Ejercicio 4:- Una tienda ha puesto en oferta la venta al por mayor de cierto producto, ofreciendo un
descuento del 15% por la compra de más de 3 docenas y 10% en caso contrario. Además por la
compra de más de 3 docenas se obsequia una unidad del producto por cada docena en exceso sobre
3. Diseñe un algoritmo que determine el monto de la compra, el monto del descuento, el monto a
pagar y el número de unidades de obsequio por la compra de cierta cantidad de docenas del
producto.
Algoritmo
INICIO
// Declaración de variables
REAL montopag, montocom, montodes, precio
ENTERO docenas, obsequio
// Entrada de datos
LEER docenas, precio
// Salida de resultados
IMPRIMIR montocom, montodes, montopag, obsequio
FIN
Ejercicio 5:- Diseñe un algoritmo que lea un número de tres cifras y determine si es o no capicúa.
Un número es capicúa si es igual al revés del número.
Observación
Como el número tiene tres cifras, para ser capicúa basta con que la cifra de las unidades sea igual a
la cifra de las centenas. Por ejemplo: 353, 878, etc.
Algoritmo
INICIO
// Salida de resultados
ENTERO numero, unidades, centenas
CADENA tipoNumero
// Entrada de datos
LEER numero
INICIO
// Declaración de variables
ENTERO dado1, dado2, dado3
CADENA calificacion
// Entrada de datos
LEER dado1, dado2, dado3
// Determina la calificación
SI( dado1 + dado2 + dado3 == 18 )
calificacion = "Excelente"
SINO SI( dado1+dado2 == 12 || dado1+dado3 == 12 || dado2+dado3 == 12 )
calificacion = "Muy bién"
SINO SI( dado1 == 6 || dado2 == 6 || dado3 == 6 )
calificacion = "Regular"
SINO
calificacion = "Pésimo"
// Salida de resultados
IMPRIMIR calificacion
FIN
Ejercicio 7:- Una compañía dedicada al alquiler de automoviles cobra un monto fijo de $30 para
los primeros 300 km de recorrido. Para más de 300 km y hasta 1000 km, cobra un monto adicional
de $ 0.15 por cada kilómetro en exceso sobre 300. Para más de 1000 km cobra un monto adicional
de $ 0.10 por cada kilómetro en exceso sobre 1000. Los precios ya incluyen el 18% del impuesto
general a las ventas, IGV. Diseñe un algoritmo que determine el monto a pagar por el alquiler de un
vehículo y el monto incluído del impuesto.
Algoritmo
INICIO
// Declaración de variables
REAL kilomrec, montopag, montoigv, montofijo = 30, igv = 0.18
// Entrada de datos
LEER kilomrec
// Salida de resultados
IMPRIMIR montopag, montoigv
FIN
Ejercicio 8:- Diseñe un algoritmo que determine quienes son contemporáneos entre Juan, Mario y
Pedro.
Algoritmo
INICIO
// Declaración de variables
ENTERO juan, mario, pedro
CADENA contemporaneos
// Entrada de datos
LEER juan, mario, pedro
// Salida de resultados
IMPRIMIR contemporaneos
FIN
Ejercicio 9:- El promedio de prácticas de un curso se calcula en base a cuatro prácticas calificadas
de las cuales se elimina la nota menor y se promedian las tres notas más altas. Diseñe un algoritmo
que determine la nota eliminada y el promedio de prácticas de un estudiante.
Algoritmo
INICIO
// Declaración de variables
REAL pc1, pc2, pc3, pc4, pcmenor, promedio
// Entrada de datos
LEER pc1, pc2, pc3, pc4
// Determina el promedio
promedio = (pc1 + pc2 + pc3 + pc4 - pcmenor )/3
// Salida de resultados
IMPRIMIR promedio, pcmenor
FIN
Ejercicio 10:- Diseñe un algoritmo que lea tres longitudes y determine si forman o no un triángulo.
Si es un triángulo determine de que tipo de triángulo se trata entre: equilátero (si tiene tres lados
iguales), isósceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales). Considere
que para formar un triángulo se requiere que: "el lado mayor sea menor que la suma de los otros dos
lados".
Algoritmo
INICIO
// Declaración de variables
REAL L1, L2, L3, suma
CADENA tipoRectangulo
// Entrada de datos
LEER L1, L2, L3<
// Entrada de datos
LEER a, b, c
// Determina el menor
// Entrada de datos
LEER n1, n2, n3
// Determina el menor
menor = n1
SI( n2 < menor )
menor = n2
SI( n3 < menor )
menor = n3
// Determina el mayor
mayor = n1
SI( n2 > mayor )
mayor = n2
SI( n3 > mayor )
mayor = n3
// Determina el medio
medio = n1+n2+n3-mayor-menor
// Entrada de datos
LEER torpro, tordef
// Salida de resultados
IMPRIMIR grado
FIN
Algoritmo 2
INICIO
// Declaración de variables
ENTERO torpro, tordef, grado
// Entrada de datos
LEER torpro, tordef
// Determina el grado de eficiencia
SI( tordef < 200 && torpro > 10000 )
grado = 8
SINO SI( tordef < 200 )
grado = 6
SINO SI( torpro > 10000 )
grado = 7
SINO
grado = 5
// Salida de resultados
IMPRIMIR grado
FIN
Ejercicio 14:- Se cuenta con los votos obtenidos por Juan, Pedro y Maria en una elección
democrática a la presidencia de un club. Para ganar la elección se debe obtener como mínimo el
50% de los votos más 1. En caso que no haya un ganador se repite la elección en una segunda
vuelta. Van a la segunda vuelta los dos candidatos que obtengan la más alta votación. Se anula la
elección en caso de producirse un empate doble por el segundo lugar o un empate triple. Diseñe un
algoritmo que determine el resultado de la elección.
Algoritmo
INICIO
// Declaración de variables
ENTERO vjuan, vpedro, vmaria, vmingan
CADENA resultado
// Entrada de datos
LEER vjuan, vpedro, vmaria
// Salida de resultados
IMPRIMIR resultado
FIN
Ejercicio 15:- Diseñe un algoritmo que lea un número entero de 3 cifras, y forme el mayor número
posible con las cifras del número ingresado. El número formado debe tener el mismo signo que el
número ingresado.
Algoritmo
INICIO
// Declaración de variables
ENTERO num1, num2, numaux, uni, dec, cen, menor, mayor,medio
// Entrada de datos
LEER num1