Page 1 sur 1

svp un petit exemple de quelques lignes avec if elself ...

Publié : mar. 17/févr./2009 21:51
par chercheacomprendre
bonsoir,

j'aimerais avoir un exemple de quelques lignes sur un test :

si 2*(a/b) = 0.05 alors K = 0.97

merci par avance.
on peut faire plusieurs test a la suite ?

merci .

Publié : mar. 17/févr./2009 22:05
par tmyke
Heeu, bon, je sent que tu cherche à me tester, donc alors pour commencer, une p'tite réponse très rapide à ta question:

Code : Tout sélectionner

if  (2*(a/b)) = 0.05
   K = 0.97
endif
t'as vue, j'ai fait court et simple, enfin je pense.
(attention à 'b' qui doit être différent de zéro, enfin je dis cela comme çà hein...)

sinon, vue ta question, penser déjà à te former aux base de la programmation, cela serait déjà un bon début non ?
(et la tu vas me dire que c'est le but de ton passage ici.)

Car visiblement, tu sembles vraiment partir de zéro ou presque. On est tous passé par là ceci dit. Donc par exemple,
tu pourrais, pour t'aider à temps perdu, t'acheter un bon bouquin, et le potasser et tu y verrais
certainement beaucoup plus clair, au moins en ce qui concerne les bases qui sont
d'ailleurs communes à tout les langages ou presque (les variables, les conditions, structure d'un programme, etc...) ;)

tiens, sinon un petit lien sympa (parmis d'autres), en plus dédié PureBasic, qui devrait te donner
pas mal de matière. Si tu arrives à bien assimiler cela, alors tu aura déjà fait un pas important, et tu pourras
continuer ton petit bonhomme de chemin plus serin :
http://www.siteduzero.com/tutoriel-3-22 ... basic.html

Bonne nuit.

Publié : jeu. 19/févr./2009 8:44
par brossden
Il y a un problème avec les décimales sous PureBasic et d'ailleurs bien d'autres languages.
Par défaut le résultat d'un calcul est un entier donc pas moyen de le comparer à une valeur décimale.
L'astuce est de créer une variable acceptant les décimales et d'attribuer le résultat à cette variable. (Voir plus bas une autre possibilité !)
Il devient alors possible de faire une comparaison .

Voici un exemple.

Code : Tout sélectionner

Txt.S=""
For a=1 To 3
  For b=79 To 81
    Res.d = 2*a/b
    If Res =  0.05
      k.d=0.97
      Attention.S=" <<<<<<<<<<<<<<<< Ok"
    Else
      k.d=0
      Attention.S=" "
    EndIf
    Txt + "Si a =" + Str(a)+ " et b = " + Str(b) + "  Donc 2*a/b = " + StrD(2*a/b)+ " Alors K= "+StrD(k,2)+Attention + Chr(13)
  Next
  

Next

  MessageRequester("",Txt)
Je viens de me rendre compte d'une autre possibilité c'est de comparer directement le calcul mais en mettant d'abord la valeur décimale mais attention comme l'ordre à une importance gare aux modifs ultérieures

Code : Tout sélectionner

Txt.S=""
For a=1 To 3
  For b=79 To 81
    If  0.05 = 2*a/b
      k.d=0.97
      Attention.S=" <<<<<<<<<<<<<<<< Ok"
    Else
      k.d=0
      Attention.S=" "
    EndIf
    Txt + "Si a =" + Str(a)+ " et b = " + Str(b) + "  Donc 2*a/b = " + StrD(2*a/b)+ " Alors K= "+StrD(k,2)+Attention + Chr(13)
  Next
Next

MessageRequester("",Txt)

Publié : jeu. 19/févr./2009 12:48
par Ollivier
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)

Publié : jeu. 19/févr./2009 14:07
par brossden
Code plus simple, rapide à écrire et facile à modifier:

Code : Tout sélectionner

Define Valeur.D
Define Resultat.D

If Valeur => 2.3
  Resultat = 7
ElseIf Valeur => 2.1
  Resultat = 6
ElseIf Valeur => 1.9
  Resultat = 5
ElseIf Valeur => 1.7
  Resultat = 4
ElseIf Valeur => 1.5
  Resultat = 3
EndIf

Publié : jeu. 19/févr./2009 16:07
par Ollivier
brossden a écrit :Code plus simple, rapide à écrire et facile à modifier:
Ben... Euh... Oui!