Programowanie w Basic
Programowanie na kalkulatorach graficznych:
Algebra FX 2.0 Plus i CFX 9850
Na
kalkulatorach Casio istnieje możliwość pisania programów w języku CTF (Casio
Text Format). Do dyspozycji mamy całą gamę standardowych poleceń kalkulatora
oraz specjalne polecenia w trybie programowania. Programy piszemy zwykle używając
edytora na kalkulatorze, można też pisać w Fa-123 co czasem się przydaje np.
gdy mamy przekopiować znaczną ilość tekstu lub wstawić znak który nie jest dostępny
z kalkulatora, a takich jest trochę. Wstawiane przez nas polecenia nie składają
się z pojedynczych liter (tak wprowadzone słowo jest traktowane jako błąd),
lecz stanowią całość. Dzięki temu pisanie programów bezpośrednio na
kalkulatorze jest znacznie szybsze i uniemożliwia popełnienie błędów
składniowych. Zakładam,
że czytelnik jest zapoznany z podstawową obsługą kalkulatora. Zna wszystkie
tryby pracy kalkulatora i wie gdzie znaleźć odpowiednie funkcje. Podstawowe
pytanie jakie można sobie zadać, to: do czego przeciętnemu użytkownikowi może
przydać się umiejętność tworzenia programów na kalkulatorze, wiedząc, że
możliwości takiego kalkulatora są ograniczone. Odpowiedź jest bardzo prosta.
Tworząc nawet bardzo proste programy poszerzamy możliwości kalkulatora. Pisanie
programów ma wtedy sens gdy wiemy, że wykorzystamy go powtórnie lub bardzo
zaoszczędzi nam czas. Żmudne obliczenia, podstawianie do wzorów możemy zastąpić
jednym programem. Dlatego takie kalkulatory w pewnych środowiskach jak np.
wśród geodetów czy uczniów szkół morskich i marynarzy cieszą się dużym
powodzeniem. Wszystko dzięki możliwości budowania nowych funkcji kalkulatora,
czyli programowaniu. Zmienne
Prawie w każdym języku
programowania niezbędna jest możliwość rezerwowania miejsc w pamięci (zmiennych)
komputera aby przechować tymczasowo lub na stałe liczby (różne typy: całkowite,
zmienno przecinkowe), ciągi znaków (jakiś tekst, który potem chcemy poddać
obróbce), rysunki, itd. ... . CTF nie daje nam możliwości tworzenia własnych
zmiennych. W języku C możemy np. stworzyć zmienną o nazwie „liczba”, w której
będziemy przechowywać tylko liczby całkowite. Możemy wykorzystać wyłącznie to,
co daje nam kalkulator, czyli: wszystkie litery, listy, macierze, pamięć
funkcji, pamięć rysunków. Zobaczmy jak z tego korzystać. a) Litery Do
zmiennej w postaci litery możemy wprowadzać liczby różnych typów. Jest to
najbardziej podstawowa metoda przechowywania danych w pamięci. Litery
wywołujemy kombinacją klawiszy (Alpha) i klawisza odpowiadającego odpowiedniej
literze. Np. chcąc zapisać w komórce pamięci odpowiadającej literze S liczbę
1,232 robimy to następująco: 1.232 -> S. Strzałka jest tu symbolem
przypisania. b) Listy i Macierze Listy w
kalkulatorze zorganizowane są podobnie jak kolumny w programie Excel. Nie jest
to jednak to samo. Dane do listy musimy wpisywać w odpowiedniej kolejności
poczynając od pozycji pierwszej. Nie można wstawić np. jakiejś liczby na
pozycję nr 5 gdy pozostałe komórki nie zostały wypełnione liczbami. Przed
korzystaniem z listy możemy wcześniej określić jej rozmiar, czyli podać liczbę
komórek z których zamierzamy korzystać. Tak utworzona lista automatycznie
zostanie wypełniona zerami. W takim przypadku każdą komórkę listy będziemy
mogli traktować jak odrębną zmienną. Przykład
(inicjalizacja listy): Rozmiar
listy nr 1 ustalimy na 7 elementów i na miejsce nr 5 wstawimy jakąś liczbę. 5->Dim list1 1.2132->list1[5] Chcąc
zapisać liczbę w komórce macierzy najpierw musimy określić jej rozmiar.
Utworzymy np. macierz składającą się z trzech kolumn i dwóch wierszy. {2,3}->Dim
Mat B Podobnie
jak z listami macierz o zadanym wymiarze została wypełniona zerami. Teraz
wpiszmy w wybraną komórkę ( np. 2 kolumna, 1 wiersz) jakąś liczbę. 323->Mat
B[1,2] Każdą
komórkę macierzy możemy teraz traktować jak odrębną zmienną. c) Pamięć funkcji Do
pamięci funkcji możemy załadować przepis funkcji, który później chcemy wykorzystać w celu jej
narysowania lub obliczenia wartości. Mamy np. funkcję y=x^2+5, piszmy ją do
pamięci funkcji fn1. Przepis umieszczamy w nawiasach klamrowych. „X^2+5”->fn1 (to nie działa na CFX 9850 ) Należy
pamiętać, że wartość x jest taka jak ją sobie wcześniej ustaliliśmy czyli
wpisując: 5->X
a następnie fn1 otrzymamy wartość funkcji dla liczby 5. Bardzo
przydatną własnością pamięci funkcji jest to, że właściwie możemy do niej
wpisać cokolwiek nam się podoba, włączając w to całe wyrażenia lub np. fragment
programu. Gdy np. mamy jakiś znak lub kod, którego używamy dość często możemy
zapamiętać go w jednej z tych pamięci a potem w trakcie pisania programu
wywołać. Uwaga: (
tylko CFX 9850 ) ·
nie można z pozycji programu
wprowadzać wartości do zmiennych funkcyjnych: fn i Yn. Takie przypisanie trzeba
zrobić przed uruchomieniem programu. Nie działają np. takie przypisania:
"X^2 + 5"-> fn1, ?->fn1, fn1-fn2->fn3 d) Pamięć rysunków W tej
pamięci możemy zapisać wygląd ekranu w trybie graficznym czyli gdy np. rysujemy
wykres. Polecenia w trybie programowania
Przedstawię teraz polecenia
dostępne po naciśnięciu SHIFT + PRGM. a) COM ·
Instrukcja warunkowa If Jeżeli
określony warunek jest spełniony, to wykonywana jest zadana przez nas
instrukcja, a jeśli nie, wykonywana jest inna procedura (opcjonalne). Np. If X=5 Then 3->X Else
6->X Ifend ·
Pętla For. Dana
procedura będzie wykonywana określoną liczbę razy, dopóki nie zostanie
osiągnięta zadana wartość zmiennej sterującej. Wartość tej zmiennej przy każdym
kolejnym obiegu pętli jest zwiększana lub zmniejszana (standardowo o 1 ale
możemy to ustalić przy instrukcją Step). Teraz wypisywane będą liczby do 1 do 5
i gdy X osiągnie wartość 5 pętla zostanie zakończona. For 1->X To 5 X» Next Teraz
skok ustalmy na 0.5 For 1->X To 5 Step 0.5 X» Next ·
Pętle While. Dana
procedura będzie wykonywana dopóki określony warunek jest spełniony. Mamy do
wyboru dwa rodzaje pętli: warunek może być zadany na początku lub na końcu
pętli. Czyli prawdziwość danego wyrażenia może być sprawdzana przed wejściem do
pętli lub po pierwszym wykonaniu znajdującej się w niej procedury. Np. 0->X Do X+1->X LpWhile X<10 Za
każdym razem wartość X jest zwiększana o 1. Wyjście z pętli nastąpi gdy wartość
X osiągnie 10. Ale gdyby zadać początkowe X większe lub równe dziesięć to i tak
jego wartość zostanie zwiększona. Inaczej będzie z drugą odmianą pętli, tutaj
warunek jest sprawdzany na początku i wartość X w powyższym przypadku
pozostanie niezmieniona. While X<10 X+1®X WhileEnd b) CTL – kontrola działania programu. ·
Prog – uruchamia program, lub
podprogram. Np.
Prog „nowe2” ·
Return – kończy pracę
programu lub podprogramu (przechodzi do programu głównego) ·
Break – przerywa działanie
pętli ·
Stop – kończy działanie
programu c) JUMP – skoki bezwarunkowe. ·
Goto i Lbl W
dowolnym miejscu programu możemy wstawić etykietę Lbl z jednoznakową nazwą np.
Lbl 0 lub Lbl R. W innym miejscu programu wstawiamy instrukcję Goto odwołującą
się do poprzednio utworzonej etykiety, czyli Goto R. Po napotkaniu takiej
instrukcji wykonany zostanie skok do miejsca programu oznaczonego tą etykietą. ·
Þ
wynikanie. Taki znak zastępuje instrukcję If. X=5Þ4->X Gdy X będzie równe 5,
wartość X zostanie zmieniona na 4. Zastosowanie tej
instrukcji zmniejsza wielkość programu i polepsza czytelność kodu programu. ·
Dsz Funkcja obniża wartość
zmiennej sterującej o 1 i sprawdza ile ona wynosi. Jeśli jej wartość jest różna
od 0, wykonywana jest instrukcja występująca bezpośrednio po tym poleceniu,
czyli bezpośrednio po „ : ” np. 0->X Dsz X:1» (po
1 jest znak {display}, tylko dlatego żeby wyświetlić liczbę) 2 W tym przypadku wartość
zmiennej sterującej po obniżeniu o 1 wynosi –1 czyli wykonywana jest instrukcja
występująca bezpośrednio po dwukropku. Jeśli wartość X wynosiłaby 1, wówczas na
ekranie pojawi się tylko liczba 2. ·
Isz Działa identycznie jak
Dsz. Różnica jest tylko w tym, że wartość zmiennej sterującej zwiększana jest o
1. d) ? używamy wtedy, gdy chcemy w trakcie wykonywania programu
wprowadzić do zmiennej nową wartość. Program jest wtedy zatrzymywany i czeka na
wprowadzenie naszej liczby np. : ?->X e) » powoduje
wypisanie wartości stojącej przed tym znakiem zmiennej np. X» f)
CLR – funkcje kasujące ·
ClrText – kasuje zawartość
ekranu w trybie tekstowym ·
ClrGraph – kasuje zawartość
ekranu w trybie graficznym ·
ClrList – kasuje dane
znajdujące się w określonej liście. Dla listy nr 1 składnia jest następująca:
ClrList 1 ·
ClrMat – kasuje określoną
macierz np. ClrMat A g) DISP – ·
DrawStat – rysuje aktywne
wykresy statystyczne. (czyli te zaznaczone na ON) ·
DrawGraph - rysuje aktywne
funkcje z trybu Graph ·
DrawDyna - rysuje aktywne
wykresy dynamiczne. ·
DispF-Tbl i DispR-Tbl -
wyświetla tablice z wartościami funkcji i rekurencji. h) REL – relacje i)
I/O – funkcje wejścia i
wyjścia ·
Locate – wypisanie wartości
zmiennej lub tekstu w dowolnym miejscu ekranu w trybie tekstowym. Locate
nr wiersza (od 1 do 7), nr kolumny (od 1 do 21) np. Locate
1,3,X Wyświetli
wartość X a Locate
1,3,”X” Wyświetli
na ekranie sam symbol X j)
Getkey – zwraca liczbę
odpowiadającą naciśniętemu przyciskowi kalkulatora. Np. Do Getkey->K LpWhile
K=0 Program
będzie czekał dopóki, dopóty nie zostanie naciśnięty jakiś przycisk.
Odpowiadająca mu wartość zostanie wpisana do X. k) Send( i Receive( - wysyłanie i odbieranie danych l)
: (dwukropek) – zastępuje
znak nowej linii lub display. Przy nadmiernym stosowaniu sprawia, że program
stanie się totalnie nieczytelny. Błędy
Przy pisaniu programów możemy
spotkać się z różnymi typami błędów. Najmniejsze są te, które wskaże nam
automatycznie kalkulator, zaś najgorsze, błędy logiczne lub wynikające z
dziwnego działania jakiegoś polecenia. Te ostatnie najtrudniej wykryć i usunąć.
Przedstawię problemy z którymi najczęściej możemy się spotkać. b) Błąd składni Błąd
pojawia się wtedy gdy składnia polecenia jest nie taka jak trzeba. Nie ma tu
możliwości w złym zapisie polecenia, możemy nieprawidłowo wpisać za to
parametry polecenia np. stosując nieodpowiednie nawiasy lub podając za dużo lub
za mało parametrów. c) Błąd pamięci. Pojawia się gdy odwołujemy się np. do listy lub macierzy,
która nic nie zawiera. Tak jak zauważyłem, kalkulator potrzebuje trochę wolnej
pamięci w przestrzeni gdzie zapisujemy programy. Gdy całkowicie zapchamy tą
pamięć, mogą pojawiać się problemy w czasie wykonania programu. d) Inne ważne rzeczy: ·
program nie może zawierać
pustych linii ( tylko CFX 9850 ) ·
przy wypisywaniu tekstu
poleceniem text współrzędne txt, gdzie ma być wyświetlony przechowywane są w
zmiennych x i y. Jeśli np. wcześniej coś tam zapiszemy to po wyświetleniu
tekstu nasze dane zostaną utracone. ( tylko CFX 9850 ) ·
nie można z pozycji programu
wprowadzać wartości do zmiennych funkcyjnych: fn i Yn. Takie przypisanie trzeba
zrobić przed uruchomieniem programu. Nie działają np. takie przypisania:
"X^2 + 5"-> fn1, ?->fn1, fn1-fn2->fn3 ( tylko CFX 9850 ) ·
aby program zadziałał tak jak
tego chcemy na każdym kalkulatorze powinniśmy stosować polecenia z menu setup.
Np. powinniśmy przed wypisaniem liczby podać typ wpisu jaki chcemy uzyskać bo
np. inny kalkulator może być ustawiony nie na Normal jak tego chcemy. Dotyczy
to również rysowania wykresów, przewidzenia, że ktoś może mieć wyłączone osie
współrzędnych itd. Parę porad
|