jueves, 29 de septiembre de 2022

Ejercicios en Latino

  Hace algún tiempo (años ha) hice una breve entrada sobre un nuevo lenguaje de programación llamado Latino. En resumidas cuentas, es un nuevo lenguaje de programación pero las palabras reservadas en vez de estar en el todopoderoso inglés son en español. De momento es un lenguaje con muchas limitaciones ya que es muy reciente y aun están en proceso de crear un nuevo compilador más avanzado y rápido. Pero mientras tanto se puede usar para crear algunos scripts o para enseñar a programar, ya que su sintaxis es muy sencilla y fácil de asimilar para alguien que empieza a programar.

 En la página del proyecto podemos encontrar toda la documentación de como instalar el intérprete de este lenguaje, así como la documentación y algunos plugins para usar un editor de código con resaltado para este lenguaje. 

 Así como hice en esta entrada sobre ejercicios de Python transcritos a Gambas, en esta ocasión lo hago con Latino. Siento no poder resaltar el código, ya que al ser un lenguaje nuevo no hay ningún resaltador para Blogger y no hay ningún lenguaje similar. Pero bueno, los ejercicios son sencillos y se entienden perfectamente.


 

1 - Definir una función max() que tome como argumento dos números y devuelva el mayor de ellos.

 funcion max(valor1, valor2)
//1 - Definir una función max() que tome como argumento dos números y devuelva el mayor de ellos.
    si (valor1 > valor2)
        retornar valor1
    sino
        retornar valor2
    fin
fin

2 - Definir una función max_de_tres(), que tome tres números como argumentos y devuelva el mayor de ellos.

funcion max_de_tres(valor1, valor2, valor3)
//2 - Definir una función max_de_tres(), que tome tres números como argumentos y devuelva el mayor de ellos.
    si valor1>valor2 && valor1>valor3
        retornar valor1
    osi valor2>valor3
        retornar valor2
    sino
        retornar valor3
    fin
fin

3 - Definir una función que calcule la longitud de una lista o una cadena dada. (Es cierto que Latino tiene la función lista.longitud() incorporada, pero escribirla por nosotros mismos resulta un muy buen ejercicio.

funcion longitud(cadenaPasada)
//3 - Definir una función que calcule la longitud de una una cadena dada.
//Latino tiene la función cadena.longitud() que hace esto mismo.
    lon = 0
    desde(i=1; i<=cadena.longitud(cadenaPasada);i++)
        lon += 1
    fin
    retornar lon
fin

4 - Escribir una función que tome un carácter y devuelva True si es una vocal, de lo contrario devuelve False.

funcion contiene(caracter)
//4 - Escribir una función que tome un carácter y devuelva verdadero si es una vocal, de lo contrario devuelve falso.
    vocales = ["a", "e", "i", "o" , "u"]
    desde (i=0; i<lista.longitud(vocales); i++)
        si vocales[i] == caracter
            retornar verdadero
        fin
    fin
    retornar falso
fin

funcion contiene2(caracter)
    //La misma función que contiene() pero usando cadenas regulares.
    
    x = cadena.regexl(caracter, "[aeiou]")
    si x
        retornar verdadero
    sino
        retornar falso
    fin
fin

5 - Escribir una función sum() y una función multip() que sumen y multipliquen respectivamente todos los números de una lista. Por ejemplo: sum([1,2,3,4]) debería devolver 10 y multip([1,2,3,4]) debería devolver 24. Aquí para abreviar, he unido las dos funciones en una sola, y la función necesita un segundo parámetro que puede ser "sumar" o "multiplicar".

funcion sum_o_multiplica(lista1, op)
//Escribir una función sum() y una función multip() que sumen y multipliquen respectivamente todos los números de una lista.
//Por ejemplo: sum([1,2,3,4]) debería devolver 10 y multip([1,2,3,4]) debería devolver 24.
//Si en el segundo parámetro le paso suma, sumará la lista, si le paso multiplica la multiplicará.
    
    si (op == "suma")
        resultado = 0
        desde (i=0; i<lista.longitud(lista1); i++)
            resultado += lista1[i]
        fin
    osi (op == "multiplica")
        resultado = 1
        desde (i=0; i<lista.longitud(lista1); i++)
            resultado *= lista1[i]
        fin
    sino
        retornar 0
    fin
    retornar resultado
fin

6 - Definir una función inversa() que calcule la inversión de una cadena. Por ejemplo la cadena "estoy probando" debería devolver la cadena "odnaborp yotse"

funcion inversa(frase)
//6 - Definir una función inversa() que calcule la inversión de una cadena.
//Por ejemplo la cadena "estoy probando" debería devolver la cadena "odnaborp yotse"
//Latino tiene la función cadena.invertir() que hace esto mismo.

    al_reves = ""
    desde (i=cadena.longitud(frase)-1;i>=0; i--)
        al_reves = cadena.concatenar(al_reves, frase[i])
    fin
    retornar al_reves
fin

7 - Definir una función es_palindromo() que reconoce palíndromos (es decir, palabras que tienen el mismo aspecto escritas invertidas), ejemplo: es_palindromo ("radar") tendría que devolver True.

funcion es_palindromo(palabra)
//7 - Definir una función es_palindromo() que reconoce palíndromos (es decir, palabras que tienen el mismo aspecto escritas invertidas),
// ejemplo: es_palindromo ("radar") tendría que devolver verdadero.
    
    si (cadena.es_igual(cadena.invertir(palabra),palabra))
        retornar verdadero
    sino
        retornar falso
    fin
fin

8 - Definir una función superposicion() que tome dos listas y devuelva True si tienen al menos un miembro en común o devuelva False de lo contrario. Escribir la función usando el bucle for anidado.

 funcion superposicion(lista1, lista2)
//8 - Definir una función superposicion() que tome dos listas y devuelva verdadero si tienen al menos un miembro en común o
//devuelva falso de lo contrario. Escribir la función usando el bucle for anidado.

    desde (i=0; i<lista.longitud(lista1);i++)
        desde (j=0; j<lista.longitud(lista2);j++)
            si (lista1[i]==lista2[j])
                retornar verdadero
            fin
        fin
    fin
    retornar falso
fin

9 - Definir una función generar_n_caracteres() que tome un entero n y devuelva el caracter multiplicado por n. Por ejemplo: generar_n_caracteres(5, "x") debería devolver "xxxxx".

funcion generar_n_caracteres(caracter, cantidad)
//9 - Definir una función generar_n_caracteres() que tome un entero n y devuelva el caracter
// multiplicado por n. Por ejemplo: generar_n_caracteres(5, "x") debería devolver "xxxxx".

    genero = ""
    desde (i=1; i<=cantidad; i++)
        genero = cadena.concatenar(genero, caracter)
    fin
    retornar genero
fin

10 - Definir un histograma procedimiento() que tome una lista de números enteros e imprima un histograma en la pantalla. Ejemplo: procedimiento([4, 9, 7]) debería imprimir lo siguiente:
****
*********
*******

funcion procedimiento(lista1)
/* 10 - Definir un histograma procedimiento() que tome una lista de números enteros e imprima un histograma en la pantalla.
 Ejemplo: procedimiento([4, 9, 7]) debería imprimir lo siguiente:
****
*********
*******
*/
    x = ""
    desde (i=0; i<lista.longitud(lista1); i++)
        desde (j=1; j<= lista1[i]; j++)
            x = cadena.concatenar(x, "*")
        fin
        imprimir(x)
        x = ""
    fin
fin

 Como se puede comprobar hacer pequeños programas en este lenguaje es sencillo y espero que cada vez puedan hacerlo más potente y versátil.

Para colaborar lo mejor es pasar por la página del proyecto o por su grupo de Telegram.

4 comentarios:

  1. Lo de crear un Basic en español lo ha probado hasta Microsoft y siempre el resultado ha sido el mismo: un lenguaje para gente que cree que sabe programar y con muy corto recorrido.
    Mejor aprender a programar de verdad.

    ResponderEliminar
    Respuestas
    1. Hola.
      ¿Qué significa aprender a programar de verdad? ¿Lo que más se usa? ¿Lo que más te gusta a ti?
      No todo el que sabe programar se dedica a profesionalmente a programar. Tener a mano un lenguaje sencillo de aprender y de codificar para realizar un pequeño programa o script que te ayude en tu trabajo o en situaciones personales, también se le llama programar. Y para realizar estas pequeñas tareas no es necesario saber de C, C++ u otros lenguajes, con uno sencillito es suficiente. Está claro que Latino le falta mucho para hacer algo con el (entre otras cosas está lleno de bugs) pero un futuro podría servir a cualquiera para iniciarse a la programación o, lo dicho, para realizar pequeños programas para su día a días sin complicaciones.
      Un saludo.

      Eliminar
  2. ¡Que cosa más ridícula!

    ResponderEliminar
  3. Mejor en griego clásico, o arameo.

    ResponderEliminar