Khái quát hóa là mẹ của việc học. Giới thiệu về ngôn ngữ C

Hướng dẫn lập trình C++ bằng Borland C++ Builder 5.0 - Bobrovsky S. - 2001

Sách được các biên tập viên của I-Press biên soạn theo yêu cầu của nhà xuất bản
Nhóm chuẩn bị xuất bản:
Tổng biên tập: Sergey Simonovich
Biên tập viên khoa học: Georgy Evseev
Biên tập văn học: Irina Simonovich
Bố trí máy tính: Irina Simonovich
Người hiệu đính: Elena Sorokina

Dess com
Tôi nhấn
Mátxcơva - 2001

ISBN 5-93650-013-6 (“DESS KOM*”)
Bobrovsky SI., 2001
Ban biên tập “I-Press”, 2001
Nhà xuất bản DESS KOM, 2001
Giấy phép ID số 00219 ngày 11/10/99. Ký xuất bản ngày 10 tháng 11 năm 2000.
Định dạng 70x100/16. In offset. Pech. tôi. 17. Thêm. lưu hành 1000. Đơn hàng 1064
LLC "DESS COM", 105484. Moscow, st. Parkovaya thứ 16, 21, bldg. 1.
In từ giấy trong suốt làm sẵn
tại Nhà in Học thuật “Khoa học” của Viện Hàn lâm Khoa học Nga
199034, St. Petersburg, Đường 9, 12

Nội dung

Giới thiệu

Ngôn ngữ lập trình là gì?
Trình biên dịch là gì?
Tại sao lại là C++?
Lập trình trực quan là gì?
Tại sao Borland C++ Builder?
Chúng ta cần loại máy tính nào?

1. Lần đầu làm quen

Cài đặt Borland C++Builder
Khởi chạy Trình tạo C++
Môi trường phát triển tích hợp
Các thành phần chính của Borland C++Builder
Cửa sổ chính của C++Builder
Nhà thiết kế trực quan của các biểu mẫu công việc
Hình thức là gì?
Từ các thành phần biểu mẫu đến điều khiển chương trình
Các biểu mẫu chính và bổ sung
Thanh tra đối tượng
Thuộc tính đối tượng
Sự kiện chương trình và hệ thống
biên tập chương trình
Trình chỉnh sửa nguồn

2. Bắt đầu nhanh

Học cách làm việc với các thành phần trực quan
Thành phần trực quan
Các thành phần không trực quan
Làm máy tính tiền tệ
Chỉnh sửa thành phần (Trường nhập liệu)
Thành phần nhãn
Thành phần nút
Lưu dự án
Hãy bắt đầu lập trình
Biến
Loại biến
Các biến được tạo ra như thế nào?
Từ dành riêng trong C++
Thứ tự định nghĩa biến
Bình luận
Làm cách nào để lấy chuỗi từ trường đầu vào?
Các tính năng của Trình tạo C++ tiêu chuẩn
Loại chức năng
Lưu trữ giá trị trong một biến
Quy tắc viết toán tử C++
Hiển thị kết quả trên màn hình
Tạo chương trình làm việc đầu tiên của chúng tôi
Biên dịch một chương trình
Xây dựng chương trình
Bắt đầu chương trình
Cải thiện máy tính
Chuyển đổi rúp sang đô la
Biến cục bộ và phạm vi
Biến toàn cục và khối logic lồng nhau
Kiểm tra hoạt động của máy tính
Các loại khác cho số nguyên
Các loại cho số rất lớn, rất nhỏ và phân số
kiểu phao
Gõ đôi
Kiểu dài gấp đôi
Sửa các loại biến
thâm niên hoạt động
Các hàm chuyển số thành văn bản khác
Chúng tôi chính thức hóa kết quả
Làm tròn kết quả
Mô tả chức năng và kết nối của các thư viện chuẩn
Mang lại vẻ đẹp
Chương trình đã sẵn sàng

3. Nhìn vào bên trong chương trình đang chạy

Mở lại dự án
Thực hiện hành vi bị cấm
Kiểm tra giá trị của các biến
Dừng chương trình

4. Tối ưu hóa văn bản chương trình

Chúng tôi loại bỏ các toán tử không cần thiết
Trình biên dịch đưa ra cảnh báo
Có phải luôn luôn cần thiết để tiết kiệm?

5. Xử lý ngoại lệ

Săn lỗi
Thiết lập quyền kiểm soát chương trình
Quy trình xử lý ngoại lệ
Xử lý một số ngoại lệ

6. Các lớp và phương thức của chúng

Phương thức thay vì hàm
Làm thế nào để tìm ra phương pháp phù hợp
Lối cũ

7. Tính toán có điều kiện

Bộ lọc giá trị
Điều hành có điều kiện
Viết câu điều kiện
biểu thức Boolean
Thứ tự đánh giá biểu thức
Tổ hợp biểu thức logic và tác dụng phụ
Tạo bộ lọc
So sánh số dấu phẩy động

8. Chơi với máy tính. Ví dụ phức tạp hơn

Chúng ta sẽ chơi gì?
Chúng tôi đang chuẩn bị một dự án mới
Xây dựng vấn đề
Đừng vội ngồi xuống máy tính
Thiết kế giao diện người dùng
Tạo thực đơn TỪ
"Nút nhanh"
Thiết kế cấu trúc bên trong của chương trình
Sự kiện trò chơi mới
Thoát sự kiện
Sự kiện “Đổ xúc xắc”
Sự kiện “Chuyển lượt xếp hàng”
Mô tả các lớp học
Cách đưa lớp mới vào chương trình
Hạn chế tính khả dụng của nội dung lớp học
Xác định lớp đầu tiên
Mô phỏng ném xúc xắc
Mô tả lớp “Người chơi”
Hàm tạo chỉ được gọi một lần
Chúng tôi kết nối thẩm phán
Truy cập các biến nội bộ và thuộc tính lớp
Hằng số là một thứ hữu ích

9. Lập trình giao diện người dùng

Thêm một biến thẩm phán
Thoát khỏi trò chơi
Một trò chơi mới
Sử dụng hằng văn bản
Phân bổ biến dài của các lớp lồng nhau
Kiểm tra việc hoàn thành lô hiện tại
Toán tử điều kiện mở rộng
Thêm một hàng vào danh sách
Khi mục menu Trò chơi mới được chọn
Khi mục menu "Roll Die" được chọn
Khi mục menu “Chuyển hàng lần lượt” được chọn
Thiết lập các nút lệnh
Kiểm tra xem mọi thứ có ổn không
Gỡ lỗi từng bước
Loại bỏ các trò chơi lặp đi lặp lại
Toán tử vòng lặp
Chọn thuật toán cho hành vi của người chơi máy tính
Chu kỳ thay vì sao chép thủ công
Bên trong vòng lặp
Dừng một chu kỳ
Các dạng ký hiệu chưa hoàn chỉnh của toán tử vòng lặp
Tạo hộp thoại
Tạo một biểu mẫu mới
Phủ định logic
Gọi một biểu mẫu mới
Từ hằng đến biến
Hiển thị giá trị mới trong hộp thoại
Chuẩn bị hồ sơ hoàn chỉnh
Định vị các cửa sổ
Chọn biểu tượng phù hợp
Tạo một chương trình đã hoàn thành
Ba trụ cột của C++

10. Khái quát hóa là mẹ của việc học

Cái gì tiếp theo?
Mảng là cơ sở để lưu trữ dữ liệu đồng nhất
Cách mô tả một mảng
Kích thước mảng
Kiểu mảng
Truy cập một phần tử của mảng lớp
Mảng đa chiều
Kiểm soát biên giới
Mảng và vòng lặp là anh em ruột
Solitaire "Chà"
Tại sao lại chơi đơn?
Dự án mới
Quy tắc của "Cái giếng"
Tôi có thể lấy bản vẽ bản đồ ở đâu?
Thiết kế giao diện
Đang tải bản đồ vào thành phần
Thực hiện các lớp cần thiết
Thiết kế một bộ bài
Lớp "Bản đồ"
Lớp "Bộ bài"
Các hằng số bắt buộc
Thực hiện bản đồ
Xây dựng một bộ bài bằng cách sử dụng các vòng lặp lồng nhau
Xáo trộn bộ bài
Loại bỏ một thẻ khỏi bộ bài
Thêm một thẻ vào bộ bài
Kiểm tra boong trống
Phần chính của trò chơi solitaire
Thiết kế logic công việc hình thức chính
Chuyển đổi bản đồ thành chỉ mục hình ảnh
Thêm và xóa thẻ khỏi cọc
Di chuyển bản đồ
Một trò chơi mới
Phương pháp quan trọng nhất
Phương pháp quan trọng nhất-2
Có thẻ nào không?
Giao diện logic
Bắt chuột
Đang xử lý một lần nhấp chuột
Đang khởi tạo mảng
Chúng tôi tiếp tục thử nghiệm giao diện người dùng
Chơi đúng luật
Lập trình từ trên xuống
Kiểm tra kết thúc trò chơi
Những điều nhỏ nhặt cuối cùng

mười một . ĐẦU VÀO VÀ ĐẦU RA

Tại sao điều này là cần thiết?
Cách làm việc với file trong C++
Lưu bố cục hiện tại
Tạo một tập tin
Ghi đè một cách thận trọng
Đối thoại với người dùng
Lưu dữ liệu vào một tập tin
Kiểm soát lỗi
Đóng tập tin và tóm tắt
Đọc dữ liệu
Chọn file tùy ý
Các tùy chọn khác để làm việc với tệp trong C++Builder
Các hàm tiêu chuẩn để làm việc với tập tin

12. Các thành phần sẽ có ích

Lắp ráp từ hình khối
Bảng tiêu chuẩn
Những gì đã được biết
Khung
Danh mục
Trường nhập nhiều dòng
Hộp kiểm
Công tắc
Chuyển nhóm
Thanh cuộn
Nhóm các phần tử
bảng điều khiển
Bảng bổ sung
Những gì đã được biết
Trường nhập theo mặt nạ
bảng chuỗi
Bàn cho bất cứ thứ gì
Hình ảnh
Hình hình học
Khung
Vùng có thể cuộn
Phần mở đầu
Bảng thành phần
Biểu đồ
Bảng điều khiển Win32
Những gì đã được biết
Tab
Trình soạn thảo văn bản mạnh mẽ
Thanh trượt
Chỉ báo tiến độ
Nút đếm
Phím nóng
Hoạt hình
Trường nhập ngày và giờ
Lịch hàng tháng
Tiêu đề có phần
Thanh trạng thái
Bảng thành phần
Thanh cuộn
Bảng hệ thống
hẹn giờ
Vùng vẽ
Máy nghe nhạc đa năng
thùng chứa OLE
Bảng hộp thoại
Nó sẽ không đủ!
Các thuộc tính cơ bản của các thành phần C++Builder
Ghi chú trên bảng
Thuộc tính cơ bản của các thành phần

13. Kết luận

Borland C++Builder có thể làm gì khác?
Làm việc với cơ sở dữ liệu
Phân tích dữ liệu
Tạo báo cáo
Internet
Phân phối máy tính
May chủ
Tương lai
Danh mục theo thứ tự chữ cái

Đại học Kỹ thuật Hàng không Bang Ufa

Khoa Kỹ thuật Máy tính

và Bảo vệ thông tin

Ghi chú giải thích

cho công việc khóa học

môn học: “Phương pháp lập trình và thuật toán ứng dụng”

“Phát triển một thuật toán ứng dụng và triển khai nó trong C++”

Được thực hiện bởi một sinh viên:

Zaguraev A.N.

Khoa: IRT

Nhóm: ZI-225

Được chấp nhận bởi Phó Giáo sư, Tiến sĩ:

Strokina Yu.G.

1. Tuyên bố vấn đề……………………………….……3

2. Môi trường lập trình Borland C++ Builder……..4

3. Phần mềm toán học………………….…………10

4. Xây dựng thuật toán chương trình dưới dạng sơ đồ khối…….……11

5. Mô tả chương trình………….…………….12

6. Kết luận………………….…………….15

7. Danh mục tài liệu tham khảo…….……….16

Phụ lục…………….…………………..……….17

Xây dựng vấn đề

Bài tập: Phát triển một chương trình tìm kiếm lặp lại quy mô thanh toán khoản vay thống nhất. Các khoản thanh toán và lãi tích lũy trên số tiền còn lại được thực hiện hàng tháng. Dữ liệu ban đầu: quy mô khoản vay, thời gian trả nợ (từ 1 đến 5 năm), lãi suất. Trong hộp thoại hiển thị biểu đồ thay đổi số dư số tiền vay.

Môi trường lập trìnhBorlandC++ Người xây dựng

Giới thiệu

Borland C++ Builder là môi trường phát triển ứng dụng nhanh chóng. Các hệ thống phát triển nhanh (hệ thống RAD, Rapid Application Development - môi trường phát triển ứng dụng nhanh) dựa trên công nghệ thiết kế trực quan và lập trình sự kiện, bản chất của nó là môi trường phát triển đảm nhận hầu hết công việc tạo mã chương trình, giao công việc cho người lập trình trong việc thiết kế hộp thoại và viết các hàm xử lý sự kiện. Năng suất của lập trình viên khi sử dụng hệ thống RAD tăng lên đáng kể.

Hệ thống lập trình hướng đối tượng Borland C++ Builder được thiết kế cho hệ điều hành Windows. C++ Builder IDE cung cấp tốc độ phát triển trực quan, năng suất của các thành phần có thể tái sử dụng, kết hợp với sức mạnh của các công cụ ngôn ngữ C++, các công cụ nâng cao và khả năng truy cập cơ sở dữ liệu đa quy mô.

C++ Builder có thể được sử dụng ở bất cứ nơi nào bạn muốn mở rộng các ứng dụng hiện có với tiêu chuẩn ngôn ngữ C++ nâng cao, cải thiện hiệu suất và cung cấp giao diện người dùng cấp chuyên nghiệp.

Tốc độ phát triển thị giác

Các công cụ ngôn ngữ C++ chuyên nghiệp được tích hợp vào môi trường phát triển trực quan. C++Builder cung cấp trình biên dịch Borland C++ nhanh, trình tải tăng dần hiệu quả và khả năng sửa lỗi linh hoạt ở cả cấp độ nguồn và lắp ráp để đáp ứng nhu cầu khắt khe của các lập trình viên chuyên nghiệp.

Thiết kế kéo và thả cho phép bạn tạo ứng dụng bằng cách kéo các thành phần trực quan đã chụp từ Bảng màu vào biểu mẫu ứng dụng. Trình kiểm tra đối tượng cung cấp khả năng hoạt động với các thuộc tính và sự kiện của các thành phần, tự động tạo các mẫu cho các hàm xử lý sự kiện chứa đầy mã và được chỉnh sửa trong quá trình phát triển.

Thuộc tính, phương thức và sự kiện chính xác là những yếu tố ngôn ngữ cho phép phát triển ứng dụng nhanh chóng trong khuôn khổ lập trình hướng đối tượng. “Thuộc tính” cho phép bạn dễ dàng thiết lập các đặc điểm khác nhau của đối tượng. “Phương thức” thực hiện một số thao tác nhất định, đôi khi khá phức tạp trên một đối tượng. “Sự kiện” kết nối các tác động của người dùng lên đối tượng bằng mã phản hồi với các tác động này. Các sự kiện có thể xảy ra trong những thay đổi cụ thể về trạng thái của đối tượng như cập nhật dữ liệu trong các thành phần giao diện để truy cập cơ sở dữ liệu. Làm việc cùng nhau, các thuộc tính, phương thức và sự kiện tạo thành môi trường RAD (Phát triển ứng dụng nhanh) để lập trình nhanh chóng và trực quan các ứng dụng Windows mạnh mẽ.

Visual Shape Inheritance thể hiện một khía cạnh quan trọng của lập trình hướng đối tượng trong một công cụ thiết kế trực quan dễ sử dụng. Các đặc điểm của biểu mẫu ứng dụng mới có thể được kế thừa từ bất kỳ biểu mẫu hiện có nào khác, cung cấp khả năng tái tạo tập trung các thay đổi giao diện người dùng, tạo điều kiện thuận lợi cho việc kiểm soát mã và giảm thời gian cần thiết để giới thiệu các thuộc tính chất lượng mới.

Trình hướng dẫn cài đặt hướng dẫn tạo các gói phân phối hợp nhất cho các ứng dụng đã phát triển.

Mã nguồn của Thư viện Thành phần Trực quan tạo điều kiện thuận lợi cho việc phát triển các thành phần mới dựa trên các ví dụ tạo sẵn.

Các công cụ API mở có thể được tích hợp trực tiếp vào môi trường trực quan của hệ thống. Bạn có thể kết nối thông thường soạn thảo văn bản hoặc tạo trình hướng dẫn của riêng bạn để tự động hóa các quy trình lặp đi lặp lại.

Thư viện toán học mở rộng chứa các hàm thống nhất bổ sung để tính toán thống kê và tài chính.

Giao diệnBorlandC++ Người xây dựng.

Giao diện C++ Builder bao gồm:

Thành phần bảng màu chứa hơn 100 thành phần có thể tái sử dụng được cung cấp để xây dựng các ứng dụng.

Trình chỉnh sửa biểu mẫu được thiết kế để tạo ra một giao diện chương trình với người dùng.

Biên tập viên mã số được thiết kế để viết văn bản chương trình, đặc biệt là các chức năng xử lý sự kiện.

Thanh tra đối tượng cho phép bạn thiết lập trực quan các thuộc tính của đối tượng mà không cần lập trình thông thường và chứa các sự kiện có thể được liên kết với mã phản ứng của đối tượng khi chúng xuất hiện.

Lưu trữ đối tượng chứa các đối tượng như biểu mẫu và mô-đun dữ liệu được chia sẻ giữa nhiều ứng dụng để giảm thời gian phát triển.

C++Builder triển khai phương pháp trực quan để xây dựng ứng dụng bằng cách chọn các thành phần điều khiển cần thiết từ Bảng Thành phần (Hình 1). Mỗi thành phần (chẳng hạn như nút) có các thuộc tính liên quan đến nó làm thay đổi hình thức và hành vi của nó. Bất kỳ thành phần nào cũng có thể kích hoạt một loạt các sự kiện quyết định phản ứng của nó trước những ảnh hưởng khác nhau.

Những vấn đề tương thích

C++ Builder mang lại sức mạnh và sự phong phú của ngôn ngữ C++ cho toàn bộ dòng hệ thống lập trình hướng đối tượng. Bạn có thể sử dụng C++ Builder ở bất cứ nơi nào bạn muốn để nâng cao các ứng dụng hiện có bằng C++ tiêu chuẩn công nghiệp tiên tiến, cải thiện hiệu suất và tạo giao diện người dùng trông chuyên nghiệp.

Trình tạo C++Borland C++

Có khả năng tương tác lẫn nhau và đầy đủ giữa các sản phẩm phần mềm C++ Builder và Borland C++. C++ Builder bổ sung chất lượng mới cho quy trình lập trình - phát triển trực quan nhanh chóng các ứng dụng bằng ngôn ngữ C++. Nếu bạn đã quen làm việc trên hệ thống lập trình Borland C++ (phiên bản 3.1, 4.5 và 5.0) thì hãy chuyển sang hệ thống mới, cũng như việc quay lại cái cũ sẽ không quá khó khăn. Bạn vẫn có thể tùy ý sử dụng trình quản trị tệp dự án, trình biên dịch và trình tải tăng dần thuận tiện.

Lúc đầu, C++ Builder sẽ làm nhiều nhà phát triển thất vọng vì thay vì các thư viện OWL và MFC quen thuộc, nó sử dụng thư viện VCL mà cho đến nay vẫn chưa được biết đến. Mỗi thư viện đại diện cho một mô hình lập trình hướng đối tượng cụ thể cho Windows. Mỗi thư viện giải quyết các vấn đề về OOP theo cách riêng của mình và không thể nói rằng bất kỳ thư viện nào xử lý nhiệm vụ này tốt hơn hay kém hơn những thư viện khác. Borland C++ phiên bản 5.0 trở lên hỗ trợ việc đưa các biểu mẫu tiêu chuẩn được thiết kế trong môi trường C++ vào OWL hoặc OWL đã phát triển trước đó. Trình tạo chương trình MFC dựa trên VCL. Nhà phát triển thực hiện kiểu làm lại này vì một lý do đơn giản: C++Builder cho phép bạn đưa tất cả các hộp thoại với người dùng vào biểu mẫu cực kỳ nhanh chóng, mang lại cho ứng dụng Windows một giao diện hoàn chỉnh chuyên nghiệp, loại bỏ tất cả các mã phụ trợ khỏi chương trình và chỉ để lại phần có ý nghĩa thể hiện ý tưởng thuật toán chính. Do đó, tính tương thích được đảm bảo ở cấp độ biểu mẫu. Không có gì ngạc nhiên khi làm việc cùng với hai thư viện lớp đối tượng sẽ làm tăng đáng kể kích thước của tệp EXE.

Các công nghệ lập trình. Bản chất của phương pháp lập trình hướng đối tượng. Mục đích của Xi, thông tin lịch sử. Bảng chữ cái, các loại cơ bản và mô tả dữ liệu. Cấu trúc và hiệp hội. Toán tử C++. Chức năng. Thư viện thời gian chạy.

Gửi công việc tốt của bạn trong cơ sở kiến ​​thức thật đơn giản. Sử dụng mẫu dưới đây

Các sinh viên, nghiên cứu sinh, các nhà khoa học trẻ sử dụng nền tảng kiến ​​thức trong học tập và công việc sẽ rất biết ơn các bạn.

Lập trình hướng đối tượng bằng Borland C++

Nội dung các bài giảng tại Đại học Kinh tế, Thống kê và Tin học quốc gia Moscow

Các văn bản bài giảng thảo luận về các nguyên tắc và công cụ cơ bản của lập trình hướng đối tượng sử dụng ngôn ngữ C++ và hệ thống lập trình Borland C++. Phần phụ lục chứa các nhiệm vụ để bạn tự giải quyết. Giả định rằng người đọc đã quen thuộc với những kiến ​​thức cơ bản về ngôn ngữ lập trình đa năng. Sách hướng dẫn này dành cho sinh viên chuyên ngành "Toán ứng dụng" và có thể được sinh viên các chuyên ngành khác sử dụng để nghiên cứu độc lập về C++.

1. Cách tiếp cận lập trình hướng đối tượng

1.1 Công nghệ lập trình

Công nghệ lập trình là một tập hợp các phương pháp và công cụ để phát triển (viết) chương trình và quy trình sử dụng các phương pháp và công cụ này.

Trong giai đoạn đầu của lập trình, khi các chương trình được viết dưới dạng chuỗi lệnh máy, chưa có công nghệ lập trình. Các bước đầu tiên trong việc phát triển công nghệ bao gồm việc biểu diễn một chương trình dưới dạng một chuỗi các câu lệnh. Việc viết một chuỗi các lệnh máy trước tiên phải vẽ ra một sơ đồ toán tử phản ánh trình tự các toán tử và sự chuyển đổi giữa chúng. Cách tiếp cận của người vận hành giúp có thể phát triển các chương trình đầu tiên để tự động hóa việc biên dịch chương trình - cái gọi là các thành phần chương trình.

Với sự gia tăng kích thước của các chương trình, các phần riêng biệt của chúng bắt đầu được xác định và thiết kế dưới dạng chương trình con. Một số chương trình con này được kết hợp thành các thư viện, từ đó các chương trình con có thể được đưa vào các chương trình làm việc và sau đó được gọi từ các chương trình làm việc. Điều này đánh dấu sự khởi đầu lập trình thủ tục- một chương trình lớn được thể hiện bằng một tập hợp các thủ tục-chương trình con. Một trong những chương trình con là chương trình chính và việc thực thi chương trình bắt đầu từ đó.

Năm 1958, ngôn ngữ lập trình đầu tiên Fortran và Algol-58 được phát triển. Chương trình Fortran bao gồm một chương trình chính và một số thủ tục - chương trình con và hàm. Chương trình trên ALGOL-58 và phiên bản tiếp theo của nó ALGOL-60 là một tổng thể duy nhất nhưng có cấu trúc khối, bao gồm khối chính và các khối chương trình con và hàm lồng nhau. Các trình biên dịch cho Fortran cung cấp bản dịch riêng các thủ tục và sự tích hợp sau đó của chúng vào một chương trình làm việc; các trình biên dịch đầu tiên cho Algol giả định rằng toàn bộ chương trình được dịch cùng một lúc không được cung cấp;

Cách tiếp cận thủ tục yêu cầu cơ cấu chương trình tương lai, chia nó thành các thủ tục riêng biệt. Khi phát triển một thủ tục riêng biệt, bạn chỉ cần biết về các thủ tục khác, mục đích của chúng và cách gọi chúng. Có thể làm lại các thủ tục riêng lẻ mà không ảnh hưởng đến phần còn lại của chương trình, đồng thời giảm chi phí lao động và thời gian sử dụng máy tính để phát triển và hiện đại hóa các chương trình.

Bước tiếp theo trong việc đào sâu cấu trúc chương trình là cái gọi là lập trình có cấu trúc, trong đó toàn bộ chương trình và các thủ tục riêng lẻ được coi là chuỗi các cấu trúc chính tắc: phần tuyến tính, chu trình và nhánh. Có thể đọc và kiểm tra chương trình dưới dạng văn bản tuần tự, điều này giúp tăng năng suất của các lập trình viên khi phát triển và gỡ lỗi chương trình. Để tăng cường cấu trúc của chương trình, các yêu cầu được đưa ra là tính độc lập cao hơn của các chương trình con; các chương trình con phải giao tiếp với các chương trình gọi chúng chỉ bằng cách truyền các đối số trong chương trình con của các biến thuộc các thủ tục khác hoặc chương trình chính; được coi là không mong muốn.

Trước hết, lập trình thủ tục và có cấu trúc bị ảnh hưởng đến quá trình mô tả một thuật toán như một chuỗi các bước dẫn từ dữ liệu đầu vào thay đổi đến kết quả mong muốn. Để giải quyết các vấn đề đặc biệt, các ngôn ngữ lập trình bắt đầu được phát triển, tập trung vào một loại vấn đề cụ thể: hệ thống quản lý cơ sở dữ liệu, mô hình mô phỏng, v.v.

Khi phát triển các trình dịch, người ta ngày càng chú ý đến việc phát hiện lỗi trong mã nguồn của chương trình, từ đó giảm thời gian dành cho việc gỡ lỗi chương trình.

Việc sử dụng các chương trình trong các lĩnh vực hoạt động khác nhau của con người đã dẫn đến nhu cầu cải thiện độ tin cậy của tất cả các phần mềm. Một trong những hướng cải thiện ngôn ngữ lập trình là tăng mức độ gõ dữ liệu. Lý thuyết kiểu dữ liệu giả định rằng mọi dữ liệu được sử dụng trong chương trình thuộc về một và chỉ một kiểu dữ liệu. Loại mốc xác định tập hợp các giá trị có thể có cho mốc và tập hợp các hoạt động được phép trên mốc này. Trong một số trường hợp, dữ liệu của một loại cụ thể có thể được chuyển đổi thành dữ liệu của loại khác, nhưng việc chuyển đổi đó phải được thể hiện rõ ràng trong chương trình. Tùy thuộc vào mức độ đáp ứng các yêu cầu được liệt kê, chúng ta có thể nói về mức độ gõ của một ngôn ngữ lập trình cụ thể. Mong muốn tăng mức độ gõ của ngôn ngữ lập trình đã dẫn đến sự xuất hiện của ngôn ngữ Pascal, được coi là ngôn ngữ được gõ mạnh, mặc dù nó cho phép một số chuyển đổi kiểu ngầm, ví dụ: số nguyên thành số thực. Việc sử dụng ngôn ngữ gõ chặt chẽ khi viết chương trình giúp phát hiện nhiều lỗi trong việc sử dụng dữ liệu ngay cả khi dịch văn bản nguồn và từ đó tăng độ tin cậy của chương trình. Đồng thời, việc gõ nghiêm ngặt đã hạn chế quyền tự do của lập trình viên và gây khó khăn cho việc sử dụng một số kỹ thuật chuyển đổi dữ liệu thường được sử dụng trong lập trình hệ thống. Gần như đồng thời với Pascal, ngôn ngữ C được phát triển, tập trung hơn vào Lập trình hệ thống và liên quan đến các ngôn ngữ được gõ yếu.

Tất cả các ngôn ngữ lập trình phổ quát, mặc dù có sự khác biệt về cú pháp và từ khóa được sử dụng, đều triển khai các cấu trúc chuẩn giống nhau: toán tử gán, vòng lặp và nhánh. Tất cả các ngôn ngữ hiện đại đều có các kiểu dữ liệu (cơ bản) được xác định trước (kiểu số nguyên và số học thực, ký tự và có thể cả kiểu chuỗi) và có thể sử dụng tổng hợp dữ liệu, bao gồm mảng và cấu trúc (bản ghi). Đối với dữ liệu số học, bình thường các phép tính toán học, đối với tập hợp dữ liệu thường chỉ có thao tác gán và khả năng truy cập các phần tử của tập hợp. Đồng thời, khi phát triển một chương trình để giải quyết một vấn đề ứng dụng cụ thể, điều mong muốn là có sự gần gũi về mặt khái niệm giữa văn bản chương trình với mô tả vấn đề. Ví dụ: nếu giải một bài toán yêu cầu thực hiện các phép tính trên số phức hoặc ma trận vuông, thì chương trình nên bao gồm rõ ràng các toán tử để cộng, trừ, nhân và chia dữ liệu thuộc loại số phức cũng như cộng, trừ, nhân và đảo ngược dữ liệu. thuộc loại ma trận vuông. Có một số cách để giải quyết vấn đề này:

Bằng cách xây dựng một ngôn ngữ lập trình chứa càng nhiều loại dữ liệu càng tốt và chọn một tập hợp con của ngôn ngữ này cho từng loại vấn đề. Loại ngôn ngữ này đôi khi được gọi là ngôn ngữ shell. Ngôn ngữ PL/1 khẳng định vai trò của ngôn ngữ shell, nhưng hóa ra nó phức tạp đến mức không bao giờ có thể xây dựng được một mô tả chính thức về nó. Tuy nhiên, việc thiếu một mô tả chính thức đã không ngăn cản việc sử dụng rộng rãi PL/1 ở cả Tây Âu và Liên Xô.

Việc xây dựng một ngôn ngữ có thể mở rộng chứa một lõi nhỏ và có thể được mở rộng để bổ sung cho ngôn ngữ đó các kiểu dữ liệu và toán tử phản ánh bản chất khái niệm của một loại vấn đề cụ thể. Ngôn ngữ như vậy được gọi là ngôn ngữ cốt lõi. Ngôn ngữ Simula và Algol-68 được phát triển làm ngôn ngữ cốt lõi; chúng không được sử dụng rộng rãi nhưng có ảnh hưởng lớn đến sự phát triển của các ngôn ngữ lập trình khác.

Sự phát triển tiếp theo của con đường thứ hai là cách tiếp cận lập trình hướng đối tượng, được thảo luận trong đoạn tiếp theo.

1.2. Bản chất của phương pháp lập trình hướng đối tượng

Ý tưởng chính của cách tiếp cận hướng đối tượng dựa trên các nguyên tắc sau:

Chương trình là mô hình của một số quy trình thực tế, một phần của thế giới thực.

Một mô hình của thế giới thực hoặc một phần của nó có thể được mô tả như một tập hợp các đối tượng tương tác với nhau.

Một đối tượng được mô tả bởi một tập hợp các tham số, các giá trị của chúng xác định trạng thái của đối tượng và một tập hợp các thao tác (hành động) mà đối tượng có thể thực hiện.

Tương tác giữa các đối tượng được thực hiện bằng cách gửi các thông điệp đặc biệt từ đối tượng này sang đối tượng khác. Một thông điệp mà một đối tượng nhận được có thể yêu cầu thực hiện một số hành động nhất định, chẳng hạn như thay đổi trạng thái của đối tượng.

Các đối tượng được mô tả bởi cùng một bộ tham số và có khả năng thực hiện cùng một bộ hành động tạo thành một lớp đối tượng cùng loại.

Từ góc độ ngôn ngữ lập trình, một lớp đối tượng có thể được coi là một loại mốc và một đối tượng riêng lẻ có thể được coi là một mốc của loại đó. Việc lập trình viên định nghĩa các lớp đối tượng của riêng mình cho một tập hợp các nhiệm vụ cụ thể sẽ cho phép anh ta mô tả các nhiệm vụ riêng lẻ theo chính lớp nhiệm vụ đó (với sự lựa chọn thích hợp về tên loại và tên đối tượng, các tham số của chúng và các hành động được thực hiện).

Do đó, cách tiếp cận hướng đối tượng giả định rằng khi phát triển một chương trình, các lớp đối tượng được sử dụng trong chương trình phải được xác định và các mô tả của chúng phải được xây dựng, sau đó phải tạo ra các thể hiện của các đối tượng cần thiết và phải xác định sự tương tác giữa chúng.

Việc cấu trúc các lớp đối tượng thường thuận tiện để chúng tạo thành một cấu trúc phân cấp. Ví dụ: lớp “Sinh viên”, mô tả một sinh viên trừu tượng, có thể làm cơ sở để xây dựng các lớp “sinh viên năm thứ nhất”, “sinh viên năm thứ hai”, v.v., có tất cả các đặc tính của sinh viên nói chung và một số thuộc tính bổ sung, đặc trưng của một sinh viên của một khóa học cụ thể. Khi phát triển giao diện người dùng, các chương trình có thể sử dụng các đối tượng của lớp “Cửa sổ” chung và các đối tượng của các lớp cửa sổ đặc biệt, ví dụ: cửa sổ thông báo thông tin, cửa sổ nhập dữ liệu, v.v. Trong các cấu trúc phân cấp như vậy, một lớp có thể được coi là lớp cơ sở cho các lớp khác dẫn xuất từ ​​nó. Một đối tượng của lớp dẫn xuất có tất cả các thuộc tính của lớp cơ sở và một số thuộc tính của riêng nó và nó có thể phản hồi các loại thông báo giống nhau từ các đối tượng khác như một đối tượng của lớp cơ sở và các thông báo chỉ có ý nghĩa đối với lớp cơ sở. Lớp có nguồn gốc. Người ta thường nói rằng một đối tượng của lớp dẫn xuất kế thừa tất cả các thuộc tính của lớp cơ sở.

Một số tham số của một đối tượng có thể được định vị bên trong đối tượng và không thể tác động trực tiếp từ bên ngoài đối tượng. Ví dụ: trong khi một chiếc ô tô đang di chuyển, người điều khiển đối tượng chỉ có thể tác động đến một bộ điều khiển giới hạn (vô lăng, ga, bàn đạp ly hợp và phanh, cần số) và không thể truy cập toàn bộ các thông số đặc trưng cho trạng thái. của động cơ và toàn bộ chiếc xe.

Rõ ràng, để sử dụng hiệu quả cách tiếp cận đối tượng để phát triển chương trình, cần có các ngôn ngữ lập trình hỗ trợ phương pháp này, tức là. cho phép bạn xây dựng mô tả về các lớp đối tượng, tạo dữ liệu về các loại đối tượng và thực hiện các thao tác trên đối tượng. Một trong những ngôn ngữ đầu tiên như vậy là ngôn ngữ SmallTalk, trong đó tất cả dữ liệu là đối tượng của các lớp nhất định và hệ thống lớp tổng thể được xây dựng dưới dạng cấu trúc phân cấp dựa trên các lớp cơ sở được xác định trước.

Kinh nghiệm lập trình cho thấy mọi cách tiếp cận mang tính phương pháp trong công nghệ lập trình đều không nên áp dụng một cách mù quáng mà bỏ qua các cách tiếp cận khác. Điều này cũng áp dụng cho cách tiếp cận hướng đối tượng. Có một số vấn đề điển hình mà tính hữu dụng của nó là rõ ràng nhất; những vấn đề đó đặc biệt bao gồm các nhiệm vụ mô hình hóa mô phỏng và đối thoại lập trình với người dùng. Cũng có những vấn đề trong đó việc sử dụng cách tiếp cận khách quan sẽ không dẫn đến điều gì ngoài những chi phí lao động không cần thiết. Về vấn đề này, các ngôn ngữ lập trình hướng đối tượng, cho phép kết hợp cách tiếp cận đối tượng với các phương pháp khác, đã trở nên phổ biến nhất. Trong một số ngôn ngữ và hệ thống lập trình, việc sử dụng phương pháp tiếp cận đối tượng bị giới hạn ở các công cụ giao diện người dùng (ví dụ: các phiên bản đầu tiên của Visual FoxPro).

Các ngôn ngữ hướng đối tượng được sử dụng phổ biến nhất hiện nay là Pascal với các đối tượng và C++, với các công cụ tiên tiến nhất để làm việc với các đối tượng có trong C++.

Hầu hết tất cả các ngôn ngữ lập trình hướng đối tượng đều là ngôn ngữ đang phát triển; các tiêu chuẩn của chúng thường xuyên được cải tiến và mở rộng. Hậu quả của sự phát triển này là sự khác biệt tất yếu trong ngôn ngữ đầu vào của trình biên dịch của các hệ thống lập trình khác nhau. .Các hệ thống lập trình phổ biến nhất hiện nay là Microsoft C++, Microsoft Visual C++ và các hệ thống lập trình của Borland International. Tài liệu khác trong sổ tay này được trình bày liên quan đến hệ thống lập trình Borland C++. Điều này chủ yếu là do sự hiện diện trong hệ thống lập trình này của một môi trường tích hợp được phát triển kết hợp trình soạn thảo văn bản, trình biên dịch, trình liên kết (trình liên kết) và các công cụ gỡ lỗi.

2. Thông tin cơ bản về ngôn ngữ C

2.1 Mục đích của Tập, thông tin lịch sử

Ngôn ngữ C được phát triển vào những năm 70 dưới dạng ngôn ngữ lập trình hệ thống. Đồng thời, nhiệm vụ là phải có được một ngôn ngữ có thể đảm bảo việc thực hiện các ý tưởng về lập trình có cấu trúc và thủ tục cũng như khả năng thực hiện các kỹ thuật lập trình hệ thống cụ thể. Ngôn ngữ như vậy sẽ cho phép phát triển các chương trình phức tạp ở mức độ tương đương với lập trình hợp ngữ, nhưng nhanh hơn nhiều. Những mục tiêu này phần lớn đã đạt được. Hầu hết các trình biên dịch C được viết bằng hệ điều hành C, UNIX<также почти полностью написана на Си. Недостатком Си оказалась низкая надежность разрабатываемых программ из-за отсутствия контроля типов. Попытка поправить дело включением в систему программирования Си отдельной программы, контролирующей неявные преобразования типов, решила эту проблему лишь частично.

Dựa trên C, ngôn ngữ C++ được phát triển vào những năm 80, ban đầu được gọi là “C withclass”. C++ thực tế bao gồm ngôn ngữ C và được bổ sung các công cụ lập trình hướng đối tượng. Phiên bản hoạt động của C++ xuất hiện vào năm 1983. Kể từ đó, ngôn ngữ này tiếp tục phát triển và một số phiên bản của tiêu chuẩn C và C++ dự thảo đã được xuất bản.

Một số công ty phần mềm đã phát triển trình biên dịch cho C và C++. Hệ thống lập trình của Borland International nổi bật so với các công ty khác chủ yếu nhờ cách tiếp cận toàn diện để phát triển chương trình, được thể hiện ở việc đưa vào hệ thống lập trình của môi trường nhà phát triển tích hợp kết hợp, dưới sự kiểm soát chung, trình soạn thảo văn bản để nhập mã nguồn chương trình, một trình biên dịch, một trình soạn thảo liên kết và một bộ công cụ gỡ lỗi. Năm 1989, công ty này phát hành hệ thống Turbo C++, bao gồm trình biên dịch C++ chạy trên hệ điều hành DOS; từ năm 1992, hệ thống Borland C++ được sản xuất, chứa trình biên dịch C++ cho DOS và WINDOWS từ năm 1997, phiên bản Borland được cung cấp; C 5.0, chứa trình biên dịch C++ cho WINDOWS và trình biên dịch cho WINDOWS hiện cho phép bạn phát triển cả phiên bản chương trình 16 bit và 32 bit cho PC có bộ xử lý i486 và Pentium.

Chương trình C/C++ là một hoặc nhiều tệp nguồn có thể được dịch riêng. Kết quả dịch (tệp đối tượng) được kết hợp thành tập tin thực thi trình soạn thảo liên kết (linker). Nhìn chung có hai loại tệp nguồn: tệp tiêu đề và tệp chương trình. Các tệp tiêu đề chứa các mô tả về kiểu dữ liệu và nguyên mẫu hàm và được dự định đưa vào các tệp chương trình trước khi chúng được biên dịch; tên của chúng thường có phần mở rộng .h, chẳng hạn như stdio.h. Các tệp chương trình chứa các mô tả về hàm và có thể cả các biến và hằng toàn cục; tên của chúng thường được viết bằng phần mở rộng .c hoặc .cpp, ví dụ: myprog.cpp. Tệp tiêu đề giống nhau có thể được bao gồm trong nhiều tệp chương trình

Mỗi tệp chứa một chuỗi cái gọi là "định nghĩa bên ngoài" mô tả các kiểu dữ liệu, biến, hằng và hàm.

Các đoạn văn sau đây trong phần này cung cấp cái nhìn tổng quan về các tính năng của C/C++ không liên quan đến hướng đối tượng C++.

2.2 Bảng chữ cái, các kiểu cơ bản và mô tả dữ liệu.

Bảng chữ cái ngôn ngữ bao gồm hầu hết tất cả các ký hiệu được tìm thấy trên bàn phím PC tiêu chuẩn:

Các chữ cái Latinh A...Z, a...z;

Các chữ số 0...9;

Dấu hiệu hoạt động và dấu phân cách:

{ } () . , -> & * + - ~ ! / % ? : ; = < > | # ^

Một số thao tác được biểu thị bằng sự kết hợp của các ký hiệu; ý nghĩa của các ký hiệu thao tác trong một số trường hợp phụ thuộc vào ngữ cảnh mà chúng được sử dụng.

Các kiểu dữ liệu cơ bản (được xác định trước) được kết hợp thành hai nhóm: dữ liệu số nguyên và dữ liệu dấu phẩy động (thực).

Dữ liệu số nguyên có thể là số nguyên có dấu thông thường hoặc số nguyên không dấu. Dựa trên số bit được sử dụng để biểu thị một giá trị nhất định (phạm vi giá trị), sự phân biệt được tạo ra giữa số nguyên thông thường (int), số nguyên ngắn (int ngắn) và số nguyên dài (int dài). Dữ liệu ký tự (char) cũng được coi là số nguyên và có thể được ký hoặc không dấu.

Hằng số kiểu số nguyên được viết dưới dạng dãy số thập phân, kiểu của hằng số phụ thuộc vào số chữ số trong ký hiệu hằng số và có thể được xác định bằng cách thêm các chữ cái L hoặc l (loại dài), U hoặc u (loại không dấu) hoặc sự kết hợp của chúng ở cuối hằng số:

321 - hằng số kiểu int,

5326u - hằng số kiểu int không dấu,

45637778 - hằng số kiểu int dài,

2746L - hằng số kiểu int dài.

Hằng số nguyên có thể được viết trong hệ thống số bát phân, trong trường hợp này chữ số đầu tiên phải là 0, số chỉ được chứa các chữ số 0…7:

0777 - hằng số kiểu int,

0453377 - hằng số loại dài.

Các hằng số nguyên cũng có thể được viết bằng hệ thập lục phân ký hiệu, trong trường hợp này, mục nhập hằng số bắt đầu bằng các ký tự 0x hoặc 0X:

0x45F - hằng số kiểu int,

0xFFFFFFFF - hằng số loại dài không dấu.

Các hằng số kiểu char luôn được đặt trong dấu ngoặc đơn và giá trị của hằng số được chỉ định bởi một ký tự trong bộ ký tự được sử dụng hoặc bởi một hằng số nguyên đứng trước dấu gạch chéo ngược: "A", "\33", "\042 ", "\x1B". Ngoài ra còn có một số ký tự đặc biệt có thể được chỉ định làm giá trị hằng char:

"\n" - dòng mới,

"\t" - tab ngang,

"\v" - tab dọc,

"\r" - trả lại vận chuyển,

"\f" - nguồn cấp dữ liệu trang,

"\Một" - tín hiệu âm thanh,

"\"" - trích dẫn đơn (dấu nháy đơn),

"\"" là trích dẫn kép,

"\\" là dấu gạch chéo ngược.

Số thực có thể là một trong ba loại: float, double, long double. Phạm vi giá trị cho từng loại này phụ thuộc vào máy tính và trình biên dịch được sử dụng. Các hằng số kiểu thực có thể được viết ở dạng tự nhiên hoặc dạng mũ và có kiểu double theo mặc định, ví dụ: 15,31, 1,43E-3, 2345.1e4. Nếu cần, loại hằng số có thể được chỉ định bằng cách viết ở cuối hậu tố f hoặc F cho loại float hoặc hậu tố l hoặc L cho loại long double.

Các biến khai báo định nghĩa bên ngoài bao gồm một bộ xác định lớp lưu trữ tùy chọn, các bộ xác định kiểu và một danh sách được gọi là các bộ khai báo khởi tạo, mỗi bộ khai báo mã định danh của một biến và có thể cả giá trị được gán cho biến khi nó được khai báo. Định nghĩa bên ngoài kết thúc bằng dấu chấm phẩy:

int i, j, k; // Ba biến int không được khởi tạo rõ ràng

gấp đôi x=1, y=2; //Hai biến kép có giá trị ban đầu là 1 và 2

ký tự c1="0"; // Biến kiểu char, giá trị của nó là mã ký tự 0

Văn bản được viết sau dấu // trong các ví dụ này là một nhận xét và chỉ dùng để ghi lại chương trình. Một nhận xét như vậy chỉ có thể chiếm một dòng văn bản và được phép trong văn bản chương trình C++. Chú thích kéo dài nhiều dòng được đặt trong dấu ngoặc đặc biệt /* và */.

Định nghĩa bên ngoài có thể chỉ định một trong các từ khóa extern, static hoặc typedef làm bộ xác định lớp bộ nhớ. Bộ xác định bên ngoài có nghĩa là đối tượng được khai báo thuộc về một tệp chương trình khác và ở đây thông tin về tên và loại của nó được cung cấp và không có biểu thức khởi tạo nào được đưa ra. hiện tại. Trình xác định tĩnh giới hạn phạm vi của tên được khai báo trong một tệp hoặc khối nhất định nếu khai báo được chứa trong một khối.

Nếu phần khai báo dữ liệu được chứa trong phần thân hàm (khai báo cục bộ), thì có thể chỉ định bộ xác định lớp thanh ghi hoặc bộ nhớ tự động. Trình xác định thanh ghi có bản chất là tư vấn; trình biên dịch cố gắng đặt lớp này vào thanh ghi bộ xử lý nếu hiện tại có thanh ghi trống. Trình xác định tự động là mặc định và do đó không được chỉ định rõ ràng; điều đó có nghĩa là lớp tự động phải được đặt trên ngăn xếp phần mềm khi hàm được gọi.

Trình xác định typedef được sử dụng để gán tên cho kiểu dữ liệu đang được mô tả và sẽ được thảo luận chi tiết hơn trong đoạn tiếp theo.

Cùng với các hằng số theo nghĩa đen được hiển thị ở trên, các giá trị của chúng được xác định bởi cách biểu diễn của chúng trong chương trình, C và C++ cung cấp các hằng số được gán tên riêng - hằng số được đặt tên. Mô tả của một hằng số được đặt tên chứa ký hiệu const, ví dụ:

const kép Pi = 3.141592653;

Một biến có mã định danh được khai báo bằng bộ mô tả const không thể được gán một giá trị khác với giá trị được đặt khi khai báo mã định danh. Giá trị khởi tạo khi khai báo một hằng là bắt buộc.

Cùng với các kiểu số nguyên cơ bản và kiểu thực có kích thước khác nhau, một chương trình có thể khai báo và sử dụng dữ liệu thuộc các kiểu do người lập trình xác định: con trỏ, tham chiếu, tập hợp dữ liệu và dữ liệu liệt kê.

Kiểu liệt kê được sử dụng cho dữ liệu số nguyên có thể nhận một tập hợp giá trị giới hạn. Mỗi giá trị có tên định danh riêng và một số nguyên, giá trị của tên này. Việc khai báo kiểu liệt kê được xây dựng theo sơ đồ sau:

bộ định danh enum (danh sách liệt kê) bộ khai báo-khởi tạo;

Ở đây mã định danh chỉ định tên của kiểu enum, danh sách liệt kê bao gồm các điều tra viên được phân tách bằng dấu phẩy. Mỗi điều tra viên được chỉ định bởi một mã định danh và có thể là một giá trị nguyên kiểu char hoặc int, ví dụ:

màu enum (ĐỎ, XANH, XANH) en_color;

enum lex_type ( CNST, VAR, OPER=3, FUNC );

Nếu giá trị của điều tra viên không được chỉ định, thì giá trị đầu tiên sẽ nhận giá trị 0 và mỗi giá trị tiếp theo sẽ nhận giá trị lớn hơn 1. Nói chung, bất kỳ điều tra viên nào theo mặc định đều có giá trị lớn hơn giá trị trước đó 1. Trong C/C++, người ta thường viết các định danh của điều tra viên bằng chữ in hoa. Tên của bộ đếm được sử dụng làm hằng số được đặt tên hoặc để gán cho các biến thuộc kiểu liệt kê.

Trong C/C++, con trỏ được sử dụng để tham chiếu một biến thuộc loại này hay loại khác. Con trỏ là kiểu dữ liệu có giá trị là địa chỉ của dữ liệu khác. Khi khai báo một con trỏ, dấu * được viết trước định danh. Con trỏ có thể được khởi tạo bằng địa chỉ của địa chỉ đã cho; thao tác & (dấu ký hiệu) được sử dụng để lấy địa chỉ:

gấp đôi *px, *py =

Đối với con trỏ, các phép toán so sánh được xác định, thêm một con trỏ vào một số nguyên, trừ hai con trỏ, cũng như một phép toán lập chỉ mục (thao tác).

Để truy cập một biến bằng con trỏ, một thao tác hủy tham chiếu được thực hiện, ký hiệu là * (dấu hoa thị), ví dụ *py = 7.5; .

Khi khai báo một con trỏ, có thể sử dụng bộ mô tả const, ví dụ:

const int cc = 20;

const int *pc = // Có thể được khởi tạo bằng địa chỉ của một hằng số.

gấp đôi *const delta = 0,001; // Con trỏ - hằng

Ngoài các biến và con trỏ thông thường, C++ còn có loại “tham chiếu biến”, chỉ định tên bổ sung (bí danh) cho biến. Biểu diễn bên trong của một liên kết giống như một con trỏ, tức là. ở dạng địa chỉ biến, nhưng việc truy cập một biến bằng tham chiếu được viết dưới dạng tương tự như truy cập biến bằng tên cơ sở của nó. Biến loại tham chiếu luôn được khởi tạo bằng cách chỉ định tên của biến mà tham chiếu đề cập đến. Khi khai báo một liên kết, tên loại được theo sau bởi & (dấu và):

Với mô tả này, các toán tử aii = 5; và ii = 5; là tương đương.

Mảng có thể được hình thành từ các biến thuộc bất kỳ loại nào. Khi khai báo một mảng trong bộ khai báo khởi tạo, mã định danh mảng được theo sau bởi số phần tử mảng trong ngoặc vuông:

int a [ 5 ] ; // Mảng 5 phần tử kiểu int

Các chỉ số phần tử của mảng luôn bắt đầu từ 0, chỉ số của phần tử cuối cùng nhỏ hơn số phần tử trong mảng một đơn vị. Một mảng có thể được khởi tạo bằng danh sách các giá trị trong dấu ngoặc nhọn:

int b [ 4 ] = ( 1, 2, 3, 4 );

Nếu bạn có một danh sách khởi tạo bao gồm tất cả các phần tử của mảng, bạn không cần chỉ định số lượng phần tử mảng; nó sẽ được xác định bởi trình biên dịch:

int c = ( 1, 2, 3 ); // Mảng 3 phần tử kiểu int

Mảng có từ 2 chiều trở lên được coi là mảng mảng và số phần tử được chỉ định cho mỗi chiều:

gấp đôi aa [ 2 ] [ 2 ] = ( 1, 2, 3, 4 ); // Ma trận 2 * 2

Mảng kiểu char có thể được khởi tạo bằng một chuỗi ký tự. Chuỗi ký tự là một chuỗi gồm bất kỳ ký tự nào ngoài dấu ngoặc kép và dấu gạch chéo ngược, được đặt trong dấu ngoặc kép. Nếu một chuỗi ký tự không vừa trên một dòng, nó có thể bị gián đoạn bằng ký tự "\" và tiếp tục từ đầu dòng tiếp theo. Tiêu chuẩn C++ cũng cung cấp một cách khác để viết các chuỗi ký tự dài dưới dạng một số chuỗi ký tự được viết thành một hàng. Nếu không có ký tự nào ngoài khoảng trắng giữa các chuỗi ký tự, thì các ký tự đó sẽ được trình biên dịch hợp nhất thành một ký tự.

Khi được đặt trong bộ nhớ, ký tự "\0" được thêm vào cuối chuỗi ký tự, tức là. byte rỗng. Một chuỗi ký tự cũng có thể được sử dụng để khởi tạo một con trỏ thành kiểu char:

char str1 [ 11 ] = "Đây là một chuỗi",

str2 = "Kích thước của mảng này đã được xác định"

"số ký tự bằng chữ + 1";

char *pstr = "Con trỏ khởi tạo chuỗi";

Tên mảng trong C/C++ là một con trỏ hằng tham chiếu đến phần tử đầu tiên của mảng, có chỉ số bằng 0. Để truy cập một phần tử mảng, hãy chỉ định mã định danh mảng và chỉ mục phần tử trong ngoặc đơn, ví dụ: c, aa.

2.3 Cơ cấu và đoàn thể

Cùng với mảng, C/C++ còn có các tập hợp dữ liệu như cấu trúc và liên kết. Kiểu cấu trúc là một tập hợp dữ liệu có thứ tự thuộc các loại khác nhau có thể được truy cập dưới dạng một dữ liệu. Mô tả loại kết cấu được xây dựng theo sơ đồ sau:

định danh cấu trúc

(người khai báo thành viên) người khai báo_initializers;

Thông báo như vậy thực hiện hai chức năng, đầu tiên là thông báo kiểu kết cấu, thứ hai, các biến kiểu này được khai báo.

Mã định danh sau từ khóa struct là tên của kiểu cấu trúc. Tên kiểu có thể bị thiếu, khi đó kiểu sẽ không có tên và dữ liệu kiểu này không thể được khai báo trong các phần khác của chương trình. Declarators_initializers khai báo các biến cụ thể của một kiểu cấu trúc, tức là dữ liệu của kiểu được mô tả, các con trỏ tới kiểu này và các mảng dữ liệu. Declarators_initializers có thể vắng mặt, trong trường hợp đó khai báo chỉ mô tả loại cấu trúc.

Cấu trúc mô tả một điểm trên mặt phẳng có thể được định nghĩa như sau:

struct Point_struct // Tên cấu trúc

( int x, y; ) // Khai báo các thành viên cấu trúc

điểm1, *ptr_to_point, điểm ; // Dữ liệu kiểu cấu trúc

Các thành viên (thành phần) của cấu trúc được mô tả tương tự như dữ liệu của kiểu tương ứng và có thể là dữ liệu vô hướng, con trỏ, mảng hoặc dữ liệu của kiểu cấu trúc khác. Ví dụ: để mô tả kiểu cấu trúc “hình chữ nhật có các cạnh song song với trục tọa độ”, có thể đưa ra một số tùy chọn:

(Điểm p1; // Tọa độ góc trên bên trái

Điểm p2; // Tọa độ góc dưới bên phải

(Điểm p; // Góc trên bên trái

chiều rộng int; // Chiều rộng

int cao; // Chiều cao của hình chữ nhật

Bởi vì chỉ các tên kiểu được xác định trước đó phải được sử dụng khi khai báo các thành viên cấu trúc, nên có một tùy chọn để khai báo trước một cấu trúc bằng cách chỉ xác định tên của kiểu cấu trúc. Ví dụ: để mô tả một phần tử của cây nhị phân chứa các con trỏ tới các nhánh trái và phải của cây và một con trỏ tới một số cấu trúc thuộc loại Giá trị chứa giá trị của nút đã cho, bạn có thể thực hiện điều này:

cấu trúc Tree_element

Phần tử cây *trái, *phải;

Các thành viên của cấu trúc có thể được gọi là trường bit, khi một số dữ liệu số nguyên có độ dài nhỏ hơn được đặt trong trường bộ nhớ của một biến kiểu số nguyên (int hoặc unsigned int). Ví dụ, trong một số chương trình phân tích cú pháp, mô tả của một từ vị chứa loại từ vị (tối đa sáu giá trị) và số sê-ri của từ vị trong bảng thuộc loại tương ứng (tối đa 2000 giá trị). Để biểu thị giá trị loại mã thông báo, ba chữ số nhị phân (ba bit) là đủ và để biểu thị các số từ 0 đến 2000, cần có 11 chữ số nhị phân (11 bit). Mô tả cấu trúc chứa thông tin về mã thông báo có thể trông như thế này:

(unsign int type_lex: 3;

unsigned int num_lex:11;

Dấu hai chấm có số nguyên sau tên thành viên cấu trúc cho biết đó là trường bit và số nguyên chỉ định kích thước của trường tính bằng bit.

Một liên kết có thể được định nghĩa là một cấu trúc có các thành phần đều nằm trong bộ nhớ từ cùng một địa chỉ. Do đó, hợp tại mỗi thời điểm chứa một trong các giá trị có thể có. Để chứa một liên minh, một vùng bộ nhớ được phân bổ đủ lớn để chứa thành viên lớn nhất của liên minh. Việc sử dụng liên kết cũng cho phép truy cập cùng một trường bộ nhớ bằng các tên khác nhau và được hiểu là các giá trị thuộc các loại khác nhau.

Mô tả của một liên kết được xây dựng theo sơ đồ tương tự như mô tả cấu trúc, nhưng thay vì từ khóa struct, từ liên kết được sử dụng, ví dụ: uword liên kết cho phép bạn diễn giải trường bộ nhớ dưới dạng int không dấu hoặc dưới dạng một mảng gồm hai phần tử thuộc loại unsigned char.

(không dấu int bạn;

char không dấu b [ 2 ];

Các mô tả về kiểu do người lập trình khai báo, bao gồm cả cấu trúc và kết hợp, có thể khá lớn, do đó C/C++ cung cấp khả năng gán tên riêng (từ đồng nghĩa) cho các kiểu, từ đó làm tăng tính rõ ràng văn bản chương trình. Một từ đồng nghĩa tên loại được giới thiệu với từ khóa typedef và được xây dựng dưới dạng quảng cáo thường xuyên, nhưng số nhận dạng trong phần khai báo trong trường hợp này được hiểu là từ đồng nghĩa của các loại được mô tả. Từ đồng nghĩa với tên loại thường được viết bằng chữ in hoa để phân biệt chúng với các mã định danh biến. Dưới đây là một số ví dụ về khai báo tên kiểu đồng nghĩa.

typedef struct ( double re, im ) PHỨC HỢP;

typedef int *PINT;

Sau những khai báo như vậy, một từ đồng nghĩa tên có thể được sử dụng làm công cụ xác định kiểu:

PHỨC HỢP ca, *pca; // biến kiểu COMPLEX và con trỏ tới COMPLEX

số PINT; // con trỏ tới int

Mô tả ở trên về cấu trúc và liên kết về cơ bản tương ứng với cách xây dựng chúng trong ngôn ngữ C. Trong C++, cấu trúc và kết hợp là trường hợp đặc biệt của kiểu dữ liệu đối tượng. thông tin thêmđiều này sẽ được thảo luận khi xem xét các công cụ C++ hướng đối tượng.

2.4 Các thao tác và biểu thức

Mặc dù có tập hợp hạn chế các kiểu dữ liệu cơ bản (dữ liệu số nguyên, số học thực và chuỗi ký tự), ngôn ngữ C++ xác định một tập hợp mở rộng các thao tác trên dữ liệu, một số trong đó tương ứng trực tiếp với các lệnh máy. Như trong tất cả các ngôn ngữ lập trình, các thao tác được sử dụng để xây dựng các biểu thức. Biểu thức là một chuỗi các toán hạng và dấu hiệu hoạt động và được sử dụng để tính toán một giá trị nhất định.

Các toán hạng trong biểu thức là các mã định danh biến, hằng số và chuỗi ký tự chuỗi, là các biểu thức chính. Biểu thức nằm trong dấu ngoặc đơn cũng được coi là biểu thức chính. Mỗi thao tác liên quan đến việc sử dụng một số loại toán hạng nhất định (số nguyên, số thực, con trỏ). Toán tử gán trong C++ cũng là một biểu thức; do đó, có sự phân biệt giữa toán hạng có thể được gán giá trị mới và toán hạng có giá trị không thể thay đổi. Để một toán hạng được gán một giá trị, nó phải tương ứng với một vị trí bộ nhớ và trình biên dịch phải biết địa chỉ của bộ nhớ đó. Các toán hạng như vậy được gọi là biểu thức L (từ tiếng Anh bên trái) vì chúng có thể được viết ở phía bên trái của toán tử gán.

Kết quả của việc đánh giá một biểu thức phụ thuộc vào mức độ ưu tiên của các phép toán. Trong C++ một hệ thống phức tạpưu tiên hoạt động, bao gồm 16 cấp độ. Bảng 2.1 hiển thị danh sách các thao tác C++ cho biết mức độ ưu tiên, mục đích và sơ đồ ghi của chúng.

Bảng 2.1

Ưu tiên

Dấu hiệu hoạt động

Mục đích

Cơ chế

Truy cập tên chung hoặc tên từ phạm vi khác

::định danh (toàn cầu)
Tên phạm vi: : Structure_member_name

Truy cập thành viên cấu trúc bằng con trỏ tới cấu trúc

con trỏ -> Structure_member_name

tên_cấu trúc. cấu trúc_thành viên_name

Truy cập một phần tử mảng

chỉ mục [chỉ mục]

Chuyển đổi kiểu dữ liệu

biểu thức type_name (biểu thức) hoặc (loại)

Gọi một hàm

hàm (đối số)

Tự động tăng

Giá trị L hoặc
Giá trị L++

Tự động giảm

Giá trị L hoặc
Giá trị L--

Đảo ngược bit

~ biểu thức số nguyên

Phủ định logic

Sự biểu lộ

Điểm trừ đơn

Sự biểu lộ

Đơn Plus

Sự biểu lộ

Lấy một địa chỉ

& giá trị L

Vô hiệu hóa con trỏ

* con trỏ

Cấp phát bộ nhớ động

kiểu dữ liệu mới

Giải phóng bộ nhớ

xóa con trỏ

Giải phóng bộ nhớ cho một mảng

xóa con trỏ

Kích thước này

biểu thức sizeof

Loại kích thước nhất định

sizeof (tên loại)

Phép nhân

biểu thức * biểu thức

biểu hiện/biểu hiện

Phần dư của phép chia cho tổng

biểu thức % biểu thức

Truy cập thành viên cấu trúc bằng con trỏ

con trỏ_to_cấu trúc ->* tên_thành viên của con trỏ_cấu trúc

Tham chiếu đến một thành viên cấu trúc theo tên cấu trúc

tên_cấu trúc.*
tên thành viên cấu trúc con trỏ

Phép cộng

biểu thức + biểu thức

Phép trừ

biểu hiện - biểu hiện

Sang trái

biểu thức số nguyên<< целое_выражение

Chuyển sang phải

biểu thức số nguyên >> biểu thức số nguyên

sự biểu lộ< выражение

Ít hơn hoặc bằng

sự biểu lộ<= выражение

biểu thức > biểu thức

Nhiều hơn hoặc bằng

biểu thức >= biểu thức

biểu thức == biểu thức

biểu thức != biểu thức

Kết hợp bitwise

biểu hiện & biểu hiện

Từ chối sự tương đương

biểu thức ^ biểu thức

Phân tách bitwise

biểu hiện | sự biểu lộ

Hợp lý "VÀ"

biểu thức && biểu thức

Hợp lý "HOẶC"

biểu hiện | | sự biểu lộ

Biểu thức điều kiện

sự biểu lộ? biểu thức1: biểu thức2

Bài tập đơn giản

biểu thức = biểu thức

Phép gán phức hợp, dấu @ - một trong các dấu toán tử * / % + -<< >> & ^ |

biểu thức @= biểu thức

Theo dõi hoạt động

biểu hiện, biểu hiện

Hãy xem xét các tính năng của việc sử dụng các hoạt động chính được liệt kê ở trên.

Phép toán ": :" (hai dấu hai chấm) được sử dụng để làm rõ tên của đối tượng chương trình trong trường hợp có hai tên giống nhau được biết đến tại thời điểm này trong chương trình, ví dụ: khi một tên được khai báo toàn cục và tên kia được khai báo trong thân của một hàm. Nếu tên đứng trước hai dấu hai chấm thì đó là tên chung.

Để truy cập các thành viên của một cấu trúc hoặc liên kết, bạn có thể sử dụng tên của dữ liệu cấu trúc hoặc một con trỏ tới dữ liệu cấu trúc. Trong trường hợp đầu tiên Họ và tên của một thành phần cấu trúc bao gồm tên của chính cấu trúc và tên của thành viên cấu trúc, cách nhau bằng dấu chấm. Trong trường hợp thứ hai, tên của con trỏ tới cấu trúc được theo sau bởi dấu -> (mũi tên), theo sau là tên của thành viên cấu trúc. Cho một chương trình khai báo kiểu cấu trúc AnyStruct chứa thành phần có tên là thành viên kiểu int và được khai báo

AnyStruct s1; // Dữ liệu s1 kiểu AnyStruct

AnyStruct *ps1 = // Con trỏ tới dữ liệu kiểu AnyStruct

Sau đó, thành viên của thành viên cấu trúc từ s1 có thể được truy cập dưới dạng s1.member hoặc ps1->member.

Vì một thành viên của cấu trúc có thể là một con trỏ, nên C++ có các phép toán đặc biệt để hủy tham chiếu một con trỏ như vậy, các phép toán .* và ->. Đặt một trong các thành viên của cấu trúc AnyStruct là một con trỏ pp1 tới dữ liệu kiểu int. Sau đó, các biểu thức s1.*pp1 và ps1->*pp1 sẽ cung cấp quyền truy cập vào giá trị chuẩn được trỏ tới bởi pp1 từ s1.

Ở trên đã lưu ý rằng tên của một mảng trong C/C++ được hiểu là một con trỏ không đổi tới phần tử đầu tiên của mảng. Để hủy đăng ký một con trỏ, tức là Để truy cập một giá trị đã cho bằng một con trỏ tới giá trị đã cho này, hãy sử dụng thao tác * (dấu hoa thị). Vì vậy, nếu chương trình khai báo một mảng

int Mảng1[10];

thì biểu thức *Array1=0 được sử dụng để gán giá trị 0 cho phần tử đầu tiên của mảng. Để truy cập một phần tử mảng tùy ý, bạn cần chỉ định chỉ mục của phần tử, ví dụ: Array1. Biểu thức này tương đương với *(Array1 + 3), tức là trước tiên bạn cần tăng con trỏ Array1 lên 3 đơn vị, sau đó hủy đăng ký con trỏ kết quả. Khi thêm một con trỏ vào một đối tượng thuộc loại T nào đó với số nguyên N, giá trị của con trỏ tăng lên N lần chiều dài thuộc loại này T. Lưu ý rằng chỉ mục có thể được đặt không chỉ cho tên mảng mà còn cho bất kỳ loại con trỏ nào, ngoại trừ con trỏ tới loại void:

int *pint = &Array[ 4 ]; pint [ 2 ] =1;

Trong ví dụ này, con trỏ pint được khởi tạo theo địa chỉ của phần tử thứ năm của mảng và sau đó phần tử thứ bảy của mảng đó được gán giá trị 1.

Chỉ mục có thể là bất kỳ biểu thức nào có giá trị kiểu số nguyên.

Vì C++ là ngôn ngữ được định kiểu nên nó xác định các chuyển đổi kiểu dữ liệu rõ ràng và ẩn. Chuyển đổi ngầm định được thực hiện trên các phép toán số học và phép gán kép và được gọi là chuyển đổi số học tiêu chuẩn. Các phép biến đổi này được thực hiện theo trình tự sau:

Nếu một toán hạng là long double thì toán hạng còn lại được chuyển thành long double;

Ngược lại, nếu một toán hạng thuộc loại double thì toán hạng kia sẽ được chuyển thành loại double;

Ngược lại, nếu một toán hạng thuộc kiểu float thì toán hạng còn lại sẽ được chuyển thành float;

Mặt khác, nếu một toán hạng thuộc loại unsigned long int, thì toán hạng còn lại được chuyển thành loại unsigned long int;

Ngược lại, nếu một toán hạng có kiểu long int, >toán hạng còn lại được chuyển thành kiểu long int;

Mặt khác, các chuyển đổi số nguyên tiêu chuẩn được thực hiện, với các trường bit char, short int và int được chuyển đổi thành int, thì nếu một toán hạng có kích thước lớn hơn(phạm vi giá trị lớn hơn) so với toán hạng khác, thì toán hạng thứ hai được chuyển đổi thành loại toán hạng lớn hơn;

Trong các trường hợp khác, toán hạng có kiểu int.

Chuyển đổi loại rõ ràng có thể được chỉ định theo hai hình thức. Dạng đầu tiên tương thích với C và theo sau tên loại trong ngoặc đơn với giá trị cần chuyển đổi, có thể là biểu thức chính hoặc biểu thức có toán tử một vị trí. Tên loại trong trường hợp này có thể được biểu thị bằng một chuỗi các bộ mô tả, ví dụ: (long int *) pp chỉ định việc chuyển đổi một số pp đã cho thành một loại con trỏ thành int dài. Dạng chuyển đổi loại thứ hai được viết dưới dạng lệnh gọi hàm, trong đó tên loại phải được chỉ định bởi một mã định danh, chẳng hạn như int(x). Cần lưu ý rằng kết quả của một chuyển đổi rõ ràng không phải là giá trị L.

Các hoạt động tự động tăng và giảm tự động (++ và --) có thể là tiền tố hoặc hậu tố và làm tăng (giảm) toán hạng của nó đi một, tức là. biểu thức ++x tương đương với x = x +1 và --x tương đương với x = x - 1. Một thao tác tiền tố được thực hiện trước khi toán hạng của nó được sử dụng để đánh giá biểu thức và một thao tác hậu tố được thực hiện sau biểu thức đó. toán hạng được sử dụng trong biểu thức, ví dụ như là kết quả của việc đánh giá biểu thức

X * 2 + y-- *3

biến x đầu tiên được tăng lên 1 rồi nhân với 2, biến y đầu tiên được nhân với 3, sau đó giảm đi 1. Nếu trước khi tính biểu thức này x và y bằng 1 thì kết quả của biểu thức sẽ bằng nhau đến 5, ngoài ra biến x sẽ nhận giá trị 2, biến y nhận giá trị 0. Như vậy, các phép toán tự tăng, tự giảm luôn có tác dụng phụ là thay đổi giá trị các toán hạng của chúng. Toán hạng của các phép toán này phải là giá trị L.

Toán tử ~ (dấu ngã) chỉ áp dụng cho một giá trị số nguyên và thay thế tất cả các bit của toán hạng của nó bằng giá trị từ 0 đến 1 và các bit có giá trị từ 1 đến 0.

Phủ định logic (thao tác!) trả về giá trị 0 của một loại số nguyên nếu toán hạng khác 0 hoặc giá trị 1 nếu toán hạng bằng 0.

Các phép tính “đơn +” và “đơn -” có ý nghĩa toán học thông thường, dấu + không làm thay đổi giá trị của toán hạng, dấu - đổi dấu của toán hạng thành ngược lại.

Để lấy địa chỉ của toán hạng, là giá trị L, toán tử & (dấu và) được sử dụng. Kết quả của thao tác này sẽ là một con trỏ tới kiểu dữ liệu tương ứng. Hội thảo con trỏ, tức là việc lấy một giá trị nhất định từ một con trỏ tới nó được đảm bảo bằng thao tác * (dấu hoa thị). Kết quả của hoạt động dereference là giá trị L.

C++ xác định các thao tác đặt dữ liệu vào bộ nhớ động và xóa dữ liệu động khỏi bộ nhớ.

Thao tác mới yêu cầu tên loại làm toán hạng và nhằm đặt loại đã chỉ định trong bộ nhớ động; kết quả của thao tác sẽ là một con trỏ tới loại đã cho. Nếu không thể cấp phát bộ nhớ, thao tác mới trả về NULL - một hằng số được xác định trước có giá trị null trong hầu hết các trình biên dịch C và C++. Bộ nhớ được phân bổ bởi thao tác mới có thể được khởi tạo bằng cách chỉ định giá trị ban đầu trong ngoặc đơn sau tên loại dữ liệu vô hướng; việc thiết lập giá trị ban đầu cho tập hợp dữ liệu sẽ được thảo luận sau. Ví dụ về việc sử dụng thao tác mới:

int *ip = int mới; /* tạo một đối tượng kiểu int và lấy một con trỏ tới nó */

int *ip2 = int mới(2); // tương tự với việc cài đặt giá trị ban đầu 2

inr *intArray = int mới [ 10 ]; // mảng gồm 10 phần tử kiểu int

gấp đôi **matr = gấp đôi mới [ m ] [ n ]; // ma trận m hàng và n cột

Dữ liệu được đặt trong bộ nhớ động bằng thao tác mới sẽ bị xóa khỏi bộ nhớ bằng thao tác xóa bằng toán hạng con trỏ có giá trị được lấy bằng thao tác mới, ví dụ:

xóa intArray; xóa ip2;

Thao tác xóa chỉ giải phóng bộ nhớ động chứ không làm thay đổi giá trị của toán hạng con trỏ. Người lập trình phải nhớ rằng sau khi giải phóng bộ nhớ, con trỏ này không thể được sử dụng để truy cập dữ liệu.

Kích thước của một loại nhất định hoặc loại đã cho tính bằng byte có thể được lấy bằng cách sử dụng thao tác sizeof. Toán hạng có thể thuộc bất kỳ loại nào ngoại trừ loại hàm và trường bit. Nếu toán hạng là tên kiểu thì nó phải được đặt trong dấu ngoặc đơn. Giá trị trả về có kiểu size_t được xác định trước, đây là kiểu số nguyên có kích thước được xác định bởi việc triển khai trình biên dịch, thường là kiểu size_t tương ứng với unsigned int. Kích thước của mảng bằng số byte mà mảng chiếm trong bộ nhớ, kích thước của một chuỗi ký tự là số ký tự trong ký tự +1, tức là. byte null kết thúc được tính đến khi xác định độ dài của chữ. Giá trị được trả về bởi sizeof là một hằng số.

Các phép tính số học kép gồm nhân (*), chia (/), phần dư của phép chia số nguyên (%), cộng (+) và trừ (-) có ý nghĩa thông thường và mức độ ưu tiên tương đối thông thường. Nếu toán hạng của một phép toán số học có nhiều loại khác nhau thì các chuyển đổi số học tiêu chuẩn sẽ được thực hiện trước tiên và loại kết quả của phép toán được xác định bởi loại toán hạng chung sau các chuyển đổi tiêu chuẩn. Do đó, biểu thức 7/2 sẽ cho kết quả là 3 số nguyên vì cả hai toán hạng đều thuộc loại int và biểu thức 7.0/2 sẽ cho kết quả là 3,5 gấp đôi vì toán hạng đầu tiên thuộc loại.

Các phép toán liên hệ của hai biểu thức (<, <=, >, >=) yêu cầu toán hạng thuộc loại số học hoặc cả hai toán hạng phải là con trỏ tới cùng một loại. Đối với toán hạng kiểu số học, các giá trị của toán hạng được ước tính, chuyển đổi số học tiêu chuẩn được thực hiện và int thuộc loại 1 được trả về nếu quan hệ giữ (true) hoặc 0 nếu quan hệ không giữ (false). Khi so sánh hai con trỏ, kết quả phụ thuộc vào vị trí bộ nhớ tương đối của các đối tượng được tham chiếu bởi con trỏ. Các thao tác so sánh (== và !=) được thực hiện theo cách tương tự nhưng có mức độ ưu tiên thấp hơn.

Các biểu thức quan hệ có thể được kết nối bằng các liên kết logic && (kết hợp, phép nhân logic) và | | (phân tách, phép cộng logic). Nói chung, toán hạng của các kết nối logic có thể là bất kỳ giá trị vô hướng nào và phép toán && cho kết quả bằng 1 kiểu int nếu cả hai toán hạng đều có giá trị khác 0 và | | cho kết quả là 0 nếu cả hai toán hạng đều bằng 0. Một dạng tính toán rút gọn giá trị của các kết nối logic được sử dụng: nếu trong thao tác && toán hạng đầu tiên bằng 0 thì toán hạng thứ hai không được tính và trả về 0, nếu trong | | Toán hạng đầu tiên không bằng 0, toán hạng thứ hai không được đánh giá và trả về giá trị 1.

Như đã lưu ý, phép gán, được biểu thị bằng dấu = trong C/C++, được coi là một phép toán và trả về giá trị được gán cho toán hạng bên trái. Hoạt động gán được đánh giá từ phải sang trái, tức là. đầu tiên giá trị được gán được tính toán, sau đó phép gán được thực hiện. Điều này cho phép bạn viết các biểu thức như x = y = z = 1 để đặt nhiều biến có cùng giá trị. Có thể, mặc dù điều này làm giảm tính rõ ràng của chương trình, nhưng vẫn có thể xây dựng các biểu thức với các hiệu ứng phụ có dạng (x = 2) * (y = 3) + (z = 4). Kết quả của biểu thức này sẽ là 24, nhưng đồng thời các biến x, y và z sẽ nhận giá trị mới.

Ngoài phép gán đơn giản, còn có một tập hợp các phép gán phức hợp trong đó phép gán được kết hợp với toán tử kép được chỉ định. Viết x += y tương đương với x = x + y.

Các phép dịch chuyển trái và phải được xác định cho các toán hạng số nguyên. Khi thực hiện thao tác e1<< e2 биты первого операнда сдвигаются влево на e1 разрядов и результат имеет тип первого операнда. Освобождающиеся правые разряды заполняются нулями. При сдвиге вправо (e1 >> e2) nếu e1 thuộc loại không dấu, các bit bên trái còn trống sẽ được điền bằng số 0, và nếu e1 thuộc loại có dấu thì bit có dấu sẽ được lặp lại trong các bit bên trái còn trống.

Các phép toán nhân logic theo bit, phép cộng logic và loại trừ hoặc (phủ định tương đương) được phép trên các toán hạng số nguyên. Trong các phép toán này, toán hạng được coi là chuỗi bit và phép toán được thực hiện trên từng cặp bit tương ứng từ cả hai toán hạng. Ví dụ: kết quả của biểu thức (x >> (p - n +1)) & (~(~0<< n)) будет выделение из целого беззнакового x n битов, начиная с бита с номером p, и сдвиг выделенных битов вправо, т.е. выделение n-разрядного целого, хранящегося в машинном слове x начиная с p-го разряда.

C/C++ có một cấu trúc được gọi là biểu thức điều kiện. Biểu thức điều kiện được xây dựng theo sơ đồ sau:

tình trạng? biểu thức1: biểu thức2

Điều kiện có thể là bất kỳ biểu thức vô hướng nào. Nếu kết quả tính toán điều kiện khác 0 thì giá trị của toàn bộ biểu thức sẽ là biểu thức 1; nếu điều kiện bằng 0 thì giá trị của toàn bộ biểu thức được xác định bởi biểu thức 2. Toán hạng thứ hai và thứ ba của biểu thức điều kiện phải là cả hai kiểu số học hoặc cấu trúc hoặc hợp cùng loại hoặc con trỏ cùng loại hoặc một trong số chúng là con trỏ tới một số loại và toán hạng còn lại là NULL hoặc có gõ khoảng trống *. Biểu thức x > 0 ? 1:0 trả về 1 nếu x lớn hơn 0 và 0 nếu ngược lại.

Một biểu thức có thể được biểu diễn dưới dạng một chuỗi các biểu thức được phân tách bằng dấu phẩy, trong trường hợp đó tất cả các biểu thức được đánh giá từ trái sang phải và giá trị của biểu thức cuối cùng trong danh sách sẽ được trả về. Ví dụ, như là kết quả của việc đánh giá biểu thức

x = 2, e * 3, x +1 sẽ nhận được giá trị 3, đồng thời x sẽ nhận giá trị 2. Kết quả của phép nhân e * 3 không thể sử dụng dưới bất kỳ hình thức nào.

2.5 Toán tử C++

Toán tử là các cấu trúc cú pháp xác định các hành động được thực hiện bởi một chương trình. Các loại toán tử sau có sẵn trong C/C++: toán tử biểu thức, toán tử lựa chọn, toán tử vòng lặp và toán tử nhảy. Cú pháp của một số toán tử chứa các biểu thức đóng vai trò điều kiện, tùy thuộc vào việc thực hiện hay không thực hiện mà một chuỗi hành động cụ thể được chọn. Vì không có biểu thức Boolean trong C nên bất kỳ biểu thức nào đánh giá thành giá trị vô hướng đều được sử dụng làm điều kiện và điều kiện được thỏa mãn nếu giá trị khác 0 và không thành công nếu nó bằng 0. Nhiều câu lệnh có thể được kết hợp thành một câu lệnh ghép bằng cách đặt chúng trong dấu ngoặc nhọn (toán tử). Phần cuối của một câu lệnh (ngoại trừ câu lệnh ghép) được biểu thị bằng dấu chấm phẩy, trong trường hợp này là một phần của câu lệnh.

Bất kỳ toán tử nào cũng có thể được đặt trước bởi một nhãn ở dạng mã định danh được phân tách khỏi toán tử được đánh dấu bằng dấu hai chấm. Nhãn chỉ dùng để biểu thị nó trong câu lệnh nhảy.

Đơn giản nhất là toán tử biểu thức, là một biểu thức hoàn chỉnh kết thúc bằng dấu chấm phẩy, ví dụ:

x = 3; y = (x +1) * t; tôi++;

Một biểu thức được viết dưới dạng toán tử được đánh giá, nhưng giá trị của nó bị mất và tác dụng của toán tử biểu thức là các tác dụng phụ đi kèm với việc đánh giá, ví dụ: khi thực hiện các phép toán gán, tự động tăng và tự động giảm.

Các toán tử lựa chọn trong C/C++ được biểu diễn bằng toán tử có điều kiện và một switch. Câu lệnh điều kiện tương tự như câu lệnh điều kiện trong các ngôn ngữ lập trình khác và có thể được sử dụng ở dạng rút gọn và đầy đủ, tương ứng với các lược đồ:

câu lệnh if (biểu thức điều kiện)

câu lệnh if (biểu thức điều kiện)-1 câu lệnh khác-2

Ở dạng ngắn của toán tử điều kiện, biểu thức điều kiện được đánh giá và nếu giá trị của nó khác 0 thì câu lệnh theo sau điều kiện sẽ được thực thi, nếu không thì không có hành động nào được thực hiện.

Tài liệu tương tự

    Phân tích lập trình hướng đối tượng mô phỏng cách mọi thứ được thực hiện. Nguyên tắc cơ bản của lập trình hướng đối tượng: đóng gói, kế thừa, đa hình. Khái niệm về lớp, trường, phương thức, thông điệp, sự kiện.

    kiểm tra, thêm vào ngày 22/01/2013

    Cách sử dụng ngôn ngữ kịch bản lập trình để phát triển các ứng dụng web (kịch bản). Tìm hiểu các nguyên tắc cơ bản của lập trình hướng đối tượng Ngôn ngữ PHP. Làm quen với các phương pháp đặc biệt để làm việc với các lớp học. Mục đích của giao diện.

    kiểm tra, thêm 14/03/2015

    đặc điểm chung cách tiếp cận hướng đối tượng trong lập trình, các tính chất và nguyên tắc cơ bản của nó. Phát triển chương trình tự động hóa các hoạt động quán cà phê dựa trên cách tiếp cận hướng đối tượng, thiết kế và triển khai lược đồ dữ liệu.

    bài tập khóa học, được thêm vào ngày 22/01/2012

    Đặc điểm và tính chất của ngôn ngữ lập trình. Nghiên cứu sự phát triển của ngôn ngữ lập trình hướng đối tượng. Xây dựng bản đồ tiến hóa của cơ chế OOP. Phát triển mô hình khái niệm về hoạt động của giao diện người dùng.

    bài tập khóa học, được thêm vào ngày 17/11/2014

    Sử dụng lập trình hướng đối tượng - quyết định tốt khi phát triển các dự án phần mềm lớn. Đối tượng và lớp làm nền tảng của ngôn ngữ hướng đối tượng. Khái niệm về ngôn ngữ hướng đối tượng. Ngôn ngữ và môi trường phần mềm.

    kiểm tra, thêm vào ngày 17/01/2011

    Nghiên cứu các nguyên lý của lập trình hướng đối tượng, trong đó các khái niệm chính là khái niệm về lớp và đối tượng. Thuộc tính của kiểu lập trình này: đóng gói, đa hình, kế thừa. Mô tả của lớp học. Hàm tạo và hàm hủy.

    trình bày, thêm vào 14/10/2013

    Xây dựng phần mềm - hệ thống mô phỏng mô phỏng chuyên đề “Dây chuyền sản xuất có điểm kiểm soát kỹ thuật”. Mô tả dữ liệu đầu vào và đầu ra. Lập trình hướng đối tượng. Sơ đồ các mô-đun và quy trình.

    bài tập khóa học, được thêm vào ngày 09/01/2014

    Thuộc tính của ngôn ngữ lập trình hướng đối tượng. Các khái niệm về đóng gói và kế thừa. Hàm ảo và đa hình. Khởi tạo một thể hiện đối tượng bằng cách sử dụng hàm tạo. Tạo động các đối tượng. Khả năng tương thích loại đối tượng.

    tóm tắt, được thêm vào ngày 15/04/2015

    Khái niệm về thuật toán và các đặc điểm của nó như một phần tử cơ bản của lập trình. Các hình thức trình bày thuật toán, cấu trúc thuật toán cơ bản. Lập trình có cấu trúc và hướng sự kiện. Lập trình hướng đối tượng.

    tóm tắt, thêm vào ngày 17/07/2008

    Phát triển chương trình sử dụng các nguyên tắc lập trình hướng đối tượng bằng ngôn ngữ cấp cao Với các công cụ Microsoft Visual Studio 2010 Xây dựng thuật toán triển khai. Lớp chương trình, hướng dẫn sử dụng chương trình.

Các văn bản bài giảng thảo luận về các nguyên tắc và công cụ cơ bản của lập trình hướng đối tượng sử dụng ngôn ngữ C++ và hệ thống lập trình Borland C++. Phần phụ lục chứa các nhiệm vụ để bạn tự giải quyết. Giả định rằng người đọc đã quen thuộc với những kiến ​​thức cơ bản về ngôn ngữ lập trình đa năng. Sách hướng dẫn này dành cho sinh viên chuyên ngành "Toán ứng dụng" và có thể được sinh viên các chuyên ngành khác sử dụng để nghiên cứu độc lập về C++.

1. Cách tiếp cận lập trình hướng đối tượng

1.1 Công nghệ lập trình

Công nghệ lập trình là một tập hợp các phương pháp và công cụ để phát triển (viết) chương trình và quy trình sử dụng các phương pháp và công cụ này.

Trong giai đoạn đầu của lập trình, khi các chương trình được viết dưới dạng chuỗi lệnh máy, chưa có công nghệ lập trình. Các bước đầu tiên trong việc phát triển công nghệ bao gồm việc biểu diễn một chương trình dưới dạng một chuỗi các câu lệnh. Việc viết một chuỗi các lệnh máy trước tiên phải vẽ ra một sơ đồ toán tử phản ánh trình tự các toán tử và sự chuyển đổi giữa chúng. Cách tiếp cận của người vận hành giúp có thể phát triển các chương trình đầu tiên để tự động hóa việc biên dịch chương trình - cái gọi là các thành phần chương trình.

Với sự gia tăng kích thước của các chương trình, các phần riêng biệt của chúng bắt đầu được xác định và thiết kế dưới dạng chương trình con. Một số chương trình con này được kết hợp thành các thư viện, từ đó các chương trình con có thể được đưa vào các chương trình làm việc và sau đó được gọi từ các chương trình làm việc. Điều này đánh dấu sự khởi đầu của lập trình thủ tục - một chương trình lớn được biểu diễn bằng một tập hợp các thủ tục chương trình con. Một trong những chương trình con là chương trình chính và việc thực thi chương trình bắt đầu từ đó.

Năm 1958, ngôn ngữ lập trình đầu tiên Fortran và Algol-58 được phát triển. Chương trình Fortran bao gồm một chương trình chính và một số thủ tục - chương trình con và hàm. Chương trình trong ALGOL-58 và phiên bản tiếp theo của nó ALGOL-60 là một tổng thể duy nhất nhưng có cấu trúc khối, bao gồm khối chính và các khối chương trình con và hàm lồng nhau. Các trình biên dịch cho Fortran cung cấp bản dịch riêng các thủ tục và sự tích hợp sau đó của chúng vào một chương trình làm việc; các trình biên dịch đầu tiên cho Algol giả định rằng toàn bộ chương trình được dịch cùng một lúc không được cung cấp;

Cách tiếp cận theo thủ tục yêu cầu cấu trúc chương trình trong tương lai, chia nó thành các thủ tục riêng biệt. Khi phát triển một thủ tục riêng biệt, bạn chỉ cần biết về các thủ tục khác, mục đích của chúng và cách gọi chúng. Có thể làm lại các thủ tục riêng lẻ mà không ảnh hưởng đến phần còn lại của chương trình, đồng thời giảm chi phí lao động và thời gian sử dụng máy tính để phát triển và hiện đại hóa các chương trình.

Bước tiếp theo trong việc đào sâu cấu trúc chương trình là cái gọi là lập trình có cấu trúc, trong đó toàn bộ chương trình và các thủ tục riêng lẻ được coi là chuỗi các cấu trúc chính tắc: phần tuyến tính, chu trình và nhánh. Có thể đọc và kiểm tra chương trình dưới dạng văn bản tuần tự, điều này giúp tăng năng suất của các lập trình viên khi phát triển và gỡ lỗi chương trình. Để tăng cường cấu trúc của chương trình, các yêu cầu được đưa ra là tính độc lập cao hơn của các chương trình con; các chương trình con phải giao tiếp với các chương trình gọi chúng chỉ bằng cách truyền các đối số trong chương trình con của các biến thuộc các thủ tục khác hoặc chương trình chính; được coi là không mong muốn.

Trước hết, lập trình thủ tục và có cấu trúc bị ảnh hưởng đến quá trình mô tả một thuật toán như một chuỗi các bước dẫn từ dữ liệu đầu vào thay đổi đến kết quả mong muốn. Để giải quyết các vấn đề đặc biệt, các ngôn ngữ lập trình bắt đầu được phát triển, tập trung vào một loại vấn đề cụ thể: hệ thống quản lý cơ sở dữ liệu, mô hình mô phỏng, v.v.

Khi phát triển các trình dịch, người ta ngày càng chú ý đến việc phát hiện lỗi trong mã nguồn của chương trình, từ đó giảm thời gian dành cho việc gỡ lỗi chương trình.

Việc sử dụng các chương trình trong các lĩnh vực hoạt động khác nhau của con người đã dẫn đến nhu cầu cải thiện độ tin cậy của tất cả các phần mềm. Một trong những hướng cải thiện ngôn ngữ lập trình là tăng mức độ gõ dữ liệu. Lý thuyết kiểu dữ liệu giả định rằng mọi dữ liệu được sử dụng trong chương trình thuộc về một và chỉ một kiểu dữ liệu. Loại mốc xác định tập hợp các giá trị có thể có cho mốc và tập hợp các hoạt động được phép trên mốc này. Trong một số trường hợp, dữ liệu của một loại cụ thể có thể được chuyển đổi thành dữ liệu của loại khác, nhưng việc chuyển đổi đó phải được thể hiện rõ ràng trong chương trình. Tùy thuộc vào mức độ đáp ứng các yêu cầu được liệt kê, chúng ta có thể nói về mức độ gõ của một ngôn ngữ lập trình cụ thể. Mong muốn tăng mức độ gõ của ngôn ngữ lập trình đã dẫn đến sự xuất hiện của ngôn ngữ Pascal, được coi là ngôn ngữ được gõ mạnh, mặc dù nó cho phép một số chuyển đổi kiểu ngầm, ví dụ: số nguyên thành số thực. Việc sử dụng ngôn ngữ gõ chặt chẽ khi viết chương trình giúp phát hiện nhiều lỗi trong việc sử dụng dữ liệu ngay cả khi dịch văn bản nguồn và từ đó tăng độ tin cậy của chương trình. Đồng thời, việc gõ nghiêm ngặt đã hạn chế quyền tự do của lập trình viên và gây khó khăn cho việc sử dụng một số kỹ thuật chuyển đổi dữ liệu thường được sử dụng trong lập trình hệ thống. Gần như đồng thời với Pascal, ngôn ngữ C được phát triển, thiên về lập trình hệ thống hơn và liên quan đến các ngôn ngữ gõ yếu.

Tất cả các ngôn ngữ lập trình phổ quát, mặc dù có sự khác biệt về cú pháp và từ khóa được sử dụng, đều triển khai các cấu trúc chuẩn giống nhau: toán tử gán, vòng lặp và nhánh. Tất cả các ngôn ngữ hiện đại đều có các kiểu dữ liệu (cơ bản) được xác định trước (kiểu số nguyên và số học thực, ký tự và có thể cả kiểu chuỗi) và có thể sử dụng tổng hợp dữ liệu, bao gồm mảng và cấu trúc (bản ghi). Đối với dữ liệu số học, các phép toán số học thông thường được cho phép; đối với tập hợp dữ liệu, chỉ có phép gán và khả năng truy cập các phần tử của tập hợp thường được cung cấp. Đồng thời, khi phát triển một chương trình để giải quyết một vấn đề ứng dụng cụ thể, điều mong muốn là có sự gần gũi về mặt khái niệm giữa văn bản chương trình với mô tả vấn đề. Ví dụ: nếu giải một bài toán yêu cầu thực hiện các phép tính trên số phức hoặc ma trận vuông, thì chương trình nên bao gồm rõ ràng các toán tử để cộng, trừ, nhân và chia dữ liệu thuộc loại số phức cũng như cộng, trừ, nhân và đảo ngược dữ liệu. thuộc loại ma trận vuông. Có một số cách để giải quyết vấn đề này:

Bằng cách xây dựng một ngôn ngữ lập trình chứa càng nhiều loại dữ liệu càng tốt và chọn một tập hợp con của ngôn ngữ này cho từng loại vấn đề. Loại ngôn ngữ này đôi khi được gọi là ngôn ngữ shell. Ngôn ngữ PL/1 khẳng định vai trò của ngôn ngữ shell, nhưng hóa ra nó phức tạp đến mức không bao giờ có thể xây dựng được một mô tả chính thức về nó. Tuy nhiên, việc thiếu một mô tả chính thức đã không ngăn cản việc sử dụng rộng rãi PL/1 ở cả Tây Âu và Liên Xô.

Việc xây dựng một ngôn ngữ có thể mở rộng chứa một lõi nhỏ và có thể được mở rộng để bổ sung cho ngôn ngữ đó các kiểu dữ liệu và toán tử phản ánh bản chất khái niệm của một loại vấn đề cụ thể. Ngôn ngữ như vậy được gọi là ngôn ngữ cốt lõi. Ngôn ngữ Simula và Algol-68 được phát triển làm ngôn ngữ cốt lõi; chúng không được sử dụng rộng rãi nhưng có ảnh hưởng lớn đến sự phát triển của các ngôn ngữ lập trình khác.

Sự phát triển tiếp theo của con đường thứ hai là cách tiếp cận lập trình hướng đối tượng, được thảo luận trong đoạn tiếp theo.

1.2. Bản chất của phương pháp lập trình hướng đối tượng

Ý tưởng chính của cách tiếp cận hướng đối tượng dựa trên các nguyên tắc sau:

Chương trình là mô hình của một số quy trình thực tế, một phần của thế giới thực.

Một mô hình của thế giới thực hoặc một phần của nó có thể được mô tả như một tập hợp các đối tượng tương tác với nhau.

Một đối tượng được mô tả bởi một tập hợp các tham số, các giá trị của chúng xác định trạng thái của đối tượng và một tập hợp các thao tác (hành động) mà đối tượng có thể thực hiện.

Tương tác giữa các đối tượng được thực hiện bằng cách gửi các thông điệp đặc biệt từ đối tượng này sang đối tượng khác. Một thông điệp mà một đối tượng nhận được có thể yêu cầu thực hiện một số hành động nhất định, chẳng hạn như thay đổi trạng thái của đối tượng.

Các đối tượng được mô tả bởi cùng một bộ tham số và có khả năng thực hiện cùng một bộ hành động tạo thành một lớp đối tượng cùng loại.

Từ góc độ ngôn ngữ lập trình, một lớp đối tượng có thể được coi là một loại mốc và một đối tượng riêng lẻ có thể được coi là một mốc của loại đó. Việc lập trình viên định nghĩa các lớp đối tượng của riêng mình cho một tập hợp các nhiệm vụ cụ thể sẽ cho phép anh ta mô tả các nhiệm vụ riêng lẻ theo chính lớp nhiệm vụ đó (với sự lựa chọn thích hợp về tên loại và tên đối tượng, các tham số của chúng và các hành động được thực hiện).

Do đó, cách tiếp cận hướng đối tượng giả định rằng khi phát triển một chương trình, các lớp đối tượng được sử dụng trong chương trình phải được xác định và các mô tả của chúng phải được xây dựng, sau đó phải tạo ra các thể hiện của các đối tượng cần thiết và phải xác định sự tương tác giữa chúng.

Việc cấu trúc các lớp đối tượng thường thuận tiện để chúng tạo thành một cấu trúc phân cấp. Ví dụ: lớp “Sinh viên”, mô tả một sinh viên trừu tượng, có thể làm cơ sở để xây dựng các lớp “sinh viên năm thứ nhất”, “sinh viên năm thứ hai”, v.v., có tất cả các đặc tính của sinh viên nói chung và một số thuộc tính bổ sung đặc trưng cho sinh viên của một khóa học cụ thể. Khi phát triển giao diện người dùng, các chương trình có thể sử dụng các đối tượng của lớp “Cửa sổ” chung và các đối tượng của các lớp cửa sổ đặc biệt, ví dụ: cửa sổ thông báo thông tin, cửa sổ nhập dữ liệu, v.v. Trong các cấu trúc phân cấp như vậy, một lớp có thể được coi là lớp cơ sở cho các lớp khác dẫn xuất từ ​​nó. Một đối tượng của lớp dẫn xuất có tất cả các thuộc tính của lớp cơ sở và một số thuộc tính của riêng nó và nó có thể phản hồi các loại thông báo giống nhau từ các đối tượng khác như một đối tượng của lớp cơ sở và các thông báo chỉ có ý nghĩa đối với lớp cơ sở. Lớp có nguồn gốc. Người ta thường nói rằng một đối tượng của lớp dẫn xuất kế thừa tất cả các thuộc tính của lớp cơ sở.

Kích thước: px

Bắt đầu hiển thị từ trang:

Bảng điểm

1 Cơ quan Vận tải Đường sắt Liên bang Đại học Giao thông Tiểu bang Ural Khoa Công nghệ Thông tin và An toàn Thông tin A. V. Kibardin LẬP TRÌNH BẰNG NGÔN NGỮ C++ Phần 3 Cơ bản lập trình trực quan trong môi trường Borland C++ Builder Nhà xuất bản Ekaterinburg UrGUPS 2012

2 UDC (075.8) K38 K38 Kibardin, Lập trình AV bằng C++. Trong 3 giờ Phần 3. Khái niệm cơ bản về lập trình trực quan trong môi trường Borland C++ Builder: phương pháp giáo dục. trợ cấp / A. V. Kibardin. Ekaterinburg: Nhà xuất bản UrGUPS, tr. Sổ tay hướng dẫn này nhằm mục đích tìm hiểu những kiến ​​thức cơ bản về thiết kế trực quan và lập trình hướng sự kiện bằng ngôn ngữ thuật toán C++ trong môi trường gói Borland C++ Bulder. Hướng đến sinh viên trong lĩnh vực Cơ điện tử và Robotics, cũng như sinh viên đại học, nghiên cứu sinh, sinh viên Khoa Giáo dục và Khoa Dự bị, nghiên cứu những kiến ​​​​thức cơ bản về công nghệ thông tin hiện đại. UDC (075.8) Được xuất bản theo quyết định của hội đồng biên tập và xuất bản trường Đại học Tác giả: A.V. Kibardin, Phó Giáo sư Bộ môn Công nghệ Thông tin và An toàn Thông tin, Ph.D. vật lý và toán học Khoa học, USGUPS Người phản biện: G. B. Smirnov, Giáo sư Khoa Khoa học Máy tính, Tiến sĩ Kỹ thuật. Khoa học, UrFU được đặt theo tên. Tổng thống đầu tiên của Nga B.N. Yeltsin V.I. Radchenko, Giáo sư Khoa Công nghệ Thông tin và An toàn Thông tin, Tiến sĩ Vật lý và Toán học. Khoa học, UrGUPS Đại học Giao thông Vận tải Bang Ural (URGUPS), 2012

3 NỘI DUNG GIỚI THIỆU... 4 CƠ BẢN LẬP TRÌNH TRONG MÔI TRƯỜNG C++ BUILDER... 5 LÀM VIỆC VỚI MÔI TRƯỜNG PHÁT TRIỂN ỨNG DỤNG TÍCH HỢP..9 PHÁT TRIỂN GIAO DIỆN CHƯƠNG TRÌNH. CÁC THÀNH PHẦN XÂY DỰNG C++ PHÁT TRIỂN MÃ ỨNG DỤNG. SỰ KIỆN VÀ XỬ LÝ SỰ KIỆN.17 XỬ LÝ CÁC TÌNH HUỐNG ĐẶC BIỆT TRONG CHƯƠNG TRÌNH 20 PHÁT TRIỂN GIAO DIỆN ỨNG DỤNG CHUẨN BỊ ỨNG DỤNG PHÂN PHỐI LÀM VIỆC VỚI ĐỒ HỌA LÀM VIỆC VỚI CÁC TỆP LÀM VIỆC VỚI CƠ SỞ DỮ LIỆU DANH SÁCH

4 GIỚI THIỆU Sự phát triển nhanh chóng của công nghệ máy tính, nhu cầu về phương tiện hiệu quả Sự phát triển của phần mềm đã dẫn đến sự xuất hiện trên thị trường phần mềm một số hệ thống lập trình tập trung vào phát triển ứng dụng nhanh chóng, trong đó cần lưu ý đến Microsoft Visual Basic và Borland Delphi. Các hệ thống phát triển nhanh dựa trên công nghệ thiết kế trực quan và lập trình hướng sự kiện, bản chất của nó là môi trường phát triển đảm nhận hầu hết công việc tạo mã chương trình, để lập trình viên thiết kế các hộp thoại và viết các hàm để xử lý các sự kiện. xảy ra trong chương trình. Rõ ràng là những hệ thống như vậy làm tăng đáng kể năng suất của lập trình viên. Sự thành công và phổ biến của Delphi khiến Borland muốn mở rộng phương pháp phát triển nhanh chóng sang lĩnh vực lập trình chuyên nghiệp, dẫn đến sự xuất hiện của Borland C++ Builder. C++ Builder là môi trường phát triển nhanh sử dụng ngôn ngữ C++ mở rộng (ngôn ngữ C++ Builder) làm ngôn ngữ lập trình. Hướng dẫn này mô tả các công nghệ lập trình trực quan và hướng sự kiện trong C++ trong môi trường C++ Builder. Để làm việc với các hướng dẫn về phương pháp, bạn phải nắm vững kiến ​​​​thức cơ bản về lập trình trong C++ và biết các công nghệ sau: lập trình có cấu trúc; lập trình mô-đun; lập trình hướng đối tượng (OOP). C++ Builder là một môi trường phát triển nhanh chóng, trong đó, với tư cách là một ngôn ngữ, một lượng lớn tài liệu giáo dục được dành cho các công nghệ này, bao gồm cả C++ Builder. 4

5 CƠ BẢN CỦA LẬP TRÌNH TRONG MÔI TRƯỜNG C++ Builder Các tính năng của lập trình trong môi trường Windows Hệ thống C++ Builder được thiết kế để phát triển các chương trình chạy trong môi trường Windows. Lập trình trên Windows có Các tính năng sau đây: 1) Mã chương trình bao gồm các thủ tục xử lý các tin nhắn mà Windows gửi đến một ứng dụng (chương trình); 2) Windows ghi lại các sự kiện xảy ra trong chương trình và phần cứng và gửi thông báo tương ứng đến chương trình; 3) một số chương trình có thể được thực hiện đồng thời. Các chương trình này chia sẻ tài nguyên máy tính với nhau; 4) chương trình đang chạy nằm trong vùng bộ nhớ làm việc và chờ các thông báo từ Windows mà nó phải phản hồi; 5) tương tác với phần cứng xảy ra thông qua giao diện đồ họa của thiết bị. Windows cung cấp cho nhà phát triển chương trình cái được gọi là môi trường hướng sự kiện, trong đó mã chương trình được thực thi để phản hồi lại một sự kiện cụ thể. Windows tạo thông báo đầu vào cho mỗi sự kiện đầu vào do người dùng tạo bằng chuột hoặc bàn phím. Windows lưu trữ các tin nhắn đầu vào trong hàng đợi tin nhắn hệ thống. Những tin nhắn này sau đó được gửi đến hàng đợi tin nhắn của ứng dụng. Một tin nhắn tới ứng dụng Windows được tạo bằng cách tạo một mục tin nhắn trong hàng đợi tin nhắn. Một số tin nhắn từ Windows được gửi trực tiếp đến cửa sổ ứng dụng; đây được gọi là tin nhắn không theo thứ tự. Một ứng dụng cũng có thể tạo tin nhắn của riêng mình, đặt chúng vào hàng đợi tin nhắn và gửi chúng đến các ứng dụng khác. Mỗi ứng dụng chạy trong cửa sổ riêng, có mô tả điều khiển duy nhất. Vì bản ghi tin nhắn chỉ rõ tin nhắn được gửi đến ai nên Windows sẽ chuyển tiếp nó đến địa chỉ đã chỉ định. Ứng dụng phải có khả năng xử lý bất kỳ tin nhắn nào. Đối với hầu hết mọi sự kiện, Windows đều có quy trình xử lý tiêu chuẩn. Ứng dụng phải chỉ định rằng khi xảy ra sự kiện NM mà không có mã đặc biệt trong chương trình thì nó phải thực thi quy trình chuẩn Các cửa sổ. Số đông tin nhắn chuẩn Chương trình được xử lý tự động vì tất cả các đối tượng C++ Builder đều có quy trình xử lý thông báo tích hợp sẵn. 5

6 Khái niệm cơ bản về OOP trong C++ Builder Lập trình trong C++ Builder dựa trên ngôn ngữ C++ mở rộng (ngôn ngữ C++ Builder). C++ giới thiệu một kiểu dữ liệu đặc biệt, lớp. Một lớp là một cấu trúc dữ liệu bao gồm các phần tử sau: các trường; phương pháp; của cải. Các trường chứa dữ liệu thuộc một loại cụ thể. Phương thức là các hàm thực hiện hành động nhất định. Thuộc tính là các trường dữ liệu ảnh hưởng đến hành vi của một đối tượng. Chúng khác với các trường thông thường ở chỗ việc gán giá trị cho chúng liên quan đến việc gọi các phương thức tương ứng. Ngôn ngữ sử dụng lớp từ dành riêng để mô tả một lớp. Lớp được khai báo trong mô-đun ứng dụng (xem bên dưới). Trong C++, lớp cơ sở cho tất cả các lớp là lớp trừu tượng TObject: do đó, nếu bạn cần tạo một lớp dữ liệu mới, bạn phải sử dụng mô tả sau: class TNewObject: thân lớp TObject; Chúng tôi xin nhắc bạn rằng khi mô tả một lớp, tiêu đề của nó liệt kê tất cả các lớp cơ sở cho nó. Khả năng truy cập các phần tử của các lớp này được quy định bằng cách sử dụng các khóa truy cập riêng tư, được bảo vệ và công khai (xem). Một đối tượng là một thể hiện của một lớp. Một thể hiện của một lớp được triển khai bởi một biến của một kiểu lớp nhất định, ví dụ: TNewObject *NewObject; Quản lý tệp trong C++ Builder Khi bắt đầu thực hiện một dự án, C++ Builder cung cấp cho nhà phát triển một chương trình hầu như được tạo sẵn. Chương trình bao gồm một cửa sổ có tiêu đề Form1 và có chức năng của một cửa sổ Windows tiêu chuẩn. Điều này tạo ra các tập tin ứng dụng sau. Mô-đun dự án chính Project1.cpp chứa mã của chương trình chính được viết bằng C++. Tệp chứa các liên kết đến tất cả các biểu mẫu dự án và các mô-đun liên quan. Nó cũng chứa mã khởi tạo ứng dụng: 6

7 // #bao gồm #pragma hdrstop // USEFORM("Unit1.cpp", Form1); // WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) thử Ứng dụng->Khởi tạo(); Ứng dụng->CreateForm(classid(tform1), &Form1); Ứng dụng->Chạy(); bắt (Ngoại lệ &ngoại lệ) Ứng dụng->ShowException(&ngoại lệ); bắt (...) thử ném Ngoại lệ(""); bắt (Ngoại lệ &ngoại lệ) Ứng dụng->ShowException(&ngoại lệ); trả về 0; // Mô-đun biểu mẫu Đối với mỗi biểu mẫu, C++ Builder tạo một mô-đun riêng, bao gồm hai tệp: tập tin tiêu đề và một tệp mã (nội dung của các tệp này được hiển thị trong cửa sổ soạn thảo mã). Tệp tiêu đề Unit1.h chứa mô tả về biểu mẫu và trông như thế này: // #ifndef Unit1H #define Unit1H //

8 #bao gồm #bao gồm #bao gồm #bao gồm // class TForm1: public TForm được xuất bản: // Các thành phần do IDE quản lý riêng tư: // Khai báo người dùng public: // Khai báo người dùng fastcall TForm1(TComponent* Owner); ; // GÓI bên ngoài TForm1 *Form1; // #endif Tệp mã (mô-đun biểu mẫu) Unit1.cpp chứa mô tả các hàm, bao gồm cả xử lý sự kiện: // #include #pragma hdrstop #include "Unit1.h" // #pragma package(smart_init) #pragma Resource "*.dfm" TForm1 *Form1; // fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) // Ngoài ra, C++ Builder, phân tích hành động của người lập trình, tạo một tệp mô tả các thuộc tính của biểu mẫu (biểu mẫu, nếu có nhiều hơn một biểu mẫu trong số chúng trong dự án) như một thành phần của các thành phần trực quan thư viện tiêu chuẩn Unit1.dfm, tệp dự án Project1.bpr và tệp tài nguyên dự án. Kết quả biên dịch dự án (ứng dụng có thể thực thi) được lưu trong tệp Project1.exe. Các tệp có phần mở rộng .tds và .obj được trình biên dịch tạo ra trong quá trình tạo tệp thực thi. Các tệp dự án sao lưu có ký tự "~" (*.~*) là ký tự mở rộng đầu tiên. số 8

9 LÀM VIỆC VỚI MÔI TRƯỜNG PHÁT TRIỂN ỨNG DỤNG TÍCH HỢP Cốt lõi của C++ Builder là môi trường phát triển ứng dụng tích hợp (IDE). Sau khi khởi chạy C++ Builder, một số cửa sổ sẽ xuất hiện trên màn hình, như trong Hình 2. 1. IDE bao gồm một cửa sổ chính, trình kiểm tra đối tượng, trình thiết kế biểu mẫu trực quan, cửa sổ soạn thảo chương trình bao gồm trình xem lớp và trình soạn thảo nguồn chương trình. Cửa sổ chính bao gồm menu chính và một số thanh công cụ: bảng xem văn bản tiêu chuẩn, biểu mẫu và nguồn, bảng gỡ lỗi, bảng chọn cài đặt môi trường, bảng tùy chỉnh và bảng thành phần. Bảng thành phần bao gồm 19 bảng. Thành phần tập trung vào khu vực cụ thể các ứng dụng. Mỗi thành phần được thể hiện trong bảng màu bằng biểu tượng riêng. Trình thiết kế biểu mẫu trực quan Biểu mẫu là một cửa sổ Windows trong tương lai chứa nhiều điều khiển khác nhau (nút, menu, hộp văn bản, công tắc, v.v.). Khi chương trình đã tạo được biên dịch và khởi chạy, biểu mẫu sẽ biến thành một cửa sổ Windows thông thường và thực hiện các hành động được nhà phát triển xác định cho nó. Có thể có một số cửa sổ như vậy trong một chương trình, nhưng chỉ một trong số chúng được coi là cửa sổ chính, còn lại là cửa sổ phụ. Các thành phần biểu mẫu Các thành phần bảng màu chứa hình ảnh tổng quát của các thành phần điều khiển và có tên thích hợp (“nút”, “thanh cuộn”, v.v.). Khi một thành phần được đặt trên một biểu mẫu, nó thực sự chứa một phiên bản của thành phần tương ứng, tức là một đối tượng. Thanh tra đối tượng Thanh tra đối tượng được thiết kế để thiết lập các thuộc tính của đối tượng và xác định phản ứng của chúng đối với các sự kiện khác nhau. Đối tượng hiện tại được hiển thị ở đầu trình kiểm tra trong danh sách thả xuống. Thanh tra đối tượng chứa hai trang: “Thuộc tính” và “Sự kiện”. Để thay đổi một thuộc tính cụ thể, bạn cần chọn một đối tượng trên biểu mẫu, nhấp vào trang “Thuộc tính”, sau đó nhấp vào dòng thuộc tính tương ứng và đặt giá trị mới của nó trong cửa sổ mở ra. Trang "Sự kiện" của trình kiểm tra cho phép bạn xác định phản hồi của chương trình đối với các sự kiện khác nhau dưới dạng các chức năng tương ứng. 9

10 Cửa sổ chính Thanh công cụ Thanh tra Trình xem Trình thiết kế trình soạn thảo đối tượng Visual Class hình thức ban đầu mã Hình. 1. Cửa sổ chính của môi trường phát triển ứng dụng Trình soạn thảo chương trình Bên cạnh cửa sổ biểu mẫu chính là cửa sổ trình soạn thảo chương trình. Việc chuyển đổi giữa biểu mẫu và trình soạn thảo mã có thể được thực hiện bằng chuột hoặc bằng phím chức năng “F12”. Cửa sổ soạn thảo bao gồm hai bảng: trình xem lớp và trình soạn thảo văn bản nguồn chương trình. Trình xem lớp hiển thị trực quan cấu trúc kết nối giữa các đối tượng chương trình khác nhau và cho phép bạn điều hướng nhanh chóng qua văn bản của nó. Mã chương trình được hiển thị trong cửa sổ soạn thảo nguồn chương trình. Trợ lý mã hóa trực quan Trình chỉnh sửa mã có một bộ công cụ cung cấp nhiều chức năng hỗ trợ. Những công cụ này được gọi chung là trợ lý mã hóa trực quan. Nó thực hiện các chức năng sau: hoàn thành mã; 10

11 danh sách tham số theo ngữ cảnh; đánh giá nhanh giá trị; chú giải công cụ về khai báo định danh; các mẫu mã. Trình quản lý dự án Ngoài biểu mẫu chính và mô-đun có mã nguồn của biểu mẫu này, chương trình còn chứa một tệp dự án mà bạn có thể quản lý các tệp (mô-đun) là các thành phần của dự án. Cửa sổ trình quản lý được gọi bằng lệnh View/Project Manager. Trình quản lý dự án cho phép bạn thực hiện các thao tác trên tệp. Các thao tác với tệp được thực hiện bằng thanh công cụ của trình quản lý dự án. mười một

12 PHÁT TRIỂN GIAO DIỆN CHƯƠNG TRÌNH. CÁC THÀNH PHẦN XÂY DỰNG C++ Phát triển các ứng dụng Windows với C++ Builder rất dễ dàng vì nhà phát triển có sẵn một thư viện đối tượng (VCL) mở rộng theo ý mình. Thư viện này được xây dựng trên nguyên tắc phân cấp và dựa trên lớp TObject. Đây là một kiểu trừu tượng được xác định trong mô-đun Lớp. Nó là tổ tiên của tất cả các đối tượng: tất cả các đối tượng đều bắt nguồn từ nó và có các thuộc tính được kế thừa từ TObject. Hệ thống phân cấp đối tượng C++ Builder được hiển thị trong sơ đồ sau. Đối tượng Không trực quan Kiểm soát không điều khiển trực quan Các thành phần xây dựng C++ không cửa sổ có cửa sổ là một loại đối tượng đặc biệt. Các thành phần, cùng với các phương thức và trình xử lý sự kiện, đều có các thuộc tính. Các thuộc tính có các giá trị đặt trước có thể thay đổi cả trong quá trình thực hiện chương trình và trong quá trình phát triển chương trình. Sự khác biệt giữa các thành phần và đối tượng là các thành phần là các đối tượng trực quan; chúng có thể được chỉnh sửa trong quá trình phát triển chương trình, nhưng các đối tượng không trực quan thì không thể. Ví dụ: RadioButton là một đối tượng trực quan được thể hiện bằng đồ họa trong bảng Thành phần. Điều khiển là một loại thành phần đặc biệt. Các thành phần không đóng vai trò điều khiển sẽ không hiển thị đối với người dùng; anh ấy không thể làm gì với họ. Ví dụ: thành phần menu chỉ hiển thị và có thể truy cập được đối với nhà phát triển ứng dụng. Khi làm việc với ứng dụng, người dùng không thể làm gì với thành phần menu. Anh ta chỉ nhìn thấy kết quả công việc của lập trình viên với thành phần này, cụ thể là một menu trong đó bạn có thể chọn thứ gì đó. Ngược lại, nút là một thành phần đồ họa hiển thị cho người dùng. Người dùng có thể thực hiện một số hành động, chẳng hạn như nhấp vào một nút nhất định. Trong danh mục điều khiển, có sự phân biệt giữa điều khiển có cửa sổ và không có cửa sổ. Điều khiển cửa sổ là những điều khiển: có thể hoạt động; có thể chứa các điều khiển khác; 12

13 có tay cầm cửa sổ. Các điều khiển không có cửa sổ là những điều khiển: không thể hoạt động; không thể chứa các điều khiển khác; không có tay nắm cửa sổ. Hãy tạo một ứng dụng có thể tính nghiệm của phương trình bậc hai. Hãy bắt đầu với việc phát triển giao diện người dùng của chương trình. Khởi chạy hệ thống lập trình C++ Builder và lưu ngay tệp dự án và tệp mô-đun bằng lệnh menu Tệp. Vì hệ thống tạo ra nhiều file làm việc cho dự án của bạn nên bạn nên lưu chúng vào một thư mục riêng. Hãy lưu ý thực tế là bạn đã có một ứng dụng đang hoạt động hiển thị một cửa sổ trống. Bạn có thể thực hiện các thao tác Windows bình thường với cửa sổ này. Xác minh điều này bằng cách khởi chạy ứng dụng bằng lệnh menu Run/Run. Trong chương trình, người dùng sẽ cần nhập các hệ số phương trình a, b và c. Để nhập dữ liệu này, chúng tôi sẽ sử dụng thành phần Chỉnh sửa (trường nhập). Thành phần này được đặt trên tab Tiêu chuẩn của bảng thành phần. Nhấp vào nút Chỉnh sửa thành phần, sau đó di chuyển con trỏ chuột qua biểu mẫu và nhấp vào vị trí mong muốn. Kết quả của những hành động này là một trường nhập sẽ xuất hiện trên biểu mẫu với dòng chữ Edit1 bên trong. Trong trường hợp này, chính trường đầu vào sẽ nhận được tên Edit1, theo đó nó sẽ có sẵn cho chương trình. Tên đối tượng được tạo tự động trong C++Builder theo nguyên tắc sau: tên của thành phần cộng với số sê-ri của điều khiển được đặt trên biểu mẫu. Biểu mẫu với tất cả các điều khiển được hiển thị trong Hình. 2.!!! Nhà phát triển chương trình có thể gán tên riêng của mình cho các điều khiển, nhưng việc này chỉ nên được thực hiện thông qua Trình kiểm tra đối tượng chứ không phải trong trình chỉnh sửa mã. Để thực hiện việc này, bạn cần chọn thuộc tính Tên của thành phần mong muốn trong Trình kiểm tra đối tượng và đặt tên mới. Hãy xóa nội dung của trường đầu vào khỏi nhãn. Để thực hiện việc này, hãy chọn trường đầu vào trên biểu mẫu bằng cách nhấp vào nó bằng con trỏ chuột, trên trang “Thuộc tính” của trình kiểm tra đối tượng, chọn thuộc tính Văn bản của trường đầu vào và xóa dòng chữ Edit1 trong ô liền kề. Hãy đặt một dòng chữ phía trên trường đầu vào, giải thích rằng trường đầu vào này nhằm mục đích nhập hệ số a. Hãy sử dụng thành phần Nhãn. Thành phần này nằm trên tab “Tiêu chuẩn”. Để đặt chú thích, hãy sử dụng thuộc tính Caption của điều khiển này. Tương tự, đặt các trường đầu vào cho hệ số b và c trên biểu mẫu và tạo các dòng chữ thích hợp phía trên chúng. Kết quả tính toán, tức là các giá trị của các nghiệm x1 và x2 được tính toán, có thể được hiển thị trên biểu mẫu bằng cách sử dụng Chỉnh sửa và 13 thành phần mà bạn đã biết

14 Nhãn. Đặt thêm hai phần tử Chỉnh sửa và các nhãn tương ứng phía trên chúng trên biểu mẫu. Cơm. 2. Xem cửa sổ dự án Hãy đặt hai nút trên biểu mẫu: một nút để bắt đầu quá trình tính toán, nút thứ hai để kết thúc chương trình. Hãy sử dụng thành phần Nút. Thành phần Nút cũng nằm trên tab Tiêu chuẩn. Hãy đặt nhãn trên các nút: “Tính toán” và “Đóng”. Để thực hiện việc này, hãy sử dụng thuộc tính Chú thích của các nút tương ứng. Hãy đặt trên biểu mẫu các thành phần giao diện quan trọng như thanh menu, thanh công cụ và thanh trạng thái. Chuyển đến tab "Win32" của bảng thành phần và nhấp vào biểu tượng Thanh công cụ, sau đó nhấp vào biểu mẫu bằng con trỏ chuột. Một thanh công cụ sẽ xuất hiện ở đầu biểu mẫu mà chưa có bất kỳ nút nào. Để tạo các nút thanh công cụ, chúng tôi sẽ sử dụng thành phần SpeedButton nằm trên tab “Bổ sung”. Đặt ba nút trên thanh công cụ tương ứng với các lệnh Tính toán, Trợ giúp và Thoát. Điểm nổi bật nút mong muốn và sử dụng thuộc tính Glyph. Sau đó bấm vào hình chữ nhật ba chấm trong thanh thuộc tính. Kết quả hộp thoại soạn thảo 14 sẽ xuất hiện

15 bức ảnh. Trong cửa sổ này, nhấp vào nút “Tải”; Tìm thư mục con Program Files\Common Files\Borland Shared\Images\Buttons và chọn hình ảnh thích hợp từ danh sách các tệp được đề xuất. Trong cửa sổ soạn thảo, bấm OK. Quay lại tab "Win32" và đánh dấu biểu tượng StatusBar. Nhấn con trỏ chuột vào biểu mẫu. Thanh trạng thái sẽ xuất hiện ở cuối biểu mẫu. Chuyển đến tab Tiêu chuẩn của bảng Thành phần và đánh dấu biểu tượng MainMenu. Bấm con trỏ chuột vào bất kỳ vị trí nào trên biểu mẫu. Thành phần MainMenu không trực quan nên nó có thể được đặt ở bất kỳ đâu trên biểu mẫu. Nhấp đúp chuột vào đối tượng menu và trình chỉnh sửa menu sẽ xuất hiện trên màn hình. Để sử dụng nó để thêm các mục menu mới, bạn phải thực hiện các bước sau: 1) nhấn phím “Enter”, trình kiểm tra đối tượng sẽ được kích hoạt, thao tác này sẽ nhắc bạn nhập tên cho mục menu hiện tại trong Chú thích đường kẻ; 2) nhập từ “Phương trình” và nhấn “Enter”. Hệ thống sẽ chuyển trở lại trình soạn thảo menu. Nhấn Enter và trong Trình kiểm tra đối tượng, nhập từ “Tính toán”. Lặp lại các bước này hai lần nữa để thêm các mục phụ Trợ giúp và Thoát vào menu. Để hoàn thành việc phát triển giao diện chương trình, vẫn cần thêm một biểu mẫu nữa với các điều khiển cần thiết. Biểu mẫu thứ hai sẽ là cửa sổ trợ giúp của chương trình. Sử dụng lệnh menu Tệp/Mới/Biểu mẫu để thêm biểu mẫu thứ hai vào dự án. Thay đổi tiêu đề của biểu mẫu thành "Trợ giúp". Đặt đối tượng Memo1 trên biểu mẫu bằng cách sử dụng thành phần Ghi nhớ (trường nhập nhiều dòng) trên tab “Tiêu chuẩn”. Thành phần này cho phép bạn hiển thị văn bản gồm nhiều dòng. Đặt biểu mẫu và trường Memo1 thành kích thước phù hợp. Để thực hiện việc này, hãy chọn đối tượng mong muốn; các ô vuông màu đen sẽ xuất hiện ở các cạnh của đối tượng. Bằng cách lấy một trong các hình vuông bằng con trỏ chuột, bạn có thể thay đổi kích thước của đối tượng. Ngay bên dưới trường nhập liệu, đặt một nút đóng cửa sổ trợ giúp. Để thực hiện việc này, hãy sử dụng thành phần BitBtn trên tab “Additiona”. Trong thuộc tính Loại của nó, chọn bkclose. Giá trị được xác định trước này sẽ đóng cửa sổ này. Tất cả những gì còn lại là đặt văn bản trợ giúp vào trường nhập. Chọn thuộc tính Lines của trường đầu vào, sau đó bấm đúp vào nút có ba dấu chấm trong dòng thuộc tính này. Thao tác này sẽ mở một cửa sổ soạn thảo văn bản trong đó bạn nên xóa tên trường và nhập văn bản trợ giúp, chẳng hạn như sau: 15

16 Chương trình này tính nghiệm của một phương trình bậc hai. Nhập các giá trị của các hệ số phương trình vào các cửa sổ thích hợp và nhấp vào nút “Tính toán”. Để thoát, nhấp vào nút “Thoát”. Sau khi nhập văn bản trợ giúp, nhấp vào OK. Lưu mô-đun biểu mẫu thứ hai. Điều này hoàn thành việc phát triển giao diện. 16

17 PHÁT TRIỂN MÃ CHƯƠNG TRÌNH ỨNG DỤNG. SỰ KIỆN VÀ XỬ LÝ SỰ KIỆN Các ứng dụng được xây dựng bằng C++ Builder là các ứng dụng Windows. Một trong những tính năng chính của các ứng dụng đó là quản lý sự kiện. Điều này có nghĩa là chương trình chạy dựa trên các thông báo sự kiện được tạo và được mã ứng dụng xử lý. Mã như vậy phải được viết cho từng sự kiện mà chương trình phải phản hồi. Một thủ tục được thiết kế để phản hồi một sự kiện được gọi là hàm xử lý sự kiện trong C++Builder. Có hai loại sự kiện: sự kiện do hành động của người dùng gây ra, sự kiện của người dùng và sự kiện thông thường, sự kiện do phần mềm kiểm soát. Các chức năng xử lý sự kiện của người dùng là phần chính của mã ứng dụng. Chúng cung cấp sự tương tác tương tác giữa ứng dụng và người dùng. C++Builder thực hiện điều này bằng cách sử dụng các trình xử lý sự kiện được xác định trước mà hầu hết các thành phần đều có thể sử dụng. Điều này bao gồm các trình xử lý sự kiện chuột và bàn phím. Các sự kiện phổ biến (do phần mềm kiểm soát) bao gồm các sự kiện kích hoạt, sự kiện chấm dứt và sự kiện thay đổi trạng thái. các thành phần riêng lẻ và các sự kiện khác là kết quả gián tiếp từ hành động của người dùng. C++ Builder tạo ra các hàm để xử lý từng sự kiện và đặt tên chúng theo tên của các thành phần mà các quy trình này dự định sử dụng. Ví dụ: nếu bạn bấm đúp vào Button1, một hàm xử lý sự kiện trống sẽ được tạo trong mô-đun biểu mẫu, trông như thế này: void fastcall TForm1::Button1Click(TObject *Sender) Tiếp theo, bạn cần nhập mã chương trình được yêu cầu vào khối ghép. Chọn nút Tính toán, đi tới trang Sự kiện trong Trình kiểm tra đối tượng và bấm đúp vào tên của trình xử lý sự kiện OnClick. Hệ thống sẽ thêm chức năng xử lý nhấp chuột vào nút trống vào văn bản mô-đun. Chức năng này có nhiệm vụ gì? Đầu tiên, nó phải đọc nội dung của các trường đầu vào cho các hệ số a, b và c; khi đó các giá trị đã đọc phải được chuyển đổi thành số, vì thuộc tính Text của thành phần Chỉnh sửa có kiểu chuỗi; thì các phép tính cần thiết phải được thực hiện và kết quả được đặt vào trường Edit4 và Edit5. 17

18 Thêm mã bên dưới vào hàm. void fastcall TForm1::Button1Click(TObject *Sender) float a,b,c,d,x1,x2; a=strtofloat(edit1->text); b=strtofloat(edit2->text); c=strtofloat(edit3->text); d=b*b-4*a*c; if (d>=0) else x1=(-b-sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); Edit4->Text=FloatToStr(x1); Edit5->Text=FloatToStr(x2); ShowMessage("Không có gốc hợp lệ"); Trong phần chỉ thị tiền xử lý của mô-đun biểu mẫu, hãy thêm dòng #include Tệp tiêu đề này sẽ cho phép bạn sử dụng thư viện các hàm toán học (trong trường hợp của chúng tôi là hàm tính căn bậc hai). Chúng ta hãy lưu ý những điểm sau đây trong văn bản. Để tính toán, chúng tôi chỉ sử dụng các biến cục bộ vì chúng không cần được sử dụng trong các quy trình khác. Để chuyển đổi một chuỗi ký tự thành số và chuyển đổi ngược lại, các hàm StrToFloat() và FloatToStr() được sử dụng tương ứng. Để hiển thị thông báo "Không có gốc hợp lệ", hãy sử dụng Chức năng Windows gọi hộp thoại ShowMessage(). Hãy xác định một hàm để xử lý một cú nhấp chuột vào nút "Thoát". Nhấp đúp vào nút này và trong cửa sổ soạn thảo mã xuất hiện, thêm dòng 18 vào chức năng Button2Click

19 Biểu mẫu1->Đóng(); (Phương thức Close() đóng cửa sổ ứng dụng của chúng ta.) Lưu dự án và chạy nó. Kiểm tra hoạt động của nó theo dữ liệu ban đầu khác nhau. Nếu hệ thống phát hiện lỗi, hãy sửa chúng và chạy lại dự án. Bây giờ chúng ta hãy xác định các sự kiện menu và các lần nhấp vào nút trên thanh công cụ. Chúng tôi không cần phải viết bất kỳ mã nào cho việc này. Chúng tôi sẽ kết nối các sự kiện cần thiết với các sự kiện đã được xác định bằng cách nhấp vào nút “Tính toán” và “Thoát”. Nhấp vào thanh menu và sau đó chọn mục menu đầu tiên, “Tính toán”. Trong Trình kiểm tra đối tượng, trên trang Sự kiện, trong hàng trình xử lý On-Click, hãy chọn hàm Button1Click từ danh sách các hàm có sẵn. Nhấp vào biểu mẫu và thực hiện tương tự với mục menu “Thoát”, chỉ bây giờ liên kết nó với chức năng Button2Click. Chọn mục menu “Trợ giúp”, nhấp đúp vào dòng trình xử lý OnClick trong trình kiểm tra đối tượng và thêm lệnh Form2->ShowModal() vào hàm N3Click trong trình chỉnh sửa mã; Trong phần chỉ thị mô-đun của biểu mẫu chính, đừng quên thêm lệnh để bao gồm tệp tiêu đề mô-đun trợ giúp #include "help_module_name.h". Ở đây help_module_name là tên mà bạn đã lưu mô-đun trên đĩa. Phương thức ShowModal() gọi cửa sổ trợ giúp và cho đến khi nó đóng lại, bạn sẽ không thể truy cập cửa sổ ứng dụng chính (trạng thái phương thức của cửa sổ). Chọn nút "Tính toán" trên thanh công cụ và trong trình kiểm tra đối tượng cho trình xử lý OnClick, chọn chức năng Button1Click; đối với nút Thoát, chức năng Button2Click. Đối với nút Trợ giúp, hãy tạo quy trình xử lý thao tác nhấp chuột giống như cách bạn đã làm với mục menu Trợ giúp. Việc còn lại là xác định hoạt động của thanh trạng thái StatusBar1. Chọn nó trên biểu mẫu, đi tới trang Thuộc tính của Trình kiểm tra đối tượng, tìm thuộc tính SimplePanel và đặt nó thành true. Bấm đúp vào biểu mẫu và đặt đoạn mã sau vào nội dung của hàm FormCreate: void fastcall TForm1::FormCreate(TObject *Sender) StatusBar1->SimpleText="Nhập các hệ số phương trình"; Lưu dự án và kiểm tra ứng dụng. 19

20 XỬ LÝ CÁC TÌNH HUỐNG ĐẶC BIỆT TRONG CHƯƠNG TRÌNH Trong chương trình đã phát triển, chúng tôi đã không tính đến các lỗi nhập dữ liệu có thể xảy ra. Đầu tiên, người dùng có thể nhập một chuỗi ký tự không phải là số. Thứ hai, người dùng có thể nhập giá trị hệ số a = 0, điều này sẽ dẫn đến nỗ lực chia cho 0 trong các toán tử tính nghiệm của phương trình. Cả hai tình huống đều được gọi là ngoại lệ. Ví dụ về các tình huống ngoại lệ khác là tràn, cố gắng mở một tệp không tồn tại, v.v. Để kiểm soát các tình huống như vậy, hệ thống C++ Builder có cái gọi là cơ chế xử lý ngoại lệ. Khi một tình huống đặc biệt xảy ra, chương trình sẽ tạo ra cái gọi là ngoại lệ và các phép tính tiếp theo trong khối này sẽ bị dừng. Ngoại lệ là một loại đối tượng đặc biệt mô tả một tình huống đặc biệt phát sinh trong một chương trình. Điểm đặc biệt của các trường hợp ngoại lệ là chúng hoàn toàn là những đối tượng tạm thời. Ngay sau khi chúng được xử lý bởi bất kỳ trình xử lý nào, chúng sẽ bị hủy. Nếu ngoại lệ không được tìm thấy ở bất kỳ đâu trong chương trình thì nó sẽ được xử lý bằng phương thức Tapplication.HandleException tiêu chuẩn. Phương pháp nàyđảm bảo rằng người dùng nhận được thông tin ngắn gọn trong cửa sổ tin nhắn và hủy trường hợp ngoại lệ. Cách triệt để nhất để xử lý các ngoại lệ là xử lý chúng bằng cách sử dụng các khối thử và bắt logic: thử // các câu lệnh có thể gây ra ngoại lệ bắt (Loại &e) // các lệnh xử lý ngoại lệ này Ở đây Loại là loại (lớp) của ngoại lệ. C++Builder định nghĩa một số lớp ngoại lệ. Hãy xem xét hai trong số chúng cần thiết trong chương trình của chúng ta: lớp EConvertError, liên quan đến lỗi khi chuyển đổi chuỗi hoặc đối tượng (đặc biệt là trong hàm StrToFloat), lớp EZeroDivdide, liên quan đến nỗ lực chia số dấu phẩy động cho 0. 20

21 Thay đổi văn bản của hàm Button1Click để khớp với văn bản bên dưới. void fastcall TForm1::Button1Click(TObject *Sender) float a,b,c,d,x1,x2; thử a=strtofloat(edit1->text); b=strtofloat(edit2->text); c=strtofloat(edit3->text); Catch(econverterror &e) ShowMessage("Dữ liệu lỗi!"); trở lại; d=b*b-4*a*c; nếu (d>=0) thử x1=(-b-sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); Catch(ezerodivide &e) ShowMessage("Hệ số a không thể bằng 0!"); trở lại; Edit4->Text=FloatToStr(x1); 21

22 Edit5->Text=FloatToStr(x2); else ShowMessage("Không có gốc hợp lệ"); Lưu các thay đổi vào văn bản mô-đun và kiểm tra lỗi.!!! Nếu bạn chạy một dự án và chỉ định dữ liệu sai, trình gỡ lỗi sẽ phát hiện ngoại lệ và việc thực thi chương trình sẽ bị gián đoạn. Bấm lại vào nút Chạy và bạn sẽ thấy trình xử lý ngoại lệ mà bạn đã xác định đang chạy. Tuy nhiên, sau khi bạn thực hiện một dự án hoàn thành, các trường hợp ngoại lệ sẽ được xử lý theo mã chương trình của bạn. 22

23 PHÁT TRIỂN GIAO DIỆN ỨNG DỤNG Hãy hoàn thiện giao diện của chương trình. Đầu tiên, chúng ta sẽ làm cho chú giải công cụ xuất hiện cho các nút trên thanh công cụ. Chọn nút Tính toán trên thanh công cụ và trong Trình kiểm tra đối tượng, đặt thuộc tính Gợi ý của nó thành Tính toán và thuộc tính ShowHint của nó thành true. Làm tương tự với các nút còn lại. Lưu các thay đổi cho dự án. Bây giờ chúng ta sẽ giúp bạn có thể sử dụng các phím nóng khi làm việc với menu. Bạn có thể đặt các phím “nóng” theo hai cách: 1) chỉ định một chữ cái “nóng” trong tiêu đề của mục menu. Để thực hiện việc này, hãy nhấp vào thành phần menu và trong trình kiểm tra đối tượng, trong mỗi tiêu đề mục menu, đặt biểu tượng & trước chữ cái mong muốn, ví dụ: &Tính toán các chữ cái “Hot” sẽ được gạch chân; 2) chọn thuộc tính ShortCut cho mục menu này và chọn tổ hợp chữ cái Ctrl+mong muốn từ danh sách thả xuống. Đặt tổ hợp phím nóng cho các mục menu và lưu các thay đổi cho dự án. Điều cuối cùng chúng ta cần làm là thiết lập trình tự chuyển tiếp giữa các điều khiển khi nhấn phím TAB. Đây là thông lệ tiêu chuẩn trên Windows. Chọn tất cả các điều khiển trên biểu mẫu và chọn “Thứ tự tab” từ menu ngữ cảnh. Sử dụng các nút mũi tên để sắp xếp lại danh sách các mục theo thứ tự sau: Edit1, Edit2, Edit3, Button1 và nhấp vào OK. Lưu các thay đổi cho dự án. Sau khi khởi động chương trình, trường nhập Edit1 sẽ hoạt động. Bằng cách nhấn phím "TAB", bạn có thể di chuyển qua từng trường nhập còn lại.!!! Điều hướng qua các điều khiển trong mặt trái có thể được thực hiện bằng cách nhấn đồng thời các phím SHIFT và TAB. 23

24 CHUẨN BỊ ĐƠN ĐĂNG KÝ PHÂN PHỐI Chúng tôi đã hoàn thành việc phát triển dự án và tất cả những gì còn lại là chuẩn bị cho việc phân phối. Hãy làm cho cửa sổ chương trình luôn xuất hiện ở giữa màn hình. Đặt thuộc tính Vị trí của biểu mẫu chính thành poscreencenter. Hãy chọn một biểu tượng cho chương trình (cho đến bây giờ chúng tôi đã sử dụng biểu tượng chuẩn Trình tạo C++). Biểu tượng thay đổi như sau: nhập lệnh Project/Options; chọn tab Ứng dụng; nhấp vào nút Tải Biểu tượng; Sử dụng hộp thoại mở tệp, chọn tệp biểu tượng được chuẩn bị trước (tệp này phải có phần mở rộng .ico). Một bộ lớn các biểu tượng làm sẵn có sẵn trong thư viện chuẩn Trình tạo C++ trong thư mục con \Images\Icons. Lựa chọn hình ảnh mong muốn và nhấp vào nút “Mở”; ở dòng Tiêu đề ghi chú thích “Phương trình bậc hai”; Bấm vào nút "OK". Một chương trình được tạo trong C++ Builder sử dụng phiên bản DLL của thư viện thời gian chạy (RTL) và các gói thư viện động đặc biệt. Để chương trình có thể hoạt động trên máy tính khác, bạn phải chuyển thư viện sang máy tính này cùng với file exe của chương trình này hoặc gộp thư viện và các gói trong file exe. Để thực hiện việc sau, bạn cần thực hiện như sau: 1) nhập lệnh Dự án / Tùy chọn và chọn tab “Gói”, bỏ chọn hộp kiểm “Xây dựng với các gói thời gian chạy”; 2) chọn tab “Trình liên kết” và bỏ chọn hộp kiểm “Sử dụng RTL động”. Bây giờ bạn cần biên dịch lại dự án. Chạy lệnh Project Your_Project_Name/Build. Bây giờ tệp thực thi của dự án của bạn (tệp có phần mở rộng .exe) với các thư viện được kết nối đã xuất hiện trong thư mục dự án. 24

25 LÀM VIỆC VỚI HÌNH ẢNH Bạn có thể vẽ trong chương trình trực tiếp trên bề mặt của biểu mẫu hoặc bằng cách chọn các vùng đặc biệt trên biểu mẫu để vẽ; việc này được thực hiện bằng cách sử dụng các thành phần Hình ảnh và PaintBox. Biểu mẫu và các thành phần được chỉ định có thuộc tính Canvas, cho phép bạn hiển thị đồ họa. Ví dụ: toán tử Form1->Canvas->Rectangle(20, 20, 60, 60); vẽ một hình chữ nhật trên bề mặt của biểu mẫu. Bảng sau liệt kê các phương thức của thuộc tính Canvas cho phép bạn vẽ các đồ họa nguyên thủy cơ bản. Bảng 1 Phương pháp vẽ đồ họa nguyên thủy Phương thức MoveTo(x, y) LineTo(x1, y1) Polyline(point, n) Rectangle(x1, y1, x2, y2) y2) y2) FillRect(x1, y1, x2, Ellipse(x1, y1, x2, Arc (x1, y1, x2, y2, x3, y3, x4, y4) Pie(x1, y1, x2, y2, x3, y3, x4, y4) TextOutA(x, y, text) Hành động Di chuyển con trỏ đến vị trí đã chỉ định tọa độ vị trí (tọa độ được tính từ góc trên bên trái của biểu mẫu hoặc vùng vẽ) Vẽ một đường thẳng từ vị trí hiện tại đến một điểm có tọa độ (x1, y1) Vẽ một mảng các điểm uốn của đường thẳng (xem ví dụ bên dưới); ), n số nút dòng Vẽ hình chữ nhật, x1, y1, x2, y2 lần lượt là tọa độ của các góc trên bên trái và dưới bên phải của hình chữ nhật. Vẽ một hình chữ nhật đầy hình elip. y2 xác định tọa độ của hình chữ nhật mà hình elip vừa với 1 2 Vẽ một cung y1, x2, y2 xác định hình elip mà cung đó là một phần, x3, y3, x4, y4 xác định điểm bắt đầu và điểm kết thúc của hình elip. arc. Vẽ một cung của hình elip hoặc hình tròn. Cung này được cắt ngược chiều kim đồng hồ từ điểm có tọa độ (x3, y3) đến điểm (x4), y4) Hiển thị văn bản được chỉ định bởi tham số thứ ba. Các tham số x, y xác định điểm bắt đầu từ đó đầu ra bắt đầu 25

26 Để hiển thị các điểm riêng lẻ, hãy sử dụng thuộc tính Pixels[x][y] của thuộc tính Canvas. Ví dụ: câu lệnh sau hiển thị một điểm màu đỏ có tọa độ (50, 50) trên biểu mẫu: Form1->Canvas->Pilxels=clRed; Ở đây clred là hằng số được đặt tên tương ứng với màu đỏ. Để tô màu một điểm bằng màu tùy ý, hãy sử dụng hàm RGB(red, green, blue), trong đó các tham số red, green, blue chỉ định tỷ lệ của màu đỏ, xanh lục và có màu xanh là một phần của màu nhất định và có thể nhận các giá trị trong khoảng (0, 255), ví dụ: Form1->Canvas->Pilxels=RGB(0, 163, 78); Các phương pháp được mô tả ở trên chỉ cung cấp bản vẽ đồ họa nguyên thủy. Loại phần tử đồ họa được xác định bởi thuộc tính Bút và Bút vẽ của bề mặt (Canvas) mà nó được vẽ trên đó. phần tử này. "Bút chì" và "bút vẽ", là thuộc tính của đối tượng Canvas, bản thân chúng cũng là đối tượng. Các thuộc tính của đối tượng Pen và Brush được mô tả trong bảng sau. Bảng 2 Thuộc tính Kiểu Độ rộng Màu Bút Thuộc tính Đối tượng Xác định Đường Màu Độ rộng Đường (tính bằng pixel) Loại Đường. chất rắn pssolid; dòng psclear không được hiển thị; psdash rải rác những nét dài; psdot chấm những nét ngắn; psdashdot xen kẽ các nét dài và ngắn Bảng 3 Thuộc tính của đối tượng Brush Thuộc tính Xác định Màu sắc Màu sắc lấp đầy một khu vực kín Phong cách Phong cách lấp đầy khu vực. bschất rắn rắn; nở ngang bshorizontal; cửa sập dọc bsvertical; bsf tạo bóng chéo chéo với độ nghiêng về phía trước; bsb nở chéo chéo với độ nghiêng về phía sau; bscross vào một cái lồng; bsdiag- Ô có đường chéo chéo Thuộc tính Phông chữ của “canvas” cho phép bạn thay đổi các tham số phông chữ. Bảng sau mô tả các thuộc tính của đối tượng Font. 26

27 Thuộc tính Tên Kích thước Kiểu Màu Bảng 4 Thuộc tính của đối tượng Phông chữ Xác định phông chữ được sử dụng. Giá trị của thuộc tính là tên của phông chữ, ví dụ: Kích thước Arial theo kiểu Phông chữ điểm. Được xác định bởi các hằng số sau: fsbold đậm; chữ in nghiêng fsital; fsgạch chân được gạch chân; fsstrikeout bị gạch bỏ Màu của biểu tượng. Thiết lập bằng cách sử dụng các hằng số được đặt tên, chẳng hạn như clred hoặc sử dụng hàm RGB() Ví dụ 1. Hiển thị một chấm đỏ và một đường thẳng màu đen trong vùng vẽ PaintBox khi nhấn một nút. Bắt đầu một dự án mới. Đặt thành phần PaintBox (tab Win32) và Nút trên biểu mẫu dự án. Đối với chức năng xử lý nhấp chuột vào nút, hãy viết mã sau: void fastcall TForm1::Button1Click(TObject *Sender) PaintBox1->Canvas->Pixels=clRed; PaintBox1->Canvas->MoveTo(50,50); PaintBox1->Canvas->LineTo(100.100); Ví dụ 2. Vẽ một vòng tròn được tô bóng trực tiếp lên bề mặt của biểu mẫu. Chúng tôi sử dụng trình xử lý sự kiện OnPaint (vẽ lại) của biểu mẫu. Đối với hàm xử lý sự kiện OnPaint, hãy viết mã sau: void fastcall TForm1::FormPaint(TObject *Sender) Form1->Canvas->Ellipse(40,40,140,140); Ví dụ 3: Sử dụng đối tượng Bút và Bút vẽ. Đặt một Nút khác trên biểu mẫu. Đối với chức năng bấm nút, hãy viết đoạn mã sau: 27

28 void fastcall TForm1::Button2Click(TObject *Sender) Form1->Canvas->Brush->Color=clRed; Form1->Canvas->Brush->Style=bsCross; Form1->Canvas->Bút->Chiều rộng=3; Form1->Canvas->Ellipse(40,40,140,140); Ví dụ 4. Làm việc với phông chữ Sử dụng trình xử lý sự kiện tạo biểu mẫu OnPaint. Thêm mã đầu ra văn bản vào chức năng xử lý sự kiện vẽ lại biểu mẫu: void fastcall TForm1::FormPaint(TObject *Sender) Builder"); Form1->Canvas->Ellipse(40,40,140,140); Form1->Canvas->Font->Name = "Times New Roman"; Form1->Canvas->Font->Size=20; Form1->Canvas->Font->Color=clBlue; Form1->Canvas->TextOutA(100, 5, "Ví dụ về làm việc với đồ họa trong C++ Lưu dự án và kiểm tra hoạt động của nó. Nhiệm vụ Viết chương trình hiển thị biểu đồ của hàm у(x)=sin(x)e x/5 trong một khoảng do người dùng chỉ định và với một bước được chỉ định trong thành phần x. (bảng) Thành phần này cho phép bạn hiển thị dữ liệu trên biểu mẫu dưới dạng bảng. Nằm trên trang “Bổ sung”. Thuộc tính này là một mảng các chuỗi chứa các chuỗi văn bản bảng. số cột và số hàng của bảng tương ứng. Hàng đầu tiên và cột đầu tiên được đánh số 0. Một giá trị số phải được ghi vào một ô trong bảng; nó phải được chuyển đổi bằng cách sử dụng các hàm IntToStr() hoặc FloatToStr(). 28

29 Ví dụ float x=2,4; StringGrid1->Cells="Giá trị đối số"; StringGrid1->Cells="Giá trị hàm"; StringGrid1->Cells=FloatToStr(x); StringGrid1->Cells=FloatToStr(x*x); Cols Đây là một mảng chứa các hàng cho mỗi cột của bảng. Số lượng hàng bằng giá trị của thuộc tính RowCount. ColCount Xác định số lượng cột của bảng. Mặc định là năm. RowCount Xác định số hàng trong bảng. Mặc định là năm. Col Trỏ tới cột của ô hiện đang hoạt động. Hàng Trỏ tới hàng của ô hiện đang hoạt động. DefaultColWidth DefaultRowHeight Xác định chiều rộng của tất cả các cột và chiều cao của tất cả các hàng trong bảng tương ứng. Để thay đổi chiều cao của từng hàng và chiều rộng của từng cột, hãy sử dụng thuộc tính RowHeights và ColWidths. ColWidths RowHeights Cho phép bạn thay đổi độ rộng của cột và chiều cao của hàng tương ứng với số Chỉ mục. Defaultdraw Xác định xem các ô trong bảng có được vẽ tự động hay không (đúng). EditorMode Xác định xem ô bảng hiện tại có thể được vẽ hay không. Nếu bộ thuộc tính Tùy chọn (xem bảng bên dưới) chứa giá trị goediting thì bảng sẽ tự động chuyển sang chế độ chỉnh sửa. Điều tương tự cũng xảy ra khi bạn đặt thuộc tính EditorMode thành true. Mặc dù các giá trị Tùy chọn thường được đặt trong quá trình phát triển ứng dụng, nhưng thuộc tính EditorMode có thể được thay đổi trong khi chương trình đang chạy. Khi thuộc tính EditorMode=true, bảng ở chế độ chỉnh sửa nếu bộ Tùy chọn có chứa một phần tử. Nếu không, các ô không thể chỉnh sửa được. 29

30 Nếu thuộc tính EditorMode=false và bộ Tùy chọn chứa phần tử goediting chứ không phải targetwaysshoweditor thì người dùng có thể chuyển sang chế độ chỉnh sửa bằng phím "F2". Tùy chọn Thuộc tính này xác định hình thức và các thuộc tính chức năng của bảng. Bảng 5 Một số giá trị của thuộc tính Tùy chọn Giá trị Cài đặt Hành động govertline true Các đường dọc được hiển thị giữa các cột gohorzline true Các đường ngang được hiển thị giữa các hàng gorangeselect true Người dùng có thể chọn một khối ô. Tuy nhiên, nếu phần tử chỉnh sửa được chỉ định thì điều này không thể thực hiện được. Goddrawfocus- Đã chọn sai. Ô hiện hoạt có màu khác với các ô còn lại. Màu được đặt trong thuộc tính Color. Nếu thuộc tính là đúng thì ô hiện hoạt có cùng màu gorowsizing true Kích thước của các hàng riêng lẻ có thể được thay đổi khi chạy gocolsizing true Kích thước của các cột riêng lẻ có thể được thay đổi khi chạy goediting true Người dùng có thể chỉnh sửa nội dung của một ô. Không thể chọn chặn GoTabs true Bạn có thể di chuyển qua các ô bằng phím +. gothumbtracking targetwaysshoweditor true true Bảng tự động chuyển sang chế độ chỉnh sửa (với điều kiện là bộ Tùy chọn có chứa phần tử chỉnh sửa) Phần hiển thị của bảng cuộn đồng bộ với chuyển động của thanh trượt trên thanh cuộn bảng 30

31 Cố địnhColor Xác định màu của các cột và hàng cố định trong bảng. FixCols Xác định số lượng cột trong bảng cố định (một cột theo mặc định). Các cột cố định vẫn hiển thị khi người dùng cuộn qua các cột khác. FixedRows Xác định số lượng hàng trong bảng cố định (một hàng theo mặc định). Thành phần TChart (sơ đồ) Thành phần này được thiết kế để hoạt động với các loại biểu đồ phức tạp. Các thuộc tính thành phần được định cấu hình trong cửa sổ soạn thảo “Chỉnh sửa biểu đồ”. Trình chỉnh sửa được gọi bằng cách nhấp đúp vào thành phần Biểu đồ (Hình 3). Cơm. 3. Cửa sổ soạn thảo biểu đồ Series Properties Biểu thị một mảng biểu đồ (chuỗi dữ liệu) được hiển thị trong khu vực của thành phần Chart, trong đó Index chỉ định số lượng của chuỗi dữ liệu. Chỉ số được tính từ số 0. Đối với mỗi biểu đồ được đặt trong vùng Biểu đồ, bạn có thể đặt các tham số sau: loại; Tên; trục; 31

32 huyền thoại; nguồn dữ liệu. Loại biểu đồ được đặt trên trang Chuỗi của trình chỉnh sửa thuộc tính biểu đồ. Nếu các giá trị biểu đồ được tạo trong khi ứng dụng đang chạy thì bạn phải chọn tùy chọn Không có dữ liệu cho nguồn dữ liệu trên trang “Series-DataSource” của trình chỉnh sửa. Để thêm một chuỗi (chuỗi dữ liệu), hãy nhấp vào nút Thêm trong cửa sổ soạn thảo và chọn loại biểu đồ trong cửa sổ xuất hiện (ví dụ: Đường nhanh). Để đặt tiêu đề loạt phim (chúng sẽ được sử dụng trong chú giải để phân biệt các biểu đồ) Nhấp vào nút “Tiêu đề” trong cùng một cửa sổ, nó sẽ khả dụng sau khi cài đặt; số lượng yêu cầu loạt (Hình 4). Cơm. 4. Cửa sổ hộp thoại của trình chỉnh sửa sơ đồ Trên tab “Trục”, tên của các trục được đặt. Tùy chọn “Trái” tương ứng với trục Y, tùy chọn “Dưới cùng” tương ứng với trục X. Để gắn nhãn cho các trục, hãy sử dụng trang Tiêu đề trên tab “Trục”. Để đặt tiêu đề biểu đồ, hãy chọn tab “Tiêu đề”. Phương thức Các phương thức Thêm, Xóa và Xóa thường được sử dụng để kiểm soát các giá trị được sử dụng để xây dựng biểu đồ. Add(AValue, ALabel, AColor) Thêm giá trị được chỉ định bởi tham số AValue vào biểu đồ; tham số ALabel chỉ định tên của giá trị (tức là nhãn trục X); Tham số AColor chỉ định màu. AddXY(XValue,YValue, XLabel, AColor) 32

33 Thêm giá trị vào biểu đồ được chỉ định bởi các tham số XValue, YValue (tức là tọa độ của điểm); các tham số còn lại có ý nghĩa tương tự như đối với hàm Add. Ví dụ. Đồ thị của hàm số y=x^2 được dựng trong khoảng for(int i=0; i<10; i++) Chart1->Chuỗi->AddXY(i, i*i); Xóa(ValIndex) Xóa các giá trị có số ValIndex khỏi biểu đồ. Clear() Xóa tất cả các giá trị khỏi biểu đồ. Biểu đồ ví dụ1->Sê-ri->Xóa(); Nhiệm vụ Viết chương trình tính bảng giá trị của các hàm y1(x)= sin(x) và y2(x)= cos(x) trong khoảng giá trị a x b, x thay đổi theo bước dx và vẽ đồ thị của hàm số. Ranh giới của khoảng và bước thay đổi dx được người dùng chỉ định. 33

34 LÀM VIỆC VỚI TỆP Môi trường C++ Builder cung cấp ba cách để làm việc với tệp: làm việc với các luồng bằng cách sử dụng các hàm I/O của thư viện C, làm việc với các luồng theo kiểu C++ và sử dụng các phương thức của các thành phần hộp thoại của môi trường phát triển. Hãy giải quyết vấn đề sau: tạo một chương trình Notepad cho phép bạn nhập văn bản, lưu và đọc văn bản đã chuẩn bị tập tin văn bản. Khởi chạy hệ thống lập trình C++ Builder. Đặt trên biểu mẫu một trường nhập Bản ghi nhớ nhiều dòng (văn bản sẽ được nhập vào đó) và bốn Nút có tên: “Xóa”, “Viết”, “Đọc”, “Thoát”. Để lưu và tìm kiếm tệp, hãy sử dụng các thành phần SaveDialog và OpenDialog. Đặt các thành phần này ở bất kỳ đâu trên biểu mẫu vì chúng không trực quan. Một hình thức có thể được hiển thị trong hình. 5. Hình. 5. Cửa sổ Notepad Bạn đã làm việc với thành phần Ghi nhớ, nhưng hãy xem xét các thuộc tính và phương thức của nó một cách chi tiết hơn. Phương thức Clear() xóa cửa sổ nhập liệu. Các dòng được đặt trong cửa sổ được truy cập thông qua thuộc tính Lines, đại diện cho một mảng các dòng. Thuộc tính Count lưu trữ số hàng (số phần tử mảng). Việc đếm số dòng bắt đầu từ số 0. Phương thức Add(s) thêm chuỗi s vào danh sách. Phương thức Delete(n) xóa số dòng n. Phương thức Insert(n, s) chèn một chuỗi mới s vào giữa các phần tử của danh sách tại vị trí n. 34

35 Phương thức SaveToFile("path/file_name") cho phép bạn lưu dữ liệu được lưu trữ trong trường Bản ghi nhớ vào tệp được chỉ định. Phương thức LoadFromFile("path/filename") cho phép bạn đọc dữ liệu được lưu trữ trong tệp được chỉ định vào trường Bản ghi nhớ. Hãy tạo một hàm để xử lý một cú nhấp chuột vào nút “Xóa”. Văn bản của hàm được trình bày dưới đây. void fastcall TForm1::Button1Click(TObject *Sender) Memo1->Clear(); // Hãy tạo một thủ tục xử lý một cú nhấp chuột vào nút "Thoát". Chúng tôi sử dụng phương pháp Đóng để hoàn thành công việc với ứng dụng. void fastcall TForm1::Button4Click(TObject *Sender) Form1->Close(); // Trước khi phát triển các hàm xử lý các sự kiện còn lại, chúng ta sẽ mô tả cách làm việc với hộp thoại SaveDialog và OpenDialog. Phương thức Thực thi () được sử dụng để gọi windows. Thuộc tính FileName lưu trữ tên của tệp. Thuộc tính Filter cho phép bạn định cấu hình các bộ lọc để tìm kiếm tệp. Thuộc tính DefaultExt cho phép bạn xác định phần mở rộng sẽ được tự động thêm vào tên tệp. Hãy tạo một hàm để xử lý một cú nhấp chuột vào nút “Lưu”. Văn bản của hàm được đưa ra dưới đây. void fastcall TForm1::Button3Click(TObject *Sender) SaveDialog1->DefaultExt="txt"; if (SaveDialog1->Execute()) Memo1->Lines->SaveToFile(SaveDialog1->FileName); 35

36 // Tạo một hàm xử lý một cú nhấp chuột vào nút “Đọc”. Văn bản của hàm được trình bày dưới đây. void fastcall TForm1::Button2Click(TObject *Sender) OpenDialog1->DefaultExt="txt"; if (OpenDialog1->Execute()) Memo1->Lines->LoadFromFile(OpenDialog1->FileName); // Lưu dự án và kiểm tra xem nó có hoạt động không. Nếu dự án không có lỗi, hãy tạo một ứng dụng có thể sử dụng được. 36

37 LÀM VIỆC VỚI CƠ SỞ DỮ LIỆU Cấu hình Borland DataBase Engine (BDE) BDE là bộ xử lý cơ sở dữ liệu; nó xác định công nghệ truy cập dữ liệu. Quản trị viên BDE 5.0 Quản trị viên BDE là chương trình thiết lập cấu hình BDE. Chương trình được khởi chạy bằng menu chính của Windows với lệnh Bắt đầu / Chương trình / Borland C++ Builder / quản trị viên BDE. Cửa sổ chương trình chính có hai bảng. Phần bên trái bao gồm một sổ ghi chú có hai trang trình bày các tùy chọn cài đặt sau: DataBases; Cấu hình Ngăn bên phải chứa một sổ ghi chú có trang Definiton xuất hiện khi bạn chọn một tùy chọn ở ngăn bên trái. Danh sách thuộc tính được chia thành hai phần: Loại chứa tên tham số; Phần bên trái chứa giá trị tham số. Định cấu hình các bí danh chung Trang đầu tiên trong khung bên trái của cửa sổ quản trị viên BDE nhằm mục đích xem, thêm, xóa và sửa đổi các bí danh cũng như các tham số của chúng, cung cấp quyền truy cập vào cơ sở dữ liệu tương ứng một cách dễ dàng hơn. Bí danh trong cây cơ sở dữ liệu có thể ở các trạng thái sau: đóng, mở, sửa đổi và tạo. Để thêm bí danh, hãy sử dụng lệnh menu Đối tượng/Mới. Trong cửa sổ xuất hiện, ở dòng “Tên trình điều khiển DataBase”, chọn giá trị STANDART để tạo cơ sở dữ liệu ở định dạng Paradox, Dbase hoặc FoxPro hoặc giá trị MSACCESS để tạo cơ sở dữ liệu ở định dạng MS ACCESS. Mỗi bí danh có một tập hợp các thuộc tính. Đối với các bí danh được tạo dựa trên trình điều khiển STANDART, chúng như sau: tên trình điều khiển TYPE; Tên trình điều khiển DRIVER MẶC ĐỊNH; Cờ BCD BẬT để chuyển đổi giá trị trường thập phân sang BCD; PATH là đường dẫn đến thư mục chứa các bảng cơ sở dữ liệu. Bí danh riêng có thể được đổi tên hoặc xóa bằng lệnh menu Đối tượng / Đổi tên đối tượng / Xóa. 37


Bài giảng 24 Giới thiệu về lập trình hướng đối tượng Đối tượng và lớp Các khái niệm cơ bản về OOP trong C++ là đối tượng. Một đối tượng là một đơn vị chương trình nhất định kết hợp các thuộc tính (thuộc tính)

Truy cập MS. Biểu mẫu Bài giảng chuyên ngành “Cơ bản về Lập trình và Công nghệ thông tin” giảng tại Khoa FMEG của Khoa Giáo dục Thể chất NTU “KhPI” 1 Biểu mẫu Có 3 cách để nhập thông tin vào Access:

Công việc thực tế 3 Tạo biểu mẫu Biểu mẫu là một đối tượng cơ sở dữ liệu mà bạn có thể sử dụng để nhập, thay đổi hoặc hiển thị dữ liệu từ một bảng hoặc truy vấn. Có thể sử dụng các biểu mẫu để quản lý

Làm việc với bảng 1. Chuyển đổi văn bản thành bảng. a) Chèn các dấu phân cách, chẳng hạn như dấu phẩy hoặc tab, nơi văn bản cần được chia thành các cột. Dùng dấu phân đoạn để biểu thị

Làm việc với Mẫu tài liệu chuẩn Hướng dẫn sử dụng Công nghệ nhận thức Moscow, 2015 2 TÓM TẮT Tài liệu này cung cấp thông tin về việc sử dụng gói phần mềm"E1 Euphrates"

BIÊN TẬP VISUAL BASIC Gedranovich Valentina Vasilievna Ngày 28 tháng 6 năm 2012 Tóm tắt Chương 18 từ UMK: Gedranovich, V.V. Nguyên tắc cơ bản của công nghệ thông tin máy tính: phương pháp giáo dục. phức tạp / V.V. Gedranovich,

BÀI GIẢNG-1. GIỚI THIỆU MỤC ĐÍCH, THÀNH PHẦN VÀ CÁC YẾU TỐ CƠ BẢN CỦA GIAO DIỆN PHẦN MỀM ỨNG DỤNG XỬ LÝ THÔNG TIN KINH DOANH Câu hỏi: 1. Khái niệm phần mềm và phân loại phần mềm

Chủ đề 8 Kiểu Kiểu Kiểu là một tập hợp các tùy chọn định dạng có tên. Các kiểu được sử dụng: - dành cho thiết kế tài liệu chuyên nghiệp; - để nhanh chóng thay đổi các tham số văn bản; - mang lại sự đồng nhất

TN 12. Đề tài: Ứng dụng đa cửa sổ. Cửa sổ phương thức và không mô hình. Vấn đề chính: Ứng dụng một số hình thức trong dự án. Xem xét các loại cửa sổ khác nhau, phương thức và không phương thức.

Công việc thí nghiệm 7 Đề tài: Định dạng văn phong của tài liệu. Tạo một mục lục. Sử dụng Kiểu dáng Khi tạo một tài liệu, bạn thường phải xử lý các tiêu đề. Thông thường các tiêu đề

Thanh cuộn 3 HỆ THỐNG TRỢ GIÚP LAB 1 VÀ CÁC CHƯƠNG TRÌNH CHẠY TRONG WINDOWS. Nhiệm vụ: Bật máy tính và khởi động vào hệ điều hành Windows. Trên bề mặt máy tính để bàn, tìm bảng điều khiển

6. CHƯƠNG TRÌNH SƠN 6.1. Thông tin chung Chương trình vẽ là một trong những trình soạn thảo đồ họa phổ biến nhất đối với người dùng mới làm quen. Nó được thiết kế để xem, tạo và chỉnh sửa

Cơ quan giáo dục ngân sách nhà nước về giáo dục chuyên nghiệp cao hơn "Học viện y tế nhà nước Smolensk" của Bộ Y tế Liên Bang Nga Khoa Nha khoa Khoa Vật lý, Toán và Tin học Y tế Thảo luận

OpenOffice.org Impress Impress là một chương trình có trong OpenOffice.org để làm việc với các trình chiếu (bài thuyết trình). Bạn có thể tạo các slide chứa nhiều thành phần khác nhau, bao gồm văn bản, dấu đầu dòng

HƯỚNG DẪN DÀNH CHO BỘ CHỈNH SỬA HTML CKEDITOR Mô tả trình soạn thảo CKeditor Định dạng văn bản 1. Dịch vụ soạn thảo CKeditor 2. Kiểu phông chữ 3. Cấu trúc văn bản 4. Căn chỉnh văn bản 5. Chèn liên kết,

Chương 3 Microsoft Office 2013 Suite Trong chương này, chúng ta sẽ xem xét hoạt động của một số ứng dụng có trong Microsoft Office 2013. Phạm vi của cuốn sách này không cho phép nghiên cứu sâu về cách làm việc với những ứng dụng này.

Mục lục. 1 WORD TEXT EDITOR...2 THANH CÔNG CỤ...2 HỆ THỐNG TRỢ GIÚP...2 CƠ BẢN LÀM VIỆC VỚI VĂN BẢN...2 CHÈN VĂN BẢN...2 XÓA VĂN BẢN...2 CHỌN VĂN BẢN...2 THAY THẾ VĂN BẢN ĐÃ CHỌN

LÀM VIỆC VỚI HỆ THỐNG QUẢN LÝ CƠ SỞ DỮ LIỆU MICROSOFT ACCESS 1 ĐIỀU KHOẢN CƠ BẢN Truy vấn - Truy vấn là một công cụ mạnh mẽ để xử lý dữ liệu được lưu trữ trong bảng Access. Sử dụng truy vấn, bạn có thể xem

Bộ Đường sắt Liên bang Nga Đại học Giao thông Quốc gia Moscow (MIIT) Khoa “Cung cấp điện cho đường sắt điện” Được ban biên tập và xuất bản phê duyệt

CƠ BẢN LÀM VIỆC TRONG MICROSOFT ACCESS. THIẾT KẾ CƠ SỞ DỮ LIỆU. TẠO CƠ SỞ DỮ LIỆU. TẠO BIỂU MẪU, BÁO CÁO, TRUY VẤN 1. Thiết kế cơ sở dữ liệu 2. Tạo cơ sở dữ liệu 3. Tạo biểu mẫu, báo cáo, truy vấn

Cơ bản khi làm việc trong MS Word 2007 Mô tả cửa sổ chương trình Sau khi khởi động chương trình MS Word, cửa sổ của nó sẽ mở ra trên màn hình. Tiêu đề cửa sổ cho biết tên mở tập tin hoặc Document1, Document2, nếu

Cách mở Microsoft Word 2010 3. Cơ bản làm việc trong Microsoft Word 2010 Microsoft Word là chương trình xử lý văn bản (trình soạn thảo) đa chức năng trên máy tính để bàn hệ thống xuất bản. Trong Word chúng tôi

2 10 Tạo các ứng dụng đồ họa trong môi trường Scilab Scilab cho phép bạn tạo không chỉ các chương trình thông thường để tự động hóa các phép tính mà còn cả các ứng dụng trực quan sẽ chạy trong môi trường Scilab.

Cơ sở giáo dục ngân sách nhà nước khu vực Tambov của giáo dục trung cấp nghề "Trường cao đẳng chế tạo nhạc cụ" Giao diện xử lý văn bản Khái niệm Microsoft Word 2007

Bài thực hành 4 “Sách tham khảo”, Trang-1, Tổng cộng - 6 Bài thực hành 4, SÁCH THAM KHẢO Trình bày bài toán Tạo một chương trình thực hiện các thao tác sau. Sau khi khởi động chương trình, người dùng chọn

NGÂN SÁCH NHÀ NƯỚC KHU VỰC CƠ SỞ GIÁO DỤC TRUNG HỌC NGHỀ NGHIỆP “TRƯỜNG CAO ĐẲNG VẬN TẢI Ô TÔ SMOLENSK được đặt theo tên của E.G. Trubitsyn" HƯỚNG DẪN PHƯƠNG PHÁP chuẩn bị thực hiện

KIỂM TRA: "DBMS ACCESS 2007 - KIỂM TRA KIỂM SOÁT". Nhiệm vụ số 1 Có bao nhiêu trường được chọn để đưa vào BÁO CÁO được tạo Chọn một trong 5 tùy chọn trả lời: 1) 1 2) 2 3) 3 4) 4 5) 5 Nhiệm vụ số 2 Sẽ được chỉ định

Bài học thực hành 1 Tạo biểu mẫu VBA tùy chỉnh Khi làm việc trong Excel, cũng như trong hầu hết các ứng dụng khác, bạn phải xử lý các thành phần giao diện như hộp thoại. đàm thoại

Làm quen Mở văn phòng OO phức tạp hệ thống văn phòng, được thiết kế để gõ, chỉnh sửa và định dạng các tài liệu văn bản ở mọi mức độ phức tạp. Ngoài các tài liệu văn bản, Open Office cho phép

Cơ sở giáo dục trung học thành phố trường công lập 7 Kolomna, khu vực Moscow Xây dựng bài học nghiên cứu môi trường OOP Delphi về chủ đề: “Tính chất chung của một số thành phần”

Giới thiệu về Micrsft Excel 1. Cấu trúc bảng 1. Bảng tính gồm các ô nằm ở giao điểm của hàng và cột. Các hàng được đánh số bằng số, các cột - bằng chữ cái Latinh. Mỗi ô

BÀI 7. CHƯƠNG TRÌNH TOTAL COMMANDER Mục tiêu: Nghiên cứu nguyên lý hoạt động của trình quản lý file Total Commander. Trình quản lý tệp Total Commander cung cấp một cách khác để làm việc với các tệp và thư mục

Làm việc 10 bảng và sơ đồ trong Word. Tính toán trong bảng Mục tiêu của công việc: học cách chèn bảng biểu và biểu đồ vào tài liệu, thực hiện các phép tính trong bảng Nội dung công việc: 1 Nhập và định dạng bảng

Công việc trong phòng thí nghiệm 2. Cơ bản khi làm việc với MathCAD MathCAD, giống như hầu hết các chương trình khác, làm việc với tài liệu. Từ quan điểm của người dùng, một tài liệu là Tờ giấy trắng giấy để đặt trên đó

Công tác thí nghiệm 1. Đề tài. Nguyên tắc cơ bản của lập trình hướng đối tượng. Hệ thống lập trình trực quan Borland Delphi. Xây dựng giao diện chương trình. Đặt thuộc tính biểu mẫu (cửa sổ). Nền tảng

Trình quản lý thư viện thành phần tiêu chuẩn CSoft Development, 2009. Bảo lưu mọi quyền Nội dung Trình quản lý thư viện thành phần tiêu chuẩn...2 Lưu ý bảo mật...4 Khởi động Trình quản lý thư viện

Nhãn đối tượng trong ArcMap Nhãn là bất kỳ văn bản nào giúp bạn xác định các đối tượng trên bản đồ và hiểu rõ hơn nội dung của bản đồ. ArcMap cho phép bạn gắn nhãn không gian

Công ty cổ phần "Baumann" ĐƯỢC PHÊ DUYỆT RU.74533456.00009-02 34 01-LU Tổ hợp bảo mật tích hợp "KODOS" Chương trình "Sơ đồ ghi nhớ" Sách hướng dẫn vận hành RU.74533456.00009-02 34 01 2015 NỘI DUNG 1 QUY ĐỊNH CHUNG...

Mục đích của chương trình Tự động hóa tất cả các loại hành động với văn bản. Chức năng: tạo, chỉnh sửa, định dạng, lưu, xử lý và in. soạn thảo văn bản chuyên nghiệp Word 2007,

BÀI THỰC HÀNH 5 CHỦ ĐỀ: Sử dụng tích hợp các khả năng của MS Word để tạo các tài liệu lớn MỤC TIÊU: Học cách sử dụng toàn diện các khả năng của MS Word để tạo các tài liệu lớn

Phòng thí nghiệm 8 “Công nghệ làm việc trong chương trình Explorer” Mục đích công việc: nghiên cứu các kỹ thuật làm việc với chương trình Explorer 1. Tóm tắt thông tin lý thuyết Bao gồm hệ điều hành Windows XP có sẵn

Chương 8 Tạo và sử dụng biểu mẫu Như đã lưu ý trong Chương 1 và 2 của cuốn sách này, các đối tượng cơ sở dữ liệu như biểu mẫu được thiết kế chủ yếu để chỉ làm việc với một bản ghi tại một thời điểm.

CÔNG VIỆC PHÒNG THÍ NGHIỆM 1. 1. Vào môi trường VB Để vào môi trường VB, sử dụng tab Developer của cửa sổ Excel, nằm cùng hàng với các tab Home, Insert, v.v.. Nếu thiếu, bạn nên thực hiện.

Hệ thống báo cáo dọc tạo tài liệu công nghệ Hướng dẫn sử dụng Thông tin trong tài liệu này có thể thay đổi mà không cần thông báo trước. Không có phần nào

Làm việc với ABBYY FineReader Bank 7 Hướng dẫn sử dụng ABBYY 2013 Xử lý tài liệu ở dạng chương trình ABBYY FineReader Bank bao gồm bốn giai đoạn: Đang tải Xác minh Nhận dạng Dỡ tải

CHƯƠNG TRÌNH “QUẢN LÝ MODULE BỘ NHỚ” V 1.0.0 NỘI DUNG HƯỚNG DẪN VẬN HÀNH 1. Mô tả chương trình 3 1.1. Mục đích của chương trình 3 1.2. Yêu cầu hệ thống 3 1.3. Cài đặt chương trình 3 2. Tùy chỉnh

Đã xóa: 1C-Bitrix: Quản lý trang web 6.x Hướng dẫn tạo và đặt biểu mẫu web trên trang web Nội dung Giới thiệu...3 Tạo biểu mẫu web ở chế độ đơn giản hóa...3 Thêm biểu mẫu web...4 Tạo câu hỏi

164 1C:Doanh nghiệp 8.2. Hướng dẫn thực hành nhà phát triển Hoặc bạn có thể chọn chúng từ danh sách thả xuống có sẵn khi bạn ở trong mô-đun biểu mẫu (Hình 5.19). Cơm. 5.19. Danh sách các sự kiện biểu mẫu Trong này

Mô-đun 2. Máy tính là một bộ phần cứng và phần mềm PHỤ LỤC 2 Tải hệ điều hành Sau khi bật máy tính, sẽ mất một khoảng thời gian trước khi máy sẵn sàng sử dụng.

NỘI DUNG Chương 13: ĐẶT NHIỀU BIỂU ĐỒ Nội dung TỔNG QUAN...2770 TỰ ĐỘNG ĐẶT NHIỀU BIỂU ĐỒ WIZARD...2771 Sử dụng cửa sổ Thuật sĩ Vị trí Tự động của Nhiều BIỂU ĐỒ

Bài học thực tế. “Làm việc với các kiểu và mẫu. Tạo mục lục và danh sách hình minh họa tự động" Định dạng kiểu và tạo mẫu. 1) Khởi chạy MS Word. 2) Đặt như sau

Công việc thực hành 6 Soạn thảo tài liệu bằng các chương trình xử lý văn bản như Microsoft Word Mục đích công việc: Làm quen với các tính năng của tài liệu điện tử và các phương tiện soạn thảo chúng trong môi trường

Gói SHELL PHẦN MỀM FAR MANAGER: Phần mềm shell. Trình quản lý xa Khởi chạy FM và các thành phần giao diện Bảng FM Phím chức năng Menu FM Chọn chế độ xem bảng bằng menu Sắp xếp đối tượng

Các giai đoạn phát triển cơ sở dữ liệu Theo quy định, những người không chuyên sẽ làm việc với cơ sở dữ liệu, do đó, các yêu cầu sau đối với cơ sở dữ liệu có thể được xây dựng. Các nhà phát triển khi tạo cơ sở dữ liệu nên tập trung vào những điều này

Hướng dẫn ngắn gọn để làm việc với chương trình Microsoft Thuật toán hành động của PowerPoint Bắt đầu từ đâu? Bắt đầu một chương trình 1. Trên thanh tác vụ, hãy nhấp vào nút Bắt đầu. 2. Trong menu mở ra, hãy nhấp vào lệnh Chương trình.

Lab 8 “Cài đặt thông số thiết bị ngoại vi máy tính" Mục đích công việc: lấy thông tin về thiết lập giao diện người dùng của các thiết bị ngoại vi sử dụng hệ điều hành