Episode ini mengajarkan fondasi sintaks C#: struktur program dengan top-level statements, deklarasi variabel dan konstanta, tipe data dasar, operator dan control flow, serta cara menjalankan program console pertama secara lengkap.

Di episode 2 kalian memahami arsitektur di balik C#. Sekarang saatnya menulis kode sungguhan. Episode 3 adalah fondasi paling penting karena hampir semua sintaks lain dibangun di atas variabel, tipe data, operator, dan control flow yang kita pelajari di sini.
C# adalah bahasa yang ekspresif: banyak cara untuk menulis hal yang sama. Di episode ini kita memakai gaya modern yang disarankan — var untuk variabel lokal, top-level statements untuk program sederhana, dan string interpolation untuk menyusun teks.
Episode 3 ini mencakup struktur program console, deklarasi variabel dan konstanta, tipe data dasar, operator serta control flow, dan cara menjalankan semuanya dengan dotnet CLI.
Project console baru dari template menggunakan top-level statements: kalian langsung menulis pernyataan tanpa kelas dan method Main. Compiler akan membungkusnya secara otomatis. Ini membuat program kecil menjadi ringkas:
Console.WriteLine("Belajar C#");
Console.WriteLine($"Bulan sekarang: {DateTime.Now:MMMM}");Untuk program yang lebih besar, kalian tetap bisa menulis method Main secara eksplisit:
class Program
{
static void Main(string[] args)
{
Console.WriteLine($"Jumlah argumen: {args.Length}");
}
}Pola kedua ini lazim di project lama atau saat kalian butuh kontrol penuh atas entry point. Untuk seri ini, kita memakai top-level statements kecuali disebutkan lain.
var adalah cara menyingkat deklarasi variabel: tipe ditentukan compiler dari nilai awalnya. Ini bukan variabel dinamis — tipe tetap ketat, hanya penulisannya yang pendek:
var nama = "Arman";
var umur = 30;
var gaji = 7.5m;
Console.WriteLine($"{nama} berusia {umur} tahun");Perhatikan bahwa var gaji = 7.5m disimpulkan sebagai decimal karena ada akhiran m. Compiler menegakkan tipe ini — jika kalian memaksa mengisi nilai yang salah, build langsung gagal.
Gunakan const untuk nilai yang benar-benar tetap dan diketahui saat kompilasi. Untuk nilai yang ditentukan saat runtime tapi tidak boleh berubah setelahnya, gunakan readonly:
const double Pajak = 0.11;
var namaAplikasi = "Toko";
readonly string Region = "id";
Console.WriteLine($"Pajak {Pajak:P0}, region {Region}");Catatan: const hanya berlaku untuk tipe primitif dan string. Untuk nilai kompleks yang tidak berubah, readonly adalah pilihan yang tepat.
Tipe data dasar C# sesuai domain masing-masing:
int: bilangan bulat 32-bit, cukup untuk sebagian besar hitungan.long: bilangan bulat 64-bit untuk nilai besar.double: bilangan pecahan 64-bit, default untuk perhitungan ilmiah.decimal: pecahan presisi tinggi untuk uang, bebas error pembulatan.bool: nilai benar atau salah.string: teks Unicode yang immutable.int jumlahBarang = 5;
long totalPengunjung = 1_000_000L;
double rataRata = 3.14;
decimal harga = 199_999.99m;
bool stokTersedia = true;
string pesan = "Halo dunia";
Console.WriteLine($"{jumlahBarang} | {totalPengunjung} | {harga:C}");Notasi _ sebagai pemisah ribuan (underscore digit separator) mulai C# 7.0 dan membuat angka besar mudah dibaca. Akhiran L untuk long dan m untuk decimal menegaskan tipe literal.
C# menyediakan operator perbandingan (<, >, ==, !=) dan logika (&&, ||, !). Evaluasi logika bersifat short-circuit: ekspresi berhenti begitu hasilnya sudah pasti.
var nilai = 78;
var naikKelas = nilai >= 75;
var beasiswa = naikKelas && nilai > 90;
if (beasiswa)
{
Console.WriteLine("Kalian mendapat beasiswa penuh.");
}
else if (naikKelas)
{
Console.WriteLine("Kalian naik kelas.");
}
else
{
Console.WriteLine("Kalian harus mengulang.");
}Untuk perulangan, for dipakai saat kalian tahu jumlah iterasi, sedangkan foreach paling aman saat memproses koleksi:
for (var i = 1; i <= 5; i++)
{
Console.WriteLine($"Iterasi ke-{i}");
}
var daftar = new[] { "satu", "dua", "tiga" };
foreach (var item in daftar)
{
Console.WriteLine(item);
}Perulangan foreach var item in daftar tidak akan pernah melewati batas koleksi, sehingga lebih aman dibanding mengakses indeks manual.
Simpan semua kode di atas dalam Program.cs, lalu jalankan:
dotnet runJika ada kesalahan tipe, compiler akan berhenti dan menampilkan pesan lengkap dengan nomor baris. Biasakan membaca pesan error compiler — itu adalah teman terbaik kalian selama belajar C#.
Inti yang harus dibawa pulang:
var menyimpulkan tipe saat kompilasi, bukan membuat variabel dinamis.const untuk nilai tetap saat kompilasi; readonly untuk nilai tetap saat runtime.decimal wajib untuk uang; double untuk perhitungan ilmiah.foreach lebih aman dari indeks manual.Di episode 4 selanjutnya kita masuk ke jantung paradigma C#: classes, objects, dan OOP — class dan constructor, enkapsulasi dengan properties, inheritance, polymorphism, abstract class dan interface, serta record types untuk data immutable.