Thứ Tư, 17 tháng 4, 2024

39.Chương trình tào lao với vòng lặp, mảng, hàm, con trỏ và chuỗi phần 2

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 <stdio.h>

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(char *sinhVien[]);

 

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

 

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

  printf("Xin chào Dat Viet Lap Trinh! Danh sach Sinh Vien:\n");
}


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.


char *sinhVien[] = {"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 <stdio.h>

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

int main()
{
    char *sinhVien[] = {"Nguyen Van A",
                     "Tran Van B", "Le Thi C"};
                    
    danhSach(sinhVien); // Lời gọi hàm
    return 0;
}

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

  printf("Xin chào Dat Viet Lap Trinh! Danh sach Sinh Vien:\n");
}


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 <stdio.h> 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 printf() bất kỳ - dưới main()
  • 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
  • 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++)
  {
    printf("%s\n", sinhVien[i]);
  }

 

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 <stdio.h>

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

int main()
{
    char *sinhVien[] = {"Nguyen Van A",
                     "Tran Van B", "Le Thi C"};
                    
    danhSach(sinhVien);
    return 0;
}

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

  printf("Xin chào Dat Viet Lap Trinh! Danh sach Sinh Vien:\n");
 
  for (int i = 0; i < 3; i++)
  {
    printf("%s\n", sinhVien[i]);
  }

}
 

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


 

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 dộ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