Salut Chercheacomprendre,
1) Ok je t'ai dit de ne pas changer de pseudo sinon on ne s'y retrouvait pas. Mea Culpa: change de pseudo! Mets-en un plus simple (PPCoil par exemple si tu veux !!)
2) Ensuite Tmyke n'a pas tort dans le sens où il y a, comme qui dirait une conduite à suivre pour parvenir à programmer facilement.
3) Par exemple, j'ai fait 2 codes ci-dessous qui correspondent à ce que tu veux. Tu as juste à changer et rajouter toutes les valeurs dans la DataSection et ton bonheur est là pour le 2ème code.
4) Seulement, là tu ne peux pas comprendre tout le reste facilement.
POURQUOI? Parce que quand tu demandes quelque chose ici, et que quelqu'un prend la peine de te répondre, il est bien urbain de le remercier, ou au moins lui faire signe que tu as compris, bref de
continuer le sujet! Mais, le plus important, (le très important mêeeume!), c'est de faire signe
quand tu ne comprends pas une réponse.
Pour revenir à ta question :
Rappel d'anglais : Si = IF
Et = AND
Ou = OR
Donc, je te mets ce 1er code. Seulement, comme tu n'as pas répondu dans les premiers sujets il y a quelques jours, tu auras hélas la corvée de réécrire toutes tes conditions...
N'hésite pas à continuer ce sujet ici en posant tes questions, quite à ce qu'il y ait 3 pages, ce n'est pas gênant! Il vaut mieux pleins de questions et pleins d'explications centrées sur un seul sujet, plutôt que d'avoir une seule question et une seule réponse par sujet. Dans ce deuxième cas, c'est moins facile pour nous de saisir ce que tu veux, ce que tu sais et ce que tu ignores.
Ce qui est tracassant pour les habitués de ce forum, c'est de répondre en même temps à plusieurs des problèmes qu'un débutant peut rencontrer.
Code : Tout sélectionner
;Code simple mais long à écrire
;**********************************
Define Valeur.D
Define Resultat.D
If (Valeur => 1.5) And (Valeur < 1.7)
Resultat = 3.0
EndIf
; Traduction de la condition ci-dessus
; «Si la valeur est supérieure à 1.5 et strictement inférieure à 1.7 alors le résultat est égal à 3»
; Et ainsi de suite...
If (Valeur => 1.7) And (Valeur < 1.9)
Resultat = 4.0
EndIf
If (Valeur => 1.9) And (Valeur < 2.1)
Resultat = 5.0
EndIf
If (Valeur => 2.1) And (Valeur < 2.3)
Resultat = 6.0
EndIf
If (Valeur => 2.3)
Resultat = 7.0
EndIf
Equivaut à :
Code : Tout sélectionner
; Code plus complexe mais facile à modifier
;
;Code avec structure, procédure et tout le toutim
;****************************************
; Zone où sont stockées les infos numériques
; Ici le programme est plus complexe.
; L'avantage c'est qu'il n'y a juste qu'à modifier et rajouter les données
; ici dans DataSection.
DataSection
Tableau:
Data.S "1.5;3.0" ; Se traduit par «Si supérieur à 1.5 alors résultat = 3.0»
Data.S "1.7;4.0" ; etc...
Data.S "1.9;5.0"
Data.S "2.1;6.0"
Data.S "2.3;7.0"
Data.S ""
EndDataSection
;*******
; Modèle de structure pour chaque ligne d'info
Structure SiAlors
Condition.D
Resultat.D
EndStructure
;*******
; Préparation des variables et d'un tableau appelé N()
Global Dim N.SiAlors(99) ; ça c'est un tableau
Define Lecture.S ; ça c'est une variable non connue dans les procédures
Global Limite.L ; ça c'est une variable connue dans tout le programme
;*******
; Ici, on va charger les infos dans le tableau
Limite = 0
Restore Tableau
Repeat
Read.S Lecture
If Lecture
N(Limite)\Condition = ValD(StringField(Lecture, 1, ";") )
N(Limite)\Resultat = ValD(StringField(Lecture, 2, ";") )
Limite + 1
EndIf
Until Lecture = ""
;*******
; Procédure appelée Test() et qui fait la condition selon le tableau
Procedure.D Test(Entree.D)
Protected Sortie.D
Sortie = N(0)\Resultat
For i = 0 To Limite - 1
If (Entree => N(i)\Condition)
If (i = (Limite - 1) ) Or (Entree < N(i + 1)\Condition)
Sortie = N(i)\Resultat
EndIf
EndIf
Next i
ProcedureReturn Sortie
EndProcedure
;*******
;*******************************
; PROGRAMME PRINCIPAL
;*******************************
; Là on fait les tests
Debug Test(1.4)
Debug Test(1.6)
Debug Test(1.8)
Debug Test(2.0)