20.02.2015 Views

Programowanie na kalkulatorze CASIO fx-9860 - Instytut Matematyki ...

Programowanie na kalkulatorze CASIO fx-9860 - Instytut Matematyki ...

Programowanie na kalkulatorze CASIO fx-9860 - Instytut Matematyki ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!