Classic Computer Magazine Archive COMPUTE! ISSUE 26 / JULY 1982 / PAGE 142

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