Algoritma Pemrograman & Struktur Data

Ukuran: px
Mulai penontonan dengan halaman:

Download "Algoritma Pemrograman & Struktur Data"

Transkripsi

1 MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Pertemuan 1 PENDAHULUAN Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Teknik Informatika Abstract Membahas tentang konsep dasar dari algoritma dan struktur data Kompetensi Mampu memahami konsep dasar dari algoritma dan struktur data

2 Pendahuluan Tipe dan Definisi Data DEFINISI DATA : ADALAH FAKTA ATAU KENYATAAN YANG TERCATAT MENGENAI SUATU OBYEK. Pengertian data ini menyiratkan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel. Konstanta menyatakan nilai yang tetap Variabel digunakan dalam program untuk menyatakan nilai yang dapat diubah-ubah selama eksekusi berlangsung. ADA 4 ISTILAH TENTANG DATA YAITU : 1. Tipe Data : Macam / isi data di dalam suatu variable dalam bahasa program 2. Objek Data : Set dari elemen misal X set bilangan integer 3. Representasi Data : Suatu mapping dari struktur data d ke suatu set dari struktur data e misalnya Boolean direpresantasikan dalam 0 dan 1 4. Struktur Data : Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur data biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan HIRARKI DARI TIPE DATA : 2

3 TIPE DATA SEDERHANA Hanya dimungkinkan untuk meyimpan sebuah nilai data dalam sebuah variabel. Ada 5 macam : - Bil. Bulat ( integer ) - Bil. Real presisi-tunggal ( Float ) - Bil. Real presisi-ganda ( Double ) - Karakter - Tak bertipe/void (Tipe data untuk Fungsi) - Boolean ( Operator Logika ) TIPE TOTAL KAWASAN KETERANGAN BIT Char s/d 127 Karakter Int s/d Bil Integer Float E-38 s/d 3.4E+38 Bil real Presisi Tunggal Double E-308 s/d 1.7E+308 Bil Real Presisi Ganda Void 6 Tak bertipe TIPE DATA BOOLEAN Mempunyai 2 nilai : True dan False OPERATOR Maksud && Dan ( And ) Atau ( OR )! Tidak ( Not ) Operator Boolean biasa dipakai untuk menghubungkan ungkapan relasi Operand 1 Operand 2 Hasil && False False False False False True True False True False True False True True True True 3

4 TIPE DATA TERSTRUKTUR Adalah tipe dimana suatu variabel bisa menyimpan lebih dari sebuah nilai data. Masingmasing nilai data disebut komponen. Ada 5 macam : 1. Tipe String Data yang berisi sederetan karakater dimana banyaknya karakter bisa berubah-ubah sesuai dengan kebutuhan. Contoh Char Nama[30]; 2. Larik (Array ) Variabel hanya menyimpan 1 tipe data saja. Contoh Int A[10]; Float C[3][4]; 3. Record Terdiri dari beberapa variabel yang terstruktur dan masing-masing variabel bisa mempunyai tipe yang berbeda. Contoh : Struct Nama data_tanggal int tanggal; int bulan; int tahun ; 4. Set ( himpunan ) Union Memungkinkan suatu lokasi memori ditempati oleh dua atau lebih variabel yang tipenya bisa berlainan. Contoh : Union unsigned int Angka; unsigned char Huruf[12] bil_x Enumerasi Merupakan himpunan dari konstanta integer yang diberi nama. Contoh : enum manusia pria,wanita; enum manusia jns_kelamin; jika jns_kelamin diisi pria maka nilai jns_kelamin=0 dan sebaliknya jika wanita nilai=1 4

5 5. File Merupakan organisasi dari sejumlah record sejenis. Masing-masing record dapat terdiri dari satu atau beberapa field dan setiap field terdiri dari satu atau bebrapa karakter. TIPE DATA POINTER Variabel pointer berisi alamat dari suatu obyek lain (yaitu obyek yang ditunjuk oleh pointer tersebut). Contoh int *pa; pa = &x; pointer pa menunjuk alamat x. Algoritma DEFINISI ALGORITMA : Adalah himpunan langkah-langkah instruksi untuk melaksanakan suatu pekerjaan tertentu, dengan beberapa kriteria : 1. Ada input 2. Ada output 3. Jelas dan tidak meragukan (definiteness) 4. Ada terminasi (finiteness) 5. Efektif dan dapat dilaksanakan. Ada sedikit perbedaan antara algoritma dan program. Program tidak harus memenuhi kriteria 4 contoh SO, karena harus selalu menunggu job. 5

6 Algoritma dan Metode Pemrograman Penekanannya pada bagaimana memecahkan suatu masalah dengan algoritma yang tepat. Dasar-dasar algoritma : - Statement Elementer - Statement Control Statement Elementer - Assignment - Comparison - Arithmetic Statement - Operator Boolean - Instruksi I/O Statement Control : - Alternatif - Pengulangan - Percabangan STATEMENT ELEMENTER : a. Assigment Untuk memberikan nilai kevariabel yang telah dideklarasikan, bentuk pernyataan yang digunakan : Contoh Bil3 = 0; b. Comparison U/ keperluan pengambilan keputusan diperlukan operator relasi sebagai berikut : Operator >, <, >=, <=, = =,!= c. Arithmetic Statement Operator Aritmatika : +, -, *, /, ^ Ada operator aritmatika khusus yaitu mod (%) sisa pembagian. Contoh 7 % 2 hasilnya 1 d. Operator Boolean Adalah operator logika dipakai untuk menghubungkan ungkapan relasi yang hasilnya True atau False Yaitu && (dan), (Or),! (not) 6

7 e. Operasi Input/Output U/ memasukkan data kekomputer dalam Bahasa C/C++ Sbb : printf(),cin(),scanf(), getch(), getche() U/ mengeluarkan data : printf(), puts(), putchar(),cout(). STATEMENT CONTROL a. Alternatif Terdiri dari pernyataan : - If, If - else, switch Bentuk umum : If ( kondisi ) pernyataan If ( kondisi ) pernyataan True else pernyataan False switch ( ekspresi ) case 1 : pernyataan 1 break; case n : pernyataan n break b. Pengulangan Pernyataan pengulangan terdiri dari : - do while - while - for do pernyataan while (kondisi) 7

8 while ( kondisi ) pernyataan for (ungkapan1;ungkapan2;ungkapan3) pernyataan c. Percabangan Memerlukan label sebagai identitas cabang. label : pernyataan goto label STRUKTUR DATA LINIER Struktur data linier adalah struktur data yang menggambarkan hubungan tentang elemenelemen yang berdekatan : Terdiri dari : ARRAY : a. Dimensi satu (vector matriks) b. Dimensi dua (matriks) c. Multi dimensi Aplikasi penggunaan array diantaranya : a. Stack (tumpukkan) b. Queue (antrian) c. Deque (antrian dengan 2 pintu ) 8

9 LINKED LIST (LIST BERKAIT) a. Linier Singly linked list b. Linier Doubly linked list c. Circular singly linked list d. Circular doubley linked list Aplikasi linked list pada struktur data linier diantaranya : a. Linked stack b. Linked Queue Sedangkan multi linked list banyak digunakan pada struktur data non-linier yaitu untuk representasi tree maupun graph. PENGELOLAAN MEMORI Dapat secara STATIS atau DINAMIS Secara STATIS Menempati lokasi memori yang tetap(fixed size), tidak dapat dikembangkan atau diciutkan. Misal : array Alamat memori menjadi kunci array Secara DINAMIS Menempati lokasi memori dimana dapat dikembangkan atau diciutkan sesuai dengan kebutuhan. Pengelolaan memori secara dinamis(dynamic address) ditunjukkan oleh pointer. 9

10 Latihan Soal Buatlah algoritma sebagai berikut : 1. Menampilkan deret Menampilkan deret Menampilkan deret Menampilkan deret bilangan prima Menampilkan deret DaftarPustaka 1. Pengantar Struktur Data dan Algoritma, Bambang Wahyudi, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, Paulus Bambangwirawan Dipl.Inf, Penerbit Andi Yogyakarta, Edisi 1, Pengantar Algoritma dengan Bahasa C, Thompson Susabda Ngoen, Penerbit Salemba Teknika, Edisi 1, Pemrograman C++, Abdul Kadir, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, C++, Moh. Sjukani, Mitra Wacana Media, Edisi 4 10

11 MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Pertemuan 2 ARRAY Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Teknik Informatika Abstract Membahas tentang konsep dari array satu dimensi hingga array multidimensi Kompetensi Mampu memahami konsep dasar dari array satu dimensi hingga array multidimensi

12 Array Definisi Array Array (larik) adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen dengan type yang sama. Banyaknya komponen dalam suatu larik adalah tetap dan lokasi dalam suatu larik ditunjukkan oleh suatu INDEKS. Yang penting dalam array adalah pengalamatan memori dan digunakan pengalamatan secara static. Karakteristik pemakaian Array : - Jumlah elemen array terbatas - Semua elemen array dapat diakses secara acak - Panjang elemen sama Dimensi Dalam bentuknya array dapat kita tinjau dari segi pengaturan struktur datanya dalam konteks dimensi sebagai berikut : Array 1 Dimensi List Vektor Array 2 Dimensi Tables Matriks (2 dimensi) Array 3 Dimensi Matriks 3 Dimensi Array Mulidimensi Pada prinsipnya secara teori jumlah dimensi suatu matriks tidak terbatas, yang membatasi adalah kemampuan hardware dan besarnya memori Array Satu Dimensi Suatu array dideklarasikan dengan : A[ ], setiap elemen terdiri dari 4 byte. Jika alamat elemen -3 ] = 1000 H ditanya : 2

13 A. Jumlah Elemen B. Jumlah Byte Seluruhnya C. Alamat A[7] atau Jawab : Di ilustrasikan sebuah Array sebagai berikut: Setiap elemen 4 = 1000 H = 1004 H A. Jumlah Elemen = (Index atas - Index Bawah ) + 1 = ( 8 - (-3) ) + 1 = 12 Elemen B. Jumlah Byte = JumlahElemen * Jumlah Byte PerElemen = 12 * 4 = 48 Byte C. 7 ] = berpindah/bergerak = 7 - (-3) = 10 Elemen Setiap Elemen 4 Byte maka : 10 * 4 = 40 Byte 40 disini adalah dalam notasi 40 Decimal, dalam pengalamatan memori digunakan notasi Hexa Decimal. Maka 40 Decimal dirubah menjadi Hexa Decimal. 40 Decimal = 28 Hexa Decimal atau 28 H = 1000 H + 28 H = 1028 H 3

14 Pendeklarasian A[ ] adalah deklarasi yang ada pada bahasa program Pascal. Pada bahasa program C/C++ pendeklarasian sedikit berbeda tapi mempunyai maksud yang sama. Contoh A[8] Maka akan terbentuk Array 1 Dimensi sebanyak 8 tempat Dimana nomor index pertama pada bahasa C dimulai dari 0 (nol) Program C++ mengetahui alamat suatu data #include<iostream.h> #include<conio.h> main() int i,j,angka[5]; clrscr(); for(i=0; i<5; i++) cout <<"MASUKAN ANGKA ["<<i<<"]= "; cin>>angka[i]; for(i=0; i<5; i++) cout <<"ANGKA ["<<i<<"]= "<<ANGKA[i]<<" ADA DIALAMAT = "<<&ANGKA[i]<<endl; getch(); Array Dua Dimensi Representasi matriks dalam bentuk array dua dimensi dapat berupa : Ukuran baris perbaris ( Row Major Order) Ukuran Kolom perkolom ( Column Major Order) Matrik dalam pembahasan selanjutnya menggunakan M[Baris][Kolom] 4

15 Diketahui suatu Array dua dimensi yang dideklarasikan dengan A[ , ] Setiap elemen terdiri dari 4 Byte. Alamat elemen = 1000 H = 1000 H Ditanya : A. Jumlah Elemen B. Jumlah Byte Seluruhnya C. Alamat A[2,5] Jika penempatan memori menggunakan : C1. Row Major Order C2. Column Major Order Jawab. Di ilustrasikan sebuah Array sebagai = 1000 H A B C D E F 0 G H I J 1 M N O P K Q L R 2 S T U V W =?. Pada Array 2 Dimensi yang diilustrasikan diatas, urutan elemennya dalam memori jika megikuti cara : 5

16 ROW MAJOR ORDER (URUTAN YANG MENGUTAMAKAN/MENDAHULUKAN BARIS) ,3-1,4-1,5-1,6-1,7-1,8 0,3 0,4 2,3 2,4 2,5 2,6 2,7 2,8 A B C D E F G H.. S T U V W X Baris Ke-1 Baris Ke-2 Baris ke 4 Baris (-1) Baris (0) Baris = 1000 H Setiap pindah Satu Baris pindah 6 Elemen COLUMN MAJOR ORDER ( URUTAN YANG MENDAHULUKAN KOLOM) ,3 A G M S B H N T C. Q W F L R X kolom Ke-1 Kolom Ke-2 Kolom Ke 3 Kolom ke6 Kolom (3) Kolom (4) Kolom 5 Kolom = 1000 H Setiap pindah Satu Kolom pindah 4 Elemen 6

17 BILA DINYATAKAN DENGAN NOMOR URUT MAKA PENEMPATAN ELEMEN ARRAY : CARA ROW MAJOR ORDER CARA COLUMN MAJOR ORDER Catatan : Angka- Angka Didalam Elemen Bukan Isi elemen tapi merupakan nomor Urut elemen. Jawaban Soal ARRAY DUA DIMENSI A. Jumlah Elemen = Baris * Kolom A[ -1..2, ] = 4 * 6 = (-1)+1 (8-3)+1 = 4 Baris = 6 Kolom B. Jumlah Byte = 24 * 4 = 96 Byte 7

18 C1. Menentukan menggunakan ROW MAJOR = 1000 H A B C D E F 0 G H I J K L 1 M N O P Q R =? Dari Gambar Diatas terlihat bahwa bergerak dari elemen A[-1,3] ke elemen A[2,5] yaitu elemen ke 21 menurut ROW MAJOR ORDER perpindahannya sebanyak : 21 1 = 20 Elemen A T A U Terlihat dari Baris 1 ke baris 2 sebanyak 3 Baris Setiap Baris ada 6 Elemen, Jadi 3 * 6 = 18 Elemen Dari Kolom 3 Ke kolom 5 sebanyak 2 Kolom Jadi Total Perpindahan = = 20 Elemen Satu Elemen 4 Byte Pindah 20 * 4 = 80 Byte 80 Dec = 50 Hexa Dec. Atau tanpa melihat Gambar : A [Baris, Kolom ] Ditanya 2, 5 ] Diketahui -1, 3 ] Dikurang 3 2 Pindah 3 Baris = 3 * Banyak Elemen Per baris = 3 * 6 = 18 Pindah 2 Kolom = 2 2 Total Perpindahan = 20 Elemen 8

19 Dimana 1 Elemen 4 Byte Jadi 20 * 4 = 80 Byte ( Decimal ) 80 Decimal = 50 Hexa Decimal Jadi = 1000 H + 50 H = 1050 H C2. Menentukan menggunakan COLUMN MAJOR = 1000 H A B C D E F 0 G H I J K L 1 M N O P Q R =? Dari Gambar Diatas terlihat bahwa bergerak dari elemen A[-1,3] ke elemen A[2,5] yaitu elemen ke 12 menurut COLUMN MAJOR ORDER perpindahannya sebanyak : 12 1 = 11 Elemen A T A U Terlihat dari kolom 3 ke kolom 5 sebanyak 2 Kolom Setiap Kolom ada 4 Elemen, Jadi 2 * 4 = 8 Elemen Dari baris -1 Ke baris 2 sebanyak 3 baris Jadi Total Perpindahan = = 11 Elemen Satu Elemen 4 Byte Pindah 11 * 4 = 44 Byte= 44 Dec 44 Dec = 2C Hexa, 9

20 Atau tanpa melihat Gambar : A [Baris, Kolom ] Ditanya 2, 5 ] Diketahui -1, 3 ] Dikurang 3 2 Pindah 2 Kolom = 2 * Banyak Elemen Per Kolom = 2 * 4 = 8 Pindah 3 Baris = 3 3 Total Perpindahan = 11 Elemen Dimana 1 Elemen 4 Byte Jadi * 4 = 44 Byte ( Decimal ) 44 Dec. = 2C Hexa Dec.l Jadi = 1000 H + 2C H = 102C H Array Tiga Dimensi Suatu Array dideklarasikan A[ 2..4, , ], setiap elemen terdiri 4 byte. Alamat elemen 1000 H ditanya : A. Jumlah Elemen B. Jumlah Byte Seluruhnya C. C1. Menggunakan Row Major Order C2. Menggunakan Column Major Order JAWAB ilustrasi = 1000 H Blok 2 Blok 3 Blok =.? 10

21 Blok Baris Kolom (4 2 )+1 (2-(-1))+1 (8-3) Blok 4 Baris 6 Kolom A[ 2.. 4, , ] A. Jumlah Elemen: Jumlah Blok = ( 4-2 ) + 1 = 3 Blok Jumlah Baris = ( 2 (-1) + 1 = 4 Baris Jumlah Kolom = ( 8 3 ) + 1 = 6 Kolom Jumlah Elemen = 3 * 4 * 6 = 72 Elemen. B. Jumlah Byte : 72 * 4 Byte = 288 Byte. C1. ROW MAJOR = 1000 H BLOK 2 BLOK 3 BLOK =? Dari Gambar terlihat urutan perpindahan dari elemen no. 1 ke Elemen No. 69 perpindahan sebanyak 68 Elemen. 68 * 4 Byte =272 Byte Dec. = 110 Hexa Dec. Jika tidak melihat gambar dapat dihitung dengan melihat perpindahan Blok, Baris dan kolom. Ditanya 4, 2, 5 ] 2, -1, 3 ] Di kurang 11

22 2 3 2 Pindah 2 Blok ( Dari Blok 2 Ke Blok 4 ) Setiap Blok Ada 24 Elemen Jadi Perpindahan 2 * 24 = 48 Elemen Pindah 3 Baris ( Dari Baris -1 Ke baris 2 ) Setiap Baris ada 6 Elemen Jadi Perpindahan 3 * 6 = 18 Elemen Pindah 2 Kolom ( 2 Elemen ) = 2 Elemen Jadi Jumlah Pepindahan 68 Elemen Pindah = 68 Elemen = 68 * 4 Byte = 272 Byte (Decimal) = 110 Hexa Dec Jadi = 1000 H H = 1110 H C2. COLUMN MAJOR = 1000 H BLOK 2 BLOK 3 BLOK =? Dari Gambar terlihat urutan perpindahan dari elemen no. 1 ke Elemen No. 60 perpindahan sebanyak 59 Elemen. 59 * 4 Byte = 236 Byte 236 Dec. = EC Hexa Dec. 12

23 Jika tidak melihat gambar dapat dihitung dengan melihat perpindahan Blok, Baris dan kolom. Ditanya 4, 2, 5 ] 2, -1, 3 ] Di kurang Pindah 2 Blok ( Dari Blok 2 Ke Blok 4 ) Setiap Blok Ada 24 Elemen Jadi Perpindahan 2 * 24 = 48 Elemen Pindah 3 Baris ( Dari Baris -1 Ke baris 2 ) Pindah Sebanyak 3 Elemen = 3 Elemen Pindah 2 Kolom ( Dari Kolom 3 Ke Kolom 5) Setiap Kolom 4 Elemen Jadi Perpindahan 2 * 4 = 8 Elemen Jadi Jumlah Pepindahan Pindah = 59 Elemen = 59 * 4 Byte = 236 Byte (Decimal) = EC Hexa Dec 59 Elemen Jadi = 1000 H + EC H = 10EC H 13

24 Array Empat Dimensi (Multidimensi) Diketahui suatu Array Multi Dimensi yang dideklarasikan dengan A[1..2, 2..4, -1..2, 3..8 ]. Setiap elemen terdiri dari 4 Byte. Alamat elemen = 1000 H Ditanya : A. Jumlah Elemen B. Jumlah Byte Seluruhnya C. C1. Row Major Order C2. Column Major Order Jawab Grup Blok Baris Kolom (2 1)+1 (4-2)+1 (2-(-1)+1 (8-3)+1 2 Grup 3 Blok 4 Baris 6 Kolom A [ 1.. 2, 2.. 4, , ] ILUSTRASI GRUP Blok 2 Blok 3 Blok GRUP Blok 2 Blok 3 Blok 4 A. Jumlah Elemen = 2 Grup * 3 Blok * 4 Baris * 6 Kolom = 144 Elemen B. Jumlah Byte = 144 * 4 = 576 Byte 14

25 C1. ROW MAJOR ORDER GRUP Blok 2 Blok 3 Blok 4 GRUP Blok 2 Blok 3 Blok 4 C2. COLUMN MAJOR ORDER GRUP Blok 2 Blok 3 Blok GRUP Blok 2 Blok 3 Blok 4 15

26 Latihan Soal Latihan Array satu dimensi : 1. Suatu array dideklarasikan dengan : A[ ], setiap elemen terdiri dari 6 byte. Jika alamat elemen pertama FFBB H ditanya : a. Jumlah Elemen b. Jumlah Byte Seluruhnya c. Alamat A[4] atau 2. Suatu array dideklarasikan dengan : A[9] pada Bahasa C++, setiap elemen terdiri dari 8 byte. Jika alamat elemen pertama 16FF H ditanya : a. Jumlah Elemen b. Jumlah Byte Seluruhnya c. Alamat A[5] atau 3 Suatu array dideklarasikan pada bahasa C++ dengan : float angka[12]; Jika alamat elemen pertama 2C3E H ditanya : a. Jumlah Elemen b. Jumlah Byte Seluruhnya c. Alamat A[6] atau Latihan Array dua dimensi : 1. Diketahui suatu Array dua dimensi yang dideklarasikan dengan A[-2..3,3..6]. Setiap elemen terdiri dari 2 Byte. Alamat elemen pertama FECA H Ditanya : A. Jumlah Elemen B. Jumlah Byte Seluruhnya C. Alamat A[2,5] Jika penempatan memori menggunakan : C1. Row Major Order C2. Column Major Order 2. Diketahui suatu Array dua dimensi yang dideklarasikan dengan A[5][6] Pada Bahasa C++. Setiap elemen terdiri dari 10 Byte. Alamat elemen H Ditanya : A. Jumlah Elemen 16

27 B. Jumlah Byte Seluruhnya C. Alamat A[3,2] Jika penempatan memori menggunakan : C1. Row Major Order C2. Column Major Order 3. Diketahui suatu Array dua dimensi yang dideklarasikan dengan : long A[6][7] Pada Bahasa C. Alamat elemen pertama 10CC H Ditanya : A. Jumlah Elemen B. Jumlah Byte Seluruhnya C. Alamat A[2,5] Jika penempatan memori menggunakan : C1. Row Major Order C2. Column Major Order Latihan Array tiga dimensi : 1. Diketahui suatu Array 3 dimensi yang dideklarasikan dengan A[-2..2,1..4,3..6]. Setiap elemen terdiri dari 6 Byte. Alamat elemen pertama FC8B H Ditanya : A. Jumlah Elemen B. Jumlah Byte Seluruhnya C. Alamat A[1,3,5] C1. Row Major Order C2. Column Major Order 2. Diketahui suatu Array 3 dimensi yang dideklarasikan dengan A[2][5][6] Pada Bahasa C++.Setiap elemen terdiri dari 4 Byte. Alamat elemen pertama BC9A H Ditanya : A. Jumlah Elemen B. Jumlah Byte Seluruhnya C. Alamat A[1,3,5]? C1. Row Major Order C2. Column Major Order 3. Diketahui suatu Array 3 dimensi yang dideklarasikan dengan : longdouble A[4][3[7] Pada Bahasa C++. Alamat elemen pertama CBBA H Ditanya : A. Jumlah Elemen 17

28 B. Jumlah Byte Seluruhnya C. Alamat A[3,2,6]? C1. Row Major Order C2. Column Major Order Latihan Array empat dimensi (multidimensi) : 1. Diketahui Array Multi dimensi yang dideklarasikan dengan A[2..4,-1..4,3..6,1..6]. setiap elemen 8 Byte. Alamat elemen Pertama F2BE H. Ditanya A. Jumlah Elemen B. Jumlah Byte Seluruhnya C1. Row Major Order C2. Column Major Order 2. Diketahui Array Multi dimensi yang dideklarasikan dengan A[4][3][2][3] dengan Bhs. C. setiap elemen 4 Byte. Alamat elemen Pertama 2BCE H. Ditanya A. Jumlah Elemen B. Jumlah Byte Seluruhnya C1. Row Major Order C2. Column Major Order 3. Diketahui Array Multi dimensi yang dideklarasikan int A[5][2][6][8][3] dengan Bhs. C++. Alamat elemen Pertama 3CDE H. Ditanya A. Jumlah Elemen B. Jumlah Byte Seluruhnya C1. Row Major Order C2. Column Major Order 18

29 Daftar Pustaka 1. Pengantar Struktur Data dan Algoritma, Bambang Wahyudi, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, Paulus Bambangwirawan Dipl.Inf, Penerbit Andi Yogyakarta, Edisi 1, Pengantar Algoritma dengan Bahasa C, Thompson Susabda Ngoen, Penerbit Salemba Teknika, Edisi 1, Pemrograman C++, Abdul Kadir, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, C++, Moh. Sjukani, Mitra Wacana Media, Edisi 4 19

30 MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Pertemuan 3 LINKED LIST Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Teknik Informatika Abstract Membahas tentang konsep dari linked list dan penerapannya Kompetensi Mampu memahami konsep dasar dari dari linked list dan penerapannya

31 Linier Singly Linked List Linier Singly Linked List - Pengelolaan memory secara dinamis artinya tidak perlu mengalokasikan memori lebih awal secara tetap (fixed). - Satu elemen terdiri dari 2 elemen : a. Elemen yang menyimpan data b. Elemen yang menyimpan alamat record ILLUSTRASI FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK ( 1 ) ( 2) ( 3 ) ( 4 ) Keterangan dari ilustrasi Linked List : - Ada 4 Simpul : simpul 1 s/d simpul 4 - Setiap simpul(record) terdiri 2 elemen yaitu : Field INFO misal bertipe Integer Field LINK bertipe Pointer Contoh simpul no. 1 Field INFO berisi nilai 25 Field LINK berisi alamat record no. 2 Simpul No. 3 Field INFO berisi nilai 17 Field LINK berisi alamat record no. 4 FIRST dan LAST adalah pointer Proses yang dapat dilakukan : a. Pembuatan Simpul Awal 2

32 b. Insert kanan (akhir) c. Delete Kanan d. Insert Tengah e. Insert Kiri f. Delete Kiri g. Delete Tengah ILUSTRASI SEBUAH SIMPUL (RECORD) INFO LINK Nama Field : LINK Tipe : Pointer Isi : akan diisi alamat Record Berikutnya Nama Field Tipe Isi : INFO : Integer : akan diisi data Dalam bahasa C/C++ untuk memberitahukan komputer bahwa kita memerlukan suatu simpul atau record dengan tipe struktur diatas perlu ditulis instruksi-instruksi sebagai berikut: Struct SIMPUL int INFO; struct SIMPUL *LINK; ; struct SIMPUL *P, *FIRST, *LAST; disiapkan 3 buah pointer yaitu P, FIRST, LAST yang semuanya terkait dengan simpul atau record. 3

33 a. Pembuatan Simpul Awal Instruksi untuk membuat sebuah simpul (record) baru adalah : P=(struct SIMPUL*) malloc(sizeof(struct SIMPUL*)); Malloc : Maksudnya mengalokasikan memory Sebesar atau seukuran (sizeof) yang diperlukan Untuk simpul. Contoh sederhana (lengkap) program membuat Simpul Awal: #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> struct SIMPUL int INFO; struct SIMPUL *LINK; ; struct SIMPUL *P, *FIRST, *LAST; main( ) int X; clrscr(); cout<<"masukan SIMPUL AWAL : "; cin>>x; P=(struct SIMPUL*)malloc(sizeof(struct SIMPUL)); P->INFO=X; P->LINK=NULL; cout<<" ANGKA YANG DIMASUKKAN = "<<P->INFO<<endl; getch(); 4

34 Perhatikan kembali Linier Singly Lingked List FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK ( 1 ) ( 2) ( 3 ) ( 4 ) Fungsi untuk membuat simpul(record) AWAL void AWAL(void) int X; cout<< MASUKKAN SIMPUL AWAL : ; cin>>x; P=(struct SIMPUL*) malloc(sizeof(struct SIMPUL*)); P->INFO=X; FIRST = P; LAST=P; P->LINK=NULL; b. INSERT KANAN (INSERT AKHIR) sudah dibuat Simpul awal sebagai berikut : FIRST LAST P INFO LINK 25 ( 1 ) 5

35 Akan diinsert disebelah kanan seperti berikut FIRST LAST INFO LINK INFO LINK ( 1 ) ( 2) Fungsi untuk Insert Kanan sebagai berikut : void InsertKanan(void) int X; cout<< MASUKKAN SIMPUL KANAN : ; cin>>x; P=(struct SIMPUL*) malloc(sizeof(struct SIMPUL*)); P->INFO=X; LAST->LINK=P; LAST=P; P->LINK=NULL; c. DELETE KANAN Misal sudah ada Linked List sebagai berikut: FIRST Q LAST INFO LINK INFO LINK INFO LINK INFO LINK ( 1 ) ( 2) ( 3 ) ( 4 ) Fungsi untuk Delete Kanan sebagai berikut : 6

36 void DeleteKanan(void) int X; X=LAST->INFO; cout<< DATA YANG AKAN TERHAPUS <<X; free(last); LAST=Q; LAST->LINK=NULL; Buat Fungsi : a. Insert Tengah b. Insert Kiri c. Delete Kiri d. Delete Tengah Linier Doubly Linked List - Pengelolaan memory secara dinamis artinya tidak perlu mengalokasikan memori lebih awal secara tetap (fixed). - Satu elemen terdiri dari 2 elemen : a. Elemen yang menyimpan data b. Elemen yang menyimpan alamat record sebelumnya c. Elemen yang menyimpan alamat record sesudahnya ILUSTRASI FIRST LEFT INFO RIGHT LAST

37 ILUSTRASI SEBUAH SIMPUL Simpul dengan 3 Elemen LEFT INFO RIGHT Nama Field : LEFT Nama Field : INFO Nama Field : RIGHT Type : Pointer Type : integer Type : Pointer Isi : Akan diisi alamat Isi : akan diisi data Isi : akan diisi alamat Record sebelumnya Record sesudanya Dalam Bahasa C++ untuk menyatakan suatu simpul dengan struktur demikian dapat ditulis sebagai berikut : Struct SIMPUL int INFO; struct SIMPUL *LEFT, *RIGHT; ; struct SIMPUL *P, *FIRST, *LAST; Proses yang dapat dilakukan : a. Pembuatan Simpul Awal b. Insert kanan (akhir) c. Delete Kanan d. Insert Tengah e. Insert Kiri f. Delete Kiri g. Delete Tengah a. Pembuatan Simpul Awal Contoh sederhana (lengkap) program membuat Simpul awal: #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> 8

38 struct SIMPUL int INFO; struct SIMPUL *LEFT,*RIGHT; ; struct SIMPUL *P, *FIRST, *LAST; main( ) int X; clrscr(); cout<<"masukan SIMPUL AWAL : "; cin>>x; P=(struct SIMPUL*)malloc(sizeof(struct SIMPUL)); P->INFO=X; FIRST=P; LAST=P; P->LEFT=NULL; P->RIGHT=NULL; cout<<" Isi P = "<<P->INFO; Fungsi untuk membuat Simpul Awal void AWAL(void) int X; cout<< MASUKKAN SIMPUL AWAL : cin>>x; P=(struct SIMPUL*) malloc(sizeof(struct SIMPUL*)); P->INFO=X; FIRST=P; LAST=P; P->LEFT=NULL; P->RIGHT=NULL; 9

39 Ilustrasi simpul yang dihasilkan oleh program misal X=25 LAST FIRST P LEFT INFO RIGHT 25 Ada 3 buah pointer yang LAST, FIRST dan P yang menunjuk data yang sama. b. Insert Kanan Dibuat Simpul Awal sebagai berikut : LAST FIRST P LEFT INFO RIGHT 25 (1) Akan dibuat simpul baru disebelah kanan sebagai berikut FIRST LAST LEFT INFO RIGHT (1) (2) 10

40 Fungsi untuk Insert Kanan Sebagai Berikut : void InsertKanan(void) int X; cout<< MASUKKAN SIMPUL KANAN ; cin>>x; P=(struct SIMPUL*) malloc(sizeof(struct SIMPUL*)); P->INFO=X; LAST->RIGHT=P; P->LEFT=LAST; LAST=P; P->RIGHT=NULL; c. Delete Kanan (Akhir) Sudah ada Double Linked List sebagai berikut : FIRST LEFT INFO RIGHT LAST Akan dihapus simpul yang paling kanan (4) menjadi sebagai berikut: FIRST LEFT INFO RIGHT LAST Pointer LAST akan menunjuk Ke Record Ke 3 11

41 Fungsi untuk Delete Kanan Sebagai Berikut : void DeleteKanan(void) int X; X=LAST->INFO; cout<< DATA YANG TERHAPUS <<X; LAST=LAST->LEFT; free(last->right) LAST->RIGHT=NULL; Buat Fungsi : a. Insert Tengah b. Insert Kiri c. Delete Kiri d. Delete Tengah Praktikum PRAKTEK DI LABORATORIUM DISAJIKAN SEBUAH PROGRAM LINIER SINGLE LINKED LIST /*PROGRAM LINIER SINGLY LINKED LIST */ #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> struct SIMPUL int INFO; struct SIMPUL *LINK; ; struct SIMPUL *P, *FIRST, *LAST, *T, *Q; void AWAL(void); void TAMPIL(void); void INSERT_KANAN(void); 12

42 void INSERT_KIRI(void); void INSERT_TENGAH(void); void DELETE_KIRI(void); void DELETE_KANAN(void); void DELETE_TENGAH(void); void COBA(void); int X,PIL; main( ) do clrscr(); cout<<"linier SINGLY LIST"<<endl; cout<<"======================"<<endl; cout<<"1. SIMPUL AWAL"<<endl; cout<<"2. INSERT KANAN"<<endl; cout<<"3. INSERT KIRI"<<endl; cout<<"4. INSERT TENGAH"<<endl; cout<<"5. DELETE KANAN"<<endl; cout<<"6. DELETE KIRI"<<endl; cout<<"7. DELETE TENGAH"<<endl; cout<<"8. TAMPIL "<<endl; cout<<"9. Exit"<<endl<<endl; while (PIL<9); void AWAL(void) cout<<"pilihan : "; cin>>pil; switch (PIL) case 1 : AWAL(); break; case 2 : INSERT_KANAN(); break; /* case 3 : INSERT_KIRI(); break; case 4 : INSERT_TENGAH(); break; */ case 5 : DELETE_KANAN(); break; /* case 6 : DELETE_KIRI(); break; case 7 : DELETE_TENGAH(); break; */ case 8 : TAMPIL(); break; case 9 : cout<<"terima KASIH"; break; getch(); 13

43 clrscr(); cout<<"masukan SIMPUL AWAL : "; cin>>x; P=(struct SIMPUL*)malloc(sizeof(struct SIMPUL)); P->INFO=X; P->LINK=NULL; FIRST=P; LAST=P; cout<<"isi P = "<<P->INFO<<endl; cout<<"isi FIRST = "<<FIRST->INFO<<endl; cout<<"isi LAST = "<<LAST->INFO<<endl; cout<<"isi pointer P = "<<P->LINK<<endl; cout<<"isi pointer FIRST = "<<FIRST->LINK<<endl; cout<<"isi pointer LAST = "<<LAST->LINK<<endl; void INSERT_KANAN(void) clrscr(); cout<<"masukan SIMPUL KANAN : "; cin>>x; P=(struct SIMPUL*)malloc(sizeof(struct SIMPUL)); P->INFO=X; LAST->LINK=P; LAST=P; P->LINK=NULL; cout<<" Isi P = "<<P->INFO; void DELETE_KANAN(void) clrscr(); if (FIRST!=NULL) P=FIRST; while(p->link!=null) Q=P; P=P->LINK; else X=P->INFO; cout<<"data YANG AKAN DIHAPUS : "<<X; free(p); Q->LINK=NULL; LAST=Q; cout<<" SIMPUL KOSONG"; 14

44 void TAMPIL(void) clrscr(); T=FIRST; while (T!=NULL) X=T->INFO; cout<<x<<" "; T=T->LINK; Buat procedure/fungsi untuk : 1. Insert Kiri 2. Insert Tengah 3. Delete Kiri 4. Delete Tengah Daftar Pustaka 1. Pengantar Struktur Data dan Algoritma, Bambang Wahyudi, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, Paulus Bambangwirawan Dipl.Inf, Penerbit Andi Yogyakarta, Edisi 1, Pengantar Algoritma dengan Bahasa C, Thompson Susabda Ngoen, Penerbit Salemba Teknika, Edisi 1, Pemrograman C++, Abdul Kadir, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, C++, Moh. Sjukani, Mitra Wacana Media, Edisi 4 15

45 MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Pertemuan 4 STACK (TUMPUKAN) Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Teknik Informatika Abstract Membahas tentang konsep dari queue (antrian) dan penerapannya Kompetensi Mampu memahami konsep dasar dari queue (antrian) dan penerapannya

46 STACK (TUMPUKAN) Konsep Stack Aplikasi penggunaan array berupa : Stack ( tumpukan ), Queue ( antrian ) dan Dequeue ( antrian 2 Arah ) Stack maksudnya tumpukan Salah satu Ilustrasi Stack yang mudah dipahami misalnya tumpukan buku diatas meja yang diilustrasikan sebagai berikut : Nomor Nomor Urut Urut Masuk Keluar ( Push ) ( Pop ) 4 Buku 4 1 Top 3 Buku Buku 2 3 Meja 1 Buku 1 4 Dasar Proses yang dapat dilakukan terhadap Stack PUSH untuk : - Penempatan atau - Masuk, atau - Insert, atau - Tulis POP untuk : - Ambil atau - Keluar, atau - Delete, atau - Baca/ Hapus 2

47 Mempunyai Prinsip : LIFO (LAST IN FIRST OUT ) : terakhir masuk, pertama keluar Atau Data masuk terakhir akan diambil pertama kali. Stack I Satu Stack dalam satu array. (array hanya digunakan oleh satu stack) Dasar Stack berada pada sisi index terkecil. Ilustrasi misal n = n S[ ] Dasar Top Dasar Top X a. Stack menggunakan array S[ ] dengan 10 elemen ( n=10) Isi Stack ada 4 Elemen. S[1] yang paling bawah dan S[4] yang paling atas Ada dua index ( baca Pointer ) yang digunakan yaitu dasar dan Top Dasar : Untuk menunjuk dasar atau alas dari stack, isinya dalam hal ini selalu 0 Top : untuk menunjuk nomor elemen array yang menampung isi stack yang paling atas. Dalam ilustrasi diatas isinya adalah 4 3

48 b. Beberapa Kondisi Stack. Ditentukan oleh posisi Pointer Top 1. Stack kosong tak ada Isinya (awal) n S[ ].. Dasar Top STACK dalam kondisi : Kosong Top = 0 Bisa Diisi Top<n 2. Stack penuh tak bisa diisi S[ ] X X X X X X X X Dasar Top STACK dalam kondisi : Penuh Top = n Ada isinya Top>0 3. Stack bisa diisi n S[ ] X X X X.... Dasar Top STACK dalam kondisi : Bisa diisi Top < n Ada isinya Top > 0 4

49 KONDISI STACK CIRI 1 KOSONG, tak ada isinya Top = 0 2 PENUH, tak bisa di isi Top = n 3 BISA DI ISI, (kebalikan penuh) Top < n 4 ADA ISINYA (kebalikan kosong) Top > 0 c. Proses a. AWAL ( Inisialisasi) b. PUSH ( Simpan, insert,tulis ) c. POP (Ambil, Delete, Baca ) Algoritma Proses Awal Stack (Bhs. C++) Dimana semua pointer Dasar dan Top dimulai dari 0 void Awal(void) dasar = 0; Top = 0; Algoritma dasar proses Push (simpan) - Naikkan Top dengan 1 - Isikan data kedalam elemen yang ditunjuk Top void Push(void) Top = Top + 1; S[Top] = X; Algoritma Lengkap proses Push (simpan) - Periksa dahulu apakah Top<n - Naikkan Top dengan 1 - Isikan data kedalam elemen yang ditunjuk Top - Jika Sudah penuh cetak Stack Penuh Boy 5

50 void Push(void) if ( Top<n ) Top = Top + 1; S[Top] = X; else cout<< Stack Penuh Boy ; Algoritma dasar proses Pop (ambil) - Copy data dari elemen yang ditunjuk Top kedalam suatu Variabel - Turunkan Top void Pop(void) X = S[Top]; Top = Top 1 ; Algoritma Lengkap proses Pop (Ambil) - Periksa dahulu apakah Top void Push(void) if ( ) else 6

51 Stack II Dua Stack dalam satu array. Satu array digunakan oleh dua stack Dimana Dasar Stack1 berada pada sisi index terkecil dan Dasar Stack2 berada Pada sisi index terbesar. Ilustrasi n = 12 S[ ] a a a a b B b b Dasar1 Top1 Top2 Dasar Dasar1 Top1 Dasar2 Top2 Dasar1 selalu = 0 Dasar2 selalu = n+1 Untuk Ilustrasi diatas Dasar2 selalu = 13 a. Beberapa Kondisi Stack. 1. Stack kosong tak ada Isinya (awal) n S[ ] Dasar1 Top1 Dasar2 Top2 Kondisi Awal : - Stack 1 Kosong dan bisa di isi - Stack 2 Kosong dan bisa di isi 7

52 Cirinya : Dasar1 =0, Top1=0 Dasar2 = n + 1, Top2 = n Stack1 dan Stack2 ada Isinya S[ ] a a a a b b b Dasar1 Top1 Top2 Dasar 2 Stack1 ada isinya dan bisa di isi Stack2 ada isinya dan bisa di isi Cirinya : Dasar1 = 0, Dasar2= n + 1 Masih bisa diisi Top2 Top1 >1 3. Stack Penuh a a a a a a b b b b b S[ ] Dasar1 Top1 Top2 Dasar 2 Stack1 dan Stack2 Tak bisa di isi Cirinya : Top2 Top1 = 1 4 Stack Penuh a a a a a a a a a a a S[ ] n Dasar1 Top1 Top2 Dasar 2 8

53 Stack1 ada isinya Stack2 tak ada isinya Cirinya : Top1 = n Dasar2= n + 1, Top2 = n + 1 KONDISI STACK CIRI 1 STACK1 KOSONG STACK2 KOSNG Top1= 0 Top2 = n +1 2 STACK1 DAN STACK 2 PENUH Top2 Top1 =1 3 STACK1 DAN STACK2 BISA DIISI Top2 Top1 > 1 4 STACK1 ADA ISINYA STACK2 ADA ISINYA Top1 > 0 Top2 < n + 1 b. Proses - Awal (Inisialisasi) - Push1 - Pop1 - Push2 - Pop2 Algoritma Proses Awal Stack( Bhs. C ) void Awal(void) Dasar1 = 0; Top1 = 0; Dasar2 = n + 1; Top2 = n +1 Algoritma dasar proses Push1 (simpan) - Naikkan Top dengan 1 - Isikan data kedalam elemen yang ditunjuk Top void Push1(void) Top1 = Top1 + 1; S[Top1] = X; 9

54 Algoritma Lengkap proses Push1 (simpan) - Periksa dahulu apakah Top2-Top1>1 - Naikkan Top dengan 1 - Isikan data kedalam elemen yang ditunjuk Top - Jika Sudah penuh cetak Stack Penuh Boy void Push1(void) if ( Top2-Top1>1 ) Top1 = Top1 + 1; S[Top1] = X; else printf( Stack Penuh Boy ) Algoritma dasar proses Pop1(ambil) - Copy data dari elemen yang ditunjuk Top1 kedalam suatu Variabel - Turunkan Top1 void Pop1(void) X = S[Top1]; Top1 = Top1 1 ; Algoritma Lengkap proses Pop1 (Ambil) - Periksa dahulu apakah Top void Push1(void) if ( ) else 10

55 Buat Procedure untuk Push2 dan Pop2 Stack III Dua Stack dalam satu array. Satu array digunakan oleh dua stack Dimana Dasar kedua Stack berada ditengah. Ilustrasi n = 13 S[ ] a a a a B b b b Top1 Dasar2 Dasar 1 Top Dasar1 Top1 Dasar2 Top2 Dasar1 selalu = div(n,2) +1 Dasar2 selalu = div(n,2) Contoh fungsi div : div(15,3) -- hasilnya 5 div(16,3) -- hasilnya 5 div(17,3) -- hasilnya 5 11

56 a. Beberapa kondisi Stack 1. Kondisi Awal n = S[ ] Top2 Dasar2 Ciri : Dasar1 = div(n,2) + 1 Top1 = div(n,2) + 1 Dasar2 = div(n,2) Top2 = div(n,2) Stack1 masih bisa di isi Top1>1 Stack2 masih bis diisi Top2 < n Dasar1 Top1 2. Stack ada isinya n = 13 S[ ] a a a a b b b b Top1 Dasar2 Dasar 1 Top2 Cirinya Stack1 masih bisa di isi Top1>1 Stack2 masih bis diisi Top2 < n 12

57 3. Stack penuh n = 13 S[ ] a a a a a a b b b b b b b Top1 Dasar2 Dasar 1 Top2 Stack1 dan Stack2 penuh Cirinya Top1 = 1 Top2 = n KONDISI STACK 1 STACK1 KOSONG STACK2 KOSNG 2 STACK1 PENUH STACK 2 PENUH 3 STACK1 BISA DIISI STACK2 BISA DIISI 4 STACK1 ADA ISINYA STACK2 ADA ISINYA CIRI Top1= div(n,2) +1 Top2= div(n,2) Top1 = 1 Top2 = n Top1 > 1 Top2 < n Top1< div(n,2) + 1 Top2 > div(n,2) b. Proses - Awal (Inisialisasi) - Push1 - Pop1 - Push2 - Pop2 Buat Procedure dalam Bhs C++ - Awal (Inisialisasi) - Push1 - Pop1 - Push2 - Pop2 13

58 Praktikum Anda diminta untuk membuat suatu program animasi stack dengan 4 buah pilihan : push, pop, cetak stack, quit Jika dipilih push maka program akan meminta user untuk menginput sebuah character yang akan dimasukkan kesebuah wadah. Jika dipilih pop maka character teratas akan dikeluarkan dari wadah. Jika dipilih cetak stack maka komputer akan menampilkan character yang ada pada wadah. Jika dipilih quit maka program keluar. LAYOUT ANIMASI STACK 1. PUSH 2. POP 3. CETAK STACK 4. QUIT PILIH 1 4 : 1 Masukkan sebuah huruf : B M E R C U 14

59 Daftar Pustaka 1. Pengantar Struktur Data dan Algoritma, Bambang Wahyudi, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, Paulus Bambangwirawan Dipl.Inf, Penerbit Andi Yogyakarta, Edisi 1, Pengantar Algoritma dengan Bahasa C, Thompson Susabda Ngoen, Penerbit Salemba Teknika, Edisi 1, Pemrograman C++, Abdul Kadir, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, C++, Moh. Sjukani, Mitra Wacana Media, Edisi 4 15

60 MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Pertemuan 5 QUEUE (ANTRIAN) Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Teknik Informatika Abstract Membahas tentang konsep dari queue (antrian) dan penerapannya Kompetensi Mampu memahami konsep dasar dari queue (antrian) dan penerapannya

61 QUEUE (ANTRIAN) Bentuk Antrian Ada 3 Bentuk Queue yang akan dibahas : 1. Linier Queue 2. Circuler Queue 3. Double Ended Queue Mengunakan array satu dimensi Antrian Lurus (Linier Queue) Prinsip : FIFO ( FIRST IN FIRST OUT ) FCFS ( FIRST COME FIRST SERVE ) Yang lebih awal masuk akan dilayani terlebih dahulu ILUSTRASI misal n = 10 n Q[ ] X X X F R Menggunakan Pointer F dan R F ( Front ) untuk awal antrian R ( Rear ) untuk akhir antrian Untuk pengambilan data (keluar data) menggunakan Pointer F Untuk pemasukan data menggunakan pointer R Syarat F <= R 2

62 Dari ilustrasi diatas : R = 5, artinya pernah masuk 5 pengantri yang menempati 5 elemen dengan urutan masuk mulai Q[1], Q[2],.. Jadi yang terkahir masuk sekarang berada di Q[5] F = 2, artinya sudah keluar(sudah dilayani) sebanyak 2 pengantri dengan urutan keluar atau dilayani mulai dari Q[1], Q[2] jadi yang terakhir keluar adalah yang berada di Q[2] a. Kondisi Antrian 1. Kondisi Awal (belum ada yang ngantri) misal n = n Q[ ] F = R = 0 Kondisi awal F = R antrian Kosong F R R< n antrian bisa di isi 2. Masuk 4 Pengantri/Belum ada yang keluar misal n = n X X X X Q[ ] F = 0 Belum ada yang keluar F < R antrian ada isinya F R R< n antrian bisa di isi 3 Misal Keluar/dilayani 3 pengantri dan belum ada yang masuk misal n = n Q[ ] X F = 3 Sudak keluar 3 F < R antrian ada isinya F R R< n antrian bisa di isi 3

63 4. Misal masuk lagi 2 Pengantri misal n = n X X X Q[ ] F R F<R antrian ada isinya R< n antrian bisa di isi 5. Misal sesudah itu keluar 3 (semua) pengantri misal n = n Q[ ] F = R antrian KOSONG R < n antrian bisa di isi F R 6. Misal masuk lagi 4 Pengantri misal n = n X X X X Q[ ] F < R antrian ADA ISINYA R = n antrian Penuh F R 7. Misal Keluar/dilayani 4 (Semua ) Pengantri misal n = 10 Q[ ] n F = R antrian Kosong R = n antrian Penuh F R F = R = n Antrian kosong tidak ada isinya 4

64 Dapat juga disebut penuh karena tak bisa di isi Untuk keadaan ini perlu dilakukan RESET yaitu : Mengembalikan pointer keposisi awal F=0 dan R=0 8. Kondisi Penuh sesungguhnya misal n = n X X X X X X X X X X Q[ ] F R F = 0 Belum ada yang dilayani R = n antrian Penuh KONDISI ANTRIAN CIRI 1 KOSONG F = R dimana saja 2 PENUH R = n 3 BISA DI ISI R < n 4 ADA ISINYA F < n 5 PERLU DI RESET F = R = n b. Proses yang dapat dilakukan a. AWAL (Inisialisasi) b. INSERT ( Sisip, Masuk, Simpan, ngantri) c. DELETE (Hapus, Keluar, Ambil, dilayani) d. RESET ( Kembali Keadaan Awal) Untuk Proses INSERT menggunakan Pointer R ( Rear ) Untuk Proses DELETE menggunakan Pointer F ( Front ) 5

65 ALGORITMA DASAR PROSES AWAL (INISIALISASI) Dimana Pointer F dan R bernilai 0 void AWAL(void) F = 0; R = 0; ALGORITMA DASAR PROSES INSERT (MASUK) - Pointer R maju 1 langkah - Kemudian Isikan data kedalam elemen yang ditunjuk oleh R void INSERT(void) R = R +1 ; Q[R]=X; ALGORITMA DASAR PROSES DELETE (HAPUS) - Pointer F maju 1 langkah - Kemudian Copy data dari Elemen yang ditunjuk oleh F ke suatu Variabel. void DELETE(void) F = F + 1 ; X =Q[F]; A. BUAT PROC. LENGKAP UNTUK PROC. INSERT DAN DELETE B. BUAT PROC. INSERT DAN DELETE YANG MENGGUNAKAN PROC. RESET. 6

66 CIRCULAR QUEUE ( Antrian Melingkar ) ILUSTRASI n Q[ ] X X X X F R F = Front (Depan) R = Rear (Belakang) Arah antrian tetap sama dengan antrian biasa, hanya saja setelah sampai ke elemen ke-n akan kembali ke elemen 1 tanpa harus di RESET. Karena melingkar maka F dan R dapat saling menyusul : F TIDAK SELALU <= R a. Proses yang dapat dilakukan : a. AWAL (Inisialisasi) b. INSERT (Masuk, Simpan, Tulis) c. DELETE (Hapus, Keluar, ambil, Baca) b. Beberapa Kondisi Antrian 1. Keadaan AWAL Q[ ] n F R Flag = 0 7

67 KONDISI ARTINYA 1 F = R dan Flag = 0 Kosong, Bisa di isi 2 Atau cukup Flag = 0 Kosong Bisa di isi Flag artinya tidak ada data Flag artinya ada datanya 2. Masuk 1 Pengantri Q[ ] X n Flag = 1 R F KONDISI ARTINYA 1 F!= R Ada isinya 2 Flag = 1 Ada isinya 3 F!= R Bisa di isi Catatan :!= (Tidak sama dengan) 3. Masuk Lagi 3 Pengantri Q[ ] n X X X X R F Flag = 1 KONDISI ARTINYA 1 F!= R Ada isinya 2 Flag = 1 Ada isinya 3 F!= R Bisa di isi 8

68 4. Keluar 1 Pengantri Q[ ] n X X X Flag = 1 F R KONDISI ARTINYA 1 F!= R Ada isinya 2 Flag = 1 Ada isinya 3 F!= R Bisa di isi 5. Keluar 3 ( Semua ) Pengantri Q[ ] n Flag = 0 F R KONDISI ARTINYA 1 F = R and Flag = 0 Kosong 2 Flag = 0 Kosong 3 Flag = 0 Bisa di isi Jika yang didelete elemen yang ditunjuk oleh R maka Flag langsung dibuat = 0; 6. Kemudian masuk 8 Pengantri Q[ ] n X X X X X X X X Flag = 1 R F Terlihat R berada disebeleh kiri F 9

69 KONDISI ARTINYA 1 F!= R Ada isinya 2 Flag = 1 Ada isinya 3 F!= R Bisa di isi 7. Masuk Lagi 2 Pengantri Q[ ] n X X X X X X X X X X Flag = 1 R F KONDISI ARTINYA 1 F = R DAN Flag = 1 Penuh, Ada isinya 2 Flag = 1 Ada isinya KONDISI ANTRIAN CIRI 1 KOSONG F = R dan Flag = 0 Atau cukup dengan Flag = 0 2 PENUH F = R dan Flag = 1 3 BISA DI ISI F!= R atau Flag = 0 4 ADA ISINYA F!=R atau Flag = 1 Atau cukup Flag = 1 ALGORITMA PROSES AWAL Pointer F dan R berada di n dan Flag=0 (tak ada isinya) void AWAL(void) F = n; R = n; Flag = 0; Untuk Proses INSERT menggunakan Pointer R ( Rear ) Untuk Proses DELETE menggunakan Pointer F ( Front ) 10

70 Algoritma Dasar Proses Insert - R maju 1 Langkah - Kemudian Isikan data kedalam elemen yang ditunjuk oleh R - Isi Flag dengan 1 void INSERT(void) R = fmod(r,n) + 1; Q[R] = X; Flag =1 R = fmod(r,n) + 1, maksudnya : R maju satu langkah, dengan ketentuan jika R berada pada posisi di n maka setelah maju satu langkah akan menjadi R = 1 Fungsi fmod( ) dalam bhs C. adalah untuk mencari nilai sisa dari pembagian. Contoh : fmod(10,3) hasilnya 1 fmod(3,10) hasilnya 3 fmod(10,10) ---- hasilnya 0 fmod(2,10) hasilnya 2 Algoritma Dasar Proses Delete - F maju 1 Langkah - Kemudian Copy data dari Elemen yang ditunjuk oleh F ke suatu Variabel. - Isi Flag dengan 0 void DELETE(void) F = fmod(f,n) + 1; X = Q[F]; If F=R Flag =0; BUAT PROC. LENGKAP UNTUK PROC. INSERT DAN DELETE 11

71 DOUBLE ENDED QUEUE ( DEQUE ) Antrian dengan ujung ganda ILUSTRASI n Insert Kiri insert Kanan D[ ] Delete Kiri Delete Kanan L R - Pengantri dapat masuk dari pintu kanan atau kiri - Yang masuk dari pintu kiri, dapat keluar dari pintu kiri atau keluar dari pintu kanan tergantung kesempatan yang ada. - Yang masuk dari pintu kanan dapat keluar dari pintu kanan atau keluar dari pintu kiri tergantung dari kesempatan yang ada. Pointer yang digunakan: L = LEFT (Kiri) digunakan untuk insert dan delete kiri R = Right(kanan) digunakan untuk insert dan delete kanan PROSES YANG DAPAT DILAKUKAN - Insert Kiri : Masuk dari pintu kiri - Insert Kanan : Masuk dari pintu kanan - Delete kiri : Keluar dari pintu kiri - Delete kanan : Keluar dari pintu kanan Syarat : L tidak boleh mendahului R L <= R Prinsip : Bukan FIFO bukan juga LIFO, tetapi keluar dan masuk dari kedua ujungnya sesuai dengan kesempatan yang ada. 12

72 a. Beberapa Kondisi Antrian 1. Keadaan AWAL (Inisial) D[ ] n L R Insert Kanan L=R=0 Pada Kondisi ini hanya bisa insert kanan 2. Insert Kanan Sebanyak 3 elemen n D[ ] X X X L Delete kiri R Insert Kanan delete kanan Pada Kondisi ini : L = 0 (dianggap penuh kiri) R = 3, - tidak bisa insert kiri, - hanya bisa Delete kiri, insert kanan dan delete kanan 3. Delete Kiri 2 elemen n D[ ] X L R Insert Kiri Insert kanan 13

73 Pada Kondisi ini : L = 2 R = 3 : - Bisa insert kiri dan insert kanan - Bisa delete kiri dan delete kanan 4. Insert Kanan sebanyak n n D[ ] X X X X X X X X L R Pada Kondisi ini : L = 2 R = n (Penuh Kanan) - tak bisa insert kanan 5. Insert Kiri sebanyak 2 elemen n D[ ] X X X X X X X X X X L R Pada Kondisi ini : L = 0 (Penuh kiri) R = n (Penuh Kanan) - tak bisa insert kiri dan kanan 6. Delete kanan sampai R = n D[ ] X X X X L R Pada Kondisi ini : 14

74 L = 0 (Penuh kiri) R = 4 (Penuh Kanan) - tak bisa insert kiri 7. Delete kiri 4 Elemen D[ ] n L R Pada Kondisi ini : L = 4, R = 4 Pada posisi mana saja jika L = R maka antrian Kosong KONDISI ANTRIAN 1 AWAL L = R = 0 CIRI 2 KOSONG L = R dimana saja 3 PENUH KIRI PENUH KANAN L = 0 R = n PENUH SEBENARNYA L = 0 dan R = n 4 ADA ISINYA L <> R atau L < R ALGORITMA PROSES AWAL (INISILISASI) Pointer L dan R berada di 0 void AWAL(void) L = 0; R = 0; ALGORITMA DASAR PROSES INSERT KANAN(MASUK KANAN) - Pointer R maju 1 langkah - Kemudian Isikan data kedalam elemen yang ditunjuk oleh R 15

75 void INSERT_KANAN(void) R = R +1 ; D[R]=X; ALGORITMA DASAR PROSES DELETE KANAN(HAPUS KANAN) - Copy data dari Elemen yang ditunjuk oleh R ke suatu Variabel. - Mundur R sebanyak 1 void DELETE_KANAN(void) X = D[R]; R = R - 1 ; 1. Buat algoritma dasar Insert kiri dan delete kiri 2. Buat Proc. Lengkap Insert Kiri, Delete Kiri, Insert Kanan, Delete Kanan 16

76 Praktikum Soal 1 Anda diminta untuk membuat suatu program animasi ANTRIAN LURUS dengan 4 buah pilihan : MASUK, KELUAR, LIHAT ANTRIAN, QUIT. Jika dipilih MASUK maka program akan meminta user untuk menginput sebuah character yang akan dimasukkan kesebuah wadah. Jika dipilih KELUAR maka character pertama masuk akan dikeluarkan dari wadah. Jika dipilih LIHAT ANTRIAN maka komputer akan menampilkan character antrian yang ada pada wadah. Jika dipilih QUIT maka program keluar. LAYOUT ANIMASI ANTRIAN 1. MASUK 2. KELUAR 3. LIHAT ANTRIAN 4. QUIT PILIH 1 4 : 1 Masukkan sebuah huruf : M M E R C U 17

77 Soal 2 Anda diminta untuk membuat suatu program animasi ANTRIAN CIRCULAR dengan 4 buah pilihan : MASUK, KELUAR, LIHAT ANTRIAN, QUIT. Jika dipilih MASUK maka program akan meminta user untuk menginput sebuah character yang akan dimasukkan. Jika dipilih KELUAR maka character yang ditunjuk oleh pointer F akan dikeluarkan. Jika dipilih LIHAT ANTRIAN maka komputer akan menampilkan character antrian yang ada. Jika dipilih QUIT maka program keluar. LAYOUT ANIMASI ANTRIAN CIRCULAR 1. MASUK 2. KELUAR 3. LIHAT ANTRIAN 4. QUIT PILIH 1 4 : 1 Masukkan sebuah huruf : I M E R C U Daftar Pustaka 1. Pengantar Struktur Data dan Algoritma, Bambang Wahyudi, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, Paulus Bambangwirawan Dipl.Inf, Penerbit Andi Yogyakarta, Edisi 1, Pengantar Algoritma dengan Bahasa C, Thompson Susabda Ngoen, Penerbit Salemba Teknika, Edisi 1, Pemrograman C++, Abdul Kadir, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, C++, Moh. Sjukani, Mitra Wacana Media, Edisi 4 18

78 MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Pertemuan 6 SORTING (PENGURUTAN) Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Teknik Informatika Abstract Membahas tentang konsep dari sorting (pengurutan) dan penerapannya Kompetensi Mampu memahami konsep dasar dari sorting (pengurutan) dan penerapannya

79 SORT Pengertian Sort Pengurutan data dalam struktur data sangat penting terutama untuk data yang beripe data numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun) Pengurutan (Sorting) adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga tersusun secara teratur menurut aturan tertentu Contoh: Data Acak : Ascending : Descending : Para pengguna Komputer memang sudah banyak dimanjakan oleh fasilitas yang diberikan oleh bahasa pemrograman atau software application yang digunakan, terutama bahasa pemrograman yang telah dirancang untuk kebutuhan tertentu(paket program). Di bahasa pemrograman dbase,foxpro untuk melakukan pengurutan data tinggal menulis perintah SORT atau INDEX saja, maka urusan pengurutan data sudah selesai. Kita tidak tahu bagaimana komputer bekerja(menggunakan teknik bagaimana) sortir terhadap data yang dilakukannya. Namun untuk bahasa pemrograman yang sifatnya generik, untuk mensortir data, kita perlu membuat programnya sendiri dan sudah barang tentu harus memikirkan teknik seperti apa untuk melakukan sortir tersebut. Pada garis besarnya ada tiga teknik sortir yaitu : a. Insertion Sort (Sort penyisipan) b. Selection Sort (Sortir pemilihan) c. Exchange Sort (Sortir Penukaran) Deklarasi Array Deklarasikan secara global: int data[100]; int n; //untuk jumlah data 2

80 Prosedur Tukar 2 Buah Data: void tukar(int a,int b) int tmp; tmp = data[a]; data[a] = data[b]; data[b] = tmp; a. Insertion Sort Teknik ini adalah membandingkan elemen ke-n (n dimulai dari 2 hingga elemen terkahir) dengan elemen-elemen sebelumnya. Bila elemen elemen yang dibandingkan bernilai lebih kecil, maka tukar posisinya. Contoh pengurutan Ascending i Data[ ] Langkah pengurutan 1. Data ke 2 dibandingkan dengan data ke 1 i=1 Data[2] = Data ke 3 dibandingkan dengan data ke 2 dan ke 1 i=2 Data[3]= Data ke 4 dbandingkan dengan data ke 3,ke 2 dan ke 1 i=3 Data[4]= Hasil akhir

81 b. Selection Sort Teknik ini adalah mencari nilai elemen terkecil kemudian letakkan dan tukar dengan posisi ke-n Merupakan kombinasi antara sorting dan searching Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses. Algoritma : 1. Repeat Langkah 1. s/d 3. sebanyak n-1 2. Cari Index dari harga terkecil/terbesar 3. Tukarkan nilai index pertama dengan index terkecil/terbesar yang ada dalam elemen loop 4

82 J Keterangan Kotak Terjadi perpindahan data 5

83 c. Exchange Sort (Buble Sort) Metode sorting termudah Diberi nama Bubble karena proses pengurutan secara berangsur angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar, jika pengurutan ascending. Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar, jika pengurutan descending Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya. Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya. Kapan berhentinya? Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan. Algoritma : 1. Repeat Langkah 2. s/d 4 sebanyak n-1 kali 2. Repeat Langkah 3. untuk elemen yang belum sort 3. Jika Current Elemen > Next Elemen, tukar 4. Jika tidak ada pertukaran, Return J kj

84 Exc=6 Exc=4 Exc=2 Exc=1 Exc=1 Exc=0 Kondisi terjelek adalah - Jika data terkahir adalah yang terkecil untuk sort ascending, Jika data terakhir adalah yang terbesar untuk sort descending 7

85 SOAL 1. Buatlah pengurutan menggunakan metode Bubble Sort Secara Ascending dari data dibawah ini : Buatlah pengurutan menggunakan metode Selection Sort Secara Descending dari data dibawah ini : Buatlah pengurutan menggunakan metode Insertion Sort Secara Descending dari data dibawah ini : Daftar Pustaka 1. Pengantar Struktur Data dan Algoritma, Bambang Wahyudi, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, Paulus Bambangwirawan Dipl.Inf, Penerbit Andi Yogyakarta, Edisi 1, Pengantar Algoritma dengan Bahasa C, Thompson Susabda Ngoen, Penerbit Salemba Teknika, Edisi 1, Pemrograman C++, Abdul Kadir, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, C++, Moh. Sjukani, Mitra Wacana Media, Edisi 4 8

86 MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Pertemuan 7 PENERAPAN APLIKASI LINKED LIST, STACK DAN QUEUE Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Teknik Informatika Abstract Membahas tentang penerapan aplikasi linked list, stack dan queue Kompetensi Mampu memahami penerapan aplikasi linked list, stack dan queue

87 Aplikasi Linked List untuk Stack & Queue STACK I Stack dengan menggunakan Simpul Head Simpul Head tidak berisi data merupakan HEAD sebagai dummy TOP DASAR INFO LINK INFO LINK INFO LINK INFO LINK INFO LINK Push (4) (3) (2) (1) Pop (1) (2) (3) (4) Fungsi untuk membuat simpul HEAD Void HEAD(void) P=(struct SIMPUL*) malloc(sizeof(struct SIMPUL*)); P->INFO=0; DASAR = P; TOP=P; TOP->LINK=NULL; INFO diisi nilai dummy misal=0 Soal : Buat Fungsi PUSH dan POP 2

88 Contoh Program STACK I #include<iostream.h> #include<conio.h> void PUSH(void); void POP(void); void CETAKLAYAR(void); int PIL,TOP,DASAR; char WADAH[7]; void main( ) TOP=0; DASAR=0; do clrscr(); cout<<" MENU UTAMA"<<endl; cout<<"=============="<<endl; cout<<"1. PUSH"<<endl; cout<<"2. POP"<<endl; cout<<"3. CETAK STACK"<<endl; cout<<"4. QUIT"<<endl<<endl; cout<<"pilihan : "; cin>>pil; switch (PIL) case 1 : PUSH( ); break; case 2: POP( ); break; case 3: CETAKLAYAR(); 3

89 while (PIL<4); break; default: cout<<"terima KASIH"; break; getch(); void PUSH(void) char HURUF; clrscr(); cout<<endl<<"masukkan 1 HURUF : "; cin>>huruf; TOP=TOP+1; WADAH[TOP]=HURUF; void CETAKLAYAR(void) int i; clrscr(); i=7; for (i=7; i>0; i--) cout<<i<<" "<<WADAH[i]<<endl; Program diatas belum sempurna sebagian jawaban dari pertanyaan yang diatas. Ditanya : 1. Lengapilah Procedure untuk PUSH 2. Buat Procedure lengakap untuk POP 4

90 STACK II Stack tanpa Simpul Head TOP INFO LINK INFO LINK INFO LINK INFO LINK Push (4) (3) (2) (1) Pop (1) (2) (3) (4) Bila Isi Stack tinggal 1 kemudian di delete (POP) maka TOP dibuat = NULL Soal : Buat Fungsi PUSH dan POP Contoh Program STACK II #include <iostream.h> #include <stdlib.h>// untuk penggunaan system("cls"); #include <conio.h>// untuk getch(); int n=10,dasar1=0,dasar2=n+1,top1=0,top2=n+1,pil,j; char wadah[10]; char huruf; void push1(void) system("cls"); if(top2-top1>1) // if(top2-top1>1) cout<<"input 1 huruf : "; cin>>huruf; top1=top1+1; wadah[top1]=huruf; else cout<<endl<<"==============="<<endl; 5

91 cout<<"stack PENUH!!!"<<endl; cout<<"kurangi STACK!!"<<endl; cout<<"==============="<<endl; void pop1(void) system("cls"); if(top1>0) huruf=wadah[top1]; cout<<"huruf yang di hapus : "<<huruf<<endl; top1=top1-1; else cout<<endl<<"==============="<<endl; cout<<"stack KOSONG!!!"<<endl; cout<<"tambah STACK!!"<<endl; cout<<"==============="<<endl; void push2(void) system("cls"); if(top2-top1>1) cout<<"input 1 huruf : "; cin>>huruf; top2=top2-1; wadah[top2]=huruf; else cout<<endl<<"==============="<<endl; cout<<"stack PENUH!!!"<<endl; cout<<"kurangi STACK!!"<<endl; 6

92 cout<<"==============="<<endl; void pop2(void) system("cls"); if(top2<n+1) huruf=wadah[top2]; cout<<"huruf yang di hapus : "<<huruf<<endl; top2=top2+1; else cout<<endl<<"==============="<<endl; cout<<"stack KOSONG!!!"<<endl; cout<<"tambah STACK!!"<<endl; cout<<"==============="<<endl; void c_stack(void)// menampilkan array terakhir yang pernah terisi, jadi walaupun sudah dikurangi akan tetap menampilkan huruf yang pernah mengisinya system("cls"); int i; cout<<"huruf yang mengisi : "; for(j=0;j<11;j++) cout<<wadah[j]<<" "; cout<<endl<<endl; for(i=0+1;i<11;i++) cout<<i<<". "<<wadah[i]<<endl; void main()// program 7

93 x:// ke menu utama for( ;pil<1000; ) system("cls"); cout<<endl<<"menu UTAMA"<<endl; cout<<"=========="<<endl; cout<<"1.push1"<<endl; cout<<"2.pop1"<<endl; cout<<"3.push2"<<endl; cout<<"4.pop2"<<endl; cout<<"5.cetak STACK"<<endl; cout<<"6.quit"<<endl; cout<<"pilihan (1-6) : "; cin>>pil; switch(pil) case 1: push1(); // memanggil fungsi push break; case 2: pop1(); // memanggil fungsi pop break; case 3: push2(); break; case 4: // mengakhiri program pop2(); break; case 5: c_stack(); // memanggil fungsi c_stack break; case 6: cout<<endl<<"terima KASIH"<<endl; goto y; break; 8

94 default: cout<<endl<<"anda SALAH INPUT"<<endl; getch(); goto x;// kembali ke menu utama bila salah break; getch();// untuk mempertahankan output sebelum menekan sebarang tombol(menunggu input sebarang output) y:// untuk mengakhiri program Contoh Program STACK III #include <iostream.h> #include <stdlib.h>// system("cls"); #include <conio.h>// getch(); char wadah[11]; int p,i,j,n=10,d1=(n/2)+1,d2=n/2,t1=(n/2)+1,t2=n/2; char huruf; /*struct awal int d1; int d2; int t1; int t2; ;*/ void push1(void); void pop1(void); void push2(void); void pop2(void); void cetak(void); void main() 9

95 x: for( ;i<1000; ) system("cls"); cout<<"=============================="<<endl; cout<<"= MENU UTAMA ANIMASI STACK 3 ="<<endl; cout<<"=============================="<<endl; cout<<"= Pilihan : 1.Push1 "<<endl; cout<<"= 2.Pop1 "<<endl; cout<<"= 3.Push2 "<<endl; cout<<"= 4.Pop2 "<<endl; cout<<"= 5.Cetak Stack "<<endl; cout<<"= 6.Quit "<<endl; cout<<"=============================="<<endl; cout<<"pilihan anda : "; cin>>p; switch(p) case 1: push1(); break; case 2: pop1(); break; case 3: push2(); break; case 4: pop2(); break; case 5: cetak(); break; case 6: cout<<"terima KASIH"<<endl; 10

96 goto y; default: cout<<"anda SALAH INPUT!!"<<endl; cout<<"ulangi Masukan angka (1-6)"<<endl; getch(); goto x; getch(); y: void push1(void) system("cls"); if(t1>1)// nb: deklarasikan lebih dulu nilai t1,t2,d1,d2 cout<<"masukan 1 huruf : "; cin>>huruf; t1=t1-1; wadah[t1]=huruf; else cout<<"stack Penuh"<<endl; cout<<"kurangi stack"<<endl; void pop1(void) system("cls"); if(t1<d1) huruf=wadah[t1]; cout<<"huruf yang di hapus : "<<huruf<<endl; t1=t1+1; 11

97 else cout<<"stack Kosong"<<endl; cout<<"tambah Stack"<<endl; void push2(void) system("cls"); if(t2<n) cout<<"masukan 1 huruf : "; cin>>huruf; t2=t2+1; wadah[t2]=huruf; else cout<<"stack Penuh"<<endl; cout<<"kurangi Stack"<<endl; void pop2(void) system("cls"); if(t2>d2) huruf=wadah[t2]; cout<<"huruf yang di hapus : "<<huruf<<endl; t2=t2-1; else cout<<"stack Kosong"<<endl; cout<<"tambah Stack"<<endl; 12

98 void cetak(void) cout<<"huruf yang mengisi : "; for(i=1;i<11;i++) cout<<wadah[i]<<" "; cout<<endl<<endl; for(j=1;j<11;j++) cout<<j<<"."<<wadah[j]<<endl; QUEUE Ilustrasi untuk QUEUE FRONT REAR INFO LINK INFO LINK INFO LINK INFO LINK INSERT (1) (2) (3) (4) DELETE (1) (2) (3) (4) Soal : Buat Fungsi INSERT dan DELETE 13

99 Contoh Program QUEUE #include <iostream.h> #include <stdlib.h> #include <conio.h> int r=0,f=0,pil,n=10,i,j; char wadah[11];// ada 11 elemen 0-10 dan yang mengisi antrian 10 elemen 1-10 char huruf; void masuk(void); void keluar(void); void cetak(void); void main() x: for( ;pil<1000; ) system("cls"); cout<<"======================"<<endl; cout<<"= MENU UTAMA ="<<endl; cout<<"======================"<<endl; cout<<"= Pilihan : 1.Input ="<<endl; cout<<"= 2.Hapus ="<<endl; cout<<"= 3.Cetak ="<<endl; cout<<"= 4.Quit ="<<endl; cout<<"======================"<<endl; cout<<"pilihan Anda : "; cin>>pil; switch(pil) case 1: masuk(); break; case 2: keluar(); break; case 3: 14

100 cetak(); break; case 4: cout<<"terima Kasih"<<endl; goto y; break; default: cout<<"anda SALAH input"<<endl; cout<<"masukan nilai 1-6"<<endl; goto x; getch(); y: void masuk(void) system("cls"); if(r<n) cout<<"masukan 1 huruf : "; cin>>huruf; r=r+1; wadah[r]=huruf; else cout<<"antrian Penuh"<<endl; /*if((r=n)&&(f=n)) enga boleh disini alasan enga tau f=0; r=0; */ 15

101 void keluar(void) system("cls"); if(f<r) f=f+1; huruf=wadah[f]; wadah[f]=null; cout<<"huruf yang keluar antrian : "<<huruf<<endl; else cout<<"antrian Kosong"<<endl<<endl; cout<<"antrian di reset"<<endl; if((r=n)&&(f=n))// reset f=0; r=0; void cetak(void) system("cls"); cout<<"huruf yang mengisi antrian : "; for(i=1;i<n+1;i++) cout<<wadah[i]<<" "; cout<<endl; for(j=0;j<n+1;j++) cout<<j<<"."<<wadah[j]<<endl; 16

102 Contoh Program Double Linked List #include <iostream.h> #include <conio.h> #include <stdlib.h> struct simpul char info; struct simpul *r,*l; ; struct simpul *first,*last,*p,*q,*t; int pil; char x,n,i,m; void awal(); void in_kanan(); void in_kiri(); void in_tengah(); void de_kanan(); void de_kiri(); void de_tengah(); void tampil(); void main() system("cls"); do system("cls"); cout<<" "<<endl; cout<<"double LINK LIST"<<endl; cout<<" "<<endl; cout<<"1.buat simpul awal"<<endl; cout<<"2.insert kanan"<<endl; cout<<"3.insert kiri"<<endl; cout<<"4.insert tengah"<<endl; cout<<"5.delete kanan"<<endl; cout<<"6.delete kiri"<<endl; cout<<"7.delete tengah"<<endl; 17

103 cout<<"8.tampilkan link"<<endl; cout<<"9.exit"<<endl; cout<<" "<<endl; cout<<"pilihan (1-9) : "; cin>>pil; switch(pil) case 1: awal(); break; case 2: in_kanan(); break; case 3: in_kiri(); break; case 4: in_tengah(); break; case 5: de_kanan(); break; case 6: de_kiri(); break; case 7: de_tengah(); break; case 8: tampil(); break; case 9: cout<<"thank You"<<endl; getch(); break; 18

104 while(pil<9); void awal() system("cls"); if((first==null)&&(last==null))// pada posisi awal *first & *last =NULL karena data belum pernah di buat (p=(struc simpul*)malloc(sizeof(struct simpul)); // baru di deklarasi sebagai struct simpul p=(struct simpul*)malloc(sizeof(struct simpul)); cout<<"masukan 1 huruf simpul awal : "; cin>>x; p->info=x; p->r=null; p->l=null; first=p; last=p; cout<<"isi simpul first : "<<first->info<<endl; cout<<"isi simpul last : "<<last->info<<endl; else cout<<"simpul awal telah ada"<<endl; getch(); void in_kanan() system("cls"); cout<<"masukan 1 huruf : "; cin>>x; p=(struct simpul*)malloc(sizeof(struct simpul)); p->info=x; last->r=p; p->l=last; last=p; last->r=null; 19

105 getch(); void in_kiri() system("cls"); cout<<"masukan 1 huruf : "; cin>>x; p=(struct simpul*)malloc(sizeof(struct simpul)); p->info=x; first->l=p; p->r=first; first=p; first->l=null; getch(); void in_tengah() system("cls"); if((first==null)&&(last==null)) cout<<"simpul awal belum ada!!!"<<endl; cout<<"masukan 2 simpul untuk insert tengah"<<endl; else if(first==last) cout<<"belum bisa insert tengah"<<endl; cout<<"baru ada satu simpul"<<endl; cout<<"harus ada 2 simpul untuk insert tengah"<<endl; else system("cls"); cout<<"masukan 1 huruf : "; cin>>x; p=(struct simpul*)malloc(sizeof(struct simpul)); p->info=x; first->r->l=null;// l->first di putus tapi tetap nyambung pada first->r 20

106 first->r->l=p; p->r=first->r;// line p->r=first->r posisi di samakan first->r=null;// line menuju * setelah first di putus p->l;first;// p di sambung ke first first->r=p;// first di sambung ke p getch(); void de_kanan() system("cls"); if((last==null)&&(first==null)) cout<<"simpul kosong"<<endl<<endl; else if(first==last) x=first->info; last=null; first=null; cout<<"huruf yang di hapus : "<<x<<endl; else last=last->l; x=last->r->info; cout<<"huruf yang di hapus : "<<x<<endl; free(last->r); last->r=null; getch(); void de_kiri() system("cls"); if((first==null)&&(last==null)) 21

107 cout<<"simpul kosong"<<endl<<endl; else if(first==last) x=first->info; first=null; last=null; cout<<"huruf yang di hapus"<<endl; else first=first->r; x=first->l->info; cout<<"huruf yang terbuang : "<<x<<endl; free(first->l); first->l=null; getch(); void de_tengah() system("cls"); if((first==null)&&(last==null)) cout<<"simpul kosong!!!"<<endl; else if(first==last) cout<<"hanya ada satu simpul"<<endl; cout<<"tidak bisa delete tengah"<<endl; cout<<"harus ada tiga simpul"<<endl; else if((first->r==last)&&(last->l==first)) cout<<"hanya ada dua simpul"<<endl; cout<<"tidak bisa delete tengah"<<endl; cout<<"harus ada tiga simpul"<<endl; 22

108 else q=first->r->r; x=first->r->info; first->r=null; first->r=q; q->l=first; cout<<"huruf yang di hapus : "<<x<<endl; getch(); void tampil() system("cls"); cout<<"isi data dalam link"<<endl; p=first; while(p!=null) x=p->info; cout<<" "<<x; p=p->r; cout<<endl; getch(); 23

109 Daftar Pustaka 1. Pengantar Struktur Data dan Algoritma, Bambang Wahyudi, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, Paulus Bambangwirawan Dipl.Inf, Penerbit Andi Yogyakarta, Edisi 1, Pengantar Algoritma dengan Bahasa C, Thompson Susabda Ngoen, Penerbit Salemba Teknika, Edisi 1, Pemrograman C++, Abdul Kadir, Penerbit Andi Yogyakarta, Edisi 1, Struktur Data dengan C, C++, Moh. Sjukani, Mitra Wacana Media, Edisi 4 24

110 MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Pertemuan 8 SORTING LANJUT Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Teknik Informatika Abstract Membahas tentang penerapan aplikasi sorting merge sort, heap sort dan radix sort Kompetensi Mampu memahami penerapan aplikasi sorting merge sort, heap sort dan radix sort

111 Sorting Lanjutan Teknik Sorting Iainnya 1. Merge Sort Sort ini digunakan untuk jumlah data yang besar, dengan membagi-bagi menjadi sub bagian-sub bagian mulai dari sedikit elemen hingga keseluruhan elemen tersebut menjadi data yang sudah urut. Sortir ini digunakan jika kapasitas memori tidak sanggup untuk menampung seluruh data yang akan disortir. Contoh 14 elemen berikut akan disortir: 66, 33, 40, 22, 55, 88, 60, 11, 80, 20, 50, 44, 77, 30. Langkah 1 : data dibagi menjadi sub-sub yang tiap subnya berisi 2 elemen yang kemudian disortir hasilnya : 33, 66 22, 40 55, 88 11, 60 20, 80 44, 50 30, 70 Langkah 2 : gabungkan 2 sub bagian sebelumnya menjadi 1 sub bagian kemudian disortir hasilnya : 22, 33, 40, 66 11, 55, 60, 88 22, 44, 50, 80 30, 70 Langkah 3 : Lakukan seperti langkah 2 hingga seluruh sub bagian menjadi 1 subbagian. 11, 22, 33, 40, 55, 60, 66, 88 20, 30, 44, 50, 77, 80 Hasil Akhir : 11, 20, 22, 30, 33, 40, 44, 50, 55, 60, 66, 77, 80, 88 Contoh Program Merge Sort 1. #include <iostream.h> 2. #include <conio.h> 3. int a[50]; 4. void merge(int,int,int); 5. void merge_sort(int low,int high) int mid; 8. if(low<high) 9. 2

112 10. mid=(low+high)/2; 11. merge_sort(low,mid); 12. merge_sort(mid+1,high); 13. merge(low,mid,high); void merge(int low,int mid,int high) int h,i,j,b[50],k; 19. h=low; 20. i=low; 21. j=mid+1; 22. while((h<=mid)&&(j<=high)) if(a[h]<=a[j]) b[i]=a[h]; h++; else b[i]=a[j]; j++; 31. i++; if(h>mid) for(k=j;k<=high;k++) b[i]=a[k]; i++; else for(k=h;k<=mid;k++) b[i]=a[k]; i++; for(k=low;k<=high;k++) 48. a[k]=b[k]; void main() int num,i; cout<<"************************************************************* ****** *************"<<endl; 53. cout<<" MERGE SORT PROGRAM "<<endl; 54. cout<<"******************************************************************* **** *********"<<endl; 55. cout<<endl<<endl; 56. cout<<"masukkan Banyak Bilangan: ";cin>>num; 57. cout<<endl; 58. cout<<"sekarang masukkan "<< num <<" Bilangan yang ingin Diurutkan :"<<endl; 59. for(i=1;i<=num;i++) cout<<"bilangan ke "<<i<<" ";cin>>a[i] ; merge_sort(1,num); 64. cout<<endl; 65. cout<<"hasil akhir pengurutan :"<<endl; 66. cout<<endl; 67. for(i=1;i<=num;i++) 68. cout<<a[i]<<" "; 69. cout<<endl<<endl<<endl<<endl; 70. getch(); 71. 3

113 2. Heap Sort : Aplikasi dari Binary Tree Heap sort merupakan teknik sortir yang memanfaatkan bentuk pohon binary. Maxheap adalah penyortiran dari besar ke kecil (Desending). Minheap adalah penyortiran dari kecil ke besar (ascending). Untuk melakukan penyortian ini maka langkah pertama yang dilakukan adalah membentuk pohon heap. Pembentukan pohon heap dilakukan dengan langkah-langkah : 1. Ikuti bentuk complete binary tree ( pohon biner lengkap) 2. Ayah harus memiliki nilai lebih besar atau sama dengan anak-anaknya (untuk maxheap), ayah harus memiliki nilai lebih kecil atau sama dengan anakanaknya (unutk minheap) Pada contoh ini akan dibuat pohon maxheap dengan elemen-elemen : a. elemen 44 b. elemen 30 c. elemen d. elemen 22 e. elemen 60 f. elemen 55 4

114 g. elemen 77 h. elemen 55 Penulisan hasil sortir mengikuti langkah-langkah penghapusan elemen sebagai berikut : 1. Hapus akarnya (Root) 2. Letakkan elemen terakhir di posisi akarnya (root) 3. lakukan tindakan atas elemen tersebut seperti langkah-langkah pembuatan pohon heap. 4. Lakukan Langkah 1 hingga pohon menjadi kosong (empty tree) Perhatikan gambar dibawah ini bagaimana setelah elemen 77 (root) dihapus atau dijadikan elemen awal dari hasil sortir a. penghapusan elemen 77, maka elemen 22 jadi root 5

115 b. elemen 22 mengarah keanak kanan c. elemen 22 mengarah keanak kanan ( fase 1 ) 3 gambar diatas pembentukan pohon heap kembali setelah elemen 77 dihilangkan untuk fase 2 elemen 60 sebagai akar akan dijadikan hasil, sehingga elemen elemen hasil sortirnya menjadi 77, 66 dan seterusnya. Berikut gambar heap pada akhir fase 2 hingga fase 7 (akhir) a. pohon heap pada akhir fase 2 6

116 b. pohon heap pada akhir fase c. pohon heap pada akhir fase d. pohon heap pada akhir fase e. pohon heap pada akhir fase 6 7

117 22 f. pohon heap pada akhir fase 7 sehingga diperoleh urutan : Contoh Aplikasi Heap Sort #include <iostream.h> //mendeklarasikan header untuk fungsi I/O "cout & cin" #include <conio.h> //mendeklarasikan header untuk fungsi penahan layar "getch();" void main() //inti dari program int a[10] = 34, 15, 23, 9, 41, 26, 39, 11, 7, 28 ; //mendeklarasikan variabel a dengan jumlah data 10 cout<<"program Heap Sort..."<<endl; cout<<"mengurutkan Bilangan..."<<endl; cout<<"bilangan sebelum diurutkan : "<<endl<<endl; for(int h = 0; h <= 9; h++) //proses pengulangan untuk menampilkan data data di variabel a ke layar cout<<" "<<a[h]<<" "; cout<<" "<<endl<<endl; for(int i = 0; i <= 9; i++) //ini adalah bagian inti dari proses HEAP SORT. //inti dari program ini adalah membandingkan nilai pertama & kedua for(int j = 0; j <= i; j++) //kemudian mencari nilai mana yang paling besar. //kemudian ditempatkan di awal. dan seterusnya if(a[i]>a[j]) int t = a[i]; a[i] = a[j]; a[j] = t; 8

STRUKTUR DATA Pertemuan 1 s.d 8

STRUKTUR DATA Pertemuan 1 s.d 8 STRUKTUR DATA Pertemuan 1 s.d 8 Sasaran: Meningkatkan: pemahaman pengetahuan tentang teori dasar struktur data dan penanganan data serta pembuatan algoritma dan penggunaan strukturd dalam pemrograman Materi

Lebih terperinci

STRUKTUR DATA Pertemuan 1 s.d 8

STRUKTUR DATA Pertemuan 1 s.d 8 STRUKTUR DATA Pertemuan 1 s.d 8 Sasaran: Meningkatkan: pemahaman pengetahuan tentang teori dasar struktur data dan penanganan data serta pembuatan algoritma dan penggunaan strukturd dalam pemrograman Materi

Lebih terperinci

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen Pokok Bahasan Pengantar Struktur Data Pengertian Struktur Data Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai secara efisien Sedangkan data adalah representasi

Lebih terperinci

Tipe Data dan Operator

Tipe Data dan Operator Tipe Data dan Operator Dasar Algoritma dan Pemrogrman Eka Maulana, ST, MT, MEng. Klasifikasi Tipe Data 1 Tipe Data Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam

Lebih terperinci

Linked List 6.3 & 7.3 NESTED LOOP

Linked List 6.3 & 7.3 NESTED LOOP Linked List 6.3 & 7.3 NESTED LOOP 1 Linked List ( List yang di-link satu dengan lainnya ) 2 apa itu List? 3 Contoh sebuah LIST int A[5]; 0 1 2 3 4 Array satu dimensi Disebut juga : Vector Kadang-kadang

Lebih terperinci

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan. Struktur Data Struktur Data Setiap data memiliki tipe data, apakah merupakan angka bulat, angka pecahan, atau berupa karakter, dan sebagainya. Jadi, tipe data adalah pengelompokan data berdasarkan isi

Lebih terperinci

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pertemuan 1 STRUKTUR DATA Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pemakaian Struktur Data yang

Lebih terperinci

BAB 5 PERULANGAN DAN ARRAY

BAB 5 PERULANGAN DAN ARRAY Bab 5 Perulangan dan Array 66 BAB 5 PERULANGAN DAN ARRAY TUJUAN PRAKTIKUM 1. Praktikan mengerti apa yang dimaksud dengan perulangan 2. Praktikan mengerti apa yang dimaksud dengan seleksi kondisi 3. Praktikan

Lebih terperinci

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C 1. Pendahuluan Lingkungan Turbo C++ 4.5 Turbo C++ 4.5 adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C++ 4.5. 1 2 3 4 1 : Menu Utama

Lebih terperinci

(3) BAHAN KAJIAN (materi ajar)

(3) BAHAN KAJIAN (materi ajar) FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA UNIVERSITAS NASIONAL RENCANA PEMBELAJARAN Matakuliah : Konsep Struktur Data Semester : Genap Kode : 08010305 SKS : 2 Jurusan : Manajemen Informatika Dosen

Lebih terperinci

Pertemuan 2 ARRAY DIMENSI 1 & 2

Pertemuan 2 ARRAY DIMENSI 1 & 2 Pertemuan 2 ARRAY DIMENSI 1 & 2 Array atau Larik merupakan Struktur Data Sederhana yang dapat didefinisikan sebagai pemesanan alokasi memory sementara pada komputer. Array dapat didefinisikan sebagai suatu

Lebih terperinci

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut 1. Pengenalan Bahasa C++ a. Elemen Bahasa C+ Bahasa C++ ditulis dari beberapa elemen, antara lain: Pernyataan Satu atau beberapa ekspresi

Lebih terperinci

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Langkah Mudah Belajar Struktur Data Menggunakan C/C++ Langkah Mudah Belajar Struktur Data Menggunakan C/C++ Sanksi Pelanggaran Pasal 113 Undang-Undang Nomor 28 Tahun 2014 tentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi

Lebih terperinci

Pertemuan 7. REVIEW dan QUIS

Pertemuan 7. REVIEW dan QUIS Pertemuan 7 REVIEW dan QUIS 1. Type data dibawah ini, yang tidak termasuk dalam tipe data sederhana tunggal, adalah : a. Boolean d. Integer b. String e. float c. Char 2. ==, =,!=, termasuk dalam operator

Lebih terperinci

ARRAY DIMENSI 1 & 2. Array dapat didefinisikan sebagai suatu himpunan hingga elemen yang terurut dan homogen.

ARRAY DIMENSI 1 & 2. Array dapat didefinisikan sebagai suatu himpunan hingga elemen yang terurut dan homogen. Pertemuan 2 ARRAY DIMENSI 1 & 2 Array atau Larik merupakan Struktur Data Sederhana yang dapat didefinisikan sebagai pemesanan alokasi memory sementara pada komputer. Array dapat didefinisikan sebagai suatu

Lebih terperinci

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( ) MAKALAH STRUKTUR DATA DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH (14.1.03.03.0024) FAKULTAS TEKNIK PROGRAM STUDI SISTEM INFORMASI UNIVERSITAS NUSANTARA PGRI KEDIRI

Lebih terperinci

Achmad Solichin.

Achmad Solichin. Pemrograman Bahasa C dengan Turbo C Sh-001@plasa.com Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),

Lebih terperinci

Lab. Teknik Informatika Struktur Data 1

Lab. Teknik Informatika Struktur Data 1 2. POINTER dan SINGLE LINK LIST TUJUAN PRAKTIKUM 1. Praktikan mengetahui tipe struktur data baru yaitu tipe data Pointer. 2. Praktikan menggunakan pointer didalam pembuatan program dan dapat menerapkannya

Lebih terperinci

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer PERTEMUAN VI POINTER 6.1 Tujuan Praktikum Praktikan mengenal type data Pointer, mengerti tentang konsep dasar dari pointer, dapat mendeklarasikan pointer di Pascal serta dapat menggunakannya di dalam sebuah

Lebih terperinci

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009 SOAL C++ 1. Penulisan Preprocessor yang benar di awali dengan tanda pound atau tanda : a. # c. @ b. & d. = 2. Contoh penulisan file header yang benar yaitu : a. &include c. =include

Lebih terperinci

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2 VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI Tujuan Pembelajaran 1. Siswa mampu memahami penulisan Tipe data, variabel dan konstanta dalam pascal 2. Siswa mampu menerapkan penggunaan Tipe data,

Lebih terperinci

Algoritma Dan Struktur Data II

Algoritma Dan Struktur Data II Algoritma Dan Struktur Data II Array dan Matriks Apa itu Struktur Data? PROGRAM ALGORITMA STRUKTUR DATA Algoritma.. deskripsi langkah-langkah penyelesaian masalah yang tersusun secara logis 1. ditulis

Lebih terperinci

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2 VARIABEL, TIPE DATA DAN EKSPRESI Bab 2 2.1 IDENTIFIER Indentifier adalah nama yang diberikan untuk nama objek, nama fungsi, nama variable, dll ( sifatnya case sensitive ). Identifier pada C++ terdiri dari

Lebih terperinci

Silabus Struktur Data. Bandung 2013

Silabus Struktur Data. Bandung 2013 Silabus Struktur Data Bandung 2013 Silabus u Menjelaskan Varian dan Invarian u Membuat Alur Logika pemrograman u Menerapkan Pengelolaan Array u Memelihara Pekerjaan secara prakds u Menerapkan konsep data

Lebih terperinci

MATERI PRAKTIKUM STRUKTUR DATA

MATERI PRAKTIKUM STRUKTUR DATA MATERI PRAKTIKUM STRUKTUR DATA Materi pembelajaran struktur data selama satu semester meliputi: No Materi Umum Tujuan yang diharapkan 1 Pengertian Struktur Data, Tipe Data Mahasiswa dapat Memahami dan

Lebih terperinci

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR 1 PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR Siti Mukaromah, S.Kom TEKNIK PENYAJIAN ALGORITMA Teknik Tulisan Structure English Pseudocode Teknik Gambar Structure Chart HIPO Flowchart 2 PSEUDOCODE Kode

Lebih terperinci

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN I. Elemen-Elemen Dalam Bahasa Pemrograman Berikut adalah elemen-elemen pada bahasa pemrograman: Berikut adalah element-element pada bahasa pemrograman: 1. Aturan

Lebih terperinci

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list Universitas Muhammadiyah Sukabumi Artikel Struktur Data Oleh : fahmi fauzi Masukan Judul... 1. STACK DAN QUEUE DENGAN LINKED LIST Pengertian Linked list : sekumpulan elemen bertipe sama, yang mempunyai

Lebih terperinci

Struktur Data Array. Rijal Fadilah S.Si

Struktur Data Array. Rijal Fadilah S.Si Struktur Data Array Rijal Fadilah S.Si Array Berdimensi Satu Array Satu dimensi tidak lain adalah kumpulan elemen-elemen identik yang tersusun dalam satu baris. Elemen-elemen tersebut memiliki tipe data

Lebih terperinci

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD Pertemuan 4 : Definisi & Operasi Disusun oleh : PH. Prima Rosa, S.Si., M.Sc. Sri Hartati Wijono, S.Si. 2003/2004 Pert. 4b Struktur Data - FMIPA USD - 2003 Hal. 1 Struktur Data PROBLEM ALGORITHM DATA IMPLEMENTATION

Lebih terperinci

Algoritma Pemrograman & Struktur Data

Algoritma Pemrograman & Struktur Data MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Stack Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Fakultas Ilmu Informatika Komputer 04 87042 Abstract Penjelasan mengenai stack dan penggunaannya

Lebih terperinci

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pertemuan 1 STRUKTUR DATA Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pemakaian Struktur Data yang

Lebih terperinci

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pertemuan 1 STRUKTUR DATA Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pemakaian Struktur Data yang

Lebih terperinci

LIST. Dewi Sartika, M.Kom

LIST. Dewi Sartika, M.Kom LIST PENDAHULUAN Linked List adalah sejumlah objek yang dihubungkan (linked) satu dengan yang lainnya membentuk suatu list. Objek adalah gabungan dari beberapa data (variable) yang dijadikan satu kelompok

Lebih terperinci

Pertemuan 2 ARRAY DIMENSI 1 & 2

Pertemuan 2 ARRAY DIMENSI 1 & 2 Pertemuan 2 ARRAY DIMENSI 1 & 2 Definisi Array Array / Larik : Struktur Data Sederhana yang dapat didefinisikan sebagai pemesanan alokasi memory sementara pada komputer. Array dapat didefinisikan sebagai

Lebih terperinci

Struktur Data. PDE - Struktur Data 1

Struktur Data. PDE - Struktur Data 1 Struktur Data Copyright@Ihsan Jatnika PDE - Struktur Data 1 Objektif Mengetahui maksud struktur data dan menjelaskan penggunaannya dalam pemrograman Mengetahui operasi yang terkait dengan struktur data

Lebih terperinci

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS STRUKTUR DATA By : Sri Rezeki Candra Nursari 2 SKS Penilaian : Gasal TA 2013/2014 UAS = 35% UTS = 30% ABSEN = 5% TUGAS = 30% Jumlah = 100% Tugas kirim ke : dosen.it2011@gmail.com Batas Tugas 9 hari setelah

Lebih terperinci

STRUKTUR DATA. Literatur

STRUKTUR DATA. Literatur STRUKTUR DATA By : Sri Rezeki Candra Nursari 2 SKS Literatur Sjukani Moh, (2007), Struktur Data (Algoritma & Struktur Data 2) dengan C, C++, Mitra Wacana Media Utami Ema dkk, (2007), Struktur Data (Konsep

Lebih terperinci

Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester).

Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester). TIPE DATA Penggunaan tipe data pada bahasa c++ erat kaitannya dengan penggunaan memori, perlu diperhatikan dalam penggunaanya. Terdapat tiga tipe data dalam bahasa C++ yaitu : 1. Tipe Data Dasar terdiri

Lebih terperinci

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus. 1 ARRAY & LINKED LIST MODUL 1 Standar kompetensi: 1. Mahasiswa mengetahui perbedaan array dan linked list. 2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus. 3. Mahasiswa

Lebih terperinci

elemen Dasar Bahasa Pemrograman C

elemen Dasar Bahasa Pemrograman C Elemen-elemen elemen Dasar Bahasa Pemrograman C Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN - 2008 Identifier : Elemen Dasar C Nama pengenal (identifier) adalah nama-nama yang ditentukan

Lebih terperinci

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Pendahuluan Struktur Data. Nisa ul Hafidhoh Pendahuluan Struktur Data Nisa ul Hafidhoh nisa@dsn.dinus.ac.id 08156114760 Tujuan Mahasiswa dapat melakukan pemrograman dalam skala menengah dengan memanfaatkan struktur data internal yang kompleks dan

Lebih terperinci

Modul Praktikum Algoritma dan Struktur Data

Modul Praktikum Algoritma dan Struktur Data MODUL IV STACK A. TUJUAN 1. Memahami terminologi yang terkait dengan struktur data stack. 2. Memahami operasi-operasi yang ada dalam stack. 3. Dapat mengidentifikasi permasalahan-permasalahan pemrograman

Lebih terperinci

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs. Algoritma dan Struktur Data Ramos Somya, S.Kom., M.Cs. Penggunaan record dalam jumlah yang banyak alokasi memory konvensional tidak bisa diandalkan. Misal kita akan bekerja dengan file yang menyimpan sangat

Lebih terperinci

LAPORAN PRAKTIKUM RESMI QUEUE

LAPORAN PRAKTIKUM RESMI QUEUE LAPORAN PRAKTIKUM RESMI QUEUE Disusun oleh : Amin Setyaningrum 201301052 Dosen pengampu : Yosef Murya Kusuma Ardhana.S.T., M.Kom JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO

Lebih terperinci

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar Bahasa Pemrograman Pascal Page 1 / 11 Pengenalan Pascal Pascal merupakan salah satu bahasa pemrograman tingkat tinggi. Pemrograman

Lebih terperinci

Algoritma Pemrograman & Struktur Data

Algoritma Pemrograman & Struktur Data MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Array Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Fakultas Ilmu Informatika Komputer 02 87042 Abstract Penjelasan mengenai array dan penggunaannya

Lebih terperinci

Pert 2 Struktur Data (mengajarkomputer.wordpress.com) ARRAY DIMENSI 1 & 2

Pert 2 Struktur Data (mengajarkomputer.wordpress.com) ARRAY DIMENSI 1 & 2 ARRAY DIMENSI 1 & 2 Array / Larik : Struktur Data Sederhana yang dapat didefinisikan sebagai pemesanan alokasi memory sementara pada komputer. Array dapat didefinisikan sebagai suatu himpunan hingga elemen

Lebih terperinci

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C WAHJUDI ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009 TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C Universitas Multimedia Nusantara Tangerang - Banten Januar Wahjudi Abstrak- Tipe data abstrak(abstract data types atau

Lebih terperinci

MODUL IV STACK A. TUJUAN

MODUL IV STACK A. TUJUAN MODUL IV STACK A. TUJUAN 1. Memahami terminologi yang terkait dengan struktur data stack. 2. Memahami operasi-operasi yang ada dalam stack. 3. Dapat mengidentifikasi permasalahan-permasalahan pemrograman

Lebih terperinci

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

TIPE DATA, VARIABLE, dan OPERATOR DELPHI TIPE DATA, VARIABLE, dan OPERATOR DELPHI A. TIPE DATA Delphi merupakan bahasa pemrograman tingkat tinggi yang mendukung perancangan terstruktur dan berorientasi Object. Bahasa pemrograman ini berdasarkan

Lebih terperinci

Struktur Bahasa C dan C++

Struktur Bahasa C dan C++ Elemen Program Struktur Bahasa C dan C++ Bahasa C merupakan bahasa pendahulu dari bahasa C++. Pencipta C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun 1972. C adalah bahasa pemrograman

Lebih terperinci

STRUKTUR DATA MENGGUNAKAN C++ Windha Mega PD, S.Kom

STRUKTUR DATA MENGGUNAKAN C++ Windha Mega PD, S.Kom STRUKTUR DATA MENGGUNAKAN C++ Windha Mega PD, S.Kom DASAR PEMROGRAMAN C++ Bahasa C++ adalah bahasa yang menggunakan kompiler untuk translator dari kode program menjadi bahasa mesin. Bahasa C++ mempunyai

Lebih terperinci

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti KONSTANTA Menghitung besaran-besaran fisis dalam bidang fisika memerlukan suatu konstantakonstanta. Bahasa C dan C++ menyediakan tipe data tambahan sehingga variabel yang kita gunakan merupakan konstanta

Lebih terperinci

MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER)

MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER) MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER) I. TUJUAN 1. Mahasiswa mengenal struktur bahasa pemrograman C dan C++ 2. Mahasiswa mengenal perintah-perintah dasar C dan C++ 3. Mahasiswa

Lebih terperinci

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1 MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1 Disusun oleh : Tim Asisten JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SUNAN KALIJAGA YOGYAKARTA 2011 0 A. Pengantar

Lebih terperinci

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN PERTEMUAN 2 ALGORITMA & PEMROGRAMAN POKOK BAHASAN 1. Pendahuluan 2. Tahapan Pembangunan Program 3. Pengenalan Algoritma 4. Cara Menyajikan Algoritma 5. Data Program 6. Elemen-Elemen Program PENDAHULUAN

Lebih terperinci

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e 03 LINKED LIST Slide 0 voice Pada perkuliahan ini kita akan membahas topik linked list atau senarai berkait. Slide 1 voice Terdapat tujuh bilangan bulat yang nilainya terurut secara menaik (ascending)

Lebih terperinci

PERTEMUAN 7 REVIEW (QUIZ)

PERTEMUAN 7 REVIEW (QUIZ) PERTEMUAN 7 REVIEW (QUIZ) 1. Langkah pertama yang harus dilakukan dalam menyusun suatu program a. Membuat Hipotesa b. Membuat Masalah c. Membuat Algoritma d. Membuat Program e. Menyalakan Komputer 2. Sebuah

Lebih terperinci

BAHASA PEMROGRAMAN C

BAHASA PEMROGRAMAN C BAHASA PEMROGRAMAN C A. Pengenalan Bahasa C diciptakan oleh Dennis Ritchie tahun 1972 di Bell Laboratories. Kelebihan Bahasa C: - Bahasa C tersedia hampir di semua jenis computer. - Kode bahasa C sifatnya

Lebih terperinci

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat STRUKTUR DATA Pengajar Jaidan Jauhari, M.T. Alamat Email jaidan_j@ilkom.unsri.ac.id jaidan_j@yahoo.com Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data Informatika ITB Karangan Dr. Inggriani

Lebih terperinci

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi. Tabel Informasi Tabel informasi atau tabel simbol berguna untuk mempermudah pada saat pembuatan dan implementasi dari analisa semantik (semantic analyzer). Pada proses translasi, tabel informasi dapat

Lebih terperinci

Keg. Pembelajaran 2 : Mengenal Bahasa C++

Keg. Pembelajaran 2 : Mengenal Bahasa C++ Keg. Pembelajaran 2 : Mengenal Bahasa C++ 1. Tujuan Kegiatan Pembelajaran Setelah mempelajari materi kegiatan pembelajaran ini mahasiswa akan dapat : 1) Mengenal secara baik sintak-sintak dalam bahasa

Lebih terperinci

PENGENALAN BAHASA C DAN C++

PENGENALAN BAHASA C DAN C++ PRAKTIKUM KE 1 PENGENALAN BAHASA C DAN C++ TUJUAN PRAKTIKUM 1. Praktikan mengetahui sejarah bahasa C dan C++. 2. Praktikan mengerti struktur program bahasa C / C++. 3. Praktikan mengerti konsep tipe data

Lebih terperinci

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera POINTER STACK DAN QUEUE ALGORITMA DAN STRUKTUR DATA Institut Teknologi Sumatera PRE TEST Apakah yang disebut dengan array? Bagaimana cara deklarasi dan pengacuan dari sebuah array? Apa kekurangan array?

Lebih terperinci

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh PRAKTIKUM 2 1. Variabel Pengenal (identifier) merupakan nama yang biasa digunakan untuk suatu perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh pemrogram. Variabel adalah suatu

Lebih terperinci

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE LABORATORIUM PEMROGRAMAN PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH MALANG 2015 I. TUJUAN II. Mahasiswa mampu

Lebih terperinci

PERTEMUAN KE 11. Linked List. Apa Itu Linked List?

PERTEMUAN KE 11. Linked List. Apa Itu Linked List? PERTEMUAN KE 11 Linked List Apa Itu Linked List? Linked list tidak lain adalah suatu struktur data yg merupakan suatu rangkaian atau daftar record berjenis sama. Kemudian dihubungkan melalui bantuan pointer.

Lebih terperinci

Operator untuk operasi aritmatika yang tergolong sebagai operator binary adalah: Perkalian Pembagian Sisa Pembagian (mod) Penjumlahan 6 2

Operator untuk operasi aritmatika yang tergolong sebagai operator binary adalah: Perkalian Pembagian Sisa Pembagian (mod) Penjumlahan 6 2 [Kristanto:2009] Operator merupakan simbol atau kata yang dapat digunakan dalam program untuk melakukan suatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai, memberikan nilai kesuatu variabel,

Lebih terperinci

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T PEMROGRAMAN BERORIENTASI OBJEK Tipe Data Budhi Irawan, S.Si, M.T TIPE DATA Tipe Data berfungsi untuk merepresentasikan jenis dari nilai yang terdapat dalam program. Contoh apabila mempunyai suatu data

Lebih terperinci

Algoritma dan Struktur Data. Ramos Somya

Algoritma dan Struktur Data. Ramos Somya Algoritma dan Struktur Data Ramos Somya Penggunaan record dalam jumlah yang banyak alokasi memory konvensional tidak bisa diandalkan. Misal kita akan bekerja dengan file yang menyimpan sangat banyak record,

Lebih terperinci

BAB II STACK Atau TUMPUKAN

BAB II STACK Atau TUMPUKAN BAB II STACK Atau TUMPUKAN List Linear (Daftar Linear). List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya disebut simpul (node). Simpul terdiri

Lebih terperinci

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman Jurusan Teknik Informatika Fakultas Teknik Universitas Maritim Raja Ali Haji ALGORITMA DAN PEMOGRAMAN I. ALGORITMA II. BAHASA

Lebih terperinci

Algoritma dan Struktur data

Algoritma dan Struktur data Pertemuan 2, Algoritma dan Struktur data Tenia wahyuningrum & Sisilia Thya Safitri VISI ST3 TELKOM Menjadi Perguruan Tinggi yang Unggul di Bidang Teknologi Telematika dan membentuk insan yang berkarakter

Lebih terperinci

OPERATOR BAHASA C. Obyektif : 4. Mengetahui macam-macam operator dalam Bahasa C. 5. Mengetahui dan dapat menggunakan format pada tiap tipe data..

OPERATOR BAHASA C. Obyektif : 4. Mengetahui macam-macam operator dalam Bahasa C. 5. Mengetahui dan dapat menggunakan format pada tiap tipe data.. OPERATOR BAHASA C Obyektif : 4. Mengetahui macam-macam operator dalam Bahasa C. 5. Mengetahui dan dapat menggunakan format pada tiap tipe data.. Operator adalah suatu tanda atau simbol yang digunakan untuk

Lebih terperinci

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA Kata-Kata Cadangan Kata-kata cadangan (reserved words) adalah kata-kata yang sudah didefinisikan oleh Pascal yang mempunyai maksud tertentu. Kata-kata

Lebih terperinci

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri Senarai berantai linked list Pertemuan keenam Struktur data st3telkom.ac.id by : tenia wahyuningrum & Sisilia Thya Safitri Senarai berantai Dalam pemakaian sehari-hari istilah senarai berantai (list) adalah

Lebih terperinci

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera ARRAY PENGANTAR PROGRAM STUDI Institut Teknologi Sumatera TUJUAN PERKULIAHAN Mahasiswa memahami konsep dan cara kerja array Mahasiswa mampu membuat program sederhana menggunakan array satu dimensi PRE

Lebih terperinci

Single Linked List (1)

Single Linked List (1) Praktikum 5 Single Linked List (1) A. TUJUAN PEMBELAJARAN Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu: 1. Memahami konsep membangun single linked list 2. Memahami konsep operasi

Lebih terperinci

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA JENIS DATA SEDERHANA & INPUT/OUTPUT DATA 1.1 Tipe Data A. Data Tipe Sederhana Dihubungkan dengan sebuah identifier untuk sebuah data. Data tipe ini digolongkan menjadi tipe data standar dan tipe data yang

Lebih terperinci

Struktur Data. Pertemuan 2

Struktur Data. Pertemuan 2 Pertemuan 2 Tujuan Pembelajaran Mahasiswa mampu menjelaskan konsep struktur data (Pengertian Struktur data, Konsep struktur data, Tipe data sederhana, Deklarasi data dalam bahasa pemrograman. 1. Pengertian

Lebih terperinci

PEMROGRAMAN BERORIENTASI OBJEK. Operator. Budhi Irawan, S.Si, M.T

PEMROGRAMAN BERORIENTASI OBJEK. Operator. Budhi Irawan, S.Si, M.T PEMROGRAMAN BERORIENTASI OBJEK Operator Budhi Irawan, S.Si, M.T OPERATOR Operator adalah tanda yang digunakan untuk melakukan operasi operasi tertentu didalam program. Dengan adanya operator maka dapat

Lebih terperinci

TIPE, NAMA, DAN NILAI

TIPE, NAMA, DAN NILAI TIPE, NAMA, DAN NILAI Dian Palupi Rini, M.Kom Tipe Dasar Bilangan Logika Nama Tipe adalah boolean (diambil dari nama matematikawan Inggris George Boole). Ranah Nilai : true (benar) dan false (salah). Konstanta

Lebih terperinci

3. Elemen Dasar C++ S. Indriani S. L., M.T L.,

3. Elemen Dasar C++ S. Indriani S. L., M.T L., 3. Elemen Dasar C++ S. Indrianii L., M.T Himpunan karakter Suatu pengenal berupa satu atau beberapa karakter Huruf A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q

Lebih terperinci

Chapter 3.2 : Tipe, Nama dan Nilai

Chapter 3.2 : Tipe, Nama dan Nilai Mata Kuliah : Logika dan Algoritma / 4 SKS Chapter 3.2 : Tipe, Nama dan Nilai Dosen Pengasuh : Fatoni, M.M.,M.Kom. Mail : fatoni@binadarma.ac.id/toniubd@yahoo.com Materi Yang Dipelajari Tipe Data Dasar

Lebih terperinci

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA 1 BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA IDENTIFIER Identifier adalah suatu tanda yang mewakili nama-nama variabel, method, class, dsb. Ingat : Bahasa

Lebih terperinci

Pengenalan C++ Oleh : Dewi Sartika

Pengenalan C++ Oleh : Dewi Sartika Pengenalan C++ Oleh : Dewi Sartika Pendahuluan Bahasa Pemrograman C++ merupakan bahasa tingkat menengah dimana bahasa ini didasarkan atas bahasa C, keistimewaan dari bahasa C++ adalah bahasa ini mendukung

Lebih terperinci

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI: Praktikum 7 Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: Konsep pengurutan dengan insertion sort dan selection sort Struktur data proses pengurutan Implementasi algoritma pengurutan

Lebih terperinci

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama). PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C++ 6.0 STRUKTUR BAHASA C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama). Setiap program akan dieksekusi dimulai dari statement

Lebih terperinci

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3) BAHASA PEMROGRAMAN 1 (PERTEMUAN 3) ARRAY KUMPULAN SOAL LATIHAN PREPARED BY CHANDRA 092110187 05 06 2010 (REVISED) PENGENALAN ARRAY Array dari Pesawat Array dari Serangga Array dari Kartu Array dari Karakter

Lebih terperinci

REVIEW ARRAY. Institut Teknologi Sumatera

REVIEW ARRAY. Institut Teknologi Sumatera REVIEW ARRAY DASAR PEMROGRAMAN Institut Teknologi Sumatera TUJUAN PERKULIAHAN Mahasiswa mengingat kembali konsep dan cara kerja array Mahasiswa mampu membuat program menggunakan array PRE TEST Tuliskan,

Lebih terperinci

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

DASAR PEMROGRAMAN. Institut Teknologi Sumatera DASAR PEMROGRAMAN REVIEW STRUKTUR DASAR, PERCABANGAN, DAN PERULANGAN Institut Teknologi Sumatera TUJUAN KULIAH Mengenalkan konsep dasar pemrograman: dekomposisi problem, modularisasi, rekurens; skill/praktek

Lebih terperinci

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST Pertemuan 3 KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut

Lebih terperinci

Algoritma dan Pemrograman

Algoritma dan Pemrograman Algoritma dan Pemrograman bagian 2 2009 Modul ini menjelaskan tentang bahasa C dan apa saja yang dibutuhkan bila kita akan menulis suatu program dengan bahasa C. Editor yang dipakai adalah Turbo C++ 4.5.

Lebih terperinci

P 4 Bab 3 : Dasar Pemrograman C

P 4 Bab 3 : Dasar Pemrograman C Kampus II, Jl. Jembatan Merah, Nomor.C. Gejayan, Yogyakarta, Telp: (0), Fax (0) 00 P Bab : Dasar Pemrograman C. Tujuan Mahasiswa mampu mengetahui dan memahami identifier, keyword, variable, tipe data,

Lebih terperinci

Algoritma dan Pemrograman. Pertemuan Ke-4 Konsep Tipe Data, Operator Dan Identifier

Algoritma dan Pemrograman. Pertemuan Ke-4 Konsep Tipe Data, Operator Dan Identifier Algoritma dan Pemrograman Pertemuan Ke-4 Konsep Tipe Data, Operator Dan Identifier Disusun Oleh : Wilis Kaswidjanti, S.Si.,M.Kom. Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Pembangunan

Lebih terperinci

Algoritma Pemrograman & Struktur Data

Algoritma Pemrograman & Struktur Data MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Linked List Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Fakultas Ilmu Informatika Komputer 03 87042 Abstract Penjelasan mengenai linked

Lebih terperinci

3. Struktur Perulangan dalam C++

3. Struktur Perulangan dalam C++ 3. Struktur Perulangan dalam C++ Obyektif Praktikum : Mengerti struktur perulangan dalam C++ Dapat menggunakan struktur perulangan berdasarkan penggunaannya Struktur perulangan (loops) Loops merupakan

Lebih terperinci

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP) Mata : Algoritma dan Struktur Data I Bobot Mata : 3 Sks GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP) Deskripsi Mata : Pengertian algoritma, program dan bahasa pemograman serta kaitannya dengan komputer,

Lebih terperinci

PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN

PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN I. Algoritma Pemrograman Yang Baik Ciri-ciri algoritma pemrograman yang baik adalah: 1. Memiliki logika perhitungan/metode yang tepat dalam memecahkan masalah 2. Menghasilkan

Lebih terperinci