Kiểu dữ liệu có cấu trúc
*TRẦN MINH THÁI *minhthai@huflit.e du.vn
1
*Khái niệm
́ ́ ́ ̃ ̀ ự ữ ệ ươ ư ̣ ̉ ̣
̃ ́ ́ ̀ ́ ̃ ư ̣ ̉ ̣ ̉
̀ ̀ ̃ ́ ̀ ̀ ̃ ư ư ợ ̣ ̉ ̣
ể Ki u d li u có câ u tru c th c châ t la môt kiêu d liêu do ng i ̀ ơ du ng đinh nghi a bă ng ca ch gom nho m ca c kiêu d liêu c ban ́ co să n trong C# tha nh môt kiêu d liêu ph c h p nhiê u tha nh phâ ǹ *Khai báo
struct tênstruct {
ộ public khai báo các thu c tính;
2
}
*Kiểu dữ liệu có cấu trúc *Ví d khai báo ki u d li u l u thông ể ữ ệ ư ụ ủ tin c a ngày: struct sDate
{
public string thu;
public int ngay;
public int thang;
public int nam;
3
}
*Truy cập các thuộc tính cấu trúc
ế
ể ấ
ộ
*Bi n ki u c u trúc tênstruct tênbi n;ế tênbi nế .thu ctính; *Ví dụ
sDate x; x.ngay = 5;
4
̀ ̀ ́ ươ ̣ ̣ ̣ ̉ ̣ ̉ ng tri nh nhâp va o toa đô hai điêm trong măt phăng
́ ̀ ̉ ̣ ̣
Ví d : ụ Viê t ch ̀ va ti nh tông hai toa đô na y struct sDiem {
public int x; public int y;
5
}
static void Nhap (out sDiem d) {
Console.WriteLine(“Nhap vao toa do diem:”); Console.Write(“Hoanh do : “); d.x = int.Parse(Console.ReadLine()); Console.Write(“Tung do : ”); d.y = int.Parse(Console.ReadLine());
6
}
static void Xuat (sDiem d) {
Console.WriteLine(“Toa do diem : ({0}, {1})“, d.x, d.y);
} static sDiem Tong (sDiem d1, sDiem d2) {
sDiem temp; temp.x = d1.x + d2.x ; temp.y = d1.y + d2.y ; return temp;
7
}
static void Main (string []args) {
sDiem A , B, AB;//khai bao 3 diem A, B, AB; Nhap (out A); Xuat (A); Nhap (out B); Xuat (B); AB = Tong (A, B); Console.WriteLine("Tong toa do cua hai diem vua nhap:”); Xuat (AB);
}
8
*Bài tập 1
ộ ồ ậ ế ủ ng trình nh p vào thông tin c a m t sinh viên g m:
ế
ứ ể ế ươ Vi t ch *Mã s sinh viên ố *H và tên ọ *Đi m gi a k (GK) ể ữ ỳ *Đi m th c hành (TH) ự ể *Đi m lý thuy t (LT) ể ổ Tính đi m t ng k t môn theo công th c:
9
GK*10%+TH*30%+LT*60%
*Bài tập 2
ậ
ế
ươ
t ch
ờ ờ
ờ
ơ
Vi ng trình nh p vào 2 th i gian t1 ồ , phút và và t2 (thông tin th i gian g m: gi ữ ả giây); tính kho ng cách gi a t1 và t2 (đ n ằ ị v tính b ng giây)
10
*Mảng cấu trúc
*Ca ch khai ba o t ́
̀ ́ ươ ự ư ̉ ̣ ng t ́ ̀ nh mang môt chiê u (KDL la KDL co
câ u tru c).
́ ́ ́ ̀ ̣ ̉ ̣ ̉
̀ ́ ̣ ̉ ̉ ̉
̃ ̀ ̀ ́ ̀ ̣ ̉ ̣
ư ́ ̀ ̀ ́ ̀ ́ ̀ ơ ̉ ̣ ̉ ̣ ̉
*Ca ch truy câp phâ n t ̃ ư ử trong mang cu ng nh truy câp trên mang ̀ ́ ́ ̀ ử ư co kiêu câ u tru c nên phai chi môt chiê u. Nh ng do t ng phâ n t ́ ̀ ư c la phai truy câp đê n tha nh đinh ro câ n lâ y tha nh phâ n na o, t ̃ ư phâ n cuô i cu ng co kiêu la d liêu c ban (xem lai bang ca c KDL c ban)
11
̀ ́ ơ ̉
*Nguyên tắc lập trình trên mảng cấu trúc
̀
́
́
̃
ư
ươ
̀
́
̀
́
̀ ̀
ư
́ ư ươ
̉ ̣
̀
́
́
ự
̣
́
́
́
̣ ̉
́
́
́
ử ử
̉ ̣
̀
́
̀
̀
ự
12
̣ ̣ ̉
́ ng Do kiêu d liêu co câ u tru c th ́ ̀ ch a râ t nhiê u tha nh phâ n nên khi viê t ̀ ng tri nh loai na y ta câ n l u y : ch *Xây d ng ha m x ly cho môt kiêu câ u ử tru c.́ *Muô n x ly cho mang câ u tru c, ta goi ́ ̃ ̀ lai ha m x ly cho môt kiêu câ u tru c đa ượ đ c xây d ng bă ng ca ch du ng vo ng lăp.
̣
ế
ậ
ả
*Ví dụ ố
Vi
t hàm nh p vào m ng các phân s
struct sPhanSo { public int tu; public int mau;
}
13
*Ví dụ
static void Nhap(out sPhanSo ps) {
Console.Write("Nhap tu so: ");
ps.tu = int.Parse(Console.ReadLine());
ps.mau = int.Parse(Console.ReadLine());
14
Console.Write(“Nhap mau so: “); }
*Ví dụ
static void Nhap (sPhanSo []dsps, int n)
{
for(int i=0; i 15 ế ố ế ươ ố
t phân s ậ
ả
ậ ặ ặ ả
ng trình nh p vào m ng các phân s , cho bi
ấ
ng trình nh p vào danh sách các m t hàng, in ra m t t ch
ị ớ
ế
t ch ế ồ ặ
t thông tin m t hàng g m: 16 3.1. Vi
có giá tr l n nh t trong m ng
ươ
3.2. Vi
ấ ứ
hàng có xu t x “VietNam”, bi
ặ
Mã m t hàng
ặ
Tên m t hàng
ơ
Đ n giá
ấ ứ
Xu t x*Bài tập 3