[Lập trình] Bài 1: Giới thiệu tổng quan về C++

Xin chào các bạn đến với chuỗi bài viết Nhập môn lập trình với ngôn ngữ C/C+ +.

Chuỗi bài sẽ tập trung đến đối tượng là các bạn muốn tìm hiểu về lập trình nhưng chưa có phương hướng để tiếp cận nó như thế nào cho hợp lý. Còn đối với các bạn đã có kiến thức nền tảng về lập trình, đây có thể xem như tài liệu được tổng hợp từ nhiều nguồn giúp cổng cố kiến thức hiện.

Lưu ý:

– Như đã đề cập phía trên, nội dung bài viết sẽ hướng đến các bạn mới bắt đầu học lập trình nên ngôn từ sẽ thông dụng và đơn giản nhất có thể để các bạn đọc hiểu được trọn vẹn.

– Thay vì lý thuyết khô khan và cứng nhắc, nội dung sẽ tập trung vào thực hành đồng thời luyện tập cho các bạn về tư duy của một lập trình viên.

– Cuối mỗi bài viết sẽ đi kèm với bài tập tự luyện để các bạn củng cố kiến thức và nâng cao kỹ năng lập trình của mình hơn.

HẠN CHẾ VIỆC COPY/PASTE CODE VÌ CÓ THỂ DẪN ĐẾN NHỮNG HẬU QUẢ KHÔNG LƯỜNG VỀ SAU.

– Mọi thắc mắc và góp ý của các bạn sẽ được ghi nhận để cải thiện bài viết hơn.

– Cuối cùng là điều quan trọng nhất: Think Twice, Code Once

Nguồn ảnh : Devian Art

Nội dung bài viết:

  1. Giới thiệu về ngôn ngữ lập trình C/C++
  2. Các đặc điểm của C/C++ và tại sao chọn C/C++ để học?
  3. Công đoạn để phát triển một chương trình C/C++
  4. Các bước cài đặt môi trường phát triển chương trình (IDE) cho C/C++
    Kết luận

1) Giới thiệu về ngôn ngữ lập trình C/C++:

Trước C++, ngôn ngữ lập trình C được phát triển trong năm 1972 bởi Dennis Ritchie tại phòng thí nghiệm Bell Telephone, C chủ yếu là một ngôn ngữ lập trình hệ thống, một ngôn ngữ để viết ra hệ điều hành. Hệ điều hành nổi tiếng Windows cũng được viết bằng C/C++

Dennis Ritchie
Nguồn ảnh: Wikipedia

C++ là một loại ngôn ngữ lập trình bậc trung (middle-level). Đây là ngôn ngữ lập trình đa năng được tạo ra bởi Bjarne Stroustrup.

Từ thập niên 1990, C++ đã trở thành một trong những ngôn ngữ thương mại ưa thích và phổ biến của lập trình viên.

Bjarne Stroustrup
Nguồn ảnh: Chu.cam.ac.uk

– C++ là một phiên bản mở rộng của ngôn ngữ lập trình C. Những bản cập nhật gần đây nhất là C++ 14 và C++ 17, và sắp tới là C++ 20 (đang trong quá trình phát triển), đã và đang mang đến những tính năng hỗ trợ rất lớn cho lập trình viên C++.

Các phiên bản và sự phát triển của C++ qua các năm, các bạn có thể tham khảo thêm tại đây.
Nguồn ảnh: Modernescpp

2) Các đặc điểm của C/C++ và tại sao chọn C/C++ để học?

2.1) Các đặc điểm của C/C++:

  • Ngôn ngữ lập trinh bậc trung : Các bạn có thể sử dụng C/C++ để phát triển những chương trình bậc cao, và kể cả những chương trình bậc thấp hoạt động tốt trên hầu hết phần cứng.
  • Đơn giản và hiệu quả: Cú pháp của C/C++ rất dễ hiểu và khá giống Tiếng Anh. Ta thậm chí có thể dùng C/C++ để thiết kế những ứng dụng dù trước đó đã được viết bằng hợp ngữ ( Assembly language).
  • Hỗ trợ đa nền tảng: C/C++ được hỗ trợ trên bất kỳ các nền tảng, hệ điều hành nào. Ta có thể viết một chương trình C/C++ trên Linux, biên dịch nó trên Windows và chạy trên Mac OS.
  • Lập trình hướng đối tượng ( Object-oriented programming): Lí do cho sự phổ biến của C++ chính là nó hỗ trợ vô cùng hiệu quả việc lập trình hướng đối tượng, bao gồm việc trường tựu hóa dữ liệu (data abstraction), đóng gói dữ liệu (data encapsulation ), kế thừa ( inheritance ) và đa hình ( polymorphism ). Những khái niệm này khá phức tạp, nên nếu bạn chưa hiểu về chúng, đừng lo lắng, chúng ta sẽ lần lượt làm rõ từng khái niệm trong chuỗi bài về Lập trình hướng đối tượng.
  • Con trỏ: Ngôn ngữ C/C++ cung cấp cho chúng ta một công cụ vô cùng tiện lợi là con trỏ (pointer), một con trỏ có nhiệm vụ lưu địa chỉ bộ nhớ làm giá trị của nó, đồng thời lưu trữ và truy cập dữ liệu từ bộ nhớ . Khái niệm về con trỏ khá quan trọng và nó sẽ liên quan rất nhiều đến các môn học khác, nên chúng ta sẽ có một bài viết đầy đủ hơn ở các bài học sau.

2.2) Tại sao chọn C/C++ để học:

  • Hiện nay trong giới lập trình có rất nhiều loại ngôn ngữ lập trình khác nhau, tùy theo mục đích sử dụng của người dùng mà lựa chọn chúng phù hợp nhu cầu của chúng ta. Vậy thì C/C++ có ưu điểm gì mà nhiều người, ngay cả nhiều trường đại học chọn nó để học và giảng dạy khi mới bước chân vào con đường lập trình này.
  • Để trả lời câu hỏi này, trước tiên chúng ta cần biết C/C++ có thể làm được gì ?
  • Theo câu trả lời của Thiên Anh cho câu hỏi Why would you use C++ :
    • C/C++ được thiết kế để viết những hệ thống lớn thậm chí cực lớn, ngoài ra C/C++ còn được dùng để tạo hệ điều hành máy tính, nổi tiếng nhất là hệ điều hành Windows của Microsoft.
Hệ điều hành Windows 10
Nguồn ảnh : Microsoft
  • Bên cạnh đó C/C++ còn được dùng trong các ngành Hệ thống nhúng công nghiệp (Industrial Embedded Systems) , dây chuyền robot trong các nhà máy, xí nghiệp, các bảng mạch điện tử, thậm chí là hệ thống điện trong các dãy nhà, đồ điện gia dụng đều được viết bằng C/C++
Nguồn ảnh: Medium
  • Những tựa game nổi tiếng từng làm mưa làm gió của hãng Blizzard có thể ví dụ như World of Warcraft, Diablo series, Starcraft series đều được viết bằng C/C++.
Những tựa game đình đám của Blizzard đều được viết bằng C/C++
Nguồn ảnh: Opiumpulses
  • Có thể thấy C/C++ đã thâm niên lâu đời trong ngành công nghiệp game, bên cạnh đó các loại máy chơi game như Playstation, Xbox, Wii, Nintendo,… đều được phát triển bằng C/C++
Các hệ máy game console
Nguồn ảnh : Express.co.uk
  • Qua đây các bạn có thể thấy C/C++ có ứng dụng vô cùng to lớn và đa dạng trong nhiều lĩnh vực khác nhau. Nếu hướng đi trong lập trình của các bạn có liên quan đến các công việc trên, C/C++ có thể là một lựa chọn tốt cho bạn.
  • Bên cạnh việc C/C++ có thể áp dụng trên đa lĩnh vực thì một trong lí do khác để học C/C++ có thể đề cập đến là nhu cầu việc làm. Rất nhiều công ty tuyển dụng các lập trình viên C/C++ cho các vị trí khác nhau kèm với mức lương rất đáng kể.
Các mẩu tin tuyển dụng lập trình viên C/C++ trên website itviec.com
  • Sự lên ngôi của các ngôn ngữ lập trình khác như Python, C#,Java, Javascript, đã khiến C/C++ đánh mất vị trí thế của mình, tuy vậy C/C++ vẫn nhưng có chỗ đứng rất lớn trong giới lập trình.
Top các ngôn ngữ lập trình được sử dụng nhiều nhất theo khảo sát của Indeed
Nguồn ảnh: Indeed
  • C++ chiếm được thị phần sử dụng cao cho đến bây giờ phải kể đến nhờ những đóng góp rất lớn từ phía cộng đồng người dùng. Những cộng đồng này được tạo ra nhằm mục đích hỗ trợ và tương tác giữa các lập trình viên với nhau.
  • Một trong những cộng đồng C/C++ nói riêng và lập trình nói chung phải kể đến stackoverflow, đa số các lỗi phát sinh trong quá trình chúng ta lập trình đều được hướng dẫn khắc phục ở đây. Vì đây là một cộng đồng quốc tế, thế nên ngôn ngữ sử dụng chủ yếu sẽ là Tiếng Anh, các bạn nên trang bị cho mình một vốn ngoại ngữ cần thiết để có thể đọc hiểu được trọn vẹn nhất.
Nguồn ảnh : stackoverflow

3) Công đoạn để phát triển một chương trình C/C++ :

Chương này được tham khảo từ trang web daynhauhoc.com

Trong chương này, chúng ta sẽ cùng nói về các bước để phát triển/ triển khai một chương trình C/C++ trước khi các bạn bắt đầu làm việc với chương trình đầu tiên của mình.

Một chương trình máy tính (phần mềm) được tạo ra với các mục đích khác nhau ví dụ có thể kể đến như Thống kê, dạy học, y tế, giải trí, hay thậm chí phần mềm được tạo ra để hổ trợ lập trình viên tạo ra những phần mềm.

Nguồn ảnh : SpringBoard

Để viết được một chương trình là một công đoạn nhỏ trong quá trình sản xuất phần mềm (vì một phần mềm thường là tập hợp của nhiều chương trình nhỏ) nhưng nó cũng được thực hiện thông qua những công đoạn tương tự như phát triển một phần mềm lớn.

Chúng ta bắt đầu làm rõ từng bước trong quá trình phát triển chương trình phần mềm (hay cụ thể là chương trình C/C++).

Nguồn ảnh : freedesignfile.com

Bước 1: Xác định vấn đề cần giải quyết (Brainstorming):

Công đoạn này quyết định phần lớn đến việc chương trình của bạn được thực hiện một cách khó khăn hay dễ dàng. Nhưng trên lý thuyết, nó khá đơn giản. Tất cả những gì bạn cần là một ý tưởng có thể dễ dàng xác định. Để dễ hiểu hơn, chúng ta cùng đặt một câu hỏi: Bạn đang gặp phải vấn đề gì?

Nguồn ảnh : freepik.com

Chúng ta xin đưa ra một số tình huống cụ thể:

  • Chúng ta muốn có một chương trình cho phép nhập vào năm sinh, sau đó tính ra số tuổi hiện tại của bạn.
  • Chúng ta muốn viết một chương trình tìm ra đường đi ngắn nhất để đi từ nhà đến trường.
  • Chúng ta cần một chương trình giúp mình hoàn tất đống sổ sách một cách nhanh chóng hơn.

Trên đây là ba trường hợp ngẫu nhiên chúng ta nghĩ đến vì cần áp dụng nó trong cuộc sống. Vì cần máy tính giúp chúng ta giải quyết những thứ tương tự như trên, nên chúng ta đã xác định vấn đề của riêng mình.

  • Trường hợp 1: Mình muốn có một chương trình cho phép nhập vào năm sinh, sau đó tính ra số tuổi hiện tại của bạn.
Ví dụ về một chương trình tính số tuổi
Nguồn ảnh : Internet
  • Có lẽ đây là một vấn đề quá đơn giản so với một số người, nhưng trước khi làm cho máy tính hiểu được vấn đề, bản thân chúng ta phải hiểu được vấn đề trước.
  • Chúng ta phải tự đặt câu hỏi với bản thân : “Hiện tại, mình đang cần biết điều gì?”. Sau đó tự trả lời với bản thân là: “Mình muốn biết năm nay mình bao nhiêu tuổi ?”.
  • Trường hợp 2: Mình muốn viết một chương trình tìm ra đường đi ngắn nhất để đi từ một điểm này đến một điểm khác
Nguồn ảnh : Internet

Câu hỏi bản thân mình tự đặt ra: “Làm thế nào để tiết kiệm xăng bây giờ?” Tự trả lời luôn: “Để kiếm coi đường nào ngắn nhất để đi tới trường mới được”, hay là “tuyến đường nào giao thông thông thoáng nhất ?”

  • Trường hợp 3: Mình cần một chương trình giúp mình hoàn tất đống sổ sách một cách nhanh chóng hơn.
Nguồn ảnh : daynhauhoc.com

Câu hỏi: “Với cái đống sổ sách này, làm sao mình có thể dành thời gian làm việc khác được ?” Trả lời: “Phải tìm cách để quản lý nó thôi, tiện thể đưa cho máy tính làm luôn cho khỏe”.

Có thể trong cuộc sống các bạn gặp phải những vấn đề không giống với mình đưa ra ở trên. Có thể đó là một bài toán khó, một trường hợp khó giải quyết, và bạn cần cái máy tính của bạn giúp đỡ, đó là lúc mà bạn phải tự tìm ra câu trả lời cho bản thân.

Bước 2: Thiết kế giải pháp

Đây là lúc mà bạn cần đặt ra câu hỏi: “Làm thế nào” để giải quyết những vấn đề trên?

Nguồn ảnh: Internet

Vấn đề nan giải là một trường hợp ở trên đều có nhiều hơn 1 cách giải quyết. Một trong số chúng tốt, số còn lại đa phần là không tốt. Thường thì trong bước này, một số lập trình viên tồi sẽ thực hiện một cách lôi thôi, cẩu thả nhất trong tất cả các công đoạn. Mình đã thấy nhiều người mới học lập trình, sau khi nhìn ra được vấn đề, họ ngồi xuống và bắt đầu code những gì họ đang tưởng tượng. Đa phần, kết quả sinh ra không như mong đợi.

Điển hình, một giải pháp tốt thường có những đặc điểm sau:

  • Nó có tính minh bạch, rõ ràng.
  • Nó có thể sử dụng lại và dễ thay đổi trong tương lai.
  • Tính hiệu quả.
  • Thực hiện tốt công đoạn này, bạn sẽ giảm được tối đa khả năng phát sinh lỗi trong chương trình (sẽ tiết kiệm được khối thời gian cho việc sửa lỗi).

Ở những bài sau, các bạn sẽ được học cách tự mình đưa ra giải pháp cho từng tình huống cụ thể.

Bước 3: Viết chương trình ( Write program) :

Để viết được chương trình, bạn cần biết:

  • Ngôn ngữ lập trình bạn đang sử dụng.
Nguồn ảnh : cbronline
  • IDE (môi trường phát triển ứng dụng).
Màn hình làm việc của IDE Dev-C++
Màn hình làm việc của Visual Studio 2019

Trong chuỗi bài này chúng ta sẽ sử dụng một IDE khá nhẹ và dễ sử dụng là Dev C++ , rất phù hợp cho các bạn mới bước chân vào lập trình đồng thời tích hợp sẵn các tính năng như highlight (giúp phân biệt hàm, biến…), auto complete (gợi ý code), tự động lưu code (autosave), compile và run trực tiếp,…

File chứa mã nguồn C++ của bạn cần được đặt tên và lưu với phần mở rộng là .cpp còn C sẽ là .c, điều này giúp cho hệ điều hành có thể hiểu được đó là file mã nguồn C/C++. Sau này bạn có thể gặp một số file C/C++ có định dạng phần mở rộng khác như .h, .hpp … nhưng chúng ta sẽ nói về vấn đề này sau.

  • Các bạn hoàn toàn có thể viết chương trình trên một số công cụ soản thảo văn bản như Notepad++, Sublime Text, Atom, hay một số IDE khác như Visual Studio, Codeblock, Eclipse, …
  • Nhưng trong khóa học này, mình khuyên các bạn nên sử dụng IDE, vì nó hổ trợ khá nhiều cho các bạn trong việc compile chương trình và liên kết các file đối tượng.

Bước 4: Biên dịch chương trình ( Compile program):

Để biên dịch một chương trình C++, chúng ta cần một trình biên dịch (compiler).

Nguồn ảnh: medium

Mục đích của compile chương trình là biến những file mã nguồn có đuôi .cpp, … thành những file object .o, nhưng vì chúng ta sử dụng Dev C++ nên không cần quan tâm lắm về vấn đề này.

Nguồn ảnh: learncpp.com

Bước 5: Liên kết các file object

Nguồn ảnh: www.learncpp.com
  • Các files object sau khi được compiler biên dịch vẫn còn nằm tách biệt với nhau. Nên quá trình này sẽ thực hiện liên kết chúng thành một file duy nhất, gọi là executable file (file .exe).

Bước 6: Chạy chương trình và kiểm lỗi

  • Trong công đoạn này, bạn hoặc ai đó chạy chương trình mà bạn đã tạo ra, với nhiều giá trị khác nhau được đưa vào nhằm chắc chắn rằng chương trình hoạt động như ý muốn.
Chương trình sau khi chạy thành công
  • Ở chương tiếp thao, chúng ta sẽ nói về IDE (môi trường tích hợp phát triển) và cách cài đặt chúng.

4) Các bước cài đặt môi trường phát triển chương (IDE) cho C/C++:

  • Trước tiên các bạn tải phần mềm Dev C++ tại đây , nhấn vào nút Download như hình bên dưới để tải xuống.
  • Nếu các bạn không thích sử dụng Dev C++, thì có thể lựa chọn IDE khác như Visual Studio, Codeblock, v.v . Để cài đặt Visual Studio bạn có làm theo hướng dẫn tại đây, hoặc dành cho Codeblock tại đây
Nhấn nút download để tiến hành tải xuống Dev C++
  • Xong khi tải xuống thành công, chúng ta mở file installer của Dev C++ lên và nhấn OK để tiếp tục
  • Nhấn I Agree để tiếp tục
  • Lựa chọn phiên bản cài đặt cho Dev C++ , mình khuyên các bạn nên chọn Full để trải nghiệm được tốt nhất.
Lựa chọn phiên bản cài đặt cho Dev C++
  • Chờ đợi khoảng 1 phút để chương trình cài đặt
  • Nhấn vào ô Run Dev-C++ 5.11 để khởi động chương trình sau khi cài đặt thành công, nhấn Finish để đóng của sổ cài đặt.
Nhấn Finish để đóng cửa sổ cài đặt.
  • Lựa chọn ngôn ngữ hiển thị
Lựa chọn ngôn ngữ hiển thị
  • Tùy chỉnh màu sắc, font chữ, v.v. Nhấn Next để tiếp tục
  • Sau khi thiết lập thành công, nhấn OK để tiếp tục.
  • Màn hình khởi dộng của Dev C++
Màn hình khởi dộng của Dev C++
  • Okay, vậy chúng ta đã cài đặt thành công Dev C++, để các bạn không phải chờ đợi lâu chúng ta sẽ bắt tay vào viết chương trình C/C++ đầu tiên nhé.
  • Chọn File/New/Source File (Hoặc ấn tổ hợp phím Ctrl+N) để tạo file
  • Copy nội dung sau vào file vừa tạo:
  • Dành cho các bạn dùng C:
123456#include <stdio.h>int main(){printf("Hello World");return 0;}
  • Dành cho các bạn dùng C++:
1234567#include <iostream>using namespace std;int main(){cout << "Hello World";return 0;}
  • Nhấn F9 hoặc chọn Execute/Compile để biên dịch chương trình, nếu trong quá trình biên dịch không có lỗi phát sinh ta sẽ bảng thông báo như ví dụ dưới đây
Thông báo biên dịch chương trình thành công.
  • Nhấn F10 hoặc chọn Execute/Run để chạy chương trình. Bạn có thể tự động chạy chương trình ngay sau khi biên dịch bằng cách nhấn F11 hoặc chọn Execute/Compile & Run
Màn hình sau khi chạy chương trình thành công.

5) Kết luận:

Chúng ta đã đi qua bốn chương trong bài viết đầu tiên về C/C++, hãy cùng tổng hợp lại kiến thức cần nắm rõ:

  • Lịch sử hình thành và phát triển của C/C++
  • Các đặc điểm và lí do tại sao nên học C/C++
  • Các bước để tạo nên một chương trình bằng C/C++ nói riêng và các ngôn ngữ khác nói chung
  • Hướng dẫn cài đặt IDE và chạy chương trinhf C/C++ đầu tiên.

Ở bài tiếp theo chúng ta sẽ nói về các thành phần chính trong một file cpp thông dụng, các kiểu dữ liệu thường dùng và hướng dẫn nhập xuất dữ liệu. Mọi ý kiến, thắc mắc, đóng góp các bạn có thể bình luận phía dưới bài đăng, nhằm mục đích cải thiện và nâng cao chất lượng, mình sẽ rất vui nếu được nghe câu hỏi từ phía các bạn. Peace <3

Tài liệu tham khảo:

[1] https://www.programiz.com/cpp-programming

[2] https://www.geeksforgeeks.org/writing-first-c-program-hello-world-example/

[3] https://cpp.daynhauhoc.com/

[4] https://www.howkteam.vn/course/khoa-hoc-lap-trinh-c-can-ban-4

[5] https://www.quora.com/What-can-someone-do-using-C++

[6] https://codecute.com/c/huong-dan-cai-dat-ide-dev-c-lap-trinh-c-c.html

Tác giả bài viết:

Nguyễn Lê Anh Quân – KHCL2019.3

Nguồn: http://tutorials.mmlab.uit.edu.vn/index.php/2020/06/04/bai-1-gioi-thieu-tong-quan-ve-c/

TRA CỨU CHỨNG CHỈ ỨNG DỤNG CNTT

Bài viết mới nhất