PDF de programación - Índice de Subrutinas y funciones predefinidas de SL

Imágen de pdf Índice de Subrutinas y funciones predefinidas de SL

Índice de Subrutinas y funciones predefinidas de SLgráfica de visualizaciones

Publicado el 4 de Febrero del 2019
835 visualizaciones desde el 4 de Febrero del 2019
121,8 KB
34 paginas
Creado hace 20a (24/02/2004)
Í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
  • Links de descarga
http://lwp-l.com/pdf15061

Comentarios de: Índice de Subrutinas y funciones predefinidas de SL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad