Newbie có cần phải giải nhiều bài tập mới tốt cho việc học lập trình
Hello mọi người, mình lập topic này mong mọi người giải đáp một số thắc mắc mà mình đang gặp phải sau hơn 2 tháng tự học lập trình.
Vấn đề mà mình đang thắc mắc là : người mới thì có cần phải giải thật nhiều bài tập để giúp tốt hơn cho việc học ?
Có thể mọi người sẽ nghĩ mình hỏi những câu ngu ngơ , vì việc làm bài tập thì giúp chúng ta nâng cao tư duy, khả năng giải quyết vấn đề …, nhưng mà mình thì thì có trường hợp ngộ lắm, các câu lệnh, cú pháp … nói chung là phần lý thuyết ấy ,mình nắm rất rõ, nhưng tới khi vào làm các bài tập , bài tập dễ thì không nói, bài tập khó thì mình lại khó nghĩ ra cách giải quyết , mình từng lập topic về vấn đề này
Chào anh chị và mọi người trên diễn đàn. em hiện tại 17 tuổi. Em đang tự học lập trình C và học nhờ vào các video của anh đạt và kết hợp với tài liệu của một bạn trên diễn đàn . Em học được khoảng 2 tháng.Em chỉ đang học phần cơ bản như phần khai báo biến số, lệnh if,else, for vv..vv.. Thời gian đầu em học rất ổn và em cũng có kiếm thêm bài tập để nâng cao khả năng của mình, các bài tập cấp độ dễ thì em có thể giải trót lọt nhưng tới một số bài tập khó yêu cầu tư duy thuật …
mình cũng nhận được vài ý kiến phản hồi và mình nghĩ là mình chưa có tư duy tốt về lập trình vì mình vẫn chưa học về phần CTDL và Giải thuật, mọi người thấy có đúng không ạ ?
Quay trở lại vấn đề ? Mình biết là học lập trình để giải quyết vấn đề thực tế, chứ không phải chỉ để giải bài tập, trừ khi học để thi olympic tin học hoặc mấy cuộc thi giải thuật, thuật toán… thì mới cần phải làm nhiều bài tập. Nhưng mà nếu chúng ta giỏi làm các tập thì chúng ta sẽ có tư duy tốt , có tư duy tốt sau này khi học cao hơn sẽ giải quyết vấn đề tốt hơn , Thế nhưng, bản thân mình khi làm một bài tập nào đó khó, thì chắc chắn mình sẽ khó tìm ra cách giải quyết (vì như mình đã nói, tư duy mình vẫn chưa tốt) nhưng mà khi gặp mấy trường hợp đó thì mình luôn tìm mọi cách để giải quyết cho bằng được bài toán , search GG, lên các forum để hỏi… làm hết mọi cách nhưng nếu không ra kết quả, thì mình lại cảm thấy thất vọng về bản thân. Nhiều khi có 1 bài toán , mà mình mất khoảng 2 3 ngày để giải quyết, hậu quả là việc học bị chậm trễ , mình chỉ mới học tới phần con trỏ sau hơn 2 tháng , vì mình là một người ko học chuyên ngành (mình học bên kỹ thuật phần cứng) và tự học nên mỗi lần thắc mắc thì không có ai chỉ bảo cả, mình định sau khi học xong C sẽ học sang C++ rồi sau đó là CTDL và giải thuật để rèn luyện tư duy
Mong mọi người tư vấn giúp mình, nếu như mình không làm các bài tập thì mình vẫn học tốt chứ ? , topic này hơi dài , mong mọi người đọc hết và giúp mình, xin cảm ơn
Mình thấy mấy cái bạn kể ai cũng sẽ trải qua (theo ý kiến chủ quan của mình), thế nên đừng lo gì cả mà cứ từ từ mà tiến.
Và còn vấn đề bài tập. Mình nghĩ bài tập giúp bạn luyện tập. Mà luyện tập càng nhiều thì bạn sẽ càng lên tay. Nên mình khuyên bạn luyện giải/làm bài tập.
À mà, bài tập của mình hiểu ở đây không phải là cứ bài tập trong sách, các bài toán đi thi giải thuật. Đối với mình một bài tập là một bài tập về làm game mini nhỏ, làm một tool linh tinh, một code bị bug và nhiệm vụ bạn phải fix bug, … (nói chung là những cái giúp mình làm để ôn/vận dụng kiến thức)
Làm vừa thôi thay vào đó bạn tự code 1 proj rồi thảy lên git là cũng có thành tựu (cá nhân) rồi.
cái thớt kia ghi 17 tuổi sao ở đây lại ghi học kỹ thuật phần cứng??
Vấn đề mà mình gặp phải là cứ gặp bài tập khó , đầu óc mình thường rối ren lên và mình đang tìm cách khắc phục vấn đề này,nhiều khi mình code theo mấy bài tập có lời giải mình còn thấy khó hiểu cách CT hoạt động nữa, à mà mình chưa học hết C nữa nên về việc làm game hay tool thì chắc chưa được đâu .
Mình học trường nghề bạn, mình học bên phần lắp ráp cài đặt và sữa chữa ấy bạn, mấy cái đó thuộc về phần cứng mà
Mình chưa học xong C nữa, mình nghĩ vẫn chưa đủ kiến thức với lại mình cũng ko có ý tưởng nào để tạo 1 project cả.
học lý thuyết mà ko thực hành thì khá gì nổi, đừng có lười. Đọc sách nấu ăn mà ko nấu nướng thì ra thể thống gì. Bài khó liên quan tới thuật toán thì bỏ, làm hết mấy bài dễ hoặc ít ra cũng 1 nửa số bài dễ.
Nếu thấy khó hiểu thì mình nghĩ bạn nên đọc code và lấy giấy bút ra theo dõi luồng chạy của chương trình
Còn nếu lười viết bạn có thể học cách debug, và debug từng dòng xem dòng code này làm gì. Cứ nhảy qua từng dòng vậy là từ từ hiểu được luồng chạy chương trình.
Đây là do bạn chưa tích lũy đủ về lượng để sinh ra sự biến đổi về chất. Mình cũng từng trải qua giai đoạn này. Bạn hãy code nhiều lên. Tự nghĩ ra đề bài để code. Tăng dần độ khó lên. Một lúc nào đó bạn có sự thay đổi về chất ngay. Những thứ bạn thấy khó khăn dài dòng ngày trước tự nhiên mình thông hiểu hết. Kể cả ngày trước bạn có thể không hiểu nó
Mình biết học đi đôi với hành , nói chung khi mình làm bài tập thì bài dễ bài mình làm được hết, còn bài khó thì mình chỉ làm được 1 hoặc 2 bài chứ ko thể làm hết hoàn
vậy là ngon rồi, bài khó kệ nó, học làm quen ngôn ngữ là được có phải thi thố quốc gia quốc tế đâu mà thuật toán này nọ.
Mình cũng hay debug CT và cũng có thể hiểu được kha khá về cách hoạt động của code, nhưng mà mình thích mình tự nghĩ ra cách giải chứ nếu phụ thuộc vào lời giải của người khác thì khó mà phát triển tư duy, nhưng khỗ nổi vấn đề mình gặp thì bạn biết rồi đó, éo le cuộc tình
Mình cũng đang làm giống như bạn nói và mình thấy kết quả cũng khá ổn.
Mình cũng nghĩ giống vậy,mình lập topic này chủ yếu để nghe ý kiến từ những người đi trước như bạn để làm rõ suy nghĩ của mình, cảm ơn bạn đã góp ý
Hi em
Nếu như theo e nói em 17 tuổi rồi thì a chắc lớn hơn em cũng chục tuổi.
Việc đầu tiên khi bắt đầu học lập trình không phải là học ngôn ngữ nào, giải bài tập gì, mà là em phải học cách tư duy như máy tính.
Lúc bắt đầu học lập trình cũng vậy cái anh được học không phải là lập trình C/C++ hay ngôn ngữ nào khác mà học lưu đồ thuật toán sau đó mới từ lưu đồ viết mã giã ra giấy ( mã giã là văn nói bình thường thôi) rồi mới làm trên máy.
Nhưng lúc học thì phần lưu đồ được dạy không kỹ dc vài tuần bay vô dạy code luôn. Lúc này là anh bị giống em vậy bài hơi phức tạp thôi là không biết nên bắt đầu code như thế nào. Thì anh bắt đầu quay lại lưu đồ tắt visual mở office gõ word. Chỉ 1 thời gian sau khoảng 1 tháng hơn khi quen với cách suy nghỉ kiểu máy móc rồi thì không cần làm rườm rà như vậy nữa từ suy nghỉ lập tức có thể ánh xạ thành code. Và dần dần anh không code nhiều chủ yếu là sửa code dùm tụi bạn. Có mấy bài như tìm đường, tô màu đồ thị v.v thì a mới code.
Một vài chia sẻ tạm gọi là kinh nghiệm của anh.
Mình thấy vấn đề là thớt ko biết làm chứ ko hẳn là ko phân giải được cách làm thành từng bước
Nhưng mà sách dạy “lập trình nhập môn” cũng hay yêu cầu kiến thức ngoài quá sớm. Vả lại muốn viết tốt thì phải đọc nhiều, tiếng gì cũng vậy
Em nói là em hay bí khi gặp bài khó. Anh nghĩ đó không phải là do ngôn ngữ, mà là do em chưa biết cách phân tích nó thành những bài dễ hơn thôi. Như anh đang thi tốt nghiệp đại học (đm cái trường không cho làm khoá luận, bắt thi tốt nghiệp 12 môn) cũng vậy, 3 năm đầu anh bỏ học toàn chơi điện tử, đến năm 4 thì học hướng đối tượng bằng C#. Sau này khi phải thi, anh làm C++ như một ngôn ngữ mới, nhưng mà chỉ cần “chuyển code C# sang code C++” thì bài nào cũng giải được (trong phạm vi trường học).
Cảm ơn anh đã góp ý ạ
Học lý thuyết xong thì làm luôn bài khó.
Học công nghệ xong thì làm luôn project vừa vừa áp dụng tất cả.
Không có thời gian để đi từ bài dễ tới bài khó, đi từ dự án nhỏ lên dự án lớn đâu bạn.
Dự án hiện tại toàn dựa trên các source code có từ dự án trước, các framework được build sẵn, không ai có nhiều thời gian để đi từ con số 0 đâu.