Les boucles FOR.
Voici un nouveau membre de la famille des structures de contrôle : La boucle For. 
Les boucles permettent de répéter un bout de code. Nous parlerons d'itération parfois aussi. 
Utilisez la boucle FOR lorsque vous savez à l'avance combien de fois le code se répétera. L'exemple ci-dessous affiche les chiffres de 1 à 26 et les lettres de l'alphabet : 
' Gambas module file
Public Sub Main()
 Dim i As Integer
 For i = 1 To 26
 Print CStr(i) & " " & String.Chr(i + 64)
 Next
End
Pour les curieux, la fonction String.Chr() affiche un caractère en fonction du code qu'on lui donne en se basant sur la table de caractères UTF-8. 
Il est possible de faire fonctionner la boucle à l'envers comme un compte à rebours : 
 For i = 26 To 1 Step -1
Essayez ! 
Vous l'aurez deviné, on peut faire les multiples de deux, etc. 
 For i = 0 To 20 Step 2
Et les boucles peuvent s'emboîter même si, comme pour les IF, je vous recommande de ne pas trop emboîter ces structures car c'est une source de bogues ! Vous aurez la possibilité de simplifier le code en appelant des sous-routines ou des fonctions.

Gambas 3/Gambas3LeLangage/Le type Float
Le type Float.
Une variable de type Float est destinée à contenir un chiffre à virgule flottante. 
Il est important de comprendre que le type Float est une approximation d'une valeur réelle. C'est ainsi dans tous les langages informatique : la valeur 1/3 n'est pas représentable par 0.333. Ou plutôt si mais c'est une approximation ! 
Notez en passant que vous notez la valeur littérale avec un point et pas avec une virgule (1.23 par exemple) ! 
Voici un code à tester chez vous : 
' Gambas module file
Public Sub Main()
 Dim fVal As Float
 Dim sSaisie As String
 Line Input sSaisie 
 If IsFloat(sSaisie) Then
 fVal = CFloat(sSaisie)
 Else
 fVal = 1.0
 Endif
 Print CStr(fVal)
End
Voici quelques fonctions pour convertir du texte en Float et inversement : 
 If IsFloat(sSaisie) Then fVal = CFloat(sSaisie)
 Print CStr(fVal)
Le f minuscule indique que la variable contient un Float soit un nombre à virgule flottante. 
Vous le verrez tout bientôt, les opérateurs vont nous permettre de faire des calculs : 
 Print CStr(fVal * 1.5)
 Print CStr(fVal + 1.234)
Vous allez tout voir un autre type de boucle : la boucle codice_1. Passez vite à la suite !

Gambas 3/Gambas3LeLangage/Les boucles WHILE

Les boucles WHILE.
Nous avons vu la boucle codice_1 qui est utilisée lorsque vous connaissez à l'avance le nombre d'itérations à faire. 
Parfois vous ne saurez pas combien de fois la boucle devra être exécutée. Dans ce cas, vous utiliserez une des structures suivantes : 
Ces structures font le même travail mais le codice_6 ... codice_7 est la version la plus moderne, la plus aboutie. 
Si vous ne devez retenir qu'un chose, utilisez codice_6 ... codice_7 qui est la structure la plus polyvalente et moderne ! 
WHILE.
D'un point de vue algorithmique, cela donne : 
Tant que la condition est vraie, exécute le code suivant ... fin de la boucle. 
Observez le code ci-dessous : 
' Gambas module file
Public Sub Main()
 While Second(Now) < 55
 Print Format(Now, "s")
 Sleep 1
 Wend
End
L'application va fonctionner jusqu'à ce que l'heure atteigne 55 secondes ! 
La structure codice_6 ... codice_7 étant souple peut s'utiliser de la même façon : 
' Gambas module file
Public Sub Main()
 Do While Second(Now) < 55
 Print Format(Now, "s")
 Sleep 1
 Loop
End
Toutefois, la structure de contrôle codice_6 ... codice_7 vous permet d'exécuter le code au moins une fois comme ceci : 
Public Sub Main()
 Do 
 Print Format(Now, "s")
 Sleep 1
 Loop While Second(Now) < 55
End
REPEAT ... UNTIL.
Il existe une structure appelée codice_4 ... codice_5 qui fonctionne comme ceci : 
' Gambas module file
Public Sub Main()
 Repeat 
 Print Format(Now, "s")
 Sleep 1
 Until Second(Now) > 55
End
Là aussi, codice_6 ... codice_7 fait le job : 
' Gambas module file
Public Sub Main()
 Do 
 Print Format(Now, "s")
 Sleep 1
 Loop Until Second(Now) > 55
End
Voilà, j'ai fini mon plaidoyer pour codice_6 ... codice_7 !

Gambas 3/Gambas3LeLangage/Clean Coding
Clean Coding.
Clean Coding est de l'anglais est signifie coder propre ou proprement.
Coder proprement, quel que soit le langage informatique utilisé, vient avec l'expérience et le désir de présenter un code accessible aux autres développeurs. Ce code devra être maintenable dans le futur ! 
Si les autres programmeurs profèrent des jurons en lisant votre code alors votre code n'est sans doute pas clair ! 
Si vous n'êtes pas obligé de réécrire le code à chaque changement, il y a de bonne chance que votre code soit propre. 
Bien entendu c'est une quête perpétuelle; Vous trouverez toujours un point à améliorer. À vous de sentir quand c'est suffisant. 
Il faut se fixer quelques règles permettant d'atteindre cet objectif : 
En cherchant sur le web, vous allez trouver des dizaines d'articles relatifs à cette thématique !

Gambas 3/Gambas3LeLangage/Les sous-routines

Les sous-routines.
Les sous-routines ou procédures sont des bouts de code qu'on appelle à chaque fois qu'on en a besoin. 
La sous-routine Main est appelée automatiquement au début du programme. 
Rien ne nous empêche d'en créer d'autres. Observez le code suivant : 
' Gambas module file
Public Sub RoutineOne()
 Print " RoutineOne Execution "
End
Public Sub RoutineTwo(sArg As String)
 Print " RoutineTwo Execution avec argument \"" & sArg & "\""
End
Public Sub Main()
 Print "Main Execution"
 RoutineOne()
 RoutineOne()
 RoutineTwo("valeur")
End
La routine nommée "RoutineOne()" a été créée en copiant bêtement la Routine "Main()". 
La routine nommée "RoutineTwo()" est un peu plus complexe car il y a un argument. 
Ici l'argument est obligatoire et il doit être typé String ! 
 Public Sub RoutineTwo(sArg As String)
Cool. Nous passons une valeur à une autre routine ! La prochaine wikipage va vous montrer comment récupérer une valeur après avoir appelé une fonction !

Gambas 3/Gambas3LeLangage/Les fonctions
Les fonctions.
Une fonction se caractérise par le mot codice_1. 
Il faut spécifier un type de retour pour la valeur que nous allons retourner. 
Le mot codice_2 à la fin du code permet de définir la valeur de retour. 
' Gambas module file
Public Function GetTwoTimes(f As Float) As Float
 Dim fResult As Float
 fResult = f + f
 Return fResult
End
Public Function Divide(f As Float) As Float
 Return (f / 2)
End
Public Sub Main()
 ' default values
 Dim sVal1 As String = "4"
 Dim sVal2 As String = "6" 
 Dim fVal1 As Float = 4.0
 Dim fVal2 As Float = 6.0
 ' get value from arguments 
 If Application.Args[1] Then sVal1 = Application.Args[1] 
 If Application.Args[2] Then sVal2 = Application.Args[2] 
 If IsFloat(sVal1) Then fVal1 = CFloat(sVal1)
 If IsFloat(sVal2) Then fVal2 = CFloat(sVal2)
 Print "We use functions now ! "
 Print " " & CStr(fVal1) & " * 2 = " & GetTwoTimes(fVal1)
 Print " " & CStr(fVal2) & " / 2 = " & Divide(fVal2)
End
Le code ci-dessus contient deux fonctions. 
Pour les curieux, codice_3 est une collection contenant les arguments passés au programme. 
Pour passer des arguments, procédez ainsi : après avoir généré l'exécutable, vous ouvrez le terminal dans le dossier de l'application puis vous tapez la commande comme suit : 
 gbr3 executable.gambas argument1 arg2
Une fonction peut prendre zéro, un ou plusieurs arguments comme pour un sous-routine. 
Une fonction peut appeler une autre fonction, etc.

Gambas 3/Gambas3LeLangage/Les opérateurs