Linked List

|| || || Leave a komentar

Dengan menggunakan linked list maka programmer dapat menyimpan datanya kapanpun dibutuhkan.

Linked list mirip dangan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time). Secara umum linked list tersusun atas sejumlah bagian bagian data yang lebih kecil yang terhubung dan tiap - tiap rantai terhubung dengan pointer.Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis
dan biasanya berupa struct yang terdiri dari beberapa field.
Linked list memiliki beberapa jenis, di antaranya :
A. Singly linked list
B. Double linked list
C. Multiply linked list
D. Linear linked list
E. Circular Linked List
Namun di sini, hanya akan dijelaskan hanya Singly linked list dan Double linked listkarena itu sudah menyeluruh dalam linked list itu.
A. Single linked list non circular
Tempat yang disediakan pada satu area memori tertentu untuk menyimpan data dikenal dengan sebutan node atau simpul. Setiap node memiliki pointer yang menunjuk ke simpul berikutnya sehingga terbentuk satu untaian,dengan demikian hanya diperlukan sebuah variabel pointer.Susunan berupa untaian semacam ini disebut Single Linked Lis (NULL memilik nilai khusus yang artinya tidak menunjuk ke mana-mana.Biasanya Linked List pada titik akhirnya akan menunjuk ke NULL).
Dalam pembuatan single linked list dapat menggunakan dua metoda:
a. LIFO (Last In First Out) aplikasinya : Stack (Tumpukan)Adalah suatu metoda pembuatan linked list dimana data yang masuk paling akhir adalah data yang keluar paling awal.
b. FIFO (First In First Out) aplikasinya : Queue (Antrian)Adala suatu metoda pembuatan linked list dimana data yang masuk paling awal adalah data yang keluar paling awal juga.
Ada beberapa proses dalam pembuatan linked list yaitu :
· Pembuatan simpul baru
Contoh algoritmanya :
struct TNode
{
int data;
TNode *next;
};
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.
TNode *head;
elanjutnya digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi memorinya kemudian node tersebut diisi data dan pointer nextnya ditunjuk ke NULL. Contohnya :
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
Dalam pembuatan simpul baru jangan lupa untuk menggunakan fungsi malloc() sebagai pointer. Fungsi ini dideklarasikan di dalam header stdlib.h. Dengan demikian, jangan lupa untuk meng-include header tersebut.

Contoh instruksinya :
P = (simpul*) malloc(sizeof(simpul));
Algoritmanya :
Void Buat_Simpul(int x)
{
P = (simpul*) malloc(sizeof(simpul));
If (P != NULL)
{ P - > Info = x; }
Else
Cout<<”Simpul gagal dibuat”;
}

Selanjutnya terdapat fungsi Inisialisasi dalam single linked list yaitu suatu proses awal yang menyatakan linked list belum ada.
Potongan algoritmanya :
void init()
{
head = NULL;
}
Di mana jika pointer head tidak menunjuk pada suatu node maka kosong.
int isEmpty()
{
if(head == NULL) return 1;
else return 0;
}
· Penambahan Node Linked List
Bila setiap penambahan simpul pada linked list dilakukan pada bagian depan (paling dekat dengan head) maka kompleksitas yang diperlukan untuk menambah node baru dalam linked list konstan atau O(1).
Untuk menu memasukkan data baru , digunakan bentuk algoritma seperti ini :
void insertDepan(int databaru)
{
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1)
{
head=baru;
head->next = NULL;
}
else
{
baru->next = head;
head = baru;
}
cout<<endl;
cout<<”       Data masuk…\n”;
getch();
}

Percabangan Pada C++

|| || || Leave a komentar
PERCABANGAN DENGAN IF

Sebagai instruksi bersyarat, artinya instruksi tertentu hanya akan dieksekusi jika syarat tertentu dipenuhi pula.

Syntax :

Bentuk 1:

IF (kondisi)

{ statement yang dikerjakan
  jika kondisi benar
}

Ket: Jika kondisi salah, tidak akan mengerjakan apapun didalam instruksi IF (langsung menuju ke instruksi berikutnya)

Bentuk 2:

IF (kondisi)

{ statement yang dikerjakan
  jika kondisi benar
}
ELSE
{ statement yang dikerjakan
  Jika kondisi salah
}

Bentuk 3:

IF (kondisi1)

{ statement yang dikerjakan
  jika kondisi1 benar
}
ELSE

IF (kondisi2)

{ statement yang dikerjakan
  jika kondisi2 benar
}
ELSE
IF (kondisi3)
{ statement yang dikerjakan
  Jika kondisi3 salah
}
.
.
.
ELSE
{ statement yang dikerjakan
  Jika kondisi1 s.d kondisi-n salah (tidak terpenuhi)
}

Perulangan Pada C++

|| || || Leave a komentar
Perulangan atau dalam istilah lain disebut dengan loop. Perulangan dipakai ketika kita dihadapkan pada suatu masalah dalam jumlah besar yang membutuhkan penyelesaian terkadang sama dengan pola yang telah kita ketahui. Contoh perulangan dikehidupan nyata. Tuliskan “Ini adalah Perulangan” sebanyak 100 kali.
Kita lihat ada 100 masalah dengan 100 penyelesaian sama dengan pola yang sama, disinilah perulangan sangat berguna, mengefisiensikan pekerjaan kita.
Pada bahasa pemrograman c ada 3 macam perulangan, dengan menggunakan for, while-do, dan do-while.
Perbedaan for, while-do, dan do-while
Ketiga jenis perulangan ini memiliki cara kerja yang berbeda namun bisa digunakan menyelesaikan kasus yang sama dengan proses dan karakteristik mereka masing-masing.
for : menggunakan nilai awal, nilai akhir, dan pola perulangan do-while : menggunakan nilai awal, kondisi akhir, pola perulangan, dan pengecekan kondisi keluar dari perulangan di awal. while-do : menggunakan nilai awal, kondisi akhir, pola perulangan, dan pengecekan kondisi keluar dari perulangan di akhir.
Berikut Contoh Perulangan For :



//header file
#include "conio.h"
#include "stdio.h"
 
void main(){
//define variabel
int i;
 
 for(i=0;i < 10;i++){
   printf(i);
  }
 
getch();
}

Tipe Data dan Operator C++

|| || || Leave a komentar
Data dari suatu variabel sangatlah penting karena menentukan operasi yang diizinkan dan kisaran nilai-nilai yang dapat disimpan. C++ mendefinisikan beberapa tipe data, karena tipe data yang berbeda,semua variabel harus dinyatakan sebelum penggunaan, dan sebuah deklarasi variabel mencakup suatu jenis specifier. Compiler memerlukan operasi ini untuk menghasilkan kode yang benar. C++ menyediakan tipe data sesuai dengan bilangan bulat, karakter, nilai-nilai floating point, dan nilai-nilai boolean.


- Macam-Macam Tipe Data
    Tipe Data                                      Keterangan
    char                                               character
    wchar_t                                         wide character
    int                                                  integer
    float                                               floating point
    double                                           double floating point
    bool                                               boolean
    void                                               valueless
Mudahnya Seperti ini
    Tipe data integer               —-> bilangan bulat
    Tipe data char                    —-> karakter
    Tipe data float dan double —-> bilangan desimal
    Tipe data boolean              —-> benar / salah
    Tipe data void                    —-> kosong
- Literal
Literal juga disebut dengan konstanta. Macam-macam literal yaitu :
1. Hexadesimal dan okta literal
2. String literal
3. Karakter escape sequences
- Memulai Sebuah Variabel
Kita dapat menetapkan nilai ke variabel pada saat yang sama ketika variabel itu dinyatakan untuk melakukannya. Ikuti nama variabel dengan tanda sama dengan dan nilai yang ditugaskan. Hal ini disebut inisialisasi variabel. Contoh : int nilai=10;
- Dinamic Inisialisasi
C++ memungkinkan untuk menjadi inisialisasi variabel dinamis. Contoh :
    #include<cstdlib>
    #include<iostream>
    using namespace std; int main(){
    double radius=2.5,tinggi=5.5;
    double volume=radius*radius*tinggi;
    cout<<”volumenya adalah= “<<volume;
    cout<<endl;
    system(“PAUSE”);
    return EXIT_SUCCESS;
    }
Ekspresi inisialisasi dapat menggunakan elemen berlaku pada saat inisialisasi, termasuk panggilan ke fungsi, variabel lain, atau literal.

Penggunaan Struct Pada C++

|| || || Leave a komentar
  • Struct adalah tipe data bentukan yang berisi kumpulan variabel-variabel
    yang bernaung dalam satu nama yang sama dan memiliki kaitan satu
    sama lain.
  • Berbeda dengan array hanya berupa kumpulan variabel yang bertipe data
    sama, struct bisa memiliki variabel-variabel yang bertipe data sama atau
    berbeda, bahkan bisa menyimpan variabel yang bertipe data array atau
    struct itu sendiri.
  • Variabel-variabel yang menjadi anggota struct disebut dengan elemen
    struct.
Bentuk umum dari struct:
typedef struct{
   tipe_data <nama_var>;
   tipe_data <nama_var>;
   .... }
Struct bisa diumpamakan sebagai sebuah obyek, misalnya: obyek Mahasiswa. Struct Mahasiswa memiliki property atau atribut atau variabel yang melekat padanya:
  • NIM misal karakter sejumlah 8
  • Nama yaitu karakter
  • IPK yaitu bilangan pecahan

Struct tidak memiliki operasi (method) atau function. Struct dapat digunakan dengan cara membuat variabel yang bertipe struct tersebut.
Misalnya :
  • variabel anton bertipe struct Mahasiswa
  • variabel erick bertipe struct Mahasiswa
Dengan demikian variabel anton dan erick memiliki NIM, Nama, dan IPK masing-masing.
Ada dua cara untuk mendeklarasikan struct pada C yaitu:
Menggunakan keyword typedef:
typedef struct Mahasiswa {
  char NIM[8];
  char nama[50];
  float ipk;
};
//untuk menggunakan struct Mahasiswa dengan membuat variabel mhs dan mhs2
Mahasiswa mhs,mhs2;
//untuk menggunakan struct Mahasiswa dengan membuat variabel array m;
Mahasiswa m[100];
Menggunakan keyword struct:
struct {
  char NIM[8];
  char nama[50];
  float ipk;
} mhs;
Berarti kita sudah mempunyai variabel mhs yang bertipe data struct seperti diatas
Cara penggunaan struct dan pengaksesan elemen-elemennya:
  • Penggunaan/pemakaian tipe data struct dilakukan dengan membuat suatu variabel yang bertipe data struct tersebut
  • Pengaksesan elemen struct dilakukan secara individual dengan menyebutkan nama variabel struct diikuti dengan operator titik (.)
  • Misalnya dengan struct mahasiswa seperti contoh di atas, kita akan akses elemen-elemennya seperti contoh berikut:

Penggunaan Array Pada C++

|| || || Leave a komentar
Poin-poin yang harus dipahami :

  1. Array  merupakan  struktur  data yang sering digunakandalam pemrograman untuk     menyimpan data   yang   akan   diolah   kemudian (misalnya  pada  proses  sorting  atau searching).
  2. Array    adalah    struktur    data    yang terdiri  dari  kumpulan  variabel  yang bertipe sama.
  3.  Beberapa bahasa pemrograman mendukung  struktur  array  statis  dan dinamis.   Pada   C/C++,   array   yang didukung adalah array statis.
  4.  Pada C/C++, array merupakan pointer    yang  mempunyai    alokasi memori tetap (pointer constant).
  5.  Nilai  (Isi)  dari  elemen elemen  suatu array    ditempatkan    pada    memori yang berurutan.
  6. Akses   elemen   suatu   array   bersifat random,  artinya  dapat  dimulai  dari mana   saja   dan tidak   harus   dari elemen pertamanya. 
  7. Array : a finite ordered set of homogenous elements
  8. Elemen-elemen array tersusun secara berderet dan dapat diakses secara random di dalam memori.
  9. Array memiliki alamat yang besebelahan/berdampingan tergantung lebar tipe datanya.
  10. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.
  11. Elemen-elemen array bertipe data sama dan bisa berisi nilai yang sama atau berbeda-beda.
  12. Elemen-elemen array dapat diakses oleh program menggunakan suatu indeks tertentu secara random ataupun berurutan
  13. Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud.
  14. Dalam C, tidak terdapat error handling terhadap batasan nilai indeks, apakah indeks tersebut berada di dalam indeks array yang sudah didefinisikan atau belum.  Hal ini merupakan tanggung jawab programmer.  Sehingga jika programmer mengakses indeks yang salah, maka nilai yang dihasilkan akan berbeda atau rusak karena mengakses alamat memori yang tidak sesuai.
  15. Tanda [] disebut juga “elemen yang ke- ...“. Misalnya kondisi[0] berarti array kondisi elemen yang ke nol.
  16. Array yang sudah dipesan, misalnya 10 tempat tidak harus diisi semuanya, bisa saja hanya diisi 5 elemen saja, baik secara berurutan maupun tidak.  Namun pada kondisi yang tidak sepenuhnya terisi tersebut, tempat pemesanan di memori tetap sebanyak 10 tempat, jadi tempat yang tidak terisi tetap akan terpesan dan dibiarkan kosong.
  17. Kita tidak dapat mendeklarasikan array dinamis tanpa inisialisasi!
  18. Deklarasi Array Multidimensi :
·         Multidimensi      array      merupakan superset   dari   single    dimensional array.
·         Setiap  penambahan  dimensi  akan diikuti penambahan attribut akses.
·         Array   dua   dimensi   memiliki   dua attribut yaitu: baris  dan kolom.
·         Array   tiga   dimensi   memiliki   tiga attribut   yaitu: baris, kolom    dan  tinggi.
  1. Syntax :
·         Dua Dimensi :
               tipe Nama_Array [indeks1] [indeks2] ;
               tipe Nama_Array [indeks1] [indeks2] = { Nila i };
·         Tiga Dimensi :
               tipe Nama_Array [indeks1] [indeks2] [indeks3];
                tipe Nama_Array [indeks1] [indeks2] [indeks3] ={ Nilai };