LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH...

25
LẬP TRÌNH CƠ BẢN Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH NGHĨA 1

Transcript of LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH...

Page 1: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

LẬP TRÌNH CƠ BẢN

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH NGHĨA

LẬP TRÌNH CƠ BẢN

1

Page 2: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� 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 trên biến cấu trúc

NỘI DUNG

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

� Thao tác trên biến cấu trúc

� Con nhỏ kiểu cấu trúc

Page 3: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Kiểu cấu trúc (Structure) là:� Kiểu dữ liệu bao gồm nhiều thành phần cókiểu khác nhau,

� Mỗi thành phần được gọi là một trường (field)

� Sự khác biệt giữa kiểu cấu trúc và kiểu

GIỚI THIỆU

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

� Sự khác biệt giữa kiểu cấu trúc và kiểumảng là:� Các phần tử của mảng là cùng kiểu

� Các phần tử của kiểu cấu trúc có thể có kiểukhác nhau.

Page 4: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Cách 1:struct <Tên cấu trúc>{<Kiểu> <Trường 1> ;<Kiểu> <Trường 2> ;

ĐỊNH NGHĨA KIỂU CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

<Kiểu> <Trường 2> ;...<Kiểu> <Trường n> ;

};

� Chú ý: Tên cấu trúc và tên trường đặt theoquy tắc đặt tên biến

Page 5: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ:� Ngày thángstruct NgayThang

{

unsigned char Ngay;

unsigned char Thang;

ĐỊNH NGHĨA KIỂU CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

unsigned char Thang;

unsigned int Nam;

};

� Phân sốstruct Phanso

{ int tu;

int mau;

};

Page 6: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Cách 2: Sử dụng từ khóa typedeftypedef struct

{

<Kiểu> <Trường 1> ;

ĐỊNH NGHĨA KIỂU CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

<Kiểu> <Trường 2> ;

...

<Kiểu> <Trường n> ;

} <Tên cấu trúc>;

Page 7: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ:� Kiểu Ngày thángtypedef struct

{

unsigned char Ngay;

unsigned char Thang;

ĐỊNH NGHĨA KIỂU CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

unsigned char Thang;

unsigned int Nam;

} NgayThang;

� Phân sốtypedef struct

{ int tu;

int mau;

} Phanso;

Page 8: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ: Khai báo đối tượng sinh viên

ĐỊNH NGHĨA KIỂU CẤU TRÚC

struct SinhVien

{

char MSSV[10];

char HoTen[40];

struct NgayThang NgaySinh;

int Phai;

typedef struct

{

char MSSV[10];

char HoTen[40];

NgayThang NgaySinh;

int Phai;

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

int Phai;

char DiaChi[40];

};

int Phai;

char DiaChi[40];

} SinhVien;

Page 9: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Khai báo biến kiểu cấu trúc cũng giốngnhư khai báo các biến kiểu cơ sở dướidạng:

struct <Tên cấu trúc> <Biến 1>[, <Biến 2>…];

KHAI BÁO BIẾN CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

[, <Biến 2>…];

� Hoặc<Tên cấu trúc> <Biến 1> [, <Biến2>…];

Page 10: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Khai báo biến kiểu cấu trúc cũng giốngnhư khai báo các biến kiểu cơ sở dướidạng:

struct <Tên cấu trúc> <Biến 1>[, <Biến 2>…];

KHAI BÁO BIẾN CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

[, <Biến 2>…];

� Hoặc<Tên cấu trúc> <Biến 1> [, <Biến2>…];

Page 11: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ: Khai báo biếnstruct NgayThang NgaySinh;

struct SinhVien SV;

Hoặc

KHAI BÁO BIẾN CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

NgayThang NgaySinh;

SinhVien SV;

Page 12: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Truy xuất đến từng trường của biến cấu trúc:Cú pháp:

<Biến cấu trúc>.<Tên trường>

� Chú ý:

Các biến cấu trúc có thể gán cho nhau.

CÁC THAO TÁC TRÊN CÁC BIẾN KIỂU CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

� Các biến cấu trúc có thể gán cho nhau.

� Với các biến kiểu cấu trúc ta không thể thựchiện được các thao tác sau đây:

� Sử dụng các hàm xuất nhập trên biến cấu trúc.

� Các phép toán quan hệ, các phép toán số học và logic.

Page 13: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Khởi tạo biến cấu trúc:� Việc khởi tạo cấu trúc có thể được thực hiện trong lúckhai báo biến cấu trúc.

� Các trường của cấu trúc được khởi tạo được đặtgiữa 2 dấu { và }, chúng được phân cách nhau bởidấu phẩy (,).

CÁC THAO TÁC TRÊN CÁC BIẾN KIỂU CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

dấu phẩy (,).

Page 14: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ: Khởi tạo biến cấu trúc NgaySinh:struct NgayThang NgaySinh ={29, 8, 1986};

hoặcstruct NgayThang

CÁC THAO TÁC TRÊN CÁC BIẾN KIỂU CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

struct NgayThang

{

unsigned char Ngay;

unsigned char Thang;

unsigned int Nam;

} NgaySinh={29,8.1986};

Page 15: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Khai báo:� Việc khai báo một biến con trỏ kiểu cấu trúccũng tương tự như khi khai báo một biến contrỏ khác, nghĩa là đặt thêm dấu * vào phíatrước tên biến.

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

trước tên biến.

� Cú pháp: struct <Tên cấu trúc> * <Tên biến con trỏ>;

� Ví dụ: Con trỏ cấu trúc kiểu NgayThang như sau:

struct NgayThang *p;

Page 16: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Sử dụng các con trỏ kiểu cấu trúc: Trước khi thao tác với con trỏ cần: � Cấp phát một vùng nhớ cho nó (new hoặc malloc hoặc calloc)

Hoặc, cho nó quản lý địa chỉ của một biến cấu

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

� Hoặc, cho nó quản lý địa chỉ của một biến cấu trúc nào đó.

Page 17: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ:� Sau khi khởi tạo giá trị của cấu trúc:

struct NgayThang Ngay = {29,8,1986};struct NgayThang *p;

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

struct NgayThang *p;

p = &Ngay; /* lúc này biến con trỏ p đã chứa địa chỉ của Ngay*/

Page 18: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ:� Sau khi khởi tạo giá trị của cấu trúc:

struct NgayThang Ngay = {29,8,1986};struct NgayThang *p;

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

struct NgayThang *p;

p = &Ngay; /* lúc này biến con trỏ p đã chứa địa chỉ của Ngay*/

Page 19: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ:� Sau khi khởi tạo giá trị của cấu trúc:

struct NgayThang Ngay = {29,8,1986};struct NgayThang *p;

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

struct NgayThang *p;

p = &Ngay; /* lúc này biến con trỏ p đã chứa địa chỉ của Ngay*/

Page 20: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ:Sinhvien *p, *q ;

p = new Sinhvien[1];

q = new Sinhvien[60];

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

� *p có thể thay cho một biến kiểu sinh viên

� q có thể được dùng để quản lý một danh sáchcó tối đa là 60 sinh viên (tương đương biếnlop[60], ví dụ khi đó *(p+10) là sinh viên thứ10 trong danh sách).

Page 21: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ:Sinhvien *p, *q ;

p = new Sinhvien[1];

q = new Sinhvien[60];

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

� *p có thể thay cho một biến kiểu sinh viên

� q có thể được dùng để quản lý một danh sáchcó tối đa là 60 sinh viên (tương đương biếnlop[60], ví dụ khi đó *(p+10) là sinh viên thứ10 trong danh sách).

Page 22: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Truy xuất đến thành phần cấu trúc được trỏ bởi con trỏ cấu trúc.� Toán tử dấu mũi tên (->: dấu - và dấu >).

� Phép toán * để truy cập vùng dữ liệu đangđược quản lý bởi con trỏ cấu trúc để lấy thông

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

được quản lý bởi con trỏ cấu trúc để lấy thôngtin cần thiết.

Page 23: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ: #include<conio.h>

#include<stdio.h>

typedef struct

{

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

{

unsigned char Ngay;

unsigned char Thang;

unsigned int Nam;

} NgayThang;

Page 24: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Ví dụ: int main()

{

NgayThang Ng={29,8,1986};

NgayThang *p;

p=&Ng;

CON TRỎ CẤU TRÚC

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

p=&Ng;

printf("Truy cap binh thuong %d-%d-%d\n“, Ng.Ngay,Ng.Thang,Ng.Nam);

printf("Truy cap qua con tro %d-%d-%d\n“, p->Ngay,p->Thang,p->Nam);

printf("Truy cap qua vung nho con tro %d-%d-%d\n“, (*p).Ngay,(*p).Thang,(*p).Nam);

getch();

return 0;

}

Page 25: LẬP TRÌNH CƠ BẢN KIỂU CẤU TRÚC DO NGƯỜI DÙNG ĐỊNH …fit.mta.edu.vn/files/FileMonHoc/Microsoft PowerPoint - Bai7_KieuCauTruc.pdf · Giới thiệu Định nghĩa

� Bài 1. Xem một phân số là một cấu trúc có hai trường làtử số và mẫu số. Hãy viết chương trình thực hiện cácphép toán cộng, trừ, nhân, chia hai phân số. (Các kết quảphải tối giản).

� Bài 2. Viết chương trình nhập vào một danh sách điểm thitheo thanh 10, sau đó chuyển sang thang điểm 4. Theo

BÀI TẬP THỰC HÀNH

Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT

theo thanh 10, sau đó chuyển sang thang điểm 4. Theoquy tắc:� Từ 8.5 đến 10: A + Từ 7 đến <8.5: B +Từ 5.5 đến <7: C

� Từ 4 đến <5.5: D + <4: F

� Bai 3. Nhập vào một danh sách sinh viên và in ra danh sách đó.