প্রথমবারের উচ্চ বিদ্যালয়ের শিক্ষার্থীদের সি ++ শেখানো: রেখাটি কোথায় আঁকবেন?


35

আমি প্রথম স্কুল রোবটিক্স প্রতিযোগিতার জন্য হাই স্কুল শিক্ষার্থীদের একটি দলকে পরামর্শ দিচ্ছি, বেশিরভাগ টিম এখানে [তাদের রোবট সফটওয়্যার সি ++ ব্যবহার করে বিকাশ করে। দলের বেশিরভাগ শিক্ষার্থীর জন্য এটিই হবে তাদের প্রোগ্রামিংয়ের প্রথম পরিচয়। উচ্চ বিদ্যালয়গুলিতে প্রোগ্রামিং শেখানোর জন্য আমি সি ++ পছন্দ করতাম না (যেমন পাইথন বা জাভাস্ক্রিপ্টটি আমার মনে হয় আরও সহজ হত) তবে পছন্দটি সেট করা আছে।

আমি তাদের যথাযথ সি ++ শিখতে চাই (অর্থাত একটি মিশ্র সি / সি ++ উপভাষা এড়িয়ে চলুন, অর্থাৎ সি +) তবে আমি তাদের অযথা জটিলতার সাথে ভয় দেখাতে চাই না। এই বিষয়টির জন্য:

  • আমি কি প্রথম দিন থেকে এসটিএল ব্যবহার করা শুরু করব, এএসপি। vectorবা শুধু স্ট্যান্ডার্ড অ্যারে সঙ্গে লাঠি? অ্যারেগুলি প্রবর্তন করা সহজ তবে পয়েন্টারের ত্রুটিগুলি ধরা শক্ত হতে পারে।
  • I / O- এর জন্য, আমার কি লেগে থাকা উচিত coutইত্যাদি, বা আপনার কি মনে printfহয় শেখা সহজ হবে?
  • C ++ এর জন্য এমন কোনও অনলাইন সংস্থান রয়েছে যা এই জাতীয় তরুণ শিক্ষার্থীদের জন্য উপযুক্ত?

ধন্যবাদ!

সম্পাদনা : অনেক দুর্দান্ত উত্তরের জন্য ধন্যবাদ। তীব্রতর সি ++ ছাড়াও , যা অনেকের দ্বারা পরামর্শ দেওয়া হয়েছে, আমি খুঁজে পেয়েছি যে সবার জন্য সি ++ একটি দুর্দান্ত পাঠ্য।


52
ওহে আল্লাহ দয়া করে কাউকে প্রথম ভাষা হিসাবে জাভাস্ক্রিপ্ট শিখিয়ে দিবেন না!
সোপবক্স

26
@ সোপবক্স: এর বিরোধিতা কী? আমি মনে করি জাভাস্ক্রিপ্ট প্রথম ভাষা হিসাবে ভয়ঙ্কর। আপনি কয়েকটি লাইন কোডের সাথে আকর্ষণীয় কাজ করতে পারেন, স্টার্টআপ ওভারহেড লার্নিং সংকলক এবং আইডিই ইত্যাদি নেই, এটি পরীক্ষা করা এবং ডিবাগ করা সহজ, এবং এটি ওও এবং ক্রিয়ামূলক প্রোগ্রামিং উভয় সমর্থন করে। এর চেয়ে ভাল আর কী হতে পারে?
কেভিন cline

7
আপনি কেন বলছেন যে অ্যারেগুলি চালু করা সহজ? আমি ভেক্টর নবীনদের জন্য অনেক বেশি স্বজ্ঞাত বলে মনে করি যেহেতু আপনাকে পয়েন্টার বা এর মতো জটিল কিছু নিয়ে ভাবার দরকার নেই।
কেসি প্যাটন

19
আপনি যদি উচ্চ-বিদ্যালয়ের শিক্ষার্থীদের C ++ শিখিয়ে থাকেন তবে ইতিমধ্যে আপনি লাইনটি অতিক্রম করেছেন।
টাইলার

7
সি ++ শেখানোর বিকল্প কোবল নয়।
ধাওয়া করা

উত্তর:


40

আমি মনে করি যে ভাষাটি অ্যারে এবং পয়েন্টারগুলির মতো ভাষা তৈরি করেছে সেগুলি দিয়ে আপনার শুরু করা উচিত এবং যখন আপনার শিক্ষার্থীরা সেগুলি বুঝতে পারে, তখন ক্লাস এবং ওওতে চলে যান, তারপরে এসটিএল করুন।

কারণটি হ'ল আপনি ভেরিয়েবল এবং অন্তর্নিহিত কম্পিউটার আর্কিটেকচার ছাড়াও আরও অনেক কিছু না বুঝে মানুষকে অ্যারে বুঝতে শেখাতে পারেন, তবে আপনি vectorতাদের প্রথম শ্রেণি না শিখিয়ে বুঝতে শেখাতে পারবেন না । আপনি যদি যেতে যেতে এসটিএল ব্যবহার করেন তবে আপনার ছাত্রদের vectorঠিক কীভাবে কাজ করে সে সম্পর্কে একটি সূত্র না রেখেই বাঁচতে হবে । এবং তারপরে আপনি যখন এই জায়গায় পৌঁছবেন তখন তাদের কাছে পয়েন্টার এবং অ্যারে এবং আপনার নিজের ভেক্টর শ্রেণি লেখা, আপনার নিজস্ব লিঙ্কযুক্ত তালিকার শ্রেণি লেখা ইত্যাদির মতো জিনিসগুলি করা জিনিসগুলি থেকে যথেষ্ট পরিমাণে উপলব্ধি থাকবে না যা প্রয়োজনীয় হবে that এর বৈশিষ্ট্যগুলির প্রশংসা ও শোষণ করা। শিক্ষার্থীরা যখন বলে "এটি কি?" এবং শিক্ষকরা বলে "কেবল এটিকে উপেক্ষা করুন, আপনি এটি পরে শিখবেন।"

এবং ডেমিয়ান মন্তব্যগুলিতে যেমন উল্লেখ করেছেন, টেমপ্লেট ত্রুটিগুলি থেকে আপনি যে তুলনামূলকভাবে ক্রিপ্টিক বার্তাগুলি পেয়েছেন তা বোঝানো আপনার অ্যারে / নন-টেম্পলেট নির্মাণগুলি থেকে প্রাপ্ত ত্রুটিগুলি বোঝার চেয়ে গুরুত্বপূর্ণ is

আমি coutএবং সম্পর্কে একইভাবে অনুভব করি না printfcoutঅপারেটর ওভারলোডিং ব্যবহার ব্যতীত অন্যগুলির চেয়ে কোনও নিম্ন-স্তরের নয় ।

এটি নির্বোধ মনে হতে পারে তবে বিমূর্ততাগুলিতে যাওয়ার আগে লোকেরা সমস্ত কিছুর প্রাথমিক ভিত্তিগুলি বোঝে about আপনি কাঁচা পয়েন্টার, আরে এর আগে কোনও ভেক্টর, এই ধরণের জিনিস হিসাবে দক্ষ না হওয়া পর্যন্ত আপনার স্মার্ট পয়েন্টার ব্যবহার করা উচিত নয়।

আমি প্রায়শই এটি বলি, তবে আমি এটি আবার বলব: প্রথমে শিক্ষার্থীদের দীর্ঘ বিভাগ শেখানো ভাল এবং তারপরে তাদেরকে একটি ক্যালকুলেটর ব্যবহার করতে দেওয়া, তারপরে তাদের দীর্ঘ বিভাজন শেখানো ভাল।

শিক্ষাগুরুদের শেখানোর বই হিসাবে, ভাল সি ++ বইয়ের মাস্টার তালিকা দেখুন ।


4
আমি আসলে একই মতামত ছিল কিন্তু স্ট্রস্রুপের টিচিং সি ++ বইয়ের ( স্ট্রাউট্রাপ / প্রোগ্রাম ) দিকে তাকিয়েছিলাম এবং তিনি স্পষ্টভাবে vectorওভার অ্যারে ব্যবহারের পক্ষে ছিলেন । আমি ছেঁড়া
recipriversxclusion

4
@ রিসিপ্রিভার্সেক্স্লেকশন: কেবল স্পষ্ট করে বলছি, তবে মিঃ স্ট্রস্ট্রপ উচ্চ বিদ্যালয়ের শিক্ষার্থী থেকে অনেক দূরে;)
ডেমিয়ান ব্রেচট

14
ঈশ্বর. বিশ্বে কীভাবে কেউ ভাবতে পারেন যে ডায়নামিকভাবে বরাদ্দ করা অ্যারেগুলি ম্যানুয়ালি ম্যানিপুলেট করা সি +++ এর "সবচেয়ে সহজ-প্রথম" রুট হতে পারে, সেখানে std::stringএবং std::vectorকোথায় ?! এটি কি 32 সি প্রোগ্রামারদের আপগেট করছে? আমি এক দশক ধরে সি ++ শিখছি, প্রোগ্রামিং শুরুর দিকে, জাভা বছরের এক বছর পড়া শিক্ষার্থীদের এবং প্রোগ্রামিং পেশাদারদের to আমি ব্যবহার std::stringএবং std::vectorপ্রতিদিন এক থেকে। এগুলি ব্যবহার করা সহজ, তাদের অভ্যন্তরের যে কোনও বিষয় নয়। (আপনি ভিবির স্ট্রিং শেখানো থেকে পিছপা হবেন না কারণ এটি ভেতরের দিক থেকে খুব জটিল?)
এসবিআই

18
আপনার ডাউনটাতে এখানে কোনও বাড়িতে থাকার সুবিধা উপভোগ করতে আপনাকে বাড়ি তৈরি করতে শিখতে হবে না। std::vectorএটি ব্যবহার করতে সক্ষম হতে আপনাকে লিখতে সক্ষম হতে হবে না। এবং ক্লাসগুলি সি ++ এর একটি অত্যন্ত প্রাথমিক অংশ। যা মৌলিক নয় তা হ'ল এই সমস্ত ত্রুটিগুলি যে তারা দেশীয় অ্যারে এবং পয়েন্টারগুলি ব্যবহার করবে তা ডিবাগ করছে।
ডেডজিমি

6
@ ডেড এমএমজি: বাড়ির রূপক কাজ করে না। কোনও ঘরে, একবার ভিত্তি তৈরি হয়ে গেলে আপনার আর কখনও এটি নিয়ে ভাবার দরকার নেই। আপনি কেবল অন্য সমস্ত কিছু নির্মাণ করতে যান। সি ++ তে আপনি যে কীওয়ার্ডটি তাত্ক্ষণিকভাবে দেখেন newততক্ষনে আপনি ঠিক আবার স্মৃতি ম্যানেজমেন্ট টেরিরিয়রিতে ফিরে এসেছেন। এবং প্রায়শই গ্রন্থাগারগুলি পয়েন্টারগুলির জন্য জিজ্ঞাসা করে এবং আপনার নিজেকে জিজ্ঞাসা করা উচিত, "এটি কি মালিকানা নিতে চলেছে? নাকি আমার এখনও এটি পরিষ্কার করার দরকার আছে?"। আমার পা ফাউন্ডেশন। পেরেক বা ঝাঁকুনি বা অন্য কিছুর মতো।
ক্রিস ইবারল

38

এটি আমার নিজের অভিজ্ঞতা। এটি মূল্যবান যাই হোক না কেন এটি গ্রহণ করুন।

আমি যখন প্রোগ্রামিং শুরু করলাম তখন ফিরে তাকানো, আমি সত্যিই ইচ্ছুক যে আমি আগে স্মৃতি সম্পর্কে জানতে পারতাম । না, এটা উত্তেজনাপূর্ণ নয়। এটি আপনাকে চকচকে করে তুলবে। তবে এটি শেখানো একটি হাস্যকরভাবে সহজ ধারণা। কেবল একটি 1-ডি টেবিল দেখান এবং তাদের কয়েকটি মানসিক অনুশীলনের মধ্য দিয়ে যেতে দিন:

পাঠ 1:
এটি মেমরির 10 বাইট। এটি হ'ল "a" অক্ষরটি 3 নম্বর ঘরে স্থাপন করা হচ্ছে "ক" এর মান এবং 3 টি ঠিকানা। ঠিক আছে? এটি 3 নম্বর ঘরে 5 নম্বর স্থাপন করা হচ্ছে যার মান 3 এবং এটির ঠিকানা 5 এখন 3 নম্বরটি কী বোঝাতে পারে? ওয়েল এটি কেবল একটি 3 নম্বর নম্বর হতে পারে - এটি ঠিকানার 3 একটি রেফারেন্স হতে পারে 3 ঠিক যেমন 1 একটি নম্বর হতে পারে বা একটি দেশের কোড হতে পারে। এটি কেবল একটি সংখ্যা, এটি আমরা কীভাবে আচরণ করব তার উপর নির্ভর করে treat

পাঠ 2:
আসুন বাইনারি গণনা করা শিখি। বাইনারি ফিঙ্গার গণনা ব্যবহার করে 10 গণনা করা যাক। আকর্ষণীয় না? কীভাবে কেবল 4 টি আঙুলের প্রয়োজন? সুতরাং আমরা বলি যে কেবলমাত্র 4 টি বিট প্রয়োজন (1/2 সেল)। আপনি একদিকে সর্বোচ্চ যেটি গণনা করতে পারেন (উত্তরটি 31)। কিভাবে প্রায় 2 হাত (উত্তর 1023)। আরও বিট কীভাবে উচ্চতর সংখ্যার ব্যাপ্তি বোঝায় in তাদের মনে করিয়ে দিন যে একটি মেমরি সেল 8 বিট। কোনও সংখ্যার 8 টি বিটের বেশি হলে কী হয় জিজ্ঞাসা করুন। তারা কীভাবে একটি বহু-বাইট নম্বর মেমরিতে রাখবে (যৌক্তিক উপায়ে)? তাদের চর, শর্টস, পূর্ণসংখ্যার এবং দীর্ঘায়ু পরিচয় করিয়ে দিন।

পাঠ 3:
এখানে আমি সি ++ তে লিখেছি এমন একটি প্রোগ্রাম। এটি 32-বিট পূর্ণসংখ্যা ব্যবহার করে। আর এই এখানে আরো একটি সংখ্যা। তবে এটি একটি সংখ্যা যা নির্দেশ করার জন্য ব্যবহৃত হয়। এই ছোট্ট নক্ষত্রের জিনিসটি ব্যবহার করে আমরা একটি প্রতিশ্রুতি দিচ্ছি যে নম্বরটি নির্দেশ করার জন্য ব্যবহৃত হচ্ছে। এবং এখানে আমরা এটি প্রথম সংখ্যাটিতে কীভাবে দেখাই। ছোট অ্যাম্পারস্যান্ড আমাদের জন্য মান পূরণ করে। ঝরঝরে?

ইত্যাদি। আপনি যখন বেসিক মেমোরিটি নামিয়ে ফেলেন, অন্য সব কিছুই কেক। এটি দরিদ্র শিক্ষার্থীরা যারা ধারনা করে যে সংকলকটি যাদুকর কিছু করছে (বা তাদের কখনই মেমরি পরিচালনা সম্পর্কে চিন্তা করতে হবে না) যারা সর্বাধিক লড়াইয়ের ঝোঁক রাখে। এবং সি ++ জল জলাবদ্ধ করে কারণ কিছু জিনিস স্বয়ংক্রিয়ভাবে পরিষ্কার হয়ে যায় (অর্থাত্ একটি সাধারণ ভেক্টর) অন্য জিনিসগুলি (যেমন "নতুন" ব্যবহার করে বরাদ্দকৃত ভেক্টর) পরিষ্কার করে না। এমনকি আমাকে স্ট্রিং (চর * বনাম স্টাড :: স্ট্রিং - পয়েন্টার জ্ঞান ছাড়াই ব্যাখ্যা করার চেষ্টা করুন) থেকেও শুরু করবেন না।

আপনার রোবট প্রতিযোগিতাটি কোন প্ল্যাটফর্মকে লক্ষ্যবস্তু করবে তা আমি জানি না, তবে এটি যদি সীমাবদ্ধ মেমরির পরিবেশ থাকে তবে মেমরি ম্যানেজমেন্ট দক্ষতা অত্যন্ত গুরুত্বপূর্ণ।

সম্পাদনা

একবার আপনি তাদের মৌলিক বিষয়গুলি শিখিয়ে ফেললে, তবে হ্যাঁ আমি বলি যে সমস্ত উপায়ে C ++ যান। প্রযুক্তিগতভাবে এগুলি কেবল ভিন্ন লাইব্রেরি, তবে হ্যাঁ তাদের একাধিক দৃষ্টান্ত দিয়ে বিভ্রান্ত করার কোনও অর্থ নেই। তাদের সি ++ সরঞ্জাম দিন (এতে পয়েন্টার এবং অ্যারে রয়েছে)।


এটি একটি ভাল প্রতিক্রিয়া। আমার মনে সমস্যাটি হ'ল আপনি এটি শিখিয়ে নিতে পারেন তবে অনেক বাচ্চা (আগ্রহীতার অভাবে পয়েন্টার / মেমরির ধারণাগুলি নিয়ে আমি প্রথমে লড়াই করেছি) কেবল এটি টিউন করবে, কারণ এটি মজাদার নয়, যদিও এটি প্রয়োজনীয় জ্ঞান সি ++ এ সফলভাবে প্রোগ্রাম করার জন্য।
কিথ লেন

3
হ্যাঁ, এখানে কোন তর্ক নেই। একই কারণে, বাচ্চারা গণিত এবং ভূগোল টিউন করে। কেবলমাত্র পরে তারা বুঝতে পারে যে তাদের মনোযোগ দেওয়া উচিত ছিল। খুব নিশ্চিত যে সেই নির্দিষ্ট সমস্যাটি এখনও সমাধান হয়নি।
ক্রিস ইবারল

+1 টি। আমি মনে করি আমার সি ++ এর সাথে পরিচয় হওয়ার পরে স্মৃতিশক্তি কীভাবে বেশ কিছুক্ষণ কাজ করেছিল তা বোঝার জন্য together আমি মনে করি না আমি এটিকে সামনে থেকে বুঝতে পারতাম, যদিও (কোনও ব্যবহারিক অর্থে নয়, যেমন মানগুলি কীভাবে উপস্থাপন করা হয়)।
ক্যামেরন

+1, এটি আমি বলার চেষ্টা করছিলাম তবে আরও ভাল। যান্ত্রিক প্রশিক্ষণ দেওয়ার সময়, তাদের ড্রাইভিং বিশেষজ্ঞ করার আগে তাদের অবশ্যই ইঞ্জিনটি বুঝতে হবে
শেঠ কার্নেগি

হ্যাঁ আমি এই বিষয়টিকে পিছনে পিছনে যেতে শুরু করি যে নতুনরা এটি বুঝতে পারে কিনা। এটি অত্যন্ত হাস্যকরভাবে সহজ (এবং আপনি হঠাৎ নিজেকে "বাহ, কম্পিউটারগুলি গভীরভাবে বোকা মেশিন বলে, তারা তাই না?") বলে মনে হচ্ছে, তবে তাদের মনোযোগ দেওয়ার এবং আগত আরও আকর্ষণীয় বিষয়গুলির প্রতিশ্রুতি ধরে রাখা দরকার। "বড় ছবি" না দেখলে সামগ্রিক পদ্ধতির এক মন খারাপ হয়ে যায়।
ক্রিস ইবারল

31

আমি কি প্রথম দিন থেকে এসটিএল ব্যবহার করা শুরু করব, এএসপি। ভেক্টর বা কেবল স্ট্যান্ডার্ড অ্যারে দিয়ে স্টিক? অ্যারেগুলি প্রবর্তন করা সহজ তবে পয়েন্টারের ত্রুটিগুলি ধরা শক্ত হতে পারে।

অবশ্যই স্ট্যান্ডার্ড লাইব্রেরী প্রকারের মধ্যে ডান যান। a std::stringবা std::vectorএগুলি যা তাদের প্রায়শই ব্যবহার করা উচিত এবং (প্রারম্ভিক বৃহত্তর সংখ্যাগরিষ্ঠ) এই ধরণের ত্রুটি সনাক্তকরণ এবং ত্রুটি পরিচালনার কিছু ফর্ম সরবরাহ করে, যখন শিক্ষার্থীদের অনেক জটিলতা বিমূর্ত করে তোলে।

আপনি কীভাবে মেমোরিটি কাঠামোগত করা হয় এবং কীভাবে মেমরি (সি স্টাইল) পরিচালনা করতে পারেন তা শিখিয়ে শিক্ষার্থীদের শেখানোর বেশিরভাগ অংশ ব্যয় করতে পারেন, অথবা আপনি ভাষাটির আইডিম্যাটিক টাইপগুলি ব্যবহার করে সরাসরি কাজ করতে পারেন তবে প্রয়োজনে প্রয়োগের বিশদটি ব্যাখ্যা করতে পারেন (এবং যখন তাদের একটি রয়েছে কোন অ্যারে কী এবং সেগুলি কোথায় ব্যবহৃত হয় সে সম্পর্কে আরও ভাল ধারণা

std::vector(তৈরি / পড়ুন / লিখুন) এর বাক্য গঠনটি সি অ্যারের চেয়ে বেশি জটিল নয়। তুলনায়, ম্যানুয়াল মেমরি ম্যানেজমেন্ট এবং সি সাধারণ অ্যারে দিয়ে নতুন শিখকরা সমস্ত সাধারণ ত্রুটিগুলি শিখতে, শেখানো এবং ব্যবহার করা আরও বেশি কঠিন।

I / O- এর জন্য আমার কি আউট লেগে থাকা উচিত ইত্যাদি ইত্যাদি অথবা আপনি কি মনে করেন যে প্রিন্টফ শিখতে আরও সহজ হবে?

cout। ব্যক্তিগতভাবে, আমি মনে করি coutশিখতে আরও সহজ। সম্ভবত আরও গুরুত্বপূর্ণভাবে, আপনার চয়ন করা উচিত coutকারণ এটি আরও সুরক্ষিত, বহুমুখী এবং কোনও স্ট্যান্ডার্ড লাইব্রেরির ধরণগুলি ব্যবহার করে আপনি ইতিমধ্যে বিল্টিন কার্যকারিতা এবং টাইপসফটিটি কীভাবে প্রিন্ট করেন তা আপনাকে সংজ্ঞা দিতে দেয়। অবশেষে, আপনি ঠিক মিশ্র প্রোগ্রামগুলি শেষ করবেন যখন আপনি বুঝতে পারবেন যে এগুলি ছাড়াও তাদের আরও শিখতে coutহবে printf

আসলে, আমি মনে করি আপনার কোইনিগ এবং মু দ্বারা এক্সিলারেটর সি ++ পড়া উচিত এবং এটি সম্ভবত নির্দেশের জন্য ব্যবহার করা উচিত (প্রশ্নের উত্তর 3 টি পরোক্ষভাবে দেওয়া উচিত)। বইটিতে তারা (পৃষ্ঠাগুলি 3) std::coutঠিক আগে পরিচয় returnকরিয়েছে এবং পয়েন্টার এবং অ্যারেগুলি 10 অধ্যায় পর্যন্ত সংরক্ষণ করে যদি আমি আপনার প্রশ্নের উত্তর হিসাবে সেই বইয়ের প্রবন্ধটি অনুলিপি করে আটকে দিতে পারি, আমি চাই। (দ্রষ্টব্য: আমি আপনাকে সি ++ শিক্ষার দৃষ্টিকোণের জন্য এটি পড়ার পরামর্শ দিই)।

সম্পাদনা এখানে উপস্থাপনা

C ++ এর জন্য এমন কোনও অনলাইন সংস্থান রয়েছে যা এই জাতীয় তরুণ শিক্ষার্থীদের জন্য উপযুক্ত?

যদি আপনি অ্যাক্সিলারেটেড সি ++ ব্যবহার করতে না চান (যা সাধারণভাবে প্রোগ্রামিংয়ের সাথে কিছু পটভূমি ধরে নেয়) তবে আপনি সম্ভবত সি ++ তে এক্কেলের চিন্তাভাবনাটি পছন্দ করতে পারেন । আমি এটি পড়িনি, তবে এটি বিনামূল্যে বিতরণ করা সি ++ অন্তর্ভুক্ত পাঠ্য।


1
+1 ... এবং আমি কঠোর হতে চাই "তারা ফিরে আসার ঠিক আগে" এসটিডি :: কোটকে পরিচয় করিয়েছে (পৃষ্ঠা 3) "তার মধ্যে উঁকি দিতে হবে :)
ফেলিক্স ডমব্যাক

1
@ ফেলিক্স এবং সরাসরি পরিচিতির আগে std::cout, কোঁকড়ানো ধনুর্বন্ধনী প্রবর্তিত হয় =) (এটি সর্বব্যাপী "হ্যালো, ওয়ার্ল্ড" এর একটি সাধারণ বিভাজন)
জাস্টিন

1
আমি কোয়েনিগ এবং মু-র বইয়ের সুপারিশকে হৃদয়গ্রাহী করে দ্বিতীয়। এটি সি ++ এবং প্রোগ্রামিং উভয় শিক্ষার লক্ষ্য করে। ব্রুস একল এর সি ++ এ থিংকিংয়ের মূল লক্ষ্যটি ছিল প্রসেসরিয়াল ভাষার (যেমন সি বা বেসিক) পূর্ববর্তী অভিজ্ঞতা সম্পন্ন ব্যক্তিদের সি ++ শেখানো।
স্টিফেন সি স্টিল

11

একটি বিষয় বিবেচনা করতে হবে তা হল যে কোনও ফর্মের সাধারণ FIRST কোড ডেটা স্ট্রাকচারগুলিতে (স্ট্রাক্ট, ক্লাস, অ্যারে, ভেক্টর, তালিকা) খুব ছোট ভূমিকা পালন করে। আপনি সাধারণত খুব অল্প পরিমাণে সেন্সর ডেটা নিয়ে ডিল করেন এবং খুব অল্প পরিমাণ অ্যাকিউউটর গতি সিদ্ধান্ত নিতে এটি ব্যবহার করেন।

কিন্তু কি করে বিপুল ভূমিকা পালন, এবং হতে পারে খুব বোঝা কঠিন সব বিভিন্ন ফর্ম হয় নিয়ন্ত্রণ যে যান।

সুতরাং আমি নিয়ন্ত্রণ উপর অনেক জোর দেওয়া চাই। মূলসূত্র সঙ্গে শুরু করুন: if, for, while। তাদের প্রচুর অনুশীলন করুন। সেগুলি ভালভাবে জানতে তাদেরকে পান ...

... তবে তা আরও শক্ত হয়ে যায়। মাঝারি আকারের যে কোনও রোবট কোড শেষ পর্যন্ত কিছু কৌশলযুক্ত নিয়ন্ত্রণের ধরণে পৌঁছে:

  • বড় "প্রধান" লুপ, এটি সমস্ত কিছু বলে

  • রাষ্ট্রীয় মেশিনগুলি (এগুলি অনেক কিছু দেখায়)

  • পূর্ববর্তী মানগুলি সংরক্ষণ করা / চালানো কাউন্টার (পিআইডি-র মতো)

এগুলি প্রাথমিকভাবে বোঝার পক্ষে শক্ত। এই জাতীয় কোডের মাধ্যমে কোনও প্রোগ্রাম কীভাবে সরবে সে সম্পর্কে ভাবনা বিভ্রান্তিকর, আপনি সম্ভবত এটি এখন বুঝতে পারবেন না, তবে এটি it এটি আপনার শিক্ষার্থীদের ভাষার চেয়ে অনেক বেশি কষ্ট দিতে চলেছে।

এছাড়াও, শুভকামনা! আশা করি মরসুমটি ভালই কাটে।


2
+1 টি; এটি কোনও নিয়মিত ডেস্কটপ পরিবেশ নয়, তবে আসল এম্বেড কোড। স্টেট মেশিনগুলি স্টাড :: ভেক্টর বনাম অ্যারের চেয়ে অনেক বেশি গুরুত্বপূর্ণ।
এমসাল্টারস

8
  • আমি কি প্রথম দিন থেকে এসটিএল ব্যবহার করা শুরু করব, এএসপি। vectorবা শুধু স্ট্যান্ডার্ড অ্যারে সঙ্গে লাঠি? অ্যারেগুলি প্রবর্তন করা সহজ তবে পয়েন্টারের ত্রুটিগুলি ধরা শক্ত হতে পারে।

অ্যারেগুলির সাথে সমস্যাটি হ'ল সহজ পাঠ্যপুস্তকের উদাহরণ ব্যতীত অন্য যে কোনও কিছুর জন্য গতিশীল আকারের অ্যারেগুলির প্রয়োজন হবে এবং যে মুহুর্তে আপনার গতিশীল আকারের অ্যারেগুলির প্রয়োজন হবে তা std::vectorআরও সহজ। এছাড়াও, গতিশীল আকারের অ্যারেগুলি নিরাপদে পরিচালনা করার একমাত্র উপায় হ'ল এগুলি আপনার নিজের শ্রেণিতে আবদ্ধ করা, এটি একটি দরিদ্র std::vectorচাবুক বন্ধ।
অস্বাভাবিক জনপ্রিয় বিশ্বাসের বিপক্ষে, ছাত্র পারেন ব্যবহার বৈশিষ্ট্য জটিল বলবিজ্ঞান প্রয়োজন বুদ্ধিমান কিভাবে ছাড়া বাস্তবায়ন হবে বাস্তবায়ন যেমন পশুরা নিজেদের। যেমনটি আমি একটি মন্তব্যে বলেছি: আপনি অন্যান্য ভাষায় স্ট্রিং না শেখানোর কথা ভাবেনও না, কেবল তাদের বাস্তবায়ন জটিল বলে আপনি কি করবেন?

  • I / O- এর জন্য, আমার কি লেগে থাকা উচিত coutইত্যাদি, বা আপনার কি মনে printfহয় শেখা সহজ হবে?

আপনি যদি কিছু ভুল হয়ে যাওয়ার মুহূর্তে (যা typedefকিছু আপাতদৃষ্টির সাথে সম্পর্কিত না হওয়া শিরোনামের পরিবর্তনের মুহুর্তে ঘটে ) তখন ধরণের ধরণের স্ট্রিং কনভেনশনগুলির সেট কেন আপনার প্রকারের সুরক্ষার চেয়ে পছন্দনীয় হবে std::cout?

  • C ++ এর জন্য এমন কোনও অনলাইন সংস্থান রয়েছে যা এই জাতীয় তরুণ শিক্ষার্থীদের জন্য উপযুক্ত?

অনলাইন বা না সর্বাধিক সি ++ রিসোর্সগুলি খারাপ। এবং আমি হার্ড-টু-পঠিত ফন্ট বা ভাষা ব্যবহার করার বিষয়ে কথা বলছি না। আমি সুস্পষ্টভাবে প্রকৃত ত্রুটিপূর্ণ ত্রুটিগুলি বলছি। খুব ভাল সি ++ রিসোর্স রয়েছে, বেশিরভাগই এক বা দুই ডজন বই । অনলাইনে আমি কেবল একটাই জানি , সি ++ তে ব্রুস একেলের থিংকিং


এক দশক ধরে, আমি কোইনিগ / মু এর তাত্ক্ষণিক সি ++ বেস হিসাবে ব্যবহার করে খুব ভিন্ন পটভূমির শিক্ষার্থীদের সি ++ শিখিয়েছি । আমার কোর্সটি সেই দশকে অনেকটা পরিবর্তিত হয়েছে, অন্তর্নিহিত নীতি ব্যতীত বইটির কাছে এখন আর কোথাও নেই: প্রথম থেকেই আধুনিক, সঠিক, নিরাপদ প্রতিমা ব্যবহার করুন। আপনার ছাত্রদের কীভাবে ম্যানুয়ালি ম্যানিপুল করতে হয় তা শিখিয়ে দিবেন না, কেবল তাদের পরে সুরক্ষিত প্রতিবাদের পক্ষে তা শিখতে হবে। আপনি এখানে সরবরাহ করা কয়েকটি উত্তর দেখে নিতে পারেন, এটি কার্যকর হয় না: যারা ম্যানুয়াল পদ্ধতিগুলি প্রথমে শিখিয়েছিল তারা আধুনিক, নিরাপদ প্রতিমা ব্যবহারের সুবিধাটি খুব কমই বুঝতে পারে।


7

আপনি যদি সি ++ শিখতে চান তবে আমি প্রিন্টফের মতো সি সাবসেটের পরিবর্তে ভেক্টর এবং কাউট হিসাবে সরাসরি সি ++ রচনাগুলি দিয়ে শুরু করব।


7

আমার কি প্রথম দিন থেকে এসটিএল ব্যবহার শুরু করা উচিত ...?

হ্যাঁ। সি ++ এ নেটিভ অ্যারেগুলি ব্যবহার করা ত্রুটি প্রবণ এবং কেবলমাত্র 99% সময়ের অভ্যাস।

I / O- এর জন্য, আমি কি কাউট ইত্যাদি আটকে থাকব ...?

হ্যাঁ।

C ++ এর জন্য এমন কোনও অনলাইন সংস্থান রয়েছে যা এই জাতীয় তরুণ শিক্ষার্থীদের জন্য উপযুক্ত?

তারা এত ছোট নয়। প্রোগ্রাম শিখতে বুদ্ধি, কেবল অনুপ্রেরণা এবং একটি মুক্ত মনের প্রয়োজন হয় না। আমি হাইস্কুলের শেষ দুই বছরে যা কিছু শিখিয়েছি তা ভাবতে পারি না যা একটি শিক্ষার্থীকে প্রোগ্রাম শেখার জন্য আরও ভালভাবে প্রস্তুত করে। আপনি ব্রুস এক্কেলের চিন্তাকে সি ++ এ দেখেছেন ? এটি বিনামূল্যে ডাউনলোডের জন্য উপলব্ধ এবং খুব ভাল পর্যালোচনা করা হয়েছে। দয়া করে জনপ্রিয় তবে ভয়াবহ সি ++ এড়ান: প্রোগ্রামটি কীভাবে এবং সমস্ত স্যাম নিজেকে শেখায় সি ++ ... বইগুলি।


5

আমাকে প্রথম প্রোগ্রামিং ভাষা হিসাবে উচ্চ বিদ্যালয়ে সি ++ পড়ানো হয়েছিল, যদিও এটি "সি +" এর মতোই ছিল , এখন আপনি এটি উল্লেখ করেছেন; আমরা coutকনসোল এবং ফাইলগুলিতে টেক্সট লেখার জন্য ব্যবহার করতাম , তবে বেশ কয়েকটি সি ফাংশন ( getch()আমার প্রিয় ছিল)।

আমি মনে করি বেসিকগুলি শেখানোর সর্বাধিক কার্যকর (এবং সম্ভবত মজাদার) উপায়টি একটি লক্ষ্য-ভিত্তিক পাঠ্যক্রমটি ব্যবহার করা: কীভাবে আউটপুট স্টাফগুলি, তারপরে কীবোর্ডের ইনপুট, তারপরে সরল ফাইল I / O ইত্যাদি প্রদর্শন শুরু করুন- ভিত্তিক খেলা (বা রোবোটিক্স সমতুল্য)। তারপরে তারা যখন জিজ্ঞাসা করবে, "আমি কীভাবে এক্স করব?", আপনি ইতিমধ্যে দেখেছেন এমন উদাহরণগুলির ক্ষেত্রে আপনি X কে ভেঙে ফেলতে পারেন, যেমন "প্রথমে আপনাকে ব্যবহারকারীর কাছ থেকে ইনপুটটি নেওয়া দরকার যেমন আমরা জেডে করেছিলাম, তারপরে ... "(সম্ভবত বাস্তবে এটি এত সহজ নয় যেহেতু এক্স সম্ভবত এমন কিছু হবে যা করার জন্য তাদের অতিরিক্ত জ্ঞানের প্রয়োজন হবে, যেমন" থ্রিডি গ্রাফিক্স ", তবে আপনি এখনও ব্যাখ্যা করতে পারেন এটি কীভাবে উচ্চ স্তরে কাজ করবে? পথ)।

আপনি যে উদাহরণগুলি দেখান সেগুলি ব্ল্যাক-বাক্সের অনুলিপি-আটকানো যাদু হিসাবে শুরু হবে, যার রহস্যগুলি প্রোগ্রামিং ধাঁধাটির টুকরো হিসাবে আস্তে আস্তে আস্তে আস্তে বের হয়ে যায়। উদাহরণস্বরূপ, আপনার শিক্ষার্থীরা এর প্রাথমিক বিষয়গুলি ifখুব দ্রুত শিখবে , তবে তারা সম্ভবত বুঝতে পারবে না যে কোনও বুলিয়ান এক্সপ্রেশনটি কোনও ifঅবস্থার মধ্যে ব্যবহারের জন্য কেবল সীমাবদ্ধ নয় (ক্লাসিক if (blah) return true; else return false;কোডের দিকে পরিচালিত)।

আপনি ধারক হিসাবে কোনও অ্যারে বা ভেক্টর নির্বাচন করেন কিনা তার সূক্ষ্মতা প্রথমে শিক্ষার্থীদের কাছে অপ্রাসঙ্গিক বলে মনে হবে। একটি ভেক্টর / অ্যারে কেবল একটি ভেরিয়েবল হিসাবে প্রচুর ভেরিয়েবল থাকার একটি উপায় হতে পারে যা সূচকের মাধ্যমে অ্যাক্সেসযোগ্য। আপনি যেখানে পারেন সেখানে আটকে যান। পয়েন্টারগুলি পরে না বোঝা যাবে না। এর অর্থ এটি নয় যে আপনার জিনিসগুলি ব্যাখ্যা করা উচিত নয়; কেবলমাত্র আপনি একবারে সমস্ত কিছু ব্যাখ্যা করতে পারবেন না এবং আপনি যে জিনিসগুলি বর্ণনা করছেন তা সম্পূর্ণরূপে শোষিত হবে না। মানুষ রৈখিকভাবে নয়, জৈবিকভাবে শেখে। অপারেটর ওভারলোডিং কী তা সঠিকভাবে বুঝতে পারার আগে আমি coutকয়েক বছর ব্যবহার করছিলাম!

ওহ, এবং পুনরাবৃত্তি ভয় পাবেন না। "এটি হ্যালো ওয়ার্ল্ড প্রোগ্রামের মতো যা আমরা করেছিলাম - মনে আছে কীভাবে আমরা কনসোলে পাঠ্য লিখেছি?" (না ...) "আসুন আমরা নিশ্চিত হয়েই আবার এটি ব্যবহার করি" " ... এবং প্রশ্ন জিজ্ঞাসা করুন! শিক্ষার্থীদের মজাদার উদাহরণ এবং প্রচুর মিথস্ক্রিয়ায় নিযুক্ত রাখুন।

সি ++ একটি জটিল ভাষা এবং আপনি যা-ই করেন না কেন, সেই জটিলতার একটি উল্লেখযোগ্য পরিমাণ (এবং সাধারণভাবে প্রোগ্রামিংয়ের কারুকাজ) আপনার ছাত্রদের কাছে হারিয়ে যাবে। আপনি তাদের প্রদর্শিত সমস্ত কিছু তাদের কাছে নতুন হবে; এর বেশিরভাগই বোঝার গভীর স্তরে ডুবে যাবে না (অন্তত, এখনই নয়)। মেমরি কীভাবে কাজ করে, পিসির উপাদানগুলি কীভাবে ইন্টারঅ্যাক্ট করে, স্ট্যাক এবং হিপ কী, পয়েন্টার, ক্লাস, এমনকি লুপ এবং যদি-অন্য চেইনগুলি সংখ্যাগরিষ্ঠ দ্বারা সঠিকভাবে বুঝতে পারে না । এটা ঠিক আছে! এগুলি ব্যবহার করার মতো বোঝার দরকার নেই - দুর্দান্ত-কুরুচিপূর্ণ 1000-লাইনের ফাংশন সহ কুইন্টুপল-নেস্টেড রিন্ডন্ড্যান্ট ifএস এবং 43 টি ভেরিয়েবলের মতো চমত্কার পরিমাণে দুর্দান্ত প্রোগ্রাম লেখা যেতে পারে x_2r। গুরুত্বপূর্ণ বিষয়টি হল শিক্ষার্থীরা অবিচ্ছিন্নভাবে শিখছে এবং উন্নতি করছে। কালো বাক্সগুলি দীর্ঘমেয়াদে স্বচ্ছ হয়ে ওঠার সাথে সাথে (বা কমপক্ষে স্বচ্ছ ধূসর) হয়ে যায়। কোর্সটি শেষ হওয়ার পরে, তারা ডিজাইন প্যাটারগুলি কী তা জানেন না তবে প্রথম কয়েক সপ্তাহে তারা যে প্রোগ্রামগুলি লিখেছিলেন সেগুলি তাদের দিকে ফিরে দেখতে এবং তাদের কোডটিতে ক্রিং করা উচিত। তাদের লিখিত প্রথম প্রোগ্রামটি কীভাবে বাস্তবে কাজ করে তা বিশদের একটি গুরুত্বপূর্ণ স্তরে বুঝতে হবে (যেখানে তারা এটি লেখার সময় তাদের কোনও ধারণা ছিল না)। তবে তারা সব জানতে পারবে না - তবুও


5

আমি আমার জীবনে হাই স্কুল থেকে কলেজের প্রোগ্রামিং ক্লাস নিয়েছি। আমি বলতে পারি যে প্রবাহে জিনিসগুলি কীভাবে প্রিন্ট করা যায় তা ছাড়া আমি আমার প্রথম সি ++ ক্লাস থেকে খুব বেশি শিখিনি।

আমার পরামর্শ, একজন তরুণ শিক্ষার্থী হিসাবে, যার বিগত কয়েক বছর ধরে কেবল বিকাশকারী হিসাবে কোনও সত্যিকারের কাজ ছিল, তাদের বিষয়গুলিকে বোবা না করা। তারা কী করছে এবং কীভাবে এটি অপারেটিং সিস্টেমের স্তরে কাজ করে তা বলুন (কমপ্লেক্স আইএমওতে যাওয়ার দরকার নেই)।

আমি মনে করি তাদের সি শিখিয়ে দেওয়া এটির আরও ভাল উপায় (এটি এখনও প্রায় সবসময় C ++ হিসাবে আপনি জানেন যেমন সংকলিত হবে)। টার্মিনালটি আসলে কী তা তাদের শিখিয়ে দেওয়া হচ্ছে, তাদের প্রোগ্রামটি এর সাথে কীভাবে ইন্টারঅ্যাক্ট করে, একটি স্ট্রিং অক্ষরের একটি অ্যারে মেমরির সাথে 0 ডলার দিয়ে শেষ হয়, ম্যালোক কী এবং কীভাবে সি ++ এটি বিমূর্ত করে, কীভাবে একটি চর এবং কোনও আন্তঃ মেমরিতে সংরক্ষণ করা হয় , ect ... এই বিষয়গুলি হ'ল কেউ যখন বুঝতে পারে যে কোনও সমস্যা যখন সেগুলি বিকাশে আসে তখন কীভাবে সমাধান করা যায়।

আমি বাচ্চাদের প্রোগ্রামটি দেওয়া এবং প্রধানত প্রশ্নের উত্তর দেওয়ার জন্য সেখানে থাকার গুরুত্বকে চাপ দিতে পারি না। আমার অভিজ্ঞতায় আপনি এটি ব্যবহার করে একটি ভাষা শিখতে পারেন। বই এবং পাঠগুলি সহায়ক হতে পারে এবং এটি শুরু করার জন্য প্রয়োজনীয়, তবে শেষ পর্যন্ত, আমি বলি তাদের একটি সি / সি ++ ফাইল দিন এবং বলুন: এটি এক্স এর একটি উদাহরণ, আমি চাই আপনি ওয়াই করুন (যা সম্পন্ন করা যায়) হ্যাকিং এক্স দ্বারা)। ম্যান পেজগুলি কীভাবে ব্যবহার করতে হয় সেগুলি তাদের দেখান (যদি তারা * এনআইএক্স ব্যবহার করে থাকে) বা তাদের সিপিপ্লসপ্লাস.কম দেখায় এবং তাদের নিজস্ব জিনিসগুলি বের করার জন্য তাদেরকে স্ট্যান্ড লিবগুলি অন্বেষণ করতে দিন।

টিএল; ডিআর বাচ্চাদের নিজেরাই শেখাতে দিন। কাঠামো সরবরাহ এবং প্রশ্নের উত্তর দিতে সেখানে থাকুন।

এছাড়াও: লিঙ্কযুক্ত তালিকাগুলি সত্য!


4

আপনি সাধারণভাবে তাদের প্রোগ্রামিং শেখাচ্ছেন না, আপনি তাদেরকে রোবট এবং এ জাতীয় ব্যবহার করে এক ধরণের এমবেডেড প্রোগ্রামিং শেখাচ্ছেন। আমি যদি সঠিকভাবে বুঝতে পারি।

প্রথমত, আমি মনে করি আপনি কোন লাইব্রেরি ব্যবহার করছেন এবং আপনার কী প্রয়োজন তা পরীক্ষা করা উচিত।

আপনি যদি অনেকগুলি পয়েন্টার এবং সি-অ্যারে ব্যবহারের জন্য সি লাইব্রেরি ব্যবহার করতে বা সি-লাইক বলে মনে করেন তবে আমি অনুমান করি যে এটি কীভাবে ব্যবহার করতে হয় বা আপনি এটি কেন ব্যবহার করেন তা শেখানোর আপনার একটি উপায় প্রয়োজন d

তবে, আপনি তাদের স্ট্রিং এবং ভেক্টর দিয়ে শুরু করার জন্য কিছু সাধারণ কোডগুলি প্রদর্শন করতে পারেন, সি ++ এভাবেই কাজ করে। এর অর্থ এই নয় যে আপনি তাদের পয়েন্টারগুলি শেখাতে পারবেন না।

হতে পারে আপনার এটি নিম্ন স্তরের সি ++ (যা সাদৃশ্যযুক্ত) এবং এসটিএল এর সাথে উচ্চ স্তরের সি ++ এর মধ্যে পার্থক্যগুলি পরিষ্কার করে দেওয়া উচিত। নতুনদের জন্য সি ++ এর মধ্যে সবচেয়ে কঠিন বিষয় হ'ল সি কী, সি ++ কী এবং বিভিন্ন সিস্টেমের এপিআই কী কী তা দেখতে হয়।

যেহেতু এখানে লক্ষ্যটি সাধারণ প্রোগ্রামিং শেখার নয়, তবে একটি রোবট প্রতিযোগিতায় প্রবেশ করার জন্য, আমি এইভাবে শিক্ষাকে ওরিয়েন্টেড করতাম।


2

আমি গত বছরের শেষের দিকে শিক্ষার্থীদের সি ++ পড়ানো শুরু করেছি এবং এই গ্রীষ্মেও আমাদের প্রথম রোবোটিক্স টিমের জন্য।

আমরা স্ট্রস্ট্রুপের প্রোগ্রামিং - সি ++ ব্যবহার করে নীতি ও অনুশীলন ব্যবহার করছি । আমি বইটি অ্যাক্সেসযোগ্য, পঠনযোগ্য এবং সুগঠিত বলে মনে করেছি। আমরা প্রায় 6 জন শিক্ষার্থী তাদের নিজস্ব অধ্যায়গুলির মাধ্যমে পড়েছি। আমি তাদের পরিভাষা এবং প্রশ্নগুলির সাহায্য করার জন্য আছি। তারা বইয়ের সমস্ত অনুশীলন করে।

আমি ছাত্রদের 14 অধ্যায়ে কাজ করেছি। স্ট্রিমগুলিতে অধ্যায়গুলি এড়ানো (এফআরসি প্রোগ্রামিংয়ের জন্য দরকারী নয়)। 14 অধ্যায়ের মাধ্যমে দরকারী কারণ তারা সাবক্লাসগুলির একটি ভূমিকা পেয়েছে। তবে সাবক্লাস সম্পর্কিত কন্সট্রাক্টর এবং ডেস্ট্রাক্টরদের আরও ভালভাবে বুঝতে তাদের সম্ভবত বইটিতে আরও এগিয়ে যেতে হবে।

আপনার ছাত্রদের অবমূল্যায়ন করবেন না। শিক্ষার্থীরা বইটি পেয়ে, পড়তে, শিখতে এবং অনুশীলন করতে পেরে আনন্দিত; এবং এটি তাদের নিজস্ব সময় গ্রীষ্মে ছিল! এমন অনেক শিক্ষার্থী আছেন যা বুঝতে পারবেন না। তাদের অন্য কোনও দিকে এগিয়ে যাওয়া উচিত; সবাই প্রোগ্রামিং বোঝে না।

বৃহত্তম বাধা ভাষা বা বই নয়; এটি উন্নয়নের পরিবেশ। ভিজ্যুয়াল স্টুডিও এক্সপ্রেস প্রথমবারের ব্যবহারকারীদের কাছে ভয়ঙ্কর হতে পারে। শিক্ষার্থীদের পরিবেশের চেয়ে প্রোগ্রামিংয়ে মনোনিবেশ করার ক্ষেত্রে আপনি মূল্যবান হতে পারেন। তবে প্রোগ্রামাররা নতুন উন্নয়ন সিস্টেমে খাপ খাইয়ে নিতে বেশ ভাল সময় ব্যয় করার কারণে পরিবেশ শেখা মূল্যবান।

শুভকামনা


+1: এখন পর্যন্ত সেরা উত্তর। পাঠ্য পুস্তকের দুর্দান্ত পছন্দ আপনার সাফল্যের জন্য অভিনন্দন।
কেভিন ক্লায়ান

1

আপনি বলছেন যে আপনি তাদের সি ++ শিখিয়ে দিতে চান তবে তাদের কোনও সি কন্সট্রাক্টস শিখিয়ে দিতে চান না, তবে বেশিরভাগ প্রোগ্রামিং কনস্ট্রাক্টগুলি তাদের প্রথমে জানা উচিত যে সমস্ত ভাষার জন্য সাধারণ এবং সি ++ সংস্করণগুলি সিতে অন্তর্ভুক্ত রয়েছে:

  1. এইভাবে আপনি কোনও প্রোগ্রাম তৈরি করেন [int main (..) {রিটার্ন 0; }]। আপনি যে প্রোগ্রামিং পরিবেশের চেষ্টা করতে চান সেগুলির একটি প্রাথমিক ওভারভিউ দিন। তাদের কীভাবে একটি প্রকল্প তৈরি করতে হবে এবং এটি আসলে সংকলন / চালাতে হবে তা জানতে হবে know

  2. এটি একটি পরিবর্তনশীল। চলকগুলি ডেটা (ইনট, চর, ফ্লোট ইত্যাদি) সঞ্চয় করতে পারে।

  3. স্ট্রিংস (সি ++ টি সিনের সাথে ব্যবহার করা সহজ)।

  4. এভাবেই আপনি ডেটা পড়েন এবং লেখেন (cin, cout)। "হ্যালো,% এস!"

  5. শর্তসাপেক্ষে (কম্পিউটারগুলির সিদ্ধান্ত নেওয়া দরকার)।

  6. লুপস (কম্পিউটারগুলি একই কাজ বারবার করতে পারে)। লুপ করার সময় এবং দেখান

এটি প্রতিটি এক ঘন্টা প্রায় দুটি পাঠ গ্রহণ করা উচিত। ব্যবহারিক উপাদানটিতে তারা উল্লেখ করতে পারে এমন নোটগুলির একটি সংক্ষিপ্ত সেট প্রস্তুত নিশ্চিত করুন। আপনি তাদের উজ্জ্বল প্রোগ্রামার বানানোর চেষ্টা করছেন না তাই কনসোল থেকে কীভাবে পড়তে হবে, কাঠামো তৈরি করতে হবে এবং তাদের যা করতে হবে তার সবগুলি উদাহরণ দিন। কেবল ভাষা-সমর্থিত বৈশিষ্ট্যগুলি ব্যবহার করুন, কাস্টম ইউটিলিটি লাইব্রেরি নয়। আপনি কেবল তাদের আরও বিভ্রান্ত করবেন।

আসার সময় থেকে, উদাহরণ দিয়ে নেতৃত্ব দিন এবং তাদের ভাল লেভড কোডের উদাহরণগুলি দেখান। আপনি যে স্টাইলের সাথে সবচেয়ে বেশি স্বাচ্ছন্দ্য বোধ করেন সেগুলির সূচিপত্রগুলি সঠিক, বন্ধনী এবং বন্ধনী হওয়া উচিত। পরিবর্তনশীল নামগুলি অর্থপূর্ণ হওয়া উচিত। আপনি যদি উদাহরণ হিসাবে slালু দেখান তবে তারা শিখবে যে opাল গ্রহণযোগ্য। এটি একটি খারাপ সূচনা পয়েন্ট। ইনডেন্টিং সঠিক হওয়ার গুরুত্বের উপর জোর দিন - আমি দেখতে পেয়েছিলাম যে যখন আমি প্রচুর পরিমাণে তাদের কোডটি ইন্ডিড করে থাকি তখন তারা আরও সহজেই দেখতে পায় যে তারা কোথায় ভুল হচ্ছে। এটি ছিল কারণ তাদের বেশিরভাগ ত্রুটিগুলি অপারেশনের জন্য ভুল সুযোগ ছিল (লুপ / ​​শর্তসাপেক্ষে অপারেশন স্থাপন করা যা বোঝানো হয়নি বা বিপরীত)।

তারপরে ব্যবহারিক কাজের দিকে এগিয়ে যান। কিছু শিখার সর্বোত্তম উপায় হ'ল এটি ভেঙে ফেলা এবং কেন কাজ করা। আপনি নিশ্চিত করতে চাইবেন যে তাদের কোড সংকলন করার জন্য তাদের কাছে সহজেই পরিবেশ ব্যবহারের সুযোগ রয়েছে। আপনার হাতের বাইরে স্ক্রিন শট দিয়ে এটি ডকুমেন্ট করুন।

একটি ভাল উদাহরণ যা আমাকে কিছু ধারণা তৈরি করতে সহায়তা করেছিল তা ছিল কোক মেশিন তৈরি করা:

  • আইটেম এবং মূল্যগুলির একটি মেনু আউটপুট করুন (মেনুটি সংরক্ষণ করা কোনও ব্যবহারকারী-সংজ্ঞায়িত কাঠামোর একটি অ্যারে ছিল C C ++ এ একটি শ্রেণি হতে পারে)। এটি আউটপুট করার জন্য একটি লুপ দরকার।
  • ব্যবহারকারীর নির্বাচনের মধ্যে পড়ুন।
  • ব্যবহারকারীকে অর্থের জন্য জিজ্ঞাসা করুন। তারা কেবল সেন্টগুলিতে মুদ্রার নাম লিখতে পারে (আউসে 1, 5, 10, 20, 50, 100, 200)। অজানা সংজ্ঞা উপেক্ষা করুন। যদিও ব্যবহারকারী পর্যাপ্ত পরিমাণ অর্থ রাখেনি, জিজ্ঞাসা করুন (লুপগুলি)।
  • সর্বনিম্ন সংখ্যক মুদ্রা প্রদান করে প্রয়োজনীয় পরিবর্তনের (মডুলো বিভাগ) গণনা করুন। আউটপুটটি স্ক্রিনে মুদ্রণ করুন।
  • পরবর্তী ব্যবহারকারীর জন্য অপেক্ষা করুন।

এর পরে আপনি সি ++ কনস্ট্রাক্টসে চলে যেতে পারেন; তারা কমপক্ষে কোনও প্রাথমিক প্রোগ্রাম তৈরি করার আগে আপনি খুব বেশি ডুব দিতে চান না।

এবং সর্বোপরি, প্রশ্নে উত্সর্গ করার জন্য প্রচুর অতিরিক্ত সময় এবং ধৈর্য রাখুন। অনেকগুলি থাকবে এবং তাদের বেশিরভাগই আপনাকে সঙ্কুচিত করে তুলবে কারণ এগুলি এত তুচ্ছ যে উত্তরটি আপনার কাছে সুস্পষ্ট।


1

আমি মনে করি আপনার C ++ দৃষ্টিকোণ ("সি ++ হ্যালো ওয়ার্ল্ড") থেকে জিনিসগুলি শেখানো উচিত নয়, তবে সমস্যা ডোমেন থেকে - এই ক্ষেত্রে, রোবোটিক্স - দৃষ্টিকোণ। সুতরাং, আপনার হ্যালো ওয়ার্ল্ডটি নেতৃত্বের জ্বলজ্বলে বা মোটর চালাচ্ছে।

অবশ্যই আপনি প্রতিটি ছোট ছোট রোবোটিক্স টাস্ককে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে যুক্ত?

আমার হিসাবে, আমি পেশাদার প্রোগ্রামার নই, এবং জাভা, সি ++ এবং পাইথন শিখতে চেষ্টা করেছি। আমার যখন সত্যিকারের (সাধারণ) সমস্যা সমাধানের সমস্যা হয়েছিল তখন আমি সত্যিই কিছু (পাইথন) অর্জন করতে শুরু করি। এটি আমাকে ঠিক এই মুহুর্তে নিয়ে গিয়েছিল, ভাষাটিই ঘটনামূলক বাস্তবায়নের বিশদটিতে অতিরিক্ত মনোযোগ এড়িয়ে যায়।

সুতরাং আমি পরামর্শ দেব: কোনও ভাষার ম্যানুয়াল পড়বেন না, বরং আপনার পছন্দমতো ভাষা দিয়ে জিনিসগুলি শিখুন। আমি মনে করি এটিই মানুষকে অনুপ্রাণিত করে।


0

আমি কঠোর সি ++ পড়াতাম। আপনি কীভাবে জানেন যে আপনি যখন প্রিন্টফ লিখবেন এবং এটিকে ছোট্ট প্যারামগুলিতে দেন বা ভুল টাইপের কিছুতে অদ্ভুত কিছু ঘটে? এবং আপনি যদি অবৈধ পয়েন্টার ব্যবহার করেন তবে খারাপ কিছু ঘটতে পারে? এটি শেখাবেন না

প্রথম দিন থেকে আমি কীভাবে রেফারেন্স, এসটিএল ব্যবহার করব এবং শিখাব যে আপনি পয়েন্টার ব্যবহারের জন্য মার্কস হারাবেন। স্মার্ট পয়েন্টারগুলিও শেখাবেন না। আমি যখন লক্ষ্য করি কেবলমাত্র আমি যখন পয়েন্টার ব্যবহার করি তখনই আমি যখন জিইউআই করি এবং অবজেক্টগুলি (কোনও চিত্রের বাক্সের মতো) অবশ্যই উপস্থিত থাকে এবং একটি বৈধ চিত্র বা নাল হতে পারে। কনসোল প্রোগ্রামিংয়ের জন্য আমি দীর্ঘ সময় পয়েন্টার (স্মার্ট বা কাঁচা) ব্যবহার করি নি।

সুতরাং সংক্ষেপে তাদের এমন কিছু শিখবেন না যা তাদের ঝামেলা দিতে পারে। আইওস্ট্রিম, স্ট্রোক শিখান, তাদের বলুন তারা টাইপকাস্টেও চিহ্ন হারিয়েছে এবং নকশা শেখানোর চেষ্টা করবেন না। আপনি চান না যে কেউ asonতুযুক্ত পেশাদার হয়ে উঠুক


0

এটি কোনও সি ++ লেকচার সিরিজ নয়, তবে রিচার্ড বাকল্যান্ডের সিওএমপি 1917 সি-তে প্রোগ্রামিংয়ের উপর একটি দুর্দান্তভাবে সম্পন্ন লেকচার সিরিজ ( সিএমপি 1927 , ডেটা স্ট্রাকচারের সাথে অনুসরণ করা )।

আমার নিজের মতামত, নতুন শিক্ষার্থীদের জন্য সি ++ অনেক জটিলতা, তবে সি ওয়ার্ল্ডস সহজতর এবং সিস্টেম প্রোগ্রামিংয়ে একটি ভাল ভিত্তি সরবরাহ করে যে নতুন সি ++ প্রোগ্রামারগুলির প্রায়শই ঘাটতি হয় না।


0

আমি বয়লারপ্লেট কোডের উল্লেখযোগ্য অংশগুলি দিয়ে শুরু করব, তাদের সাথে সাথে প্রোগ্রামিংয়ের সাথে "শীঘ্রই কিছু করতে" সহায়তা করব এবং সময়ের সাথে কীভাবে জিনিসগুলি কাজ করে সে সম্পর্কে তাদের উপলব্ধিটি পরিমার্জন করব। একটি এলইডি পলক তৈরি করতে তাদের সি ++ এর সমস্ত জটিলতা বোঝার বা বোঝার দরকার নেই। তাদের কেবল জানতে হবে "আপনি যদি এই কোডটি সেখানে রাখেন তবে এটি এলইডি জ্বলজ্বলে করে দেবে" " এবং তারপরে "আরে, এখন একটি লুপ কী তা নিয়ে কথা বলতে দাও, আপনি যদি একটি লুপ লিখেন, আপনি 50 টি লাইন কোড না লিখে 50 বার এলইডি জ্বলতে পারেন, এটি কি দুর্দান্ত নয়?" এখন শর্তসাপেক্ষ সম্পর্কে কথা বলা যাক, যখন ব্যবহারকারীরা কন্ট্রোল বাক্সে বোতাম একটি টিপবে, আমরা একটি পতাকা বাড়াতে বায়ুসংস্থান সক্রিয় করতে চাই, আমরা কীভাবে কোডটি যুক্ত করতে চাই তা এখানে। বা যদি আমাদের কন্ট্রোল বাক্সে স্যুইচ 2 চালু হয় তবে আমরা এগিয়ে যাওয়ার পরিবর্তে ড্রিল মোটরটি বিপরীতে চালিত করি।

আপনি যদি আগ্রহী তাদের সমস্যাগুলি সমাধান করার জন্য যদি তাদের "যথেষ্ট পর্যাপ্ত" শেখানোর উপর বিষয়গুলিকে কেন্দ্রীভূত করে রাখেন তবে এটি জিনিসগুলিকে অনেক কম অপ্রতিরোধ্য এবং আরও সহজলভ্য করে তুলবে। যদি তারা সত্যিই আগ্রহী হয় এবং জটিলতাগুলি বুঝতে চায় তবে তারা সম্ভবত ফিরে যেতে পারেন এবং স্থানীয় জিসিতে প্রোগ্রামিং বা গ্রীষ্মের স্কুল কোর্স নিয়ে একটি বিস্তৃত বই পড়বেন read

তাদের রোবোটের "তারা নিয়ন্ত্রণ করতে সক্ষম হতে চাই "গুলির একটি তালিকা তৈরি করুন এবং প্রত্যেককে একটি পাঠে পরিণত করুন ... তাদের জানা সবচেয়ে কম কী প্রয়োজন ...?

  • কোনও স্যুইচ যদি কোনও নির্দিষ্ট সেটিংয়ে থাকে তবে কিছু "শীতল দেখায়" করবেন?
  • একটি বায়ুসংক্রান্ত ভালভ খুলতে বা বন্ধ করতে বলুন (যেমন: একটি গ্রাহক সংযুক্তি)?
  • ড্রিল মোটর চালু এবং বন্ধ (ড্রাইভেট্রেনের জন্য)?
  • কোনও বাধা সনাক্তকরণ সেন্সর সক্রিয় করা থাকলে রোবট পরিবর্তন নির্দেশাবলী তৈরি?
  • 2 চাকা বনাম 4 চাকা ড্রাইভ মোডের মধ্যে রোবট স্যুইচ করবেন?
  • জয়স্টিক সংবেদনশীলতা সামঞ্জস্য?
  • প্রভৃতি

আমি প্রিন্টফের উপর দিয়ে কাউটকে শিখিয়ে দেব, যেমন ফর্ম্যাট স্পেসিফায়ারগুলি খুব সহজেই মেশানো যায় এবং একটি ভুল স্পেসিফায়ার হ'ল আপনার প্রোগ্রামটি ক্রাশ করার জন্য একটি স্বয়ংক্রিয় রেসিপি because তেমনি, ভেক্টর মেমরি পরিচালনার কিছু জটিলতাগুলিকে অবিচ্ছিন্ন করে দেয়। কীভাবে জিনিসগুলি কাজ করে, বা এসটিএল লাইব্রেরি কী তা নিয়ে প্রতিটি বিশদ সম্পর্কে চিন্তা করবেন না, এক্স সম্পাদন করার জন্য তাদের কমপক্ষে জানতে হবে (যার জন্য একটি এসটিএল লাইব্রেরি ডেটাস্ট্রাক্ট ব্যবহারের প্রয়োজন হতে পারে, উদাহরণস্বরূপ)


0

ডিজিটেল এবং ডিিটেল দ্বারা সি ++ প্রোগ্রাম কীভাবে ব্যবহার করুন । আমার মতে দুর্দান্ত পাঠ্যপুস্তক।

মনে হচ্ছে আপনি কীভাবে প্রোগ্রাম করবেন এবং তারপরে একই সাথে কিছু উন্নত স্তরে তাদের প্রোগ্রাম করবেন কীভাবে শিখতে চাইছেন v আপনি যদি তাদের কিছু বানর দেওয়ার আশা করেন তবে বানর কোডিং স্নিপেটগুলি ডাব্লু / ও ও বোঝার জন্য ব্যর্থ হচ্ছেন যে আপনি ব্যর্থ হয়ে পড়েছেন।

একটি শিক্ষানবিশ শ্রেণীর জন্য এসটিএল থেকে দূরে থাকুন।

আপনার রোবটটির জন্য ইতিমধ্যে যদি আপনার একটি কোডিং সমাধান থাকে - বা এটির মতো দেখতে খুব সুন্দর আইডিয়া থাকে তবে আপনি রোবটের কোডিংয়ের কার্যগুলি পাঠ্যপুস্তকের পাঠগুলি "ম্যাপ" করতে পারেন। তবে পাঠ্যপুস্তকটি শিখতে দাও।

আপনি যদি জোর করে ফিডিং কোডিং দিয়ে থাকেন, শিক্ষার্থীদের খুব সংকীর্ণ পাঠদান এবং ভাষার সংস্পর্শে নিয়ে আসেন তবে আমি মনে করি আপনার লেখার কোডের মহাসাগরটি আরও বড়ো হয়ে উঠছে, এটি কেবল কুকুরের প্যাডেল শিখার মতো হবে এবং আপনি ডুবে যাবেন কারণ বাস্তব সাঁতার দরকার.

এটি "তারা কি কাউট বা প্রিন্টফ শিখতে হবে?" এর প্রশ্ন নয় প্রদত্ত রোবট প্রোগ্রামিং কার্যগুলির সমাধান করার জন্য কোড কীভাবে লিখবেন সে সম্পর্কে অন্তর্দৃষ্টি থাকার জন্য এটি যথেষ্ট শেখার একটি প্রশ্ন।

যদি এটি একটি পড়ার দায়িত্ব ছিল তবে ফলাফলগুলি কী হত যদি তারা জানত যে সমস্ত সাধারণ বিষয়-ক্রিয়া বাক্য এবং আপনি জানেন কেবলমাত্র অর্ধশত শব্দভাণ্ডারের জন্য প্রয়োজনীয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.