Memulai

Pelajari dengan Contoh

Salah satu cara terbaik untuk mempelajari cara memprogram dalam bahasa baru adalah dengan melihat banyak sekali contoh program. Hal terbaik untuk dilakukan adalah menyalin dan menempelkan setiap program di bawah ini ke dalam file teks dan mengompilasinya. Kemudian, coba lakukan eksperimen. Dengan memperluas contoh program ini, Anda akan terbiasa dengan berbagai aspek C++, dan akan merasa lebih percaya diri jika sudah saatnya menulis program dari awal.

Contoh 1: Buat compiler berfungsi.

Jika Anda belum melakukannya, salin dan tempel program klasik berikut ke dalam file teks dan kompilasikan. Petunjuk kompilasi tersedia di sini.

Sepertinya Anda telah mempelajari detail program ini dalam tutorial, jadi kami tidak akan memberikan deskripsi baris demi baris di sini. Namun, ada beberapa hal yang perlu diperhatikan terkait keterbacaan. Hal ini merujuk pada komentar dan pemformatan yang membuat program mudah dibaca, dipahami, dan dikelola.

  • Setiap program yang kami tulis dimulai dengan komentar header, yang memberikan nama penulis, informasi kontak, deskripsi singkat, dan penggunaannya (jika relevan). Setiap fungsi dimulai dengan komentar tentang operasi dan penggunaan.
  • Kami menambahkan komentar penjelasan menggunakan kalimat lengkap, setiap kali kode tidak mendokumentasikan dirinya sendiri, misalnya, jika pemrosesannya rumit, tidak jelas, menarik, atau penting.
  • Selalu gunakan nama deskriptif: variabel adalah kata berhuruf kecil yang dipisahkan oleh _, seperti dalam my_variable. Nama fungsi menggunakan huruf besar untuk menandai kata, seperti dalam MyExOutFunction(). Konstanta dimulai dengan "k" dan menggunakan huruf besar untuk menandai kata, seperti dalam kDaysInWeek.
  • Indentasi adalah kelipatan dua. Tingkat pertama adalah dua spasi; jika perlu indentasi lebih lanjut, kami menggunakan empat spasi, enam spasi, dst.
// hello.cpp: Maggie Johnson
// Description: a program that prints the immortal saying "hello world"

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!" << endl;
  return 0;
}

Beberapa eksperimen yang bisa dicoba:

  • Yang paling penting adalah memastikan Anda bisa mengompilasi dan menjalankan program ini.
  • Ubah program di atas untuk mencetak "Hello World!" 4 kali dalam baris untuk 6 baris, dan setiap baris dicetak dalam kolom 17 spasi. Gunakan for-loop untuk melakukannya. Klik di sini untuk mempelajari cara memformat output dengan cout. Klik di sini untuk melihat solusinya.
  • Dengan menggunakan program yang baru saja Anda selesaikan, pelajari cara mencetak "Halo Dunia!" dengan rata kiri di kolom 17 spasi (defaultnya biasanya diratakan kanan). Klik di sini untuk melihat solusinya.

Contoh 2: Mendapatkan beberapa input

Sangat mudah untuk mendapatkan {i>input<i} dari {i>keyboard<i} di C++ menggunakan {i>cin<i}. Berikut ini contohnya:

// get_input.cpp: Maggie Johnson
// Description: Illustrate the use of cin to get input.

#include <iostream>
using namespace std;

int main() {
  int input_var = 0;
  // Enter the do while loop and stay there until either
  // a non-numeric is entered, or -1 is entered. Note that
  // cin will accept any integer, 4, 40, 400, etc.
  do {
    cout << "Enter a number (-1 = quit): ";
    // The following line accepts input from the keyboard into
    // variable input_var.
    // cin returns false if an input operation fails, that is, if
    // something other than an int (the type of input_var) is entered.
    if (!(cin >> input_var)) {
      cout << "You entered a non-numeric. Exiting..." << endl;
      break;
      // exit the do while loop
    }
    if (input_var != -1) {
      cout << "You entered " << input_var << endl;
    }
  } while (input_var != -1);
  cout << "All done." << endl;
  return 0;
}

Eksperimen:

  • Saat terjadi error input, streaming akan "terputus", cin menampilkan nilai salah (false), dan program akan berhenti. Sangat penting untuk mencegah error semacam ini seperti yang kita lakukan dalam program di atas. Namun, bagaimana jika kita ingin memulihkan diri dari error tersebut alih-alih menghentikan program? Ada dua langkah untuk memulihkan dari error:
    1. Hapus error dengan cin.clear().
    2. Hapus karakter yang salah dari aliran. Salah satu cara untuk melakukan ini adalah dengan cin.ignore().

Tulis program yang dapat pulih dari input buruk menggunakan dua langkah ini. Gunakan Google untuk menelusuri cara kerja metode ini. Solusi kami ada di sini.

Contoh 3: Apa yang dihasilkan program ini?

#include <iostream>
using namespace std;

int main() {
  cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl;
  for (int c = 1; c < 10; c++) {
    cout << c << "| ";
    for (int i = 1; i < 10; i++) {
      cout << i * c << '\t';
    }
    cout << endl;
  }
  return 0;
} 

Contoh 4: Memuraikan membuat segalanya lebih mudah...

Saatnya bagi kita untuk mulai menulis game komputer! Yang pertama akan sedikit sederhana, tapi ini bisa permulaan. Tugas kita adalah menulis program yang mengimplementasikan game menebak. Program kita menghasilkan angka acak antara 0 dan 100. Pemain harus menebak nomor rahasianya. Program ini memberikan petunjuk seperti "itu terlalu tinggi" atau "itu terlalu rendah" sampai pemain akhirnya dapat menebak angka rahasianya.

Kita akan mengerjakan game ini dalam tiga langkah. 

  1. Mengetahui cara menghasilkan angka acak dalam rentang nilai tertentu.
  2. Buat fungsi utama yang memproses satu tebakan dari pemain, dan memberikan petunjuk.
  3. Tambahkan hal yang diperlukan untuk memungkinkan beberapa tebakan sampai pemain menebak angkanya.

Proses pengembangan ini disebut dekomposisi, yang berarti memecah tugas menjadi beberapa subtugas, yang masing-masing mudah dilakukan.

Mulai langkah 1, lakukan penelusuran Google untuk melihat cara membuat angka acak menggunakan C++. Coba telusuri "rand C++". Berikut adalah solusi kami. 

Untuk langkah 2, kita perlu menerima input integer dari pemain (dengan pemeriksaan error yang sesuai di cin), dan memeriksanya dengan nomor rahasia. Coba dan tulis sendiri bagian game ini sebelum memeriksa solusi kami.

Terakhir, kita perlu menambahkan loop yang terus mengumpulkan tebakan dari pemain hingga akhirnya mereka menebak nomor rahasianya. Setelah menyelesaikan bagian program ini, Anda dapat memeriksa solusi kami.

Dekomposisi adalah salah satu keterampilan terpenting yang harus dipelajari oleh seorang {i>programmer<i}. Mampu memecah tugas menjadi bagian-bagian yang mudah dikelola, lalu menyelesaikannya satu per satu adalah hal yang sangat penting, tidak peduli seberapa besar atau kecil proyek tersebut. Berikut adalah beberapa peluang lain bagi Anda untuk berlatih dekomposisi.

  • Banyak tugas sehari-hari memberikan peluang untuk membangun keterampilan dalam dekomposisi. Anda mungkin terkejut mendapati bahwa pikiran Anda bekerja seperti ini!

    Misalnya, jika saya harus membersihkan dapur yang sangat berantakan (mungkin beberapa anak perempuan baru saja memanggang kue), saya akan memecah tugas untuk memberikan rencana, dan memastikan saya tidak perlu mengulangi pekerjaan itu nanti. Aku tidak mau mencuci lantai terlebih dahulu jika ada benda-benda di meja yang harus dibersihkan - mungkin nanti aku harus membersihkannya lagi. Jadi, mungkin saya sudah menaruh semua bahannya terlebih dahulu; memindahkan semua piring ke wastafel; membersihkan meja; mencuci piring; dan terakhir, membersihkan lantai. Ada cara lain untuk melakukan tugas ini, tetapi dengan mempertimbangkannya terlebih dahulu, saya akan membantu menentukan rencana yang tidak memerlukan pengerjaan ulang.

    Gunakan tugas sehari-hari sebagai contoh untuk mengembangkan keterampilan dekomposisi Anda. Siapa tahu - bahkan mungkin membuat Anda lebih efisien di dalam rumah!

  • Pemisah persekutuan terbesar dari dua bilangan bulat adalah angka terbesar yang membagi keduanya secara merata. Misalnya, gcd(12, 18) = 6, gcd(−4, 14) = 2. Cara paling efisien untuk menghitung gcd adalah dengan algoritma Euclidean. Tulis program dengan fungsi untuk menghitung gcd untuk dua bilangan bulat. Coba lakukan fungsi tanpa rekursi terlebih dahulu - hal ini akan membantu Anda memahami cara kerja algoritma.

    Tentukan subtugas Anda secara eksplisit, misalnya, temukan kode untuk algoritma Euclidean; buat fungsi non-rekursif untuk algoritme; dll. Berikut adalah solusi kami.

Contoh 5: Puzzle Matematika

Salah satu kekuatan komputasi adalah kemampuan melakukan pencarian {i>brute force<i} untuk mendapatkan solusi dari suatu masalah. Trial-and-error berfungsi dengan baik untuk beberapa masalah. Faktanya, komputer bisa sangat bagus dalam mengatasi masalah tersebut. Pertimbangkan ini:

Harga kuda $10, babi $3, dan kelinci hanya $0,50. Seorang peternak membeli 100 ekor hewan seharga $100, berapa banyak setiap hewan yang ia beli? 

Ada solusi yang sangat sederhana untuk masalah ini. Lihat apakah Anda dapat menemukannya sebelum melihat milik kami.

Ini cara lain untuk dicoba:
Berapa banyak cara yang dapat Anda lakukan untuk mengatur 6 buku yang berbeda, dari kiri ke kanan, di rak?

Kali ini, kami hanya akan memberikan solusi dan memungkinkan Anda menulis program: 720.

Contoh 6: String untuk pertimbangan Anda

Apa yang dihasilkan oleh program berikut?

#include <iostream>
using namespace std;

int main() {
  string str1 = "To be or not to be, that is the question";
  string str2 = "only ";
  string str3 = str1.substr(6, 12);
  str1.insert(32, str2);
  str1.replace(str1.find("to be", 0), 5, "to jump");
  str1.erase(9, 4);
  cout << str1 << endl;
  for (int i = 0; i < str3.length(); i++)
    cout << str3[i]; cout << endl;
}

Klik di sini untuk mendapatkan bantuan.

Contoh 7: Langkah berikutnya dengan dekomposisi - Hari pertama Anda bekerja

Anda baru saja mendapatkan posisi sebagai tenaga penjual untuk perusahaan ExerShoe, dengan spesialisasi sepatu olahraga kelas atas seharga sekitar $225 per pasang. Bos Anda telah memberi Anda tiga opsi kompensasi, yang harus Anda pilih sebelum memulai hari pertama:

  1. Gaji langsung $600 per minggu;
  2. Gaji $7,00 per jam ditambah komisi 10% atas penjualan;
  3. Tidak ada gaji, tapi komisi 20% dan $20 untuk setiap pasang sepatu yang terjual

Sebagai programmer C++, Anda dapat menulis program untuk membantu memutuskan pilihan kompensasi terbaik.

Pendekatan umum dalam melakukan dekomposisi untuk program yang lebih besar adalah membuat fungsi utama yang membaca seperti garis besar untuk memecahkan masalah. Kemudian, kita tulis fungsi untuk melakukan setiap tugas.

Berikut adalah jalur pertama di program utama:

  GetInput(WeeklySales);
  CalcMethod1(WeeklySales);
  CalcMethod2(WeeklySales);
  CalcMethod3(WeeklySales); 

Lihat apakah Anda dapat menerapkan setiap fungsi ini, sebelum melihat solusi kami.

Contoh 8: Di mana tempatnya tersedia?

Apa output dari program berikut?

// scope.cpp, Maggie Johnson
// Description: A program to illustrate different scopes

#include <iostream>
using namespace std;

int a = 18;
int b = 6;

int function1(int a, int b) {
  return a - b;
}

int function2() {
  int c;
  c = a + b;
  return c;
}

int main() {
  int b = 12;
  int c = 0;
  a = function1(b, a);
  c = function2();
  cout << "a: " << a << " b: " << b << " c: " << c << endl;
}

Setelah menemukan jawaban, periksa versi kode yang dikomentari di sini.

Contoh 9: Memproses File

Pemrosesan file dalam C++ dilakukan menggunakan fstream. Untuk menyimpan ke file, kami mendeklarasikan ofstream, dan membukanya menggunakan mode "out". Lihat ini di contoh berikut.

// file.cpp, Maggie Johnson
// Description: An illustration of file processing
#include <fstream>
#include <iostream>
using namespace std;

int main() {
  char first_name[30], last_name[30]; int age;
  char file_name[20];
  // Collect the data.
  cout << "Enter First Name: "; cin >> first_name;
  cout << "Enter Last Name: "; cin >> last_name;
  cout << "Enter Age: "; cin >> age;
  cout << endl << "Enter the name of the file: "; cin >> file_name;

  // Create an ofstream called People, open the stream for output.
  ofstream People(file_name, ios::out);
  // Write the output to the stream.
  People << first_name << endl << last_name << endl << age << endl; return 0;
} 
  • Lihat apakah Anda dapat mengetahui cara membuka file yang baru saja dibuat, dan menampilkan datanya.Berikut adalah solusi kami.
  • Sekarang lihat apakah Anda dapat mengubah program ini untuk memungkinkan pengguna memasukkan banyak kumpulan data data menggunakan loop. Kita juga ingin membaca kembali semua data, satu catatan pada satu waktu.Berikut adalah solusi kami.

Sekarang Anda siap untuk mencoba sendiri beberapa latihan dan project .

Bagaimana rasanya menjadi software engineer di Google

Baca tentang bagaimana rasanya bekerja di Google di situs ini.

Latihan dan Proyek

Latihan berikut akan memberi Anda lebih banyak latihan dengan C++ dasar. Kami tidak memberikan solusi untuk latihan dan project ini karena kami ingin Anda bekerja dengan siswa lain dalam kursus ini.

  1. Kicauan kriket lapangan yang umum berbanding lurus dengan suhu saat ini. Menambahkan 40 ke frekuensi bunyi kriket dalam satu menit, lalu membagi nilai tersebut dengan 4 akan menghasilkan suhu. Tulis program yang menggunakan jumlah bunyi kerik dalam satu menit sebagai input dan mencetak suhu saat ini. Contoh,
    Number of chirps: 120
    The temperature is: 40.0 degrees. 
  2. Tulis program yang akan menghitung nilai akhir Anda untuk kursus pemrograman yang sedang Anda ikuti. Berikut adalah skema penilaiannya:
    Final grades will be based on the following:
    40% Assignments   15% Midterm Examination
    35% Final Examination
    10% Class Participation Grade 

    Program Anda harus menanyakan empat nilai tugas, yakni nilai tengah semester, akhir, dan bagian. Kemudian, skor akhir dihitung dan dicetak. Untuk melakukan perhitungan, rata-ratakan keempat skor tugas, lalu kalikan dengan 0,4 (40%). Anda kemudian mengalikan skor tengah semester dengan 0,15, skor akhir dengan 0,35, dan nilai partisipasi dengan 0,1. Kemudian, jumlahkan semua hasil perkalian ini.

    Gunakan fungsi di mana pun Anda bisa dalam program ini. Anda dapat membuat fungsi untuk mendapatkan input dengan meneruskan string yang akan ditampilkan di Cout penjelasan sebagai parameter. Berikut adalah contoh eksekusinya:

    Enter the score for the first assignment. 75
    Enter the score for the second assignment. 85
    Enter the score for the third assignment. 82
    Enter the score for the fourth assignment. 94
    Enter the score for the midterm. 81
    Enter the score for the final. 89
    Enter the score for the section grade. 100
    The final grade is: 86.9
  3. Karena stopwatch elektronik semakin murah dan akurat, kita tidak akan diragukan lagi akan dibanjiri pengukuran waktu yang sangat akurat. Menulis program yang menggunakan jangka waktu yang diberikan dalam detik sebagai input, dan menghasilkan jumlah jam, menit, dan detik yang diwakilinya. Misalnya,
    Number of seconds: 3662
    Hours: 1
    Minutes: 1
    Seconds: 2     
  4. Dalam hal berikut, lakukan dekomposisi sebelum menulis program. Gunakan fungsi jika memungkinkan untuk membuat program yang terstruktur dengan baik.

  5. Misalkan kita ingin mencetak banner untuk hal berikut:

    "FREEZY BREEZE MEMBUAT TIGA Pohon Membekukan"

    Kita ingin hurufnya cukup besar karena ini adalah banner:

    FFFFF
    F
    FFF
    F
    F
    
    EEEEE
    E
    EEE
    E
    EEEEE
    
    dll.

    Sebagai pengurai masalah yang baik, Anda mungkin melihat bahwa daripada menempatkan semua cout dalam fungsi utama, akan jauh lebih efisien untuk memasukkannya ke dalam fungsi. Jadi, kita bisa saja memiliki fungsi "printE" dan fungsi "printZ" dan seterusnya.

    Tulis program dengan fungsi yang membuat banner kata atau frasa dengan banyak huruf berulang. Beberapa kemungkinan:

    FREEZY BREEZE MAKES FLEAS
    SNEEZE TWEETLE BEETLE PADDLE BATTLE
    SIX SICK CHICKS KICK
    SUE SEWS SUE'S SOCKS
    BEN BENDS BIM'S BROOM 
  6. Berikut ini masalah "angka ajaib": Minta pengguna untuk memasukkan angka tiga digit yang digit pertamanya lebih besar dari digit terakhirnya. Program Anda akan membalikkan angka, dan mengurangi pembalikan dari angka asli. Terakhir, balikkan angka yang dihasilkan, lalu tambahkan ke bentuk yang tidak dibalik. Menampilkan hasil akhir. Angka asli yang dimasukkan pengguna harus berjenis bilangan bulat (bukan tiga karakter). Pikirkan cara menulis fungsi yang menggunakan bilangan bulat sebagai input dan menampilkan kebalikan dari bilangan tersebut. Contoh:
    input number: 901
    reverse it: 109
    subtract: 901 - 109 = 792
    reverse it: 297
    add: 297 + 792 = 1089   
  7. Hukum tersebut mewajibkan produsen produk makanan mencantumkan tanggal habis masa berlaku pada produk mereka, tetapi ada celah dalam hukum tersebut: tanggal habis masa berlaku tidak harus dalam bentuk apa pun. Jadi, hal ini dapat ditulis dalam bahasa Swahili dan tetap sah.

    Sepupu ketiga Ralph Nader, Nadine, adalah Spy Food Quality Spy yang ditunjuk sendiri. Ia mendapati bahwa banyak produsen produk makanan mulai mengenkode tanggal habis masa berlaku produk agar pelanggan tidak mengetahui usia produk tersebut.

    Namun, encoding memungkinkan toko grosir mengetahui tanggal habis masa berlaku jika karena alasan tertentu mereka menginginkannya.

    Satu metode encoding populer:

    • enkodekan bulan dari Jan hingga Des sebagai 'A' sampai 'L'
    • mengenkode setiap digit dari tanggal sebagai 'Q' sampai 'Z'
    • mengenkode tahun sebagai 'A' sampai 'Z' yang berarti 1 sampai 26 yang kemudian ditambahkan ke 1995.

    Nadine menemukan roti yang sangat dipertanyakan dengan tanggal ini: ARZM. Menulis program untuk menentukan tanggal.

  8. Ini adalah analogi angka dengan trik kartu yang terkenal. Minta pengguna memasukkan angka tiga digit. Anggap angka sebagai ABC (dengan A, B, C adalah tiga digit angka). Sekarang, temukan sisa bilangan yang terbentuk dari ABC, BCA, dan CAB jika dibagi 11. Kita akan menyebut sisa ini sebagai X, Y, Z. Tambahkan sebagai X+Y, Y+Z, Z+X. Jika ada penjumlahan yang ganjil, tambah atau kurangi dengan 11 (operasi mana pun yang menghasilkan angka positif kurang dari 20; perhatikan jika jumlahnya adalah 9, cukup laporkan hal ini dan hentikan prosesnya). Terakhir, bagi setiap jumlah menjadi dua. Digit yang dihasilkan adalah A, B, C. Tulis program yang menerapkan algoritma ini.

Aplikasi: Memvisualisasikan Musik dengan Animasi

Insinyur perangkat lunak menciptakan berbagai macam aplikasi yang menarik dan inovatif. Dalam setiap modul kursus ini, kami menyajikan berbagai aplikasi yang didesain dan diimplementasikan oleh para engineer, untuk membantu Anda memahami berbagai area tempat engineer bekerja.

Berikut ini adalah salah satu aplikasi menarik yang dibuat untuk memvisualisasikan musik.