Lập trình cơ bản - Kiểu dữ liệu có cấu trúc
Vân đề nôp đồ an – điêm thanh phân
Vân đề thi thưc hanh:
Thơi gian, đia điêm: t.Khanh (quyêt đinh)
Vân đề miên thi, câm thi
Vân đề thi lý thuyêt:
Thơi gian: 90phut – không sử dung tai liêu
Nôi dung: toan bộ chương trinh
Hinh thưc: trăc nghiêm – tự luân (3-5 bai tâp lâp trinh)
Đề thi chung 2 lơp năm 1: SP tin, CNTT
16 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 955 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Lập trình cơ bản - Kiểu dữ liệu có cấu trúc, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
KIỂU DỮ LIỆU CÓ CẤU TRÚC
LÊ ĐỨC LONG-NGÔ QUỐC VIỆT
2011
Đặt vấn đề
Ngô Quốc Việt-Lập trình cơ bản 2
THÔNG TIN CỦA 1 HỌC SINH:
SỐ DANH BỘ
HỌ VÀ TÊN
ĐIỂM VĂN
ĐIỂM TOÁN
TRUNG BÌNH
char SDB[10];
char Hoten[100];
int Van, Toan;
float TB;
Nhận xét cách khai báo trên:
Thể hiện 1 cách độc lập, không liên quan – trong khi thực tế các thuộc tính
có sự liên hệ với nhau (thuộc tính thông tin về một học sinh)
Thông tin của nhiều học sinh – ví dụ trong một lớp ???
Mở rộng các đối tƣợng trong thế giới thực – thông tin về 1 đối tƣợng thực tế
thƣờng phức tạp và có nhiều thuộc tính có ý nghĩa và kiểu dữ liệu khác nhau.
PHÁT SINH MỘT KIỂU DỮ LIỆU MỚI: CẤU TRÚC (BẢN GHI/MẪU TIN)
Khai báo cấu trúc
Ngô Quốc Việt-Lập trình cơ bản 3
CÁCH 1:
struct Kiểu_cấu_trúc
{
//Khai báo các thành phần của cấu trúc
};
Ví dụ:
struct Hocsinh
{
char SDB[10];
char Hoten[100];
int Van,Toan;
float TB;
};
Đặt sau từ khoá #include . Và #define ..
Khai báo cấu trúc
Ngô Quốc Việt-Lập trình cơ bản 4
CÁCH 2:
typedef struct
{
//Khai báo các thành phần của cấu trúc
} Kiểu_cấu_trúc;
Ví dụ:
typedef struct
{
char SDB[10];
char Hoten[100];
int Van,Toan;
float TB;
}Hocsinh;
Khai báo cấu trúc
Ngô Quốc Việt-Lập trình cơ bản 5
CÁCH 3:
struct Kiểu_cấu_trúc
{
//Khai báo các thành phần của cấu trúc
};
typedef struct Tên_kiểu Kiểu_cấu_trúc;
Ví dụ:
struct Hocsinh
{
char SDB[10];
char Hoten[100];
int Van,Toan;
float TB;
};
typedef struct HS Hocsinh;
Khai báo biến cấu trúc
Ngô Quốc Việt-Lập trình cơ bản 6
TƢƠNG TỰ NHƢ KHAI BÁO BIẾN BÌNH THƢỜNG
Kiểu_cấu_trúc Tên_biến;
Ví dụ:
Hocsinh HS1, HS2;
Hocsinh stu;
SDB Hoten Van Toan TB
10 Byte 100 Byte 2 Byte 2 Byte 4 Byte
Số lƣợng byte chiếm trong bộ nhớ (sizeof (Hocsinh))
Cần lƣu ý thêm:
Truy xuất các thành phần cấu trúc
Ngô Quốc Việt-Lập trình cơ bản 7
Tên_biến . Tên_thành_phần;
Ví dụ:
HS1.Hoten --------- truy xuất đến thành phần Họ Tên của biến HS1
HS1.TB --------- truy xuất đến thành phần điểm TB của biến HS1
HS2.Van --------- truy xuất đến thành phần điểm Văn của biến HS2
Với 1 học sinh có các thuộc tính nhƣ trên Lớp học có n học sinh sẽ ntn ???
Khai báo biến mảng: Hocsinh HS[50];
// biểu diễn cho 1 mảng tối đa 50 phần tử có kiểu dữ liệu Hocsinh
Thông tin của học sinh thứ i:
HS[i].SDB; HS[i].Hoten; HS[i].Van; HS[i].Toan; HS[i].TB;
HS
50 phần tử – mỗi phần tử là một cấu trúc
Ví dụ minh hoạ
Ngô Quốc Việt-Lập trình cơ bản 8
Bài toán: Nhập vào thông tin học sinh của một lớp (tối đa 50 hs), tính điểm trung
bình của mỗi hs, trung bình lớp, và xuất ra danh sách gồm thông tin kết quả của
từng học sinh
SƠ ĐỒ THỦ TỤC/HÀM
main
Xuat_DS
Nhap_HS
Tinh_TB_lop
Tinh_TB_HS
Nhap_lop
Xuat_TT_HS
PROTOTYPE
void Nhap_HS(Hocsinh &h);
void Tinh_TB_HS(Hocsinh &h);
void Xuat_TT_HS(Hocsinh h);
void Nhap_lop(Hocsinh h[ ], int &n);
void Tinh_TB_lop(Hocsinh h[ ], int n);
void Xuat_DS(Hocsinh h[ ], int n);
Ví dụ minh hoạ
Ngô Quốc Việt-Lập trình cơ bản 9
Bài toán 1: Viết chƣơng trình nhập toạ độ tâm, và bán kính của 1 đƣờng tròn trong
mặt phẳng Oxy. Tính diện tích và chu vi của nó rồi xuất kết quả.
Phân tích:
Thành phần dƣ̃ liệu:
Input: toạ độ tâm (x,y) va ̀ bán kính R
Output: diện tích S, va ̀ chu vi P
Thành phần xƣ̉ lý:
Nhập toạ độ (x,y) va ̀ bán kính R
Tính diện tích: S = Pi * R * R
Tính chu vi: P = 2 * Pi * R
Xuất S, P.
Thiết kế:
struct DIEM
{
float x;
float y;
};
struct DUONGTRON
{
DIEM I;
float R;
};
main
Tinh_PNhap_Diem
Xuat
Tinh_S
Nhap
PROTOTYPE
void Nhap_Diem(DIEM &p);
void Nhap(DUONGTRON &c);
float Tinh_S(DUONGTRON c);
float Tinh_P(DUONGTRON c);
void Xuat(DUONGTRON c);
Ví dụ minh hoạ
Ngô Quốc Việt-Lập trình cơ bản 10
BÀI TOÁN 2: VIẾT CHƢƠNG TRÌNH NHẬP VÀO TỌA ĐỘ BA ĐỈNH CỦA MỘT TAM
GIÁC, XUẤT RA CHU VI, DIỆN TÍCH, VÀ TÍNH CHẤT CỦA TAM GIÁC (ĐỀU,
CÂN, VUÔNG)
MỘT SỐ NỘI DUNG CHUẨN BỊ:
-Đọc sách giáo khoa MÔN TIN HỌC LỚP 11, Bài tập và thực hành 7,
trang 105 – 108
-Xác định bài toán, tìm hiểu cách xử lý bài toán bằng toán học
-Hiểu tại sao cần phải định nghĩa kiểu dữ liệu có cấu trúc (DIEM,
TAMGIAC)
-Hiểu tại sao cần phải sử dụng các thủ tục, hàm như trong bài
mẫu của SGK
YÊU CẦU: chương trình được xây dựng dưới dạng các chương trình con
(thủ tục và hàm), tận dụng việc khai kiểu dữ liệu có cấu trúc
(record cho điểm vàtam giác)
1. XÁC ĐỊNH BÀI TOÁN
Input: Tọa độ3 đỉnh tam giác ABC,với A(x
A
, y
A
), B(x
B
, y
B
), C(x
C
,
y
C
)
Output: chu vi, diện tích, tính chất: đều, cân, vuông
Ngô Quốc Việt-Lập trình cơ bản 11
2. PHÂN TÍCH VÀ THIẾT KẾ
2.1. Phân tích:
-Thành phần dƣ ̃liệu:
Input: sô ́thực x
A
, y
A
, x
B
, y
B
, x
C
, y
C
Output: sô ́thực chuvi, dientich
chuỗi thông báo “tam giac can”, “tam giac deu”, “tam giac vuong”
-Thành phần xƣ ̉ly:́ Nhập tọa đô ̣đỉnh
•Tính đô ̣dài cạnh a, b, c
•Tính chu vi = a + b + c
•Tính diện tích = sqrt(p(p-a)*(p-b)*(p-c)) với p = (a+b+c)/2
•Kiểm tra tính chất
Nếu a = b = c thi ̀là “deu”
Nếu a = b hoặc b = c hoặc c = a thi ̀là “can”
Nếu a2+b2=c2 hay a2+c2=b2 hay b2+c2=a2 thi ̀là “vuong”
•Xuất chu vi, diện tích, tính chất: đều, cân, vuông tƣơng ứng
2.2. Thiết kế
-Đơn vị dƣ ̃liệu:
Input:
x
A
, y
A
, x
B
, y
B
, x
C
, y
C
= real;
Output:
chuvi, dientich: real;
deu, can, vuong: boolean;
Cải tiến: sƣ ̉dụng cách định nghĩa kiểu dƣ ̃liệu có cấu trúc (RECORD)
(*MO TA DIEM CUA TAM GIAC *)
Diem = record
x, y: real;
End;
(* MO TA TAM GIAC VOI BA DINH A,B,C *)
Tamgiac = record
A,B,C: Diem;
End;
Ngô Quốc Việt-Lập trình cơ bản 12
-Đơn vị xử lý: sƣ̉dụng các chƣơng trình con nhƣ sau
Lƣu ý: tìm hiểu sƣ̣khác biệt khi sƣ̉dụng hàm vàthủtục, cách truyền tham biến
vàtruyền tham trị trong các hàm vàthủtục của chƣơng trình này.
(*HAM TINH KHOANG CACH GIUA 2 DIEM P, Q *)
Function Kh_cach (P,Q: Diem):real;
(*THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA DO DAI CUA 3 CANH
a,b,c*)
Procedure Daicanh(var R: Tamgiac;var a,b,c: real);
(* HAM TINH CHU VI TAM GIAC R *)
Function Chuvi(var R: Tamgiac): real;
(* HAM TINH DIEN TICH CUA TAM GIAC R *)
Function Dientich(var R: Tamgiac): real;
(* THU TUC HIEN THI TOA DO 3 DINH TAM GIA LEN MAN HINH *)
Procedure Hienthi(var R: Tamgiac);
(* THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA TINH CHAT TAM
GIAC *)
Procedure Tinhchat(var R:Tamgiac;var Deu,Can,Vuong:boolean);
•Sơ đồthủtục/hàm:
Tinh_chat_tam_giac
Hienthi Chuvi Dientich Tinhchat
Daicanh
Kh_cach
A B C Chu vi Diêṇ tićh Tính chất
1 1 12 12 -9 -9 59.397 0.000 SAI
7 9 13 6 0 12.5 29.069 0.000 SAI
2 -3 3 -2 1 -1 5.886 1.500 TGIAC CAN
-1 2 3 4 3 2 10.472 4.000 TGIAC VUONG
2 30 15 20 15 40 52.802 130.000 TGIAC CAN
0 0 3 4 4 3 11.414 3.500 TGIAC CAN
0 0 3 0 1.5 2.599 9.002 3.899 TGIAC DEU
•BỘ DỮ LIỆU KIỂM TRA (EPS=1.0E-3)
Ngô Quốc Việt-Lập trình cơ bản 13
We have already seen that a string can be represented as a one-dimensional character-
type array. Each character within the string will be stored within one element of the array.
Some problems require that the characters within a string be processed individually. However,
there are many other problems which require that strings be processed as complete entities. Such
problems can be simplified considerably through the use special string-oriented library functions.
(Xem trong ví dụ 9.14. trang 254 – 259, tài liệu Programming with C, Gottfried (1996) – đã upload)
Most C compilers include library functions that allow strings to be compared, copied or
concatenated (i.e., combined, one behind another).
Nhắc lại
Ngô Quốc Việt-Lập trình cơ bản 14
SAI
ĐÚNG
ĐÚNG
Strings (i.e., character arrays) are handled
somewhat differently.The proper array size
will be assigned automatically. This will
include a provision for the null character
\0, which is automatically added at the end
of every string.
Hướng dẫn ôn tập
Vấn đề nộp đồ án – điểm thành phần
Vấn đề thi thực hành:
Thời gian, địa điểm: t.Khánh (quyết định)
Vấn đề miễn thi, cấm thi
Vấn đề thi lý thuyết:
Thời gian: 90phút – không sử dụng tài liệu
Nội dung: toàn bộ chương trình
Hình thức: trắc nghiệm – tự luận (3-5 bài tập lập trình)
Đề thi chung 2 lớp năm 1: SP tin, CNTT
Ngô Quốc Việt-Lập trình cơ bản 15
CÁM ƠN ĐÃ THEO DÕI
TP.HCM - 2011
Các file đính kèm theo tài liệu này:
- ltcb_baigiang07_6884.pdf