Thảo luận - Lập trình C/C++ cho người mới bắt đầu | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We need money to operate the site, and almost all of it comes from our online advertising.

If possible, please support us by clicking on the advertisements.

Please add vn-z.vn to your ad blocking whitelist or disable your adblocking software.

×

Thảo luận Lập trình C/C++ cho người mới bắt đầu

NgoHungCuong


Junior Moderator
Thành viên BQT
Trước hết phải nói ngay từ đầu là mình không phải là người chuyên lập trình cũng như không được đào tạo lập trình một cách căn bản.
Những kiến thức mình có được cũng chỉ do tự tìm hiểu mà có nên những nội dung mình viết có thể chưa được chính xác hoặc đúng từ ngữ chuyên ngành.
Mình chỉ là một người đam mê lập trình và muốn chia sẻ, trao đổi những kiến thức về lập trình. Mình có thể viết những chương trình chạy trên máy tính dạng đơn giản cũng như những chương trình đơn giản cho các dòng VĐK 8051, PIC, AVR, ARM... và cũng mong nhận được những góp ý, trao đổi của mọi người.
Tại sao lại là ngôn ngữ C/C++ mà không phải là ngôn ngữ khác?
Đơn giản vì mình lập trình cho cả máy tính và VĐK nên với mình ngôn ngữ C là đủ, vừa có thể viết code cho phần mềm máy tính vừa có thể viết code cho VĐK, không cần học nhiều ngôn ngữ.
Thêm nữa ngôn ngữ C là ngôn ngữ mềm dẻo, có thể chạy trên nhiều nền tảng, nhiều hệ điều hành...
Có thể can thiệp sâu vào hệ thống. Code sinh ra chạy nhanh....
Trên diễn đàn cũng có nhiều bài viết chia sẻ ebook về lập trình C/C++ tuy nhiên quá nhiều và dễ làm rối cho người mới bắt đầu
Theo mình thì nên đọc cuốn C/C++ của thầy Phạm Văn Ất
Tiếng Anh thì có thể đọc cuốn The C Programming language
Đọc online thì có thể tham khảo tutorialspoint

@xdtuangiao
 
Sửa lần cuối bởi điều hành viên:

NgoHungCuong


Junior Moderator
Thành viên BQT
Trước khi viết chương trình đầu tiên thì cần phải có công cụ soạn thảo mã lệnh và trình biên dịch.
Công cụ soạn thảo mã lệnh (Editor) là chương trình dùng để chỉnh sửa text file: ví dụ như Notepad có sẵn của Windows; công cụ mạnh hơn như Notepad++, Visual Studio Code,...
Trình biên dịch (Compiler) dùng để chuyển chương trình nguồn (file text mã nguồn được soạn thảo bằng công cụ soạn thảo ở trên) thành chương trình thực thi được.
Hoặc IDE là sự tích hợp của Editor, Compiler... như Visual Studio, C++ Builder
- Mình nghĩ đơn giản nhất có lẽ là VC++ 6.0 (bộ công cụ này đã cũ tuy nhiên nó rất nhẹ và vẫn đủ dùng để có thể lập trình, bản thân mình vẫn dùng nó để viết chương trình có thể chạy trên windows từ XP đến Windows 10)
Link tải

- Một lựa chọn nữa là dùng Compiler của Borland với Notepad++
 

dammage

Rìu Chiến
góp vài ý kiến

kiến thức chỉ có bao nhiêu đó, sách đôi khi chỉ khác nhau hướng tiếp cận, theo tui sách nhiều mới là tốt vì người mới học có thể lựa cách tiếp cận phù hợp nhất, ngày xưa tui có suy nghĩ là nếu đọc 1 cuốn thì cùng lắm chỉ giỏi bằng người viết đó thôi, còn đọc nhiều sách khác nhau thì bạn sẽ có nhiều kiến thức hơn và nhìn nhận vấn đề rộng hơn

nhưng nói đi cũng phải nói lại, sách cũng có sách hay sách dở, nhất là mấy sách VN hay viết sai từa lưa, nhiều lỗi, code gõ vô máy không chạy, sách xuất bản sau này hông biết sao chứ hồi trước rất hay như vậy

ý kiến quan trọng nhất, theo tui nếu được thì các bạn nên đọc luôn những cuốn mới nhất vì nó update những chuẩn ngôn ngữ mới nhất, tất nhiên đi kèm đó là phải xài các công cụ mới nhất nữa, hông biết trong lập trình vi xử lý thì có quan trọng chuyện chuẩn mới hay không, nhưng mà nói chung là tui thấy vậy
 

NgoHungCuong


Junior Moderator
Thành viên BQT
góp vài ý kiến

kiến thức chỉ có bao nhiêu đó, sách đôi khi chỉ khác nhau hướng tiếp cận, theo tui sách nhiều mới là tốt vì người mới học có thể lựa cách tiếp cận phù hợp nhất, ngày xưa tui có suy nghĩ là nếu đọc 1 cuốn thì cùng lắm chỉ giỏi bằng người viết đó thôi, còn đọc nhiều sách khác nhau thì bạn sẽ có nhiều kiến thức hơn và nhìn nhận vấn đề rộng hơn

nhưng nói đi cũng phải nói lại, sách cũng có sách hay sách dở, nhất là mấy sách VN hay viết sai từa lưa, nhiều lỗi, code gõ vô máy không chạy, sách xuất bản sau này hông biết sao chứ hồi trước rất hay như vậy

ý kiến quan trọng nhất, theo tui nếu được thì các bạn nên đọc luôn những cuốn mới nhất vì nó update những chuẩn ngôn ngữ mới nhất, tất nhiên đi kèm đó là phải xài các công cụ mới nhất nữa, hông biết trong lập trình vi xử lý thì có quan trọng chuyện chuẩn mới hay không, nhưng mà nói chung là tui thấy vậy
Mình nghĩ là sách nào cũng vậy. Quan trọng nhất là người học. Sách cung cấp những kiến thức cơ bản ban đầu, còn sau đó người học phải biết cách tự học, tự tìm hiểu. Còn nếu chỉ cần đọc sách mà giỏi được thì chắc ai cũng giỏi hết. Mình lập trình cho vđk nhiều hơn. Cơ bản cuối cùng của tất cả vẫn là kết quả.
 

Teplice

Offline
Thành viên BQT
Gửi các bạn tài liệu để đọc:
 

xdtuangiao

Rìu Bạc Đôi
Trước hết phải nói ngay từ đầu là mình không phải là người chuyên lập trình cũng như không được đào tạo lập trình một cách căn bản.
Những kiến thức mình có được cũng chỉ do tự tìm hiểu mà có nên những nội dung mình viết có thể chưa được chính xác hoặc đúng từ ngữ chuyên ngành.
Mình chỉ là một người đam mê lập trình và muốn chia sẻ, trao đổi những kiến thức về lập trình. Mình có thể viết những chương trình chạy trên máy tính dạng đơn giản cũng như những chương trình đơn giản cho các dòng VĐK 8051, PIC, AVR, ARM... và cũng mong nhận được những góp ý, trao đổi của mọi người.
Tại sao lại là ngôn ngữ C/C++ mà không phải là ngôn ngữ khác?
Đơn giản vì mình lập trình cho cả máy tính và VĐK nên với mình ngôn ngữ C là đủ, vừa có thể viết code cho phần mềm máy tính vừa có thể viết code cho VĐK, không cần học nhiều ngôn ngữ.
Thêm nữa ngôn ngữ C là ngôn ngữ mềm dẻo, có thể chạy trên nhiều nền tảng, nhiều hệ điều hành...
Có thể can thiệp sâu vào hệ thống. Code sinh ra chạy nhanh....
Trên diễn đàn cũng có nhiều bài viết chia sẻ ebook về lập trình C/C++ tuy nhiên quá nhiều và dễ làm rối cho người mới bắt đầu
Theo mình thì nên đọc cuốn C/C++ của thầy Phạm Văn Ất
No quote
No quote
Tiếng Anh thì có thể đọc cuốn The C Programming language
No quote
Đọc online thì có thể tham khảo tutorialspoint
No quote
@xdtuangiao
Cảm ơn anh đã chia sẻ một bài viết tâm huyết1
 

NgoHungCuong


Junior Moderator
Thành viên BQT
Gửi các bạn tài liệu để đọc:
Như mình đã nói ở trên. Đối với người mới bắt đầu thì có quá nhiều tài liệu sẽ gây ra loãng, hoang mang, mất phương hướng, không biết bắt đầu từ đâu. Và mình nghĩ trong những tài liệu bạn đưa lên có những cái chắc bạn cũng chưa đọc bao giờ.
Vì vậy mình nghĩ ko cần có quá nhiều tài liệu tham khảo cho người mới bắt đầu.
Sau khi đã có được những kiến thức căn bản rồi thì lúc đó người học sẽ có khả năng tự tìm kiếm tài liệu, tự tìm kiếm câu trả lời cho những vấn đề thắc mắc gặp phải trong quá trình lập trình. Và ít ra là biết cách thắc mắc, biết cách đặt câu hỏi để người khác có thể hiểu và trả lời được. Không như bài viết của 1 bạn hỏi về lập trình C# trên forum này. Đọc câu hỏi đã biết là ko ai có thể giúp được và chắc cũng không hiểu bạn ấy muốn hỏi cái gì. Haiz.
 

dammage

Rìu Chiến
Như mình đã nói ở trên. Đối với người mới bắt đầu thì có quá nhiều tài liệu sẽ gây ra loãng, hoang mang, mất phương hướng, không biết bắt đầu từ đâu. Và mình nghĩ trong những tài liệu bạn đưa lên có những cái chắc bạn cũng chưa đọc bao giờ.
Vì vậy mình nghĩ ko cần có quá nhiều tài liệu tham khảo cho người mới bắt đầu.
Sau khi đã có được những kiến thức căn bản rồi thì lúc đó người học sẽ có khả năng tự tìm kiếm tài liệu, tự tìm kiếm câu trả lời cho những vấn đề thắc mắc gặp phải trong quá trình lập trình. Và ít ra là biết cách thắc mắc, biết cách đặt câu hỏi để người khác có thể hiểu và trả lời được. Không như bài viết của 1 bạn hỏi về lập trình C# trên forum này. Đọc câu hỏi đã biết là ko ai có thể giúp được và chắc cũng không hiểu bạn ấy muốn hỏi cái gì. Haiz.
topic chia sẻ đó là do tui lập, và tui cũng có ghi rõ trong đó luôn là không có thời gian đọc hết nữa, nhiều quá mà
7L1XX2F.gif


khi học 1 tài liệu dĩ nhiên không ai có thể hiểu hết xuyên suốt toàn bộ tài liệu đó, vậy khi gặp những khúc mắc, những giải thích còn mơ hồ, những lúc code không chạy hoặc chạy sai dĩ nhiên phải google tìm hiểu thêm (stackoverflow, learncpp hoặc ngay cái vn-zoom này nè)

rồi chưa kể tới những vấn đề không phải ngôn ngữ c nhưng lại có liên quan bắt buộc phải biết, chẳng hạn như là trình biên dịch, không thể lập trình mà không có trình biên dịch được, những cái như là lựa công cụ, phiên bản, hướng dẫn cài đặt, cách sử dụng, các tùy chỉnh, sửa lỗi, abcxyz... lại cần thêm 1 mớ tài liệu

còn nhiều nhiều cái nữa, tóm lại là, các newbie chỉ cầm trong tay 1 cuốn sách và nghĩ rằng đã học lập trình từ nó, nhưng thực chất là học từ rất nhiều nguồn tài liệu khác nhau mà bản thân không nhận ra
fV2jNq8.gif


trở lại với riêng ngôn ngữ c, theo tui loãng hay hoang mang là khi bạn phải đứng trước nhiều lựa chọn mà không biết nó dẫn tới đâu, còn đằng này bao nhiêu tài liệu thì cũng chỉ xoay quanh 1 đối tượng duy nhất là ngôn ngữ c, đường nào cứ đi riết rồi chúng ta cũng sẽ gặp lại nhau ở la mã thôi
7L1XX2F.gif
, với lại tui nghĩ người mới học lập trình là chỉ mới biết về lập trình thôi chứ đâu phải trẻ em đâu, chắc cũng phải có kĩ năng học tập nghiên cứu nhất định rồi, cái ông bên topic c# đó hình như là bản chất ổng vậy chứ không phải tại mới đâu

hồi đó tui học lập trình, tài liệu thì ít, tài nguyên internet còn khan hiếm, lúc đó mà kiếm đâu ra 1 cái tài liệu hay source code đúng yêu cầu là mừng nguyên ngày luôn, nhiều khi mình hiểu sai mà không biết (do không có nguồn nào khác tham khảo) rồi ôm cái sai đó cho tới sau này luôn, và không chỉ riêng về lập trình thôi đâu, tui học mấy phần mềm 3d như 3dsmax, maya, lightwave cũng vậy, bây giờ thì khỏi nói rồi, tài liệu nhiều vô thiên lủng, sách, video, articles... đa dạng phong phú, phải nói nó là 1 niềm hạnh phúc vô bờ bến

chia sẻ vậy thôi, chứ quan điểm mỗi người mỗi khác không thể luận đúng sai được, công bằng mà nói tui vẫn thấy quan điểm của tui... khớp với thực tiễn hơn
7L1XX2F.gif
, tài liệu giờ rõ ràng quá nhiều, newbie tha hồ lựa chọn còn gì
7L1XX2F.gif
 

NgoHungCuong


Junior Moderator
Thành viên BQT
topic chia sẻ đó là do tui lập, và tui cũng có ghi rõ trong đó luôn là không có thời gian đọc hết nữa, nhiều quá mà
7L1XX2F.gif


khi học 1 tài liệu dĩ nhiên không ai có thể hiểu hết xuyên suốt toàn bộ tài liệu đó, vậy khi gặp những khúc mắc, những giải thích còn mơ hồ, những lúc code không chạy hoặc chạy sai dĩ nhiên phải google tìm hiểu thêm (stackoverflow, learncpp hoặc ngay cái vn-zoom này nè)

rồi chưa kể tới những vấn đề không phải ngôn ngữ c nhưng lại có liên quan bắt buộc phải biết, chẳng hạn như là trình biên dịch, không thể lập trình mà không có trình biên dịch được, những cái như là lựa công cụ, phiên bản, hướng dẫn cài đặt, cách sử dụng, các tùy chỉnh, sửa lỗi, abcxyz... lại cần thêm 1 mớ tài liệu

còn nhiều nhiều cái nữa, tóm lại là, các newbie chỉ cầm trong tay 1 cuốn sách và nghĩ rằng đã học lập trình từ nó, nhưng thực chất là học từ rất nhiều nguồn tài liệu khác nhau mà bản thân không nhận ra
fV2jNq8.gif


trở lại với riêng ngôn ngữ c, theo tui loãng hay hoang mang là khi bạn phải đứng trước nhiều lựa chọn mà không biết nó dẫn tới đâu, còn đằng này bao nhiêu tài liệu thì cũng chỉ xoay quanh 1 đối tượng duy nhất là ngôn ngữ c, đường nào cứ đi riết rồi chúng ta cũng sẽ gặp lại nhau ở la mã thôi
7L1XX2F.gif
, với lại tui nghĩ người mới học lập trình là chỉ mới biết về lập trình thôi chứ đâu phải trẻ em đâu, chắc cũng phải có kĩ năng học tập nghiên cứu nhất định rồi, cái ông bên topic c# đó hình như là bản chất ổng vậy chứ không phải tại mới đâu

hồi đó tui học lập trình, tài liệu thì ít, tài nguyên internet còn khan hiếm, lúc đó mà kiếm đâu ra 1 cái tài liệu hay source code đúng yêu cầu là mừng nguyên ngày luôn, nhiều khi mình hiểu sai mà không biết (do không có nguồn nào khác tham khảo) rồi ôm cái sai đó cho tới sau này luôn, và không chỉ riêng về lập trình thôi đâu, tui học mấy phần mềm 3d như 3dsmax, maya, lightwave cũng vậy, bây giờ thì khỏi nói rồi, tài liệu nhiều vô thiên lủng, sách, video, articles... đa dạng phong phú, phải nói nó là 1 niềm hạnh phúc vô bờ bến

chia sẻ vậy thôi, chứ quan điểm mỗi người mỗi khác không thể luận đúng sai được, công bằng mà nói tui vẫn thấy quan điểm của tui... khớp với thực tiễn hơn
7L1XX2F.gif
, tài liệu giờ rõ ràng quá nhiều, newbie tha hồ lựa chọn còn gì
7L1XX2F.gif
Mỗi người có quan điểm khác nhau là bình thường mà.
Như tôi đã nói ở trên: sau khi có những kiến thức cơ bản rồi thì người học cần biết tự học và tự tìm hiểu.
 

NgoHungCuong


Junior Moderator
Thành viên BQT
Từ bài này trở đi mình sẽ sử dụng ngôn ngữ C nhé. C++ thì sau khi có những kiến thức cơ bản về C rồi mình sẽ đề cập sau.
Cài đặt công cụ để bắt tay vào viết chương trình đầu tiên
Với công cụ của Borland thì sau khi tải về giải nén vào ổ C:
fig1.png

Dùng notepad++ soạn thảo file main.c với nội dung như sau:
Mã:
#include <stdio.h>
int main(void)
{
    printf("Hello World\n");
    return 0;
}
Mở cmd tại thư mục chứa file main.c đã soạn ở trên gõ vào
Mã:
C:\BCC102\bin\bcc32c.exe main.c -o hello
Sẽ thấy như sau là biên dịch thành công
fig2.png

Kết quả sẽ sinh ra file hello.exe
fig3.png

Quay lại cmd gõ vào
Mã:
hello.exe
chương trình sẽ thực thi và in ra dòng chữ "Hello World" lên màn hình
fig4.png
 
Sửa lần cuối:

NgoHungCuong


Junior Moderator
Thành viên BQT
Nếu sử dụng VC++ 6.0 thì sau khi cài xong VC++ nên cài thêm công cụ VA-X để có thể viết code nhanh hơn.
Visual Assist X

Viết lại chương trình Hello World ở trên sử dụng VC++
Chạy VC++ vào File \ New
Chọn như hình
fig1bf815fa594f4efd2.png

Ô số 2 là tên Project
Ô số 3 là nơi lưu project
Sau đó ấn OK
Cửa sổ tiếp theo chọn An Empty Project sau đó ấn Finish
fig23185d87695404f4c.png

Cửa sổ tiếp theo ấn OK
Tiếp theo vào Project \ Add to Project \ New
fig32ea03da32247cb5c.png

Gõ vào nội dung như ví dụ Hello World đã dùng BCC ở trên
Mã:
#include <stdio.h>
int main(void)
{
    printf("Hello World\n");
    return 0;
}
fig464d3484a3fed5ec7.png

Vào Build \ Build Hello.exe hoặc ấn F7 để biên dịch
fig5.png

Kết quả biên dịch không có lỗi.
Vào Build \ Execute Hello.exe hoặc ấn Ctrl + F5 để thực thi chương trình
fig6.png

Kết quả chương trình cũng in ra dòng chữ Hello World giống như dùng BCC
 

dammage

Rìu Chiến
Mỗi người có quan điểm khác nhau là bình thường mà.
Như tôi đã nói ở trên: sau khi có những kiến thức cơ bản rồi thì người học cần biết tự học và tự tìm hiểu.
thôi không viết nữa để những bài tut của bạn được xuyên suốt, chúc các bạn mới học lập trình có thể tìm được hướng đi thích hợp cho mình vậy
7L1XX2F.gif
 


Top