Krótki kurs programowania w języku BASIC dla ClassPad - na wybranych przykładach



Podobne dokumenty
Programowanie w języku Python. Grażyna Koba

Jak wykorzystywać kalkulator programowany do wspomagania nauczania algorytmiki na poziomie szkolnym, na przykładzie kalkulatora fx-9860?

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Laboratorium nr 1. i 2.

Podstawy Programowania C++

1 Podstawy c++ w pigułce.

Funkcje i instrukcje języka JavaScript

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Proste programy w C++ zadania

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Wprowadzenie do programu Mathcad 15 cz. 1

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

1 Powtórzenie wiadomości

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

Wykład z Technologii Informacyjnych. Piotr Mika

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Warsztaty dla nauczycieli

FAQ: /PL Data: 14/06/2007 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-200

Zapisywanie algorytmów w języku programowania

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Temat 5. Programowanie w języku Logo

Ćwiczenia nr 4. Arkusz kalkulacyjny i programy do obliczeń statystycznych

Spis treści. Podstawy posługiwania się komputerem

Plan nauczania informatyki Opracował: mgr Daniel Starego

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Metody i analiza danych

Temat: Organizacja skoroszytów i arkuszy

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

1 Podstawy c++ w pigułce.

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Obliczenia iteracyjne

PLAN WYNIKOWY Z INFORMATYKI DLA KLASY VI

Laboratorium z Grafiki InŜynierskiej CAD. Rozpoczęcie pracy z AutoCAD-em. Uruchomienie programu

Dlaczego stosujemy edytory tekstu?

Praca w programie Power Draft

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Praca w programie Power Draft

I. Podstawy języka C powtórka

1. Wybierz polecenie rysowania linii, np. poprzez kliknięcie ikony W wierszu poleceń pojawi się pytanie o punkt początkowy rysowanej linii:

Programowanie w języku C++ Grażyna Koba

Programowanie i techniki algorytmiczne

Programowanie komputerowe. Zajęcia 1

lekcja 8a Gry komputerowe MasterMind

Algorytm. a programowanie -

1 Wprowadzenie do algorytmiki

Algorytmika i programowanie

UMOWY INSTRUKCJA STANOWISKOWA

Klawiatura. Klawisze specjalne. Klawisze specjalne. klawisze funkcyjne. Klawisze. klawisze numeryczne. sterowania kursorem. klawisze alfanumeryczne

Definicje. Algorytm to:

Wstęp do Informatyki i Programowania Laboratorium: Lista 1 Środowisko programowania

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

1.1. Przykład projektowania konstrukcji prętowej z wykorzystaniem ekranów systemu ROBOT Millennium

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wprowadzenie do Scilab: macierze

Informatyka dla szkoły podstawowej Klasy IV-VI Grażyna Koba

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Języki programowania zasady ich tworzenia

Temat 20. Techniki algorytmiczne

Wstęp do poradnika metodycznego Przykładowy rozkład materiału 13 I rok nauczania...13 II rok nauczania...13 Rozkład materiału:...

Metody numeryczne Laboratorium 2

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Wymagania edukacyjne z informatyki dla uczniów klas VI SP nr 53 w Krakowie w roku szkolnym 2019/2020

Z. Rudnicki: WPROWADZENIE DO INFORMATYKI I PROGRAMOWANIA

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

KaŜdy z formularzy naleŝy podpiąć do usługi. Nazwa usługi moŝe pokrywać się z nazwą formularza, nie jest to jednak konieczne.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

INSTRUKCJA DO OPROGRAMOWANIA KOMPUTEROWEGO

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

MenadŜer haseł Instrukcja uŝytkownika

Scenariusz lekcji. scharakteryzować budowę procedury w języku Logo; rozróżnić etapy tworzenia i wykonania procedury;

Algorytmika i pseudoprogramowanie

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Zadanie 10. Stosowanie dokumentu głównego do organizowania dużych projektów

Wymagania Uczeń zna zasady bezpiecznej pracy z komputerem. Uczeń stosuje się do regulaminu szkolnej pracowni komputerowej.

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

WEKTORY I MACIERZE. Strona 1 z 11. Lekcja 7.

SCENARIUSZ LEKCJI. Miejsca zerowe funkcji kwadratowej i ich graficzna prezentacja

Wymagania na poszczególne oceny szkolne dla klasy VI. (na podstawie Grażyny Koba, Teraz bajty. Informatyka dla szkoły podstawowej.

Z nowym bitem. Informatyka dla gimnazjum. Część II

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

Ćwiczenie 1 - Arkusze kalkulacyjne

Temat 1. Więcej o opracowywaniu tekstu

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

EKSPLOATACJA SYSTEMÓW TECHNICZNYCH - LAB. Wprowadzenie do zajęć

POMIARY WIDEO W PROGRAMIE COACH 5

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Edytor tekstu OpenOffice Writer Podstawy

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Transkrypt:

Krótki kurs programowania w języku BASIC dla ClassPad - na wybranych przykładach dr Edward Bryniarski Uniwersytet Opolski, Instytut Matematyki i Informatyki edlog@uni.opole.pl WSTĘP Nauka programowania w języku Basic dla kalkulatora CASIO ClassPad 300 jest bardzo skutecznym, nie wymagającym korzystania z pracowni komputerowej, a więc tanim, środkiem zwiększenia efektywności i uatrakcyjnienia nauczania algorytmiki, a takŝe przygotowania do opanowania arkusza kalkulacyjnego, na poziomie szkoły podstawowej i gimnazjum. Opanowanie elementów programowania na ClassPad 300 pozwala teŝ wykorzystywać kalkulator na lekcjach matematyki i na zajęciach pozalekcyjnych. WaŜne jest to, Ŝe uczeń dysponujący własnym komputerem IBM PC moŝe indywidualnie programować korzystając z emulatora ClassPad 300, ponadto moŝe przenosić na obsługę kalkulatora część sprawności uzyskanych w posługiwaniu się systemem Windows, co znacznie przyspiesza uczenie się programowania. Jakie minimum sprawności jest wymagane do programowania na ClassPad 300? Zalecamy opanowanie następujących sprawności: Uruchamianie aplikacji program Korzystanie z okna programu ładującego Obsługa edytora programów Tworzenie nowego lub poprawianie starego programu etapy Zarządzanie plikami Omówimy je krótko poniŝej.

Uruchamianie aplikacji program Z dolnego paska ekranu wywołujemy piórkiem Menu Educational i w nim wciskamy Aplikację Program. Wybór typu menu Ikona Aplikacji Program Ikona Menu Korzystanie z okna Programu Ładującego Uaktywnienie Aplikacji Program otwiera okno Programu Ładującego, pozwalające w polu Folder przeglądać listę aktualnych folderów utworzonych w pamięci kalkulatora, a w polu Name listę bieŝących plików. MoŜemy równieŝ wywoływać róŝne opcje otworzenie i edytowania plików i zmiennych, a takŝe uruchamiania programów. Z ikon w górnym pasku korzystamy analogicznie jak w programie Windows. Wybór folderów Wybór plików

Obsługa edytora programów W oknie Programu Ładującego wywołujemy Program Edytor. Z wirtualną klawiaturą zapoznajemy się najszybciej wciskając poszczególne jej opcje: Ctrl, I/O, Misc, mth, abc, cat, 2D, SMBL, itd., a następnie wybierając poszczególne znaki lub słowa. Z ikon w górnym pasku korzystamy analogicznie jak w programie Windows. Oznaczają one kolejno: - wywołanie program ładujący, - nowy program, - wybór starego programu, - zapisanie programu, - wycięcie zaznaczonego piórkiem fragmentu ekranu (przesunięcie piórkiem po ekranie), - kopiowanie zaznaczonego fragmentu ekranu, - wywołanie kopii. Tworzenie nowego lub poprawianie starego programu etapy 1. Otwórz nowy plik lub stary: Wciśnij odpowiednią ikonę lub wybierz [Edit] menu a następnie [New File] lub [Open File]. 2. Wprowadź nazwę i wciśnij [OK.] lub zaznacz juŝ istniejącą. 3. Wprowadź wyraŝenia i polecenia, które utworzą nowy program lub skorygują stary. 4. Zapisz program. 5. Wywołaj okno programu ładującego. 6. Uruchom program wciskając ikonę z trójkącikiem lub [Run] a następnie [Run] program.

Zarządzanie plikami KaŜda zmienna słuŝąca do przenoszenia danych pomiędzy programami, a nie lokalnie tylko w ramach jednego programu określona komendą Local zapisywana jest w oknie Variable Manager w stosownym folderze (po jego zaznaczeniu) jako plik z rozszerzeniem odpowiadającym typowi tej zmiennej. Okno Variable Manager dostępne z okna Programu Ładującego poprzez ostatnią ikonę w górnym pasku. Standardowe operacje na plikach (zmiennych): - Delete: kasowanie, - Rename: zmiana nazwy, - Copy: kopiowanie do innego folderu, - Move: przenoszenie do innego folderu, - Lock: blokowanie działania zmiennej, - Unlock: odblokowanie zmiennej, wykonywane są analogicznie, jak w systemie Windows. Zachęcając nauczycieli i uczniów do poznania programowania w języku Basic dla ClassPad 300, mamy nadzieję, Ŝe nie tylko będą wykorzystywać je w nauczaniu i uczeniu się algorytmiki, ale takŝe sięgną oni do perełek programistycznych z epoki mikrokomputerów i spróbuję je odtworzyć na kalkulatorze ClassPad 300 (lub ClassPad Plus).

1. Print, Input, ExpToStr, StrJoin, GoTo Lbl, If - Zadanie 1 Napisz program obliczający największy wspólny dzielnik dwóch liczb naturalnych. Schemat blokowy algorytmu obliczania największego wspólnego dzielnika przedstawia poniŝszy schemat. Prezentację programu w języku Basic dla ClassPad opiszemy w ten sposób, Ŝe będziemy tłumaczyć kolejne słowa kluczowe języka Basic uŝyte w programie, wyróŝniając wiersze programu inną czcionką, powiększoną i pogrubioną. Stosując komendę Local, ustalamy zmienne występujące po tej komendzie jako lokalne, tj. usuwane po zakończeniu wykonywania programu i nie występujące na liście Variable Manager Local A,B,C,D,A1,T,T1,T2,T3, Słowo kluczowe Print słuŝy do drukowania na ekranie łańcucha znaków, np. "Program oblicza NWD(A,B)" Print "Program oblicza NWD(A,B)" Symbole A, B,..., A1, A2,..., B1, B2,..., a, b,..., AB,...,ab,...,abc,..., są zmiennymi. Instrukcja podstawiania lub przypisania, w standardzie BASIC ma postać LET <zmienna>=<wartość> lub w metajezyku programowania <zmienna>: = <wartość>, dla ClassPad ma postać <wartość> <zmienna>, 0 A liczba 0 przypisana jest zmiennej A, zmienna A przyjmuje wartość 0 B1 A zmienna A przyjmuje wartość zmiennej B1. Słowo kluczowe Input wczytuje z klawiatury rzeczywistej lub wirtualnej (uruchamianej piórkiem) znaki kodujące wartości zmiennej występującej po tym słowie: zmiennej liczbowej, tekstowej, listowej, tablicowej. Wynik wczytania wyświetlany jest w oknie dialogowym, w którym po zmiennej moŝna umieścić komentarz wpisany po przecinku. Input A,"Podaj liczbe A:" Input B,"Podaj liczbe B:" JeŜeli chcemy wynik wydrukować w postaci NWD(liczba1, liczba2) = musimy wpisane liczby A i B zamienić na łańcuchy C i D. Konwersji typu Number na Str dokonuje polecenie ExpToStr <zmienna liczbowa, liczba >, <zmienna tekstowa>. ExpToStr A,C ExpToStr B,D Następnie potrzebne jest odpowiednie połączenie (konkatenacja) tekstów: NWD(, napis liczby1,,, napis liczby2, ). Konkatenacji tekstów dokonuje polecenie :

StrJoin <zmienna-tekstowa1,tekst1>, <zmiennatekstowa2,tekst2>,<zmienna-tekstowa>. StrJoin "NWD(",C,T1 StrJoin T1,", ",T2 StrJoin T2,D,T3 StrJoin T3,") = ",T W tym miejscu będzie potrzebny jakiś znacznik Lbs <nazwa odwołania>, do którego będzie dowoływała się instrukcja skoku GoTo <nazwa odwołania>, przesyłająca dane do miejsca odwołania. Lbl A1 Rysunek obok wyjaśnia dalszą strukturę programu obliczania NWD dwu liczb naturalnych, a zarazem wyjaśnia stosowanie instrukcji warunkowej If Else. If A B If A>B A-B A GoTo A1 Else B-A B GoTo A1 Else PrintNatural A,T Start Input A Input B If A B If A>B PrintNa tural A A-B A B-A B Stop

Instrukcja PrintNatural <wynik>, <Komentarz do wyniku> otwiera okno w którym drukuje wynik poprzedzając go w nagłówku wpisanym komentarzem. 2. For To Next Zadanie 2. Oblicz silnię z liczby n>0: n! = 1*2*...*n. Program oblicza silnię z podanej liczy N Lbl Start Input N,"Podaj liczbe N" If N=0 1 S PrintNatural S,"Silnia(N)=" GoTo Start 1 S For 1 I To N S I S Next PrintNatural S,"Silnia(N)=" Start Input S 1 S 1 I Sekwencję instrukcji, które mogą być wykonalne w sposób powtarzalny aŝ do spełnienia określonego warunku, nazywa się pętlą. W pętli najczęściej moŝna wyróŝnić pewna zmienną nazywaną zmienną sterującą pętli. Jedną z instrukcji do organizowania pętli w Basicu jest instrukcja powtórzeń For Next. W języku Basic dla ClassPad stosuje się dwie konstrukcje tych instrukcji: 1. For W1 S To W2 Step W I1, I2,...In Next 2. 2. For W1 S To W2 I1, I2,...In Next I N? S I S I+1 I Stop Print S

Gdzie W1 - <wyraŝanie arytmetyczne określające wartość początkową zmiennej sterującej>, operacja przypisania, S - <zmienna prosta - sterująca>, W2 - < wyraŝanie arytmetyczne określające wartość końcową zmiennej sterującej>, W - <wyraŝanie arytmetyczne określające wartość kroku zmiany zmiennej sterującej>. I1, I2,...In skończony ciąg instrukcji. 3. While WhileEnd Zadanie 3. Podziel liczbę naturalna A przez liczbę naturalną B, gdy A B. Oznacz iloraz całkowity przez Q i resztę przez R: A = Q*B + R. Reszta spełnia warunek 0 R < B. Skorzystaj z algorytmu Euklidesa (patrz schemat). Program oblicza iloraz całkowity Q i resztę z dzielenia R liczby naturalnej A przez liczbę naturalną B Input A Input B 0 Q A R While R B Q+1 Q R-B R Start Input A Input B 0 Q, A R WhileEnd Print Q Print R R B? Q+1 Q, R-B R Print Q Print R Stop

Do organizowania pętli w Basicu słuŝy takŝe instrukcja While WhileEnd. Instrukcja ta ma następującą konstrukcję: While <warunek> I1, I2,..., In, WhileEnd Instrukcja powoduje dotąd powtarzanie wykonywania ciągu instrukcji I1, I2,..., In, dokąd <warunek> jest prawdziwy. Uwaga: nie powinno się uŝywać komendy GoTo, Ŝeby wyjść z pętli. 4. Definiowanie funkcji i ich uŝycie w programach: Define Zadanie 4. Wykorzystując standardowe dla ClassPad operacje dodawania i potęgowania liczb: +, ^, zdefiniuj fukcję A(i,j) określoną jako sumę kwadratów dwóch licz naturalnych i, j. Następnie oblicz sumę wszystkich wartości tej funkcji, dla i przyjmującego wartości od 1 do 10 oraz dla j od 1 do 15. W Basicu dla ClassPad definicja funkcji posiada nastepujacą składnię: Define <nazwa funkcji>(<nazwa zmiennej1>,<nazwa zmiennej2>,...<nazwa n-tej zmiennej>) = <wyraŝenie określające wartości funkcji dla danych wartości przymowanych przez wymienione zmienne> Program realizujący zadanie 4 będzie miał postać: Define A(I,J)=I^2+J^2 0 S For 1 I To 10 For 1 J To 15 S+A(I,J) S Next Next Print A(2,3) Print S 5. Podprogramy: <nazwa pliku podprogramu>( ) Programy napisane w języku Basic moŝemy skracać, jeśli ich częściami są inne programy. Program będący częścią drugiego programu nazywamy podprogramem. Skrócenie danego programu zawierającego występujące po sobie podprogramy <program1>,

<program2>,..., <n-ty program> wykonujemy w ten sposób, Ŝe zapisujemy te podprogramy w folderze <nazwa folderu>, nadając im nazwy: <nazwa programu1>, <nazwa programu2>,...,<nazwa n-tego programu>, a w danym programie, teksty podprogramów zastępujemy następującymi deklaracjami wywołania podprogramów: [<nazwa folderu>]<nazwa programu1>(), [<nazwa folderu>]<nazwa programu2>(),..., [<nazwa folderu>]<nazwa n-tego programu>(). Oczywiście, podprogram moŝe teŝ zwierać podprogramy lub wywołania podprogramów. Uwaga 1: odwołania do folderów, w których zapisano podprogramy, moŝna pominąć, jeśli podprogramy zostały zapisane w tym samym folderze co program. Uwaga 2: zmienne wejściowe i wyjściowe podprogramu nie mogą być lokalne, ich typ i zaleŝności pomiędzy nimi we wszystkich programach muszą być takie same. Zobaczmy przykład: Input N Input K Podprogram zapisany w folderze library pod nazwą dim1; dane na wejściu: N, K; dane na wyjściu: S Define A(I,J)=I^2+J^2 0 S For 1 I To N For 1 J To K S+A(I,J) S Next Next Define f(n,k)=s PrintNatural f(n,k),"f(n,k)=" Rezultat skrócenia programu, po zastąpieniu podprogramu deklaracją wywołania podprogramu o nazwie dim1, jest natychmiastowy: Input N Input K library\dim1() Define f(n,k)=s PrintNatural f(n,k),"f(n,k)="

Program oblicza sumę wszystkich sum kwadratów dwu liczb naturalnych w ustalonym zakresie N, K. 6. Operacje na listach i macierzach Lista jest ciągiem o wartościach liczbowych lub tekstowych. Lista zawierająca tylko liczby jest wektorem. Do oznaczenia zmiennych, którym przypisujemy listy, uŝywamy zazwyczaj symboli: list1, list2,..., ale moŝna takŝe uŝywać innych symboli zmiennych: A,A1,...,b, b1,...,lista, dane,... Oto przykładowe przypisanie danych zmiennej list1: {2,2,"lista",5,1,"a",2,3} list1 {1,2,3} list2, {4,2.1,-3} list3 Macierze w ClassPad tworzymy według następującego przykładu. Klasyczne operacje przypisania 1 2 3 1 1 1 mat1:= 4 5 6 mat2:= 1 1 1 7 8 9 1 1 1 zastępujemy wyraŝeniami [[1,2,3][4,5,6][7,8,9]] mat1 [[1,1,1][1,1,1][1,1,1]] mat2 Typowe funkcje dla list i macierzy Print list1[3] 3-ci element listy list1 Print dim(list1) liczba elementów listy - wymiar Print list1 Print mat1[2,1] element w wierszu 2 i kolumnie 1 Print dim(mat1) liczba wierszy, liczba kolumn Print list3 3 mnoŝenie wektora przez liczbę 3 Print mat1 3 mnoŝenie macierzy przez liczbę 3 Print list2+list3 suma macierzy Print mat1+mat2 suma macierzy Print list2 list3 iloczyn tensorowy wektorów, wynikiem jest wektor o elementach będących iloczynami odpowiadających sobie współrzędnych wektorów list2, list3. W celu uzyskania iloczynu skalarnego, naleŝy jeszcze zsumować współrzędne wektora list2 list3.

Print mat1^2 potęgowanie macierzy, jej kwadrat Print mat1 mat2 iloczyn macierzy Print det(mat1) wyznacznik macierzy kwadratowej Print submat(mat1, 1,1,2,2) podmacierz od 1 wiersz do 2 wiersza oraz od 1 kolumny do 2 kolumny: SubMat(mat1, <pocz. wiersz>, <pocz. kolumna>, <końcowy wiersz>, <końcowa kolumna>) Print trn(mat1) macierz transponowana Print diag(mat1) przekątna macierzy:[1,5,9] 7. UŜywanie funkcji Conics w programie do rysowania krzywych zadanych danym równaniem Zadanie 7 Napisz program rysowania okręgu o równaniu: (x-1)^2/3^2 + (y-2)^2/4^2=1. Wykonanie Czyszczenie okna wykresu i przywracanie początkowych parametrów okna graficznego ViewWindow ClrGraph Ustalenie parametrów okna graficznego ViewWindow [wartość x min ],[wartość y min ],[wartość x scale ], [wrartość x max ],[wartość y max ],[wartość y scale ] ViewWindow -15.4, 15.4, 2, -7.6, 7.6, 2 Przypisanie zmiennej ConicsEq, której zakresem są równania, danego równania krzywej "(x-1)^2/3^2 + (y-2)^2/4^2=1" ConicsEq UŜycie komendy DrawConic rysującej krzywą o równaniu podanym przez zmienną ConicsEq DrawConics

8. Tablicowanie funkcji i wykres na podstawie danych tablicy DefaultSetup przywracanie standardowych ustawień Setup ClrGraph czyszczenie ekranu wykresu i przywracanie standardowych parametrów okna graficznego ViewWindow ViewWindow 0, 7.7, 1, -14, 110, 10 GraphType "y=" Define y1(x) = 3 x^2-2 GTSelOn 1 nadawanie numeru 1 krzywej o równaniu y1(x) 0 Fstart początkowa wartość zmiennej x, od której zaczyna się tablicowanie wartości funkcji 6 Fend końcowa wartość zmiennej x 1 Fstep krok z jakim zmieniają się wartości zmiennej x w przedziale od 1 do 6 SheetActive 1 zaznaczenie numeru 1 krzywej przeznaczonej do rysowania DispFTable tablicowanie wartości funkcji o zaznaczonym numerze Pause pauza umoŝliwiająca zapoznanie się z tablicą wartości funkcji DrawFTGCon rysowanie zaznaczonej krzywej 9. Program rysujący punkty i odcinki oraz proste i proste prostopadłe do nich ClrGraph ViewWindow 0, 30, 1, 0, 110, 10 skala 1:10 Plot 10, 30 rysowanie punktu o współrzędnych x=10, y=30 Line 10,20, 20,50 rysowanie odcinka AB o współrzędnych początku odcinka A(10,20) i końcu B(20,50) GraphType "y=" Define y3(x)=3 x-10

GTSelOn 3 NormalLine 3,15 rysowanie prostej prostopadłej do krzywej o numerze 3 w punkcie o współrzędnej x=15 Pause pauza w celu rozpoczęcia nowego zdarzenia ClrGraph czyszczenie ekranu wykres, skala 1:1 GraphType "y=" Define y2(x)=(2/5) x GTSelOn 2 Line -5,-2, 5,2 NormalLine 2,1 poniŝszy podprogram powoduje migotanie punktów 0 I While I<10 I+1 I PlotOn -6,-1 punkt P(-6,-1) staje się widoczny na ekranie PlotOff 0,0 puntkt P(0,0) staje się niewidoczny na ekranie Wait 2 ustalenie czasu trwania powyŝszego zdarzenia na 2 s PlotOff -6,-1 PlotOn 0,0 Prostopadłe narysowane w skali 1:10 Wait 2 WhileEnd Prostopadłe narysowane w skali 1:1 Równanie prostej prostopadłej

10. Włączenie tabeli i wykresów rekurencyjnych do programu Zadanie 10 Stablicuj 7 pierwszych wyrazów ciągu zadanego rekurencyjnie: a 0 = 0.01, a n+1 = -3a n 2 + 2a n. Wyniki zaznacz na wykresie. Wykonanie DefaultSetup ViewWindow 0,6, 1, -0.01, 0.3, 3 SeqType "a n+1 a 0 " "-3a n^2 + 2a n " a n+1 0 SqStart 6 SqEnd 0.01 a 0 DispSeqTbl Pause DrawSeqCon

Zadanie 10 a Stablicuj 7 pierwszych wyrazów ciągu zadanego rekurencyjnie: a 0 = 0.01, a1 = 0.2, a n+2 = -3a n 2 + 2a n+1. DefaultSetup ViewWindow 0,6, 1, -0.01, 0.3, 3 SeqType "a n+2 a 0 " "-3a n^2 + 2a n+1 " a n+2 0 SqStart 6 SqEnd 0.01 a 0 0.2 a 1 DispSeqTbl Pause DrawSeqCon 11. Włączanie funkcji sortowania listy do programu Zadanie 11 Napisz program sortujący dane listy: {8, 12,3, 6, 5, 21, 34, 0, 16, 13} list1 a) w porządku rosnącym, b) w porządku malejącym. Wykonanie zad. 11 a) MultiSortA list1 Wykonanie zad. 11 b) MultiSortD list1

12. LOSOWANIE A LISTY Zadanie 12 Napisać program tworzący losową listę pięciu liczb z zakresu od 1 do 100. Wykonanie 1: rand(1,100) A1 rand(1,100) A2 rand(1,100) A3 rand(1,100) A4 rand(1,100) A5 {A1,A2,A3,A4,A5} list Print list Wykonanie 2 Define R(I)=rand(1,100) {R(1),R(2),R(3),R(4),R(5)} list2 Print list2 Wykonanie 3 Pięcioelementową losową listę liczb od 1 do 100 otrzymujemy takŝe za pomocą instrukcji: Print randlist(5,1,100) Zadanie 12 a Napisz program drukujący literę wymienioną na liście: {"a","b","c","d","e","f"} o ile litera ta zajmuje miejsce o numerze wskazanym przez rzut kostką do gry. Sporządź sześcioelementową listę losowo wybranych liter z powyŝszej listy. Wykonanie zadania: {"a","b","c","d","e","f"} list1 Print list1[rand(1,6)] Define L(I)=list1[rand(1,6)] {L(1),L(2),L(3),L(4),L(5),L(6)} list3 Print list3

13. Iteracje Zadanie 13 Funkcja f określona jest w zbiorze X = {a, b, c, d, e, f, g} przez tablicę x a b c d e f g f(x) e f g a c d b Sporządź tablicę funkcji f 100 będącej 100-krotnym złoŝeniem tej funkcji. Sformułuj treść zadania w taki sposób, aby reprezentowała zabawę (grę) 7 osób (np. zamiana miejscami). Wykonanie zadania: SetStandard InputStr X Define f 100 (X)=Y For 1 I To 100 'Define f(x)=y StrCmp X,"a",I1 StrCmp X,"b",I2 StrCmp X,"c",I3 StrCmp X,"d",I4 StrCmp X,"e",I5 StrCmp X,"f",I6 StrCmp X,"g",I7 If I1=0 "e" Y Else If I2=0 "f" Y Else If I3=0 "g" Y Else If I4=0 "a" Y Else UWAGA! Znak równości = stosowany jest dla obliczeń na liczbach, natomiast nie ma zastosowania dla operacji na łańcuchach znaków i na listach (wektorach i macierzach). Dla ustalenia równości łańcuchów i list stosuje się odrębne programy. Łańcuchy A i B są identyczne, gdy parametr I, po realizacji instrukcji StrCmp A,B,I, przymuje wartość 0.

If I5=0 "c" Y Else If I6=0 "b" Y Y X 'Print X Next Print f 100 (X) 14. Równość list oraz zbiorów danych na listach Zadanie 14 Napisz program sprawdzający czy dwie listy są identyczne. Wykonanie zadania: {"a","b","c"} list1 {"a","b","c"} list2 program sprawdzajacy równość list lit1, list2 0 S For 1 I To dim(list1) StrCmp list1[i],list2[i],o S+O S Next If dim(list1)=dim(list2) and S=0 Print "list1 = list2" Else

Print "list1 list2" Print S Zadanie 14 a Napisz program sprawdzający równość zbiorów danych na listach list1, list2. Zbiór danych odróŝnia się od listy, traktuje się go jak skończony zbiór abstrakcyjny w teorii mnogości. Dwa zbiory są identyczne, gdy posiadają te same elementy (tutaj :posiadają te same dane). Zmienne, którym będziemy przypisywać listy traktowane jako zbiory danych, będziemy oznaczać przez set1, set2,... Wykonanie. program sprawdzający czy set2 zwiera set1 0 S1 For 1 I To dim(set1) For 1 For 1 I To dim(set2) StrCmp set1[i],set2[j],o If O=0 S1 + 1 S1 dim(set2) J Next If S1<I Print "set2 nie zwiera set1" dim(set1) I Next If dim(set1)<dim(set2) and S1= dim(set1) Print " set2 zwiera set1" program sprawdzający czy set1 zwiera set2 0 S2 For 1 I To dim(set2) For 1 For 1 I To dim(set1) StrCmp set1[i],set2[j],o If O=0 S1 + 1 S1 dim(set1) J

Next If S1<I Print "set1 nie zwiera set2" dim(set2) I Next If dim(set2)<dim(set1) and S2= dim(set2) Print " set2 zwiera set1" program sprawdzający identyczność zbiorów danych If dim(set1)=dim(set2) and S1= dim(set1) and S2= dim(set2) Print "set1 = set2" Print S PROBLEM Napisz program wykonujący sumę mnogościową dwu skończonych zbiorów danych. Napisz program wykonujący iloczyn mnogościowy dwu skończonych zbiorów danych. Jak zdefiniować produkt karteziański skończonych zbiorów danych? Jak reprezentować listę, której elementami mogą być listy? 15. Relacje i operacje na łańcuchach znaków InputStr A InputStr B StrLen A,N1 StrLen B,N2 StrCmp A,B,O1 If O1=0 Print "B zawiera A" If N1>N2 Print "B nie zawiera A" If N1<N2

StrLeft B,N1,A1 StrRight B,N1-1,R StrCmp A,A1,O2 If O2=0 Print "B zawiera A" PrintNatural R, "B rozni się od A o łancuch:" Else Print "B nie zawiera A" StrJoin "c", "abc",i Print I StrRight "asdfg",3,t1 Print T1 StrLen "asdfg",n Print N StrLeft "asdfg", 3,T2 Print T2 StrCmp "asdfg","df",o Print O 16. Szablony do tworzenia menu programów Prezentujemy trzy najbardziej typowe szablony wyboru opcji programów komputerowych. Mogą one być realizowane w kaŝdej wersji języka Basic (takŝe łatwo je przetłumaczyć na inne języki programowania. Stanowią one podstawę przy projektowaniu iterjfejsów typu interferjsu Windows. Zadanie 16 Zaprojektuj szablon wyboru indeksowanych opcji programu poprzez wybór indeksu opcji. Wykonanie ClrText Locate 14,1,"Wybierz opcje: Locate 15,11,"Opcja 1" Locate 15, 21,"Opcja 2" InputStr O, Podaj ideks opcji: StrCmp O, 1, I1 Komenda Locate xe,ye,t drukuje w oknie tekstowym łańcuch T (0<xe,ye<290).

If I1=0 Tu moŝna wywołać program 1 PrintNatural Wykonanie opcji 1 StrCmp O, 2, I2 If I2=0 Tu moŝna wywołać program 2 PrintNatural Wykonanie opcji 2 Zadanie 16 a Zaprojektuj szablon przewijanego menu programu, w którym przewijanie dokonuje się przez odznaczanie w inwersie wypunktowań opcji (kwadracik pełny przechodzi w kwadracik pusty), a wybór opcji dokonuje się przez naciśnięcie klawisza EXE (odpowiednik Enter na IBM). Wykonanie While 1 0 ctrl ClrText Locate 14,1,"Wybierz programy: Locate 15,11,"Program 1" Locate 15, 21,"Program 2" Locate 15, 31,"Program 3" Locate 15,41,"Program 4" Locate 1,11," " Locate 1,21," " Locate 1,31," " Locate 1,41," " Locate 1,51," " Locate 15,51,"Exit" Locate 1,11," " 1 edo 11 ye While ctrl 13 GetKey ctrl Wait 1 If ctrl=28

If edo=1 0 ctrl 5 edo 51 ye Locate 1,ye," " Locate 1,11," " Else 0 ctrl Locate 1,ye," " ye-10 ye edo-1 edo Locate 1,ye," " If ctrl=29 If edo=5 0 ctrl 1 edo 11 ye Locate 1,ye," " Locate 1,51," " Else 0 ctrl Locate 1,ye," " ye+10 ye edo+1 edo Locate 1,ye," " WhileEnd W kaŝdym wywołaniu Case moŝna odwołać się do wykonania jakiegoś programu/zdarzenia Switch edo

Case 1 PrintNatural "Wykonanie opcji 1" Break Case 2 PrintNatural "Wykonanie opcji 2" Break Case 3 PrintNatural "Wykonanie opcji 3" Break Case 4 PrintNatural "Wykonanie opcji 4" Break Case 5 PrintNatural "Wyjście" Stop Default Break SwitchEnd WhileEnd Zadanie 16 b Zaprojektuj szablon wyboru opcji programu przez uaktywnienia wybranego pola ekranu za pomocą piórka (odpowiednikiem na IBM jest myszka lub joistick ). 'Do komentarzy w języku polskim stosujemy podprogram EdPl (patrz następny punkt kursu) "Wb+or opcji" T EdPl() S T1 "Wyj+scie" T EdPl() S T2 While 1 ClrText Locate 14,1,T1 Locate 15,11,"Opcja 1"

Locate 15, 21,"Opcja 2" Locate 15, 31,"Opcja 3" Locate 15,41,"Opcja 4" Locate 1,11," " Locate 1,21," " Locate 1,31," " Locate 1,41," " Locate 1,51," " Locate 15,51,T2 Locate 1,11," " 0 I 1 edo 0 xe 0 ye While I 1 GetPen xe,ye Komenda GetPen xe,ye wczytuje współrzędne punktu ekranu w miejscu dotknięcia piórkiem, w zakresie 0<xe<161, 0<ye<241. UWAGA! Ekran nie pokrywa się z oknem tekstowym zazwyczaj zaczyna się dla ye=132, tak więc kaŝda współrzędna y określona komendą Locate musi być powiększona o 132 i y<241-132=39. Następna instrukcja warunkowa If określa zakresy współrzędnych kwadratów, o rozmiarach 8 na 8, drukowanych przez komendy Locate, będących polami w których uaktywniamy odpowiednie opcje za pomocą piórka. If 1 xe and xe 8 and 143 ye and ye 153 1 edo 0 xe 0 ye 1 I Locate 1,11," " Locate 1,21," " Locate 1,31," " Locate 1,41," " Locate 1,51," " If 1 xe and xe 8 and 153 ye and ye 163 2 edo 0 xe 0 ye 1 I Locate 1,11," " Locate 1,21," " Locate 1,31," "

Locate 1,41," " Locate 1,51," " If 1 xe and xe 8 and 163 ye and ye 173 3 edo 0 xe 0 ye 1 I Locate 1,11," " Locate 1,21," " Locate 1,31," " Locate 1,41," " Locate 1,51," " If 1 xe and xe 8 and 173 ye and ye 183 4 edo 0 xe 0 ye 1 I Locate 1,11," " Locate 1,21," " Locate 1,31," " Locate 1,41," " Locate 1,51," " If 1 xe and xe 8 and 183 ye and ye 193 5 edo 0 xe 0 ye 1 I Locate 1,11," " Locate 1,21," " Locate 1,31," " Locate 1,41," " Locate 1,51," " WhileEnd

Switch edo Case 1 PrintNatural "Wykonanie opcji 1" Break Case 2 PrintNatural "Wykonanie opcji 2" Break Case 3 PrintNatural "Wykonanie opcji 3" Break Case 4 PrintNatural "Wykonanie opcji 4" Break Case 5 PrintNatural "Wyjcie z programu 5" Stop Default Break SwitchEnd WhileEnd 17. Edytor polskich liter Zadanie 17 Napisz program przetwarzający łańcuch znaków, w którym litery polskie zakodowane sa przez znak "+" poprzedzający stosowną literę. Np. łańcuchy "znak+ow", "kt+orym", "zaj+ac", "d+ab". itp. kodują słowa znaków, którym, zając, dąb Gdy wczytujemy łańcuch znaków moŝemy stosować instrukcję: InputStr T,"+znak=znak pl podprogram EdPl StrLen T,N "" S For 1 I To N StrMid T,I,Z,1 StrCmp Z,"+",J '

If J=0 I+1 I If I<N+1 StrMid T,I,Z,1 'Kodowanie "+a" StrCmp Z,"a",J 547 Kod 'Kodowanie "+A" StrCmp Z,"A",J 291 Kod 'Kodownie "+e" StrCmp Z,"e",J 557 Kod 'Kodowanie "+E" StrCmp Z,"E",J 301 Kod 'Kodownie "+o" StrCmp Z,"o",J 532 Kod 'Kodowanie "+O" StrCmp Z,"O",J 276 Kod 'Kodowanie "+s" StrCmp Z,"s",J

589 Kod 'Kodowanie "+S" StrCmp Z,"S",J 333 Kod 'Kodowanie "+l" StrCmp Z,"l",J 577 Kod 'Kodowanie "+L" StrCmp Z,"L",J 321 Kod 'Kodowanie "+z" StrCmp Z,"z",J 605 Kod 'Kodowanie "+Z" StrCmp Z,"Z",J 349 Kod 'Kodowanie "+x" StrCmp Z,"x",J 604 Kod 'Kodowanie "+X" StrCmp Z,"X",J 348 Kod 'Kodowanie "+c" StrCmp Z,"c",J 548 Kod

'Kodowanie "+C" StrCmp Z,"C",J 292 Kod 'Kodowanie "+n" StrCmp Z,"n",J 578 Kod 'Kodowanie "+N" StrCmp Z,"N",J 322 Kod Else StrJoin S,Z,Si Si S Next Print S Podprogram LPl dekodujący łańcuchy znaków alfanumerycznych na łańcuchy ze znakami polskimi If J=0 NumToChr Kod,Pl If J=0 NumToChr Kod,Pl StrJoin S,Pl,Si Si S StrJoin S,Pl,Si Si S