Wednesday, October 17, 2018

"Array & Pointer"

Pada kelas besar algo 17 Oktober 2018, saya mempelajari tentang “Pointer & Array”.
Pointer merupakan variable yang menyimpan alamat dari variable lainnya.
Syntax : <type> *ptr_name;
Kedua operator yang sering dipake untuk pointer : * (isi dari) dan & (alamat dari)

Contoh :
Int i, *ptr; ptr = &i; maka ketika kita inisialisasi ptr = 5 maka I juga akan menjadi 5
Kalau kita tidak inisialisasi nilai ptr, ketika kita print variable ptr yang akan keluar ada alamat dari variable i

<Pointer to Pointer>
Pointer juga dapat digunakan untuk menyimpan alamat dari pointer lainnya.
Contoh :
int i; *ptr, **ptr2; ptr = &I; ptr2 = **ptr
Ketika kita assign nilai ptr = 5, maka i =5, namun jika kita assign ptr 2 = 9 maka, ptr dan i juga akan berubah menjadi 9 karena ptr2 membaca nilai dari ptr dan ptr membaca nilai i
Note : ketika kita ingin membuat pointer dari pointer lainnya, kita wajib menambahkan 1 * lebih banyak dari jumlah * pointer sebelumnya.

<Array>
Array merupakan kumpulan data yang dapat disimpan menggunakan nama variable yang sama.
Karakteristik Array :
-          Homogen : semua elemen memiliki tipe data yang sama
-          Random Access : elemen di dalam array bisa diakses secara random, tidak harus berurutan. Karena setiap elemen dari array terletak di address yang bersebelahan.
Syntax : type namavariabel [jumlahvariabel]

Array 1 Dimensi
Ketika kita inisialisasi int a[10] maka variable a dapat menampung 10 angka dari indeks 0 sampai 9. (a[0] sampai a[9]). Indeks terakhir akan otomatis diisi oleh ‘ \0 ’ atau biasa disebut null. Null digunakan sebagai penanda akhir dari array.
Array dapat diinisialisasi secara explisit tanpa deklarasi jumlah variable.
int b[ ] = {1, 2 , -4, -8}; maka array b punya 4 elemen.
int b[8] = {1, 2 , -4, -8}; maka array b punya 8 elemen. Sisa dari 4 elemen lainnya akan diisi oleh 0.

Ada 2 cara mengakses array : *(A+2) atau A[2]
A sama dengan A[0] atau elemen pertama di array.
Array 2 Dimensi
Syntax : type namavariabel [baris][kolom]
Ketika diprint akan berbentuk sebagai tabel baris x kolom.

< Array Character / String>
Syntax : namaarray[banyakkarakter]
String merupakan array dari karakter yang diakhiri dengan karakter null ( \0 ).
String biasanya ditulis diawal dan diakhiri dengan double quote. ("")

"Selection"


Pada kelas besar algoritma  tanggal 10 Oktober 2018, saya mempelajari  materi tentang “Selection”.
Selection merupakan sekumpulan perintah yang bisa dijalankan atau tidak tergantung dari syarat yang ditentukan dari user tersebut.
Secara garis besar, selection dibagi menjadi 3 yaitu :
1.       If
2.       If-else
3.       Switch-case
<Selection If>
Hanya statement yang memenuhi kondisi yang ditentukan yang akan dijalankan oleh program.
Syntax :
if (kondisi) statement;                   (untuk 1 statement saja)
Atau
if (kondisi) {                                        (untuk statement lebih dari 1)
                Statement1;
                Statement2;
                …..
}

<Selection If-Else>
Jika statement memenuhi kondisi yang ditentukan, maka perintah yang dijalankan adalah statement bagian “if”, tetapi jika tidak memenuhi maka perintah yang dijalankan adalah statement bagian “else”.
Syntax :
if (kondisi) statement1;                 (untuk 1 statement saja)
else statement2;
Atau
if (kondisi) {                                        (untuk statement lebih dari 1)
                Statement1;
                Statement2;
                …..
}
else {                                     (untuk statement lebih dari 1)
                Statement3;
                Statement4;
                …..
}

<Nested If / Nested If-Else>
Bisa juga dibilang Selection beranak, Program akan mengecek lebih dari 1 kondisi agar statement bisa dijalankan.
Syntax :
if (kondisi) statement1;
                if(kondisi2) statement2;
                                if (kondisi3) statement3;
Atau
if (kondisi) statement 1;
else
if(kondisi2) statement2;
else
                                if (kondisi3) statement3;

<Switch-Case>
Cara ini sebenarnya sama saja dengan if-else, tetapi jika if-else terlalu banyak anaknya sehingga susah dibaca, maka switch case lebih gampang untuk dibaca meskipun banyak kondisinya.
Syntax :
                switch (variable) {
                                case constant 1 : statement1; break;
                                case constant 2 : statement2; break;
case constant 3 : statement3; break;
default : statement;
                }
Cara kerja switch adalah dengan melihat setiap case constant. Program akan menjalankan case yang cocok dengan inputan user. Jika tidak ada yg cocok, maka switch akan menjalankan perintah default.
Note :
-          Switch case hanya menerima tipe karakter integer & char
-          Di setiap case constant, setelah statement wajib diberi break agar saat program berjalan case yang berjalan tidak bocor ke bawahnya.

< Operator ?>
Fungsi dari operator ini sama seperti if else juga, tapi bedanya dia memberi nilai pada suatu variable.
Syntax : (kondisi) ? statement1 : statement2
Jika kondisi terpenuhi, yg dijalankan statement 1. Jika tidak terpenuhi yang dijalankan statement 2.

<Goto>
Dalam Bahasa c, masih ada fungsi goto. Tetapi fungsi ini sangat tidak disarankan untuk dipakai karena dapat membuat bingung orang yang mengkoding sendiri. Karena kalau ada fungsi ini, program jalannya tidak berurutan. Bisa dari bawah ke atas kemudian ke tengah dan kebawah lagi.

<Error Type>
Secara umum, ada 4 tipe error :
1.       Compile-Time Error, diakibatkan oleh syntax error. Biasanya hal ini sering terjadi kalau lupa menginisialisasi variable, lupa titik koma, dll
2.       Link-Time Error
3.       Run-Time Error, Program berhasil dicompile, tetapi saat dijalankan hasilnya gak jelas bahkan error. Biasanya diakibatkan oleh overflow, pembagian dengan 0,dll
4.       Logical Error, Hasil dari program salah, karena kesalahan algoritma program.