Trường ĐH CNTT KTLT Chương Hàm biến ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - Trường ĐH CNTT KTLT MỤC TIÊU Ôn lại khái niệm, kiến thức lập trình Biến tồn cục Biến cục Hàm biến toàn cục Tham số hàm Trừu tượng hóa liệu ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - Trường ĐH CNTT KTLT BÀI TỐN tốn: Viết chương trình nhập họ tên, điểm tốn, điểm văn học sinh Tính điểm trung bình xuất kết Bài ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - Trường ĐH CNTT KTLT BIẾN TOÀN CỤC Khái niệm:Biến toàn cục biến khai báo bên tất hàm hiểu bên tất hàm Thơng thường biến tồn cục khai báo đầu chương trình Lưu ý: Biến khai báo bên thân hàm main không biến toàn cục mà biến cục hàm main ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - Trường ĐH CNTT KTLT 11 #include 12.#include 13.char hoten[31]; 14.int toan; 15.int van; 16.float dtb; 17.void main() 18.{ 19 printf(“Nhap ho ten:”); 20 gets(hoten); 21 printf(“Nhap toan:”); 22 scanf(“%d”,&toan); 23 printf(“Nhap van:”); 24 scanf(“%d”,&van); 25 dtb=(float)(toan+van)/2; 26 printf(“\n Ho ten: %s” , 27 28 29 hoten); printf(“\n Toan: %d” , toan); printf(“\n Van: %d” , van); printf(“\n Trung binh:%f”, dtb); 30.} ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - Trường ĐH CNTT KTLT BIẾN CỤC BỘ Khái niệm: Biến cục biến khai báo hiểu bên phạm vi chtrình, khỏi phạm vi biến khơng cịn biết đến không gian nhớ cấp phát cho biến tự động thu hồi Thông thường biến cục khai báo bên thân hàm hay khối lệnh Lưu ý: Một biến khai báo bên thân hàm main biến cục hàm main ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - Trường ĐH CNTT KTLT 11 #include 12.#include 13.void main() 14.{ 15 char hoten[31]; 16 int toan; 17 int van; 18 float dtb; 19 printf(“Nhap ho ten:”); 20 gets(hoten); 21 printf(“Nhap toan:”); 22 scanf(“%d”,&toan); 23 printf(“Nhap van:”); 24 scanf(“%d”,&van); 25 dtb=(float)(toan+van)/2; 26 printf(“\nHo ten:%s”, 27 28 29 hoten); printf(“\n Toan: %d” , toan); printf(“\n Van: %d” , van); printf(“\n Trung binh:%f” , dtb); 30.} ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - Trường ĐH CNTT KTLT HÀM VÀ BIẾN TỒN CỤC Kiến trúc chương trình C Khối khai báo Khối hàm main Khối định nghĩa hàm ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - Trường ĐH CNTT KTLT 5.1 KIẾN TRÚC MỘT CHƯƠNG TRÌNH C ĐƠN GIẢN Kiến trúc chương trình C bao gồm khối lệnh sau: khối khai báo, khối hàm main khối định nghĩa hàm Ba khối lệnh trình bày theo thứ tự hình vẽ bên ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - Trường ĐH CNTT KTLT 5.1 KIẾN TRÚC MỘT CHƯƠNG TRÌNH C ĐƠN GIẢN Khối khai báo Khối hàm main Khối định nghĩa hàm ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 10 Trường ĐH CNTT KTLT 8.1 ỨNG DỤNG 11 #include 12 #include 13 struct PhanSo 14 { 15 int tu; 16 int mau; 17 }; 18 typedef struct PhanSo PHANSO; 19 void Nhap(PHANSO &); 20 void Xuat(PHANSO); 21 void RutGon(PHANSO&); ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 28 Trường ĐH CNTT KTLT 8.1 ỨNG DỤNG 1 void Nhap(PHANSO &); void Xuat(PHANSO); void RutGon(PHANSO&); void main() { PHANSO ps; Nhap(ps); RutGon(ps); Xuat(ps); 10 } ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 29 Trường ĐH CNTT KTLT 8.1 ỨNG DỤNG 1 void Nhap(PHANSO &x) { printf(“Nhap tu”); scanf(“%d”,&x.tu); printf(“Nhap mau: ”); scanf(“%d”,&x.mau); } void Xuat(PHANSO x) { 10 printf(“\n Tu: %d”,x.tu); 11 printf(“\n Mau: %d”,x.mau); 12 } ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 30 Trường ĐH CNTT KTLT 8.1 ỨNG DỤNG void RutGon(PHANSO &x) { int a = abs(x.tu); int b = abs(x.mau); while(a*b!=0) { if(a>b) a = a – b; else 10 b = b – a; 11 } 12 x.tu = x.tu / (a+b); 13 x.mau = x.mau / (a+b); 14 } ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 31 Trường ĐH CNTT KTLT 8.2 ỨNG DỤNG Ứng dụng 2: Viết chương trình nhập vào tọa độ điểm mặt phẳng Oxy Tính khoảng cách chúng xuất kết 8.2 ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 32 Trường ĐH CNTT KTLT 8.2 ỨNG DỤNG 11 #include 12 #include 13 struct Diem 14 { 15 float x; 16 float y; 17 }; 18 typedef struct Diem DIEM; 19 void Nhap(DIEM &); 20 void Xuat(DIEM); 21 float KhoangCach(DIEM,DIEM); ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 33 Trường ĐH CNTT KTLT 8.2 ỨNG DỤNG 2 void Nhap(DIEM &); void Xuat(DIEM); float KhoangCach(DIEM,DIEM); void main() { DIEM A,B; Nhap(A); Nhap(B); float kq=KhoangCach(A,B); 10 Xuat(A); 11 Xuat(B); 12 printf(“\n …:%f”,kq); 13 } ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 34 Trường ĐH CNTT KTLT 8.2 ỨNG DỤNG void Nhap(DIEM &P) { printf(“Nhap x: ”); scanf(“%f”,&P.x); printf(“Nhap y: ”); scanf(“%f”,&P.y); } void Xuat(DIEM P) { 10 printf(“\n x = %f”,P.x); 11 printf(“\n y = %f”,P.y); 12 } ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 35 Trường ĐH CNTT KTLT 8.2 ỨNG DỤNG 2 float KhoangCach(DIEM P,DIEM Q) { return sqrt( (Q.x-P.x)*(Q.x-P.x)+ (Q.y-P.y)*(Q.y-P.y)); } ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 36 Trường ĐH CNTT KTLT BÀI TẬP Bài 1: Viết chương trình nhập vào phân số Hãy cho biết phân số phân số âm hay dương hay không Bài 2: Viết chương trình nhập tọa độ hai điểm khơng gian Tính khoảng cách chúng xuất kết ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 37 Trường ĐH CNTT KTLT BÀI TẬP Bài 3: Viết chương trình nhập vào phân số Tìm phân số lớn xuất kết Bài 4: Viết chương trình nhập vào hai phân số Tính tổng, hiệu, tích, thương chúng xuất kết ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 38 Trường ĐH CNTT KTLT BÀI TẬP Bài 5: Viết chương trình nhập vào số phức Tính tổng, hiệu, tích xuất kết Bài 6: Viết chương trình nhập vào ngày Tìm ngày xuất kết ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 39 Trường ĐH CNTT KTLT BÀI TẬP Bài 7: Viết chương trình nhập vào ngày Tìm ngày hơm qua xuất kết Bài 8: Viết chương trình nhập toạ độ đỉnh A,B,C tam giác mặt phẳng Oxy Tính chu vi, diện tích tìm tọa độ trọng tâm ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 40 Trường ĐH CNTT KTLT BÀI TẬP Bài 9: Viết chương trình nhập tọa tâm bán kính đường trịn Tính diện tích chu vi đường trịn ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 41 Trường ĐH CNTT KTLT BÀI TẬP Yêu cầu chung: Làm tất tập workspace có tên MSSV_BT01 Trong workspace có project tương ứng với tập Nộp tập lên hệ thống Moodle theo qui định ThS Cáp Phạm Đình Thăng TS Nguyễn Tấn Trần Minh Khang Chương 07 - 42