Batuketak

Arrojeria, Eustakio

Elhuyar Zientziaren Komunikazioa

Lizaso, Pili

Informatika Saila

Elhuyar Fundazioa

Hona hemen matematikan ikasten den lehen eragiketa: BATUKETA. Garai bateko irakasteko sistemaren arabera alabeharrez buruz ikasi behar izaten zen eta nekez bederen ikasten zen.

Programaren zatiak

Gaur egun berriz, irakasteko era aldatu den arren gauza bera lortu nahi da, baina era alaiagoan. Askotan edo ia kasu gehienetan, lan hau irakasleen esku uzten den zerbait da. Eta gurasoek zer? Pertsona helduagoek zer?

Hasierak edozein zaletasunerako ezinbesteko garrantzia izaten du. Lehen topaketak beti izaten du pertsonengan eragina.

Guzti hau zertarako? galdetuko du irakurle batek baino gehiagok. Ba, erantzuna erraza da. Guzti hau, ordenadorearen aroari ekin zaion belaunaldi honetan, jolastuz ikas daitekeela azaltzeko.

Batzuentzat ordenadorearen erabilpena jolasetara muga badaiteke ere, beste askorentzat lan-tresna bilakatzen da. Beste batzuentzat berriz, jolas-moduan irakasteko tresna egoki. Hau da guk gaur programa honekin azaldu nahi duguna. Ordenadorea ez da martzianoz beteriko etxe bat bakarrik. Baditu (hori azaltzen ahalegindu gara bederen orain arte) beste erabilpen batzuk ere.

Honek, froga txiki bat besterik ez du izan nahi.

Demostrazio bat da, zuk (guraso, pertsona heldu, ...) haur bat batuketak lantzeko laguntza eske hurbiltzen zaizunean pikotara bidali beharrean berari lagunduz biok une alaia pasatu ahal izateko.

10 REM BATUKETAK
20 KEY OFF:SCREEN 2:SCREEN 0:COLOR 2
30 DIM BAT$(17),ZENB$(6)
40 LOCATE 12,20:COLOR 2:PRINT “Kaixo, ongi etorria programa honetara!!!”:
FOR I=1 TO 3000:NEXT I
50 CLS:COLOR 2:RANDOMIZE TIMER
60 LOCATE 1,36:PRINT “BATUKETAK”:LOCATE 2,36:COLOR 3:PRINT “=========”:COLOR 2
70 LOCATE 9,7:PRINT “Batugaien digitu-kopurua (3-15):”;:COLOR 4:BEEP:
INPUT “ “,N1$:N1=VAL(N1$)
80 IF N1 3 OR N1 15 THEN COLOR 3:LOCATE 21,7:
PRINT “3tik 15era bitartekoa izan behar du!”:LOCATE 11,7:PRINT SPC(70):
LOCATE 11,7:COLOR 2:GOTO 70
90 LOCATE 21,7:PRINT SPC(70)
100 COLOR 2:LOCATE 13,7:PRINT “Batugai-kopurua (2-6):”;:COLOR 4:BEEP:
INPUT “ “,N2$:N2=VAL(N2$)
110 IF N2 2 OR N2 6 THEN COLOR 3:LOCATE 21,7:
PRINT “2tik 6ra bitartekoa izan behar du!”:LOCATE 15,7:PRINT SPC(70):
LOCATE 15,7:GOTO 100
120 MAX=0:FOR J=1 TO 6:ZENB$(J)=””:NEXT J:GA=0
130 FOR I=1 TO N2:DIG=INT(RND*(N1-3))+3
140 IF DIG MAX THEN MAX=DIG
150 FOR J=1 TO DIG:D=INT(RND*10)
160 IF D=0 AND I=DIG THEN 180
170 ZENB$(I)=RIGHT$(STR$(D),1)+ZENB$(I)
180 NEXT J
190 N1=MAX
200 NEXT I
210 CLS:LOCATE 1,36:COLOR 2:PRINT “BATUKETAK”:COLOR 3:LOCATE 2,36:
PRINT “=========”
220 COLOR 2:FOR I=1 TO N2:LOCATE 7+I,54-LEN(ZENB$(I))*2:FOR J=1 TO LEN(ZENB$(I))
:PRINT MID$(ZENB$(I),J,1);” “;:NEXT J:NEXT I
230 COLOR 10:LOCATE 8+N2,51-N1*2:PRINT STRING$(N1*2+2,45)
240 BAT$=””:SAR$=””
250 FOR I=1 TO 17:BAT$(I)=””:NEXT I
260 FOR I=N1 TO 0 STEP -1
270 FOR J=1 TO N2:LOCATE 7+J,52-(N1-I-1)*2:COLOR 2:IF (N1-I) =LEN(ZENB$(J))
THEN PRINT MID$(ZENB$(J),LEN(ZENB$(J))-(N1-I-1),1)
280 LOCATE 7+J,52-(N1-I)*2:COLOR 10:IF (N1-I) LEN(ZENB$(J)) THEN
PRINT MID$(ZENB$(J),LEN(ZENB$(J))-(N1-I),1)
290 NEXT J
300 IF I=0 AND BAT$(1) “10” THEN 610
310 BAT$(I)=RIGHT$(STR$(BUR),1)
320 FOR J=1 TO N2
330 IF LEN(ZENB$(J)) N1-I THEN
BAT$(I)=STR$(VAL(BAT$(I))+VAL(MID$(ZENB$(J),LEN(ZENB$(J))-(N1-I),1)))
340 NEXT J
350 BUR=VAL(LEFT$(BAT$(I),LEN(BAT$(I))-1)):BAT$=RIGHT$(BAT$(I),1)+BAT$
360 LOCATE 9+N2,52-(N1-I)*2:COLOR 5:PRINT “\”;CHR$(29);
370 TE$=” “:WHILE ASC(TE$) 48 OR ASC(TE$) 57:TE$=INKEY$:IF TE$=”” THEN TE$=” “
380 WEND:SOUND 2000,.8
390 PRINT TE$
400 IF TE$=RIGHT$(BAT$(I),1) THEN 460
410 LOCATE 21,7:COLOR 3
420 PRINT “Seguru al zaude “;TE$;” sartu nahi duzula (B/E)?”:T$=” “
430 WHILE T$ ”B” AND T$ ”b” AND T$ ”E” AND T$ ”e”:T$=INKEY$:WEND
440 LOCATE 21,7:PRINT SPC(70)
450 IF T$=”E” OR T$=”e” THEN 360
460 SAR$=TE$+SAR$
470 IF BUR=0 AND I =1 THEN 610
480 COLOR 3:LOCATE 21,7:PRINT “Bururakorik ez baduzu 0 sartu.”
490 COLOR 5:LOCATE 7,52-(N1-I+1)*2:PRINT “\”;CHR$(29); 500 TE$=” “
510 WHILE ASC(TE$) 48 OR ASC(TE$) 57
520 TE$=INKEY$:IF TE$=”” THEN TE$=” “
530 WEND
540 SOUND 2000,.8:PRINT TE$:LOCATE 21,7:PRINT SPC(70)
550 IF VAL(TE$)=BUR THEN 610
560 LOCATE 21,7:COLOR 3
570 PRINT “Ziur al zaude “;TE$;” sartu nahi duzula (B/E)?”:T$=” “
580 WHILE T$ ”B” AND T$ ”b” AND T$ ”E” AND T$ ”e”:T$=INKEY$:WEND
590 SOUND 2000,.8:LOCATE 21,7:PRINT SPC(70)
600 IF T$=”E” OR T$=”e” THEN 480
610 NEXT I
620 COLOR 3
630 IF BAT$=SAR$ THEN LOCATE 21,7:PRINT “ONGI!!! Batuketa ongi egin duzu.”:
FOR I=1 TO 1000:NEXT I:GOTO 710
640 GA=GA+1:LOCATE 21,7:PRINT “GAIZKI!!!”
650 FOR I=LEN(BAT$) TO 1 STEP -1
660 IF MID$(BAT$,I,1) MID$(SAR$,I,1) THEN COLOR 13:
LOCATE 9+N2,52-(LEN(BAT$)-I)*2:PRINT MID$(SAR$,I,1)
670 NEXT I
680 COLOR 3
690 IF GA=1 THEN LER$=”Aproba ezazu berriro.”
ELSE LER$=”Batuketa honekin zailtasunak izan dituzu.”
700 LOCATE 21,17:PRINT LER$:LOCATE 23,29:PRINT “Jarraitzeko J sakatu.”:BEEP: TE$=””:WHILE TE$ ”J” AND TE$ ”j”:TE$=INKEY$:WEND:LOCATE 23,30:
PRINT SPC(40):IF GA=1 THEN 210 ELSE 720
710 LOCATE 23,29:PRINT “Jarraitzeko J sakatu.”:BEEP:TE$=””:WHILE TE$ ”J” AND TE$ ”j”:TE$=INKEY$:WEND
720 LOCATE 21,7:PRINT SPC(70):LOCATE 23,7:PRINT SPC(70)
730 LOCATE 21,17:PRINT “Beste batuketarik egin nahi al duzu (B/E)?”
740 TE$=””:WHILE TE$ ”B” AND TE$ ”b” AND TE$ ”E” AND TE$ ”e”:TE$=INKEY$:WEND
750 IF TE$=”B” OR TE$=”b” THEN 50
760 CLS:LOCATE 13,27:COLOR 2:PRINT “A G U R !!! Beste bat arte.”
770 FOR I=1 TO 2000:NEXT I:CLS
780 END
790 REM AMAIA BATUKETAK

  • 60-110: Batuketen zailtasun-maila aukeratu, hots, batugaien digitu-kopurua eta batugai-kopurua.
  • 120-200: Zenbakiak aleatorioki atera; lehenbizi zenbaki edo batugai bakoitzak izango duen digitu-kopurua eta ondoren digitu hauetako bakoitza, ezkerreko digituak Ø baino handiagoa izan beharko duelarik.
  • 210-230: Batuketa pantailan azaldu.
  • 260-610: Batuketa egin.
  • 270-290: Eskuinetik hasita une bakoitzean batzen ari garen zutabea kolore desberdinez nabarmenduko da, aurretik nabarmenduta zeudenak normal jarriz.
  • 310-350: Uneko zutabeko batura partziala lortzeko lehendik bururako zegoena hartuko da lehenik, ondoren zenbaki bakoitzak posizio horretan duen digitua (baldin badu) gehituz.
    Lortutako emaitzak digitu bat baino gehiago baditu, hots, 10 baino handiagoa bada, ezkerreko digituak bururako gorde beharko ditugu.
  • 360-600: Lehenengo beheko zenbakia eskatuko zaizu eta ondoren bururakoa. Bururako ezer ez baduzu, Ø sartu beharko duzu.
    Horrela jarraituko da ezkerreko zutabera iritsi arte.
  • 630: Ordenadoreak kalkulatutako emaitza (BAT$) eta zuk sartutakoa (SAR$) konparatu ondoren, ongi ala gaizki egin duzun adieraziko zaizu.
  • 650-670: Batura zuzena ez bada, gaizki dagoen zenbaki bakoitza kolorez aldatuko da.
  • 690-760: Batuketa bakoitzeko bi saio posible izango dituzu.

OHARRAK:

  1. Ohartuko zinen zenbakiak aleatorioki ateratzerakoan digituz digitu egin dugula. Zergatik hori?
    Ordenadoreek badute muga bat. Muga hortik gorako zenbakiak notazio esponentzialean idazten ditu eta nahiz eta kalkuluak burutzeko arazorik izan ez, zenbakiak pantailan agertzeko garaian eta batuketa pausoz pauso egiterakoan zailtasunak genituen. Beraz, karaktere-katea bezala tratatu behar izan ditugu.
  2. Batugaien digitu-kopuruaren eta batugai-kopuruaren mugak alda daitezke, beti ere pantailaren neurriak kontuan izanik, noski. Horretarako 30, 70, 80, 100, 110, 120 eta 250 lerroetan aldatu beharko dira.
    Kontuan izan batura gordetzeko erabiltzen den taulak digitu-kopuru maximoa baino handiagoa izan behar duela.
Babesleak
Eusko Jaurlaritzako Industria, Merkataritza eta Turismo Saila