Índice de
Subrutinas y funciones predefinidas de SL
Funciones matemáticas
Funciones de cadenas de caracteres
abs()
arctan()
cos()
exp()
int()
log()
sin()
sqrt()
tan()
ascii()
lower()
ord()
pos()
strdup()
strlen()
substr()
upper()
Entrada/salida
Transormación de datos
str()
val()
Arreglos
alen()
dim()
Otros
dec()
ifval()
inc()
intercambiar()
max()
min()
paramval()
pcount()
random()
runcmd()
sec()
swap()
terminar()
beep()
cls()
imprimir()
leer()
eof()
get_color()
get_curpos()
get_ifs()
get_ofs()
get_scrsize
readkey()
set_color()
set_curpos()
set_ifs()
set_ofs()
set_stdin()
set_stdout()
© 2004 Juan Segovia Silvero
[email protected]
abs()
Retorna el valor absoluto de un número.
Sintaxis
sub abs (n : numerico) retorna numerico
Ejemplo
Suponga que desea imprimir la distancia en kilómetros que existe entre dos
ciudades, localizadas ambas sobre la misma ruta. El usuario ingresa la distancia
de ambas ciudades con relación a un punto inicial (por ejemplo Asunción) y el
programa imprime la distancia entre ambas.
var
c1, c2 : numerico
inicio
imprimir (“\nIngrese la distancia de la ciudad A desde Asunción:”)
leer (c1)
imprimir (Ingrese la distancia de la ciudad B desde Asunción:”)
leer (c2)
imprimir (“Entre A y B existen “, abs(c1-c2),
“ kilómetro(s)”)
fin
Usando la función abs() puede asegurarse que nunca verá un valor negativo
como resultado de la resta, que bien podría dar un resultado negativo.
beep()
Emite un pitido a cierta frecuencia y la ejecución se suspende durante el tiempo
que se indica en el segundo parámetro (expresado en milisegundos).
Ambos parámetros pueden omitirse, en cuyo caso se utiliza automáticamente los
valores (500, 100), es decir, se emite un pitido y el programa se detiene durante
una décima de segundo.
Si la salida actual es un archivo, el pitido no se emite, aunque se hace la pausa
solicitada.
Nótese que beep() puede ser utilizado para introducir una pausa en la
ejecución, sin emitir pitido propiamente. Por ejemplo beep(0, 500) hará una
pausa de al menos medio segundo.
Sintaxis
sub beep (frecuencia, duración_miliseg : numerico)
Ejemplo
var
t0, t1 : numerico
inicio
imprimir (“\nIniciamos con un pitido.”)
beep()
imprimir (“\nAhora haremos una pausa de 3 segundos\n”)
t0 = sec()
beep (0, 3000)
t1 = sec()
beep()
imprimir (“Pausa finalizada. Duró ”, t1-t0, “ segundos”)
fin
alen()
Retorna la cantidad de elementos que componen un arreglo. La función opera
por igual sobre arreglos abiertos y no abiertos.
Sintaxis
sub alen (nombre_var) retorna numerico
Ejemplo
El ejemplo que sigue imprimirá la cantidad de elementos de que consta A, que
depende de qué valor se ingrese para la variable n. Además imprimirá:
La matriz M tiene 3 filas
Todas las filas tienen 4 columnas.
var
A : vector [10] numerico
M : matriz [*, *] cadena
n = 0
inicio
imprimir (“\nIngrese tamaño del vector A:”)
leer (n)
dim (A, n)
imprimir (“\nLa cantidad de elementos de A es “, alen (A))
dim (M, 3, 4)
imprimir (“\nLa matriz M tiene “, alen (M), “ filas.”,
“\nTodas las filas tienen “, alen (M [1]), “ columnas.”)
fin
arctan()
Calcula el arco tangente (o la inversa de la tangente) de un ángulo, expresado
en radianes.
Si tan(w) es z, arctan(z) es w.
Sintaxis
sub arctan (a : numerico) retorna numerico
ascii()
Retorna el carácter que se encuentra en la tabla ASCII en la posición dada.
Sintaxis
sub ascii (n : numerico) retorna cadena
Ejemplo
El programa que sigue imprime todos los dígitos del “0” al “9” y sus posiciones
en la tabla ASCII. Para averiguar la posición del “0”, es decir, la posición inicial
de la serie, se usa la función ord().
var
pos_0 = ord (“0”)
k = 0
inicio
desde k=pos_0 hasta pos_0 + 9 {
imprimir (“\nCarácter “, ascii (k), “. Posición “, k)
}
fin
cls()
Limpia la pantalla.
Sintaxis
sub cls()
La pantalla se limpia solo si el dispositivo de salida al momento de
ejecutarse cls() es la pantalla. Si la salida está redireccionada vía
set_stdout()a un archivo, cls() no tiene ningún efecto.
cos()
Calcula el coseno de un ángulo expresado en radianes.
Sintaxis
sub cos (a : numerico) retorna numerico
dec()
Decrementa el valor de la variable que se le pasa como parámetro. En su forma
básica, es equivalente a hacer c=c-1, donde c es una variable numérica.
Sintaxis
sub dec (ref n : numerico; decr : numerico) retorna numérico
El segundo parámetro es opcional; si se omite, el compilador de SL asume que
es el valor 1. dec() realiza la operación contraria a inc().
Se retorna el nuevo valor de la variable luego del decremento; este valor es
habitualmente ignorado.
Ejemplo
Vea inc() .
dim()
Asigna memoria para los elementos de una matriz o vector que haya sido
declarado como “abierto”, es decir, con asterisco (*) como tamaño.
Use dim() y arreglos “abiertos” cuando la cantidad de elementos que
se requiere depende de un valor que el usuario ingresa, o de un valor
que se calcula. En cambio, si la cantidad de elementos ya se conoce al
momento de preparar el programa, se puede “dimensionar” ya el
arreglo con tal tamaño.
Sintaxis
sub dim (nombre_var, tam_dim1, tam_dim2, ...)
Ejemplo
El siguiente ejemplo asigna n elementos al vector A, donde el valor de n es
proveÍdo por el usuario, así como los valores que serán almacenados en cada
posición.
También inicializa la matriz M con 3 filas y 4 columnas. Muestra también cómo se
pueden leer los elementos de un arreglo con una sola llamada a leer(); en este
caso se tomarán 12 valores.
Finalmente, la matriz Z es peculiar en cuanto que una de sus dimensiones es
“abierta”, pero la segunda ya tiene un tamaño definido (5 en este caso). Nótese
que en estos casos dim() solo recibe tamaños para las dimensiones “abiertas”;
las demás son automáticamente completadas por el compilador de SL.
var
A : vector [*] numerico
M : matriz [*, *] cadena
Z : matriz [*, 5] numerico
n = 0
inicio
imprimir (“\nIngrese tamaño del vector A:”)
leer (n)
dim (A, n)
desde k=1 hasta n {
leer (A[k])
}
dim (M, 3, 4)
leer (M)
dim (Z, n*2)
desde k=1 hasta alen(Z) {
/*
* Por cada iteración, se leerán 5 valores a la vez, ya que
* cada Z [k] contiene tal cantidad de elementos.
*/
leer (Z [k])
}
fin
eof()
Retorna verdadero cuando ya no existen datos que puedan ser leídos desde un
archivo.
Sintaxis
sub eof() retorna logico
Ejemplo
El siguiente código imprime cada línea de un archivo llamado datos.txt,
mostrando el número de línea correspondiente.
var
linea = “”
num_linea = 0
inicio
set_stdin (“datos.txt”)
set_ifs (“\n”)
leer (linea)
mientras ( not eof() ) {
inc (num_linea)
imprimir (“\n”, num_linea, “: “, linea)
leer (linea)
}
imprimir (“\nFueron leídas “, num_linea, “ líneas.”)
fin
exp()
Retorna e elevado a la n, donde e es la base de los logaritmos naturales o
neperianos (2.71828182...).
Sintaxis
sub exp (n : numerico) retorna numerico
Ejemplo
var
base_log_naturales = 0
inicio
base_log_naturales = exp (1)
imprimir (“\nLa base de los logaritmos naturales es “, base_log_naturales)
fin
get_color()
Obtiene el color del texto y del fondo vigentes. Nótese que ambos parámetros
son pasados por referencia, por lo que deben ser proveídos dos nombres de
variables.
Los colores están identificados por un valor entero.
Sintaxis
sub get_color (ref primer_plano, fondo : numerico)
Ejemplo
var
prim_plano, fondo : numerico
inicio
get_color (prim_plano, fondo)
imprimir (“\nLos colores actuales son: Fondo=”, fondo,
“ Texto=”, prim_plano)
fin
get_curpos()
Informa la línea y columna donde se encuentra actualmente el cursor. Nótese
que los dos parámetros que necesita esta rutina son pasados por referencia, es
decir, deben ser nombres de variables numéricas.
Ambos parámetros retornarán con cero si la salida actual es un archivo y no la
pantalla.
Sintaxis
sub get_curpos (ref linea_actual, col_actual : numerico)
Ejemplo
var
cursor_linea, cursor_col : numerico
inicio
imprimir (“\nBuenos días.”)
get_curpos (cursor_linea, cursor_col)
imprimir (“\nBuenas tardes”)
set_curpos (cursor_linea, cursor_col+1)
imprimir (“Esto debe mostrarse al lado del saludo inicial.”)
fin
get_ifs()
Retorna el carácter que está vigente como separador de valores o campos en
una operación de lectura vía leer().
Esta función puede usarse para cambiar temporalmente el separador de campos,
usando set_ifs(), y posteriormente restaurar su valor original.
Nota : Esta función rara vez se utiliza.
Sintaxis
sub get_ifs() retorna cadena
get_ofs()
Retorna el carácter que está vigente como separador de valores al imprimir, así
como el indicador de que un arreglo no está dimensionado. El primero es un solo
carácter y ocupa la primera posición en el valor retornado; el segundo inicia en la
posición dos.
Sintaxis
sub get_ofs() retorna cadena
get_scrsize()
Obtiene la cantidad de líneas y columnas que tiene la pantalla. Nótese que
ambos parámetros son pasados por referencia, por lo que se deben proveer dos
nombres de variables. El tamaño habitual de la pantalla es 25 líneas por 80
columnas.
Sintaxis
sub get_scrsize (ref cant_lin, cant_cols : numerico)
ifval()
Dada una condición y dos expresiones e1 y e2, ifval() retorna el valor de e1 si
la condición es verdadera y el valor de e2 si es falsa.
Si bien ifval() luce como una función cualquiera, es diferente en cuanto que
evalúa solo una de las expresiones, es decir, implementa lo que se conoce con
el nombre de “expresión condicional”.
Las expresiones e1 y e2 deben coincidir en tipo y pueden corresponder a
cualquier tipo simple (numerico, cadena, logico).
El uso de ifval() suele ayudar a hacer más compacto el código.
Sintaxis
sub ifval (condicion : logico
<expresion_si_condicion_es_verdadera>
<expresion_si_condicion_es_falsa>) retorn
Comentarios de: Índice de Subrutinas y funciones predefinidas de SL (0)
No hay comentarios