1
BAB 1 Pengenalan Komputer dan C# 2.0 Apa itu Komputer? Koputer adalah perangkat yang digunakan untuk melakukan perhitungan / kalkulasi, dan secara logis mampu membuat keputusan yang berjuta bahkan milliar kali lebih cepat daripada manusia. Misalnya sebuah personal komputer dapat melakukan bermiliar kali penjumlahan dalam satu detiknya, seseorang yang mengoperasikan kalkulator biasa mungkin membutuhkan beberapa tahun untuk melakukan perhitungan seperti yang dapat dilakukan oleh komputer hanya dalam waktu satu detik. Komputer memproses data yang diatur oleh satu set instruksi yang disebut program komputer. Program tersebut yang menginstruksikan computer untuk melakukan aksi yang spesifik sesuai dengan keinginan orang yang memprogram yang disebut programer. Komputer juga terdiri dari beberapa komponen (seperti keyboard, mouse, layar, disk, memory, CD-ROM, dan processor) semuanya itu disebut hardware. Sedangkan program yang dijalankan pada komputer disebut software.
Organisasi Komputer Komputer secara virtual dapat dibagi menjadi enam unit logis, yaitu: 1. Input Unit: unit dimana komputer menerima informasi (baik data maupun program) dari bermacam-macam peralatan. Input diterima melalui alat berupa keyboard atau mouse, bisa juga melalui microphone (jika data berupa suara), scanner, digital camera (jika berupa file image). 2. Output Unit: unit dimana komputer mengambil informasi yang sudah selesai diproses, untuk kemudian ditampilkan pada peralatan yang ada, misal: dapat ditampilkan pada layer, dimainkan dalam bentuk file audio atau video, atau dicetak pada printer. 3. Memory Unit: adalah unit yang memiliki akses cepat untuk memproses data, tetapi kapasitasnya kecil. Digunakan sebagai tempat penyimpan data sementara, memory unit menampung data yang dikirimkan input unit, kemudian data diproses. Contoh memory unit adalah RAM (random access memory). Informasi yang ada dalam memory akan hilang ketika komputer dimatikan. 4. Arithmatic and Logic Unit (ALU): unit ini bertanggung jawab terhadap performa kalkulasi dari komputer, misalnya dalam melakukan kalkulasi tambah, kurang, kali, bagi. Unit ini juga bertanggung jawab untuk proses pengecekan dan mekanisme dalam membuat keputusan. 5. Central Processing Unit (CPU): unit ini adalah otak dari komputer, bertanggung jawab untuk mengawasi operasi dari unit lain. 6. Secondary Storage Unit: unit ini digunakan untuk menyimpan data secara permanen (jangka panjang), kapasitas penyimpanan datanya juga besar. Misal hard drives, CD, USB drive, dll.
Sistem Operasi Sistem operasi adalah sebuah perangkat lunak yang mampu menjalankan sebuah komputer yang kita miliki. Tanpa sebuah sistem operasi komputer yang kita miliki tidak akan dapat ‘berbuat apa-apa’ atau sama juga merupakan benda mati yang tidak berguna. Sistem operasi mengatur segala sesuatu yang ada di dalam komputer, termasuk semua hardware yang ada, memori, harddisk dan lain-lainnya sehingga mereka dapat berkerja sama melakukan tugasnya. Saat ini ada beberapa system operasi yang ada dipasaran, yang paling banyak digunakan adalah Windows XP, Windows 2003 Server, Linux, UNIX, Machintos, dan masih ada beberapa system operasi lain yang tidak begitu popular. Pada buku ini penulis menggunakan Windows XP untuk menjalankan contoh-contoh program yang ada. Oleh: Erick Kurniawan, S.Kom, M.Kom
2
Bahasa Mesin, Bahasa Assembly, dan Bahasa Tingkat Tinggi Programer dapat menulis instruksi dalam beberapa bahasa pemrograman, beberapa langsung dapat dimengerti oleh komputer dan yang lain membutuhkan bahasa penengah untuk menterjemahkan instruksi tersebut. Meskipun sekarang terdapat ratusan bahasa pemrograman, namun semuanya itu dapat dibedakan menjadi tiga tipe yang umum yaitu: 1. Bahasa Mesin. 2. Bahasa Assembly. 3. Bahasa Tingkat Tinggi. Bahasa mesin adalah bahasa yang dapat langsung dimengerti oleh setiap komputer sebagai bahasa naturalnya. Bahasa mesin hanya terdiri dari kumpulan angka 0 dan 1 yang menginstruksikan komputer untuk melakukan beberapa tugas utama. Bahasa mesin bersifat machine dependent, yang berarti tergantung pada spesifikasi mesin yang digunakan. Pemrograman dengan bahasa mesin sulit karena bahasanya susah untuk dimengerti dan susah untuk mengatasi kesalahan yang terjadi. +1300042774 +1400593419 +1200274027
Kemudian muncul bahasa assembly yang menggunakan perintah dalam bahasa inggris yang lebih mudah untuk dipahami oleh programer daripada bahasa mesin.bahasa assembly menggunakan translator program yang disebut assembler yang digunakan untuk menterjemahkan dari bahasa assembly ke bahasa mesin. LOAD BASEPAY ADD OVERPAY STORE GROSSPAY
Kemudian bahasa assembly masih dirasa sulit untuk dimengerti oleh manusia, maka munculah bahasa tingkat tinggi yang menggunakan bahasa yang lebih mudah untuk dimengerti seperti bahasa sehari-hari (kebanyakan dalam bahasa inggris). Translation program yang digunakan untuk menterjemahkan bahasa tingkat tinggi kedalam bahasa mesin adalah compiler. grossPay = basePay + overTimePay
Kebanyakan programer memilih menggunakan bahasa tingkat tinggi dibandingkan dengan bahasa yang lain. C# adalah salah satu bahasa pemrograman tingkat tinggi dari Microsoft yang popular saat ini.
C# 2.0 (C Sharp 2.0) Kebutuhan akan penggunaan program tidak lagi hanya terbatas pada peralatan berupa personal computer, program juga digunakan pada consumer-electronic devices (cell phones dan PDA) sehingga menciptakan persoalan dan kebutuhan yang baru. Integrasi komponen software yang berbeda bahasa juga semakin sulit. Kebutuhan pengembangan aplikasi berbasis Web yang terkoneksi dengan Internet juga sudah semakin banyak. Pengembang software sadar bahwa mereka membutuhkan software yang dapat digunakan siapa saja dan dapat digunakan pada semua perangkat yang ada (PC, cell phones, PDA, dll). Untuk menjawan semua permasalahan dan kebutuhan diatas pada tahun 2000 Microsoft meluncurkan bahasa pemrograman baru yang diberi nama C# Programming Language. C# dikembangkan oleh Microsoft oleh tim yang dipimpin oleh Anders Hejlsberg dan Scott Wiltamuth. C# Oleh: Erick Kurniawan, S.Kom, M.Kom
3 memiliki kesamaan bahasa dengan C, C++, dan Java, sehingga memudahkan developer yang sudah terbiasa dengan bahasa C untuk menggunakannya, C# mengambil fitur-fitur terbaik dari ketiga bahasa tersebut dan juga menambahkan fitur-fitur baru. C# adalah bahasa pemrograman Object Oriented dan memiliki class library yang sangat lengkap yang berisi prebuilt component sehingga memudahkan programer untuk men-develop program lebih cepat. C# juga distandarkan oleh Ecma International pada bulan desember 2002. Pada akhir tahun 2005 Microsot merilis .NET Framework 2.0 bersamaan dengan paket Visual Studio. Otomatis versi dari C# juga diperbaharui menjadi C# 2.0 yang berjalan diatas .NET Framework 2.0. Pada versi baru ini banyak sekali fitur-fitur yang ditambahkan terutama pada pengembangan aplikasi berbasis web dengan ASP.NET seperti (master page, site map control, user login, dll), juga penambahan generic collection yang sangat membantu programer bekerja dengan object-object collection dan list. Dengan C# dapat dibuat bermacam aplikasi seperti aplikasi console, aplikasi windows form, aplikasi Web, aplikasi Web services, dan aplikasi untuk mobile device. Jadi cukup belajar satu bahasa saja tapi sudah dapat digunakan untuk mengembangkan berbagai macam aplikasi.
Microsoft .NET Framework Pada tahun 2000 Microsoft mengumumkan .NET Initiative yaitu sebuah visi baru dalam pengembangan software dan aplikasi berbasis Web. Salah satu aspek kunci pada .NET adalah independent terhadap bahasa maupun platform yang digunakan. Pengembang dapat membuat aplikasi berbasis .NET dengan sembarang bahasa yang kompatibel dengan .NET. Programer dapat saling berkontribusi dalam mengerjakan project yang sama dengan menulis program dalam bahasa yang didukung oleh .NET (C#, Visual Basic .NET, Visual C++ .NET, dll). Untuk pengembangan aplikasi berbasis Web dan aplikasi Web services digunakan ASP.NET yang juga dapat ditulis dengan beberapa bahasa yang didukung oleh .NET Framework. Ada dua komponen utama dalam .NET Framework yaitu CLR (Common Language Runtume) dan FCL (.NET Framework Class Library). Common Language Runtime (CLR) adalah pondasi utama dari Framework .NET. CLR merupakan komponen yang bertanggung jawab terhadap beberapa tugas, seperti mengatur managemen memory, melakukan eksekusi kode, melakukan verifikasi terhadap keamanan kode, menentukan hak akses dari kode, melakukan kompilasi kode, dan berbagai tugas lainnya. Dengan adanya komponen CLR ini, maka aplikasi berbasis .NET biasa juga disebut dengan managed code, sedangkan aplikasi di luar .NET disebut dengan un-managed code. Pada .NET ada dua tahap kompilasi yang dilakukan, pertama CLR akan melakukan kompilasi kode-kode aplikasi kita menjadi bahasa assembly MSIL (Microsoft Intermediate Language), kedua ketika aplikasi dieksekusi compiler yang lain yang bernama JIT (Just-in-time compiler) yang juga salah satu kompenen dalam CLR untuk menterjemahkan MSIL kedalam bahasa mesin yang disesuaikan dengan platformnya. .NET Framework Class Library atau disebut juga Base Case Library (BCL) adalah koleksi yang dapat digunakan kembali (reusable types) yang terintegrasi dengan CLR. Class library adalah komponen object oriented yang akan menyediakan method-method berupa managed code. FCL menyediakan kemudahan dalam hal penggunaan dan juga dapat mengurangi waktu yang diperlukan pada saat eksekusi.
Visual C# 2005 Express Edition Visual C# 2005 Express Edition adalah IDE (Integrated Development Environment) atau tools untuk membuat, menjalankan, dan men-debug program yang ditulis menggunakan bahasa C#. Microsoft Visual C# 2005 Express Edition dapat didownload secara gratis pada Oleh: Erick Kurniawan, S.Kom, M.Kom
4 http://msdn.microsoft.com/vstudio/express/support/install/. Untuk mengembangkan aplikasi berbasis web dapat digunakan Visual Web Developer Express yang juga dapat didownload dan digunakan secara gratis. Adapun produk yang termasuk dalam paket Express Edition yang dapat didownload secara gratis adalah: • Visual Basic 2005 Express • Visual C# 2005 Express • Visual J# 2005 Express • Visual Web Developer 2005 Express Jika anda menginstal Visual C# 2005 Express Edition maka didalamnya sudah terdapat beberapa komponen tambahan seperti SQL Server Express untuk databasenya dan MSDN Express untuk dokumentasinya, adapun paket lengkap yang terdapat pada Visual C# 2005 Express yaitu: • Microsoft .NET Framework 2.0 • Microsoft Visual C# Express • SQL Server 2005 Express • MSDN Express Selain menggunakan IDE yang disediakan oleh Microsoft anda dapat menggunakan tools yang lain misalnya SharpDevelop (yang merupakan project open source yang juga dapat didownload secara gratis). Anda juga dapat membuat program C# hanya dengan menggunakan editor teks biasa seperti notepad, tapi pasti membutuhkan waktu yang lebih lama dalam proses pengembangan karena tidak adanya tools bantuan untuk debugging dan fitur lain sebaik yang ada pada IDE yang khusus seperti Visual C# 2005 Express atau SharpDevelop. Instalasi Visual C# Express Edition 1. Masukan CD atau DVD yang berisi paket instalasi Visual C# Express, jika autorun maka akan langsung otomatis dijalankan, pilih paket instalasi untuk Visual C# 2005 Express, ketika proses instalasi dimulai akan ditampilkan halaman welcome page yang ditunjukan pada gambar 1.1
Gambar 1.1 Oleh: Erick Kurniawan, S.Kom, M.Kom
5 2. Klik Next untuk menampilkan halaman EULA (End User License Agreement) 3. Setelah membaca dan menyetujuinya, centang pada kotak “I accept the terms of the License Agreement”, kemudian tekan Next untuk melanjutkan proses setup.
Gambar 1.2 4. Pada halaman ini centang pada kotak SQL Server 2005 Express dan MSDN Express untuk menginstal kedua komponen tersebut.
Gambar 1.3
Oleh: Erick Kurniawan, S.Kom, M.Kom
6 5. Klik Next untuk melanjutkan proses setup, pada halaman berikutnya pilih lokasi dimana anda akan menginstal Visual C# 2005 Express, kemudian klik Install.
Gambar 1.4
6. Jika proses instalasi selesai maka akan ditampilkan halaman berikut
Gambar 1.5
7. Klik Exit dan Visual C# 2005 Express sudah berhasil diinstal dan siap untuk anda gunakan.
Oleh: Erick Kurniawan, S.Kom, M.Kom
7 Fitur Penting Pada Visual C# 2005 Express Editon Visual C# 2005 Express menyediakan beberapa fitur penting yang mendukung pengembangan program aplikasi secara cepat menggunakan metode RAD (Rapid Application Development). Adapun beberapa fitur yang disediakan: • Built-in Starter Kit: kumpulan aplikasi yang telah dikembangkan secara menyeluruh dari Microsoft best practice (pengalaman banyak developer dari Microsoft) sebagai contoh untuk diikuti. • Beginners Targeted Documentation dan Tutorials: Cara yang mudah dan cepat untuk mendapatkan informasi & contoh-contoh juga disediakan disini. • Intellisense: adalah fasilitas yang dapat membantu anda dalam mengantisipasi kesalahan pengetikan, karena IDE akan secara otomatis menampilkan list sintaks yang akan digunakan. • Code Snippets: Menyediakan kode untuk berbagai variasi pemrograman untuk membantu anda melengkapi berbagai tugas secara otomatis. Code Snippets terintegrasi secara langsung dengan lingkungan development, dan dapat ditambah. • Refactoring: Windows Visual C# 2005 IDE sekarang memungkinkan refactoring yang cukup baik. Refactoring memungkinkan developer untuk mengotomatisasi beberapa tugas ketika menstrukturisasi kode. • Data-enabled Applications. Aplikasi ini memungkinkan anda untuk terhubung secara langsung ke SQL Server 2005 Express Edition dari IDE. Anda dapat membuat database baru, membuat table dan melakukan manipulasi data pada database secara mudah. • Smart Tags: fasilitas yang akan sangat membantu dan memudahkan anda ketika bekerja dengan control-control yang ada, smart tag berupa segitiga hitam yang tampak pada bagian pojok kanan atas dari control. Dengan smart tag anda dapat mengeset property pada control tertentu dengan mudah. • Windows Form Designer. Dengan tools ini, anda akan dengan mudah merancang aplikasi Windows anda, termasuk adanya fitur seperti snap lines yang membuat anda dengan mudah mengatur layout dari control-control yang ada pada form secara rapi. • New Windows Form Controls: Berisi control-control baru yang dapat digunakan untuk membuat aplikasi windows anda menjadi lebih menarik dan interaktif. • Click-Once Deployment: Fitur berikut memungkinkan anda untuk secara lebih mudah mempublikasi aplikasi Anda di dalam Internet, atau menginstal aplikasinya dalam Local Area Network(LAN), network share, atau di dalam CD. • Edit dan Continue: Ketika anda melakukan debug pada aplikasi anda, fitur edit dan continue memungkinkan anda untuk memodifikasi kode, memajukan atau memundurkan debugger, mengeksekusi kode kembali, menambah fungsionalitas, atau membetulkan bugs tanpa memberhentikan eksekusi program. • Community Access dan Start Page: Dengan fitur-fitur ini, Anda dapat mengakses informasi tambahan dari komunitas online dan dari sumber yang berbeda, termasuk RSS (Rich Site Summary atau Really Simple Syndication) Feeds. (RSS adalah keluarga dari format file XML; dan digunakan secara menyeluruh oleh komunitas weblog dan Website berita).
Oleh: Erick Kurniawan, S.Kom, M.Kom
8 Komponen IDE Visual C# 2005 Express Edition Visual C# 2005 merupakan IDE yang sangat mudah untuk digunakan dan memiliki banyak fitur yang membantu dalam pembuatan aplikasi. Beberapa komponen penting yang ada pada IDE Visual C# 2005 Express adalah:
•
Gambar 1.6
Menu Bar: menu bar seperti yang ditunjukan pada gambar 1.6 berisi kumpulan perintah (yang disebut menu items) yang jika dipilih maka IDE akan menjalankan aksi tertentu (misal: membuka file, menyimpan file, membuat project baru, dll).
Gambar 1.7 Oleh: Erick Kurniawan, S.Kom, M.Kom
9 • •
•
•
•
•
Toolbar: menu toolbar seperti yang ditunjukan pada gambar 1.7 berisi kumpulan shortcut yang menjalankan aksi tertentu seperti pada menu file, dapat dikatakan bahwa toolbar merupakan shortcut dari menu bar. Active Tab: active tab seperti ditunjukan pada gambar 1.6 adalah tab window yang sedang aktif saat ini, pada Visual C# 2005 Express anda dapat membuka beberapa window tab secara bersamaan (misal: window tab pertama menampilkan design form, sedangkan window tab kedua menampilkan kode nya). Solution Explorer: solution explorer windows yang dapat dilihat pada gambar 1.6 digunakan untuk mengakses semua files yang terdapat pada aplikasi yang dibuat (solution). Jika solution explorer window tidak muncul maka pilih view > solution explorer. Tampilan dari solution explorer dapat dilihat pada gambar berikut Toolbox: dalam toolbox terdapat object control-control yang digunakan dalam meng-customize form. Sama seperti tools visual yang lain, anda dapat melakukan “drag and drop” control tersebut kedalam form, cara ini akan lebih cepat dan praktis dari pada menulis kode untuk GUI (Graphical User Interface) nya.
Gambar 1.8
Properties Window: properties window seperti yang ditunjukan pada gambar 1.6 berfungsi untuk menampilkan daftar property dari control-control yang berapda pada form, berisi informasi tertentu misalnya ukuran, warna, dan posisi. Setiap form control memiliki property sendiri-sendiri (misal property text, name, size, dll). Help Menu: Visual C# 2005 Express dilengkpi dengan fasilitas help atau dokumentasi yang sudah terintegrasi dengan IDE dan MSDN Express sehingga anda dapat dengan udah mendapatkan informasi yang dibutuhkan pada saat mengembangkan program aplikasi. Visual C# 2005 Express juga mendukung fitur yang diberi nama dynamic help yang akan secara otomatis mencari dokumentasi dari MSDN dan menampilkannya dalam bentuk list. Menu help pada Visual C# 2005 Express ini sangat membantu dalam pencarian informasi yang anda butuhkan karena kemudahan yang ditawarkan, anda juga dapat melakukan search untuk mencari content yang berhubungan dengan keyword yang anda masukan.
Gambar 1.9
Oleh: Erick Kurniawan, S.Kom, M.Kom
10
BAB 2 Pengenalan Bahasa C# Pengantar Sekarang saatnya untuk mengerti lebih dalam tentang apa itu C# dan bagainama menulis program menggunakan C#, untuk itu maka pada bab ini anda akan diajak untuk membuat beberapa aplikasi sederhana. Aplikasi yang akan dibuat terdiri dari dua jenis yaitu aplikasi berbasis console dan aplikasi yang berbasis windows. Aplikasi console adalah sebuah aplikasi yang tidak menggunakan GUI (Graphical User Interface), tampilannya sama dengan ketika anda menggunakan sistem operasi DOS, hanya berupa layar hitam dan teks. Sedangkan aplikasi yang berbasis Windows atau Windows Form application adalah aplikasi yang menggunakan GUI seperti sistem operasi Windows yang anda gunakan, pada aplikasi ini anda dapt menambahkan tombol, kotak teks, dan komponen Windows lainnya.
C# Sintaks Untuk mempelajari pemrograman C# secara efektif maka anda harus mengerti sintak-sintak yang digunakan pada C#. Bahasa C# sangat mirip dengan bahasa C++ dan Java. Kode pada C# terdiri dari kumpulan statement, dimana antar statementnya dipisahkan dengan titik koma. Anda dapat menambahkan lebih dari satu statement pada satu baris program C# merupakan block-structured language, yang berarti setiap statement merupakan bagian dari blok kode. Setiap blok dibatasi dengan kurung kurawal buka dan kurung kurawal tutup ({ dan }) yang dapat berisi beberapa statement, contohnya: {
; ; }
Anda dapat melihat statement kedua dan statement ketiga adalah satu baris program karena statement kedua tidak diakhiri dengan titik koma. Pada C# dalam sebuah blok dapat terdapat blok dagi didalamnya atau dapat juga disebut sebagai nested-blocks. { ; { ; ; } ; }
Hal yang juga akan banyak dijumpai pada kode C# adalah komentar. Komentar adalah baris program yang tidak akan dieksekusi oleh compiler, gunanya untuk menambahkan keterangan pada program atau menonaktifkan sementara baris program tertentu untuk kepentingan debugging, baris komentar pada C# dapat ditulis sebagi berikut: /* Ini adalah komentar */ /* Dan juga... ... ini komentar */ // ini juga komentar dalam satu baris
Oleh: Erick Kurniawan, S.Kom, M.Kom
11 Salah satu yang harus diingat dalam menuliskan program dengan C# adalah sifat case-sensitive, pada C# penulisan huruf besar dan huruf kecil dibedakan, anda harus menuliskan sintaks secara tepat. console.WriteLine("The first app in Beginning C# Programming!"); //salah CONSOLE.WRITELINE(“The first app in Beginning C# Programming!”); //salah Console.Writeline("The first app in Beginning C# Programming!"); //salah
Menulis Kode C# Yang Pertama Pada subab ini anda akan diperkenalkan dengan bahasa C# dengan membuat sebuah program aplikasi sederhana berbasis console. Listing 2.1 Aplikasi Console Pertama Dengan C# 1. Buat Console Application baru, pilih File > New Project > Console Application kemudian beri nama HelloCSharp kemudian klik tombol OK.
Gambar 2.1
2. Kemudian tuliskan source code-nya sebagai berikut using System; namespace HelloCSharp { class Program { static void Main(string[] args) { //menampilkan output ke layar Console.WriteLine("Ini adalah program pertamaku dengan C#"); } } }
3. Kemudian jalankan dengan menekan tombol Ctrl + F5. maka akan ditampilkan hasilnya sebagai berikut
Gambar 2.6
Oleh: Erick Kurniawan, S.Kom, M.Kom
12 Penjelasan dari kode diatas perbagian adalah sebagai berikut: • Tanda // digunakan sebagai komentar, pada C# digunakan tanda // (jika hanya satu baris saja) atau diapit tanda /* */ (jika komentarnya lebih dari satu baris). Kode atau keterangan di dalam tanda komentar tidak akan dieksekusi oleh compiler. • Keyword using digunakan untuk memberitahu compiler class yang digunakan pada aplikasi. Salah satu keunggulan dari C# adalah tersedianya predefined class yang dapat langsung digunakan dalam aplikasi. • Keyword namespace digunakan untuk mendeklarasikan ruang lingkup dari class yang anda buat. Class didalam namespace dapat dipanggil dengan mencantumkan nama namespace-nya terlebih dahulu . Keyword using System; pada baris pertama mempunyai arti anda dapat menggunakan class-class yang ada pada namespace System. • Keyword class digunakan untuk mendeklarasikan class dengan nama Program. • Deklarasi static void Main(string[] args) adalah method utama yang dijalankan pada class Program. • Sintaks Console.WriteLine digunakan untuk menampilkan output ke layer console. • Mungkin ada beberapa keyword masih belum anda mengeti karena belum terbiasa dengan pemrograman yang berbasis objek, tapi tidak menjadi masalah karena pada bab-bab selanjutnya akan dibahas lebih dalam mengenai object. C# termasuk bahasa pemrograman yang memiliki sedikit keyword sehingga meminimalkan kompleksitas dalam penulisan program, keyword pada C# juga ditulis dengan huruf kecil, adapun keyword-keyword yang digunakan adalah sebagai berikut: C# Keywords abstract as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
double
else
enum
delegate do event
explicit extern
false
finally
fixed
float
foreach
goto
if
implicit in
int
interface
for
internal is
lock
long
namespace
new
object
operator
out
override params
private
protected public
readonly ref
return
sbyte
short
sizeof
stackalloc static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
void
null
sealed
volatile while
Oleh: Erick Kurniawan, S.Kom, M.Kom
13 Listing 2.2 Membaca Inputan Dari Console 1. Buat Console application baru dengan nama InputConsole, kemudian tuliskan source code-nya sebagai berikut: using System; namespace InputConsole { class Program { static void Main(string[] args) { Console.Write("Masukan Nama Anda :"); //readline digunakan untuk membaca inputan dari user Console.WriteLine("Jadi nama anda : " + Console.ReadLine()); } } }
2. Jalankan programnya dengan menekan Ctrl + F5, maka hasilnya dapat dilihat sebagai berikut:
Gambar 2.7
Selain menggunakan aplikasi berbasis console, anda juga dapat membuat aplikasi yang berupa Windows Form, Dengan menggunakan Windows Form anda dapat membuat aplikasi yang lebih menarik dan interaktif untuk user, anda dapat menambahkan komponen yang biasa digunakan pada aplikasi windows seperti button, textbox, radiobox, dan masih banyak lagi komponen lainnya. Pada contoh dibawah ini akan ditunjukan penggunaan Windows Form pada C#. Listing 2.3 Membuat Aplikasi Windows Form Sederhana 1. Untuk membuat aplikasi Windows Form, klik New Project → pilih Windows Application → beri nama SimpleWindows untuk projectnya
Gambar 2.8 Oleh: Erick Kurniawan, S.Kom, M.Kom
14 2. Untuk menyimpan projectnya klik File → kemudian Save All, kemudian arahkan ke folder dimana anda akan menyimpan filenya, klik Save
Gambar 2.9
3. Pada form ubah property text menjadi “Simple Window”, Masukan button kedalam form, kemudian pada button ubah property text menjadi “Pesan”.
Gambar 2.10
4. Double click pada tombol pesan untuk menambahkan kode berikut private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Selamat Belajar C# Windows Form !!"); }
5. Kemudian jalankan programnya dengan menekan tombol F5. maka outpunya dapat dilihat sebagai berikut
Gambar 2.11
Oleh: Erick Kurniawan, S.Kom, M.Kom
15
BAB 3 Tipe Data, Variabel dan Ekspresi Pada bab ini akan dibahas bagaimana penggunaan tipe data, variabel dan ekspresi pada C#. Misalnya anda anda ingin membuat sebuah aplikasi kakulator yang dapat melakukan operasi-operasi perhitungan tertentu, maka anda harus mengambil nilai yang diinputkan kedalam kalkulator tersebut untuk kemudian dihitung, untuk melakukan hal ini dibutuhkan tempat untuk menyimpan nilai dan melakukan operasi tertentu untuk memanipulasi nilai, fungsi-fungsi tersebut dapat dilakukan dengan menggunakan variabel dan ekspresi.
Variabel Pada program selalu dibutuhkan tempat untuk menyimpan nilai yang disebut sebagai variabel. Anda dapat membayangkan variabel sebagai sebuah kotak pada lemari yang dapat diisi barang dan dikosongkan kembali jika akan diisi barang yang lain, anda juga dapat melihat isi dari kotak tersebut. Untuk menggunakan variabel anda harus mendeklarasikannya terlebih dahulu, artinya anda harus memberikan nama dan tipe data dari variabel tersebut. ; string strNama; int intNumber1;
Pada C# variabel harus dideklarasikan terlebih dahulu sebelum dapat digunakan, hal ini diperlukan karena kompiler harus tahu terlebih dahulu tipe data dari variabel yang anda deklarasikan, sehingga pengecekan nilai variabel dapat dilakukan. Adapun penulisan variabel pada C# mempunyai aturan tersendiri yaitu: • Tidak boleh sama dengan nama keyword yang ada pada C#, misal using, string, public, dll. • Tidak boleh sama dengan nama fungsi built-in yang ada pada C# misal math, convert, dll • Pemilihan nama variabel juga harus unik, tidak boleh sama satu dengan yang lain. • Nama pada variabel di C# bersifat case sensitive yaitu membedakan antara huruf besar dan huruf kecil jadi variabel intNumber lain dengan Intnumber. • Karakter pertama harus berupa huruf atau garis bawah (_), setelahnya boleh berupa angka, misal: intNumber1, _intNumber1, x1, x2, dll • Penamaan pada variabel tidak boleh mengandung spasi atau titik.
Tipe Data C# mempunyai dua jenis built-in tipe data yaitu value types dan reference types. Referenced type didefinisikan dengan menggunakan class. C# mempunyai 13 tipe data dasar yang ditunjukan pada tabel dibawah ini Tipe Keterangan bool Merepresentasikan nilai true/false byte 8-bit unsigned integer char Character decimal Numeric type untuk financial calculations double Double-precision floating point float Single-precision floating point int Integer long Long integer Oleh: Erick Kurniawan, S.Kom, M.Kom
16 Tipe Keterangan sbyte 8-bit signed integer short Short integer uint unsigned integer ulong unsigned long integer ushort unsigned short integer Tipe-tipe data yang ada diatas disebut dengan simple types Tipe Data Integer C# mempunyai sembilan tipe integer: char, byte, sbyte, short, ushort, int, uint, long, dan ulong. Tetapi char type digunakan untuk mendefinisikan tipe data karakter, delapan sisanya digunakan untuk kalkulasi numerik. Range nilai yang dapat dimasukan dalam tipe-tipe data tersebut adalah: Tipe Panjang Bits Range Nilai byte 8 0 to 255 sbyte 8
−128 to 127
short 16
−32,768 to 32,767
ushort 16
0 to 65,535
int
32
−2,147,483,648 to 2,147,483,647
uint
32
0 to 4,294,967,295
long
64
−9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
ulong 64 0 to 18,446,744,073,709,551,615 Seperti yang anda lihat pada tabel diatas, C# dapat mempunyai sign dan unsign version dari tipe data integer yang membedakan keduanya adalah jika menggunakan sign version ada dua nilai yang digunakan sebagai tanda / flag, jika flag bernilai 0 menandakan bilangan positif dan jika flag bernilai 1 menandakan bilangan negatif. Listing 3.1 Penggunaan Tipe Integer 1. Buatlah sebuah aplikasi console baru, kemudian beri nama untuk projectnya TipeInteger 2. Kemudian tulis kode dibawah ini: static void Main(string[] args) { long inches; long miles; miles = 93000000; // 93,000,000 miles jarak ke matahari // satu mile sama dengan 5,280 kaki, satu kaki sama dengan 12 inches inches = miles * 5280 * 12; Console.WriteLine("Jarak ke matahari: " + inches + " inches."); }
3. Untuk menjalankan programnya tekan Ctrl+F5, maka output dari programnya sebagai berikut:
Oleh: Erick Kurniawan, S.Kom, M.Kom
17
Gambar 3.1
Listing 3.2 Penjumlahan Tipe Integer 1. Buatlah sebuah aplikasi console baru, kemudian beri nama untuk projectnya TambahInteger 2. Kemudian tulis kode dibawah ini: static void Main(string[] args) { int number1; //variabel unt menampung nilai pertama int number2; //variabel unt menampung nilai kedua int sum; //variabel yg menampung hasil penjumlahan Console.Write("Masukan nilai pertama :"); //konversi dari tipe string ke integer number1 = Convert.ToInt32(Console.ReadLine()); Console.Write("Masukan nilai kedua :"); number2 = Convert.ToInt32(Console.ReadLine()); sum = number1 + number2; Console.WriteLine("Jadi hasil penjumlahannya : "+sum); }
3. kemudian jalankan programnya dengan menekan tombol Ctrl+F5, maka didapat output sebagai berikut:
Gambar 3.2
Tipe Data Floating Point Tipe floating point digunakan untuk merepresentasikan bilangan pecahan, ada dua macam tipe floating point pada C# yaitu float dan double yang merepresentasikan single dan double precision number. Tipe float mempunyai panjang 32 bit dan mempunyai range nilai kira-kira 1.5E−45 sampai 3.4E+38 sedangkan tipe double mempunyai panjang 64 bit dan mempunyai range nilai kira-kira 5E−324 sampai 1.7E+308. Pada C# tipe double yang paling sering digunakan. Listing 3.3 Tipe Floating Point 1. Buatlah aplikasi console baru, beri nama TipeFloating untuk projectnya. 2. Kemudian tulis kode dibawah ini: static void Main(string[] args) { Double r; Double area; area = 10.0; r = Math.Sqrt(area / 3.1416);
Oleh: Erick Kurniawan, S.Kom, M.Kom
18 Console.WriteLine("Radius-nya: " + r); }
3. Tekan Ctrl+F5 untuk menjalankan program, output-nya dapat dilihat pada tampilan dibawah ini:
Gambar 3.3
Tipe Data Decimal Tipe ini biasanya digunakan untuk melakukan kalkulasi moneter (bidang keuangan), tipe decimal menggunakan representasi 128 bit dengan range nilai antara 1E−28 sampai 7.9E+28. Tipe ini sangat akurat dan tanpa kesalahan pembulatan sehingga cocok sekali untuk dipergunakan untuk perhitungan yang sangat akurat seperti perhitungan uang. Listing 3.4 Tipe Decimal 1. Buatlah aplikasi console application baru dengan nama TipeDecimal. 2. Kemudian tulis kode sebagai berikut: static void Main(string[] args) { decimal price; decimal discount; decimal discounted_price; // menghitung harga discounted price = 20.95m; discount = 0.2m; // ddiskonnya 20% discounted_price = price - (price * discount); Console.WriteLine("Harga setelah diskon: $" + discounted_price); }
3. Tekan Ctrl+F5 untuk menjalankan program, outputnya dapat dilihat pada tampilan dibawah ini:
Gambar 3.4
Tipe Data Characters Pada C# tipe data characters panjangnya tidak 8 bit seperti tipe characters pada C++, tipe characters pada C# memiliki panjang 16 bit atau disebut Unicode.Unicode mampu menampung semua characters yang terdapat pada bahasa manusia. Meskipun untuk bahasa english, german, french cukup dengan representasi 8 bit tetapi ada juga bahasa yang membutuhkan representasi lebih dari 8 bit, misalnya bahasa chinese. Pada C# tipe char adalah 16 bit unsigned yang memiliki range dari 0 sampai 65,535. Standar 8-bit ASCII characters yang mempunyai range 0-127 merupakan subset dari Unicode. Jadi ASCII characters masih valid digunakan pada C# characters. Contoh deklarasi tipe characters pada C# sebagai berikut: char ch;
Oleh: Erick Kurniawan, S.Kom, M.Kom
19 ch = 'X'; Console.WriteLine("This is ch: " + ch);
Tipe Data Boolean Tipe boolean hanya terdiri dari dua nilai yaitu true dan false, seperti bahasa pemrograman yang lain C# tidak menyediakan konversi dari tipe data boolean ke tipe data integer, misal true menjadi 1 dan false menjadi 0. Listing 3.5 Tipe Data Boolean 1. Buatlah aplikasi console baru dengan nama TipeBoolean 2. Kemudian tulis kode sebagai berikut: static void Main(string[] args) { bool b; b = false; Console.WriteLine("b bernilai " + b); b = true; Console.WriteLine("b bernilai " + b); // nilai boolean untuk pengecekan pada if if (b) Console.WriteLine("Baris ini dieksekusi."); b = false; if (b) Console.WriteLine("Baris ini tidak dieksekusi."); Console.WriteLine("10 > 9 bernilai " + (10 > 9)); }
3. Tekan Ctrl+F5 untuk menjalankan program, dan outputnya dapat dilihat sebagai berikut:
Gambar 3.5
Scope dan Lifetime Variable Pada contoh-contoh program diatas anda menggunakan variabel yang dideklarasikan dalam method Main() ini berarti variabel tersebut dapat diakses oleh semua method yang terdapat dalam method Main(). Anda juga dapat mendeklarasikan variabel didalam blok selain method Main(), blok biasanya diawali dengan kurung kurawal dan diakhiri dengan kurung kurawal, jika anda mendeklarasikan variabel dalam satu blok tertentu maka variabel tersebut juga hanya dapat diakses dalam blok itu sendiri atau biasa disebut sebagai scope lokal. Scope menentukan bagaimana sebuah object dapat diakses oleh bagian lain dari program. Jika pada sebuah method juga terdapat parameter, maka parameter tersebut juga hanya dapat diakses dalam method itu sendiri (lokal). Untuk lebih jelasnya dapat dilihat pada contoh program dibawah ini: Listing 3.6 Scope Variable 1. Buatlah aplikasi console baru dengan nama Scoping 2. kemudian tuliskan kode sebagai berikut: static void Main(string[] args)
Oleh: Erick Kurniawan, S.Kom, M.Kom
20 { int x; //visibel di semua method dalam Main() x = 10; if (x == 10) { //memulai scope baru int y = 20; //hanya dikenali pada blok ini saja // x dan y keduanya dapat diakses Console.WriteLine("x dan y: " + x + " " + y); x = y * 2; } // y = 100; // Error! disini y tidak dikenali // x masih dapat dikenali Console.WriteLine("x adalah " + x); }
3. Tekan Ctrl+F5 untuk menjalankan program, outputnya dapat dilihat sebagai berikut:
Gambar 3.6
Poin penting yang juga harus diingat adalah siklus hidup / lifetime dari variabel yaitu variabel dibuat ketika masuk pada scope dan dihapus ketika keluar dari scope. Ini berati bahwa variabel hanya menyimpan nilai ketika masih berada didalam scope, ketika sudah keluar dari scope variabel tidak lagi memiliki nilai. Contoh lifetime variabel dapat dilihat pada contoh dibawah ini: Listing 3.7 Lifetime Variable 1. Buatlah aplikasi console baru dengan nama Lifetime 2. Kemudian tuliskan kode dibawah ini: static void Main(string[] args) { int x; for (x = 0; x < 3; x++) { int y = -1; // y diinialisasi tiap kali masuk dalam blok Console.WriteLine("y nilainya : " + y); // selalu mencetak -1 y = 100; Console.WriteLine("y sekarang nilainya: " + y); } }
3.
Tekan Ctrl+F5 untuk menjalankan programnya, outputnya akan ditampilkan sebagi berikut:
Gambar 3.7
Oleh: Erick Kurniawan, S.Kom, M.Kom
21
Tipe Konversi dan Casting Pada programming sudah biasa untuk melakukan proses perubahan tipe data pada variabel menjadi tipe data yang lain, ada dua macam konversi yang dapat digunakan yaitu automatic conversions dan casting incompatible types. Automatic Conversions Ketika satu variabel yang mempunyai tipe data tertentu dikonversi menjadi tipe data yang lain maka automatic conversions akan dijalankan jika: • Dua variabel tersebut memiliki tipe yang kompatible. • Tipe tujuan harus mempunyai range yang lebih besar daripada tipe aselinya. Ketika kedua kondisi diatas terpenuhi maka widening conversion dilakukan, misalnya tipe int sudah jauh dari cukup untuk menampung konversi dari type byte. Automatic type conversion juga biasa disebut sebagai implicit conversion. Listing 3.8 Automatic Conversion 1. Buatlah aplikasi console dengan nama AutoConvert 2. Kemudian tuliskan kode dibawah ini static void Main(string[] args) { long L; double D; L = 100123285; D = L; Console.WriteLine("L dan D: " + L + " " + D); }
3. Jalankan program diatas dengan menekan Ctrl+F5. 4. Program diatas mengkonversikan dari tipe long ke tipe double secara otomatis, tapi jika anda melakukan sebaliknya yaitu merubah tipe double menjadi long maka compiler akan menampilkan pesan error. static void Main(string[] args) { long L; double D; D = 100123285.0; L = D; // konversi tidak dapat dilakukan Console.WriteLine("L dan D: " + L + " " + D); }
Casting Jika konversi dilakukan antar tipe data yang tipenya tidak kompatible compiler tidak dapat mengkonversi secara otomatis maka dibutuhkan casting. Misalnya anda akan mengkonversi ekperesi (x/y) yang bertipe double menjadi int. double x, y; // ... int i = (int) (x / y) ;
Maka hasil dari (x/y) akan ‘dipaksa’ menjadi tipe data int. Casting juga melibatkan narrowing conversion yaitu bila tipe data tujuan lebih kecil dari tipe data asal, misal dari tipe long ke tipe int maka akan ada informasi yang hilang karena tipe int lebih kecil daripada tipe long.
Oleh: Erick Kurniawan, S.Kom, M.Kom
22 Listing 3.9 Casting 1. Buatlah aplikasi console baru dengan nama Casting 2. Kemudian tuliskan kodenya sebagai berikut: static void Main(string[] args) { double x, y; byte b; int i; char ch; uint u; short s; long l; x = 10.0; y = 3.0; i = (int)(x / y); // cast double menjadi int, data ada yg hilang Console.WriteLine("Hasil Konversi ke Integer x / y: " + i); Console.WriteLine(); // cast int menjadi byte, tidak ada data yang hilang i = 255; b = (byte)i; Console.WriteLine("b setelah diberi nilai 255: " + b + " -- tidak ada data yang hilang."); // cast int menjadi byte, ada data yang hilang i = 257; b = (byte)i; Console.WriteLine("b setelah diberi nilai 257: " + b + " -- data ada yang hilang."); Console.WriteLine(); // cast uint menjadi short, tidak ada data yang hilang u = 32000; s = (short)u; Console.WriteLine("s setelah diberi nilai 32000: " + s + " -- tidak ada data yang hilang"); // cast uint menjadi short, data ada yang hilang u = 64000; s = (short)u; Console.WriteLine("s setelah diberi nilai 64000: " + s + " -- data ada yang hilang"); Console.WriteLine(); // cast long menjadi uint, tidak ada data yang hilang l = 64000; u = (uint)l; Console.WriteLine("u setelah diberi nilai 64000: " + u + " -- tidak ada data yang hilang"); // cast long menjadi uint, data ada yang hilang l = -12; u = (uint)l; Console.WriteLine("u setelah diberi nilai -12: " + u + " -- data ada yang hilang"); Console.WriteLine();
Oleh: Erick Kurniawan, S.Kom, M.Kom
23 // cast int menjadi char b = 88; // ASCII code untuk huruf X ch = (char)b; Console.WriteLine("ch setelah diberi nilai 88: " + ch); }
3. Jalankan program diatas dengan menekan tombol Ctrl+F5.
Oleh: Erick Kurniawan, S.Kom, M.Kom
24
BAB 4 Operator C# menydiakan kumpulan operator yang dapat digunakan dalam penulisan ekspresi. Operator pada C# dibagi menjadi beberapa jenis antara lain arithmatic, bitwise, relational, logical, assigment, dan ? operator.
Arithmatic Operator Berikut daftar arithmatic operator pada C#: Operator Meaning +
; Addition
−
Subtraction (also unary minus)
*
Multiplication
/
Division
%
Modulus
++
Increment
−−
Decrement Operator +, -, *, / adalah operator aritmatika biasa yang sering anda gunakan untuk perhitungan matematika sederhana dalam kalkulator, sedangkan operator % disebut juga modulus atau sisa bagi.
Listing 4.1 Penggunaan Modulus 1. Buatlah aplikasi console baru dengan nama Modulus 2. Kemudian tulis kode sebagai berikut: static void Main(string[] args) { int idiv, imod; double ddiv, dmod; idiv = 10 / 3; imod = 10 % 3; ddiv = 10.0 / 3.0; dmod = 10.0 % 3.0; Console.WriteLine("Hasil div dan mod dari 10 / 3: " + idiv + " " + imod); Console.WriteLine("Hasil div dan mod dari 10.0 / 3.0: " + ddiv + " " + dmod); }
3. Jalankan programnya dengan menekan tombol Ctrl+F5.
Gambar 4.1
Oleh: Erick Kurniawan, S.Kom, M.Kom
25 Sedangkan operator ++, dan – adalah increament dan decreament operator. Increment operator menambahkan 1 pada operand-nya. Jadi jika dituliskan x = x + 1;
bisa ditulis dengan x++;
sedangkan x = x - 1;
bisa ditulis dengan x--;
Kedua operator increment dan decrement mempunyai dua cara penulisan yaitu prefix dan postfix yang mengikuti operand. Statement x = x + 1 dapat dituliskan sebagai ++x; //bentuk prefix
dan x++; //bentuk postfix
Adapun perbedaan dari penggunaan bentuk prefix dan bentuk postfix dapat dilihat dari contoh program berikut ini: Listing 4.2 Increment dan Decrement 1. Buatlah aplikasi console baru dengan nama Incdec 2. Kemudian tuliskan kode berikut static void Main(string[] args) { int x, y; x = 1; y = x + x++; //postfix x++ nilainya belum ditambah Console.WriteLine("Hasilnya :"+y); Console.WriteLine("Nilai x:" + x); x = 1; y = x + ++x; //prefix Console.WriteLine("Hasilnya :"+y); Console.WriteLine("Nilai x:" + x); }
3. Jalankan program dengan menekan tombol Ctrl+F5.
Gambar 4.2
Relational dan Logical Operators Berikut daftar relational operator pada C#: Operator Meaning == Equal to / sama dengan !=
Not equal to / tidak sama dengan
>
Greater than / lebih besar
<
Less than / lebih kecil Oleh: Erick Kurniawan, S.Kom, M.Kom
26 Operator Meaning >= Greater than or equal to / lebih besar atau sama dengan <= Less than or equal to / lebih kecil atau sama dengan Relational operator pada C# biasanya digunakan dalam statement If untuk pengecekan kondisi Dan berikut adalah logical operator pada C#: Operator Meaning & AND |
OR
^
XOR (exclusive OR)
||
Short-circuit OR
&&
Short-circuit AND
!
NOT
Pada C# semua object dapat dibandingkan kesamaannya dengan operator == dan != . Semua relational operator dapat digunakan pada semua tipe numeric, sedangkan tipe bool hanya dapat digunakan pada operator == dan != saja. Pada operator logical maka operand yang dibandingkan harus bertipe bool, adapun contoh tabel penggunaan logika bool dapat dilihat sebagai berikut p&q p|q p^q !p p q False False False False False True True False False True True False False True False True True True True True True True False False Listing 4.3 Penggunaan Operator Relational & Logical 1. Buatlah aplikasi console baru dengan nama RelLogOperator 2. Kemudian tulis program dibawah ini: static void Main(string[] args) { int i, j; bool b1, b2; i = 10; j = 11; if (i < j) Console.WriteLine("i < j"); if (i <= j) Console.WriteLine("i <= j"); if (i != j) Console.WriteLine("i != j"); if (i == j) Console.WriteLine("baris ini tidak akan dieksekusi"); if (i >= j) Console.WriteLine("baris ini tidak akan dieksekusi"); if (i > j) Console.WriteLine("baris ini tidak akan dieksekusi"); b1 b2 if if
= true; = false; (b1 & b2) Console.WriteLine("baris ini tidak akan dieksekusi"); (!(b1 & b2)) Console.WriteLine("!(b1 & b2) menghasilkan true");
Oleh: Erick Kurniawan, S.Kom, M.Kom
27 if (b1 | b2) Console.WriteLine("b1 | b2 menghasilkan true"); if (b1 ^ b2) Console.WriteLine("b1 ^ b2 menghasilkan true"); }
3.
Jalankan programnya dengan menekan tombol F5.
Assigment Operator Assigment operator adalah tanda =, yang digunakan untuk memberi nilai pada variabel, bentuk umumnya adalah sebagai berikut: var = expression
Tipe data variabel harus sama tipenya dengan nilai dari expressionnya. Assigment operator dapat digunakan untuk memberi nilai kepada beberapa variabel sekaligus: int x, y, z; x = y = z = 100; // memberi nilai x, y, dan z menjadi 100
Compound Assigment C# menyediakan beberapa compound assignment, yang dimaksud dengan compound assignment adalah cara penulisan statement program yang lebih singkat, contohnya: x = x + 10;
dapat ditulis menjadi x += 10;
dan x = x - 100;
dapat ditulis menjadi x -= 100;
Beberapa penulisan compound assigment untuk operator arithmatic dan logical dalam C# adalah sebagai berikut: Operator Penggunaan Alternatif += a +=b; a = a + b; -=
a -=b;
a = a – b;
*=
a *=b;
a = a * b;
/=
a /=b;
a = a/b;
%=
a %= b;
a = a % b;
Bitwise Operators C# menyediakan beberapa operator untuk memanipulasi data dengan cara bekerja langsung pada bit-bit dari operandnya. Operator ini hanya dapat digunakan untuk operand dengan tipe integer, tidak dapat digunakan pada tipe bool, float, atau double. Daftar dari bitwise operator dapat dilihat pada tampilan berikut: Operator Result &
Bitwise AND
|
Bitwise OR
^
Bitwise exclusive OR (XOR)
»
Shift right
«
Shift left
~
One’s complement (unary NOT) Oleh: Erick Kurniawan, S.Kom, M.Kom
28 p q p & q p | q p ^ q ~p 0 0 0
0
0
1
1 0 0
1
1
0
0 1 0
1
1
1
1 1 1
1
0
0
Operator ? Salah satu operator yang menarik yang dimiliki C# adalah operator ?, operator ? digunakan untuk menggantikan single if else statement, operator ? disebut juga ternary karena mempunyai tiga operand, adapun cara penulisannya sebagai berikut: Exp1 ? Exp2: Exp3; Dimana Exp1 adalah bool expression, jika Exp1 bernilai true maka Exp2 dikerjakan, jika Exp1 bernilai false maka Exp3 yang akan dikerjakan.
Listing 4.4 Penggunaan Ternary 1. Buatlah aplikasi console baru dengan nama Ternary 2. Kemudian tuliskan kode dibawah ini: static void Main(string[] args) { int i = 7; string result; result = i > 5 ? "lebih besar 5" : "lebih kecil 5"; Console.WriteLine("Hasilnya: "+result); }
3. Tekan Ctrl+F5 untuk menjalankan programnya
Operator Precedence Operator presedence adalah urut-urutan operator yang akan dikerjakan oleh terlebih dahulu dalam suatu statement program, misal: Langkah 1
y = 2 * 5 * 5 + 3 * 5 +7
maka yang pertama dikerjakan adalah operator * Langkah 2 Langkah 3 Langkah 4
y = 10 * 5 + 3 * 5 + 7 y = 50 + 3 * 5 + 7 y = 50 + 15 + 7
setelah * operator selesai dikerjakan baru dilanjutkan dengan operator + Langkah 5 Langkah 6
y = 65 + 7 y = 72
Adapun daftar urut-urutan operator precedence berdasarkan prioritasnya dari yang paling tinggi (dikerjakan terlebih dahulu) sampai yang paling rendah (dikerjakan paling terakhir) sebagai berikut: Prioritas Operator Keterangan 1 Operator negasi (bukan pengurangan) 2
*, /, %
Perkalian, pembagian, dan modulus
3
+, -
Penambahan dan pengurangan
Oleh: Erick Kurniawan, S.Kom, M.Kom
29
BAB 5 Program Control Statement Pada bab ini akan dibahas tentang program control statement, ada tiga kategori control statement pada C# yaitu: • Selection statement yang terdiri dari if dan switch statement. • Iteration statement yang terdiri dari for, while, do-while, dan foreach loops. • Jump statement yang terdiri dari break, continue, goto, return, dan throw.
If Statement Statement If digunakan untuk seleksi / pemilihan, berdasarkan kondisi tertentu, adapun cara penulisan statement if adalah sebagai berikut: if(condition) statement1; else statement2;
Jika kondisi terpenuhi maka statement1 dikerjakan, tetapi jika kondisi tidak terpenuhi maka statement2 yang akan dikerjakan. Contoh statement if diatas digunakan jika statementnya satu saja atau single statement, bila statementnya ada beberapa maka bentuk penulisannya adalah: if(condition) { statement.. statement.. } else { statement.. statement.. }
Listing 5.1 Penggunaan Single If 1. Buatlah aplikasi console baru dengan nama SingleIf 2. Kemudian tulis kode berikut static void Main(string[] args) { int number1,number2; Console.Write("Masukan nilai number1:"); /* * Int32.Parse digunakan untuk menkonversi tipe string ke int */ number1 = Int32.Parse(Console.ReadLine()); Console.Write("Masukan nilai number2:"); number2 = Int32.Parse(Console.ReadLine()); if (number1 >= number2) { Console.WriteLine("number1 lebih besar atau sama dengan number2"); } else { Console.WriteLine("number2 lebih besar dari number1"); } }
3.
Untuk menjalankan programnya tekan Ctrl+F5.
Oleh: Erick Kurniawan, S.Kom, M.Kom
30
Gambar 5.1
Nested If Nested If adalah statement if yang berada didalam statement if yang lain. Nested if sangat umum digunakan dalam pemrograman, contoh penulisan nested if: if(condition) { if(condition) { statement.. } if(condition) { if(condition) { statement.. } } }
Listing 5.2 Penggunaan Nested If 1. Buatlah aplikasi console baru dengan nama NestedIf 2. Kemudian tuliskan kode berikut static void Main(string[] args) { int number1, number2; Console.Write("Masukan nilai number1:"); number1 = Int32.Parse(Console.ReadLine()); Console.Write("Masukan nilai number2:"); number2 = Int32.Parse(Console.ReadLine()); if (number1 >= number2) { Console.WriteLine("number1 lebih besar atau sama dengan number2"); if (number1 % 2 == 0) { Console.WriteLine("number1 adalah bilangan genap"); } else { Console.WriteLine("number2 adalah bilangan ganjil"); } } else { Console.WriteLine("number2 lebih besar dari number1"); } }
3. Jalankan programnya dengan menekan tombol Ctrl+F5.
Oleh: Erick Kurniawan, S.Kom, M.Kom
31
Gambar 5.2
If Bertingkat Statement If juga dapat dituliskan secara bertingkat, dalam if bertingkat tidak hanya tedapat satu kondisi saja yang di cek tetapi bisa beberapa kondisi, bila kondisi pertama tidak terpenuhi maka otomatis pindah ke kondisi ke dua dan seterusnya. if(condition1) statement; else if(condition2) statement; else if(condition3) statement; . . else statement;
Listing 5.3 If Bertingkat 1. Buatlah aplikasi console baru dengan nama IfBertingkat 2. Kemudian tuliskan kode berikut static void Main(string[] args) { int nilai; Console.Write("Masukan nilai yang akan dikonversi:"); nilai = Int32.Parse(Console.ReadLine()); if (nilai >= 85) { Console.WriteLine("Nilai anda A"); } else if (nilai >= 70) { Console.WriteLine("Nilai anda B"); } else if (nilai >= 55) { Console.WriteLine("Nilai anda C"); } else if (nilai >= 35) { Console.WriteLine("Nilai anda D"); } else { Console.WriteLine("Nilai anda E"); } }
3. Jalankan programnya dengan menekan tombol Ctrl+F5
Oleh: Erick Kurniawan, S.Kom, M.Kom
32
Gambar 5.3
Switch Statement Selain statement If, selection statement yang kedua pada C# adalah switch, fungsi statement switch hampir sama statement if….else dengan statement else lebih dari satu. Meskipun anda dapat menggunakan if bertingkat untuk memeilih beberapa alternatif pilihan namun pada beberapa kasus switch lebih efisien untuk digunakan. Struktur penulisan statement switch adalah: switch(expression) { case constant1: statement sequence break; case constant2: statement sequence break; case constant3: statement sequence break; . . . default: statement sequence break; }
Switch expression harus bertipe integer (byte, short, int, char), atau string, tipe floating point tidak diijinkan untuk digunakan, case constant tipenya harus kompatibel dengan expression-nya dan tidak boleh ada case constant yang bernilai sama. Jika tidak ada case constant yang memenuhi maka statement dalam blok default yang akan dieksekusi, penggunaan default sifatnya opsional jika tidak ada default dan tidak ada case constant yang memenuhi maka tidak ada yang dieksekusi / tidak ada hasil outputnya. Ketika case constant memenuhi maka statement didalam blok case tersebut dieksekusi sampai ditemukan break statement. Listing 5.4 Switch..Case Statement 1. Buatlah aplikasi console baru dengan nama SwitchCase 2. Kemudian tuliskan kode berikut static void Main(string[] args) { int intHari; Console.Write("Masukan Pilihan Hari (1-7) :"); intHari = Int32.Parse(Console.ReadLine()); switch (intHari) { case 1: Console.WriteLine("Hari Minggu"); break; case 2:
Oleh: Erick Kurniawan, S.Kom, M.Kom
33 Console.WriteLine("Hari break; case 3: Console.WriteLine("Hari break; case 4: Console.WriteLine("Hari break; case 5: Console.WriteLine("Hari break; case 6: Console.WriteLine("Hari break; case 7: Console.WriteLine("Hari break; default: Console.WriteLine("Anda break;
Senin");
Selasa");
Rabu");
Kamis");
Jumat");
Sabtu");
salam memasukan input (1-7)");
} }
3. Jalankan programnya dengan menekan tombol Ctrl+F5.
Gambar 5.4
For..Loop Statement Salah satu kelebihan komputer dibandingkan dengan manusia adalah kemampuannya untuk melaksanakan suatu instruksi berulangkali dengan amat sangat cepat, pada pemrograman pengulangan atau kalang (repetition atau loop) dapat dilakukan sejumlah kali sampai kondisi berhenti yang sudah ditentukan tercapai. Statement perulangan terdiri atas dua bagian: • Bagian pertama adalah kondisi perulangan yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan perulangan. • Bagian kedua adalah blok statement yang akan diulang Statement perulangan biasanya juga disertai dua proses • Proses pertama adalah inisialisasi yaitu proses memberi nilai pada variabel yang akan digunakan sebagai counter pada perulangan. • Proses kedua adalah terminasi yaitu proses penghentian perulangan pada kondisi tertentu yang sudah ditentukan, ini dilakukan pada akhir dari perulangan. Statement for termasuk dalam repetition statement atau statement perulangan, adapun karakteristik dari statement for adalah: • Digunakan untuk perulangan yang batasnya sudah diketahui dengan jelas, misalnya 1 sampai dengan 10. • Memerlukan dua variabel untuk awal dan akhir perulangan. • Nilai variabel penghitung (counter) akan secara otomatis bertambah atau berkurang tiap kali sebuah perulangan dilaksanakan. Struktur dari statement for dapat dilihat sebagi berikut: Oleh: Erick Kurniawan, S.Kom, M.Kom
34 for(initialization; condition; iteration) { statement sequence }
Untuk lebih jelasnya dibawah ini ada beberapa contoh penggunaan statement for yang bervariasi untuk menyelesaikan beberapa studi kasus tertentu. Listing 5.5 Simple For..Loop Statement 1. Buatlah aplikasi console baru dengan nama SimpleFor 2. Kemudian tulis kode berikut static void Main(string[] args) { //mencetak bilangan dari 1-10, increment for (int i = 1; i <= 10; i++) Console.WriteLine(i); Console.WriteLine(); //mencetak bilangan dari 10 ke 1, decrement for (int i = 10; i >= 1; i--) Console.WriteLine(i); }
3. Jalankan programnya dengan menekan tombol Ctrl+F5. Listing 5.5 menjelaskan penggunaan for untuk mencetak bilangan dari 1 sampai 10, anda dapat melihat bahwa inisialisasi awal yang diberikan pada for adalah int i = 1 dan perulangan akan dilakukan selama i <= 10, i++ adalah variabel untuk increment otomatis pada for. Listing 5.6 Mencari Bilangan Genap dan Ganjil 1. Buatlah aplikasi console baru dengan nama GenapGanjil 2. Kemudian tulis kode berikut static void Main(string[] args) { Console.WriteLine("Menampilkan bilangan genap dari 1-20"); for (int i = 1; i <= 20; i++) { if (i % 2 == 0) Console.Write(i + " "); } Console.WriteLine(); Console.WriteLine("Menampilkan bilangan ganjil dari 1-20"); for (int i = 1; i <= 20; i++) { if (i % 2 == 1) Console.Write(i + " "); } }
3. Jalankan programnya dengan menekan tombol Ctrl+F5. Listing 5.6 menjelaskan penggunaan statement if didalam pengulangan pada studi kasus mencari bilangan genap dan ganjil, bilangan genap adalah bilangan yang habis dibagi dengan 2 sedangkan bilangan ganjil adalah bilangan yang tidak habis dibagi 2.
Oleh: Erick Kurniawan, S.Kom, M.Kom
35 Listing 5.7 Nested For 1. Buatlah aplikasi console baru dengan nama NestedFor 2. Kemudian tulis kode berikut: static void Main(string[] args) { for (int i = 0; i < 10; i++) { for (int j = 0; j < i; j++) { Console.Write("* "); } Console.WriteLine(); } }
3. Jalankan programnya dengan menekan tombol Ctrl+F5, hasil outputnya dapat dilihat sebagai berikut:
Gambar 5.5
While..Loop Statement Salah satu bentuk perulangan yang dapat digunakan pada C# adalah statement While..Loop, adapun bentuk umum dari statement while..loop sebagai berikut: initialization while(condition) { statement1…. statement2…. perubahan condition }
Statement while..loop mempunyai beberapa karakteristik khusus yang membedakannya dari bentuk perulangan yang lain, yaitu: • Pengecekan kondisi dilakukan terlebih dahulu sebelum dilakukan perulangan, jika kondisi yang dicek bernilai benar (true) maka perulangan akan dilakukan. • Statement dapat berupa single statement atau block statement (lebih dari satu statement). Listing 5.8 SimpleWhile 1. Buatlah aplikasi console baru dengan nama SimpleWhile 2. Kemudian tulis kode berikut: static void Main(string[] args) { //mencetak angka 1-10 int i = 1; while (i <= 10)
Oleh: Erick Kurniawan, S.Kom, M.Kom
36 { Console.WriteLine(i); i++; } }
3. Jalankan programnya dengan menekan tombol Ctrl+F5. Listing 5.9 Menampilkan Bilangan Terbesar 1. Buatlah aplikasi console baru dengan nama BilTerbesar 2. Kemudian tulis kode berikut: static void Main(string[] args) { int bil; int i = 1; int banyak; int besar = 0; Console.Write("Masukan banyak bilangan yang akan dicek :"); banyak = Convert.ToInt32(Console.ReadLine()); while (i <= banyak) { Console.Write("Masukan Bilangan ke-"+i+": "); bil = Convert.ToInt32(Console.ReadLine()); if (bil >= besar) { besar = bil; } i++; } Console.WriteLine("Jadi bilangan yang terbesar adalah :"+besar); }
3. Jalankan programnya dengan menekan tombol Ctrl+F5.
Gambar 5.6
Do..While Statement Statement do..while loop mirip dengan statement while..loop hanya ada beberapa hal yang berbeda, yaitu: • Kondisi pengecekan perulangan dilakukan di akhir peerulangan. • Perulangan pasti dilakukan minimal satu kali terlebih dahulu, kemudian baru dilakukan pengecekan terhadap kondisi, jika kondisi bernilai benar maka perulangan masih akan tetap dilakukan. Bentuk umum dari statement do..while adalah sebagai berikut: initialization do { statement...
Oleh: Erick Kurniawan, S.Kom, M.Kom
37 statement… perubahan condition }while(condition)
Listing 5.10 Simple Do..While 1. Buat aplikasi console baru dengan nama SimpleDo 2. Kemudian tulis kode berikut: static void Main(string[] args) { //mencetak bilangan dari 1-10 int i = 1; do { Console.WriteLine(i); i++; } while (i <= 10); }
3. Tekan Ctrl+F5 untuk menjalankan programnya Listing 5.11 Membalik Bilangan 1. Buat aplikasi console baru dengan nama BalikBilangan 2. Kemudian tulis kode berikut: static void Main(string[] args) { int num; int nextdigit; Console.Write("Masukan bilangan :"); num = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Bilangan sebelum dibalik "+num); Console.Write("Bilangan setelah dibalik :"); do { nextdigit = num % 10; Console.Write(nextdigit); num = num / 10; } while (num > 0); }
3. Tekan F5 untuk menjalankan programnya.
Break Statement Break statement digunakan untuk keluar dari kalang bila kondisi tertentu yang ditambahkan dipenuhi. Ketika break statement dieksekusi maka kalang / loop akan secara otomatis berhenti. Listing 5.12 Penggunaan Break Statement 1. Buatlah aplikasi console baru dengan nama BreakStatement 2. Tulis kode sebagai berikut: static void Main(string[] args) { for (int i = 1; i <= 10; i++) { if (i == 5) break;
Oleh: Erick Kurniawan, S.Kom, M.Kom
38 Console.WriteLine(i); } }
3. Tekan F5 untuk menjalankan programnya
Continue Statement Continue statement digunakan untuk melewati stattement dibawah continue statement (statement dibawah continue tidak akan dikerjakan). Adapun contoh dari penggunaan continue statement dapat dilihat pada contoh berikut: Listing 5.13 Continue Statement 1. Buatlah aplikasi console baru dengan nama ContinueStatement 2. Kemudian tulis kode sebagai berikut: static void Main(string[] args) { for (int i = 1; i <= 10; i++) { if (i == 5) continue; Console.WriteLine(i); } }
3. Tekan F5 untuk menjalankan programnya
Oleh: Erick Kurniawan, S.Kom, M.Kom
39
BAB 6 Method Pembagian program menjadi beberapa method adalah salah satu teknik yang digunakan pada pemrograman modular. Pada pemrograman modular program yang biasanya cukup besar dibagi menjadi beberapa bagian yang lebih kecil sehingga mengurangi kompleksitas program yang ditulis, masalah yang kompleks lebih mudah untuk diselesaikan dan program menjadi lebih spesifik dan terarah. Method adalah kumpulan dari statement yang dikerjakan secara bersama-sama untuk menyelesaikan tugas tertentu. Penggunaan method tunggal akan menyebabkan program sulit untuk dimaintain karena menjadi kompleks dan rumit. Penggunaan method dalam pemrograman dapat dianalogikan sebagai berikut, jika anda membaca buku yang mempunyai panjang ratusan halaman, akan sulit bagi anda untuk memahaminya jika halaman-halaman tersebut tidak dikelompokan menjadi beberapa bab dan subbab tersendiri. Dengan memecahnya menjadi beberapa bab atau subbab tersendiri maka buku tersebut menjadi lebih mudah untuk dibaca dan dipahami. Demikian juga dengan pemrograman, anda dapat memecah code menjadi beberapa method, setiap method yang dibuat mewakili tugas yang spesifik. Sebagai contoh program yang mengerjakan arithmetic calculation, method yang pertama berfungsi untuk mengambil input dari user, method yang kedua mengerjakan proses kalkulasinya, dan method yang terakhir berfungsi untuk mencetak output-nya. Keuntungan yang diperoleh dari memecah program menjadi beberapa method tersebut adalah menjadikan program mudah untuk dibaca dan dipahami, anda dapat menambahkan statement baru pada method yang spesifik tanpa mempengaruhi method yang lainnya. Ada dua macam method yang digunakan pada C# berdasarkan nilai kembaliannnya, yaitu method yang mengembalikan nilai dan method yang tidak mengembalikan nilai (menggunakan keyword void).
Mendefinisikan dan Memanggil Method Menggunakan fungsi pada program melibatkan dua langkah: • Mendefinisikan Method • Memanggil Method Contoh 6.1 Membuat Simple Method untuk Penjumlahan 1. Pada contoh program berikut akan dibuat sebuah aplikasi berbasis windows untuk melakukan operasi penjumlahan bilangan yang diinputkan, pada program ini code akan dipecah menjadi beberapa method yang mempunyai fungsi yang spesifik. 2. Buat aplikasi windows form baru dengan nama AddMethod 3. Property dan desain tampilannya sebagai berikut Object Property frmAdd Text btnAdd Text lstResult
Value Arithmatic Add Number
Oleh: Erick Kurniawan, S.Kom, M.Kom
40
Gambar 6.1
4. Kemudian tuliskan kode programnya sebagai berikut: public partial class frmAdd : Form { public frmAdd() { InitializeComponent(); } //method untuk menampilkan penjumlahan public void DisplaySum(double dblNum1, double dblNum2) { lstResult.Items.Add("Jumlah " + dblNum1 + " ditambah " + dblNum2 + " adalah: " + (dblNum1 + dblNum2)); } //method untuk menampilkan penjelasan pada listbox public void ExplainPurpose() { lstResult.Items.Add("Program ini digunakan untuk menjumlahkan dua bilangan"); lstResult.Items.Add("Akan ditampilkan hasil penjumlahan dari dua bilangan tersebut"); } private void btnAdd_Click(object sender, EventArgs e) { lstResult.Items.Clear(); //memanggil method untu menampilkan penjelasan ExplainPurpose(); lstResult.Items.Add(""); //memanggil method untuk menjumlahkan dua bilangan dengan parameter DisplaySum(2, 3); } }
Pada contoh 6.1 diatas anda dapat melihat bahwa code dari program tersebut dipecah menjadi beberapa method yaitu ExplainPurpose() untuk mencetak penjelasan pada listbox dan DisplaySum() untuk menjumlahkan dan menambahkan bilangan yang sudah dijumlahkan kedalam listbox. Untuk menggunakan / memanggil method anda cukup memanggil nama method dan mencantumkan nilai parameternya Dapat anda lihat bahwa method DisplaySum() memiliki dua parameter yang bertipe double yaitu dblNum1 dan dblNum2, maka ketika method tersebut dipanggil maka nilai parameternya juga
Oleh: Erick Kurniawan, S.Kom, M.Kom
41 harus dituliskan seperti DisplaySum(2,3), ini berarti dblNum1 diberi nilai 2 dan dblNum2 diberi nilai 3. Contoh 6.2 Membuat Method untuk Menghitung Kepadatan Penduduk 1. Pada contoh program berikut akan dibuat sebuah aplikasi untuk menghitung jumlah kepadatan penduduk berdasarkan luas area, dan populasinya 2. Buat windows application baru dengan nama Demographics 3. Property dan design form-nya sebagai berikut: Object frmDensities btnDisplay lstDensity
Property Text Text
Value Demographics Display Demographic
Gambar 6.2
4. Kemudian tuliskan kode programnya sebagai berikut: public partial class frmDensities : Form { public frmDensities() { InitializeComponent(); } //method untuk menghitung kepadatan penduduk public void CalculateDensity(string strState, double dblPop, double dblArea) { double dblRawDensity, dblDensity; dblRawDensity = dblPop / dblArea; //membulatkan satu angka dibelakang koma dblDensity = Math.Round(dblRawDensity, 1); lstDensity.Items.Add("Kepadatan penduduk dari state " + strState + " adalah " + dblDensity); lstDensity.Items.Add("orang per mile persegi"); } private void btnDisplay_Click(object sender, EventArgs e) { lstDensity.Items.Clear(); CalculateDensity("Hawaii", 1257608, 6471); lstDensity.Items.Add(""); CalculateDensity("Alaska", 648818, 591000); } }
Oleh: Erick Kurniawan, S.Kom, M.Kom
42 Pada contoh program 6.2 diatas method CalculateDensity() memiliki tiga macam parameter yang berbeda tipe datanya, yang pertama adalah strState yang bertipe string, dan dblPop dan dblArea yang bertipe double. Method CalculateDensity() digunakan untuk menghitung kepadatan penduduk pada suatu daerah tertentu berdasarkan luas area (dblArea) dan jumlah penduduknya (dblPop). Untuk memanggunakan method ini anda juga harus menginputkan nilai dari ketiga parameternya CalculateDensity("Hawaii", 1257608, 6471).
Method Pass By Value dan Pass By Reference Ada dua jenis parameter pada method yang sering digunakan pada pemrograman yaitu Pass By Value dan Pass By Reference. Secara default parameter pada method adalah Pass By Value, jadi nilai dari variabel yang dikirimkan melalui method, tidak direferensikan kembali ke variabel pemanggil setelah method tersebut dijalankan. Adapun perbedaan penggunaan By Value dan By Reference akan ditunjukan pada contoh 6.3 dibawah ini. Contoh 6.3 Method Pass By Value dan Pass By Reference 1. Pada contoh program berikut akan dibuat aplikasi program untuk menghitung penjumlahan dari dua bilangan, method parameter yang dibuat menggunakan Pass By Value dan Pass By Reference agar dapat diketahui perbedaan dari pengguanaan kedua method parameter tersebut. 2. Buatlah aplikasi windows baru dengan nama AddTwoNumber 3. Property dan design formnya sebagai berikut Object frmAdd txtFirstNum txtSecondNum btnCompute txtResult
Property Text
Value Add Two Number
Text Compute Sum ReadOnly True
Gambar 6.3
4. Kemudian tulis programnya sebagai berikut: public partial class Form1 : Form { public Form1() { InitializeComponent(); } public void GetNumber(ref double dblX, ref double dblY) { dblX = Convert.ToInt32(txtFirstNum.Text); dblY = Convert.ToInt32(txtSecondNum.Text); }
Oleh: Erick Kurniawan, S.Kom, M.Kom
43 public void CalculateSum(double dblNum1, double dblNum2, ref double dblTotal) { dblTotal = dblNum1 + dblNum2; } public void DisplayResult(double dblNum1, double dblNum2, double dblTotal) { txtResult.Text = "Jumlah dari " + dblNum1 + " dan " + dblNum2 + " adalah " + dblTotal; } private void btnCompute_Click(object sender, EventArgs e) { double dblX=0, dblY=0, dblTotal=0; GetNumber(ref dblX,ref dblY); CalculateSum(dblX, dblY,ref dblTotal); DisplayResult(dblX, dblY, dblTotal); } }
Pada contoh 6.3 diatas, method GetNumber() yang berfungsi untuk mengambil nilai dari textbox, seperti dapat anda lihat method GetNumber(ref dblX, ref dblY) mempunyai dua parameter yang sifatnya pass by reference (ditandai dengan keyword ref). ketika pertama dipanggil method GetNumber() melewatkan nilai dblX, dan dblY yang awalnya diberi nilai 0, setelah method GetNumber() dikerjakan maka nilai dari dblX dan dblY diisi dengan nilai dari textbox, setelah itu nilai tersebut dikembalikan ke pemanggil method sehingga nilai dblX dan dblY yang ada pada method btn_Compute_Click() sama dengan nilai yang ada pada textbox. Demikian juga dengan method CalculateSum() yang memiliki satu parameter reference yaitu dblTotal, setelah method CalculateSum() selesai dieksekusi maka nilai dari parameter dblTotal dikembalikan ke method btn_Compute_Click().
Local Variable Pada saat anda mendeklarasikan variable di dalam sebuah method, maka variabel tersebut tidak dapat diakses dari method yang lain karena variabel tersebut bersifat local atau hanya berlaku dalam method dimana variabel tersebut didefinisikan, program dibawah ini akan menjelaskan penggunaan local variabel dalam method. Contoh 6.4 Penggunaan Local Variable 1. Buat aplikasi windows baru dengan nama LocalVariable 2. Kemudian tambahkan satu button dan satu listbox kedalam form 3. Ketikan kode dibawah ini: public partial class Form1 : Form { public Form1() { InitializeComponent(); } public void Three() { double num = 0;
Oleh: Erick Kurniawan, S.Kom, M.Kom
44 lstResult.Items.Add(num); num = 3; } private void btnDisplay_Click(object sender, EventArgs e) { Three(); Three(); } }
Pada program diatas, dalam method Three() didklarasikan variable num yang nilai awalnya adalah 0, kemudian diakhir method variable num dirubah nilainya menjadi 3, tapi ketika method Three() dipanggil dari method yang lain yaitu method btnDisplay_Click() sebanyak 2 kali, variable num tetap bernilai 0 karena variable num hanya berlaku pada method Three() saja (local variable) dan tidak dapat diakses dari method yang lain seperti btnDisplay_Click().
Class-Level Variable Jika anda ingin mendeklarasikan variable yang dapat diakses dari semua method yang ada, maka anda dapat mendeklarasikannya di level Class (class-level-variable). Letak pendeklarasian variablenya di dalam public class nya langsung, tidak berada dalam method tertentu. Variable yang dideklarasikan didalam public classnya disebut class-level-scope sedangkan variable yang dideklarasikan dalam method-nya disebut local-scope. Contoh program dibawah ini akan menunjukan penggunaan class-level-scope variable dan local-scope variable. Contoh 6.5 Penggunaan Class Level Variable 1. Buat aplikasi windows baru dengan nama ClassLevelVariable 2. Tambahkan satu button dan satu listbox kedalam form, sehingga design formnya menjadi:
Gambar 6.4
3. Kemudian ketikan kode berikut: public partial class Form1 : Form { public Form1() { InitializeComponent(); } //class level scope double dblNum1, dblNum2;
Oleh: Erick Kurniawan, S.Kom, M.Kom
45 public void AddAndIncrement() { lstResult.Items.Add("Hasil dari " + dblNum1 + " ditambah dengan " + dblNum2 + " adalah: " + (dblNum1 + dblNum2)); dblNum1 += 1; dblNum2 += 1; } private void btnDisplay_Click(object sender, EventArgs e) { dblNum1 = 2; dblNum2 = 3; lstResult.Items.Clear(); AddAndIncrement(); lstResult.Items.Add(""); lstResult.Items.Add("Number1 = " + dblNum1); lstResult.Items.Add("Number2 = " + dblNum2); } }
Dengan mendeklarasikan variable pada class-level seperti variable dblNum1 dan dblNum2 pada contoh 6.5 diatas maka variabel tersebut dapat diaksed dari semua method dalam class tersebut.
Method Yang Mengembalikan Nilai Pada contoh-contoh diatas method yang dibuat memiliki keyword void, ini berarti method yang dibuat tidak mengembalikan nilai apapun, hanya menjalankan rutin tertentu saja. Selain method dengan keyword void yang tidak mengembalikan nilai apapun ada juga method yang mengembalikan nilai tertentu, method ini menggunakan keyword return untuk mengembalikan nilai ke pemanggilnya. Pada contoh dibawah ini akan dibuat aplikasi dengan method yang mengembalikan nilai untuk mengkonversi suhu dari farenheit ke celsius. Contoh 6.6 Konversi Farenheit Ke Celsius 1. Buat aplikasi windows baru dengan nama FarToCelc 2. Adapun property dan design-nya sebagai berikut Object frmConvert btnConvert txtFarenheit txtCelsius
Property Text Text
Value Convert Farenheit to Celcius Convert to Celsius
ReadOnly true
Gambar 6.5
3. Kemudian tuliskan kode berikut ini: Oleh: Erick Kurniawan, S.Kom, M.Kom
46 public partial class frmConvert : Form { public frmConvert() { InitializeComponent(); } //method mengembalikan nilai bertipe double public double FToC(double dblT) { //mengembalikan nilai return Math.Round((5.0 / 9.0) * (dblT - 32),2); } private void btnConvert_Click(object sender, EventArgs e) { double dblFarTemp=0, dblCelcTemp=0; dblFarTemp = Convert.ToDouble(txtFarenheit.Text); //memanggil fungsi untuk konversi dari farenheit ke celsius dblCelcTemp = FToC(dblFarTemp); txtCelsius.Text = dblCelcTemp.ToString(); } }
Pada contoh program 6.6 mempunyai method dengan nama FToC() yang mengembalikan nilai bertipe double, method yang mengembalikan nilai memiliki keyword return. Contoh 6.7 Method untuk Mendeteksi First Name 1. Pada contoh program berikut akan dibuat aplikasi untuk mendeteksi nama pertama dari nama lengkap yang diinputkan. 2. Buat aplikasi windows dengan nama FirstName 3. Property dan design formnya sebagai berikut Object frmFirstName txtFullName btnDetermine txtFirstName
Property Text
Value Extract First Name
Text Determine First Name ReadOnly true
Gambar 6.6 public partial class frmFirstName : Form { public frmFirstName() {
Oleh: Erick Kurniawan, S.Kom, M.Kom
47 InitializeComponent(); } public string FirstName(string strName) { int intFirstSpace; intFirstSpace = strName.IndexOf(" "); return strName.Substring(0, intFirstSpace); } private void btnDetermine_Click(object sender, EventArgs e) { string strName; strName = txtFullName.Text; txtFirstName.Text = FirstName(strName); } }
Constoh 6.8 Menghitung Deposito 1. Pada contoh program berikut akan dibuat aplikasi untuk menghitung deposito berdasarkan banyak deposit, bunga per tahun, lama penyimpanan deposito, compound interest / bunga majemuk per tahunnya. 2. Buat aplikasi windows baru dengan nama BankDeposit 3. Property dan design formnya sebagai berikut: Object frmBank txtAmount txtRate txtNumComp txtNumYrs btnCompute txtBalance
Property Text
Value Bank Deposit
Text Compute Balance ReadOnly True
Gambar 6.7
4. Kemudian ketikan kodenya sebagai berikut: public partial class frmBank : Form {
Oleh: Erick Kurniawan, S.Kom, M.Kom
48 public frmBank() { InitializeComponent(); } public void InputData(ref double dblP, ref double dblR, ref double dblC, ref double dblN) { dblP = Convert.ToDouble(txtAmount.Text); dblR = Convert.ToDouble(txtRate.Text); dblC = Convert.ToDouble(txtNumComp.Text); dblN = Convert.ToDouble(txtNumYrs.Text); } public void DisplayBalance(double dblP, double dblR, double dblC, double dblN) { double dblBalance; dblBalance = FutureValue(dblP, dblR, dblC, dblN); //format currency txtBalance.Text = String.Format("{0:C}", dblBalance); } /* Menemukan future value dari bank savings account p principal, the amount deposited / jumlah tabungan r annual rate of interest / bunga tahunan c number of times interest is compounded per year / bunga majemuk n number of years / lama simpanan dalam tahun */ public double FutureValue(double dblP, double dblR, double dblC, double dblN) { double dblI; //bunga rata-rata per periode / interest rate per period double dblM; //total number of times interest is compounded dblI = dblR / dblC; dblM = dblC * dblN; //Math.Pow() untuk pangkat return dblP * Math.Pow(1 + dblI,dblM); } private void btnCompute_Click(object sender, EventArgs e) { double dblP = 0, dblR = 0, dblC = 0, dblN = 0; InputData(ref dblP, ref dblR, ref dblC, ref dblN); DisplayBalance(dblP, dblR, dblC, dblN); } }
5. Hasilnya setelah dijalankan dapat dilihat pada tampilan dibawah ini:
Oleh: Erick Kurniawan, S.Kom, M.Kom
49
Gambar 6.8
Pada contoh program 6.8 memiliki dua macam method, yang mengembalikan nilai FutureValue() dan yang tidak mengembalikan nilai InputData() dan DisplayBalance(). Method yang digunakan juga memiliki parameter yang pass by reference dan pass by value.
Oleh: Erick Kurniawan, S.Kom, M.Kom
50
BAB 7 ARRAY Dalam programming selama ini anda menggunakan satu variabel untuk menyimpan satu buah nilai dengan tipe data tertentu, misalnya: double a1, a2, a3, a4, a5;
Deklarasi variabel diatas digunakan untuk menyimpan 5 data bertipe double dimana masingmasing variabel diberi nama a1, a2, a3, a4, dan a5. Tetapi bayangkan jika anda ingin menyimpan seratus, seribu data atau mungkin jumlah datanya bersifat dinamis / tidak pasti yang semuanya bertipe double, apakah harus mendeklarasikan seratus atau seribu variabel dengan nama yang berbeda? Solusinya adalah anda harus menggunakan Array.
Definisi Array Array adalah group atau kumpulan dari variabel (yang disebut elemen) yang mengandung nilai dengan tipe yang sama dan mempunyai nama tertentu. Elemen-elemen array tersusun secara sequensial didalam memory sehingga memiliki alamat yang berdekatan. Elemen-elemen dalam array memiliki tipe data yang sama namun bisa bernilai sama atau berbeda. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.
Adapun cara pengaksesan elemen dalam array adalah sebagai berikut: • Elemen-elemen array dapat diakses oleh program menggunkan suatu indeks tertentu. • Pengaksesan elemen array dapat dilakukan berurutan atau random berdasarkan indeks tertentu secara langsung. • Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud. Deklarasi array 1 dimesi dalam C# dapat dituliskan sebagai berikut: tipe_data nama_var_array[ukuran];
• tipe_data : menyatakan jenis tipe data elemen array (int, double, char, string, dll). • nama_var_array : menyatakan nama variabel array yang digunakan. • ukuran : menunjukan jumlah maksimal elemen array. Contoh : int[] c; c = new int[8]; double[] d = new double[8]; int[] arr = { 31, 23, 45, 32, 12, 34, 23 };
•
int[] c; statement ini artinya anda mendeklarasikan array dengan nama c dan tipe datanya
•
c = new int[8]; setelah mendeklarasikan variabel diatas, statement yang kedua adalah
adalah integer. memesan tempat di memory komputer sebanyak 8 tempat (indeks 0-7) yang semua tipenya adalah integer. Oleh: Erick Kurniawan, S.Kom, M.Kom
51 • • • •
double[] d = new double[8]; ini adalah cara lain untuk pendeklarasian array langsung
dengan inisialisasi banyak elemen array yang akan dibuat. int[] arr = { 31, 23, 45, 32, 12, 34, 23 }; statement ini juga merupakan cara lain untuk mendeklarasikan array dengan cara langsung mengisikan elemen arraynya dengan nilai tertentu. Pada array 1 dimensi tanda [] disebut juga “elemen yang ke …” misal “arr[0]” berarti elemen dari array arr yang ke-0. Array yang sudah dipesan, misal 8 tempat tidak harus diisi semuanya, bisa saja hanya diisi 4 elemen saja baik secara berurutan maupun tidak. Namun pada kondisi yang tidak sepenuhnya terisi tersebut, tempat pemesanan di memory tetap sebanyak 8 tempat, jadi tempat yang tidak terisi tetap terpesan dan dibiarkan kosong.
Listing 7.1 Deklarasi Array 1. Buat windows form baru dengan nama DeklarasiArray 2. Kemudian masukan sebuah button dan sebuah listbox pada form, ubah property name pada button menjadi “btnTampil”, kemudian double-click pada button untuk menambahkan kode berikut: private void btnTampil_Click(object sender, EventArgs e) { int[] arr; arr = new int[4]; arr[0] = 23; arr[1] = 20; arr[2] = 54; arr[3] = 10; listBox1.Items.Add("Index\tValue"); for (int x = 0; x < arr.Length; x++) { listBox1.Items.Add(x + "\t" + arr[x]); } }
Listing 7.2 Inisialisasi Array secara langsung 1. Buat windows form baru dengan nama InisialisasiArray 2. Kemudian masukan sebuah button dan sebuah listbox pada form, ubah property name pada button menjadi “btnTampil”, kemudian double-click pada button untuk menambahkan kode berikut: private void btnTampil_Click(object sender, EventArgs e) { int[] arr = { 12, 34, 56, 78, 32, 45, 78, 97, 43, 23, 12, 23 }; listBox1.Items.Add("Index\tValue"); for (int x = 0; x < arr.Length; x++) { listBox1.Items.Add(x+"\t"+arr[x]); } }
Listing 7.3 Menghitung Sum dari Elemen Array 1. Buat windows form baru dengan nama SumElemenArray 2. Kemudian masukan sebuah button dan sebuah listbox pada form, ubah property name pada button menjadi “btnTampil”, kemudian double-click pada button untuk menambahkan kode berikut: Oleh: Erick Kurniawan, S.Kom, M.Kom
52 private void btnTampil_Click(object sender, EventArgs e) { int[] intArr = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 }; int intTotal = 0; listBox1.Items.Add("Index\tValue"); for (int x = 0; x < intArr.Length; x++) { listBox1.Items.Add(x + "\t" + intArr[x]); intTotal += intArr[x]; } listBox1.Items.Add("Total\t" + intTotal); }
Listing 7.4 Menampilkan Statistik 1. Buat windows form baru dengan nama TampilBintang 2. Kemudian masukan sebuah button dan sebuah listbox pada form, ubah property name pada button menjadi “btnTampil”, kemudian double-click pada button untuk menambahkan kode berikut: private void btnTampil_Click(object sender, EventArgs e) { int[] arr = { 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1 }; string strTampil=""; listBox1.Items.Add("Distribusi Nilai :"); for (int x = 0; x < arr.Length; x++) { if (x == 10) strTampil = "100 :"; else strTampil = Convert.ToString(x * 10) + " - " + Convert.ToString(x * 10 + 9) + " :"; for (int y = 0; y < arr[x]; y++) strTampil += "*"; listBox1.Items.Add(strTampil); strTampil = ""; } }
Oleh: Erick Kurniawan, S.Kom, M.Kom