Transformer des chiffres en lettres... avec de l'ancien code

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Transformer des chiffres en lettres... avec de l'ancien code

Message par GeBonet »

Suis nouveau en PB. :wink: J'utilise une ancienne "sub" de QB comme moteur de conversion et l'éditeur visuel pour la fenêtre graphique. Mon expérience était comment en faire un minimum pour convertir le code !
Code:

Code : Tout sélectionner

; *********************************************************************************************************
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;            
;          et <<<< GeBonet >>>> présentent...
;             
; Un code toujours utile : 
;     
;         Une conversion de chiffre en lettre en respectant des règles de français !
;
;  L'intérêt de ce "code", c'est qu'il est une intégration simplifié d'un "code récupéré" de QB... 
;
;   ----------<  et ADAPTE avec un MINIMUM de changement par rapport à l'original... >-------------------------
;
;     Il ne s'agit donc pas d'une optimisation PB, mais de vérifier la facilité d'utiliser 
;     de "l'ancien code" et aussi d'apprendre rapidement les différences essentielles 
;     pour être plus vite opérationnel en PB..      
;                                                                                09-05-2008     
;   Conseil aux nouveaux en PB comme moi !!! 
;
;   C'est de bien respecter les définitions de variable et donc de passer par des déclaration
;    pour que LES choses soient claires... PB aime le clair ! (stricte) et pas comme ici !
;
;   Attention  : Au moment de créer l'EXE... ou de tester avec des versions successives...
;   **********   Il m'est alors arrivé de travailler sur une version et de compiller 
;                la précédente... 
;
; Et je m'étonnais que ce que je changeais n'avais aucun effet !!! Vous imaginez, c'est bête, hein :)
;
; Donc bien verifier que dans "Option compilateur" vous ayez bien comme fichier principal 
; la bonne Version.... :-)     ------------------                                         
;**************************************************************************************************************       
;
IncludeFile "Common.pb"            ; Ici fenêtre de base crée avec Visual Designer... 
;
Dim U$(16)
Dim D$(9)
;
      U$(1) = "un": U$(2) = "deux": U$(3) = "trois": U$(4) = "quatre"
	    U$(5) = "cinq": U$(6) = "six": U$(7) = "sept": U$(8) = "huit"
	    U$(9) = "neuf": U$(10) = "dix ": U$(11) = "onze ": U$(12) = "douze"
	    U$(13) = "treize": U$(14) = "quatorze": U$(15) = "quinze" : U$(16) = "seize"
	    D$(1) = "dix": D$(2) = "vingt": D$(3) = "trente": D$(4) = "quanrante" : D$(5) = "cinquante"
	    D$(6) = "soixante": D$(7) = "septante" : D$(8) = "quatre-vingt": D$(9) = "nonante"
	    MILLE$ = "mille":MILLION$ = "million":MILLIARD$ = "milliard": CENT$ = "cent"
;***********************************************************************************************************

Open_Window_0()
Sortie$="N"

Repeat
  
     Event = WaitWindowEvent()   
     WindowID = EventWindow()   
     GadgetID = EventGadget()      
     EventType = EventType()        
    ; *******************************************************************************************************************
  
    If Event = #PB_Event_Gadget
       If GadgetID = #Valeur                         ; Une Valeur à convertir est-elle là ?...
                Valeur.d=ValD(GetGadgetText(#Valeur));  OUI alors c'est placé dans la Variale chaine Premier$
       EndIf                         
       ;
       If GadgetID = #Button_1												; Demande t-on le calcul ???
        
           	If Valeur.d=0                             ; OUI mais de valeur Nulle on efface
                      StringGadget(#Valeur, 155, 65, 300, 25, "", #PB_Sort_Double)
            Else				                              ; sinon  on Continue, ça vaut p'être la peine !
                	  NBR.d=Valeur.d                    ; C'est combien au fait ? 
                  	  Comp.d=1000*1000*1000					  ; Pour pas devoir compter les zéro :-)
                   	   If NBR.d < Comp.d							; Puis-je le converir ? 
                    			;==============================================================================
                    			Gosub RoutineCodageChiffreLettre ; On traduit NBR.d en lettres et en français ?
                    			;===============================;==============================================
                    			Resultat$="= "+P1$                             		  	  ; Affiche le résultat dans la zone 
                    			TextGadget(#Text_3, 80, 105, 400, 50, Resultat$)        ;  Ajoute une case pour montrer
                    			SetGadgetFont(#Text_3, FontID6)                         ;  Même police
                    			SetGadgetColor(#Text_3, #PB_Gadget_FrontColor, $0000FA) ;  Mais en rouge pour être certain d'être lu
                    	Else																								      	; NON ON PEUX PAS -------
                    			Resultat$="Opps... Déjà que je fait une effort  jusque :" ;
                    			Resultat$=Resultat$+" Un Milliard moins 1"
                    			TextGadget(#Text_3, 80, 105, 400, 50, Resultat$)        ;  Ajoute une case pour montrer
                    			SetGadgetFont(#Text_3, FontID6)                         ;  Même police
                    			SetGadgetColor(#Text_3, #PB_Gadget_FrontColor, $0000FA) ;  Mais en rouge pour être certain d'être lu
                    	EndIf
            EndIf
            EtatBouton0=GetGadgetState(#Button_1)                         				; on le mémorise AU cas ou
            Sortie$="N"                                                                                             			; Non j'veux pas sortir !!
               
       ElseIf GadgetID = #Button_2                                             		;  On recommence... Bon, on y va !
               EtatBouton0=GetGadgetState(#Button_1)                           		; Oui on recommence....
               Sortie$="N" : Deja=0                                                                              
               StringGadget(#Valeur, 155, 65, 300, 25, "", #PB_Sort_Double)     	; Efface les zones Valeur et Résulat      
               TextGadget(#Text_3, 80, 105, 400, 50, Space(Len(Resultat$)))
               SetGadgetFont(#Text_3, FontID6)
               
       ElseIf GadgetID = #Button_3
                    Sortie$="O"                                                                                         	; On en à marre on sort, alors Sortie OK
       EndIf
        
    EndIf
  
Until Sortie$="O" ;Event = #PB_Event_CloseWindow                                		; Fin de la boucle d'attente

End
;*******************************************************************************************
;   	         CONVERSION DE CHIFFRES EN LETTRES ANCIEN CODE ADAPTE !!!
;
; Corps du programme ===>   Transformer "NBR.d" en sa forme exprimé en "lettres" 
;********************************************************************************************
; Ancien nom... de la SUB 
RoutineCodageChiffreLettre:

    ; (CHIF.LETR (NBR.d, ER.d, P1$, U$(), D$()) Static OU Ancienne forme d'appel de la SUB...

	  ET = 0: J.d = L.d: CAS = 1:P1$ = "0"
    If NBR.d <>0 
             ;                 Vrai début....
		         Decim = Val(Str((NBR.d-Int(NBR.d))*100)) 
		         If Decim>49                                                     
		            NBO$ = Str(NBR.d-1)                                  
		         Else
		            NBO$ = Str(NBR.d)                                     
		         EndIf
		         L.d = Len(NBO$): P1$ = ""
		         ; 								Ici un Case serait bienvenus....          ET ! 
              If L.d < 3  
                    NBR$ = NBO$: Gosub Unit:: Goto Arret:: ; DIZAINES    Goto à prohiber... Mais des fois ... :-)
              EndIf                    
	            If L.d < 4 
	                NBC$ = NBO$: Gosub Cent:: Goto Arret :   ; CENTAINES
	            EndIf
	            If L.d < 7
	                NBM$ = NBO$: Gosub Millier:: Goto Arret  ; MILLIERS
              EndIf	  
              If L.d < 13  
		            NBT$ = NBO$: Gosub Million: Goto Arret     ; c'est dans MILLIONS, Milliards puis termine
              EndIf    		    
    EndIf    
     	 
Return
	            
; *******************************************************************************************            	
Arret:  If Decim<>0 
            Gosub Decima:: P1$ = P1$ + " "
        Else
            Gosub CentS                        
        EndIf
        Return                ; Sortie de retour
; ********************************************************************************************
          ;
Million:  ;' -- MILLIONS --            ENTREE = NBM$ (0 -> 999999999)
		      ;
          NBM$ = Right(NBT$, 6): K.w = Len(NBT$): CAS=8
		      If Val(NBM$) <> 0  
    		        Gosub Millier
	    	        P3$ = P1$
		       EndIf
		       NBC$ = Left(NBT$, K.w - 6): P1$ = ""
		       If Val(NBC$) = 0 
		            P1$ = P3$: Return
		       EndIf
		       L.d = Len(NBC$)
		       If Val(NBC$) = 1  : 
			        P1$ = "Un " + MILLION$ + " " + P3$: Return
		       Else
			        MILLION$ = MILLION$ + "s"
		       EndIf
		       If L.d < 3 
		            NBR$ = NBC$: Gosub Unit
		       Else 
		            Gosub Cent
		       EndIf
		       If Right(P1$, 1) <> " "  :  P1$ = P1$ + " ":EndIf
           P1$ = P1$ + MILLION$ + " " + P3$: P3$ = "": Return                
;-------------------------------------------------------------------------
Millier:  ;  -- MILLIERS --           ENTREE = NBM$ (0 -> 999999)
	        ;
            NBC$ = Right(NBM$, 3): J.d = Len(NBM$)
            If Val(NBC$) <> 0  :  Gosub Cent:: P3$ = P1$ : EndIf
	          NBC$ = Left(NBM$, J.d - 3): P1$ = ""
	            
	          If Val(NBC$) = 0  :  P1$ = P3$: Return : Else : EndIf
	          L.d = Len(NBC$)
	          If Val(NBC$) = 1 
	               P1$ = "" : Goto FMillier							
	          EndIf
	          If L.d < 3  
	               NBR$ = NBC$: Gosub Unit
	          Else 
	               Gosub Cent
	          EndIf
	          If Right(P1$, 1) <> " "  :  P1$ = P1$ + " " :EndIf
 
 FMillier:  P1$ = P1$ + MILLE$ + " " + P3$: P3$ = "": Return
	          ; ----------------------------------------------------------------------
Cent:       ;  -- CENTAINES --          ENTREE = NBC$ (0 -> 999)
	          ;
            UC$ = Left(NBC$, 1): NBR$ = Right(NBC$, 2): u = Val(UC$): P2$ = ""
            If u = 1  
                P2$ = CENT$ 
            ElseIf u <> 0  
                 P2$ = U$(u) + " " + CENT$
            EndIf                    
	          If Val(NBR$) <> 0 
	              Gosub Unit
	           EndIf	                  
	           P1$ = P2$ + " " + P1$
	           Return
	           ; -------------------------------------------------------------------------
Unit:        ;  -- UNITES ET DIZAINES -- ENTREE = NBR$ (0 -> 99)
	           ;       
	           ET = 1: M.d = Len(NBR$): If M.d < 2  :  P1$ = U$(Val(NBR$)): Return : Else : EndIf
	           DZ$ = Right(NBR$, 2): If Val(DZ$) < 17  :  P1$ = U$(Val(DZ$)): Return : Else : EndIf
	           U$ = Right(NBR$, 1): D$ = Mid(NBR$, M.d - 1, 1)
	           If U$ = "1" 
	                T$ = " et " 
	           Else                  ; Les IF Else imbriqué : On peut les écrires comme ceci ou comme ci dessous...
	                T$ = "-"
	           EndIf
	           If D$ = "8" And U$ = "1"  :  P1$ = D$(8) + "-" + U$(Val(U$)): Return : Else  : EndIf
	           If D$ = "8" And U$ = "0"  :  P1$ = D$(8) + "s": Return : Else : EndIf
	           If Val(U$) = 0  :  P1$ = D$(Val(D$)): Return : Else : EndIf
	           P1$ = D$(Val(D$)) + T$ + U$(Val(U$)): Return
	           ; ------------------------------------------------------------------------------
CentS:       GL.w = Len(P1$)
             If GL.w < 4 
                    Return
             EndIf
             If Right(P1$, 1) = " "                            ; Les THEN disparaissent...    
                  P1$ = Left(P1$, GL.w - 1): GL.w = GL.w - 1
             EndIf                
             KL = FindString(P1$, "cent", GL.w - 5)            ; Et oui "Instr" devient "FindString"
		         If KL <> 0  
		            P1$ = P1$ + "s"                                ; et les "End If" ==> "EndIf"
		         EndIf
		         Return
; ---------------------------------------------------------------------------      
   Decima:   
           NBR$=Str(Decim):M.d = Len(NBR$):PN$=P1$
           ET = 1: Gosub Unit
           P1$=PN$+" et "+P1$+" cents"
           Return
                
;******************************************************************************************
; IDE Options = PureBasic 4.20 (Windows - x86)
; CursorPosition = 109
; Folding = -
; EnableAsm
; EnableXP
; UseMainFile = ProgChifLetr5.pb
; Executable = ProgChiLetr5.exe
; CurrentDirectory = C:\0 01 Pure Basic\PureBasic\
; CompileSourceDirectory
; Debugger = IDE
; EnableCompileCount = 19
; EnableBuildCount = 0
; EnableExeConstant
Puis le common.lib qui va avec, et crée presque tout seul avec ViualDesigner !

Code : Tout sélectionner

;---------------------------------------------------------------------------
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;-----------------------------------------------------------------------------
;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Valeur
  #Text_1
  #Text_2
  #Text_3
  #Resultat
  #Button_1
  #Button_2
  #Button_3
EndEnumeration

;- Fonts
Global FontID1
FontID1 = LoadFont(1, "@Arial Unicode MS", 12)
Global FontID2
FontID2 = LoadFont(2, "Times New Roman", 20, #PB_Font_Bold)
Global FontID3
FontID3 = LoadFont(3, "Arial", 12)
Global FontID4
FontID4 = LoadFont(4, "Times New Roman", 22)
Global FontID5
FontID5 = LoadFont(5, "Times New Roman", 20)
Global FontID6
FontID6 = LoadFont(6, "Times New Roman", 12)
Global FontID7
FontID7 = LoadFont(7, "Times New Roman", 12)
Global FontID8
FontID8 = LoadFont(8, "Arial", 11)

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 251, 165, 510, 236, "Convertion de chiffre en lettre ",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
    
      TextGadget(#Text_0, 10, 65, 140, 30, "Valeur à convertir :")
      SetGadgetFont(#Text_0, FontID6)
      StringGadget(#Valeur, 155, 65, 300, 25, "", #PB_Sort_Double)
      SetGadgetFont(#Valeur, FontID8)
      TextGadget(#Text_1, 40, 15, 450, 25, "Transformation de chiffres en lettres", #PB_Text_Center)
      SetGadgetFont(#Text_1, FontID2)
      ;
      TextGadget(#Text_2, 15, 105, 85, 25, "Résultat : ")
      SetGadgetFont(#Text_2, FontID6)
            
      ButtonGadget(#Button_1, 230, 190, 80, 25, "Résultat")
      ButtonGadget(#Button_2, 130, 190, 80, 25, "Autre Essai")
      ButtonGadget(#Button_3, 330, 190, 80, 25, "Quitter")
      
    EndIf
  EndIf
EndProcedure


; IDE Options = PureBasic 4.20 (Windows - x86)
; CursorPosition = 1
; Folding = -
; EnableAsm
; EnableXP
; CurrentDirectory = C:\0 01 Pure Basic\PureBasic\
; CompileSourceDirectory
; EnableCompileCount = 2
; EnableBuildCount = 0
; EnableExeConstant
C'est tout... Mais au fait, vous pouvez vous exercer à l'optimiser... Ou encore que la traduction dépasse le Milliard, tout est là pour le faire :lol: :lol: :lol:
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Dans la même catégorie, j'avais codé ça.

C'est toujours un casse-tête pour convertir en littéral...
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Plus court et avec le traitement des milliards, tu as ce code par exemple :

Code : Tout sélectionner

Global Dim U$(100), Txt.s, Reste.q, Nombre.q
U$(1) = "un": U$(2) = "deux": U$(3) = "trois": U$(4) = "quatre" :U$(5) = "cinq": U$(6) = "six"
U$(7) = "sept": U$(8) = "huit" :U$(9) = "neuf": U$(10) = "dix": U$(11) = "onze": U$(12) = "douze"
U$(13) = "treize": U$(14) = "quatorze": U$(15) = "quinze" : U$(16) = "seize" :U$(17) = "dix-sept"
U$(18) = "dix-huit": U$(19) = "dix-neuf" : U$(20) = "vingt ": : U$(30) = "trente "
U$(40) = "quanrante " : U$(50) = "cinquante " :U$(60) = "soixante ": U$(70) = "soixante " 
U$(80) = "quatre-vingt ": U$(90) = "quatre-vingt "

Procedure.s valeur(NBR)
  Centaines  = NBR /100
  Restant = NBR - Centaines*100
  If Centaines > 0
    If Centaines > 1 And Centaines*100 = NBR : Pl.s="s " : Else : Pl.s=" " : EndIf
    If Centaines > 1 : Texte.s = U$(Centaines): EndIf
    Texte+" cent"+Pl
  EndIf
  If Restant > 20 
    Dizaines = (Restant/10)*10
    Restant = Restant - Dizaines
    Texte+ U$(Dizaines)
    If Dizaines = 70 Or Dizaines = 90 : Restant+10: EndIf
    If Restant=1 Or ( Restant=11 And Dizaines = 70) : Texte+ " et " : EndIf
  EndIf
  Texte.s + U$(Restant)
  ProcedureReturn Texte.s
EndProcedure 

Procedure.s Ecriture(Nombre)
  Txt.s = ""
  Milliards = (Nombre /1000000000)
  If Milliards > 0
    Txt.s + valeur(Milliards)+ " milliard"
    If Milliards >1 : Txt+ "s " : Else : Txt+ " " : EndIf
  EndIf
  Reste.q = Nombre - Milliards*1000000000
  Millions= (Reste /1000000)
  If Millions >0
    Txt.s + valeur(Millions)+ " million"
    If Millions >1 : Txt+ "s " : Else : Txt+ " " : EndIf
  EndIf
  Reste = Reste - Millions * 1000000
  Milliers= (Reste /1000)
  If Milliers >0
    If Milliers >1 : Txt.s + valeur(Milliers)+ " milles " : Else : Txt.s + " mille " : EndIf
  EndIf
  Reste = Reste -Milliers*1000
  Txt.s + valeur(Reste)
  ProcedureReturn Txt
EndProcedure

Rep=1
Defaut.s="1200,25 Euros"
While Rep=1
  Saisie.s = InputRequester("Convertisseur","Saisir une Valeur numérique de 1 à 999 Milliards",Defaut)
  Saisie.s = ReplaceString(Saisie,".",",",0,1)
  If FindString(Saisie,",",1) : Virg.s=" virgule " :Else : Virg.s="" : EndIf
  Unite.s=""
  For n=Len(Saisie) To 1 Step -1
    If Mid(Saisie,n,1) > "9" : Unite = Mid(Saisie,n,1) + Unite : Else : n=0 : EndIf
  Next
  Unite = " " + Unite
  Saisie.s = ReplaceString(Saisie," ","",0,1)
  Ent.q = ValQ(Saisie)
  Dec.q = ValQ(StringField(Saisie,2,","))
  Rep = MessageRequester(Saisie," La valeur : " +Saisie+", s'écrit : "+Chr(13)+Ecriture(Ent)+Virg+Ecriture(Dec)+Unite,1)
  Defaut = ""
Wend
Dernière modification par brossden le jeu. 29/mai/2008 15:07, modifié 1 fois.
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Pas, mal et court...

Message par GeBonet »

Mais mon propos, comme je l'explique dans les commentaires, était de reprendre une routine d'il y a 20 ans en QB et avec un minimum de transformation (faire sauter les "then" et remplacer "instr" etc.. par exemple...)

Et ainsi monter qu'il est facilement possible de récuperer de "vieux" moteurs de travail... En plus évidemment des "milliards" qui en réalité sont possibles sans presque rien toucher, et surtout... Que 1200 par exemple ne s'écrive pas "un mille deux cents", mais "mille deux cents" et que "1225,25" puisse s'écrire "mille deux cent vingt cinq et vingt cinq cents".

Le problème de ce genre de "traduction" c'est qu'elle doit respecter automatiquement des règles... Quand faut-il mettre "s" à "cent", ou qui est invariable etc...

En plus il faudrait y ajouter des "Euros" si on parle d'argent, de "telle ou telle autre" expression de mesure que ce soit des quantités, des vitesses, volumes etc... Auxquels cas nous aurions "mille deux cent mètres et 25 centimètres", ou "mille deux cent euros et vingt cinq cents"

Voilà, vloilà.. :lol:
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Ah! Ben c'est une bonne expérience!
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Je pense avoir corrigé les petits problèmes soulevés !

Merci de vérifier et de me tenir informé.
Mais mon propos, comme je l'explique dans les commentaires, était de reprendre une routine d'il y a 20 ans en QB et avec un minimum de transformation (faire sauter les "then" et remplacer "instr" etc.. par exemple...)
Je ne vois pas l'intérêt à faire de la traduction point par point, c'est une solution PB que je donne !
Denis

Bonne Jounée à tous
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

brossden a écrit : Je ne vois pas l'intérêt à faire de la traduction point par point, c'est une solution PB que je donne !
+1

vois pas trop l'intérêt de reprendre des vieux codes Qbasic, alors qu'on peut le faire mieux en purebasic, mais j'avoue que l'exercice est intéressant.. :)

perso il m'arrive de m'inspirer de code ancien , mais juste pour une routine
le Purebasic apporte quand meme un sacres confort de programmation :)
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Pas l'intérêt ?

Message par GeBonet »

Vous ne voyez peut-être pas d'intérêt... :?:

Mais j'en ai eu lorsque j'ai du faire produire des factures (ou documents officiels) avec le montant certifié en toutes lettres... C'est cela le seul intérêt... Et cela à fait partie de plusieurs cahiers des charges. Et principalement un, émanent d'organisme d'Etat ou c'était juridiquement indispenssable... Mais à part cela c'est le seul intérêt ! Mais bon :cry:

A part ça il est aujourd'hui effectivement plus intéressant de produire cela en PB au cas ou l'intéret s'en ferait sentir ! :lol: Et le fait d'utiliser un "vieux" code montre à souhait que Pure est capable de tourner des vieux truc sans trop de modif.

Maintenant, je ne vois pas la peine de s'éterniser sur l'exercice qui peux on ne sait jamais être imposé à l'un de vous lorsqu'il faudra aussi avoir cela sur l'un ou l'autre document "automatiquement" produit dans toutes les règles et avec les détails au point près...

Voilà, voilà... et voilà !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je ne dis pas que le code manque d'intérêt loin de la...

je dit que c'est mieux de se mettre au Purebasic, que de rester en ayant pour reference le Qbasic

c'est comme apprendre une langue en gardant comme référence la notre
faire de la traduction mot a mot, n'est pas la meilleurs façon d'apprendre une langue étrangère , c'est ce que j'ai toujours entendu dire .. :)

en clair c'est pas le code qui manque d'interet , c'est la demarche choisie.. :)
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Chiffres en lettres....

Message par GeBonet »

De fait du point de vue langue... Je reviens de 8 ans de Brésil et en arrivant là sans parler un mot de Portugais... Et ce n'est pas en apprenant la grammaire que j'ai pu parler directement avec les gens. Et ce n'est pas qu'un point de vue. Dobro, tu as tout à fait raison, c'est comme ça que l'on apprend une langue, sur le terrain, et dans le pays si possible.

Maintenant vis à vis du PB c'est aussi vrai, et si j'ai lancé ce code sur le Forum, ce n'est pas par rapport au PB que je parle de besoins ou utilité, mais pour la nature du problème posé. Qui elle n'est pas sans intérêt et nécessite des détails, comme tout ce que l'on code et ce indépendamment du langage ... (Comme aucun problème posé d'ailleurs). Dans le même ordre d'idée, quand on ne touche plus son clavier pendant très longtemps pour coder c'est comme si on ne parlait plus pendant longtemps. Alors on essais de retrouver ses marques dans sa propre langue ou celle qu'on connaît (et ici c'est une image).

Et si j'ai acheté la licence PB c'est bien pour y faire quelque chose et qu'il y avait une raison ! Et plus pour moi peut-être d'ailleurs... Mais la principal c'est la dynamique et l'ouverture du langage… En plus j'y ai trouvé une "communauté" PB active et participante, tant dans la recherche de solution que de création. Le tout poussant directement les concepteurs de PB. C'est ce tout qui m'a donné une motivation suffisante pour me remettre au clavier... La plupart des autres langage, je les connaissais, et pratiqués...
Et c'est par hasard que sur le Net est apparus ce PB, curieux j'ai voulu voir, j'ai vu ce qui se passait autour du langage dans les forum, tant francophone, qu'anglophone... Et c'est tout cela qui m'a fait replonger 15 ans après d'abandons et 35 après la première touche touché d'un TRS-80, en 1977 puis l'Apple 2, Pet etc. pour devenir "Pro" en 1980...

Alors je ne tiens pas à polémiquer sur le langage, car PB est indéniablement un langage qui me plais et me sert de "thérapie" pour m'y remettre et certainement pas QB ou quoi que ce soit d'autre... Mais j'ai des tonnes de sources produites par moi à l'époque et d'utilité générale tant en Qb qu'en ASM , pascal, C etc. Et derrière ces codes des algorithmes qui étaient tellement utiles partout que pour la plupart elles se sont transformé en Lib ou intégré dans pas mal de langages, y compris PB. Et c'est en essayant de reconstituer ce que j'ai "oublié" pour retrouver des départs d'idées qui m'ont conduit à l'époque à ces codes là… Il ne faut pas oublier que les codes passent et les algorithmes restent !

Par contre je m'étonne de la forme de "raideur" ou extension de discussion pour rien. Il s'agissait seulement de montrer une chose : facilité de prendre un vieux code pour qu'il fonctionne sur PB (versatilité de PB et là en cas d'urgence, c'est possible), et l'autre pour illustrer le sujet : un problème pas aussi simple qu'il n'y parait et qui peut être abordé de multiple manière !
Je crois que après cela, je vais aller replanter mes choux ! Ou continuer d'apprendre PB dans mon coin.

Voilà, voilà et à dans pas mal de temps !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

8O :) :D :lol: :lol: :lol:
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Déconne pas Gebonnet : pas dans ton coin tout seul !

Imagine bien que moi j'étais encore en pointillé que toi tu faisais déjà de la programmation! Et pourtant, il y a 19 ans (déjà), je tapais mes premiers caractères!

En fait, ayant programmé sur QB et TB (Turbo Basic de Borland, ~= QuickBasic), j'ai atterri ici sur ce langage parce que la syntaxe reste un dérivé convivial du Basic.

Je suis heureux de voir que tu as réussi une telle conversion.

N'hésite pas à créer un sujet (par exemple dans Discussion générale) ayant comme titre «Traduction QB >> PB». ça fera sûrement des heureux (moi y compris). Il y a tellement de sujet possibles que ce sujet aura sa place.

Je crois que c'est Tonton qui avait traduit un code de QB pour faire du Ray-Tracing. Il est bien évident qu'il traine encore quelques codes QB sur le Net qui ont un intérêt à être traduit !

Alors bonne programmation!

Ollivier
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Bah !!! Tracassez pas, je ne pourrais pas resister si j'ai un sujet ou l'autre à rebalancer... :lol: :lol:

Pour moi le principe général est simple.. Il n'ya a pas (en gros.. :wink: Ouais très gros des fois) de bon ou de mauvais langage, mais souvent une mauvaise approche des problèmes... Et c'est là que la "communauté" et les échanges d'idées font que, d'un coup :idea: ... Mais, oui ? Mais c'est bien sur et que je suis bête etc... Parce le naze du coin, viens avec son idée génial :lol: :idea: :lol: Ou encore, que les "manuels" c'est bien beau, mais toujours trop long... Ou encore il faut des mois pour savoir ce que l'on a racconter sur ce forum :wink: Puis reste le problème qui est de savoir rester génialement modeste :roll: Sur ce merci Olivier du coup de sirop "remonte moral"... :lol: Pour ce qui est des autres choses que PB, je m'en sert simplement pour faire remonter à la surface des neurones qui s'était endormis et se croyais en vaccances et pour ne pas les heurter avec une autre réalité sans préparation je relis des histoires connues !

Voilà, à plus...
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Désolé mais je m'étais arrêter à :
C'est tout... Mais au fait, vous pouvez vous exercer à l'optimiser... Ou encore que la traduction dépasse le Milliard, tout est là pour le faire
Denis

Bonne Jounée à tous
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@brossden

Bah, t'inquiète pas. Une chose qui est sûre, c'est que désormais on sait vraiment compter!

Par contre, te remplir un chèque de 1 milliard d'euros: nada, tu peux te brosser ! (même si je suis dans la banque idéale pour ce type d'action).

@gebonnet

Fouille au max les codes des 3 forums. (Cliquez sur Rechercher et puis en mettant le nom d'une instruction comme mot-clef de recherche : tu es sûr de trouver ton bonheur). ça a été mon premier geste en arrivant ici. Faire le plein de code sans en savoir les fonctions. Sur la totalité que j'ai péché, 98% sont encore en attente depuis... 10 mois! C'est infini...

N'hésite pas à noter la liste des numéros de post trouvés, sur papier : ça t'évite de refaire une requête de recherche à chaque topic trouvé.
Dernière modification par Ollivier le lun. 02/juin/2008 11:12, modifié 1 fois.
Répondre