Algoritma Dan Pemrograman Dengan Bahasa C
Algoritma Dan Pemrograman Dengan Bahasa C
SISTEM KOMPUTER
Sebuah sistem komputer terdiri atas : hardware software brainware
Suatu sistem komputer dapat bekerja karena ketiga komponen tersebut bekerjasama sehingga hardware bisa di akses dengan brainware menggunakan software terutama dengan menggunakan sistem operasi.
Dengan menggunakan beberapa aplikasi software, brainware pun dapat meningkatkan produktivitasnya. maka
Komputer
Sistem operasi
2 Bhs. pemrograman Program aplikasi
Karena algoritma berfokus pada software, maka akan dibahas Lebih detail mengenai software (program). Program adalah kumpulan instruksi atau perintah yang disusun Sedemikian rupa, sehingga mempunyai urutan nalar yang tepat Untuk menyelesaikan suatu persoalan. Instruksi (statement) adalah syntax atau cara penulisan yang sesuai dengan bahasa pemrograman yang digunakan dimana mempunyai komponen input, proses, output.
PENGERTIAN ALGORITMA
Algoritma adalah urutan langkah yang logis untuk menyelesaikan masalah tertentu. Penekanan dalam algoritma adalah urutan langkah yang logis, yang berarti algoritma harus mengikuti suatu urutan tertentu, tidak boleh melompat-lompat.
Secara definisi, algoritma adalah alur pemikiran logis yang dapat dituangkan kedalam banyak tulisan. Yang ditekankan pertama adalah alur pikiran, sehingga algoritma seseorang dapat berbeda dengan algoritma orang lain. Sedangkan penekanan kedua adalah tertulis, yang berarti dapat berupa kalimat, gambar, atau tabel tertentu.
Algoritma berasal dari nama Abu Jafar Mohammed Ibn Musa alKhwarizmi, ilmuan persia yang menulis kitab Al Jabr Walmuqabala, sekitar tahun 825 M, yang berasal dari Iran. PROSES PEMBUATAN SOFTWARE APLIKASI
REQUIRMENT
DESIGN
IMPLEMENTATION
TESTING
1. Requirment, yaitu tahap mencari tahu kebutuhan klien/user, bisa dilakukan dengan wawancara, bertemu secara langsung atau dengan melihat program yang sudah ada. 2. Design, yaitu tahap membuat prototype/bentuk program interface (tampilan program) yang bakal dibuat namun belum fungsional. 3. Implementasi, yaitu tahap dimana programmer melakukan pengkode-an program secara nyata hingga semua fungsionalitasnya terpenuhi dan benar. 4. Testing, yaitu tahap program sudah jadi. Program dites apakah semua fungsionalitasnya benar-benar sesuai dengan reqiurment yang sudah ditetapkan sebelumnya.
Sebenarnya masih ada satu tahapan lagi, yaitu tahap maintenance. Tahap maintenance yaitu, tahap dimana setelah program valid maka harus dipelihara, dapat di update, di back-up, atau mungkin ditingkatkan versinya, dan lain-lain sampai jangka waktu tertentu.
KRITERIA ALGORITMA Algoritma yang baik memiliki kriteria sebagai berikut : 1. Input dari sisi input, minimal program harus memiliki nol input atau lebih dari pengguna. Program pasti memiliki input. Yang dimaksud dengan memiliki nol input adalah program tidak mendapatkan masukan data dari pengguna secara langsung, namun semua data yang akan digunakan oleh program sudah dideklarasikan didalam kode program yang akan dieksekusi. Jadi tidak perlu di input dari luar.
2. Output dari sisi output, minimal program harus mempunyai 1 output. Program pasti menghasilkan output karena program dibuat untuk tujuan tertentu. Tujuan itulah outputnya. Output program bisa ditampilkan ke layar (screen), ditulis ke file, atau disimpan di clipboard untuk kemudian dipakai program lain atau disimpan dalam basis data. 3. Finite (terbatas) Program harus pasti dan berhenti, bukan tak terhingga. Suatu program yang dieksekusi haruslah berhenti dan selesai, bukan berjalan terus-menerus hingga hang up atau not responding, dan akhirnya harus di kill (dimatikan) secara paksa. 4. Definite (pasti) Program harus jelas arah dan tujuannya. Suatu program harus jelas kapan mulai dan kapan harus berakhir, apa tujuannya, dan memiliki logika yang jelas agar dapat menghasilkan output yang sesuai dengan yang diharapkan.
5. Efesien Artinya program harus efesien, tidak memakan banyak memori, tidak melakukan hal-hal yang tidak perlu. Suatu operasi/kegiatan yang tidak perlu, misalnya adalah
x= 5+0 atau y= 100*0.
mengapa operasi tersebut tidak efesien, karena setiap operasi pasti membutuhkan waktu eksekusi, padahal operasi tersebut jelas tidak berguna, karena berapapun bilangan yang ditambah dengan nol pasti bilangan itu sendiri dan bialngan apapun jika dikalikan nol, hasilnya adalah nol. Oleh sebab itu program tersebut tidak efesien.
BENTUK BENTUK DASAR ALGORITMA Algoritma secara umum memiliki beberapa bentuk dasar, yaitu: 1. Algoritma sequensial Algoritma sequensial banyak dijumpai pada kehidupan seharihari, misalnya pada kasus mengirim surat. Pada kasus tersebut terdapat langkah-langkah yang harus dilakukan, yaitu: a. Membeli amplop b. Membeli perangko c. Memasang perangko ke amplop d. Menuliskan alamat pengirim dan alamat tujuan e. Pergi ke kantor pos atau memasukkan ke dalam bis surat f. Surat terkirim Pada contoh diatas dapat dilihat bahwa langkah harus dilakukan secara runut dan ada yang tidak boleh dibolak-balik urutannya.
Pada prinsipnya algoritma sekuensial adalah alur pemikiran yang terstruktur, terurut, pasti, dan jelas untuk menyelesaikan masalah. Dalam algoritma ini kadang ada langkah-langkah yang tidak boleh ditukar urutannya.
2. Algoritma Percabangan Algoritma untuk memilih salah satu dari beberapa pilihan yang ada disebut algoritma percabangan/pemilihan. Yang perlu diperhatikan dalam algoritma ini adalah solusi pilihan akan dilakukan jika kondisinya terpenuhi, dalam arti kondisinya menghasilkan nilai benar (TRUE). Jika kondisi benar maka solusi akan dijalankan, dan jika salah maka tidak akan dijalankan (tidak menutup kemungkinan akan menjalankan solusi lain atau tidak sama sekali).
3. Algoritma Perulangan Algoritma perulangan berarti terdapat satu atau lebih kejadian/tindakan yang harus diulang terus-menerus sampai kondisinya terpenuhi.
Dari ketiga algoritma tersebut, bisa terjadi kombinasi antara algoritma sequential, algoritma percabangan dan algoritma perulangan.
2. Pada saat seorang programmer selesai mengerjakan suatu program, langkah selanjutnya adalah memberikan program tersebut kepada kliennya. Untuk menjelaskan alur pemikiran dan cara kerja program, programmer dapat menggunakan flowchart.
Flowchart berguna untuk dua keperluan : 1. Sebelum program selesai dibuat 2. Setelah program selesai dibuat
1. Sebelum program selesai dibuat pada tahap ini flowchart digunakan untuk menuangkan ide/pemikiran programmer kedalam bentuk gambar yang sudah standar secara internasional.
keuntungan dari penggunaan flowchart sebelum program selesai dibuat adalah : a. Programmer tidak lupa akan idenya dalam perencanaan program b. Desain algoritma yang dibuat dapat di sampaikan kepada klien, sehingga jika ada penambahan atau pengurangan dari pihak klien, programmer tidak akan merasa kesulitan.
2. Setelah program selesai dibuat flowchart yang dibuat setelah program selesai dibuat, akan membantu programmer untuk menjelaskan alur kepada klien. Dan flowchart merupakan dokumentasi alur program secara tidak langsung.
PENGGUNAAN FLOWCHART
Flowchart merupakan alur pemikiran yang dituangkan kedalam bentuk gambar/simbol. Oleh sebab itu kita perlu mempelajari terlebih dahulu bentuk-bentuk gambar/simbol standar beserta kegunaannya.
mulai
Start
selesai
Finish
Aliran data
Proses/kejadian
x=y+z
sekuensial
P1
P2
percabangan
X<2
perulangan
syarat
pencacah
input
Masukkan data
output
Tampilkan data
X=1
Nyalakan mesin
Start
Masukkan p Masukkan l
Luas = p*l
Tulis L
finish
Contoh flowchart
Flowchart pada contoh, digunakan untuk menghitung luas persegi panjang, dimana input dari pengguna berjumlah 2 buah, yaitu panjang yang dilambangkan dengan p dan lebar yang dilambangkan dengan l, dan kemudian dihitung luasnya dengan menggunakan rumus Luas = p*l, dan yang terakhir, hasil luasnya ditampilkan dilayar.
3. Harus ditunjukkan dari mana kegiatan dimulai dan dimana akan berakhir.
4. Masing-masing kegiatan didalam flowchart sebaiknya menggunakan suatu kata yang mewakili suatu pekerjaan.
6. Kegiatan yang terpotong dan akan disambungkan ke tempat lain harus ditunjukkan dengan jelas menggunakan simbol penghubung yang benar.
Contoh flowchart
Start
Jam pulang kantor Cuaca cerah?
yes
no
no
no
Jalur alternatif B
Jalur utama
Jalur alternatif A
Sampai di rumah
finish
PENGERTIAN PSEUDOCODE
Pseudocode berasal dari kata pseudo dan code, yang artinya adalah kode semu, atau menyerupai kode program yang sebenarnya. Jadi pseudocede bukanlah program sebenarnya. Psedocode berbeda dengan flowchart. Jika flowchart menggunakan simbol-simbol berbentuk gambar untuk menjelaskan alur logika berfikir, maka pseudocode menggunakan bahasa (biasanya bahasa inggris, seperti print untuk mencetak).
Algoritma Flowchart Pseudocode menggunakan bahasa tingkat menggunakan simbol berbentuk menggunakan bahasa tingkat tinggi (biasanya bahasa inggris) gambar tinggi yang menyerupai kode program
tidak standar mudah dibaca tidak dapat langsung dibuat programnya masih berupa ide
standar mudah di mengerti tidak dapat langsung dibuat programnya berupa rancangan
belum standar mudah dibaca bisa dibuat langsung programnya sudah hampir berupa implementasi
cetak nilai A bila lebih besar dari 10 dari dua bilangan A dan B, cari bilangan yang terbesar
jika bilangan pertama > bilangan kedua maka IF a > b THEN DO step 4, ELSE step 5 kerjakan langkah 4. jika tidak, kerjakan langkah 5
4 5
print a print b
pseudocode juga menggunakan notasi tertentu yang bersifat umum. Namun tidak semua notasi dalam pseudocode bersifat universal karena belum terstandarisasi. Ada beberapa contoh yang bisa di ikuti :
simbol a <-- b ab ab a a=b ab Bahasa Inggris gets and or not is equal to is not equal to Penjelasan Soal pemberian nilai dari a ke b operator logika antara a and b operator logika antara a or b negasi dari a apakah a equal dengan b apakah a tidak equal dengan b Bahasa Pemrograman = && II ! == !=
a<b ab
is less than
< <=
a>b ab
is greater than
>
is greater than or apakah a lebih besar dari sama dengan b >= equal to approximately ceiling a hampir sama dengan b mengambil nilai integer terbesar dari pembulatan ke atas N/A ceil()
ab a
floor
floor()
aA
element of
tidak ada
Beberapa kata yang sering digunakan pada pseudocode untuk berbagai algoritma adalah sebagai berikut : 1. Perintah sekuensial Perintah sekuensial dilakukan tahap demi tahap, tidak boleh melompat-lompat. Beberapa kata kunci pada perintah sekuensial adalah : a. Input : READ, OBTAIN, GET b. Output : PRINT, DISPLAY, SHOW c. Perhitungan : COMPUTE, CALCULATE, DETERMINE d. Inisialisasi : SET, INIT e. Penambahan dengan 1 : INCREMENT, BUMP
2. Perintah percabangan Perintah percabangan menggunakan keyword IF dan perintah dijalankan jika dan hanya jika kondisi terpenuhi alias bernilai TRUE. Jika tidak TRUE maka bagian perintah ELSE yang dikerjakan. Jadi pasti dipilih salah satu, tidak mungkin keduaduanya. Bentuk umumnya adalah sebagai berikut : IF condition THEN <sequence 1> ELSE <sequence 2> ENDIF
Contoh : IF jam kerja > jam normal maximal THEN DISPLAY overtime message ELSE DISPLAY regular time message ENDIF
3. Perintah perulangan WHILE Perintah perulangan akan mengulang satu atau beberapa perintah sekaligus selama masih dalam kondisi benar (TRUE). Jika kondisi sudah FALSE maka perintah tidak lagi diulang dan dilanjutkan ke perintah di bawah perulangan. Perulangan dapat menggunakan WHILE atau FOR. Bentuk umumnya adalah sebagai berikut :
Contoh : WHILE population < limit compute population as Population + Births Deaths ENDWHILE
4. Perintah perulangan FOR Perintah perulangan FOR sama dengan perulangan WHILE. Selama kondisi terpenuhi, perintah akan dijalankan. Perintah FOR memiliki karakteristik khusus, yaitu programmer dapat mengetahui batas perulangan yang akan dilakukan. Berikut adalah bentuk umum perintah FOR : FOR iteration bounds <sequence> ENDFOR
Contoh : FOR each month of the year FOR each employee in the list
5. Perintah percabangan CASE Perintah CASE mirip dengan IF, namun perintah CASE tidak bisa menangani lebih dari satu kondisi, seperti misalnya jika X>1 dan X !=0. Jadi CASE adalah percabangan yang dipermudah. Bagian OTHERS merupakan bagian default, jika semua kondisi tidak ada yang terpenuhi. Jika didalam IF , maka OTHERS sama dengan ELSE yang terakhir, bukan ELSE IF <condition> THEN. Berikut adalah bentuk umum CASE :
CASE expression OF condition 1 : <sequence 1> condition 2 : <sequence 2> ... condition n : <sequence n> OTHERS : Default <sequence> ENDCASE
Contoh lain : CASE grade OF A : points = 4 B : points = 3 C : points = 2 D : points = 1 E : points = 0 ENDCASE
6. Perintah REPEAT-UNTIL Perintah REPEAT-UNTIL merupakan perintah perulangan yang memiliki ciri khas. Perintah ini minimal dilakukan satu kali perulangan, baru kemudian diperiksa kondisinya apakah mash TRUE atau tidak. Jika kondisinya TRUE maka perintah perulangan akan dilanjutkan sampai FALSE. Berikut adalah bentuk umumnya : REPEAT <sequence> UNTIL condition
7. Perintah NESTED CONSTRUCT Perintah ini merupakan perulangan bertingkat, dimana didalam perulangan terdapat perulangan lagi. Berikut ini contohnya :
SET total to zero REPEAT READ Temperature IF Temperature > Freezing THEN INCREMENT total END IF UNTIL Temperature < zero PRINT total
1. Pada baris pertama terdapat #include <stdio.h>. Bagian ini disebut dengan Preprocessor Directive, yang artinya bagian yang digunakan untuk mengikut-sertakan berkas-berkas file header/library yang berisi fungsi-fungsi yang ada pada program yang akan dibuat pada baris-baris bawahnya. File yang diikutsertakan bernama stdio.h yang terletak di suatu direktori pada instalasi DecC++.
2. Pada baris selanjutnya terdapat int main(). Ini merupakan judul fungsi utama program yang bernama fungsi main() yang mengembalikan nilai berupa integer (bilangan bulat negatif ataupun positif). Fungsi main() adalah fungsi yang wajib ada disetiap kode program yang ditulis menggunakan bahasa C. Tanda { merupakan tanda awal program.
3. Pada baris berikutnya terdapat printf("Mari Kita Belajar Pemograman Bahasa C"). Hal ini merupakan perintah untuk menampilkan output dilayar monitor berupa tulisan Mari Kita Belajar Pemograman Bahasa C (tanpa tanda kutip). Perintah untuk menampilkan tulisan kelayar disebut dengan fungsi printf() yang menerima masukan berupa kalimat yang ingin ditampilkan. Tanda titik koma harus selalu dituliskan untuk memberi tanda akhir dari suatu barisn perintah.
4. Pada baris berikutnya terdapat getch();, digunakan untuk menghentikan layar tampilan sejenak sampai pengguna menekan tombol yang ada pada keyboard. Jadi fungsinya adalah menunggu penekanan tombol tertentu dan kemudian program akan mati (terminated).
Pada program di atas, algoritma yang digunakan adalah algoritma sekuensial. Kode program ini hanya meminta pengguna untuk memasukkan dua buah bilangan, yang kemudian ditampung didalam suatu tempat penyimpanan bernama a dan b yang bertipe bilangan bulat integer. Kedua bilangan kemudian dijumlahkan dan hasilnya ditampilkan kelayar monitor. Beberapa fungsi yang muncul pada kode program diatas adalah : 1. Printf(), digunakan untuk menampilkan tulisan kelayar. 2. Scanf(), digunakan untuk menerima input ke suatu tempat penyimpanan di memori komputer. 3. Return, digunakan untuk mengembalikan status program ke sistem operasi.
Disaat membuat program kita pasti berhubungan dengan statement (ungkapan). Program sebenarnya adalah kumpulan statement yang dijalankan secara sekuensial. Berikut adalah beberapa contoh statement :
Instruksi/Statement A=b*c printf("Nama Dosen"); Tindakan menghitung menampilkan literal string
Statement memiliki jenis yang berbeda-beda, yaitu : 1. Statement kosong statement kosong sering disebut dengan empty statement atau null statement. Statement jenis ini hanya terdiri atas pengakhiran titik koma (;) saja dan tanpa perintah apapun didalamnya. Contoh: memberi jarak waktu/delay pada program sehingga antara perintah yang satu dengan yang lain terdapat jeda beberapa milidetik. Contoh program :
For (J=0; J<50000; J++);
2. Statement ungkapan statement jenis ini sering disebut expression statement. Statement ini dibentuk dari suatu ungkapan dan diakhiri dengaan titik koma (;). Contoh programnya :
Scanf (%f, &Panjang); Scanf (%f, & Lebar); Luas = Panjang * Lebar; X=Y; Y++;
3. Statement kendali Statement jenis ini sering disebut dengan control statement. Statement ini digunakan untuk mengendalikan proses dari program. Misalnya : a. Untuk menyeleksi kondisi (percabangan) : if, case, dan switch. b. Lompatan (perulangan) : for, while, do-while, goto, break dan continue.
Contoh Program : If (N<0) printf (Nilai N negatif);
4. Statement jamak Statement jenis ini sering disebut compound statement atau block statement. Statement ini terdiri atas beberapa statement tunggal yang ditulis pada posisi diantara tanda kurung kurawal ( { dan } ). Contoh programnya :
scanf (%f, & Panjang); scanf (%f, & Lebar); Luas = Panjang * Lebar; printf (%f, Luas);
2. Variabel Identifier ini nilainya dapat berubah atau diubah selama program berjalan (dieksekusi). Yang boleh mengubah adalah pengguna ataupun statement pada proses. Cara pendeklarasian variabel pada C adalah :
Bentuk umum : <tipe_data> <nama_variabel>;
Identifier tidak harus selalu dibuat oleh programmer, karena bahasa C sudah memiliki berbagai identifier yang dikenali secara default. Identifier semacam itu sering disebut dengan standar identifier. Standar identifier adalah identifier yang biasanya berupa fungsi tertentu yang telah diberi makna tertentu oleh compiler bahasa C, tetapi tidak bersifat reserved (dipesan) sehingga dapat dipakai lagi oleh pemrograman. Contoh standar identifier adalah printf(), scanf(), system(cls), dan lain-lain.
Penulisan dan pembuatan identifier, baik konstanta ataupun variabel, memiliki beberapa aturan, yaitu : 1. Tidak boleh sama dengan nama keyword reserved, function yang dimiliki C, dan harus unik. 2. Maksimum 32 karakter. Bila lebih, maka karakter selebihnya tidak akan diperhatikan oleh komputer. 3. Case sensitive : membedakan huruf besar dan kecil. 4. Karakter pertama harus huruf atau underscore (_), dan yang selebihnya boleh angka. 5. Tidak boleh mengandung spasi/blank.
Penulisan identifier harus unik dan tidak boleh sama dengan reserved word yang digunakan pada bahasa C. Reserved word sering disebut keyword. Keyword adalah identifier yang telah didefinisikan oleh bahasa C. Sifat keyword adalah : 1. Memiliki arti dan pemakaian tertentu. 2. Bersifat reserved sehingga tidak boleh digunakan lagi oleh programmer. 3. Semua ditulis dalam huruf kecil. 4. Menurut standar ANSI terdapat 32 keywords.
case
char const
enum
extern float
register
return short
union
unsigned void
continue
default do
for
goto if
signed
sizeof static
volatile
while struct
Semua identifier digunakan untuk menyimpan data pada memori komputer untuk keperluan komputasi. Penyimpanan data tentu tidak bisa dilakukan tanpa mengetahui secara pasti seberapa kemampuan suatu identifier untuk menyimpan data. Jenis dan ukurannya disebut dengan tipe data. Tipe data diatur dan dikelompokkan menjadi dua, yaitu tipe data numerik dan non-numerik.
1. Tipe data numerik tipe data ini mampu menampung semua nilai numerik mulai dari bilangan bulat dan pecahan. Tipe data numerik dibagi menjadi beberapa jenis. Namun tipe data numerik yang dikenal didalam bahasa C, yaitu : Tiper data bilangan bulat :
Type Length Range
short int
unsigned int int unsigned long enum long
16 bit
32 bit 32 bit 32 bit 16 bit 32 bit
-32,768 to 32,767
0 to 4,294,967,295 -2,147,483,648 to 2,147,483,648 0 to 4,294,967,295 -2,147,483,648 to 2,147,483,648 -2,147,483,648 to 2,147,483,648
Tipe data pecahan : Type float double long double Length 32 bit 64 bit 80 bit Range 3,4 x 10-38 to 3,4 x 10+38 1,7 x 10-308 to 1,7 x 10+308 3,4 x 10-4932 to 3,4 x 10+4932
Nilai numerik pecahan yang disimpan dalam integer dibulatkan kebawah. Jadi nilai pecahan dibuang. Contoh : 2.38 akan dibulatkan menjadi 2 dan 4.9928 akan dibulatkan menjadi 4. nilai variabel yang melebihi jangkauannya akan dipotong sepanjang jumlah bit yang tersedia. Contoh : jika di deklarasikan variabel integer (16 bit = 2 byte) berarti hanya menyimpan sampai dengan 32,767. Jika variabel di isi nilai 70,000 ( 1 0001 0001 0111 0000 ), padahal 70,000 menempati 17 bit maka bit paling kiri akan dipotong menjadi ( 0001 0001 0111 0000 ). Namun hal ini sangat bergantung ukuran tipe datanya.