An ATARI Learning Program
Language Lab
Steve Steinberg
Washington, DC
In the May issue of COMPUTE!, Steve Steinberg's article "Language Lab" was inadvertently published with the wrong program accompanying it. It is reprinted here in its entirety.
Language Lab is a program to use your ATARI to help you build vocabulary in a foreign language. It is basically a computerized version of that old standby of language education, the flash card set, and I have found it extremely simple and effective to use. It is structured so that you can drill and score yourself on as many words as you like, but I find it most useful if you display a fifteen or twenty word vocabulary drill on the screen, spot the errors and review them, then try again. If you have enough memory, you can also use it to create a fair sized foreign language dictionary.
I have used a handful of French words in the program example but you can easily change this to any language you want. Simply change line 55 LANG$ = "FRENCH" to LANG$ = "GERMAN", "SPANISH", "NAVAJO" or whatever you like and enter the appropriate word pairs in DATA.
The DATA, beginning on line 1000 is easy to expand as your language skill increases and can be used in conjunction with either a self teaching or school language course. Just enter the DATA in word pairs, the first in English, the second in whatever language you are working with.
The key to the vocabulary drills is the random word subroutine, lines 500 through 550. In line 510 X = (1 + INT(RND(1)*25)) the 25 is equal to the number of word pairs entered as DATA. As you increase the number of word pairs by adding new DATA this number should also be appropriately increased. You can also alter this line to drill yourself on only part of your total foreign language vocabulary.
Let's assume, for example, that you have 600 word pairs in DATA but only want to drill yourself on the last 100 words you have entered. In that case, change line 510 to X = (500 + INT(RND(1)*100)).
Lines 160, 180, 260, 280, 330 and 430 use the ATARI cursor advance and line "up" arrow keys to provide a format that will display as much of your language drill or translations on the screen at one time as possible, but you can replace these with just "PRINT" statements if you prefer. This would be useful if you want to use the program for drill and translation of whole phrases and sentences instead of just single words. Don't forget, however, to increase the size of the appropriate string dimensions (ENGLISH $, WORD $, TRANSLATE $) in line 50.
One final note; if you happen to own IRIDIS 2 (and if you have an ATARI computer I don't think you can find a better bargain in software) you can easily add the appropriate subroutine to use Language Lab for Russian, Greek, Hebrew or whatever you wish by adding the foreign alphabet in lower case. I am currently using the program to teach myself Classical Greek. I hope this program will be useful for budding language students and in any case good luck with it, bon chance, and auf wedersehen.
40 REM LANGUAGE LAB 41 REM 45 REM BY STEVE STEINBERG 50 DIM LANG $(15), ENGLISH $(20), WORD $(20), TRANSLATE $(20), Q$(2) 55 LANG $ = "FRENCH" 60 PRINT "{CLEAR}" = PRINT " ";LANG $;" LANGUAGE LAB" 65 PRINT : PRINT 70 PRINT "1) " ; LANG $;" TO ENGLISH VOCABULARY DRILL" 75 PRINT : PRINT "2) ENGLISH TO " ;LANG $;" VOCABULARY DRILL" 80 PRINT : PRINT "3) ";LANG $;" TO ENGLISH TRANSLATOR" 85 PRINT : PRINT "4) ENGLISH TO ";LANG $;" TRANSLATOR" 90 PRINT : PRINT "ENTER NUMBER OF DESIRED PROGRAM"; : INPUT CHOICE : IF CHOICE > 4 THEN GOTO 90 95 GOTO CHOICE * 100 100 REM LANGUAGE TO ENGLISH DRILL 110 PRINT : PRINT : PRINT "HOW MANY WORDS" ; : INPUT N : COUNT = 0 : SCORE = 0 120 ? "{CLEAR}" : ? "TRANSLATE THE FOLLOWING WORDS INTO ENGLISH" : PRINT 125 GOSUB 500 130 IF COUNT = N THEN GOSUB 600 135 IF COUNT = N THEN GOTO 100 140 PRINT WORD$,150 INPUT TRANSLATE$, 160 IF TRANSLATE$ = ENGLISH$ THEN SCORE = SCORE + 1 : COUNT = COUNT + 1 : PRINT "{UP} {30 RIGHT} CORRECT" 170 IF TRANSLATE$ = ENGLISH$ THEN GOTO 125 180 IF TRANSLATE$ <> ENGLISH$ THEN COUNT = COUNT + 1 : PRINT "{UP}{11 RIGHT} WRONG! IT'S "; ENGLISH$ : GOTO 125 200 REM ENGLISH TO LANGUAGE DRILL 210 PRINT : PRINT : PRINT "HOW MANY WORDS"; : INPUT N : COUNT = 0 : SCORE = 0 220 ? "{CLEAR}" : ? "TRANSLATE THE FOLLOWING WORDS INTO" LANG$ : PRINT 225 GOSUB 500 230 IF COUNT = N THEN GOSUB 600 235 IF COUNT = N THEN GOTO 200 240 PRINT ENGLISH$, 250 INPUT TRANSLATE$, 260 IF TRANSLATE$ = WORD$ THEN SCORE = SCORE + 1 : COUNT = COUNT + 1 : PRINT {UP} {30 RIGHT} CORRECT" 270 IF TRANSLATE$ = WORD$ THEN GOTO 225 280 IF TRANSLATE$ <> WORD$ THEN COUNT = COUNT + 1 : PRINT "{UP}{11 RIGHT} WRONG! IT'S " ; WORD$ : GOTO 225 300 ? "{CLEAR}" : PRINT LANG$; "TO ENGLISH TRANSLATOR" : PRINT : PRINT "ENTER"; LANG$; "WORD" 310 ? : INPUT TRANSLATE$ 320 READ ENGLISH$, WORD$ 330 IF WORD$ = TRANSLATE$ THEN PRINT "{UP} {15 RIGHT}"; : PRINT ENGLISH$ : RESTORE : GOTO 410 340 IF ENGLISH <> TRANSLATE$ THEN GOTO 320 400 ? "{CLEAR}" : PRINT "ENGLISH TO"; LANG$; "TRANSLATOR" : PRINT : PRINT "ENTER ENGLISH WORD" 410 ? : INPUT TRANSLATE$ 420 READ ENGLISH$, WORD$ 430 IF ENGLISH$ = TRANSLATE$ THEN PRINT "{UP}{15 RIGHT}"; : PRINT WORD$ : RESTORE : GOTO 410 440 IF WORD$ <> TRANSLATE$ THEN GOTO 420 500 REM RANDOM WORD SUBROUTINE 510 X = (1 + INT(RND(1) * 25)) 520 RESTORE 530 FOR M = 1 TO X : READ ENGLISH$, WORD$ 540 NEXT M 550 RETURN 600 REM SCORE SUBROUTINE 610 PRINT : PRINT "OUT OF"; N ; " VOCABULARY WORDS YOU HAVE CORRECTLY TRANSLATED"; SCORE ; "." 620 PRINT : PRINT "YOUR SCORE IS"; INT(SCORE * 100/N)) ; "PER CENT" 630 PRINT : PRINT "GO AGAIN (Y OR N)"; : INPUT Q$ : IF Q$ = "Y" THEN RETURN 640 IF Q$ = "N" THEN END 1000 DATA ONE, UN, TWO, DEUX, THREE, TROIS, FOUR, QUATRE, RED, ROUGE, BLUE, BLEU, GREEN, VERT, MAN, HOMME, CHILD, ENFANT 1010 DATA HAT, CHAPEAU, PENCIL, CRAYON, HAM, JAMBON, EGG, OEUF, CITY, VILLE, COUNTRY, PAYS, OF, DE, UNDER, SOUS, MONDAY, LUNDI 1020 DATA TUESDAY, MARDI, WEDNESDAY, MERCREDI, SATURDAY, SAMEDI, SUNDAY, DIMANCHE, YES, OUI, NO, NON, OLD, ANCIEN