Pertemuan 1 - Pointer, Array and Introduction to Data Structure - 2101657966 - Vincent Wuliango

Pada hari ini saya merangkum tentang materi Array, Pointer, Types of Data Structures, Abstract Data Type.
Array
Array adalah kumpulan data yang mempunyai tipe data yang sama (homogen). Elemen” pada array disimpan dalam memori dengan lokasi yang berurutan dan direferensikan sebagai indeks. Indeks array dimulai dari 0. Array mempunyai 2 tipe yaitu single dimensional array dan multiple dimensional array.
      One Dimensional Array
int angka[5] = { 1, 4, 6, 8, 10};
jika dipanggil
angka[1] = 4
Ingat indeks array dimulai dari 0
maka angka[0] = 1.
      ___________________________________________________________________________
      Multi Dimensional Array
int tabel[2][2] = {1, 2};
                           {3, 4};
maksud [2][2] disini sama kayak baris dan kolom.
Storing Array Values
Ada 3 step dalam menyimpan nilai pada array :
1. Menginisialisasi element”.
2. Masukan nilai pada element.
3. Menetapkan nilai pada element.
Example:
         Initialization of Arrays
            Example:         int marks[5] = {90, 82, 78, 95, 88};
         Inputting Values
            Example:         int i, marks[10];
                                    for (i=0; i<10; i++)
                                                scanf(“%d”, &marks[i]);
         Assigning Values
            Example:         int i, arr1[10], arr2[10];
                                    for(i=0; i<10; i++)
                                                arr2[i] = arr1[i];
Operations in Array
         Traversal adalah proses mengolah seluruh elemen secara sistematik.
         Insertion adalah proses menyisipkan (menambahkan) element pada indeks yang dituju.
         Searching adalah proses pencarian suatu nilai di array.
         Deletion adalah proses menghapus element pada indeks yang dituju.
         Merging adalah proses
         Sorting adalah proses mengurutkan data pada element di array
Pointer
Pointer adalah variable yang digunakan sebagai penunjuk alamat dalam memori. Dengan arti lain pointer berisi alamat dari variable yang dituju.
Ada 2 operator penting yang digunakan pointer :
      & = operator alamat
      * = operator yang mengakses nilai secara langsung yang terdapat dalam variable berpointer.
Example :
Kita deklarasi dulu :
            int x;
            int *px;
x tipe datanya integer dan pointer px juga integer,jika:
            px  = &x;
maka &x mengambil alamat dari si x dan menetapkan sebagai nilai si px.
Untuk menetapkan nilai si x kita bisa buat :
            x = 10;
atau
            *px = 10;
Data Structure
Sturktur data adalah susunan data baik dalam memori computer maupun dalam disk. Struktur data mempunyai beberapa tipe yaitu arrays, linked lists, queues, stacks, binary tress, hash tables.
Type of Data Structure
1. Arrays
Array adalah kumpulan data yang mempunyai tipe data yang sama (homogen).
Contohnya ada di line atas.
2. Linked Lists
Linked lists adalah struktur data yang sangat dinamis yang dimana element dapat ditambahkan ke atau dihapus dari mana saja sesuka hati. Dan setiap element disebut sebagai node.
3. Queues
Queue adalah unsur yang pertama masuk itulah yang bakal keluar pertama (seperti system ngantri).
4. Stacks

Stack adalah unsur yang terakhir diletakin itulah yang keluar pertama (seperti shuttlecock yang berada di dalam tabungnya pasti kita mengambilnya dari yang paling terakhir karena tempat mengambilnya cuman ada 1). Setiap stack memiliki variable top yang terkait dengannya.
5. Binary Tress

Binary Tress adalah struktur data yang didefinisikan sebagai kumpulan element yang disebut node. Setiap node berisi pointer kiri, pointer kanan, dan element data.
Abstract Data Type
Tipe data abstrak adalah model matematika yang merujuk pada sejumlah bentuk struktur data yang memiliki kegunaan atau perilaku yang serupa.
Di C/C++ terdapat class dan struct yang membantu programmer dalam mengimplementasikan tipe data abstrak.
Example :
Kita ingin membuat ADT bilangan natural yang memiliki bilangan bulat sebagai objek dan beberapa fungsi sebagai operasi.
structure Number is
objects : an integer x
functions         :
bool is_zero()  if ( x == 0 ) return TRUE else return FALSE
bool equal(y)   if ( x == y ) return TRUE else return FALSE
void set(y)       x = y
void add(y)      x = x + y
int get ()           return x

Pertanyaan  dari Ko Dosen:
1. Berapa batasan maksimal dimensi array?
Jawaban: 
Batasan array itu tergantung dari program compiler yang menyediakan batasan alokasi memori.
Dari sisi lain juga tergantung dari kita yang menginput berapa banyak dimensi dari array 
tersebut. Jadi kitalah yang membatasi inputan array tersebut sampai memenuhi alokasi memori.
2. Beda single pointer dengan double pointer?
Jawaban:
Misal:
#include<stdio.h>
int main(){
    int x = 50;
    int *x1; 
    int **x2;
    x1=&x;
    x2=&x1;  
    printf("%d\n",x);
    printf("%d\n",*x1);
    printf("%d",**x2);
    getchar();
    return 0;
}
Hasil output
50
50
50
Jadi maskud single pointer itu adalah dia langsung menuju ke alamat variabel yang dituju 
(*x1 ==> x1 = &x ==> x = 50) sedangkan double pointer itu adalah dia menuju ke alamat 
variabel yang dituju tetapi dalam alamat tersebut masih terdapat alamat variabel lain,
sehingga bisa diistilahkan pointer to pointer (**x2 ==> x2 = &x1 ==> x1 = &x ==> x = 50).
3. Berapa batas jumlah maksimal * pointer?
Jawaban:
Saya mencoba memberi * sebanyak 5(*****x2) dari contoh program di atas,maka yang terjadi 
adalah error,jadi bisa disimpulkan batasan maksimal * pointer tu adalah 4(****x2).

Komentar