500 likes | 744 Views
Imam Rozali , S.T., M.T. Struktur Data ( Data Structure ) – IS 2313. System Basic Theory. Tuesday 07.00- 13 . 0 0, T hursd ay 07 . 0 0-1 3 .00 Reference: Liem, Inggriani. Diktat Struktur Data, ITB, 2003.
E N D
Imam Rozali, S.T., M.T. Struktur Data(Data Structure) – IS 2313
System Basic Theory • Tuesday 07.00-13.00, Thursday 07.00-13.00 • Reference: • Liem, Inggriani. Diktat Struktur Data, ITB, 2003. • Thomas A. Standish, “Data Stuctures, Algorithms & Software Principles in C” Addison-Wesley, 1995. • Additional Reference • Internet • E-mail : imr@ittelkom.ac.id, imam@telkompdc.com • Phone : 081220670006, 02270303011
Evaluation • Class Participation: - % • Quiz: 10% • Assignment : 20% • Midterm: 35% • Final : 35%
Outline • LatarBelakang • SekilasTentang C • Proses Kompilasi dan Linking Program C • Struktur Penulisan Program C • Fungsi-Fungsi Dasar CUDT (User Defined Type) atau Tipe Data Bentukan • Pengenalan Praprosesor #include • Sekilas Tentang Array • Sekilas Tentang Struct • Contoh Program Struct • Struktur Data dalamPemrograman • Memory Address • Data Structures
Latar Belakang • Algoritma • Program • Data • Struktur Data Algoritma + Struktur Data = Program
Latar Belakang • Cirialgoritma yang baikmenurut Donald E.Knuthadalah: • Input: ada minimal 0 input ataulebih • Ouput: ada minimal 1 output ataulebih • Definite: adakejelasanapa yang dilakukan • Efective: langkah yang dikerjakanharusefektif • Terminate: langkahharusdapatberhenti (stop) secarajelas
Sekilas Tentang C • Bahasa C sebagai bahasa tingkat menengah • Beberapakelebihandaribahasa C: • Bahasa C tersediahampirdisemuajeniskomputer, baikmikro, mini maupunkomputerbesar (mainframe computer). • Kodebahasa C bersifatportabel. • Berbagaistruktur data danpengendalianprosesdisediakandalam C sehinggamemungkinkanuntukmembuat program yang terstruktur. • Dibandingkandenganbahasamesinatau assembly, C jauhlebihmudahdipahamidanpemrogramtidakperlumengetahuimesinkomputersecaradetil. • C memungkinkanmemanipulasi data dalambentuk bit maupun byte. Di sampingitujugamemungkinkanuntukmemanipulasialamatdarisuatu data atau pointer.
Sekilas Tentang C • Kelemahanbahasa C yang dirasakanolehparapemulabahasa C: • Banyaknya operator sertafleksibilitaspenulisan program kadang-kadangmembingungkanpemakai. Kalautidakdikuasaisudahtentuakanmenimbulkanmasalah. • Para pemrogram C tingkatpemulaumumnyabelumpernahmengenal pointer dantidakterbiasamenggunakannya.
ProsesKompilasidan Linking Program C • Agar suatu program dalambahasapemrogramandapatdimengertiolehkomputer, program haruslahditerjemahkandahulukedalamkodemesin. • Adapunpenerjemah yang digunakanbisaberupa interpreter ataukompiler.
StrukturPenulisan Program C • Program C tersusunatassejumlahblokfungsi. • Sebuah program minimal mengandungsebuahfungsi. • Fungsipertama yang harusadadalam program C dansudahditentukannamanyaadalah main(). • Bagianpernyataanfungsi (seringdisebuttubuhfungsi) diawalidengantandakurungkurawalbuka ({) dandiakhiridengantandakurungkurawaltutup (}).
Fungsi-FungsiDasar C • Pada C, terdapatbeberapafungsidasar yang merupakanstruktur yang harusadadalambahasapemrograman C. Beberapafungsi yang terdapatdalambahasa C adalah: • Fungsi main() • Fungsiprintf()
Fungsi-FungsiDasar C • Fungsiprintf() merupakanfungsi yang umumdipakaiuntukmenampilkansuatukeluaranpadalayarperaga. Untukmenampilkantulisan: • Selamatbelajarbahasa C • printf(“Selamatbelajarbahasa C”); • Dalambentuk yang lebihumum, format printf() • printf(“string kontrol”, daftarargumen);
Fungsi-FungsiDasar C • \” menyatakankarakterpetik-ganda • \\ menyatakankarakter backslash • \t menyatakankarakter tab • %d untukmenampilkanbilanganbulat (integer) • %f untukmenampilkanbilangantitik-mengambang (pecahan) • %c untukmenampilkansebuahkarakter • %s untukmenampilkansebuah string
Fungsi-FungsiDasar C • #include <stdio.h> • main( ) • { • printf(“No : %d\n”, 10); • printf(“Nama : %s\n”, “Ali”); • printf(“Nilai : %f\n”,80.5); • printf(“Huruf : %c\n”,‘A’); • }
UDT (User Defined Type) atauTipe Data Bentukan • Bahasapemrogramanbisamemilikitipe data: • Built-in : sudahtersediaolehbahasapemrogramantersebut. Tidakberorientasipadapersoalan yang dihadapi. • UDT : User Defined Type, dibuatolehpemrogram.Mendekatipenyelesaianpersoalan yang dihadapi. Contoh: record pada Pascal, structpada C, class pada Java. • ADT : Abstract Data Type memperluaskonsep UDT denganmenambahkanpengkapsulanatauenkapsulasi, berisisifat-sifatdanoperasi-operasi yang bisadilakukanterhadapkelastersebut.Contoh: class pada Java. • Tipe data baru : • typedef <tipe_data_lama> <tipe_data_baru>
Pengenalanpraprosesor #include • #include merupakansalahsatujenispengarahpraprosesor (preprocessor directive). Pengarahpraprosesorinidipakaiuntukmembaca file yang diantaranyaberisideklarasifungsidandefinisikonstanta. • File-file inimempunyaiciriyaitunamanyadiakhiridenganekstensi .h. Misalnyapada program #include <stdio.h> menyatakanpadakompiler agar membaca filebernamastdio.hsaatpelaksanaankompilasi. • Bentukumum #include: • #include “namafile”
Sekilas Tentang Array • Array adalahkumpulan data yang bertipesama yang menggunakannama yang sama. Denganmenggunakan array, sejumlahvariabeldapatmemakainama yangsama. Antarasatuvariabeldenganvariabel lain didalam array dibedakanberdasarkannomorelemen (subscript).
Sekilas TentangStruct • Structadalahtipe data bentukan yang berisikumpulanvariabel-variabel yang bernaungdalamsatunama yang samadanmemilikikaitansatusama lain.
Struktur Data dalamPemrograman • Pemakaianstruktur data yang tepatdidalamprosespemrogramanakanmenghasilkan: • Algoritma yang lebihjelasdantepat, sehinggamenjadikan program secarakeseluruhanlebihefisiendansederhana. • Membuat program lebihringkas, lebihbersih, lebihelegan,lebihmudahdanlebihmampuberkinerjatinggi (karenaefisiendalampenggunaanmemoridanwaktu) • Program berjalanmembutuhkanwaktubeberapadetik, dimanastruktur yang lain mungkinakanmembutuhkanribuandetik
Struktur Data dalamPemrograman • Tahapanpemrograman: • Analisamasalah • Memilihalgoritmadanstruktur data untukmenyelesaikanmasalahitu • Coding
Struktur Data dalamPemrograman • Struktur Data yang telahdipelajaristruktur data dengan type : • Dasaryaitu integer, real, boolean, character. NamaInformasi yang disefinisikandengan type dasarinihanyadapatmenyimpansatunilai. • Bentukanyaitu type yang merupakankomposisidari type bentukan. Namainformasi yang didefiniskandengan type inihanyamengandungsatunilaisesuaidengankompisisidari type yang didefinisikan. • Tabel/Array yaitu type yang mendefinisikansekumpulanelemenbertypesama, dannantinyakumpulanelementersebutakandialokasikansecarakontigu, denganakseselemen yang ditentukanolehindeks. Namainformasi yang bertypetabeldapatmenyimpanbanyaknilai, tergantungpadaukurantabel.
Struktur Data dalamPemrograman • Ada 3 tingkatanstruktur data : • DefinisiFungsionaladalahpendefinisianstruktur data dan operator-operator yang berlakupadastrukturtersebut • RepresentasiLojikadalahspesifikasi “type” daristruktur, yang menyangkutnama type danspesifikasisemua operator, namundalamdefinisiini, alamatmasihbelumditentukansecarapasti. • Representasifisikadalahspesifikasidaristruktur data sesuaidenganimplementasinyadalammemorikomputer.
Struktur Data dalamPemrograman • Adaduamacamimplementasifisik : • Representasifisikkontiguadalahsekumpulan data yang penempatannyadalammemorisecarafisikadalahkontigu, setiapelemenditaruhberurutanposisialamatnyadenganelemen lain. Karenaituuntukmencapaielemenberikutnya, cukupmelaluisuksesoralamatdari “current element”. Strukturinidisebutstruktur yang statis. • Representasifisikberkaitadalahsekumpulan data yang penempatannyadalammemoridapatterpencar-pencar, namundapatditelusuriberkatadanyainformasiberupaalamat, yang menghubungkanelemen yang satudengan yang lain. Alamatmemoridapatdialokasikan/dapat pula dibebaskansesuaidengankeperluan, sehinggabesarnyamemori yang dipakaibisamembesardanmengecil. Strukturinidisebutstruktur yang dinamis.
Struktur Data dalamPemrograman • Beberapajenisstruktur data adalahsebagaiberikut: • Array • Linear List • Stack • Queue • List • Connected List • Circular List • Double Linked List • Multi List Structure • Tree Structure
Struktur Data dalamPemrograman List Linier Multi List Tree Antrian Graph Stack
MEMORY ADDRESS • Operand bilangan dan karakter, seperti halnya instruksi, disimpan dalam memori komputer. • Memori terdiri atas jutaan sel penyimpanan, dimana tiap sel tersebut menyimpan suatu bit informasi yang berupa nilai 0 atau 1. Karena bit tunggal mewakili informasi yang sangat sedikit, maka bit jarang ditangani secara individu. • Pendekatan yang umum adalah menanganinya dalam kelompok dengan ukuran tertentu. Untuk tujuan ini, memori tersebut diatur sehingga kelompok n bit dapat disimpan dan diambil dalam satu operasi dasar tunggal. • Tiap kelompok n bit disebut sebagai word informasi, dan n disebut word length.
MEMORY ADDRESS • Komputer modern memiliki word length yang biasanyaberkisardari 16 hingga 64 bit. Suatu unit 8 bit disebut byte. • Instruksimesinmungkinmemerlukansatuataulebih word untukrepresentasinya. Jika word length suatukomputeradalah 32 bit, maka word tunggaldapatmenyimpan 32-bit bilangan 2’s-complement atauempatkarakter ASCII, masing-masingmemiliki 8 bit.
MEMORY ADDRESS • Mengaksesmemoriuntukmenyimpanataumengambilsuatu item informasi, baikberupa word atau byte, memerlukannama yang berbedaataualamatuntuktiaplokasi item. • Merupakanhal yang biasamenggunakanbilangan 0 hingga 2k – 1, untukbeberapanilai k yang sesuai, sebagaialamatdarilokasi yang berurutandalammemori. Alamat 2kmeliputiruangalamatkomputertersebut, danmemoritersebutdapatmemilikilokasiaddressable hingga 2k. Misalnya, alamat 24-bit menghasilkanruangalamat 224 (16.777.216) lokasi.
Data Structures • CPU secaralangsungdapatmemanipulasi data integer, real number, karakter, booleandan memory addres. Jenis data yang secaralangsungdidukungoleh CPU disebutjenis data primitif, ataujenis data mesin. • Struktur data termasukkelompokelemen data primitif yang diorganisiruntukbeberapabentukpengolahanumum. Struktur data digambarkandandimanipulasidalamperangkatlunak. • Perangkatkeraskomputertidakbisamemanipulasistruktur data secaralangsung, tetapiharusmemperlakukannyaberkaitandengankomponenprimitifsepertibilangan integer, bilangan floating point, karaktertunggal, danseterusnya. • Perangkatlunakharusmenterjemahkanoperasistruktur data kedalamseperangkatinstruksimesin yang beroperasipadaelemen data primitifindividu.
Data Structures • Kompleksitasstruktur data terbataspadaketerampilandanimajinasipara programmer. • Perangkatlunaksistemseringmenyediakanjasaaplikasiuntukmanipulasistruktur data. Sebagaicontoh, suatusistemoperasiumumnyamenyediakanjasauntukmembacadanmenuliskedandari file. • Struktur data lain lebihsedikitdidukungolehperangkatlunaksistem. Contohnyameliputi array numerik, file indeks, danstruktur database kompleks. • File indeksdidukungolehbeberapa, tetapitidaksemuasistemoperasi.
Data Structures • Array numerikumumnyamendukungbahasapemrogramantetapibukandidalamsistemoperasi. • Struktur database secaranormal didukungolehsuatu database manajemensistem. • Kebanyakanbahasa program mendukungmanipulasilangsungdarikarakter string. • Struktur data mempunyaiperanpentingdalampengembangansistem software. Sebagaicontoh, linked list biasanyadigunakanolehsistemoperasiuntukmenjejakiblokmemori yang dialokasikanke program danblok disk yang dialokasikanke file dandirektori. • Indeksdigunakandalam database manajemensistemuntukmempercepatpencariandanmemanggilkembalioperasi.
Tugas I • Tuliskannilaisetiapelemendarivariabel array a dibawahini: • Int a[3][3] = {{1,8},{2,4,6},{5}} • Buatlahsebuahfungsirekursifuntukmendapatkanbilanganterkecildari n buahbilanganbulat yang tersimpandalamsebuahvarriabel array • Buatlahsebuah array – record untukmenampungsuatu data mahasiswa yang terdiriatas: nim, nama, alamat, danumur. Asumsijumlahmaksimalmahasiswaadalah 50 orang.