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
» PANORAMIC V 1
Convertisseur binaire Emptypar mindstorm Aujourd'hui à 17:07

» Gestion d'un système client-serveur.
Convertisseur binaire Emptypar Klaus Aujourd'hui à 16:52

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Convertisseur binaire Emptypar Froggy One Aujourd'hui à 11:16

» @Jack
Convertisseur binaire Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Convertisseur binaire Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Convertisseur binaire Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Convertisseur binaire Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Convertisseur binaire Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Convertisseur binaire Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Convertisseur binaire Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Convertisseur binaire Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Convertisseur binaire Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Convertisseur binaire Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Convertisseur binaire Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Convertisseur binaire Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -40%
-40% sur le Pack Gaming Mario PDP Manette filaire + ...
Voir le deal
29.99 €

 

 Convertisseur binaire

Aller en bas 
+2
Jicehel
gigi75
6 participants
AuteurMessage
gigi75

gigi75


Nombre de messages : 101
Age : 51
Date d'inscription : 13/04/2013

Convertisseur binaire Empty
MessageSujet: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 10:28

 pig Bonjour à tous,

Je ne suis pas souvent là, et incroyable, je suis en vacances en Normandie, le ciel est gris, je programme.
Je n'ai pas trouvé de fonction pour convertir le décimal en binaire, pour entrainement, j'ai donc fait que je partage avec plaisir, un convertisseur binaire qui si on le souhaite sauvegarde dans un fichier.
Mais si il existe une fonction pour la convertion que je n'ai point vu, rien de grave, on apprends toujours avec grands plaisir.
Une chose étrange apparait, je vous avoue que je suis allé vers d'autres langages pour apprendre, et tous les chemins dirigent vers panoramic.

Gilles

Code:
rem declaration variables
dim nomb : dim a$
dim chaine2$
dim chaine$
dim long$
dim d
dim i
dim z
d=90
z=0

rem declaration labels
label start
label calcul
label exit
label sauv

rem declaration fenetre
width 0,430 : height 0,300
caption 0, "Convertisseur V 1.0"
alpha 1
font_size 1,14 : top 1,10 : left 1,40 : caption 1,"Entrez le nombre décimal (1-9,e+8)"
alpha 7
font_size 7,14 : top 7,40 : left 7,40 : caption 7,">>"
alpha 3
font_size 3,14 : top 3,70 : left 3,40 : caption 3,"(Touche retour pour effacer)"
alpha 5
font_size 5,14 : top 5,40 : left 5,64
button 2
font_size 2,14 : top 2,170 : left 2,170 : caption 2,"Sortir"
button 4
font_size 4,14 : top 4,70 : left 4,280 : caption 4,"Valider"
alpha 6
font_size 6,14 : font_bold 6 : top 6,100 : left 6,40
alpha 8
font_size 8,14 :  top 8,130 : left 8,40
alpha 9
font_size 9,14 :  top 9,160 : left 9,40
button 10
font_size 10,14 : top 10,170 : left 10,40 : caption 10,"Sauver"
hide 10
alpha 11
font_size 11,14 : top 11,230 : left 11,40
hide 11
start:
a$=inkey$
if a$="0" or a$="1" or a$="2" or a$="3" or a$="4" or a$="5" or a$="6" or a$="7" or a$="8" or a$="9"
chaine$=chaine$+a$
end_if
if key_down_code=8 then chaine$=""
if len(chaine$)>0 then nomb=val(chaine$)
if nomb>999999999 then chaine$ = ""
caption 5,chaine$
on_click 2,exit
on_click 4,calcul
on_click 10,sauv
goto start

calcul:
beep
for i=1 to 91
if nomb>=power(2,d)
nomb=nomb-power(2,d)
z=1
chaine2$=chaine2$+"1"
else
if z=1
chaine2$=chaine2$+"0"
end_if
end_if
d=d-1
long$ = "Longueur (Bits): " + str$(len(chaine2$))
caption 8, long$
caption 6,chaine2$
next i
show 10
hide 4
goto start

sauv:
file_open_write 1,"Bin"+chaine$
file_write 1, chaine$+"="+chaine2$+"  "+"Longueur (Bits): " + str$(len(chaine2$))
file_close 1
show 11
caption 11,"Resultats sauvegardés dans "+ "Bin"+chaine$
end

exit:
beep
terminate
end
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 12:23

Maintenant tu peux aussi faire des procédure SUB appelées lors des clics
Le gros avantage et que tu passe les valeurs en paramètres et ça facilite donc la réusibilité des procédures.

Après, si j'étais toi, je ferais plutôt un programme sans l'étiquette start et goto start à la fin ni pour finir les sous programmes
Pour le programme, tu mets un end et tu gères les évenements de changements sur l'objet 5 ou en cas de clic

Pour les sous programme au lieu de faire un goto start, tu fais juste un return.

Après, c'est juste une façon de faire, c'est juste que moi, j'aurais fais comme ça.
Revenir en haut Aller en bas
gigi75

gigi75


Nombre de messages : 101
Age : 51
Date d'inscription : 13/04/2013

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 13:56

Désolé, vielle habitude de l'amstrad. On va essayer. Mais pourquoi les goto servent encore. Vous vous en servez des goto?
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 14:13

Bien sûr les goto peuvent servir, mais cela correspond à une façon de programmer. J'ai moi même appris comme ça, puis sont apparu les procédures et fonctions puis la programmation événementielle.

Jack a mis les GOTO par soucis de compatibilité car c'est un élément standard du Basic des programmes peuvent tout à fait être écrit comme ça. Personnellement, par contre, je ne m'en sert qu'exceptionnellement et surtout par facilité. En règle générale, il y a toujours une autre façon de faire, mais si toi tu a plus de facilités à programmer en les utilisant, c'est ton droit.
(Sauf pour les sous programmes événementiels où là je te conseil de mettre un return car ça permet de libérer la pile, sinon, les données sont empilé à chaque appel et jamais dépilées).
Revenir en haut Aller en bas
gigi75

gigi75


Nombre de messages : 101
Age : 51
Date d'inscription : 13/04/2013

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 15:44

jicehel,

Pourrais tu svp en copiant le code du convertisseur me montrer où mettre les SUB, normalement si j'ai bien compris, avec les SUB et END, on remplace les GOTO.

Merci
Revenir en haut Aller en bas
gigi75

gigi75


Nombre de messages : 101
Age : 51
Date d'inscription : 13/04/2013

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 15:48

En plus j'ai pas du poser la question, existe il une fonction en panoramic pour convertir du décimal en binaire?
Bon le petit programme que j'ai fait est surtout pour débuter, mais il peut être les bases si la fonction n'existe pas.
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 18:02

Et tu as bien raison de partager tes codes. C'est en partageant que l'on peut avoir des avis et progresser (si on le veut) en programmation. On peut toujours avoir une petite critique constructive et décider si on en tient compte ou pas.
Là, je suis au boulot, mais je prendrais 5 minutes pour te faire une version à ma sauce.
Tu prendras ce que tu veux comme habitudes dedans.
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 21:12

Je n'ai pas fais les sub, on verra ça la prochaine fois mais je t'ai supprimé les goto et j'ai modifié un peu le principe de saisie pour correspondre plus (selon moi) à l'esprit Panoramic et Windows.
Ca donne ça:
Code:
' Declaration variables
dim nomb
dim a$, chaine2$

dim i : ' Compteur temporaire
dim z : z=0
dim d : d=90 : ' Nombre Maximum de décimales autorisées

' declaration labels
label Calculer, Quitter, Sauver, Saisir, Verifier

' paramétrage de fenetre
width 0,430 : height 0,300
caption 0, "Convertisseur V 1.1 - par Gigi75 et Jicehel"


alpha 1 : font_size 1,12 : top 1,10 : left 1,20 : caption 1,"Entrez le nombre décimal (1-9, maximum 9 digits)"
edit 7: font_size 7,12 : top 7,40 : left 7,20 : width 7, 350 : text 7,">>": on_click 7,Saisir : on_change 7,Verifier
alpha 3 : font_size 3,12 : top 3,70 : left 3,20 : caption 3,"(Touche retour pour effacer)"
button 2 : font_size 2,12 : top 2,170 : left 2,170 : caption 2,"Sortir" : on_click 2,Quitter
button 4 : font_size 4,12 : top 4,70 : left 4,280 : caption 4,"Valider" : on_click 4,Calculer
alpha 6 : font_size 6,12 : font_bold 6 : top 6,100 : left 6,20
alpha 8 : font_size 8,12 :  top 8,130 : left 8,20
alpha 9 : font_size 9,12 :  top 9,160 : left 9,20
button 10 : hide 10 : font_size 10,12 : top 10,170 : left 10,20 : caption 10,"Sauver" : on_click 10,Sauver
alpha 11 : hide 11 : font_size 11,12 : top 11,200 : left 11,20
end

Saisir:
 if text$(7)=">>" then text 7,"" : chaine2$=text$(7)
return

Verifier:
if len(text$(7)) > 0
  for i=1 to len(text$(7))
    if ( asc(mid$(text$(7),i,1))<48 or asc(mid$(text$(7),i,1)) > 57 or len(text$(7)) > 9) then text 7,chaine2$ : select_text 7,len(chaine2$)+1,1 : return
  next i
end_if
chaine2$ = text$(7)
return

Calculer:
beep : caption 6,""
nomb = val(text$(7))
if nomb > 0
  for i = 1 to d
    if nomb>=power(2,d-i)
      nomb=nomb-power(2,d-i)
      z=1
      caption 6, caption$(6)+"1"
    else
      if z=1
        caption 6, caption$(6)+"0"
      end_if
    end_if
  next i
else
  if nomb = 0
    caption 6,"0"
  else
    return
  end_if
end_if
caption 8, "Longueur (Bits): " + str$(len(caption$(6)))
show 10 : hide 4
return

Sauver:
file_open_write 1,"Bin"+text$(7)+".txt"
file_write 1, text$(7)+"="+caption$(6)+"  "+"Longueur (Bits): " + str$(len(caption$(6)))
file_close 1
caption 11,"Resultats sauvegardés dans "+ "Bin"+text$(7)+".txt" : show 11 : wait 500
gosub Quitter
return

Quitter:
beep
terminate

Bonne soirée, je vais jouer Wink
Revenir en haut Aller en bas
papydall

papydall


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 22:41

Salut tout le monde
gigi75 a écrit:
existe il une fonction en panoramic pour convertir du décimal en binaire?

A ma connaissance NON,  une telle fonction  n’existe pas en Panoramic.

Et comme Jicehel « va jouer »  (Hé veinard, à quoi tu joues ?  Laughing ), je vous propose une SUB de conversion d’un nombre décimal à une base quelconque (>= 2 et pouvant aller jusqu’à la base 36 et même au-delà jusqu’à la base 62 !)

Remarque : le programme peut convertir jusqu’à la base 36 et indique comment aller jusqu’à la base 62.
Mais qui a besoin d’utiliser des telles bases ?

Les bases courantes sont :
La base deux (système binaire)
La base trois (système trinaire ou ternaire))
La base huit (système octal)
La base neuf (système nonaire)
La base dix (système décimal)
La base douze (système duodécimal)
La base seize (système hexadécimal)
La base vingt (système vigésimal)
La base soixante (système sexagésimal)

Code:

rem ============================================================================
rem Conversion de nombres de la base décimale à une base B(comprise entre 2 et 36)
rem Appel : Decimal_To_BaseB(n,b)
rem n est le nombre décimal à convertir
rem b est la base de conversion
rem ============================================================================
' Pour une base allant jusqu'à 36, on utilise en plus des chiffres 0 à 9,
' les "chiffres" A à Z (en majuscules) : A pou 10, B pour 11 etc.
' Il est possible d'aller jusqu'à la base 62 en utilisant en plus des chiffres
' 0 à 9, les "chiffres" A à Z ( majuscules) et les "chifres" a à z (en minuscules
rem ============================================================================

dim n,b,s$,result$
height 0, 800
alpha 10 : top 10,10 : left 10, 150 : font_bold 10
font_size 10,20 : font_color 10, 0,0,255 : caption 10,"Conversion de bases"
list 100 : height 100, 700 : width 100, 200 : top 100, 50 : left 100, 50
list 200 : height 200, 700 : width 200, 200 : top 200, 50 : left 200, 350
' ******************************************************************************
b = 36 : ' conversion vers la base 36
for n = 1 to 100
     Decimal_To_BaseB(n,b) : if b < 2 or b > 36 or n < 1 then end
     if n < 10 then s$ = " " : else : s$ = ""
     if n < 51
        item_add 100, s$ + str$(n) + " décimal = " + result$ + " base " + str$(b)
     else
        item_add 200, s$ + str$(n) + " décimal = " + result$ + " base " + str$(b)
     end_if
next n
 
end
rem ============================================================================
SUB Decimal_To_BaseB(nombre_decimal,base)
    dim_local q,r,c$
    if (base < 2) or (base > 36) or (nombre_decimal < 1)
       message "!!! La base doit être comprise entre 2 et 36 bornes incluses !!!" + chr$(13) + "   Et le nombre décimal doit être positif !!!"
       exit_sub
    end_if
    q = nombre_decimal : result$ = ""
    while q > 0
          r = mod(q,base) : q = int(q/base) : c$ = str$(r)
          select r
               case 10 : c$ = "A"
               case 11 : c$ = "B"
               case 12 : c$ = "C"
               case 13 : c$ = "D"
               case 14 : c$ = "E"
               case 15 : c$ = "F"
               case 16 : c$ = "G"
               case 17 : c$ = "H"
               case 18 : c$ = "I"
               case 19 : c$ = "J"
               case 20 : c$ = "K"
               case 21 : c$ = "L"
               case 22 : c$ = "M"
               case 23 : c$ = "N"
               case 24 : c$ = "O"
               case 25 : c$ = "P"
               case 26 : c$ = "Q"
               case 27 : c$ = "R"
               case 28 : c$ = "S"
               case 29 : c$ = "T"
               case 30 : c$ = "U"
               case 31 : c$ = "V"
               case 32 : c$ = "W"
               case 33 : c$ = "X"
               case 34 : c$ = "Y"
               case 35 : c$ = "Z"
          end_select
          result$ =  c$ + result$
    end_while
end_sub
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
gigi75

gigi75


Nombre de messages : 101
Age : 51
Date d'inscription : 13/04/2013

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyVen 8 Aoû 2014 - 23:24

Merci, je vais travailler dessus, vive les SUB lol! 
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptySam 9 Aoû 2014 - 10:42

Bonjour, j'ai jetté un oeil sur le forum. La procédure de Papydall est une fonction bien pratique car elle est polyvalente et c'est le type de procédures que tu retrouvera sur le site du mag.

Après on a des conventions personnelles, par exemple Klaus gère souvent les erreur par une variable afin de permettre de pouvoir tester facilement si l’exécution de la procédure s'est bien déroulée. Sa facilite encore les possibilités de réutilisation. Certains ont des variables uniques pour toutes leurs procédures pour retourner le résultat. D'autres utilisent une variable spécifique pour chaque procédure avec un nom facile à identifier. Là, tu pourras choisir comment tu fais selon tes envies et tes besoins.

Je pense que tu n'en a plus besoin, mais j'ai remis à jour ton programme avec l'appel de la procédure de Papydall pour avoir la version "up to date" avec ces infos et j'ai ajouté la gestion de l'erreur par variable tant qu'à faire...

Code:
' Declaration variables
dim nomb,Decimal_To_BaseB_err
dim Decimal_To_BaseB_result$, chaine2$

dim i : ' Compteur temporaire
dim z : z=0
dim d : d=90 : ' Nombre Maximum de décimales autorisées

' declaration labels
label Calculer, Quitter, Sauver, Saisir, Verifier

' paramétrage de fenetre
width 0,430 : height 0,300
caption 0, "Convertisseur V 1.1 - par Gigi75 et Jicehel"


alpha 1 : font_size 1,12 : top 1,10 : left 1,20 : caption 1,"Entrez le nombre décimal (1-9, maximum 9 digits)"
edit 7: font_size 7,12 : top 7,40 : left 7,20 : width 7, 350 : text 7,">>": on_click 7,Saisir : on_change 7,Verifier
alpha 3 : font_size 3,12 : top 3,70 : left 3,20 : caption 3,"(Touche retour pour effacer)"
button 2 : font_size 2,12 : top 2,170 : left 2,170 : caption 2,"Sortir" : on_click 2,Quitter
button 4 : font_size 4,12 : top 4,70 : left 4,280 : caption 4,"Valider" : on_click 4,Calculer
alpha 6 : font_size 6,12 : font_bold 6 : top 6,100 : left 6,20
alpha 8 : font_size 8,12 :  top 8,130 : left 8,20
alpha 9 : font_size 9,12 :  top 9,160 : left 9,20
button 10 : hide 10 : font_size 10,12 : top 10,170 : left 10,20 : caption 10,"Sauver" : on_click 10,Sauver
alpha 11 : hide 11 : font_size 11,12 : top 11,200 : left 11,20
end

Saisir:
 if text$(7)=">>" then text 7,"" : chaine2$=text$(7)
return

Verifier:
if len(text$(7)) > 0
  for i=1 to len(text$(7))
    if ( asc(mid$(text$(7),i,1))<48 or asc(mid$(text$(7),i,1)) > 57 or len(text$(7)) > 9) then text 7,chaine2$ : select_text 7,len(chaine2$)+1,1 : return
  next i
end_if
chaine2$ = text$(7)
return

Calculer:
beep : caption 6,""
Decimal_To_BaseB(val(text$(7)),2)
If Decimal_To_BaseB_err=0
  caption 6,Decimal_To_BaseB_result$
  caption 8, "Longueur (Bits): " + str$(len(caption$(6)))
  show 10 : hide 4
end_if
return

Sauver:
file_open_write 1,"Bin"+text$(7)+".txt"
file_write 1, text$(7)+"="+caption$(6)+"  "+"Longueur (Bits): " + str$(len(caption$(6)))
file_close 1
caption 11,"Resultats sauvegardés dans "+ "Bin"+text$(7)+".txt" : show 11 : wait 500
gosub Quitter
return

Quitter:
beep
terminate

rem ============================================================================
rem Conversion de nombres de la base décimale à une base B(comprise entre 2 et 36)
rem Appel : Decimal_To_BaseB(n,b)
rem n est le nombre décimal à convertir
rem b est la base de conversion
rem ============================================================================
' Pour une base allant jusqu'à 36, on utilise en plus des chiffres 0 à 9,
' les "chiffres" A à Z (en majuscules) : A pou 10, B pour 11 etc.
' Il est possible d'aller jusqu'à la base 62 en utilisant en plus des chiffres
' 0 à 9, les "chiffres" A à Z ( majuscules) et les "chifres" a à z (en minuscules
rem ============================================================================

SUB Decimal_To_BaseB(nombre_decimal,base)
    dim_local q,r,c$
    Decimal_To_BaseB_err = 0
    if (base < 2) or (base > 36) or (nombre_decimal < 0)
      message "!!! La base doit être comprise entre 2 et 36 bornes incluses !!!" + chr$(13) + "  Et le nombre décimal doit être positif !!!"
      Decimal_To_BaseB_err = 1
      exit_sub
    end_if

    q = nombre_decimal : Decimal_To_BaseB_result$ = ""
    if nombre_decimal = 0 then Decimal_To_BaseB_result$="0" : exit_sub

    while q > 0
          r = mod(q,base) : q = int(q/base) : c$ = str$(r)
          select r
              case 10 : c$ = "A"
              case 11 : c$ = "B"
              case 12 : c$ = "C"
              case 13 : c$ = "D"
              case 14 : c$ = "E"
              case 15 : c$ = "F"
              case 16 : c$ = "G"
              case 17 : c$ = "H"
              case 18 : c$ = "I"
              case 19 : c$ = "J"
              case 20 : c$ = "K"
              case 21 : c$ = "L"
              case 22 : c$ = "M"
              case 23 : c$ = "N"
              case 24 : c$ = "O"
              case 25 : c$ = "P"
              case 26 : c$ = "Q"
              case 27 : c$ = "R"
              case 28 : c$ = "S"
              case 29 : c$ = "T"
              case 30 : c$ = "U"
              case 31 : c$ = "V"
              case 32 : c$ = "W"
              case 33 : c$ = "X"
              case 34 : c$ = "Y"
              case 35 : c$ = "Z"
          end_select
          Decimal_To_BaseB_result$ =  c$ + Decimal_To_BaseB_result$
    end_while
end_sub
rem ============================================================================

Après au niveau de l'éditeur, ce serait bien que l'on puisse "replier" les procédures pour gagner en lisibilité sur les gros programmes. Sinon, on peut faire des includes pour les procédures que l'on a déjà. On met cet include en fin de programme, ça permet quand on développe d'avoir les bons numéros de lignes dans son programme en cas d'erreur.
Revenir en haut Aller en bas
gigi75

gigi75


Nombre de messages : 101
Age : 51
Date d'inscription : 13/04/2013

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptySam 9 Aoû 2014 - 12:12

C'est le matin, bonjour à tous.

Je relis ta correction, c'est pas mal, il faut s'habituer, un GOSUB apparait avec son RETURN. Merci JICEHEL pour ta correction. Je vais essayer en partant de ce nouveau schema de faire juste pour entrainnement un convertisseur de base 10 (0-9) en n'importe quel base (de base 2 en base 100) comme exercice. Je me rappelle sur la TI89 (Calculatrice) avoir réussi en rajoutant en plus de l'alphabet des symboles. Cela ne servira pas à grand chose sauf d'apprendre.

Gilles
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptySam 9 Aoû 2014 - 15:02

Tu as raison, c'est très bien de s’entraîner et de faire des programmes simple avec la meilleur structure possible au départ. Ca aide beaucoup quand les choses se compliquent.

C'est le problème de beaucoup de gens qui se lancent dans la programmation et qui trouvent le programme "Hello World" ridicule. Ils veulent directement se faire un programme type World of Warcraft ou autre Elder scroll alors qu'ils n'en n'ont pas l'aptitude (Peu de gens ou plutôt d'équipes en ont l'aptitude, d'ailleurs Smile )
Revenir en haut Aller en bas
papydall

papydall


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptySam 9 Aoû 2014 - 15:54

Salut tout le monde.

@gigi75
Tu peux (si tu veux) faire un convertisseur de base 10 en base 256.
C’est tout à fait possible en utilisant comme « chiffres de cette base » les caractères correspondant aux code ASCII (0 …255).
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptySam 9 Aoû 2014 - 18:42

Je ne voudrais pas jouer les rabat-joie, mais à part
base 2 binaire <-> base 10 décimal <-> base 16 hexadécimal
(même plus base 8 octal, périmé) je ne vois pas bien à quoi les conversions en autres bases peuvent bien servir (à part comme exercices de style) ?

gigi75 c'est juste une remarque comme ça, ça n'enlève rien à tes expérimentations.
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptySam 9 Aoû 2014 - 19:00

Justement JL35, c'est un exercice de programmation  Wink
Revenir en haut Aller en bas
papydall

papydall


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

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptySam 9 Aoû 2014 - 21:29

Pour faire plaisir à JL35, voici une SUB de conversion de la base 10 à la base … 256.
Oui, j’ai bien écrit la base 256 !
Les chiffres de cette base ?
He bien, il suffit de prendre les caractères ASCII comme « chiffres » de cette base.
A quoi ça sert ?
Absolument à rien !
Donc ça sert à beaucoup de choses. Laughing 


Code:

rem ============================================================================
rem        Conversion de la base 10 vers la base 256
rem    les "chiffres" de la base 256 sont les caractères du code ASCII
rem ============================================================================

dim n,s$,result$
full_space 0
alpha 10 : top 10,10 : left 10, 150 : font_bold 10
font_size 10,20 : font_color 10, 0,0,255 : caption 10,"Conversion base 10 vers base 256"
for n = 1 to 5
    list 100*n : height 100*n, 700 : width 100*n, 200 : top 100*n, 50 : left 100*n, 300*n-280
next n

for n = 1 to 256
     Decimal_To_Base256(n)
     if n < 100 then s$ = " "
     if n < 10  then s$ = "  "
     if n < 51
        item_add 100, s$ + str$(n) + " décimal = " + result$ + " base 256"
     else
        if n < 102
           item_add 200, s$ + str$(n) + " décimal = " + result$ + " base 256"
        else
           if n < 153
              item_add 300, s$ + str$(n) + " décimal = " + result$ + " base 256"
           else
              if n < 204
                 item_add 400, s$ + str$(n) + " décimal = " + result$ + " base 256"
              else
                 item_add 500, s$ + str$(n) + " décimal = " + result$ + " base 256"
              end_if
           end_if
        end_if
     end_if
next n

' ******************************************************************************
end
rem ============================================================================
SUB Decimal_To_Base256(nombre_decimal)
    dim_local q,r,c$
    q = nombre_decimal : result$ = ""
    while q > 0
          r = mod(q,256) : q = int(q/256)
          c$ = chr$(r) : result$ =  c$ + result$
    end_while
end_sub
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
gigi75

gigi75


Nombre de messages : 101
Age : 51
Date d'inscription : 13/04/2013

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptySam 9 Aoû 2014 - 22:53

bonsoir,

J'ai enfin compris pourquoi je ne pouvais pas fermer une application, les goto, et oui.
C'etait la pensée du soir.

Merci pour votre aide.

Là j'essaye un convertisseur base 10 en base 26 (Alphabet), bien sur comme vous avez dit, avec des symboles on peut faire plus.

gilles
Revenir en haut Aller en bas
Optimax




Nombre de messages : 6
Date d'inscription : 23/05/2013

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyDim 10 Aoû 2014 - 11:52

Bonjour,

J'aime bien le convertisseur de base (36) de papydall.

Je me demande si, au lieu de "select r", on ne pourrait pas essayer quelque chose comme:

        c$ = chr$(r + 55)

ou bien:

        xyz = r  + 55
        c$   = chr$(xyz)

Pas vraiment différent, mais gagnerait en concision.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7000
Age : 73
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 10 Aoû 2014 - 12:29

Bonjour Optimax
Tu as visé juste.
En effet c’est concis, c’est optimax (Oh pardon c’est OPTIMUM) !

Pour le plaisir de tout le monde, je mets la SUB Decimal_To_Base36(nombre_decimal) optimaxée  Laughing  Laughing  Laughing 

Code:

rem ============================================================================
rem Conversion de nombres de la base décimale à la base 36
rem Appel : Decimal_To_Base36(n)
rem n est le nombre décimal à convertir

rem ============================================================================
' Pour une base allant jusqu'à 36, on utilise en plus des chiffres 0 à 9,
' les "chiffres" A à Z (en majuscules) : A pour 10, B pour 11 etc.
' Il est possible d'aller jusqu'à la base 62 en utilisant en plus des chiffres
' 0 à 9, les "chiffres" A à Z ( majuscules) et les "chifres" a à z (en minuscules
rem ============================================================================

dim n,b,s$,result$
height 0, 800
alpha 10 : top 10,10 : left 10, 50 : font_bold 10
font_size 10,20 : font_color 10, 0,0,255
caption 10,"Conversion de la base 10 à la base 36"
list 100 : height 100, 700 : width 100, 200 : top 100, 50 : left 100, 50
list 200 : height 200, 700 : width 200, 200 : top 200, 50 : left 200, 350
' ******************************************************************************

for n = 1 to 100
     Decimal_To_Base36(n)
     if n < 10 then s$ = " " : else : s$ = ""
     if n < 51
        item_add 100, s$ + str$(n) + " décimal = " + result$ + " base 36"
     else
        item_add 200, s$ + str$(n) + " décimal = " + result$ + " base 36"
     end_if
next n

end
rem ============================================================================
SUB Decimal_To_Base36(nombre_decimal)
    dim_local quotient,reste,chiffre$
    quotient = nombre_decimal : result$ = ""
    while quotient > 0
          reste = mod(quotient,36) : quotient = int(quotient/36)
          chiffre$ = str$(reste) : if reste > 9 then chiffre$ = chr$(reste + 55)
          result$ =  chiffre$ + result$
    end_while
end_sub
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 7000
Age : 73
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 10 Aoû 2014 - 13:42

Tant que nous y sommes, voici la SUB Decimal_To_Base62(nombre_decimal)

Code:

rem ============================================================================
rem Conversion de nombres de la base décimale à la base 62
rem Appel : Decimal_To_Base62(n)
rem n est le nombre décimal à convertir

rem ============================================================================
' Pour une base allant jusqu'à 62, on utilise en plus des chiffres 0 à 9,
' les "chiffres" A à Z (en majuscules) et les "chifres" a à z (en minuscules)
rem ============================================================================

dim n,s$,result$
height 0, 850
caption 0,"Conversion de la base 10 à la base 62"
list 100 : height 100, 810 : width 100, 200 : top 100, 2 : left 100, 50
list 200 : height 200, 810 : width 200, 200 : top 200, 2 : left 200, 350
' ******************************************************************************

for n = 1 to 124
     Decimal_To_Base62(n)
     if n < 63
        item_add 100, s$ + str$(n) + " décimal = " + result$ + " base 62"
     else
        item_add 200, s$ + str$(n) + " décimal = " + result$ + " base 62"
     end_if
next n

end
rem ============================================================================
SUB Decimal_To_Base62(nombre_decimal)
    dim_local quotient,reste,chiffre$
    quotient = nombre_decimal : result$ = ""
    while quotient > 0
          reste = mod(quotient,62) : quotient = int(quotient/62)
          chiffre$ = chr$(reste+48)
          if (reste > 9)  then chiffre$ = chr$(reste + 55)
          if (reste > 35) then chiffre$ = chr$(reste + 61)
          result$ =  chiffre$ + result$
    end_while
end_sub
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




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

Convertisseur binaire Empty
MessageSujet: re   Convertisseur binaire EmptyDim 10 Aoû 2014 - 13:46

@ Papydall,

Il me semble que tu nous avais déjà sorti des subs pour ce genre d' exercice et que je les avais publié sur le site, non ?... scratch 
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7000
Age : 73
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 10 Aoû 2014 - 17:07

Il me semble aussi.
Mais comme chaque jour je me fais plus vieux d’un jour, ma « ROM »  commence à me faire des tours ! bom
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Convertisseur binaire Empty
MessageSujet: Re: Convertisseur binaire   Convertisseur binaire EmptyDim 10 Aoû 2014 - 17:41

C'est vrai que comme beaucoup je me sers couramment de la base 62, pour faire les courses par exemple...
Comment as-tu pu oublier ?
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7000
Age : 73
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 10 Aoû 2014 - 18:59

JL35 a écrit:
C'est vrai que comme beaucoup je me sers couramment de la base 62, pour faire les courses par exemple...
Comment as-tu pu oublier ?

En plus des courses de JL35, la base 62 est plutôt très pratique dans certains domaines.


Sachez que certains systèmes de raccourcissement des URLs ont recours à la base 62.
Pour cela, ils utilisent le principe de base suivant :

On enregistre dans une base de données les différentes URLs  (qui peuvent être assez longues).
On encode leur identificateur unique dans la base 62 afin de diminuer la longueur de l’URL.
Quand on veut accéder à cette Url, on décode le paramètre ce qui permet de retrouver l’identificateur de l’URL et donc de faire la redirection adéquate.

L’utilisation de la base 62 (qui exploite 62 symboles comme ‘chiffres’ de la base) pour représenter une valeur, permet une grande réduction de la taille.

Mais ceci est une autre histoire! Shocked
Quelqu'un d'autre plus doué que moi, vous la racontera peut-être un jour!  Smile 
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
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: