Forum Liberty Basic France

Discussion Générale » GLBCC, et alors ? Compilation LB ?
Le 01/04/2012 à 18h50

Libertynaute

Groupe: Membre

Inscrit le: 18/10/2011
Messages: 73
Bonjour,

Je viens une fois de plus d'esssayer le compilateur GLBCC sur un code super-simple, et je n'ai ni message d'erreur, ni fichier .exe.

Rien.

Quelqu'un a-t-il déjà obtenu un résultat ?
Eventuellement montrable ? Un "Hello World" par exemple ?
Et comment l'a-t-il obtenu ?

Cordialement,

Claude
____________________
Omnium populorum gallicorum bravissimi sunt Belgae.

Web    
Le 02/04/2012 à 15h46

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Salut Claude,

ne sachant pas du tout ce qu'est GLBCC, j'ai fait 'search' sur "Liberty BASIC Community Forum" et ils semblent dire que c'est abandonné depuis longtemps, et aussi qu'il y avait plein de problèmes...
Mais je ne sais toujours pas ce que c'est ! :s :s
Un 2ième compilateur pour LB peut-être ??



Edité par cassiope01 Le 02/04/2012 à 15h49
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 02/04/2012 à 17h50

Libertynaute

Groupe: Membre

Inscrit le: 18/10/2011
Messages: 73
Bonjour Casiope01,

GLBCC est l'acronyme de : GNU Liberty Basic C Compiler

Il est supposé convertir le code LB en C et le compiler à l'aide du compilateur GCC (open source).

On le trouve toujours dans les links de LB, sous le nom de LBCC.

La première version (linux) date de 2001, mais une version win-32 a été écrite par la suite; c'est l'époque de LB3. C'est donc le premier compilateur LB connu.
On le trouve sur SourceForge; tape GLBCC dans Google, c'est direct, ou prends le link de LB.

Des internautes inconnus ont affirmé sur plusieurs sites que c'était d'un usage très simple.

On télécharge le fichier (-win-32), on le dézippe dans c:\glbcc, on exécute le fichier install.exe, on peut exécuter le fichier makefile, et aussi patch.exe. On télécharge aussi le patch glbcc-01.1, qui crée un sous-répertoire c:\glbcc\glbcc-01.1, où le fichier .bas à compiler devrait idéalement se trouver.

L'exécutable glbcc.exe ouvre une fenêtre openfiledialog, où on choisit le fichier .bas à compiler; mais on peut aussi l'exécuter à partir de la ligne de commande: glbcc hello.bas

Un texte un peu confus s'affiche ensuite dans la console. Je n'en retiens que la fin: "output file is empty".

Pour moi, c'est le dernier essai avant abandon définitif.

Mais si quelqu'un y voit clair, bravo ! Et merci. Et respect.

Claude

____________________
Omnium populorum gallicorum bravissimi sunt Belgae.

Web    
Le 02/04/2012 à 18h04

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Et quels bénéfices pouvait-on en tirer ? Tu penses à l'aspect multi-plateformes ?
Sinon, il se pourrait que ces fonctionnalités soit maintenant intégrés à LB non ? Qu'en penses-tu ?


@+



Edité par cassiope01 Le 02/04/2012 à 19h52
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 02/04/2012 à 18h55

Libertynaute

Groupe: Membre

Inscrit le: 18/10/2011
Messages: 73
Voilà voilà

Déjà c'est pas moi qui ai écrit GLBCC.

Il y a une version multi-plateformes, linux + win, mais je ne pratique pas linux.

Le principe est de transformer un fichier .bas écrit en LB, en un exécutable en langage-machine de qqs dizaines de Ko, au lieu de qqs Mo; la vitesse d'exécution pourrait s'améliorer en proportion ( Pas de RESOURCE cependant).
Donc, amélioration du stockage et de l'exécution (je continue à croire au langage-machine).

Jusqu'à présent, LB n'inclut pas du tout du tout cette fonctionnalité.

Autant que possible, ne me réponds pas par de nouvelles questions alors que je n'ai pas les réponses; et crois bien que je ne poserais pas de questions dont je connaîtrais déjà les réponses.

J'interroge pour m'informer, si l'information utile existe.

A+

Claude



Edité par claudevdw Le 02/04/2012 à 18h58
____________________
Omnium populorum gallicorum bravissimi sunt Belgae.

Web    
Le 02/04/2012 à 19h50

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
claudevdw:
Autant que possible, ne me réponds pas par de nouvelles questions alors que je n'ai pas les réponses; et crois bien que je ne poserais pas de questions dont je connaîtrais déjà les réponses.

J'interroge pour m'informer, si l'information utile existe.

A+

Claude


Hmm ! donc si je ne comprend pas trop de quoi tu parles, j'ai juste à ne rien te demander.
Pas de problème Claude.



Edité par cassiope01 Le 02/04/2012 à 20h12
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 02/04/2012 à 20h39

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Hey ! Vous etes trop rigolos tous les deux.
Claude, tu devrais télécharger: "Notepad++"
quand tu l'a "installé" (j'ai une version sans install)
tu vas dans le dossier, puis dans: "plugins", puis: "doc", et la tu ouvre:"NppExec_Guide.txt".
ça pourrait t'interresser (si tu a gcc), et si tu lis l'anglich, off corse !....Cordial salut......
____________________
Roro

   
Le 03/04/2012 à 12h00

Libertynaute

Groupe: Membre

Inscrit le: 18/10/2011
Messages: 73
@Rolando

J'ai Notepad++ comme beaucoup de gens, mais je n'ai pas NppExec_Guide.txt.

Apparemment, et suivant l'information sur le site de NPP++, tous les pluggins ne sont pas distribués d'office pour tous les téléchargements, c'est un peu curieux.

Maintenant si tu as lu quelque chose d'intéressant dans ton fichier, n'hésite pas à en * résumer * le contenu ici.

@+

Claude
____________________
Omnium populorum gallicorum bravissimi sunt Belgae.

Web    
Le 03/04/2012 à 13h09

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
pluggin.zip Je te conseillais de consulter ce fichier car j'en ai traduit une partie pour quelqu'un. le gars m'a signalé qu'il en avait assez compris.
Pour ma par il me semble avoir compris qu'on pouvais compiler à peu prés n'importe quoi du moment qu'on avait le compilateur.
Je me doutait que tu n'aurais pas les pluggins, car moi meme l'ayant rechargé, j'ai vu qu'il y avait eu des changements.
Le dossier complet (sans install) fait un peu plus de 5Mo, les pluggins font 3Mo je te mets le zip des pluggins
quand tu les aura pris mets un message=OK. pour que je les retires.
Si le truc t'interresse, mais ne fonctionne pas avec ta version; je mettrai le reste.....une fois.....



Edité par Roland Le 03/04/2012 à 13h13
____________________
Roro

   
Le 03/04/2012 à 16h57

Libertynaute

Groupe: Membre

Inscrit le: 18/10/2011
Messages: 73
Merci pour pluggin.zip, Roland.
Comme tu le savais d'avance, je ne l'avais pas, et je le lirai sans doute prochainement.
C'est bien de pouvoir compiler n'importe quoi, j'admire.

Je reviens toutefois sur le sujet de mon enquête.

GLBCC est destiné à compiler une ancienne version de LB, qui serait peut-être bien JustBasic.
Le compilateur C ancien (gcc 2.95.3) est inclus dans la distribution.
Le fichier install.exe crée un fichier c:\windows\glbcc.ini , qui contient les chemins des fichiers nécessaires à la compilation.
lbpp.exe convertirait le code LB en code C, complé ensuite par gcc.
Le fichier glbcc-win32.bas, (peut-être source de glbcc.exe ? ), lirait les chemins dans la chaîne spec$ contenue dans le fichier glbcc.tmpl ou dans specs.win32.

Je n'ai pas encore fait le tri, mais il y a quelque chose là.
Et comme c'est du basic, on peut éventuellement encore modifier des éléments.

Ce ne sont que des indices indirects et imprécis, mais je voudrais attirer l'attention des membres de LBF qui se sentiraient motivés par ce sujet, qui mérite d'être creusé, à mon avis.


Claude




____________________
Omnium populorum gallicorum bravissimi sunt Belgae.

Web    
Le 03/04/2012 à 18h05

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Je pense que tu n'a pas reçu mon mail. Cela n'a plus d'importance, mon petit ouistiti (Léo) n'a que sept ans, mais il a déja chargé vingt Mo sur les matrices sur le net, tu peux dire qu'avec ton prog de matrice, tu a fais un fan.
Bon, je retire le "pluggin", ça n'interresse que les plongeurs en eau profonde.....a+....Salutations.



Edité par Roland Le 03/04/2012 à 18h07
____________________
Roro

   
Le 04/04/2012 à 12h23

Libertynaute

Groupe: Membre

Inscrit le: 18/10/2011
Messages: 73
Bon, voilà:

Les chemins de fichiers indiqués par GLBCC sont faux, mais il ne les trouve pas même après correction des chemins.
Dommage.
Je crois que je vais le laisser comme ça, au moins pour ce siècle-ci.

S'il y a d'autres amateurs de déconvenues: le programme peut être lancé en cliquant sur glbcc.exe, ou en exécutant (sous JB/LB), le fichier GLBCC-win32.bas; les chemins chargés par glbcc-win32.bas peuvent être corrigés à la main dans ce programme, et ensuite il n'y a plus le message d'erreur "empty outfile"; mais pas d'exécutable...

Donc pour moi GLBCC c'est fini.

Claude


____________________
Omnium populorum gallicorum bravissimi sunt Belgae.

Web    
Le 04/04/2012 à 13h27

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Je salut ta sagesse, aprés avoir salué ton opiniatreté,concernant GLBCC.
Le probléme avec les langages "fermés", c'est qu'on ne peut pas creuser bien profond sans rencontrer le basalte. Sur lequel on se casse les dents.
Ne manque pas de nous faire part du prochain os que tu va trouver à ronger. ;)



Edité par Roland Le 04/04/2012 à 15h12
____________________
Roro

   
Le 05/04/2012 à 10h48

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Bonjour Claude,
Mon petit fils (Léo 7ans) Ne lache pas le morceau.
Voila que maintenant, il voudrait pouvoir sauvegarder la matrice avec les données quelle contient.
Comme tu est le concepteur du programme, et avant que je ne me casse la tete dessus.
Je m'adresse à toi.
Que me conseille tu pour satisfaire ce petit bonhomme ?
Il a précisé qu'il n'était pas exigeant, qu'il noterai les résultats à la main.(y sont bien les gamins, non ?)
Bien que je sache programmer dans plusieurs langages, mes capacités à manipuler les fichiers avec "Liberty" ne sont pas énormes.
Je vois qu'il faut créer un fichier, ajouter deux boutons (Import/export)
Faire deux boucles (lecture/écriture) de A()
Le tout si possible dans un module séparé
Ne pense tu pas que cette possibilité serait un "plus" pour ton programme.
Si le coeur t'en dit .......Cordialement. :)



Edité par Roland Le 05/04/2012 à 11h03
____________________
Roro

   
Le 05/04/2012 à 12h11

Libertynaute

Groupe: Membre

Inscrit le: 18/10/2011
Messages: 73
Bonjour Roland,

Ceci a déjà été fait par moi-même et par cassiope01 (deux méthodes différentes pour le GUI, qui fonctionnent.)
Avec boutons pour les exemples et la sauvegarde.
Tu trouveras la version de cassiope01 dans Général, Grille - Stringgrid.
Je ne sais plus où j'ai placé mon propre GUI, mais le revoici:


Code :


'GAUSS-JORDAN-GRID.BAS      pour LB 4.0x et JB.101, 26 déc 2011
'=====================

'Version finale
'domaine public
'auteur claudevdw

[COMMENTAIRE]

'10 équations et 10 inconnues et 10 termes indépendants = 110 textbox


'on navigue de cellule en cellule avec TAB et SHIFT-TAB,
'ou avec la souris, mais pas avec les touches fléchées

'entrer les données à partir de l'angle supérieur gauche
'ne pas laisser de cellules vides dans la matrice,
'sinon = 0, résultat final faux ou division par zéro

'les données de x1 - 2x3 = 4
'doivent se lire: x1 + 0*x2 - 2x3 = 4

'les solutions apparaissent dans la dernière colonne active,
'à la place des termes indépendants

'pour plus de détails voir le petit fichier GAUSS-JORDAN-GRID.TXT


[WIDGETS]

NOMAINWIN

'numéroter les colonnes dans un statictext horizontal
Hnum$ = SPACE$(2)
FOR j = 1 TO 11: Hnum$ = Hnum$ + STR$(j) + SPACE$(16): NEXT j
STATICTEXT #w.horizontal, Hnum$, 20, 1, 580, 20
'et numéroter péniblement les lignes dans un statictext vertical
Vnum$ = SPACE$(1)
FOR i = 1 TO 10: Vnum$ = Vnum$ + STR$(i) + SPACE$(3): NEXT i
STATICTEXT #w.vertical, Vnum$, 3, 12, 9, 320

'10 lignes x 11 colonnes de TextBox, grâce au copier-coller...
w = 50: MG = 20: MS = 20: d = 5: h = 25

TEXTBOX #w.101, 20 + 0*55, 20, 50, 25
TEXTBOX #w.102, 20 + 1*55, 20, 50, 25
TEXTBOX #w.103, 20 + 2*55, 20, 50, 25
TEXTBOX #w.104, 20 + 3*55, 20, 50, 25
TEXTBOX #w.105, 20 + 4*55, 20, 50, 25
TEXTBOX #w.106, 20 + 5*55, 20, 50, 25
TEXTBOX #w.107, 20 + 6*55, 20, 50, 25
TEXTBOX #w.108, 20 + 7*55, 20, 50, 25
TEXTBOX #w.109, 20 + 8*55, 20, 50, 25
TEXTBOX #w.110, 20 + 9*55, 20, 50, 25
TEXTBOX #w.111, 20 + 10*55, 20, 50, 25

TEXTBOX #w.201, 20 + 0*55, 50, 50, 25
TEXTBOX #w.202, 20 + 1*55, 50, 50, 25
TEXTBOX #w.203, 20 + 2*55, 50, 50, 25
TEXTBOX #w.204, 20 + 3*55, 50, 50, 25
TEXTBOX #w.205, 20 + 4*55, 50, 50, 25
TEXTBOX #w.206, 20 + 5*55, 50, 50, 25
TEXTBOX #w.207, 20 + 6*55, 50, 50, 25
TEXTBOX #w.208, 20 + 7*55, 50, 50, 25
TEXTBOX #w.209, 20 + 8*55, 50, 50, 25
TEXTBOX #w.210, 20 + 9*55, 50, 50, 25
TEXTBOX #w.211, 20 + 10*55, 50, 50, 25

TEXTBOX #w.301, 20 + 0*55, 80, 50, 25
TEXTBOX #w.302, 20 + 1*55, 80, 50, 25
TEXTBOX #w.303, 20 + 2*55, 80, 50, 25
TEXTBOX #w.304, 20 + 3*55, 80, 50, 25
TEXTBOX #w.305, 20 + 4*55, 80, 50, 25
TEXTBOX #w.306, 20 + 5*55, 80, 50, 25
TEXTBOX #w.307, 20 + 6*55, 80, 50, 25
TEXTBOX #w.308, 20 + 7*55, 80, 50, 25
TEXTBOX #w.309, 20 + 8*55, 80, 50, 25
TEXTBOX #w.310, 20 + 9*55, 80, 50, 25
TEXTBOX #w.311, 20 + 10*55, 80, 50, 25

TEXTBOX #w.401, 20 + 0*55, 110, 50, 25
TEXTBOX #w.402, 20 + 1*55, 110, 50, 25
TEXTBOX #w.403, 20 + 2*55, 110, 50, 25
TEXTBOX #w.404, 20 + 3*55, 110, 50, 25
TEXTBOX #w.405, 20 + 4*55, 110, 50, 25
TEXTBOX #w.406, 20 + 5*55, 110, 50, 25
TEXTBOX #w.407, 20 + 6*55, 110, 50, 25
TEXTBOX #w.408, 20 + 7*55, 110, 50, 25
TEXTBOX #w.409, 20 + 8*55, 110, 50, 25
TEXTBOX #w.410, 20 + 9*55, 110, 50, 25
TEXTBOX #w.411, 20 + 10*55, 110, 50, 25

TEXTBOX #w.501, 20 + 0*55, 140, 50, 25
TEXTBOX #w.502, 20 + 1*55, 140, 50, 25
TEXTBOX #w.503, 20 + 2*55, 140, 50, 25
TEXTBOX #w.504, 20 + 3*55, 140, 50, 25
TEXTBOX #w.505, 20 + 4*55, 140, 50, 25
TEXTBOX #w.506, 20 + 5*55, 140, 50, 25
TEXTBOX #w.507, 20 + 6*55, 140, 50, 25
TEXTBOX #w.508, 20 + 7*55, 140, 50, 25
TEXTBOX #w.509, 20 + 8*55, 140, 50, 25
TEXTBOX #w.510, 20 + 9*55, 140, 50, 25
TEXTBOX #w.511, 20 + 10*55, 140, 50, 25

TEXTBOX #w.601, 20 + 0*55, 170, 50, 25
TEXTBOX #w.602, 20 + 1*55, 170, 50, 25
TEXTBOX #w.603, 20 + 2*55, 170, 50, 25
TEXTBOX #w.604, 20 + 3*55, 170, 50, 25
TEXTBOX #w.605, 20 + 4*55, 170, 50, 25
TEXTBOX #w.606, 20 + 5*55, 170, 50, 25
TEXTBOX #w.607, 20 + 6*55, 170, 50, 25
TEXTBOX #w.608, 20 + 7*55, 170, 50, 25
TEXTBOX #w.609, 20 + 8*55, 170, 50, 25
TEXTBOX #w.610, 20 + 9*55, 170, 50, 25
TEXTBOX #w.611, 20 + 10*55, 170, 50, 25

TEXTBOX #w.701, 20 + 0*55, 200, 50, 25
TEXTBOX #w.702, 20 + 1*55, 200, 50, 25
TEXTBOX #w.703, 20 + 2*55, 200, 50, 25
TEXTBOX #w.704, 20 + 3*55, 200, 50, 25
TEXTBOX #w.705, 20 + 4*55, 200, 50, 25
TEXTBOX #w.706, 20 + 5*55, 200, 50, 25
TEXTBOX #w.707, 20 + 6*55, 200, 50, 25
TEXTBOX #w.708, 20 + 7*55, 200, 50, 25
TEXTBOX #w.709, 20 + 8*55, 200, 50, 25
TEXTBOX #w.710, 20 + 9*55, 200, 50, 25
TEXTBOX #w.711, 20 + 10*55, 200, 50, 25

TEXTBOX #w.801, 20 + 0*55, 230, 50, 25
TEXTBOX #w.802, 20 + 1*55, 230, 50, 25
TEXTBOX #w.803, 20 + 2*55, 230, 50, 25
TEXTBOX #w.804, 20 + 3*55, 230, 50, 25
TEXTBOX #w.805, 20 + 4*55, 230, 50, 25
TEXTBOX #w.806, 20 + 5*55, 230, 50, 25
TEXTBOX #w.807, 20 + 6*55, 230, 50, 25
TEXTBOX #w.808, 20 + 7*55, 230, 50, 25
TEXTBOX #w.809, 20 + 8*55, 230, 50, 25
TEXTBOX #w.810, 20 + 9*55, 230, 50, 25
TEXTBOX #w.811, 20 + 10*55, 230, 50, 25

TEXTBOX #w.901, 20 + 0*55, 260, 50, 25
TEXTBOX #w.902, 20 + 1*55, 260, 50, 25
TEXTBOX #w.903, 20 + 2*55, 260, 50, 25
TEXTBOX #w.904, 20 + 3*55, 260, 50, 25
TEXTBOX #w.905, 20 + 4*55, 260, 50, 25
TEXTBOX #w.906, 20 + 5*55, 260, 50, 25
TEXTBOX #w.907, 20 + 6*55, 260, 50, 25
TEXTBOX #w.908, 20 + 7*55, 260, 50, 25
TEXTBOX #w.909, 20 + 8*55, 260, 50, 25
TEXTBOX #w.910, 20 + 9*55, 260, 50, 25
TEXTBOX #w.911, 20 + 10*55, 260, 50, 25

TEXTBOX #w.1001, 20 + 0*55, 290, 50, 25
TEXTBOX #w.1002, 20 + 1*55, 290, 50, 25
TEXTBOX #w.1003, 20 + 2*55, 290, 50, 25
TEXTBOX #w.1004, 20 + 3*55, 290, 50, 25
TEXTBOX #w.1005, 20 + 4*55, 290, 50, 25
TEXTBOX #w.1006, 20 + 5*55, 290, 50, 25
TEXTBOX #w.1007, 20 + 6*55, 290, 50, 25
TEXTBOX #w.1008, 20 + 7*55, 290, 50, 25
TEXTBOX #w.1009, 20 + 8*55, 290, 50, 25
TEXTBOX #w.1010, 20 + 9*55, 290, 50, 25
TEXTBOX #w.1011, 20 + 10*55, 290, 50, 25


BUTTON #w.EX1, "Exemple1", [EXEMPLE1], UL, 50, 350, 80, 30
BUTTON #w.EX2, "Exemple2", [EXEMPLE2], UL, 50, 400, 80, 30
BUTTON #w.EX3, "Exemple3", [EXEMPLE3], UL, 50, 450, 80, 30

BUTTON #w.Load, "Charger", [CHARGER], UL, 150, 350, 80, 30
BUTTON #w.Save, "Sauver", [SAUVER], UL, 150, 400, 80, 30
BUTTON #w.Print, "Imprimer", [IMPRIMER], UL, 150, 450, 80, 30

BUTTON #w.REST, "RESTORE", [RESTAURER], UL, 295, 350, 75, 50
BUTTON #w.NEW, "NEW", RAZ, UL, 380, 350, 70, 50
BUTTON #w.CALC, "CALC", [CALC], UL, 460, 350, 70, 50
BUTTON #w.EXIT, "EXIT", [EXIT], UL, 540, 350, 70, 50

'* dimensionner la fenêtre
WindowHeight = 550
WindowWidth = 660

'* et la centrer
UpperLeftX = INT(DisplayWidth - WindowWidth) /2
UpperLeftY = INT(DisplayHeight - WindowHeight) /2

OPEN "Système d'Equations Linéaires - Méthode de Gauss-Jordan" FOR GRAPHICS_nsb AS #w

PRINT #w, "TrapClose [EXIT]"

PRINT #w.vertical, "!font courrier_new 9"

'* le tableau pour enregistrer les valeurs des 10 x 11 cellules
DIM A(11, 12)
'* le tableau pour sauvegarder les données de A( )
DIM B(11,12)
'* le tableau pour FILES
DIM Info$(10, 10)

'* focus dans la première cellule
PRINT #w.101, "!setfocus"

WAIT

[CALC]

'* combien a-t-on saisi de lignes (n) ?

j = 1
FOR i = 1 TO 10
  cell$ = "#w." + STR$(100 * i + j)       'créer un handle maniable
  PRINT #cell$, "!contents? var$"
  IF var$ = "" THEN
     n = i - 1
     EXIT FOR
  ELSE
      n= i
  END IF
NEXT i

'* combien a-t-on saisi de colonnes (m) ?

i = 1
FOR j = 1 TO 11
  cell$ = "#w." + STR$(100 + j)
  PRINT #cell$, "!contents? var$"
  IF var$ = "" THEN
     m = j - 1
     EXIT FOR
  ELSE
     m = j
  END IF
NEXT j

'* vérifier si colonnes (m) vaut bien lignes (n) +1,  sinon données incomplètes

IF  m <> n + 1 THEN NOTICE "données incomplètes": WAIT

'* récupérer les données des cellules dans le tableau A( )
'  et dans la copie de réserve B( )

FOR i = 1 TO n
FOR j = 1 TO m
  cell$ = "#w." + STR$(100 * i + j)
  PRINT #cell$, "!contents? var$"
  A(i, j) = VAL(var$)
  B(i, j) = VAL(var$)
NEXT j
NEXT i

'* vérifier qu'il n'y a pas de zéro sur la diagonale principale
  'càd celle des inconnues x1, x2, ...

flag = 0
FOR i = 1 TO n
IF A(i, i) = 0 THEN flag = 1: EXIT FOR
NEXT i
IF flag = 1 THEN NOTICE "un zéro sur la diagonale" + CHR$(13) + "problème insoluble": WAIT

'* C'est ici qu'on calcule enfin

       'réduire chaque pivot diagonal A(i,i)  à 1 en divisant toute la ligne par A(i,i)

FOR i = 1 TO n

    p = A(i, i)                                  'c'est le "pivot" de Gauss

    FOR j = 1 TO n + 1
            q = A(i, j)
            A(i, j) = q / p
     NEXT j

     'combiner la ligne i avec toutes les autres lignes (donc sauf si  k = i)
      'en soustrayant de la ligne k, la ligne i multipliée par le coefficient de X(i) à la ligne k, càd A(k,i) ;
     'la ligne i reste intacte.

FOR k = 1 TO n

    p = A(k, i)

    IF k <> i THEN
        FOR j = 1 TO n + 1         'n + 1 = m
                q = A(i, j)
                r = A(k, j)
                A(k, j) = r - p*q
        NEXT j
    END IF
NEXT k

NEXT i

       'NB: éviter de diviser ou de multiplier les A(i,j)*A(m,n) ou A(i,j) / A(m,n), résultats aberrants

'* et renvoyer les résultats dans les cellules

FOR i = 1 TO n
FOR j = 1 TO m
  cell$ = "#w." + STR$(100 * i + j)
  x = A(i, j)
  x$ = STR$(x)
  ' corriger les résultats 'float' parasites du genre '7.0'
  IF RIGHT$(x$, 2) = ".0" THEN x$ = LEFT$(x$, LEN(x$) - 2)
  PRINT #cell$, x$ 
NEXT j
NEXT i

WAIT

SUB RAZ handle$

FOR i = 1 TO 10
  FOR j = 1 TO 11
    cell$ = "#w." + STR$(100 * i + j)
    PRINT #cell$, ""
  NEXT j
NEXT i

PRINT #w.101, "!setfocus"

END SUB

[RESTAURER]

FOR i = 1 TO n
FOR j = 1 TO m
    A(i, j) = B(i, j)
    cell$ = "#w." + STR$(100 * i + j)
    var = A(i, j)
    PRINT #cell$, STR$(var)
NEXT j
NEXT i

WAIT

[CHARGER]

CALL  RAZ "#w.RAZ"      'vider l'affichage
FILEDIALOG "Importer des données dans la grille", "*.txt; *.dat", fn$
IF fn$ = "" THEN WAIT

OPEN fn$ FOR INPUT AS #src
    INPUT #src, n   'nombre de lignes
    INPUT #src, m  'nombre de colonnes = n + 1
  FOR i = 1 TO n
    INPUT #src, ligne$
  FOR j = 1 TO m
    A(i, j) = VAL(WORD$(ligne$, j))         'mieux sans séparateur, seulement espace
    B(i, j) = A(i, j)                       'copie de A( )
  NEXT j
  NEXT i
CLOSE #src

'répartir dans les cellules
FOR i = 1 TO n
FOR j = 1 TO m
   cell$ = "#w." + STR$(100 * i + j)
   PRINT #cell$, STR$(A(i, j))
NEXT j
NEXT i

WAIT

[SAUVER]

FILEDIALOG "Exporter les données de la grille dans un fichier", " *.txt; *.dat ", fn$

IF fn$ = "" THEN WAIT

FILES DefaultDir$, fn$, Info$( )
FileExists = VAL(Info$(0, 0))
IF FileExists <> 0 THEN CONFIRM "Ce fichier existe déjà" + CHR$(13) + "Sauver quand même ?"; choix$
IF choix$ = "no" THEN WAIT

OPEN fn$ FOR OUTPUT AS #dest
  PRINT #dest, n     'lignes
  PRINT #dest, m     'colonnes
  FOR i = 1 TO n
    ligne$ = ""
  FOR j = 1 TO m
    ligne$ = ligne$ + STR$(B(i, j)) + " "
  NEXT j
  PRINT #dest, ligne$
  NEXT i
CLOSE #dest

WAIT

[IMPRIMER]

LPRINT "Coefficients:": LPRINT
FOR i = 1 TO n
FOR j = 1 TO m
   LPRINT  B(i, j),
NEXT j
   LPRINT
NEXT i
LPRINT

LPRINT "Solutions:": LPRINT
FOR i = 1 TO n
  x = A(i, m)
  x$ = STR$(x)
  IF RIGHT$(x$, 2) = ".0" THEN x$ = LEFT$(x$, LEN(x$) - 2)
  LPRINT "x"; i; " = ", x$
NEXT i

DUMP

WAIT

[EXEMPLE1]

'x1 -x2 + 2x3 = 5
'3x1 + 2x2 + x3 = 10
'2x1 - 3x2 - 2x3 = -10

'solutions x1 = 1, x2 = 2, x3 = 3

DATA 1, -1, 2, 5
DATA 3, 2, 1, 10
DATA 2, -3, -2, -10

RESTORE [EXEMPLE1]

'supprimer l'exemple précédent (reset)
CALL RAZ "#w.RAZ"

'charger l'exemple1
FOR i = 1 TO 3
FOR j = 1 TO 4
   READ z
   cell$ = "#w." + STR$(100 * i + j)
   PRINT #cell$, STR$(z)
NEXT j
NEXT i

WAIT

[EXEMPLE2]

'supprimer l'exemple précédent (reset)
CALL RAZ "#w.RAZ"

'charger l'exemple2
DATA 2.36,  0.2,   3.56,  -4.12,    3.56,  -8.90412
DATA -2.4, -0.6,   1.45,   0.458,  -0.21,  -4.08403
DATA 0.24,  0.65, -0.36,  -2.5,     4.25,  -4.57245
DATA 3.41,  0.23,  1.2,   -1.3,    -1.6,    1.3887
DATA 0.36, -1.69,  0.56,  -3.45,   -6.24,  -9.77202

'solutions 1.2, 2.25, -0.63, 2.2, -0.247

RESTORE [EXEMPLE2]

FOR i = 1 TO 5
FOR j = 1 TO 6
   READ z
   cell$ = "#w." + STR$(100 * i + j)
   PRINT #cell$, STR$(z)
NEXT j
NEXT i

WAIT

[EXEMPLE3]

CALL RAZ "#w.RAZ"

DATA  1,    -1,      2,    -1,     1,     1,   -1,    1,    -1,    1, -33
DATA  3,    2,      1,      1,     -1,   -1,    2,    -1,    1,   -2,  60
DATA  2,    -3,    -2,     -2,    -3,    -2,    -3,    2,   -3,    3,  -88
DATA  4,    -1,    -3,     3,      2,     4,     1,    -2,   3,    4,   7
DATA -6,     5,    -1,     4,     -6,    -3,   -2,     3,    2,   -3,  23
DATA  -5,     1,     1,      1,     1,      1,    3,    -3,  -2,  -4,  43
DATA  1,     1,     1,      1,     1,      1,    4,    4,     4,   1,   21
DATA  -2,   -2,   -3,     -4,    -5,      6,    7,   -8,     -5,   1,   29
DATA  1,     1,     1,     -2,    -2,     -2,     3,    3,    3,  -2,  53
DATA  2,    -2,    3,      4,     -5,     6,    -7,    8,    -3,   2, -170

'solutions: x1 = 1,  x2 =2,  x3 = 3,  x4 = -1,  x5 = -2,  x6 = -3,  x7 = 5,  x8 = -10, x9 = 12, x10 = -7

RESTORE [EXEMPLE3]

FOR i = 1 TO 10
FOR j = 1 TO 11
   READ z
   cell$ = "#w." + STR$(100 * i + j)
   PRINT #cell$, STR$(z)
NEXT j
NEXT i

WAIT

[EXIT]

CLOSE #w
END

[PROBLEME_SUPPLEMENTAIRE]

'problème supplémentaire, à saisir dans la grille, si on veut;
's'il ressemble à l'exemple n° 2, ce n'est pas fortuit

'x1 + 2x2 + 3x3 - 4x4 = - 4.99
'-2x1 - x2 + x3 + x4 = - 3.08
'x1 + x2 - x3 - 2x4 = - 0.32
'3x1 + 3x2 + 2x3 - 3x4 = 2.49

'solutions: 1.2, 2.25, -0.63, 2.2

'données à encoder:

'1, 2, 3, -4, -4.99
'-2, -1, 1, 1, -3.08
'1, 1, -1, -2, -0.32
'3, 3, 2, -3, 2.49


NB: pour les afficionados, j'ai également répondu un commentaire détaillé sur l'inversion matricielle dans "PB de fonctionnement LB 2 passages requis - inversion matricielle"

Salut



Edité par claudevdw Le 05/04/2012 à 17h08
____________________
Omnium populorum gallicorum bravissimi sunt Belgae.

Web    
Le 05/04/2012 à 17h19

Libertynaute

Groupe: Membre

Inscrit le: 18/10/2011
Messages: 73
Donc ce fichier (bas + compil) existe sous le nom de Gauss-Jordan.zip dans la zone de téléchargements, et j'ai pu le placer là-bas, mais je ne sais pas encore te dire comment on le retrouve si on ne l'a pas "uploadé" soi-même.

Claude

NB: je viens de retrouver le fichier .bas dans "projects - open-source".




Edité par claudevdw Le 05/04/2012 à 17h27
____________________
Omnium populorum gallicorum bravissimi sunt Belgae.

Web    
Le 06/04/2012 à 05h21

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Claude, je te remercie pour le prog, c'est grand luxe.
Il y a un problème avec la sauvegarde. L'explorateur windows s'ouvre en "lecture", et il y a un "sac" avec les noms de fichiers.
J'ai contourné en supprimant ce qui coince, ça oblige à changer le nom des fichiers dans le prog mème, mais c'est pas plus mal, cela oblige à mettre les mains dans le moteur, et à faire gaffe à ce qu'on fait.
Le mome va me lacher un moment, que je continue à me bruler les méninges sur la cafetière de cassiope, d'ailleurs, je vais lui mettre un mot à ce "lacheur". Cordial salut :top
____________________
Roro

   
Le 06/04/2012 à 11h22

Libertynaute

Groupe: Membre

Inscrit le: 18/10/2011
Messages: 73
Roland,

Je ne comprends pas bien à quoi tu t'occupes.

Tu pourrais le trouver tout fait ici:

GAUSS-JORDAN-GRID.zip

Claude
____________________
Omnium populorum gallicorum bravissimi sunt Belgae.

Web    
Le 06/04/2012 à 21h35

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Tout va bien Claude, il se passe juste que selon la façon dont le fichier est généré, il apparait ou non dans l'explorateur.Je ne creuse pas ce genre de phénomène, je le contourne. Ton prog marche au poil. :top
____________________
Roro

   
Le 07/04/2012 à 10h17

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Par contre, si tu peux me confirmer, que quand tu clique sur: "sauver", ton explorateur s'ouvre avec le mot: "enregistrer" en bas à droite, cela me permmetra de mettre mon système en doute.
Car chez moi, il s'ouvre avec le mot: "ouvrir". Ce qui est quand mème étonnant. .......à+......
____________________
Roro

   
Discussion Générale » GLBCC, et alors ? Compilation LB ?  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie