Programowanie na kalkulatorze CASIO fx-9860 - Instytut Matematyki ...
Programowanie na kalkulatorze CASIO fx-9860 - Instytut Matematyki ...
Programowanie na kalkulatorze CASIO fx-9860 - Instytut Matematyki ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Jak wykorzystywać kalkulator programowany<br />
do wspomagania <strong>na</strong>uczania algorytmiki <strong>na</strong><br />
poziomie szkolnym, <strong>na</strong> przykładzie<br />
kalkulatora <strong>fx</strong>-<strong>9860</strong>?<br />
Edward Bryniarski<br />
Uniwersytet Opolski<br />
<strong>Instytut</strong> <strong>Matematyki</strong> i Informatyki<br />
edlog@uni.opole.pl<br />
http://www.math.uni.opole.pl/~ebryniarski
Uwagi dydaktyczne<br />
1. Nauka programowania w języku Basic moŜe być realizowa<strong>na</strong> <strong>na</strong> kalkulatorach<br />
programowanych firm:<br />
• <strong>CASIO</strong> - np. <strong>CASIO</strong> ClassPad 300, czy kalkulator graficzny <strong>fx</strong>-<strong>9860</strong>,<br />
• HEWLETT PACKARD – np. HP 49,<br />
• TEXAS INSTRUMENT – np. TI 89.<br />
2. Jest bardzo skutecznym, nie wymagającym korzystania z pracowni<br />
komputerowej, a więc tanim, środkiem zwiększenia efektywności i<br />
uatrakcyjnienia <strong>na</strong>uczania algorytmiki, a takŜe przygotowania do opanowania<br />
arkusza kalkulacyjnego, <strong>na</strong> poziomie szkoły podstawowej i gim<strong>na</strong>zjum.
Uwagi dydaktyczne<br />
1. Opanowanie elementów programowania <strong>na</strong> dostępnych dla ucznia kalkulatorach<br />
pozwala teŜ wykorzystywać je <strong>na</strong> lekcjach matematyki i <strong>na</strong> zajęciach<br />
pozalekcyjnych.<br />
2. WaŜne jest to, Ŝe uczeń dysponujący własnym komputerem IBM PC moŜe<br />
indywidualnie programować korzystając z emulatorów kalkulatorów, po<strong>na</strong>dto<br />
moŜe przenosić <strong>na</strong> obsługę kalkulatora część sprawności uzyskanych w<br />
posługiwaniu się systemem Windows, telefonem komórkowym i innymi<br />
urządzeniami programowanymi, co z<strong>na</strong>cznie przyspiesza uczenie się<br />
programowania.
Uwagi dydaktyczne<br />
1. Nauka programowania <strong>na</strong> <strong>kalkulatorze</strong> pozwala takŜe rozwijać sprawności<br />
poŜyteczne w <strong>na</strong>uce programowania i posługiwaniu się bardziej<br />
zaawansowanymi urządzeniami programowani (np. robotami, sterowniami<br />
urządzeń energetycznych, itp.). Kształtowane są takŜe takie pojęcia jak rejestr,<br />
zmien<strong>na</strong>, efektyw<strong>na</strong> struktura obliczeń wyraŜenia arytmetycznego.<br />
2. PoniewaŜ do <strong>na</strong>jtańszych <strong>na</strong> rynku kalkulatorów programowanych <strong>na</strong>leŜy<br />
kalkulator <strong>CASIO</strong> <strong>fx</strong>-<strong>9860</strong>G, rozwaŜymy tu moŜliwość wykorzystania go do<br />
wspomagania <strong>na</strong>uczania algorytmiki <strong>na</strong> poziomi szkolnym.
Minimum sprawności wymagane do<br />
programowania <strong>na</strong> <strong>kalkulatorze</strong> <strong>fx</strong>-<strong>9860</strong><br />
• Uruchamianie aplikacji program<br />
• Korzystanie z ok<strong>na</strong> programu ładującego<br />
• Obsługa edytora programów<br />
• Tworzenie nowego lub poprawianie starego programu –<br />
etapy<br />
• Zarządzanie plikami, tj. zmiennymi rejestrującymi<br />
programy
Trochę historii<br />
1961 r. – Na Leningrackim Uniwersytecie<br />
w Związku Radzieckim zostaje<br />
skonstruowany pierwszy <strong>na</strong> świecie<br />
kalkulator z klawiaturą i wyświetlaczem o<br />
<strong>na</strong>zwie EKVM, pozwalający <strong>na</strong><br />
programowanie obliczeń w języku<br />
rejestrów, w oparciu o proste funkcje. W<br />
1964 roku rozpoczy<strong>na</strong> się produkcja tego<br />
kalkulatora o <strong>na</strong>zwie EKVM “Vega” . W<br />
1967 moŜliwości tego kalkulatora zostają<br />
rozszerzone o definiowanie funkcji w<br />
oparciu o funkcje trygonometryczne.
Trochę historii<br />
1967 r. – Firma MONROE<br />
wypuszcza pierwszy <strong>na</strong> świecie<br />
kalkulator EPIC 2000 w pełni<br />
programowany, realizujący<br />
instrukcje warunkowe i<br />
instrukcje skoku. Kalkulator ten<br />
jest wyposaŜony w drukarkę.<br />
Ze względu <strong>na</strong> rozmiary,<br />
porównywalne z maszyną do<br />
pisania, nie moŜ<strong>na</strong> go uz<strong>na</strong>ć za<br />
“kieszonkowy”.
Trochę historii<br />
W latach siedemdziesiątych podobne konstrukcje<br />
kalkulatorów programowanych opracowywane są przez<br />
firmy: Addo-X, Sumlock Comptometer (Anita),<br />
Brother, Burroughs, Busicom, Canon, Cintra, Casio,<br />
Commodore, Compucorp, Deitzgen, Dero, Diehl,<br />
Denon, Elka, Facit, Friden/Singer, Hewlett Packard,<br />
Hitachi, Industria Macchine Elettroniche (IME),<br />
Iskra, MITS, Monroe/Litton, NCR, Oi Electric,<br />
Olivetti, Olympia, Philips, Ricoh, Sanyo, SCM<br />
(Smith-Coro<strong>na</strong> Marchant), Seiko, Sharp, Soemtron,<br />
Sony, Sperry/Remington Rand, Tektronix, Toshiba,<br />
Victor, Walther, Wang, or Wyle Labs.
Trochę historii<br />
1977/1978 r. – W Związku Radzieckim<br />
przedsiębiorstwo “Elektronika”<br />
rozpoczy<strong>na</strong> produkcję kieszonkowego<br />
kalkulatora programowanego B3-21<br />
(Rys. poniŜej, z lewej). Jego ulepszone<br />
wersje B3-34, MK-46, MK-64 z roku<br />
1980 umoŜliwiają pisanie w języku<br />
rejestrów bardzo zaawansowanych<br />
numerycznie programów (całkowanie,<br />
rozwiązywanie rów<strong>na</strong>ń róŜniczkowych).<br />
Kalkulator uŜywany jest nie tylko przez<br />
<strong>na</strong>ukowców i inŜynierów, ale takŜe przez<br />
uczniów szkół, <strong>na</strong>wet odbywają się<br />
olimpiady programowania <strong>na</strong><br />
<strong>kalkulatorze</strong>.
Trochę historii<br />
Rysunek z prawej strony<br />
przedstawia bardzo popularny<br />
w Polsce, w drugiej połowie<br />
lat siedemdziesiątych XX w.,<br />
kalkulator programowany<br />
COMPUCORP BETA 326<br />
SCIENTIST z pamięcią<br />
kasetową COMPUCORP 392.
Wskazówki uŜyteczne w posługiwaniu się<br />
edytorem języka programowania Basic<br />
dla kalkulatora <strong>fx</strong>-<strong>9860</strong><br />
1. Uruchomienie edytora: <strong>na</strong>ciskamy klawisz [MENU], a <strong>na</strong>stępnie <strong>na</strong>ciskając odpowiednio<br />
strzałeczki <strong>na</strong> klawiszu [REPLAY] przechodzimy kursorem do ikony o <strong>na</strong>zwie „PRGM” i<br />
<strong>na</strong>ciskamy [EXE], przechodząc automatycznie do akcji <strong>na</strong>dawania <strong>na</strong>zwy pierwszemu<br />
programowi lub do Program List (listy programów).<br />
2. Nadanie <strong>na</strong>zwy nowemu programowi: zarówno, gdy jest to pierwszy program, jak gdy<br />
pokazuje się <strong>na</strong> ekranie (wyświetlaczu kalkulatora) Program List, do <strong>na</strong>dania <strong>na</strong>zwy<br />
programowi słuŜy klawisz [F3]; <strong>na</strong>zwa jest zmienną rejestrującą program, dlatego składa się<br />
z co <strong>na</strong>jwyŜej z ośmiu z<strong>na</strong>ków – duŜych liter lub cyfr, a zaczy<strong>na</strong> się z duŜej litery; cyfry<br />
uzyskujemy bezpośrednio z klawiatury, <strong>na</strong>ciskając klawisz ze z<strong>na</strong>kami cyfr, <strong>na</strong>tomiast duŜe<br />
litery uzyskujemy <strong>na</strong>ciskając klawisz [ALPHA] a <strong>na</strong>stępnie klawisz, <strong>na</strong>d którym figuruje<br />
da<strong>na</strong> litera; po <strong>na</strong>daniu <strong>na</strong>zwy programowi zatwierdzamy ją klawiszem [EXE], przechodząc<br />
w ten sposób od razu do redakcji programu.
Wskazówki uŜyteczne w posługiwaniu się<br />
edytorem języka programowania Basic<br />
dla kalkulatora <strong>fx</strong>-<strong>9860</strong><br />
1. Redakcja programu: kaŜdy ekran edytora zawiera dolny pasek menu podzielony <strong>na</strong> sześć<br />
pól, z których kaŜde moŜe być uaktywniane, począwszy od pierwszego pola z lewej strony,<br />
odpowiednio klawiszami operacyjnymi [F1], ..., [F6]; klawisz [F6] słuŜy takŜe do zmiany<br />
opcji menu, gdy w menu jest więcej niŜ sześć opcji; Ŝadne słowo kluczowe języka Basic nie<br />
moŜe być wpisane za pomocą liter i cyfr, w tym celu <strong>na</strong>leŜy <strong>na</strong>jpierw <strong>na</strong> dole ekranu wywołać<br />
pasek menu za pomocą klawiszy [SHIFT][VARS] (<strong>na</strong>d klawiszem [VARS] jest<br />
<strong>na</strong>prowadzający <strong>na</strong>pis PRGM); ta uwaga dotyczy takŜe <strong>na</strong>zw funkcji i operacji, które<br />
od<strong>na</strong>jdujemy przechodząc <strong>na</strong> pierwszym ekranie edycji programu do opcji MENU za pomocą<br />
klawisza [F4]; moŜemy takŜe kaŜde słowo kluczowe, w tym <strong>na</strong>zwy funkcji i operacji, języka<br />
Basic dla kalkulatora <strong>CASIO</strong> <strong>fx</strong>-<strong>9860</strong>, uzyskać z listy osiągalnej klawiszami [SHIFT][4]<br />
(<strong>na</strong>d klawiszem [4] jest <strong>na</strong>prowadzający <strong>na</strong>pis CATALOG), wybieramy wtedy kursorem<br />
dany <strong>na</strong>pis i zatwierdzamy klawiszem [EXE].
Wskazówki uŜyteczne w posługiwaniu się<br />
edytorem języka programowania Basic<br />
dla kalkulatora <strong>fx</strong>-<strong>9860</strong><br />
1. Kontynuacja redakcji programu wybranego z listy: uruchamiamy edytor, z listy<br />
programów wybieramy kursorem (klawisz [REPLAY]) dany program, a <strong>na</strong>stępnie<br />
przechodzimy do redakcji programu <strong>na</strong>ciskając klawisz [F2].<br />
2. Kasowanie programu wybranego z listy: uruchamiamy edytor, z listy programów<br />
wybieramy kursorem (klawisz [REPLAY]) dany program, a <strong>na</strong>stępnie kusuwamy go<br />
<strong>na</strong>ciskając klawisz [F4] lub usuwamy wszystkie programy – [F5].<br />
3. Zaz<strong>na</strong>czanie wybranego fragmentu programu: stajemy kursorem <strong>na</strong> początku<br />
zaz<strong>na</strong>czanego tekstu programu i <strong>na</strong>ciskamy klawisz [SHIFT][8], a <strong>na</strong>stępnie zaz<strong>na</strong>czamy<br />
kursorem wybrany fragment programu; <strong>na</strong> pasku menu <strong>na</strong> dole ekranu, z lewej strony<br />
pokazują się dwie opcje: COPY, CUT, pierwsza słuŜy kopiowaniu zaz<strong>na</strong>czonego tekstu<br />
(klawisz [F1]), a druga wyci<strong>na</strong>niu (klawisz [F2]).
Wskazówki uŜyteczne w posługiwaniu się<br />
edytorem języka programowania Basic<br />
dla kalkulatora <strong>fx</strong>-<strong>9860</strong><br />
1. Kopiowanie zaz<strong>na</strong>czonego fragmentu tekstu: po zaz<strong>na</strong>czeniu tekstu <strong>na</strong>ciskamy klawisz<br />
[F1], a <strong>na</strong>stępnie stajemy kursorem w tym miejscu, w którym chcemy skopiować zaz<strong>na</strong>czony<br />
tekst i <strong>na</strong>ciskamy klawisze [SHIFT][9] (<strong>na</strong>d klawiszem [9] jest <strong>na</strong>prowadzający <strong>na</strong>pis<br />
PASTE).<br />
2. Przenoszenie zaz<strong>na</strong>czonego tekstu: po zaz<strong>na</strong>czeniu tekstu <strong>na</strong>ciskamy klawisz [F2], a<br />
<strong>na</strong>stępnie stajemy kursorem w tym miejscu, do którego chcemy przenieść zaz<strong>na</strong>czony tekst i<br />
<strong>na</strong>ciskamy klawisze [SHIFT][9] (<strong>na</strong>d klawiszem [9] jest <strong>na</strong>prowadzający <strong>na</strong>pis PASTE).<br />
3. Uruchomienie programu: przechodzimy do listy programów za pomocą klawisza [EXIT], a<br />
<strong>na</strong>stępnie <strong>na</strong>ciskamy klawisz [F1].
<strong>Programowanie</strong><br />
w języku rejestrów<br />
Język rejestrów słuŜy do rejestrowania kolejno wykonywanych<br />
obliczeń.<br />
Na ten język składają się symbole danych, symbole rejestrujące<br />
dane, symbole te, jako wskazujące obszary pamięci, w których<br />
zarejestrowane są dane, zwane są rejestrami lub zmiennymi,<br />
symbol wprowadzania danych (np. ?, Input), symbol operacji<br />
przypisania (np. ->), symbole operacji <strong>na</strong> danych.
<strong>Programowanie</strong><br />
w języku rejestrów<br />
W programowaniu kalkulatora <strong>CASIO</strong> <strong>fx</strong>-<strong>9860</strong>G:<br />
• Przetwarzane są dane liczbowe zapisane w systemie dziesiętnym.<br />
• Zmiennymi są dowolne duŜe litery.<br />
• „?” jest symbolem wprowadzania danych. UŜycie: ? lub (bez komunikatu) ?.<br />
• „→” jest symbolem operacji przypisania. UŜycie: →. Instrukcja podstawiania lub przypisania, w<br />
standardzie BASIC ma postać LET = lub w metajezyku<br />
programowania : = ; 0 → A – liczba 0 przypisa<strong>na</strong> jest zmiennej<br />
A, zmien<strong>na</strong> A przyjmuje wartość 0; B→A – zmien<strong>na</strong> A przyjmuje wartość zmiennej B.<br />
• Oz<strong>na</strong>czenia funkcji i operacji wprowadza się bezpośrednio z klawiatury lub z listy<br />
uzyskanej sekwencją klawiszy [SHIFT][4].
<strong>Programowanie</strong><br />
w języku rejestrów<br />
Zadanie 1<br />
Zaprojektuj efektywną kolejność wykonywania <strong>na</strong>stępujących obliczeń<br />
"(³√(1÷√75+1.17)+(2.38-√3)²) ="<br />
Wyko<strong>na</strong>nie<br />
√75→X<br />
1÷X→X<br />
1.17+X→X<br />
³√X→X<br />
√3→Y<br />
2.38-Y→Y<br />
Y²→Y<br />
X+Y→X<br />
X²→X<br />
X×X→X<br />
X
<strong>Programowanie</strong><br />
w języku rejestrów<br />
Zadanie 2<br />
Zaprojektuj efektywną kolejność wykonywania obliczeń według wzoru:<br />
"(³√(1÷√A+B)+(C-√D)²) ="<br />
Wyko<strong>na</strong>nie<br />
"A"?→K<br />
√K→X<br />
1÷X→X<br />
"B"?→K<br />
K+X→X<br />
³√X→X<br />
"D"?→K<br />
√K→Y<br />
"C"?→K<br />
K-Y→Y<br />
Y²→Y<br />
X+Y→X<br />
X²→X<br />
X×X→X<br />
X
Basic dla <strong>CASIO</strong> <strong>fx</strong>-<strong>9860</strong><br />
GoTo-Lbl<br />
Lbl, If-Then<br />
Then-Else-IfEnd<br />
Zadanie 3<br />
Napisz program obliczający <strong>na</strong>jwiększy wspólny dzielnik dwóch liczb <strong>na</strong>turalnych.<br />
A-B → A<br />
If A>B<br />
B-A → B<br />
?→A<br />
?→B<br />
If A≠B<br />
A<br />
Stop<br />
"Program oblicza<br />
NWD(A,B)"<br />
"Podaj liczbe A:"?A<br />
"Podaj liczbe B:"?B<br />
Lbl 1<br />
If A≠B<br />
Then<br />
If A>B<br />
Then<br />
A-B→A<br />
GoTo 1<br />
Else<br />
B-A→B<br />
GoTo 1<br />
IfEnd<br />
Else<br />
"NWD(A,B) ="<br />
A<br />
IfEnd
Basic dla <strong>CASIO</strong> <strong>fx</strong>-<strong>9860</strong><br />
For-To-Step-Next<br />
Zadanie 2.<br />
Oblicz silnię z liczby n>0: n! = 1*2*...*n.<br />
Sekwencję instrukcji, które mogą być<br />
wyko<strong>na</strong>lne w sposób powtarzalny aŜ do<br />
spełnienia określonego warunku, <strong>na</strong>zywa się<br />
pętlą. W pętli <strong>na</strong>jczęściej moŜ<strong>na</strong> wyróŜnić<br />
pew<strong>na</strong> zmienną <strong>na</strong>zywaną zmienną sterującą<br />
pętli. Jedną z instrukcji do organizowania pętli<br />
w Basicu jest instrukcja powtórzeń For –<br />
Next. W języku Basic dla <strong>fx</strong>-<strong>9860</strong> stosuje się<br />
dwie konstrukcje tych instrukcji:<br />
.For W1→S To W2 Step W<br />
I1, I2,...In<br />
Next<br />
.2. For W1→S To W2<br />
I1, I2,...In<br />
Next<br />
"SILNIA Z LICZBY"?›N<br />
"WYNOSI"<br />
If N=0<br />
Then 1→S<br />
IfEnd<br />
For 1→I To N<br />
S×I→S<br />
Next<br />
S
Basic dla <strong>CASIO</strong> <strong>fx</strong>-<strong>9860</strong><br />
While-WhileEnd<br />
WhileEnd<br />
Zadanie 3.<br />
Podziel liczbę <strong>na</strong>tural<strong>na</strong> A przez liczbę <strong>na</strong>turalną B, gdy A≥B. Oz<strong>na</strong>cz iloraz całkowity<br />
przez Q i resztę przez R: A = Q*B + R. Reszta spełnia warunek 0 ≤ R < B. Skorzystaj z<br />
algorytmu Euklidesa (patrz schemat).<br />
0 → Q , A → R<br />
Do organizowania pętli w Basicu<br />
słuŜy takŜe instrukcja While –<br />
WhileEnd. Instrukcja ta ma<br />
<strong>na</strong>stępującą konstrukcję:<br />
Q+1 → Q, R-B → R<br />
R≥B ?<br />
Q<br />
R<br />
While <br />
I1, I2, ..., In,<br />
WhileEnd<br />
Stop<br />
Instrukcja powoduje dotąd<br />
powtarzanie wykonywania ciągu<br />
instrukcji I1, I2, ..., In,<br />
dokąd jest prawdziwy.
Basic dla <strong>CASIO</strong> <strong>fx</strong>-<strong>9860</strong><br />
While-WhileEnd<br />
WhileEnd<br />
Q+1 → Q, R-B → R<br />
0 → Q , A → R<br />
R≥B ?<br />
Q<br />
R<br />
Stop<br />
"A"?→A<br />
"B"?→B<br />
0→Q<br />
A→R<br />
While R≥B<br />
Q+1→Q<br />
R-B→R<br />
WhileEnd<br />
ClrText<br />
" A = Q*B + R"<br />
Locate 2,4,"A="<br />
Locate 4,4,A<br />
Locate 2,5,"B="<br />
Locate 4,5,B<br />
Locate 2,6,"Q="<br />
Locate 4,6,Q<br />
Locate 2,7,"R="<br />
Locate 4,7,R
Projektujemy menu<br />
Wygląd<br />
ClrText<br />
Lbl 1<br />
0→C<br />
Locate 3,1,"MENU"<br />
Locate 2,2,"Wybierz opcję"<br />
Locate 2,3,"Opcja1"<br />
Locate 2,4,"Opcja2"<br />
Locate 2,5,"Exit"<br />
Locate 1,3,"□"<br />
Locate 1,4,"■"<br />
Locate 1,5,"■"
Projektujemy menu<br />
Wybór parametrów<br />
1→E<br />
3→Y<br />
While C≠31<br />
Getkey→C<br />
If C=28<br />
Then If E=1<br />
Then 0→C:3→E:5→Y:Locate 1,Y,"□":Locate 1,3,"■"<br />
Else 0→C:Locate 1,Y,"■":Y-1→Y:E-1→E:Locate 1,Y,"□"<br />
IfEnd<br />
IfEnd<br />
If C=37<br />
Then If E=3<br />
Then 0→C:1→E:3→Y:Locate 1,Y,"□":Locate 1,5,"■"<br />
Else 0→C:Locate 1,Y,"■":Y+1→Y:E+1→E:Locate 1,Y,"□"<br />
IfEnd<br />
IfEnd<br />
WhileEnd
Projektujemy menu<br />
Uruchomienie wybranych opcji<br />
If E=1<br />
Then Locate 3,7,"OPCJA1 □":Goto 1<br />
IfEnd<br />
If E=2<br />
Then ClrText:Prog "P5":Prog "PAUSE":ClrText:Locate<br />
3,7,"OPCJA2 □":Goto 1<br />
IfEnd<br />
If E=3<br />
Then ClrText:Locate 8,5,"KONIEC":Stop<br />
IfEnd
Wywołanie podprogramów<br />
PROG „PAUSE”<br />
0→C<br />
While C≠31<br />
Getkey→C<br />
WhileEnd<br />
Return