Giải thích lại theo dạng biểu đồ

Một phần của tài liệu [Tài liệu lập trình C] - Chương 1 Nền tảng để bắt đầu (Trang 116)

C ode: if (truongthanh)

Giải thích lại theo dạng biểu đồ

Tôi nghĩ bạn vẫn còn khó hiểu về việc nó hoạt động chính xác như thế nào đúng không? Không sao, tôi chắc bạn sẽ hiểu rõ hơn qua biểu đồ sau đây.

Đoạn code sau đã được chú thích thứ tự hoạt động của chương trình. Chương trình sẽ hoạt động theo thứ tự bắt đầu từ 1 đến 9 (tôi nghĩ bạn đã bắt đầu hiểu được vấn đề rồi đó ) :

Code C:

#include<stdio.h> #include<stdlib.h> int triple(int soHang) //6

{

return 3 * soHang; //7

}

int main(int argc, char *argv[]) //1

{

int soNhapVao = 0, soTriple = 0; //2

printf("Nhap vao mot gia tri... "); //3

scanf("%d", &soNhapVao); //4

soTriple = triple(soNhapVao); //5

printf("Triple (x3) cua gia tri vua roi la %d\n", soTriple); //8

return 0; //9

}

Và đây là những gì diễn ra.

1. Chương trình bắt đầu bằng function main.

2. Nó chạy những instructions theo thứ tự dòng trước đến dòng sau.

3. Nó chạy instruction kế tiếp và thực hiện lệnh instruction đó yêu cầu (printf).

4. Vẫn thế, nó chạy instruction kế tiếp và thực hiện lệnh instruction đó yêu cầu (scanf). 5. Nó chạy instruction kế tiếp .... À! ở đây yêu cầu gọi function triple, nên nó phải nhảy lên

đoạn code của function triple phía trên.

6. Nó chạy function triple và nhận giá trị cho parameter (soHang).

7. Nó tính toán giá trị và kết thúc function. return có nghĩa là kết thúc function và cho ra giá trị kết quả.

8. Nó quay về main và chạy instruction kế tiếp.

Nếu bạn hiểu thứ tự máy tính đọc những instruction, coi như bạn đã hiểu vấn đề.

Bây giờ, bạn cần hiểu cách một function nhận giá trị vào tại vị trí parameters và trả lại một giá trị khác ở return.

Chú thích: Đây không phải trường hợp cho hầu hết các function. Vì nhiều lúc, function không có

parameter nào, hoặc có rất nhiều parameter. Và đôi khi function cho ra một giá trị, hoặc nó

không trả về một giá trị nào cả (trường hợp không có return).

Test chương trình

Màn hình test chương trình:

Console:

Nhap vao mot gia tri ... 10

Triple (x3) cua gia tri vua roi la 30

Bạn không bắt buộc phải đưa giá trị của kết quả nhận được vào một biến số! Bạn có thể gửi trực tiếp giá trị kết quả nhận được của function triple vào một function khác, giống như việc xem triple(soNhapVao) là một biến số.

Tham khảo đoạn code dưới đây, cũng tương tự với đoạn code trên nhưng ở dòng printf cuối cùng có một chút thay đổi và ta không sử dụng biến số soTriple.

Code C:

#include<stdio.h> #include<stdlib.h> int triple(int soHang) {

return 3 * soHang; }

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

int soNhapVao = 0;

printf("Nhap vao mot gia tri... "); scanf("%d", &soNhapVao);

// ket qua cua function triple duoc gui truc tiep den printf ma khong can dua vao bat ki bien so nao

printf("Triple (x3) cua gia tri vua roi la %d\n", triple(soNhapVao));

return 0; }

Nhận thấy, triple(soNhapVao) được đưa trực tiếp vào printf. Máy tính hoạt động như thế nào nếu nó đọc đến dòng này?

Khá đơn giản. Nó đọc đến dòng bắt đầu bằng printf, nó sẽ gọi function printf. Nó tiếp tục đưa cho printf nhưng parameter cần thiết. Parameter đầu tiên là đoạn văn cần hiển thị và thứ hai là một số. Máy tính thấy rằng để đưa số này vào printf thì nó cần dùng function triple. Và nó gọi

function triple, nó thực hiện những phép toán có trong triple và khi nó có được kết quả, nó sẽ gửi trực tiếp vào function printf !

Thấy có vẻ hơi lằng nhằng giữa các functions phải không?

Để nói đơn giản hơn, một function được phép gọi một function khác khi đến lượt nó, hoặc tự gọi lại chính nó,... Đấy là nguyên tắc cơ bản của lập trình trên ngôn ngữ C ! Và tất cả sẽ được tập hợp lại, giống như việc lắp ghép Lego vậy.

Cuối cùng, việc khó khăn nhất chính là cách bạn viết ra các functions. Khi đã viết xong, bạn chỉ cần gọi lại chúng để thực hiện những công việc mà nó có thể làm bằng những phép toán được chứa bên trong. Việc này sẽ đơn giản hóa cách viết chương trình của chúng ta. Và hãy tin tôi, chúng ta sẽ dùng rất thường xuyên đấy!

Một phần của tài liệu [Tài liệu lập trình C] - Chương 1 Nền tảng để bắt đầu (Trang 116)

Tải bản đầy đủ (PDF)

(126 trang)