Làm thế nào để học tốt được lập trình?

Em chào mng,e mới học lập trình C được 1,5 tháng và cũng đã làm bài tập ,nhưng rất nhiều bài em không làm được ,bởi vì k nghĩ ra được hướng giải quyết.Những lúc như thế lên mạng tìm hướng giải bài thì toàn code của ng đi trước,em đọc thì có hiểu .NHƯNG ,thực sự e muốn tự mình tìm ra hướng giải quyết . Mng có thể cho e chút kinh nghiệm về vấn đề làm sao khi đọc được 1 bài toán e có thể nghĩ được 1 hướng giải quyết không ạ ?
Và còn 1 điều nữa là ,Nếu e còn nhiều bài tập C không làm được thì liệu sau này học lên ngôn ngữ cao hơn ,thì liệu e có thể theo hoc được k ạ ? Thực sự giờ e rất hoang mang,mong mng góp ý e với .Em cảm ơn diễn đàn,cảm ơn mng nhiều :slight_smile:

1 Like

Hi khoa.
Đừng quan tâm đến ngôn ngữ mà hay quan tâm đến tư duy.

2 Likes

Học C làm gì vậy u… Mình thấy ai ms học lập trình cũng học cái này… :wink:

nhiều cái bên C sau này qua Python (vd thế ) có thể đơn giản hơn nhiều @.@ Còn nhiều bài bạn ko làm được bây giờ, không sao đó là vì bạn chưa học những thứ như cấu trúc dữ liệu & giải thuật và phân tích thiết kế thuật toán, và còn nhiều nhiều kinh nghiệm tích lũy qua việc đọc tài liệu. Có người nói để thành thạo một cái gì đó cần ít nhất 10000 h thực hành luyện tập, cứ cho một ngày bạn luyện 8 tiếng thì con số thực tế là 3,5 ~ 4 năm ^^ cứ chăm chỉ cố gắng đi.

2 Likes

Bởi vì e tư duy kém ,nên với kb đưa ra hướng giải quyết bài toán ,nên sợ sau lên ngôn ngữ cao hơn thì k theo đc /a ạ

mình thấy các anh chị đi trước bảo C là môn cơ sở,học để lấy tư duy lập trình nên đều theo học cái này :slight_smile:

e cũng đọc qua cấu trúc dữ liệu,nhưng cũng k hiểu đc nhiều cho lắm,cứ như vậy thì liệu sau học lên ngôn ngữ cao hơn ,thì e có thể theo được không a ? ví dụ như ,e sắp học xong C ,thì dự định học lên PHP ,hoặc JAVA thì các ngôn ngữ đó có đòi tư duy nhiều hơn C k a?

HI khoa.
#1 Không có khái niệm học xong một ngôn ngữ.
#2 Cách giải quyết 1 bài toán không khó như bạn nghĩ. Cái khó là bạn triển khai nó như nào.
#3 Luyện tư duy giải thuật thì bạn có thể chon Python hoặc Matlab.
#4 Hãy suy nghĩ như bình thường.
VD Bài toán xắp xếp mảng.

3 Likes
  • Tùy theo bạn muốn làm gì thì học lập trình ngôn ngữ để đạt được mục đích. Nếu bạn được lựa chọn thì cắm đầu vào C làm gì, học xong mà bạn không áp dụng thì tốn thời gian + công sức học.
  • Muốn tìm ra hướng giải một vấn đề thì bạn không thể ngồi mà nghĩ ra được. Bạn cần tìm cách học vẽ lưu trình (Process) để giải quyết một vấn đề từ đầu đến cuối.
    Vì máy tính thực hiện theo từng bước mà bạn lập trình cho nó, cho nên bạn phải biết:
  1. Dữ kiện ban đầu đề bài cho và Kết quả cuối cùng cần đạt được.
  2. Từ dữ kiện ban đầu --> bạn cần tạo biến gì, tính toán như thế nào hay cần giải thuật gì (sắp xếp, đệ qui…) --> đạt kết quả cuối cùng. Lúc này bạn vẽ lưu trình hoặc nêu từng bước ngắn gọn trên giấy.
  3. Xác định cần viết bao nhiêu thủ tục, vòng lặp,…
  4. Viết và chạy --> Đạt kết quả đầu ra mong muốn.
  5. Kiểm tra.
  6. Tối ưu.
    Quan trọng là bạn nêu được các bước cần làm để có kết quả --> viết cho máy tính hiểu và thực hiện --> có kết quả.
    Đối với chương trình lớn thì sẽ nhiều công đoạn, hoàn thành - kiểm tra - tối ưu từng phần…nói chung là dài dòng, bạn tìm hiểu về qui trình làm phần mềm, Agile, Scrum…sẽ rõ.
3 Likes

Có nghĩa là bạn học xong C cũng chẳng để làm j chứ j …Nếu vậy thì bạn bỏ cmn đi mà học ngôn ngữ khác mà bạn mún theo : JAVA,C++,Python,Swift,PHP…(Tùy mảng bạn mún theo,đừng phí time vào C làm gì )

Nếu mún tư duy lập trình thì học Toán rời rạc ,cấu trúc lập trình và giải thuật ,Xác xuất thống kê,lập trình hướng đối tượng …( Nếu bạn học Đại Học thì chắc chắn có dạy mấy môn này ,còn k thì kiếm tài liệu bằng bác Google )

Còn nếu muốn tìm hiểu Framwork,thư viện hay công nghệ thì cứ Qt,.NET,WebRTC,FFMPEG,NodeJS,OPenCV.OpenGL …mà táng (Chọn 1 cái thui,học nhìu tẩu hỏa nhập ma ý :yum: )

Bạn đừng lo nhé. Nếu muốn chọn ngôn ngữ thì trước tiên trl câu hỏi bạn muốn theo mảng nào: Web (php, node js, ruby…), Mobile (java, android, ios…) hay ứng dụng máy tính (C#, C++, Java…). R khi đó sẽ chọn ngôn ngữ phù hợp. Còn về vđề nhiều bài toán bạn ko giải đc ko sao cả, có những thứ ng ta đã sáng chế ra rồi bạn chỉ cần học hỏi để nâng dần trình độ. Có 1 câu rất hay “Không ai đi sáng chế lại cái bánh xe cả”

Mình nói thật chứ học C là tốt nhất , vì để năm rõ đc bản chất ngôn ngữ hơn . Đôi khi giải thuật và cấu trúc dữ liệu bạn có thể tư duy nhưng khó mà trình bày , các ngôn ngữ cấp thấp học thì khổ , nhưng có các lợi về sau . Quan điểm cá nhân .

Thực ra có nhiều giáo phái giang hồ lắm, cũng nên tìm hiểu qua, thích giáo phái nào thì nhập hội thôi.

Ngôn ngữ là chỉ công cụ để giải thích thuật toán. Bạn không giải được bài là do tư duy chứ không liên quan đến ngôn ngữ nên bạn cứ giải bài tập C, tăng cường tư duy. Học ngôn ngữ khác thì lôi bài C làm thử trên ngôn ngữ đó xem. Bạn sẽ thấy đơn giản hơn. Do bạn chỉ cần triển khai thuật toán trên ngôn ngữ mới, nếu vướng cú pháp thì lên mạng tra là ra

2 Likes

Vấn đề là bài gì, nếu thớt muốn quẩy SPOJ/TopCoder thì phải sang CodeChef tìm đọc. Còn nếu muốn làm sản phẩm thì dừng ngay nhé.

Bạn có vẻ không hứng thú hay không thích về C nhỉ, nếu k C thì sao bạn học qua được Objective-C, còn những ngôn ngữ bạn nói bây giờ là ngôn ngữ hiện đại bậc cao rồi, còn C là kiến thức nền tảng, mà người ta nói rồi, không có nền tản thì khó khăn để nâng cao, mà bạn bảo C không làm được gì sao, IoT đang mạnh và C với C++ đang có chỗ đứng trở lại đấy bạn

Học cái gì cũng có cái khó riêng, mong bạn đừng quá nản lòng. Nếu đã đam mê thì cứ tiếp tục nổ lực.

Hi bạn,
Cho mình hỏi, WebRTC bạn từng làm nó chưa. Mình đang làm WebRTC bằng c++ nhưng khó quá.
Mình sẵn sàng trả phí nếu có thể hỗ trợ mình. Chỉ làm project để học thôi, ko cần phức tạp.
Đây là Linkedin của mình: linkedin.com/in/điền-đô-aa5224259

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?