AMSTRAD sinclair ZX Spectrum +3 Manual Del Usario página 98

Tabla de contenido

Publicidad

parentesis. (Recuerde siempre que en las funciones definidas por el usuario el argumento
tiene que estar entre paréntesis.) Practique unas cuantas veces:
PRINT FN c(2)
PRINT FN c(3+4)
PRINT 1 + INT FN e (LEN "pollo"/2+3)
Decíamos antes que
INT
siempre redondea hacia abajo. Para redondear al entero más cer­
cano, sume
0.5
al número antes de aplicarle
INT;
si no quiere tener que hacer esto cada
vez que necesite redondear un número, puede encomendarle la tarea a una función creada
al efecto:
20 DEF FN rtx) = INT (x+0.5): REM da x redondeado al entero más cercano
Después puede comprobar que, por ejemplo,
FN r(2.9)
es igual a
3
FN r(2.4)
es igual a
2
FN r(-2.9)
es igual a
-3
FN r(-2.4)
es igual a
-2
Compare estas respuestas con las que se obtiene empleando
INT
en lugar de
FN r.
Trans­
criba y ejecute este programa:
10 LET x=O: LET y=O: LET a=10
20 DEF FN p(x,y)=a+x*y
30
DEF FN qU=a+x*y
40
PRINT FN p(2,3l.FN q()
En este programa hay muchas sutilezas. Primero, las funciones pueden tener varios argu­
mentos, e incluso no tener ninguno (lo que no se puede omitir es los paréntesis).
'Segundo, las sentencias
DEF
pueden estar en cualquier lugar del programa. Cuando el
ordenador ha ejecutado la línea
10,
se salta las líneas
20
y
30
para llegar a la
40.
Sin em­
bargo, tienen que estar en alguna parte del programa, no en una orden directa.
Tercero, tanto x como
y
son nombres de variables en el conjunto del programa y además
son los nombres de los argumentos de la función
FN
p. Ésta olvida temporalmente las
variables llamadas x e y, pero, puesto que no tiene ningún argumento con el nombre de
a,
sigue recordando la variable
a.
De este modo, cuando
FN p(2,3)
está siendo evaluada,
a tiene el valor
10
porque es la variable, x tiene el valor 2 porque es el primer argumento,
e
y
tiene el valor
3
porque es el segundo argumento. Así que el resultado es
10+2*3,
que
es igual a 16. Por otra parte, cuando
FN ql)
está siendo evaluada, no hay argumentos,
de modo que a, x e
y
siguen refiriéndose a las variables y, por lo tanto, tienen los valores
10,
O y O, respectivamente. La respuesta en este caso es
10+0*0,
que es igual a 10.
Cambie ahora la línea
20
por:
20 DEF FN p(x,y)=FN qt)
Esta vez
FN p(2,3)
tendrá el valor 10, ya que
FN q
volverá a las variables
x
e
y
y no utiliza­
rá los argumentos de
FN
p.
Capítulo 8. Guía de programación en
+3
BASIC
88

Publicidad

Tabla de contenido
loading

Tabla de contenido