Sunday, October 19, 2014

Assignment 1: Chương trình tính tiền khách hàng phải trả vào gốc và lãi cho ngân hàng

Hướng giải quyết: Chia nhỏ các vấn đề tính gốc, lãi, bảo hiểm,... ra thành các function để tính, sau đó gọi lại trong hàm main.

1. Hàm trả tiền gốc đã vay theo hàng tháng:


2. Hàm tính số tiền dư còn lại phải trả trong tiền gốc: (được dùng trong nhiều hàm về sau)


3. Hàm tính lãi suất phải trả cho tháng:

Hàm tính tiền dư được sử dụng ở hàm lãi này.

4. Hàm tính bảo hiểm bắt buộc phải trả hàng tháng: 12% 1 năm.


5. Dùng riêng một hàm void để lựa chọn các loại bảo hiểm cũng như các khoản khấu trừ có thể có:


6. Sau khi chọn xong, tính các loại bảo hiểm cũng như khoản khấu trừ theo các công thức trong các hàm riêng lẻ khác nhau:


7. Hàm main:



8. Kết quả:







Code

Thursday, October 2, 2014

Tham trị (pass parameters by values). Tham biến (pass parameters by references)

I. Tham trị (pass parameters by values)
      Lấy ví dụ về m^n.

VD1:



VD2:


    Qua hai dụ trên, ta thấy việc dùng hàm power với biến x,y và hàm main với biến m,n. Sau khi chạy chương trình giá trị của x bằng giá trị của m, giá trị của y bằng giá trị của m, kết quả ở ví dụ 2 đưa ra đúng với kết quả đưa ra ở ví dụ 1 không dùng function.
 
    Để giải thích điều này:

    Ví dụ hai biến m,n trong hàm main nằm ở hai ô nhớ là 90 và 94 sau khi được khởi tạo, hai biến x,y của hàm power lại là nằm ở hai ô nhớ khác là 100 và 104 khi được khởi tạo, nhưng sau khi hàm power được gọi trong hàm main (ví dụ 2) thì khi chạy chương trình giá trị của ô 90 và 94 sẽ được truyền vào hai ô 100 và 104 tương ứng theo cơ chế truyền tham trị. Kết quả thực thi thuật toán ở ví dụ 2 không có gì thay đổi so với ví dụ ban đầu, vì giá trị đầu vào là giống nhau.

II. Tham biến (pass parameters by references)
     
VD1:


     Chương trình đổi chỗ hai biến m và n.

VD2:


    Dùng function để đổi chỗ hai biến m,n nhưng không thu được kết quả như mong muốn vì giá trị của hai ô nhớ m,n truyền qua giá trị của hai ô nhớ tương ứng x,y. Sau khi lệnh gọi hàm swap được thực thi việc đổi chỗ chỉ thực hiện trong hàm swap mà không thực hiện trong hàm main. Vì vậy sau khi in ra giá trị của m và n không đổi. Đây chính là cơ chế truyền tham trị.
    Đề giải quyết vấn đề trên ta dùng một cơ chế khác là cơ chế truyền tham biến.

VD3:


   Thêm ký hiệu & vào hai biến x,y (int &x, int &y) định nghĩa &x, &y là khai báo địa chỉ trên vùng bộ nhớ trong hàm swap. Giải thích cơ chế: ví dụ có hai vùng bộ nhớ là m và n trong hàm main tương ứng với hai ô 90 và 94. Khi thực thi lấy địa chỉ của m là ô 90 để vào cho x, n là ô 94 để vào cho y, thực hiện việc đổi chỗ tg gán bằng giá trị của ô 90, giá trị ô 90 gán bằng giá trị ô 94, giá trị ô 94 gán bằng tg. Kết quả đưa ra đúng với ví dụ 1.

III. Tổng Kết
     Hiểu được hai cơ chế truyền là truyền tham trị và truyền tham biến. Nếu chương trình cần tham số đầu vào cho quá trình tính toán thì ta dùng tham trị, nếu cần tham số đầu ra làm thay dổi giá trị tham số đấy ta dùng tham biến.
     









Biến địa phương (local variables). Biến toàn cục (global variables).

I. Biến địa phương (local variables)
    Hiểu một cách nôm na biến cục bộ là những được khai báo trong mỗi hàm khác nhau trong chương trình C. Các biến này độc lập với nhau trong mỗi một hàm khác nhau.
 
VD:



     Theo như ví dụ trên, ta khai bao hai biến n kiểu int ở hai hàm khác nhau là hàm tong() và hàm main() dù có nhập vào biến n của hàm main() là giá trị bao nhiêu thì giá trị của n trong hàm tong() không thay đổi.

II. Biến toàn cục (global variables)
     Khác với biến địa phương biến toàn cục là biến được khai báo ngay từ đầu chương trình, mọi hàm khác nhau trong các chương trình con khác nhau đều tham chiếu biến đã được khai báo.

VD:



     Theo như ví dụ trên, ta đã khai báo biến n=2 ngay từ đầu, khi chạy chương trình các hàm đều sử dụng biến n, vậy nên khi in ra giá trị của n trong hai hàm đều bằng 2.

III. Tổng Kết
      Biến địa phương là biến được khai báo ở trong mỗi hàm và chỉ có giá trị ở trong hàm được khai báo.
      Biến toàn cục là biến được khai báo ở bên ngoài tất cả các hàm, và có giá trị như nhau ở mỗi hàm con khác.



Function là gì? Một số ví dụ về Function.

I. Function là gì?
       Lấy một ví dụ đơn giản, trong một bài viết luận hoặc trong một cuốn truyện ngắn mà bạn phải dùng một từ dài và khá khó nhớ để viết đi viết lại nhiều lần trong cả cuốn truyện, thông thường thì không ai muốn viết đi viết lại cụm từ đó cả. Cách đơn giản là chúng ta viết từ đó lần đầu tiên sau đó chú thích nhỏ ở dưới theo dạng viết tắt các chữ cái đầu tiên, sau đó trong cả bài viết chúng ta có thể dùng cụm từ viết tắt đó mà người đọc vẫn có thể hiểu được.
       VD: Manchester United (MU).
       Quay trở lại với ngôn ngữ lập trình C, function cũng tương tự như cái cách viết tắt trên. Chúng ta viết một đoạn thuật toán mà phải dùng đi dùng lại nhiều lần, sau mỗi lần muốn sử dụng chỉ cần gọi ra. Function đó hay được gọi là chương trình con khi nào muốn sử dụng ta chỉ việc gọi ra hay gọi là function call.

II. Một số ví dụ về function.
    Để hiểu rõ hơn cách dùng function trong C, có một số ví dụ sử dụng function như sau:

1. Lũy thừa.


2. n!


3. ex



4. highest



5. highest_1



6. Số PI



III. Tổng kết.
         Hiểu được thế nào là function, các quy tắc viết hàm con kiểu int, double, void,... các cách gọi function.