Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 7 - Cấu trúc trong C++ được biên soạn bao gồm các nội dung chính sau: Cơ sở của cấu trúc trong C; Con trỏ trỏ đến cấu trúc; Các cấu trúc lồng nhau; Từ khóa typedef trong C++. Mời các bạn cùng tham khảo bài giảng!
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Programming Engineering in Mechatronics Giảng viên: TS. Đặng Thái Việt Đơn vị: Bộ mơn Cơ điện tử, Viện Cơ khí Hà Nội, 09/2017 KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Tổng quan về ngơn ngữ lập trình Cấu trúc Giới thiệu sơ bộ ngơn ngữ C Vào/ra trong C Kiểu, tốn tử và biểu thức Cơ sở của C++ Dịng điều khiển 10 Lớp Hàm và cấu trúc chương trình 11 Kế thừa và đa hình Con trỏ và mảng 12 Luồng vào/ra trong C++ CHƯƠNG 7. Cấu trúc trong C++ 7.1 Cơ sở của cấu trúc trong C 7.2 Con trỏ trỏ đến cấu trúc 7.3 Các cấu trúc lồng nhau 7.4 Từ khóa typedef trong C++ Cơ sở cấu trúc trong C++ 1. Cơ sở cấu trúc trong C++ 1.1 Các cấu trúc dữ liệu trong C++ • Một cấu trúc liệu tập hợp kiểu liệu khác gộp lại với tên Dạng thức sau: struct model_name { type1 element1 ; type2 element2 ; type3 element3 ; … } object_name ; Cơ sở cấu trúc trong C++ • • Trong model_name tên mẫu kiểu liệu tham số tùy chọn object_name tên hợp lệ cho đối tượng Bên cặp ngoặc nhọn tên phần tử cấu trúc kiểu chúng Nếu định nghĩa cấu trúc bao gồm tham số model_name (tuỳ chọn), tham số trở thành tên kiểu hợp lệ tương đương với cấu trúc Ví dụ: struct products { char name [30]; float price; }; products apple; products orange, melon; Cơ sở cấu trúc trong C++ • • • Chúng ta định nghĩa cấu trúc products với hai trường: name price, trường có kiểu khác Chúng ta sử dụng tên kiểu cấu trúc (products) để khai báo ba đối tượng có kiểu : apple, orange melon Sau khai báo, products trở thành tên kiểu hợp lệ giống kiểu int, char hay short Trường tuỳ chọn object_name nằm cuối phần khai báo cấu trúc dùng để khai báo trực tiếp đối tượng có kiểu cấu trúc Ví dụ, để khai báo đối tượng apple, orange melon làm phần trước làm theo cách sau: Cơ sở cấu trúc trong C++ struct products { char name [30]; float price; } apple, orange, melon; • Hơn nữa, trường hợp tham số model_name trở thành tuỳ chọn Mặc dù model_name không sử dụng khơng thể khai báo thêm đối tượng có kiểu mẫu Kiểu mẫu cấu trúc 1.2 Kiểu mẫu cấu trúc • Một điều quan trọng cần phân biệt rõ ràng đâu kiểu mẫu cấu trúc, đâu đối tượng cấu trúc Nếu dùng thuật ngữ sử dụng với biến, kiểu mẫu tên kiểu liệu đối tượng biến Kiểu mẫu cấu trúc • • • Sau khai báo ba đối tượng có kiểu mẫu cấu trúc xác định (apple, orange and melon) thao tác với trường tạo nên chúng Để làm việc sử dụng dấu chấm (.) chèn tên đối tượng tên trường Ví dụ, thao tác với phần tử cấu trúc biến chuẩn : apple.name, apple.price, orange.name, orange.price, melon.name, melon.price Mỗi trường có kiểu liệu tương ứng: apple.name, orange.name melon.name có kiểu char[30], apple.price, orange.price melon.price có kiểu float Kiểu mẫu cấu trúc • Ví dụ: 10 Cấu trúc dưới dạng tham số hàm Ví dụ 17 Cấu trúc dưới dạng tham số hàm Ví dụ 18 Con trỏ trỏ đến cấu trúc 3. Con trỏ trỏ đến cấu trúc • Như kiểu liệu khác, cấu trúc trỏ đến trỏ Quy tắc hồn tồn giống kiểu liệu nào: 19 Con trỏ trỏ đến cấu trúc struct movies_t { char title [50]; int year; }; movies_t amovie; movies_t * pmovie; • Ở amovie đối tượng có kiểu movies_t pmovie trỏ trỏ tới đối tượng movies_t OK, đến với ví dụ khác, giới thiệu toán tử mới: 20 Con trỏ trỏ đến cấu trúc 21 Con trỏ trỏ đến cấu trúc Kết quả: Enter title: Matrix Enter year: 1999 You have entered: Matrix (1999) • Đoạn mã giới thiệu điều quan trọng: toán tử -> Đây toán tử tham chiếu dùng để trỏ tới cấu trúc lớp (class) Nó cho phép dùng ngoặc tham chiếu đến phần tử cấu trúc Trong ví dụ sử dụng: movies->title dịch thành: (*movies).title 22 Con trỏ trỏ đến cấu trúc • • Cả hai biểu thức movies->title (*movies).title hợp lệ chúng dùng để tham chiếu đến phần tử title cấu trúc trỏ movies Bạn cần phân biệt rõ ràng với: *movies.title tương đương với *(movies.title) Lệnh dùng để tính tốn giá trị trỏ phần tử title cấu trúc movies, trường hợp (title khơng phải trỏ) chẳng có ý nghĩa nhiều Bản tổng kết tất kết hợp trỏ cấu trúc: 23 Con trỏ trỏ đến cấu trúc Các kết kết hợp trỏ cấu trúc 24 Con trỏ trỏ đến cấu trúc Ví dụ 25 Con trỏ trỏ đến cấu trúc Ví dụ 26 Các cấu trúc lồng nhau 3. Các cấu trúc lồng nhau • Các cấu trúc đặt lồng phần tử hợp lệ cấu trúc cấu trúc khác 27 Các cấu trúc lồng nhau struct movies_t { char title [50]; int year; } struct friends_t { char name [50]; char email [50]; movies_t favourite_movie; } charlie, maria; friends_t * pfriends = &charlie; • Vì vậy, sau phần khai báo sử dụng biểu thức sau: 28 Các cấu trúc lồng nhau charlie.name maria.favourite_movie.title charlie.favourite_movie.year pfriends->favourite_movie.year (trong hai biểu thức cuối tương đương) • Các khái niệm cấu trúc đề cập đến phần hồn tồn giống với ngơn ngữ C, nhiên C++, cấu trúc mở rộng thêm chức lớp với tính chất đặc trưng tất phần tử cơng cộng (public) 29 Từ khóa typedef trong C++ 4. Từ khóa typedef trong C++ • • Có cách dễ dàng để định nghĩa cấu trúc bạn "alias" kiểu bạn tạo Ví dụ: Lúc này, bạn sử dụng Books cách trực tiếp để định nghĩa biến kiểu cấu trúc Books mà không sử dụng từ khóa struct 30 Từ khóa typedef trong C++ • • Ví dụ: Bạn sử dụng từ khóa typedef C++ cho dạng cấu trúc, sau: Với x, y z tất trỏ tới long int 31 ...KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Tổng quan về ngơn ngữ? ?lập? ?trình Cấu trúc Giới thiệu sơ bộ ngơn ngữ C Vào/ra trong C Kiểu, tốn tử và biểu thức Cơ? ?sở của C++ Dịng điều khiển... Hàm và cấu trúc? ?chương? ?trình 11 Kế thừa và đa hình Con trỏ và mảng 12 Luồng vào/ra trong C++ CHƯƠNG? ?7. Cấu trúc trong C++ 7. 1? ?Cơ? ?sở của cấu trúc trong C 7. 2 Con trỏ trỏ đến cấu trúc 7. 3 Các cấu trúc lồng nhau... Kiểu mẫu cấu trúc Kết quả: Enter title: Alien Enter year: 1 979 My favourite movie is: 2001 A Space Odyssey (1968)And yours: Alien (1 979 ) • - - Ví dụ này: Cho thấy cách sử dụng phần tử cấu trúc thân