2015 pengantar small basic - mbandas
TRANSCRIPT
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
1/90
MMiiccrroossoof f tt SSmmaallll BBaassiicc Pengenalan bahasa pemrograman
untuk Komputasi Kelautan
Muhammad Banda SelamatStaf Pengajar di Jurusan Ilmu Kelautan
JJUURRUUSS AANN IILLMMUU KKEELLAAUUTTAANN UUNN IIVVEERRSS IITTAASS HHAASS AANNUUDDDDIINN
MMAAKKAASS SS AARR 220011
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
2/90
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
3/90
Muhammad Banda Selamat Hal ke 3 dari 90
Menggambar garis ............................................................................................................ 31
Menggambar dan mengisi bentuk .............................................................................. 34
Bermain dengan Bentuk....................................................................................................... 37
Rectangalore ........................................................................................................................ 37
Circtacular ............................................................................................................................. 38
Pengacakan .......................................................................................................................... 38
Fraktal ..................................................................................................................................... 39
Grafik Kura-kura ...................................................................................................................... 43
Logo ........................................................................................................................................ 4
Sang Kura-kura ................................................................................................................... 43
Bergerak dan menggambar ........................................................................................... 44
Menggambar kotak ........................................................................................................... 45
Mengganti warna ............................................................................................................... 46
Menggambar bentuk yang lebih rumit ...................................................................... 47
Bergerak ke mana saja ..................................................................................................... 50
Subrutin...................................................................................................................................... 52
Keuntungan menggunakan subrutin .......................................................................... 53
Menggunakan variabel .................................................................................................... 54 Memanggil subrutin di dalam pengulangan ........................................................... 56
Senarai ........................................................................................................................................ 59
Apa itu senarai? .................................................................................................................. 60
Indeksasi pada senarai ..................................................................................................... 62
Lebih dari satu dimensi .................................................................................................... 63
Menggunakan senarai untuk menampilkan grid ................................................... 65
Kejadian dan interaktifitas ................................................................................................... 68 Bagaimana mendayagunakan kejadian? ................................................................... 68
Menangani banyak kejadian .......................................................................................... 70
Program mengecat ............................................................................................................ 72
Contoh – contoh yang menarik......................................................................................... 74
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
4/90
Muhammad Banda Selamat Hal ke 4 dari 90
Fraktral Turtle ...................................................................................................................... 74
Foto dari Flickr .................................................................................................................... 75
Wallpaper Dynamic pada Desktop .............................................................................. 76
Game Paddle ....................................................................................................................... 76
Warna-warni ............................................................................................................................. 78
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
5/90
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
6/90
Muhammad Banda Selamat Hal ke 6 dari 90
Tampilan Small BasicLingkungan kerja Small Basic terdiri atas beberapa bagian, seperti ditampilkanpada Gambar 1.
1) Editor, adalah tempat dimana kita menuliskan program-program SmallBasic. Bila kita membuka contoh-contoh program Small Basic, atau
program yang telah disimpan sebelumnya, maka dokumen tersebut
akan tampil di Editor. Kita dapat bekerja dengan beberapa dokumen
sekaligus, yang ditampilkan dalam beberapa jendela editor. Editor
yang berisi program yang sedang dikerjakan dinamakan sebagai editor
aktif.
2) Toolbar, digunakan untuk memerintahkan editor aktif ataupunlingkungan lainnya.
3) Permukaan, adalah lokasi dimana jendela-jendela editor ditempatkan
Gambar 1 Lingkungan kerja Small Basic
Program pertama kitaSetelah mengenal lingkungan kerja dan tampilan Small Basic, kita akanlanjutkan dengan membuat program-program sederhana. Kita akanmencoba menulis satu baris program pada editor:
1
2
3
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
7/90
Muhammad Banda Selamat Hal ke 7 dari 90
TextWindow.WriteLine(" S a l a m … ")
Inilah program Small Basic kita yang pertama, dan bila kita menuliskannyadengan benar, maka di layar akan terlihat tampilan seperti Gambar 2.
Gambar 2 Menulis program pada Editor
Program dapat kita eksekusi dengan meng-klik tombol Run pada toolbar ataudapat juga dengan menggunakan kunci F5 pada keyboard. Tampilanprogram tersebut dapat dilihat pada Gambar 3.
Gambar 3 Tampilan eksekusi program
Program yang kita buat di atas masihlah sangat sederhana. Salah satu
langkah kita untuk dapat membuat program yang lebih rumit adalah dengan“memahami apa yang sedang terjadi” – apa yang telah kita perintahkan kekomputer dan bagaimana komputer tahu apa yang harus ia lakukan”. Kitaseharusnya menganalisa program yang telah kita buat, sehingga kitamemperoleh pemahaman tentang program yang dijalankan itu.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
8/90
Muhammad Banda Selamat Hal ke 8 dari 90
Saat kita mengetikkan program pertama, kita melihat ada popup yangmuncul dengan daftar pilihan (Gambar 4), ini disebut dengan “intellisense”dan membantu kita untuk mengetik program lebih cepat. Kita dapat melihat-lihat daftar tersebut menggunakan panah atas maupun bawah, dan bila telahmenemukan apa yang kita inginkan, kita dapat menekan enter, untukmenyisipkan item yang dipilih itu ke dalam program.
Gambar 4 Intellisense
Menyimpan programJika kita ingin menutup Small Basic dan akan kembali bekerja di lain waktupada program tersebut, kita dapat menyimpan program tersebut. Adabaiknya bila kita dapat menyimpan waktu setiap beberapa waktu sehingga
kita tidak kehilangan informasi bila sewaktu-waktu terjadi listrik padam ataukesalahan lainnya. Kita dapat menyimpan program yang sedang ditulisdengan meng- klik ikon “save” pada toolbar atau dengan menggunakan carasingkat menggunakan kom binasi tombol “Ctrl + S” (tekan S bersamaandengan menekan tombol Ctrl)
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
9/90
Muhammad Banda Selamat Hal ke 9 dari 90
Bab 2
Memahami Program
Apa sebenarnya program komputer itu?Suatu program terdiri dari seperangkat instruksi untuk komputer. Instruksi inimengatakan dengan tepat kepada komputer apa yang harus dilakukan.Seperti halnya manusia, komputer hanya dapat mengikuti instruksi jikadisampaikan dalam bahasa yang ia mengerti. Bahasa ini dinamakan sebagaibahasa pemrograman. Ada banyak bahasa pemrograman yang dapat
dimengerti oleh komputer, salah satunya adalah Small Basic.Bayangkan percakapan yang terjadi antara kita dan teman. Kita dan temanakan menggunakan kata, mengelola kalimat untuk menyampaikan informasibolak balik. Demikian pula halnya dengan bahasa pemrograman berisikumpulan kata yang dapat diorganisir menjadi kalimat yang menyampaikaninformasi ke komputer. Dan program pada dasarnya adalah kumpulan darikalimat-kalimat (terkadang sedikit dan terkadang ratusan ribu) yang secarabersama-sama memberikan pengertian yang sama baik di komputer maupunprogrammer nya.
Program Small BasicSuatu program Small Basic terdiri atas serangkaian pernyataan. Setiap barisprogram mewakili suatu pernyataan dan setiap pernyataan merupakanperintah kepada komputer. Pada saat kita meminta komputer untukmenjalankan program Small Basic, komputer akan mengambil program
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
10/90
Muhammad Banda Selamat Hal ke 10 dari 90
tersebut dan membaca pernyataan baris pertama. Komputer dapat mengertiapa yang kita katakan dan mulai mengerjakan instruksi kita. Setelahpernyataan pertama selesai dijalankan, komputer akan kembali ke program,membaca dan menjalankan baris kedua. Demikian seterusnya hingga sampaike akhir program.
Kembali ke program pertamaBerikut program pertama yang telah kita tulis:
TextWindow.WriteLine(" S a l a m … ")
Program ini sangat sederhana yang hanya terdiri dari satu pernyataan .Pernyataan itu meminta komputer untuk menulis satu baris teks yaitu S a l am , kedalam jendela teks. Pernyataan tersebut secara harfiah diterjemahkanke dalam “pikiran” komputer menja di:
Tulis S a l a m …
Kita tahu bahwa pernyataan tersebut dapat di pecah menjadi bagian-bagianyang lebih kecil seperti halnya kalimat-kalimat di pecah menjadi kata-kata.Dalam pernyataan pertama kita memiliki 3 segmen yang berbeda:
a) TextWindowb) WriteLinec) “S a l a m …”
Tanda titik, kurung dan tandakutip semuanya merupakan tandabaca yang harus ditempatkanpada posisi yang sesuai di dalampernyataan, agar komputer dapat
mengerti maksud kita.Jendela berwarna hitam muncul pada saat program pertama kita jalankan.Jendela berwarna hitam itu dinamakan jendela teks atau terkadang disebut
juga sebagai konsol. Konsol adalah tempat dimana hasil programditampilkan. TextWindow , yang ada di dalam program kita, dinamakansebagai objek . Ada banyak objek seperti itu yang tersedia untuk kita
Tanda baca seperti, tanda kutip dantanda kurung sangat penting dalamprogram komputer. Posisi dan
jumlahnya dapat mengubah apa yangsedang dinyatakan.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
11/90
Muhammad Banda Selamat Hal ke 11 dari 90
gunakan dalam program kita. Kita dapat melakukan beberapa operasi yangberbeda pada objek-objek ini. Kita telah menggunakan operasi WriteLinedalam program kita. Operasi WriteLine diikuti dengan S a l a m … dalamtanda kutip. Teks ini di umpan sebagai input ke dalam operasi WriteLine ,yang kemudian di cetak ke pengguna. Beberapa operasi memerlukan satuatau lebih input sementara ada juga yang tidak memerlukan input.
Program kita yang keduaSekarang kita mulai memahami program kita yang pertama, berikutnya marikita membuatnya lebih menarik dengan menambahkan beberapa warna.
TextWindow.ForegroundColor = "Yellow"TextWindow.WriteLine("Hello World")
Gambar 1 – Menambahkan Warna
Jika kita jalankan program tersebut, kita akan melihat kata “Hello World” didalam TextWindow, dicetak dengan warna kuning.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
12/90
Muhammad Banda Selamat Hal ke 12 dari 90
Gambar 2 - Hello World berwarna kuning
Perhatikan pernyataan baru yang kita tambahkan di program awal kita.Pernyataan ini menggunakan kata baru, ForegroundColor yang kita sambungdengan tanda sama dengan ke suatu nilai “Yellow.” Ini berarti kita telahmenetapkan “Yellow” untuk ForegroundColor.
Perbedaan antara ForegroundColor dan operasi WriteLine adalahForegroundColor tidak memerlukan input dan juga tidak memerlukan tandakurung. Operasi ini diikuti oleh tanda “ = “ sebagai simbol dan sebuah kata.
Kita definisikan ForegroundColor sebagai Property dari TextWindow.
Berikut ini daftar nilai yang bisa digunakan untuk property ForegroundColor.Cobalah ganti “Yellow” dengan salah satu nilai-nilai ini dan perhatikanhasilnya – jangan lupa tanda kutipnya, karena nilai-nilai ini memerlukan tandabaca.
BlackBlueCyanGrayGreenMagentaRedWhiteYellowDarkBlueDarkCyanDarkGray
DarkGreenDarkMagentaDarkRedDarkYellow
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
13/90
Muhammad Banda Selamat Hal ke 13 dari 90
Bab 3
Variabel
Menggunakan variabel di dalam programBukankah sangat menyenangkan bila program kita dapat mengatakan “Hello”diikuti dengan nama seseorang, selain hanya mengatakan “Hello World?” .Untuk dapat mengatakan itu, mula-mula kita harus bertanya siapa namapengguna komputer dan kemudian menyimpannya pada suatu tempat dankemudian mencetak “Hello” diikuti dengan nama pengguna itu. Lihatlah
bagaimana kita membuatnya:
TextWindow.Write("Nama anda: ")nama = TextWindow.Read()TextWindow.WriteLine("Hello " + nama)
Saat kita jalankkan program ini, kita akan melihat keluaran seperti berikut:
Gambar 3 – Menanyakan nama pengguna
dan ketika kita mengetikkan suatu nama, dan menekan ENTER, kita akanmelihat keluaran berikut:
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
14/90
Muhammad Banda Selamat Hal ke 14 dari 90
Gambar 4 – Hello yang ramah
Jika kita jalan program itu lagi, kita akan ditanya dengan pertanyaan yangsama lagi. Kita dapat mengetikkan nama yang berbeda dan komputer akanmengucapkan Hello dengan nama itu.
Analisis programPada program yang baru kita jalankan, baris program yang menarik perhatiankita adalah:
nama = TextWindow.Read()
Read() kelihatannya sama seperti WriteLine() , tetapi tanpa memerlukan input.Objek ini merupakan suatuoperasi dan pada dasarnyamengatakan pada komputeruntuk menunggu penggunakomputer mengetik sesuatu danmenekan tombol ENTER. Sekalitombol ENTER ditekan, operasi inimengambil apa yang telah diketikpengguna danmengembalikannya ke dalamprogram. Yang menarik adalah apapun yang pengguna itu ketikkan makaakan disimpan ke dalam suatu variabel yaitu nama . Variabel didefinisikansebagai suatu tempat dimana kita dapat menyimpan nilai sementara danmenggunakannya di waktu lain. Pada baris di atas, nama digunakan untukmenyimpan nama pengguna.
Baris program berikutnya juga menarik:
TextWindow.WriteLine("Hello " + nama)
Write , sepeti halnya WriteLine adalahoperasi lain di dalam ConsoleWindow.Write memberikan kita izin untuk
menulis ke ConsoleWindow danmembolehkan teks berikutnya beradadi baris yang sama dengan teks yangsekarang.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
15/90
Muhammad Banda Selamat Hal ke 15 dari 90
Inilah tempat dimana kita menggunakan nilai yang tersimpan di dalamvariabel nama . Kita ambil nilai di dalam nama dan menambahkannya kedalam “Hello” dan menuliskannya ke TextWindow.
Sekali variabel telah ditetapkan, kita dapat menggunakannya berulang-ulangkali. Sebagai contoh, kita dapat menuliskan:
TextWindow.Write("Nama anda: ")nama = TextWindow.Read()TextWindow.Write("Hello " + nama + ". ")TextWindow.WriteLine("Apa kabar kamu " + nama + "?")
dan kita akan mendapatkan keluaran berikut:
Ganbar 5 – Penggunaan variabel yang berulang
Aturan penamaan variabelVariabel-variabel memiliki nama yang es have names berkaitan dengannya
dan begitulah kita dapat mengenalinya. Ada aturan sederhana dan menjadipetunjuk yang baik untuk penamaan variabel ini, yaitu:
1. Nama variabel harus dimulai dengan huruf dan tidak boleh tumpangtindih dengan kata kunci seperti if , for , then , dan lainnya.
2. Nama variabel dapat berupa kombinasi berbagai huruf, angka dangaris bawah.
3. Sangat berguna bila nama variabel memiliki makna tertentu – karenavariabel dapat memiliki panjang berapa saja, untuk menjelaskan apaisinya.
Bermain dengan angka-angkaKita telah pelajari sebelumnya bagaimana variabel dapat digunakan untukmenyimpan nama pengguna komputer. Program berikut ini akanmemperlihatkan bagaimana kita dapat menyimpan dan memanipulasi angka-angka yang ada dalam variabel. Berikut contoh program sederhana:
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
16/90
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
17/90
Muhammad Banda Selamat Hal ke 17 dari 90
Gambar 7 – Mengalikan dua angka
Dengan cara yang sama kita dapat mengurangi atau menambahkan bilangan.Berikut contoh pengurangan:
angka3 = angka1 - angka2
Simbol untuk pembagian adalah ‘/’. Bentuk programnya adalah:
angka3 = angka1 / angka2
Hasil operasi pembagiannya adalah:
Gambar 8 – Membagi dua angka
Konverter suhu sederhana
Program berikutnya akan menggunakan formula untuk meng-
konversi suhu Fahrenheit ke Celsius.
Mula-mula, kita minta nilai suhu Fahrenheit dari pengguna danmenyimpannya ke dalam suatu variabel. Ada operasi khusus yangmemungkinkan kita untuk membaca nilai yang dimasukkan oleh pengguna,yaitu TextWindow.ReadNumber .
TextWindow.Write("masukkan nilai suhu dalam satuanFahrenheit: ")fahr = TextWindow.ReadNumber()
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
18/90
Muhammad Banda Selamat Hal ke 18 dari 90
setelah kita memiliki nilai suhu Fahrenheit yang tersimpan dalam variabel, kitadapat mengubahnya ke satuan Celsius menggunakan pernyataan:
celsius = 5 * (fahr - 32) / 9
tanda kurung akan memerintahkan komputer untuk menghitung fahr – 32 terlebih dahulu dan baru kemudian memproses yang lainnya. Gabungkansemua pernyataan, maka kita peroleh bentuk program berikut:
TextWindow.Write("masukkan nilai suhu dalam satuanFahrenheit: ")fahr = TextWindow.ReadNumber()
celsius = 5 * (fahr - 32) / 9TextWindow.WriteLine("Nilai suhu dalam satuan Celsiusadalah " + celsius)
Dan hasilnya akan terlihat seperti berikut:
Gambar 9 – Konversi Suhu
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
19/90
Muhammad Banda Selamat Hal ke 19 dari 90
Bab 4
Kondisi dan Percabangan
Kita kembali ke program pertama, bukankah lebih menyenangkan bila kitaselain mengucapkan Hello World , kita juga dapat mengucapkan selamat pagi,atau Selamat malam sesuai dengan perubahan waktu di hari tersebut? Untukprogram kita berikutnya, kita akan membuat komputer menyapa denganselamat pagi bila jam belum menunjukkan pukul 12 siang dan selamatmalam jika waktu telah lewat dari jam 12 siang.
If (Clock.Hour < 12) ThenTextWindow.WriteLine("selamat pagi")
EndIfIf (Clock.Hour >= 12) Then
TextWindow.WriteLine("selamat malam")EndIf
Tampilan program setelah dijalankan adalah sebagai berikut:
Gambar 10 – Selamat pagi
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
20/90
Muhammad Banda Selamat Hal ke 20 dari 90
Gambar 11 – Selamat malam
Coba kita analisa tiga barispertama program itu. Kita tahubahwa baris-baris ini mengatakanpada komputer bahwa apabilaClock.Hour kurang dari 12, makacetak “selamat pagi .” Kata-kata If ,Then dan EndIf adalah kata-katakhusus yang dimengerti olehkomputer manakala programdijalankan. Kata If selalu diikuti dengan suatu kondisi, yang dalam kasus iniadalah ( Clock.Hour < 12) . Ingat tanda kurung itu diperlukan agar komputermengetahui apa yang menjadi penekanan kita. Kondisi diikuti oleh then danoperasi aktual di jalankan. Setelah operasi jumpai EndIf yang mengatakanpada komputer bahwa kondisi yang dijalankan telah selesai.
Diantara then dan EndIf , dapat diisi lebih dari satu operasi dan komputerakan menjalankannya semua jika kondisinya masih terpenuhi. Sebagaicontoh, kita dapat menulis seperti ini:
If (Clock.Hour < 12) ThenTextWindow.Write("selamat pagi. ")TextWindow.WriteLine("sudah sarapan?")
EndIf
ElsePada program yang kita buat di awal bab ini, kita melihat bahwa terdapatpengulangan di kondisi kedua. Nilai Clock.Hour dapa bernilai kurang dari 12atau tidak. Sebenarnya kita tidak perlu melakukan pengecekan kedua. Padasituasi seperti ini, kita dapat menyingkat dua pernyataan if..then..endif menjadi hanya satu pernyataan dengan hanya menambah satu kata, else .
Di Small Basic, kita dapat menggunakanobjek Clock untuk mengakses waktudan tanggal saat ini. Objek ini jugamemberikan kita banyak pilihan untuk
mengetahui hari sekarang, bulan,tahun, jam, menit dan detik.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
21/90
Muhammad Banda Selamat Hal ke 21 dari 90
Jika menuliskan program dengan menggunakan else , maka tampilannyaadalah sebagai berikut:
If (Clock.Hour < 12) ThenTextWindow.WriteLine("selamat pagi")Else
TextWindow.WriteLine("selamat malam")EndIf
Dan program tersebut memberikan hasil kerja yang persis sama denganprogram sebelumnya, hal ini memberi kita satu pelajaran penting dalampemrograman komputer:
Di dalam pemrograman, selalu ada banyak cara untuk mengerjakanhal yang sama. Pilihannya bergantung pada programmer. Bila kitamenulis lebih banyak program dan lebih banyak pengalaman, kitamulai banyak menemukan teknik-teknik yang berbeda dengan
berbagai kelebihan dan kekurangannya.
IndentasiDari semua contoh yang telah kita buat, semua pernyataan di antara If, Else dan EndIf diberi inden (spasi masuk). Indentasi sebenarnya tidak penting.
Komputer sendiri dapat mengerti program tanpa harus menyisipkan indent.Indent tersebut digunakan untuk membantu kita memahami strukturprogram, sehingga dianggap sebagai cara yang baik untuk memberikanindent diantara blok-blok pernyataan.
Ganjil atau genapKita telah menggunakan pernyataan If..Then..Else..EndIf , coba kita tulis satuprogram, berikan satu nilai, dan kita akan tentukan apakah bilangan itu ganjilatau genap.
TextWindow.Write("berikan satu bilangan: ")num = TextWindow.ReadNumber()remainder = Math.Remainder(num, 2)If (remainder = 0) Then
TextWindow.WriteLine("ini bilangan genap")Else
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
22/90
Muhammad Banda Selamat Hal ke 22 dari 90
TextWindow.WriteLine("ini bilangan ganjil")EndIf
Tampilan program setelah dijalankan:
Gambar 12 – Genap atau ganjil
Program ini memperkenalkan kita operasi baru yang sangat berguna,Math.Remainder . dan seperti yang telah kita lihat, Math.Remainder akan
membagi bilangan pertama dengan bilangan kedua dan memberikan nilaisisa pembagaiannya.
PercabanganIngat, di bab dua kita telah belajar bahwa komputer memproses satu programdalam satu waktu, berurut dari atas hingga ke bawah. Namun, ada jugapernyataan khusus yang dapat membuat komputer untuk meloncat kepernyataan lainnya. Coba lihat program berikut:
i = 1start:TextWindow.WriteLine(i)i = i + 1If (i < 25) Then
Goto startEndIf
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
23/90
Muhammad Banda Selamat Hal ke 23 dari 90
Gambar 13 – Penggunaan Goto
Pada program tersebut, kita telah menetapkan nilai 1 pada variabel i.kemudian kita tambahkan satu baris pernyataan yang diakhiri dengan tandatitik dua (:)
start:
ini disebut sebagai label . Label seperti juga pembatas buku (bookmark)adalah kata yang dimengerti oleh komputer. Kita dapat memberi label apa
saja dan sebanyak yang kita inginkan di dalam program, sepanjang namanyaunik.
Pernyataan lain yang menarik adalah:
i = i + 1
pernyataan ini mengatakan pada komputer untuk menambah 1 ke variabel i dan tetapkan lagi ia sebagai variabel i. sehingga bila sebelum pernyataan itu,
nilai i adalah 1 maka nilainya menjadi 2 setelah pernyataan itu dijalankan.Dan akhirnya,
If (i < 25) ThenGoto start
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
24/90
Muhammad Banda Selamat Hal ke 24 dari 90
EndIf
Ini adalah bagian yang mengatakan pada komputer bahwa bila nilai i kurang
dari 25, maka mulailah menjalankan pernyataan dari label start .
Eksekusi tanpa akhirPernyataan Goto dapat membuat kita meminta komputer untuk mengerjakansesuatu berulang-ulang kali. Sebagai contoh, kita dapat susun kembaliprogram genap ganjil dan memodifikasinya seperti di bawah, dan program iniakan berjalan terus menerus. Kita dapat menghentikan program ini denganmenekan tombol Close (X) button pada pojok kanan atas jendelanya.
begin:TextWindow.Write("berikan satu bilangan: ")num = TextWindow.ReadNumber()remainder = Math.Remainder(num, 2)If (remainder = 0) Then
TextWindow.WriteLine("bilangan genap")Else
TextWindow.WriteLine("bilangan ganjil")EndIfGoto begin
Gambar 14 – Genap atau ganjil berjalan tanpa henti
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
25/90
Muhammad Banda Selamat Hal ke 25 dari 90
Bab 5
Pengulangan
ForMari kita lihat kembali program yang telah kita tulis di bab sebelumnya.
i = 1
start:TextWindow.WriteLine(i)i = i + 1If (i < 25) Then
Goto startEndIf
Program ini mencetak angka dari 1 hingga 24 secara berurutan. Prosesmengurutkan variabel sangat umum di dalam pemrograman karena bahasa
pemrograman biasanya memberikan metode yang lebih mudah untukmelakukannya. Program di atas sebenarnya sama saja dengan programberikut ini:
For i = 1 To 24TextWindow.WriteLine(i)
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
26/90
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
27/90
Muhammad Banda Selamat Hal ke 27 dari 90
Gambar 16 – hanya bilangan ganjil
Step 2 sebagai bagian dari pernyataan For meminta komputer untukmenaikkan nilai i dua angka yang biasanya hanya 1. Dengan menggunakanStep kita dapat menetapkan berapa kenaikan nilai yang kita inginkan.Bahkan kita dapat menetapkan nilai negatif sehingga komputer akanmenghitung mundur, seperti contoh di bawah ini:
For i = 10 To 1 Step -1TextWindow.WriteLine(i)
EndFor
Gambar 17 – Menghitung mundur
WhileWhile adalah metode pengulangan (loop) yang lainnya, sangat bergunakhususnya bila hitungan loop itu tidak diketahui. Jika loop For dijalankanmengikuti hitungan waktu tertentu, loop While dijalankan hingga suatukondisi terpenuhi. Contoh di bawah ini, kita membagi dua suatu bilangan
hingga diperoleh nilai lebih besar dari 1.
number = 100While (number > 1)
TextWindow.WriteLine(number)number = number / 2
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
28/90
Muhammad Banda Selamat Hal ke 28 dari 90
EndWhile
Gambar 18 – Loop pembagian dua
Pada program di atas, kita berikan nilai 100 ke number dan menjalankanpengulangan while sebanyakmungkin selama nilainya masihlebih besar dari 1. Di dalam
pengulangan, kita cetak suatubilangan dan kemudianmembaginya dengan dua,sehingga menjadi setengahnya.Seterusnya keluaran program adalah suatu nilai nilanya setengah dari nilaisebelumnya.
Sangat sulit untuk menulis program ini menggunakan pengulangan For,karena kita tidak tahu seberapa banyak harus melakukan pengulangan.Pengulangan while lebih mudah untuk dicek kondisinya sehingga kita dapatmeminta komputer untuk melanjutkan atau menghentikan pengulangan.
Satu hal yang menarik adalah bahwa setiap pengulangan while loop dapat diperpendek dengan pernyataan If..Then. Sebagai contoh, program di atasdapat kembali di tulis seperti di bawah ini, tanpa mengubah hasil akhirnya.
number = 100startLabel:TextWindow.WriteLine(number)
number = number / 2
If (number > 1) ThenGoto startLabel
EndIf
Kenyataannya, secara internal komputermenulis setiap loop while sebagaipernyataan if...Then diikuti oleh satuatau lebih pernyataan Goto.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
29/90
Muhammad Banda Selamat Hal ke 29 dari 90
Bab 6
Mulai belajar Grafik
Sejauh ini di semua contoh yang kita gunakan, kita menggunakanTextWindow untuk memberikan gambaran dasar bahasa Small Basic.Padahal, Small Basic memiliki kemampuan grafik yang luar biasa yang akanmulai kita jelajahi pada bab ini.
Berkenalan dengan GraphicsWindowSeperti halnya TextWindow yang memungkinkan kita untuk bekerja dengan
Teks dan angka, Small Basic juga menyediakan GraphicsWindow yang dapatkita gunakan untuk menggambar berbagai objek. Coba kita lihat tampilandari GraphicsWindow.
GraphicsWindow.Show()
Jika program ini kita jalankan, kita lihat bahwa selain menggunakan jendelateks berwarna hitam, kita juga mendapatkan jendela berwarna putih sepertiyang ditampilkan pada Gambar 23. Untuk sementara, tidak ada yang bisadilakukan pada jendela tersebut. Tetapi jendela ini akan menjadi dasar untukbekerja di bab ini. Kita dapat menutup jendela tersebut dengan memilihtombol ‘X’yang ada di pojok kanan atas.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
30/90
Muhammad Banda Selamat Hal ke 30 dari 90
Figure 19 - An empty Graphics Window
Menyiapkan jendela grafikJendela grafik memungkinkan kita untuk menata tampilannya mengikutikeinginan kita. Kita dapat mengubah judul, latar belakang dan ukurannya.Coba kita lakukan sedikit modifikasi, agar terbiasa dengan jendela ini.
GraphicsWindow.BackgroundColor = "SteelBlue"GraphicsWindow.Title = "My Graphics Window"GraphicsWindow.Width = 320GraphicsWindow.Height = 200GraphicsWindow.Show()
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
31/90
Muhammad Banda Selamat Hal ke 31 dari 90
Berikut hasil penataan jendela yang telah kita lakukan. Kita dapat mengubahwarna latar belakang dengan pilihan warna yang ada di lampiran B. Cobalahmodifikasi tampilan jendela tersebut.
Gambar 20 – Tampilan jendela grafik
Menggambar garisJika kita telah menjalankan GraphicsWindow, kita bisa menggambarkanbentuk-bentuk geometrik, teks dan bahkan gambar di jendela tersebut. Marikita mulai dengan menggambarkan bentuk yang sederhana. Berikut iniprogram yang kita gunakan untuk menggambarkan sepasang garis di jendelagrafik.
GraphicsWindow.Width = 200GraphicsWindow.Height = 200GraphicsWindow.DrawLine(10, 10, 100, 100)GraphicsWindow.DrawLine(10, 100, 100, 10)
Gambar 21 – garis silang
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
32/90
Muhammad Banda Selamat Hal ke 32 dari 90
Dua baris pada bagian awalprogram mengatur jendela dandua baris berikutnyamenggambarkan garis silang. Duaangka pertama yang mengikutiDrawLine menetapkan titikkoordinat awal x dan y dan duanilai berikutnya adalah koordinat akhir. Hal yang menarik dengan komputergrafik adalah bahwa koordinat (0, 0) di mulai dari sudut kiri atas jendela.Hasilnya koordinat ruang jendela tersebut dapat dianggap sebagai kuadranke dua.
Gambar 22 – koordinat
Jika kita kembali ke baris program, sangat menarik bahwa kita dapatmengubah tampilan garis, seperti warna dan ketebalannya. Coba kita ubah
warna garis menggunakan program di bawah ini.
GraphicsWindow.Width = 200GraphicsWindow.Height = 200GraphicsWindow.PenColor = "Green"GraphicsWindow.DrawLine(10, 10, 100, 100)GraphicsWindow.PenColor = "Gold"GraphicsWindow.DrawLine(10, 100, 100, 10)
Selain menggunakan nama untukwarna yang sedang kita gunakan, kita
juga dapat menggunakan notasi warnaweb (#RRGGBB). Contoh, #FF0000berarti merah, #FFFF00 untuk kuning,dan seterusnya.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
33/90
Muhammad Banda Selamat Hal ke 33 dari 90
Gambar 23 – mengubah warna garis
Berikutnya kita akan mengubah ukuran garisnya. Pada program di bawah inikita ubah ketebalan garis menjadi 10, tebal standarnya adalah 1.
GraphicsWindow.Width = 200GraphicsWindow.Height = 200GraphicsWindow.PenWidth = 10GraphicsWindow.PenColor = "Green"GraphicsWindow.DrawLine(10, 10, 100, 100)GraphicsWindow.PenColor = "Gold"GraphicsWindow.DrawLine(10, 100, 100, 10)
Gambar 24 – Ketebalan warna garis
PenWidth dan PenColor mengubah pena yang digunakan untukmenggambarkan garis. Kedua operasi itu tidak hanya mengubah tampilangaris, tetapi juga semua bentuk yang dibuat setelah sifat-sifatnya di ubah.
Dengan menggunakan pernyataan pengulangan, kita dengan mudahmembuat program yang menggambarkan banyak garis dan sekaligusmenambah ketebalan pena.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
34/90
Muhammad Banda Selamat Hal ke 34 dari 90
GraphicsWindow.BackgroundColor = "Black"GraphicsWindow.Width = 200GraphicsWindow.Height = 160GraphicsWindow.PenColor = "Blue"
For i = 1 To 10GraphicsWindow.PenWidth = iGraphicsWindow.DrawLine(20, i * 15, 180, i * 15)
endfor
Gambar 25 – Berbagai ukuran ketebalan pena
Bagian yang paling menarik pada program di atas adalah pengulangan,dimana kita tingkatkan nilai PenWidth setiap kali loop dijalankan danmenggambarkan baris baru di bawah baris sebelumnya.
Menggambar dan mengisi bentukKetika kita menggambarkan suatu bentuk, selalu ada dua operasi yangbekerja, yaitu operasi Draw dan operasi Fill . Operasi Draw menggambarkangaris batas bentuk tersebut dengan menggunakan pena, dan operasi Fillmewarnai bentuk tersebut menggunakan kuas. Sebagai contoh padaprogram berikut, terdapat dua persegi panjang, yang satu digambar denganmenggunakan pena dan satunya lagi diisi dengan kuas berwarna hijau.
GraphicsWindow.Width = 400GraphicsWindow.Height = 300
GraphicsWindow.PenColor = "Red"GraphicsWindow.DrawRectangle(20, 20, 300, 60)
GraphicsWindow.BrushColor = "Green"
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
35/90
Muhammad Banda Selamat Hal ke 35 dari 90
GraphicsWindow.FillRectangle(60, 100, 300, 60)
Gambar 26 menggambar dan mewarnai
Untuk menggambar atau mewarnai persegi panjang, kita perlu empat nilai.Dua nilai pertama merupakan koordinat x dan y dari pojok kanan atas bidangpersegi tersebut. Nilai ketiga merincikan lebar bidang persegi itu dan nilaikeempat menentukan tingginya. Program berikut menghasilkan bentuk-bentuk elips.
GraphicsWindow.Width = 400GraphicsWindow.Height = 300
GraphicsWindow.PenColor = "Red"GraphicsWindow.DrawEllipse(20, 20, 300, 60)
GraphicsWindow.BrushColor = "Green"GraphicsWindow.FillEllipse(60, 100, 300, 60)
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
36/90
Muhammad Banda Selamat Hal ke 36 dari 90
Gambar 27 – menggambar dan mewarnai elips
Elips adalah kasus umum dari lingkaran. Jika kita ingin menggambar
lingkaran, kita harus memberikan nilai lebar dan tinggi yang sama.
GraphicsWindow.Width = 400GraphicsWindow.Height = 300
GraphicsWindow.PenColor = "Red"GraphicsWindow.DrawEllipse(20, 20, 100, 100)
GraphicsWindow.BrushColor = "Green"
GraphicsWindow.FillEllipse(100, 100, 100, 100)
Gambar 28 – Lingkaran
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
37/90
Muhammad Banda Selamat Hal ke 37 dari 90
Bab 7
Bermain dengan Bentuk
Bab ini akan membawa kita bermain-main dengan apa yang telah kita pelajarisebelumnya. Bab ini berisi contoh-contoh yang memperlihatkan berbagaicara menarik dalam menggabungkan apa yang telah kita pelajari untukmenghasilkan tampilan program yang menawan.
RectangaloreProgram berikut menggambarkan bidang persegi yang berulang, danukurannya semakin besar.
GraphicsWindow.BackgroundColor = "Black"GraphicsWindow.PenColor = "LightBlue"GraphicsWindow.Width = 200GraphicsWindow.Height = 200
For i = 1 To 100 Step 5GraphicsWindow.DrawRectangle(100 - i, 100 - i, i * 2, i
* 2)EndFor
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
38/90
Muhammad Banda Selamat Hal ke 38 dari 90
Gambar 29 - Rectangalore
CirctacularMirip dengan program sebelumnya, menggambarkan lingkaran yang secaraberulang dan bertambah ukurannya.
GraphicsWindow.BackgroundColor = "Black"GraphicsWindow.PenColor = "LightGreen"GraphicsWindow.Width = 200GraphicsWindow.Height = 200
For i = 1 To 100 Step 5GraphicsWindow.DrawEllipse(100 - i, 100 - i, i * 2, i *
2)
EndFor
Gambar 30 – Circtacular
PengacakanProgram ini menggunakan GraphicsWindow. GetRandomColor untukmenghasilkan warna acak pada kuas dan kemudian menggunakan
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
39/90
Muhammad Banda Selamat Hal ke 39 dari 90
Math.GetRandomNumber untuk menetapkan koordinat x dan y padalingkarannya. Kedua operasi ini dapat dikombinasikan dengan cara-cara yangmenarik untuk menghasilkan program-program yang memberikan tampilanberbeda setiap kali ia dijalankan.
GraphicsWindow.BackgroundColor = "Black"For i = 1 To 1000
GraphicsWindow.BrushColor =GraphicsWindow.GetRandomColor()
x = Math.GetRandomNumber(640)y = Math.GetRandomNumber(480)GraphicsWindow.FillEllipse(x, y, 10, 10)
EndFor
Gambar 31 – Pengacakan
FraktalProgram berikut ini dapat menggambarkan fraktal segitiga sederhana denganmenggunakan bilangan acak. Suatu fraktal adalah bangun geometrik yangdapat dibagi menjadi bagian-bagian ang lebih kecil, yang setiap bagiantersebut secara tepat menyerupai bentuk induknya. Pada kasus ini, program
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
40/90
Muhammad Banda Selamat Hal ke 40 dari 90
kita menggambarkan ratusan bentuk segitiga yang masing-masingnyamerupakan duplikat dari segitiga induk dalam ukuran yang lebih kecil. Olehkarena program berjalan dalam waktu beberapa saat, kita akan dapat melihatbagaimana segitiga tersebut terbentuk dari hanya titik-titik. Logikanyasendiri agak sulit untuk dijelaskan dan kita masih perlu mengenalnya lebih
jauh dengan banyak latihan.
GraphicsWindow.BackgroundColor = "Black"x = 100y = 100
For i = 1 To 100000r = Math.GetRandomNumber(3)ux = 150uy = 30If (r = 1) then
ux = 30uy = 1000
EndIf
If (r = 2) Thenux = 1000
uy = 1000EndIf
x = (x + ux) / 2y = (y + uy) / 2
GraphicsWindow.SetPixel(x, y, "LightGreen")EndFor
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
41/90
Muhammad Banda Selamat Hal ke 41 dari 90
Figure 32 - Triangle Fractal
Jika kita ingin melihat bagaimana titik-titik secara perlahan membentukfraktal, kita dapat menambahkan penundaan waktu loop denganmenggunakan operasi Program. Delay . operasi ini akan menunda waktudalam beberapa milidetik sesuai dengan yang kita tetapkan. Berikutmodifikasi programnya, baris yang diubah dicetak tebal.
GraphicsWindow.BackgroundColor = "Black"x = 100y = 100
For i = 1 To 100000r = Math.GetRandomNumber(3)ux = 150uy = 30If (r = 1) then
ux = 30uy = 1000
EndIf
If (r = 2) Then
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
42/90
Muhammad Banda Selamat Hal ke 42 dari 90
ux = 1000uy = 1000
EndIf
x = (x + ux) / 2y = (y + uy) / 2
GraphicsWindow.SetPixel(x, y, "LightGreen")Program.Delay(2)
EndFor
Menambah waktu tunda akan membuat program menjadi lebih lambat. Cobaubah beberapa kali nilai tundanya dan tentukan waktu yang sesuai dengankeinginan.
Modifikasi lain yang dapat kita buat terhadap program ini adalah denganmengganti baris berikut:
GraphicsWindow.SetPixel(x, y, "LightGreen")
dengan
color = GraphicsWindow.GetRandomColor()GraphicsWindow.SetPixel(x, y, color)
Penggantian ini akan membuat program menggambarkan pixel-pixel padasegitiga dengan beragam warna.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
43/90
Muhammad Banda Selamat Hal ke 43 dari 90
Bab 8
Grafik Kura-kura
LogoDi tahun 1970 an ada bahasa pemrograman yang sederhana tetapi sangatberjaya, digunakan oleh beberapa peneliti, dan diberi nama Logo. Nama logoini berganti setelah seseorang menambahkan “grafik kura-kura ” ke dalambahasa tersebut dan membuat “seekor kura-kura ” tampil di layar sambilmenanggapi berbagai perintah seperti Move Forward, Turn Right, Turn Left,dan lainnya. Dengan menggunakan kura-kura itu, orang dapat menggambarberbagai bentuk yang menarik di layar komputer. Hal ini membuat bahasapemrograman menjadi dapat diakses oleh banyak orang dari berbagai usia,dan menjadi penyebab utama meledaknya popularitas bahasa pemrogramandi tahun 1980 an.
Small Basic juga dilengkapi dengan objek Turtle (kura-kura) yang dapatmerespon banyak program yang dipanggil dari dalam program Small Basic.
Pada bab ini kita akan menggunakan kura-kura untuk menggambarkan grafikdi layar komputer kita.
Sang Kura-kuraUntuk memulainya, kita harus menampilkan kura-kura tersebut di layar. Kitadapat menggunakan satu baris program sederhana untuk keperluan itu.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
44/90
Muhammad Banda Selamat Hal ke 44 dari 90
Turtle.Show()
Saat program ini dijalankan, akan
terlihat jendela putih denganseekor kura-kura pada bagianpusatnya. Inilah kura-kura yangakan mengikuti perintah kita danmenggambarkan apa saja yangkita minta.
Gambar 33 – kura-kura
Bergerak dan menggambarSalah satu perintah yang dimengerti oleh kura-kura adalah Move . Operasi inimemerlukan suatu nilai sebagai masukan. Nilai ini menjadi patokan sebarapa
jauh kura-kura itu bergerak. Misalkan pada contoh berikut, kita memintakura-kura untuk bergerak sejauh 100 piksel.
Turtle.Move(100)
Saat program dijalankan, kita dapat melihat bagaimana kura-kura secaraperlahan bergerak 100 piksel ke arah atas. Selama kura-kura itu bergerak, ia
Kita tidak perlu memanggil Show()ketika menggunakan operasi padaTurtle. Turtle secara otomatis terlihatmanakala salah satu operasinya di
jalankan.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
45/90
Muhammad Banda Selamat Hal ke 45 dari 90
juga menggambar garis di belakangnya. Saat kura-kura berhenti, hasilnyakurang lebih seperti pada Gambar 38.
Gambar 34 – Bergerak sepanjang seratus piksel
Menggambar kotakSuatu segi empat memiliki empat sisi, dua vertikal dan dua horisontal. Untukmenggambarkan segi empat, kita perlu membuat kura-kura menggambarkansuatu garis, belok ke kanan dan menggambarkan garis yang lain dan
melanjutkannya hingga keempat sisi diselesaikan. Jika kita terjemahkan kedalam program, maka tampilannya adalah sebagai berikut:
Turtle.Move(100)Turtle.TurnRight()Turtle.Move(100)Turtle.TurnRight()Turtle.Move(100)Turtle.TurnRight()Turtle.Move(100)Turtle.TurnRight()
Ketika kita menjalankan program ini, kita dapat menyaksikan kura-kuramenggambarkan suatu segiempat, satu garis dalam satu waktu dan hasilnyaadalah seperti gambar di bawah ini.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
46/90
Muhammad Banda Selamat Hal ke 46 dari 90
Gambar 35 – Kura-kura menggambar segiempat
Coba perhatikan bahwa kita telah menggunakan dua instruksi secaraberulang-ulang, sebanyak empat kali tepatnya. Dan kita telah mempelajaribahwa perintah berulang seperti itu dapat dijalankan dengan menggunakanloop. Jadi jika kita mengambil program di atas dan memodifikasinyamenggunakan loop For..EndFor , kita akan mendapatkan program yang lebihsederhana.
For i = 1 To 4Turtle.Move(100)Turtle.TurnRight()
EndFor
Mengganti warnaKura-kura menggambar di jendela grafik yang sama dengan yang kita lihatpada bab sebelumnya. Ini berarti semua operasi yang kita pelajari tetapberlaku disini. Sebagai contoh, program berikut akan menggambarkan segiempat yang setiap sisinya memiliki warna berbeda.
For i = 1 To 4GraphicsWindow.PenColor =
GraphicsWindow.GetRandomColor()
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
47/90
Muhammad Banda Selamat Hal ke 47 dari 90
Turtle.Move(100)Turtle.TurnRight()
EndFor
Gambar 36 – Pengubahan warna
Menggambar bentuk yang lebih rumitSang kura-kura, selain dapat melakukan operasi TurnRight dan TurnLeft ,
juga memiliki operasi Turn . Operasi ini memerlukan satu input yangmenentukan besarnya sudut rotasi. Dengan menggunakan operasi ini, kitadapat menggambarkan berapa saja sisi poligon. Program berikut inimenggambarkan hexagon ( poligon enam sisi).
For i = 1 To 6Turtle.Move(100)Turtle.Turn(60)
EndFor
Cobalah program ini apakah benar-benar dapat menggambarkan hexagon.Amati bahwa sudut antar sisi adalah 60 derajat, sehingga kita gunakanTurn(60) . Untuk poligon seperti itu, yang semua sisinya sama, sudut antarsisi dapat dengan mudah dihitung dengan cara membagi 360 terhadapbanyaknya sisi. Lengkapi dengan informasi ini dan gunakan variabel, kita
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
48/90
Muhammad Banda Selamat Hal ke 48 dari 90
dapat menulis program generik yang bagus yang dapat menggambar berapasaja sisi poligon.
sides = 12
length = 400 / sidesangle = 360 / sides
For i = 1 To sidesTurtle.Move(length)Turtle.Turn(angle)
EndFor
Dengan menggunakan program ini, kita dapat menggambar poligon apa sajahanya dengan mengubah variabel sides . Bila nilainya kita masukkan 4 makaakan kita dapatkan bentuk empat persegi. Dan bila nilainya kita masukkanmenjadi misalnya 50, maka hasilnya adalah poligon yang bentuknya miripdengan lingkaran.
Gambar 37 - Poligon 12 sisi
Dengan teknik yang telah kita pelajari d atas, kita dapat membuat kura-kuramenggambarkan banyak lingkaran setiap saat dengan sedikit pergeseransehingga menghasilkan tampilan yang menarik.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
49/90
Muhammad Banda Selamat Hal ke 49 dari 90
sides = 50length = 400 / sidesangle = 360 / sides
Turtle.Speed = 9
For j = 1 To 20For i = 1 To sides
Turtle.Move(length)Turtle.Turn(angle)
EndForTurtle.Turn(18)
EndFor
Program di atas memiliki dua loop For..EndFor , satu di dalam yang lain.Loop yang di dalam ( i = 1 to sides ) mirip dengan program poligon danberperan dalam menggambarkan lingkaran. Loop yang di luar ( j = 1 to 20 )berperan dalam memutar kura-kura sedikit demi sedikit pada setiap lingkaranyang digambarnya. Pernyataan ini memerintahkan pada kura-kura untukmenggambar 20 lingkaran.Setelah menggabungkan semuapernyataan itu, program ini
menghasilkan pola yang sangatmenarik seperti terlihat padaGambar di bawah ini.
Pada program di atas, kita telahmembuat Turtle bergerak lebih cepat
dengan men-set kecepatan menjadi 9.Kita dapat memberi nilai 1 hingga 10untuk mengatur kecepatan Turtle.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
50/90
Muhammad Banda Selamat Hal ke 50 dari 90
Gambar 38 – Lingkaran bergerak
Bergerak ke mana sajaKita dapat membuat kura-kura tidak menggambar dengan memanggiloperasi PenUp . Perintah ini memungkinkan kura-kura untuk bergerakkemana saja di layar tanpa membuat garis. Dengan memanggil PenDown
akan membuat kura-kura menggambar lagi. Hal ini dapat kita gunakan untukmenghasilkan efek yang menarik, misalnya garis putus-putus. Berikutprogram yang menggunakan kemampuan ini untuk menggambarkan poligongaris putus-putus.
sides = 6
length = 400 / sidesangle = 360 / sides
For i = 1 To sidesFor j = 1 To 6
Turtle.Move(length / 12)Turtle.PenUp()Turtle.Move(length / 12)
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
51/90
Muhammad Banda Selamat Hal ke 51 dari 90
Turtle.PenDown()EndForTurtle.Turn(angle)
EndFor
Lagi-lagi program ini memiliki dua loop. Loop bagian dalammenggambarkan satu garis putus-putus, dan loop yang luar menentukanseberapa banyak garis yang perlu digambar. Pada contoh ini, kitamenggunakan nilai untuk variabel sides sehingga kita dapatkan hexagonbergaris putus-putus.
Gambar 39 – menggunakan PenUp dan PenDown
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
52/90
Muhammad Banda Selamat Hal ke 52 dari 90
Bab 9
Subrutin
Seringkali pada saat menulis program, kita dihadapkan pada situasi harusmenjalankan langkah-langkah yang sama berulang kali. Pada kasus-kasusseperti ini, tidaklah bijak bila kita menulis pernyataan yang sama berkali-kali.Ini lah waktu yang tepat untuk menggunak Subrutin .
Subrutin adalah bagian dari kodedi dalam program yang lebihbesar yang digunakan untukmengerjakan sesuatu secarakhusus, dan dapat dipanggil darimana saja di dalam program.Subrutin dikenali dari nama yangmengikutinya yaitu kata kunci Sub dan diakhiri oleh kata EndSub . Sebagaicontoh, potongan program berikut memperlihatkan subrutin yang diberinama PrintTime , dan subrutin ini bertugas untuk mencetak waktu saat ini ke
jendela teks.
Sub PrintTimeTextWindow.WriteLine(Clock.Time)
EndSub
Ingatlah, kita hanya dapat memanggil
subrutin satu kali dalam satu programSmall Basic. Kita tidak dapatmemanggil subrutin itu dari programlain.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
53/90
Muhammad Banda Selamat Hal ke 53 dari 90
Berikutnya adalah program yang memanggil subrutin di atas dari sebarangtempat di dalam program.
PrintTime()TextWindow.Write("Enter your name: ")name = TextWindow.Read()TextWindow.Write(name + ", the time now is: ")PrintTime()
Sub PrintTimeTextWindow.WriteLine(Clock.Time)
EndSub
Gambar 40 – Memanggil Subrutin Sederhana
Kita dapat menjalankan subrutin dengan memanggil SubroutineName() .Sebagaimana biasa, tanda kurung “()” diperlukana di sini untuk memberitahukomputer bahwa kita akan menjalankan subrutin.
Keuntungan menggunakan subrutinSubrutin membantu mengurangi banyaknya kode yang harus kita ketik.Sekali kita menulis subrutin PrintTime , kita dapat memanggilnya dari manasaja dan akan mencetak waktu sekarang.
Subrutin dapat membantuk memilah-milah problem yang rumit menjadibagian-bagian yang lebih sederhana. Misalkan kita punya persamaan yangrumit untuk diselesaikan, kita dapat gunakan beberapa subrutin yang menjadisolusi pada bagian-bagian kecil persamaan tersebut. Kemudian kita dapatmengumpulkan hasil itu untuk mendapatkan solusi bagi persamaan awalnya.
Subrutin juga dapat memudahkan kita untuk membaca program. Jika kitadapat memberikan nama subrutin yang baik untuk bagian yang seringdijalankan pada program, maka program itu akan lebih dibaca dan difahami.Hal ini penting bila kita juga ingin memahami program orang lain danprogram kita dimengerti oleh orang lain. Kadang-kadang, hal ini juga sangat
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
54/90
Muhammad Banda Selamat Hal ke 54 dari 90
membantu pada saat kita membaca program yang kita susun, seminggukemudian.
Menggunakan variabel
Kita dapat mengakses dan menggunakan variabel apa saja yang ada dalamprogram untuk suatu subrutin. Sebagai contoh program berikut menerimadua bilangan dan mencetak bilangan terbesar dari keduanya. Perhatikanbahwa variabel max digunakan di dalam dan di luar subrutin.
TextWindow.Write("Enter first number: ")num1 = TextWindow.ReadNumber()TextWindow.Write("Enter second number: ")num2 = TextWindow.ReadNumber()
FindMax()TextWindow.WriteLine("Maximum number is: " + max)
Sub FindMaxIf (num1 > num2) Then
max = num1Else
max = num2EndIf
EndSub
Dan keluaran programnya adalah sebagai berikut:
Gambar 41 – Nilai Maksimum dengan menggunakan Subrutin
Mari kita coba contoh lain untuk menggambarkan penggunaan Subrutin. Kitaakan membuat program yang menghitung banyak titik dan menyimpannyadalam variabel x dan y. Karena itu dinamakan SubrutinDrawCircleUsingCenter yang bertugas menggambar lingkaranmenggunakan x dan y sebagai pusat.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
55/90
Muhammad Banda Selamat Hal ke 55 dari 90
GraphicsWindow.BackgroundColor = "Black"GraphicsWindow.PenColor = "LightBlue"GraphicsWindow.Width = 480For i = 0 To 6.4 Step 0.17
x = Math.Sin(i) * 100 + 200y = Math.Cos(i) * 100 + 200
DrawCircleUsingCenter()EndFor
Sub DrawCircleUsingCenterstartX = x - 40startY = y - 40
GraphicsWindow.DrawEllipse(startX, startY, 120, 120)EndSub
Gambar 42 – Contoh Grapfik dari Subrutin
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
56/90
Muhammad Banda Selamat Hal ke 56 dari 90
Memanggil subrutin di dalam pengulanganTerkadang subrutin dipanggil dari dalam loop, menjalankan baris-barisperintah yang sama tetapi dengan nilai-nilai yang berbeda pada satu ataulebih variabel. Sebagai contoh, jika kita memiliki subrutin bernamaPrimeCheck yang dapat membedakan apakah suatu nilai merupakan bilanganprima atau bukan, maka kita dapat menuliskan program yang membolehkankita untuk menginput suatu nilai dan kita dapat mengetahui nilai itumerupakan bilangan prima atau bukan dengan menggunakan subrutin ini.Program berikut menampilkan keadaan tersebut.
TextWindow.Write("Enter a number: ")i = TextWindow.ReadNumber()isPrime = "True"PrimeCheck()If (isPrime = "True") Then
TextWindow.WriteLine(i + " is a prime number")Else
TextWindow.WriteLine(i + " is not a prime number")EndIf
Sub PrimeCheckFor j = 2 To Math.SquareRoot(i)
If (Math.Remainder(i, j) = 0) ThenisPrime = "False"Goto EndLoop
EndIfEndfor
EndLoop:EndSub
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
57/90
Muhammad Banda Selamat Hal ke 57 dari 90
Subrutin PrimeCheck mengambil nilai dari i dan mencoba membaginyadengan angka yang lebih kecil. Bila pembagian itu tidak bersisa, maka i bukan bilangan prima. Pada titik itu, subrutin menetapkan nilai isPrime adalah “False” dan kondisinya terpenuhi. Jika nilainya tidak dapat dibagi olehangka yang lebih kecil, maka isPrime tetap bernilai “True.”
Gambar 43 – Cek Bilangan Prima
Nah sekarang kita telah memiliki subrutin yang dapa menguji bilangan prima,mungkin saja kita dapat menggunakannya untuk mendaftarkan semua
bilangan prima dibawah 100. Dengan mudah kita dapat memodifikasiprogram di atas dan memanggil PrimeCheck dari dalam looping. Hal ini akanmemberikan subrutin suatu nilai yang berbeda setiap kali looping dijalankan.Mari kita lihat bagaimana hal tersebut dilakukan dengan contoh berikut dibawah ini.
For i = 3 To 100isPrime = "True"PrimeCheck()
If (isPrime = "True") ThenTextWindow.WriteLine(i)
EndIfEndFor
Sub PrimeCheckFor j = 2 To Math.SquareRoot(i)
If (Math.Remainder(i, j) = 0) ThenisPrime = "False"Goto EndLoop
EndIfEndfor
EndLoop:EndSub
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
58/90
Muhammad Banda Selamat Hal ke 58 dari 90
Pada program di atas, nilai i selalu diperbaharui setiap kali looping di jalankan. Di dalam looping, dilakukan pemanggilan terhadap subrutinPrimeCheck . Subrutin PrimeCheck kemudian mengambil nilai i danmenghitung apakah i merupakan bilangan prima. Hasilnya disimpan kedalam variabel isPrime yang kemudian diakses oleh loop dari luar subrutin.Nilai i kemudian di tampilkan bila merupakan bilangan primer. Dan karenaloop di mulai dari 3 hingga angka 100, maka kita medapatkan semuabilangna prima dari 3 hingga 100. Berikut hasil dari program tersebut.
Gambar 44 – Bilangan Prima
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
59/90
Muhammad Banda Selamat Hal ke 59 dari 90
Bab 10
Senarai
Sampai disini kita harus bijak menggunakan variabel – tetapi sejauh inisegalanya masih menyenangkan bukan?
Mari kita kembali sejenak, tinjau kembali program pertama yang kita tulis:
TextWindow.Write("Enter your Name: ")
name = TextWindow.Read()TextWindow.WriteLine("Hello " + name)
Pada program ini, kita menerima dan menyimpan nama dari pengguna kedalam suatu variabel yang kita sebut sebagai nama . Kemudian kita menyapa“Hello” ke pengguna. Katakanlah, ada lebih dari satu pengguna, misalkan 5pengguna. Bagaimana kita menyimpan semua nama mereka? Salah satucara melakukannya adalah sebagai berikut:
TextWindow.Write("User1, enter name: ")name1 = TextWindow.Read()TextWindow.Write("User2, enter name: ")name2 = TextWindow.Read()TextWindow.Write("User3, enter name: ")name3 = TextWindow.Read()
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
60/90
Muhammad Banda Selamat Hal ke 60 dari 90
TextWindow.Write("User4, enter name: ")name4 = TextWindow.Read()TextWindow.Write("User5, enter name: ")name5 = TextWindow.Read()
TextWindow.Write("Hello ")TextWindow.Write(name1 + ", ")TextWindow.Write(name2 + ", ")TextWindow.Write(name3 + ", ")TextWindow.Write(name4 + ", ")TextWindow.WriteLine(name5)
Ketika kita menjalankan program ini, kita mendapatkan hasil seperti ini:
Gambar 45 – Tidak menggunakan senarai
Pastilah ada cara yang lebih baik untuk menuliskan program ini dengan lebihsederhana bukan? Apalagi komputer sangat baik dalam mengerjakan halyang selalu berulang, mengapa kita harus mengulang-ulang kode yang samauntuk setiap pengguna baru? Trik nya disini adalah bagaimanamenggunakan varaibel yang sama untuk menyimpan dan mengambil setiapnama pengguna. Jika kita dapat melakukan hal itu, maka kita dapatmenggunakan looping For yang telah kita pelajari sebelumnya. Disinilah kitamemerlukan bantuan senarai.
Apa itu senarai?Senarai adalah semacam variabel khusus yang dapat menyimpan lebih darisatu nilai dalam satu waktu. Pada dasarnya, itu berarti kita tidak perlumembuat nama1, nama2, nama3, nama4 dan nama5 untuk menyimpanlima nama pengguna, kita hanya perlu menggunakan satu variabel namauntuk menyimpan kelima nama pengguna itu. Cara kita menyimpan banyaknilai dengan menggunakan senarai itu disebut se bagai “index.” Sebagai
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
61/90
Muhammad Banda Selamat Hal ke 61 dari 90
contoh, name[1], name[2], name[3], name[4] dan name[5] semuanyadapat menyimpan masing-masing satu nilai. Angka-angka 1, 2, 3, 4 dan 5dinamakan pengindeks untuk senarai.
Meskipun name[1] , name[2] , name[3] , name[4] dan name[5] semuanyaseperti variabel yang berbeda, dalam realitanya merupakan satu variabel saja.Keuntungan dari sistem penyimpanan berindeks seperti ini adalah kita dapatmenggunakan variabel berindeks lainnya untuk mengakses senarai dari dalamlooping.
Sekarang mari kita lihat bagaimana kita menggunakan pengetahuan ini untukmenulis kembali program kita terdahulu.
For i = 1 To 5TextWindow.Write("User" + i + ", enter name: ")name[i] = TextWindow.Read()
EndFor
TextWindow.Write("Hello ")For i = 1 To 5
TextWindow.Write(name[i] + ", ")EndForTextWindow.WriteLine("")
Kelihatan lebih mudah untuk dibaca bukan? Perhatikan dua baris yangdihitamkan. Baris pertama menyimpan nilai dalam senarai dan baris yangkedua membaca nilai dari senarai. Nilai yang kita simpan di name[1] tidakakan berpengaruh terhadap apa yang kita simpan di name[2] . Sehingga kitadapat memperlakukan name[1] dan name[2] sebagai dua variabel yangberbeda dengan identitas yang sama.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
62/90
Muhammad Banda Selamat Hal ke 62 dari 90
Gambar 46 – Penggunaan Senarai
Program di atas memberikan hasil yang hampir sama dengan program tanpasenarai, kecuali tanda koma pada akhir nama Mantis . Kita dapat memperbaikihal ini dengan menuliskan kembali looping tersebut sebagai berikut:
TextWindow.Write("Hello ")For i = 1 To 5
TextWindow.Write(name[i])If i < 5 Then
TextWindow.Write(", ")EndIf
EndForTextWindow.WriteLine("")
Indeksasi pada senaraiPada program sebelumnya kita telah menggunakan angka sebagai indeksuntuk menyimpan dan memanggil nilai dari senarai. Sebenarnya indeks tidakdibatasi hanya dalam bentuk angka dan dalam penggunaan praktis kita jugadapat menggunakan indeks teks. Sebagai contoh, pada program berikut kita
menanyakan dan menyimpan berbagai informasi kepada pengguna danmenampilkan kembali apa saja yang diminta oleh pengguna.
TextWindow.Write("Enter name: ")user["name"] = TextWindow.Read()TextWindow.Write("Enter age: ")
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
63/90
Muhammad Banda Selamat Hal ke 63 dari 90
user["age"] = TextWindow.Read()TextWindow.Write("Enter city: ")user["city"] = TextWindow.Read()TextWindow.Write("Enter zip: ")user["zip"] = TextWindow.Read()
TextWindow.Write("What info do you want? ")index = TextWindow.Read()TextWindow.WriteLine(index + " = " + user[index])
Gambar 47 – Penggunaan Indeks non angka
Lebih dari satu dimensiMisalkan kita ingin menyimpan nama dan nomor telpon semua teman dankita ingin agar dapat melihat kembali nomor telpon semuanya kapan saja kitaperlukan – semacam buku telpon. Bagaimana bila kita menuliskan sebuah
program untuk itu?
Pada kasus ini, ada dua macam indeks (dikenal juga sebagai dimensi senarai).Asumsikan kita dapat mengidentifikasi setiap teman dengan nama panggilan.Ini akan menjadi indeks pertama di dalam senarai. Sekali kita menggunakanindeks pertama untuk mendapatkan variabel teman, indeks kedua, name danphone number akan membamtu kita untuk mendapatkan nama sebenarnyadan nomor telpon teman tersebut.
Cara kita menyimpan data ini
adalah sebagai berikut:
friends["Rob"]["Name"]= "Robert"friends["Rob"]["Phone"] = "555-6789"
Indeks senarai tidak peka denganperbedaan huruf besar kecil. Sepertivaraibel biasa, kecocokan indekssenarai tidak harus secara tepat cocokdengan huruf besarnya.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
64/90
Muhammad Banda Selamat Hal ke 64 dari 90
friends["VJ"]["Name"] = "Vijaye"friends["VJ"]["Phone"] = "555-4567"
friends["Ash"]["Name"] = "Ashley"friends["Ash"]["Phone"] = "555-2345"
oleh karena kita memiliki dua indeks dalam satu senarai, friends , senarai inidisebut sebagai senarai berdimensi dua.
Sekali kita telah menjalankan program ini, kita dapat menerima input namapanggilan dan menampilkan informasi yang telah kita simpan tentangnya.Berikut program utuh nya:
friends["Rob"]["Name"] = "Robert"friends["Rob"]["Phone"] = "555-6789"
friends["VJ"]["Name"] = "Vijaye"friends["VJ"]["Phone"] = "555-4567"
friends["Ash"]["Name"] = "Ashley"friends["Ash"]["Phone"] = "555-2345"
TextWindow.Write("Enter the nickname: ")nickname = TextWindow.Read()
TextWindow.WriteLine("Name: " +friends[nickname]["Name"])TextWindow.WriteLine("Phone: " +friends[nickname]["Phone"])
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
65/90
Muhammad Banda Selamat Hal ke 65 dari 90
Figure 48 - A simple phone book
Menggunakan senarai untuk menampilkan gridSenarai multidimensi umum digunakan untuk menampilkan grid atau tabel.Grid memiliki baris dan kolom, yang dapat disajikan dalam bentuk duadimensi. Program sederhana yang menyusun kotak ke dalam griddiperlihatkan di bawah ini:
rows = 8columns = 8size = 40
For r = 1 To rowsFor c = 1 To columns
GraphicsWindow.BrushColor =GraphicsWindow.GetRandomColor()
boxes[r][c] = Shapes.AddRectangle(size, size)Shapes.Move(boxes[r][c], c * size, r * size)EndFor
EndFor
Program ini menambahkan kotak persegi dan mengatur posisinya sehinggamembentuk grid 8x8. Selain menempatkan kotak-kotak ini, program tersebut
juga menyimpan kotak-kotak itu ke dalam senarai. Dengan cara ini, akanlebih mudah bagi kita untuk melacak kotak-kotak tersebut dan
menggunakannya kembali pada saat diperlukan.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
66/90
Muhammad Banda Selamat Hal ke 66 dari 90
Gambar 49 – Menempakan kotak di dalam grid
Sebagai contoh, dengan menambahkan kode berikut di akhir program yanglalu, akan menghasilkan animasi kotak yang bergerak ke pojok kiri atas.
For r = 1 To rows
For c = 1 To columnsShapes.Animate( boxes[r][c] , 0, 0, 1000)Program.Delay(300)
EndForEndFor
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
67/90
Muhammad Banda Selamat Hal ke 67 dari 90
Gambar 50 – Melacak lokasi kotak dalam grid
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
68/90
Muhammad Banda Selamat Hal ke 68 dari 90
Bab 11
Kejadian dan interaktifitas
Pada dua bab awal, kita telah berkenalan dengan objek yang memilikiProperty and Operasi . Selain properti dan operasi, beberapa objek jugamemiliki apa yang kita namakan sebagai Event . Event atau kejadian adalahsinyal yang muncul, contohnya, menanggapi aksi dari pengguna, sepertimenggerakkan tetikus ( mouse ) atau meng-klik nya. Pada beberapa situasi,event bisa merupakan kebalikan dari operasi. Dalam kasus operasi, kita
sebagai programmer memanggilnya agar komputer mengerjakan sesuatu,sementara dalam kasus event, komputer menginfokan kita kejadian apa yangsedang terjadi.
Bagaimana mendayagunakan kejadian?Event merupakan sentral untuk mengenalkan interaktifitas di dalam suatuprogram. Jika kita menghendaki pengguna untuk berinteraksi denganprogram, kita harus menggunakan event. Katakanlah kita menulis game Tic-Tac-Toe. Kita tentu menghendaki pengguna untuk memilih permainannyabukan? Disitulah event diperlukan – kita menerima input dari penggunamelalui event yang digunakan. Jika ini agak sulit untuk difahami, coba kitalihat suatu contoh yang sangat sederhana yang akan dapat membantu kitadalam memahami event dan bagaimana kita dapat menggunakannya.
Berikut ini adalah suatu program sederhana yang hanya terdiri dari satupernyataan dan satu subrutin. Subrutin menggunakan operasi ShowMessage
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
69/90
Muhammad Banda Selamat Hal ke 69 dari 90
pada objek GraphicsWindow untuk menampilkan kotak pesan ke padapengguna.
GraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDownGraphicsWindow.ShowMessage("You Clicked.", "Hello")
EndSub
Bagian yang paling menarik yang perlu dicatat pada program di atas adalahbaris dimana kita menetapkan nama subrutin menjadi event MouseDown pada objek GraphicsWindow. Perhatikan bahwa MouseDown lebih miripproperty – alih alih memberinya suatu nilai, kita berikan input subrutinOnMouseDown kepadanya. Inilah hal yang khusus pada event – ketika eventberlangsung, subrutin memanggilnya secara otomatis. Pada kasus ini,subrutin OnMouseDown dipanggil setiap kali pengguna meng-klik dengantetikusnya, pada GraphicsWindow.
Mari kita lanjutkan, jalankan program dan cobalah. Setiap kali kita meng-klikpada GraphicsWindow dengan tetikus, kita akan melihat kotak pesan sepertigambar di bawah ini.
Gambar 51 – Tanggapan terhadap event
Penanganan event seperti ini sangat handal dan memungkinkan kita untukmembuat program yang kreatif dan menarik. Program yang ditulis dengangaya seperti ini biasa disebut program event-driven program.
Kita dapat memodifikasi subrutin OnMouseDown untuk mengerjakan halselain menampilkan kotak pesan. Sebagai contoh, seperti program berikutini, kita dapat menggambarkan noktah biru besar dilokasi pengguna meng-klik tetikusnya.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
70/90
Muhammad Banda Selamat Hal ke 70 dari 90
GraphicsWindow.BrushColor = "Blue"GraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDownx = GraphicsWindow.MouseX - 10y = GraphicsWindow.MouseY - 10GraphicsWindow.FillEllipse(x, y, 20, 20)
EndSub
Gambar 52 – Penanganan Event Mouse Down
Perhatikan program di atas, kita telah menggunakan MouseX dan MouseY untuk mengetahui koordinat tetikus. Kemudian kita gunakan titik itu sebagaititik pusat untuk menggambarkan lingkaran-lingkaran berwarna biru.
Menangani banyak kejadianSebenarnya tidak ada batasan seberapa banyak kita boleh menangani event(kejadian). Bahkan kita mungkin saja hanya menggunakan satu subrutinuntuk menangani banyak event. Hanya saja, satu event hanya dapat ditangaisatu kali. Jika kita menggunakan dua subrutin untuk menangani satu event,maka subrutin kedualah yang menang.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
71/90
Muhammad Banda Selamat Hal ke 71 dari 90
Sebagai ilustrasi, mari kita ambil contoh sebelumnya dan tambahkan subrutinyang menangani pemencetan tombol. Selain itu, gunakan juga subrutin iniuntuk mengubah warna kuas, sehingga ketika kita klik tetikus, kita akandapatkan warna titik yang berbeda.
GraphicsWindow.BrushColor = "Blue"GraphicsWindow.MouseDown = OnMouseDownGraphicsWindow.KeyDown = OnKeyDown
Sub OnKeyDownGraphicsWindow.BrushColor =
GraphicsWindow.GetRandomColor()EndSub
Sub OnMouseDownx = GraphicsWindow.MouseX - 10y = GraphicsWindow.MouseY - 10GraphicsWindow.FillEllipse(x, y, 20, 20)
EndSub
Gambar 53 – Menangani banyak event
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
72/90
Muhammad Banda Selamat Hal ke 72 dari 90
Jika kita jalankan program ini dan klik di jendela, kita akan dapatkan sebuahtitik biru. Sekarang bila kita tekan sembarang tombol dan meng-klik lagi, kitaakan dapatkan warna titik yang berbeda. Sebenarnya yang terjadi pada saatkita menekan tombol adalah subrutin OnKeyDown tereksekusi yang membuatwarna kuas berubah secara acak. Setelah itu, manakala tetikus di klik, titiklingkaran tergambarkan dengan warna baru – sehingga kelihatan sebagai titikdengan warna acak.
Program mengecatSetelah dilengkapi dengan subrutin dan event, sekarang kita dapatmenuliskan program untuk menggambar di jendela. Menariknya, ternyatacukup mudah untuk membuat program seperti itu, kita hanya perlumemecah-mecah masalahnya menjadi lebih kecil dan mudah untuk
diselesaikan. Sebagai langkah awal, mari kita buat program yangmengizinkan pengguna untuk menggerakkan tetikus kemana saja di graphicswindow, dan meninggalkan jejak setiap kali tetikusnya dipindahkan.
GraphicsWindow.MouseMove = OnMouseMove
Sub OnMouseMovex = GraphicsWindow.MouseXy = GraphicsWindow.MouseY
GraphicsWindow.DrawLine(prevX, prevY, x, y)prevX = xprevY = y
EndSub
Ketika program ini dijalankan, baris pertama selalu dimulai dari pojok tepi kiri jendela (0, 0). Kita dapat dapat memperbaiki masalah ini dengan caramengelola event MouseDown dan mencatat nilai prevX dan prevY pada saatevent dijalankan.
Selain itu, kita juga hanya perlu tampilan jejak saat tombol tetikusnya ditekan.Di lain waktu, kita mungkin tidak seharusnya menggambarkan garis. Agarprilaku seperti ini kita hasilkan, kita akan gunakan properti IsLeftButtonDown pada objek Mouse . Properti ini memberi tahu kita apakah tombol kiri sedangditekan atau tidak. Jika benar sedang ditekan, , maka kita akan gambarkangaris, jika tidak maka garis tidak akan muncul di layar.
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
73/90
Muhammad Banda Selamat Hal ke 73 dari 90
GraphicsWindow.MouseMove = OnMouseMoveGraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDownprevX = GraphicsWindow.MouseXprevY = GraphicsWindow.MouseY
EndSub
Sub OnMouseMovex = GraphicsWindow.MouseXy = GraphicsWindow.MouseYIf (Mouse.IsLeftButtonDown) Then
GraphicsWindow.DrawLine(prevX, prevY, x, y)
EndIfprevX = xprevY = y
EndSub
Berikut hasil programnya ketika dijalankan. Perhatikan, kita dapatmenggunakan tetikus ( mouse ) untuk membuat sebuah tulisan... UNHAS
Gambar 54 – Program menulis di layar
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
74/90
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
75/90
Muhammad Banda Selamat Hal ke 75 dari 90
distance = distance - deltaDrawTree()Turtle.Turn(-angle * 2)DrawTree()Turtle.Turn(angle)distance = Stack.PopValue("distance")
Turtle.Move(-distance)EndIf
EndSub
Foto dari Flickr
Gambar 56 – Mengembil gambar dari Flickr
GraphicsWindow.BackgroundColor = "Black"GraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDownpic = Flickr.GetRandomPicture("mountains, river")GraphicsWindow.DrawResizedImage(pic, 0, 0, 640, 480)
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
76/90
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
77/90
Muhammad Banda Selamat Hal ke 77 dari 90
deltaX = 1deltaY = 1
RunLoop:x = x + deltaXy = y + deltaY
gw = GraphicsWindow.Widthgh = GraphicsWindow.HeightIf (x >= gw - 16 or x
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
78/90
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
79/90
Muhammad Banda Selamat Hal ke 79 dari 90
PapayaWhip #FFEFD5
Moccasin #FFE4B5
PeachPuff #FFDAB9
PaleGoldenrod #EEE8AA
Khaki #F0E68C
DarkKhaki #BDB76B
Ungu
Lavender #E6E6FA
Thistle #D8BFD8
Plum #DDA0DD
Violet #EE82EE
Orchid #DA70D6
Fuchsia #FF00FF
Magenta #FF00FF
MediumOrchid #BA55D3
MediumPurple #9370DB
BlueViolet #8A2BE2
DarkViolet #9400D3DarkOrchid #9932CC
DarkMagenta #8B008B
Purple #800080
Indigo #4B0082
SlateBlue #6A5ACD
DarkSlateBlue #483D8B
MediumSlateBlue #7B68EE
Hijau
GreenYellow #ADFF2F
Chartreuse #7FFF00
LawnGreen #7CFC00
Lime #00FF00
LimeGreen #32CD32
PaleGreen #98FB98
LightGreen #90EE90
MediumSpringGreen #00FA9A
SpringGreen #00FF7F
MediumSeaGreen #3CB371
SeaGreen #2E8B57
ForestGreen #228B22
Green #008000
DarkGreen #006400YellowGreen #9ACD32
OliveDrab #6B8E23
Olive #808000
DarkOliveGreen #556B2F
MediumAquamarine #66CDAA
DarkSeaGreen #8FBC8F
LightSeaGreen #20B2AA
DarkCyan #008B8B
Teal #008080
Biru
Aqua #00FFFF
Cyan #00FFFF
LightCyan #E0FFFF
PaleTurquoise #AFEEEE
Aquamarine #7FFFD4
Turquoise #40E0D0
MediumTurquoise #48D1CC
DarkTurquoise #00CED1
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
80/90
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
81/90
Muhammad Banda Selamat Hal ke 81 dari 90
Gray #808080
DimGray #696969
LightSlateGray #778899
SlateGray #708090
DarkSlateGray #2F4F4F
Black #000000
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
82/90
Muhammad Banda Selamat Hal ke 82 dari 90
Komputasi Kelautan
1. Membangkitkan Bilangan Acak
'membangkitkan bilangan acak TextWindow . Write ( "berapa banyak data yang dibangkitkan? " ) d=TextWindow . Read () For i =1 To d
x=Math. GetRandomNumber( 50) textWindow . Writeline ( "data ke-" +i +" =" +x) Program . Delay ( 500 )
Endfor
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
83/90
Muhammad Banda Selamat Hal ke 83 dari 90
2. Genap – Ganjil dari Bilangan Acak
‘membangkitkan bilangan acak
'menentukan bilangan genap atau ganjil '2015 - [email protected] '============================ TextWindow . Write ( "banyaknya data dibangkitkan (n): " ) n=textwindow . ReadNumber () For i =1 To n
x[i] =math . GetRandomNumber( 100 ) sisa =Math . Remainder ( x[i] , 2) Program . delay ( 15) If sisa =0 Then
TextWindow . WriteLine ( "angka: " +x[i] +" bilangan genap" ) Else
TextWindow . writeline ( "angka: " +x[i] +" bilangan ganjil" ) endif
endfor
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
84/90
Muhammad Banda Selamat Hal ke 84 dari 90
3. Sortir Angka Menurun
'cetak urutan data menurun
'data dibangkitkan dari bilangan acak '2015 - [email protected] '=========================== TextWindow . Write ( "banyak data: " ) n=textwindow . ReadNumber () For l =1 To n
d[l] =Math . GetRandomNumber( 100 ) endfor TextWindow . Write ( "data awal: " ) For l =1 To n
TextWindow . Write ( d[l] +", " ) endfor
textwindow . Writeline ( " " ) textwindow . WriteLine ( "max awal= " +d[ 1] )
For j =1 To nTextWindow . Writeline ( " " ) TextWindow . foregroundColor ="white" TextWindow . Writeline ( "pass ke-" +j ) For k =1 To n
TextWindow . foregroundColor ="green" TextWindow . Writeline ( "iterasi ke-" +k+"=" +d[k] ) if d[k] < d[k +1] Then
x=d[k]d[k] =d[k +1]d[k +1] =xElse
TextWindow . Write ( "" ) Endif
For l =1 To nTextWindow . foregroundColor ="red" textwindow . Write ( d[l] +"," )
endfor TextWindow . Writeline ( " " )
endfor endfor TextWindow . foregroundColor ="white" textwindow . Writeline ( " " ) TextWindow . Write ( "data akhir: " ) For l =1 To n
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
85/90
Muhammad Banda Selamat Hal ke 85 dari 90
TextWindow . Write ( d[l] +", " ) endfor
textwindow . Writeline ( " " )
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
86/90
Muhammad Banda Selamat Hal ke 86 dari 90
4. Grafik Sinus dan Kosinus
' sinus and cosinus graph
'2015 - [email protected] '=========================== For i =1 To 640 x=inpi =math . pi trigsin =Math. Sin ( x*npi / 180 )* 150 trigcos =Math. cos ( x*npi / 180 )* 150 ys =200 - trigsinyc=200 - trigcosGraphicsWindow . setpixel ( x, ys , "red" ) GraphicsWindow . setpixel ( x, yc , "blue" )
Program . Delay ( 15) GraphicsWindow . setpixel ( x, 200 , "black" ) endfor
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
87/90
Muhammad Banda Selamat Hal ke 87 dari 90
5. Menentukan Kelulusan
'membangkitkan nilai
'menentukan lulus tidak lulus '2015 - [email protected] '============================ TextWindow . Write ( "banyaknya data dibangkitkan (n): " ) n=textwindow . ReadNumber () For i =1 To n
x[i] =math . GetRandomNumber( 100 )
Program . delay ( 15) If x[i] >65 Then
TextWindow . WriteLine ( "nilai: " +x[i] +" LULUS" ) Else
TextWindow . WriteLine ( "nilai: " +x[i] +" tidak lulus" ) endif
endfor
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
88/90
Muhammad Banda Selamat Hal ke 88 dari 90
6. Histogram Penutupan Lamun
'menghitung rata-rata tutupan lamun dan membuat histogramnya
'data setiap grid kuadrat 'dibangkitkan dari bilangan acak '2015@mbandas 'daskom - jikuh '======================== 'meminta user menentukan banyaknya grid'note: kalo kuadrat 50x50 gridnya ada 25
mulai : TextWindow . WriteLine ( " " ) TextWindow . Write ( "banyaknya data persen tutupan= " )
n=textwindow . ReadNumber () 'membangkitkan bilangan acak 0-100 'sebagai data tutupan lamun 'dan menghitung rata-ratanya jumx = 0 f1 =0 f2 =0 f3 =0 f4 =0 For i = 1 To n
cover = Math. GetRandomNumber( 100 ) TextWindow . Writeline ( "% cover-" + i + "= " + cover ) jumx = jumx + coverIf cover >= 75 Then
d1=1 f1 =f1 +d1
ElseIf cover < 75 And cover >= 50 Then d2=1 f2 =f2 +d2
ElseIf cover < 50 And cover >= 25 Then d3=1 f3 =f3 +d3
Else d4=1 f4 =f4 +d4
EndIf endfor 'menghitung total persen tutupanrata = jumx / n
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
89/90
Muhammad Banda Selamat Hal ke 89 dari 90
TextWindow . ForegroundColor ="yellow" TextWindow . WriteLine ( "Jumlah = " + jumx ) TextWindow . ForegroundColor ="white" TextWindow . WriteLine ( "persen tutupan kuadrat ini = " + rata )
TextWindow . ForegroundColor ="green" 'menentukan kategori total persen tutupan If rata >= 75 Then
TextWindow . WriteLine ( "kategori sangat padat." ) ElseIf rata < 75 And rata >= 50 Then TextWindow . WriteLine ( "kategori padat." ) ElseIf rata < 50 And rata >= 25 Then TextWindow . WriteLine ( "kategori cukup padat." ) Else TextWindow . WriteLine ( "kategori jarang." )
EndIf
'turus kategori tutupan per sel TextWindow . ForegroundColor ="white" TextWindow . writeline ( " " ) TextWindow . writeline ( "kategori per sel (grid)" ) TextWindow . writeline ( "-----------------------" ) TextWindow . writeline ( "sangat padat= " +f1 ) TextWindow . writeline ( "padat = " +f2 ) TextWindow . writeline ( "cukup padat = " +f3 ) TextWindow . writeline ( "jarang = " +f4 ) TextWindow . WriteLine ( "-----------------------" ) cekdata =f1 +f2 +f3 +f4
TextWindow . WriteLine ( "jumlah = " +cekdata )
TextWindow . WriteLine ( " " ) TextWindow . Write ( "sangat padat |" ) For j =1 To f1
TextWindow . Write ( "*" ) endfor TextWindow . WriteLine ( " " ) TextWindow . Write ( "padat |" )
For j =1 To f2TextWindow . Write ( "*" )
endfor TextWindow . WriteLine ( " " ) TextWindow . Write ( "cukup padat |" )
For j =1 To f3TextWindow . Write ( "*" )
endfor TextWindow . WriteLine ( " " )
-
8/19/2019 2015 Pengantar Small Basic - MbandaS
90/90
TextWindow . Write ( "jarang |" ) For j =1 To f4
TextWindow . Write ( "*" ) endfor
TextWindow . WriteLine ( " " ) TextWindow . WriteLine ( " " ) Goto mulai