Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


Tema 3 - Funciones de cadenas y matemáticas

Existe una serie de funciones incorporadas en el Locomotive Basic, que nos permiten realizar ciertas operaciones matemáticas frecuentes (raíces cuadradas, redondeos, trigonométricas, etc.), y algunas manipulaciones con cadenas de texto (saber su longitud o extraer un trozo de ella,por ejemplo).

Vamos a ver algunas de las más importantes

3.1 Funciones de cadenas

  • LEN nos dice la longitud de una cadena: PRINT LEN("Nacho") escribiría 5.
  • LEFT$ extrae ciertos caracteres del comienzo (la izquierda) de una cadena: PRINT LEFT$("Nacho", 2) escribiría "Na".
  • RIGHT$ extrae ciertos caracteres del final (la derecha) de una cadena: PRINT RIGHT$("Nacho", 3) escribiría "cho"
  • MID$ extrae ciertos caracteres del cualquier posición de una cadena (se le indica el punto de partida, o opcionalmente, la cantidad de letras a tomar; si no se detalla este segundo dato, tomará hasta el final del texto: PRINT MID$("Nacho", 2,3) escribiría "ach"
  • INSTR indica en qué posición de una cadena se encuentra cierto texto: PRINT INSTR("Nacho", "ach") diría "2". Si no existe, el resultado será 0. Se puede indicar un dato adicional, que es a partir de qué posición queremos buscar (este dado, si se incluye, debe ser el primero): PRINT INSTR(4, "Nacho", "ach") diría "0", porque no existe "ach" a partir de la cuarta letra de "Nacho".
  • LOWER$ convierte a minúsculas: PRINT LOWER$("Nacho") mostraría "nacho"
  • UPPER$ convierte a mayúsculas: PRINT UPPER$("Nacho") mostraría "NACHO"
  • SPACE$ crea una cadena formada por varios espacios: separador$ = SPACE$(10)
  • STRING$ crea una cadena formada por una letra repetida varias veces: guiones$ = STRING$(10,"-")

 

3.2 Ejercicio propuesto de cadenas

  • Dibujar un recuadro en pantalla usando guiones y barras verticales.
  • La línea superior deberá ser una cadena formada por 38 guiones.
  • Las líneas intermedias comenzarán con una barra vertical, seguirán con 36 espacios y terminarán con otra barra vertical.
  • La línea inferior será otra cadena formada por 38 guiones.
  • Dentro del recuadro, en la parte izquierda, se deberá escribir un triángulo a partir de las letras de una palabra: en la primera línea sólo habrá una letra (la primera de la palabra), en la segunda habrá dos (las dos primeras letras) y así sucesivamente.
  • En la parte derecha, se deberá escribir otro triángulo similar, pero que comenzará por la última letra, hasta que toda la cadena esté completa.
  • En la parte inferior del rectángulo se escribirá la palabra en mayúsculas, centrada.

La apariencia deberá ser como ésta:

Ejercicio cadenas

 

3.3 Funciones matemáticas

(Tras la lista tienes un fuente de ejemplo)

Comencemos por ver dos operaciones menos habituales que las que ya conocemos (suma, resta, multiplicación, división):

  • \: División entera (sin decimales).
  • MOD: Resto de una división.

Números al azar:

  • RANDOMIZE: Comienza a generar una secuencia de números aleatorios (al azar"), a partir de un número que se el indique como "semilla". Lo habitual, para evitar que los números se repitan, es usar como semilla el reloj interno del ordenador: RANDOMIZE TIME.
  • RND: Da el siguiente valor de la secuencia de números aleatorios (un número entre 0 y 1). Si queremos que el número esté entre otros dos valores, tendremos que multiplicar por cierto número (por ejemplo, por 100), quizá sumar algún número (si no queremos empezar en 0), y quizá incluso redondear si queremos un resultado sin cifras decimales.

Funciones trigonométricas

  • SIN: Seno de un ángulo (indicado en radianes, salvo que antes se use al orden DEG).
  • COS: Coseno de un ángulo (indicado en radianes, salvo que antes se use al orden DEG).
  • TAN: Tangente de un ángulo (indicado en radianes, salvo que antes se use al orden DEG).
  • ATN: Arco tangente: ángulo que tiene una cierta tangente (en radianes, salvo que antes se use al orden DEG).
  • DEG: Considera que los datos que se indiquen a SIN, COS, TAN están expresados en grados (NO es lo habitual).
  • RAD: Considera que los datos que se indiquen a SIN, COS, TAN están expresados en radianes (es lo habitual cuando se acaba de encender el ordenador).
  • PI: Valor del número PI (longitud de una circunferencia dividida entre su diámetro).

Redondeo, decimales

  • CINT: Redondea un número con decimales al entero más cercano.
  • FIX: Elimina los decimales de un número.
  • INT: Redondea un número con decimales al entero inferior más cercano.
  • ROUND: Redondea un número a una cierta cantidad de decimales. Si la cantidad de decimales es negativa, redondea "antes de la coma". Por ejemplo, ROUND(123.45, 1) daría 123.5, mientras que ROUND(123.45, -1) devolvería 120.

Signo, raíces

  • ABS: Valor absoluto de un número (si es negativo, lo convierte a positivo; si es positivo, lo deja como está).
  • SGN: Signo de un número (-1 si es negativo, 1 si es positivo, 0 si es cero).
  • SQR: Raíz cuadrada de un número. Para calcular otras raíces menos habituales habría que usar potencias.

Conversión de base

  • BIN$: Convierte un número decimal a binario, usando una cierta cantidad de cifras (opcional): BIN$(125,8).
  • DEC$: Escribe un número decimal formateado a una cierta cantidad de cifras decimales: DEC$(125,"##.##") (realmente DEC$ permite hace más que en ese ejemplo, pero lo dejamos ahí por ahora).
  • HEX$: Convierte un número decimal a hexadecimal, usando una cierta cantidad de cifras (opcional): HEX$(125).
  • VAL: Convierte una cadena a número, para poder hacer operaciones.
  • STR$: Convierte un número a cadena (por ejemplo, para poder manipularlo fácilmente cifra a cifra).

Logaritmos y exponenciales

  • EXP: Calcula el valor de "e" (2,71828) elevado a un cierto número.
  • LOG: Logaritmo natural (o neperiano, en base "e") de un número.
  • LOG10: Logaritmo en base 10 de un número.

Un ejemplo de (casi) todo esto:

10 ' Ejemplo de funciones matematicas
20 ' Numeros al azar
30 RANDOMIZE TIME
40 PRINT "Al azar, de 0 a 1: "; RND
50 PRINT "Otro, de 10 a 15: "; RND*5+10
60 ' Trigonometricas
70 PRINT "PI vale: "; PI
80 PRINT "El seno de 45 grados es: ";
90   DEG: PRINT SIN(45)
100 PRINT "El coseno de PI rad es: ";
110   RAD: PRINT COS(PI)
120 PRINT "Angulo con tangente 1: ";
130   DEG: PRINT ATN(1)
140 ' Conversion de base
150 PRINT "125 en binario: ";
160   PRINT BIN$(125,8)
170 PRINT "En hexadecimal: ";
180   PRINT HEX$(125);
190   PRINT " o "; HEX$(125,4);
200 PRINT "125 con dos decimales: ";
210   PRINT DEC$(125,"###.##")
220 PRINT "1125, 1 decimal y miles: ";
230   PRINT DEC$(1125,"#####,.#")
240 ' Redondeo
250 PRINT "-1,99 con CINT: ";
260   PRINT CINT(-1.99)
270 PRINT "1,99 con CINT: ";
280   PRINT CINT(1.99)
290 PRINT "-1,99 con FIX: ";
300   PRINT FIX(-1.99)
310 PRINT "1,99 con FIX: ";
320   PRINT FIX(1.99)
330 PRINT "-1,99 con INT: ";
340   PRINT INT(-1.99)
350 PRINT "1,99 con INT: ";
360   PRINT INT(1.99)
370 PRINT "123,45 a pot 1 de 10";
380   PRINT ROUND(123.45, 1)
390 PRINT "123,45 a pot -1 de 10";
400   PRINT ROUND(123.45, -1)
410 PRINT "1,99 con CINT: ";
420 ' Exponencial y logaritmo
430 PRINT "e es: "; EXP(1)
440 PRINT "Logaritmo de 10: "; LOG(10)
450 PRINT "Log10 de 100: "; LOG10(100)

Ejemplo f. matematicas

 

3.4 Ejercicio propuesto de funciones matemáticas

En "modo 2" de pantalla, dibujar una gráfica similar a la de la función Seno, pero en modo texto, usando caracteres X para cada punto:

Ejercicio f. matematicas