C++ Chương I:Bài Tập Căn Bản

Chính xác rồi @NotFound, thời gian đầu việc viết std::cout có thể hơi phiền hà vài dài dòng. Nhưng nhanh thôi, mình sẽ thấy được cái lợi của nó

  • Mình sẽ định hình rõ, hàm nào, thuộc namspace nào (ít ra cũng hiểu rõ hơi khái niệm namespace)
  • Tránh bị gọi nhầm hàm, cái này rất đau đầu khi debug
  • Code dễ đọc hơn, vì mình phân tách rõ, mình đang sử dụng namespace std hay namespace xxx

Cái này là kinh nghiệm của Đạt thôi, các bạn thấy mình sai thì nhắc mình nhé.

4 Likes

Cần những bài tập có lời giải như thế này :blush:

2 Likes

Mình cũng mới làm quen :smiley: Cùng chia sẻ nhé :slight_smile:

1 Like

vậy là Tiến phải viết

using std::cout;
hay là 
std::cout;

Tại Tiến cũng mới học C++ nên cần mọi người giúp đở :smiley:

1 Like

Đây là một ví dụ cách sử dụng namespace…

Nên viết như sau

int swap(int x, y)
{
    std::cout << "I'm too lazy to do swap, do it yourself" << std::endl();
}
int main()
{
    std::cout << "hello, world!" << std::endl();
    int x = 1;
    int y = 2; 
    std::swap(x,y); // gọi hàm swap trong thư viện std
    swap(x,y); // gọi hàm swap mình định nghĩa ở trên
}

Không nên viết

using namespace std;
int swap(int x, y)
{
    cout << "I'm too lazy to do swap, do it yourself" << endl();
}
int main()
{
    cout << "hello, world!" << endl();
    int x = 1;
    int y = 2; 
    swap(x,y); // Hàm swap nào đang được gọi đây?
}
2 Likes

Bạn đọc kỹ các bài post trên sẽ thấy mà. Người ta viết std::cout << "Hello World"; Using là khi mình muốn khai báo có sử dụng namesppace đó. Tuy nhiên, cách viết này không được khuyến khích lắm, vì sau này sẽ có trường hợp có bạn khai báo using 2 namespace, mà 2 namespace đó có trùng 1 hay nhiều tên hàm mà bạn sử dụng thì trường trình sẽ báo lỗi vì nó không biết bạn dùng hàm của namesapce nào. Trừ khi bạn chỉ đích danh namespace. Ví dụ:

    Using namespace A; //Giả sử namspace A có hàm FunctionXYZ();
    Using namespace B; //Giả sử namspace A có hàm FunctionXYZ();
    
    int main()
    {
    FunctionXYZ()//Báo lỗi ở đây vì nó k biết bạn gọi hàm FunctionXYZ() của namespace nào.Nên ta sẽ fai viết lại
    A::FunctionXYZ();
    }
3 Likes

Cần phân biệt giống như post trên mình có nói.
Đầu tiên là sử dụng theo kiểu trực tiếp: using namespace std;

using namespace std;
int main() {
   cout << "Hello World" << endl();
}

Thứ hai là định nghĩa trước khi sử dụng: using std::cout;

int main() {
   using std::cout;
   cout << "Hello World" << endl();
}

Thứ ba là viết đầy đủ: std::cout

int main() {
   std::cout << "Hello World" << std::endl();
}

Cách thứ 1 không nên.
Cách thứ 2 ổn.
Cách thứ 3 ổn nhất.

2 Likes

Cách thứ 2 viết code sẻ ngắn hơn! Nhưng không biết có lỗi gì không? Mình thì đang code theo cách thứ 3!

Cách thứ 2 nói chung cũng tàm tạm, vì nó được khai báo trong 1 block of code nhỏ. Tức là giữa hai dấu {..}. Tuy nhiên, nó cũng làm cho mình không thấy rõ là cout thuộc về std nếu {..} chứa quá nhiều code. Ví dụ dài hơn một màn hình đi, khi bạn cuộn xuống phần tiếp theo, thì sẽ không thấy khai báo std::cout.

P/S: Đạt chưa bao giờ dùng cách 2, thấy nó sao sao đó :smiley:

1 Like

Mới học chắc học cách 3 cho an toàn! sau này có exp rồi tính tiếp! Hihi

1 Like

@NotFound Một sai sót lớn của người mới học C++ là sử dụng using namespace std; vô tội vạ. Mà chính xác ra là sai sót của người dạy. Nhưng cũng không trách được, vì phải nói rất kỹ thì người mới học mới nắm được cái này.

Sử dụng std::out thay cho using namespace std; nói chung là có lợi cho việc đọc code. Không có ảnh hưởng nào đến tốc độ thực thi chương trình cả. Tuy nhiên Đạt nghĩ cũng nên tập thói quen code sao cho dễ đọc.

Khi mới học, mình chú trọng sao cho code chạy được. Nhưng khi đi làm, phải làm sao đảm bảo code dễ đọc. Chứ sau này chuyển giao dự án cho người khác, người ta đọc code họ khinh cho :smile:

1 Like

Tiến thì học nhiều ngôn ngữ khi đi học! C thì có học sơ sơ! vào được fpt sofware HCM mà bỏ về giờ thành một người thất nghiệp không biết gì hết! não lòng :slight_smile:

2 Likes

Lập topic mới thì loãng quá. Mình viết vào đây vậy :smiley:
Bài tập C++ căn bản phần Cấu Trúc Điều Khiển
Bài tập 15: (*): Viết chương trình thể hiện trò chơi oẳn tù tì với qui ước: Búa = ‘B’; Bao = ‘O’; Kéo =‘K’. Nhập vào hai kí tự đại diện cho hai người chơi. Xuất ra màn hình câu thông báo người chơi nào thắng hoặc hòa.

Và đây là code C++ của mình. Các bạn góp ý xem có cách nào tối ưu hóa code hơn hay không ? Hoặc là 1 cách giải thuật khác nhanh - gọn - dễ hiểu hơn chẳng hạn ?

#include <iostream>
int main(void)
{
    char nguoiso1, nguoiso2;
    std::cout << "Keo - Bua - Bao" << std::endl;
    std::cout << "Quy Uoc: K(Keo) - B(Bua) - O(Bao)" << std::endl;
    std::cout << "Nguoi choi 1 chon: ";
    std::cin >> nguoiso1;
    std::cout << "Nguoi choi 2 chon: ";
    std::cin >> nguoiso2;
    switch (nguoiso2)
    {
    case 'K':
    case 'k':
        if (nguoiso1 == 'K' || nguoiso1 == 'k')
            std::cout << "Hoa!" << std::endl;
        else if (nguoiso1 == 'B' || nguoiso1 == 'b')
            std::cout << "Keo thua Bua. Nguoi so 1 thang." << std::endl;
        else if (nguoiso1 == 'O'|| nguoiso1 == 'o')
            std::cout << "Keo thang Bao. Nguoi so 1 thang." << std::endl;
        else
            std::cout << "Chon sai roi!" << std::endl;
        break;
    case 'B':
    case 'b':
        if (nguoiso1 == 'B' || nguoiso1 == 'b')
            std::cout << "Hoa!" << std::endl;
        else if (nguoiso1 == 'K' || nguoiso1 == 'k')
            std::cout << "Bua thang Keo. Nguoi so 2 thang." << std::endl;
        else if (nguoiso1 == 'O' || nguoiso1 == 'o')
            std::cout << "Bua thua Bao. Nguoi so 2 thang." << std::endl;
        else
            std::cout << "Chon sai roi!" << std::endl;
        break;
    case 'O':
    case  'o':
        if (nguoiso1 == 'O' || nguoiso1 == 'o')
            std::cout << "Hoa!" << std::endl;
        else if (nguoiso1 == 'K' || nguoiso1 == 'k')
            std::cout << "Bao thua Keo. Nguoi so 1 thang." << std::endl;
        else if (nguoiso1 == 'B' || nguoiso1 == 'B')
            std::cout << "Bao thang Bua. Nguoi so 2 thang." << std::endl;
        else
            std::cout << "Chon sai roi!" << std::endl;
        break;
    default:
        break;
    }

    return 0;
}

Mình muốn khi chọn sai thì phải chọn lại > Làm thế nào các bạn chỉ cách giúp mình với nhé >> Chân thành cảm ơn. Chào thân ái và quyết thắng.
Chờ hồi âm…

2 Likes

dùng while sau khi nhập từ bàn phím bạn

1 Like

em viết

#include <iostream>
using namespace std;

thay cho std:: cout và std::endl :grin:

có video ko sếp. e đang bắt đầu học C++

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?