Variabel#
Perkenalan#
Variabel menyimpan data dan memungkinkan Anda untuk menggunakan kembali dan memanipulasinya di seluruh program Anda. C++ adalah bahasa pemrograman bertipe statis, artinya Anda harus mendeklarasikan tipe variabel secara eksplisit saat Anda membuatnya. Tipe tersebut tidak dapat diubah setelah deklarasi. Misalnya:
int angle = 90; // angle is an integer
char dist[] = "Distance"; // dist is an array of characters
double steps = 2.5; // steps is a double
C++ juga merupakan bahasa pemrograman yang bertipe kuat, yang berarti Anda tidak dapat melakukan operasi pada tipe yang tidak kompatibel tanpa konversi eksplisit. Misalnya:
int blocks = 2; // blocks is an integer
char rings[] = "4"; // rings is a string
int result = blocks + rings; // Creates a compilation error
API ini menjelaskan tipe variabel umum dalam C++. Meskipun bukan daftar lengkap, API ini mencakup tipe yang paling mungkin Anda gunakan dalam praktik.
Variabel lokal — Dideklarasikan di dalam fungsi dan hanya digunakan dalam lingkup tersebut; paling cocok untuk nilai sementara atau terisolasi.
Variabel global — Dideklarasikan di luar fungsi apa pun dan digunakan di seluruh proyek; berguna untuk berbagi data antar fungsi.
Bilangan Bulat — Bilangan bulat yang digunakan untuk menghitung, jarak, atau apa pun tanpa desimal.
Double — Angka desimal presisi tinggi untuk perhitungan matematika yang membutuhkan akurasi.
Float — Bilangan desimal presisi standar, berguna untuk pengukuran atau perhitungan.
String bergaya C — Nilai teks, digunakan untuk pesan, label, atau menampilkan keluaran yang mudah dibaca.
Boolean (bool) —
trueataufalsenilai untuk logika dan pengambilan keputusan.Array — Koleksi elemen berukuran tetap dengan tipe yang sama.
Array 2D — Array dari array; ideal untuk merepresentasikan baris, grid, atau data seperti tabel.
Konstan — Variabel yang dideklarasikan dengan
consttidak dapat dimodifikasi.
Mendeklarasikan dan Menetapkan Nilai pada Variabel#
Untuk membuat variabel di C++, Anda harus mendeklarasikan tipenya diikuti dengan nama variabel, lalu secara opsional menetapkan nilai menggunakan operator =:
int distance = 100;
Saat memberi nama variabel, aturan berikut harus dipatuhi:
Nama tersebut tidak boleh mengandung karakter khusus (misalnya, tanda seru).
Nama tersebut tidak boleh diawali dengan angka.
Nama tersebut tidak boleh menggunakan spasi.
Nama tersebut tidak boleh bertentangan dengan objek VEXcode yang telah ditentukan sebelumnya (misalnya,
Drivetrain).Nama tersebut tidak boleh berupa kata kunci yang dipesan dalam C++ (misalnya,
int,for, dll.).Nama variabel peka terhadap huruf besar dan kecil (misalnya,
Distancedandistanceadalah variabel yang berbeda).
Local Variables#
Variabel lokal didefinisikan di dalam sebuah fungsi atau blok kode. Variabel ini hanya dapat diakses dalam lingkup fungsi atau blok tersebut dan tidak terlihat di luar lingkup tersebut.
Definisikan fungsi (di luar
int main())void show_local() { // This variable only exists inside this function int angle = 90; Brain.Screen.print("%d", angle); }Panggil fungsi di dalam
int main()int main() { /* vexcodeInit() is only required when using VEXcode. Remove vexcodeInit() if compiling in VS Code. */ vexcodeInit(); // Begin project code show_local(); }
Variabel lokal umumnya digunakan untuk menyimpan nilai sementara yang hanya relevan dalam fungsi atau bagian program tertentu.
Global Variables#
Variabel global didefinisikan di luar fungsi atau blok apa pun. Variabel ini dapat diakses dan dibaca di mana saja dalam program, termasuk di dalam fungsi.
Catatan: Variabel global dapat diakses dari mana saja dalam program, yang membuatnya nyaman untuk berbagi data antar fungsi. Namun, terlalu bergantung pada variabel global dapat menyebabkan efek samping yang tidak diinginkan, karena perubahan pada variabel di satu bagian program dapat memengaruhi bagian lain secara tidak terduga. Karena alasan ini, variabel lokal umumnya lebih disukai jika memungkinkan, karena membatasi cakupan variabel pada fungsi spesifik tempat variabel tersebut didefinisikan. Hal ini mengurangi kemungkinan konflik dan mempermudah proses debugging.
Definisikan fungsi (di luar
int main())// The variable is defined outside a function int angle = 90; void show_global() { // You can access 'angle' inside a function Brain.Screen.print("%d", angle); Brain.Screen.newLine(); }Panggil fungsi di dalam
int main()int main() { /* vexcodeInit() is only required when using VEXcode. Remove vexcodeInit() if compiling in VS Code. */ vexcodeInit(); // Begin project code show_global(); Brain.Screen.print("%d", angle); }
Dalam C++, variabel global dapat diakses dan dimodifikasi langsung dari dalam fungsi tanpa kata kunci khusus. Namun, jika Anda memiliki variabel lokal dengan nama yang sama, Anda dapat menggunakan operator resolusi cakupan :: untuk mengakses variabel global.
Definisikan fungsi (di luar
int main())// Define the global variable int count = 0; void increase_count() { // Global variables can be accessed directly count = count + 1; Brain.Screen.print("Count: %d", count); Brain.Screen.newLine(); }Panggil fungsi di dalam
int main()int main() { /* vexcodeInit() is only required when using VEXcode. Remove vexcodeInit() if compiling in VS Code. */ vexcodeInit(); // Begin project code increase_count(); increase_count(); }
Jenis Data#
C++ mendukung beberapa tipe data yang dapat disimpan dalam variabel. Beberapa tipe dapat diberi nilai ulang, sementara yang lain memungkinkan elemen individual untuk dimodifikasi. Berikut adalah tipe yang paling umum digunakan:
Integer#
Bilangan bulat (int) adalah bilangan utuh.
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code
int distance = 100;
// Move the robot forward for the variable value in mm
Drivetrain.driveFor(forward, distance, mm);
// Add to the variable and move forward the new value,
// for 200mm total
wait(1, seconds);
distance = distance + 100;
Drivetrain.driveFor(forward, distance, mm);
}
Double#
Tipe data double adalah bilangan desimal dengan presisi tinggi (biasanya 64-bit).
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code
// Store a value with decimal points
double raw_value = 0.88;
// Print the decimal value as a percentage
Brain.Screen.print("%.1f%%", raw_value * 100);
}
Float#
Tipe data float menyimpan angka desimal. Dalam sebagian besar proyek VEX, double lebih disukai daripada float kecuali jika penggunaan memori menjadi perhatian.
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code
// Store a value with decimal points
float raw_value = 0.88;
// Print the decimal value as a percentage
Brain.Screen.print("%.1f%%", raw_value * 100);
}
String#
String bergaya C (char variable_name[]) adalah urutan karakter yang disimpan dalam array karakter. String bergaya C harus cukup besar untuk menyimpan teks dan terminator null.
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code
// Set the variable to a string then print the string
char message[] = "Ready!";
Brain.Screen.print(message);
}
Boolean#
Sebuah Boolean (bool) mewakili nilai true atau false.
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code
// Set the state of the variable
bool delivered = false;
// Print different messages depending on the Boolean.
if (delivered) {
Brain.Screen.print("Package delivered!");
} else {
Brain.Screen.print("Delivering...");
}
}
Nilai Boolean dapat diubah kapan saja selama proyek berlangsung.
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code
// Print the value of the delivered variable
bool delivered = false;
// Print different messages depending on the Boolean.
if (delivered) {
Brain.Screen.print("Package delivered!");
} else {
Brain.Screen.print("Delivering...");
}
wait(2, seconds);
// Clear the screen and print the value of the variable again
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1,1);
delivered = true;
// Print different messages depending on the Boolean.
if (delivered) {
Brain.Screen.print("Package delivered!");
} else {
Brain.Screen.print("Delivering...");
}
}
Arrays#
Array adalah kumpulan elemen dengan ukuran tetap dan tipe data yang sama, dimulai dari indeks 0. Sebaiknya ketahui panjang array dan deklarasikan pada saat pembuatannya.
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code
// Declare an array of 5 integers
int distances[5] = {100, 200, 150, 300, 250};
// Drive and turn 4 times to move the distance of the first four distances of the array
for (int i = 0; i < 4; i++) {
Drivetrain.driveFor(forward, distances[i], mm);
Drivetrain.turnFor(right, 90, degrees);
}
}
2D Arrays#
Array 2D umumnya digunakan untuk merepresentasikan grid, tabel, atau matriks. Setiap baris mewakili pengelompokan data tertentu.
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code
// Assign the values in the matrix 2D array
int matrix[3][3] = {
{ 0, 1, 2 },
{ 3, 4, 5 },
{ 6, 7, 8 }
};
// Loop through each row
for (int i = 0; i < 3; i++) {
// Loop through each column in the row
for (int j = 0; j < 3; j++) {
Brain.Screen.print("%d, ", matrix[i][j]);
}
Brain.Screen.newLine();
}
}
Anda dapat memodifikasi elemen tertentu dalam array 2D:
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code
// Assign the values in the matrix 2D array
int matrix[3][3] = {
{ 0, 1, 2 },
{ 3, 4, 5 },
{ 6, 7, 8 }
};
// Modify the color (in column 2) in row 0
matrix[0][1] = 200;
// Print the modified row from the matrix 2D array
for (int j = 0; j < 3; j++) {
Brain.Screen.print("%d, ", matrix[0][j]);
}
}
Constant Variables#
Variabel yang dideklarasikan dengan const tidak dapat dimodifikasi setelah diinisialisasi.
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
const int maxSpeed = 100;
// maxSpeed can be used like a normal variable
Drivetrain.setDriveVelocity(maxSpeed, percent);
}