intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Tin học cơ sở 4: Các kiểu dữ liệu tự tạo - TS. Vũ Thị Hồng Nhạn

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:24

4
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Tin học cơ sở 4: Các kiểu dữ liệu tự tạo, cung cấp cho người học những kiến thức như kiểu liệt kê ENUM; khai báo kiểu struct; nhập, xuất structure; khởi tạo structure; một số kỹ thuật thao tác trên structure; dùng struct tham số cho hàm. Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Tin học cơ sở 4: Các kiểu dữ liệu tự tạo - TS. Vũ Thị Hồng Nhạn

  1. Tin Học Cơ Sở 4: Các kiểu dữ liệu tự tạo Vũ Thị Hồng Nhạn (vthnhan@vnu.edu.vn) Human Machine Interaction Lab. Vietnam National Univ., Hanoi
  2. Nội dung Ki u li t kê ENUM Khai báo ki u struct Nh p, xu t structure Kh i t o structure M t s k thu t thao tác trên structure Dùng struct tham s cho hàm 28/03/2016 Complex Data Types Page 2
  3. Enum M t bi n có ki u enum Có th nh n đư c m t giá tr nào đó trong các giá tr đư c li t kê Tên kiểu Dấu kết thúc enum days{Mon, Tue, Wed, Thur, Fri, Sat, Sun}; Các giá trị được liệt kê Khai báo bi n có ki u enum V.d. enum days thutrongtuan; 28/03/2016 Complex Data Types Page 3
  4. Enum enum days{Sun, Mon, Tue, Wed, Thur, Fri, Sat}; Tương đương #define Sun 0 #define Mon 1 … #define Sat 6 M c đ nh ph n t đư c đánh ch m c: 0..n Vd. Sun=0,…,Sat=6 Ta có th thay đ i enum days{Sun=0, Mon=2, Tue,Wed, Thur, Fri, Sat}; Sun=0, Mon=2…, Sat=7 28/03/2016 Complex Data Types Page 4
  5. Enum enum days myday; //tương đương int myday for(myday= Sun; myday
  6. enum Ví dụ 0 Tính ti n lương 1 tu n cho m t nhân viên, Lương m t ngày = lương cơ b n * s gi làm Tr th 7, CN đư c tính ph tr i (tương ng 1.5 và 2 l n cơ b n) Input Nh p vào lương cơ b n Nh p gi làm vi c t th 2~Ch nh t Output T ng lương c a c tu n 28/03/2016 Complex Data Types Page 6
  7. enum Ví dụ 0 #define PHUTROI_T7 1.5 #define PHUTROI_CN 2.0 enum days{CHUNHAT, THUHAI, THUBA, THUTU, THUNAM, THUSAU, THUBAY}; typedef enum days ngaytrongtuan; //định nghĩa lại //khai báo hàm xác định ngày mai là thứ mấy ngaytrongtuan tomorrow(weekday); int main(){ int hour; float basePay, dailySalary, totalSalary=0.0; char cDay[][10]={"Chu Nhat","Thu Hai","Thu Ba","Thu Tu","Thu Nam","Thu Sau","Thu Bay"}; ngaytrongtuan day; printf("Nhap vao luong co ban: "); scanf("%f", &basePay); printf("Nhap vao gio lam viec tu Thu 2 toi Chu Nhat:\n"); 28/03/2016 Complex Data Types Page 7
  8. enum Ví dụ 0 day=CHUNHAT; do{ day = tomorrow(day); printf(“Nhập vào giờ làm việc của thứ %s:", cDay[day]); scanf("%d", &hour); switch(day){ case THUHAI: case THUBA: case THUTU: case THUNAM: case THUSAU: dailySalary = basePay; break; case THUBAY: dailySalary =basePay * PHUTROI_T7; break; case CHUNHAT: dailySalary = basePay*PHUTROI_CN; break; } totalSalary += dailySalary* hour; }while(day!=CHUNHAT); printf("Tong luong tuan =%8.2f VNDong\n",totalSalary); getch(); return 0; } 28/03/2016 Complex Data Types Page 8
  9. enum Ví dụ 0 //hàm chọn ngày kế tiếp ngaytrongtuan tomorrow(ngaytrongtuan today){ ngaytrongtuan nextday; switch(today){ case CHU_NHAT : nextday= THU_HAI; break; case THU_HAI : nextday = THU_BA; break; case THU_BA : nextday = THU_TU; break; case THU_TU : nextday = THU_NAM; break; case THU_NAM : nextday = THU_SAU; break; case THU_SAU : nextday = THU_BAY; break; case THU_BAY : nextday = CHU_NHAT; break; } return (nextday); } 28/03/2016 Complex Data Types Page 9
  10. Cấu trúc struct M ng ch có th lưu thông tin có cùng ki u d li u Struct cho phép tích h p các bi n v i nhi u ki u khác nhau Đư c đ nh nghĩa v i t khoa: struct Cách khai báo bi n ki u structure Tên struct int main(){ struct nhanvien s; struct nhanvien{ s.manv=201201; int manv; s.hoten=“Lauren Burns”; char hoten[28] } }; Các thành phần của struct Tham chiếu tới các Kết thúc bởi dấu chấm phay phần tử trong structure 28/03/2016 Complex Data Types Page 10
  11. Ví dụ 1 Nhâp và in ra danh sách nhân viên gồm mã nhân viên và họ tên #include //Nhập danh sách nhân viên #include for(i=0; i
  12. Structure & typedef Đ tránh t khóa struct, ta s d ng khai báo v i typdef typedef struct { int manv; char hoten[28] }nhanvien; 28/03/2016 Complex Data Types Page 12
  13. Ví dụ 2 Khởi tạo structure Nh p vào bi n s xe, cho bi t xe đó đăng ký t nh nào #include printf("Nhap vao ma so tinh: "); #include scanf(“%d”, n); #include #define MAX 6 while(i
  14. Structure lồng nhau Nh p và in danh sách nhân viên M i nhân viên có: mã nhân viên, h tên, gia c nh Gia c nh ph n ánh: tên v /ch ng, s con T o structure l ng nhau 28/03/2016 Complex Data Types Page 14
  15. Structure lồng nhau #include typedef struct{ #include char vochongname[30]; #include int socon; } giacanh; #define MAX 100 typedef struct{ int manv; char ten[30]; giacanh thanhvien; } nhanvien; 28/03/2016 Complex Data Types Page 15
  16. Structure lồng nhau int main(){ printf("Nhap ten: "); nhanvien nvlist[MAX]; gets(nvlist[i].ten); char ctemp[10]; int i, n; printf("Nhap ten vo/chong: "); printf("Nhap vao tong so nhan vien: "); gets(nvlist[i].thanhvien.vochongname); gets(ctemp); n= atoi(ctemp); printf("So con: "); gets(ctemp); //Nhập danh sách nhân viên nvlist[i].thanhvien.socon = for(i=0;i
  17. Structure lồng nhau //Hiển thị danh sách nhân viên ra màn hình printf("\n-----------------------------------------\n"); printf(" DANH SACH NHAN VIEN \n"); printf("MA SO \tHO TEN \t\t\tVO/CHONG \tSO CON\n"); for(i=0; i
  18. Structure lồng nhau 28/03/2016 Complex Data Types Page 18
  19. Truyền struct sang hàm Dạng tham trị typedef struct{ C coi structure như nh ng float x; ki u d li u sơ khai khác float y; truy n struct sang hàm dư i } point; d ng tham tr Ví d (referencestruct.c) void reset(point p){ p.x = p.y = 0; } void main(){ point a = {12.0, 42.0};//khởi tạo point b = a; reset(a); b.x = 10; printf("a: %5.1f, %5.1f\n", a.x, a.y); printf("b: %5.1f, %5.1f\n", b.x, b.y); } 28/03/2016 Complex Data Types Page 19
  20. Ví dụ 3 Truyền vào hàm qua tham chiếu Nh p và in ra danh sách #include //Định nghĩa các hàm #include #include void input(nhanvien nv[], int n){ char ctemp[10]; int i=0; #define MAX 20 for(i=0; i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2