MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan...

48
i MODUL STRUKTUR DATA DISUSUN OLEH: RABIATUL ADWIYA NIP. 201209659 Program Studi Komputerisasi Akuntansi AMIK Bina Sarana Informatika Pontianak 2018

Transcript of MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan...

Page 1: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

i

MODUL

STRUKTUR DATA

DISUSUN OLEH:

RABIATUL ADWIYA

NIP. 201209659

Program Studi Komputerisasi Akuntansi

AMIK Bina Sarana Informatika

Pontianak

2018

Page 2: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

2

KATA PENGANTAR

Dengan mengucapkan syukur Alhamdulillah kehadirat Allah SWT atas segala

limpahan rahmat dan hidayah-Nya, sehingga penyusun dapat menyelesaikan modul

yang berjudul : “Struktur Data” dengan baik.

Buku petunjuk teori ini disusun sebagai pedoman khususnya bagi mahasiswa di

Jurusan Teknik Informatika, dalam memberikan pengenalan, pemahaman serta

mengasah kemampuan dalam bidang logika dan algoritma yang sudah menjadi

kewajiban untuk dikenal dan dipahami sebagai dasar mata kuliah di bidang teknologi

informasi. Diharapkan para mahasiswa nantinya bisa lebih terampil dan memahami

segala bentuk teknologi informasi saat ini.

Bagimanapun penyusun telah berusaha membuat buku ini dengan sebaik-

baiknya, namun tidak ada kesempurnaan dalam sebuah karya manusia. Penyusun

menyadari masih banyak kekurangan dalam penyusunan buku ini. Untuk itu pula segala

masukan, kritik dan saran dari pembaca dapat menjadikan acuan bagi penyusun dalam

penyempurnaan dan pembuatan buku berikutnya.

Tiada untaian kata yang dapat penyusun sampaikan selain panjatkan doa,

semoga Allah SWT selalu membuka hati kita dengan cahaya-NYA dan mengajarkan

ilmu-NYA kepada kita, serta menghindarkan kita dari ilmu yang tidak bermanfaat.

Pontianak, Oktober 2018

Penyusun

Page 3: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

3

DAFTAR ISI

KATA PENGANTAR. ..................................................................................................................... ii

DAFTAR ISI . ................................................................................................................................. iii

KONSEP STRUKTUR DATA DAN ARRAY. ............................................................................... 4

SISTEM BILANGAN ........................................................................................................ 12

REPRESENTASI DATA ................................................................................................... 21

ARRAY DIMENSI BANYAK ........................................................................................... 26

SINGLE LINKED LIST NON CIRCULAR ..................................................................... 31

DAFTAR PUSTAKA ......................................................................................................... 48

Page 4: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

4

KONSEP STRUKTUR DATA DAN ARRAY

A. STRUKTUR DATA

Struktur Data adalah suatu koleksi atau kelompok data yang dapat

dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Pemakaian Struktur Data yang tepat didalam proses pemrograman, akan

menghasilkan Algoritma yang lebih jelas dan tepat sehingga menjadikan program

secara keseluruhan lebih sederhana.

B. KONSEP DASAR TIPE DATA

Pada garis besarnya, data dapat dikategorikan menjadi :

1. Type Data Sederhana / Data Sederhana Terdiri dari :

a. Data Sederhana Tunggal Misalnya : Integer, Real/Float, Boolean dan

Character.

b. Data Sederhana Majemuk Misalnya : String B.

2. Struktur Data Terdiri dari :

a. Struktur Data Sederhana Misalnya Array dan Record

b. Struktur Data Majemuk Terdiri dari :

1) Linier Misalnya : Stack, Queue dan Linear Linked List.

2) Non Linier Misalnya : Pohon (Tree), Pohon Biner (Binary Tree), Pohon

Cari Biner (Binary Search Tree), General Tree serta Graph.

C. DEFINIS ARRAY

Array / Larik adalah struktur data sederhana yang dapat didefinisikan

sebagai pemesanan alokasi memory sementara pada komputer. Array dapat

didefinisikan sebagai suatu himpunan hingga elemen yang terurut dan homogen.

Terurut dapat diartikan bahwa elemen tersebut dapat diidentifikasi sebagai elemen

pertama, elemen kedua dan seterusnya sampai elemen ke-n. sedangkan, homogen

adalah bahwa setiap elemen dari sebuah Array tertentu haruslah mempunyai type

data yang sama. Sebuah Array dapat mempunyai elemen yang seluruhnya berupa

Page 5: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

5

integer atau character atau String bahkan dapat pula terjadi suatu Array mempunyai

elemen berupa Array.

D. KARAKTERISTIK ARRAY

Array memiliki karakteristik sebagai berikut :

1. Mempunyai batasan dari pemesanan alokasi memory (Bersifat Statis)

2. Mempunyai Type Data Sama (Bersifat Homogen)

3. Dapat Diakses Secara Acak

E. 3 HAL YANG HARUS DIKETAHUI DALAM MENDEKLARASIKAN ARRAY

Ada 3 hal yang harus diketahui dalam mendeklarasikan Aarray yaitu :

1. Type data array

2. Nama variabel array

3. Subskrip / index array

F. JENIS ARRAY

Jenis Array (yang akan dipelajari) pada Modul ini adalah :

1. Array Dimensi Satu (One Dimensional Array)

Array Dimensi Satu (One Dimensional Array) dapat disebut juga dengan istilah

vektor yang menggambarkan data dalam suatu urutan Deklarasi : Type_Data

Nama_Variabel [index] Misalnya : int A[5];

Penggambaran secara Logika :

Elemen Array

A[1] A[2] A[3] A[4] A[5]

0 1 2 3 4

Subscript / Index

void main()

{ int bil [5];

Page 6: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

6

clrscr;

cout<<"Masukkan 5 bilangan genap : "<< endl;

for (int i = 0; i < 5; i++)

{ cout<<"Bilangan ";

cout<< i + 1 <<" : ";

cin>> bil[i];

cout<<endl;

}

cout<<endl;

cout<<"5 bilangan genap yang dimasukkan “ << endl;

for (int i = 0; i < 5; i++)

cout<<" "<<bil[i];

getch();

}

Rumus untuk menentukan jumlah elemen dalam Array :

Page 7: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

7

Pemetaan (Mapping) Array Dimensi Satu Ke Storage

Konversi Bilangan :

a. Decimal adalah bilangan berbasis sepuluh yang terdiridari 0, 1, 2, 3,

4, 5, 6, 7, 8, dan 9 2

b. Hexadecimal adalah bilangan berbasis enam belas yang terdiri dari

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, dan F.

Tabel di bawah adalah contoh konversi bilangan Decimal, dan

Hexadecimal :

Contoh Konversi Antar Bilangan :

Konversi Bilangan Decimal ke Hexadecimal Contoh 254 (10) = .......(16)

Caranya dengan membagi bilangan tersebut dengan enam belas sampai

Page 8: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

8

bilangan tersebut tidak bisa lagi dibagi enam belas (kurang dari enam belas)

dengan mencatat setiap sisa pembagian.

254 : 16 = 15 sisa 14 atau E (lihat tabel di atas)

15 : 16 = sisa 15 atau F (lihat tabel di atas)

Jadi 254 (10) = FE (16) diurutkan dari sisa pembagian terakhir.

Contoh Penerapan Array Dimensi 1 Pada Program C++

2. Array Dimensi Dua (Two Dimensional Array)

Sering digunakan dalam menterjemahkan matriks pada pemograman.

Deklarasi : Type_Data Nama_Variabel [Index1] [Index2]

Missal : int A[3][2];

Penggambaran secara Logika :

0 1

0

1

2

Page 9: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

9

Pemetaan (Maaping)Array Dimensi Dua Ke Storage

Terbagi dua cara pandang (representasi) yang berbeda

a. Secara Kolom Per Kolom (Column MajorOrder/CMO)

b. Secra Baris Per Baris (RowMajor Order / RMO)

Keterangan :

@M[i][j] = Posisi Array yang dicari, M[0][0] = Posisi alamat awal index

array, i = Baris,

j = Kolom, N= Banyaknya elemen per baris

Penggambaran Secara Logika

Misal : int M[3][2];

(Array dengan 3 Baris & 2 Kolom)

Berdasarkan Cara Pandang :

1. Kolom Per Baris (Row Major Order / RMO)

M[0,0] M[0,1] M[1,0] M[1,1] M[2,0] M[2,1]

Jumlah elemen per kolom = 2

@M[i][j] = M[0][0] + {(j – 1) * K + (I – 1)} * L

@M[i][j] = M[0][0] + {(j – 1) * N + (I – 1)} * L

Page 10: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

10

2. Baris Per Kolom (Coloumn Major Order / CMO)

M[0,0] M[1,0] M[2,0] M[0,1] M[1,1] M[2,1]

Jumlah elemen per kolom = 3

3. Baris Per Kolom (Coloumn Major Order / CMO)

Contoh Pemetaan :

Suatu Array X dideklarasikan sebagai berikut : Float X[4][3], dengan alamat

index X[0][0] berada di 0011(H) dan ukuran type data float = 4

Tentukan berapa alamat array X[3][2] berdasarkan cara pandang baris dan

kolom ?

Page 11: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

11

LATIHAN 1.

1. Suatu array A dideklarasikan sbb : int A[50] dengan alamat awal berada di

0011(H). Tentukan berapa alamat array A[20] dan A[40]?

2. Suatu array X dideklarasikan sbb : Float X[4][5] dengan alamat awal berada

pada 0011(H). Tentukan berapa alamat array X[4][3], berdasarkan cara pandang

baris dan kolom?

Page 12: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

12

SISTEM BILANGAN

A. KONSEP DASAR SISTEM BILANGAN

Sistem bilangan adalah suatu cara untuk mewakili besaran dari suatu item

fisik. Konsep dasar sistem bilangan dikarakteristikkan oleh basis (radix), absolute

digit dan posisi (place) value, yang dituliskan:

Basis yang digunakan sistem bilangan tergantung dari jumlah nilai bilangan yang

dipergunakan.

Sistem bilangan yang sering digunakan adalah:

1. Sistem bilangan desimal

Sistem bilangan desimal menggunakan basis 10 (deca)

Menggunakan 10 macam simbol bilangan berbentuk digit angka:

0,1,2,3,4,5,6,7,8,9

Dasar penulisan:

Bentuk nilai desimal dapat berupa integer (bilangan bulat) dan pecahan

Dapat ditulis dalam bentuk eksponensial yaitu ditulis dengan mantissa dan

exponent.

Contoh: 1234 = 0,1234 x 10 4

mantissa exponent

Penulisan base/radix dituliskan setelah absolut digit, yaitu A10, atau A(D).

Dalam hal ini yang dituliskan adalah A10.

Contoh nilai 435210 dan 762,1510 dapat diartikan:

A X 10n

Page 13: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

13

2. Sistem bilangan biner

Sistem bilangan biner menggunakan basis 2 (binary)

Menggunakan 2 macam simbol bilangan berbentuk digit angka: 0 dan 1

Penulisan base/radix dituliskan setelah absolut digit, yaitu A2 atau A(B).

Dalam hal ini yang dituliskan adalah A2

Dasar penulisan:

Contoh penulisan: 1001 00112

3. Sistem bilangan oktal

Sistem bilangan oktal menggunakan basis 8 (octal)

Menggunakan 8 macam simbol bilangan berbentuk digit angka:

0,1,2,3,4,5,6,7

Penulisan base/radix dituliskan setelah absolut digit, yaitu A 8 atau A(O).

Dalam hal ini yang dituliskan adalah A8

Dituliskan:

Contoh penulisan: 3478

4. Sistem bilangan hexadecimal

Sistem bilangan hexadesimal menggunakan basis 16 (hexa)

Menggunakan 16 macam simbol bilangan berbentuk digit angka:

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Penulisan base/radix dituliskan setelah absolut digit, yaitu A16 atau A(H).

Dalam hal ini yang dituliskan adalah A16

Dituliskan:

Contoh penulisan: A7816

B. SATUAN DATA

Komputer bekerja atas dasar sistem biner berupa 0 dan 1 yang disebut bit.

Bit merupakan satuan data terkecil dalam sistem komputer. Bit-bit dapat digunakan

untuk menyusun karakter apa saja. Sebuah karakter dinyatakan dengan 8 bit atau 16

bit.

A X 2n

A X 8n

A X 16n

Page 14: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

14

1. Byte

Byte merupakan satuan yang digunakan untuk menyatakan sebuah karakter

pada sistem ASCII atau EBCDIC

1 byte = 8 bit

2. Kilobyte (KB)

Biasa digunakan untuk berkas gambar berukuran kecil

1 kilobyte = 1024 byte

3. Megabyte (MB)

Biasa digunakan untuk menyatakan kapasitas RAM dalam PC

1 MB = 1024 KB = 1.048.576 byte

4. Gigabyte (GB)

Biasa digunakan untuk menyatakan kapasitas harddisk dalam PC

1 GB = 1024 MB = 1.073.741.824 byte

5. Terabyte (TB)

Biasa digunakan untuk menyatakan kapasitas harddisk dalam mainframe

1 TB = 1024 GB = 1.009.511.627.776 byte

6. Petabyte (PB)

1 PB = 1024 TB

C. SISTEM PENGKODEAN

Sistem yang digunakan untuk mengkodekan karakter bermacam-macam.

Data disimpan dalam memori komputer menempati posisi 1 byte, yang

menggunakan kombinasi dari digit Biner. Komputer berbeda dalam menggunakan

kode biner untuk mewakili sebuah karakter. Ada beberapa kode yang akan dibahas,

yaitu BCD, EBCDIC, ASCII dan Unicode.

1. BCD (Binary Coded Decimal)

Merupakan kode biner yang digunakan hanya untuk mewakili nilai digit

desimal saja.

Sebuah karakter BCD dinyatakan dengan 4 bit

Karakter yang tersedia sebanyak 10 angka, yaitu angka 0,1,2,3,4,5,6,7,8,9

Digunakan pada komputer generasi pertama.

Page 15: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

15

2. EBCDIC (Extended Binary Coded Decimal Interchange Code)

EBCDIC dikembangkan oleh IBM, yang diterapkan pada berbagai komputer

mainframe

Sebuah karakter dinyatakan dengan 8 bit

Karakter yang tersedia sebanyak 28 = 226 karakter

Digunakan pada komputer generasi ketiga

3. ASCII (American Standard Code for Information Interchange)

ASCII dikembangkan oleh ANSI (American National Standard Institute)

Sebuah karakter ASCII dinyatakan dengan 8 bit

Karakter yang tersedia sebanyak 226 karakter, meliputi huruf, angka, dan

spesial karakter, termasuk simbol Yunani dan karakter grafis

Page 16: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

16

Page 17: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

17

4. Unicode

Sebuah karakter Unicode dinyatakan dengan 16 bit

Karakter yang tersedia sebanyak 65.536 karakter, meliputi huruf, angka, dan

spesial karakter, termasuk simbol Yunani, karakter grafis, simbol Arab dan

Cina

D. KONVERSI BILANGAN

1. Konversi dari Bilangan Desimal ke Biner

Dengan cara membagi bilangan desimal dengan 2 (basis biner) sampai tidak

bisa dibagi lagi

Kemudian sisa pembagian diurutkan dari bawah ke atas dalam format 8 bit

Contoh nilai 8910 akan dikonversikan menjadi Biner

2. Konversi dari Bilangan Desimal ke Oktal

Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak

bisa dibagi lagi

Cara yang digunakan sama dengan bilangan biner

Contoh nilai 14710 akan dikonversikan menjadi Oktal

Dituliskan dari bawah ke atas: 223

Maka hasilnya menjadi 14710 = 2238

Page 18: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

18

3. Konversi dari Bilangan Desimal ke Hexadesimal

Dengan cara membagi bilangan desimal dengan 16 (basis hexa) sampai

tidak bisa dibagi lagi

Cara yang digunakan sama dengan bilangan biner

Contoh nilai 12310 akan dikonversikan menjadi Hexa

Sisa 11 dikodekan menjadi B

Maka hasilnya menjadi 12310 = 7B16

4. Konversi dari Bilangan Biner ke Desimal

Dengan cara mengalikan masing-masing bit biner dalam bilangan sesuai

dengan radix dan position value-nya

Contoh bit 11 01012 akan dikonversikan menjadi Desimal

5. Konversi dari Bilangan Biner ke Oktal

Dengan cara membagi digit biner tersebut ke dalam tiga digit dari kanan

Ketiga digit tersebut kemudian dikonversikan menjadi desimal

Contoh bit 1010 10112 akan dikonversikan menjadi Oktal

Maka dituliskan menjadi 1010 10112 = 2538

6. Konversi dari Bilangan Biner ke Hexadesimal

Dengan cara membagi digit biner tersebut ke dalam empat digit dari kanan

Page 19: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

19

Keempat digit tersebut kemudian dikonversikan menjadi desimal

Contoh bit 101010112 akan dikonversikan menjadi Hexa

Maka dituliskan menjadi 1010 10112 = AB16

7. Konversi dari Bilangan Oktal ke Desimal

Dengan cara mengalikan masing-masing bit oktal dalam bilangan sesuai

dengan radix dan position value – nya

Contoh bit 3718 akan dikonversikan menjadi Desimal

8. Konversi dari Bilangan Oktal ke Biner

Dengan cara mengkonversikan setiap satu digit oktal menjadi tiga digit biner

Contoh bit 718 akan dikonversikan menjadi Biner

Maka dituliskan menjadi 718 = 0011 10012

9. Konversi dari Bilangan Oktal ke Hexadesimal

Konversi ini tidak dapat dilakukan secara langsung, tetapi harus

dikonversikan terlebih dahulu ke Desimal atau Biner

Contoh bit 2438 akan dikonversikan menjadi Hexa

Maka dituliskan menjadi 2438 = A316

Page 20: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

20

10. Konversi dari Bilangan Hexadesimal ke Desimal

Dengan cara mengalikan masing-masing bit hexa dalam bilangan sesuai

dengan radix dan position value - nya

Contoh bit 8F16 akan dikonversikan menjadi Desimal

11. Konversi dari Bilangan Hexadesimal ke Biner

Dengan cara mengkonversikan setiap satu digit hexa menjadi empat digit

biner

Contoh bit 8F16 akan dikonversikan menjadi Biner

Maka dituliskan menjadi 8F16 = 1000 11112

12. Konversi dari Bilangan Hexadesimal ke Oktal

Konversi ini tidak dapat dilakukan secara langsung, tetapi harus

dikonversikan terlebih dahulu ke Desimal atau Biner sama dengan konversi

dari oktal ke hexa

Contoh bit 8F16 akan dikonversikan menjadi Oktal

Maka dituliskan menjadi 8F16 = 2178

Page 21: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

21

REPRESENTASI DATA

A. PENGERTIAN

Komputer menggunakan dan memanipulasi data untuk perhitungan

aritmatik, pemrosesan data, dan operasi logik. Type data yang digunakan dalam

komputer digital diklasifikasikan:

Data Numerik: merepresentasikan integer, pecahan, real, dan desimal berkode

biner.

Data Logikal: digunakan oleh operasi seperti OR, AND, COMPLEMENT,

COMPARE dan SHIFT.

Data Bit Tunggal: digunakan oleh operasi seperti SET, CLEAR, dan TEST.

Data Alfanumerik: digunakan untuk manipulasi string oleh instruksi seperti

MOVE dan SEARCH

B. ILUSTRASI REPRESENTASI DATA

C. REFRESENTASI INTEGER

Untuk keperluan pengolahan dan penyimpanan data komputer, hanya

bilangan biner yang dapat merepresentasikan bilangan Integer direpresentasikan

selain oleh nilai bilangannya juga dengan adanya tambahan tanda (Signed Integer).

Tipe:

Sign and Magnitude

Page 22: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

22

One’s Complement

Two’s Complement

1. Representasi Sign-Magnitude

Merepresentasikan bilangan integer negatif

Bit yang paling kiri diidentifikasikan sebagai tanda (sign) :

Jika bit paling kiri adalah nol maka bilangan tersebut positif

Jika bit paling kiri adalah satu maka bilangan tersebut negative

Contoh:

+1810 = 000100102

−1810 = 100100102

a. Penjumlahan pada Sign-Magnitude mempunyai aturan:

Sign tidak dijumlahkan, hanya magnitude

Buang carry out dari bit yang paling kiri

Jumlahkan yang sign-nya sama

Sign hasil = sign penambah

Contoh penjumlahan 4 bit:

b. Pengurangan pada Sign-Magnitude mempunyai aturan:

Lakukan pengurangan jika sign sama

Jika sign tidak sama, ubah soal ke penjumlahan

Contoh pengurangan:

c. Kelemahan Sign-Magnitude:

Penambahan dan pengurangan memerlukan pertimbangan baik tanda

bilangan maupun nilai relatifnya

Ada dua representasi bilangan nol, yaitu :

Page 23: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

23

+010 = 000000002

−010 = 100000002

2. Representasi Komplemen Satu

Komplemen pada dasarnya merubah bentuk pengurangan menjadi

pertambahan

Komplementasi bilangan biner dengan cara mengubah 1 menjadi 0 dan 0

menjadi 1

Contoh:

00110110 = 11001001

3. Representasi Komplemen Dua

Dibentuk dengan mengambil komplemen satu dari bilangannya dan dengan

menambahkan 1 pada posisi paling kanan

Contoh desimal 49 (dalam biner) menjadi bentuk komplemen dua:

D. PENJUMLAHAN BINER

Penjumlahan bilangan biner dilakukan sama seperti penjumlahan bilangan-

bilangan desimal. Operasi pengurangan, perkalian dan pembagian seperti yang

dilakukan pada komputer dan kalkulator digital sesungguhnya menggunakan

penjumlahan sebagai operasi dasarnya.

Ada 4 kondisi dalam penjumlahan bilangan biner:

0 + 0 = 0

1 + 0 = 1

0 + 1 = 1

1 + 1 = 0 (carry out 1)

Maksud dari carry out, hasilnya tidak bisa memuat lebih dari 1 digit, tetapi

disimpan ke dalam kolom sebelah yang lebih tinggi nilainya (digit paling kiri yang

diabaikan).

Page 24: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

24

1. Penjumlahan Biner dengan Komplemen Dua

Ada beberapa kasus yang dapat dilakukan dengan komplemen dua:

a. Kasus 1: Dua Blangan Positip

Penjumlahan dari dua bilangan positip dilakukan secara langsung.

Contoh:

b. Kasus 2: Blangan Positip dan Negatip yang lebih kecil

Contoh: 8 + (-4)

Caranya bilangan -4 akan diubah ke dalam bentuk komplemen dua,

sehingga biner 4 (0100) menjadi:

c. Kasus 3: Blangan Positip dan Negatip yang lebih besar

Contoh: 8 + (-11)

Caranya bilangan -11 akan diubah ke dalam bentuk komplemen dua,

sehingga biner 11 (1101) menjadi:

d. Kasus 4: Dua Blangan Negatif

Contoh: -8 + (-7)

Caranya bilangan -8 dan -7 akan diubah ke dalam bentuk komplemen dua,

jadi biner 8 (1000) dan 7 (0111) menjadi:

Page 25: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

25

Page 26: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

26

ARRAY DIMENSI BANYAK

A. ARRAY DIMENSI TIGA (Three Dimensional Array)

Digunakan untuk mengelola data dalam bentuk 3 dimensi atau tiga sisi.

Deklarasi : Type_Data Nama_Variabel [index1] [ndex2] [index3];

Misal : int A [3][4][2];

Menentukan jumlah elemen dalam Array dimensi 3 :

Contoh :

Suatu Array X dideklarasikan sbb : int A [3][4][2]; maka jumlah elemen Array

dimensi tiga tersebut adalah :

B. PEMETAAN (MAPPING) ARRAY DIMENSI TIGA KE STORAGE

Contoh :

Suatu Array A dideklarasikan sebagai berikut : int A [2][4][3], dengan alamat awal

index A[0][0][0] berada di 0011(H) dan ukuran type data int = 2 Tentukan berapa

alamat Array di A[2][3][2] ?

Page 27: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

27

Contoh Program Array Dimensi Tiga:

Page 28: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

28

Tampilan Program

C. TRINGULAR ARRAY (ARRAY SEGITIGA)

Tringular Array dapat merupakan Upper Tringular (seluruh elemen di

bawah diagonal utama = 0), ataupun Lower Tringular (seluruh elemen di atas

diagonal utama = 0). Dalam Array Lower Tringular dengan N baris, jumlah

maksimum elemen <> 0 pada baris ke-I adalah = I, karenanya total elemen <> 0,

tidak lebih dari :

Page 29: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

29

D. SPARSE ARRAY (ARRAY JARANG)

Contoh :

Diketahui suatu array segitiga atas memiliki 3 baris dan kolom, tentukan berapakah

jumlah elemen yang bukan nol pada array tersebut.

I = N(N+1) / 2

I = 3 (3+1) / 2

= 12 / 2

= 6

Contoh bentuk array nya adalah seperti dibawah ini :

Suatu Array Upper Tringular dan Array Lower Tringular dapat dengan order yang

sama, dapat disimpan sebagai suatu array dengan order yang berbeda, Contohnya :

Page 30: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

30

Suatu Array yang sangat banyak elemen nol-nya, contohnya adalah Array A pada

Gambar berikut :

LATIHAN 4.

1. Suatu array A dideklarasikan sbb: Float A[5][5][5] dengan alamat awal A[0][0][0]

= 0021(H), berapakah alamat array A[2][3][2] dan A[5][4][3]?

2. Suatu array B dideklarasikan sbb: Char B[3][4][3] dengan alamat awal A[0][0][0] =

0021(H), berapakah alamat array A[2][3][2] dan A[3][4][3]?

Page 31: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

31

SINGLE LINKED LIST NON CIRCULAR

A. 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 dengan perubah dinamis (Dinamic variable).

1. Perubah Dinamis (Dinamic variable

Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah

program dieksekusi.

2. Perbedaan Perubah Statis & Dinamis

Pada perubah statis, isi Memory pada lokasi tertentu (nilai perubah) adalah data

sesungguhnya yang akan diolah. Pada perubah dinamis, nilai perubah adalah

alamat lokasi lain yang menyimpan data sesungguhnya. Dengan demikian data

yang sesungguhnya dapat dimasukkan secara langsung.

Dalam hal cara pemasukkan data dapat diilustrasikan seperti dibawah ini.

B. DEKLARASI POINTER

Pointer digunakan sebagai penunjuk ke suatu alamat memori Dalam

pemrograman C++, Type Data Pointer dideklarasikan dengan bentuk umum :

Type Data * Nama Variabel;

Type Data dapat berupa sembarang type data, misalnya char, int atau float.

Sedangkan Nama veriabel merupakan nama variabel pointer.

Contoh penggunaan pointer dalam program C++:

Void main()

{

int x,y,*z;

x = 75; //nilai x = 75

y = x; //nilai y diambil dari nilai x

Page 32: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

32

z = &x; //nilai z menunjuk kealamat pointer dari nilai x

getch();

}

C. LINKED LIST (LINKED LIST)

Salah satu Struktur Data Dinamis yang paling sederhana adalah Linked

List atau Struktur Berkait atau Senarai Berantai, yaitu suatu kumpulan komponen

yang disusun secara berurutan dengan bantuan Pointer. Linked List (Senarai

Berantai) disebut juga dengan Senarai Satu Arah (One-Way List). Masing-masing

komponen dinamakan dengan Simpul (Node).

Setiap simpul dalam suatu Linked List terbagi menjadi dua bagian,yaitu :

1. Medan Informasi

Berisi informasi yang akan disimpan dan diolah.

2. Medan Penyambung (Link Field)

Berisi alamat berikutnya. Bernilai 0, Jika Link tersebut tidak menunjuk ke Data

(Simpul) lainnya. Penunjuk ini disebut Penunjuk Nol.

Linked List juga mengandung sebuah variable penunjuk List, yang

biasanya diberi nama START (AWAL) yang berisi alamat dari simpul pertama

dalam List.

Page 33: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

33

D. PENYAJIAN LINKED LIST DALAM MEMORY

Keterangan :

E. PERBEDAAN KARAKTERISTIK ARRAY DAN LINKED LIST

ARRAY LINKED LIST

Statis Dinamis

Penambahan / penghapusan data terbatas Penambahan / penghapusan data tidak

terbatas

Random access Sequential access

Penghapusan array tidak mungkin Penghapusan linked list mudah

F. BENTUK NODE SINGLE LINKED LIST NON CIRCULAR

Single adalah field pointer-nya hanya satu dan satu arah,pada akhir node

pointernya menunjuk NULL.

Sedangkan, Linked List adalah node-node tersebut saling terhubung satu sama lain.

Setiap node pada linked list mempunyai field yang berisi pointer ke node

berikutnya, dan juga memiliki field yang berisi data. Node terakhir akan menunjuk

Page 34: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

34

ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi

linked list.

G. PEMBUATAN SINGLE LINKED LIST NON CIRCULAR

Deklarasi Node :

typedef struct TNode{

int data;

TNode *next;

};

Keterangan:

Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe

integer dan field next yang bertipe pointer dari TNode.

Setelah pembuatan struct, buat variabel head yang bertipe pointer dari TNode

yang berguna sebagai kepala linked list.

Digunakan perintah new untuk mempersiapkan sebuah node baru berserta

alokasi memorinya, kemudian node tersebut diisi data dan pointer nextnya

ditunjuk ke NULL.

TNode *baru;

baru = new TNode;

baru->data = data baru;

baru->next = NULL;

H. SINGLE LINKED LIST NON CIRCULAR MENGGUNAKAN HEAD

Dibutuhkan satu buah variabel pointer yaitu head yang akan selalu menunjuk pada

node pertama.

Page 35: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

35

1. Deklarasi Pointer Penunjuk Head Single Linked List

Manipulasi linked list tidak dapat dilakukan langsung ke node yang dituju,

melainkan harus menggunakan suatu pointer penunjuk ke node pertama

(Head) dalam linked list.

Deklarasinya sebagai berikut:

TNode *head;

2. Fungsi Inisialisasi Single Linked List

3. Function untuk mengetahui kondisi Single Linked List

Jika pointer head tidak menunjuk pada suatu node maka kosong

int isEmpty()

{

if (head == NULL) return 1;

else return 0;

}

4. Menambah Node di Depan

Penambahan node baru akan dikaitan di node paling depan, namun pada saat

pertama kali (data masih kosong), maka penambahan data dilakukan dengan

cara: node head ditunjukkan ke node baru tersebut.

Prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan

menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi

data terdepan.

Menambah Node di Depan dengan C++

Page 36: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

36

Ilustrasi penambahan node didepan

5. Menambah Node di Belakang

Penambahan data dilakukan di belakang, namun pada saat pertama kali,

node langsung ditunjuk oleh head.

Page 37: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

37

Penambahan di belakang membutuhkan pointer bantu untuk mengetahui

node terbelakang. Kemudian, dikaitkan dengan node baru.

Untuk mengetahui data terbelakang perlu digunakan perulangan.

Menambahan node dibelakang dengan C++

Ilustrasi penambahan node dibelakang

Page 38: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

38

6. Menghapus Node di Depan

Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk

oleh pointer, maka harus dilakukan penggunakan suatu pointer lain (hapus)

yang digunakan untuk menunjuk node yang akan dihapus, barulah kemudian

menghapus pointer hapus dengan menggunakan perintah delete.

Sebelum data terdepan dihapus, terlebih dahulu head harus menunjuk ke

node berikutnya agar list tidak putus, sehingga node setelah head lama akan

menjadi head baru

Jika head masih NULL maka berarti data masih kosong!

Menghapus Node didepan dengan C++

Page 39: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

39

Ilustrasi penghapusan node didepan

7. Menghapus Node di Belakang

Membutuhkan pointer bantu dan hapus. Pointer hapus digunakan untuk

menunjuk node yang akan dihapus, pointer bantu untuk menunjuk node

sebelum node yang dihapus yang akan menjadi node terakhir.

Pointer bantu digunakan untuk menunjuk ke nilai NULL. Pointer bantu

selalu bergerak sampai sebelum node yang akan dihapus, kemudian pointer

hapus diletakkan setelah pointer bantu. Selanjutnya pointer hapus akan

dihapus, pointer bantu akan menunjuk ke NULL.

Menghapus node dibelakang dengan C++

Page 40: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

40

Ilustrasi penghapusan node dibelakang

8. Function untuk menghapus semua elemen Linked List

void clear()

{

TNode *bantu,*hapus;

bantu = head;

while(bantu!=NULL) { hapus = bantu;

bantu = bantu->next;

delete hapus;

}

Page 41: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

41

head = NULL;

}

I. MENAMPILKAN / MEMBACA ISI LINKED LIST

Linked list ditelusuri satu-persatu dari awal sampai akhir node.

Penelusuran dilakukan dengan menggunakan pointer bantu, karena pointer head

yang menjadi tanda awal list tidak boleh berubah/berganti posisi. Penelusuran

dilakukan terus sampai ditemukan node terakhir yang menunjuk ke nilai NULL.

Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan

membaca isi datanya dengan menggunakan field next sehingga dapat saling berkait.

Jika head masih NULL berarti data masih kosong!

void tampil(){

TNode *bantu;

bantu = head;

if(isEmpty()==0){

while(bantu!=NULL){

cout <<bantu ->data<<" ";

bantu=bantu->next;

}

printf(“\n”);

} else printf(“Masih kosong\n“);

}

J. SINGLE LINKED LIST NON CIRCULAR MENGGUNAKAN HEAD DAN

TAIL

Dibutuhkan dua variabel pointer yaitu head dan tail. Head selalu menunjuk

pada node pertama, sedangkan tail selalu menunjuk pada node terakhir. Kelebihan

dari Single Linked List dengan Head & Tail adalah pada penambahan data di

belakang, hanya dibutuhkan tail yang mengikat node baru saja tanpa harus

menggunakan perulangan pointer bantu.

Page 42: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

42

1. Inisialisasi Linked List

TNode *head, *tail;

2. Fungsi Inisialisasi Linked List

void init(){

head = NULL;

tail = NULL;

}

3. Function untuk mengetahui kondisi LinkedList kosong / tidak

int isEmpty(){

if(tail == NULL) return 1;

else return 0;

}

4. Menambah Node di Depan Dengan Head dan Tail

Ilustrasi penambahan node didepan dengan head dan tail

Page 43: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

43

5. Menambah Node di Belakang Dengan Head dan Tail

Ilustrasi penambahan node dibelakang dengan head dan tail

Page 44: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

44

6. Menghapus Node di Depan (Dengan Head dan Tail)

Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk

oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan

pointer hapus pada head, kemudian dilakukan pergeseran head ke node

berikutnya sehingga data setelah head menjadi head baru, kemudian

menghapus pointer hapus dengan menggunakan perintah delete.

Jika tail masih NULL maka berarti list masih kosong!

Ilustrasi Menghapus Node di Depan (Dengan Head dan Tail)

Page 45: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

45

7. Menghapus Node di Belakang (Dengan Head dan Tail)

Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk

oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan

variabel hapus pada tail. Jika tail masih NULL maka berarti list masih

kosong!

Dibutuhkan pointer bantu untuk membantu pergeseran dari head ke node

berikutnya sampai sebelum tail, sehingga tail dapat ditunjukkan ke bantu,

dan bantu tersebut akan menjadi tail yang baru.

Setelah itu hapus pointer hapus dengan menggunakan perintah delete.

Ilustrasi Menghapus Node di Belakang (Dengan Head dan Tail)

Page 46: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

46

8. Function untuk menghapus semua elemen LinkedList dengan HEAD & TAIL

void clear()

{

TNode *bantu,*hapus;

bantu = head;

while(bantu!=NULL)

{

hapus = bantu;

bantu = bantu->next;

delete hapus;

}

head = NULL;

tail = NULL;

}

Page 47: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

47

LATIHAN 5.

Buatlah Ilustrasi / Penggambaran untuk menambah dan menghapus node di posisi

tengah pada :

1. Single Linked List dengan Head

2. Single Linked List dengan Head & Trail

Page 48: MODUL STRUKTUR DATA - BSI...2. Konversi dari Bilangan Desimal ke Oktal Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak bisa dibagi lagi Cara yang digunakan

48

DAFTAR PUSTAKA

Jogiyanto.2000.Konsep Dasar Pemrograman Bahasa C, Andi:Yogyakarta

Nugroho, Adi. 2009. Algoritma Dan Struktur Data Dalam Bahasa Java. Andi :

Yogyakarta

Pranata,Antonie.2000.Algortima dan Pemrograman, J&J Learning:Yogyakarta

Sanjaya,Dwi.2001. Bertualang dengan Struktur Data di Planet Pascal,J&J

Learning:Yogyakarta

Sjukani. Moh. 2009. Struktur Data (Algoritma & struktur Data 2) Dengan C, C++. Edisi

3. Mitra Wacana Media : Jakarta.