# Programmation 4GL/Bases du langage

* Introduction
* Bases du langage
** Types de données
** Tableaux
** Opérateurs
** Tests
** Itérations
** Fonctions
* Introduction
* Bases du langage
** Types de données
** Tableaux
** Opérateurs
** Tests
** Itérations
** Fonctions
[ Modifier le sommaire ]

## Hello World!!

Comme pour tout langage de programmation, voici le programme traditionnel:
Comme on peut le constater, ce programme contient trois lignes de code que nous allons tout de suite détailler.
Défini le point d'entrée du programme, à la manière du langage C. Notez toutefois l'absence de paramètres.
Affiche le texte Hello World!! à l'écran.
Indique la fin du programme. L’exécution se termine à ce point.

## Compilation

Le 4GL étant un langage compilé, il faut compiler ce programme.
L'extension par défaut est évidemment 4gl, copier/collez donc le code précédent dans un fichier nommé hello.4gl.
La compilation s'effectue ensuite par la commande:
Cela génère un fichier a.out exécutable.
Pour générer un fichier avec un nom plus parlant, on utilise l'option -o:
Ce qui crée le fichier hello.4ge.

## Exécution

Pour exécuter le programme, il suffit de taper son nom dans un terminal, ou de cliquer sur son icône.

## Éléments de syntaxe
### Identificateurs

Les identificateurs commencent toujours par une lettre ou un caractère souligné. Les mots-clés et les symboles sont insensibles à la casse et peuvent contenir uniquement des lettres, chiffres et le caractère souligné.
Exemples:

### Mots clefs

4GL contient un certain nombre de mots clefs que nous détaillerons par la suite, la plupart des ressources disponibles sur Internet contiennent des exemples avec ces mots clefs en majuscules. Ce langage étant insensible à la casse, ça n'est absolument pas nécessaire. Les exemples de ce livre seront donc tous à priori en minuscule. La coloration syntaxique de votre éditeur de texte préféré sera donc mis à contribution.

### Commentaires

Les commentaires peuvent être introduits par # (comme en shell)ou être inclus entre accolades { }. Il n'est pas nécessaire de positionner ces caractères en début de ligne.

### Instructions

Contrairement à certains langages, la fin des instructions est implicite, lorsque la syntaxe est correcte évidemment.
Exemple 1:
Exemple 2:
Évidemment, il est préférable d'écrire le programme comme illustré dans la première version, une instruction par ligne.

### Déclarations de variables

Les variables sont déclarés par l'instruction:
Ce qui a pour effet de définir une variable nommée ma_var de type mon_type. En fonction du compilateur, les variables peuvent être définies à une valeur par défaut. Il est néanmoins conseillé d'initialiser les variables avant utilisation.
Cette instruction define doit être la première d'un fichier ou d'une fonction, sous peine de générer une erreur de compilation.
Il existe pour les variables 3 types de portées en 4GL, en fonction de l'emplacement de l'instruction define.
* Globale
** les variables définies à l'intérieur d'un bloc globals ... end globals sont accessibles partout. Il est recommandé de placer ces définitions dans un fichier spécifique et d'inclure ce fichier dans chacun des modules.
* Locale à un fichier
** les variables définies au début d'un fichier source, et à l'extérieur de toute fonction, sont locales au fichier, et sont donc accessibles dans tout le fichier.
* Locale à une fonction
** les variables définies au début d'une fonction, sont locales à la fonction et ne sont donc pas accessibles en dehors de celle-ci.