Himtika – HIMTIKA https://himtika.cs.unsika.ac.id Himpunan Mahasiswa Informatika UNSIKA Mon, 11 Nov 2024 06:12:09 +0000 en-US hourly 1 https://himtika.cs.unsika.ac.id/wp-content/uploads/2024/04/cropped-Logo-New-Himtika-32x32.png Himtika – HIMTIKA https://himtika.cs.unsika.ac.id 32 32 Belajar C++ #11 : STRUCTURE https://himtika.cs.unsika.ac.id/belajar-c-11-structure/ https://himtika.cs.unsika.ac.id/belajar-c-11-structure/#respond Mon, 11 Mar 2024 06:35:36 +0000 https://himtika.cs.unsika.ac.id/?p=12241 Structure

Struktur adalah kumpulan variabel dari tipe data yang berbeda dalam satu nama. Struktur biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan. Struktur bermanfaat untuk mengelompokkan sejumlah data dengan tipe data yang berbeda. Masing-masing tipe elemen struktur dapat berbeda. Adapun variabel struktur menyatakan bahwa variabel struktur yang dideklarasikan bisa lebih dari satu dan dipisahkan dengan tanda titik koma.

Cara mendeklarasikan struktur

Kata kunci struct mendefinisikan tipe struktur kemudian diikuti dengan nama struktur. Kemudian di dalam kurung kurawal dapat mendeklarasikan satu atau lebih anggota. Sebagai contoh:

Copied!
struct Mahasiswa { string nama; int umur; char jk; }; Catatan: Pada saat struktur dibuat, tidak ada memori yang dialokasikan. Definisi struktur hanyalah cetak biru untuk pembuatan variabel.

Cara mendefinisikan variabel struktur

Setelah mendeklarasikan struktur mahasiswa, anda dapat mendefinisikan variabel struktur sebagai berikut:

Copied!
Mahasiswa mhs1;

Perhatikan disitu variabel struktur mhs1 didefinisikan yang bertipe struktur Mahasiswa. Ketiika variabel struktur didefinisikan, barulah memori yang diperlukan dialokasikan oleh compiler.

Cara mengakses anggota struktur

Untuk mengakses anggota variabel struktur menggunakan operator dot (.). Misalkan kita ingin mengakses umur pada struktur mahasiswa dan ingin memberikan nilai. Kita dapat menggunakan cara sebagai berikut:

Copied!
mhs1.umur = 19;

Contoh 1:

#include <iostream>
using namespace std;

struct Mahasiswa
{
    string nama;
    int umur;
    char jk;
};

int main()
{
    Mahasiswa mhs1;
    cout << "Masukkan Nama Lengkap: ";
    getline(cin, mhs1.nama);

    cout << "Masukkan Umur: ";
    cin >> mhs1.umur;
    cout << "Masukkan Jenis Kelamin (p/l): ";
    cin >> mhs1.jk;
    cout << "\nInformasi." << endl;
    cout << "Nama: " << mhs1.nama << endl;
    cout <<"Umur: " << mhs1.umur << endl;

    if(mhs1.jk == 'p' || mhs1.jk == 'P'){
        cout << "Jenis Kelamin: Perempuan" << endl;
    }else if(mhs1.jk == 'l' || mhs1.jk == 'L'){
        cout << "Jenis Kelamin: Laki-Laki" << endl;
    }
    
 return 0;
}

Output :

Copied!
Masukkan Nama Lengkap: Abizar Masukkan Umur: 17 Masukkan Jenis Kelamin (p/l): l Informasi. Nama: Abizar Umur: 17 Jenis Kelamin: Laki-Laki

Structure dan Fungsi

Variabel struktur dapat diteruskan ke fungsi dan dikembalikan dengan cara yang sama seperti argument pada umumnya.

Contoh 2:

#include <iostream>
using namespace std;

struct Warnet {
    string name;
    int hours;
    int price;
};

void displayData(Warnet);

int main() {
    Warnet w;

    int const ONEHOURS = 5000;
    cout << "Masukkan Nama Lengkap: ";

    getline(cin, w.name);
    cout << "Masukkan Jam: ";
    cin >> w.hours;

    w.price = w.hours * ONEHOURS;

    displayData(w);
 return 0;
}
void displayData(Warnet w) {
    cout << "\nInformation" << endl;
    cout << "Nama: " << w.name << endl;
    cout <<"Jam: " << w.hours << endl;
    cout << "Harga: " << w.price;
}

Output :

Copied!
Masukkan Nama Lengkap: Abizar Masukkan Jam: 5 Information Nama: Abizar Jam: 5 Harga: 25000

Contoh 3:

#include <iostream>
using namespace std;

struct Warnet {
 string name;
 int hours;
 int price;
};

Warnet getData(Warnet);

void displayData(Warnet);

int main() {
    Warnet w, temp;
    temp = getData(w);
    w = temp;
    displayData(w);
 return 0;
}

Warnet getData(Warnet w) {
    int const ONEHOURS = 5000;
    cout << "Masukkan Nama Lengkap: ";
    getline(cin, w.name);
    cout << "Masukkan Jam: ";
    cin >> w.hours;
    w.price = w.hours * ONEHOURS;
 return w;
}

void displayData(Warnet w) {
    cout << "\nInformation" << endl;
    cout << "Nama: " << w.name << endl;
    cout <<"Jam: " << w.hours << endl;
    cout << "Harga: " << w.price;
}

Output :

Copied!
Masukkan Nama Lengkap: Abizar Masukkan Jam: 3 Information Nama: Abizar Jam: 3 Harga: 15000

Structure dan Pointer

Variabel pointer dapat dibuat tidak hanya untuk tipe data bawaan seperti (int, float, double, dll) tetapi juga dapat dibuat untuk tipe yang ditentukan pengguna seperti struktur.

Contoh 4:

#include <iostream>
using namespace std;

struct Jarak {
    int kaki;
    float inci;
};

int main() {
    Jarak *ptr, d;
    ptr = &d;

    cout << "Masukkan kaki: ";
    cin >> (*ptr).kaki;
    cout << "Masukkan inci: ";
    cin >> (*ptr).inci;
    cout << "Informasi" << endl;
    cout << "Jarak = " << ptr->kaki << " kaki " << ptr->inci << " kaki";
    
 return 0;
}

Output :

Copied!
Masukkan kaki: 42 Masukkan inci: 12 Informasi Jarak = 42 kaki 12 kaki
]]>
https://himtika.cs.unsika.ac.id/belajar-c-11-structure/feed/ 0
Belajar C++ #10 : POINTER https://himtika.cs.unsika.ac.id/belajar-c-10-pointer/ https://himtika.cs.unsika.ac.id/belajar-c-10-pointer/#respond Mon, 11 Mar 2024 05:41:00 +0000 https://himtika.cs.unsika.ac.id/?p=12228 Pointer

Alamat

Jika kita memiliki variabel nilai dalam program c++ yang kita buat, maka & nilai akan memberitahu alamat memori nya. Sebagai contoh:

Contoh 1:

#include <iostream>
using namespace std;
int main()
{
 int nilai_absen = 85;
 int nilai_tugas = 90;
 int nilai_uts = 70;
 
 cout << "Alamat dari nilai absen: "<< &nilai_absen << endl;
 cout << "Alamat dari nilai tugas: " << &nilai_tugas << endl;
 cout << "Alamat dari nilai uts: " << &nilai_uts << endl;
}

Output :

Copied!
Alamat dari nilai absen: 0x76761ffc8c Alamat dari nilai tugas: 0x76761ffc88 Alamat dari nilai uts: 0x76761ffc84 Catatan: 0x diawal alamat memori mewakili alamat dalam bentuk heksadesima

Pointer

Pointer digunakan untuk menyimpan alamat daripada nilai. Berikut merupakan cara untuk mendeklarasikan pointer:

Copied!
int *variabelPointer; int* variabelPointer; Catatan: operator * digunakan setelah tipe data untuk mendeklarasikan pointer

Menetapkan alamat ke pointer

Untuk menetapkan alamat ke dalam pointer maka gunakan cara seperti berikut:

Copied!
int* variabelPointer, var;
var = 10;
variabelPointer = &var;

Mendapatkan nilai dari alamat menggunakan pointer

Untuk mendapatkan nilai yang ditunjuk oleh pointer, maka kita bisa menggunakan operator * seperti berikut:

Copied!
int* variabelPointer, var; var = 10; variabelPointer = &var; cout << *variabelPointer << endl; Catatan: Pada saat kita menggunakan * dengan pointer, maka hal tersebut dinamakan dengan operator dereference. Ini beropasi pada pointer dan memberikan nilai yang ditunjukkan oleh alamat yang disimpan di pointer yaitu *variabelPointer = var

Contoh 2:

#include <iostream>
using namespace std;
int main() {
    int var = 10;
    int* variabelPointer;
    variabelPointer = &var;
    
    cout << "var = " << var << endl;
    cout << "Alamat dari vari (&var) = " << &var << endl << endl;
    cout << "Variabel Pointer = " << variabelPointer << endl;
    cout << "Isi alamat yang ditunjuk oleh variabelPointer = " << *variabelPointer << endl;
 return 0;
}

Output :

Copied!
var = 10 Alamat dari vari (&var) = 0xeb7c9ff924 Variabel Pointer = 0xeb7c9ff924 Isi alamat yang ditunjuk oleh variabelPointer = 10

Cara mengubah nilai yang ditunjuk oleh pointer

Jika variabelPointer menunjuk ke alamat var, maka kita dapat mengubah nilai dari var dengan menggunakan *variabelPointer. Sebagai contoh:

Copied!
int var = 10; int* variabelPointer; variabelPointer = &var; *variabelPointer = 7; Cout << var;

Contoh 3:

#include <iostream>
using namespace std;
int main() {
    int var = 9;
    int* variabelPointer;
    variabelPointer = &var;

    cout << "var = " << var << endl;
    cout << "*variabelPointer = " << *variabelPointer << endl << endl;
    cout << "Merubah nilai yang ada di variabel var menjadi 7:" << endl;

    var = 7;

    cout << "var = " << var << endl;
    cout << "*variabelPointer = " << *variabelPointer << endl << endl;
    cout << "Merubah nilai *variabelPointer menjadi 3:" << endl;
    
    *variabelPointer = 3;
    cout << "var = " << var << endl;
    cout << "*variabelPointer = " << *variabelPointer << endl;
 return 0;
}

Output :

Copied!
var = 9 *variabelPointer = 9 Merubah nilai yang ada di variabel var menjadi 7: var = 7 *variabelPointer = 7 Merubah nilai *variabelPointer menjadi 3: var = 3 *variabelPointer = 3

Pointer dan Array

Pointer adalah variabel yang menyimpan alamat variabel lain Pointer tidak hanya dapat menyimpan alamat dari satu variabel, tetapi juga dapat menyimpan alamat dari array. Perhatikan contoh berikut:

Copied!
int *ptr; int arr[5]’ ptr = arr;

Perhatikan kode program diatas, ptr merupakan pointer sedangkan arr merupakan array. Kode program ptr = arr; menyimpan alamat memori elemen pertama array dalam variabel ptr.

Mengarahkan pointer ke setiap elemen array

Misalkan kita perlu menunjuk ke elemen dari array menggunakan pointer yang sama. Sebagai contoh:

ptr + 1Sama Dengan&arr[1]
ptr + 2Sama Dengan&arr[2]
ptr + 3Sama Dengan&arr[3]
ptr + 4Sama Dengan&arr[4]

Selain itu kita juga bisa mengakses elemen array dengan menggunakan operator dereference
seperti contoh berikut:

*ptrSama Denganarr[0]
*(ptr+1)Sama Denganarr[1]
*(ptr+2)Sama Denganarr[2]
*(ptr+3)Sama Denganarr[3]
*(ptr+4)Sama Denganarr[4]

Contoh 4:

#include <iostream>
using namespace std;
int main()
{
    float arr[3];
    float *ptr;
    cout << "Menampilkan alamat array: " << endl;
    for (int i = 0; i < 3; ++i)
        {
        cout << "&arr[" << i << "] = " << &arr[i] << endl;
        }
    ptr = arr;
    cout<<"\nMenampilkan alamat dengan menggunakan pointer: "<< endl;
    for (int i = 0; i < 3; ++i)
        {
        cout << "ptr + " << i << " = "<< ptr + i << endl;
        }
 return 0;
}

Output :

Copied!
Menampilkan alamat array: &arr[0] = 0x33d13ffaf4 &arr[1] = 0x33d13ffaf8 &arr[2] = 0x33d13ffafc Menampilkan alamat dengan menggunakan pointer: ptr + 0 = 0x33d13ffaf4 ptr + 1 = 0x33d13ffaf8 ptr + 2 = 0x33d13ffafc

Contoh 5:

#include <iostream>
using namespace std;
int main() {
    float arr[5];
    cout << "Masukkan 5 bilangan: ";
    for (int i = 0; i < 5; ++i) {
        cin >> *(arr + i) ;
    }
    cout << "Menampilkan 5 bilangan: " << endl;
    for (int i = 0; i < 5; ++i) {
        cout << *(arr + i) << endl ;
    }
 return 0;
}

Output :

Copied!
Masukkan 5 bilangan: 1 2 3 4 5 Menampilkan 5 bilangan: 1 2 3 4 5

Pointer dan Fungsi

Pada materi fungsi di pertemuan sebelumnya ketika meneruskan argument ke dalam suatu fungsi metode yang digunakan disebut dengan passing by value karena nilai sebenarnya dilewati. Namun, ada cara lain untuk meneruskan argument ke fungsi dimana nilai sebenarnya dari argument tidak diteruskan. Sebagai gantinya, referensi ke nilai dilewati. Sebagai contoh:

Copied!
// fungsi yang mengambil nilai sebagai parameter void func1(int numVal) { // body } // fungsi yang mengambil referensi sebagai parameter // perhatikan & sebelum parameter void func2(int &numRef) { // body } int main() { int num = 5; // passing dengan nilai func1(num); // passing dengan referensi func2(num); return 0; }

Perhatikan kode program di atas, & di dalam parameter fungsi void func2(int &numRef). Ini menunjukkan bahwa kita menggunakan alamat variabel sebagai parameter. Jadi pada saat memanggil fungsi func2 dan meneruskan variabel num sebagai argument, itu sebenarnya kita sedang meneruskan alamat dari variabel num bukan nilai 5.

Contoh 6:

#include <iostream>
using namespace std;

void swap(int &n1, int &n2) {
    int temp;
    temp = n1;
    n1 = n2;
    n2 = temp;
}

int main()
{
    int a = 1, b = 2;
    cout << "Sebelum ditukar" << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    swap(a, b);

    cout << "\nSetelah ditukar" << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    
 return 0;
}

Output :

Copied!
Sebelum ditukar a = 1 b = 2 Setelah ditukar a = 2 b = 1

Contoh 7:

#include <iostream>
using namespace std;

void swap(int*, int*);

int main()
{
    int a = 1, b = 2;
    cout << "Sebelum ditukar" << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    swap(&a, &b);
    cout << "\nSetelah ditukar" << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

 return 0;
}

void swap(int* n1, int* n2) {
    int temp;
    temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

Output :

Copied!
Sebelum ditukar a = 1 b = 2 Setelah ditukar a = 2 b = 1

Memori Manajemen

Dalam bahasa pemrogram C++ kita dapat mengelola memori secara efektif menggunakan operator new dan delete. C++ memungkinkan kita untuk mengalokasikan memori variabel atau array dalam waktu berjalan ini dikenal dengan alokasi memori dinamis. Dalam bahasa pemrograman yang lain seperti Java atau Python, kompiler secara otomatis mengelola memori yang di alokasikan ke dalam variabel, tetapi di C++ tidak seperti itu. Dalam bahasa pemrograman C++ kita perlu membatalkan alokasi memori yang dialokasikan secara dinamis secara manual setelah kita tidak menggunakan variabel tersebut. Kita dapat mengalokasikan dan kemudian membatalkan alokasi memori secara dinamis menggunakan masing-masing operator new dan delete.

Operator new

Operator ini berfungsi untuk mengalokasikan memori ke variabel. Sebagai contoh:

Copied!
// mendeklarasikan pointer dengan tipe data int int* pointVar; // mengalokasikan memori secara dinamis // menggunakan kata kunci baru pointVar = new int; // tetapkan nilai ke memori yang dialokasikan *pointVar = 45;
]]>
https://himtika.cs.unsika.ac.id/belajar-c-10-pointer/feed/ 0
Belajar C++ #9 : Array https://himtika.cs.unsika.ac.id/belajar-c-9-array/ https://himtika.cs.unsika.ac.id/belajar-c-9-array/#respond Mon, 11 Mar 2024 04:10:19 +0000 https://himtika.cs.unsika.ac.id/?p=12222 Array

Array adalah variabel yang dapat menyimpan beberapa nilai dari tipe data yang sama. Sebagai contoh, misalnya dalam sebuah kelas memiliki 25 mahasiswa dan kita perlu untuk menyimpan semua nilai mahasiswa. Daripada membuat 25 variabel berbeda, kita hanya perlu membuat array seperti berikut:

Deklarasi Array :

Tipedata namaArray[ukuran];

Dalam array, setiap elemen dikaitkan dengan angka. Angka tersebut dikenal sebagai indeksarray. Berikut merupakan cara untuk mengakases elemen array dengan menggunakan indeks:

nilai[3];

Inisialilasi Array

Cara pertama :
int nilai[5] = {85,90,70,55,80};
Cara kedua :
int nilai[] ={85,90,70,55,80};

Contoh 1:

#include <iostream>
using namespace std;
int main() {
    int nilai[5] = {95, 63, 74, 88, 80};
    cout << "Nilai Mahasiswa: ";

    for (const int &n : nilai) {
    cout << n << " ";
    }

    cout << "\nNilai Mahasiswa: ";
    for (int i = 0; i < 5; ++i) {
    cout << nilai[i] << " ";
    }
 return 0;
}

Output :

Copied!
Nilai Mahasiswa: 95 63 74 88 80 Nilai Mahasiswa: 95 63 74 88 80

Contoh 2:

#include <iostream>
using namespace std;
int main() {
    int nilai[5];
    cout << "Masukkan 5 nilai mahasiswa: " << endl;
    for (int i = 0; i < 5; ++i) {
    cin >> nilai[i];
    }
    
    cout << "Nilai Mahasiswa UNSIKA: ";
    for (int n = 0; n < 5; ++n) {
    cout << nilai[n] << " ";
    }
 return 0;
}

Output :

Copied!
Masukkan 5 nilai mahasiswa: 80 90 70 75 80 Nilai Mahasiswa UNSIKA: 80 90 70 75 80

Contoh 3:

#include <iostream>
using namespace std;
int main() {
    double tinggi[5];
    double sum = 0;
    double count = 0;
    double average;

    cout << "Masukkan tinggi 5 mahasiswa: ";

    for (int i = 0; i < 5; ++i) {
    cin >> tinggi[i];
    }

    cout << "Tinggi Mahasiswa: ";

    for (const double &n : tinggi) {
    cout << n << " ";
    sum += n;
    ++count;
    }

    cout << "\nJumlah = " << sum << endl;
    average = sum / count;
    cout << "Rata-rata tinggi mahasiswa = " << average << endl;
    
 return 0;
}

Output :

Copied!
Masukkan tinggi 5 mahasiswa: 178 168 168 190 200 Tinggi Mahasiswa: 178 168 168 190 200 Jumlah = 904 Rata-rata tinggi mahasiswa = 180.8

Array Multidimensi

Array multidimensi merupakan array yang berada di dalam array, berikut merupakan contoh untuk membuat array multidimensi:

int matriks[3][4];

Dan berikut merupakan cara untuk mendeklarasikan array tiga dimensi:

int matriks[2][4][3];

Contoh 4:

#include <iostream>
using namespace std;
int main() {
    int matrik[3][2] = {{2, -5},
    {4, 0},
    {9, 1}};

    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 2; ++j) {
        cout << "Matrik[" << i << "][" << j << "] = " << matrik[i][j] << endl;
        }
    }
 return 0;
}

Output :

Copied!
Matrik[0][0] = 2 Matrik[0][1] = -5 Matrik[1][0] = 4 Matrik[1][1] = 0 Matrik[2][0] = 9 Matrik[2][1] = 1

Contoh 5:

#include <iostream>
using namespace std;
int main() {
    int bil[2][3];
    cout << "Masukkan 6 bilangan: " << endl;
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
        cin >> bil[i][j];
        }
    }
    cout << "Bilangan: " << endl;
        for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
        cout << "bil[" << i << "][" << j << "]: " << bil[i][j] << endl;
        }
    }
    return 0;
}

Output :

Copied!
Masukkan 6 bilangan: 1 2 3 4 5 6 Bilangan: bil[0][0]: 1 bil[0][1]: 2 bil[0][2]: 3 bil[1][0]: 4 bil[1][1]: 5 bil[1][2]: 6

Contoh 6:

#include <iostream>
using namespace std;
int main() {
    int arr[2][3][2] = {
    {{1, 2},{3, 4},{5, 6}},
    {{7, 8},{9, 10},{11, 12}}
    };
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            for (int k = 0; k < 2; ++k) {
                cout << "arr[" << i << "][" << j << "][" << k << "] = " << arr[i][j][k] << endl;
                        }
            }
    }
 return 0;
}

Output :

Copied!
arr[0][0][0] = 1 arr[0][0][1] = 2 arr[0][1][0] = 3 arr[0][1][1] = 4 arr[0][2][0] = 5 arr[0][2][1] = 6 arr[1][0][0] = 7 arr[1][0][1] = 8 arr[1][1][0] = 9 arr[1][1][1] = 10 arr[1][2][0] = 11 arr[1][2][1] = 12

Fungsi dan Array

Dalam bahasa pemrograman C++ kita bisa meneruskan array sebagai argumen ke dalam sebuah fungsi. Dan kita juga bisa mengembalikan array dari suatu fungsi.

Cara melewati array sebagai parameter

Copied!
returnType functionName(datatype arrayName[size]){ //body }

Contoh 7:

#include <iostream>
using namespace std;
void display(int n[5]) {
    cout << "Tampilkan nilai: " << endl; 
    for (int i = 0; i < 5; ++i) {
    cout << "Mahasiswa " << i + 1 << ": " << n[i] << endl;
    }
}
int main() {
    int nilai[5] = {88, 76, 90, 61, 69};
    display(nilai);
 return 0;
}

Output :

Copied!
Tampilkan nilai: Mahasiswa 1: 88 Mahasiswa 2: 76 Mahasiswa 3: 90 Mahasiswa 4: 61 Mahasiswa 5: 69

Contoh 8:

#include <iostream>
using namespace std;
void display(int n[][2]) {
    cout << "Tampilkan data: " << endl;
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 2; ++j) {
        cout << "bil[" << i << "][" << j << "]: " << n[i][j] << endl;
        }
    }
}
int main() {
    int bil[3][2] = {
    {3, 4},
    {9, 5},
    {7, 1}
    };

    display(bil);
    
 return 0;
}

Output :

Copied!
Tampilkan data: bil[0][0]: 3 bil[0][1]: 4 bil[1][0]: 9 bil[1][1]: 5 bil[2][0]: 7 bil[2][1]: 1
]]>
https://himtika.cs.unsika.ac.id/belajar-c-9-array/feed/ 0
Pilih Belajar C++ #8 : Fungsi https://himtika.cs.unsika.ac.id/pilih-belajar-c-8-fungsi/ https://himtika.cs.unsika.ac.id/pilih-belajar-c-8-fungsi/#respond Mon, 11 Mar 2024 01:31:44 +0000 https://himtika.cs.unsika.ac.id/?p=12214 Halo sobat informatics! Selamat datang dalam perjalanan baru kita ke dalam dunia fungsionalitas dalam pemrograman. Hari ini, kita akan menggali lebih dalam konsep yang sangat penting, yaitu “function” atau fungsi. Fungsi memberikan kemampuan kepada kita untuk mengorganisir dan merapikan kode, serta membuatnya lebih mudah dimengerti dan dapat digunakan kembali.

Bersiaplah untuk memahami berbagai aspek menarik, mulai dari contoh fungsi yang sederhana, penggunaan function overloading untuk kelas fungsi yang lebih kompleks, hingga konsep default parameter, variabel lokal dan global, serta merambah ke dalam keajaiban rekursi. Mari kita mulai petualangan kita dalam memahami kekuatan dan fleksibilitas fungsi dalam pemrograman!

a) Fungsi

Dalam merancang kode program, terkadang kita sering membuat kode untuk melakukan tugas yang sama secara berulang-ulang. Tugas yang sama ini akan jauh lebih efektif jika dipecah dari program utama dan dijadikan sebuah function.

Function atau fungsi merupakan kode program yang dirancang untuk menyelesaikan sebuah tugas tertentu dan merupakan bagian dari program utama. Function diperlukan untuk memecah alur program yang besar menjadi beberapa kode program kecil agar mudah untuk dikelola.

Deklarasi fungsi:

Copied!
returnType nama_fungsi(parameter1, parameter2, ...) { // body }

Parameter dan Argumen:

Parameter adalah sebutan untuk inputan fungsi pada saat pendefinisian fungsi tersebut. Sedangkan argument adalah sebutan untuk inputan fungsi pada saat pemanggilan fungsi.

Return:

Agar lebih fleksibel, sebuah function seharusnya mengembalikan nilai, bukan langsung menampilkan nilai dengan menggunakan perintah cout. Perintah return berfungsi untuk mengembalikan nilai yang ada di dalam function dan jangan lupa ketika kita menggunakan return kita harus menentukan tipe data apa yang akan dikembalikan oleh function tersebut.

Contoh 1:

#include <iostream>
using namespace std;

void salam()
{
    cout << "Selamat Pagi!";
}

int main()
{
    salam();
    return 0;
}

Output:

Copied!
Selamat Pagi!

Contoh 2:

#include <iostream>
using namespace std;

void cekBilangan(int bilangan)
{
    if ((bilangan % 2) == 0)
    {
        cout << bilangan << " Merupakan bilangan genap";
    }
    else
    {
        cout << bilangan << " Merupakan bilangan ganjil";
    }
}

int main()
{
    int bil;

    cout << "Masukkan bilangan: ";
    cin >> bil;

    cekBilangan(bil);
    return 0;
}

Output:

Copied!
Masukkan bilangan: 3 3 Merupakan bilangan ganjil

Contoh 3:

#include <iostream>
using namespace std;

int penjumlahan(int bil1, int bil2)
{
    return (bil1 + bil2);
}

int pengurangan(int bil1, int bil2)
{
    return (bil1 - bil2);
}

int perkalian(int bil1, int bil2)
{
    return (bil1 * bil2);
}

int pembagian(int bil1, int bil2)
{
    return (bil1 / bil2);
}

int main()
{
    int bil1, bil2;

    cout << "Masukkan 2 bilangan: ";
    cin >> bil1 >> bil2;

    cout << "Hasil penjumlahan: " << penjumlahan(bil1, bil2) << endl;
    cout << "Hasil pengurangan: " << pengurangan(bil1, bil2) << endl;
    cout << "Hasil perkalian: " << perkalian(bil1, bil2) << endl;
    cout << "Hasil pembagian: " << pembagian(bil1, bil2) << endl;
    return 0;
}

Output:

Copied!
Masukkan 2 bilangan: 8 4 Hasil penjumlahan: 12 Hasil pengurangan: 4 Hasil perkalian: 32 Hasil pembagian: 2

b) Function Overloading

Function overloading adalah function yang memiliki nama yang sama tetapi memiliki parameter yang berbeda. Function dapat memiliki nama yang sama jika jumlah atau jenis parameter yang dibuat berbeda.

Contoh 4:

#include <iostream>
using namespace std;

int penjumlahan(int, int);
int penjumlahan(int, int, int);
double penjumlahan(double, double);

int main()
{
    cout << "Hasil penjumlahan: " << penjumlahan(2, 4) << endl;
    cout << "Hasil penjumlahan: " << penjumlahan(2, 4, 6) << endl;
    cout << "Hasil penjumlahan: " << penjumlahan(5.5, 2.4) << endl;
    return 0;
}

int penjumlahan(int bil1, int bil2)
{
    return (bil1 + bil2);
}
int penjumlahan(int bil1, int bil2, int bil3)
{
    return (bil1 + bil2 + bil3);
}
double penjumlahan(double bil1, double bil2)
{
    return (bil1 + bil2);
}

Output:

Copied!
Hasil penjumlahan: 6 Hasil penjumlahan: 12 Hasil penjumlahan: 7.9

c) Default Parameter

Dalam membuat sebuah function yang memiliki parameter kita bisa memberikan nilai default untuk parameter. Jika sebuah function yang dibuat dengan argument default dipanggil tanpa meneruskan argument, maka parameter default akan digunakan.

Contoh 5:

#include <iostream>
using namespace std;

void display(char = '*', int = 3);

int main()
{
    int count = 5;
    cout << "Tidak ada argumen: ";
    display();

    cout << "Hanya argumen pertama: ";
    display('#');

    cout << "Dua argumen diisi: ";
    display('$', count);

    return 0;
}

void display(char c, int count)
{
    for (int i = 1; i <= count; ++i)
    {
        cout << c;
    }
    cout << endl;
}

Output:

Copied!
Tidak ada argumen: *** Hanya argumen pertama: ### Dua argumen diisi: $$$$$

d) Variabel Lokal dan Global

Variabel yang didefinisikan didalam function disebut sebagai variabel local. Cakupannya hanya terbatas pada function dimana ia didefinisikan. Sederhananya, variabel local ada dan hanya dapat diakses di dalam suatu function. Sedangkan variabel global adalah jika suatu variabel didefinisikan diluar function, ruang lingkup global adalah keseluruhan program artinya ia dapat digunakan dan diubah di bagian mana pun dari program setelah deklarasi.

Contoh 6:

#include <iostream>
using namespace std;
void test();

int main()
{
    int var = 5;
    test();
    var1 = 9;
}

void test()
{
    int var1;
    var1 = 6;
    cout << var;
}

Contoh 7:

#include <iostream>
using namespace std;
int c = 5;

void test();

int main()
{
    c++;
    cout << c << endl;
    test();
    return 0;
}

void test()
{
    c++;
    cout << c;
}

Output:

Copied!
6 7

Variabel statis hanya ada di dalam function yang dideklarasikan (mirip dengan variabel local) tetapi masa penggunaanya dimulai saat function dipanggil dan berakhir hanya saat program berakhir. Perbedaan utama antara variabel lokal dan variabel statis adalah, nilai variabel statis tetap ada di akhir program.

Contoh 8:

#include <iostream>
using namespace std;

void test()
{
    static int a = 0;
    a += 1;
    cout << "Ini adalah pemanggilan fungsi ke-" << a << endl;
}

int main()
{

    test();
    test();

    return 0;
}

Output:

Copied!
Ini adalah pemanggilan fungsi ke-1 Ini adalah pemanggilan fungsi ke-2

e) Fungsi Rekursi

Sebuah function yang memanggil dirinya sendiri dikenal sebagai fungsi rekursif. Dan, teknik ini dikenal sebagai rekursi.

Contoh 9:

#include <iostream>
using namespace std;

int factorial(int);

int main()
{
    int bil, hasil;
    cout << "Masukkan bilangan: ";
    cin >> bil;
    hasil = factorial(bil);
    cout << "Faktorial dari " << bil << " = " << hasil;
    return 0;
}

int factorial(int bil)
{
    if (bil > 1)
    {
        return bil * factorial(bil - 1);
    }
    else
    {
        return 1;
    }
}

Output:

Copied!
Masukkan bilangan: 5 Faktorial dari 5 = 120


Jadi itu yang bisa kita bahas pada artikel kali ini, dengan ini, kita menutup bab menarik kita mengenai fungsi dalam pemrograman. Telah kita bahas berbagai aspek menarik, mulai dari contoh fungsi sederhana yang merapikan kode, hingga konsep lebih lanjut seperti function overloading, default parameter, dan perbedaan antara variabel lokal dan global. Kita juga menjelajahi keindahan rekursi, di mana sebuah fungsi dapat memanggil dirinya sendiri untuk menyelesaikan tugas yang lebih kompleks.

Semoga perjalanan kita dalam menggali konsep fungsi membawa pemahaman yang lebih mendalam, serta membuka pintu untuk pengembangan program yang lebih terstruktur dan efisien. Teruslah berlatih dan eksplorasi, karena dunia pemrograman senantiasa menawarkan peluang baru untuk dipelajari. Sampai jumpa di bab berikutnya, sobat informatics!

]]>
https://himtika.cs.unsika.ac.id/pilih-belajar-c-8-fungsi/feed/ 0
Belajar C++ #7 : Perulangan https://himtika.cs.unsika.ac.id/__trashed-4/ https://himtika.cs.unsika.ac.id/__trashed-4/#respond Sun, 10 Mar 2024 23:43:36 +0000 https://himtika.cs.unsika.ac.id/?p=12201 Halo sobat informatics! Kali ini, kita akan memasuki wilayah baru dalam pemrograman, yaitu pembahasan mengenai perulangan. Dalam dunia coding, kemampuan untuk mengulang aksi atau serangkaian perintah adalah kunci utama untuk meningkatkan efisiensi dan fleksibilitas program.

Pada kesempatan kali ini, kita akan menjelajahi konsep perulangan menggunakan instruksi “for”, “while”, “do while”, serta memahami kegunaan dari “continue” dan “break”. Bersiaplah untuk memasuki dunia magis di mana kita dapat mengatur alur eksekusi program secara repetitif dan efektif. Mari kita mulai petualangan baru ini menuju penguasaan konsep perulangan dalam pemrograman!

a) Perulangan For

Perulangan for digunakan untuk mengulang pengeksekusian terhadap satu atau sejumlah pernyataan. Bentuk penulisan for:

Copied!
For (inisialisasi; kondisi; iterasi) { // pernyataan }

Keterangan: 

  • Inisialisasi => Menginisialisasi variabel dan hanya dapat dieksekusi satu kali. 
  • Kondisi => Jika kondisi bernilai true maka perulangan akan dijalankan dan jika 
  • Kondisi bernilai false maka perulangan akan berhenti. 
  • Iterasi => Untuk memperbaharui nilai variabel yang diinisialisasi dan kembali memeriksa kondisinya.

Contoh 1:

#include <iostream>
using namespace std;
int main()
{
    for (int i = 1; i <= 5; i++)
    {
        cout << i << ".";
    }

    return 0;
}

Output:

Copied!
1.2.3.4.5.

Contoh 2:

#include <iostream>
using namespace std;
int main()
{
    for (int i = 1; i <= 5; i++)
    {
        cout << "Algoritma dan Pemrograman! " << endl;
    }

    return 0;
}

Output:

Copied!
Algoritma dan Pemrograman! Algoritma dan Pemrograman! Algoritma dan Pemrograman! Algoritma dan Pemrograman! Algoritma dan Pemrograman!

Bisa dilihat, pada output di atas, tulisan “Algoritma dan Pemrograman! ” ditampilkan sebanyak 5 kali karena perulangan for tersebut akan terus berulang hingga kondisi yang telah ditentukan tidak lagi terpenuhi, dan itu adalah i <= 5.

b) Perulangan While

Perulangan while digunakan untuk memproses suatu pernyataan atau beberapa pernyataan beberapa kali. Perulangan pada while ini akan terus terjadi hingga kondisi yang ditentukan pada while statement nya sudah tidak terpenuhi lagi. Berikut bentuk dari penulisan while:

Copied!
while(kondisi){ //pernyataan }

Contoh 3:

#include <iostream>
using namespace std;
int main()
{
    int i = 1;
    while (i <= 5)
    {
        cout << i << " ";
        i++;
    }

    return 0;
}

Output:

Copied!
1 2 3 4 5

Contoh 4

#include <iostream>
using namespace std;
int main()
{

    int bil;
    int sum = 0;
    cout << "Masukan bilangan positif: ";
    cin >> bil;
    while (bil >= 0)
    {
        sum += bil;
        cout << "Masukan bilangan positif: ";
        cin >> bil;
    }
    cout << "\nTotal penjumlahan " << sum << endl;
    return 0;
}

Output:

Copied!
Masukan bilangan positif: 5 Masukan bilangan positif: 3 Masukan bilangan positif: 3 Masukan bilangan positif: -1 Total penjumlahan 11

Pada kedua contoh di atas, dapat dilihat, kita tidak menentukan jumlah iterasi nya secara eksplisit, melainkan hanya menyebutkan kondisi tertentu seperti “i <= 5” & “bil >=0”, yang dimana perulangan while tersebut seperti yang sudah disebutkan sebelumnya, akan terus berulang hingga kondisi yang telah ditentukan tersebut tidak terpenuhi lagi.

c) Perulangan Do While 

Perulangan Do While digunakan untuk mengulang proses dan akan dijalankan minimal satu kali. Berikut bentuk penulisannya:

Copied!
do{ //pernyataan } while(kondisi)

Contoh 5:

#include <iostream>
using namespace std;
int main()
{
    int bil = 0;
    int sum = 0;
    do
    {
        sum += bil;
        cout << "Masukan bilangan bulat: ";
        cin >> bil;
    } while (bil > 0);

    cout << "\nTotal Penjumlahan (Menggunakan do while): " << sum << endl;
    return 0;
}

Output:

Copied!
Masukan bilangan bulat: 1 Masukan bilangan bulat: 2 Masukan bilangan bulat: 3 Masukan bilangan bulat: -1 Total Penjumlahan (Menggunakan do while): 6

Sobat bisa lihat pada contoh di atas, meskipun variable “bil” masih bernilai 0 dan kondisi yang ditentukan pada perulangan do while adalah “bil > 0” (Yang artinya kondisi tidak terpenuhi di awal perulangan). Namun, dengan do while ini, meskipun kondisi pada saat awal perulangan tidak terpenuhi, hal tersebut akan tidak dihiraukan sehingga kode yang di dalam do while akan tetap tereksekusi saat pertama kali, dan do while akan mengevaluasi kondisi tersebut saat perulangan yang kedua kalinya.

d) Break

Break digunakan untuk mengakhiri perulangan.

Contoh 6: 

#include <iostream>
using namespace std;
int main()
{
    for (int i = 1; i <= 5; i++)
    {
        if (i == 3)
        {
            break;
        }
        cout << i << endl;
    }
    return 0;
}

Output:

Copied!
1 2

Dengan melihat contoh di atas, sobat bisa melihat, meskipun kondisi for nya masih memenuhi yaitu “i <= 5” pada saat i bernilai 3, karena kita membuat pengkondisian untuk mengeksekusi “break” pada saat i bernilai 3, maka perulangan akan terhenti saat itu juga.

Contoh 7:

#include <iostream>
using namespace std;
int main()
{
    int bil;
    int sum = 0;
    while (true)
    {
        cout << "Masukan bilangan bulat: ";
        cin >> bil;
        if (bil < 0)
        {
            break;
        }
        sum += bil;
    }
    cout << "Total Penjumlahan " << sum << endl;
    return 0;
}

Output:

Copied!
Masukan bilangan bulat: 9 Masukan bilangan bulat: 8 Masukan bilangan bulat: 3 Masukan bilangan bulat: -1 Total Penjumlahan 20

e) Continue

Continue digunakan untuk melanjutkan iterasi perulangan saat ini 

Contoh 8:

#include <iostream>
using namespace std;
int main()
{
    for (int i = 1; i <= 5; i++)
    {
        if (i == 3)
        {
            continue;
        }
        cout << i << endl;
    }
    return 0;
}

Output:

Copied!
1 2 4 5

Pada contoh di atas, dapat dilihat, yang harusnya program menampilkan output “3”, pada kode di atas, angka 3 tidak ditampilkan. karena pada kode tersebut terdapat pengkondisian jika i bernilai 3, maka “continue” akan tereksekusi, yang dimana itu membuat perulangan melanjutkan iterasinya tanpa harus menyelesaikan sisa kode di bawah nya.

Jadi itu pembahasan mengenai perulangan ya sobat, dengan pengetahuan yang kita temukan hari ini tentang perulangan menggunakan “for”, “while”, “do while”, serta kegunaan istimewa dari “continue” dan “break”, kini kita memiliki kunci ajaib untuk mengulang aksi atau perintah dengan lebih terstruktur dan efisien. Ingatlah, kepiawaian dalam mengimplementasikan perulangan menjadi landasan utama dalam menciptakan program yang handal dan responsif terhadap berbagai situasi. Mari terus eksplorasi dan teruskan semangat belajar, karena dunia pemrograman selalu menyajikan tantangan dan penemuan baru. Sampai jumpa di bab berikutnya, sobat informatics!

]]>
https://himtika.cs.unsika.ac.id/__trashed-4/feed/ 0
Belajar C++ #6 : Percabangan https://himtika.cs.unsika.ac.id/dad/ https://himtika.cs.unsika.ac.id/dad/#respond Sun, 10 Mar 2024 12:47:59 +0000 https://himtika.cs.unsika.ac.id/?p=12186 Halo sobat informatics! Selamat datang kembali di dunia informatika yang penuh dengan keajaiban kode dan logika! Pada kesempatan kali ini, kita akan menjelajahi sebuah konsep yang sangat fundamental dalam pemrograman, yaitu penggunaan kondisi “if”.

Melalui pemahaman yang mendalam terhadap cara “if” digunakan untuk mengatur jalannya program, kita akan memperoleh kekuatan baru dalam mengendalikan alur eksekusi. Mari kita mulai dengan memahami bahwa setiap baris kode memiliki perannya sendiri, dan bersama-sama, kita akan memahami bagaimana logika ini dapat membentuk pondasi yang kokoh dalam pengembangan perangkat lunak. Yuk, mari kita jelajahi lebih lanjut!

a) Kondisi If

If dipakai untuk mengatur kapan sebuah program akan dijalankan. Penulisan kondisi if setidaknya butuh 2 bagian, yakni kondisi dan statement. Statement bisa terdiri dari satu, dua atau ratusan baris perintah, baris ini hanya akan dijalankan selama kondisi bernilai true. Kondisi yang ingin diproses haruslah bertipe data bool atau sesuatu yang menghasilkan bool.

Contoh 1:

#include <iostream>
using namespace std;
int main()
{
    int bilangan;
    cout << "Masukkan bilangan bulat: ";
    cin >> bilangan;
    if (bilangan > 0)
    {
        cout << "Anda memasukkan bilangan positif: " << bilangan << endl;
    }
    return 0;
}

Output:

Copied!
Masukkan bilangan bulat: 1 Anda memasukkan bilangan positif: 1

Contoh 2:

#include <iostream>
using namespace std;
int main()
{
    string username;
    string password;
    cout << "Masukkan username: ";
    cin >> username;
    cout << "Masukkan password: ";
    cin >> password;
    if (username == "admin" && password == "admin123")
    {
        cout << "Login berhasil" << endl;
    }
    return 0;
}

Output:

  • Jika if terpenuhi
Copied!
Masukkan username: admin Masukkan password: admin123 Login berhasil
  • Jika tidak terpenuhi
Copied!
Masukkan username: user Masukkan password: user123

Dapat dilihat, output “Login berhasil” tidak ditampilkan, karena kondisi pada if statement tidak terpenuhi

b) Kondisi If…Else

Kondisi else akan dijalankan ketika kondisi if tidak sesuai atau menghasilkan nilai false.

Contoh 3:

#include <iostream>
using namespace std;
int main()
{
    int bilangan;
    cout << "Masukkan bilangan bulat: ";
    cin >> bilangan;
    if (bilangan > 0)
    {
        cout << "Anda memasukkan bilangan positif: " << bilangan << endl;
    }
    else
    {
        cout << "Anda memasukkan bilangan negatif: " << bilangan << endl;
    }
    return 0;
}

Output:

  • If terpenuhi
Copied!
Masukkan bilangan bulat: 1 Anda memasukkan bilangan positif: 1
  • If tidak terpenuhi (Masuk ke else)
Copied!
Masukkan bilangan bulat: -1 Anda memasukkan bilangan negatif: -1

Contoh 4:

#include <iostream>
using namespace std;
int main()
{
    string username;
    string password;
    cout << "Masukkan username: ";
    cin >> username;
    cout << "Masukkan password: ";
    cin >> password;
    if (username == "admin" && password == "admin123")
    {
        cout << "Login berhasil" << endl;
    }
    else
    {
        cout << "Maaf username atau password anda salah" << endl;
    }
    return 0;
}

Output:

  • If terpenuhi
Copied!
Masukkan username: admin Masukkan password: admin123 Login berhasil
  • If tidak terpenuhi (Masuk ke else)
Copied!
Masukkan username: user Masukkan password: user123 Maaf username atau password anda salah

c) Kondisi If … Else If … Else

Kondisi if, else if, & else bisa kita gunakan apabila kita ingin membuat kondisi lebih dari satu

Contoh 5:

#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cout << "Masukkan bilangan 1: ";
    cin >> a;
    cout << "Masukkan bilangan 2: ";
    cin >> b;
    if (a > b)
    {
        cout << a << " lebih besar dari " << b << endl;
    }
    else if (a < b)
    {
        cout << a << " lebih kecil dari " << b << endl;
    }
    else
    {
        cout << a << " sama dengan " << b << endl;
    }
    return 0;
}

Output:

  • Jika if utama yang terpenuhi (a > b)
Copied!
Masukkan bilangan 1: 5 Masukkan bilangan 2: 3 5 lebih besar dari 3
  • Jika else if yang terpenuhi (a < b)
Copied!
Masukkan bilangan 1: 3 Masukkan bilangan 2: 5 3 lebih kecil dari 5
  • Jika else yang terpenuhi (a = b)
Copied!
Masukkan bilangan 1: 5 Masukkan bilangan 2: 5 5 sama dengan 5

d) Switch Case

Switch merupakan sebuah struktur percabangan yang akan memeriksa satu variabel, lalu menjalankan perintah sesuai dengan kondisi.

Contoh 6

#include <iostream>
using namespace std;

int main()
{
    char oper;
    float num1, num2;
    cout << "Masukan operator (+, -, *, /): ";
    cin >> oper;
    cout << "Masukan 2 bilangan: " << endl;
    cin >> num1 >> num2;

    switch (oper)
    {
    case '+':
        cout << num1 << " + " << num2 << " = " << num1 + num2;
        break;
    case '-':
        cout << num1 << " - " << num2 << " = " << num1 - num2;
        break;
    case '*':
        cout << num1 << " * " << num2 << " = " << num1 * num2;
        break;
    case '/':
        cout << num1 << " / " << num2 << " = " << num1 / num2;
        break;
    default:
        cout << "Error! Operator salah";
        break;
    }

    return 0;
}

Output:

Misalnya kita memilih operator ‘+’ (Pertambahan)

Copied!
Masukan operator (+, -, *, /): + Masukan 2 bilangan: 10 5 10 + 5 = 15

Nahh, jadi itu materi pembahasan seputar percabangan, ada “if”, “else if”, “else”, dan “switch case”. Dengan pemahaman mendalam tentang konsep-konsep ini, sobat informatics kini memiliki alat yang kuat untuk mengontrol alur eksekusi program dengan lebih tepat dan efisien. Ingatlah bahwa kekuatan terletak pada pilihan yang bijak, dan setiap percabangan logika memberikan kemampuan untuk menyesuaikan program dengan kebutuhan spesifik.

Semoga perjalanan kita melalui konsep kondisional ini membawa pencerahan dan kejelasan dalam pengembangan perangkat lunak. Teruslah eksplorasi dan teruskan semangat belajar, karena dunia pemrograman selalu menawarkan tantangan baru yang menarik. Sampai jumpa di bab berikutnya, sobat informatics!

]]>
https://himtika.cs.unsika.ac.id/dad/feed/ 0
Belajar C++ #5 : Operator & Komentar https://himtika.cs.unsika.ac.id/belajar-c-5-operator-komentar/ https://himtika.cs.unsika.ac.id/belajar-c-5-operator-komentar/#respond Fri, 08 Mar 2024 15:44:29 +0000 https://himtika.cs.unsika.ac.id/?p=12143 Operator adalah fungsi yang mengambil satu atau lebih ekspresi sebagai input dan mengembalikan ekspresi yang menggunakan simbol infix khusus, bukannya notasi fungsional biasa. Nilai yang dioperasikan operator disebut operand.

Operator Aritmatika

Operator aritmatika digunakan untuk melakukan operasi aritmatika pada variabel dan data.

OperatorKeteranganContoh
+Penjumlahanx + y
Penguranganx – y
*Perkalianx * y
/Pembagianx / y
%Modulusx % y
Operator Aritmatika
Contoh Program :
#include <iostream>

using namespace std;

int main() {
    int a, b;

    a = 18;
    b = 10;

    cout << "a + b = " << (a + b) << endl;
    cout << "a - b = " << (a - b) << endl;
    cout << "a * b = " << (a * b) << endl;
    cout << "a / b = " << (a / b) << endl;
    cout << "a % b = " << (a % b) << endl;

 return 0;
 
}

Output :

a + b = 28
a – b = 8
a * b = 180
a / b = 1
a % b = 8

Operator Penugasan

Operator penugasan digunakan untuk menetapkan nilai ke dalam variabel.

OperatorContohPersamaan
=x = y;x = y;
+=x += y;x = x + y;
-=x -= y;x = x – y;
*=x *= y;x = x * y;
/=x /= y;x = x / y;
%=x = x % y;
Operator Penugasan
Contoh Program :
#include <iostream>

using namespace std;

int main() {
    int a, b;

    a = 25;
    b = 70;

    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "\nSetelah a += b;" << endl;

    a += b; // a = a +b
    cout << "a = " << a << endl;

 return 0;
 
}

Output :

a = 25
b = 70

Setelah a += b;
a = 95

Operator Decrement – Increment

Operator penurunan (decrement) dan operator penaikan (increment) kedua operator ini digunakan pada operand bertipe bilangan bulat. Operator increment digunakan untuk menaikkan nilai variabel sebesar satu. Sedangkan operator decrement dipakai untuk menurunkan nilai variabel sebesar satu. Penempatan operator terhadap variabel dapat dilakukan di depan atau dibelakang.

OperatorKeteranganContohContoh
++Operator Increment++xx++
Operator Decrement–yy–
Operator Decrement – Increment

Contoh Program :

#include <iostream>
using namespace std;
int main() {

    int bilangan = 15;
    // increment operator
    ++bilangan;
    cout << "Bilangan: " << bilangan <<endl;
    // decrement operator
    --bilangan;
    cout << "Bilangan: " << bilangan <<endl;
    
 return 0;
}

Output :

Bilangan: 16
Bilangan: 15

Operator Bitwise (Manipulasi Bit)

Operator bitwise digunakan untuk memanipulasi data dalam bentuk bit. Operator bitwise hanya bisa digunakan pada operand bertipe data integer dan karakter.

OperatorKeterangan
&Bitwise operator AND
|Bitwise operator OR
^Bitwise operator XOR
~Bitwise operator Komplemen
<<Bitwise operator shift kiri
>>Bitwise operator shift kanan
Operator Bitwise (Manipulasi Bit)

Operator Relasi

Operator relasi digunakan untuk memeriksa hubungan antara dua operand. Jika relasinya benar, ia akan mengembalikan 1 sedangkan jika relasi nya salah, ia akan mengembalikan 0

OperatorKeteranganContoh
==Sama denganx == y
!=Tidak sama denganx != y
>Lebih besar darix > y
<Kurang darix < y
>=Lebih dari atau sama denganx >= y
<=Kurang dari atau sama denganx <= y
Operator Relasi

Contoh Program :

#include <iostream>
using namespace std;
int main() {
    int a, b;
    a = 3;
    b = 5;
    bool result;
        result = (a == b); // false
        cout << "3 == 5 is " << result << endl;
        result = (a != b); // true
        cout << "3 != 5 is " << result << endl;
        result = a > b; // false
        cout << "3 > 5 is " << result << endl;
        result = a < b; // true
        cout << "3 < 5 is " << result << endl;
        result = a >= b; // false
        cout << "3 >= 5 is " << result << endl;
        result = a <= b; // true
        cout << "3 <= 5 is " << result << endl;
 return 0;
}

Output :

3 == 5 is 0
3 != 5 is 1
3 > 5 is 0
3 < 5 is 1
3 >= 5 is 0
3 <= 5 is 1

Operator Logika

Operator logika digunakan untuk memeriksa apakah suatu ekspresi benar atau salah. Jika ekspresi benar, ia akan mengembalikan 1 sedangkan jika ekspresi salah ia akan mengembalikan 0

OperatorContohKeterangan
&&x && yBenar hanya jika semua operand benar
||x || yBenar jika setidaknya salah satu operand benar
!!xBenar hanya jika operan salah
Operator Logika

Contoh Program :

#include <iostream>
using namespace std;
int main() {
    bool result;
        result = (3 != 5) && (3 < 5); // true
        cout << "(3 != 5) && (3 < 5) is " << result << endl;
        result = (3 == 5) && (3 < 5); // false
        cout << "(3 == 5) && (3 < 5) is " << result << endl;
        result = (3 == 5) && (3 > 5); // false
        cout << "(3 == 5) && (3 > 5) is " << result << endl;
        result = (3 != 5) || (3 < 5); // true
        cout << "(3 != 5) || (3 < 5) is " << result << endl;
        result = (3 != 5) || (3 > 5); // true
        cout << "(3 != 5) || (3 > 5) is " << result << endl;
        result = (3 == 5) || (3 > 5); // false
        cout << "(3 == 5) || (3 > 5) is " << result << endl;
        result = !(5 == 2); // true
        cout << "!(5 == 2) is " << result << endl;
        result = !(5 == 5); // false
        cout << "!(5 == 5) is " << result << endl;
 return 0;
}

Output :

(3 != 5) && (3 < 5) is 1

(3 == 5) && (3 < 5) is 0

(3 == 5) && (3 > 5) is 0

(3 != 5) || (3 < 5) is 1

(3 != 5) || (3 > 5) is 1

(3 == 5) || (3 > 5) is 0

!(5 == 2) is 1

!(5 == 5) is 0

Operator Kondisi

Operator kondisi bisa dipakai untuk mendapatkan sebuah nilai dari dua buah kemungkinan berdasarkan suatu kondisi.

Syntax : Ungkapan1 ? ungkapan2 : ungkapan3

Komentar

Pada bahasa pemrograman c++ komentar diawali dengan dua tanda garis miring (//). Semua tulisan yang terletak sesudah tanda // hingga akhir baris dengan sendirinya akan diperlakukan sebagai keterangan. Bagi compiler hal ini tidak berguna dan akan diabaikan pada saat kompilasi. Selaim menggunakan (//), komentar pada C++ juga dapat ditulis dalam bentuk /*komentar*/

]]>
https://himtika.cs.unsika.ac.id/belajar-c-5-operator-komentar/feed/ 0
Belajar C++ #4 : Input & Output https://himtika.cs.unsika.ac.id/belajar-c-4-input-output/ https://himtika.cs.unsika.ac.id/belajar-c-4-input-output/#respond Thu, 22 Feb 2024 15:40:22 +0000 https://himtika.cs.unsika.ac.id/?p=11933 Selamat datang, sobat informatics! Pada kesempatan kali ini, kita akan menjelajahi dunia input dan output dalam bahasa pemrograman C++. Bagi para pemula, konsep ini mungkin terdengar sedikit rumit, tetapi bersama-sama kita akan menjadikannya sebagai pembelajaran yang menarik untuk mengenal lebih dekat bagaimana program berkomunikasi dengan dunia luar.

Output

Dalam bahasa pemrograman C++ untuk menampilkan output bisa menggunakan perintah cout yang berfungsi untuk menampilkan output ke layar.

1. Output Menampilkan Teks

#include <iostream>
using namespace std;
int main()
{
    cout << "Belajar pemrograman c++ dari dasar hingga mahir";
    return 0;
}

Output:

Copied!
Belajar pemrograman c++ dari dasar hingga mahir [Done] exited with code=0 in 1.901 seconds

2. Output menampilkan angka dan karakter

#include <iostream>
using namespace std;
int main()
{
    int bilanganBulat = 50;
    double bilanganDesimal = 652.378;
    char karakter = 'F';
    cout << bilanganBulat << endl;
    cout << bilanganDesimal << endl;
    cout << "Karakter: " << karakter << endl;
    return 0;
}

Output:

Copied!
50 652.378 Karakter: F [Done] exited with code=0 in 3.68 seconds

Input

Dalam bahasa pemrograman C++ untuk mengambil input yang dilakukan oleh pengguna bisa menggunakan perintah cin yang berfungsi untuk memasukkan data.

1. Mengambil input bilangan bulat

#include <iostream>
using namespace std;
int main()
{
    int keliling, panjang, lebar;
    cout << "Masukkan panjang: ";
    cin >> panjang;
    cout << "Masukkan lebar: ";
    cin >> lebar;
    keliling = 2 * (panjang + lebar);
    cout << "Keliling persegi panjang = " << keliling;
    return 0;
}

Output:

Copied!
Masukkan panjang: 12 Masukkan lebar: 8 Keliling persegi panjang = 40% [Done] exited with code=null in 7.748 seconds

2. Mengambil input teks

#include <iostream>
using namespace std;
int main()
{
    string namaDepan, namaBelakang, namaLengkap;
    cout << "Masukkan nama depan: ";
    cin >> namaDepan;
    cout << "Masukkan nama belakang: ";
    cin >> namaBelakang;
    namaLengkap = namaDepan + " " + namaBelakang;
    cout << "Nama Lengkap anda " << namaLengkap;
    return 0;
}

Output:

Copied!
Masukkan nama depan: John Masukkan nama belakang: Doe Nama Lengkap anda John Doe [Done] exited with code=null in 17.72 seconds

3. Mengambil input ganda (Multiple Input)

#include <iostream>
using namespace std;
int main()
{
    char karakter;
    int bilangan;
    cout << "Masukkan karakter dan bilangan: " << endl;
    cin >> karakter >> bilangan;
    cout << "Karakter: " << karakter << endl;
    cout << "Bilangan: " << bilangan;
    return 0;
}

Output:

Copied!
Masukkan karakter dan bilangan: h 2 Karakter: h Bilangan: 2 [Done] exited with code=null in 18.069 seconds
]]>
https://himtika.cs.unsika.ac.id/belajar-c-4-input-output/feed/ 0
Belajar C++ #3 : Tipe Data Dasar https://himtika.cs.unsika.ac.id/tipe-data-dasar/ https://himtika.cs.unsika.ac.id/tipe-data-dasar/#respond Wed, 15 Sep 2021 15:28:20 +0000 https://himtika.cs.unsika.ac.id/?p=9362 Tipe data

Karena semua data di komputer hanyalah urutan bit, kami menggunakan tipe data (sering disebut “tipe” untuk jangka pendek) untuk memberi tahu kompiler bagaimana menafsirkan isi memori dalam beberapa cara yang berarti. Anda telah melihat satu contoh tipe data: integer. Ketika kita mendeklarasikan variabel sebagai integer, kita memberi tahu compiler “bagian dari memori yang digunakan variabel ini akan ditafsirkan sebagai nilai integer”.

Ketika Anda memberikan suatu nilai pada suatu objek, kompiler dan CPU akan mengkodekan nilai Anda ke dalam urutan bit yang sesuai untuk tipe data tersebut, yang kemudian disimpan dalam memori (ingat: memori hanya dapat menyimpan bit). Misalnya, jika Anda menetapkan objek integer dengan nilai 65 , nilai tersebut dikonversi ke urutan bit 0100 0001dan disimpan dalam memori yang ditetapkan untuk objek tersebut.

Sebaliknya, ketika objek dievaluasi untuk menghasilkan nilai, urutan bit tersebut disusun kembali ke nilai aslinya. Artinya 0100 0001diubah kembali menjadi nilai 65 .

Untungnya, kompiler dan CPU melakukan semua kerja keras di sini, jadi Anda biasanya tidak perlu khawatir tentang bagaimana nilai diubah menjadi urutan bit dan kembali.

Yang perlu Anda lakukan adalah memilih tipe data untuk objek Anda yang paling cocok dengan penggunaan yang Anda inginkan.

Tipe data dasar

C++ hadir dengan dukungan bawaan untuk banyak tipe data yang berbeda. Ini disebut tipe data fundamental , tetapi sering secara informal disebut tipe dasar , tipe primitif , atau tipe bawaan .

Berikut adalah daftar tipe data fundamental, beberapa di antaranya telah Anda lihat:

Void

Void adalah tipe data yang paling mudah untuk dijelaskan. Pada dasarnya, void berarti “tidak ada tipe”!

Akibatnya, variabel tidak dapat didefinisikan dengan tipe void. Void biasanya digunakan dalam beberapa konteks yang berbeda.

Fungsi yang tidak mengembalikan nilai

Paling umum, void digunakan untuk menunjukkan bahwa suatu fungsi tidak mengembalikan nilai:

void bilangan(int x) // void here means no return value
{
    std::cout << "Bilangan x adalah : " << x << '\\n';
    // no return statement, because this function doesn't return a value
}

Jika Anda menggunakan pernyataan pengembalian untuk mencoba mengembalikan nilai dalam fungsi seperti itu, kesalahan kompilasi akan terjadi:

void noReturn(int x) // void here means no return value
{
    return 5; // error
}

Ukuran tipe data dasar

Pertanyaan berikutnya yang jelas adalah “berapa banyak memori yang dibutuhkan variabel dari tipe data yang berbeda?”. Anda mungkin terkejut menemukan bahwa ukuran tipe data tertentu bergantung pada kompiler dan/atau arsitektur komputer!

C++ hanya menjamin bahwa setiap tipe data dasar akan memiliki ukuran minimum:

Namun, ukuran sebenarnya dari variabel mungkin berbeda pada mesin Anda (terutama int, yang lebih sering 4 byte).

Ukuran operator

Untuk menentukan ukuran tipe data pada mesin tertentu, C++ menyediakan operator bernama sizeof . Operator sizeof adalah operator unary yang mengambil baik jenis atau variabel, dan mengembalikan ukurannya dalam bytes. Anda dapat mengkompilasi dan menjalankan program berikut untuk mengetahui seberapa besar beberapa tipe data Anda:

#include <iostream>

int main()
{
    std::cout << "bool:\\t\\t" << sizeof(bool) << " bytes\\n";
    std::cout << "char:\\t\\t" << sizeof(char) << " bytes\\n";
    std::cout << "wchar_t:\\t" << sizeof(wchar_t) << " bytes\\n";
    std::cout << "char16_t:\\t" << sizeof(char16_t) << " bytes\\n";
    std::cout << "char32_t:\\t" << sizeof(char32_t) << " bytes\\n";
    std::cout << "short:\\t\\t" << sizeof(short) << " bytes\\n";
    std::cout << "int:\\t\\t" << sizeof(int) << " bytes\\n";
    std::cout << "long:\\t\\t" << sizeof(long) << " bytes\\n";
    std::cout << "long long:\\t" << sizeof(long long) << " bytes\\n";
    std::cout << "float:\\t\\t" << sizeof(float) << " bytes\\n";
    std::cout << "double:\\t\\t" << sizeof(double) << " bytes\\n";
    std::cout << "long double:\\t" << sizeof(long double) << " bytes\\n";

    return 0;
}

Hasil Anda mungkin berbeda jika Anda menggunakan jenis mesin yang berbeda, atau kompiler yang berbeda. Perhatikan bahwa Anda tidak dapat menggunakan operator sizeof pada tipe void , karena tidak memiliki ukuran (melakukannya akan menyebabkan kesalahan kompilasi).

Anda juga dapat menggunakan operator sizeof pada nama variabel:

#include <iostream>

int main()
{
    int x{};
    std::cout << "x is " << sizeof(x) << " bytes\\n";

    return 0;
}

Bilangan bulat bertanda

Bilangan bulat adalah tipe integral yang dapat mewakili bilangan bulat positif dan negatif, termasuk 0 (misalnya -2, -1, 0, 1, 2). C++ memiliki 4 tipe integer dasar yang berbeda yang tersedia untuk digunakan:

Perbedaan utama antara berbagai tipe bilangan bulat adalah bahwa mereka memiliki ukuran yang bervariasi — bilangan bulat yang lebih besar dapat menampung angka yang lebih besar.

Saat menulis angka negatif dalam kehidupan sehari-hari, kami menggunakan tanda negatif. Misalnya, -3 berarti “negatif 3”. Kami juga biasanya mengenali +3 sebagai “3 positif” (meskipun konvensi umum menyatakan bahwa kami biasanya menghilangkan awalan plus). Atribut ini menjadi positif, negatif, atau nol disebut jumlah ini tanda .

Secara default, bilangan bulat ditandatangani , yang berarti tanda nomor disimpan sebagai bagian dari nomor (menggunakan bit tunggal yang disebut bit tanda ). Oleh karena itu, bilangan bulat bertanda dapat menampung angka positif dan negatif (dan 0).

Mendefinisikan bilangan bulat bertanda

short s;
int i;
long l;
long long ll;

Semua bilangan bulat (kecuali int) dapat mengambil akhiran int opsional :

short int si;
long int li;
long long int lli;

Sufiks ini tidak boleh digunakan. Selain lebih banyak mengetik, menambahkan akhiran int membuat tipe lebih sulit dibedakan dari variabel bertipe int . Ini dapat menyebabkan kesalahan jika pengubah pendek atau panjang secara tidak sengaja terlewatkan.

Tipe integer juga dapat mengambil kata kunci bertanda opsional , yang menurut konvensi biasanya ditempatkan sebelum nama tipe:

signed short ss;
signed int si;
signed long sl;
signed long long sll;

Namun, kata kunci ini tidak boleh digunakan, karena berlebihan.

Range bilangan bulat bertanda

Seperti yang Anda pelajari di bagian terakhir, variabel dengan n bit dapat menampung 2 n nilai yang mungkin. Tapi nilai spesifik yang mana? Kami menyebut kumpulan nilai spesifik yang dapat disimpan oleh tipe data dalam jangkauannya . Rentang variabel integer ditentukan oleh dua faktor: ukurannya (dalam bit), dan apakah itu ditandatangani atau tidak.

Menurut definisi, bilangan bulat bertanda 8-bit memiliki kisaran -128 hingga 127. Ini berarti bilangan bulat bertanda dapat menyimpan nilai bilangan bulat apa pun antara -128 dan 127 (inklusif) dengan aman.

Berikut adalah tabel yang berisi kisaran bilangan bulat bertanda dengan ukuran berbeda:

Pembagian bilangan bulat

Saat membagi dua bilangan bulat, C++ berfungsi seperti yang Anda harapkan ketika hasil bagi adalah bilangan bulat:

#include <iostream>

int main()
{
    std::cout << 20 / 4;
    return 0;
}

Mari kita lihat apa yang terjadi ketika pembagian bilangan bulat menyebabkan hasil pecahan:

#include <iostream>

int main()
{
    std::cout << 8 / 5;
    return 0;
}

Saat melakukan pembagian dengan dua bilangan bulat (disebut pembagian bilangan bulat ), C++ selalu menghasilkan hasil bilangan bulat. Karena bilangan bulat tidak dapat menampung nilai pecahan, bagian pecahan mana pun dibuang begitu saja (tidak dibulatkan!).

Melihat lebih dekat pada contoh di atas, 8/5 menghasilkan nilai 1.6. Bagian pecahan (0,6) dijatuhkan, dan hasil dari 1 tetap.

Demikian pula, -8 / 5 menghasilkan nilai -1.

Bilangan bulat tak bertanda

C++ juga mendukung bilangan bulat yang tidak ditandatangani. Bilangan bulat tidak bertanda adalah bilangan bulat yang hanya dapat menampung bilangan bulat non-negatif.

Mendefinisikan bilangan bulat tak bertanda

Untuk mendefinisikan unsigned integer, kita menggunakan kata kunci unsigned . Dengan konvensi, ini ditempatkan sebelum tipe:

unsigned short us;
unsigned int ui;
unsigned long ul;
unsigned long long ull;

Range bilangan bulat tak bertanda

Bilangan bulat tidak bertanda 1 byte memiliki rentang 0 hingga 255. Bandingkan ini dengan rentang bilangan bulat bertanda 1 byte dari -128 hingga 127. Keduanya dapat menyimpan 256 nilai yang berbeda, tetapi bilangan bulat bertanda menggunakan setengah dari rentangnya untuk bilangan negatif, sedangkan bilangan bulat tidak bertanda dapat menyimpan bilangan positif yang dua kali lebih besar.

Berikut adalah tabel yang menunjukkan rentang untuk bilangan bulat yang tidak bertanda:

Bila tidak ada angka negatif yang diperlukan, bilangan bulat tidak bertanda sangat cocok untuk jaringan dan sistem dengan sedikit memori, karena bilangan bulat tidak bertanda dapat menyimpan lebih banyak bilangan positif tanpa menggunakan memori tambahan.

Notasi ilmiah

Notasi ilmiah adalah singkatan yang berguna untuk menulis angka panjang secara ringkas. Dan meskipun notasi ilmiah mungkin tampak asing pada awalnya, memahami notasi ilmiah akan membantu Anda memahami cara kerja bilangan floating point, dan yang lebih penting, apa batasannya.

Bilangan dalam notasi ilmiah berbentuk sebagai berikut: signifikan dan x 10 eksponen . Misalnya, dalam notasi ilmiah 1.2 x 10⁴1.2adalah signifikan dan 4eksponen. Karena 10⁴ bernilai 10.000, 1,2 x 10⁴ bernilai 12.000.

Menurut konvensi, angka dalam notasi ilmiah ditulis dengan satu digit sebelum koma, dan digit lainnya sesudahnya.

Pertimbangkan massa Bumi. Dalam notasi desimal, kami akan menulis ini sebagai 5973600000000000000000000 kg. Itu jumlah yang sangat besar (terlalu besar untuk muat bahkan dalam bilangan bulat 8 byte). Ini juga sulit dibaca (apakah itu 19 atau 20 nol?). Bahkan dengan pemisah (5.973.600.000.000.000.000.000.000) jumlahnya masih sulit dibaca.

Dalam notasi ilmiah, ini akan ditulis sebagai 5.9736 x 10²⁴ kg, yang lebih mudah dibaca. Notasi ilmiah memiliki manfaat tambahan untuk mempermudah membandingkan besaran dua bilangan yang sangat besar atau sangat kecil hanya dengan membandingkan eksponennya.

Karena mungkin sulit untuk mengetik atau menampilkan eksponen dalam C++, kami menggunakan huruf ‘e’ (atau terkadang ‘E’) untuk mewakili bagian “kali 10 pangkat” dari persamaan. Misalnya, 1.2 x 10⁴akan ditulis sebagai 1.2e4, dan 5.9736 x 10²⁴akan ditulis sebagai 5.9736e24.

Untuk angka yang lebih kecil dari 1, eksponennya bisa negatif. Angka 5e-2tersebut setara dengan 5 * 10⁻², yaitu 5 / 10², atau 0.05. Massa elektron adalah 9.1093822e-31 kg.

Cara mengubah angka menjadi notasi ilmiah

Gunakan prosedur berikut:

  • Eksponen Anda dimulai dari nol.
  • Geser desimal sehingga hanya ada satu angka bukan nol di sebelah kiri desimal.
    • Setiap tempat Anda menggeser desimal ke kiri meningkatkan eksponen sebesar 1.
    • Setiap tempat Anda menggeser desimal ke kanan mengurangi eksponen sebesar 1.
  • Pangkas semua nol di depan (di ujung kiri signifikan dan)
  • Pangkas semua angka nol yang tertinggal (di ujung kanan tanda dan) hanya jika angka aslinya tidak memiliki titik desimal. Kami berasumsi mereka tidak signifikan kecuali ditentukan lain.

Presisi dan angka nol setelah desimal

Pertimbangkan kasus di mana kami meminta dua asisten lab masing-masing untuk menimbang apel yang sama. Seseorang kembali dan mengatakan apel itu beratnya 87 gram. Yang lain kembali dan mengatakan apel itu berbobot 87,00 gram. Mari kita asumsikan penimbangannya benar. Dalam kasus sebelumnya, berat sebenarnya apel bisa berkisar antara 86,50 dan 87,49 gram. Mungkin skalanya hanya tepat untuk gram terdekat. Atau mungkin asisten kami sedikit membulat. Dalam kasus terakhir, kami yakin tentang berat sebenarnya apel ke tingkat yang jauh lebih tinggi (beratnya antara 86.9950 dan 87.0049 gram, yang memiliki variabilitas jauh lebih sedikit).

Jadi, dalam notasi ilmiah standar, kami lebih memilih untuk tetap mengikuti angka nol setelah titik desimal, karena angka tersebut memberikan informasi yang berguna tentang ketepatan angka.

Namun, dalam C++, 87 dan 87.000 diperlakukan sama persis, dan kompiler akan menyimpan nilai yang sama untuk masing-masing. Tidak ada alasan teknis mengapa kita harus lebih memilih satu daripada yang lain (meskipun mungkin ada alasan ilmiah, jika Anda menggunakan kode sumber sebagai dokumentasi).

Sekarang kita telah membahas notasi ilmiah, kita siap untuk membahas bilangan floating point.

Floating Point

Bilangan bulat sangat bagus untuk menghitung bilangan bulat, tetapi terkadang kita perlu menyimpan bilangan yang sangat besar, atau bilangan dengan komponen pecahan. Sebuah floating point variabel jenis adalah variabel yang dapat menyimpan sejumlah nyata, seperti 4320,0, -3,33, atau 0,01226. Bagian floating dari nama floating point mengacu pada fakta bahwa titik desimal dapat “mengambang”; yaitu, dapat mendukung sejumlah variabel digit sebelum dan sesudah titik desimal.

Ada tiga tipe data floating point yang berbeda: float , double , dan long double . Seperti halnya bilangan bulat, C++ tidak menentukan ukuran sebenarnya dari jenis ini (tetapi menjamin ukuran minimum). Pada arsitektur modern, representasi floating point hampir selalu mengikuti format biner IEEE 754. Dalam format ini, float adalah 4 byte, double adalah 8, dan double panjang dapat setara dengan double (8 byte), 80-bit (sering diisi hingga 12 byte), atau 16 byte.

Tipe data floating point selalu bertanda (dapat menyimpan nilai positif dan negatif).

float fValue;
double dValue;
long double ldValue;

Saat menggunakan literal floating point, selalu sertakan setidaknya satu tempat desimal (bahkan jika desimalnya adalah 0). Ini membantu kompiler memahami bahwa angka tersebut adalah angka floating point dan bukan bilangan bulat.

Mencetak angka floating point

#include <iostream>

int main()
{
	std::cout << 5.0 << '\\n';
	std::cout << 6.7f << '\\n';
	std::cout << 9876543.21 << '\\n';

	return 0;
}

Floating point range

Presisi floating point

Perhatikan pecahan 1/3. Representasi desimal dari angka ini adalah 0,33333333333333… dengan 3 keluar hingga tak terhingga. Jika Anda menulis nomor ini di selembar kertas, lengan Anda akan lelah di beberapa titik, dan Anda akhirnya akan berhenti menulis. Dan angka yang tersisa akan mendekati 0,3333333333…. (dengan 3 keluar hingga tak terbatas) tetapi tidak persis.

Di komputer, jumlah panjang tak terbatas akan membutuhkan memori tak terbatas untuk disimpan, dan biasanya kita hanya memiliki 4 atau 8 byte. Memori yang terbatas ini berarti bilangan floating point hanya dapat menyimpan sejumlah digit signifikan tertentu — dan bahwa setiap digit signifikan tambahan akan hilang. Angka yang sebenarnya disimpan akan mendekati angka yang diinginkan, tetapi tidak tepat.

presisi dari sejumlah floating point mendefinisikan berapa banyak angka yang signifikan dapat mewakili tanpa kehilangan informasi.

Saat mengeluarkan angka floating point, std::cout memiliki presisi default 6 — yaitu, mengasumsikan semua variabel floating point hanya signifikan hingga 6 digit (presisi minimum float), dan karenanya akan memotong apa pun setelah itu .

Program berikut menunjukkan std::cout terpotong menjadi 6 digit:

#include <iostream>

int main()
{
    std::cout << 9.87654321f << '\\n';
    std::cout << 987.654321f << '\\n';
    std::cout << 987654.321f << '\\n';
    std::cout << 9876543.21f << '\\n';
    std::cout << 0.0000987654321f << '\\n';

    return 0;
}

Boolean

Dalam kehidupan nyata, pertanyaan atau pertanyaan yang bisa dijawab dengan “ya” atau “tidak” adalah hal yang biasa. “Apakah apel itu buah?” Ya. “Apakah kamu suka asparagus?” Tidak.

Sekarang perhatikan pernyataan serupa yang dapat dijawab dengan “benar” atau “salah”: “Apel adalah buah”. Ini jelas benar. Atau bagaimana dengan, “Saya suka asparagus”. Benar-benar salah.

Kalimat seperti ini yang hanya memiliki dua kemungkinan hasil: ya/benar, atau tidak/salah adalah sangat umum, sehingga banyak bahasa pemrograman menyertakan tipe khusus untuk menanganinya. Tipe itu disebut tipe Boolean (catatan: Boolean dikapitalisasi dengan benar dalam bahasa Inggris karena dinamai menurut penemunya, George Boole).

Variabel boolean

Variabel Boolean adalah variabel yang hanya memiliki dua kemungkinan nilai: true , dan false .

Untuk mendeklarasikan variabel Boolean, kita menggunakan kata kunci bool .

bool b;

Untuk menginisialisasi atau menetapkan nilai true atau false ke variabel Boolean, kami menggunakan kata kunci true dan false .

bool b1 { true };
bool b2 { false };
b1 = false;
bool b3 {}; // default initialize to false

Sama seperti operator unary (-) dapat digunakan untuk membuat bilangan bulat negatif, operator NOT (!) dapat digunakan untuk membalik nilai Boolean dari true ke false , atau false ke true :

bool b1 { !true }; // b1 will be initialized with the value false
bool b2 { !false }; // b2 will be initialized with the value true

Nilai Boolean sebenarnya tidak disimpan dalam variabel Boolean sebagai kata “benar” atau “salah”. Sebaliknya, mereka disimpan sebagai bilangan bulat: true menjadi bilangan bulat 1 , dan false menjadi bilangan bulat 0 . Demikian pula, ketika nilai Boolean dievaluasi, mereka tidak benar-benar mengevaluasi ke “benar” atau “salah”. Mereka mengevaluasi ke bilangan bulat 0 (salah) atau 1 (benar). Karena Boolean sebenarnya menyimpan bilangan bulat, mereka dianggap sebagai tipe integer.

Mencetak variabel boolean

Saat kita mencetak nilai Boolean dengan std::cout, std::cout mencetak 0 untuk false , dan 1 untuk true :

#include <iostream>

int main()
{
    std::cout << true << '\\n'; // true evaluates to 1
    std::cout << !true << '\\n'; // !true evaluates to 0

    bool b{false};
    std::cout << b << '\\n'; // b is false, which evaluates to 0
    std::cout << !b << '\\n'; // !b is true, which evaluates to 1
    return 0;
}

Char

Char tipe data dirancang untuk membuatcharacter. Sebuah karakter dapat menjadi satu huruf, angka, simbol, atau spasi.

Tipe data char adalah tipe integral, artinya nilai yang mendasari disimpan sebagai integer. Mirip dengan bagaimana nilai Boolean 0ditafsirkan sebagai falsedan bukan nol ditafsirkan sebagai true, bilangan bulat yang disimpan oleh charvariabel ditafsirkan sebagai ASCII character.

ASCII singkatan dari American Standard Code for Information Interchange, dan mendefinisikan cara tertentu untuk mewakili karakter bahasa Inggris (ditambah beberapa simbol lainnya) sebagai angka antara 0 dan 127 (disebut kode ASCII atau titik kode ). Misalnya, kode ASCII 97 ditafsirkan sebagai karakter ‘a’.

Literal karakter selalu ditempatkan di antara tanda kutip tunggal (misalnya ‘g’, ‘1’, ‘ ‘).

Inisialisasi karakter

Anda dapat menginisialisasi variabel char menggunakan literal karakter:

char ch2{ 'a' };

Mencetak karakter

Saat menggunakan std::cout untuk mencetak char, std::cout menampilkan variabel char sebagai karakter ASCII:

#include <iostream>

int main()
{
    char ch1{ 'a' }; // (preferred)
    std::cout << ch1; // cout prints a character

    char ch2{ 98 }; // code point for 'b' (not preferred)
    std::cout << ch2; // cout prints a character ('b')

    return 0;
}

Mencetak karakter sebagai bilangan bulat melalui type casting

Jika kita ingin menampilkan char sebagai angka, bukan karakter, kita harus memberi tahu std::cout untuk mencetak char seolah-olah itu bilangan bulat. Salah satu cara (buruk) untuk melakukan ini adalah dengan menetapkan karakter ke bilangan bulat, dan mencetak bilangan bulat:

#include <iostream>

int main()
{
    char ch { 97 } ;
    int i { ch }; // initialize an integer with the value of ch
    std::cout << i << '\\n'; // print the integer value
    return 0;
}

Namun, ini aneh. Cara yang lebih baik adalah dengan menggunakan tipe cast . Sebuah tipe cast menciptakan nilai dari satu jenis dari nilai tipe lain. Untuk mengonversi antara tipe data dasar (misalnya, dari char ke int, atau sebaliknya), kami menggunakan tipe cast yang disebut static cast .

Sintaks untuk pemain statis terlihat sedikit lucu:

static_cast<new_type>(ekspresi)

static_cast mengambil nilai dari ekspresi sebagai input, dan mengubahnya menjadi tipe dasar apa pun yang direpresentasikan new_type (misalnya int, bool, char, double).

#include <iostream>

int main()
{
    char ch{ 'a' };
    std::cout << ch << '\\n';
    std::cout << static_cast<int>(ch) << '\\n';
    std::cout << ch << '\\n';
    return 0;
}

Penting untuk dicatat bahwa parameter ke static_cast dievaluasi sebagai ekspresi. Ketika kita memasukkan sebuah variabel, variabel tersebut dievaluasi untuk menghasilkan nilainya, yang kemudian diubah menjadi tipe baru. Variabel tidak terpengaruh oleh casting nilainya ke tipe baru. Dalam kasus di atas, variabel ch masih berupa char, dan masih memiliki nilai yang sama.

Perhatikan juga bahwa casting statis tidak melakukan pemeriksaan rentang apa pun, jadi jika Anda memasukkan bilangan bulat besar ke dalam char, Anda akan membanjiri char Anda.

Memasukkan karakter

Program berikut meminta pengguna untuk memasukkan karakter, lalu mencetak karakter dan kode ASCII-nya:

#include <iostream>

int main()
{
    std::cout << "Input a keyboard character: ";

    char ch{};
    std::cin >> ch;
    std::cout << ch << " has ASCII code " << static_cast<int>(ch) << '\\n';

    return 0;
}

Perhatikan bahwa std::cin akan memungkinkan Anda memasukkan banyak karakter. Namun, variabel ch hanya dapat menampung 1 karakter. Akibatnya, hanya karakter input pertama yang diekstraksi ke dalam variabel ch . Sisa input pengguna dibiarkan di buffer input yang digunakan std::cin, dan dapat diekstraksi dengan panggilan berikutnya ke std::cin.

Anda dapat melihat perilaku ini dalam contoh berikut:

#include <iostream>

int main()
{
    std::cout << "Input a keyboard character: "; // assume the user enters "abcd" (without quotes)

    char ch{};
    std::cin >> ch; // ch = 'a', "bcd" is left queued.
    std::cout << ch << " has ASCII code " << static_cast<int>(ch) << '\\n';

    // Note: The following cin doesn't ask the user for input, it grabs queued input!
    std::cin >> ch; // ch = 'b', "cd" is left queued.
    std::cout << ch << " has ASCII code " << static_cast<int>(ch) << '\\n';

    return 0;
}

Escape

Ada beberapa karakter dalam C++ yang memiliki arti khusus. Karakter ini disebut escape sequence . Urutan escape dimulai dengan karakter ‘\’ (garis miring terbalik), dan kemudian huruf atau angka berikutnya.

Anda telah melihat urutan escape yang paling umum: ‘\n’, yang dapat digunakan untuk menyematkan baris baru dalam string teks:

Berikut adalah tabel dari semua urutan escape:

std::string

Untuk menggunakan string dalam C++, pertama-tama kita perlu #include <string> header untuk membawa deklarasi untuk std::string. Setelah selesai, kita dapat mendefinisikan variabel bertipe std::string.

#include <string> // allows use of std::string

std::string myName {}; // empty string

Sama seperti variabel normal, Anda dapat menginisialisasi atau menetapkan nilai ke string seperti yang Anda harapkan:

std::string name{ "Jony" }; // initialize myName with string literal "Alex"
name = "Erik"; // assign variable myName the string literal "John"

Perhatikan bahwa string juga dapat menampung angka:

std::string myID{ "45" }; // "45" is not the same as integer 45!

Dalam bentuk string, angka diperlakukan sebagai teks, bukan angka, dan dengan demikian angka tidak dapat dimanipulasi sebagai angka (misalnya Anda tidak dapat mengalikannya). C++ tidak akan secara otomatis mengonversi nomor string menjadi nilai integer atau floating point.

Output string

String dapat menjadi output seperti yang diharapkan menggunakan std::cout:

#include <iostream>
#include <string>

int main()
{
    std::string name{ "Sahru" };
    std::cout << "Nama saya adalah  " << name << '\\n';

    return 0;
}

String kosong tidak akan mencetak apa pun:

#include <iostream>
#include <string>

int main()
{
    std::string empty{ };
    std::cout << '[' << empty << ']';

    return 0;
}

Masukan string dengan std::cin

Menggunakan string dengan std::cin dapat menghasilkan beberapa kejutan! Perhatikan contoh berikut:

#include <iostream>
#include <string>

int main()
{
    std::cout << "Enter your full name: ";
    std::string name{};
    std::cin >> name; // this won't work as expected since std::cin breaks on whitespace

    std::cout << "Enter your age: ";
    std::string age{};
    std::cin >> age;

    std::cout << "Your name is " << name << " and your age is " << age << '\\n';

    return 0;
}

Berikut hasil dari contoh run program ini:

Hmm, itu tidak benar! Apa yang terjadi? Ternyata ketika menggunakan operator>> untuk mengekstrak string dari cin, operator>> hanya mengembalikan karakter hingga spasi putih pertama yang ditemuinya. Karakter lain dibiarkan di dalam std::cin, menunggu ekstraksi berikutnya.

Jadi ketika kami menggunakan operator>> untuk mengekstrak string ke dalam variabel name, hanya "John"diekstraksi, meninggalkan " Doe"di dalam std::cin. Ketika kami kemudian menggunakan operator>> untuk mendapatkan variabel age, itu diekstraksi "Doe"alih-alih menunggu kami memasukkan usia. Kemudian program berakhir.

Gunakan std::getline() untuk memasukkan teks

Untuk membaca baris input lengkap ke dalam string, Anda sebaiknya menggunakan std::getline()fungsi sebagai gantinya. std::getline() mengambil dua parameter: yang pertama adalah std::cin, dan yang kedua adalah variabel string Anda.

Berikut program yang sama seperti di atas menggunakan std::getline():

#include <string> // For std::string and std::getline
#include <iostream>

int main()
{
    std::cout << "Enter your full name: ";
    std::string name{};
    std::getline(std::cin >> std::ws, name); // read a full line of text into name

    std::cout << "Enter your age: ";
    std::string age{};
    std::getline(std::cin >> std::ws, age); // read a full line of text into age

    std::cout << "Your name is " << name << " and your age is " << age << '\\n';

    return 0;
}

Terimakasih, semoga tutorial ini bermanfaat apabila ada pertanyaan silahkan untuk bertanya di kolom komentar.

]]>
https://himtika.cs.unsika.ac.id/tipe-data-dasar/feed/ 0
Belajar C++ #2 : Dasar Dasar C++ https://himtika.cs.unsika.ac.id/dasar-dasar-cpp/ https://himtika.cs.unsika.ac.id/dasar-dasar-cpp/#respond Wed, 15 Sep 2021 09:36:12 +0000 https://himtika.cs.unsika.ac.id/?p=9354 Hallo sobat informatics, pada tutorial ini kita mulai membahas C++. Program komputer merupakan urutan instruksi yang memberi tahu komputer apa yang harus dilakukan. Sebuah pernyataan adalah jenis instruksi yang menyebabkan program untuk melakukan beberapa tindakan .

Pernyataan sejauh ini merupakan jenis instruksi yang paling umum dalam program C++. Ini karena mereka adalah unit komputasi independen terkecil dalam bahasa C++. Dalam hal itu, mereka bertindak seperti kalimat dalam bahasa alami. Ketika kita ingin menyampaikan ide kepada orang lain, kita biasanya menulis atau berbicara dalam kalimat (bukan dalam kata atau suku kata acak). Di C++, ketika kita ingin program kita melakukan sesuatu, kita biasanya menulis pernyataan.

Sebagian besar (tetapi tidak semua) pernyataan dalam C++ diakhiri dengan titik koma. Jika Anda melihat garis yang diakhiri dengan titik koma, itu mungkin sebuah pernyataan.

Dalam bahasa tingkat tinggi seperti C++, satu pernyataan dapat dikompilasi menjadi banyak instruksi bahasa mesin.

Ada banyak pernyataan dalam C++ diantaranya yakni:

  1. Declaration statements
  2. Jump statements
  3. Expression statements
  4. Compound statements
  5. Selection statements (conditionals)
  6. Iteration statements (loops)
  7. Try blocks

Function dan Main Function

Dalam C++, pernyataan biasanya dikelompokkan ke dalam unit yang disebut fungsi. Sebuah fungsi adalah kumpulan pernyataan yang mengeksekusi secara berurutan (dalam urutan, dari atas ke bawah). Saat Anda belajar menulis program Anda sendiri, Anda akan dapat membuat fungsi Anda sendiri dan mencampur dan mencocokkan pernyataan dengan cara apa pun yang Anda inginkan (kami akan menunjukkan caranya di pelajaran mendatang).

Aturan

Setiap program C++ harus memiliki fungsi khusus bernama main (semua huruf kecil). Ketika program dijalankan, pernyataan di dalam main dieksekusi secara berurutan.

Program biasanya berhenti (selesai berjalan) ketika pernyataan terakhir di dalam fungsi main telah dieksekusi (meskipun program mungkin dibatalkan lebih awal dalam beberapa keadaan, atau melakukan pembersihan setelahnya).

Fungsi biasanya ditulis untuk melakukan pekerjaan tertentu. Misalnya, fungsi bernama “max” mungkin berisi pernyataan yang menentukan mana dari dua angka yang lebih besar. Sebuah fungsi bernama “calculateGrade” mungkin menghitung nilai siswa dari sekumpulan nilai ujian. Kami akan berbicara lebih banyak tentang fungsi segera, karena mereka adalah alat pengorganisasian yang paling umum digunakan dalam suatu program.

Hello World

Sekarang setelah Anda memiliki pemahaman singkat tentang apa pernyataan dan fungsi, mari kembali ke program “Hello world” dan lihat apa yang dilakukan setiap baris secara lebih rinci.

#include <iostream>

int main()
{
   std::cout << "Hello world!";
   return 0;
}

Baris 1 adalah jenis jalur khusus yang disebut direktif preprosesor. Direktif preprocessor ini menunjukkan bahwa kita ingin menggunakan konten library iostream, yang merupakan bagian dari library standar C++ yang memungkinkan kita membaca dan menulis teks dari/ke konsol. Kita membutuhkan baris ini untuk menggunakan std::cout pada baris 5. Mengecualikan baris ini akan mengakibatkan kesalahan kompilasi pada baris 5, karena kompilator tidak akan mengetahui apa itu std::cout.

Baris 2 kosong, dan diabaikan oleh kompilator. Baris ini hanya ada untuk membantu membuat program lebih mudah dibaca oleh manusia (dengan memisahkan #include preprocessor directive dan bagian selanjutnya dari program).

Baris 3 memberitahu compiler bahwa kita akan menulis (mendefinisikan) sebuah fungsi yang disebut main . Seperti yang Anda pelajari di atas, setiap program C++ harus memiliki fungsi utama atau akan gagal untuk ditautkan.

Baris 4 dan 7 memberitahu compiler baris mana yang merupakan bagian dari fungsi utama . Segala sesuatu antara kurung kurawal pembukaan pada baris 4 dan kurung kurawal penutup pada baris 7 dianggap sebagai bagian dari fungsi utama . Ini disebut badan fungsi.

Baris 5 adalah pernyataan pertama dalam fungsi main , dan merupakan pernyataan pertama yang akan dijalankan ketika kita menjalankan program kita. std::cout (yang merupakan singkatan dari “character output”) dan <<operator mengizinkan kita untuk mengirim huruf atau angka ke konsol untuk menjadi output. Dalam hal ini, kami mengirimkan teks “Hello world!”, yang akan ditampilkan ke konsol. Pernyataan ini menciptakan output program yang terlihat.

Baris 6 adalah pernyataan kembali. Ketika program yang dapat dieksekusi selesai berjalan, program mengirimkan nilai kembali ke sistem operasi untuk menunjukkan apakah itu berjalan dengan sukses atau tidak. Pernyataan pengembalian khusus ini mengembalikan nilai 0 ke sistem operasi, yang berarti “semuanya berjalan baik-baik saja!”. Ini adalah pernyataan terakhir dalam program yang dijalankan.

Anda dapat mengompilasi dan menjalankan program ini sendiri, dan Anda akan melihat bahwa program ini menampilkan yang berikut ke konsol:

Halo Dunia!

Sintaks dan kesalahan sintaks

Dalam bahasa Inggris, kalimat dibangun menurut aturan tata bahasa tertentu yang mungkin Anda pelajari di kelas bahasa Inggris di sekolah. Misalnya, kalimat normal diakhiri dengan titik. Aturan yang mengatur bagaimana kalimat dibangun dalam bahasa disebut sintaks . Jika Anda lupa titik dan menjalankan dua kalimat bersama-sama, ini merupakan pelanggaran sintaks bahasa Inggris.

C++ juga memiliki sintaks: aturan tentang bagaimana program Anda harus dibuat agar dianggap valid. Saat Anda mengkompilasi program Anda, kompiler bertanggung jawab untuk memastikan program Anda mengikuti sintaks dasar bahasa C++. Jika Anda melanggar aturan, kompilator akan mengeluh ketika Anda mencoba mengkompilasi program Anda, dan memberi Anda kesalahan sintaksis .

Mari kita lihat apa yang terjadi jika kita menghilangkan titik koma pada baris 5 dari program “Hello world”, seperti ini:

#include <iostream>

int main()
{
   std::cout << "Hello world!"
   return 0;
}

Komentar

Sebuah komentar adalah catatan programmer dapat dibaca yang dimasukkan langsung ke dalam kode sumber program. Komentar diabaikan oleh kompiler dan hanya untuk penggunaan programmer.

Di C++ ada dua gaya komentar yang berbeda, keduanya memiliki tujuan yang sama: untuk membantu pemrogram mendokumentasikan kode dalam beberapa cara.

Komentar satu baris

Simbol // memulai C ++ single-line komentar, yang memberitahu compiler untuk mengabaikan segala sesuatu dari // simbol ke akhir baris. Sebagai contoh:

std::cout << "Hello world!"; // Ini merupakan Komentar

Komentar multi baris

/*dan */sepasang simbol menunjukkan C-gaya multi-baris komentar. Segala sesuatu di antara simbol diabaikan.

/* Ini merupakan contoh komentar
   multi baris. Komentar
   ini akan diabaikan oleh compiler. */

Ketika kompiler mencoba mengkompilasi ini, ia akan mengabaikan semuanya mulai dari /* pertama hingga */ pertama. Karena ” ini tidak ada di dalam komentar */ ” tidak dianggap sebagai bagian dari komentar, kompiler akan mencoba mengompilasinya. Itu pasti akan menghasilkan kesalahan kompilasi.

Data

Dalam komputasi, data adalah segala informasi yang dapat dipindahkan, diproses, atau disimpan oleh komputer.

Sebuah program dapat memperoleh data untuk bekerja dengan banyak cara: dari file atau database, melalui jaringan, dari pengguna yang memberikan input pada keyboard, atau dari programmer yang memasukkan data langsung ke kode sumber program itu sendiri. Dalam program “Hello world” dari pelajaran yang disebutkan di atas, teks “Hello world!” dimasukkan langsung ke dalam kode sumber program, menyediakan data untuk digunakan program. Program kemudian memanipulasi data ini dengan mengirimkannya ke monitor untuk ditampilkan.

Data di komputer biasanya disimpan dalam format yang efisien untuk penyimpanan atau pemrosesan (dan karenanya tidak dapat dibaca manusia). Jadi, ketika program “Hello World” dikompilasi, teks “Hello world!” diubah menjadi format yang lebih efisien untuk digunakan program (biner, yang akan kita bahas di pelajaran mendatang).

Objek dan Variabel

Semua komputer memiliki memori, yang disebut RAM (singkatan dari memori akses acak), yang tersedia untuk digunakan oleh program Anda. Anda dapat menganggap RAM sebagai serangkaian kotak surat bernomor yang masing-masing dapat digunakan untuk menyimpan sepotong data saat program sedang berjalan. Sepotong data, disimpan dalam memori di suatu tempat, disebut nilai .

Di C++, akses memori langsung tidak diperbolehkan. Sebagai gantinya, kami mengakses memori secara tidak langsung melalui suatu objek. Sebuah objek merupakan wilayah penyimpanan (biasanya memori) yang memiliki nilai dan sifat yang terkait lainnya (yang akan kita bahas pada pelajaran di masa depan). Cara kerja kompiler dan sistem operasi untuk menetapkan memori ke objek berada di luar cakupan pelajaran ini. Tetapi poin kuncinya di sini adalah bahwa alih-alih mengatakan go get the value stored in mailbox number 7532 , kita dapat mengatakan, go get value yang disimpan oleh objek ini . Ini berarti kita dapat fokus menggunakan objek untuk menyimpan dan mengambil nilai, dan tidak perlu khawatir tentang di mana sebenarnya mereka ditempatkan dalam memori.

Objek dapat diberi nama atau tanpa nama (anonim). Objek bernama disebut variabel , dan nama objek disebut identifier. Dalam program kami, sebagian besar objek yang kami buat dan gunakan akan menjadi variabel.

Instansiasi Variabel

Untuk membuat variabel, kami menggunakan jenis pernyataan deklarasi khusus yang disebut definisi (kami akan mengklarifikasi perbedaan antara deklarasi dan definisi nanti). Berikut ini contoh pendefinisian variabel bernama x:

int x; // define a variable named x, of type int

Pada waktu kompilasi, ketika kompilator melihat pernyataan ini, ia membuat catatan untuk dirinya sendiri bahwa kita mendefinisikan sebuah variabel, memberinya nama x , dan itu bertipe int (lebih lanjut tentang tipe data sebentar lagi). Setiap kali kompiler melihat identififer x , ia akan tahu bahwa kita mereferensikan variabel ini.

Ketika program dijalankan (disebut runtime ), variabel akan dipakai. Instansiasi adalah kata mewah yang berarti objek akan dibuat dan diberi alamat memori. Variabel harus diinstansiasi sebelum dapat digunakan untuk menyimpan nilai. Sebagai contoh, katakanlah variabel x dibuat di lokasi memori 140. Setiap kali program kemudian menggunakan variabel x, ia akan mengakses nilai di lokasi memori 140. Objek yang dipakai terkadang juga disebut instance .

Tipe Data

Sejauh ini, kita telah membahas bahwa variabel adalah tempat penyimpanan bernama yang dapat menyimpan nilai data (bagaimana tepatnya data disimpan adalah topik untuk pelajaran mendatang). Sebuah tipe data (lebih sering hanya disebut jenis ) memberitahu compiler jenis nilai (misalnya nomor, surat, teks, dll …) variabel akan menyimpan.

Dalam contoh di atas, variabel x kita diberi tipe int , yang berarti variabel x akan mewakili nilai integer. Bilangan bulat adalah bilangan yang dapat ditulis tanpa komponen pecahan, seperti 4, 27, 0, -2, atau -12. Singkatnya, kita dapat mengatakan bahwa x adalah variabel integer .

Dalam C++, tipe variabel harus diketahui pada waktu kompilasi (saat program dikompilasi), dan tipe tersebut tidak dapat diubah tanpa mengkompilasi ulang program. Ini berarti variabel integer hanya dapat menyimpan nilai integer. Jika Anda ingin menyimpan beberapa jenis nilai lain, Anda harus menggunakan variabel yang berbeda.

Bilangan bulat hanyalah salah satu dari banyak jenis yang didukung C++ di luar kotak. Untuk tujuan ilustrasi, berikut adalah contoh lain untuk mendefinisikan variabel menggunakan tipe data double :

double width; // define a variable named width, of type double

Mendefinisikan Beberapa Variabel

Dimungkinkan untuk mendefinisikan beberapa variabel dengan tipe yang sama dalam satu pernyataan dengan memisahkan nama dengan koma. 2 cuplikan kode berikut secara efektif sama:

int a;
int b;

Sama dengan:

int a,b;

Saat mendefinisikan banyak variabel dengan cara ini, ada dua kesalahan umum yang cenderung dilakukan oleh pemrogram baru (tidak terlalu serius, karena kompiler akan menangkapnya dan meminta Anda untuk memperbaikinya):

Kesalahan pertama adalah memberikan setiap variabel jenis ketika mendefinisikan variabel secara berurutan.

int a, int b; // salah (compiler error)

int a, b; // benar

Kesalahan kedua adalah mencoba mendefinisikan variabel dari tipe yang berbeda dalam pernyataan yang sama, yang tidak diperbolehkan. Variabel dari jenis yang berbeda harus didefinisikan dalam pernyataan terpisah.

int a, double b; // salah (compiler error)

int a; double b; // benar (but not recommended)

// benar dan direkomendasikan (easier to read)
int a;
double b;

Inisialisasi Variabel

Tugas variabel

Setelah variabel didefinisikan, Anda dapat memberikan nilai (dalam pernyataan terpisah) menggunakan operator = . Proses ini disebut copy assignment (atau hanya assignment ) untuk jangka pendek.

int width; // define an integer variable named width
width = 5; // copy assignment of value 5 into variable width

// variable width now has value 5

Copy assignent dinamai demikian karena menyalin nilai di sisi kanan operator = ke variabel di sisi kiri operator. Simbol = operator disebut operator penugasan/operator assignment.

Berikut adalah contoh di mana kami menggunakan assignment dua kali:

#include <iostream>

int main()
{
	int width;
	width = 5; // copy assignment of value 5 into variable width

	// variable width now has value 5

	width = 7; // change value stored in variable width to 7

	// variable width now has value 7

	return 0;
}

Salah satu kesalahan paling umum yang dilakukan programmer baru adalah membingungkan operator assignment ( =) dengan operator equality ( ==). Assignment ( =) digunakan untuk memberikan nilai pada sebuah variabel. Equality ( ==) digunakan untuk menguji apakah dua operan memiliki nilai yang sama.

Inisialisasi

Satu kelemahan dari assignment adalah membutuhkan setidaknya dua pernyataan: satu untuk mendefinisikan variabel, dan satu untuk menetapkan nilai.

Kedua langkah ini dapat digabungkan. Ketika sebuah variabel didefinisikan, Anda juga dapat memberikan nilai awal untuk variabel tersebut pada saat yang sama. Ini disebut inisialisasi . Nilai yang digunakan untuk menginisialisasi variabel disebut inisialisasi .

Inisialisasi dalam C++ sangat kompleks, jadi kami akan menyajikan tampilan yang disederhanakan di sini.

Ada 4 cara dasar untuk menginisialisasi variabel dalam C++:

int a; // no initializer
int b = 5; // initializer after equals sign
int c( 6 ); // initializer in parenthesis
int d { 7 }; // initializer in braces

Mengenal iostream: cout,cin, dan endl

Library input / output

Library input / output (perpustakaan io) adalah bagian dari perpustakaan C ++ standar yang berhubungan dengan masukan dasar dan output. Kami akan menggunakan fungsionalitas di perpustakaan ini untuk mendapatkan input dari keyboard dan data output ke konsol. Bagian io dari iostream adalah singkatan dari input/output .

Untuk menggunakan fungsionalitas yang ditentukan dalam pustaka iostream , kita perlu menyertakan header iostream di bagian atas file kode apa pun yang menggunakan konten yang ditentukan dalam iostream , seperti:

#include <iostream>

std::cout

Library iostream berisi variabel yang telah ditetapkan beberapa bagi kita untuk menggunakan. Salah satu yang paling berguna adalah std::cout , yang memungkinkan kita mengirim data ke konsol untuk dicetak sebagai teks. cout adalah singkatan dari “keluaran karakter”.

Sebagai pengingat, inilah program Hello world kami :

#include <iostream> // for std::cout

int main()
{
    std::cout << "Hello world!"; // print Hello world! to console

    return 0;
}

Dalam program ini, kami telah menyertakan iostream sehingga kami memiliki akses ke std::cout . Di dalam fungsi utama kami , kami menggunakan std::cout , bersama dengan operator penyisipan ( <<) , untuk mengirim teks Hello world! ke konsol yang akan dicetak.

std::cout tidak hanya dapat mencetak teks, tetapi juga dapat mencetak angka:

#include <iostream> // for std::cout

int main()
{
    std::cout << 4; // print 4 to console

    return 0;
}

Itu juga dapat digunakan untuk mencetak nilai variabel:

#include <iostream> // for std::cout

int main()
{
    int x = 5; // define integer variable x, initialized with value 5
    std::cout << x; // print value of x (5) to console
    return 0;
}

Untuk mencetak lebih dari satu hal pada baris yang sama, operator penyisipan ( <<) dapat digunakan beberapa kali dalam satu pernyataan untuk menggabungkan (menghubungkan bersama) beberapa bagian keluaran. Sebagai contoh:

#include <iostream> // for std::cout

int main()
{
    std::cout << "Hello" << " world!";
    return 0;
}

Berikut contoh lain di mana kami mencetak teks dan nilai variabel dalam pernyataan yang sama:

#include <iostream> // for std::cout

int main()
{
    int x{ 5 };
    std::cout << "x is equal to: " << x;
    return 0;
}

std::endl

Apa yang Anda harapkan dari program ini untuk dicetak?

#include <iostream> // for std::cout

int main()
{
    std::cout << "Hi!";
    std::cout << "My name is HIMTIKA.";
    return 0;
}

Jika kita ingin mencetak baris output yang terpisah ke konsol, kita perlu memberi tahu konsol kapan harus memindahkan kursor ke baris berikutnya.

Salah satu cara untuk melakukannya adalah dengan menggunakan std::endl . Ketika output dengan std::cout , std::endl mencetak karakter baris baru ke konsol (menyebabkan kursor menuju ke awal baris berikutnya). Dalam konteks ini, endl berarti “garis akhir”.

Sebagai contoh:

#include <iostream> // for std::cout and std::endl

int main()
{
    std::cout << "Hi!" << std::endl; // std::endl will cause the cursor to move to the next line of the console
    std::cout << "My name is Alex." << std::endl;

    return 0;
}

std::endl vs ‘\n’

Menggunakan std::endl bisa sedikit tidak efisien, karena sebenarnya melakukan dua pekerjaan: memindahkan kursor ke baris berikutnya, dan “membilas” output (memastikan itu segera muncul di layar). Saat menulis teks ke konsol menggunakan std::cout, std::cout biasanya mengeluarkan output (dan jika tidak, biasanya tidak masalah), jadi memiliki std::endl flush jarang penting.

Karena itu, penggunaan karakter ‘\n’ biasanya lebih disukai. Karakter ‘\n’ memindahkan kursor ke baris berikutnya, tetapi tidak melakukan pembilasan yang berlebihan, sehingga kinerjanya lebih baik. Karakter ‘\n’ juga cenderung lebih mudah dibaca karena lebih pendek dan dapat disematkan ke dalam teks yang ada.

Berikut adalah contoh yang menggunakan ‘\n’ dalam dua cara berbeda:

#include <iostream> // for std::cout

int main()
{
    int x = 5;
    std::cout << "x is equal to: " << x << '\\n'; // Using '\\n' standalone
    std::cout << "And that's all, folks!\\n"; // Using '\\n' embedded into a double-quoted piece of text (note: no single quotes when used this way)
    return 0;
}

Perhatikan bahwa ketika ‘\n’ digunakan dengan sendirinya untuk memindahkan kursor ke baris berikutnya, tanda kutip tunggal diperlukan. Saat disematkan ke dalam teks yang sudah dikutip ganda, tanda kutip tunggal tidak diperlukan.

std::cin

std::cinadalah variabel standar lain yang didefinisikan di iostream. Sedangkan std::cout mencetak data ke konsol menggunakan operator penyisipan ( <<), std::cin(yang merupakan singkatan dari “input karakter”) membaca input dari keyboard menggunakan operator ekstraksi ( >>) . Input harus disimpan dalam variabel yang akan digunakan.

#include <iostream>  // for std::cout and std::cin

int main()
{
    std::cout << "Enter a number: "; // ask user for a number

    int x{ }; // define variable x to hold user input (and zero-initialize it)
    std::cin >> x; // get number from keyboard and store it in variable x

    std::cout << "You entered " << x << '\\n';
    return 0;
}

Operator

Dalam matematika, operasi adalah perhitungan matematis yang melibatkan nol atau lebih nilai input (disebut operan ) yang menghasilkan nilai baru (disebut nilai output). Operasi spesifik yang akan dilakukan dilambangkan dengan konstruksi (biasanya simbol atau pasangan simbol) yang disebut operator .

Misalnya, sebagai anak-anak kita semua belajar bahwa 2 + 3 sama dengan 5 . Dalam hal ini, literal 2 dan 3 adalah operan, dan simbol + adalah operator yang memberi tahu kita untuk menerapkan penjumlahan matematis pada operan untuk menghasilkan nilai baru 5

Anda mungkin sudah cukup familiar dengan operator aritmatika standar dari penggunaan umum dalam matematika, termasuk penambahan (+), pengurangan (-), perkalian (*), dan pembagian (/). Dalam C++, penugasan (=) juga merupakan operator, seperti halnya << (penyisipan) dan >> (ekstraksi). Beberapa operator menggunakan lebih dari satu simbol, seperti operator kesetaraan (==), yang memungkinkan kita membandingkan dua nilai untuk melihat apakah keduanya sama. Ada juga sejumlah operator yang berupa kata-kata (misalnya new, delete, dan throw).

Jumlah operan yang diambil operator sebagai input disebut arity operator (hampir tidak ada yang tahu apa arti kata ini, jadi jangan masukkan dalam percakapan dan berharap siapa pun tahu apa yang Anda bicarakan). Operator di C++ datang dalam tiga arities yang berbeda :

Operator unary bekerja pada satu operan. Contoh dari operator unary adalah – Operator . Sebagai contoh, diberikan -5operator- mengambil operan literal 5 dan membalik tandanya untuk menghasilkan nilai keluaran baru -5 .

Operator biner bekerja pada dua operan (dikenal sebagai left dan right ). Contoh operator biner adalah operator + . Misalnya, diberikan 3 + 4operator+ mengambil operan kiri (3) dan operan kanan (4) dan menerapkan penjumlahan matematis untuk menghasilkan nilai keluaran baru 7 . Operator penyisipan (<<) dan ekstraksi (>>) adalah operator biner, mengambil std::cout atau std::cin di sisi kiri, dan item ke output atau variabel ke input di sisi kanan.

Terimakasih, semoga tutorial ini dapat bermanfaat dan apabila ada yang ingin ditanyakan. Silahkan untuk bertanya di kolom komentar. Terima kasih

]]>
https://himtika.cs.unsika.ac.id/dasar-dasar-cpp/feed/ 0