Lỗi thường gặp trong lập trình C++ Archives - Cao Đẳng FPT M?ng c c??c bng ? xét tuyển //westview-heights.com/tag/loi-thuong-gap-trong-lap-trinh-c Cao Đẳng FPT M?ng c c??c bng ? tuyển sinh theo hình thức xét tuyển h?sơ. Tiêu chí đào tạo: Thực học ?Thực nghiệp! Tue, 05 Sep 2023 16:02:21 +0000 vi hourly 1 //wordpress.org/?v=6.4.1 //westview-heights.com/wp-content/uploads/cropped-logo-fpt-32x32.png Lỗi thường gặp trong lập trình C++ Archives - Cao Đẳng FPT M?ng c c??c bng ? xét tuyển //westview-heights.com/tag/loi-thuong-gap-trong-lap-trinh-c 32 32 Lỗi thường gặp trong lập trình C++ Archives - Cao Đẳng FPT M?ng c c??c bng ? xét tuyển //westview-heights.com/tin-tuc-poly/ha-noi-tin-sinh-vien/7-loi-thuong-gap-khi-lap-trinh-c.html Fri, 25 Aug 2023 06:28:33 +0000 //westview-heights.com/?p=251493 Là một lập trình viên C++ mới, bạn có th?rất khó nhận ra những sai lầm mà bạn thường mắc phải. Tất c?những lỗi mà bạn phát hiện thường mất nhiều thời gian đ?viết và g?lỗi. ...

The post 7 lỗi thường gặp khi lập trình C++ appeared first on Cao Đẳng FPT M?ng c c??c bng ? xét tuyển.

]]>
Là một lập trình viên C++ mới, bạn có th?rất khó nhận ra những sai lầm mà bạn thường mắc phải. Tất c?những lỗi mà bạn phát hiện thường mất nhiều thời gian đ?viết và g?lỗi. Ngay khi chương trình được triển khai, chúng dường như vẫn có những lỗi đáng tiếc cần được tìm thấy trong quá trình th?nghiệm.

Đ?tiết kiệm thời gian fix bug, hãy cùng tìm hiểu các lỗi ph?biến nhất của các lập trình viên mới bắt đầu.

  1. Không khai báo biến

#include <iostream> 

using namespace std;

int main(int argc, char** argv)

cin >> x;

cout << x;

return 0;

}

Code như trên thì chắc chắn chương trình của các bạn s?gặp lỗi, trình biên dịch của bạn không biết x có nghĩa là gì. Bạn cần khai báo nó như một biến giống như code dưới đây.

#include <iostream> 

using namespace std;

int main(int argc, char** argv)

int x;

cin >> x;

cout << x;

return 0;

}

  1. Biến chưa được khởi tạo giá tr?/b>

#include <iostream> 

using namespace std;

int main(int argc, char** argv)

int count;

while (count < 100) {

  cout << count;

  count++;

}

return 0;

}

Khi bạn khởi tạo một biến trong hàm main, các biến không được khởi tạo t?0. Trong đoạn code trên, s?đếm có th?là bất kì một s?nào trong phạm vi int. Đ?khắc phục các lỗi này thì bạn nên khởi tạo giá tr?kèm luôn trong khi khai báo biến.

#include <iostream> 

using namespace std;

int main(int argc, char** argv)

int count = 0;

while (count < 100) {

  cout << count;

  count++;

}

return 0;

}

Hoặc cũng có th?khởi tạo biến toàn cục vì khác với biến trong hàm main, biến toàn cục khi được khai báo luôn có giá tr?là 0 hoặc NULL

#include <iostream> 

using namespace std;

int count;

int main(int argc, char** argv) {

while (count < 100) {

  cout << count;

  count++;

}

return 0;

}

  1. S?dụng dấu chấm phẩy

Rõ ràng là trong C++, mọi hàm đều phải kết thúc bởi dấu chấm phẩy, nhưng với những người mới bắt đầu lập trình C++ thì việc thiếu dấu chấm phẩy xảy ra rất thường xuyên.

Bên cạnh đó, đôi khi s?dụng dấy chấm phẩy không đúng lúc cũng khiến chương trình chạy không như ý muốn như chương trình dưới đây in ra 10 dòng “Hello”.

#include <iostream> 

using namespace std;

int main(int argc, char** argv)

for (int i = 1; i <= 10; i++);

cout << “Hello\n”;

return 0;

}

Đoạn code trên b?thừa dấu chấm phẩy ?vòng for, do đó ch?in ra 1 dòng “Hello”. Do đó dấu chấm phẩy cũng là một yếu t?hết sức quan trọng và cần kiểm soát cẩn thận trong code của bạn. Chương trình đúng thì s?là như này.

#include <iostream> 

using namespace std;

int main(int argc, char** argv)

for (int i = 1; i <= 10; i++)

cout << “Hello\n”;

return 0;

}

  1. Đặt biến thành giá tr?chưa được khởi tạo

#include <iostream> 

using namespace std;

int main(int argc, char** argv)

int a, b;

int sum = a + b;

cout << “Nhap 2 so can tinh tong: “;

cin >> a;

cin >> b;

cout << “Tong la: ” << sum;

       return 0;

}

Trong chương trình trên, biến sum được coi như là tổng của 2 giá tr?a, b nhưng a và b đều chưa được khởi tạo. Đối với những lập trình viên mới bắt đầu, một vài người nghĩ rằng nếu gán một biến bằng kết qu?phép toán dựa trên các biến khác thì khi thay đổi các biến trong phép tính thì biến kết qu?cũng thay đổi theo.

Trong C++ thì không như vậy, đó là thỏa thuận một lần. Khi bạn gán giá tr?cho một biến, đó s?mãi là giá tr?của nó cho đến khi bạn gán lại giá tr?khác cho biến đó. Trong chương trình trên, vì a và b không được khởi tạo, tổng s?là một s?ngẫu nhiên không xác định bất k?người dùng nhập gì.
Đ?khắc phục lỗi này thì chúng ta sửa lại như sau.

#include <iostream> 

using namespace std;

int main(int argc, char** argv)

int a, b;

int sum;

cout << “Nhap 2 so can tinh tong: “;

cin >> a;

cin >> b;

sum = a + b;

cout << “Tong la: ” << sum;

return 0;

}

  1. Vòng lặp vượt quá giá tr?của mảng

#include <iostream> 

using namespace std; 

#include <iomanip> 

using std::setw; 

int main(int argc, char** argv)

   int n[10]; 

   //n la mot mang gom 10 so nguyen 

   //khoi tao gia tri cac phan tu cua mang n la 0 

   for (int i = 0; i < 10; i++) 

   { 

      n[i] = i + 100

      //thiet lap phan tu tai vi tri i la i + 100 

   } 

   cout << “Phan tu thu:” << setw(13) << “Gia tri la:” << endl; 

   //hien thi gia tri cua moi phan tu 

   for (int j = 1; j <= 10; j++) 

   { 

      cout << setw(7)<< j << setw(13) << n[j] << endl; 

   } 

   return 0

}

Hãy nh?rằng trong C++ thì mảng bắt đầu t?v?trí 0, trong khai báo trên mảng a có 10 phần t?bắt đầu t?v?trí 0 đến v?trí 9, do đó vòng lặp chạy như trên s?cho kết qu?sai, phải sửa lại như th?này.

#include <iostream> 

using namespace std; 

#include <iomanip> 

using std::setw; 

int main(int argc, char** argv)

   int n[10]; 

   //n la mot mang gom 10 so nguyen 

   //khoi tao gia tri cac phan tu cua mang n la 0 

   for (int i = 0; i < 10; i++) 

   { 

      n[i] = i + 100

      //thiet lap phan tu tai vi tri i la i + 100 

   } 

   cout << “Phan tu thu:” << setw(13) << “Gia tri la:” << endl; 

   //hien thi gia tri cua moi phan tu 

   for (int j = 0; j < 10; j++) 

   { 

      cout << setw(7)<< j << setw(13) << n[j] << endl; 

   } 

   return 0

}

  1. S?dụng một dấu bằng duy nhất trong đ?kiểm tra đẳng thức

Hãy th?chạy chương trình dưới đây.

#include <iostream> 

#include <bits/stdc++.h>

using namespace std; 

int main() {

int a = 1, b = 2;

while (a = b) {

cout << “a bang b”;

return 0

}

}

Chúng ta thấy vòng lặp s?không bao gi?kết thúc. Lý do ?đây là vì s?dụng ‘=’ là gán giá tr?thay vì ‘==’ là so sánh, ?đây a = b là một phép gán hoàn toàn hợp pháp nên nó s?gán mãi như th? do đó vòng lặp không th?dừng được. Vì vậy ?đây phải s?dụng chính xác là dấu ‘==’.

#include <iostream> 

#include <bits/stdc++.h>

using namespace std; 

int main() {

int a = 1, b = 2;

while (a == b) {

cout << “a bang b”;

return 0

}

}

  1. Hàm chưa được khai báo

Th?biên dịch đoạn code sau:

#include <iostream> 

using namespace std;

int main(int argc, char** argv)

solve();

return 0;

}

void solve() {

// do something

cout << “Hello World”;

}

Khi biên dịch chương trình trên, các bạn s?nhận v?một lỗi. Trình biên dịch không biết hàm solve là hàm gì. Do đó bạn phải khai báo một hàm có tên là solve trước hàm main.

#include <iostream> 

using namespace std;

void solve();

int main(int argc, char** argv)

solve();

return 0;

}

void solve() {

// do something

cout << “Hello World”;

}

Hoặc đơn giản hơn là viết luôn hàm solve trước hàm main như sau:

#include <iostream> 

using namespace std;

void solve() {

// do something

cout << “Hello World”;

}

int main(int argc, char** argv)

solve();

return 0;

}

Qua bài viết, các bạn cũng đã hiểu được các lỗi thường gặp của một lập trình viên C++ khi mới bắt đầu. Một s?lỗi không ch?gặp ?C++ mà còn gặp ?các ngôn ng?khác. Chúc các bạn thành công!

B?môn Ứng dụng Phần mềm
Trường Cao đẳng FPT M?ng c c??c bng ? cơ s?Hà Nội

The post 7 lỗi thường gặp khi lập trình C++ appeared first on Cao Đẳng FPT M?ng c c??c bng ? xét tuyển.

]]>