Bài giảng Kỹ thuật lập trình cơ bản (C++) - Chương 5 trình bày về kiểu dữ liệu có cấu trúc. Các nội dung chính trong chương này gồm có: Khai báo kiểu cấu trúc và biến cấu trúc, truy xuất dữ liệu cấu trúc, kiểu liệt kê. Mời các bạn cùng tham khảo.
Trang 1GV: ThS TRẦN NGUYỄN ANH CHI
Trường Cao đẳng Công nghệ Thông Tin Khoa Công nghệ Thông Tin
TpHCM, 02/2011
CHƯƠNG 5 KIỂU DỮ LIỆU CÓ CẤU TRÚC
PHẦN 1: KIỂU CẤU TRÚC
Đặ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 Toá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
Trang 2Đặ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 quá 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
Trang 3Khai 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
5
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>;
Khai báo (tt)
6
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;
Trang 4Khai báo (tt)
7
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>;
Khai báo (tt)
8
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;
Trang 5Truy 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 toán tử thành phần cấu trúc
hay còn gọi là toán tử chấm (dot operation)
Cú pháp
9
<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
Truy xuất dữ liệu cấu trúc (tt)
10
Trang 6Truy xuất dữ liệu cấu trúc (tt)
11
GV: ThS TRẦN NGUYỄN ANH CHI
Trường Cao đẳng Công nghệ Thông Tin Khoa Công nghệ Thông Tin
TpHCM, 02/2011
CHƯƠNG 5 KIỂU DỮ LIỆU CÓ CẤU TRÚC
PHẦN 2: KIỂU LIỆT KÊ
Trang 7 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
13
Giới thiệu
enum <tên enum>
{
<giá trị 1> ,
…
<giá trị n>, };
<tên enum> <tên biến>;
14
Ví dụ
Giới thiệu (tt)
enum Color
{
red , orange , yellow , green , cyan , blue , violet };
enum Color mycolor;
//hoac
Color mycolor;
Trang 8Lư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 {
orange , //1 yellow , //2 green , //3 cyan , //4 blue , //5 violet //6 };
16
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 {
green = 10, //10
violet = 10 //10 };
Trang 9Lư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
18
Ví dụ