Obligement - L'Amiga au maximum

Mercredi 24 janvier 2018 - 02:38  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : AMOS - Les conditions
(Article écrit par Jean Monos - décembre 2017)


Un langage de programmation sans les conditions, c'est un peu un fromage sans vin rouge ! Nous allons commencer par le début. Qu'est-ce qu'une condition dans un langage de programmation ? Ou plutôt, un test de condition ? C'est un petit truc qui permet, comme son nom l'indique, de tester une expression et d'appliquer une conséquence. Exemple un peu concret de la vie : pour aller voir le dernier film d'horreur bien sanglant avec du sang, et tout ce qui va avec, il faut être âgé de 18 ans ou plus. Quand vous vous pointez au cinéma pour voir ce film, le vendeur de billet, s'il fait bien son travail, dit un truc : "quel âge avez-vous ?" Si votre âge est inférieur à 18 ans, il ne vous vend pas le billet. Si votre âge est égal ou supérieur à 18 ans, alors vous avez votre billet et vous pouvez voir un film d'horreur avec du sang et tout ce qui va avec !

Nous allons décomposer cela en langage universel :

Age = (Ton Age)

Si "Age est supérieur ou égal à 18, alors s'affiche à l'écran : "C'est bon, vous êtes majeur, vous pouvez regarder le film" sinon, s'affiche à l'écran : "Vous n'êtes pas majeur, ce film est interdit pour vous."

Dans cette phrase, j'ai ajouté un petit truc : le "sinon". Il permet dans cet exemple de mettre en place une conséquence si la condition initiale n'est pas vraie.

En AMOS, c'est simple. Nous utilisons la triplette suivante : If, Then, Else.
  • If = Si.
  • Then = Alors.
  • Else = Sinon.
Voici un petit programme en AMOS pour illustrer ceci :

AGE=16
If AGE=>18 Then Print "Vous pouvez entrer" Else Print "Vous n'êtes pas majeur"

Lancez le programme pour voir l'effet. Dans cet exemple, la condition n'est pas validée, donc le "Then" en lui-même n'est pas enclenché. Mais comme il y a un "Else", alors celui-ci est joué.

Le "Else" n'est pas obligatoire dans une condition. C'est bien sûr en fonction de ce que vous voulez faire. Vous pouvez modifier la valeur de "AGE" à 18 ou plus pour voir l'effet du "Then".

Voici les tests de condition possibles en AMOS :
  • Égale est représenté par le signe égale : =. Attention : en AMOS, c'est bel et bien un seul signe égal dans les tests de conditions et non le double égale qui est présent dans 99% des autres langages de programmation.
  • Supérieur : >
  • Inférieur : <
  • Inférieur ou égal : <=
  • Supérieur ou égal : =>
  • Différent : <>
Plusieurs conditions pour un effet

Il est possible de tester de multiples conditions combinées pour savoir si l'effet peut être joué. Voici un exemple. Je voudrais que la phrase Ok soit affichée à l'écran seulement si la variable A=1 ET B=1. Sinon, on affiche "Pas Ok".

Le "ET" se traduit en AMOS par "AND". Et la condition :

If A=1 and B=1 Then Print "Ok" Else Print "Pas Ok"

Pour que "Then" soit opérationnel, il faut que la condition A soit vraie ET que la condition B soit vraie.

A=1
B=1
If (A=1 and B=1) Then Print "Ok" Else Print "Pas Ok"

Voici le petit code complet et j'ai ajouté une parenthèse à la condition. Cela marche et comme toute parenthèse, cela a son utilité dans des conditions un peu plus complexes.

A la place du "ET", nous pouvons utiliser le "OU" (qui s'écrit "OR" en AMOS).

A=1
B=1
If (A=1 or B=1) Then Print "Ok" Else Print "Pas Ok"

Concrètement dans ce petit morceau de code, le "Ok" est affiché à l'écran quand la condition 1 est vraie OU que la condition 2 est vraie. Donc si A=1 et si B=1, alors le test est vrai. Si A=0 et que B=1, le test est vrai. Si A=1 et que B=0, le test est vrai. Mais si A=0 et que B=0, alors le test n'est plus vrai !

Effet sur plusieurs lignes

Les effets sur une seule ligne, c'est casse bonbon et pas lisible car c'est trop compacté. Imaginez une condition qui déclenche une vingtaine d'instructions : c'est la misère. Les conditions peuvent prendre plusieurs lignes. Je reprends le dernier test de condition et je le transforme en plusieurs lignes.

A=1
B=1
If (A=1 or B=1)
Print "Ok"
Else
Print "Pas ok"
End If

Voyons un peu ce qui change dans cet exemple :
  • Déjà, la condition n'est pas suivie d'un "Then". Le "Then" est donc implicite.
  • Les instructions sont donc placées en dessous de la condition en elle-même.
  • Le "Else" fonctionne aussi comme le "If". Il est seul sur une ligne et en dessous se trouvent les instructions du "Else".
  • Et à la fin de la condition, nous avons droit au "End If" qui marque la fin du test de condition.
Cela devient tout de suite lisible. Elle n'est pas belle la vie ?

Conditions dans des conditions

Il est possible de placer des conditions dans des conditions. Mais pour ça, il faut utiliser des conditions en plusieurs lignes.

A=1
B=1
If (A=1 or B=1)
Print "Ok"
If A=1
Print "A=1"
End If
Else
Print "Pas ok"
End If

Vous ne pouvez pas placer une condition "If...Then", donc sur une seule ligne, dans des conditions multilignes. Faites bien attention à cela.

Vrai et faux

Nous allons ajouter deux nouveaux états dans les tests de condition qui existent en AMOS. Tester une variable si elle est vraie ou fausse. En AMOS, c'est "True" pour vrai et "False" pour faux. "True" et "False" sont des constantes. "True" est égale à -1 et "False" à 0.

Donc :

A=-1
If (A=True) Then print "Condition vraie"

La condition est vraie car A est bien égale à -1. Si on change A par une autre valeur, la condition n'est plus vraie du tout.

A=0
If (A=False) Then print "Condition vraie"

Cette condition est vraie car False=0 et que A=0. La condition est donc vérifiée. Si on change A par une autre valeur, la condition est fausse.

Notons que dans d'autres langages de programmation, "True" peut être égal à toute valeur qui est différente de 0. Mais pas en AMOS !

Multiples tests

Attention, ceci n'est valable que dans la version professionnelle d'AMOS ! L'AMOS ne possède pas la fonction "CASE" qui existe dans d'autres langages de programmation comme le C par exemple, mais il est possible de s'approcher de tout cela avec "Else If". Voyons cela sur un simple test :

A=1
If (A=1)
Print "A=1"
Else If (A=2)
Print "A=2"
Else If (A=3)
Print "A=3"
End If

"A" est testé au début de la condition. Quand la condition est vraie, les instructions sont lues et interprétées. Une fois un nouveau "Else If" rencontré du même bloc, cela saute jusqu'au "End If" de cette même condition.

Pour mieux comprendre tout cela, regardez les deux petits programmes suivants. L'un avec des "Else If" et l'autre avec seulement des "If" les uns à la suite des autres :

A=1
If (A=1)
Print "A=1"
A=A+1
Else If (A=2)
Print "A=2"
A=A+1
Else If (A=3)
Print "A=3"
A=A+1
End If

Et :

A=1
If (A=1)
Print "A=1"
A=A+1
End If

if (A=2)
Print "A=2"
A=A+1
End If
if (A=3)
Print "A=3"
A=A+1
End If

Dans le premier cas, A=1. Il passe au premier test et vu que A=1, cela affiche bien le texte et ajoute 1 à A. Donc A=2 et on saute directement au "End If". Les autres tests ne sont pas joués.

Dans le deuxième cas, A=1, la condition est vraie, donc on affiche bien le texte, on ajoute 1 à A. Donc A=2. On va au "End If". Et là, on a un nouveau test pour savoir si A=2. Et comme c'est vrai, on affiche le texte.

Donc "Else If" est important pour tester de multiples conditions. Il est possible en AMOS non professionnel et Easy AMOS d'arriver à ce même résultat. Voici un exemple :

A=1
If (A=1)
Print "A=1"
A=A+1
End If

if (A=2)
Print "A=2"
A=A+1
Goto Condition_A
End If
if (A=3)
Print "A=3"
A=A+1
Goto Condition_A
End If
Condition_A :
print "Fin"

L'exemple présenté ici est l'utilisation d'une étiquette et d'un Goto pas très beau. On peut aussi imbriquer des conditions de condition de condition avec des "Else". Mais c'est encore bien moins lisible à mon goût.

Alors concrètement, à quoi vont servir les conditions ?

C'est le nerf de la programmation, sans condition, pas de déviation de programme. Les tests de condition vont donc servir par exemple à tester, dans un jeu, si le nombre de vies de votre héros n'est pas à 0 pour enclencher la fin de la partie par exemple. Ou à tester si la position du héros n'est pas sur une case piège. Ou je ne sais pas quoi d'autre encore.


[Retour en haut] / [Retour aux articles]