Chủ Nhật, 5 tháng 5, 2024

40. Chương trình tào lao với vòng lặp, mảng, hàm...và chuỗi C++ phần 1

Chúng ta sẽ phát huy truyền thống...tào lao bằng một chương trình tào lao mới! Chương trình sẽ ôn lại tất cả những gì chúng ta đã thảo luận về C++.

Đầu tiên là ý tưởng về chương trình...vĩ đại của chúng ta: Chúng ta sẽ tạo ra một chương trình để nhập tên sinh viên của một lớp, lưu vào một mảng, sau đó sẽ in toàn bộ tên sinh viên ra màn hình bằng một hàm. Hàm này sẽ nhận tham số là mảng tên sinh viên.

Về mảng tên sinh viên, khác với C, trong C++ chúng ta có thể dùng mảng 1 chiều cho chương trình này.

Chúng ta sẽ sử dụng IDE Online để thử chạy một mảng 1 chiều với vài tên của sinh viên

Đây là code của mảng 1 chiều.

#include <iostream>
#include <string>

using namespace std;


int main(){
string arr[20] = {"Nguyen Van A",
                     "Tran Van B", "Le Thi C"};    
 for (int i = 0; i < 3; i++)
  {
    cout << "Ten: " << arr[i]<< endl;
  }                     
  return 0;
    
}

Hy vọng đoạn code không quá khó hiểu với bạn.

  • Khai báo và Khởi tạo mảng string arr[20]: Khai báo mảng arr kiểu dữ liệu là string  20 phần tử, đại diện cho 20 sinh viên.
  • Vòng lặp for (int i = 0; i < 3; i++) : Chúng ta sẽ cho biến i chạy từ 0 tới 2 với giả định số sinh viên là 3, vì vậy nếu số sinh viên là 50, ta sẽ có vòng lặp for (int i = 0; i < 50; i++).
  • Lệnh cout << "Ten: " << arr[i]<< endl; Cứ mỗi i được duyệt qua, chương trình sẽ lần lượt in giá trị của phần tử mảng arr[0],arr[1],arr[2]...


Bấm Run để chạy thử, ta thấy kết quả


 

Trước hết chúng ta sẽ xây móng của chương trình.

Đây là những thủ tục đầu tiên


#include <iostream>
#include <string>

using namespace std;

int main()
{
   
    return 0;
}

Sử dụng IDE Online để chạy thử

 


 

Nhắc lại ý tưởng về chương trình của chúng ta: Chúng ta sẽ tạo ra một chương trình để nhập tên sinh viên của một lớp, lưu vào một mảng, sau đó sẽ in toàn bộ tên sinh viên ra màn hình bằng một hàm. Hàm này sẽ nhận tham số là mảng tên sinh viên. Chúng ta sẽ sử dụng mảng con trỏ để có điều kiện ôn lại những thảo luận về con trỏ.

Để tiếp tục, chúng ta sẽ hình dung về hàm:

Hàm sẽ in danh sách sinh viên, vì vậy sẽ không cần trả về giá trị, có nghĩa là ta sẽ định nghĩa một hàm void.

Hàm có tham số là một mảng. Để không bận tâm về mảng trong bước đầu tiên, ta sẽ tạm dùng một mảng tạo sẵn để thử với hàm. Sau khi đã chạy ổn với hàm, ta sẽ viết một hàm khác để tạo mảng bằng cách đợi người sử dụng nhập tên các sinh viên vào.

Ta sẽ đặt tên mảng in danh sách sinh viên là danhSach(). Bây giờ chúng ta sẽ bắt đầu bước tiếp theo

Đây là khai báo hàm, đặt trên main()

 

// Khai báo hàm
void danhSach(string sinhVien[]);

 

Đây là định nghĩa hàm, đặt dưới main()

 

// Định nghĩa hàm
void danhSach(string sinhVien[]) {

  cout << "Xin chào Dat Viet Lap Trinh! Danh sach Sinh Vien: " << endl;
}


Chúng ta thêm khai báo và định nghĩa hàm vào chương trình, bấm Run để chạy thử:

 


 

Bây giờ chúng ta cần một mảng để truyền cho hàm danhSach(). Tạm thời ta sẽ tạo sẵn một mảng. Thêm code khai báo và khởi tạo mảng sinhVien[] vào trong hàm main() của chương trình, nó sẽ giống hệt mảng arr[], chúng ta giữ lại mảng arr hoàn toàn không có tác dụng nào khác ngoài tác dụng...tào lao.


string sinhVien[20] = {"Nguyen Van A",
                     "Tran Van B", "Le Thi C"};

Bấm Run để chạy chương trình


 

Tiếp theo, chúng ta sẽ gọi hàm danhSach() trong main(). Đây là chương trình cho tới lúc này

#include <iostream>
#include <string>

using namespace std;
// Khai báo hàm
void danhSach(string sinhVien[]);


int main(){
string arr[3] = {"Nguyen Van A",
                     "Tran Van B", "Le Thi C"};   
string sinhVien[20] = {"Nguyen Van A",
                     "Tran Van B", "Le Thi C"};                     
 for (int i = 0; i < 3; i++)
  {
    cout << "Ten: " << arr[i]<< endl;
  }        
danhSach(sinhVien); // Lời gọi hàm
  return 0;
    
}

// Định nghĩa hàm
void danhSach(string sinhVien[]) {

    cout << "Xin chào Dat Viet Lap Trinh! Danh sach Sinh Vien: " << endl;
}


Bấm Run để chạy chương trình




 

Tới lúc này, mọi thứ đã rất ổn và theo đúng những gì chúng ta trông đợi. Bạn nên tạo thói quen viết mọi chương trình theo từng bước như vậy.

  • Thử trước tiên với #include <iostream> và hàm main() trống.
  • Tiếp theo khai báo hàm trên main()
  • Định nghĩa hàm trống - chưa vội định nghĩa chi tiết, tốt nhất nên tạo một lệnh cout bất kỳ - trong main() dể dễ dàng kiểm tra hàm.
  • Nếu cần tạo tham số sẵn để kiểm tra hàm
  • Gọi thử hàm trống để kiểm tra, thông thường nếu hàm in ra lệnh cout là ổn.
  • Tiếp tục các bước định nghĩ cụ thể hàm.


Bước tiếp theo chúng ta sẽ định nghĩa hàm danhSach(). Mục tiêu của hàm này rất đơn giản, chỉ in ra danh sách sinh viên dựa vào tham số là mảng sinhVien[]. Chúng ta sẽ sử dụng vòng lặp For. Tuy nhiên, ở đây chúng ta có rất nhiều vấn đề cần giải quyết, để dễ dàng mọi việc, chúng ta sẽ tạm lờ đi tất cả các vấn đề và coi mọi thứ như mặc định. Chúng ta sẽ coi như tổng số sinh viên chỉ có 3 người. Vì vậy "hình dáng" của vòng lặp For sẽ tương tự thế này:


for (int i = 0; i < 3; i++)
  {
    cout << "Tên sinh viên: " << sinhVien[i] << endl;
  }

 

Thêm vòng lặp for vào định nghĩa hàm, dưới lệnh printf đầu tiên, ta sẽ có chương trình như sau.

#include <iostream>
#include <string>

using namespace std;
// Khai báo hàm
void danhSach(string sinhVien[]);


int main(){
string arr[3] = {"Nguyen Van A",
                     "Tran Van B", "Le Thi C"};   
string sinhVien[20] = {"Nguyen Van A",
                     "Tran Van B", "Le Thi C"};                     
 for (int i = 0; i < 3; i++)
  {
    cout << "Ten: " << arr[i]<< endl;
  }        
danhSach(sinhVien); // Lời gọi hàm
  return 0;
    
}

// Định nghĩa hàm
void danhSach(string sinhVien[]) {

    cout << "Xin chào Dat Viet Lap Trinh! Danh sach Sinh Vien: " << endl;
    for (int i = 0; i < 3; i++)
    {
       cout << "Tên sinh viên: " << sinhVien[i] << endl;
    }
}

 

Bấm Run để chạy chương trình, mọi thứ hoàn hảo!

Chương trình tào lao với vòng lặp, mảng trong lập trình C++


 

 

Tuy nhiên đây mới chỉ là bước đầu tiên. Chương trình chưa hoàn hảo thật sự:

  • Mảng sinhVien[] là cho sẵn, chúng ta cần thật sự là một mảng bất kỳ do người sử dụng nhập vào
  • Tổng số phần tử của mảng mặc định là 3, nếu số sinh viên khác thì chương trình sẽ hoạt động sai.

Chúng ta sẽ giải quyết tiếp trong phần sau.

 

Phần tiếp theo

 

Phần trước

 

 

 

 

 

 

Không có nhận xét nào:

Đăng nhận xét