Aller au menu - Aller au contenu

Icône Premiers programmes en Vala

Par Avatar Yno
Mise à jour : 09/07/2010
Difficulté : Facile Facile
170 visites depuis 7 jours, dont 20 sur ce chapitre classé 446/786
Maintenant que notre compilateur Vala est installé, autant l'utiliser. Nous étudierons dans ce chapitre deux programmes très simples qui nous permettrons de nous former aux bases du langage Vala.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Bonjour tout le monde !

Au risque de paraître manquer d'originalité, le premier programme que nous étudierons est ce que l'on appelle un "hello world". C'est un programme très modeste qui se contente de dire bonjour à son utilisateur, en mode texte. Naturellement, nous ne considérerons un exemple si trivial que pour avoir un premier contact avec la syntaxe de Vala. Il faut bien commencer quelque part, non ?

Certains concepts dont nous parlerons devront rester flous encore quelques temps. Avant d'être des experts en Vala, nous nous contenterons d'en être des utilisateurs : ainsi, dans la suite de ce cours, vous lirez des termes comme fonctions, objets, ou même classes. Pas de panique : nous les définirons proprement au fur et à mesure que nous avancerons. Ne pas savoir ce qu'ils désignent exactement ne nous empêche pas d'utiliser ces concepts.

Dans Val(a)ide



Ouvrez l'éditeur Val(a)ide, et dans l'onglet "Projet" choisissez la commande "Nouveau". Un assistant vous propose son aide : cliquez sur Suivant, choisissez l'icône "Command" et cliquez à nouveau sur Suivant. Entrez un nom, par exemple "Hello", et cliquez sur Appliquer.

Dans la fenêtre principale de l'éditeur a été modifiée. Notamment, sur la gauche vous trouverez un nom de fichier : "main.vala". Il est important de savoir que "main" signifie "principal" en Anglais : en fait, un nouveau fichier a été créé avec ce nom, et il accueillera l'élément principal de votre programme. Double-cliquez sur ce nom.

Un onglet s'ouvre, où du code est déjà écrit. Modifiez-le de façon à avoir le texte suivant :

Code : Vala
1
2
3
4
5
6
7
8
9
public class Main /* Notre premier programme ! */
{
  public static int main (string[] args)
  {
    stdout.printf("Hello, World\n");
    
    return 0;
  }
}


Sauvegardez ensuite ce fichier, puis compilez-le en cliquant sur le bouton Construire dans la barre d'outils. Sous Windows, une fenêtre DOS devrait s'afficher pendant quelques secondes. Son titre contient le nom du compilateur valac, dont le rôle est de transformer votre code source Vala en un véritable exécutable.

Si vous êtes sous Windows...


Pour lancer votre programme, vous pouvez cliquer sur le bouton "Exécuter"... mais sous Windows, cela aura vraisemblablement pour effet d'ouvrir une fenêtre DOS qui se fermera aussitôt ! C'est du au fait que, sous ce système, les fenêtres DOS se referment lorsque le programme qui les avait ouvertes finit de s'exécuter. Il va donc falloir ruser.

Ouvrez (dans une fenêtre de l'explorer) le dossier de code défini au chapitre précédent, puis le répertoire "Hello". Ouvrez également une fenêtre DOS (menu Démarrer, Exécuter, tapez "cmd" et faites entrée), puis faites glisser le programme généré par valac (qui devrait s'appeler "Hello.exe") dans cette fenêtre. Faites ensuite entrée : votre programme est alors lancé, et il vous salue bien !

Si vous êtes sous Linux...


Normalement, cliquer sur le bouton "Exécuter" devrait suffire à lancer votre programme. Vous pouvez sinon le repérer dans votre explorateur de fichiers (Nautilus sous Gnome) et cliquer dessus pour l'exécuter.

Si vous n'utilisez pas Val(a)ide



Comme nous le disions au chapitre précédent, une certaine maîtrise de la ligne de commande, qu'elle soit DOS ou shell Unix, risque d'être nécessaire. À l'aide de votre éditeur de code favori, créez un fichier "main.vala" qui contiendra le programme donné plus haut.

Ouvrez une ligne de commande, et déplacez-vous à l'aide de la commande cd dans le répertoire qui contient le code sauvegardé. Par exemple, sous Windows, je fais personnellement cd "Mes documents\Vala\Code" (en utilisant la touche tabulation pour compléter les noms de répertoire).

Une fois que vous vous trouvez dans le bon répertoire, il suffit d'appeler le compilateur valac, par exemple en tapant valac -o programme.exe main.vala, ce qui a pour effet de compiler le fichier "main.vala" en produisant l'exécutable "programme.exe". Un certain nombre de messages peuvent être affichés : la plupart sont des avertissements dont vous n'avez pas forcément besoin de vous soucier, car ils concernent les fichiers de la GLib. Mais si votre programme est incorrect, c'est également ainsi que le compilateur vous le fera savoir. Nous apprendrons donc à lire ces messages par la suite.

Pour exécuter votre programme, vous n'avez plus qu'à écrire son nom, soit ici "programme.exe" ou ce que vous aurez choisi à la place (sous Linux, il n'est pas nécessaire d'utiliser le suffixe .exe, c'est même déconseillé :) ).


Il est important que vous réussissiez à exécuter des programmes écrits pour le mode texte, avec ou sans Val(a)ide, même si nos futures applications seront toutes graphiques : il est plus simple d'utiliser un tel mode pour l'apprentissage ou les phases de test, nous passerons donc fréquemment par là.

Si vous oubliez comment compiler et exécuter vos programmes, n'hésitez pas à revenir à cette section en adaptant les manipulations à la situation.

Explications du code

Il est temps de comprendre, au moins un peu, ce que vous avez accepté de compiler et d'exécuter sur votre machine ! En expliquant les différents morceaux de ce petit morceau de code, nous nous ferons une idée plus claire de ce qui compose un programme Vala, et de ce que nous aurons à apprendre dans la suite de ce cours. Revoici le code source :

Code : Vala
1
2
3
4
5
6
7
8
9
public class Main /* Notre premier programme ! */
{
  public static int main (string[] args)
  {
    stdout.printf("Hello, World\n");
    
    return 0;
  }
}


Ce code utilise des concepts qui seraient trop théoriques pour l'instant. Nous allons donc donner une première définition d'un programme en Vala : il commence toujours par le code

Code : Vala
1
2
3
4
public class Main 
{
  public static int main (string[] args)
  {


et se termine par

Code : Vala
1
2
3
return 0;
  }
}


La première ligne sert à donner un nom au morceau de programme que nous écrivons. Plus tard, vos programmes compteront plusieurs (centaines de) fichiers, chacun servant à une tâche bien précise. Ici on l'appelle "Main" pour dire "principal" en anglais ;) . On définit en fait ce que l'on appelle une classe. Dans une classe, on décrit le comportement d'un programme en rangeant le code dans des méthodes, entre une paire d'accolades { }.

La ligne public static int main (string[] args) définit une de ces méthodes. Cette définition de méthode utilise également un bloc d'accolades, qui contient le code de la méthode. C'est cette méthode qui constitue à proprement parler le coeur de notre programme : lorsque nous le compilons puis le lançons, c'est son code qui est aussitôt exécuté, instruction par instruction.

Il est inutile, pour l'instant, de se préoccuper de ce que les différents mots qui apparaissent peuvent vouloir dire. Nous nous contenterons de les écrire à chaque fois. Remarquez par contre que deux lignes de code apparaissent dans le bloc d'accolades de la méthode main . Chaque ligne est terminée par un point virgule : en Vala comme en C, on appelle ces lignes des instructions. Ce sont des ordres qui sont donnés à l'ordinateur, et qui sont exécutés un par un.

La ligne stdout.printf("Hello, World\n"); constitue l'instruction intéressante de notre programme : afficher le message "Hello, World" à l'écran. Pour cela, nous utilisons la méthode printf de l'objet stdout, en lui passant l'argument "Hello, World\n" qui est une chaîne de caractères (on les note entre guillemets pour que le compilateur ne les confonde pas avec des instructions à part entière). Cette chaîne se termine par \n, qui représente un retour à la ligne.

Enfin, le petit texte /* Notre premier programme ! */ , écrit en français et non en Vala, est un simple commentaire. Il est très conseillé de fréquemment commenter votre code, cela vous permet d'être plus clair non seulement pour un éventuel lecteur, mais aussi pour vous-même.

Ne paniquez pas si vous avez l'impression d'étouffer sous toutes ces informations. Nous décrivons ce programme maintenant pour avoir une idée de tout ce que nous allons apprendre dans les chapitres suivants. Nous allons devoir y passer beaucoup de temps pour que tout soit parfaitement clair, mais une fois que ça sera fait, vous aurez une maîtrise totale des bases de Vala !


Pour vous assurez que vous êtes déjà capables d'écrire des programmes très simples, essayez de modifier le programme précédent pour qu'il affiche non plus Hello, World mais Bonjour monde !. Puis, à l'aide d'une autre ligne de code que vous rajouterez en dessous de la première, faites-le écrire "Comment vas-tu ?".

Un bonjour graphique

Quand ça sera possible, nous essaierons d'illustrer ce que nous venons d'apprendre par des exemples graphiques plus concrets que de simples programmes en mode texte. À l'aide du menu Projet de Val(a)ide, fermez le projet en cours et ouvrez-en un nouveau, en choisissant cette fois-ci l'icône "GTK+" plutôt que "Command". La bibliothèque GTK+ est celle que Vala utilise (donc celle que nous utiliserons) pour dessiner des interfaces graphiques.

Une bibliothèque contient tout le code dont nous avons besoin, sans que nous sachions comment elle fonctionne réellement : il nous suffit de savoir l'utiliser. Nous reviendrons sur GTK+ dans la partie II du cours, quand nous connaîtrons bien le langage. Mais nous allons constater dès maintenant qu'il ne faut que peu de lignes pour faire des programmes graphiques. Nous allons donc travailler les bases, et rapidement nous manipulerons nos premières interfaces.

Modifiez le code du fichier "main.vala" de façon à ce qu'il soit le suivant

Code : Vala
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
public class Main
{
  public static int main (string[] args)
  {
    Gtk.init (ref args); /* Initialisation de GTK+ */

    Gtk.Window window = new Gtk.Window (Gtk.WindowType.TOPLEVEL); /* Création d'une fenêtre */
    window.set_default_size (150, 100);   /* Taille de la fenêtre */
    window.destroy.connect (Gtk.main_quit);     /* Si la fenêtre est fermée, le programme quitte */
    window.add (new Gtk.Label ("Bonjour les Zéros !"));

    window.show_all ();   /* Affichage */
    Gtk.main ();
    return 0;
  }
}


Compilez puis exécutez ce code. Si vous n'utilisez pas Val(a)ide, faites comme pour le programme en mode texte, mais en utilisant cette fois, pour compiler, la commande valac --pkg gtk+-2.0 -o programme .exe main.vala, qui précise au compilateur qu'il faut utiliser la bibliothèque GTK+.

Une fenêtre s'affiche, et vous salue à son tour. Relisez maintenant le code, en essayant de vous faire une vague idée de ce que chaque ligne signifie. Si certaines lignes vous échappent, ça n'est pas grave, nous y reviendrons dans deux ou trois chapitres. L'important est que vous fassiez le lien avec le programme précédent, en observant quels sont les points communs, et quelles sont les différences. C'est ainsi que vous comprendrez ce qui compose un programme !
Bien ! Maintenant que nous avons une idée de ce qui nous attend dans les prochains chapitres, commençons à comprendre Vala, et à écrire des programmes avec ce langage.
Chapitre précédent Sommaire Chapitre suivant

Partager

4 commentaires pour "Premiers programmes en Vala"
Note moyenne : 3.63 / 4 (35 votes)
Pseudo Commentaire
Hors ligne Vynile # Posté le 09/07/2010 à 13:52:10
Keep walking, nothing else.
Avatar

Y-a-t-il une version de Val(a)IDE (Valide) pour Mac OS X ?

Image utilisateur
 
Hors ligne antoyo # Posté le 11/07/2010 à 04:57:22
GNU/Linux forever!
Avatar

Études : Cégep de rimouski

Salut,
peut-être que tu peux compiler Valide à partir des sources.

Dans la première sous-partie, il y a cette phrase :
Citation
Dans la fenêtre principale de l'éditeur a été modifiée.

Elle devrait être reformulée...

Encore une fois :
Avancement : 90%
Tous les chapitres sont ainsi ; j'imagine que c'est parce qu'il n'y a pas de Q.C.M.

Mon extension pour Chrome/Chromium :
SaveAllPasswords : vous permet d’enregistrer vos mots de passe sur tous les sites Web (même ceux qui ne veulent pas :D ).
 
Hors ligne Peaker # Posté le 23/01/2011 à 20:10:52
Shit happens
Avatar

Ville : Genève
Pays : Suisse

Salut !
Citation : Yno
sous Linux, il n'est pas nécessaire d'utiliser le suffixe .exe, c'est même déconseillé

Jamais vu de .exe sous Linux. Amha, c'est plus que déconseillé... mais sinon, excellent tuto ! Je me réjouis d'avancer :)
 
Hors ligne arthric # Posté le 28/04/2012 à 12:57:06
Sauve un Bambou,Mange un Panda
Avatar

Avis : Très bon
Flux RSS

Bonjour ! J'utilise Mono avec son plug-in vala et je suis sur Ubuntu 11.04. J'ai un probleme à la ligne 10 , il m'affiche:
Error: The symbol `Gtk' could not be found (C+,C- Linux)
c'est un probleme de syntaxe ou de Mono?

:lol: internet explorer :lol:
 

Voir tous les commentaires