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.


Wednesday, September 17, 2014

Reflection DataTypes

1. How to represent negative integer ???

                                          1 Byte









    ↓ 
 Sign bit: bit dấu (bit đầu tiên)
 Quy ước : số 1 là số âm
                  số 0 là số dương

Ví dụ:
- số " 92 " trong hệ thập phân sang đổi sang hệ nhị phân.
0
1
0
1
1
1
0
0
                                 tiến hành đảo bit (1  0 , 0 1)

1
0
1
0
0
0
1
1
                       ↓ cộng thêm 1 được 

1
0
1
0
0
1
0
0
   
- đây là kết quả cuối cùng thu được số " -92 " trong hệ nhị phân.

Tóm lại: biểu diễn số âm trong hệ nhị phân qua những bước sau:
               + xác định số nguyên dương của số cần đổi sang hệ nhị phân
               + đảo bit (1  0 , 0 → 1)
               + cộng thêm 1 theo nguyên tắc cộng nhị phân
               + cuối cùng ta thu được một số âm theo dạng nhị phân.


2. Why int and float have the same size in 4 byte but float has range that larger than int many times.
 
Dựa trên chuẩn IEEE 754. Ở kiểu " int " 4 byte = 32 bit, biểu diễn trên các ô nhớ đó tối đa " 232 "
số nguyên. Ở kiểu " float " cũng 4 byte = 32 bit, nhưng chia vào ba phần: bit đầu là bit dấu, 7 bit tiếp theo là số mũ, 23 bit tiếp theo là mantissa. Cho nên việc biểu diễn số thực trong float có thể đạt "2127"
lớn hơn nhiều so với dạng int.


3. Write program to display your profile on the screen.

- chủ yếu dùng lệnh printf() để hiển thị.











4. Write demo program to input and output variables of different data types.



Tính diện tích tam giác vuông khi biết hai cạnh kề

Cách tính diện tích tam giác vuông khi biết hai cạnh kề sử dụng ngôn ngữ lập trình C.

Code:


#include<stdio.h>
#include<conio.h>

int main()

{
//declaration
int o, k, l;

//input
printf("nhap canh o: ");
scanf("%d", &o);

printf("nhap canh k: ");
scanf("%d", &k);

l=o*k;

//output
printf("dien tich hinh tam giac vuong = %d\n", l);
getch();
}

Kết quả: 



Tính diện tích hình chữ nhật khi biết hai cạnh kề

Cách tính diện tích hình chữ nhật khi biết hai cạnh kề sử dụng ngôn ngữ lập trình C.

Code:


#include<stdio.h>
#include<conio.h>

int main()

{
   //declaration
int m, n, s;

//input
printf("nhap canh m: ");
scanf("%d", &m);

printf("nhap canh n: ");
scanf("%d", &n);

s=m*n;

//output
printf("dien tich hinh chu nhat = %d\n", s);
getch();
}

Kết quả: 



Tính diện tích hình vuông khi biết cạnh kề

Cách tính diện tích hình vuông khi biết cạnh kề sử dụng ngôn ngữ lập trình C.

Code:


#include<stdio.h>
#include<conio.h>

int main()

{
   //declaration
int q;

//input
printf("nhap canh q: ");
scanf("%d", &q);

q= q*q;

//output
printf("dien tich hinh vuong = %d\n", q);
getch();
}

Kết quả:



Convert meter to feet

Cách đổi mét sang feet sử dụng ngôn ngữ lập trình C.

Với công thức ft =m * 3.2808

Code:

#include<stdio.h>
#include<conio.h>

int main()

{
   //declaration
int x;
double y;

//input
printf("nhap meter: ");
scanf("%d", &x);
y= x*3.2808;

//output
printf("feet= %0.4lf\n", y);
getch();
}

Kết quả: