FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Convertisseur Binaire Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Convertisseur Binaire Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Convertisseur Binaire Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Convertisseur Binaire Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Convertisseur Binaire Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Convertisseur Binaire Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Convertisseur Binaire Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Convertisseur Binaire Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Convertisseur Binaire Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Convertisseur Binaire Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Convertisseur Binaire Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Convertisseur Binaire Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Convertisseur Binaire Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Convertisseur Binaire Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Convertisseur Binaire Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -38%
Ecran PC gaming 23,8″ – ACER KG241Y P3bip ...
Voir le deal
99.99 €

 

 Convertisseur Binaire

Aller en bas 
4 participants
AuteurMessage
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Convertisseur Binaire Empty
MessageSujet: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 0:12

Un petit utilitaire pour convertir un nombre décimal en Binaire et inversement....

Code:
dim x% ,v%(8),v$,valeur%,b%(8),y%,M%,a$,E%(8),E$
' ------------------------------------------------------------------------------
label Menu,dec_to_bits,bits_to_dec,Messager
' ------------------------------------------------------------------------------
width 0,300:height 0,150:caption 0,"Convertisseur Bits - Décimal":font_name 0,"arial"
main_menu 1
sub_menu 2:parent 2,1:caption 2,"Déc... to Bits":on_click 2,Menu
sub_menu 3:parent 3,1:caption 3,"Bits to Déc...":on_click 3,Menu
alpha 4:hide 4:top 4,15:left 4,15
edit 5 :hide 5:width 5,90:top 5,30:left 5,15
alpha 6:hide 6:top 6,15:left 6,120
edit 7 :hide 7:width 7,90:top 7,30:left 7,120:color 7,230,250,250
button 8:hide 8:caption 8,"Conversion":top 8,60:left 8,200
end
' ------------------------------------------------------------------------------
Menu:
for x%=2 to 3
  if clicked(x%)=1 then M%=x%
next x%
select M%
case 2
caption 4,"Déc...":caption 6,"Bits":on_click 8,dec_to_bits
text 5,"":text 7,""
for x%=4 to 8:show x%:next x%
set_focus 5
case 3
caption 4,"Bits":caption 6,"Déc...":on_click 8,bits_to_dec
text 5,"":text 7,""
for x%=4 to 8:show x%:next x%
set_focus 5
end_select
return
' ------------------------------------------------------------------------------
bits_to_dec:
a$=text$(5):E$="":E%(0)=0
if a$<>"" and len(a$)=8 and numeric(a$)=1 and val(a$)<256
  v%(1)=1
  for x%=2 to 8 :v%(x%)=v%(x%-1)*2:next x%
  y%=9
  for x%=1 to 8
      y%=y%-1
      E$=mid$(a$,x%,1)
      if val(E$)=0 or val(E$)=1
        E%(x%)=val(E$)*v%(y%)
        E%(0)=E%(0)+E%(x%)
      else
        goto Messager
        exit_for
      end_if
  next x%
  text 7,str$(E%(0))
end_if
return
' ------------------------------------------------------------------------------
dec_to_bits:
a$=text$(5):v$="":valeur%=0
if a$<>"" and len(a$)<4 and numeric(a$)=1 and val(a$)<256
  valeur%=val(text$(5))
  v%(1)=1
  for x%=2 to 8 :v%(x%)=v%(x%-1)*2:next x%
  y%=0
  for x%=8 to 1 step -1
      y%=y%+1
      if valeur%>=v%(x%)
        b%(y%)=1
        valeur%=valeur%-v%(x%)
      else
        b%(y%)=0
      end_if
      v$=v$+str$(b%(y%))
  next x%
  text 7,v$
else
  gosub Messager
end_if
return

Messager:
  message "Entrée Invalide !"
  text 5,""
return
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 1:21

Sympa, j'ai fais quelques modifs, j'espère que tu vas aimer, c'est mineur, mais bon quelques précision pour la saisi, un goto remplacé par un gosub et la routine menu simplifiée je trouve (ça c'est peut être un point de vue personnel ...)
Code:
' ------------------------------------------------------------------------------
' Covertisseur Decimal-binaire  binaire-décimal
' Version 1.0 par Ygeronimi  (le 01/09/2012)
' Ecrit en Panoramic (Version 0.9.23i)
' ------------------------------------------------------------------------------

dim x% ,v%(8),v$,valeur%,b%(8),y%,M%,a$,E%(8),E$
' ------------------------------------------------------------------------------
label Menu,dec_to_bits,bits_to_dec,Messager
' ------------------------------------------------------------------------------
width 0,300:height 0,150:caption 0,"Convertisseur Bits - Décimal":font_name 0,"arial"
main_menu 1
sub_menu 2:parent 2,1:caption 2,"Déc... to Bits":on_click 2,Menu
sub_menu 3:parent 3,1:caption 3,"Bits to Déc...":on_click 3,Menu
alpha  4:hide 4:top 4,15:left 4,15
edit  5:hide 5:width 5,90:top 5,30:left 5,15
alpha  6:hide 6:top 6,15:left 6,120
edit  7:hide 7:width 7,90:top 7,30:left 7,120:color 7,230,250,250
button 8:hide 8:caption 8,"Conversion":top 8,60:left 8,200
end
' ------------------------------------------------------------------------------
Menu:
if clicked(2)=1
  M%=2 : caption 4,"Déc... (0 à 255)":caption 6,"Bits":on_click 8,dec_to_bits
else
  if clicked(3)=1
    M%=3 : caption 4,"bits (8 bits max)":caption 6,"Déc...":on_click 8,bits_to_dec
  else
    M%=0
  end_if
end_if
if M% > 0 then text 5,"":text 7,"": for x%=4 to 8:show x%:next x% : set_focus 5
return
' ------------------------------------------------------------------------------
bits_to_dec:
a$=text$(5):E$="":E%(0)=0
if a$="" or numeric(a$)=0 or len(a$) > 8 then gosub Messager: return
if len(a$) <8 then a$=right$("00000000"+ a$,8)
v%(1)=1
for x%=2 to 8 :v%(x%)=v%(x%-1)*2:next x%
y%=9
for x%=1 to 8
  y%=y%-1
  E$=mid$(a$,x%,1)
  if val(E$)=0 or val(E$)=1
    E%(x%)=val(E$)*v%(y%)
    E%(0)=E%(0)+E%(x%)
  else
    gosub Messager
    exit_for
  end_if
next x%
text 7,str$(E%(0))
return
' ------------------------------------------------------------------------------
dec_to_bits:
a$=text$(5):v$="":valeur%=0
if a$<>"" and numeric(a$)=1 and val(a$)<256 and val(a$) >=0
  valeur%=val(text$(5))
  v%(1)=1
  for x%=2 to 8 :v%(x%)=v%(x%-1)*2:next x%
  y%=0
  for x%=8 to 1 step -1
      y%=y%+1
      if valeur%>=v%(x%)
        b%(y%)=1
        valeur%=valeur%-v%(x%)
      else
        b%(y%)=0
      end_if
      v$=v$+str$(b%(y%))
  next x%
  text 7,v$
else
  gosub Messager
end_if
return

Messager:
  message "Entrée Invalide !"
  text 5,""
return
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Convertisseur Binaire Empty
MessageSujet: re   Convertisseur Binaire EmptyDim 2 Sep 2012 - 1:39

Bien vu pour la précision des formats d'entrée,

je ne comprends pas trop ton formatage avec :
Code:
if len(a$) <8 then a$=right$("00000000"+ a$,8)
tu rends valide un format invalide et il y a un risque de réponse erronée ...?....non ?

Pour le reste je suis ok, rien ne me dérange, du moment que le résultat est juste.... Laughing

edit : j'aurais plutôt vu çà comme çà :

if a$="" or numeric(a$)=0 or len(a$) <> 8 then gosub Messager: return
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Convertisseur Binaire Empty
MessageSujet: re   Convertisseur Binaire EmptyDim 2 Sep 2012 - 1:44

Ceci dit, que penses tu du degrès d'utilité du truc ?
J'ai hésité à le mettre dans les inutilitaires... Wink
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 1:52

Non, ça peut servir quand on travail sur du binaire, ce qui n'arrive pas tous les jours, mais qui arrive quand on attaque les dll Windows, les format binaires de certaines images, la lecture de valeur de la mémoire, etc ...

L'idée du if len(a$) <8 c'est de ce dire si on ne joue que sur les 3 bits, 4 ou 5 bits, il n'est pas utile de mettre les 0 non significatifs devant. mais c'est un choix.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Convertisseur Binaire Empty
MessageSujet: re   Convertisseur Binaire EmptyDim 2 Sep 2012 - 1:56

Oui, mais ( je fais mon chieur parce que je n'en sais rien Laughing )
l'équation de conversion sera t elle toujours juste ?

la curiosité serait sur 32 et 64 bits pour les systèmes d'exploitation ... Wink
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 2:20

Petit bug

Lorsqu’on cherche à convertir un nombre binaire en décimal et qu’on saisit une valeur erronée (par exemple 123), le système répond ’entrée invalide’ mais affiche qu’en même une valeur fantaisiste !
Pour corriger ça : ligne 49 ajouter RETURN après GOSUB MESSAGER.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 2:46

Petite correction à apporter également:
Code:
...
dec_to_bits:
a$=text$(5):v$="":valeur%=0
if numeric(a$)=0 OR a$="" then gosub Messager:return

if val(a$)<256 and val(a$) >=0
  valeur%=val(text$(5))
  ...

et en faisant ceci, pas besoin de tester la valeur de E$ :

Code:

bits_to_dec:
  a$=text$(5):E$="":E%(0)=0
  if a$="" or numeric(a$)=0 or len(a$) > 8 or instr("23456789",a$)<>0 then gosub Messager: return
  ...

Sinon la saisie d'une valeur erronée plante le prog...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 3:04

Encore un bug

Lorsqu’on cherche à convertir un nombre décimal en binaire et qu’on saisit une valeur erronée (par exemple aqw), le système affiche un message d’erreur :
(33) Not correct logical expression : Error function.Line 58’
Parce que la fonction VAL() necessite que le string doit OBLIGATOIREMENT représenter un nombre.
Pour corriger ça : on peut décomposer la ligne 58
Code:

if a$<>"" and numeric(a$)=1 and val(a$)<256 and val(a$) >=0
En 2 lignes comme ceci
Code:

if a$<>"" and numeric(a$)=1
    if  val(a$)>255 or val(a$) < 0 then gosub messager : return
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 3:09

Bien vu Nardo26
J’ai vu ton message après avoir posté le mien.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 10:15

Bonjour,

@ygeronimi : Maintenant que tu piges le principe de la représentation du binaire, tu vas pouvoir comprendre celui-ci:
J'avais fait ce petit programme il y a quelques temps... Wink

Code:
dim conv$,base,DecN,DecN$
label Dec2N
label N2Dec
conv$="0123456789ABCDEF"

DecN=234:base=2
print "Conversion de ";DecN;" en base ";base;" = ";
gosub Dec2N: print DecN$

DecN=74:base =8
print "Conversion de ";DecN;" en base ";base;" = ";
gosub Dec2N: print DecN$

DecN=51966:base=16
print "Conversion de ";DecN;" en base ";base;" = ";
gosub Dec2N: print DecN$

DecN=817:base =3
print "Conversion de ";DecN;" en base ";base;" = ";
gosub Dec2N: print DecN$

DecN=3735928559:base =16
print "Conversion de ";DecN;" en base ";base;" = ";
gosub Dec2N: print DecN$

print "Conversion de ";DecN$;" en base ";base;" = ";
gosub N2Dec : print DecN

DecN$="101":base=2
print "Conversion de ";DecN$;" en base ";base;" = ";
gosub N2Dec:print DecN

print "fini !"
end

' *****************************************
' * Conversion décimale en base N
' *****************************************
Dec2N:
 DecN$=""
 while DecN > 0
    if asc(inkey$)=27 then exit_while : ' ligne spéciale pour cosmos70 ;)
    if frac(DecN/base)=0
      DecN$="0"+DecN$
    else
      DecN$= mid$(conv$,(DecN - (int(DecN/base)*base))+1,1)+DecN$
    end_if
    DecN = int(DecN/base)
 end_while
return

N2Dec:
  DecN=0
  while DecN$<>""
    if asc(inkey$)=27 then exit_while : ' ligne spéciale pour cosmos70 ;)
    DecN = (DecN*base)+INSTR(conv$,LEFT$(DecN$,1))-1
    DecN$=RIGHT$(DecN$,LEN(DecN$)-1)
  end_while
RETURN


Dernière édition par Nardo26 le Dim 2 Sep 2012 - 10:40, édité 2 fois (Raison : Ajout conversion de base N vers Decimal...)
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 10:44

Par contre Nardo ton "or instr("23456789",a$)" ne fonction pas, si tu rentre 423
il va chercher cette chaine dans la liste et ne le trouvera pas ... Wink

Sinon voilà le code avec vos remarques:
Code:
' ------------------------------------------------------------------------------
' Covertisseur Decimal-binaire  binaire-décimal
' Version 1.0 par Ygeronimi  (le 01/09/2012)
' Ecrit en Panoramic (Version 0.9.23i)
' Avec la participation amicale de Papydall, Nardo26, Jicehel et Atom
' ------------------------------------------------------------------------------

dim x% ,v%(8),v$,valeur%,M%,a$,Resultat%,E$
' ------------------------------------------------------------------------------
label Menu,dec_to_bits,bits_to_dec,Messager
' ------------------------------------------------------------------------------
width 0,300:height 0,150:caption 0,"Convertisseur Bits - Décimal":font_name 0,"arial"
main_menu 1
sub_menu 2:parent 2,1:caption 2,"Déc... to Bits":on_click 2,Menu
sub_menu 3:parent 3,1:caption 3,"Bits to Déc...":on_click 3,Menu
alpha  4:hide 4:top 4,15:left 4,15
edit  5:hide 5:width 5,90:top 5,30:left 5,15
alpha  6:hide 6:top 6,15:left 6,120
edit  7:hide 7:width 7,90:top 7,30:left 7,120:color 7,230,250,250
button 8:hide 8:caption 8,"Conversion":top 8,60:left 8,200
end
' ------------------------------------------------------------------------------
Menu:
if clicked(2)=1
  M%=2 : caption 4,"Déc... (0 à 255)":caption 6,"Bits":on_click 8,dec_to_bits
else
  if clicked(3)=1
    M%=3 : caption 4,"bits (8 bits max)":caption 6,"Déc...":on_click 8,bits_to_dec
  else
    M%=0
  end_if
end_if
if M% > 0 then text 5,"":text 7,"": for x%=4 to 8:show x%:next x% : set_focus 5
return
' ------------------------------------------------------------------------------
bits_to_dec:
a$=text$(5):E$="":Resultat%=0
if a$="" or numeric(a$)=0 or len(a$) > 8 then gosub Messager: return
for x%=1 to len(a$)
  if instr("23456789",mid$(a$,x%,1))<>0 then gosub Messager: return
next x%
a$=right$("00000000"+ a$,8): v%(1)=1
for x%=2 to 8 :v%(x%)=v%(x%-1)*2:next x%
for x%=1 to 8 : E$=mid$(a$,x%,1) : Resultat%=Resultat%+val(E$)*v%(9-x%) : next x%
text 7,str$(Resultat%)
return
' ------------------------------------------------------------------------------
dec_to_bits:
a$=text$(5):v$="":valeur%=0
if numeric(a$)=0 OR a$="" then gosub Messager:return
if val(a$)<256 and val(a$) >=0
  valeur%=val(text$(5))
  valeur%=val(text$(5))
  v%(1)=1 : v$=""
  for x%=2 to 8 :v%(x%)=v%(x%-1)*2:next x%
  for x%=8 to 1 step -1
      if valeur%>=v%(x%) then v$=v$+"1": valeur%=valeur%-v%(x%) : else: v$=v$+"0"
  next x%
  text 7,v$
else
  gosub Messager
end_if
return

Messager:
  message "Entrée Invalide !"
  text 5,"": text 7,""
return
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 10:54

Tu as tout à fait raison Jicehel : je me suis planté sur instr ! Embarassed
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Convertisseur Binaire Empty
MessageSujet: re   Convertisseur Binaire EmptyDim 2 Sep 2012 - 12:37

Bonjour à tous,

Je vois que çà bosse pendant que je ne suis pas là ....c'est bien çà ... Laughing

Merci de vos remarques et Merci Jicehel pour la réécriture du source.


@ Nardo,

Je vais regarder ton code, mais dire que je comprends tout....
ce serait aller un peu vite...
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Convertisseur Binaire Empty
MessageSujet: re   Convertisseur Binaire EmptyDim 2 Sep 2012 - 12:46

Il y a un Pb avec Numeric($) dans l'histoire

dans mon instruction "if... numeric(a$)=1..." ne devrait pas laisser passer une valeur "$"
comme "aqw" puisqu'elle n'est pas numérique ...non ?

EDIT : si c'est val() qui déconne derrière mais je comprends pas le instr de Nardo26
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 13:12

Oublie le instr
ton probleme ne vient pas de numeric() ni de val()
ce qui pose problème c'est que Panoramic va essayer toutes les conditions qui sont dans ton if
donc numeric() va bien te renvoyer 0 mais Panoramic va chercher quand même à tester le val, donc tu va te faire jeter si le contenu de ta variable n'est pas un nombre.

J'ai déjà signalé ce problème mais à l'époque cela avait paru normal à tous le monde... Wink (voir ici)

Normalement avec une condition AND, à la 1ere condition non remplie, on devrait sortir du test... enfin... c'est mon avis... Smile

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Convertisseur Binaire Empty
MessageSujet: re   Convertisseur Binaire EmptyDim 2 Sep 2012 - 13:33

Bon, voilà le code comme je voudrais qu'il reste.

La raison pour laquelle je ne garde pas le "instr" de Nardo,
est pour une raison de lisibilité de ma démarche pour quelqu'un
d'encore moins expérimenté que moi .

Code:
' ------------------------------------------------------------------------------
' Convertisseur Decimal-binaire  binaire-décimal
' Version 1.0 par Ygeronimi  (le 01/09/2012)
' Ecrit en Panoramic (Version 0.9.23i)
' Avec la participation amicale de Papydall, Nardo26, Jicehel et Atom
' ------------------------------------------------------------------------------

dim x% ,v%(8),v$,valeur%,b%(8),y%,M%,a$,E%(8),E$
' ------------------------------------------------------------------------------
label Menu,dec_to_bits,bits_to_dec,Messager
' ------------------------------------------------------------------------------
width 0,300:height 0,150:caption 0,"Convertisseur Bits - Décimal":font_name 0,"arial"
main_menu 1
sub_menu 2:parent 2,1:caption 2,"Déc... to Bits":on_click 2,Menu
sub_menu 3:parent 3,1:caption 3,"Bits to Déc...":on_click 3,Menu
alpha  4:hide 4:top 4,15:left 4,15
edit  5:hide 5:width 5,90:top 5,30:left 5,15
alpha  6:hide 6:top 6,15:left 6,120
edit  7:hide 7:width 7,90:top 7,30:left 7,120:color 7,230,250,250
button 8:hide 8:caption 8,"Conversion":top 8,60:left 8,200
end
' ------------------------------------------------------------------------------
Menu:
if clicked(2)=1
  M%=2 : caption 4,"Déc... (0 à 255)":caption 6,"Bits":on_click 8,dec_to_bits
else
  if clicked(3)=1
    M%=3 : caption 4,"bits (8 bits max)":caption 6,"Déc...":on_click 8,bits_to_dec
  else
    M%=0
  end_if
end_if
if M% > 0 then text 5,"":text 7,"": for x%=4 to 8:show x%:next x% : set_focus 5
return
' ------------------------------------------------------------------------------
bits_to_dec:
a$=text$(5):E$="":E%(0)=0
if a$="" or numeric(a$)=0 or len(a$) > 8 then gosub Messager: return
if len(a$) <8 then a$=right$("00000000"+ a$,8)
v%(1)=1
for x%=2 to 8 :v%(x%)=v%(x%-1)*2:next x%
y%=9
for x%=1 to 8
  y%=y%-1
  E$=mid$(a$,x%,1)
  if val(E$)=0 or val(E$)=1
    E%(x%)=val(E$)*v%(y%)
    E%(0)=E%(0)+E%(x%)
  else
    gosub Messager:return
    exit_for
  end_if
next x%
text 7,str$(E%(0))
return
' ------------------------------------------------------------------------------
dec_to_bits:
a$=text$(5):v$="":valeur%=0
if a$<>"" or numeric(a$)=1 then gosub messager :return
if val(a$)<256 and val(a$)>=0
  valeur%=val(text$(5))
  v%(1)=1
  for x%=2 to 8 :v%(x%)=v%(x%-1)*2:next x%
  y%=0
  for x%=8 to 1 step -1
      y%=y%+1
      if valeur%>=v%(x%)
        b%(y%)=1
        valeur%=valeur%-v%(x%)
      else
        b%(y%)=0
      end_if
      v$=v$+str$(b%(y%))
  next x%
  text 7,v$
else
  gosub Messager :return
end_if
return

Messager:
  message "Entrée Invalide !"
  text 5,"" : text 7,""
return


Dernière édition par ygeronimi le Dim 2 Sep 2012 - 19:16, édité 1 fois (Raison : amélioration)
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Convertisseur Binaire Empty
MessageSujet: re   Convertisseur Binaire EmptyDim 2 Sep 2012 - 13:42

@ Nardo,

On s'est croisé... Laughing

Je suis d'accord avec toi sur le schmilblick de la ligne "if...numeric(a$)=1..."
et sur le fait qu'à la première condition non rempli...on sort...de la condition.
si il y a un ou plusieurs "and" c'est que l'on veut que toutes les conditions soient remplies,
si une ne l'est pas, toutes ne le sont pas non plus...logique non ?

le "Instr", je ne le garde pas pour une raison de lisibilité de la démarche que ma expliqué papydall
et que j'ai essayé de mettre en forme dans ce petit utilitaire.
Je pense qu'à force de vouloir condenser le code et faire toujours plus court,
c'est pas top pour les nouveaux qui vont essayer, comme je le fais souvent, de décortiquer pour comprendre.

mais çà fonctionne très bien aussi et c'est une autre façon d'écrire en plus court.

@ Tous, je vous remercie de vôtre participation, je ne pensais pas avoir autant de succès avec ce p'tit truc.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire EmptyDim 2 Sep 2012 - 18:34

ton code est bien ygeronimi, mais juste une remarque tu devrais également effacer l'objet 7 (le résultat) en cas d'erreur de saisie. Il ne sert à rien d'avoir la valeur si l'entrée est invalide.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Convertisseur Binaire Empty
MessageSujet: re   Convertisseur Binaire EmptyDim 2 Sep 2012 - 19:18

J' ai rajouté des ":return" après chaque "gosub messager"
et text 7,"" dans la fonction "messager"
Revenir en haut Aller en bas
Contenu sponsorisé





Convertisseur Binaire Empty
MessageSujet: Re: Convertisseur Binaire   Convertisseur Binaire Empty

Revenir en haut Aller en bas
 
Convertisseur Binaire
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Convertisseur binaire
» Convertisseur binaire vers décimal / Hexadécimal
» Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...
» Colorimétrie : convertisseur TSV vers RVB
» convertisseur decimal -> hexadecimal

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: