- Chương trình con đóng vai trị quan trọng trong lập trình, đặc biệt trong lập trình có cấu trúc.
- Có 2 loại hàm đó là hàm có giá trị trả về và hàm khơng có giá trị trả về. - Biến toàn cục, biến cục bộ.
- Tham số hình thức, tham số thực sự; - Tham trị, tham biến.
* Bài toán cơ bản:
Cho dãy số A gồm N số nguyên A1, A2, ..., AN. Hãy cho biết có bao nhiêu số trong dãy số A có tổng các chữ số là một số chính phương.
Dữ liệu vào: Tệp CTC.INP gồm 2 dòng:
- Dòng đầu tiên chứa số N (N<=104).
- Dòng thứ hai chứa dãy số A, các số ghi cách nhau ít nhất là một ký tự trống (1<=a[i]<=109).
Dữ liệu ra: Tệp CTC.OUT chứa 1 số nguyên duy nhất là kết quả của bài toán.
Ý tưởng: Để giải bài toán ta cần thực hiện các công việc sau:
- Xây dựng hàm void doc() để đọc dữ liệu từ tệp vào mảng.
- Xây dựng hàm int tongcs(int n) đưa vào số n, lấy ra tổng chữ số của n. - Xây dựng hàm bool cphuong(int n) đưa vào số ngun n kiểm tra n có phải là chính phương hay khơng.
- Hàm int main()
+ Gọi hàm doc();
+ Sau đó duyệt từng phần tử của mảng gọi hàm tính tổng các chữ số và kiểm tra chính phương để đếm số lượng số thỏa mãn.
Trong chương trình trên ta đã sử dụng một hàm có sẵn xây dựng 3 hàm: - Hàm có sẵn sqrt(n);
- Hàm khơng có giá trị trả về void doc(),
- Hàm giá trị trả về là kiểu số nguyên int tong(int x) - Hàm trả về giá trị logic bool cphuong(int x)
Lưu ý:
Khi giải quyết mỗi bài tốn ta nên dành thời gian để phân tích, xây dựng bố cục cấu trúc chương trình. Cơng việc này sẽ đơn giản và dễ dàng hơn khi ta sử dụng bí quyết TTNV (Tách, Tìm, Nhìn, Viết) để giải quyết vấn đề.
+ Tách (Tách lớn ra nhỏ): Tách công việc lớn thành nhiều công việc nhỏ hơn, dễ giải quyết hơn. Có thể tách lớn ra nhỏ nhiều lần cho đến khi công việc đủ đơn giản dễ thực hiện.
+ Tìm (Tìm điểm chung): Tìm điểm chung giữa các cơng việc nhỏ với nhau. + Nhìn (Nhìn tổng quát): Nhìn tổng quát để tìm ra điều cốt lõi bằng cách lược bỏ hoặc đơn giản hóa các chi tiết.
4.2.2 Chuyên đề Số học.