Bab I - USUpress
Bab I - USUpress
Bab I - USUpress
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
BAB 1Pendahuluan1.1. Sejarah Singkat CC m erupakan pe ngembangan da ri bahasa pemrograman Byang di susun ol eh Ken Thompson pada t ahun 1970 unt ukmesin DEC PDP-7 yang menggunakan sistem operasi UNIX.Bahasa p emrograman B itu s endiri di adaptasikan dari bahasapemrograman BCPL (Basic Combined ProgrammingLanguage) yang disusun oleh Martin Richards tahun 1967.C disusun oleh Dennis M. Ritchie pada tahun 1972. Tidaklama s etelah i tu, C diimplementasikan o leh R itchie da lammenuliskan k embali s istem o perasi UNIX yang s ebelumnyaditulis dalam bahasa Assembly DEC PDP-11. Pada mulanya Cbanyak di pakai un tuk pe mrograman sistem di l aboratoriumlaboratoriumpenelitian dan universitas-universitas di AmerikaSerikat. S tandar a cuan yang d igunakan ada lah s tandar yangdikeluarkan be rsama s istem o perasi UNIX System 5 dandijabarkan da lam bu ku The C Programming Language olehBrian W. Kernighan dan Dennis M. Ritchie (Prentice-Hall,1978). Acuan ini dikenal dengan sebutan K&R Standard.Kepopuleran C i ni pa da m ulanya t idak da pat di lepaskandari kepopuleran sistem operasi UNIX yang merupakan indukdan aplikasi utama pertamanya. Dalam waktu yang singkat Ctelah m enggantikan pemrograman as sembler da lamlingkungan UNIX. Tetapi s elanjutnya C be rkembang ke arahstatus yang m andiri da n di gunakan da lam pe ngembanganberbagai pe rangkat l unak a plikasi kom ersial. Banyak pul aperusahaan-perusahaan l ain yang m engembangkan kom pilerkompilerC unt uk lingkungan non-UNIX. Hingga a wal t ahun80-an be rbagai ve rsi C unt uk m ikrokomputer t elah ba nyakberedar di pasar perangkat lunak. Tidaklah salah jika dikatakanbahwa ve rsi-versi C unt uk m ikrokomputer i nilah yangmemegang pe ranan yang c ukup besar da lam m enunjangkepopulerannya.Pemrograman C di Lingkungan Linux 1
Pada m asa s ekarang i ni secara u mum k ita m engenal d uajenis kompiler bahasa C unt uk m ikrokomputer, yakni yangberjalan di lingkungan Microsoft Windows dan yang berjalandilingkungan L inux. Di lingkungan M icrosoft W indows ki tamengenal Microsoft Visual C /C++ yang m erupakan programyang dijual secara komersial, sedangkan di lingkungan Linuxkita m engenal G NU C /C++, sebuah kom piler open s ourceyang dapat di gunakan secara be bas di bawah lisensi GNUPublic Licence.Namun demikian, pada dekade yang lalu dikenal juga versiversiC un tuk m ikrokomputer yang walaupun s angat popul erpada m asanya, na mun s ekarang s udah m ulai t erlupakan da njarang s ekali digunakan orang, diantaranya ada lah: Turbo C ®dari Borland International, Microsoft QuickC ® dari MicrosoftCorporation, LATTICE ® C d ari Lattice Incorporation, danEco-C dari Ecosoft Incorporation.Beragamnya v ersi C yang b eredar d i p asaranmelatarbelakangi d ibentuknya pa nitia s tandar X3J11 padapermulaan t ahun 19 83 oleh American National StandardsInstitute (ANSI ® ) unt uk menyeragamkan de finisi C . P anitiastandararisasi i ni s elain mempertahankan s ebanyak m ungkinbentuk asli C yang terdapat dalam K&R C, juga memperbaikidan m enambah f ungsionalitas ba hasa yang t idak terdapat d idalam be ntuk or isinilnya. H asil ke rja p anitia s tandar X3J11kemudian diterima pada bulan Desember 1989 dan dituangkandalam draf standar ANSI C: Programming Language C.Pada perkembangan selanjutnya, C d iarahkan kepemrograman berorientasi obj ek yang di kenal d engan namaC++, bahasa pemrograman yang dianggap sebagai superset C.Pemrograman berorientasi obj ek adalah metodologipemrograman yang m enggunakan pe ndekatan enkapsulasi(pengkapsulan a tau p embungkusan). S ebenarnya konsepenkapsulasi s udah s ejak lama di kenal d alam i lmu kom puterkarena p endekatan i ni di perlukan unt uk m elakukandekomposisi terhadap sistem-sistem yang besar menjadi subsubs istem da lam pa ket lebih ke cil yang da pat l ebih m udahdikembangkan, di pelihara da n di pindahkan. Bahasa-bahasapemrograman da n s istem-sistem y ang be rorientasi-objekmenerapkan konsep enkapsulasi itu dalam bentuk objek dankelas.2Pendahuluan
Konstruksi pe mrograman be rbentuk obj ek be rmula da riSimula, s ebuah ba hasa unt uk pe mrograman s imulasikomputer. H al i ni t idak m engherankan k arena m emodelkanobjek-objek simulasi s ecara l angsung s ebagai obj ekperangkat lunak dapat dilakukan secara alamiah. Yang lebihmengherankan adalah bahwa objek-objek perangkat lunak itubukan hanya dapat bermanfaat untuk pemrograman simulasi,tetapi j uga unt uk p engembangan prototyping dan a plikasi.Berdasarkan kons ep ke las obj ek i ni di kembangkan s ebuahbahasa pe mrograman yang be rnama Smalltalk sebagai s alahsatu bahasa pemrograman pertama yang menerapkan konseppemrograman berorientasi objek.Karena pe mrograman berorientasi-objek terutama s ekalidipopulerkan ol eh upa ya pe ngembangan Smalltalk, m akadefinisi yang b anyak di terima or ang t entang b ahasapemrograman be rorientasi-objek adalah ba hasa-bahasa y angmendukung ke las obj ek da n pe warisan ke las. Definisi l ainyang lebih longgar tentang bahasa pemrograman berorientasiobjek adalah setiap bahasa pemrograman yang menyediakanmekanisme untuk memanfaatkan enkapsulasi.Beberapa versi mikrokomputer untuk bahasa pemrogramanC be rorientasi obj ek yang pe rnah dan sedang beredar d ipasaran di a ntaranya a dalah: T urbo C++ ® , Zortech C ® ,Borland C/C++ ® , dan Microsoft ® Visual C++.Sejak dirancangnya pada tahun 1970-an hingga sekarang, Cmerupakan bahasa yang paling populer di dunia pemrograman.Beberapa f aktor yang m endukung ke populeran C i ni a ntaralain adalah:1) Tersedianya fasilitas p emrograman yang cukup lengkapuntuk membangun berbagai aplikasi, antara lain: jenis data(pointer, structure, da n string), operator da n strukturkendali, s erta f ungsi-fungsi pu staka s tandar yang da patdigunakan unt uk ke gunaan input/output, alokasi t empatpenyimpanan, mengolah string, dan lain-lain.2) Program-program yang ditulis d alam ba hasa C ada lahefisien karena bahasanya yang ringkas dan jenis data sertaoperatornya sangat dekat berkaitan dengan operasi-operasiyang di sediakan l angsung ol eh s ebagian be sar ko mputer.Dengan pe rkataan lain, perbedaan semantik antara C da nperangkat keras komputer adalah sangat kecil.Pemrograman C di Lingkungan Linux 3
3) Program C u mumnya s angat p ortabel d i an tara berbagaisistem kom putasi s ehingga unt uk m emindahkan aplikasidari komputer dan sistem operasi yang satu ke sistem yanglain relatif mudah.4) Sistem operasi UNIX menyediakan banyak sekali perkakaspemrograman yang da pat m eningkatkan pr oduktivitaspemrograman C da n merupakan t itik a wal unt ukpembuatan aplikasi baru. H al in i m enyebabkan jumlahprogram C yang ditulis dan jumlah pemrogram C semakinhari terus bertambah.Keringkasan ba hasa da n longgarnya ba tasan-batasan y angdiberikan dalam menyusun program, membuat bahasa ini lebihmudah di gunakan da n lebih e fektif da lam m enyelesaikanberbagai pe rmasalahan dibandingkan de ngan ba hasa-bahasapemrograman l ain. D alam m enyusun s ebuah program C ,seorang pe mrogram d iberikan ke leluasaan pe nuh d alammengimplementasikan konsep ba hasa pe mrograman ini kedalam be ntuk i nstruksi-instruksi program. S elain itu, s eorangpemrogram juga diberikan tanggung jawab dan kendali penuhterhadap program yang dibuatnya.Hematnya ekspresi yang digunakan dalam program C jugamerupakan k elebihan ba hasa i ni, k arena aka n mengurangijumlah kode pr ogram yang dituliskan. A kan te tapi d i la inpihak, ke hematan e kspresi i ni da pat pul a m embuat pr ogramyang di susun m enjadi l ebih s ulit di baca da n ke salahanprogram menjadi lebih sulit ditemukan.1.2. Sistematika PenulisanCakupan m ateri yang di sajikan dalam buku i ni diupayakanuntuk dapat menyinggung aspek-aspek dasar pemrograman C.Titik berat penyajiannya adalah untuk memberikan pengertianmenyeluruh tentang kons ep pe mrograman, s ebagai l andasanyang kok oh unt uk m enelusuri s emua ke mampuan ba hasapemrograman C.Setelah m emperkenalkan s ecara s ingkat s ejarah b ahasaprogram C d an be berapa f itur yang m embuatnya s angatpopuler, pada <strong>Bab</strong> 2 dimulailah penjelasan mengenai beberapakonsep dasar da lam pe mrograman. Tujuannya t idak lain4Pendahuluan
adalah unt uk m emperkenalkan ke pada pa ra pe mbaca t entangpengertian sebuah program, tingkatan-tingkatan dalam bahasapemrograman, da n j enis-jenis be rkas pr ogram. Penjelasankemudian dilanjutkan dengan memperkenalkan tiga konstruksidasar bahasa pemrograman yakni runtunan, pencabangan, danpengulangan. Pada s ub b ab berikutnya diperkenalkan salahsatu alat untuk membantu pemrograman, yakni flowchart danpada sub bab terakhir diberikan pe ngenalan pada lingkunganpemrograman Linux, di mana pe mbaca diperkenalkanmengenai cara mengkompile program C dan beberapa pilihandalam mengkompile program.Pada setiap bab berikutnya (mulai <strong>Bab</strong> 3) diberikan contohcontohprogram l engkap unt uk memperjelas ko nsep yangdiberikan, dan pada setiap akhir bab diberikan ringkasan yangmenggarisbawahi konsep-konsep penting yang dipelajari padamasing-masing ba b. S elain i tu, j uga di berikan pe rtanyaanpertanyaanpe mahaman dan s oal-soal pe mrograman ( mulai<strong>Bab</strong> 4) s ebagai evaluasi at as t ingkat pe mahaman p embaca.Diharapkan pe mbaca da pat m enjawab p ertanyaan-pertanyaandan m enyelesaikan s oal-soal pe mrograman yang d iberikansebelum be ranjak ke ba b-bab berikutnya. Dengan menguasaikonsep-konsep yang di berikan pa da ba b yang t erdahulu,pembaca akan lebih mudah memahami bab-bab selanjutnya.<strong>Bab</strong> 3 memperkenalkan s usunan program C yangmencakup do kumentasi pr ogram, pe ngarah pr apengolahan,bagian de klarasi global, fungsi main(), dan f ungsi-fungsibuatan pe mrogram. D i samping i tu j uga di bahas m engenaipembatas ( delimiter), t anda akhir pe rnyataan dan styleprogram. Dengan m engenal s usunan ini diharapkan pe mbacasudah mempunyai gambaran yang cukup tentang program C.<strong>Bab</strong> 4 menyajikan be berapa kom ponen da sar C . Konseptentang kons tanta, variabel, da n pe rnyataan di sajikan s ecaraluas. <strong>Bab</strong> i ni m erupakan salah s atu da ri rangkaian t iga ba buntuk m embahas t iga da sar u tama yang m embangun s etiapbahasa pe mrograman, yaitu ca ra penyimpanan da ta, o peratoryang di gunakan da lam mengubah da n m enggabungkan da ta,dan b agaimana ba hasa i tu m elaksanakan input dan output.Selain itu, dalam bab ini juga diperkenalkan dua buah konseppenting la innya, yaitu: kata k unci (keyword) da n p engenal(identifier).Pemrograman C di Lingkungan Linux 5
<strong>Bab</strong> 5 menyajikan rangkaian da sar u tama pe mbangunbahasa pe mrograman be rikutnya, yaitu ope rator. B erbagaioperator yang dikenal dalam C s eperti o perator a ritmatika,operator r elasional, o perator l ogika, o perator bitwise logika,dan be berapa ope rator khusus l ain s eperti ope rator sizeof,operator koma, dan operator t anda t anya (?), disajikan secaralengkap. Di samping itu, dibahas pula konsep konversi jenisdata dengan operator cast .<strong>Bab</strong> 6 menyajikan rangkaian t erakhir da sar u tamapembangun bahasa pemrograman: input/output. Interaksi yangterjadi a ntara pe makai da n kom puter s angat di tentukan ol ehkedua f ungsi i ni. U ntuk itu, da lam bab i ni di bahas be rbagaifungsi input dan f ungsi output yang t ersedia da lam C , diantaranya printf(), putchar(), dan puts() dari ke lompokfungsi output yang be rasal da ri C . D ari kelompok inputdisajikan pula scanf(), getchar(), dan gets().<strong>Bab</strong> 7 membahas t iga s truktur pe ngambilan keputusanutama dalam C, yaitu struktur if, struktur if-else, struktur elseif,da n s truktur switch. Juga di bahas s atu s truktur l agi yangtermasuk ke da lam ke lompok ope rator, yaitu ope ratorbersyarat ? : ( conditional operator). Sebuah s truktur ke ndalilain yang juga dibahas adalah goto.<strong>Bab</strong> 8 membahas konsep struktur pengulangan (loop) dalamC. Ada tiga struktur loop utama yang dibahas: for loop, whileloop dan do loop (do while loop). S elanjutnya, juga di bahasmengenai struktur pengulangan bertingkat (nested loop). D uabuah pernyataan yang berkaitan dengan struktur pengulangan,yaitu break dan continue juga dibahas dalam bab ini.<strong>Bab</strong> 9 membahas k onsep-konsep da sar pointer. Konsepdasar pointer ini s engaja di bahas l ebih dahulu, ka rena akanmemberikan landasan pengertian mengenai konsep pengirimanargumen m elalui al amat yang aka n d ibahas p ada B ab 10mengenai f ungsi. D i s amping itu , pointer juga m erupakankonsep yang m endasari array dan string yang di bahas pada<strong>Bab</strong> 1 3. B agi ke banyakan or ang, kons ep pointer merupakanbagian yang te rsulit da lam C karena untuk memahaminyaperlu dikenal sifat in direksi pointer dan not asi pointer yangdapat m eragukan ka rena d igunakan j uga unt uk hal-hal la inyang berbeda maknanya.6Pendahuluan
<strong>Bab</strong> 10 membahas berbagai aspek fungsi mulai dari konsep,kategori, be ntuk i mplementasi, pengiriman a rgumen, f ungsimain() berargumen, dan fungsi be rargumen fungsi.Penggunaan pe ngarah prapengolahan (preprocessordirectives), pr ototipe f ungsi (function prototype), dan b erkasjudul (header file) juga dibahas dalam bab ini.<strong>Bab</strong> 1 1 membahas k onsep k elas pe nyimpanan variabeldalam C. Dalam bab ini dibahas mengenai pembagian segmenmemori, ruang l ingkup (scope) da n masa hi dup (lifetime)variabel, d an k elas-kelas p enyimpanan v ariabel ke laspenyimpanan otomatis, register, statik, dan eksternal.<strong>Bab</strong> 1 2 membahas f ungsi-fungsi r ekursif, yakni f ungsifungsiyang m emanggil di rinya s endiri. Fungsi rekursifsengaja d ibahas da lam bab t ersendiri, karena ko nsep r ekursifadalah s ebuah kon sep pe nting da lam pe mrograman. M etoderekursif merupakan alternatif lain dalam penyelesaian masalahselain metode ite ratif yang menggunakan s trukturpengulangan. P engenalan konsep r ekursif i ni m eliputi s yaratsyaratrekursi, proses rekursi, dan jenis-jenis rekursi.<strong>Bab</strong> 1 3 membahas kons ep array dan string. A rray adalahsebuah j enis da ta agregat yang di gunakan unt ukmengumpulkan sekelompok data yang jenisnya sama ke dalamsatu kesatuan. Konsep array dan string ini dibahas dalam satubab, karena dalam C string adalah sebuah array yang elemenelemenda tanya t erdiri dari karakter-karakter. P embahasanmengenai array meliputi array satu-dimensi dan array multidimensi(array dua-dimensi da n array tiga-dimensi).Kemudian di bahas pu la konsep string, fungsi-fungsi s tandarpengolahan string, hub ungan antara string dan pointer, s ertapengiriman argumen array.<strong>Bab</strong> 1 4 membahas t entang structure, s ebuah j enis d ataagregat lain yang digunakan untuk mengumpulkan jenis-jenisdata yang be rbeda da lam s atu kesatuan. S ecara um um, j enisdata ini dapat dipandang sebagai sebuah record dalam konsepdatabase yang me miliki e lemen-elemen data yang d isebutfield.<strong>Bab</strong> 15 sebagai bab terakhir membahas tentang pengelolaanfile. File a dalah ba gian eksternal d ari s ebuah program y angsangat m embantu dalam h al pe nyimpanan data secarapermanen di dalam disk.Pemrograman C di Lingkungan Linux 7
Buku ini ditulis mengikuti aturan-aturan ANSI C, sehinggaprogram-program yang diberikan sebagai contoh seyogiyanyadapat diterjemahkan ol eh be rbagai kompiler C yang ada.Contoh-contoh pr ogram yang di berikan t elah dicobadijalankan m enggunakan kompiler gcc di l ingkungan s istemoperasi Linux Fedora Core 4 dan Linux Ubuntu 6.0.Terakhir, p ada A pendiks A di berikan da ftar pe rintah vi ,sebuah t eks editor yang umum di gunakan un tuk menyuntingprogram C , pada Apendiks B d iberikan daftar l engkapkarakter-karakter ASCII, pada Apendiks C diberikan kata-katakunci pada ANSI C beserta maknanya, dan pada Apendiks Ddiberikan b eberapa f ungsi p ustaka s tandar yang l azimdigunakan da lam bentuk pr ototipe f ungsi, he ader file di manafungsi t ersebut be rada, dan ke gunaan da ri f ungsi-fungsitersebut. ♣8Pendahuluan