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

*Bài tập 3

ế ố ế ươ ố 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