C 64
Anwendung des Monats

Prüfungsfragen

Prüfungen sind für viele ein Greuel, sowohl für die Lehrer als auch für die geplagten Schüler. Beiden kann mit diesem Programm geholfen werden.

Der Lernmodus. Hier muß der Lernende Fragen beantworten, die vom Computer gestellt werden.
Der Bearbeitungsmodus. Die Fragen werden mit den Antworten angezeigt und können editiert werden.

Da ich in der Aus- und Weiterbildung tätig bin, muß ich zum Leidwesen meiner Kursteilnehmer ab und zu Arbeiten schreiben lassen. Mein Bestand an Prüfungsfragen existierte bisher auf Karteikarten, aus denen dann jedesmal die Arbeit zusammengestellt wurde.

Grundgedanke ist also, diese Kartei in eine Datei zu übertragen, in der ich, nach Sachgebieten geordnet, herumblättern und die gewünschten Fragen gleich ausdrucken lassen kann.

Darüber hinaus soll diese Datei auch den Kursteilnehmern zugänglich sein, die anhand der Prüfungsfragen lernen, nicht aber in den Bearbeitungsmodus hineindürfen.

Ich könnte mir vorstellen, daß dieses Programm neben manchem Lehrer auch für viele Schüler interessant sein könnte, die sich so ihre eigene Prüfungsfragendatei erstellen und ihr Wissen regelmäßig überprüfen können.

Aus Geschwindigkeitsgründen mußte ich einige Maschinenspracheunterprogramme einbinden.

Prüfungsfragen/Programmbeschreibung

Dieses Programm ist geeignet…

Eine grundsätzliche Schwierigkeit liegt im Vergleich der Antworten. Die jeweilige Antwort muß »eindeutig« sein. Gut geeignet ist das Multiple-choise-System, das heißt von vorgegebenen Antworten ist eine richtig oder falsch. Möglich ist aber auch die Eingabe von Jahreszahlen, Namen etc., bei denen kaum unterschiedliche Möglichkeiten in der Eingabe vorkommen können.

Nach dem Laden des Programms und Starten mit RUN werden zuerst einige Maschinenspracheprogramme nachgeladen. Sie werden bewußt nicht zu einem Programm zusammengefaßt, da sie in vielen Programmen als Programmbausteine Verwendung finden können.

Das Programm Prüfungsfragen ist menügesteuert, wobei die einzelnen Menüpunkte mit den Cursorsteuertasten angewählt und mit der F1- oder RETURN-Taste übernommen werden können.

(Hartmut Gölker/gk)

Das Programm erleichtert nicht nur dem Lehrer die Zusammenstellung von Aufgaben, sondern auch dem Kursteilnehmer deren Beantwortung.

Das Programm (Listing 1) ist menügesteuert und erlaubt nicht nur das Auswählen und Beantworten von Fragen, sondern auch die Erstellung eines eigenen Fragenkatalogs nach dem Multiple Choise System. Sie kennen sicher alle entsprechenden Fragebögen: Es wird eine Frage gestellt, und Sie müssen aus mehreren vorgegebenen Antworten die richtige(n) heraussuchen.

Alle Menüpunkte können mit den Cursor-Tasten angewählt und mit der F1- oder RETURN-Taste übernommen werden.

Merken muß man sich noch die F7-Taste, mit ihr gelangt man in den bisherigen Programmabschnitt zurück. Zuerst erscheint das Menü:

— Druck.einst. Einstellung auf die Drucker Epson FX-80 oder Commodore MPS 801
— Beschreibung ist eine Kurzbeschreibung des Programms,
— Start die Aufforderung … »Aufgabendiskette einlegen« erscheint.

Nach dem Einlegen der Aufgabendiskette, beziehungsweise einer neu formatierten Diskette, kann die eigentliche Arbeit losgehen.

Es folgen die Menüpunkte:

— Lernen ist für den Lernenden zum Pauken von Prüfungsfragen
— Bearbeiten dient unter anderem zur Eingabe von Prüfungsfragen und zur Druckerausgabe

Lernen

Sind die Prüfungsfragen in unterschiedliche Sachgebiete unterteilt, so werden die Sachgebiete in einem Menü gezeigt, aus dem die Auswahl zu treffen ist.

Nach dieser Wahl erscheint die erste Frage. Die Antwort ist einzugeben und mit F1 oder RETURN zu bestätigen. Bei falscher Antwort antwortet der Computer mit einem blinkenden *falsch* und der Anwender hat zwei weitere Eingabemöglichkeiten.

Eine korrekte Antwort wird mit *richtig* quittiert und die nächste Frage kann von der Diskette eingelesen werden. Beim ersten Mal richtig beantwortete Fragen werden aussortiert und erscheinen nicht mehr.

Die Reihenfolge der Fragen ist zufällig. Um den Programmabschnitt zu beenden, muß ich entweder alle Fragen des Sachgebiets richtig beantworten oder mit F7 abbrechen. Danach kommt die Auswertung, die angibt, wieviel Fragen bearbeitet und wieviel davon beim ersten Mal richtig beantwortet wurden.

Bearbeiten

Dieser Programmabschnitt ist durch eine Codenummer geschützt. Als Codenummer wurde 001 festgelegt, das läßt sich aber beliebig ändern. Legt man Wert auf diesen Schutz, muß noch ein LIST-Schutz und/oder ein AUTOSTART eingebaut werden.

Es folgt ein Auswahlmenü der vorhandenen Sachgebiete und den Optionen »Sachgebiet anlegen« und »Sachgebiet löschen«

Ist ein Sachgebiet gewählt, muß entschieden werden, ob neue Fragen eingegeben oder vorhandene bearbeitet werden sollen:

Die Maschinensprach-Unterprogramme

  1. Print

    Die Routine erlaubt die positionierte Bildschirmausgabe (Listing 2). Syntax: sys pr, Spalte, Zeile, Druckliste

  2. IN21

    Mit dieser erweiterten Input-Routine kann eine Variable an einer bestimmten Stelle des Bildschirms eingelesen werden (Listing 3).

    Syntax: sys in, Spalte, Zeile, Länge, Art, Variable

    — Länge Maximallänge
    — Art numerische (0)/alphanumerische (1)
    — Variable Variable, in die der String eingelesen wird.
  3. Bildschirm2

    Die Routine erlaubt eine freie Texteingabe innerhalb eines bestimmten Bildschirmbereichs von Spalte1/Zeile1 bis Spalte 2/Zeile2 (Listing 4). Syntax: sys bi, sp1, ze1, sp2, ze2

  4. READ10. Die Routine liest einen Text vom Bildschirm, wobei alle überflüssigen Leerzeichen entfernt werden und überträgt den Text wahlweise auf die Diskette oder den Drucker (Listing 5). Ein zweiter Einspringpunkt liest umgekehrt den Text von der Diskette und gibt ihn wieder in der ursprünglichen Form auf dem Bildschirm aus.
  5. Drucker. Mit dieser Routine läßt sich vom Programm her überprüfen, ob der Drucker eingeschaltet ist. Sie stammt aus dem 64’er-Magazin (Listing 6).
(Hartmut Gölker/gk)
10 rem programmierte fragen
20 poke 53280,12:poke53281,0
100 print chr$(147)
101 if a=0 then a=1:load"print obj",8,1
102 if a=1 then a=2:load"in21 obj",8,1
103 if a=2 then a=3:load"bildschirm obj",8,1
104 if a=3 then a=4:load"read10 obj",8,1
105 if a=4 then a=5:load"drucker obj",8,1
110 pr=12*16^3   : dr=pr+6*16^2
111 in=pr+1*16^2 : bi=pr+3*16^2
112 wr=pr+5*16^2 : re=wr+13*16+10
113 dim l(99,2),m$(15),sp(15),ze(15)
114 printchr$(14):poke 657,128
118 au=0:ko$="Pruefungsfragen":gosub 11000:rem kopf
119 sys pr,01,01,"H. Goelker / 28.03.84{lblu}"
125 m$(1)= " Druck.einst. ":sp(1)=0:ze(1)=24
130 m$(2)= " Beschreibung ":sp(2)=16:ze(2)=24
135 m$(3)= " Start ":sp(3)=32:ze(3)=24:nn=3:j=2:gosub14010
140 if x$=chr$(136) then 118
145 if j=3 then 156
150 on j gosub 15000,16000
151 goto 118
156 ko$="Pruefungsfragen":gosub11000
158 gosub 13000
159 if x$=chr$(136) then 118
160 gosub10700:ko$="Pruefungsfragen":gosub 11000
162 m$(1)=" lernen ":sp(1)=7:ze(1)=24
164 m$(2)=" bearbeiten ":sp(2)=22:ze(2)=24 :nn=2
166 gosub 14000
168 if x$=chr$(136) then 118
170 on j gosub 200,800
180 goto 160
190 :
200 rem aufgaben lernen ***************
210 ko$="Aufgaben lernen":gosub11000
230 gosub 12500
240 if x$=chr$(136)then return
245 if f=0 then gosub 10000
250 if n>0  then 300
255 gosub 11400
260 sys pr,07,24,"Keine Aufgaben gespeichert"chr$(145)
270 get x$:if x$=""then 270
280 sa$="":return
300 for i=1 to n:l(i,1)=i:l(i,2)=0:next
310 max=n
320 t=int(rnd(1)*max)+1:r=l(t,1)
330 if l(t,2)=0 then fr=fr+1
340 gosub17000:gosub10600:remkopf/frage
350 sys pr,00,24,"Deine Antwort   ?";
360 sys in,18,24,21,1,er$
365 if peek(828)=136 then 700
370 if er$<>aw$ then 500
380 if l(t,2)=0 then ri=ri+1
390 l(t,1)=l(max,1):l(t,2)=l(max,2)
400 max=max-1
410 gosub11400:rem fusszeilen loeschen
420 sys pr,12,23," ** richtig ** "
440 getx$:if x$<>chr$(13)andx$<>chr$(136)then 440
450 if x$=chr$(136) or max=0 then 700
460 goto 320
470 :
500 rem falsche antwort
510 l(t,2)=1
520 gosub 12000 :rem falsche antwort
530 gosub11400
540 sys pr,00,24,"Deine Antwort   ?";
550 sys in,18,24,21,1,er$
560 if er$=aw$ then fa=0:goto410
570 gosub 12000:fa=fa+1:if fa<2 then 530
580 gosub 11400:gosub13200
581 sys pr,(40-l)/2,23," * richtig ist :"aw$" * "
600 fa=0: goto 440
610 :
700 gosub 11000:rem kopf
710 sys pr,2,12,"Anzahl der Fragen :";fr
720 sys pr,2,14,"richtige Antworten:";ri
730 fa=0:ri=0:fr=0:sa$=""
740 get x$:if x$="" then 740
750 return
760 :
800 rem aufgaben bearbeiten ***********
810 if s$="001  "then 890
820 ko$="Aufgaben bearbeiten":gosub11000
830 sys pr,01,05,"Bitte Code-Nr. eingeben:"
840 sys in,01,07,5,1,s$
850 if s$="001  "then 890
860 sys pr,01,24,"Code-Nr. unbekannt / weiter mit RETURN"chr$(145)
870 getx$:ifx$<>chr$(13) then 870
880 goto 800
890 gosub 11000:rem kopf
900 gosub 12200:if a=136 then sa$="": return
980 :
1000 rem aufgaben bearbeiten teil 2 ---
1010 ko$="Aufgaben bearbeiten":gosub 11000:rem kopf
1020 m$(1)=" Eingabe ":sp(1)=6:ze(1)=24
1030 m$(2)=" Ausgabe ":sp(2)=24:ze(2)=24
1090 nn=2:gosub14000
1095 if x$=chr$(136) then sa$="":return
1100 onj gosub 1140,3000,1090:goto 1000
1110 :
1140 rem eingabe ----------------------
1145 ko$="Aufgaben eingeben":aw$=""
1146 if n+1<99 then 1150
1147 gosub11400:syspr,5,23,"{rvon}Keine Eingabe mehr moeglich{rvof}":gosub11100:goto 1280
1150 r=n+1:gosub 11000:rem kopf
1160 sys pr,10,24,"f1=Text uebernehmen"chr$(145)
1170 sys bi,0,3,39,20
1180 a=peek(828)
1195 if a=136 then 1280
1200 gosub 11400:rem zeile 24 loeschen
1205 poke781,21:sys 59903
1210 sys pr,0,24,"richtige Antwort: "aw$;chr$(145)
1220 sys in,18,24,21,1,aw$
1225 a=peek(828)
1226 if a=136 then 1280
1230 a=peek(828):if a=17 or a=145 or aw$="                     "then1220
1240 if ko=0 then n=n+1:r=n
1260 gosub 10500:rem aufgaben write
1270 gosub 10200:rem status write
1280 r=0:return
1290 :
3000 rem ausgabe
3010 r=0: ko$="Ausgabe/Korrektur":ifn<1 then 3700
3015 goto 3200
3020 gosub11000
3100 gosub10600
3102 gosub13200:sys pr,(52-l)/2,21," -- "aw$" -- "
3105 gosub11400
3110 m$(1)=" weiter ":sp(1)=1:ze(1)=23
3111 m$(2)=" zurueck  ":sp(2)=13:ze(2)=23
3112 m$(3)=" Aufg.Nr.  ":sp(3)=27:ze(3)=23
3120 m$(4)=" drucken ":sp(4)=1:ze(4)=24
3121 m$(5)=" loeschen ":sp(5)=13:ze(5)=24
3122 m$(6)=" Korrektur ":sp(6)=27:ze(6)=24
3130 nn=6:gosub 14000
3135 if x$=chr$(136) then 3800
3140 on j goto 3200,3300,3400,5000,4000,3600
3150 :
3200 rem weiter -----------------------
3210 r=r+1:if r<=n then 3020
3220 gosub 11400
3230 sys pr,8,24,"Ende des Aufgabensatzes"chr$(145)
3240 get x$:if x$=""then 3240
3250 goto 3800
3260 :
3300 rem zurueck ----------------------
3310 r=r-1:if r>=1 then 3020
3320 goto 3220
3330 :
3400 rem nummer eingeben --------------
3410 r=0:gosub 11000
3420 sys pr,1,24,"Aufgaben-Nummer ?"chr$(145)
3430 sys in,19,24,3,0,b$:b=int(val(b$))
3435 if peek(828)=136 then 3020
3440 if b>n or b<1  then sys pr,1,23,"ungueltige Nummer":goto 3420
3450 r=b:goto 3020
3460 :
3600 rem korrektur --------------------
3610 gosub11400:rem fusszeilen loeschen
3615 sys pr,09,23,"Gib die Korrektur ein !"
3620 ko=r:gosub 1160:r=ko:ko=0
3630 if a=136 then return
3640 goto 3105
3650 :
3700 gosub11000:sys pr,8,24,"Keine Aufgabe gespeichert "chr$(145)
3710 get x$:if x$=""then 3710
3800 r=0:return
3810 :
4000 rem loeschen ---------------------
4100 gosub 11400
4110 sys pr,4,24,"Aufgabe wirklich loeschen (j/n) ?"chr$(145)
4120 getx$:ifx$<>"j" and x$<>"n" then 4120
4130 if x$="n" then 3105
4135 gosub 11400:sys pr,5,24,"... Aufgabe wird geloescht ..."chr$(145)
4140 if n=1 or n=r then 4570
4500 open 15,8,15
4510 print#15,"s:"str$(r)+sa$
4520 print#15,"r:"str$(r)+sa$"="str$(n)+sa$
4530 close15
4570 n=n-1
4580 gosub10200:rem statusdatei
4590 goto 3800
4600 :
5000 rem drucken **********************
5001 gosub 11400
5002 poke2,4:sys dr
5003 if peek(2)=0 then au=au+1:goto5008
5004 sys pr,07,24,"Drucker nicht eingeschaltet"chr$(145)
5005 get x$:if x$=""then 5005
5006 goto 3105
5007 :
5008 on d goto 5009,5100
5009 rem epson drucker ----------------
5010 open2,4,0:cmd2
5020 print chr$(27);"3";chr$(22);:print chr$(15);
5026 print chr$(27);"l";chr$(5);
5027 print   "Aufg.";au
5028 print chr$(27);"l";chr$(15);
5030 sys wr:close2
5070 goto 3105
5080 :
5100 rem vc 1526 drucker --------------
5102 open2,4,7:print#2,"Aufg.";au
5103 print#2,left$("{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}",5+len(str$(au)))
5105 open6,4,6:print#6,chr$(16);
5130 sys wr
5140 print#2:close2:close6: goto 3105
10000 rem dateien *********************
10010 :
10020 rem statusdatei read ------------
10100 n=0:r=0:open15,8,15
10110 open2,8,2,sa$+"/s,s,r"
10120 input#15,f:if f<>0 then 10140
10130 input#2,n:rem anzahl aufgaben
10140 close 2:close15:return
10195 :
10200 rem statusdatei anlegen ---------
10230 open2,8,2,"@:"+sa$+"/s,s,w"
10240 print#2,n
10250 close2:return
10260 :
10300 rem sachgebiete write -----------
10310 if ii>0 then 10350
10320 open15,8,15,"s:Sachgebiete"
10325 sa$(1)=""
10330 close15:return
10340 :
10350 open2,8,2,"@:Sachgebiete,s,w"
10360 for i=1 to ii:print#2,sa$(i):next
10370 close2:close15:return
10500 rem aufgaben write --------------
10504 gosub 11400:rem zeile 24 loeschen
10505 sys pr,08,24,"... bitte warten ..."chr$(145)
10510 sys pr,00,3,"";
10520 open3,3
10530 open2,8,2,"@:"+str$(r)+sa$+",s,w"
10540 sys wr
10565 print#2,aw$
10570 close2:close3
10580 return
10590 :
10600 rem aufgaben read ---------------
10610 open2,8,2,str$(r)+sa$+",s,r"
10620 sys re
10630 input#2,aw$
10660 close2:return
10700 rem sachgebiete pruefen/einlesen
10705 ii=0
10710 open 15,8,15
10720 open 2,8,2,"Sachgebiete,s,r"
10730 input#15,f
10740 if f<>0 then 10780
10750 ii=ii+1
10760 input#2,sa$(ii)
10770 if st<>64 then 10750
10780 close2:close15:return
10790 :
11000 rem kopf ------------------------
11010 print chr$(147);:print tab(1)ko$
11015 if sa$="" then 11020
11016 sys pr,1,1,sa$
11017 sys pr,28,0,"Aufg.Nr.:"r
11018 sys pr,28,1,"Anzahl  :"n
11020 sys pr,00,02,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"chr$(145)
11021 sys pr,27,0,"{CBM-N}"
11022 sys pr,27,1,"{CBM-N}"
11030 sys pr,00,22,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"chr$(145)
11040 sys pr,00,03,"";
11050 return
11060 :
11100 rem weiter mit return -----------
11110 sys pr,10,24,"Weiter mit RETURN"chr$(145)
11120 getx$:ifx$<>chr$(13) then 11120
11130 a=136:return
11140 :
11400 rem zeile 24 loeschen -----------
11410 poke781,23:sys 59903
11420 poke781,24:sys 59903:return
11430 :
11580 :
12000 rem falsche antwort -------------
12010 for j=1 to 5
12020 sys pr,25,24,"** FALSCH **";
12030 for jj=1 to 60:next
12040 sys pr,25,24,"{rvon}** FALSCH **{rvof}";
12050 for jj=1 to 60:next:next
12060 return
12070 :
12200 rem sachgebiet waehlen/anlegen --
12205 n=0:sa$="":a=0
12210 if ii=0 then 12320
12215 sys pr,05,4,"Sachgebiete"
12216 sys pr,05,5,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
12220 for i=1 to ii
12230 m$(i)=sa$(i):sp(i)=5:ze(i)=i+5
12240 next
12245 m$(ii+1)="neues Sachgebiet anlegen ":sp(ii+1)=5:ze(ii+1)=18
12246 m$(ii+2)="Sachgebiet loeschen      ":sp(ii+2)=5:ze(ii+2)=19
12260 nn=ii+2:gosub 14500
12270 if x$=chr$(136) then a=136:return
12280 if j=ii+1 then 12320
12290 if j=ii+2 then 12700
12310 sa$=sa$(j):gosub 10000:goto 12430
12320 gosub 11400:rem statuszeile loeschen
12322 if ii<10 then 12330
12324 sys pr,08,23,"{rvon} ** nicht moeglich ** {rvof}":gosub 11100:return
12330 sys pr,00,24,"Neues Sachgebiet eingeben: "chr$(145)
12340 sys in,27,24,12,1,sa$
12344 a=peek(828):if a=136 thensa$="":return
12345 if a=145 or a=17 or sa$="            "then 12340
12350 for i=1 to ii
12360 if sa$=sa$(i) then syspr,00,23,"-- Name existiert schon --":goto 12330
12370 next
12380 ii=ii+1:sa$(ii)=sa$
12390 gosub 10300:rem sachgebiete write
12420 gosub 10200:rem statusdatei anlegen
12430 return
12440 :
12500 rem sachgebiete waehlen ---------
12510 n=0:sa$="":f=0:a=0
12520 if ii=0 then f=1:return
12530 if ii=1 then sa$=sa$(1):return
12534 sys pr,05,4,"Sachgebiete"
12535 sys pr,05,5,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
12536 for i=1 to ii
12537 m$(i)=sa$(i):sp(i)=5:ze(i)=i+5
12538 next:nn=ii
12540 gosub 14500
12545 if x$=chr$(136) then return
12550 sa$=m$(j):return
12630 :
12700 rem sachgebiet loeschen ---------
12710 ko$="{rvon}Sachgebiet loeschen{rvof}":gosub11000:gosub12500
12720 if a=136 then return
12725 a=j:if ii=1 thena=1
12730 gosub 11400:sys pr,1,23,"zu loeschendes Sachgebiet:"sa$(a)
12740 sys pr,10,24,"sicher (j/n)?"chr$(145)
12750 getx$:if x$<>"j"and x$<>"n" then 12750
12760 if x$="n" then a=136:return
12765 gosub 11400:sys pr,3,24,"... "sa$(a)" wird geloescht ..."chr$(145)
12766 open15,8,15,"s:"+sa$(a)+"/s":close15
12767 open15,8,15,"s:?"+sa$(a):close15
12768 open15,8,15,"s:??”+sa$(a):close15
12770 if a=ii then 12810
12780 for i=a to ii-1
12790 sa$(i)=sa$(i+1)
12800 next
12810 ii=ii-1
12820 gosub10300:rem  sachgebiete write
12840 close15:a=136:return
12850 :
13000 rem "Aufgabendiskette einlegen"
13010 sys pr,6,23," Aufgabendiskette einlegen "
13020 for j=1 to 80:next
13030 get x$:if x$<>""then 13070
13040 sys pr,6,23,"{rvon} Aufgabendiskette einlegen {rvof}"
13050 for j=1 to 80:next
13060 goto 13010
13070 gosub11400:return
13080 :
13200 rem ausgabe richtige antwort
13210 jj=0:for j=0 to len(aw$)
13220 if mid$(aw$,len(aw$)-j,1)<>" "then 13240
13230 jj=jj+1:next
13240 aw$=left$(aw$,len(aw$)-jj)
13250 l=len(aw$)+19
13270 return
13280 :
14000 rem menue ***********************
14005 j=1
14010 gosub 14100:syspr,sp(j),ze(j),"{rvon}"m$(j)chr$(145)
14015 get x$
14017 if x$=chr$(13) then 14060
14020 if x$=chr$(133)orx$=chr$(29)orx$=chr$(157)orx$=chr$(136)then14025
14022 if x$<>chr$(17)andx$<>chr$(145)then 14015
14025 if x$=chr$(17)andze(j)=23andj+3<=nn then j=j+3
14026 if x$=chr$(145)andze(j)=24andnn>4then j=j-3
14030 if x$=chr$(133)or x$=chr$(136)then 14060
14040 if x$=chr$(157)then j=j-1:if j=0 then j=nn
14045 if x$=chr$(29)then j=j+1:if j=nn+1 then j=1
14050 goto 14010
14060 return
14070 :
14100 for i=1 to nn
14110 sys pr,sp(i),ze(i),m$(i)chr$(145)
14120 next:return
14500 rem menue ***********************
14505 j=1
14510 gosub 14100:syspr,sp(j),ze(j),"{rvon}"m$(j)chr$(145)
14515 get x$
14518 if x$=chr$(13) then 14560
14520 if x$<>chr$(133)andx$<>chr$(17)andx$<>chr$(145)andx$<>chr$(136)then 14515
14530 if x$=chr$(133)or x$=chr$(136) then 14560
14540 if x$=chr$(145)then j=j-1:if j=0 then j=nn
14545 if x$=chr$(17)then j=j+1:if j=nn+1 then j=1
14550 goto 14510
14560 return
15000 rem druckeranpassung ************
15010 gosub11400
15020 m$(1)=" EPSON ":sp(1)=5:ze(1)=24
15030 m$(2)=" MPS 801 ":sp(2)=23:ze(2)=24:nn=2:gosub14000
15040 d=j:return
16000 rem programmbeschreibung ********
16010 print chr$(147)
16020 print " Mit diesem Programm kann man"
16030 print " {CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
16040 print "  - Pruefungsfragen lernen
16050 print "  - Pruefungsfragen eingeben / aendern"
16060 print "  - Pruefungsfragen ausdrucken
16070 print
16080 print " Es ist besonders fuer programmierte     Fragen geeignet.
16090 print:print
16100 print " Folgendende Tasten werden benutzt:"
16110 print " {CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}":print
16120 print " f1 / RETURN zur Uebernahme von Werten
16130 print "             und Menuepunkten":print
16140 print" f7          zur Rueckkehr zum vorher-               gehenden Pro";:
16150 print "grammteil":print
16160 print " Cursorsteu- zur Anwahl der einzelnen"
16170 print " ertasten    Menuepunkte"
16180 syspr,12,24,"{yel}Zurueck mit f7{lblu}"chr$(145)
16190 get x$:ifx$<>chr$(136)then16190
16200 return
17000 rem kopf ------------------------
17010 print chr$(147);:print tab(1)ko$
17015 if sa$="" then 11020
17016 sys pr,1,1,sa$
17017 sys pr,28,0,"Aufg.Nr.:"n-max+1
17018 sys pr,28,1,"Anzahl  :"n
17020 sys pr,00,02,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"chr$(145)
17021 sys pr,27,0,"{CBM-N}"
17022 sys pr,27,1,"{CBM-N}"
17030 sys pr,00,22,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"chr$(145)
17040 sys pr,00,03,"";
17050 return
17060 :
30000 open 15,8,15
30010 input#15,a,a$
30020 print a,a$
30030 close 15
Listing 1. Das Programm Prüfungsfragen. Beachten Sie die Hinweise zum Abtippen auf Seite 54
PROGRAMM : PRINT OBJ      C000 C01B
-----------------------------------
C000 : 20 FD AE 20 9E B7 86 D3   38
C008 : 20 FD AE 20 9E B7 A4 D3   B8
C010 : 18 20 F0 FF 20 FD AE 4C   BA
C018 : A4 AA FF                  91
Listing 2. PRINT. Diese Routine wird vom Hauptprogramm nachgeladen.
PROGRAMM : IN21 OBJ       C100 C22F
-----------------------------------
C100 : 20 FD AE 20 9E B7 8E E9   84
C108 : 07 20 FD AE 20 9E B7 8E   67
C110 : EB 07 20 FD AE 20 9E B7   1C
C118 : 8E EC 07 AD EC 07 18 6D   D6
C120 : E9 07 8D EA 07 20 FD AE   14
C128 : 20 9E B7 8E ED 07 AC E9   F5
C130 : 07 AE EB 07 18 20 F0 FF   B0
C138 : A9 00 8D EE 07 A5 C6 85   E6
C140 : CC F0 FA 78 A5 CF F0 0C   07
C148 : A5 CE AE 87 02 A0 00 84   1F
C150 : CF 20 13 EA 20 B4 E5 8D   AC
C158 : 3C 03 C9 0D F0 18 C9 91   44
C160 : F0 14 C9 11 F0 74 C9 14   F1
C168 : F0 D3 C9 13 F0 CF C9 85   D6
C170 : 30 07 C9 8D 10 03 4C DA   48
C178 : C1 C9 9D D0 11 C6 D3 A6   83
C180 : D3 EC E9 07 10 B7 AE E9   72
C188 : 07 86 D3 4C 3D C1 C9 1D   94
C190 : D0 0D AE EA 07 CA E4 D3   F2
C198 : F0 A3 E6 D3 4C 3D C1 C9   D7
C1A0 : 2E F0 28 C9 3A F0 96 C9   A3
C1A8 : 20 F0 20 A0 01 CC ED 07   99
C1B0 : 10 03 4C 08 AF D0 03 4C   7C
C1B8 : CB C1 A0 0A A2 30 86 02   97
C1C0 : C5 02 F0 07 E8 88 D0 F6   A7
C1C8 : 4C 3D C1 20 D2 FF AE EA   E5
C1D0 : 07 E4 D3 D0 02 C6 D3 4C   96
C1D8 : 3D C1 AD E9 07 85 D3 20   CB
C1E0 : FD AE 20 8B B0 A6 0D F0   04
C1E8 : 42 85 FB 84 FC AD EC 07   7B
C1F0 : 20 7D B4 A2 02 A0 02 B5   E9
C1F8 : 61 91 FB CA 88 10 F8 A9   BA
C200 : 00 20 BD FF A9 03 A2 03   C3
C208 : A0 FF 20 BA FF 20 C0 FF   0B
C210 : A2 03 20 C6 FF A0 00 20   5A
C218 : CF FF 91 62 C8 CC EC 07   4C
C220 : D0 F5 20 CC FF A9 03 20   26
C228 : C3 FF 60 4C 99 AD FF      4A
Listing 3. Input-Routine
PROGRAMM : BILDSCHIRM OBJ C300 C376
-----------------------------------
C300 : 20 FD AE 20 9E B7 8E E9   84
C308 : 07 20 FD AE 20 9E B7 8E   67
C310 : EB 07 20 FD AE 20 9E B7   1C
C318 : 8E EA 07 20 FD AE 20 9E   F4
C320 : B7 8E EC 07 AC E9 07 AE   CE
C328 : EB 07 18 20 F0 FF A6 D6   F8
C330 : EC EB 07 30 EF A5 C6 85   2C
C338 : CC F0 F3 78 A5 CF F0 0C   3D
C340 : A5 CE AE 87 02 A0 00 84   17
C348 : CF 20 13 EA 20 B4 E5 8D   A4
C350 : 3C 03 C9 85 F0 1E C9 88   69
C358 : F0 1A A6 D6 EC EB 07 10   44
C360 : 03 4C 24 C3 EC EC 07 30   BD
C368 : 05 C6 D6 4C 2E C3 20 D2   37
C370 : FF 4C 2E C3 60 B0         8A
Listing 4. Texteingabe
PROGRAMM : READ10 OBJ     C500 C600
-----------------------------------
C500 : A9 00 85 FA A9 50 85 FB   95
C508 : A2 02 20 C9 FF A9 78 85   27
C510 : FD A9 04 85 FE A2 12 A0   22
C518 : 00 B1 FD 85 FC 29 3F 06   43
C520 : FC 24 FC 10 02 09 80 70   BB
C528 : 02 09 40 91 FA C8 C0 28   3A
C530 : D0 E7 98 18 65 FD 85 FD   75
C538 : 90 02 E6 FE A9 0D 91 FA   A2
C540 : A5 FA 18 69 29 85 FA 90   61
C548 : 02 E6 FB CA D0 C9 EA A9   70
C550 : 00 85 FA A9 50 85 FB A2   6D
C558 : 12 A0 27 B1 FA C9 20 D0   DA
C560 : 03 88 10 F7 A9 0D C8 91   F4
C568 : FA 18 A5 FA 69 29 85 FA   23
C570 : 90 02 E6 FB CA D0 E2 EA   CF
C578 : A9 B9 85 FA A9 52 85 FB   FA
C580 : A0 00 B1 FA C9 0D D0 10   54
C588 : 38 A5 FA E9 29 85 FA A5   85
C590 : FB E9 00 85 FB 4C 82 C5   E8
C598 : 18 A5 FA 69 29 85 FA 90   3A
C5A0 : 02 E6 FB A9 00 91 FA EA   98
C5A8 : A9 00 85 FA A9 50 85 FB   3D
C5B0 : A2 00 A0 00 B1 FA 20 D2   94
C5B8 : FF C9 00 F0 19 C9 0D F0   B0
C5C0 : 05 C8 C0 29 D0 EE 18 A5   AF
C5C8 : FA 69 29 85 FA 90 02 E6   7C
C5D0 : FB E8 E0 12 D0 DC 20 CC   C8
C5D8 : FF 60 A2 02 20 C6 FF A2   6E
C5E0 : 00 A0 00 20 CF FF 20 D2   58
C5E8 : FF C9 0D F0 0C C9 00 F0   1E
C5F0 : 0D C8 C0 28 D0 ED 20 CF   33
C5F8 : FF E8 E0 12 D0 E3 60 B4   FD
Listing 5. Text lesen
PROGRAMM : DRUCKER OBJ    C600 C623
-----------------------------------
C600 : A9 01 A0 C6 A2 21 20 BD   5A
C608 : FF A9 01 A0 0F A6 02 20   9F
C610 : BA FF 20 C0 FF B0 02 A9   CB
C618 : 00 85 02 A9 01 20 C3 FF   B1
C620 : 60 20 B0                  E6
Listing 6. Drucker-Test
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →