Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
1,27 MB
Nội dung
LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH NGHĨA Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT NỘI DUNG Giới thiệu Định nghĩa kiểu cấu trúc Khai báo kiểu cấu trúc Thao tác biến cấu trúc Con nhỏ kiểu cấu trúc Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT GIỚI THIỆU Kiểu cấu trúc (Structure) là: Kiểu liệu bao gồm nhiều thành phần có kiểu khác nhau, Mỗi thành phần gọi trường (field) Sự khác biệt kiểu cấu trúc kiểu mảng là: Các phần tử mảng kiểu Các phần tử kiểu cấu trúc có kiểu khác Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT ĐỊNH NGHĨA KIỂU CẤU TRÚC Cách 1: struct ; Chú ý: Tên cấu trúc tên trường đặt theo quy tắc đặt tên biến Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT ĐỊNH NGHĨA KIỂU CẤU TRÚC Ví dụ: Ngày tháng struct NgayThang { unsigned char Ngay; unsigned char Thang; unsigned int Nam; }; Phân số struct Phanso { int tu; int mau; }; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT ĐỊNH NGHĨA KIỂU CẤU TRÚC Cách 2: Sử dụng từ khóa typedef typedef struct { ; ; ; } ; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT ĐỊNH NGHĨA KIỂU CẤU TRÚC Ví dụ: Kiểu Ngày tháng typedef struct { unsigned char Ngay; unsigned char Thang; unsigned int Nam; } NgayThang; Phân số typedef struct { int tu; int mau; } Phanso; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT ĐỊNH NGHĨA KIỂU CẤU TRÚC Ví dụ: Khai báo đối tượng sinh viên struct SinhVien typedef struct { { char MSSV[10]; char MSSV[10]; char HoTen[40]; char HoTen[40]; struct NgayThang NgaySinh; NgayThang NgaySinh; int Phai; int Phai; char DiaChi[40]; char DiaChi[40]; }; } SinhVien; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT KHAI BÁO BIẾN CẤU TRÚC Khai báo biến kiểu cấu trúc giống khai báo biến kiểu sở dạng: struct [, …]; Hoặc [, …]; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT KHAI BÁO BIẾN CẤU TRÚC Khai báo biến kiểu cấu trúc giống khai báo biến kiểu sở dạng: struct [, …]; Hoặc [, …]; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT KHAI BÁO BIẾN CẤU TRÚC Ví dụ: Khai báo biến struct NgayThang NgaySinh; struct SinhVien SV; Hoặc NgayThang NgaySinh; SinhVien SV; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CÁC THAO TÁC TRÊN CÁC BIẾN KIỂU CẤU TRÚC Truy xuất đến trường biến cấu trúc: Cú pháp: . Chú ý: Các biến cấu trúc gán cho Với biến kiểu cấu trúc ta thực thao tác sau đây: Sử dụng hàm xuất nhập biến cấu trúc Các phép toán quan hệ, phép toán số học logic Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CÁC THAO TÁC TRÊN CÁC BIẾN KIỂU CẤU TRÚC Khởi tạo biến cấu trúc: Việc khởi tạo cấu trúc thực lúc khai báo biến cấu trúc Các trường cấu trúc khởi tạo đặt dấu { }, chúng phân cách dấu phẩy (,) Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CÁC THAO TÁC TRÊN CÁC BIẾN KIỂU CẤU TRÚC Ví dụ: Khởi tạo biến cấu trúc NgaySinh: struct NgayThang NgaySinh ={29, 8, 1986}; struct NgayThang { unsigned char Ngay; unsigned char Thang; unsigned int Nam; } NgaySinh={29,8.1986}; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Khai báo: Việc khai báo biến trỏ kiểu cấu trúc tương tự khai báo biến trỏ khác, nghĩa đặt thêm dấu * vào phía trước tên biến Cú pháp: struct * ; Ví dụ: Con trỏ cấu trúc kiểu NgayThang sau: struct NgayThang *p; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Sử dụng trỏ kiểu cấu trúc: Trước thao tác với trỏ cần: Cấp phát vùng nhớ cho (new malloc calloc) Hoặc, cho quản lý địa biến cấu trúc Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Ví dụ: Sau khởi tạo giá trị cấu trúc: struct NgayThang Ngay = {29,8,1986}; struct NgayThang *p; p = &Ngay; /* lúc biến trỏ p chứa địa Ngay*/ Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Ví dụ: Sau khởi tạo giá trị cấu trúc: struct NgayThang Ngay = {29,8,1986}; struct NgayThang *p; p = &Ngay; /* lúc biến trỏ p chứa địa Ngay*/ Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Ví dụ: Sau khởi tạo giá trị cấu trúc: struct NgayThang Ngay = {29,8,1986}; struct NgayThang *p; p = &Ngay; /* lúc biến trỏ p chứa địa Ngay*/ Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Ví dụ: Sinhvien *p, *q ; p = new Sinhvien[1]; q = new Sinhvien[60]; *p thay cho biến kiểu sinh viên q dùng để quản lý danh sách có tối đa 60 sinh viên (tương đương biến lop[60], ví dụ *(p+10) sinh viên thứ 10 danh sách) Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Ví dụ: Sinhvien *p, *q ; p = new Sinhvien[1]; q = new Sinhvien[60]; *p thay cho biến kiểu sinh viên q dùng để quản lý danh sách có tối đa 60 sinh viên (tương đương biến lop[60], ví dụ *(p+10) sinh viên thứ 10 danh sách) Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Truy xuất đến thành phần cấu trúc trỏ trỏ cấu trúc Toán tử dấu mũi tên (->: dấu - dấu >) Phép toán * để truy cập vùng liệu quản lý trỏ cấu trúc để lấy thông tin cần thiết Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Ví dụ: #include #include typedef struct { unsigned char Ngay; unsigned char Thang; unsigned int Nam; } NgayThang; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CON TRỎ CẤU TRÚC Ví dụ: int main() { NgayThang Ng={29,8,1986}; NgayThang *p; p=&Ng; printf("Truy cap binh thuong %d-%d-%d\n“, Ng.Ngay,Ng.Thang,Ng.Nam); printf("Truy cap qua tro %d-%d-%d\n“, p->Ngay,p>Thang,p->Nam); printf("Truy cap qua vung nho tro %d-%d-%d\n“, (*p).Ngay,(*p).Thang,(*p).Nam); getch(); return 0; } Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT BÀI TẬP THỰC HÀNH Bài Xem phân số cấu trúc có hai trường tử số mẫu số Hãy viết chương trình thực phép tốn cộng, trừ, nhân, chia hai phân số (Các kết phải tối giản) Bài Viết chương trình nhập vào danh sách điểm thi theo 10, sau chuyển sang thang điểm Theo quy tắc: Từ 8.5 đến 10: A + Từ đến