Chương 5: Kiểu dữ liệu có cấu trúc
Kỹ thuật lập trình cơ bản
Trường Cao đẳng Cơng nghệ Thơng Tin
Khoa Cơng nghệ Thơng Tin
CHƯƠNG 5
KIỂU DỮ LIỆU CĨ CẤU TRÚC
PHẦN 1: KIỂU CẤU TRÚC
GV: ThS. TRẦN NGUYỄN ANH CHI
TpHCM, 02/2011
Đặt vấn đề
Thông tin 1 SV
MSSV : kiểu chuỗi
Tên SV : kiểu chuỗi
NTNS : kiểu chuỗi
Phái : ký tự
Điểm Tốn, Lý, Hóa : số thực
Yêu cầu
Lưu thông tin n SV
Truyền thông tin n SV vào hàm
2
GV: ThS. Trần Nguyễn Anh Chi
1
Chương 5: Kiểu dữ liệu có cấu trúc
Kỹ thuật lập trình cơ bản
Đặt vấn đề (tt)
Khai báo các biến để lưu trữ 1 SV
char mssv[13];
// “3.01.02.1234”
char hoten[30];
// “Nguyen Van A”
char ntns[8]; // “29/12/82”
char phai;
// „y‟ Nam, „n‟ Nữ
float toan, ly, hoa; // 8.5 9.0 10.0
Truyền thông tin 1 SV cho hàm
void nhap(char mssv[], char hoten[], char ntns[], char phai,
float toan, float ly, float hoa);
void xuat(char mssv[], char hoten[], char ntns[], char phai,
float toan, float ly, float hoa);
3
Đặt vấn đề (tt)
Nhận xét
Đặt tên biến khó khăn và khó quản lý
Truyền tham số cho hàm q nhiều
Tìm kiếm, sắp xếp, sao chép,… khó khăn
…
Ý tưởng
Gom những thơng tin của cùng 1 SV thành một kiểu dữ
liệu mới => Kiểu dữ liệu cấu trúc (struct)
4
GV: ThS. Trần Nguyễn Anh Chi
2
Chương 5: Kiểu dữ liệu có cấu trúc
Kỹ thuật lập trình cơ bản
Khai báo kiểu cấu trúc và biến cấu trúc
Cú pháp 1
//khai bao kieu cau truc va bien cau truc
struct <tên kiểu cấu trúc>
{
<kiểu dữ liệu cơ sở> <tên thành phần 1>;
…
<kiểu dữ liệu cơ sở> <tên thành phần n>;
}<tên biến>;
//khai bao bien cau truc rieng
struct <tên kiểu cấu trúc> <tên biến>;
5
Khai báo (tt)
Ví dụ 1: xây dựng cấu trúc Điểm trong không gian 2 chiều
struct DiemOxy
{
int x;
int y;
}diem1, diem2;
Hoặc
struct DiemOxy
{
int x;
int y;
};
struct DiemOxy diem1, diem2;
GV: ThS. Trần Nguyễn Anh Chi
6
3
Chương 5: Kiểu dữ liệu có cấu trúc
Kỹ thuật lập trình cơ bản
Khai báo (tt)
Cú pháp 2
typedef struct
{
<kiểu dữ liệu cơ sở> <tên thành phần 1>;
…
<kiểu dữ liệu cơ sở> <tên thành phần n>;
} <tên kiểu cấu trúc>;
<tên kiểu cấu trúc>
<tên biến>;
7
Khai báo (tt)
Ví dụ 2: xây dựng cấu trúc Sinh viên để lưu trữ thông tin
sinh viên
typedef struct
{
char MSSV[13];
char HoTen[30];
char phai;
char NTNS[8];
float Toan, Van, TrungBinh;
} SinhVien;
SinhVien
sv;
8
GV: ThS. Trần Nguyễn Anh Chi
4
Kỹ thuật lập trình cơ bản
Chương 5: Kiểu dữ liệu có cấu trúc
Truy xuất dữ liệu cấu trúc
Đặc điểm
Khơng thể truy xuất trực tiếp vào các thành phần trong
cấu trúc, mà phải thơng qua tốn tử thành phần cấu trúc
. hay cịn gọi là tốn tử chấm (dot operation)
Cú pháp
<tên biến cấu trúc>.<tên thành phần>
Ví dụ 3: Nhập vào tọa độ 2 điểm trong khơng gian 2
chiều. Tính khoảng cách giữa 2 điểm này
9
Truy xuất dữ liệu cấu trúc (tt)
10
GV: ThS. Trần Nguyễn Anh Chi
5
Chương 5: Kiểu dữ liệu có cấu trúc
Kỹ thuật lập trình cơ bản
Truy xuất dữ liệu cấu trúc (tt)
11
Trường Cao đẳng Công nghệ Thông Tin
Khoa Công nghệ Thông Tin
CHƯƠNG 5
KIỂU DỮ LIỆU CÓ CẤU TRÚC
PHẦN 2: KIỂU LIỆT KÊ
GV: ThS. TRẦN NGUYỄN ANH CHI
TpHCM, 02/2011
GV: ThS. Trần Nguyễn Anh Chi
6
Chương 5: Kiểu dữ liệu có cấu trúc
Kỹ thuật lập trình cơ bản
Giới thiệu
Khái niệm
Kiểu dữ liệu liệt kê (enum) là một kiểu dữ liệu đặc biệt,
dùng để định nghĩa một quan hệ thứ tự cho một tập hợp
hữu hạn
Cú pháp
enum <tên enum>
{
<giá trị 1> ,
…
<giá trị n>,
};
<tên enum>
<tên biến>;
13
Giới thiệu (tt)
Ví dụ
enum Color
{
red ,
orange ,
yellow ,
green ,
cyan ,
blue ,
violet
};
enum Color mycolor;
//hoac
Color mycolor;
GV: ThS. Trần Nguyễn Anh Chi
14
7
Chương 5: Kiểu dữ liệu có cấu trúc
Kỹ thuật lập trình cơ bản
Lưu ý
Các giá trị trong enum có cùng kích thước với kiểu dữ
liệu int. Mặc định, giá trị đầu tiên trong enum = 0, và
các giá trị sau tăng dần thêm 1.
enum Color
{
red ,
orange ,
yellow ,
green ,
cyan ,
blue ,
violet
};
//0
//1
//2
//3
//4
//5
//6
15
Lưu ý (tt)
Tuy nhiên, các giá trị trong enum có thể được gán theo
yêu cầu, và có thể gán trùng nhau.
enum Color
{
red = 3,
orange ,
yellow ,
green = 10,
cyan ,
blue ,
violet = 10
};
//3
//4
//5
//10
//11
//12
//10
16
GV: ThS. Trần Nguyễn Anh Chi
8
Chương 5: Kiểu dữ liệu có cấu trúc
Kỹ thuật lập trình cơ bản
Lưu ý (tt)
Vì các giá trị trong enum tương đương kiểu int, nên có
thể gán giá trị int = một giá trị trong enum.
int mausac = green; // mausac = 10
Nhưng không thể gán một giá trị trong enum = giá trị
int.
mycolor = 5;
//sai
17
Ví dụ
18
GV: ThS. Trần Nguyễn Anh Chi
9