Palabras raras, vocabulario

Estos últimos meses que he estado leyendo con bastante frecuencia, he ido recopilando una serie de palabras que me han parecido raras o quizás fuera de lo común, no me juzguen, hay unas que para algunos les parecerán del todo normal, pero para mí no, o por lo menos las leo o uso no muy a menudo.

En fín, estas son las palabras, se darán cuenta que son bastantes, creo que algunas están repetidas, espero les sirva a todos para aumentar su vocabulario.

¡Saludos!

  • Pagoda 
  • Corintia
  • Impelido
  • Etérea
  • Afin urbanas
  • Vides
  • Apoteosis
  • Desternillar
  • Mimético
  • Vahído
  • Cuáquero
  • Cauda
  • Áulico
  • Beldad 
  • Intersticio
  • Pacuache
  • Jaiboles
  • Beldad
  • Mequetrefe
  • Esponsales
  • Becado
  • Guernica de Picasso
  • Dispendioso
  • Rictus
  • Carnell suicidios
  • Inocula
  • Rutilante
  • Ajuar
  • Probe
  • Concomitante
  • Somera
  • Émulo
  • Asceta
  • Laya
  • Late
  • Circunspecto
  • Fútiles
  • Prosapia
  • Santoyo
  • Plétora
  • Volitivo
  • Vesubio
  • Deleznable
  • AZogue
  • Repelon
  • Hirsuta
  • Displicencia
  • Abluciones
  • Barahúnda 
  • Plúmbeo
  • Pulsion
  • Inmola
  • Efluvio
  • Habon 
  • Detritos
  • Nana
  • Machacona
  • Berrea
  • Vaharadas
  • Briznas
  • Cánula 
  • Ajados
  • Arabescos
  • Yergue
  • Guirigay
  • Laudes
  • Desbarrar
  • Miasmas
  • Curia
  • Volutas
  • Excrecencia 
  • Muesca
  • Prelado
  • Dardabasies
  • Tañer
  • Catafalco
  • Alabardas
  • Apostatas
  • Prevaricadores
  • Genuflexión
  • Vaharadas
  • Briznas
  • Cánula 
  • Ajados
  • Arabescos
  • Yergue
  • Guirigay
  • Laudes
  • Desbarrar
  • Miasmas
  • Curia
  • Volutas
  • Excrecencia 
  • Muesca
  • Prelado
  • Dardabasies
  • Tañer
  • Catafalco
  • blasón
  • dogo
  • derogación
  • lisonjas
  • Vaharadas
  • Briznas
  • Cánula 
  • Ajados
  • Arabescos
  • Yergue
  • Guirigay
  • Laudes
  • Desbarrar
  • Miasmas
  • Curia
  • Volutas
  • Excrecencia 
  • Muesca
  • Prelado
  • Dardabasies
  • Tañer
  • Catafalco
  • blasón
  • dogo
  • derogación
  • lisonjas
  • muías
  • desapacible
  • barahunda
  • comistrajo
  • fusta
  • meandros
  • tizon
  • Periplo
  • Sibilante
  • Riada
  • Sevicias
  • Detritos
  • Zarzas
  • Distendir, distender
  • Tonsurada
  • Conciliábulo
  • Carcamal
  • Esbirros
  • Nunciaturas
  • Exequias
  • Impertérrito
  • Curia
  • Retama
  • Salitre
  • Inextricable 
  • Estoicamente
  • Morros
  • Embelesada
  • Taciturno
  • Vaharadas
  • Briznas
  • Cánula 
  • Ajados
  • Arabescos
  • Yergue
  • Guirigay
  • Laudes
  • Desbarrar
  • Miasmas
  • Curia
  • Volutas
  • Excrecencia 
  • Muesca
  • Prelado
  • Dardabasies
  • Tañer
  • Catafalco
  • blasón
  • dogo
  • derogación
  • lisonjas
  • muías
  • desapacible
  • barahunda
  • comistrajo
  • fusta
  • meandros
  • tizon
  • Periplo
  • Sibilante
  • Riada
  • Sevicias
  • Detritos
  • Zarzas
  • Distendir, distender
  • Tonsurada
  • Conciliábulo
  • Carcamal
  • Esbirros
  • Nunciaturas
  • Exequias
  • Impertérrito
  • Curia
  • cogorza
  • diatriba
  • parterre
  • azaleas
  • flora
  • sorna
  • apabullada
  • fustigador
  • timorata
  • Reticente
  • Epíteto
  • Tácito
  • Escocer
  • Conato
  • Pueril
  • Comedido
  • Diáfano
  • Barrunto
  • Lascivo
  • Ostracismo
  • Remilgos
  • Subrepticia
  • Vaharadas
  • Briznas
  • Cánula 
  • Ajados
  • Arabescos
  • Yergue
  • Guirigay
  • Laudes
  • Desbarrar
  • Miasmas
  • Curia
  • Volutas
  • Excrecencia 
  • Muesca
  • Prelado
  • Dardabasies
  • Tañer
  • Catafalco
  • blasón
  • dogo
  • derogación
  • lisonjas
  • muías
  • desapacible
  • barahunda
  • comistrajo
  • fusta
  • meandros
  • tizon
  • Periplo
  • Sibilante
  • Riada
  • Sevicias
  • Detritos
  • Zarzas
  • Distendir, distender
  • Tonsurada
  • Conciliábulo
  • Carcamal
  • Esbirros
  • Nunciaturas
  • Exequias
  • Impertérrito
  • Curia
  • cogorza
  • diatriba
  • parterre
  • azaleas
  • flora
  • sorna
  • apabullada
  • fustigador
  • timorata
  • escuece
  • escozor
  • lascivo
  • casto
  • fortuito
  • sendos
  • solícito
  • Hirsuta
  • vehemencia
  • lascivo
  • espurreo
  • espurrer
  • jocoso
  • ávida
  • Abocan
  • Reticente
  • Frugalidad
  • Prerrafaelita
  • Amilano
  • Grogui
  • Fárrago so
  • Gandulear
  • lapa
  • Vaharadas
  • Briznas
  • Cánula 
  • Ajados
  • Arabescos
  • Yergue
  • Guirigay
  • Laudes
  • Desbarrar
  • Miasmas
  • Curia
  • Volutas
  • Excrecencia 
  • Muesca
  • Prelado
  • Dardabasies
  • Tañer
  • Catafalco
  • blasón
  • dogo
  • derogación
  • lisonjas
  • muías
  • desapacible
  • barahunda
  • comistrajo
  • fusta
  • meandros
  • tizon
  • Periplo
  • Sibilante
  • Riada
  • Sevicias
  • Detritos
  • Zarzas
  • Distendir, distender
  • Tonsurada
  • Conciliábulo
  • Carcamal
  • Esbirros
  • Nunciaturas
  • Exequias
  • Impertérrito
  • Curia
  • cogorza
  • diatriba
  • parterre
  • azaleas
  • flora
  • sorna
  • apabullada
  • fustigador
  • timorata
  • escuece
  • escozor
  • lascivo
  • casto
  • fortuito
  • sendos
  • solícito
  • Hirsuta
  • vehemencia
  • lascivo
  • espurreo
  • espurrer
  • jocoso
  • ávida
  • Abocan
  • Reticente
  • Frugalidad
  • Prerrafaelita
  • Amilano
  • Grogui
  • Fárrago so
  • Gandulear
  • Rezuma
  • Concupiscente
  • anfetamina
  • Floritura
  • Turgente
  • Sinergía
  • Farfullar
  • Enfurruñar
  • Céfiro
  • Inefable
  • lascivia
  • aciago
  • Pilosidad
  • Astroso
  • Sibilante
  • Osmosis
  • Pánfila 
  • Comba
  • Agazapada
  • Zarzas
  • Salmodia
  • Flirtear
  • tumefactos
  • anquilosa
  • reptar
  • seto
  • atrio
  • cúmulo
  • levita
  • frufrú
  • chirría
  • goznes
  • magma
  • ribete
  • dicasterios
  • maromas
  • desbarrar
  • curia
  • tumefacciones
  • escorbuto
  • Mejunje
  • Magra
  • Feculento 
  • Sórdido 
  • Aluvión
  • Zureaban
  • Estorninos
  • Piragua
  • Periplo
  • Zarzal
  • Sopor
  • Buril
  • Ciénagas
  • Carlinga 
  • Macilento
  • Yermas
  • Exequias
  • Deshilvanado
  • Febril
  • Estrave
  • Vaharadas
  • Briznas
  • Cánula 
  • Ajados
  • Arabescos
  • Yergue
  • Guirigay
  • Laudes
  • Desbarrar
  • Miasmas
  • Curia
  • Volutas
  • Excrecencia 
  • Muesca
  • Prelado
  • Dardabasies
  • Tañer
  • Catafalco
  • blasón
  • dogo
  • derogación
  • lisonjas
  • muías
  • desapacible
  • barahunda
  • comistrajo
  • fusta
  • meandros
  • tizon
  • Periplo
  • Sibilante
  • Riada
  • Sevicias
  • Detritos
  • Zarzas
  • Distendir, distender
  • Tonsurada
  • Conciliábulo
  • Carcamal
  • Esbirros
  • Nunciaturas
  • Exequias
  • Impertérrito
  • Curia
  • cogorza
  • diatriba
  • parterre
  • azaleas
  • flora
  • sorna
  • apabullada
  • fustigador
  • timorata
  • escuece
  • escozor
  • lascivo
  • casto
  • fortuito
  • sendos
  • solícito
  • Hirsuta
  • vehemencia
  • lascivo
  • espurreo
  • espurrer
  • jocoso
  • ávida
  • Abocan
  • Reticente
  • Frugalidad
  • Prerrafaelita
  • Amilano
  • Grogui
  • Fárrago so
  • Gandulear
  • Rezuma
  • Concupiscente
  • anfetamina
  • Floritura
  • Turgente
  • Sinergía
  • Farfullar
  • Enfurruñar
  • Céfiro
  • Inefable
  • Shadow
  • Irascible
  • Soliviantó
  • Pergeñar
  • Elucubración
  • Eulogio
  • Reverberar
  • Enjuto
  • Soliloquio
  • Bobalicón
  •  Vorágine

¡Saludos!

Publicado en Lectura | Etiquetado , , , | 2 comentarios

Toccata No.4 J.S Bach + Random Shit

Toccata No.4 J.S Bach + Random Shit

Tocando la guitarra 🙂

Publicado en Música | Deja un comentario

Yare, un lenguaje de programación propio

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.

Estoy buscando colaboradores para mejorar el código y sobre todo los pendientes al final de la entrada.

Los errores que encuentres al ejecutar Yare agradecería enormemente que me los hicieras saber con una pequeña descripción a mi e-mail leorocko13@hotmail.com o leogutierrezramirez@gmail.com.

Características

Estructura

La estructura general de un script en Yare es la siguiente:

[procedimientos]*[sentencias]*.

El caracter . al final del programa es obligatorio.

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:

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:

· “

· ‘

· Cualquier dígito (0-9)

· Espacio

· _

· #

· @

· Cualquier letra (excepto la ‘ñ’)

· Tabulador

· +

· –

· ^

· |

· (

· )

· \

· /

· !

Los identificadores pueden tener una longitud de hasta 99 caracteres.

Ejemplo de uso:

: 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:

a = ((0x2 ^ 100b) – 3.141516) + 5o;

printn(a);

.

Constantes numéricas

Yare cuenta actualmente con 9 constantes numéricas, son las siguientes:

· 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:

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 =:

a = 1 + 2;

.

Utilizando el operador to:

a = 1; a to a + 1; printn(a); .

Utilizando la sentencia move y to:

move 1 + 2 * 3 to a; printn(a); .

Utilizando la sintaxis tipo assembly:

mov a, 1 + 2 * 3; printn(a); .

Utilizando la sintaxís <-:

a <- 1 + 2 * 3; printn(a); .

Utilizando asignaciones tipo pascal:

a := 1 + 2 * 3; printn(a); .

Utilizando let o set con =:

set x = 1 + 2 * 3; printn(x); .
let x = 1 + 2 * 3; printn(x); .

Utilizando let o set con to:

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:

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:

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:

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:

print(const.pi + 2); .
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:

puts(“Hola mundo en Yare!”); .
putsn(“Hola mundo en Yare!”); .

Caracteres de escape

Se pueden incluir cualquiera de estos caracteres en el texto a imprimir:

· \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:

putsn(“\tHola\smundo\5”); .

Sentencia system

La sentencia system se puede utilizar para mandar un comando a el sistema operativo.

Ejemplo de uso:

system(“touch file_created_by_yare.txt”); .

Sentencia exit

La sentencia exit se puede utilizar para salir inmediatamente del programa pasando una expresión a la sentencia. Esto significa que ese valor de expresión será envíado al sistema operativo.

Ejemplo de uso:

x = 11b; exit(x); .

clip_image002

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:

if(const.pi * 2 <= 10) { putsn(“Ok”); } .

Usando else.

if(const.pi * 2 <= 10) { putsn(“Ok”); } else {putsn(“Nel … “);}.

Usando else-if:

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

|| – 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

Ejemplos de uso:

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:

expresión-lógica ? valor-si-verdadero : valor-si-falso

Ejemplos de uso:

x = 2; x = (x mod 2 == 0) ? 0 : 1; printn(x); .

Se asigna el valor de 1 a x.

Operadores aritméticos

+
“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:

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:

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:

for(expresion …[.+] expresion, variable global de control) { bloque de código}

Ejemplo de uso:

foreach(1 …… 20, x) { printn(x); } .
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:

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.

foreach(1 … 10, x) { foreach(1 … x, y) { puts(“*”); } puts(“\n”); }

.

El resultado es el siguiente:

clip_image004

Comentarios

Hay diversas maneras de utilizar comentarios dentro de un programa yare, son los siguientes:

# Comentario tipo shell

La sintaxis del comentario anterior sirve para comentarios de una sola línea.

Ejemplo de uso:

x = 1 + 2; # Comentario …. .
// Comentario tipo C++

La sintaxis del comentario anterior sirve para comentarios de una sola línea.

Ejemplo de uso:

x = 1 + 2; // Comentario …. .
rem Comentario tipo Basic

La sintaxis del comentario anterior sirve para comentarios de una sola línea.

Ejemplo de uso:

x = 1 + 2; rem Comentario …. rem … Otro comentario ….
:: Comentario tipo Batch Scripts

La sintaxis del comentario anterior sirve para comentarios de una sola línea.

Ejemplo de uso:

x = 1 + 2; :: Mi comentario … ::: Hola! .
— Comentario tipo SQL

La sintaxis del comentario anterior sirve para comentarios de una sola línea.

Ejemplo de uso:

x = 1 + 2; — Hola mundo!!!! — Hola mundo 🙂 .
/* Comentario tipo C */

La sintaxis del comentario anterior sirve para comentarios de varias líneas (multilínea).

Ejemplo de uso:

x = 1 /* Hola */ + 2; /* Comentario de varias lineas */

printn(x);

.

Sentencias tipo assembly

mov

Se utiliza para asignar un valor a una variable global o variable definida por el usuario.

Ejemplo de uso:

while(x -lt 10) { mov x, x + 1; printn(x); } .

Se asigna el valor que esté del lado derecho de la coma a la variable que esté del lado izquierdo.

add

Se utiliza para sumar un valor a una variable o variable definida por el usuario.

Ejemplo de uso:

while(x -lt 10) { add x, 1; printn(x); } .

En este ejemplo, se le suma 1 al valor que ya tiene la variable.

sub

Se utiliza para restar un valor a una variable o variable definida por el usuario.

Ejemplo de uso:

x to 10; while(x -gt 0) { sub x, 1; printn(x); } .

En este ejemplo, se le resta 1 al valor que ya tiene la variable.

mul

Se utiliza para multiplicar el valor de una variable por la expresión dada y almacenar el resultado en la variable.

Ejemplo de uso:

:factorial: = 5; r = 1; foreach(1 …. :factorial:, i) { mul r, i; } puts(“Resultado: “);

printn(r);

.

El ejemplo anterior calcula el factorial de 5 (contenido de la variable :factorial:).

La pila virtual de Yare

Yare cuenta con una pila virtual la cual puede ser utilizada para almacenar valores y recuperarlos después.

Existen las sentencias push y pop, para almacenar y recuperar valores respectivamente y stacksize para consultar la cantidad de elementos en la pila.

La cantidad de valores en la pila es indefinida, se puede usar de manera libre.

Ejemplos de uso:

:factorial: = 5; r = 1; foreach(1 …. :factorial:, i) { mul r, i; push r; }

puts(“Resultado: “);

printn(r);

puts(“Se siguió este camino para obtener el factorial de 5: \n”);

while(stacksize -gt 1) {

printn(pop);

}

.

Se almacenan los valores de la variable r en la pila para luego consultar uno por uno con pop.

Funciones del lenguaje

rand

Devuelve un valor aleatorio entre 0 y 100 (incluyéndolos).

Ejemplos de uso:

:factorial: = 5; printn(rand()); .

Range random

Esta expresión devuelve un número aleatorio entre el rango indicado.

Ejemplos de uso:

printn(1 …? 10); .
foreach(1 … 5 ….? 10, x) { printn(x); } .

Funciones matemáticas

Las siguientes funciones relacionadas con cálculos matemáticos están disponibles.

abs(expresion)
sqrt(expresion)
acos(expresion)
asin(expresion)
atan(expresion)
ceil(expresion)
cos(expresion)
cosh( expresion)
exp(expresion)
floor(expresion)
ln(expresion)
sin(expresion)
sinh(expresion)
tan(expresion)
tanh(expresion)
sumatoria(expresion, expresion) Reliza la sumatoria desde el primer argumento hasta el segundo argumento.
factorial(expresion) Regresa el factorial del argumento.

Opvar (Operador Variable)

El opvar es una variable especial en la cual se puede almacenar un operador aritmético, se puede almacenar dentro del opvar un +, , *, /, ^.

Ejemplos de uso:

_@_ = +;x = 1 _@_ 2 * 3;if(8 igual (x _@_ 1)) {putsn(“Ok … “);} else {putsn(“Falso … “);

}

En este caso almacenamos en el opvar el operador +, para luego ser utilizado.

Arrays Lists

Yare cuenta con arrays que pueden utilizarse como listas, es decir, los arrays no tienen longitud.

La manera de declarar un array es la siguiente:

array(@ARRAY_ID);

Los identificadores para los arrays empiezan por el caracter @ seguido de cualquier combinación de estos símbolos:

·Una letra minúscula o mayúscula.

·Un dígito

·“

·’

·Tabulador

·Espacio

·#

Los identificadores de arrays pueden tener una longitud de hasta 99 caracteres.

Operaciones con arrays

Agregar un elemento (put)

array(@my_array);@my_array.put(1 + 2 * 3);printn(@my_array[0]);.

Se agrega un elemento al array y se obtiene el contenido del array en la posición 0 utilizando los corchetes para indexar el array.

Se puede consultar la cantidad de elementos del array con la sentencia size de la siguiente manera:

array(@my_array);@my_array.put(1 + 2 * 3);@my_array.put(2);@my_array.put(3);puts(“Elementos del array: “);printn(@my_array.size());

.

Puedes modificar un elemento en una determinada posición de la siguiente manera:

array(@my_array);@my_array.put(1 + 2 * 3);@my_array.put(2);@my_array.put(3);@my_array[0] = 3.141518;printn(@my_array[0]);

.

De nuevo utilizamos los corchetes para acceder al elemento en la posición indicada.

Al utilizar la sentencia put para añadir un elemento al array, el elemento se agrega al final de todos los elementos, si se desea agregar al inicio se puede utilizar la función putfront:

array(@my_array);@my_array.putfront(1);@my_array.putfront(2);@my_array.putfront(3);printn(@my_array[0]);.

Ordenación del arreglo

Se pueden ordenar los elementos del array utilizando la función sort, sort necesita de un argumento, si este argumento es 0 se ordenan los elementos de menor a mayor, si este es distinto a 0 entonces se ordenan de mayor a menor.

array(@my_array);@my_array.put(5);@my_array.put(8);@my_array.put(3);@my_array.put(10);@my_array.put(7);

set x to 0;

@my_array.sort(no 0);

while(x menor @my_array.size()) {

printn(@my_array[x]);

x += 1;

}

.

Eliminación de elementos del array por índice

Se puede eliminar un elemento del array basado en su índice utilizando la función del:

array(@my_array);@my_array.put(1);@my_array.put(2);@my_array.put(3);@my_array.put(4);@my_array.put(5);

printn(@my_array[2]);

@my_array.del(2);

printn(@my_array[2]);

.

Llenar el array con números aleatorios entre 0 y 1 utilizando la función fill

La función fill necesita de un argumento, que significa la cantidad de elementos entre 0 y 1 que se añadirán al array.

Ejemplo de uso:

array(@my_array);@my_array.fill(2);printn(@my_array[0]);printn(@my_array[1]);.

Eliminar todos los elementos del array

La función clear nos permite eliminar todos los elementos del array.

array(@my_array);@my_array.fill(2);@my_array.clear();.

Invertir los elementos de un array

Con la función reverse podemos invertir el orden de los elementos.

Ejemplo de uso:

array(@my_array);@my_array.fill(3);while(x menor @my_array.size()) printn(@my_array[x@+]);@my_array.reverse();x to 0;puts(“\1Orden invertido: \2”);

while(x menor @my_array.size()) printn(@my_array[x@+]);

.

Salida:

clip_image006

Incrementar y decrementar valores de variables

En Yare solo existen el preincremento y predecremento realizado por las funciones inc y dec.

Ambas funciones necesitan de una variable global o de una variable definida por el usuario.

Ejemplo de uso:

printn(inc(x));printn(x);.
printn(dec(x));printn(x);.

El mismo resultado se consigue utilizando el operador @+ o @-.

Ejemplo de uso:

x to 0;while(x@+ menor 10) {printn(x);}.
x to 10;while(x@- mayor 0) {printn(x);}.

Procedimientos

Se pueden crear procedimientos, estos pueden ser llamados en cualquier momento por la sentencia call.

Para definir un procedimiento basta con utilizar la palabra reservada proc, seguido del identificador para el procedimiento.

proc $CUALQUIER SIMBOLO$ {CUERPO DEL PROCEDIMIENTO}

Ejemplo de uso:

proc $parX$ {if(x % 2 == 0) {y = 1;} else {y = 0;}

}

El procedimiento anterior comprueba si el valor en ‘x’ es par o impar, si es par entonces modifica el valor de la variable global y a 1, sino deja el valor de la variable y a 0.

Para invocar el procedimiento se utiliza la sentencia call de la siguiente manera:

call $NOMBRE PROCEDIMIENTO$;

Ejemplo de uso:

x = 2;call $parX$;printn(y);

No pueden haber procedimientos dentro de otros procedimientos.

Yare soporta recursión, el siguiente ejemplo ilustra el algoritmo para calcular un factorial de manera recursiva:

# El resultado del factorial es almacenado en la variable global rproc $factorial$ {if(a mayor 1) {r *= a;a@-;call $factorial$;

}

}

r = 1;

a = 5;

call $factorial$;

puts(“Factorial de 5!: “);

printn(r);

.

Pendientes

· Planeo implementar la característica de números gigantes (algo como los BigInteger de Java) utilizando la librería GMP de GNU.

  • · Trabajo con archivos.
  • · Trabajo con cadenas y caracteres.
  • · Crear una página man page mejor documentación.
  • · Documentación para desarrolladores.
  • · Orden del código.
  • · Reducción de código innecesario.
  • Mejora en los avisos de error.

Saludos

Publicado en Programación | 3 comentarios