আমাকে প্রথম প্রোগ্রামিং ভাষা হিসাবে উচ্চ বিদ্যালয়ে সি ++ পড়ানো হয়েছিল, যদিও এটি "সি +" এর মতোই ছিল , এখন আপনি এটি উল্লেখ করেছেন; আমরা cout
কনসোল এবং ফাইলগুলিতে টেক্সট লেখার জন্য ব্যবহার করতাম , তবে বেশ কয়েকটি সি ফাংশন ( getch()
আমার প্রিয় ছিল)।
আমি মনে করি বেসিকগুলি শেখানোর সর্বাধিক কার্যকর (এবং সম্ভবত মজাদার) উপায়টি একটি লক্ষ্য-ভিত্তিক পাঠ্যক্রমটি ব্যবহার করা: কীভাবে আউটপুট স্টাফগুলি, তারপরে কীবোর্ডের ইনপুট, তারপরে সরল ফাইল I / O ইত্যাদি প্রদর্শন শুরু করুন- ভিত্তিক খেলা (বা রোবোটিক্স সমতুল্য)। তারপরে তারা যখন জিজ্ঞাসা করবে, "আমি কীভাবে এক্স করব?", আপনি ইতিমধ্যে দেখেছেন এমন উদাহরণগুলির ক্ষেত্রে আপনি X কে ভেঙে ফেলতে পারেন, যেমন "প্রথমে আপনাকে ব্যবহারকারীর কাছ থেকে ইনপুটটি নেওয়া দরকার যেমন আমরা জেডে করেছিলাম, তারপরে ... "(সম্ভবত বাস্তবে এটি এত সহজ নয় যেহেতু এক্স সম্ভবত এমন কিছু হবে যা করার জন্য তাদের অতিরিক্ত জ্ঞানের প্রয়োজন হবে, যেমন" থ্রিডি গ্রাফিক্স ", তবে আপনি এখনও ব্যাখ্যা করতে পারেন এটি কীভাবে উচ্চ স্তরে কাজ করবে? পথ)।
আপনি যে উদাহরণগুলি দেখান সেগুলি ব্ল্যাক-বাক্সের অনুলিপি-আটকানো যাদু হিসাবে শুরু হবে, যার রহস্যগুলি প্রোগ্রামিং ধাঁধাটির টুকরো হিসাবে আস্তে আস্তে আস্তে আস্তে বের হয়ে যায়। উদাহরণস্বরূপ, আপনার শিক্ষার্থীরা এর প্রাথমিক বিষয়গুলি if
খুব দ্রুত শিখবে , তবে তারা সম্ভবত বুঝতে পারবে না যে কোনও বুলিয়ান এক্সপ্রেশনটি কোনও if
অবস্থার মধ্যে ব্যবহারের জন্য কেবল সীমাবদ্ধ নয় (ক্লাসিক if (blah) return true; else return false;
কোডের দিকে পরিচালিত)।
আপনি ধারক হিসাবে কোনও অ্যারে বা ভেক্টর নির্বাচন করেন কিনা তার সূক্ষ্মতা প্রথমে শিক্ষার্থীদের কাছে অপ্রাসঙ্গিক বলে মনে হবে। একটি ভেক্টর / অ্যারে কেবল একটি ভেরিয়েবল হিসাবে প্রচুর ভেরিয়েবল থাকার একটি উপায় হতে পারে যা সূচকের মাধ্যমে অ্যাক্সেসযোগ্য। আপনি যেখানে পারেন সেখানে আটকে যান। পয়েন্টারগুলি পরে না বোঝা যাবে না। এর অর্থ এটি নয় যে আপনার জিনিসগুলি ব্যাখ্যা করা উচিত নয়; কেবলমাত্র আপনি একবারে সমস্ত কিছু ব্যাখ্যা করতে পারবেন না এবং আপনি যে জিনিসগুলি বর্ণনা করছেন তা সম্পূর্ণরূপে শোষিত হবে না। মানুষ রৈখিকভাবে নয়, জৈবিকভাবে শেখে। অপারেটর ওভারলোডিং কী তা সঠিকভাবে বুঝতে পারার আগে আমি cout
কয়েক বছর ব্যবহার করছিলাম!
ওহ, এবং পুনরাবৃত্তি ভয় পাবেন না। "এটি হ্যালো ওয়ার্ল্ড প্রোগ্রামের মতো যা আমরা করেছিলাম - মনে আছে কীভাবে আমরা কনসোলে পাঠ্য লিখেছি?" (না ...) "আসুন আমরা নিশ্চিত হয়েই আবার এটি ব্যবহার করি" " ... এবং প্রশ্ন জিজ্ঞাসা করুন! শিক্ষার্থীদের মজাদার উদাহরণ এবং প্রচুর মিথস্ক্রিয়ায় নিযুক্ত রাখুন।
সি ++ একটি জটিল ভাষা এবং আপনি যা-ই করেন না কেন, সেই জটিলতার একটি উল্লেখযোগ্য পরিমাণ (এবং সাধারণভাবে প্রোগ্রামিংয়ের কারুকাজ) আপনার ছাত্রদের কাছে হারিয়ে যাবে। আপনি তাদের প্রদর্শিত সমস্ত কিছু তাদের কাছে নতুন হবে; এর বেশিরভাগই বোঝার গভীর স্তরে ডুবে যাবে না (অন্তত, এখনই নয়)। মেমরি কীভাবে কাজ করে, পিসির উপাদানগুলি কীভাবে ইন্টারঅ্যাক্ট করে, স্ট্যাক এবং হিপ কী, পয়েন্টার, ক্লাস, এমনকি লুপ এবং যদি-অন্য চেইনগুলি সংখ্যাগরিষ্ঠ দ্বারা সঠিকভাবে বুঝতে পারে না । এটা ঠিক আছে! এগুলি ব্যবহার করার মতো বোঝার দরকার নেই - দুর্দান্ত-কুরুচিপূর্ণ 1000-লাইনের ফাংশন সহ কুইন্টুপল-নেস্টেড রিন্ডন্ড্যান্ট if
এস এবং 43 টি ভেরিয়েবলের মতো চমত্কার পরিমাণে দুর্দান্ত প্রোগ্রাম লেখা যেতে পারে x_2r
। গুরুত্বপূর্ণ বিষয়টি হল শিক্ষার্থীরা অবিচ্ছিন্নভাবে শিখছে এবং উন্নতি করছে। কালো বাক্সগুলি দীর্ঘমেয়াদে স্বচ্ছ হয়ে ওঠার সাথে সাথে (বা কমপক্ষে স্বচ্ছ ধূসর) হয়ে যায়। কোর্সটি শেষ হওয়ার পরে, তারা ডিজাইন প্যাটারগুলি কী তা জানেন না তবে প্রথম কয়েক সপ্তাহে তারা যে প্রোগ্রামগুলি লিখেছিলেন সেগুলি তাদের দিকে ফিরে দেখতে এবং তাদের কোডটিতে ক্রিং করা উচিত। তাদের লিখিত প্রথম প্রোগ্রামটি কীভাবে বাস্তবে কাজ করে তা বিশদের একটি গুরুত্বপূর্ণ স্তরে বুঝতে হবে (যেখানে তারা এটি লেখার সময় তাদের কোনও ধারণা ছিল না)। তবে তারা সব জানতে পারবে না - তবুও ।