Array Multidimensi

Array Multidimensi

Array adalah fitur dari bahasa pemrograman c++ yang memungkinkan kita untuk memesan banyak memori yang memiliki tipe data yang sama dengan hanya menggunakan satu identitas. Dalam variabel kita dimungkinkan untuk menggunakan array lebih dari satu buah, dan hal itu disebut sebagai Array Multidimensi.

Untuk mengubah variabel biasa menjadi variabel array adalah dengan menambahkan operator subscript dengan ukuran di dalamnya, dalam C++ kita dimungkinkan untuk menggunakan banyak subscript, hal itu akan membuat variabel tersebut menjadi array multidimensi.

Bentuk Penulisan
tipeData identifier[array-1][array-2]….[array-n];

Array Dua Dimensi
Untuk membuat sebuah variabel dengan array dua dimensi, kita membutuhkan dua buah operator subscript ( [] ) dengan masing-masing ukuran array.

Bentuk Penulisan
tipeData identifier[size1][size2];

Contoh Penulisan
string nama[2][3];

array dua dmensi memungkinkan anda untuk menggunakan array di dalam array, setiap array memiliki array di dalamnya. Bagi penulis jujur saya sulit untuk menjelaskan array multidimensi. Tapi untuk array dua dimensi bisa digambarkan seperti sebuah tabel yang mempunyai baris dan kolom.

Kita dapat membayangkan sebuah array dua dimensi seperti sebuah table yang memiliki baris dan kolom, untuk array atau subscript pertama adalah baris dan subscript kedua adalah kolom.

Array Dimensi Dua

Inisialisasi Array Dua Dimensi
Untuk menginisialisasi array dua dimensi adalah dengan cara menggunakan tanda kurung kurawal di dalam tanda kurung kurawal.

string nama[3][2]={
{“joko”, “dadang”}, //baris ke satu dengan 2 kolom
{“fajar”, “nick”}, // baris ke dua dengan 2 kolom
{“laksono”, ”eren”} // baris ke tiga dengan 2 kolom
}

Tanda kurung kurawal pertama akan menyatakan keseluruhan array dari variabel, di dalamnya terdapat 3 sepasang kurung kurawal yang dipisahkan dengan tanda koma, yang menyatakan array dari subscript pertama. Di dalam masing-masing tanda subscript pertama berdiri 2 nilai sesuai ukuran array subscript kedua, masing-masing nilai dipisahkan dengan tanda koma.

Untuk bentuk penulisan bebas menurut keinginan anda, seperti anda bisa menulis dalam satu baris atau seperti di atas, hal yang penting adalah penggunaan tanda-tanda baca dan cara penulisanya harus benar seperti di atas, bentuk penulisan di atas dibentuk seperti halnya sebuah tabel hanya untuk mempermudah kita dalam membaca nilai-nilai tersebut.

Jika anda tidak mengisi salah satu cell atau semua cell maka anda akan menginisialisasi array dalam variabel array tersebut menjadi bernilai 0 atau kosong.

string nama[3][2]={
{“joko”, “dadang”}, //baris ke satu dengan 2 kolom [1][1] = “joko”, [1][2]=”dadang”
{“fajar”}, // baris ke dua dengan 2 kolom, [2][1] = “fajar”, [2][2] “” 
{} // menginisialisasi satu baris dengan angka 0,  [3][1] = “”, [3][2]=””
}

dan juga bisa seperti ini
string nama[3][2]={}

Deklarasi Variabel Array Multidimensi Tanpa Ukuran
array multidimensi adalah array, kita masih dimungkinkan untuk mendeklarasi variabel array tanpa menyertakan ukuran dari array tersebut, ukuran otomatis akan terhitung berdasarkan jumlah nilai pada proses inisialisasi.

Mengakses Array Dua Dimensi
nama[2][1]

untuk mengakses sebuah cell pada array dimensi dua, sama seperti kita mengakses array dimensi satu. Tapi disini kita membutuhkan dua subscript sebagai alamat cell tersebut.

untuk dapat megakses setiap cell di dalam array dua dimensi dengan dinamis anda dapat menggunakan pernyataan pengulangan nested (nested loop).

Contoh Program
#include <iostream>
using namespace std;

const int MAX_ROW = 3;
const int MAX_COL = 3;

int main ()
{
    string nama[MAX_ROW][MAX_COL]={
        {"joko", "dadang", “aziz”},
        {"fajar", "nick"},
        {"laksono", "eren"}
    };

    for(int i=0;i<MAX_ROW;++i){
        for(int j=0;j<MAX_COL;++j){
            cout<<"["<<(i+1)<<"]["<<(j+1)<<"]. "<<nama[i][j]<<endl;
        }
    }

    return 0;
}

Array Tiga Dimensi ke atas
Jika pembaca sudah mengerti mengenai konsep dari array, anda akan dengan mudah untuk memodifikasi array, menambahkan beberapa subscript untuk menjadikanya array multidimensi.
Secara garis besar, pembuatan, penggunaan, pengaksesan array multi dimensi memiliki konsep yang sama seperti apa yang telah penulis jelaskan di atas pada array dua dimensi.

Pembekakan memori
Pada artikel belajarcpp.com sebelemunya telah penulis sampaikan bahwa array bisa memakan banyak memori, terutama array multi dimensi. Karena apa yang kita pesan adalah berkali-kali lipat lebih besar dari variabel biasa.

Misalnya anda mendirikan variabel array satu dimensi “int nomer[5]”, besar memori untuk membuat variabel integer adalah 4 byte (di beberapa komputer bisa berbeda-beda), dikali dengan jumlah elemen yaitu 5 elemen, berarti apa yang telah anda pesan adalah variabel dengan jumlah memori 20 byte.
dan ada yang lebih memakan memori adalah saat anda memesan variabel array multi dimensi, misalnya anda memesan variabel empat dimensi “int nomer[3][4][5][2]”, dengan hitungan :

int * 10 * 40 * 50 * 20
4 byte * 10 * 40 * 50 * 20 = 1600000 byte

Jumlah itu merupakan jumlah yang tidak kecil, anda bisa membebani pogram anda dengan pembekakan memori, jadi saran penulis adalah ketika anda mendirikan variabel array berhati-hatilah dalam memesan jumlah elemen pada array tersebut, pesanlah sesuai yang anda butuhkan, jangan memesan memori terlalu banyak yang nantinya bisa menjadi memori yang tidak digunakan.

Array

Array / Larik

Array atau Larik adalah sebuah variabel yang memiliki serangkaian elemen dari jenis tipe data yang sama. Elemen-elemen tersebut dirangkai di dalam memori yang berdekatan dengan elemen lainya. konsep ini mirip seperti struct dan class yang dapat merupakan kumpulan dari variabel, perbedaan dengan mereka adalah array merupakan kumpulan variabel dengan satu indentifier dan satu tipe data yang sama, dan dalam istilah-istilah array kumpulan dari variabel tersebut adalah elemen.

Bayangkan bahwa jika pembaca sedang bekerja membuat program untuk suatu organisasi sekolah, tepatnya digunakan untuk mendata nilai-nilai dari siswa pada suatu kelas, dan dalam satu kelas terdapat 50 anak. Dengan arti kita membutuhkan 50 tempat penyimpanan (variabel).

double nilai1, nilai2, nilai3 …….nilai50;

mungkin untuk pembaca yang baru mengenal dunia programmer akan berpikiran untuk membuat 50 variabel secara individu seperti pernyataan di atas. Cara di atas adalah sangat-sangat tidak efektif atau salah.  Bagaimana jika satu kelas tidak selalu memiliki 50 anak, mungkin di masa depan akan memiliki murid lebih dari 50 anak di dalam kelas. Dengan arti program itu akan selalu membutuhkan modifikasi, bukan hanya pada variabel tersebut tapi keseluruhan program, seperti input, proses dan output. Untungnya, dalam bahasa pemrograman C++ dan hampir semua bahasa pemrograman, menyediakan fitur yang bernama “Array” atau “Larik”.

Array memungkinkan kita untuk membuat sebuah variabel yang dapat menyimpan banyak nilai. Di dalam array terdapat banyak elemen yang merupakan tempat untuk penyimpanan setiap nilai.

Bentuk Penulisan
tipeData identifier[ukuran];

untuk mendirikan sebuah variabel array sama seperti kita mendirikan sebuah variabel biasa yang dimana membutuhkan tipe data, identifier, dan titik koma. Untuk merubah variabel biasanya menjadi variabel array adalah dengan menambahkan operator subscript ( [] ).

Untuk parameter di dalam operator subscript disebut sebagai index atau subscript, tempat dimana kita memberitahukan compiler berapa jumlah variabel yang akan di alokasi sesuai yang kita inginkan. dan dalam array, istilah dari banyak variabel yang dialokasi itu disebut sebagai elemen.

Contoh Penulisan
int nilai[50];

Di atas adalah contoh penulisan dari penggunaan array, variabel di atas memiliki identifier “nilai” bertipe data integer sebanyak 50 elemen.  Tersebut memungkinkan kita untuk menyimpan 50 nilai berbeda dalam satu identifier variabel “nilai”.

Pernyataan di atas dinamakan Array statis atau Fixed array, karena kita mendirikan variabel array dengan menggunakan konstanta bernilai 50 sebagai index saat punulisan program. Dan pemberian index hanya dapat dilakukan menggunakan konstanta dan dilakukan sebelum kompilasi (Compile-time), tidak  saat program berjalan (Runtime).

Untuk mendirikan sebuah variabel array dibutuhkan tipe data, identifier dan index di dalam subscript. Setiap tipe data untuk mendirikan variabel, dimungkinkan untuk digunakan pada array. untuk identifier kita bebeas dalam memberikan identitas tapi harus di bawah peraturan pembuatan identitas yang telah penulis jelaskan. Untuk index adalah tempat dimana sebuah konstanta diletakan sebagai penentu banyaknya elemen.

Inisialisasi Array
Saat mendirikan variabel array kita juga dimungkinkan untuk memberi nilai saat deklarasi variabel array secara bersamaan, inisialisasi array disebut sebagai “Initializer list”. apa yang kita butuhkan untuk inisialisasi sebuah variabel array adalah sepasang tanda kurung kurwal yang mengapit semua nilai tersebut.

Contoh Penulisan
int grade[50] = {100, 90, 80, 70, 60, 50, 40, 30, 20, 10};

di atas adalah contoh dari cara inisialiasi sebuah variabel array yang memiliki 50 elemen. Untuk melakukan inisialisasi kita membutuhkan tanda sama dengan setelah itu nilai dari setiap elemen. Nilai-nilai setiap elemen akan di kurung di dalam sepasang tanda kurung kurawal. Setiap nilai dipisahkan dengan tanda koma.

Contoh di atas adalah pernyataan yang valid, meskupun variabel tersebut memesan 50 elemen tetapi penulis hanya memberikan 10 nilai. Dari 10 nilai tersebut akan mengisi elemen pertama hingga ke sepuluh. Untuk elemen 10 sampai 50 akan di inisialisasi dengan nilai “0” atau kosong.

Inisialisasi adalah sebuah pilihan, kita bebas untuk membuat variabel dengan inisialisasi atau tanpa inisialisasi. seperti apa yang telah penulis jelaskan pada artikel tentang “Inisialisasi”. inisialisasi variabel itu penting meskipun tidak wajib. Jika variabel array di atas tidak melakukan inisialisasi maka otomatis setiap elemen akan mengandung nilai acak yang berasal dari pengguna memori sebelumnya.

Mendeklarasikan tanpa ukuran array
Pada bahasa pemrograman C++ dalam mendirikan sebuah variabel array kita dimungkinkan untuk mendirikan variabel array tanpa menyertakan ukuran, hanya operator subscript tanpa nilai di dalamnya. Tapi untuk melakukan hal itu, kita diwajibkan untuk menyertai dengan inisialisasi. bukan berarti jika variabel array tidak menggunakan ukuran akan memiliki elemen yang dinamis. Variabel array denngan cara tersebut masih dalam golongan variabel array statis. Dan compiler selalu akan membutuhkan ukuran array untuk alokasi (elemen) yang dibutuhkan.

Ketika kita mendeklarasikan sebuah variabel array tanpa ukuran array, maka ukuran dari variabel array tersebut otomatis akan dihitung berdasarkan jumlah nilai pada proses inisialisasi.

Contoh Penulisan
int nilai[]={2,4,7,9}

pada contoh penulisan di atas compiler akan mendeklarasikan sebuah variabel array yang memiliki 4 elemen yang dihitung berdsarkan jumlah nilai pada proses inisialisasi.

Mengakses Variabel Array
Untuk mengakses variabel array tidak jauh beda dengan cara mengakses variabel biasa, untuk mengakses variabel array membutuhkan Operator subscript ( [] ) dengan index di dalamnya yang diletakan setelah identitas variabel.

Contoh Penulisan
grade[2];

contoh di atas akan mengakses elemen ketiga dari variabel “grade”. Index yang berada di dalam subscript digunakan untuk mengakses nilai elemen berdasarkan konstanta yang diberikan. Pada contoh di atas kita mencoba untuk mengakses elemen keiga dari variabel “grade”.

Bahasa pemrograman C++ tepatnya pada fitur array selalu menggunakan bilangan cacah (bilangan dimulai dari 0). Dan setiap elemen yang kita pesan akan di nomori berdasarkan urutan dari 0 sampai sebanyak yang kita pesan. Misalnya kita memesan grade[50] maka elemen pertama berada pada urutan nomer 0 dan elemen terakhir berada pada urutan 49.

Elemen pada array

Jika kita menuliskan nomer 10 maka elemen yang akan di akses adalah elemen nomer urut nomer 11.

Contoh Program
#include <iostream>
using namespace std;

int main ()
{
    char grade[3]={};

    grade[0] = 'a';
    grade[1] = 'b';
    grade[2] = 'c';

    cout<<"0 : "<<grade[0]<<endl;
    cout<<"1 : "<<grade[1]<<endl;
    cout<<"2 : "<<grade[2]<<endl;

    return 0;
}

Hati-hati dalam mengakses array, dalam pemrograman C++ kita dimungkinkan untuk mengakses elemen dari array yang bukan merupakan anggota array tersebut. misalnya kita mencoba akses index nomer 50, tetapi variabel array itu sendiri hanya memiliki 10 elemen.

Kita dimungkinkan untuk mengakses index dari array meskipun bukan merupakan anggota dari variabel array tersebut. itu dapat di lakukan tapi hal itu dilarang untuk dilakukan. Karena apa yang coba kita akses bukan merupakan memori milik program anda. Bisa saja memori tersebut dimiliki oleh program lain.

Pengulangan dengan Array
Pada contoh program di atas kita mengunakan pernyataan tunggal untuk mengakses setiap elemen array. jika array memiliki 50 elemen bukan berarti kita harus membuat 50 pernyataan tunggal untuk mengakses setiap elemen tersebut. termasuk penyuntingan ketika anda merubah index array.

Untuk mengakses array secara dinamis, tidak memerlukan banyak waktu untuk membuat pernyataan  menyunting program jika ada perubahan pada array. kita dapat memanfaatkan pernyataan pengulangan.

Contoh Program
#include <iostream>
using namespace std;

int main ()
{
    const int MAX_ARRAY = 5;
    string nama[MAX_ARRAY]={};

    for(int i=0;i<MAX_ARRAY;++i){
        cout<<"Masukan Nama : ";cin>>nama[i];
    }

    cout<<endl<<"=== Daftar Nama ==="<<endl;
    for(int i=0;i<MAX_ARRAY;++i){
        cout<<(i+1)<<". "<<nama[i]<<endl;
    }

    return 0;
}

Pernyataan pengulangan FOR memang merupakan pernyataan yang efektif untuk digunakan dan sering digunakan oleh para programmer dalam mengelolah variabel array. di atas adalah program yang akan meminta 5 nama dan nama tersebut akan di tampilkan di bawahnya sebagai daftar nama. Program di atas mencontohkan program yang cukup efisien. Jika kita ingin mengubah banyak elemen pada array, apa yang harus dilakukan hanyalah mengubah nilai pada variabel konstanta “MAX_ARRAY”.

Array sebagai Parameter Function
Variabel array sebagai parameter di function akan berbeda dengan variabel sebagai parameter pada umumnya. Jika anda mengikuti pembelajaran pada belajarcpp.com, penulis menyadari bahwa materi function belum penulis sampaikan di beberapa materi sebelumnya. Jadi penulis menyarankan anda untuk mengerti hal ini sebagai sebuah teori. Jadi ketika anda bertemu dengan materi function, anda akan tau apa yang akan terjadi ketika parameter dalam function tersebut adalah variabel array.

Sifat parameter pada umumnya adalah menyalin nilai dari variabel yang diajukan sebagai  argument. Jadi di antara variabel parameter dengan variabel asli tidak saling berhubungan. Ketika anda mencoba mengubah nilai pada pada parameter maka variabel asli tidak akan terpengaruh, begitu pula sebaliknya.

Tapi jika parameter itu merupakan array, dan jika anda mencoba untuk mengubah nilai dari salah satu variabel maka keduanya akan terpengaruh. Hal itu terjadi karena variabl array bisa sangat memakan banyak memori, untuk menghindari lamanya proses penyalinan dan pembekakan memori program, C++ membuat parameter array tidak menyalin nilai dari variabel array asli, tapi dia menyalin alamat memori pada variabel asli.

Contoh Program
#include <iostream>
using namespace std;

const int MAX_ARRAY = 5;

void ubah(string str[]){
    for(int i=0;i<MAX_ARRAY;++i){
        str[i]="Berubah";
    }
}

int main ()
{
    string nama[MAX_ARRAY]={};

    for(int i=0;i<MAX_ARRAY;++i){
        cout<<"Masukan Nama : ";cin>>nama[i];
    }

    ubah(nama);

    cout<<endl<<"=== Daftar Nama ==="<<endl;
    for(int i=0;i<MAX_ARRAY;++i){
        cout<<(i+1)<<". "<<nama[i]<<endl;
    }

    return 0;
}

Tambahan : Mengakses hanya menggunakan identitas
Operator subscript dan nilai di dalamnya digunakan untuk mengakses elemen. Jika kita mencoba untuk mengakses sebuah variabel array tanpa menggunakan subscript maka apa yang akan kita dapat adalah alamat memori dari elemen pertama variabel array.

Tapi berbeda dengan array C-Style String, array dengan tipe data char akan menampilkan sebuah string dari keseluruhan nilai pada setiap elemen.

Pernyataan Goto

Pernyataan Goto

Pernyataan GOTO adalah pernyataan yang memungkinkan kita untuk mengatur arahnya aliran pengeksekusian CPU terhadap program kita. GOTO berfungsi untuk memerintahkan CPU melompat ke baris manapun berdasarkan label yang telah dibuat.

Bentuk Penulisan Goto
goto nama_label;

Bentuk penulisan Label Goto
nama_label:

untuk membuat pernayataan goto bekerja, dibutuhkan dua pernyataan yaitu GOTO dan LABEL. Pernyataan GOTO menggunakan keyword “goto” diikuti nama label berfungsi untuk memberi tahu CPU agar melompat ke baris yang miliki label dengan nama tersebut.

Pernyataan LABEL di isi dengan nama label diakhiri dengan tanda titik dua, berfungsi untuk menandai suatu baris program, tempat dimana loncatan CPU karena GOTO mendarat.

Contoh Penulisan Goto
goto labelku;

Contoh Penulisan Label Goto
labelku:

Ketika CPU bertemu dengan pernyataan GOTO maka CPU pada saat itu juga akan melompat ke label dengan nama yang tertera pada pernyataan GOTO. Dan untuk penempatan GOTO beserta label GOTO kita bebas meletakanya dimana saja tetapi harus berada pada satu function scope.

Contoh Program :
#include <iostream>
using namespace std;

int main ()
{
    int angka=0;
    cobaLagi:
    cout<<"Masukan Angka : ";cin>>angka;
    if (angka!=5)goto cobaLagi;

    return 0;
}

Contoh program di atas adalah contoh penggunaan pernyataan GOTO. Program di atas akan meminta pengguna untuk memasukan angka apapun, jika pengguna memasukan angka 5 maka pernaytaan GOTO akan dieksekusi, CPU akan meloncat ke label “cobaLagi” yang diletakan di atas.

Peletakan Label dari GOTO bisa diletakan di baris sebelum pernyataan GOTO, kita juga bisa meletakan Label GOTO di baris setelah dari pernyataan GOTO.

Contoh Program :
#include <iostream>
using namespace std;

int main ()
{
    char loncat=0;

    cout<<"Masukan Angka [y/n] : ";cin>>loncat;
    cout <<"1"<<endl;
    if (loncat=='y')goto loncatan;
    cout <<"2"<<endl;
    loncatan:
    cout <<"3"<<endl;
   
    return 0;
}

Contoh program di atas akan meminta persetujuan anda untuk melompat, jika anda menginputkan ‘n’ maka aliran akan berjalan normal dan menghitung 1 sampai 3, jika anda memilih y maka akan tampil perhitungan 1 dan 3.

Setelah penjelasan mengenai GOTO dan cara penggunaan GOTO, penulis belajarcpp.com sarankan untuk tidak menggunakan pernyataan GOTO jika tidak dibutuhkan. Sebenarnya bukan hanya penulis yang menyarankan, tapi hamper semua programmer menghindari penggunaan pernyataan GOTO.

Pernyataan GOTO dapat menurunkan kualitas program, karena bisa membuat program mempunyai aliran yang sangat tidak jelas. Kadang hal itu bisa menyebabkan kegagalan pada program anda.

Di bahasa pemrograman lainnya, salah satunya seperti bahasa pemrograman BASIC, Goto sangat sering digunakan, hal itu normal di bahasa pemrograman BASIC tapi berbeda pada Bahasa pemrograman C++, semua programmer yang menggunakan bahasa pemrograman C++ sama sekali tidak menggunakan pernyataan GOTO, mereka mengganti pernyataan GOTO dengan memanfaatkan pernyataan lain yang lebih canggih dan aman seperti pernyataan pengulangan, penyeleksian dan lain-lain.

 Dan di bawah ini adalah salah satu contoh program mengapa GOTO tidak disarankan untuk digunakan.

#include <iostream>
using namespace std;

int main ()
{
    goto loncat;
    int var = 2;
    loncat:
    cout<<var;
    return 0;
}

Program di atas tidak akan bisa dijalankan karena CPU akan dilempar langsung ke baris pada label loncat dengan arti deklarasi var tidak pernah di eksekusi, dan CPU tidak bisa menemukan variabel var saat pernaytaan keluaran.

Bayangkan jika anda membuat program dengan kode yang cukup banyak, dan anda menggunakan begitu pernataan GOTO. Kemungkinan yang akan terjadi adalah anda akan bingung bagaimana CPU akan mengalir untuk mengeksekusi program anda, anda sulit untuk menyunting program anda dan kemungkinan program akan mendapatkan kesalahan yang cukup fatal karena aliran program yang tidak jelas.

Pernyataan Continue

Pernyataan Continue

Pernyataan CONTINUE adalah pernyataan yang memungkinkan kita mengatur aliran eksekusi CPU terhadap program buatan kita. Pernyataan CONTINUE adalah keyword yang berfungsi untuk menyelesaikan perulangan saat itu dan melanjutkan ke perulangan selanjutnya dengan mengabaikan sisa pernaytaan pada badan perulangan tersebut. Pernyataan CONTINUE hanya dapat digunakan di dalam pernyataan pengulangan.

Bentuk Penulisan :
continue;

Pernyataan CONTINUE sangat berguna jika kita ingin mengakhiri perulangan pada saat itu dan melanjutkan ke perulangan selanjutnya. Pada saat CPU bertemu dengan pernyataan CONTINUE, CPU akan meloncat mengabaikan pernyataan-pernyataan yang ada di bawah pernyataan CONTINUE menuju ke akhir baris dari pernyataan perulangan, dengan hal itu perulangan selanjutnya akan segera dimulai.

Contoh Program :
#include <iostream>
using namespace std;

int main ()
{
    int jumlah=0;
    cout<<"Jumlah : ";cin>>jumlah;
    for (int i = 1; i <= jumlah; i++){//Perulangan dimulai
        if ((i % 2)==0) continue; //jika tereksekusi CPU akan meloncat
        cout<<i<<endl; //pernyataan ini akan diabaikan
        //CPU akan mendarat di sini
    }

    return 0;
}

Contoh program di atas adalah contoh penggunaan dari pernyataan CONTINUE. Program di atas akan meminta anda untuk memasukan dan akan menampilkan hitungan angka ganjil sebanyak angka yang pengguna masukan.

Dari program di atas dapat menampilkan hitungan ganjil karena jika pernyataan CONTINUE tereksekusi oleh CPU maka CPU akan meloncat ke baris akhir dari pernyataan pengulangan dan jika kondisi perulangan terpenuhi maka perulangan akan melanjutkan perulangan selanjutnya. Loncatan tersebut akan mengabaikan sisa dari badan pernyataan pengulangan, sehingga pernyataan keluaran di bawah pernyataan CONTINUE tidak akan dieksekusi oleh CPU.

Setelah penjelasan di atas memang CONTINUE adalah pernyataan yang sangat berguna, tapi hati-hati dalam menggunakanya, Perhatikan aliran program yang sedang anda buat, jika tidak anda bisa membuat suatu program yang sulit untuk dipahami dan anda juga bisa membuat program yang gagal berfungsi.

Salah satu kasus adalah anda bisa membuat sebuah program dengan pengulangan tak terhinga seperti di bawah ini.

#include <iostream>
using namespace std;

int main ()
{
    int jumlah=0;
    cout<<"Jumlah : ";cin>>jumlah;
    int i  = 1;
    while(i <= jumlah){
        if ( i == 5) continue;
        cout<<i<<endl;
        i++;
    }

    return 0;
}

Di atas adalah program contoh dari kesalahan penggunaan pernyataan CONTINUE, program di atas mempunyai maksud untuk menampilkan penghitungan 1 ke angka yang dimasukan oleh pengguna, dengan melewati angka 5.

Tapi hasil dari program di atas akan memiliki perulangan yang tak terhinga, program di atas jika dijalankan terlihat berhenti dan tidak berakhir. Hal itu karena pernyataan CONTINUE diletakan sebelum penaikan nilai variabel yang digunakan untuk conditional expression oleh pernyataan pengulangan. Hal tersebut akan menyebabkan pernyataan penaikan variabel akan diabaikan.

Ketika variabel “i” bernilai 5 CPU akan mengeksekusi pernyataan CONTINUE, melompat dan mengabaikan penaikan variabel tersebut. di saat evaluasi pernyataan pengulangan, variabel “i” akan bernilai 5 karena pernyataan penaikan variabel tersebut di abaikan. Karena hal itu CPU akan kembali lagi untuk mengeksekusi pernyataan CONTINUE. Dan hal itu akan terjadi berulang-ulang tanpa henti.

Di bawah ini adalah contoh peulisan program yang benar untuk menghindari hal tersebut.

#include <iostream>
using namespace std;

int main ()
{
    int jumlah=0;
    cout<<"Jumlah : ";cin>>jumlah;
    int i  = 1;
    while(i <= jumlah){
        if ( i == 5) {
            i++;
            continue;
        }
        cout<<i<<endl;
        i++;
    }

    return 0;
}

Atau

#include <iostream>
using namespace std;

int main ()
{
    int jumlah=0;
    cout<<"Jumlah : ";cin>>jumlah;
    int i  = 1;
    do{
        if ( i == 5) continue;
        cout<<i<<endl;
    }while(++i <= jumlah);

    return 0;
}

Saat anda menggunakan pernyataan lompatan anda harus berhati-hati dalam penggunaan pernyataan tersebut, dan cermat dalam menganalisis bagaimana aliran program anda.

Pernyataan Break


Pernyataan BREAK adalah pernyataan lompatan yang dapat mengandalikan aliran pengeksekusian CPU. BREAK merupakan keyword berfungsi untuk membuat CPU melompat keluar dari pernyataan pengulangan atau pernyataan SWITCH. Dan BREAK hanya dapat digunakan dalam pernyataan pengulangan dan pernyataan SWITCH.

Bentuk Penulisan :
break;

Break lebih tepatnya digunakan untuk menghentikan suatu pernyataan pengulangan atau pernyataan SWITCH. Ketika CPU bertemu dengan pernaytaan beak di dalam suatu pernyataan pengulangan atau SWITCH CPU akan langsung berhenti untuk mengeksekusi Pernyataan pengulangan tersebut dan kembali ke baris eksekusi di luar dan di bawah dari keseluruhan pernyataan tersebut.

Break sangat berguna untuk menghentikan pernyataan pengulangan, berdasarkan kondisi apa yang diinginkan. Break dapat meningkatkan keamanan dan mengatasi masalah pada program, sebagai contoh adalah terjadinya pengulangan tak diinginkan oleh programmer atau pengguna, maka break dapat menghentikanya.

Contoh Program :
#include <iostream>
using namespace std;

int main ()
{
    int jumlah=0;
    cout<<"Jumlah : ";cin>>jumlah;
    for(int i = 1; i<=jumlah; i++){
        if (i > 50) break;
        cout<<i<<endl;
    }
    return 0;
}

Di atas adalah contoh program penggunaan BREAK pada pernyataan pengulangan for, BREAK juga bisa digunakan pada pernyataan pengulangan lainya. pada program di atas, Program meminta pengguna untuk memberikan angka sebagai jumlah pengulagan. Dan di dalam pernyataan pengulangan terdapat pernyataan BREAK yang berada pada pernyataan penyeleksian if. Break pada program di atas untuk memberikan batas berapa jumlah minimal pengulangan harus terjadi.

Jika pembaca mengikuti pembelajaran pada belajarcpp.com. jika anda ingat bahwa pernyataan BREAK juga digunakan pada pernyataan SWITCH dan juga memiliki fungsi yang sama yaitu untuk menghentikan pengeksekusian pernyataan switch.

Untuk pernyataan penyeleksian BREAK hanya dapat digunakan pada pernyataan penyeleksian SWITCH.

#include <iostream>
using namespace std;

int main ()
{
    int jumlah=0;
    cout<<"Jumlah : ";cin>>jumlah;
    switch(jumlah){
    case 1 :
        cout<<"Nomer tersedia.";
        break ;
    case 2:
        cout<<"Nomer tersedia.";
        break;
    default :
        cout<<"Nomer tidak tersedia.";
        break;
    }

    return 0;
}

Dengan pernyataan BREAK pada pernyataan SWITCH berfungsi untuk menghentikan pernyataan SWITCH setelah CPU menyelesaikan mengeksekusi pernyataan sebagai perintah pada label case tertentu. Jika tidak menggunakan pernyataan BREAK maka akan mengeksekusi apapun pada baris selanjutnya meskpun pernyataan sebagai perintah termasuk dalam label case lain.

Jika anda sudah bisa menggunakan pernyataan BREAK dimohon anda bisa memanfaatkan pernyataan BREAK dengan bijaksana dan Efisien. Jika tidak, anda bisa membuat suatu program memiliki aliran yang sulit untuk dimengerti.

Pernyataan Lompatan

Pernyataan Lompatan

Pernyataan Lompatan adalah salah satu cara kita untuk mengendalikan aliran eksekusi CPU, yang memungkinkan kita untuk membuat CPU melompat beberapa pernataan dan menuju ke suatu baris tertentu. Pernyataan ini memunkinkan kita untuk membuat program yang berjalan secara fleksibel berdasarkan kemauan pengguna.

Beberapa pernyataan yang secara umum termasuk dalam pernyataan lompatan pada bahasa pemrograman C++ adalah break, continue dan goto. Dari pernyataan tersebut mempunyai fungsi yang cukup berbeda-beda. Tapi secara garis besar ketiga pernyataan tersebut berfungsi untuk membuat loncatan CPU dari baris ke baris.

Pernyataan Break
Pernyataan Break merupakan keyword yang berfungsi untuk membuat CPU melompat keluar dari suatu pernyataan perulangan atau pernyataan penyeleksan SWITCH. Break sering digunakan untuk mengeluarkan secara paksa pengeksekusian CPU keluar dari suatu perulangan yang mengalami perulangan yang tak terduga seperti perulangan tak terbatas atau hal lainnya.

Pernyataan Continue
Pernyataan Continue merupakan keywod yang hanya dapat digunakan dalam pernyataan pengulangan, berfungsi untuk melompati beberapa pernyataan yang tersisa dan melanjutkan perulangan ke perulangan selanjutnya.

Pernyataan Goto
Pernyataan GOTO adalah pernyataan yang memungkinkan kita untuk mengendalikan aliran eksekusi. Memerintahkan CPU untuk melompat ke baris tertentu sesuai tanda yang telah ditandai.

Untuk pembaca yang sedang mengikui pembelajaran di belajarcpp.com, untuk pernyataan kali ini (Jump), agak berbeda dari pernyataan lainya. mungkin setelah anda membaca artikel selanjutnya tentang  break, continue dan goto akan menganggap bahwa pernyataan lompatan terlihat lebih berguna dari pernyataan lainya tetapi, pernyataan lompatan lebih memiliki banyak resiko. dalam menggunakan pernyataan ini anda harus bijaksana dan cermat untuk menggunakanya. Karena jika tidak anda dapat membuat suatu program dengan aliran yang tidak beraturan dan sulit untuk dimengerti, atau bisa membahayakan program anda sendiri.

Pernyataan For

Pernyataan Pengulangan For

Pernyataan pengulangan FOR adalah pernyataan yang dapat memanipulasi aliran pengeksekusian CPU dan memungkinkan kita untuk membuat program yang berjalan dengan dinamis berdsarkan keinginan pengguna. Pernyataan pengulangan FOR berfungsi untuk melakukan pengeksekusian beberapa pernyataan secara berulang-ulang. Dan merupakan pernyataan pengulangan yang sangat umum dan sering digunakan oleh para programmer C++.

Secara garis besar pernyataan FOR dan WHILE memiliki fungsi dan kerja yang mirip tapi. Jika dalam pernyataan WHILE dibutuhkan satu ekspresi sebagai conditional expression yang bertugas untuk penentu jalanya pengulangan. Dan hal tersebut adalah perbedaan antara FOR dan WHILE.

FOR adalah pernyataan pengulangan yang dikhususkan untuk pengulangan yang secara tepat mengetahui berapa kali pengulangan akan terjadi.

Bentuk Penulisan :
for (init-statement; condition-expression; end-expression){
   Pernyataan;
}

Untuk membuat pernyataan FOR dibutuhkan keyword “for” untuk memulainya, diikuti dengan 3 ekspresi di dalam tanda kurung. Setiap ekspresi dipisahkan dengan tanda titik koma ( ; ). Ketiga ekspresi tersebut digunakan untuk penentu jalanya pengulangan, masing-masing memiliki peran yang berbeda.

init-statement umumnya adalah tempat dimana sebuah variabel didirikan dan diinisialisasi. Karena tempat itu adalah tempat yang akan dievaluasi satu kali ketika pernyataan FOR dimulai.

condition-expression adalah sebuah ekspresi penentu jalanya pengulangan, yang merupakan bilangan Boolean atau operasi yang menghasilkan bilangan Boolean. Jika ekspresi bernilai 1 (true) maka pengulangan akan terjadi tapi jika bernilai 0 (false) maka pengulangan akan berhenti atau pengulangan for akan diabaikan.

end-expression adalah tempat dimana sebuah operasi penaikan atau penurunan dari variabel pada init-statement. Setelah pernyataan di badan pengulangan for dilakukan maka end-expression akan dievaluasi.

Dan di dalan badan pengulangan for terdapat beberapa pernyataan sebagai perintah atau aksi yang harus dilakukan oleh CPU jika pengulangan terjadi. Jika terdapat banyak pernyataan maka diwajibkan untuk mengurungnya dengan sepasang tanda kurung kurawal, jika hanya terdapat satu pernyataan kita bisa untuk tidak menggunakan sepasang tanda kurung kurawal.

Contoh program :
#include <iostream>
using namespace std;

int main()
{
    for(int i=1;i<=10;i++){
        cout<<i<<endl;
    }

    return 0;
}

Di atas adalah contoh penggunaan pernyataan for. Program di atas akan menampilkan keluaran angka 1 sampai 10 secara berurutan.

Ketika CPU bertemu dengan pernyataan for, maka langkah pertama CPU adalah mengevaluasi init-statement, dan melakukan perintahnya. Biasanya init-statement digunakan untuk mendeklarasi dan inisialisasi variabel secara bersamaan atau juga bisa memberi nilai pada variabel yang sudah ada. Dan pada contoh di atas dilakukan pembuatan variabel dengan nilai inisialisasi 1. Evaluasi init-statement hanya akan dilakukan satu kali di awal mulainya pernyataan FOR.

Langkah kedua CPU adalah mengevaluasi nilai dari condition-expression, biasanya diisi dengan sebuah ekspresi berbentuk bilangan Boolean atau operasi yang menghasilkan bilangan Boolean. Jika condition-expression bernilai 0 (false) maka pengulangan tidak akan terjadi (diabaikan), jika bernilai 1 (true) maka CPU akan mengeksekusi pernyataan pada badan pernyataan FOR.

Langkah ketiga CPU adalah mengevaluasi end-expression, merupakan tempat dimana dilakukan penaikan atau penurunan variabel pada init-statement.

Langkah keempat CPU adalah kembali mengevaluasi condition-expression. Jika condition-expression bernilai 0 (false) maka pengulangan akan dihentikan, jika bernilai 1 (true) maka langkah kedua CPU sampai langkah keempat CPU akan dilakukan berulang kali hingga condition-expression bernilai 0 (false).

Contoh program :
#include <iostream>
using namespace std;

int main()
{
    int sampai = 0;
    cout<<"Lakukan penghitungan sampai : ";cin>>sampai;
    for(int i=1;i<=sampai;i++){
        cout<<i<<endl;
    }

    return 0;
}

Menghilangkan Ekspresi
Dalam bahasa pemrograman C++ kita dimungkinkan untuk tidak menggunakan salah satu ekspresi atau semua ekspresi pada pernyataan for.

Jika pernyataan FOR tidak menggunakan init-statement maka pernyataan FOR akan tetap bisa berjalan tanpa melakukan inisialisasi pada awal sebelum pengulangan.

Jika pernyataan FOR tidak menggunakan condition-expression, pernyataan for akan melakukan pengulangan tak berhingga, meskipun condition-expression ditinggalkan kosong maka CPU akan tetap melakukan pengulangan (dianggap bernilai true).

Jika pernyataan for tidak menggunakan end-expression, Maka pernyataan for akan tetap berjalan tanpa adanya operasi di antara proses pengulangan terjadi.

Jika pernyataan FOR tidak menggunakan semua ekspresi maka pengulangan for akan menjadi pengulangan tak terhingga.

Contoh program :
#include <iostream>
using namespace std;

int main()
{
    int i = 0;
    for(;;i++){
        cout<<i<<endl;
    }

    return 0;
}

Nested FOR
Sebenarnya dalam semua bentuk pernyataan pengulangan atau penyeleksian kita dimungkinkan untuk membuat sebuah pernyataan di dalam pernyataan. Dan untuk pernyataan FOR kita dimungkinkan untuk membuat penyataan FOR di dalam pernyataan FOR.

Contoh Program :
#include <iostream>
using namespace std;

int main()
{
    int banyak = 0;
    cout<<"Berapa banyak : ";cin>>banyak;
    for(int i=1;i<=banyak;i++){
        for(int j=1;j<=i;j++){
            cout<<j<<" ";
        }
        cout<<endl;
    }
}

Pernyataan Do-while

Pernyataan Pengulangan Do-while

Do-while adalah salah satu pernyataan pengulangan yang memungkinkan kita untuk membuat program yang berjalan secara fleksibel berdsarkan keinginan pengguna. Do-while berfungsi untuk mengulangi pengeksekusian beberapa pernyataan berdsarkan conditional expression yang ada. Do-while berbeda dengan pernyataan while. Do-while saat pertama kali akan mengeksekusi pernyataannya terlebih dahulu, setelah itu baru akan memeriksa conditional expression.

Contoh Penulisan
do{
 pernyataan;
 …
}while(kondisi);

Di atas adalah penulisan pernyataan pengulangan do-while. Untuk membuat pernyataan do-while diawali dengan keyword “do” dan setelah itu diikuti dengan penulisan pernyataan sebagai perintah yang harus dilakukan oleh CPU. Perintah tersebut dikurung dengan tanda kurung kurawal, tapi jika perintah atau badan dari pernyataan do-while hanya mengandung 1 pernyataan kita tidak diwajibkan untuk menggunakan sepasang tanda kurung kurawal.

setelah semua itu, pada bagian kaki pernyataan do-while terdapat keyword “while” dan diikuti dengan conditional expression yang dikurung dalam sepasang tanda kurung. Dan disertakan tanda titik koma ( ; ) pada akhir pernyataan do-while.

Kondisi merupakan conditional expression adalah tempat dimana kita menuliskan ekspresi dalam bentuk bilangan Boolean atau operasi yang menghasilkan bilangan Boolean. Jika conditional expression bernilai 1 (true) maka pengulangan akan terjadi jika 0 (false) maka pengulangan tidak akan terjadi atau berhenti.

Aliran pernyataan pengulangan do-while
Aliran pernyataan pengulangan do-while

Di atas adalah gambar bentuk cara kerja CPU dalam pernyataan Do-while. Pada saat CPU bertemu penyataan pengulangan Do-while. Pada saat pertama kali CPU memasuki pernyaaan do-while CPU akan langsung mengeksekusi pernyataan-pernyataan yang berada pada badan dari pernyataan do-while.

Untuk pengulangan kedua kali dan seterusnya CPU akan memeriksa conditional expression. Jika conditional expression bernilai 1 (true) maka akan kembali untuk mengeksekusi pernyataan tersebut, hal itu akan berlangsung berulang-ulang hingga conditional expression bernilai 0 (false) dan keluar dari pernyataan do-while sepenuhnya.

Perbedaan while dengan do-while terlihat sangat jelas. jika pernyataan while, untuk dapat mengeksekusi pernyataan di dalam while dibutuhkan conditional expression bernilai 1 (true). Jika conditional expression bernilai 0 (false), maka pernyataan while secara keseluruhan akan diabaikan.

Berbeda dengan pernyataan do-while, CPU akan melangsanakan pernyataan pada pernyataan do-while untuk pertama kalinya, meskipun conditional expression bernilai 0 (false). Karena cara kerja do-while adalah mengeksekusi pernyataan pada do-while setelah itu memeriksa nilai pada conditional expression. Hal itu berarti pernyataan di dalam pernyataan do-while tidak akan pernah diabaikan.

Contoh Program
#include <iostream>
using namespace std;

int main()
{
    int pilihan = 1;
    do{
        cout<<"Masukan nomer : ";cin>>pilihan;
    }while(pilihan<=10);

    return 0;
}