10 ! CEMGEN PROGRAM TO GENERATE INDIVIDUALIZED CHEMISTRY ! ! TEST QUESTIONS. PROGRAM ALSO PROVIDES ANSWER ! ! KEY FOR INSTRUCTOR. QUESTIONS ARE ASSOCIATED ! 20 ! WITH STUDENT NAMES IF NAME.FIL EXISTS. ! ! M.L. COLE 11/73 D.E.C. ! 30 PRINT"IF YOU HAVE CREATED A NAME FILE, YOU WILL HAVE TESTS GENERATED" 40 PRINT"SEPARATELY FOR EACH STUDENT. IF NO NAME FILE EXISTS, A DIFFERENT" 50 PRINT"TEST IS GENERATED EACH TIME THE PROGRAM IS RUN. YOU WILL BE GIVEN" 60 PRINT"THE OPPORTUNITY TO SPECIFY AN OUTPUT FILE OR DEVICE FOR BOTH" 70 PRINT"TEST(S) AND ANSWERS." 80 ON ERROR GOTO 4000 100 ! FUNCTION DEFINITIONS ! 101 DEF FNA$(X,Y)=NUM$(X)+', '+NUM$(Y) 102 DEF FNX(X)=RND(0) !GEN NO. BETWEEN 0 AND 1 103 DEF FNV(X)=9.98*RND(0)+.01 !GEN NO. BETWEEN .01 AND 9.99 104 DEF FNW(X)=9*RND(0)+1 !GEN NO. BETWEEN 1 AND 10 200 OPEN 'NAME.FIL' FOR INPUT AS FILE 1 210 OPEN 'TEST.FIL' FOR OUTPUT AS FILE 2 220 OPEN 'ANS.FIL' FOR OUTPUT AS FILE 3 230 PRINT #3,"CEMGEN ANSWER SHEET OUTPUT",DATE$(0):PRINT#3:PRINT#3 235 RANDOMIZE: N%=0% 240 IF V%<>1% THEN GOSUB 5000 !GOTO NAME PRINTING ROUTINE 241 C=0 310 !FIRST QUESTION ! 320 V=FNV(0): N=4 330 Q$(1)="A"+NUM$(V)+"G SAMPLE OF COPPER (AT. WT. 63.54) CONTAINS" 340 Q$(2)="------ GRAM-ATOMS OF COPPER. SINCE EACH GRAM-ATOM OF" 350 Q$(3)="ANY ELEMENT CONTAINS 6.02E23 ATOMS THIS SAMPLE CONTAINS" 360 Q$(4)="------ ATOMS OF COPPER." 370 A1=V/63.54: A2=A1*6.02E23 380 A$=FNA$(A1,A2) 390 GOSUB 7000 400 !SECOND QUESTION ! 410 V=FNV(0):N=3 420 Q$(1)="A"+NUM$(V)+"G SAMPLE OF HYDROGEN CONTAINS ------ GRAM-ATOMS" 430 Q$(2)="OR ------ ATOMS OF HYDROGEN." 440 Q$(3)="(AT. WT. H IS 1.008)" 450 A1=V/1.008: A2=A1*6.02E23 470 A$=FNA$(A1,A2) 480 GOSUB 7000 500 !THIRD QUESTION ! 510 V=FNV(0): N=2 520 Q$(1)="CALCULATE THE NUMBER OF ATOMS CONTAINED IN A SAMPLE OF" 530 Q$(2)="NICKEL (AT. WT. = 58.71) WEIGHING"+NUM$(V)+'G.' 540 A1=V/58.71: A2=A1*6.02E23 550 A$=FNA$(A1,A2) 560 GOSUB 7000 600 !FOURTH QUESTION ! 610 V=FNW(0)*1E5: N=2 620 Q$(1)="WHAT WEIGHT OF IRON (AT. WT. = 55.847) MUST BE MEASURED OUT" 630 Q$(2)="IN ORDER TO HAVE A SAMPLE THAT CONTAINS"+NUM$(V)+"ATOMS?" 640 A1=V/6.02E23: A2=A1*55.85 650 A$=FNA$(A1,A2) 660 GOSUB 7000 700 !FIFTH QUESTION ! 710 V=FNW(0): N=4 720 Q$(1)="IF A SAMPLE CONTAINING"+NUM$(V)+"MOLES OF METHANE WERE" 730 Q$(2)="BURNED ------MOLES OF OXYGEN WOULD BE REQUIRED. -----MOLES" 740 Q$(3)="OF C0(2) AND ------ MOLES OF H(2)0 WOULD BE PRODUCED. FORMULA IS:" 750 Q$(4)="CH(4) + 2O(2) > CO(2) + 2H(2)0" 760 A1=2*V: A2=V 770 A$=FNA$(A1,A2)+', '+NUM$(A1) 780 GOSUB 7000 800 !SIXTH QUESTION ! 810 V=FNW(0): N=4 820 Q$(1)="IF"+NUM$(V)+"G OR ----- MOLE OF ZINC (AT. WT = 65.4)" 830 Q$(2)="IS TO REACT ACCORDING TO THE EQUATION ZN + 2HCL > ZNCL(2) + H(2)" 840 Q$(3)="AT LEAST ------ MOLES OR ------ G OF HCL MUST BE" 850 Q$(4)="PRESENT. (AT. WT. OF HCL IS 36.51)" 860 A1=V/65.4: A2=2*A1: A3=A2*36.51 870 A$=FNA$(A1,A2)+', '+NUM$(A3) 880 GOSUB 7000 900 !SEVENTH QUESTION ! 910 V=FNV(0): W=FNV(0): N=4: IF W=2*V GOTO 910 920 Q$(1)="A"+NUM$(V)+"MOLE SAMPLE OF ZINC IS ALLOWED TO REACT WITH" 930 Q$(2)=NUM$(W)+"G OF HCL. THE REAGENT PRESENT IN EXCESS IS ------." 940 Q$(3)="THE REACTION WILL PRODUCE ------ MOLES OF ZNCL(2) AND ------" 950 Q$(4)="MOLE OF H(2). LEFT UNREACTED IS ------ G OF ------." 960 IF W>2*V THEN B$='HCL' ELSE GOTO 1010 970 A1=V: A2=V: A3=((W/36.5)-2*V)*36.5 1000 GOTO 1020 1010 A1=.5*W: A2=.5*W: A3=(V-(.5*W))*65.4: B$='ZN' 1020 A$=B$+', '+FNA$(A1,A2)+', '+NUM$(A3)+', '+B$ 1030 GOSUB 7000 1100 !EIGHTH QUESTION ! 1110 V=FNV(0):N=2 1120 Q$(1)="CALCULATE THE NUMBER OF BROMINE ATOMS IN A SAMPLE OF" 1130 Q$(2)="FEBR(3) WEIGHING"+NUM$(V)+"G. (AT. WT. FE=55.8; BR=79.9)" 1140 A1=V/295.5: A2=A1*3*6.02E23 1150 A$=NUM$(A2) 1160 GOSUB 7000 1200 !NINTH QUESTION ! 1210 V=FNX(0): W=FNV(0): N=4 1220 Q$(1)="OXYGEN REACTS WITH AMMONIA ACCORDING TO THE EQUATION:" 1230 Q$(2)="4NH(3) + 7O(3) > 4NO(3) + 6H(2)O IF"+NUM$(V)+"MOLE" 1240 Q$(3)="OF O(2) IS ALLOWED TO REACT IN"+NUM$(W)+"G OF NH(3) HOW" 1250 Q$(4)="MANY MOLECULES OF NO(2) ARE PRODUCED? (AT. WT. N=14; O=16; H=1.01)" 1260 A1=W/17: A2=(4/7)*V: IF V>A2 GOTO 1300 !MORE O(2) 1270 A3=A1*6.02E23: GOTO 1310 1300 A3=A2*6.02E23 1310 A$=NUM$(A3) 1320 GOSUB 7000 1400 !TENTH QUESTION ! 1410 V=FNV(0): N=5 1420 Q$(1)="WHAT WEIGHT OF NA(2)CO(3) WOULD BE NEEDED TO REACT" 1430 Q$(2)=NUM$(V)+"MOLE OF HCL ACCORDING TO THE EQUATION :" 1440 Q$(3)="NA(2)CO(3) + 2HCL > 2NACL + H(2)0 + CO(2)" 1450 Q$(4)="------MOLES NA(2)CO(3)? ------WEIGHT NA(2)CO(3)?" 1460 Q$(5)="(AT. WT. NA=23; C=12; O=16; H=1.01; CL=35.5)" 1470 A1=.5*V: A2=A1*106 1480 A$=FNA$(A1,A2) 1500 GOSUB 7000 1600 IF V%=1% GOTO6000 1610 GOSUB 5000 1620 GOTO 241 4000 ! ERROR HANDLING ROUTINE ! 4010 IF ERR=5 THEN V%=1%: IF ERR=5 THEN RESUME 210 4020 IF ERR=11 AND ERL=6070 THEN RESUME 6090 4030 IF ERR=11 AND ERL=6130 THEN RESUME 6160 4040 RESUME 0 5000 ! NAME PRINTING ROUTINE ! 5010 INPUT #1, L$,F$:IF L$='END' GOTO 6000 5015 PRINT #2,CHR$(12): N%=N%+1 5020 PRINT #2,'TEST GENERATED FOR ';F$;' ';L$;TAB(60);DATE$(0) 5030 PRINT #3, F$+' '+L$;' ANSWERS' 5040 PRINT #2: PRINT#2 5050 RETURN 6000 !CLOSES NAME.FIL, TEST.FIL, ANS.FIL! 6010 IF V%<>1% THEN CLOSE 1 6020 IF V%<>1% THEN PRINT#3,N%;' TESTS GENERATED FOR ';N%;' STUDENTS' 6030 CLOSE 3,2 6039 ! OUTPUT TEST(S) ! 6040 PRINT: PRINT: PRINT 6050 INPUT "TEST OUTPUT DEVICE (KB: OR LP: OR FILE.NAM)";D$ 6055 OPEN 'TEST.FIL' FOR INPUT AS FILE 2 6060 OPEN D$ FOR OUTPUT AS FILE 4 6070 INPUT LINE #2,L$ 6080 PRINT #4, L$; 6085 GOTO 6070 6090 CLOSE 2,4 6099 ! OUTPUT ANSWER KEY ! 6100 INPUT "ANSWER KEY OUTPUT DEVICE (KB: OR LP: OR FILE.NAM)";D$ 6110 OPEN 'ANS.FIL' FOR INPUT AS FILE 3 6120 OPEN D$ FOR OUTPUT AS FILE 4 6130 INPUT LINE #3,L$ 6140 PRINT #4, L$; 6150 GOTO 6130 6160 CLOSE 3,4 6170 KILL 'TEST.FIL': KILL 'ANS.FIL' 6180 IF V%=1% THEN INPUT "DO YOU WANT ANOTHER TEST (Y OR N)";T$ 6185 IF T$='Y' GOTO210 6190 GOTO 32767 7000 ! ROUTINE TO OUTPUT QUESTIONS AND ANSWERS ! 7005 C=C+1 7006 PRINT #2, C;') '; 7010 FOR I=1 TO N 7020 PRINT #2,Q$(I) 7030 NEXT I 7040 PRINT #2: PRINT #2: PRINT#2 7050 PRINT #3, C;') ';A$ 7070 RETURN 32767 END