Autor: Leonardo Gutiérrez Ramírez.
Nombre de la aplicación: yarelang.
Lenguaje: C++.
yare es un pequeño lenguaje de programación en crecimiento que tiene algunas características peculiares que pudieran ser utilizadas para implementar un pequeño algoritmo de cálculo numérico o de otra índole.
yare tiene como característica que puedes programar en inglés o en español, por ejemplo, realizar un ciclo, es lo mismo que utilices la palabra reservada while o mientras.
yare está programado en C++ (aunque contiene elementos de C) utilizando Bison y Flex.
El proyecto yare, tiene licencia GPL v3.
Características
Variables
En Yare por defecto hay 26 variables globales listas para utilizarse en cualquier momento, estas tienen de identificador las letras del abecedario, desde A hasta Z.
Los identificadores para estas variables no son sensibles a mayúsculas y minúsculas.
Ejemplo de uso:
El tema de asignación de variables lo veremos más adelante.
Variables definidas por el usuario
El usuario puede crear variables, pero estas deben estar delimitadas por el caracter ':', dentro de estos caracteres puede estar cualquier combinación entre estos símbolos:
Los identificadores pueden tener una longitud de hasta 99 caracteres.
Ejemplo de uso:
Literales de asignación
Los valores que pueden ser asignados a las variables son los siguientes:
Enteros o decimales, 123762, 3.141516.
Números hexadecimales, 0x0, 0x12a, 0xa, 0xb524, empezando por un cero, seguido de una 'x' mayúscula o minúscula, seguido de cualquier combinación de digitos y de letras entre a y f.
Números octales, 123o, 423o, 76O, 624o, empezando por cualquier dígito entre 0 y 7, seguido de la letra 'o'.
Números binarios, 0101001b, 0001b, 0b, 1b, cualquier combinación entre 1 y 0's seguido de una letra 'b'.
Ejemplos de uso:
Constantes numéricas
Yare cuenta actualmente con 9 constantes numéricas, son las siguientes:
Otras constantes pueden ser fácilmente añadidas.
Asignación de variables
La asignación de valores a las variables es bastante flexible.
Puede realizarse de las siguientes maneras:
Utilizando el operador =:
Utilizando el operador to:
Utilizando la sentencia move y to:
Utilizando la sintaxis tipo assembly:
Utilizando asignaciones tipo pascal:
Utilizando let o set con =:
Utilizando let o set con to:
Esta sintaxis aplica también a variables definidas por el usuario.
Asignación aleatoria
Se puede dar un valor aleatorio a una variable de la siguiente manera:
Asignación con smileys
Se puede asignar/inicializar una variable a 1, 0 o -1 de la siguiente manera:
Ejemplo de uso:
Intercambio de valores de variables
Se puede intercambiar los valores de las variables por medio del operador <->:
Ejemplo de uso:
Imprimir en pantalla
Se puede utilizar la sentencia print o printn.
La sentencia print imprime el valor de la expresión pasado como argumento sin añadir un fin de línea.
La sentencia printn añade un fin de línea al argumento.
Ejemplo de uso:
Se pueden imprimir también en pantalla cadenas de texto con la sentencia puts y putsn.
La sentencia puts imprime el texto en pantalla pero sin añadir un fín de línea.
La sentencia putsn añade un fín de línea al final del texto.
Ejemplos de uso:
Caracteres de escape
Se pueden incluir cualquiera de estos caracteres en el texto a imprimir:
Ejemplos de uso:
Sentencias de control
Sentencia IF
Toma una decisión referente a una acción, se ejecuta un bloque si es verdadero (1).
Se puede escribir if(expresión) o si(expresion).
Ejemplo de uso:
Usando else.
Usando else-if:
Operadores lógicos y relacionales
Operador ternario
yare cuenta con el clásico operador ternario utilizado para expresiones de la siguiente manera:
Ejemplos de uso:
Se asigna el valor de 1 a x.
Operadores aritméticos
Ciclos
while
Ejemplo de uso:
Las llaves de bloques se utilizan cuando queremos agrupar las sentencias al ciclo, pero si solo es una sentencia dentro del ciclo se pueden omitir las llaves de bloque.
do-while
Ejemplo de uso:
for de rango
La sintaxis del ciclo for de rango es la siguiente:
Ejemplo de uso:
La variable global, en este caso x almacenará el valor de la iteración dentro del ciclo.
Se pueden utilizar la cantidad de puntos que se desee, siempre y cuando sean más de 3.
Sentencia break
Al igual que otros lenguajes de programación, yare tiene una sentencia break que ayudará a detener el ciclo.
Ejemplo de uso:
Pueden tenerse ciclos anidados. El siguiente programa genera un triangulo hecho con asteriscos utilizado un ciclo anidado.
Comentarios
Hay diversas maneras de utilizar comentarios dentro de un programa yare, son los siguientes:
La sintaxis del comentario anterior sirve para comentarios de una sola línea.
Ejemplo de uso:
La sintaxis del comentario anterior sirve para comentarios de una sola línea.
Ejemplo de uso:
La sintaxis del comentario anterior sirve para comentarios de una sola línea.
Ejemplo de uso:
La sintaxis del comentario anterior sirve para comentarios de una sola línea.
Ejemplo de uso:
Aún hay más características por mostrar, pueden consultarlas en mi blog:
http://leonardogtzr.wordpress.com/
Pueden descargar el código desde aquí:
https://github.com/leogtzr/yarelang-c--/archive/master.zip
Pantallazo:
Factorial de un número:
¡Saludos!
Nombre de la aplicación: yarelang.
Lenguaje: C++.
yare es un pequeño lenguaje de programación en crecimiento que tiene algunas características peculiares que pudieran ser utilizadas para implementar un pequeño algoritmo de cálculo numérico o de otra índole.
yare tiene como característica que puedes programar en inglés o en español, por ejemplo, realizar un ciclo, es lo mismo que utilices la palabra reservada while o mientras.
yare está programado en C++ (aunque contiene elementos de C) utilizando Bison y Flex.
El proyecto yare, tiene licencia GPL v3.
Características
Variables
En Yare por defecto hay 26 variables globales listas para utilizarse en cualquier momento, estas tienen de identificador las letras del abecedario, desde A hasta Z.
Los identificadores para estas variables no son sensibles a mayúsculas y minúsculas.
Ejemplo de uso:
Código [Seleccionar]
a = 1 + 2 * 3;
z = a + 1;
.
El tema de asignación de variables lo veremos más adelante.
Variables definidas por el usuario
El usuario puede crear variables, pero estas deben estar delimitadas por el caracter ':', dentro de estos caracteres puede estar cualquier combinación entre estos símbolos:
Código [Seleccionar]
"
'
Cualquier dígito (0-9)
Espacio
_
#
@
Cualquier letra (excepto la 'ñ')
Tabulador
+
-
^
|
(
)
\
/
!
Los identificadores pueden tener una longitud de hasta 99 caracteres.
Ejemplo de uso:
Código [Seleccionar]
: hola ! : = -1;
: esta es mi variable !!!! : = 2;
: : = 345345;
: : = 1 + 2 * 3;
:resultados simulacion : = -2.00023;
.
Literales de asignación
Los valores que pueden ser asignados a las variables son los siguientes:
Enteros o decimales, 123762, 3.141516.
Números hexadecimales, 0x0, 0x12a, 0xa, 0xb524, empezando por un cero, seguido de una 'x' mayúscula o minúscula, seguido de cualquier combinación de digitos y de letras entre a y f.
Números octales, 123o, 423o, 76O, 624o, empezando por cualquier dígito entre 0 y 7, seguido de la letra 'o'.
Números binarios, 0101001b, 0001b, 0b, 1b, cualquier combinación entre 1 y 0's seguido de una letra 'b'.
Ejemplos de uso:
Código [Seleccionar]
a = ((0x2 ^ 100b) - 3.141516) + 5o;
printn(a);
.
Constantes numéricas
Yare cuenta actualmente con 9 constantes numéricas, son las siguientes:
Código [Seleccionar]
pi – número pi
e – valor de e
log2e - valor de log2e
log10e – valor de log10e
ln2 – valor de loge2
ln10 – valor de loge10
sqrt2 – valor de pi entre 2.
sqrt3 – valor de pi entre 3.
sqrt5 – valor de pi entre 5.
Ejemplo de uso:Código [Seleccionar]
printn(const.pi);
.
printn(const.pi + 2 * 11b);
.
Otras constantes pueden ser fácilmente añadidas.
Asignación de variables
La asignación de valores a las variables es bastante flexible.
Puede realizarse de las siguientes maneras:
Utilizando el operador =:
Código [Seleccionar]
a = 1 + 2;
.
Utilizando el operador to:
Código [Seleccionar]
a = 1;
a to a + 1;
printn(a);
.
Utilizando la sentencia move y to:
Código [Seleccionar]
move 1 + 2 * 3 to a;
printn(a);
.
Utilizando la sintaxis tipo assembly:
Código [Seleccionar]
mov a, 1 + 2 * 3;
printn(a);
.
Utilizando la sintaxís <-:Código [Seleccionar]
a <- 1 + 2 * 3;
printn(a);
.
Utilizando asignaciones tipo pascal:
Código [Seleccionar]
a := 1 + 2 * 3;
printn(a);
.
Utilizando let o set con =:
Código [Seleccionar]
set x = 1 + 2 * 3;
printn(x);
.
Código [Seleccionar]
let x = 1 + 2 * 3;
printn(x);
.
Utilizando let o set con to:
Código [Seleccionar]
set x to 1 + 2 * 3;
printn(x);
.
let x to 1 + 2 * 3;
printn(x);
.
Esta sintaxis aplica también a variables definidas por el usuario.
Asignación aleatoria
Se puede dar un valor aleatorio a una variable de la siguiente manera:
Código [Seleccionar]
x = ?;
printn(x);
.
Asignación con smileys
Se puede asignar/inicializar una variable a 1, 0 o -1 de la siguiente manera:
Ejemplo de uso:
Código [Seleccionar]
a = :);
z = :(;
y = :|;
printn(a);
printn(z);
printn(y);
.
Intercambio de valores de variables
Se puede intercambiar los valores de las variables por medio del operador <->:
Ejemplo de uso:
Código [Seleccionar]
x = 2;
:ok: = 3;
x<->:ok:;
printn(x);
printn(:ok:);
.
Imprimir en pantalla
Se puede utilizar la sentencia print o printn.
La sentencia print imprime el valor de la expresión pasado como argumento sin añadir un fin de línea.
La sentencia printn añade un fin de línea al argumento.
Ejemplo de uso:
Código [Seleccionar]
print(const.pi + 2);
.
Código [Seleccionar]
printn(const.pi + 2);
.
Se pueden imprimir también en pantalla cadenas de texto con la sentencia puts y putsn.
La sentencia puts imprime el texto en pantalla pero sin añadir un fín de línea.
La sentencia putsn añade un fín de línea al final del texto.
Ejemplos de uso:
Código [Seleccionar]
puts("Hola mundo en Yare!");
.
Código [Seleccionar]
putsn("Hola mundo en Yare!");
.
Caracteres de escape
Se pueden incluir cualquiera de estos caracteres en el texto a imprimir:
Código [Seleccionar]
\n – Nueva línea
\t – Tab horizontal
\s – Espacio
\b – Backspace (retroceso)
\r – Retorno de carro
\f – Alimentación de página (sólo para impresora)
\q – Añade un caracter de comillas dobles '"'
\\ - Añade el caracter '\'
\u – Imprime el siguiente caracter en mayúscula
\l – Imprime el siguiente caracter en minúscula.
\[0-9] – Imprime la cantidad de fin de líneas especificado en el dígito.
Ejemplos de uso:
Código [Seleccionar]
putsn("\tHola\smundo\5");
.
Sentencias de control
Sentencia IF
Toma una decisión referente a una acción, se ejecuta un bloque si es verdadero (1).
Se puede escribir if(expresión) o si(expresion).
Ejemplo de uso:
Código [Seleccionar]
if(const.pi * 2 <= 10) {
putsn("Ok");
}
.
Usando else.
Código [Seleccionar]
if(const.pi * 2 <= 10) {
putsn("Ok");
} else {
putsn("Nel ... ");
}
.
Usando else-if:
Código [Seleccionar]
x = 2;
if(x == 0) {
putsn("cero...");
} else if(x == 1) {
putsn("uno ...");
} else if(x == 2) {
putsn("dos ... ");
} else {
putsn("otro ... ");
}
.
Operadores lógicos y relacionales
Código [Seleccionar]
|| - OR
&& - AND
>= - Mayor igual
<= - Menor igual
== - Igual
!= - Distinto
"or" - OR
"and" - AND
-eq - Igual
-neq – Distinto/Diferente a
-lt – Menor que
-gt – Mayor que
"menor" - Menor que
"menorigual" - Menor igual
"mayor" - Mayor que
"mayorigual" - Mayor o igual
"igual" - Igual
|, or a nivel de bits
&, and a nivel de bits
x = 2;
if(x igual 2) {
putsn("ok");
}
.
x = 2;
y = x -eq 2;
printn(y);
.
x = 2;
if((x -eq 1) or (x == 2)) {
putsn("Ok ... ");
} else {
putsn("Nel ... ");
}
.
x = 6;
if(x menor 10) {
putsn("bien ... ");
}
.
Operador ternario
yare cuenta con el clásico operador ternario utilizado para expresiones de la siguiente manera:
Código [Seleccionar]
expresión-lógica ? valor-si-verdadero : valor-si-falso
Ejemplos de uso:
Código [Seleccionar]
x = 2;
x = (x mod 2 == 0) ? 0 : 1;
printn(x);
.
Se asigna el valor de 1 a x.
Operadores aritméticos
Código [Seleccionar]
+
"mas" Operador de suma con palabra
-
"menos" Operador de resta con palabra
*
"por" Operador de multiplicación con palabra
/
"entre" Operador de división con palabra
%
mod Operador módulo con palabra
! Operador unario "not"
~ Operador unario "not"
not Operador unario "not"
no Operador unario "not"
^ Exponenciación
xorop Operador XOR
<< Desplazamiento de bits a la izquierda
>> Desplazamiento de bits a la derecha
Ciclos
while
Ejemplo de uso:
Código [Seleccionar]
while(x menor 10) {
printn(x);
x to x + 1;
}
.
while(x@+ menor 10) printn(x);
.
Las llaves de bloques se utilizan cuando queremos agrupar las sentencias al ciclo, pero si solo es una sentencia dentro del ciclo se pueden omitir las llaves de bloque.
do-while
Ejemplo de uso:
Código [Seleccionar]
do {
printn(x);
set x to x + 1;
} while(x menor 10);
.
for de rango
La sintaxis del ciclo for de rango es la siguiente:
Código [Seleccionar]
for(expresion ...[.+] expresion, variable global de control) {
bloque de código
}
Ejemplo de uso:
Código [Seleccionar]
foreach(1 ...... 20, x) {
printn(x);
}
.
Código [Seleccionar]
foreach(1 .... rand(), x) {
printn(x);
}
.
La variable global, en este caso x almacenará el valor de la iteración dentro del ciclo.
Se pueden utilizar la cantidad de puntos que se desee, siempre y cuando sean más de 3.
Sentencia break
Al igual que otros lenguajes de programación, yare tiene una sentencia break que ayudará a detener el ciclo.
Ejemplo de uso:
Código [Seleccionar]
foreach(1 ... rand(), x) {
if(x igual 5) {
break;
} else {
printn(x);
}
}
.
Pueden tenerse ciclos anidados. El siguiente programa genera un triangulo hecho con asteriscos utilizado un ciclo anidado.
Código [Seleccionar]
foreach(1 ... 10, x) {
foreach(1 ... x, y) {
puts("*");
}
puts("\n");
}
.
Comentarios
Hay diversas maneras de utilizar comentarios dentro de un programa yare, son los siguientes:
Código [Seleccionar]
# Comentario tipo shell
La sintaxis del comentario anterior sirve para comentarios de una sola línea.
Ejemplo de uso:
Código [Seleccionar]
x = 1 + 2; # Comentario ....
.
Código [Seleccionar]
// Comentario tipo C++
La sintaxis del comentario anterior sirve para comentarios de una sola línea.
Ejemplo de uso:
Código [Seleccionar]
x = 1 + 2; // Comentario ....
Código [Seleccionar]
rem Comentario tipo Basic
La sintaxis del comentario anterior sirve para comentarios de una sola línea.
Ejemplo de uso:
Código [Seleccionar]
x = 1 + 2; rem Comentario ....
rem ... Otro comentario ...
.
Código [Seleccionar]
:: Comentario tipo Batch Scripts
La sintaxis del comentario anterior sirve para comentarios de una sola línea.
Ejemplo de uso:
Código [Seleccionar]
x = 1 + 2; :: Mi comentario ...
::: Hola!
.
Código [Seleccionar]
-- Comentario tipo SQL
Aún hay más características por mostrar, pueden consultarlas en mi blog:
http://leonardogtzr.wordpress.com/
Pueden descargar el código desde aquí:
https://github.com/leogtzr/yarelang-c--/archive/master.zip
Pantallazo:
Factorial de un número:
¡Saludos!