Page 1 sur 1

Case amélioré

Publié : mar. 28/déc./2004 12:49
par Anonyme2
Fred,
Vu que le Père Noël est resté sur Strasbourg (si, je l'ai entendu à la Télé :mrgreen: ) profites-en pour lui demander un select case amélioré

Code : Tout sélectionner

Select a
  Case  a> 10

  Case  a>= 10

  Case  a<> 10

  Case a in ['a'..'z']   ; a appartient à l'intervalle de l'alphabet et les bornes sont incluses

  Case a in ['a'..'z'[   ; a appartient à l'intervalle de l'alphabet et la borne finale n'est pas incluse, a peut valoir entre 'a' et 'y'

  Case a in ]'a'..'z']   ; a appartient à l'intervalle de l'alphabet et la 1ere borne n'est pas incluse, a peut valoir entre 'b' et 'z'

  Case a in ]'a'..'z'[   ; a appartient à l'intervalle de l'alphabet et les 2 bornes ne sont pas incluses, a peut valoir entre 'b' et 'y'

  Case a in ['a'..'z'] or ['A'..'Z']   ; a appartient au 1er intervalle de l'alphabet (minuscules) ou il appartient à l'intervalle des majuscules, avec comme ci-dessus les bornes à définir

  Case a out ['a'..'z']       ; etc
Idem pour les intervalles des chiffres.
Je pense que pour optimiser le code, il faudrait un certain nombre d'intervalles définis commes l'alphabet mais aussi les jours de la semaine, les mois de l'années

exemple

Code : Tout sélectionner

  Select Jour
     Case [Lundi..Vendredi]
          debug "ça craint, c'est le boulot"

     Case [samedi..Dimanche]
          debug "il faudrait créer que des samedi dimanche"



On pourrait aussi créer des intervalles

Code : Tout sélectionner

Interval  Arbre
   Bouleau
   Charme
   Chene   
   Epicea
   Frene
   Hetre
   Pin
   Tilleul
   Sapin  
EndInterval
et là encore on pourrait définir le type Arbre en byte, word, long, string

MonArbre = Pin

Code : Tout sélectionner

Select MonArbre
   Case in [Arbre]

   Case Out [Arbre]
endselect

Publié : mar. 28/déc./2004 12:58
par comtois
ouaip , ça serait super , d'ailleurs il y a déjà eu pas mal de demande à ce sujet sur le forum anglais , il y a un gros besoin dans ce domaine :)

Publié : mar. 28/déc./2004 13:03
par Anonyme2
comtois a écrit :ouaip , ça serait super , d'ailleurs il y a déjà eu pas mal de demande à ce sujet sur le forum anglais , il y a un gros besoin dans ce domaine :)
Je sais que ça déjà été demandé, mais comme je ne sais pas si Fred l'a écrit quelque part :roll:

En fait cette syntaxe je l'utilisais en Turbo Pascal (supeeeeeeeeeeeeeer pratique les intervalles)

Et puis la priorité c'est de pouvoir utiliser le case avec les signes > et <

Publié : mer. 29/déc./2004 10:13
par Dr. Dri
bah je pense que dans ce cas on fait plutot appel à ElseIf nan ???
Plus souple que le Case....

Dri

Publié : mer. 29/déc./2004 10:39
par Anonyme2
Dr. Dri a écrit :bah je pense que dans ce cas on fait plutot appel à ElseIf nan ???
Plus souple que le Case....

Dri
3 choses :

1) Le case est bien plus parlant et beaucoup plus intutif que le if elseif else (à mon goût) et permet d'avoir un code plus lisible

2) Le case donne un meilleur code car on selectionne une fois pour toute la variable du case avec le select alors qu'avec des if ce n'est pas le cas car derrière un elseif on peut mettre une expression qui n'a rien à voir avec le premier if.

3) actuellement le case est très limité dans son expression (pas de <> etc). C'est dommage pour les raisons évoqués ci-dessus.

Mais bon, on peut croire au Père Noël :D
Fred, y a encore de la place dans ta hotte ?

Publié : mer. 29/déc./2004 23:22
par Flype
dans le genre je trouverais pratique ce genre de syntaxe :
-

Code : Tout sélectionner

ForEach x in [ 1..10 ]
  Debug x
Next
x prends successivement la valeur 1, puis 2, ... jusqu'à 10
-

Code : Tout sélectionner

ForEach x in [ 10, 20, 30, 40 ]
  Debug x
Next
x prends successivement la valeur 10, puis 20, 30 et enfin 40
-

Code : Tout sélectionner

ForEach x in [ 1..10, 100..1000, 2000..2004 ]
  Debug x
Next
un mix des 2 précédents
-

Code : Tout sélectionner

a[] = [ 1, 2, 3, 4 ]

ForEach x in a[]
  Debug x
Next
l'idéal étant de pouvoir stocker la liste dans une variable
-

Code : Tout sélectionner

Dim a(4)

a() = (0, 1, 2, 3, 4)

ForEach a()
  Debug a()
Next
Ou rendre le ForEach compatible avec les tableaux à une seule dimension.
Et rendre possible le remplissage d'un tableau en une seule ligne.
-

Code : Tout sélectionner

a.s = "purebasic"

ForEach x in a
  Debug x
Next
Voir même avec les chaînes caractères
-
mais je sais ce sera pas papa noel 2004 qui m'amènera toutes ces idées.
:)

Publié : jeu. 30/déc./2004 7:11
par Anonyme2
Excellent Flype :D

Fred, il faut remplir ta hotte version 4.0 :D

Publié : jeu. 30/déc./2004 10:01
par Oliv
La hotte du père noël est elle déjà bien remplie à ce niveau là ???? :oops:

Publié : jeu. 30/déc./2004 13:08
par freddix
je pense que pour les CASES améliorés, le système peut-être très facilement ajouté si il est modifié sous ce principe :

Select VAR
CaseSuperiorTo VALUE ....
CaseInferiorTo VALUE ....
CaseInRange VALUEMIN , VALUEMAX ....
EndSelect

Publié : jeu. 30/déc./2004 13:34
par Oliv
C'est vrai que ça pourrait être très pratique comme ça

Publié : ven. 31/déc./2004 16:59
par Le Soldat Inconnu
c'est vrai que les intervalles en Turbo Pascal, c'était pratique

Publié : ven. 31/déc./2004 18:51
par gansta93
Les tableaux pourait être améliorés en faisant comme possible en php.

Code : Tout sélectionner

	users$ = array(
"user=>"jklm",
"Gansta93"=>"MotdePasse"
	);
Et puis après on lit les données:

Code : Tout sélectionner

Debug Users("Gansta93")
ça n'a rien à voir, mais je trouve que ça serait bien.

Publié : ven. 31/déc./2004 19:09
par Dr. Dri
Le php est interprêté.. Dans un langage plutôt bas niveau (programmé e assembleur nan ?) ce ne serait pas approprié de faire des tableaux indexés dynamiquement... Surtout avec des indices autres que numériques...

Dri ;)