1. Trang chủ
  2. » Công Nghệ Thông Tin

bài giảng struct và bài toán kết nối dữ liệu

36 477 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Struct và bài toán duyệt danh sách tìm phần tử đầu tiên
Trường học Đại Học Hoa Sen
Thể loại bài giảng
Định dạng
Số trang 36
Dung lượng 1,32 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

bài viết giúp cho các bạn Trình bày được vai trò của việc xây dựng dữ liệu trong lập trình,Phân biệt và hiểu được kiểu dữ liệu căn bản và nâng cao trong các ngôn ngữ lập trình,Trình bày và áp dụng được STRUCT trong việc xây dựng dữ liệu mới Áp dụng được bài toán duyệt danh sách tìm phần tử đầu tiên trong việc tổ hợp dữ liệu từ các file khác nhau

Trang 1

Cùng Đại học Hoa Sen xây dựng tương lai



Struct và Bài Toán Duyệt Danh Sách Tìm Phần Tử Đầu Tiên

1

Trang 3

Cùng Đại học Hoa Sen xây dựng tương lai



Dữ liệu và thuật giải

Chương trình = Thuật giải + Dữ liệu

 Hai bộ môn liên quan đến Lập trình: Kỹ thuật lập trình (Thuật giải) + Hệ thống thông tin (Dữ liệu)

 Vị trí “Quản lí dự án” khi đi phỏng vấn luôn bị xoáy xâu vào 2 chủ đề căn bản về lập trình:

UML (Kỹ thuật thiết kế xây dựng các ĐỐI TƯỢNG + CHỨC NĂNG)

CSDL (Kỹ thuật thiết kế xây dựng CSDL )

3

Trang 4

Bài toán xây dựng Dữ liệu

 Phải đảm bảo những yêu cầu sau:

“Giống thật”: Mô tả chính xác đối tượng và các mối quan

hệ ràng buộc của chúng

“Hiệu quả”: Nhanh, an toàn, dễ dàng mở rộng, …

“Giống thật”: Là một vấn đề nan giải  Các HTTT, Ngôn

ngữ lập trình đều hướng tới

Assembly  Ngôn ngữ C đơn giản  C++  Java, C# :

Càng ngày càng giúp LẬP TRÌNH VIÊN mô tả THẾ GIỚI

THỰC dễ dàng hơn

Các biến số  Các file dữ liệu CSDL (kiểu bảng)  XML: Đưa ràng buộc vào để mô tả THẾ GIỚI THỰC

Trang 5

Cùng Đại học Hoa Sen xây dựng tương lai



Kiểu dữ liệu căn bản

Kiểu dữ liệu căn bản: Là các kiểu dữ liệu: Đơn giản, phổ

biến nhất  Được cài sẵn

Ví dụ: C có các kiểu cơ bản như: byte, int, char, float, double

(Không có các kiểu: string, list, set, …)

C#: Có thêm rất nhiều kiểu dữ liệu căn bản khác như: string, list, hash, …

Câu hỏi: Thế giới thực phức tạp  Các kiểu cơ bản không bao giờ đủ Làm thế nào đây ???

5

Trang 6

Kiểu dữ liệu nâng cao

Kiểu dữ liệu nâng cao: Cho phép người dùng tự định nghĩa

kiểu dữ liệu riêng cho mình

 Ngôn ngữ lập trình càng mạnh  KHẢ NĂNG TỰ ĐỊNH

NGHĨA kiểu dữ liệu mới càng dễ dàng !!!

 Ngôn ngữ C cung cấp 3 phương tiện căn bản nhất:

Struct (Tìm hiểu bài giảng này)

Mảng (Array)  Bài giảng tuần 5

Con trỏ  Bài giảng tuần 6

 Ngôn ngữ C++, C#, Java lại cung cấp CLASS, KẾ THỪA, … mạnh mẽ hơn (Môn Lập trình hướng đối tượng)

Trang 7

Cùng Đại học Hoa Sen xây dựng tương lai



Khai báo kiểu dữ liệu mới trong C

 Dùng từ khóa typedef

 Cách dùng:

typedef <Định nghĩa dữ liệu> Tên_dữ_liệu_mới;

typedef int MATK, MAKH;

typedef long SOTIEN;

/* now declare some objects */

MATK maTK;

SOTIEN s;

Trang 8

Khái niệm về Struct (I)

 Dữ liệu mô tả cùng một sự vật LUÔN ĐI VỚI NHAU  Bởi

vì chúng nói lên các thuộc tính khác nhau của sự vật

 Ví dụ:

 Tài khoản ngân hàng  mã số tài khoản, số tiền tài khoản,

mã số khách hàng, lãi suất  LUÔN ĐI VỚI NHAU

 Sinh viên  Tên, ngày sinh, giới tính, khóa học, ngành theo học LUÔN ĐI VỚI NHAU

 Những thuộc tính của một sự vật LUÔN ĐI VỚI NHAU

GOM LẠI  Kiểu dữ liệu mới = STRUCT  biểu diễn sự vật đó !!!

Trang 9

Cùng Đại học Hoa Sen xây dựng tương lai



Định nghĩa Struct

 Trong ngôn ngữ C các thuộc tính sau mô tả cùng sự vật A:

Kiểu_dữ liệu_1 Tên_thuộc_tính_1

Kiểu_dữ_liệu_n Tên_thuộc_tính_n

 Gom chúng lại thành kiểu dữ liệu mới struct A:

struct A{

Kiểu_dữ liệu_1 Tên_thuộc_tính_1

Kiểu_dữ liệu_n Tên_thuộc_tính_n} ;

9

Trang 10

 Tài khoản có 4 thuộc tính:

masoTK, masoKH, sotienTK, laisuat

struct Tai khoan{

Trang 11

Cùng Đại học Hoa Sen xây dựng tương lai

Tênstruct.Tênbiếnthànhphần

Ví dụ:

sinhvien.hoten sinhvien.diemtb

Truy xuất các phần tử struct

Trang 12

Sử dụng Struct với biến số

struct Toado toado;

Trang 13

Cùng Đại học Hoa Sen xây dựng tương lai



Struct dùng với typedef

Khai báo struct với typedef để có thể dùng như 1 kiểu dữ liệu

Trang 14

Lưu ý về Struct

Struct  biểu diễn sự vật  Nhiều thuộc tính gộp thành

 Thuộc tính của Struct : Kiểu dữ liệu đã được định nghĩa trước (float, int, char, long, …) hoặc các kiểu dữ liệu mới định nghĩa thêm (Struct có thể nằm lồng trong Struct !!!)

 Muốn gọi thuộc tính của Struct chỉ cần dùng phép toán CHẤM

(.)

 Dùng typedef để rút ngắn lại cách gọi struct cũng như các

kiểu dữ liệu nâng cao khác

Trang 15

Cùng Đại học Hoa Sen xây dựng tương lai



Ví dụ nâng cao về Struct I

 Hãy xây dựng chương trình dạy HÌNH HỌC cho các bạn học sinh cấp II

 Cần mô tả các đối tượng: Điểm, Đoạn thẳng, Tam giác, …

 Khai báo như sau:

typedef struct typedef struct typedef struct

{ { {

int X,Y; DIEM A,B; DIEM A,B,C;

}DIEM; }DoanThang; }TAMGIAC;

DIEM a,b,c; TAMGIAC ABC;

a.X=3; a.Y=7; b.X=4; b.Y=9; c.X=0; c.Y=9;

ABC.A = a; ABC.B = b; ABC.C = c;

15

Trang 16

Cùng Đại học Hoa Sen xây dựng tương lai



Ví dụ nâng cao về Struct II

 Hãy kiểm tra tam giác ABC có vuông góc Tại A không?

int VUONG_GOC_A(TAMGIAC ABC)

Trang 17

Cùng Đại học Hoa Sen xây dựng tương lai

Trang 18

scanf(“%d”, &sv -> Tuoi);

printf(“%20s %3d”, sv -> Hoten, sv -> Tuoi);

getch();

}

Con trỏ struct

Trang 19

Cùng Đại học Hoa Sen xây dựng tương lai

100 sinhvien

Trang 20

Bài Tập Điểm Cộng Về Nhà

1 Hãy kiểm tra tam giác ABC có phải là tam giác

vuông không?

2 Haỹ tính diện tích, chu vi tam giác, …

3 Hãy xây dựng hình thoi, hình tròn, …

 TẤT CẢ THẾ GIỚI HÌNH HỌC LỚP 7-8-9 đều có

thể mô phỏng được bằng STRUCT !!!

Trang 21

Cùng Đại học Hoa Sen xây dựng tương lai



Bài toán tổ hợp dữ liệu

 Bài toán: Ngân hàng ABC chứa danh sách các tài khoản trong file taikhoan.txt theo đúng mô tả của coursework!!! Cứ sau

một thời gian, khắp nơi lại gửi về cho trung tâm được tổng hợp thành 1 danh sách các giao dịch trong file giaodich.txt theo

đúng mô tả của coursework Chúng ta giả sử thêm rằng

KHÔNG CÓ 2 giao dịch nào trong file giao dịch trùng tài

khoản Hãy:

- Trả về danh sách các giao dịch thành công/thất bại (rút ra

không lớn hơn số tiền  thành công) B1

- Cập nhật lại danh sách các tài khoản với số tiền mới B2

21

Trang 22

Bài toán B1

 Input: giaodich.txt và taikhoan.txt

 Output: giaodichthanhcong.txt

Minh định thuật giải

Duyệt Danh sách các giao dịch

• Tại mỗi giao dịch ở bước xử lý

Duyệt Danh sách tìm phần tử đầu tiên của tài

khoản có mã tài khoản trùng với giao dịch đang xét

• Căn cứ vào tài khoản đó xác định giao dịch có thất bại

hay không?

• Viết giao dịch với trạng thái vào file

giaodichthanhcong.txt

Trang 23

Cùng Đại học Hoa Sen xây dựng tương lai



Bài toán B2

 Input: taikhoan.txt và giaodichthanhcong.txt

 Output: taikhoanUpdate.txt

Minh định thuật giải

Duyệt Danh sách các tài khoản

• Tại mỗi tài khoản ở bước xử lý

Duyệt Danh sách tìm phần tử đầu tiên của giao

dịch thành công có mã tài khoản trùng với mã tài khoản đang xét

Nếu không tìm thấy thì không cần update tài khoản

Còn không update lại tài khoản

• Update tài khoản vào file taikhoanUpdate.txt

23

Trang 24

Những điểm khác biệt

 Học cách dùng struct để biểu diễn tài khoản và giao dịch

 Học cách vận dụng bài toán Duyệt danh sách vào bài toán

Duyệt danh sách tìm phần tử đầu tiên

Trang 25

Cùng Đại học Hoa Sen xây dựng tương lai



Duyệt danh sách tìm PT đầu tiên

 Đưa vào một biến mới:

int da_tim_thay;

da_tim_thay sẽ nhận giá trị 1 nếu chúng ta tìm thấy phần tử nao

đó thỏa mãn yêu cầu Còn nếu chúng ta khong tìm thấy phần

tử nào thỏa điều kiện da_tim_thay sẽ nhận giá trị 0

Trang 26

Duyệt danh sách tìm PT đầu tiên

 Tại hàm Chuanbi(): da_tim_thay=0;

 Tại hàm ChuaDuyetHet():

Nếu da_tim_thay==1 thì trả về 0  Không duyệt nữa

 Tại hàm Duyetxuly(): Nếu tìm thấy phần tử đó thì

da_tim_thay=1;

Trang 27

Cùng Đại học Hoa Sen xây dựng tương lai

PTDT =x Kết thúc Duyet_Xuly

Bắt đầu Don_dep

Kết thúc Don_dep

Bắt đầu Chua_Duyet_Het Nếu da_tt=1 thì trả về 0Kết thúc Chua_Duyet_Het

Trang 28

Dùng Struct trong bài B1,B2

Trang 29

Cùng Đại học Hoa Sen xây dựng tương lai



Triển khai code C cho B1

 Sinh viên hãy chú ý cách giảng viên viết code lên bảng hoặc

bài giải mẫu trên elearning

Trang 30

Kết luận

 Ngoài dữ liệu có sẵn  tạo thêm kiểu dữ liệu mới

 C có 3 công cụ mạnh: Struct, Array, Con trỏ

 Struct là công cụ quan trọng nhất để biễu diễn các đối tượng bằng cách gộp các thuộc tính lại

 Struct lồng nhau là công cụ hữu hiệu mô tả thế giới dữ liệu

 Bài toán Duyệt danh sách không những áp dụng cho việc tính tổng, Max, đếm số phần tử mà còn ứng dụng cho tìm phần tử đầu tiên thỏa mãn điều kiện

 Chỉ cần đưa thêm biến da_tim_thay để cải tiến Duyệt DS  Duyệt DS tìm PTĐT

Trang 31

Cùng Đại học Hoa Sen xây dựng tương lai



Trang 32

Bài Tập Điểm Cộng Về Nhà

Áp dụng Duyệt DS tìm PTĐT

Bài số 1: Hãy minh định thuật giải cho bài toán sau:

«Hãy tìm số nguyên tố nhỏ nhất lớn hơn N cho trước» Input: N

Output: P

N= 20  P=23

N = 40  P=41

N=53  P = 57

Trang 33

Cùng Đại học Hoa Sen xây dựng tương lai



Bài Tập Điểm Cộng Về Nhà

 Hướng dẫn thuật giải

1. Duyệt danh sách N+1,N+2, Tìm phần tử đầu tiên là số nguyên tố

2. Để xác định một số N là số nguyên tố Duyệt danh sách 2, 3, Tìm phần tử đầu tiên là ước số của N Nếu số đó là N thì

N chính là số nguyên tố

Trang 35

Cùng Đại học Hoa Sen xây dựng tương lai

3/ Viết chương trình quản lý sinh viên gồm các thông tin:mã sv, họ

và tên, ngày sinh, nơi sinh, lớp học, điểm thi toán, điểm thi triết, điểm thi anh văn, điểm trung bình là điểm bình quân của các môn học, xếp loại dựa vào điểm trung bình Chương trình cho phép thực hiện các chức năng sau:

- Nhập thông tin của sinh viên

- In danh sách sinh viên

- Xem thông tin của 1 sinh viên (dựa vào mã SV)

- Xem thông tin trích ngang của 1 lớp bất kỳ

- Xem danh sách sv theo xếp loại (ví dụ nhập loại trungbinh thì in danh sach SV xếp loại trungbinh)

Bài Tập Điểm Cộng Về Nhà

Trang 36

4/ Viết chương trình quản lý bán hàng gồm các thông tin sau: mã hàng, tên hàng, đơn vị tính, số lượng, đơn giá bán, thành tiền=số lượng * đơn giá, chiết khấu = 5% * thành tiền, doanh thu = thành tiền – chiết khấu Chương trình cho phép thực hiện các công việc sau:

- Nhập thông tin bán hàng (gồm các thông tin trên)

- In liệt kê chi tiết bán hàng

Ngày đăng: 17/06/2014, 15:04

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w