Pertemuan 1 Konsep Struktur Data Array STRUKTUR DATA

  • Slides: 41
Download presentation
Pertemuan 1 Konsep Struktur Data & Array

Pertemuan 1 Konsep Struktur Data & Array

STRUKTUR DATA Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan

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.

Pada garis besarnya, Data dapat dikategorikan menjadi : A. Type Data Sederhana / Data

Pada garis besarnya, Data dapat dikategorikan menjadi : A. Type Data Sederhana / Data Sederhana Terdiri dari : 1. Data Sederhana Tunggal Misalnya : Integer, Real/Float, Boolean dan Character 2. Data Sederhana Majemuk Misalnya : String B. Struktur Data Terdiri dari : 1. Struktur Data Sederhana Misalnya Array dan Record

2. Struktur Data Majemuk Terdiri dari : a. Linier Misalnya : Stack, Queue dan

2. Struktur Data Majemuk Terdiri dari : a. Linier Misalnya : Stack, Queue dan Linear Linked List. b. Non Linier Misalnya : Pohon (Tree), Pohon Biner (Binary Tree), Pohon Cari Biner (Binary Search Tree), General Tree serta Graph.

TYPE DATA SEDERHANA (Dalam Program C++) 1. INTEGER Merupakan Bilangan Bulat dan tidak mengandung

TYPE DATA SEDERHANA (Dalam Program C++) 1. INTEGER Merupakan Bilangan Bulat dan tidak mengandung pecahan. seperti : . . . -3, -2, -1, 0, 1, 2, 3, . . Type data Integer Type Range Ukuran (Byte) Integer - 32768. . 32767 2 Long - 2147483648. . 2147483647 4 Contoh : int bil; long bil 2 =50000;

Contoh : program #include <iostream. h> #include <conio. h> tercetak void main() { int

Contoh : program #include <iostream. h> #include <conio. h> tercetak void main() { int a=150; int b=250; a=a*b; cout<<"hasilnya adalah : " << a; getche(); } ? Mengapa yang tercetak = -28036 , hasil perkalian a=150, b=250 adalah 37500 + karena integer memiliki ukuran = 2 byte (16 bit) dengan jangkauan angka - 32768. . 32767 sehingga kapasitas tampung = 216 = 65536. maka yg tercetak adalah = 37500 – 65536 = -28036

 2. REAL / FLOATING POINT Type data yang merupakan bilangan pecahan. Jenis Data

2. REAL / FLOATING POINT Type data yang merupakan bilangan pecahan. Jenis Data Real/float ditulis dgn menggunakan titik(koma) desimal. Misalnya : 0. 32 4, 35 -131. 128 Type Real dapat juga ditulis dengan Rumus : M * Re = X M = Pecahan, R = Radix, e = Exponen, X = Hasil Bilangan, Misalnya : 3. 2 * 10 -1 = 0. 32 4. 35 * 102 = 435

Type data REAL Type Range Ukuran (Byte) Float 3. 4 x 10 -38 s/d

Type data REAL Type Range Ukuran (Byte) Float 3. 4 x 10 -38 s/d 3. 4 x 10 +38 4 Double 1. 7 x 10 -308 s/d 1. 7 x 10 +308 8 Long Double 3. 4 x 10 -4932 s/d 1. 1 x 10 + 4932 10 Contoh : float disc; double kurs =1. 02;

3. BOOLEAN ATAU LOGICAL Type data yang hanya mempunyai dua bentuk keluaran yaitu nilai

3. BOOLEAN ATAU LOGICAL Type data yang hanya mempunyai dua bentuk keluaran yaitu nilai True dan False (Benar dan Salah) yang dinyatakan dengan 1 dan 0, Sehingga satuan data yang terpakai cukup satu bit saja. Operator yang digunakan adalah : And, Or, Not, XOR (ekslusif or/ bernilai 1 jika a≠b atau b≠ a) Input Operator Logika NOT (!) AND (&&) OR (||) A B C !A !B !C A&&B&&C A||B||C 0 0 0 1 1 1 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1

 4. CHARACTER Type data yang terdiri dari aksara (simbol) yang meliputi digit numerik,

4. CHARACTER Type data yang terdiri dari aksara (simbol) yang meliputi digit numerik, character alfabetik dan spesial character. Untuk menuliskan tipe char, karakter perlu ditulis di dalam tanda petik tunggal ( ‘ ) Contoh : ‘A’ karakter berupa huruf A ‘ 1’ karakter berupa angka 1 ‘*’ karakter simbol *

5. STRING Merupakan type data majemuk yang terbentuk dari kumpulan character sebanyak 256 (default)

5. STRING Merupakan type data majemuk yang terbentuk dari kumpulan character sebanyak 256 (default) dengan jangkauan niai 0 - 255. Kumpulan character yang digunakan untuk membentuk

B. Struktur Data Array Dimensi 1 & 2 Array / Larik : Struktur Data

B. Struktur Data 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 yang terurut dan homogen. Terurut : Dapat diartikan bahwa elemen tersebut dapat diidentifikasi sebagai elemen pertama, elemen kedua dan seterusnya sampai elemen ke-n. Homogen : Adalah bahwa setiap elemen dari sebuah Array tertentu haruslah mempunyai type data yang sama.

Definisi Array Sebuah Array dapat mempunyai elemen yang seluruhnya berupa integer atau character atau

Definisi Array Sebuah Array dapat mempunyai elemen yang seluruhnya berupa integer atau character atau String bahkan dapat pula terjadi suatu Array mempunyai elemen berupa Array. Karakteristik Array : 1. Mempunyai batasan dari pemesanan alokasi memory (Bersifat Statis) 2. Mempunyai Type Data Sama (Bersifat Homogen) 3. Dapat Diakses Secara Acak

Definisi Array 3 Hal yang harus diketahui dalam mendeklarasikan array : a. Type data

Definisi Array 3 Hal yang harus diketahui dalam mendeklarasikan array : a. Type data array b. Nama variabel array c. Subskrip / index array Jenis Array (yang akan dipelajari) adalah : a. Array Dimensi Satu (One Dimensional Array) b. Array Dimensi Dua (Two Dimensional Array) c. Array Dimensi Tiga (Thee Dimensional Array)

1. ARRAY DIMENSI SATU (One Dimensional Array) Dapat disebut juga dengan istilah vektor yang

1. 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 4 1 2 Subscript / Index 3

Array Dimensi Satu #include <iostream. h> #include <conio. h> void main() { int bil

Array Dimensi Satu #include <iostream. h> #include <conio. h> void main() { int bil [5]; clrscr; cout<<"Masukkan 5 bilangan genap : "<<endl; for (int i = 1; i <= 5; i++) { cout<<"Bilangan "<<i<<" : "; cin>> bil[i]; cout<<endl; } cout<<"5 bilangan yang dimasukkan : "<<endl; for (int i = 1; i <=5; i++) cout<<" "<<bil[i]; getch(); }

Function BU: type name ( parameter 1, parameter 2, . . . ) {

Function BU: type name ( parameter 1, parameter 2, . . . ) { statements } #include <iostream. h> #include <conio. h> void isiarray (int arg[], int length) // function isi array// { for (int n=1; n<=length; n++) { cout <<" bilangan ke-" <<n<< " "; cin >> arg[n] ; } } void cetakarray (int arg[], int length) // function cetak array// { for (int n=1; n<=length; n++) cout << arg[n] << " "; cout << "n"; } void main () {// program utama // int bil[5]; int y; cout<<"Masukkan bilangan genap (max 5 bilangan) : "; cin>>y; isiarray (bil, y); cetakarray (bil, y); getch(); }

Array Dimensi Satu Rumus untuk menentukan jumlah elemen dalam Array : n = Perkalian

Array Dimensi Satu Rumus untuk menentukan jumlah elemen dalam Array : n = Perkalian dari elemen sebelumnya (Elemen Array) (untuk array dimensi dua & tiga) i=1 Contoh : Suatu Array A dideklarasikan sbb : int A[10]; maka jumlah elemen Array dimensi satu tersebut adalah = 10

Rumus : @A[i] = B + (i – 1) * L PEMETAAN (MAPPING) ARRAY

Rumus : @A[i] = B + (i – 1) * L PEMETAAN (MAPPING) ARRAY DIMENSI SATU KE STORAGE Dimana : @A[i] : Posisi Array yg dicari B : Posisi awal index di memory komputer i : Subkrip atau indeks array yg dicari L : Ukuran / Besar memory suatu type data Contoh : Suatu Array A dideklarasikan sebagai berikut : int A[5]; dengan alamat awal index berada di 0011 (H) dan ukuran memory type data integer = 2 Tentukan berapa alamat array A[3] ?

Rumus : @A[i] = B + (i – 1) * L Diketahui : @A[i]

Rumus : @A[i] = B + (i – 1) * L Diketahui : @A[i] = A[3] B = 0011 (H) i = 3 L = 2 0 1 2 Penyelesaian : A[3] = 0011(H) + (3 – 1) * 2 = 0011(H) + 4 (D) = 0011(H) + 4 (H) = 0015(H) 3 4 A[1] A[2] A[3] A[4] A[5] 0011 0013 0015 0017 0019 4 Desimal = 4 Hexa

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

KONVERSI BILANGAN 1. Decimal adalah bilangan berbasis sepuluh yang terdiridari 0, 1, 2, 3, 4, 5, 6, 7, 8, dan 9 2. 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) =. .

Contoh KONVERSI ANTAR BILANGAN Konversi Bilangan Decimal ke Hexadecimal Contoh 254 (10) =. . . . (16) Caranya dengan membagi bilangan tersebut dengan enam belas sampai 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.

Cara lain mengenal alamat elemen array 1. Terdapat array 1 dimensi dengan char A[10].

Cara lain mengenal alamat elemen array 1. Terdapat array 1 dimensi dengan char A[10]. Diketahui &A[0] = 1000(H). Berapa alamat array untuk posisi A[7]? Jawab : Tipe char = 1 byte Perpindahan=7 -0=7 elemen * 1 byte=7 Byte, jadi &A[7]=1000(H) + 0007 H=1007(H)

2. Terdapat array 1 dimensi dengan int A[10]. Diketahui &A[0] = 1000(H). Berapa alamat

2. Terdapat array 1 dimensi dengan int A[10]. Diketahui &A[0] = 1000(H). Berapa alamat array untuk posisi A[7]? Jawab : Tipe int = 2 byte Perpindahan=7 -0=7 elemen * 2 byte =14 Byte, jadi &A[7]=1000(H) + 000 E(H)=100 E(H)

Array Dimensi Dua 2. ARRAY DIMENSI DUA (Two Dimensional Array) Sering digunakan dalam menterjemahkan

Array Dimensi Dua 2. ARRAY DIMENSI DUA (Two Dimensional Array) Sering digunakan dalam menterjemahkan matriks pada pemrograman. Deklarasi : Type_Data Nama_Variabel [Index 1] [index 2]; Misal : int A[3][2]; Penggambaran secara Logika : 0 0 1 2 1

Menentukan jumlah elemen dalam Array dimensi dua: n = Perkalian dari elemen sebelumnya (Elemen

Menentukan jumlah elemen dalam Array dimensi dua: n = Perkalian dari elemen sebelumnya (Elemen array) (untuk array dimensi dua & tiga) i=1 Contoh : Suatu Array X dideklarasikan sbb : int X[4][3]; maka jumlah elemen Array dimensi dua tersebut adalah : (4) * (3) = 12

PEMETAAN (MAPPING) ARRAY DIMENSI DUA KE STORAGE Terbagi Dua cara pandang (representasi) yang berbeda

PEMETAAN (MAPPING) ARRAY DIMENSI DUA KE STORAGE Terbagi Dua cara pandang (representasi) yang berbeda : 1. Secara Kolom Per Kolom (Coloumn Major Order/CMO) @M[i][j] = M[0][0] + {(j - 1) * K + (i - 1)} * L 2. Secara Baris Per Baris (Row Major Order / RMO) @M[i][j] = M[0][0] + {(i - 1) * N + (j - 1)} * L Keterangan : @M[i][j] = Posisi Array yg dicari, M[0][0] = Posisi alamat awal index array, i = Baris, j = kolom, L = Ukuran memory type data K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris

Penggambaran secara logika Misal : int M[3][2]; (Array dengan 3 Baris & 2 Kolom)

Penggambaran secara logika Misal : int M[3][2]; (Array dengan 3 Baris & 2 Kolom) 0 1 2 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 baris = 2 2. Baris Per Kolom (Coloumn Major O rder / CMO) M[0, 0] M[1, 0] M[2, 0] M[0, 1] Jumlah elemen per kolom = 3 M[1, 1] M[2, 1]

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

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 ? 0 0 1 1 2 2 3 3 index 1 1 0011(H) ? ? 2 2 index

Lanjutan Contoh Pemetaan : Penyelesaian : Secara Baris Per Baris (Row Major Oder /

Lanjutan Contoh Pemetaan : Penyelesaian : Secara Baris Per Baris (Row Major Oder / RMO) @M[i][j] = @M[0][0] + {(i - 1) * N + (j - 1)} * L X[3][2] = 0011(H) + {(3 – 1) * 3 + (2 – 1)} * 4 = 0011(H) + 28 (D) 1 C (H) = 0011(H) + 1 C (H) = 002 D(H) Keterangan : @M[i][j] = Posisi Array yg dicari, M[0][0] = Posisi alamat awal index array, i = Baris, j = kolom, L = Ukuran memory type data K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris

Lanjutan Contoh Pemetaan : Penyelesaian : Secara Kolom Per Kolom (Coloumn Major Oder /

Lanjutan Contoh Pemetaan : Penyelesaian : Secara Kolom Per Kolom (Coloumn Major Oder / CMO) @M[i][j] = @M[0][0] + {(j - 1) * K + (i - 1)} * L X[3][2] = 0011(H) + {(2 – 1) * 4 + (3 – 1)} * 4 = 0011(H) + 24 (D) 18 (H) = 0011(H) + 18 (H) = 0029(H) Keterangan : @M[i][j] = Posisi Array yg dicari, M[0][0] = Posisi alamat awal index array, i = Baris, j = kolom, L = Ukuran memory type data K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris

Contoh program array dua dimensi #include<stdio. h> #include<conio. h> main() { int a[3][5]; for

Contoh program array dua dimensi #include<stdio. h> #include<conio. h> main() { int a[3][5]; for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { printf("%x ", &a[i][j]); } printf("n"); } getch(); }

Contoh Array dimensi 2 adalah seperti program input matrik dengan hasil output seperti berikut

Contoh Array dimensi 2 adalah seperti program input matrik dengan hasil output seperti berikut : Nilai 1 nilai 2 70 70 80 60 60 70 70 75 Array hasil pendefinisian diatas dapat dinyatakan seperti di bawah ini :

#include <iostream. h> #include <iomanip. h> #include <conio. h> void isiarray (int arg[][2], int

#include <iostream. h> #include <iomanip. h> #include <conio. h> void isiarray (int arg[][2], int length) /*function isi array, angka[2] sebagai batasan kolom array*/ { for (int n=0; n<length; n++) for ( int i=1; i<=2; i++){ cout <<" nilai ke "<<i<<" "; cin >>arg[n][i] ; } } void cetakarray (int arg[][2], int length) /* function cetak array, angka[2] sebagai batasan kolom array */ { for (int n=0; n<length; n++) { for (int i=1; i<=2; i++) cout << arg[n][i] << " "<<endl; cout << "n"; } } main () { int nilai[5][2]; int y; cout<<"Masukkan jumlah baris data nilai (max 5) : "; cin>>y; isiarray (nilai, y); cetakarray (nilai, y); getch(); }

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

Latihan : 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?

Latihan Soal Struktur Data (Pertemuan 1) 1. Tipe data int memiliki nilai jangkauan antara.

Latihan Soal Struktur Data (Pertemuan 1) 1. Tipe data int memiliki nilai jangkauan antara. . . a. -32768. . 32767 d. 32342. . 32768 b. 32766. . 32829 e. 32342… 32829 c. -32500. . 32500 2. Tipe Data yang terdiri dari aksara (simbol) yang meliputi digit numerik, alfabetik adalah tipe data? . . . a. Float d. Character e. String b. Integer c. BOOL

2. Tipe Data yang terdiri dari aksara (simbol) yang meliputi digit numerik, alfabetik adalah

2. Tipe Data yang terdiri dari aksara (simbol) yang meliputi digit numerik, alfabetik adalah tipe data? . . . a. Float d. Character e. String b. Integer c. BOOL

3. void main() {. . (a). . x, y, z; clrscr(); cout<<"n input nilai

3. void main() {. . (a). . x, y, z; clrscr(); cout<<"n input nilai X="; cin >>x; cout<<"n input nilai Y="; cin >>y; z = x + y; cout <<"n hasil penjumlahan ="<<z; getch(); } Type data yang tepat untuk (a) adalah. . a. Boolean b. String a. c. Char d. Integer e. Array

4. Terdapat Array : A [2][2] maka jumlah elemen Array tersebut adalah …… a.

4. Terdapat Array : A [2][2] maka jumlah elemen Array tersebut adalah …… a. 2 d. 15 b. 4 e. 20 c. 22 5. Diketahui float A[5] dan lokasi awal terletak di alamat 00 F (H) , maka lokasi A[3] adalah …. . d. 01 B(H) a. 00 FC(H) e. 111(H) b. 017(H) c. 071(H)

5. Diketahui float A[5] dan lokasi awal terletak di alamat 00 F(H) , maka

5. Diketahui float A[5] dan lokasi awal terletak di alamat 00 F(H) , maka lokasi A[3] adalah …. . a. 00 FC(H) b. 017(H) c. 071(H) d. 01 B(H) e. 111(H) 1. Tipe data int memiliki nilai jangkauan antara. . . d. 32342. . 32768 a. -32768. . 32767 e. 32342… 32829 b. 32766. . 32829 c. -32500. . 32500