---
description: 'Penulis: Sayed, Danniel.'
---

# Struktur Program

Pada umumnya, template code pada pemrograman kompetitif ditulis sebagai berikut:

```cpp
#include <bits/stdc++.h>
using namespace std;

int main(){
    //Code Anda ditulis di sini
    return 0;
}
```

Mari kita pecah satu persatu. `#include <bits/stdc++.h>` pada baris awal code berfungsi sebagai feature yang memperbolehkan kita untuk mengakses seluruh [_standard library_ ](https://en.wikipedia.org/wiki/Standard_library)tanpa harus memasukkan library lain pada bagian atas. &#x20;

{% hint style="info" %}
Library dapat dipikirkan sebagai sesuatu yang menyimpan 'peralatan' yang dapat digunakan pada program. Setiap library menyimpan 'peralatan' yang berbeda-beda.
{% endhint %}

`using namespace std;` pada baris kedua berfungsi untuk mempersingkat code, dengan menggunakannya kita tidak perlu menulis `std::` pada awal code. Pada baris keempat, `int main()` adalah fungsi utama pada program, kita akan membicaran tentang fungsi lebih lancut pada bab [_Fungsi_](fungsi)_,_ namun untuk sekarang anggap saja bahwa di dalam `int main()` ini adalah tempat di mana program kita dijalankan. Dan pada baris ke 6, `return 0;` baris ini akan menghentikan seluruh aktivitas pada main, baris ini tidak harus dituliskan untuk kebanyakan online judge.

{% hint style="warning" %}
Perlu diingat bahwa program dijalankan secara berurutan dari atas hingga bawah.
{% endhint %}

Secara alternatif, kita juga dapat memasukkan library-library secara satu-persatu seperti `iostream`, `algorithm`, `vector`, dsb sebagai pengganti `#include <bits/stdc++.h>` seperti program dibawah ini.&#x20;

```cpp
#include <iostream>
using namespace std;

int main(){
    //Code Anda ditulis di sini
    return 0;
} 
```

#### Keunggulan dan Kelemahan `<bits/stdc++.h>`

| Keunggulan                                                          | Kelemahan                                                                                                                      |
| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| Tidak perlu mengingat library-library yang harus kita _include._    | Membutuhkan waktu _compile_ yang lebih lama.                                                                                   |
| Menghemat waktu untuk menulis _library_ yang harus kita _include_.  | Hanya bekerja jika mengunakan compiler _GCC._ Hal ini dikarenakan _library_ ini bukan standar _header_ dari GNU C++ _library._ |

#### Keunggulan dan Kelemahan men-_include_ library satu-persatu

| Keunggulan                                                    | Kekurangan                                                               |
| ------------------------------------------------------------- | ------------------------------------------------------------------------ |
| Waktu _compile_ yang lebih cepat dibanding `<bits/stdc++.h>`. | Perlu mengingat library-library yang harus kita _include._               |
| Tidak terbatas dalam penggunaan jenis compiler.               | Membutuhkan waktu untuk menulis semua library yang harus kita _include._ |

Dan terakhir adalah penulisan titik koma atau _Line Terminator._ Penulisan titik koma berfunsi untuk memberitahukan program bahwa _baris code telah berakhir,_ walaupun demikian, dapat juga beberapa pengeculian yang akan Anda temukan pada bab-bab selanjutnya.

{% hint style="warning" %}
Ingat bahwa C++ adalah bahasa yang sensitif terhadap penulisan titik koma, bila Anda lupa untuk menuliskannya, maka program akan memberikan _Error._
{% endhint %}

Sebagai tambahan spasi jarak antar baris code tidak mempengaruhi code sama sekali.

