Lolcode - Guide rapide
LOLCODE est un langage de programmation ésotérique inspiré des choses amusantes sur Internet. Il est conçu pour tester les limites de la conception du langage de programmation.
Ce chapitre vous familiarisera avec la configuration de l'environnement local pour LOLCODE, son installation sur Windows et l'exécution de son script en ligne sur Tutorialspoint-codingground.
Configuration de l'environnement local
L'interpréteur LOLCODE est écrit en langage C. Il interprète le code écrit en langage LOLCODE sur plusieurs plates-formes. L'interpréteur LOLCODE est connu sous le nom de lci, qui signifie LOLCODE Interpreter.
Veuillez noter que LOLCODE prend officiellement en charge l'installation directe de l'interpréteur pour les systèmes d'exploitation MAC uniquement. Pour installer LOLCODE dans votre système d'exploitation, vous devez suivre les étapes ci-dessous -
- Appuyez sur Commande + Espace et tapez Terminal et appuyez sur enter/return clé
- Exécuter dans l'application Terminal
- $ git clone https://github.com/justinmeza/lci.git
- $ cd lci
- $ cmake.
- $ make && make install
Installation sous Windows
Si vous devez installer LOLCODE sur le système d'exploitation Windows, veuillez suivre ces étapes -
Ajoutez d'abord MinGW et Python au chemin de vos variables d'environnement. Pour ce faire, faites un clic droit surMy Computer, choisir Properties, puis sélectionnez Advanced system settings. Sélectionner Environment Variables. Dans cette boîte, sélectionnez lePATH variable puis cliquez sur Edit.
Maintenant, ajoutez "; C: \ MinGW \ bin; C: \ Python32" à la fin de ce chemin.
Ensuite, ouvrez le Command Prompt et accédez au répertoire du projet à l'aide de la commande "cd", par exemple.
Exécutez le script install.py.
Exécution de script en ligne avec TutorialsPoint - Codingground
Pour exécuter vos scripts facilement et rapidement, utilisez la plate- forme codingground fournie par TutorialsPoint. Pour cela, rendez-vous sur le lien suivant pour exécuter vos scripts en ligne -
https://www.tutorialspoint.com/execute_lolcode_online.phpLOLCODE a une syntaxe différente de celle des autres langages de programmation, cependant, il est plus facile à retenir. Ce chapitre vous donne la syntaxe de base de LOLCODE.
Constructions
Les constructions LOLCODE sont des mots d'argot. Le tableau suivant montre la liste alphabétique des constructions implémentées jusqu'à présent -
Sr.No. | Construction et utilisation |
---|---|
1 | BTW Il commence un commentaire sur une seule ligne. |
2 | DOWN <variable>!!<times> Cela correspond à variable = variable - fois. Notez que "times" est une extension de langage wut-only. |
3 | GIMMEH <variable> Cela représente l'instruction d'entrée. |
4 | GTFO Ceci est similaire à break dans d'autres langues et fournit un moyen de sortir d'une boucle. |
5 | HAI Cela correspond à main ()fonctionner dans d’autres langues. C'est le point d'entrée du programme dans LOLCODE. |
6 | HEREZ <label> Ceci est une autre extension de langage wut-only et déclare une étiquette à utiliser avec SHOO |
sept | I HAS A <type> <variable> Ceci déclare une variable dudit type. Il existe trois types intégrés dans LOLCODE -
Notez que les types sont une extension de langage wut-only. |
8 | IM IN YR LOOP Cela démarre une boucle infinie. La seule façon de sortir de la boucle est d'utiliser GTFO. Correspond à pour(;;) dans d'autres langues |
9 | IZ <expr1> <operator> <expr2>?: Conditional structure Ceci est similaire à l'opérateur if dans d'autres langues. L'opérateur est l'un des: PLUS GRAND QUE, PLUS PETIT QUE, SAEM AS. Notez que le? à la fin est facultatif. |
dix | KTHX Cela termine un bloc. Correspond à} |
11 | KTHXBAI Cela met fin à un programme |
12 | NOWAI Cela correspond à else |
13 | PURR <expr> Ceci imprime l'argument à l'écran, suivi d'une nouvelle ligne. C'est une extension de langage wut-only. |
14 | RELSE Cela correspond à else (if) |
15 | SHOO Ceci est une autre extension de langage wut-only, qui correspond à goto (l'horreur!) |
16 | UP <variable>!!<times> Cela correspond à variables = variable + temps. Ici, "times" est une extension de langage uniquement. |
17 | VISIBLE <expr> Cela imprime l'argument à l'écran. Notez que cela n'imprime pas de nouvelle ligne. |
18 | YARLY Ceci indique le début du bloc conditionnel "vrai" |
Quelques exemples de termes d'argot dans LOLCODE sont -
- HAI est salut
- KTHXBYE va bien, merci, au revoir
- BTW est au fait
- OBTW est oh, au fait
- TLDR est trop long; n'a pas lu
Espace blanc
Dans la plupart des langages de programmation, les mots clés ou les jetons peuvent ne pas avoir d'espaces entre eux. Cependant, dans certaines langues, des espaces sont utilisés dans les jetons pour les différencier.
Virgule
La virgule se comporte comme un mot-clé de nouvelle ligne dans la plupart des langues, par exemple, \n en Java et C. Vous pouvez écrire de nombreuses commandes sur une seule ligne dans LOLCODE, à condition que vous les sépariez par une virgule (,).
Trois périodes (…)
Les trois points (…) vous permettent de combiner plusieurs lignes de code en une seule ligne ou une seule commande en incluant (...) à la fin de la ligne. Cela permet au compilateur de traiter le contenu de la ligne suivante comme le contenu de la ligne précédente uniquement. Des lignes infinies de code peuvent être écrites ensemble en une seule commande, à condition que chaque ligne se termine par trois points.
Un commentaire se termine par une nouvelle ligne. Veuillez noter que la suite de ligne (...) et (,) après le commentaire (BTW) sont ignorées par le lci.
commentaires
Les commentaires sur une seule ligne sont écrits suivis du mot-clé BTW. Ils peuvent se produire n'importe où dans le corps d'un programme: cela peut être à la première ligne du programme, entre le programme, entre une ligne ou à la fin d'un programme.
Tous ces commentaires sont valides sur une seule ligne -
I HAS A VAL ITZ 19 BTW VAL = 19
I HAS A VAL ITZ 19, BTW VAL = 19
I HAS A VAL ITZ 14
BTW VAR = 14
Dans LOLCODE, les commentaires sur plusieurs lignes sont écrits suivis de OBTW et se terminent par TLDR.
Ceci est un commentaire multiligne valide -
I HAS A VAL ITZ 51
OBTW this is a comment
No it’s a two line comment
Oops no.. it has many lines here
TLDR
Création de fichier
Un programme LOLCODE commence par le mot clé HAI et doit se terminer par KTHXBYE. Comme LOLCODE utilise un langage abrégé, HAI signifie essentiellement Salut et KTHXBYE peut être mémorisé comme“Ok, thanks, bye ”.
Exemple
HAI 1.2
I HAS A NAME
VISIBLE "NAME::"!
GIMMEH NAME
VISIBLE "tutorialsPoint " NAME "!"
KTHXBYE
Comme dans tout autre langage de programmation, LOLCODE vous permet de définir des variables de différents types. Ce chapitre vous familiarisera avec l'utilisation des variables dans LOLCODE.
Portée des variables
La portée d'une variable est locale à la fonction ou au bloc de programme, c'est-à-dire qu'une variable définie dans une portée ne peut pas être appelée dans une autre portée du même programme. Les variables ne sont accessibles qu'après avoir été déclarées.
Veuillez noter qu'il n'y a pas de portée globale des variables dans LOLCODE.
Conventions de nommage
Les noms de variables sont généralement appelés identificateurs. Voici quelques-unes des conventions pour nommer les variables dans LOLCODE -
Les identificateurs de variable peuvent être en majuscules ou en minuscules (ou un mélange des deux).
Ils ne peuvent commencer que par une lettre, puis être suivis d'autres lettres, chiffres et traits de soulignement.
LOLCODE n'autorise pas l'utilisation d'espaces, de tirets ou d'autres symboles lors de la dénomination d'une variable.
Les identificateurs de variable sont sensibles à la casse.
Voici quelques règles pour les noms valides et non valides pour les variables dans LOLCODE−
Le nom doit toujours commencer par un alphabet. Par exemple,name, Name sont valides.
Le nom d'une variable ne peut pas commencer par un chiffre. Par exemple,2var est invalide.
Le nom d'une variable ne peut pas commencer par un caractère spécial.
Une variable peut contenir _ ou un chiffre n'importe où dans son nom, sauf à l'index de départ. Par exemple,name2_m est un nom valide.
Quelques exemples de noms valides dans LOLCODE sont présentés ci-dessous -
HAI 1.2
I HAS A food ITZ "111.00033"
I HAS A food2 ITZ "111"
I HAS A fo_od ITZ "1"
VISIBLE food
VISIBLE food2
VISIBLE fo_od
KTHXBYE
Toutes les instructions de déclaration dans le code ci-dessus sont valides et produiront la sortie suivante une fois exécutées -
sh-4.3$ lci main.lo
111.00033
111
1
Quelques exemples d'instructions invalides et leur sortie sont donnés ci-dessous -
Exemple 1
HAI 1.2
I HAS A 2food ITZ "111.00033"
KTHXBYE
Le code ci-dessus donnera la sortie suivante lorsque vous l'exécuterez -
sh-
4.3$ lci main.lo
Line 2: Expected: identifier; Got: int(2).
Exemple 2
HAI 1.2
I HAS A _food ITZ "111.00033"
KTHXBYE
Le code ci-dessus donnera la sortie suivante lorsque vous l'exécuterez -
sh-
4.3$ lci main.lo
Line 2: Unrecognized sequence at: _food ITZ "111.00033".
Exemple 3
HAI 1.2
I HAS A f$ood ITZ "111.00033"
KTHXBYE
Le code ci-dessus donnera la sortie suivante lorsque vous l'exécuterez -
sh-
4.3$ lci main.lo
Line 2: Unrecognized sequence at: $ood ITZ "111.00033".
Déclaration et affectation des variables
À declareune variable, LOLCODE fournit un mot-clé «I HAS A» qui est suivi du nom de la variable. Vous pouvez trouver ci-dessous la syntaxe pour déclarer une variable.
I HAS A VAR BTW VAR is empty now, You can use any name instead of var
À assignla variable une valeur dans la même instruction, vous pouvez ensuite suivre le nom de la variable avec «ITZ» et ensuite donner la valeur que vous souhaitez attribuer. Utilisez la syntaxe suivante pour attribuer une valeur à une variable -
<variable> R <expression>
Exemple
VAR R "Green" BTW VAR is now a YARN and equals "Green"
VAR R 30 BTW VAR is now a NUMBR and equals 30
Vous pouvez aussi declare et assign variables en même temps en utilisant la syntaxe suivante -
I HAS A VAR ITZ VALUE
Exemple
I HAS A NAME ITS “TUTORIALS POINT”
Exemple
HAI 1.2
BTW this is how we declare variables
I HAS A food
I HAS A bird
BTW this is how we assign variables
food R 1
bird R 5
BTW this is how initialize variables
I HAS A biz ITZ "OMG!"
VISIBLE food
VISIBLE biz
VISIBLE bird
KTHXBYE
Le programme ci-dessus montre la déclaration des variables et les imprime. La sortie est -
sh-
4.3$ lci main.lo
1
OMG!
5
Type Casting
Pour convertir une valeur d'un type en un autre type, nous utilisons la conversion de type. La conversion d'un NUMBAR en NUMBR tronque la partie décimale du nombre à virgule flottante. Le cast d'un NUMBAR en un YARN (en l'imprimant, par exemple), tronque la sortie à 2 décimales par défaut.
Exemple
HAI 1.2
I HAS A food ITZ "111.00033"
VISIBLE food
BTW this is how we do type casting
MAEK food A NUMBAR
VISIBLE food
KTHXBYE
La ligne de code ci-dessus produira la sortie suivante -
sh-4.3$ lci main.lo
111.00033
111.00033
Toutes les variables déclarées dans un programme LOLCODE sont des variables locales et il n'y a pas de portée globale dans ce langage pour aucune variable.
LOLCODE est conçu pour tester les limites de la conception du langage de programmation. C'est un langage de programmation ésotérique inspiré des choses amusantes sur Internet. Ce chapitre vous donne une compréhension des types LOLCODE.
Les types
Actuellement, les types de variables dans LOLCODE sont -
- chaînes (YARN)
- entiers (NUMBR)
- flotteurs (NUMBAR)
- et booléens (TROOF)
- Tableaux (BUKKIT)
Dans LOLCODE, le type de variable est géré dynamiquement par le compilateur. Si une variable n'a pas de valeur initiale, elle est appelée non typée (appelée NOOB dans LOLCODE).
La syntaxe pour déclarer et utiliser différents types dans LOLCODE est indiquée ci-dessous -
Pour créer une variable de n'importe quel type de données
I HAS A <VARIABLE> ITZ A <DATA TYPE>
Pour créer une variable et lui attribuer une valeur
I HAS A <VARIABLE> ITZ <EXPRESSION<
Pour affecter une valeur à un type de données déjà créé
<VARIABLE> R <EXPRESSION>
Non tapé (NOOB)
Le type de données non typé (connu sous le nom de NOOB) ne peut être converti en aucun autre type sauf en un type de données TROOF. Le transtypage implicite d'un NOOB dans TROOF rend la variable FAIL. Après cela, toute opération sur un NOOB entraîne une erreur.
Les transtypages explicites d'un type de données NOOB (c'est-à-dire les types qui ne sont pas initialisés et n'ont aucune valeur initiale) donnent des valeurs nulles pour tous les autres types.
Pour définir une variable non typée, déclarez simplement une variable et attribuez une valeur comme indiqué dans cet exemple -
HAI 1.2
I HAS A VAR3
VAR3 R "ANYVALUE"
VISIBLE VAR3
BTW Or declare in same line
I HAS A VAR4 ITZ 44
VISIBLE VAR4
KTHXBYE
Lorsque vous exécutez le programme ci-dessus, vous trouverez le résultat suivant -
sh-
4.3$ lci main.lo
ANYVALUE
44
Booléens (TROUFS)
Dans LOLCODE, les valeurs booléennes sont de deux types. BOOLEAN a généralement deux valeurs: vrai et faux. Mais, dans LOLCODE, le booléen est connu sous le nom de TROOF, et les valeurs vrai / faux sont appelées respectivement WIN / FAIL. Toutes les valeurs non initialisées telles qu'une chaîne vide ("") ou un tableau vide seront toutes converties en FAIL. Toutes les autres valeurs initialisées sont évaluées à WIN.
Exemple
HAI 1.2
I HAS A VAR3 ITZ A TROOF
VAR3 R "FAIL"
VISIBLE VAR3
KTHXBYE
Vous pouvez voir la sortie suivante lorsque vous exécutez le code ci-dessus -
sh-4.3$ lci main.lo
FAIL
Types numériques (NUMBR)
Dans LOLCODE, un NUMBR représente un entier. Toute séquence de chiffres est considérée comme un NUMBR, sauf si une décimale apparaît n'importe où entre la séquence. Pour rendre un nombre négatif, il peut être précédé d'un tiret (-) qui signifie un nombre négatif.
Exemple
HAI 1.2
I HAS A VAR3 ITZ A NUMBR
VISIBLE VAR3
KTHXBYE
Le code ci-dessus vous montre le résultat suivant lorsque vous l'exécutez -
sh-
4.3$ lci main.lo
0
Semblable à NUMBR, LOLCODE a un autre type de données, qui représente une décimale ou un flottant dans de nombreux langages de programmation. Dans LOLCODE, un NUMBAR est un flottant contenant une virgule décimale. La conversion d'un NUMBAR en NUMBR tronque la partie décimale du nombre à virgule flottante et la renvoie sous la forme d'un NUMBR, sans aucune décimale.
Chaînes (YARN)
Dans LOLCODE, la valeur contenant des chaînes, c'est-à-dire des chaînes littérales (YARN) doit commencer et se terminer par des guillemets doubles ("").
Tout peut être écrit à l'intérieur de la chaîne, comme un espace, une virgule, un point, une exclamation ou tout autre symbole. Une chaîne dans laquelle un guillemet simple est manquant peut provoquer une erreur. Les deux points sont utilisés comme caractères d'échappement dans LOLCODE, et toute valeur suivant un signe deux-points a une signification particulière.
:) - Un crochet fermant après un deux-points représente une nouvelle ligne (\ n)
:> - Un crochet de fermeture après un deux-points représente une tabulation (\ t)
:o - Un ‘o’ le caractère suivant un deux-points représente une cloche (bip) (\ g)
:" - Un «après un deux-points représente un guillemet double littéral (")
:: - Un deux-points après un deux-points représente un seul deux-points littéral (:)
Exemple
HAI 1.2
I HAS A VAR3 ITZ A YARN
VAR3 R "XYZ"
VISIBLE VAR3
KTHXBYE
Le code donné ci-dessus produit la sortie suivante lors de l'exécution -
sh-
4.3$ lci main.lo
XYZ
BUKKIT
Ce type représente un tableau. Il a des emplacements nommés, qui peuvent contenir des variables ou des fonctions. Un BUKKIT peut être déclaré de la manière suivante -
BTW declaration of the BUKKIT
I HAS A [object] ITZ A BUKKIT BTW creating a variable in a slots
[object] HAS A [var] ITZ [value] BTW creating a function inside the BUKKIT
HOW IZ [object] [function name] (YR [argument1] (AN YR [argument2] (AN YR [argument3] ...)))
[function code]
IF U SAY SO
Une fonction à l'intérieur d'un BUKKIT peut également accéder à des variables et à d'autres fonctions du BUKKIT en utilisant ME'Z [var] ou ME IZ [nom de la fonction] (YR [argument1] (AN YR [argument2] (AN YR [argument3] ... ))) MKAY.
Exemple
HAI 1.2
I HAS A VAR6 ITZ A BUKKIT
BTW DECLARING AN ARRAY
VAR6 HAS A VAR7 ITZ "DOGE"
BTW VAR7 IS A STRING VARIABLE THAT IS INSERTED INTO ARRAY VAR6
VISIBLE VAR6'Z VAR7
BTW GET THE ELEMENT OF ARRAY
KTHXBYE
C'est la sortie que vous trouverez lorsque vous exécuterez le code donné ci-dessus -
sh-
4.3$ lci main.lo
DOGE
Les opérateurs jouent un rôle important pour effectuer diverses opérations sur les variables. Ce chapitre vous présente différents opérateurs dans LOLCODE et leur utilisation.
Les opérateurs
Les opérateurs mathématiques dépendent d'une notation de préfixe, c'est-à-dire la notation qui précède l'opérande. Lorsque tous les opérateurs ont un nombre connu d'arguments ou d'opérandes, aucun marqueur de regroupement n'est nécessaire. Dans les cas où les opérateurs n'ont pas d'arguments ou d'opérandes fixes, l'opération est fermée avec MKAY.
Un MKAY ne peut pas être utilisé s'il coïncide avec la fin de l'instruction. Dans de tels cas, le mot clé EOL doit être utilisé. Pour utiliser des opérateurs mathématiques unaires, utilisez la syntaxe suivante -
<operator> <expression>
Le mot clé AN peut éventuellement être utilisé pour séparer les arguments et appliquer une seule opération sur plusieurs opérandes, de sorte qu'une expression d'opérateur binaire a la syntaxe suivante -
<operator> <expression1> AN <expression2>
Toute expression contenant un opérateur avec un nombre infini d'arguments peut être exprimée avec la syntaxe suivante -
<operator> <expression1> [[AN <expression2>] AN <expression3> ...] MKAY
Math
Voici les opérations mathématiques de base dans LOLCODE -
SUM OF <a> AN <b> BTW This is a plus + operator
DIFF OF <a> AN <n> BTW This is a minus - operator
PRODUKT OF <a> AN <n> BTW This is a multiply operator *
QUOSHUNT OF <a> AN <n> BTW This is a divide operator
MOD OF <a> AN <n> BTW This is a modulo operator
BIGGR OF <a> AN <n> BTW This is a max operator
SMALLR OF <a> AN <n> BTW This is a min operator
<a> et <b> peuvent chacun être des expressions uniques dans ce qui précède, de sorte que les opérateurs mathématiques peuvent être imbriqués et groupés indéfiniment.
Les mathématiques sont effectuées en considérant les arguments comme des nombres entiers en présence de deux NUMBR, mais si l'une des expressions est NUMBAR, les opérations sont considérées comme des opérations en virgule flottante.
Exemple
HAI 1.2
I HAS A m ITZ 4
I HAS A n ITZ 2
VISIBLE SUM OF m AN n BTW +
VISIBLE DIFF OF m AN n BTW -
VISIBLE PRODUKT OF m AN n BTW *
VISIBLE QUOSHUNT OF m AN n BTW /
VISIBLE MOD OF m AN n BTW modulo
VISIBLE BIGGR OF m AN n BTW max
VISIBLE SMALLR OF m AN n BTW min
KTHXBYE
Le code ci-dessus produira la sortie suivante lorsque vous l'exécuterez -
sh-
4.3$ lci main.lo
6
2
8
2
0
4
2
Points importants -
Considérez les points importants suivants liés au travail avec des opérateurs mathématiques dans LOLCODE−
Si l'un ou les deux arguments d'une expression sont YARN, ils sont traités comme des NUMBAR.
Si l'un des arguments ne peut pas être converti en toute sécurité en interne en type numérique, cela échoue avec une erreur
Booléen
Les opérateurs booléens sont appliqués aux valeurs qui peuvent être vraies ou fausses. Les opérateurs booléens travaillant sur les TROOF sont les suivants:
BOTH OF <m> AN <n> BTW its and operation: WIN if m = WIN and n = WIN
EITHER OF <m> AN <n> BTW its or operation: FAIL iff m = FAIL, n = FAIL
WON OF <m> AN <n> BTW its xor operation: FAIL if m = n
NOT <m> BTW its an unary negation: WIN if m = FAIL
ALL OF <m> AN <n> ... MKAY BTW it will take infinite arguments and apply AND
ANY OF <m> AN <n> ... MKAY BTW it will take infinite arguments and apply OR.
Veuillez noter que <m> et <n> dans la syntaxe d'expression ci-dessus sont automatiquement convertis en valeurs TROOF s'ils ne sont pas déjà des valeurs TROOF.
Comparaison
Lorsque vous souhaitez comparer deux opérandes ou plus dans LOLCODE, vous pouvez le faire dans l'une des méthodes suivantes:
Méthode 1
Vous pouvez comparer deux opérandes binaires à l'aide d'opérateurs d'égalité. La syntaxe est indiquée ci-dessous -
BOTH SAEM <m> AN <n> BTW this will return WIN if m is equal to n
DIFFRINT <m> AN <n> BTW this will return WIN if m is not equal to n
Méthode 2
Vous pouvez comparer si les deux valeurs sont de type NUMBR. N'oubliez pas que si l'une des valeurs est NUMBAR, elle est comparée en tant que valeur à virgule flottante.
Méthode 3
Vous pouvez également effectuer une comparaison à l'aide des opérateurs minimum et maximum. La syntaxe est indiquée ci-dessous -
BOTH SAEM <m> AN BIGGR OF <m> AN <n>
BOTH SAEM <m> AN SMALLR OF <m> AN <n>
DIFFRINT <m> AN SMALLR OF <m> AN <n>
DIFFRINT <m> AN BIGGR OF <m> AN <n>
Example
HAI 1.2
I HAS A VAR11 ITZ 7
BOTH SAEM VAR11 SMALLR OF VAR11 AN 8, O RLY?
YA RLY
VISIBLE "TRUE"
NO WAI
VISIBLE "FALSE"
OIC
KTHXBYE
Vous pouvez voir la sortie suivante lorsque vous exécutez le code donné -
sh-
4.3$ lci main.lo
TRUE
Concaténation de valeurs
LOLCODE vous permet de concaténer explicitement un nombre infini de YARN à l'aide de l'opérateur SMOOSH… MKAY. Pour la concaténation, plusieurs arguments peuvent être séparés avec leAN opérateur.
Exemple
HAI 1.2
I HAS A VAR1 ITZ A YARN
VAR1 R "TRUE"
I HAS A VAR2 ITZ A YARN
VAR2 R "ANOTHER TRUE"
I HAS A VAR3 ITZ A YARN
VAR3 R "ONE MORE TRUE"
VISIBLE SMOOSH VAR1 " " VAR3 " " VAR2 MKAY
KTHXBYE
Le code donné ci-dessus produira le résultat suivant lors de l'exécution -
sh-
4.3$ lci main.lo
TRUE ONE MORE TRUE ANOTHER TRUE
Type Casting
Les opérateurs qui travaillent sur des types spécifiques transtypent ou convertissent implicitement les valeurs d'un type en un autre type en toute sécurité. Si la valeur ne peut pas être convertie en toute sécurité en un autre type, cela entraîne une erreur.
La valeur d'une expression peut être explicitement castée ou convertie en un autre type avec l'opérateur MAEK binaire. La syntaxe de l'opérateur MAEK est -
MAEK <expression> A <type>
où, <type> peut être l'un des TROOF, YARN, NUMBR, NUMBAR ou NOOB.
Pour convertir explicitement une variable en un autre type, une instruction d'affectation normale avec l'opérateur MAEK peut être utilisée, ou une instruction d'affectation de conversion peut être utilisée comme suit -
<Any_variable> IS NOW A <type> BTW this code will be equal to
<Any_variable> R MAEK <variable> A <type>
Exemple
HAI 1.2
I HAS A food ITZ "111.00033"
VISIBLE food
BTW this is how we do type casting
MAEK food A NUMBAR
VISIBLE food
KTHXBYE
Le code ci-dessus produira la sortie suivante -
sh-4.3$ lci main.lo
111.00033
111.00033
Ce chapitre vous explique comment saisir une valeur via le terminal LOLCODE et comment la sortir sur le terminal.
E / S depuis le terminal
Vous pouvez utiliser le mot-clé VISIBLE pour imprimer quelque chose dans LOLCODE. VISIBLE est une fonction qui peut prendre un nombre infini de caractères en entrée, et les imprime tous à la fois en les concaténant en interne et en les convertissant en chaînes ou en YARN.
La fonction VISIBLE se termine ou se termine par un délimiteur, qui est soit une fin de ligne, soit une virgule.
La sortie est automatiquement terminée par le compilateur avec un retour chariot. Si le jeton final se termine par un symbole d'exclamation (!), Le chariot renvoyé est écrasé par ce symbole.
VISIBLE <any_expression> [<any_expression> ...][!]
Veuillez noter que dans LOLCODE, il n'existe actuellement aucune norme définie pour l'impression de certaines données dans un fichier.
Pour prendre des informations de l'utilisateur, le mot-clé utilisé est GIMMEH. C'est une fonction qui peut prendre n'importe quel nombre de variables en entrée. Il prend YARN comme entrée et stocke la valeur dans une variable donnée.
GIMMEH <any_variable>
Exemple
HAI 1.2
I HAS A VAR ITZ A YARN BTW DECLARE A VARIABLE FOR LATER USE
VISIBLE "TYPE SOMETHING AND ENTER"
GIMMEH VAR BTW GET INPUT (STRING) INTO VARIABLE
VISIBLE VAR
KTHXBYE
Lorsque ce code est exécuté, il vous demandera d'entrer un numéro, puis réimprimera automatiquement le numéro dans la ligne suivante. Lorsque vous exécutez ce code, il imprimera la sortie suivante -
sh-
4.3$ lci main.lo
TYPE SOMETHING AND ENTER
67
67
LOLCODE vous permet de contrôler le flux du programme à travers diverses instructions. Ce chapitre explique les différents types d'instructions disponibles dans LOLCODE.
Déclarations d'expression
Une expression sans aucune affectation, c'est-à-dire appeler simplement une opération mathématique ou une fonction quelconque, est une déclaration légale dans LOLCODE. Une fois l'expression évaluée, sa valeur finale est placée dans la variable temporaire IT. La valeur de IT reste dans la portée locale et existe jusqu'à la prochaine fois qu'elle est remplacée par une expression.
Déclarations d'affectation
Les instructions d'affectation sont utilisées pour affecter la sortie de toute expression à une variable donnée. Ils sont généralement de la forme -
<any_variable> <assignment operator> <any expression>
Veuillez noter que vous pouvez utiliser une variable dans l'expression, avant même qu'elle ne soit affectée.
Expressions conditionnelles
Déclarations If-Then
L'instruction if-then est une opération très simple fonctionnant sur la variable informatique. Elle est similaire aux instructions if – else dans d'autres langages de programmation comme C et Java.
Il existe quatre mots-clés pour appliquer les instructions if – then.
- O RLY?
- YA RLY
- PAS DE WAI
- OIC
La forme générale est -
<any_expression>
O RLY?
YA RLY
<code to execute if above condition is true>
NO WAI
<code to execute in this block>
OIC
Toutes les instructions ci-dessus peuvent être écrites sur la même ligne séparées par des virgules comme -
BOTH SAEM NAMES AN "Name", O RLY?
YA RLY, VISIBLE "My name is ABCD"
NO WAI, VISIBLE "Your name is ABCD"
OIC
Lors de l'utilisation des instructions if-then, un MEBBE optionnel <toute expression> peut être utilisé entre les blocs YA RLY et NO WAI.
Si <toute expression> suivant MEBBE est True (WIN), alors ce bloc est exécuté. Sinon, si cette expression est fausse, le bloc est ignoré jusqu'aux instructions MEBBE, NO WAI ou OIC suivantes.
Exemple
<any expression>
O RLY?
YA RLY
<code to be executed if true>
MEBBE <expression>
<code to be executed mebbe is true>
MEBBE <expression>
<code to be executed mebbe is true>
NO WAI
<code to be executed if above are false>
OIC
Exemple
BOTH SAEM NAMES AN "NAME"
O RLY?
YA RLY, VISIBLE "YOUR NAME IS ABCD"
MEBBE BOTH SAEM ANIMAL AN "OUR NAME IS ABCD"
VISIBLE "NO ABCD"
OIC
Déclarations de cas
Dans LOLCODE, le mot clé "WTF?" est similaire au commutateur dans de nombreuses autres langues. Le mot-clé WTF? prend IT comme valeur d'expression pour la comparaison. Pour utiliser WTF, un bloc de comparaison est ouvert par OMG qui doit être un littéral et non une expression.
N'oubliez pas que chaque littéral doit être unique, similaire au cas des autres langues.
Le bloc OMG doit être terminé par une instruction GTFO. Si un bloc OMG n'est pas terminé par un GTFO, le bloc OMG suivant est exécuté jusqu'à ce que GTFO soit atteint.
Si aucun des littéraux n'est évalué comme vrai, alors la casse par défaut est signifiée par OMGWTF.
WTF?
OMG <any value to compare>
<code block to execute if expression is satisfied>
OMG <any value to compare>
<code block to execute if expression is satisfied>
OMGWTF
<code block to execute as a default case>
OIC
NAME, WTF?
OMG "A"
VISIBLE "ABCD"
GTFO
OMG "E"
VISIBLE "EFGH"
GTFO
OMGWTF
VISIBLE "ZYXW"
OIC
Les résultats de sortie du code ci-dessus seront -
"E":
EFGH
Les boucles sont utilisées dans les langages de programmation pour exécuter un ensemble d'instructions plusieurs fois. Par exemple, si vous souhaitez imprimer le chiffre 5 cinq fois, au lieu d'écrire leVISIBLE “5” instruction cinq fois, vous pouvez exécuter une boucle avec un seul VISIBLE “5” déclaration cinq fois.
Les boucles simples sont représentées par IM IN YR <label> et IM OUTTA YR <label>. Les boucles définies de cette manière sont des boucles infinies et elles doivent être terminées par une instruction break GTFO.
Les boucles d'itération ont la structure suivante -
IM IN YR <label> <any_operation> YR <any_variable> [TIL|WILE <expression>]
<code block to execute inside the loop multiple times>
IM OUTTA YR <label>
Veuillez noter qu'à l'intérieur du corps de la fonction, UPPIN (incrémenter de un), NERFIN (décrémenter de un) ou toute fonction unaire peuvent être utilisés.
Le mot clé TIL calcule l'expression comme un TROOF: s'il est évalué comme FAIL, la boucle continue une fois de plus, s'il est évalué comme WIN, alors l'exécution de la boucle s'arrête et se poursuit après l'instruction IM OUTTA YR correspondante.
Le mot-clé WILE est l'opposé du mot-clé TIL, si l'expression est WIN, l'exécution se poursuit, sinon la boucle se termine.
Exemple
HAI 1.2
I HAS A VAR ITZ 0
IM IN YR LOOPY UPPIN YR VAR TIL BOTH SAEM VAR AN 10
VISIBLE SUM OF VAR AN 1
IM OUTTA YR LOOPY
KTHXBYE
Lorsque le code ci-dessus est compilé sur n'importe quel compilateur LOLCODE, ou sur notre terrain de codage en ligne, cela produira la sortie suivante.
sh-
4.3$ lci main.lo
1
2
3
4
5
6
7
8
9
10
Les fonctions sont utiles dans la programmation car elles réduisent le temps et les efforts pour écrire le code encore et encore. Un code de fonction bien écrit offre une grande réutilisabilité. Ce chapitre vous explique comment écrire et utiliser des fonctions dans LOLCODE.
Définition d'une fonction
Une fonction est un ensemble d'instructions qui sont exécutées en une seule fois en appelant cette fonction. Dans LOLCODE, la définition d'une fonction commence par le mot-clé «COMMENT IZ I» et le mot-clé de fermeture est «IF U SAY SO».
La syntaxe pour écrire une fonction dans LOLCODE est -
HOW IZ I <function name> [YR <parameter/argument> [AN YR <other _arguments..> …]]
<code block to execute / Set of statements to execute>
IF U SAY SO
Les points importants
Tenez compte des points importants suivants lorsque vous définissez une fonction LOLCODE -
Dans LOLCODE, la fonction ne peut accepter qu'un certain nombre fixe d'arguments comme entrée.
Les arguments ou paramètres, sont les identifiants qui deviennent une variable de la fonction.
Les fonctions de LOLCODE ne peuvent accéder à aucune autre valeur que les valeurs qui leur sont transmises en tant qu'arguments.
Renvoyer la valeur d'une fonction
Le retour dans le codage signifie quelque chose qui est rendu. En programmation, une fonction peut renvoyer une valeur au programme lorsque son exécution est terminée. Dans LOLCODE, les fonctions renvoient des valeurs variables comme expliqué ci-dessous -
FOUND YR <any_expression> renvoie la valeur de l'expression lorsque le bloc fonction est exécuté complètement.
GTFO ne renvoie aucune valeur (NOOB), ce qui est similaire à return 0 dans d'autres langages de programmation comme C et Java.
Si aucune autre instruction de retour n'est trouvée, alors IF U SAY SO est exécuté et la valeur de la variable IT est renvoyée.
Fonctions d'appel
Une fonction est définie dans le corps du programme et est appelée ultérieurement pour exécution. Une fonction qui accepte un nombre donné d'arguments est appelée comme indiqué ci-dessous -
I IZ <function_name> [YR <expression_One> [AN YR <expression_Two>
[AN YR <expression_Three> ...]]] MKAY
Lors de l'appel d'une fonction, l'expression est formée par le nom de la fonction, suivi du nombre d'arguments que la fonction acceptera. Ces arguments peuvent être de simples variables ou n'importe quelle expression. Si une fonction accepte une expression au lieu d'une valeur simple, les valeurs des expressions sont calculées avant l'appel de la fonction.
N'oubliez pas que le nombre d'arguments qu'une fonction acceptera doit être défini dans la définition de la fonction.
Exemple
HAI
HOW DUZ I MAINUMBA
I HAS A NUMBA
GIMMEH NUMBA
FOUND YR NUMBA
IF U SAY SO
VISIBLE MAINUMBA
KTHXBYE
Lorsque vous exécutez le code ci-dessus, il vous demandera une entrée, puis lorsque vous soumettez l'entrée, vous verrez le même résultat. Par exemple, si nous entrons 55, il imprimera 55.
Exemple
HAI 1.2
HOW IZ I MULTIPLY YR FIRSTOPERANT AN YR SECONDOPERANT
FOUND YR PRODUKT OF FIRSTOPERANT AN SECONDOPERANT
IF U SAY SO
VISIBLE I IZ MULTIPLY YR 2 AN YR 3
KTHXBYE
La fonction ci-dessus qui effectue la multiplication des opérandes d'entrée imprimera la sortie suivante lorsque vous l'exécuterez -
sh-
4.3$ lci main.lo
6
Exemple
HAI 1.2
I HAS A STRINGARRAY ITZ A BUKKIT
STRINGARRAY HAS A VAR17 ITZ "OBJECT1"
STRINGARRAY HAS A VAR18 ITZ "OBJECT2"
HOW IZ STRINGARRAY ACCESS YR VARIABLE
FOUND YR STRINGARRAY'Z SRS VARIABLE
IF U SAY SO
I HAS A STRING ITZ "VAR17"
VISIBLE STRINGARRAY IZ ACCESS YR STRING MKAY
KTHXBYE
La sortie que le code ci-dessus produira est -
sh-
4.3$ lci main.lo
OBJECT1
La gestion des exceptions est l'un des mécanismes puissants pour gérer les erreurs d'exécution afin que le flux normal de l'application puisse être maintenu. LOLCODE n'a pas beaucoup de support pour la gestion des exceptions comme les autres langages de programmation. Semblable au bloc Try-Catch dans d'autres langues, LOLCODE a le bloc PLZ.
Par exemple, si vous souhaitez ouvrir un fichier qui peut exister ou non, utilisez -
PLZ OPEN FILE "filename.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHX
Le code qui peut provoquer une exception est écrit dans le bloc PLZ et l'exception est gérée dans le bloc O NOES. Ici, le mot clé INVISIBLE envoie un message interne au débogueur.
Veuillez noter que comme LOLCODE n'est pas mis à jour régulièrement, il n'y a plus de mises à jour disponibles pour la gestion des exceptions LOLCODE et de nombreuses autres fonctionnalités.
Les chapitres précédents vous ont expliqué la programmation en LOLCODE. Dans ce chapitre, vous apprendrez quelques exemples qui vous permettent de coder à un niveau avancé en LOLCODE.
Exemple 1: programme pour calculer la puissance d'un nombre
Dans cet exemple, vous trouverez le code pour calculer la puissance d'un nombre d'entrée. Par exemple, 2 élevé à la puissance 4 est égal à 16.
HAI 1.2
HOW IZ I POWERTWO YR NUM
BTW RETURN 1 IF 2 TO POWER OF 0
BOTH SAEM NUM AN 0, O RLY?
YA RLY, FOUND YR 1
OIC
BTW CALCULATE 2 TO POWER OF NUM
I HAS A INDEX ITZ 0
I HAS A TOTAL ITZ 1
IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX AN NUM
TOTAL R PRODUKT OF TOTAL AN 2
IM OUTTA YR LOOP
FOUND YR TOTAL
IF U SAY SO
BTW OUTPUT: 8
VISIBLE I IZ POWERTWO YR 4 MKAY
KTHXBYE
Le code ci-dessus imprimera la sortie suivante une fois qu'il s'exécutera avec succès -
sh-
4.3$ lci main.lo
16
Exemple 2: programme pour créer un tableau
Cet exemple montre le code pour créer un tableau avec cinq éléments et chaque élément avec la valeur 10.
HAI 1.3
OBTW
CREATES A ONE DIMENSIONAL ARRAY WITH N ELEMENTS, EACH IS A 0
TLDR
HOW IZ I MAKEMATRIX YR N
I HAS A MATRIX ITZ A BUKKIT
IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX N
MATRIX HAS A SRS INDEX ITZ 10
IM OUTTA YR LOOP
FOUND YR MATRIX
IF U SAY SO
I HAS A N ITZ 5
I HAS A MATRIX ITZ A BUKKIT
MATRIX R I IZ MAKEMATRIX YR N MKAY
BTW PRINTS THE CONTENTS OF THE ARRAY
IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX N
VISIBLE MATRIX'Z SRS INDEX
IM OUTTA YR LOOP
KTHXBYE
Vous pouvez voir la sortie suivante lorsque vous exécutez le code ci-dessus -
sh-4.3$ lci main.lo
10
10
10
10
10
Exemple 3: programme pour calculer la factorielle d'un nombre
Ce programme affiche le code pour calculer la factorielle d'un nombre d'entrée.
HAI 1.3
HOW IZ I FACTORIAL YR N
BOTH SAEM N AN 0
O RLY?
YA RLY, FOUND YR 1
NO WAI
FOUND YR PRODUKT OF N AN I IZ FACTORIAL YR DIFF OF N AN 1
MKAY
OIC
IF U SAY SO
VISIBLE I IZ FACTORIAL YR 6 MKAY
KTHXBYE
Le programme ci-dessus imprime la factorielle du nombre 6 et vous pouvez voir la sortie comme indiqué ci-dessous -
sh-
4.3$ lci main.lo
720
Exemple 4: programme pour concevoir une calculatrice
Vous pouvez concevoir une calculatrice pour effectuer des opérations mathématiques de base à l'aide de la programmation LOLCODE. Observez le code ci-dessous -
HAI 1.2
I HAS A V1
I HAS A V2
I HAS A CHOICE
VISIBLE "VALUE1"
GIMMEH V1
VISIBLE "VALUE2"
GIMMEH V2VISIBLE "Choose Operation? + - * /"
GIMMEH CHOICE CHOICE, WTF?
OMG "+"
VISIBLE SUM OF V1 AN V2
GTFO
OMG "-"
VISIBLE DIFF OF V1 AN V2
GTFO
OMG "*"
VISIBLE PRODUKT OF V1 AN V2
GTFO
OMG "/"
VISIBLE QUOSHUNT OF V1 AN V2
GTFO
OMGWTF
VISIBLE "CHOOSE SOME OPERATION"
OIC
KTHXBYE
Lorsque nous exécutons le programme ci-dessus avec l'entrée suivante -
3
4
+
Lors de l'exécution, le programme ci-dessus générera la sortie suivante -
VALUE1
VALUE2
Choose Operation? + - * /
7