intTypePromotion=1

Bài giảng Kỹ thuật lập trình: Phần 1 - ĐH CNTT&TT

Chia sẻ: Kiếp Này Bình Yên | Ngày: | Loại File: PDF | Số trang:37

0
39
lượt xem
5
download

Bài giảng Kỹ thuật lập trình: Phần 1 - ĐH CNTT&TT

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Hiện nay, C++ là một ngôn ngữ lập trình phổ biến, được giảng dạy tại các trường đại học trong nước và trên thế giới. Đặc biệt, khi được kết hợp sử dụng với .Net, nền tảng lập trình được phát triển và hỗ trợ bởi Microsoft, lúc này C++ được gọi là C++.Net đã trở lên vô cùng mạnh mẽ. Bài giảng "Kỹ thuật lập trình" này được biên soạn nhằm giới thiệu cho sinh viên ngôn ngữ lập trình C++ và cách sử dụng nó trên .Net. Bài giảng gồm có 4 chương và được chia thành 2 phần. Sau đây là phần 1 của bài giảng.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình: Phần 1 - ĐH CNTT&TT

  1. TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BỘ MÔN TRUYỀN THÔNG ĐA PHƯƠNG TIỆN BÀI GIẢNG KỸ THUẬT LẬP TRÌNH Thông tin môn học Số tín chỉ : 2 Số tiết lý thuyết : 24 Số tiết thực hành : 15 Số tiết thảo luận : 0 Hệ đào tạo : Đại học Ngành đào tạo : Truyền thông đa phương tiện Thái Nguyên, 2015
  2. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện GIỚI THIỆU C++ là ngôn ngữ lập trình hướng đối tượng được mở rộng từ ngôn ngữ C. Do vậy, C++ có ưu điểm là kế thừa được các điểm mạnh truyền thống của ngôn ngữ C như uyển chuyển, tương thích với các thiết bị phần cứng. Hiện nay, C++ là một ngôn ngữ lập trình phổ biến, được giảng dạy tại các trường đại học trong nước và trên thế giới. Đặc biệt, khi được kết hợp sử dụng với .Net, nền tảng lập trình được phát triển và hỗ trợ bởi Microsoft, lúc này C++ được gọi là C++.Net đã trở lên vô cùng mạnh mẽ . Tài liệu này không chỉ nhằm giới thiệu cho sinh viên ngôn ngữ lập trình C++, cách sử dụng nó trên .Net, mà còn mong muốn qua đó sinh viên có thể hiểu được tư tưởng của phương pháp lập trình hướng đối tượng nói chung. Nội dung của tài liệu bao gồm ba phần chính:  Phần thứ nhất: là lập trình cơ sở và nâng cao với C++  Phần thứ hai: là lập trình hướng đối tượng với C++, bao gồm các định nghĩa và các thao tác trên lớp đối tượng, tính kế thừa, tính đa hình và trừu tượng hóa trong C++.  Phần thứ ba: là lập trình xử lý đồ họa căn bản 2 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  3. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện CHƯƠNG I: GIỚI THIỆU VỀ CÁC PHƯƠNG PHÁP LẬP TRÌNH Nội dung của chương này tập trung trình bày các phương pháp lập trình:  Phương pháp lập trình tuyến tính  Phương pháp lập trình hướng cấu trúc  Phương pháp lập trình hướng đối tượng 1.1. Tổng quan về các phương pháp lập trình 1.1.1. Lập trình tuyến tính Đặc trưng cơ bản của lập trình tuyến tính là tư duy theo lối tuần tự. Chương trình sẽ được thực hiện theo thứ tự từ đầu đến cuối, lệnh này kế tiếp lệnh kia cho đến khi kết thúc chương trình.  Đặc trưng: Lập trình tuyến tính có hai đặc trưng: - Đơn giản: chương trình được tiến hành đơn giản theo lối tuần tự, không phức tạp. - Đơn luồng: chỉ có một luồng công việc duy nhất và các công việc được thực hiện tuần tự trong luồng đó.  Tính chất: - Ưu điểm: do tính đơn giản, lập trình tuyến tính được ứng dụng cho các chương trình đơn giản và có ưu điểm dễ hiểu. - Nhược điểm: với các ứng dụng phức tạp, người ta không thể dùng lập trình tuyến tính để giải quyết. Ngày nay, lập trình tuyến tính chỉ tồn tại trong phạm vi các modul nhỏ nhất của các phương pháp lập trình khác. Ví dụ, trong một chương trình con của lập trình cấu trúc, các lệnh cũng được thực hiện theo tuần tự từ đầu đến cuối chương trình con. 1.1.2. Lập trình hướng cấu trúc Trong lập trình hướng cấu trúc, chương trình chính được chia nhỏ thành các chương trình con và mỗi chương trình con thực hiện một công việc xác định. Chương trình chính sẽ gọi đến chương trình con theo một giải thuật hoặc một cấu trúc được xác định trong chương trình chính. Các ngôn ngữ lập trình cấu trúc phổ biến là Pascal, C và C++. Riêng C++ ngoài việc có đặc trưng của lập trình cấu trúc do kế thừa từ C, còn có đặc trưng của lập trình hướng đối tượng. Cho nên C++ còn được gọi là ngôn ngữ lập trình nửa cấu trúc, nửa hướng đối tượng.  Đặc trưng: đặc trưng cơ bản nhất của lập trình cấu trúc thể hiện ở mối quan hệ: Chương trình = Cấu trúc dữ liệu + Giải thuật 3 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  4. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện Trong đó: - Cấu trúc dữ liệu: là cách tổ chức dữ liệu cho việc xử lý bởi một hay nhiều chương trình nào đó. - Giải thuật: là một quy trình để thực hiện một công việc xác định. Trong chương trình, giải thuật có quan hệ phụ thuộc vào cấu trúc dữ liệu: - Một cấu trúc dữ liệu chỉ phù hợp với một số hạn chế các giải thuật. - Nếu thay đổi cấu trúc dữ liệu thì phải thay đổi giải thuật cho phù hợp. - Một giải thuật thường phải đi kèm với một cấu trúc dữ liệu nhất định.  Tính chất: - Mỗi chương trình con có thể được gọi thực hiện nhiều lần trong một chương trình chính. - Các chương trình con có thể được gọi đến để thực hiện theo một thứ tự bất kì, tùy thuộc vào giải thuật trong chương trình chính mà không phụ thuộc vào thứ tự khai báo của các chương trình con. - Các ngôn ngữ lập trình cấu trúc cung cấp một số cấu trúc lệnh điều khiển chương trình.  Ưu điểm: o Chương trình sáng sủa, dễ hiểu, dễ theo dõi. o Tư duy giải thuật rõ ràng.  Nhược điểm: - Lập trình cấu trúc không hỗ trợ mạnh việc sử dụng lại mã nguồn: giải thuật luôn phụ thuộc chặt chẽ vào cấu trúc dữ liệu, do đó, khi thay đổi cấu trúc dữ liệu phải thay đổi giải thuật, nghĩa là phải viết lại chương trình. - Không phù hợp với các phần mềm lớn: tư duy cấu trúc với các giải thuật chỉ phù hợp với các bài toán nhỏ, nằm trong phạm vi một modul của chương trình. Với dự án phần mềm lớn, lập trình cấu trúc tỏ ra không hiệu quả trong việc giải quyết mối quan hệ vĩ mô giữa các modul của phần mềm.  Vấn đề: vấn đề cơ bản của lập trình cấu trúc là bằng cách nào để phân chia chương trình chính thành các chương trình con cho phù hợp với yêu cầu, chức năng và mục đích của mỗi bài toán. Thông thường, để phân rã bài toán trong lập trình cấu trúc, người ta sử dụng phương pháp thiết kế top – down.  Phương pháp thiết kế Top – down: Phương pháp thiết kế top – down tiếp cận bài toán theo hướng từ trên xuống dưới, từ tổng quát đến chi tiết. Theo đó, một bài toán được chia thành các bài toán con nhỏ hơn. Mỗi bài toán con lại được chia nhỏ tiếp, nếu có thể, thành các bài toán con nhỏ hơn nữa. Quá trình này còn được gọi là quá trình làm mịn 4 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  5. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện dần. Quá trình này sẽ dừng lại khi các bài toán con không cần chia nhỏ thêm nữa. Nghĩa là, khi mỗi bài toán con đều có thể giải quyết bằng một chương trình con với một giải thuật đơn giản. Ví dụ, sử dụng phương pháp top-down để giải quyết bài toán xây một căn nhà mới. Chúng ta có thể phân rã bài toán theo các bước như sau: - Mức 1: chia bài toán xây nhà thành các bài toán nhỏ hơn như làm móng, đổ cột, đổ trần, xây tường, lợp mái. - Mức 2: phân rã các công việc ở mức 1 như việc làm móng nhà có thể phân rã tiếp thành các công việc đào móng, gia cố nền, làm khung sắt, đổ bê tông; công việc đổ cột được phân rã thành... - Mức 3: phân rã các công việc ở mức 2 như việc đào móng có thể phân chia tiếp thành các công việc như đo đạc, cắm mốc, chăng dây, đào và kiểm tra móng. Việc gia cố nền được phân rã thành... Quá trình phân rã có thể dừng ở mức này, bởi vì các công việc con thu được như đo đạc, cắm mốc, chăng dây, đào... có thể thực hiện được ngay, không cần chia nhỏ thêm nữa.  Lưu ý: Cùng sử dụng phương pháp top-down với cùng một bài toán, nhưng có thể cho ra nhiều kết quả khác nhau. Nguyên nhân là do sự khác nhau trong tiêu chí để phân rã một bài toán thành các bài toán con. Ví dụ: vẫn áp dụng phương pháp top-down để giải quyết bài toán xây nhà, nhưng nếu sử dụng một cách khác để phân chia bài toán, ta có thể thu được kết quả khác biệt so với phương pháp ban đầu: - Mức 1: chia bài toán xây nhà thành các bài toán nhỏ hơn như làm phần gỗ, làm phần sắt, làm phần bê tông và làm phần gạch. - Mức 2: phân rã các công việc ở mức thứ nhất là làm phần gỗ có thể chia thành các công việc như xẻ gỗ, gia công gỗ, tạo khung, lắp vào nhà. Việc làm sắt có thể chia nhỏ thành... Rõ ràng, với cách làm mịn thế này, ta sẽ thu được một kết quả khác hẳn với cách thức đã thực hiện ở phần trên. 1.1.3. Lập trình hướng đối tượng Trong lập trình hướng đối tượng: - Người ta có thể coi các thực thể trong chương trình là các đối tượng và sau đó trừu tượng hóa đối tượng thành lớp đối tượng. - Dữ liệu được tổ chức thành các thuộc tính của lớp. Người ta ngăn chặn việc thay đổi tùy tiện dữ liệu trong chương trình bằng các cách giới hạn truy nhập như chỉ cho phép truy nhập dữ liệu thông qua đối tượng, thông qua các phương thức mà đối tượng được cung cấp... 5 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  6. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện - Quan hệ giữa các đối tượng là quan hệ ngang hàng hoặc quan hệ kế thừa: Nếu lớp B kế thừa từ lớp A thì A được gọi là lớp cơ sở và B gọi là lớp dẫn xuất. Ngôn ngữ lập trình hướng đối tượng phổ biến hiện nay là Java, C++, C#... Mặc dù C++ cũng có những đặc trưng cơ bản của lập trình hướng đối tượng nhưng vẫn không phải là ngôn ngữ lập trình thuần hướng đối tượng.  Đặc trưng: Lập trình hướng đối tượng có ba đặc trưng cơ bản: - Tính đóng gói: dữ liệu luôn được tổ chức thành các thuộc tính của lớp đối tượng. Việc truy nhập đến dữ liệu phải thông qua các phương thức của đối tượng lớp. - Tính đa dạng: hiểu theo đúng nghĩa là khả năng thể hiện nhiều hình thái. Trong C++, tính đa dạng cho phép một tên được thực hiện nhiều hành động. Chẳng hạn, chúng ta có 3 lớp box, triangle và circle, mỗi lớp mô tả một hình, tất cả các lớp đó đều có hàm show() là hàm vẽ các đối tượng lên màn hình. Điều này có nghĩa là hàm này thể hiện trong 3 lớp và nó sẽ vẽ ra 3 hình khác nhau ở trên. Như bạn có thể thấy trong C++, một hàm có thể có nhiều mục đích người ta gọi là hàm nạp chồng (function overloading), toán tử nạp chồng (operator overloading) hiểu là tính đa dạng của C++. Mục đích chính của tính đa dạng là thực hiện nhiều chức năng phức tạp - Tính kế thừa: cơ chế này cho phép các lớp đối tượng có thể kế thừa từ các lớp đối tượng khác. Nói cách khác, tính kế thừa cho phép một lớp mới được định nghĩa bằng cách mở rộng hay sửa đổi từ một hoặc nhiều lớp đã tồn tại. Lớp mới là lớp dẫn xuất hay lớp kế thừa còn lớp đã tồn tại là lớp cơ sở. Khi đó, trong các lớp dẫn xuất, có thể sử dụng các phương thức của các lớp cơ sở mà không cần phải định nghĩa lại. 1.2. Lập trình hướng đối tượng và ngôn ngữ C++ 1.2.1. Ưu điểm của lập trình hướng đối tượng - Không còn nguy cơ bị thay đổi tự do trong chương trình. Vì dữ liệu đã được đóng gói vào các đối tượng. Nếu muốn truy nhập vào dữ liệu phải thông qua các phương thức được cho phép của đối tượng. - Khi thay đổi cấu trúc dữ liệu của một đối tượng, không cần thay đổi mã nguồn của các đối tượng khác, mà chỉ cần thay đổi một số thành phần của đối tượng dẫn xuất. Điều này hạn chế sự ảnh hưởng xấu của việc thay đổi dữ liệu đến các đối tượng khác trong chương trình. - Có thể sử dụng lại mã nguồn, tiết kiệm tài nguyên, chi phí thời gian. Vì nguyên tắc kế thừa cho phép các lớp dẫn xuất sử dụng các phương thức từ lớp 6 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  7. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện cơ sở như những phương thức của chính nó, mà không cần thiết phải định nghĩa lại. - Phù hợp với các dự án phần mềm lớn, phức tạp. 1.2.2. Một số khái niệm cơ bản Trong mục này, chúng ta sẽ làm quen với một số khái niệm cơ bản trong lập trình hướng đối tượng. Bao gồm: - Khái niệm đối tượng (object) - Khái niệm đóng gói dữ liệu (encapsulation) - Khái niệm kế thừa (inheritance) - Khái niệm đa hình (polymorphism)  Đối tượng (Object) Trong lập trình hướng đối tượng, đối tượng được coi là đơn vị cơ bản nhỏ nhất. Các dữ liệu và cách xử lý chỉ là thành phần của đối tượng mà không được coi là thực thể. Một đối tượng chứa các dữ liệu của riêng nó, đồng thời có các phương thức (hành động) thao tác trên các dữ liệu đó: Đối tượng = Dữ liệu + Phương thức  Lớp (Class) Khi có nhiều đối tượng giống nhau về mặt dữ liệu và phương thức, chúng được nhóm lại với nhau và gọi chung là lớp: - Lớp là sự trừu tượng hóa của đối tượng. - Đối tượng là một thể hiện của lớp.  Đóng gói dữ liệu (Encapsulation) - Dữ liệu được đóng gói vào trong đối tượng. Mỗi dữ liệu có một phạm vi truy nhập riêng. - Không thể truy nhập đến dữ liệu một cách tự do như lập trình cấu trúc. - Muốn truy nhập đến các dữ liệu đã được bảo vệ, phải thông qua các đối tượng, nghĩa là phải sử dụng các phương thức mà đối tượng cung cấp mới có thể truy nhập đến dữ liệu của đối tượng đó. Tuy nhiên, vì C++ chỉ là ngôn ngữ lập trình nửa đối tượng cho nên C++ vẫn cho phép định nghĩa các biến dữ liệu và các hàm tự do, đây là kết quả kế thừa từ ngôn ngữ C, một ngôn ngữ lập trình thuần cấu trúc. 7 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  8. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện  Kế thừa (Inheritance) Tính kế thừa của lập trình hướng đối tượng cho phép một lớp có thể kế thừa từ một số lớp đã tồn tại. Khi đó, lớp mới có thể sử dụng dữ liệu và phương thức của các lớp cơ sở như là của mình. Ngoài ra, lớp dẫn xuất còn có thể bổ sung thêm một số dữ liệu và phương thức. Ưu điểm của kế thừa là khi thay đổi dữ liệu của một lớp, chỉ cần thay đổi các phương thức trong phạm vi lớp cơ sở mà không cần thay đổi trong các lớp dẫn xuất.  Đa hình (Polymorphsim) Đa hình là khái niệm luôn đi kèm với kế thừa. Do tính kế thừa, một lớp có thể sử dụng lại các phương thức của lớp khác. Tuy nhiên, nếu cần thiết, lớp dẫn xuất cũng có thể định nghĩa lại một số phương thức của lớp cơ sở. Đó là sự nạp chồng phương thức trong kế thừa. Nhờ sự nạp chồng phương thức này, ta chỉ cần gọi tên phương thức bị nạp chồng từ đối tượng mà không cần quan tâm đối tượng đó là đối tượng của lớp nào. Chương trình sẽ tự động kiểm tra xem đối tượng là thuộc kiểu lớp cơ sở hay thuộc lớp dẫn xuất, sau đó sẽ gọi phương thức tương ứng với lớp đó. Đó là tính đa hình. 1.2.3. Lập trình hướng đối tượng trong C++ Vì C++ là một ngôn ngữ lập trình được mở rộng từ một ngôn ngữ lập trình cấu trúc C nên C++ được xem là ngôn ngữ lập trình nửa hướng đối tượng, nửa hướng cấu trúc.  Những đặc trưng hướng đối tượng của C++ - Cho phép định nghĩa lớp đối tượng - Cho phép đóng gói dữ liệu vào các lớp đối tượng. Cho phép định nghĩa phạm vi truy nhập dữ liệu của lớp bằng các từ khóa phạm vi: public, protected, private. - Cho phép kế thừa lớp với các kiểu kế thừa khác nhau tùy thuộc vào từ khóa dẫn xuất. - Cho phép lớp dẫn xuất sử dụng các phương thức của lớp cơ sở (trong phạm vi quy định). - Cho phép định nghĩa chồng phương thức trong lớp dẫn xuất.  Những hạn chế hướng đối tượng của C++ 8 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  9. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện Những hạn chế này là do C++ được phát triển từ một ngôn ngữ lập trình thuần cấu trúc C. - Cho phép định nghĩa và sử dụng các biến dữ liệu tự do - Cho phép định nghĩa và sử dụng các hàm tự do - Ngay cả khi dữ liệu được đóng gói vào lớp, dữ liệu vẫn có thể truy nhập trực tiếp như dữ liệu tự do bởi các hàm bạn, lớp bạn trong C++. 1.3. Giao diện công cụ lập trình C++ Visual Studio 2010 là một môi trường biên dịch tích hợp của Microsoft. Nó là trình biên dịch tốt nhất, hiện đại nhất trên hệ điều hành windows. Chúng ta có thể sử dụng nó để biên dịch C++, C#, Visual Basic, J#... Ta sẽ tìm hiểu Visual Studio theo hướng tiếp cận với C++. Một điều cần lưu ý, với phiên bản 2010 này, Visual Studio có hai phiên bản dành cho C++: C++ for Net và C++ for Win32. Chúng ta chỉ tìm hiểu về tính năng C++ for Win32. Trong nội dung của giáo trình này ta sẽ xây dựng các ứng dụng Console trên nền Win32 mà không thảo luận thêm về Visual C++ for Net bởi vì nó thuộc một phạm trù tương đối khác so với Visual C++ for Win32.  Khởi động Visual studio 2010: Có thể thực hiện một trong 2 cách sau: - Nhấp đôi chuột vào biểu tượng VS 2010 trên nền Desktop. - Vào Start > All Programs > Microsoft VS 2010 > Chọn biểu tượng VS 2010. 9 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  10. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện  Tạo mới dự án trong VS 2010: VS quản lý theo các workspace và các dự án. Trong VS, workspace được gọi là Solution. Trong mỗi workspace có thể chứa nhiều dự án. Nếu chưa tạo một dự án nào thì khi tạo mới một dự án workspace sẽ tự động được tạo. Để tạo một dự án mới, ta vào File > New > Project (hoặc tổ hợp phím tắt Ctrl + Shift + N). Trong hộp thoại xuất hiện chúng ta chọn Win32 Console Application. - Mục name: nhập tên dự án - Mục location: nhấp vào nút Browse để chọn vị trí lưu trữ. Mặc định, VS sẽ lưu trữ dự án ở thư mục Documents. - Mục Solution name: tạo một thư mục con trong thư mục dự án hay tạo trực tiếp trong thư mục dự án. 10 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  11. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện - Nhóm Application Type: + Windows application: tạo ứng dụng winform + Console application: tạo ứng dụng chạy trên DOS + Dll: tạo thư viện dll + Static library: tạo thư viện tĩnh - Nhóm Add common header file: + Alt: tạo header từ lớp thư viện Alt + MFC: tạo header từ lớp thư viện MFC - Nhóm Additional options: + Empty project: tạo dự án rỗng không có tập tin + Export symbols: xuất bản các biểu tượng + Precompiled header: tạo tập tin tiêu đề tiền biên dịch Hãy chọn Console Application và chọn Empty Project, sau đó nhấp Finish  Tạo các tập tin trong dự án: Trong cửa sổ Solution Explorer, chuột phải và chọn Add: 11 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  12. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện - Nếu tập tin đã tồn tại, chọn Add Existing Items. Sau đó, duyệt đến vị trí tồn tại của tệp tin. - Nếu tệp chưa tồn tại, chọn Add New Items. Trong cửa sổ xuất hiện, tùy thuộc vào tập tin mà chúng ta cần, hãy chọn loại tương ứng. Thông thường, trong dự án của C++, chúng ta sử dụng 2 tập tin tiêu đề .h và thân chương trình .cpp. Sau đó, nhập tên của tập tin và nhấp OK. Ngoài ra, nó có thể chứa các hàm macro, các khai báo hằng và biến toàn cục được sử dụng trong toàn bộ chương trình. Tập tin .cpp thường chứa phần thân của hàm hoặc lớp. Khi làm việc với các dự án trong C++, chúng ta nên tách chương trình thành nhiều phần và nên sử dụng các tệp tiêu đề để làm cho chương trình gọn gàng và dễ hiểu hơn. Sau khi chọn được tập tin cần tạo, nhập tên tập tin, sau đó nhấp nút Add. Tập tin mới sẽ được bổ sung vào dự án. - Add Class: bổ sung các lớp đối tượng cho dự án. ở đây chúng ta chọn C++ class. 12 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  13. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện  Biên dịch dự án: - Để biên dịch và thực thi một dự án: Debug > Start Debigging (hoặc Start without Debugging) - Để biên dịch toàn bộ dự án mà không thực thi dự án: Build > Build Solution  Một số phím tắt trong VS 2010: 1.4. Cấu trúc một chương trình C++ Mã chương trình Kết quả [1.] // my first program Hello, world! [2.] #include [3.] using namespace std; [4.] int main() [5.] { [6.] cout
  14. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện [2.] Dòng này bắt đầu bằng kí tự #include, tiếp đến là tên tệp tin tiêu đề chứa các thư viện. Thư viện iostream chứa các hàm xuất nhập cơ bản, hàm này là một phần của namespace std. [3.] Trong C++, các thành phần của thư viện chuẩn được khai báo trong namespace. Để có thể truy xuất đến các thành phần của nó, ta sử dụng từ khóa using. Trong thư viện chuẩn của C++, đối tượng cout được tổ chức trong namespace std. [4.] Bất kì một chương trình C++ nào cũng cần có một hàm main để thực thi chương trình. Tên hàm là main, tiếp theo là cặp dấu ngoặc đơn dùng để chứa tham số đính kèm. Thông thường một chương trình ứng dụng sẽ chứa 2 tham số trong hàm main là int argc và char* args[]. Các tham số này gọi là tham số dòng lệnh. Tiếp theo là dấu {}. Bên trong cặp dấu này là chương trình chính. [5.] Dấu mở khối. [6.] Xuất dữ liệu ra màn hình. Hàm printf vẫn hoạt động tốt trong trường hợp này. Nếu dùng hàm printf thì không cần khai báo thư viện iostream và namespace std ở trên. Khi sử dụng đối tượng cout, chúng ta có thể bỏ qua dòng lệnh [3.] và thay vào đó ta sẽ viết std::cout. Khi sử dụng đối tượng cout, ta có thêm 1 cách thức để xuống dòng thay vì dùng \n, đó là endln. Đối tượng cout thường đi với toán tử xuất
  15. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while b. Biến - Biến dùng để lưu giá trị và nó có thể thay đổi được. Một biến sẽ được quy định bởi 1 kiểu dữ liệu nào đó. Kiểu dữ liệu thường có 2 loại: kiểu dữ liệu nguyên thủy và kiểu dữ liệu do người dùng tự định nghĩa. - Khai báo biến: ; Vd: int a; float mynumber; bool istrue; long num1, num2, num3; - Khởi tạo giá trị cho biến: C1: type tên_biến = giá_trị_khởi_tạo; Vd: int a = 0; C2: type tên_biến (giá_trị_khởi_tạo); Vd: int a (0); - Các kiểu dữ liệu tham chiếu khác (ngoài kiểu dữ liệu ở trên và kiểu string) không thể sử dụng hai cách khởi tạo này. c. Hằng Khái niệm - Hằng là một phần tử có giá trị cố định, giá trị của nó được khởi tạo ngay khi hằng được tạo ra. - Thường sử dụng các chữ cái để đặt tên cho hằng. Tên hằng không chứa các kí tự đặc biệt, kí tự trắng hay bắt đầu bằng số, không được trùng với từ khóa. Định nghĩa một hằng #define tên_hằng giá_trị Vd: #define PI 3.14 Ví dụ chương trình tính diện tích hình tròn: #include using namespace std; #define PI 3.14 15 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  16. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện int main(){ int r=1; float s; s=PI*r*r; cout 255 Signed: - -> -1 Short Số nguyên ngắn 2 byte Unsigned: 0 -> -1 Signed: - -> -1 Int Số nguyên 4 byte Unsigned: 0 -> -1 Signed: - -> -1 Long Số nguyên dài 4 byte Unsigned: 0 -> -1 Long long Số nguyên cực dài 8 byte Signed: - -> -1 16 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  17. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện Unsigned: 0 -> -1 Bool Giá trị logic – true/false 1 byte True và False Float Số thập phân 4 byte 7 số thập phân double Số thập phân chấm động 8 byte 15 số thập phân Số thập phân chấm động Long double 8 byte 15 số thập phân dài Wchar_t Kí tự dài 2/4 byte Chú ý - Khi khai báo biến thuộc kiểu nguyên mà ta không sử dụng khai báo có dấu (signed) hoặc không dấu (unsigned) thì chương trình mặc định sẽ quy định là kiểu nguyên có dấu. Int num; // tương đương với singed int num; - Để kiểm tra kích thước của kiểu dữ liệu, ta sử dụng hàm sizeof(tên biến) hoặc sizeof(kiểu dữ liệu). 1.5.1.2 Toán tử Ngôn ngữ lập trình C++ cung cấp cho ta khá đầy đủ các toán tử, các toán tử đó bao gồm: - Toán tử gán (=): Vd: a = b + 2; a = a +1; a = b= c= 5; - Toán tử số học: +, -, *, /, % - Toán tử gán hợp nhất: +=, -=, *=, /=, %=, &=, |= - Toán tử tăng và giảm: a++; ++a; a--; --a; - Toán tử so sánh: ==, !=, >, =,
  18. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện Mức ưu tiên Toán tử Toán tử tăng, giảm ++, --, Toán tử số học *, /, %, +, - Toán tử so sánh , ==, != Toán tử logic &&, ||, ! Toán tử gán =, *=, /=, %=, +=, -=, &=, |= 1.5.1.3 Các cấu trúc lệnh điều khiển Một chương trình khi thực thi, nó không chỉ đơn thuần là một dãy các câu lệnh tuần tự. Trong quá trình xử lý, nó có thể kiểm tra điều kiện rồi thực thi đoạn mã hoặc lặp đi lặp lại một đoạn mã nào đó... với mục đích đó, C++ cung cấp cho ta các cấu trúc điều khiển. a. Cấu trúc rẽ nhánh  Cấu trúc lệnh điều kiện if If (biểu_thức_điều_kiện_đúng) { Các_lệnh; } Giải thích: kiểm tra giá trị của biểu thức điều kiện, nếu đúng thì các lệnh bên trong sẽ được thực hiện, ngược lại sẽ không được thực hiện. Trường hợp biểu_thức_điều_kiện sai, cần thực thi một mệnh đề khác. Ta sẽ sử dụng từ khóa else: If (biểu_thức_điều_kiện_đúng) { ... }else { ... } Cấu trúc if có thể lồng nhau, khi đó ta có cấu trúc lệnh phức hợp.  Cấu trúc lựa chọn: switch switch (biểu_thức){ case hằng_1: nhóm_các_lệnh; break; 18 Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và truyền thông
  19. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện case hằng_2: nhóm_các_lệnh; break; ... default: nhóm_các_lệnh; } Giải thích: kiểm tra giá trị của biểu thức, nếu giá trị của biểu thức rơi vào danh sách hằng, thì nó sẽ thực hiện các lệnh trong từng trường hợp case tương ứng. Nếu không thuộc vào danh sách hằng thì nó sẽ thực hiện lệnh trong trường hợp default. b. Cấu trúc lặp  Vòng lặp while: While (biểu_thức_điều_kiện_đúng) { ... } Giải thích: nếu biểu thức điều kiện đúng, các lệnh bên trong vòng lặp sẽ được thực hiện cho đến khi nó nhận giá trị sai. Ví dụ: Ví dụ Kết quả int main(){ Nhập n:5 int n; 5 coutn; 3 while (n>0){ 2 cout
  20. Bài giảng Kỹ thuật lập trình – Ngành Truyền thông đa phương tiện For (biểu_thức_khởi_tạo; biểu_thức_giới_hạn; biểu_thức_tăng_giảm;) { .... } Giải thích: thực hiện vòng lặp, với số vòng lặp từ biểu thức khởi tạo đến biểu thức giới hạn theo mức tăng là biểu thức tăng giảm. c. Các câu lệnh nhảy  Câu lệnh break Để thoát ra khỏi vòng lặp. Thông thường khi ta sử dụng các vòng lặp không xác định được số lần lặp, để tránh lặp vô hạn ta thường sử dụng câu lệnh break để thoát khỏi vòng lặp. Ví dụ Kết quả #include 10, 9, 8, 7, 6, 5, 4, countdown aborted! using namespace std; int main () { int n; for (n=10; n>0; n--) { cout

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản