Tôi được dạy C ++ ở trường trung học như một ngôn ngữ lập trình đầu tiên, mặc dù nó là giống như "C +", bây giờ mà bạn đề cập đến nó; chúng tôi đã sử dụng cout
để viết văn bản vào bàn điều khiển và các tập tin, nhưng cũng có khá nhiều chức năng C ( getch()
là sở thích của tôi).
Tôi nghĩ rằng cách dạy cơ bản hiệu quả nhất (và có thể thú vị) là sử dụng chương trình giảng dạy hướng mục tiêu: bắt đầu bằng cách hiển thị cách xuất nội dung, sau đó nhập bàn phím, sau đó nhập / xuất tệp đơn giản, v.v. trò chơi dựa trên (hoặc tương đương robot). Sau đó, khi họ hỏi, "Làm thế nào để tôi làm X?", Bạn có thể chia nhỏ X về các ví dụ họ đã thấy, ví dụ: "Trước tiên, bạn sẽ cần nhận đầu vào từ người dùng như chúng tôi đã làm trong Z, sau đó ..."(rõ ràng nó không phải là dễ dàng này trong thực tế kể từ X có thể sẽ là một cái gì đó mà họ cần bổ sung kiến thức để làm được, ví dụ như 'đồ họa 3D', nhưng bạn vẫn có thể giải thích làm thế nào nó sẽ làm việc trong một cấp cao đường).
Các ví dụ bạn cho thấy chúng sẽ bắt đầu như ma thuật dán bản sao hộp đen, những bí ẩn được làm sáng tỏ khi các mảnh của câu đố lập trình đang dần được tìm ra. Ví dụ, sinh viên của bạn sẽ học những điều cơ bản if
khá nhanh, nhưng họ có thể sẽ không nhận ra rằng biểu thức boolean không chỉ giới hạn sử dụng trong if
điều kiện (dẫn đến if (blah) return true; else return false;
mã cổ điển ).
Sự tinh tế cho dù bạn chọn một mảng hoặc vectơ làm vật chứa sẽ có vẻ không liên quan đến các sinh viên lúc đầu. Một vectơ / mảng đơn giản sẽ là một cách có nhiều biến là một biến, có thể truy cập thông qua một chỉ mục. Dính vào một nơi mà bạn có thể. Con trỏ sẽ không được hiểu cho đến sau này. Điều đó không có nghĩa là bạn không nên giải thích mọi thứ; chỉ là bạn không thể giải thích mọi thứ cùng một lúc, và những điều bạn giải thích sẽ không được hấp thụ hoàn toàn. Con người học một cách hữu cơ, không tuyến tính. Tôi đã sử dụng cout
một vài năm trước khi tôi hiểu chính xác quá tải toán tử là gì!
Oh, và đừng sợ lặp lại. "Đây giống như chương trình Hello World mà chúng tôi đã làm - nhớ cách chúng tôi viết văn bản lên bàn điều khiển?" (không ...) "Chúng ta hãy đi qua nó một lần nữa để đảm bảo." ... Và đặt câu hỏi! Giữ cho các sinh viên tham gia với các ví dụ thú vị và nhiều tương tác.
C ++ là một ngôn ngữ phức tạp và bất kể bạn làm gì, một lượng đáng kể độ phức tạp đó (và của nghề lập trình nói chung) sẽ bị mất đối với các sinh viên của bạn. Tất cả mọi thứ bạn cho họ thấy sẽ là mới đối với họ; hầu hết nó sẽ không chìm trong một mức độ hiểu biết sâu sắc (ít nhất, không phải ngay lập tức). Bộ nhớ hoạt động như thế nào, các thành phần của PC tương tác như thế nào, stack và heap là gì, con trỏ, lớp, thậm chí các vòng lặp và chuỗi if-if khác sẽ không được đa số hiểu đúng . Không sao đâu Chúng không cần phải được sử dụng - một số lượng lớn các chương trình tuyệt vời có thể được viết bằng các hàm 1000 dòng siêu xấu với các số dư thừa được lồng vào nhau if
và 43 biến được đặt tên như thế x_2r
. Điều quan trọng là các sinh viên không ngừng học hỏi và cải thiện. Hộp đen vẫn ổn miễn là chúng trở nên trong suốt (hoặc ít nhất là màu xám mờ) trong thời gian dài. Đến cuối khóa học, họ có thể không biết những gì patters thiết kế đang có, nhưng họ sẽ có thể nhìn lại những chương trình họ đã viết trong vài tuần và đầu tiên cringe tại mã của họ. Họ nên hiểu ở mức độ chi tiết đáng kể về cách chương trình đầu tiên họ viết thực sự hoạt động (trong khi họ viết nó thì họ không biết gì). Nhưng họ sẽ không biết tất cả mọi thứ - chưa .