Probleme convertion Basic Apple II en Qbasic
Darko59
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis nouveau sur le forum. Je pense que je publie dans la bonne categorie.
Je suis programmeur amateur.
J'essaie de transcrire un programme du basic apple ii en qbasic mais j'ai un souci avec l'instruction next qui se trouve juste derriere un then.
Ce programme je l'ai recuperer dans la revue micro systeme No 44 ; il a ete creer par Philippe Larvet.
Je vous joint le listing
Question : quelqu'un pourrait il m'aider a transcrire le programme en qbasic.
Merci de votre aide.
Je suis nouveau sur le forum. Je pense que je publie dans la bonne categorie.
Je suis programmeur amateur.
J'essaie de transcrire un programme du basic apple ii en qbasic mais j'ai un souci avec l'instruction next qui se trouve juste derriere un then.
Ce programme je l'ai recuperer dans la revue micro systeme No 44 ; il a ete creer par Philippe Larvet.
Je vous joint le listing
Question : quelqu'un pourrait il m'aider a transcrire le programme en qbasic.
Merci de votre aide.
10 REM'=========================== 20 REM' Base de connaissances relationnelle 40 REM' Interrogeable en langage naturel 50 REM' 54 REM' Auteur 60 REM' Philippe Larvet 70 REM' Copyright 1984 80 REM' 90 CLS 100 np = 4 105 nm = 50 110 DIM b$(nm, np + 1) 120 DIM c$(np) 130 DIM e$(50) 140 DIM s(nm, 2) 150 nt = 0 270 REM' 280 REM' mots non-signifiants 290 REM' 300 ne = 0 310 READ a$ 320 IF a$ = "FF" THEN GOTO 1000 330 ne = ne + 1: e$(ne) = a$ 340 GOTO 310 400 DATA EST,LE,LA,DE,UN,UNE 410 DATA L,DU,D,LES,DES 412 DATA QU,QUE,QUI,SONT 414 DATA EN,OU,COMMENT,AU 420 DATA QUOI,C,CE,QUEL,QUELLE 430 DATA IL,ELLE,A,T,Y,FF 970 REM' 980 REM' entree 990 REM' 1000 PRINT : ni = 0 1010 INPUT "A vous : "; a$ 1020 l = LEN(a$) 1470 REM' 1480 REM' examen de l'entree 1490 REM' 1500 IF LEFT$(a$, 1) = "-" THEN GOTO 11000 1510 IF a$ = "???" THEN GOTO 10000 1520 IF RIGHT$(a$, 1) <> "?" THEN GOTO 1990 1530 a$ = LEFT$(a$, l - 1) 1540 ni = 1 1970 REM' 1980 REM' extraction des mots 1990 REM' 2000 FOR k = 2 TO np 2010 c$(k) = "" 2020 NEXT k 2030 l = LEN(a$): h$ = "" 2040 n = 1: nd = 0: j = 1 2100 i = j 2120 j = j + 1 2122 g$ = MID$(a$, j, 1) 2130 IF g$ <> " " AND g$ <> "'" AND g$ <> "-" AND j <= l THEN GOTO 2120 2132 f$ = MID$(a$, i, j - i) 2133 IF i = 1 AND LEFT$(f$, 2) = "QU" THEN n = 0 2135 FOR k = 1 TO ne 2136 IF e$(k) <> f$ THEN GOTO 2139 'NEXT k 2138 IF k <= ne THEN GOTO 2160 2139 NEXT k 'bon 2140 nd = nd + 1 2142 IF nd > np THEN GOTO 3500 2150 h$ = h$ + f$: c$(nd) = f$ 2152 IF nd = 1 THEN j1 = j 2160 IF j > l THEN GOTO 2990 2170 j = j + 1 2180 IF MID$(a$, j, 1) = " " AND j <= l THEN GOTO 2170 2200 IF j <= l THEN GOTO 2100 2970 REM' 2980 REM' Fin extraction 2990 REM' 3010 IF ni > 0 THEN GOTO 6000 3020 IF nd > 1 THEN GOTO 4000 3470 REM' 3480 REM' Erreur 3490 REM' 3500 PRINT "** Je ne comprends pas **" 3510 GOTO 1000 3900 REM' 3910 REM' Assertion 3920 REM' 3980 REM' Controle existance assertion dans la base 3990 REM' 4000 IF nt = 0 THEN GOTO 5000 4100 FOR i = 1 TO nt 4110 z$ = "" 4120 FOR j = 1 TO np 4130 z$ = z$ + b$(i, j) 4140 NEXT j 4150 IF z$ <> h$ THEN GOTO 4155 'NEXT i 4155 NEXT i 'bon 4160 IF i > nt THEN GOTO 5000 4170 REM' 4180 REM' Assertion deja connue 4190 REM' 4200 PRINT "** Assertion deja connue ! **" 4210 GOTO 1000 4970 REM' 4980 REM' Enrichissement base 4990 REM' 5000 FOR i = 1 TO nm 5010 IF b$(i, 1) <> "" THEN GOTO 5025 'NEXT i 5020 IF i <= nm THEN GOTO 5050 5025 NEXT i 'Bon 5030 PRINT "** STOP ! la base est pleine ! **" 5040 STOP 5050 FOR j = 1 TO np 5052 b$(i, j) = c$(j) 5054 NEXT j 5056 b$(i, np + 1) = a$ 5058 s(i, 1) = nd: s(i, 2) = j1 5060 PRINT "** Compris **" 5070 IF i > nt THEN nt = i 5080 GOTO 1000 5970 REM' 5980 REM' Interrogation 5990 REM' 5992 REM' Controle existence de chacun des mots 5996 REM' 6000 k = 0: m = nt 6010 t = 0: k = k + 1 6100 FOR i = 1 TO nt 6110 FOR j = 1 TO s(i, 1) 6120 IF b$(i, j) <> c$(k) THEN GOTO 6131 'NEXT j '6125 NEXT j 6130 IF j > s(i, 1) THEN GOTO 6180 6131 NEXT j 6132 t = 1 6140 IF nd > 1 THEN GOTO 6170 6142 IF j = 2 AND l > LEN(c$(k)) + 1 THEN GOTO 6162 '6144 NEXT j 6150 PRINT b$(i, np + 1) 6160 GOTO 6180 6162 PRINT LEFT$(b$(i, np + 1), s(i, 2)) 6164 GOTO 6180 6170 a = i: i = nt 6180 REM' Mot suivant 6190 NEXT i 6200 IF t = 0 THEN GOTO 9000 6210 IF nd = 1 THEN GOTO 1000 6220 IF a < m THEN m = a 6230 IF k < nd THEN GOTO 6010 6970 REM' 6980 REM' Relation horizontale 6990 REM' 7000 v = 0 7010 FOR i = m TO nt 7020 t = 0: k = 0: j = 0 7030 k = k + 1 7040 IF k > nd THEN GOTO 7300 7050 j = j + 1 7060 IF j > s(i, 1) THEN GOTO 7200 7070 IF b$(i, j) <> c$(k) THEN GOTO 7050 7080 t = t + 1 7090 IF t = 1 THEN GOTO 7030 7100 GOTO 7030 7200 IF t = 0 THEN GOTO 7400 7300 IF t <> nd OR t <> s(i, 1) THEN GOTO 7330 7310 PRINT " Oui ": v = 1: i = nt 7320 GOTO 7400 7330 IF t <> nd THEN GOTO 7400 7340 v = 1 7350 IF p = 2 THEN GOTO 7380 7360 PRINT b$(i, np + 1) 7370 GOTO 7400 7380 PRINT LEFT$(b$(i, np + 1), s(i, 2)) 7400 NEXT i 7410 IF v = 1 THEN GOTO 1000 7970 REM' 7980 REM' liaison inexistante ou inversee 7990 REM' 8000 REM' Composition de fonctions 8001 IF n = 0 THEN GOTO 8010 8002 PRINT " Non " 8004 GOTO 1000 8010 PRINT " Je l'ignore " 8070 GOTO 1000 8970 REM' 8980 REM' Mot inconnu 8990 REM' 9000 PRINT "** Je ne connais pas "; "--> "; c$(k); " <-- **" 9020 GOTO 1000 9900 REM' 9910 REM' Commandes de service 9920 REM' 9980 REM' Listage de la base 9990 REM' 10000 FOR i = 1 TO nt 10010 PRINT i; " "; b$(i, np + 1) 10020 NEXT i 10030 GOTO 1000 10970 REM' 10980 REM' Suppression 10990 REM' 11000 REM' 11004 REM' 11008 i = VAL(RIGHT$(a$, l - 1)) 11010 FOR j = 1 TO np + 1 11020 b$(i, j) = "" 11030 NEXT j 11040 PRINT "** Assertion "; i; " supprimee **" 11050 GOTO 1000
A voir également:
- Probleme convertion Basic Apple II en Qbasic
- Qbasic - Télécharger - Édition & Programmation
- Microsoft 365 basic - Accueil - Microsoft Office
- Visual basic - Télécharger - Langages
- Trousseaux apple - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
2 réponses
Salut Darko,
Plutôt que de faire le GOTO sur la ligne du NEXT, ce qui ne semble pas fonctionner en QBasic selon ce que tu dis, essaye d'insèrer une nouvelle ligne juste avant la ligne du NEXT (et mets-y un REM, ou une instruction qui ne fait rien) et fait le GOTO dessus.
(non testé, je n'ai pas ces langages sur ma machine)
Dal
Plutôt que de faire le GOTO sur la ligne du NEXT, ce qui ne semble pas fonctionner en QBasic selon ce que tu dis, essaye d'insèrer une nouvelle ligne juste avant la ligne du NEXT (et mets-y un REM, ou une instruction qui ne fait rien) et fait le GOTO dessus.
(non testé, je n'ai pas ces langages sur ma machine)
Dal
les next qui se trouve ligne 2136, 4150, 5010 et 6120.
j'ai essayais plusieurs solutions mais je bloque, le programme ne me donne pas le resultat voulu. ce programme a ete fait a l'origine pour apple II.
merci de m'aider.
5010 IF b$(i, 1) <> "" THEN GOTO 5025 'NEXT i
Le NEXT est en commentaire.
Cela indique vraisemblablement que le GOTO renvoi au NEXT;
moi j'ai mit 5025 mais quand je lance le prog je n'ai pas le resultat voulu.
je pense que cela vient de tous les next cité precedement
le goto 5025 n'existe pas, c'est moi qui l'est inscrit pour mes essais.
c'est pour cela que je bloque dans la transcription.
sous emulateur apple II le prog fonctionne sans probleme mais je n'arrive pas a le transcrire en qbasic.
Next i est lié au For i=... qui le précède.
En gros, les IF ... THEN NEXT ...
Sert à à continuer la boucle sans faire le reste des instructions.
Tu dis que tu montres le résultat adapté, mais du coup, on ne vois pas forcément toutes les modifications.
Tu dis que tu n'a pas le résultat attendu, mais tu ne dis pas ce que tu as et ce que tu devrais avoir. De plus, tu ne précises pas ce qu'est sensé faire le programme au global.