Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Optimisation de routines. | |
| | Auteur | Message |
---|
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Optimisation de routines. Mar 28 Aoû 2012 - 18:23 | |
| Bonjour à tous.
Merci de votre aide concernant l'optimisation du programme qui suit. Il simule les fonctions java indexOf et substring.
Je souhaite simplement réduire le nombre de lignes des routines.
'indexOf' correspond à instr avec un paramètre supplémentaire permettant d'indiquer la position du début de la recherche, et substring est un mid$ avec le 3è paramètre optionnel.
dim temporaire$, temporaire2$ dim parametre$(4) dim kk%, position%, position_recherche%, xx%, zz99% dim parametre_bis%(4)
label indexOf, substring
edit 100 on_change 100, indexOf
text 100,"indexOf*Texte*te*2*xx%"
edit 101 on_change 101, substring
' Donne "jo" ' text 101,"substring*bonjour*3*2"
' Donne "jour" ' text 101,"substring*bonjour*3"
' #include "lecture_fichier.bas"
end
substring:
' Suivi d'un ou deux paramètres.
temporaire$=text$ (101)
for kk%=1 to 3 zz99%=instr(temporaire$,"*")
' substring avec seulement 2 paramètres. if zz99%=0 exit_for else temporaire2$=left$(temporaire$,zz99%-1) end_if if kk%<3 parametre$(kk%)=temporaire2$ else parametre_bis%(kk%)=val(temporaire2$) end_if
temporaire$=right$(temporaire$,len(temporaire$)-zz99%)
next kk%
parametre_bis%(kk%)=val(temporaire$)
if zz99%>0 temporaire$=mid$(parametre$(2),parametre_bis%(3)+1,parametre_bis%(4)) else temporaire$=right$(parametre$(2),len(parametre$(2))-parametre_bis%(3)) end_if message "*"+temporaire$+"*" return
indexOf:
temporaire$=text$ (100)
for kk%=1 to 4 zz99%=instr(temporaire$,"*") parametre$(kk%)=left$(temporaire$,zz99%-1) temporaire$=right$(temporaire$,len(temporaire$)-zz99%) next kk% position% = instr(parametre$(2),parametre$(3))-1 ' Sous-chaîne non trouvée. if position%<val(parametre$(4)) then position%=-1 if temporaire$="xx%" then xx%=position% message trim$(str$(xx%))
return | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Optimisation de routines. Mar 28 Aoû 2012 - 19:18 | |
| Bonsoir, il manque un peu de code concernant "IndexOf" (au sujet de xx%) Par contre au niveau de "substring": il n'y a rien de plus que je vois a part supprimer le else sur le 1er test zz99% : le exit for suffit... | |
| | | pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Optimisation de routines. Mar 28 Aoû 2012 - 20:01 | |
| Bonsoir.
Merci pour l'info concernant le 'exit_for'. | |
| | | pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Optimisation de routines. Mar 28 Aoû 2012 - 20:29 | |
| Bonsoir.
Voici la dernière version corrigée, et raccourcie.
dim temporaire$ dim parametre$(4) dim kk%, position%, position_recherche%, xx%, zz99%
label indexOf, substring
edit 100 on_change 100, indexOf
' text 100,"indexOf*Texte*te*2*xx%"
edit 101 on_change 101, substring
' Donne "jo" ' text 101,"substring*bonjour*3*2"
' Donne "jour" text 101,"substring*bonjour*3"
end
substring:
' Suivi d'un ou deux paramètres.
temporaire$=text$ (101)
for kk%=1 to 3 zz99%=instr(temporaire$,"*")
' substring avec seulement 2 paramètres. if zz99%=0 then exit_for
parametre$(kk%)=left$(temporaire$,zz99%-1)
temporaire$=right$(temporaire$,len(temporaire$)-zz99%)
next kk%
parametre$(kk%)=temporaire$
if zz99%>0 temporaire$=mid$(parametre$(2),val(parametre$(3))+1,val(parametre$(4))) else temporaire$=right$(parametre$(2),len(parametre$(2))-val(parametre$(3))) end_if message "*"+temporaire$+"*" return
indexOf:
temporaire$=text$ (100)
for kk%=1 to 4 zz99%=instr(temporaire$,"*") parametre$(kk%)=left$(temporaire$,zz99%-1) temporaire$=right$(temporaire$,len(temporaire$)-zz99%) next kk% position% = instr(parametre$(2),parametre$(3))-1 ' Sous-chaîne non trouvée. if position%<val(parametre$(4)) then position%=-1 if temporaire$="xx%" then xx%=position% message trim$(str$(xx%))
return | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 28 Aoû 2012 - 20:33 | |
| @ Pan59, Tu voudrais pas utiliser les balises de code '['code']' et '[/code]' pour la partie code de ton post ? ce serait plus lisible... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Optimisation de routines. Mer 29 Aoû 2012 - 9:21 | |
| - Code:
-
dim temporaire$ dim parametre$(4) dim kk%, position%, position_recherche%, xx%, zz99%
label indexOf, substring
edit 100 on_change 100, indexOf
' text 100,"indexOf*Texte*te*2*xx%"
edit 101 on_change 101, substring
' Donne "jo" ' text 101,"substring*bonjour*3*2"
' Donne "jour" text 101,"substring*bonjour*3"
end
substring:
' Suivi d'un ou deux paramètres.
temporaire$=text$ (101)
for kk%=1 to 3 zz99%=instr(temporaire$,"*")
' substring avec seulement 2 paramètres. if zz99%=0 then exit_for
parametre$(kk%)=left$(temporaire$,zz99%-1)
temporaire$=right$(temporaire$,len(temporaire$)-zz99%)
next kk%
parametre$(kk%)=temporaire$ if zz99%>0 temporaire$=mid$(parametre$(2),val(parametre$(3))+1,val(parametre$(4))) else temporaire$=right$(parametre$(2),len(parametre$(2))-val(parametre$(3))) end_if
message "*"+temporaire$+"*"
return
indexOf:
temporaire$=text$ (100)
for kk%=1 to 4 zz99%=instr(temporaire$,"*")
parametre$(kk%)=left$(temporaire$,zz99%-1) temporaire$=right$(temporaire$,len(temporaire$)-zz99%) next kk%
position% = instr(parametre$(2),parametre$(3))-1
' Sous-chaîne non trouvée. if position%<val(parametre$(4)) then position%=-1
if temporaire$="xx%" then xx%=position%
message trim$(str$(xx%))
return | |
| | | pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Optimisation de routines. Mer 29 Aoû 2012 - 20:18 | |
| Bonsoir.
Le problème est le suivant: comment récupérer plus simplement le résultat dans xx%, dans la ligne qui suit.
if temporaire$="xx%" then xx%=position%
Merci de votre aide. | |
| | | Contenu sponsorisé
| Sujet: Re: Optimisation de routines. | |
| |
| | | | Optimisation de routines. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |