Linotte

Origem: Wikipédia, a enciclopédia livre.

Linotte é uma linguagem de programação open source (licença GPL V3) criada em 2005 por Ronan Mounès. É uma linguagem interpretada pertencente ao paradigma imperativo e tem como peculiaridade a sua sintaxe, que possui comandos no idioma francês.

A principal ideia de Ronan Mounès ao criar a linguagem Linotte foi desenvolver uma linguagem que fosse simples e fácil de aprender por pessoas que estão começando a programar que têm pouco ou nenhum conhecimento em programação e estudantes em geral mas que desejam ter um primeiro contato com programação. A ideia é que um programa Linotte fosse tão fácil de ler quanto um livro, por isso os programas em Linotte não são chamados de programas e sim de "livro" e cada função do programa é chamada de "parágrafo". Como o próprio mote sugere: "Se você é capaz de ler um livro, então é capaz de escrever um programa de computador".

Em Linotte não existem sinais como parênteses, chaves, colchetes e outros tipos de sinais, salvo os que representam as quatro operações aritméticas básicas (adição, subtração, multiplicação e divisão). As variáveis são persistentes (exceto na versão applet), quando se declara uma variável em um livro Linotte, esta é alocada na memória e pode ser usada novamente em outro trecho do mesmo livro, na próxima execução do livro ou até em um livro diferente.

Não é possível acontecer erro durante a execução, uma vez que um livro escrito em Linotte não pode ser executado caso exista algum erro de sintaxe.

Linotte é uma linguagem que leva o programador a esenvolver a base de programação: os algoritmos. Não é uma linguagem desenvolvida para aplicações comerciais reais mas sim para começar a aprender os conceitos básicos de programação.

Estrutura Básica[editar | editar código-fonte]

Estrutura básica de um programa Linotte:

("autor: Adolfo Eliazàt") Livre: [le nom du livre]
Livre: [le nom du livre]
 Paragraphe: [le nombre du paragraphe]
  {Les} rôles:
   {article} Acteur est un nombre
   {article} Acteur est un nombre vide
   {article} Acteur est un nombre valant [valeur]
   {article} Acteur est un texte
   {article} Acteur est un texte vide
   {article} Acteur est un texte valant [valeur]
  {Les} actions:
   Tu [verbe] {article} [acteur]
   Tu [verbe]

[xxx]: obrigatório; {xxx}: facultativo

Linotte e outras linguagens de programação[editar | editar código-fonte]

O intuito da linguagem de programação Linotte não é competir com o Basic ou outra linguagem, mas apenas fornecer uma introdução para estudantes à programação, para que depois possam evoluir para linguagens mais poderosas.

Mesmo que as atualizações e versões não sejam muito constante, devido a limitações de tempo, o projeto está na versão 0.7.0 (data de atualização janeiro 27, 2009), e já possui um grande número de funções: de cálculo à exibição de string de caracteres até a possibilidade de tocar música!

O interpretador (L'Atelier Linotte)[editar | editar código-fonte]

Como mencionado acima, Linotte é uma linguagem interpretada. Até agora, existe apenas um interpretador disponível, mas ele permanece livre.

Ele é chamado de "Atelier" pois é nele onde é desenvolvido todo o trabalho pelo programador. É desenvolvido em Java e é distribuído sob a GNU-GPL.

O ateliêr linote vem no pacote do Linotte que está disponível no site oficial, assim como bibliotecas, um manual e alguns exemplos também estão no pacote que está em formato.zip.

Exemplo de um Hello World (Bonjour Tout Le Monde)[editar | editar código-fonte]

 Livre: HelloWorld
   Paragraphe: hello
     Les actions:
        "Bonjour Tout Le Monde!"

Os únicos requisitos são os conhecimentos dos comandos que são fáceis de se aprender pois estão muito próximos de um roteiro de um filme. Além disso, Linotte se difere da maioria das linguagens no que diz respeito à declaração das variáveis, aqui no lugar de variáveis são declarados "papéis" porém o princípio é o mesmo.

Integrar Linotte com uma página web[editar | editar código-fonte]

É possível integrar uma applet em forma de botão para ler um livro (programa) linotte de uma página HTML.

Para isso é necessário acrescentar o seguinte código à sua página:

<applet code="org.linotte.applet.PetiteTete2Linotte.class" width="110" height="110">
<param name="cache_archive" value="http://langagelinotte.free.fr/linotte/linotte_last/jinotte.zip">
 <!-- valor à ser modificado: -->
 <param name="url" value="http://mon.site.a.moi.fr/mon_livre.liv">
</applet>

JINOTTE[editar | editar código-fonte]

Jinotte é a interface que permite utilizar o Linotte através da linha de comando de um sistema operacional.

Para executar um comando utilizando o Jinotte é necessário seguir a estrutura:

jinotte [opção]* [livro_linotte.liv]

As opções disponíveis são:

-v: Exibe a versão do interpretador Linotte
-b: Executa um livro Linotte
-h: Exibe as optções disponíveis
-t: Exibe o tempo de execução de cada livro
-x: Autorisa a utilisação de tela em modo console
-s: Exibe un ícone do systray no lugar da barra de tarefas

Exemplos:

jinotte -bt livre\bienvenue.liv jinotte -bt livre\bienvenue.liv livre\helloword.liv

Execução:

Windows

Abrir uma sessão DOS, ir até o diretório de instalação do Linotte e em seguida digitar o seguinte comando:

jinotte -bt livre\bienvenue.liv

Linux e MacOS

Abrir um shell, ir até o diretório de instalação do Linotte e em seguida digitar o seguinte comando:

java -cp jinotte.jar -b livre\bienvenue.liv

Le livre (O Livro)[editar | editar código-fonte]

Linotte funciona com um interpretador. Um interpretador é um programa que irá receber uma a uma as ordens a serem executadas e irá parar nas seguintes situações: se chegar ao fim da lista de ordens, se o você ordenar atráves de um comando ou se encontrar um erro. No caso de encontrar um erro ele irá mostrar a causa a fim de poder corrigir o erro.

Podemos comparar o interpretador Linotte com um roteirista cinematográfico.

A fim de que possa criar um roteiro para um filme, ele cria um cenário, uma lista de atores, os papéis dos atores e as ações que deveram cumprir os atores. Se o filme é muito longo ele pode dividi-lo em várias cenas.

O interpretador Linotte necessita das mesmas informações, no entanto elas são reagrupadas em um "Livre" que podemos associar a um cenário. As ações são detalhadas não mais em cenas mas em "Paragraphes".

Les Paragraphes (Os parágrafos)[editar | editar código-fonte]

Voltemos ao roteirista. Ele decidiu criar um roteiro para um filme em três cenas diferentes: uma na cozinha, uma no corredor e uma na rua. Dois atores. Em Linotte um "Paragraphe" tem a mesma função de uma cena. Pode-se ir de um parágrafo a outro, bem como voltar a um já percorrido.

Segue um exemplo da utilização de "Paragraphes" em Linotte:

Livre: capitale de la France
 Paragraphe: question
  Les rôles:
   question est un texte valant "Quelle est la capitale de la France?"
   capitale est un texte vide
   réponse est un texte valant "Paris"
  Les actions:
   Tu affiches la question
   Tu demandes la capitale
   Si capitale est égale à la réponse alors tu vas vers la réponse bonne
   Tu vas vers la réponse fausse
 Paragraphe: réponse bonne
  Les actions:
   Tu affiches "Bravo, tu es trop fort!"
   Tu joues le "Do"
   Tu termines
 Paragraphe: réponse fausse
  Les rôles:
   libelle est un texte valant "Faux! tu peux recommencer!"
  Les actions:
   Tu affiches le libelle
   Tu vas vers la question

Este "Livre" exibe um mensagem perguntando ao usuário qual é a capital da França no "Paragraphe" Question. Em seguida verifica a resposta: caso for falsa o interpretador vai até o "Paragraphe" Réponse Fausse e caso a resposta seja verdadeira ele vai até o "Paragraphe" Réponse Bonne(este "Paragraphe" termina a execução do "Livre"). O "Paragraphe" Réponse Fausse exibe uma mensagem e depois volta para o parágrafo Question que já foi percorrido. É criado um laço que pode se tornar infinito se o usuário nào digitar a capital da França corretamente.

  • Todo "Paragraphe" deve terminar ou pelo verbo "aller" ou pelo "terminer" (devidamente conjugados).

Les Acteurs et les Rôles (Os atores e os papéis)[editar | editar código-fonte]

O computador possui uma memória onde pode-se gravar os dados que podem lidos, modificados ou suprimidos.

Os atores são a interface que vão permitir manipular essa memória pois eles são os mensageiros que contém as informações necessárias.

No início do "Paragraphe" define-se os atores que serão utilizados.

O interpretador Linotte vai reservar um espaço na memória para registrar os atores. Para um ator ele vai armazenar as informações que estão associadas a ele bem como o nome desse ator pois esse será o identificador que permitirá recuperar as informações sobre esse ator.

A declaração dos atores é realizada na seção "Rôles".

Existem três formas de criar um ator:

- Atribuindo um valor inicial: Le message est un texte de valeur "Bonjour"
- Atribuindo um tipo: Le message est um texte
- Atribuindo um valor inicial nulo(vazio): Le message est um texte vide

  • É obrigatório declarar os atores no início do "Paragraphe".

Les Rôles: texte e nombre (Os papéis: texte e nombre)[editar | editar código-fonte]

Linotte é uma linguagem tipada. Cada ator tem um "Rôle" (papel), ou seja, cada ator tem um tipo e não é possível alterá-lo uma vez definido esse tipo.

Os tipos mais simples em Linotte são: "texte" e "nombre".

Segue abaixo um exemplo usando os dois tipos:

Livre: mon troisième exemple
 Paragraphe: afficher le message
  Les rôles:
   Question est un texte valant "Quel est ton âge?"
   Message est un texte valant "Vous paraissez nettement mois que vos "
   Âge est un nombre vide
  Les actions:
   Tu affiches la question
   Tu demandes l'âge
   Tu ajoutes l'âge dans le message
   Tu affiches le message
   Tu termines
  • O interpretador Linotte não faz diferenciação de maiúsculas e minúsculas. Em contrapartida a acentuação é muito importante pois caso não seja respeitada o interpretador não irá reconhecer os comandos.
  • Esse exemplo mostra que o interpretador pode transformar um valor de um ator do tipo "nombre" para o tipo "texte" (Tu ajoutes l’ âge dans le message). O inverso não é possível.
  • É possível utilizarò sinal de + no lugar de "Tu ajoutes…dans Le…": Tu affiches message + âge.
  • Em linote o tamanho das Strings é limitado apenas pela capacidade de memória do computador.
  • O tipo "nombre" em linotte é um número decimal. Deve-se utilizar o ponto e não virgula como separador decimal.

Impératif ou Présent? (Imperativo ou presente?)[editar | editar código-fonte]

É possível utilizar imperativo no lugar de presente durante a conjugação de um verbo. Assim, em vez de escrever: Tu affiches le document, pode-se escrever: Affiche le document.

Les articles (Os artigos)[editar | editar código-fonte]

Os artigos são uma curiosidade da linguagem linotte pois sua única utilidade é melhorar a visibilidade de um programa escrito em Linotte para que fique mais próximo de uma linguagem humana. Assim, é mais agradável ler: tu affiche le message do que tu affiche message.

Segue a lista dos artigos mais comuns utilizados em Linotte: le, la, l', les, des, du, un, une, mon, ma, ton, ta, tes

Les actions (As ações)[editar | editar código-fonte]

Escrever uma ação em um "livre"

É nada mais do que dar uma ordem ao interpretador utilizando qualquer frase começando por "tu" seguida de um verbo no presente do indicativo.

Exemplo:

Livre: Pythagore
 Paragraphe: Pythagore
  Les rôles:
   AB est un nombre vide
   BC est un nombre vide
   AC est un nombre vide
   Réponse est un texte valant "Le carré de l'hypoténuse vaut: "
  Les actions:
   Tu demandes AB
   Tu demandes BC
   AB vaut carré AB
   BC vaut carré BC
   Tu ajoutes AB dans AC
   Tu ajoutes BC dans AC
   Tu ajoutes AC dans la réponse
   Tu affiches la réponse
   Tu termines
  • Deve-se escrever os comando todos na mesma linha por questões de melhor visibilidade, porém caso não de para colocar tudo na mesma linha são utilizados reticências para quebra de linha:
Livre: Bienvenue
 Paragraphe: Olé!
  Rôles:
   Prénom est un texte
  Actions:
   Efface le tableau
   Questionne le prénom sur…
   "Bonjour! Quel est ton prénom?"
   Affiche "Bravo " + prénom +…
   ", tu viens de lire ton premier livre Linotte!"
   Termine

Les casiers (As listas)[editar | editar código-fonte]

Casiers são papéis que permitem a criação de listas de atores: langage est un casier de texte valant "java", "c++", "logo", "linotte"

Pode-se construir igualmente uma lista de números: notes est un casier de nombre valant 15, 18, 12

Les Acteurs Particuliers (Os atores particulares)[editar | editar código-fonte]

Na linguagem linotte existem atores à disposição que possuem valores dinâmicos ou estáticos(que somente podem ser lidos). Segue a lista de atores particulares existentes em Linotte:

année: contém o ano corrente
mois: contém o número do mês corrente
jour: contém o número do dia corrente
heure: contém a hora corrente (em 24 horas)
minute: contém o(s) minuto(s) corrente(s)
seconde: contém o(s) segundo(s) corrente(s)
version: contém a versão do interpretador Linotte que está sendo utilizada
joker: ver o capítulo dos boucles
auteur: contém o nome do autor do interpretador Linotte
spécification: contém a versão das especificações do interpretador Linotte
polices: casier que contém a lista de polices disponíveis suportadas pelo sistema
sourisx: posição horizontal do mouse
sourisy: posição vertical do mouse
touche: marca das teclas
création: contém o último ator criado com o verbo « créer »
ecranv: altura vertical da tela
ecranh: altura horizontal da tela
couleurs: contém a lista das cores reconhecidas pelo Linotte
livre: nome do livre que está sendo utilizado

Segue abaixo um exemplo que utiliza a hora e os segundos utilizado atores particulares:

Livre: l'horloge
 Paragraphe: l'affichage
  Les rôles:
   horloge est un texte vide
  Les actions:
   Tu concatènes "Il est ", l'heure, " heures, " dans l'horloge
   Tu concatènes horloge, la minute, " minutes et " dans l'horloge
   Tu concatènes horloge, la seconde, " secondes" dans l'horloge
   Tu affiches l'horloge
   Tu attends 1 seconde
   Tu vas vers l'affichage

Les Grandes Rôles (Os grandes papéis)[editar | editar código-fonte]

Um grande rôle é um ator visível em todo um livre Linotte, ou seja, para utilizá-lo não é necessário declará-lo toda vez que iniciar um novo paragraphe.

Os grandes roles são definidos no inicio de um livre:

Livre: mon livre
Les grands rôles:
....

O fato de criar um ator somente uma vez para todo um livre permite otimizar e aumentar a execução de um livre linotte aumentando sua velocidade: o interpretador perde menos tempo criando (instanciando) outros atores na memória.

Les commentaires (Os comentários)[editar | editar código-fonte]

Os cometários são utilizados para fazer anotações em um livre linotte ou desativar trechos de código.

Para fazer um comentário em linotte basta colocar (" no inicio de um comentário e ") no fim. Segue abaixo um exemplo:

Livre: Exemple 4
("Voici un livre juste pour vous")
("ce livre a été écrit en décembre 2006")
 Paragraphe:
  Les actions:
   ("Je vais afficher le texte bonjour à l'aide d'un acteur anonyme")
   Tu affiches "Bonjour"
   ("Je quitte le programme")
   Tu termines

Les conditions (As condições)[editar | editar código-fonte]

As condições em linotte são frases que começam com si e são seguidas de um teste e depois de uma ação. Segue a lista das condições existentes em linotte:

si { artigo } [ator] est vide alors [ação]
si { artigo } [ator] est non vide alors [ação]
si { artigo } [ator] est plus grand que { artigo } [ator] alors [ação]
si { artigo } [ator] est plus petit que { artigo } [ator] alors [ação]
si { artigo } [ator] est moins grand que { artigo } [ator] alors [ação]
si { artigo } [ator] est moins petit que { artigo } [ator] alors [ação]
si { artigo } [ator] est égal à {article} [acteur] alors [ação]
si { artigo } [ator] est différent de { artigo } [ator] alors [ação]
si { artigo } [ator] contient { artigo } [ator] alors [ação]
si { artigo } [espaço geográfico] est en collision avec { artigo } [espaço geográfico] alors [ação]

  • Pode-se utilizar indiferentemente: grand/grande, petit/petite, différent/différente.

Segue abaixo um exemplo utilizando condições:

Livre: teste année linotte
 Paragraphe: question
  les rôles:
   question est un texte valant "En quelle année le langage Linotte a été inventé? "
   année est un nombre vide
  les actions:
   tu affiches la question
   tu demandes l'année
   tu vas vers vérification
 Paragraphe: vérification
  les rôles:
   année est un nombre
   réponse est un nombre valant 2005
  les actions:
  si année est égale a réponse alors tu vas vers réponse bonne
  si année est plus grande que réponse alors tu vas vers avant
  si année est moins grande que réponse alors tu vas vers après
 Paragraphe: réponse bonne
  les rôles:
   libelle est un texte valant "Bravo, tu es trop fort! "
  les actions:
   tu affiches le libelle
   tu termines
 Paragraphe: avant
  les rôles:
   libelle est un texte valant "Non non… c'est avant! "
  les actions:
   tu affiches le libelle
   tu vas vers la question
 Paragraphe: après
  les rôles:
   libelle est un texte valant "Il est plus jeune! "
  les actions:
   tu affiches le libelle
   tu vas vers la question
  • Pode-se utilizar a condição sinon no inicio de uma frase:
Si [condiçao] alors [açaoA]
Sinon, [açaoB]
  • Ou alors:
Si [condiçao 1] alors [açaoA]
Sinon, si [condiçao 2] alors [açaoB]
  • Pode-se utilizar ainda uma sequencia de sinons:
Si [condiçao 1] alors [açaoA]
Sinon, si [condiçao 2] alors [açaoB]
Sinon, si [condiçao 3] alors [açaoC]…

Sinon, [açaoZ]

Exemplo:

si année est égale a réponse alors tu vas vers réponse bonne sinon, si année est plus grande que réponse alors tu vas vers avant sinon, tu vas vers après

Les boucles e Le joker[editar | editar código-fonte]

As vezes é necessário repetir uma certa quantidade de vezes uma mesma instrução, como no exemplo abaixo:

Livre: sans boucle
Paragraphe: démonstration
Les actions:
Tu affiches "Action exécutée à la folie!"
Tu affiches "Action exécutée à la folie!"
Tu affiches "Action exécutée à la folie!"
Tu termines

Para simplificar o programa, pode-se utilizar uma boucle:

Pour chaque {article} [acteur], [action]

Segue o mesmo exemplo utilizando uma boucle:

Livre: une boucle
Paragraphe: démonstration
Les rôles:
Compteur est un nombre valant 3
Les actions:
Pour chaque compteur, tu affiches "Action exécutée à la folie!"
Tu termines

O interpretador irá executar o mesmo número de vezes o à que corresponde a varável compteur.

Em uma boucle (loop) o interpretador irá atribuir à variável joker o número de passagens pela boucle. Esse valor vai depender do rôle (tipo) do ator. No exemplo abaixo o ator compteur tem uma role nombre:

Livre: une boucle
Paragraphe: démonstration
Les rôles:
Compteur est un nombre valant 3
Les actions:
Pour chaque compteur, tu affiches le joker
Tu termines

No tableau do atelier irá aparecer:

>0
>1
>2

O joker é um ator particulier, ou seja, não se pode alterar seu valor e seu role (tipo) vai depender do ator que está sendo utilizado dentro da boucle (loop).

Segue abaixo o mesmo exemplo, no entanto utilizando um ator do tipo texte:

Livre: une boucle avec un texte
Paragraphe: démonstration
Les rôles:
Compteur est un texte valant "Bonjour!"
Les actions:
Pour chaque compteur, tu affiches le joker
Tu termines

O resultado exibido no tableau será:

< B
< o
< n
< j
< o
< u
< r

O rôle do joker tornou-se texte e o interpretador o decompôs em letras o ator compteur.

Segue um outro exemplo, percorrendo um carrier com uma boucle:

Livre: une boucle avec un casier
Paragraphe: démonstration
Les rôles:
Compteur est un casier de texte valant "Bonjour?", "vous", "allez", "bien?"
Les actions:
Pour chaque compteur, tu affiches le joker
Tu termines

O resultado obtido no tableau será:

< Bonjour?
< vous
< allez
< bien?

A utilização de uma boucle oferece a possibilidade de chamar uma parágraphe em cada passagem pela boucle e depois voltar para a mesma:

Livre: une boucle avec un casier
Paragraphe: démonstration
Les rôles:
Compteur est un casier de texte valant Bonjour?, vous, allez, bien?
Les actions:
Pour chaque compteur, tu parcours afficher
Tu termines
Paragraphe: pour afficher
Les actions:
Tu affiches le joker
Tu reviens

Será exibida a seguinte mensagem no tableau:

< Bonjour?
< vous
< allez
< bien?

Quando é utilizado o verbo aller ou parcourir dentro de uma boucle o interpretador guarda na memória o lugar da chamada sobre uma pilha e quando encontrar o verbo revenir ele irá recuperar da pilha o último valor empilhado para continuar executando a partir daquele ponto.

DE....A

Segue um outro tipo de boucle que não utiliza nombre:

De A à B, tu affiches le joker

Se A é menor que B, o interpretador irá para quando A for maior que B. O funcionamento do joker é idêntico ao boucle Pour chaque.

Segue um exemplo:

Livre: boucle
 Paragraphe: premier
  Les rôles:
   valeur est un nombre valant 5
  Les actions:
   De 1 à la valeur, tu affiches le joker
   Tu termines

A saída no tableau será:

< 1
< 2
< 3
< 4
< 5

Porém, se A é maior que B, então o valor de B será decrescente e irá parar quando B for maior que A:

Livre: boucle inversée
 Paragraphe: premier
  Les rôles:
   valeur est un nombre valant 5
  Les actions:
   De la valeur à 1, tu affiches le joker
   Tu termines

Desta vez será exibida a seguida saída no tableau:

< 5
< 4
< 3
< 2
< 1

< 5 < 4 < 3 < 2 < 1

Tant que…

Essa boucle somente para se uma condição for satisfeita:

Tant que [condition], [action]

Segue um exemplo:

Livre: Capitale de la France
 Paragraphe: question
  les rôles:
   capitale est un texte vide
  les actions:
   tu affiches "Quelle est la capitale de la France?"
   tant que capitale est différent de "Paris", tu demandes la capitale
   tu affiches "Bravo, tu es trop fort!"
   tu termines

Supressão de um ator de um casier(lista)

Durante o percurso de um casier utilizando uma boucle, pode-se suprimir um elemento do casier utilizando o verbo ôter do ator particular joker:

Livre: Suppression d'un acteur d'un casier
 Paragraphe: Suppression
  Les rôles:
   liste est un casier de texte valant "Java", "Linotte", "dotNet"
  Les actions:
   Pour chaque liste, tu parcours l'action
   Pour chaque liste, tu affiches le joker
   Tu termines
 Paragraphe: Action
  Les rôles:
   liste est un casier de texte
  Les actions:
  Si le joker contient "net" alors tu ôtes le joker de la liste
  Tu reviens

Les souffleurs[editar | editar código-fonte]

No teatro o souffleur é a pessoa que intervém quando o ator necessita de ajuda. Em Linotte o conceito é o mesmo.

Cria-se um souffleur no fim de um paragraphe e deve-se indicar quando ele deve "se manifestar" para ajudar ao ator.

Para criar um souffleur deve colocar no fim de um paragraphe o trecho seguinto:

Les souffleurs: Dés que mon nombre est égal a 0, tu vas vers la suíte

A sintaxe geral de um souffleur é:

Dés que [condition], [action]

Pode-se utilizar um souffleur em qualquer situação exceto dentro de uma boucle (loop).

Segue abaixo um exemplo de um programa com um souffleur que é executado infinitamente caso não haja um souffleur:

Livre: le souffleur
 Les grands rôles:
  Nombre est un nombre valant 0
 Paragraphe: boucle
  Les souffleurs:
   Dés que le nombre est plus grand que 10, tu termines
  Les actions:
   nombre vaut nombre + 1
   Tu affiches le nombre
   Tu vas vers la boucle
  • Deve-se acrescentar o bloco souffleur sempre depois da declaração dos atores.
  • Os souffleurs são acionados depois que a ação já foi realizada.

Les Espèces (As espécies)[editar | editar código-fonte]

A noção de espécie no Linotte vem permitir um pouco de "programação orientada à objetos".

Uma espèce é um reagrupamento que partilha de características comuns.

Um chat é um espèce. Os chats têm as seguintes características: cor, idade, tamanho. Por exemplo, pode-se ter "Garfield " que possui a espèce chat: Garfiel é laranja, tem 15 meses de idade e mede 40 centímetros. Pode-se ter uma infinidade de chats com características diferentes ou até mesmo idênticas.

A noção de espécie no Linotte vem permitir um pouco de "programação orientada à objetos".

Uma espèce é um reagrupamento que partilha de características comuns.

Um chat é um espèce. Os chats têm as seguintes características: cor, idade, tamanho. Por exemplo, pode-se ter "Garfield " que possui a espèce chat: Garfiel é laranja, tem 15 meses de idade e mede 40 centímetros. Pode-se ter uma infinidade de chats com características diferentes ou até mesmo idênticas.

Para declarer um espèces deve-se colocar o bloco espèce no fim do livre Linotte:

Livre: l'agenda
 Les espèces:
  nom est un texte vide
  numéro est un texte vide
  adresse est un texte valant "adresse inconnue"
  années est un nombre
  l' espèce contact contient un nom, un numéro, une adresse, des années

A sintaxe geral para declaraçao de um expèce é a seguinte:

l' espèce [nom de l'espèce] contient {article} [acteur],.........
  • Só é possível utilizar a expressão il a <valeur> <acteur> durante a criação de um ator que tenha um tipo espèce.
  • Para utilizar um valor que pertence uma espèce é necessário utilizar a preposição "de":
Les actions:
 Tu affiches le nom de Robert
 Tu affiches l'adresse de Robert
 Tu affiches le numéro de Germaine
 Tu termines

Segue abaixo um exemplo completo da utilização de um espèce:

Livre: l'agenda
 Les espèces:
  nom est un texte vide
  numéro est un texte vide
  adresse est un texte valant "adresse inconnue"
  années est un nombre
  l' espèce contact contient un nom, un numéro, une adresse, des années
 paragraphe: mes contacts
  Les rôles:
   Robert est un contact,le nom vaut "Dochon",le numéro vaut "06 00 00 00",…
   il a 40 années
   Germaine est un contact, le nom vaut "Dupond", le numéro vaut "06 00 00 01"
  Les actions:
   Tu affiches le nom de Robert
   Tu affiches l'adresse de Robert
   Tu affiches le numéro de Germaine
   Tu termines

No tableau do atelier linotte sera exibido:

>bidoche
>adresse inconnue
>06 00 00 01
  • É possível definir um valor inicial para uma característica de um espèce:

adresse est un texte valant "adresse inconnue"

Segue abaixo outro exemplo utilizando um casier de contacts:

Livre: l'agenda
 Les espèces:
  nom est un texte vide
  numéro est un texte valant "numéro inconnu"
  adresse est un texte valant "adresse inconnue"
  années est un nombre
  l' espèce contact contient un nom, un numéro, une adresse, des années
 paragraphe: mes contacts
  Les rôles:
   Robert est un contact, le nom vaut "Bidoche", le numéro vaut…
   "06 00 00 00 01"
   Germaine est un contact, le nom vaut "Dupond"
   Agenda est un casier de contact valant Robert, germaine
  Les actions:
   Pour chaque agenda, tu parcours vers afficher
   Tu termines
 paragraphe: afficher
  Les actions:
   Tu affiches le numéro de joker
   Tu reviens

Les acteurs persistents (ou fichiers)[editar | editar código-fonte]

Para ler ou modificar um fichier no Linotte, deve-se indicar ao ator a localização do fichier no disco rígido de onde ele deve ser lido. Os atores que podem ser presistentes são aqueles que possuem os seguintes rôles:

texte nombre casier de textes casier de nombres espèce casier d'espèce

No momento da criação do ator, deve-se colocar "depuis" seguido do caminho do fichier:

données est un texte depuis "/linotte/mes_données"

Se o fichier não existir: - Quando o interpretador tentar fazer a leitura irá retornar um chaîne (vetor) vazio. - Caso atribua-se um valor o intepretador Linotte irá criar um valor fichier com o valor atribuído no disco rígido.

Exemplo 1:

Livre: Mon message
 Paragraphe: modification du message
  Les rôles:
   Message est un texte depuis "/linotte/mon_message"
  Les actions:
   Tu affiches "Voici l'ancien message"
   Tu affiches le message
   Tu affiches "Quel est le nouveau message?"
   Tu demandes le message
   Tu termines

Exemplo 2:

Livre: les fichiers casiers
 Paragraphe: démonstration
  Les rôles:
   document est un casier de texte depuis "/linotte/fichier_texte_casier.txt"
   valeur est un texte
  Les actions:
   "Donnez une valeur"!
   la valeur?
   Tu ajoutes la valeur dans le document
   Tu termines
  • Se estiver utilizando o MS Windows, o caminho deve ter a seguinte forma:

"c:\linotte\mon_message.txt"

  • Tenha certeza de que o diretório existe, pois o Linotte não irá criá-lo.

Charger un fichier depuis internet[editar | editar código-fonte]

É possível carregar um dado de fichiers armazenados em um site na internet. Para isso o nome do fichier deve começar com « http:// ».

Exemplo:

Livre: Url depuis internet
 Paragraphe: Url
  Rôles:
   Dernière version est un texte depuis…
   "http://langagelinotte.free.fr/bonjour.txt"
  Actions:
   Affiche la dernière version
   Termine

As imagens são igualmente carregáveis através da internet:

Livre: Image depuis internet
 Grands rôles:
  d est un graphique, image vaut…
  "http://www.linux.org/info/images/officialpenguin.gif", x
  vaut 170, y vaut 156
  e est une toile, couleur vaut "bleu"
  angle est un nombre valant 0
 Paragraphe: début
  Actions:
   efface la toile
   projette d
   projette e
   tant que 1 est différent de 2, lis
   angle de d vaut angle
   attends 0.01 seconde
   angle vaut angle + 1
   ferme

Ligações externas[editar | editar código-fonte]