[Powered by Google Translate] [সপ্তাহ 6, ক্রমাগত] [ডেভিড জে Malan] [হার্ভার্ড বিশ্ববিদ্যালয়] [এটি CS50.] [CS50.TV] এটি CS50 এবং এই সপ্তাহে 6 শেষে. সুতরাং CS50x, হার্ভার্ড এর প্রথম edX উদ্যোগের সাথে জড়িত কোর্স এক প্রকৃতপক্ষে আত্মপ্রকাশ এই গত সোমবার. আপনি যদি ইন্টারনেট কি অন্যদের একটি আভাস পেতে চাই হয় এখন অনুসরণ সহ, আপনি x.cs50.net যাও প্রধান পারেন. আপনি যে edx.org প্রয়োজনীয় জায়গা পুনর্চালনা করবে, যা ছিল যেখানে এখন এই এবং MIT এবং বার্কলে থেকে অন্যান্য কোর্স বাস. আপনি একটি অ্যাকাউন্টের জন্য সাইন আপ করতে হবে; আপনি যে উপাদান মূলত একই পাবেন হিসাবে আপনি এই সেমিস্টারে ভর্তি করা হয় কয়েক সপ্তাহ বিলম্বিত যদ্যপি, করেছি, হিসাবে আমরা সবকিছু প্রস্তুত. কিন্তু কি CS50x মধ্যে ছাত্র এখন দেখতে হবে অত্যন্ত এই মত একটি ইন্টারফেস. উদাহরণস্বরূপ, এই, সমস্যা হয় Zamyla সেট 0 walkthrough জন্য নেতৃস্থানীয়. যাও edx.org লগ ইন করার পরে, একটি CS50x ছাত্র জিনিষ অসুস্থ শিশুর মৃতদেহ উদ্ধার সোমবার জন্য বক্তৃতা,: আপনি একটি কোর্স দেখতে চান আশা বুধবার, বিভিন্ন হাফপ্যান্ট, সমস্যা সেট, এগিয়ে যান, বক্তৃতা জন্য প্রতিটি PDF ফাইলের শেষে. উপরন্তু, হিসাবে আপনি এখানে দেখতে, মেশিন অনুবাদ চীনা, জাপানি, স্প্যানিশ, ইতালিয় মধ্যে ইংরেজি প্রতিলিখন, এবং অন্যান্য ভাষাসমূহ আভা যে অবশ্যই হতে হবে অপূর্ণ হিসাবে আমরা তাদের আউট programmatically গুটানো কিছু নামক একটি API-এর ব্যবহার, Google থেকে বা অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস, যা আমাদের ইংরেজি এইসব অন্য ভাষায় রুপান্তর করতে পারবেন. কিন্তু ধন্যবাদ কিছু শত-প্লাস স্বেচ্ছাসেবকদের বিস্ময়কর আত্মা যাও, ইন্টারনেট র্যান্ডম যারা কল্যাণকামী আছে সংযুক্ত হতে দেওয়া এই প্রকল্পে, আমরা ধীরে ধীরে হবে যারা অনুবাদের মান উন্নত দ্বারা মানুষের ভুল হচ্ছে যে আমাদের কম্পিউটার করেছেন সঠিক. সুতরাং এটি সক্রিয় আমরা আরও কিছু ছাত্র সোমবার ছিল দেখা তুলনায় আমরা প্রাথমিকভাবে প্রত্যাশিত. আসলে এখন, CS50x হয়েছে 100,000 বাড়ীতে অনুসরণ বরাবর লেগেছে. বুঝতে আপনি সমস্ত অংশ এই কম্পিউটার বিজ্ঞান মধ্যে এই কোর্স করার উদ্বোধনী বর্গ শিক্ষা সাধারণভাবে, আরো বিস্তৃতভাবে, প্রবেশযোগ্য. এবং বাস্তবতা এখন এই বিশাল অনলাইন কোর্স কিছু,, তারা এই সব খুব উচ্চ সংখ্যার সাথে, শুরু হিসাবে আমরা মনে আছে এখানে করাতে হবে. কিন্তু লক্ষ্য, পরিণামে CS50x জন্য, এটা সত্যিই সম্ভব হিসাবে ফিনিস লাইন হিসাবে অনেক মানুষ জন. নকশা দ্বারা, CS50x এই গত সোমবার থেকে দেওয়া হবে না সমস্ত এপ্রিল 15, 2013 মাধ্যমে উপায়, যাতে লোকেরা যারা স্কুল অঙ্গীকার অন্যত্র আছে, কাজ, পরিবার, অন্যান্য দ্বন্দ্ব এবং মত, একটি বিট আরো নমনীয়তা আছে যা দিয়ে এই কোর্সের মধ্যে আকর্ষণীয় যাও, যা কথাই যথেষ্ট, হয় বেশ ambitiously কাজ যদি শুধুমাত্র উপর শুধুমাত্র একটি স্বাভাবিক সেমিস্টারে সময় তিন মাস অবশ্যই. কিন্তু এই ছাত্র একই সমস্যা সেট, মোকাবেলা করা হবে একই কন্টেন্ট দেখছেন, একই হাফপ্যান্ট এবং ভালো ব্যবহার করতে পারছে. তাই বুঝতে পারি যে আমরা এই সব একসঙ্গে হয় সত্যিই. এবং CS50x শেষ লক্ষ্যের এক মাত্র হিসাবে অনেক লোকেরা পেতে হয় না যাও ফিনিস লাইন এবং তাদের এই কম্পিউটার বিজ্ঞান newfound বোঝার দেত্তয়া এবং প্রোগ্রামিং কিন্তু তাদের এই অভিজ্ঞতা ভাগ করা আছে. 50 সংজ্ঞা ক্যাম্পাস উপর বৈশিষ্ট হচ্ছে, আমরা আশা করি, ভাল বা খারাপ হয়েছে জন্য সাম্প্রদায়িক অভিজ্ঞতা এই সাজানোর, কখনও কখনও করেনি,, কিন্তু সরকার এই দুর্দশাগ্রস্ত মানুষদের বাম এবং ডান চালু হচ্ছে, এবং অফিস এবং hackathon এবং ন্যায্য. এটা একটু কঠিন ভাবেন অনলাইন সঙ্গে ব্যক্তির মধ্যে যে না, কিন্তু CS50x এপ্রিল কখনো প্রথম CS50 উত্পন্ন দ্রব্যাদির আন্তর্জাতিক প্রদর্শনী সঙ্গে নিষ্পত্তি করা হবে, যা একটি পরিষ্কার ধারণা আমাদের অনলাইন অভিযোজন করা যেখানে সব ছাত্র এই হাজার হাজার 1 জমা দেওয়ার আমন্ত্রণ জানানো হবে - 2 মিনিটের ভিডিও যাও, হয় তাদের চূড়ান্ত তাদের প্রকল্প বা ভিডিওর স্ক্রীনকাস্ট হ্যালো waving এবং কথা বলা তাদের প্রকল্প সম্পর্কে এবং এটি demoing, আপনার পূর্বসুরীদের মত অনেক ক্যাম্পাস উপর কাজ আছে এখানে পরিষ্কার মধ্যে, যাতে সেমেস্ত্র এর শেষে, আশা যাও একটি বিশ্বব্যাপী প্রদর্শনী আছে কত যে ভালো চূড়ান্ত প্রকল্প CS50x ছাত্র ', যা এই awaits ডিসেম্বর আপনি এখানে ক্যাম্পাস উপর. মাস আসা মধ্যে যে তাই আরো. 100,000 ছাত্র সঙ্গে যদিও, কয়েক সি এ এস আরো জন্য প্রয়োজন আসে. প্রদত্ত যে আপনি না লেজ গন্গনে এখানে হয় এবং CS50 গ্রহণ কয়েক সপ্তাহের মধ্যে edX উপর লোকেরা এই উপাদান এর মুক্তির অগ্রিম, আমরা এই উদ্যোগ আমাদের নিজস্ব ছাত্র হিসাবে সম্ভব হিসাবে অনেক কাজে নিযুক্ত করা যেতে চাই বুঝতে পারছি, উভয় সময় সেমেস্ত্র হিসাবে ভাল হিসাবে এই শীতে এবং এই আসছে বসন্ত. সুতরাং যদি আপনি CS50x জড়িত পেতে চাই, বিশেষত CS50x আলোচনা, আলোচনা CS50 এর edX সংস্করণ যোগ, যা আপনাকে অনেক ক্যাম্পাস হয়েছে ব্যবহার করে, অনলাইন বুলেটিন বোর্ড, যে URL-এ মাথা না দয়া করে, আমাদেরকে জানি আপনি কে, কারণ আমরা ছাত্র এবং কর্মীদের একটি দল এবং অনুষদ বিল্ড আপ সমভাবে ভালোবাসতাম ক্যাম্পাস উপর কেবল যারা বাজানো হয় এবং সাহায্য করার পাশাপাশি আউট. এবং যখন তারা একটি প্রশ্ন যে এর পরিচিত তা দেখতে, আপনি একজন ছাত্র কিছু বাগ রিপোর্ট কোথাও কিছু দেশে ইন্টারনেট আউট আছে শুনতে, যে রিং বাজান এবং খুব কারণ ছিল যে আপনি একই সমস্যা আপনার ঘ-হলের কিছু সময় আগে আশা, তাহলে আপনি এবং আপনার নিজের অভিজ্ঞতা ভাগ ঐকতান পারেন. তাই আপনি যদি চান অংশগ্রহণ করবেন না দয়া করে. হার্ভার্ড এ কম্পিউটার বিজ্ঞান কোর্সের একটি ঐতিহ্য কিছু আছে, CS50 কিছু জামাকাপড়, কিছু কাপড়, যে অহংকার করে আপনি পরতে পারেন থাকার তাদের মধ্যে, সেমিস্টারে এর শেষে, বলছে বেশ গর্বের যে আপনি CS50 সমাপ্ত এবং CS50 এবং ভালো নেন, এবং আমরা সর্বদা ছাত্র জড়িত করা চেষ্টা এই প্রক্রিয়াটি যতটা সম্ভব, যেখানে আমরা আমন্ত্রণ, সেমিস্টারে এই সময়, ছাত্র ডিজাইন জমা দিতে যাও ফটোশপ ব্যবহার করে, বা পছন্দের টুল যাই হোক না কেন আপনি ব্যবহার করতে চান যদি আপনি একজন ডিজাইনার, T-শার্ট এবং স্যুইট শার্টসে জন্য ডিজাইন জমা দিন এবং umbrellas কুকুরদের জন্য এবং সামান্য bandanas এখন আমরা আছে এবং পছন্দ করেন. এবং তারপর সবকিছু হয় - বিজয়ীদের প্রতি বছর পরে বিকশিত উপর store.cs50.net এ কোর্স এর ওয়েবসাইট. খরচ সেখানে এ সবকিছু, কিন্তু বিক্রি ওয়েবসাইট শুধু নিজেই সঞ্চালিত হয় এবং মানুষ তার রং এবং ডিজাইন যা তারা পছন্দ করতে পারবেন. তাই আমি ভাবলাম আমরা শুধু গত বছরের ডিজাইন কিছু ভাগ চাই যে ওয়েবসাইটে ছিল এই এখানে এক ছাড়াও, যা একটি বার্ষিক ঐতিহ্য. "প্রত্যেক দিন আমি Faultn করছি Seg" ছিল জমার শেষ এক বছর, যা এখনও এলামনাই জন্য উপলব্ধ আছে. আমরা এই এক ছিল, "CS50, 1989 সালে স্থাপিত." আমাদের একজন Bowdens র, রব, খুবই জনপ্রিয় ছিল গত বছর. "টিম Bowden" ছিল জন্মগ্রহণ করেন, এই নকশা শীর্ষ বিক্রেতাদের মধ্যে জমা ছিল,. এই হিসাবে ছিল এখানে এক. অনেকে যাও বিক্রয় লগ অনুযায়ী "Bowden জ্বর" ছিল. বুঝি যে এখন যে আপনার নকশা আছে, পারে আপ ইন্টারনেট. এই বিষয়ে আরও বিস্তারিত পরের সমস্যা আসতে সেট করে. আরও একটি হাতিয়ার: আপনি কিছু এক্সপোজার করেছি আশা ছিল এবং এখন কিছু GDB সঙ্গে হাত অন অভিজ্ঞতা, যা অবশ্যই,, একটি ডিবাগার এবং আপনি নিপূণভাবে করতে পারবেন একটি মোটামুটি নিম্ন পর্যায়ে আপনার প্রোগ্রাম, করছেন কি ধরণের জিনিষ? কি GDB আপনাকে কি? হাঁ? সম্পর্কে কিছু দিন. [ছাত্র উত্তর, অপাচ্য] গুড. ফাংশন মধ্যে ধাপ, তাই আপনি চালানোর টাইপ আছে কি না এবং তার সম্পূর্ণতা মাধ্যমে প্রোগ্রাম ঘা, আছে মুদ্রণ স্ট্যান্ডার্ড আউপুট জিনিষ আউট. বরং, আপনি এটি লাইন মাধ্যমে লাইন দ্বারা, পইঠা হয় পরের টাইপ করতে পারেন যাও লাইন বা পদক্ষেপ একটি ফাংশন করে, সাধারণত এক আকর্ষণীয় যে আপনি লিখেছেন দ্বারা পাতিপাতি যান. কি GDB জন্য আপনাকে কি? হাঁ? [ছাত্র উত্তর, অপাচ্য] ভেরিয়েবল মুদ্রণ করুন. সুতরাং যদি আপনি আপনার প্রোগ্রামের ভিতর একটু অন্তর্দর্শন করতে চান ছাড়া সব জায়গা উপর printf বিবৃতি লেখার যাও রিসোর্ট আছে, আপনি শুধু একটি পরিবর্তনশীল বা মুদ্রণ একটি পরিবর্তনশীল প্রদর্শন করতে পারে. আপনি আর কি GDB মত একটি ডিবাগার করতে পারেন? [ছাত্র উত্তর, অপাচ্য] ঠিক. আপনি ব্রেকপয়েন্ট সেট করতে পারেন; আপনি বিরতি মৃত্যুদন্ড বলতে পারেন এ মূল ক্রিয়া বা foo বিন্যাস ফাংশন. আপনি লাইন 123 এ বিরতি মৃত্যুদন্ড বলতে পারেন. এবং ব্রেকপয়েন্ট হয় সত্যিই একটি শক্তিশালী কৌশল কারণ যদি আপনি যেখানে আপনার সমস্যার সাধারণ অর্থে আছে সম্ভবত, তাহলে সময় প্রোগ্রাম এর মাধ্যমে সম্পূর্ণতা পদবিন্যাস অপব্যয় না. আপনি মূলত তিড়িং লাফ অধিকার আছে এবং তারপর টাইপ শুরু করতে পারেন - ধাপটি করা যাবে অথবা পরের অথবা ভালো সঙ্গে এটি মাধ্যমে পদবিন্যাস. কিন্তু GDB ভালো কিছু সঙ্গে ধরা হয় যে আপনি এটি করতে সাহায্য করে, মানবিক, আপনার সমস্যা এবং আপনার বাগ খুঁজে. এটা আপনার জন্য অগত্যা না পাওয়া এত তাদের. সুতরাং আমরা অন্যান্য দিন style50 চালু করা, যা একটি সংক্ষিপ্ত কমান্ড লাইন টুল যে আপনার কোড একটি সামান্য বিট আরো পরিচ্ছন্নভাবে তুলনায় আপনি stylize চেষ্টা করে, মানবিক, কাজ থাকতে পারে. কিন্তু যে খুব,, এটা সত্যিই একটা নান্দনিক জিনিস. কিন্তু এটি সক্রিয় আউট এই অন্যান্য টুল নামক Valgrind যে একটি ছোট আরো ব্যবহার গোপনীয় আছে. তার আউটপুট হল প্রথম নজরে নৃশংসভাবে রহস্যপূর্ণ. কিন্তু wonderfully দরকারী, বিশেষ করে এখন যে আমরা এই শব্দটি অংশ করেন যেখানে আপনি malloc এবং গতিশীল মেমরি বরাদ্দকরণের ব্যবহার শুরু করছেন. থিংস দ্রুত সত্যিই সত্যিই, ভুল হয়ে যেতে পারে. যেহেতু আপনার মেমরি মুক্ত করতে ভুলবেন না, অথবা আপনি কিছু NULL পয়েন্টার dereference, অথবা আপনি কিছু আবর্জনা পয়েন্টার dereference, কি উপসর্গ সাধারণত যে ফলাফল? ফল্ট Seg. এবং আপনি এই কিলোবাইট বা মেগাবাইট কিছু সংখ্যক কোর ফাইল পেতে যে আপনার প্রোগ্রাম এর মেমরি রাষ্ট্র প্রতিনিধিত্ব করে যখন এটি ক্র্যাশ, কিন্তু শেষ পর্যন্ত আপনার প্রোগ্রাম ফল্ট seg, সেগমেন্টেশন ফল্ট, যার মানে খারাপ কিছু ঘটেছে প্রায় সবসময় সংক্রান্ত একটি মেমরি সংক্রান্ত যে আপনি কোথাও ভুল হয়েছে. সুতরাং Valgrind সাহায্য আপনি ভালো জিনিষ খুঁজে পেতে. এটা GDB মত একটি টুল যা আপনি চালানো,, পরে আপনি আপনার প্রোগ্রাম কম্পাইল করেছি, কিন্তু বদলে সরাসরি আপনার প্রোগ্রাম চালানো, আপনি চালানোর Valgrind এবং এটি আপনাকে আপনার প্রোগ্রাম পাস, আপনি যেমন GDB না. এখন, ব্যবহার, শ্রেষ্ঠ ধরনের আউটপুট পেতে, একটু দীর্ঘ হয়, তাই এর পর্দায় উপরে ডানদিকে সেখানে আপনি Valgrind-v দেখতে পাবেন. "V" লেখা হলে প্রায় সর্বজনীন ভার্বোস মানে যখন আপনি একটি Linux কম্পিউটারে প্রোগ্রাম ব্যবহার করছেন. সুতরাং মানে আপনি ডিফল্ট প্রতাপ তুলনায় আরো তথ্য থুতু আউট. "-. = পূর্ণ লিক চেক" এই মাত্র সব সম্ভব হয় মেমরি তথ্য ফাঁসের জন্য চেক বলছে, ভুল যে আমি তৈরি হয়ে থাকতে পারে. এটি খুব,, একটি Linux প্রোগ্রাম সঙ্গে সাধারণ উদাহরণ. সাধারনত, যদি আপনি একটি কমান্ড লাইন আর্গুমেন্ট আছে যে একটি "সুইচ", যে প্রোগ্রাম এর আচরণ পরিবর্তন অনুমিত, এবং এর যে এটা একটা একক চিঠি, এর সাথে-v, কিন্তু যদি যে সুইচ এর, ঠিক দ্বারা প্রোগ্রামার নকশা, একটি পূর্ণ শব্দ শব্দ বা ধারাবাহিক, হয় কমান্ড লাইন আর্গুমেন্ট সঙ্গে শুরু হয় -. এগুলো হল মানব নিয়মাবলী, কিন্তু আপনি তাদের ক্রমবর্ধমান দেখতে পাবেন. এবং তারপর পরিশেষে,, "a.out" এই উদাহরণে নির্দিষ্ট প্রোগ্রামের জন্য অবাধ নাম. এবং এখানে কিছু প্রতিনিধির আউটপুট. আগে আমরা কি মানে হতে পারে যে তাকান, আমাকে একটি কোড এখানে বেশী স্নিপেট নিয়ে যান. এবং আমার এই পথ আউট সরানো যাক, শীঘ্রই, এবং এর memory.c যাক, যা এই সংক্ষিপ্ত এখানে উদাহরণ কটাক্ষপাত করা. তাই এই প্রোগ্রামে, আমাকে ফাংশন এবং প্রশ্নের উপর জুমইন. আমরা একটি ফাংশন প্রধান যে একটা ফাংশন কল, চ আছে, এবং তারপর কি চ যাও সামান্য কারিগরী ইংরেজি, কি এগিয়ে আছে? কি চ এগিয়ে যাও না? আমি কিভাবে আমার সঙ্গে লাইন 20, এবং শুরু তারকা এর অবস্থান না ব্যাপার না করব, কিন্তু আমি হতে শেষ বক্তৃতা সঙ্গে সামঞ্জস্যপূর্ণ পাবেন. কি লাইন 20 জন্য আমাদের কি? বাম দিকে. আমরা এটি আরও নিচে বিরতি পাবেন. * Int x: কি যে আছে না? ঠিক আছে. এটি একটি পয়েন্টার এর প্রকাশক, এবং এখন এর আরও প্রযুক্তিগত হস্তক্ষেপ না করা. কি, মানে খুব concretely, একটি পয়েন্টার ডিক্লেয়ার? অন্য কেউ? হাঁ? [ছাত্র উত্তর, অপাচ্য] খুব বেশী দূরে না. সুতরাং আপনি সমান সাইন ডান দিকে পড়ি. শুধুমাত্র বাম এর ফোকাস যাক শুধুমাত্র int x এর উপর *,. এই জন্য একটি পয়েন্টার "ঘোষণা", কিন্তু এখন let এর গভীর যে সংজ্ঞা মধ্যে আকর্ষণীয়. কি concretely, টেকনিক্যালি কি বোঝাতে চেয়েছেন? হাঁ? [ছাত্র উত্তর, অপাচ্য] ঠিক আছে. এটা মেমরির মধ্যে একটি ঠিকানা সংরক্ষণের প্রস্তুতি এর. গুড. এবং এর এই আরও এক ধাপ দেওয়া; এটি একটি পরিবর্তনশীল জন্য, x, যে 32 বিট এর প্রকাশক. এবং আমি জানি এটা 32 বিট কারণ -? এটা কারণ এটা কোন int, কারণ এটি এই ক্ষেত্রে একটি পয়েন্টার না. কাকতালীয় যে এটা এক কোন int এবং একই সঙ্গে, কিন্তু এটা সত্য যে তারা আছে এই একটি পয়েন্টার মানে আছে এবং সঙ্গে অনেকগুলি কম্পিউটার হিসাবে প্রয়োগ মধ্যে,, কিন্তু সব না, পয়েন্টার হয় 32 বিট. আরো সর্বশেষ Macs-, সর্বশেষ পিসি মত আধুনিক হার্ডওয়্যার, আপনি 64 বিট পয়েন্টার নাও থাকতে পারে, কিন্তু যন্ত্র, এই জিনিষ 32 বিট. সুতরাং আমরা যে প্রমিত করব. আরো concretely, বিবরণ নিম্নরূপ যায়: আমরা একটি পয়েন্টার "ঘোষণা"; কি যে মানে? আমরা একটি মেমরি ঠিকানা সংরক্ষণ প্রস্তুত. এর অর্থ কি? আমরা একটি পরিবর্তনশীল তথাকথিত x লাগে যে 32 বিট তৈরি যে শীঘ্রই একটি পূর্ণসংখ্যা ঠিকানা সংরক্ষণ করবে. এবং যে সম্ভবত সম্পর্কে সুনির্দিষ্ট হিসাবে হিসাবে আমরা পেতে পারেন. এটা অগ্রগতিশীল বিশ্বের সরলীকরণ মাত্র একটি পয়েন্টার নামক এক্স ডিক্লেয়ার বলতে সূক্ষ্ম. একটি পয়েন্টার, ডিক্লেয়ার কিন্তু বুঝতে এবং কি আসলে যাচ্ছে বুঝতে এমনকি শুধু যারা কয়েক অক্ষর. এখন, এই কাজ প্রায় একটু সহজ, যদিও এটি একটি লম্বা অভিব্যক্তি. কি, তাই এই কাজ করা হয়, যে এখন হাইলাইট এর: "malloc (10 * sizeof (int-));" হ্যাঁ? [ছাত্র উত্তর, অপাচ্য] গুড. এবং আমি এটা আছে নেব. এটা দশ ইন্টিজার এর জন্য মেমরি বণ্টন তাল. এবং এখন এর সামান্য গভীর মধ্যে আকর্ষণীয় দিন; এটি দশ পূর্ণসংখ্যার জন্য মেমরি বণ্টন এর বেশ খানিকটা. কি হয় তারপর malloc ফিরে? যে খণ্ড ঠিকানা, বা, আরো concretely, যে অঞ্চলে প্রথম বাইট এর ঠিকানা. কিভাবে তাহলে আমি, প্রোগ্রামার, জানতে যেখানে মেমরি শেষ যে তাল? আমি জানি যে এর সংলগ্ন. সংজ্ঞা দ্বারা Malloc,, একটি মেমরি সংলগ্ন অঞ্চলে আপনাকে দিতে হবে. এটি কোনো ফাঁক ছিল না. আপনি যে তাল প্রতি বাইট অ্যাক্সেস আছে, ফিরে পশ্চাতে পশ্চাতে, কিন্তু কিভাবে আমি যেখানে মেমরি এই অঞ্চলে শেষ হয় জানেন? আপনি যখন malloc ব্যবহার? [ছাত্র উত্তর, অপাচ্য] গুড. আপনি করবেন না. আপনি মনে আছে. আমি যে আমি মূল্য 10 ব্যবহৃত স্মরণে রাখতে হবে, এবং আমি কাজ আছে যে এখানে না এমনকি মনে হয় না. কিন্তু দায়িত্ব সম্পর্কে সম্পূর্ণরূপে হয়. Strlen, যা আমরা স্ট্রিং জন্য হত্তয়া করেছেন সামান্য আস্থাশীল, কারণ \ 0 থাকার এই প্রথার কেবল কাজ করে অথবা এই বিশেষ nul অক্ষর, একটি পংক্তির শেষে NUL,. মাত্র মেমরি নির্বিচারে অংশ জন্য রাখা না. এটা আপনার উপর. লাইন 20 অতএব,, মেমরির একটি থোক বরাদ্দ যে দশ পূর্ণসংখ্যার সঞ্চয়, এবং এটি প্রথম বাইট ঠিকানা সঞ্চয় করতে পারেন পরিবর্তনশীল নামক এক্স মেমরির যে তাল. অতএব, যা একটি পয়েন্টার. লাইন 21 তাই দুর্ভাগ্যবশত,, ছিল একটি ভুল. কিন্তু প্রথম কি, এরকম হয়? এটি অবস্থান 10, 0 সূচীবদ্ধ এ এর ​​দোকান বলছে, এর মেমরি চাঙ্গড় নামক x এর মান 0. তাই লক্ষ্য করা জিনিষ কয়েক নেভিগেশন এড়িয়ে যাচ্ছি. যদিও x এর একটি পয়েন্টার কয়েক সপ্তাহ আগে থেকে, প্রত্যাহার আপনি যে এখনও অ্যারের-শৈলী গুরুবন্ধনী নোটেশন ব্যবহার করতে পারেন. কারণ যে আসলে এর আরো রহস্যপূর্ণ সুদর্শন পয়েন্টার এরিথমেটিক জন্য ছোট হাতের স্বরলিপি. যেখানে আমরা ভালো কিছু করতে চাই: x নিন ঠিকানা, 10 স্পট সরানো, তারপর সেখানে যাই হোক ঠিকানা যে অবস্থান এ সংরক্ষিত হয় না. কিন্তু অকপটে, এই মাত্র নৃশংস ও পড়তে আরামদায়ক সঙ্গে পেতে. সুতরাং সাধারণত বিশ্বের বর্গাকার বন্ধনী ব্যবহার করে মাত্র কারণ এটা আরও অনেক মানুষের বন্ধুত্বপূর্ণ পড়তে হয়. কিন্তু যে কি নীচে ফণা উপর সত্যিই যাচ্ছে; x এর একটি ঠিকানা,, জন্মগতভাবে একটি অ্যারের না. তাই এই অবস্থান 10 এক্স এ সংরক্ষণ করা হয় 0. কেন এই খারাপ? হাঁ? [ছাত্র উত্তর, অপাচ্য] যথাযথভাবে. আমরা কেবলমাত্র দশ ints বরাদ্দ, কিন্তু 0 থেকে আমরা যখন সি প্রোগ্রামিং গণনা, যাতে আপনি 0 1 2 3 4 5 6 7 8 9, কিন্তু না 10 এক্সেস আছে. সুতরাং হয় প্রোগ্রাম seg ফল্ট বা যাচ্ছে তা নয়. কিন্তু সত্যিই আমরা জানি না; এটি একটি nondeterministic আচরণ সাজান. এটা সত্যিই আমরা ভাগ্যবান কিনা উপর নির্ভর করে. যদি এটি সক্রিয় যে অপারেটিং সিস্টেম মনে আছে যে আমি যদি অতিরিক্ত বাইট ব্যবহার, যদিও তা করেনি দেওয়া আমার না, আমার প্রোগ্রামটি বিপর্যস্ত হতে পারে. এটা কাঁচা, এটা বগী, কিন্তু আপনি যে উপসর্গ দেখতে পারে না, অথবা আপনি এটি দেখতে শুধুমাত্র কখনোসখনো পারে. কিন্তু বাস্তবতা হল যে বাগ সত্য হয়, সেখানে,. এবং এটা আসলে সমস্যাযুক্ত যদি আপনি একটি প্রোগ্রাম যা আপনি সঠিক হতে চান না করেছি, আপনি যে প্রোগ্রাম বিক্রি করে থাকি যে, মানুষ যে প্রতি কখনোসখনো বিপর্যের ব্যবহার করা হয় অবশ্যই কারণ, এই ভাল হয় না. আসলে, আপনি যদি একটি Android ফোন অথবা একটি আইফোন আছে এবং আপনি এই অ্যাপ্লিকেশান দিন ডাউনলোড করুন, যদি আপনি কি কখনো ছিল করেছি শুধুমাত্র একটি অ্যাপ্লিকেশন প্রস্থান করার জন্য, হঠাৎ সব এটা disappears, যা প্রায় সর্বদা কিছু মেমরি সংক্রান্ত সমস্যার ফলে, তদ্দ্বারা প্রোগ্রামার মাতাল আপ এবং একটি পয়েন্টার dereferenced যে সে না থাকা উচিত, এবং iOS বা Android এর ফলে শুধু সম্পূর্ণভাবে প্রোগ্রাম বধ হয় বরং ঝুঁকি আচরণ অনির্দিষ্ট বা নিরাপত্তা আপস কিছু. এক এই প্রোগ্রামে এক ছাড়াও অন্যান্য এই বাগ আছে. আমি আর কী আছে এই প্রোগ্রামে মাতাল আপ? আমি কি করেছি প্রচার করেছি চর্চা না. হাঁ? [ছাত্র উত্তর, অপাচ্য] গুড. আমি মেমরি মুক্ত করা হয়নি. তাই এখন রুল অফ থাম্ব যে কোনো সময় যে আপনি malloc কল, আপনি যখন আপনি বিনামূল্যে কল করা হয় যে মেমরি ব্যবহার করা আবশ্যক হয়েছে. এখন, যখন আমি এই মেমরি মুক্ত করতে চায়? সম্ভবত, অভিমানী এই প্রথম লাইন ছিল সঠিক, আমি এখানে তা করতে হবে. কারণ আমি, উদাহরণস্বরূপ পারে না, এটা এখানে নিচে না. কেন? শুধু আউট সুযোগ. সুতরাং যদিও আমরা পয়েন্টার বিষয়ে কথা বলছি, এই একটি সপ্তাহ 2 অথবা 3 বিষয়, যেখানে x শুধুমাত্র কোঁকড়া ধনুর্বন্ধনী যেখানে এটা ঘোষণা করেন ভিতরে সুযোগ হয়. তাই স্পষ্টভাবে আপনি কোন মুক্ত করতে পারে না. আমার একমাত্র সুযোগ এটি মুক্ত প্রায় লাইন 21 পরে হয়. এটি একটি সাধারন প্রোগ্রাম; এটি ছিল মোটামুটি সহজ একবার আপনি ধরনের আপনার মন আবৃত কাছাকাছি কি প্রোগ্রাম, সেটা যেখানে ভুল ছিল না. এমনকি যদি আপনি এটি প্রথমে দেখতে পাইনি আশা, এটা একটু সুস্পষ্ট এখন যে এই চমত্কার ভুল সহজে সমাধান হয় এবং সহজে তৈরি. কিন্তু যখন একটি প্রোগ্রাম বেশী লম্বা লাইন 12, এটা দীর্ঘ লাইন 50, 100 লাইন দীর্ঘ, লাইন দ্বারা হাঁটা আপনার কোড লাইন মাধ্যমে, চিন্তা যুক্তি এটি মাধ্যমে, কিন্তু সম্ভব না, বিশেষ করে মজা না, বাগ জন্য ক্রমাগত খুঁজছেন, এবং এটা কঠিন না, এবং যে কেন Valgrind ভালো একটা টুল থাকে. সম্পর্কে এগিয়ে যান এবং এই করুক: আমার টার্মিনাল উইন্ডোতে খুলুন যাক, এবং আমাকে মাত্র মেমরি চালানো হবে না, কারণ মেমরি সূক্ষ্ম বলে মনে হয়. আমি ভাগ্যবান পেয়ে করছি. অ্যারে শেষে যাওয়া যে অতিরিক্ত বাইট যাও কিন্তু খুব সমস্যা হবে বলে মনে হচ্ছে না. কিন্তু সম্পর্কে, তবু যাক, একটি সদ্বিবেচনা চেক, যা শুধু চেক মানে না হবে কি না তা এই আসলে সঠিক. সুতরাং এর সাথে-v valgrind না যাক - = পূর্ণ লিক চেক, এবং তারপর এই ক্ষেত্রে প্রোগ্রামের নাম মেমরি a.out, হইনি. তাই আমাকে এগিয়ে যান এবং এই কাজের জন্য. হিট লিখুন. প্রিয় ঈশ্বর. এই হল এর আউটপুট, এবং এই কি আমি আগে যাও উদ্দিষ্ট. কিন্তু, আপনি যদি ছাইপাঁশ সব মাধ্যমে এখানে পড়তে শেখা, এই অধিকাংশ ঠিক ডায়গনিস্টিক আউটপুট যে আকর্ষণীয় না. কি আপনার চোখ সত্যিই চায় খুঁজছেন করা হয় ত্রুটি বা অবৈধ কোনো উল্লেখ করা হবে না. শব্দ যে সমস্যার সুপারিশ. এবং সত্যিই, আমি কি কি ভুল যাচ্ছে নিচে এখানে দেখতে. আমি কিছু সাজানোর একটি সারসংক্ষেপ, আছে "ব্যবহার করে প্রস্থান এ:. 1 ব্লকে 40 বাইট" আমি এখনো নিশ্চিত কি ব্লক হয় সত্যিই না, কিন্তু 40 বাইট আসলে মতানুযায়ী মত আমি বাইরে থেকে আসছে যেখানে যে এর চিত্র পারে. 40 বাইট. কেন ব্যবহার করে প্রস্থান 40 বাইট? এবং আরো নির্দিষ্টভাবে, যদি আমরা এখানে স্ক্রল ডাউন, কেন আমি স্পষ্টভাবে আছে 40 বাইট হারিয়েছে? হাঁ? [ছাত্র উত্তর, অপাচ্য] পারফেক্ট. হাঁ, ঠিক. দশ পূর্ণসংখ্যার ছিল, এবং তাদের প্রতিটি 4, বা 32 বিট আকার, তাই আমি অবিকল 40 বাইট নষ্ট করেছি কারণ, আপনি প্রস্তাব হিসাবে, আমি মুক্ত বলা হয় না. এটা একটি বাগ সংশোধন করা হয়েছে, এবং এখন এর সামান্য পুনরায় বিবেচনা হতাশ এবং পরবর্তী এই দেখুন, "মাপ 4 অবৈধ. লিখুন" এখন কি এই? এই ঠিকানাটি কি বেস স্বরলিপি প্রকাশিত হয়, দৃশ্যতঃ? এটি হেক্সাডেসিমেল, এবং যে কোনো সময় আপনি একটি সংখ্যা দিয়ে শুরু করা 0x দেখুন, এটা মানে হেক্সাডেসিমেল, যা আমরা উপায় পিঠ, আমি মনে করি, প্রশ্নের pset 0 এর অধ্যায় কি, যা একটি warmup ব্যায়াম ঠিক ছিল না, বাইনারি যাও রূপান্তর দশমিক হেক্স এবং তাই ঘোষণা. শুধু মানুষের কনভেনশন দ্বারা হেক্সাডেসিমেল, সাধারণত, যাও পয়েন্টার প্রতিনিধিত্ব করতে ব্যবহৃত হয় অথবা, আরো সাধারণভাবে, ঠিকানাগুলি. এটি শুধু একটি কনভেনশন, কারণ এটা একটু পড়তে সহজ, এটি একটি সামান্য দশমিক ভালো কিছু তুলনায় আরো কম্প্যাক্ট, এবং বাইনারি হল বেহুদা জন্য অধিকাংশ মানুষের ব্যবহার করার জন্য. তাই এখন এই মানে? ওয়েল, এটা দেখে মনে হচ্ছে একটি অবৈধ লেখার আছে লাইন 21 memory.c মধ্যে আকার 4. সুতরাং এর পিছনে লাইন 21 যেতে দিন, এবং প্রকৃতপক্ষে এখানে, যে অবৈধ লেখার. সুতরাং Valgrind সম্পূর্ণভাবে আমার হাত রাখা সম্পর্কে কি ফিক্স হয় বলতে হবে না, কিন্তু এটা যে আমি একটি অবৈধ লেখার করছি সনাক্ত করা হয়. আমি 4 বাইট করছি যে আমি স্পর্শ না করা উচিত, এবং আপাতদৃষ্টিতে যে এর কারণ, হিসাবে আপনি নির্দিষ্ট, আমি পরিবর্তে [9] [10] করছি সর্বাধিক বা [0] অথবা তাদের মধ্যে কিছু. Valgrind সহ, যে কোনো সময় আপনি এখন করছি একটি প্রোগ্রাম লেখা বুঝতে যে পয়েন্টার ব্যবহার করে এবং মেমরি ব্যবহার করে, এবং malloc আরো নির্দিষ্টভাবে, এই দীর্ঘ চলমান অভ্যাসের মধ্যে নিশ্চিতভাবে পেতে কিন্তু খুব সহজে কপি এবং Valgrind কমান্ড আটকানো যদি সেখানে কিছু ত্রুটি আছে দেখুন. এবং এটি প্রতি অত্যাধিক সময় আপনি আউটপুট দেখতে হবে, কিন্তু ত্রুটি ফলাফলের চাক্ষুষরূপে সমস্ত কেবল এবং পার্স যদি আপনি দেখুন উল্লেখ অথবা সতর্কবার্তা বা অবৈধ বা হারিয়ে গেছে. যেকোন শব্দ যে আপনার মত শব্দ মাতাল কোথাও আপ. তাই বুঝি যে আপনার একটা টুলকিট নতুন হাতিয়ার. এখন সোমবার, আমরা একটি ভাবেন আভা ছিল এখানে আসা আপ এবং একটি লিঙ্ক তালিকা ধারণা উপস্থাপন করে. এবং আমরা কি সমস্যার একটি সমাধান হিসাবে লিঙ্ক তালিকা চালু? হাঁ? [ছাত্র উত্তর, অপাচ্য] গুড. অ্যারেগুলির তাদের জন্য মেমরি যোগ করতে পারবেন না. আপনি যদি আকার 10 শ্রেণীবিন্যাস, যে সব পাবেন বরাদ্দ করা. আপনি realloc মত একটি ফাংশন কল যদি আপনি প্রথমে malloc আহবান করা যেতে পারে, এবং যে অ্যারের হত্তয়া যদি এটা শেষ দিকে সেখানে স্থান চেষ্টা করতে পারেন যে কেউ ব্যবহার করে এবং যদি না থাকে, শুধু খুঁজে বড় চাঙ্গড় আপনি অন্য কোথাও হবে না. কিন্তু তারপর এটা নতুন অ্যারের মধ্যে যারা বাইট সব কপি করা. এটি একটি খুব সঠিক সমাধান মত শোনাচ্ছে. কেন এই অনাকর্ষণীয়? আমি বলতে চাচ্ছি এটা কাজ করে, মানুষের এই সমস্যা সমাধান করেছি. কেন আমরা বার সোমবার লিঙ্ক তালিকা সাথে মীমাংসা করা প্রয়োজন? হাঁ? [ছাত্র উত্তর, অপাচ্য] এটি একটি দীর্ঘ সময় লাগতে পারে. আসলে, যে কোনো সময় আপনি বা malloc realloc বা calloc, যা এখনো হয় অন্য এক আহ্বান করছি, যে কোনো সময় আপনি, প্রোগ্রাম, অপারেটিং সিস্টেমের কথা, আপনি প্রোগ্রাম মন্দীভূত ঝোঁক. এবং যদি আপনি loops অনেক কিছু এই ধরনের করছেন, সত্যিই আপনি জিনিষ করছেন গতি কমে. আপনি "ওহে দুনিয়া" টাইপ প্রোগ্রাম সহজ জন্য এই বিজ্ঞপ্তি চলুন না, কিন্তু অনেক বড় প্রোগ্রাম মধ্যে, মেমরি চাওয়ার জন্য অপারেটিং সিস্টেম আবার এবং আবার অথবা এটি ফেরৎ আবার এবং আবার একটি ভাল জিনিস হতে না থাকে. তাছাড়া, এটা শুধু বুদ্ধিমত্তার বাছাই করা - এটা একটা সময় সম্পূর্ণ বর্জ্য. কেন আরো এবং আরো মেমরি বরাদ্দ করা, ঝুঁকি নতুন অ্যারের মধ্যে সবকিছু অনুলিপি, আপনি যদি একটি বিকল্প যা আপনাকে শুধুমাত্র হিসাবে অনেক মেমরি বরাদ্দ হিসাবে আপনি আসলে প্রয়োজন আছে? সুতরাং pluses এখানে এবং minuses আছে. Pluses এক এখন যে গতিশীলতা আছে. কিন্তু যেখানে মেমরির অংশ আছে যা বিনামূল্যে ব্যাপার না, আমি সৃষ্টি করে এই রুটি crumbs পয়েন্টার মাধ্যমে সাজাতে পারেন একসাথে আমার সম্পূর্ণ লিঙ্ক তালিকা ফাঁসি. কিন্তু আমি অন্তত এক মূল্য. কি আমি লিঙ্ক তালিকা হত্তন আপ করা আছে? হাঁ? [ছাত্র উত্তর, অপাচ্য] গুড. আপনি আরো মেমরি প্রয়োজন. এখন আমি এই পয়েন্টার জন্য স্থান প্রয়োজন, এবং এই সুপার সহজ লিঙ্ক তালিকা ক্ষেত্রে যে শুধুমাত্র পূর্ণসংখ্যা হয়, যা 4 বাইট জমা করার চেষ্টা, আমরা রাখা বলছে পাশাপাশি, একটি পয়েন্টার 4 বাইট, তাই এখন আক্ষরিক আমি দ্বিগুন করেছি মেমরির পরিমাণ আমি এই তালিকা সংরক্ষণ প্রয়োজন. কিন্তু আবার, এই একটি কম্পিউটার বিজ্ঞান মধ্যে ধ্রুবক tradeoff মধ্যবর্তী সময় এবং স্থান এবং উন্নয়ন, প্রচেষ্টা এবং অন্যান্য সম্পদ. একটি লিঙ্ক তালিকা ব্যবহার করে অন্য downside কি? হাঁ? [ছাত্র উত্তর, অপাচ্য] গুড. সহজ হিসাবে অ্যাক্সেস নেই. আমরা লিভারেজ আর করতে পারেন ভালো 0 নীতি সপ্তাহে বিভক্ত করা এবং জেতা. এবং আরো নির্দিষ্টভাবে, বাইনারি অনুসন্ধান. কারণ যদিও আমরা মানুষ প্রায় যেখানে এই তালিকার মধ্যম হয় দেখতে পারেন, কম্পিউটার শুধু জানে যে এই লিঙ্ক তালিকা ঠিকানা নামক প্রথম আরম্ভ করা হয়. এবং যে 0x123 বা যে ভালো কিছু. এবং একমাত্র উপায় প্রোগ্রাম মধ্যম উপাদান পেতে পারেন প্রকৃতপক্ষে পুরো তালিকা অনুসন্ধান করা হয়. এমনকি তারপর, এটা আক্ষরিক পুরো তালিকা অনুসন্ধান থাকে কারণ এমনকি একবার আপনি পয়েন্টার অনুসরণ করে মধ্যম উপাদান পৌঁছানোর, আপনি, প্রোগ্রাম, তার কোন ধারণা নেই কিভাবে এই দীর্ঘ তালিকা, সম্ভাব্য আছে, যতক্ষন না আপনি শেষ আঘাত, এবং কিভাবে আপনি জানি programmatically আপনি যে একটি লিঙ্ক তালিকা শেষে করছি? একটি বিশেষ NULL পয়েন্টার, তাই আবার, একটি প্রচলিত রীতি আছে. বরং এই পয়েন্টার ব্যবহার, আমরা স্পষ্টভাবে কিছু আবর্জনা মান হতে না চান প্রতি নির্দেশ পর্যায়ে কোথাও বন্ধ; আমরা এটি হাতের নিচে শূন্য হতে চান,, যাতে আমরা এই তথ্য কাঠামো এই ট্যার্মিনাস আছে যাতে আমরা জানতে পারি যেখানে এটা শেষ হবে. কি হবে যদি আমরা এই নিপূণভাবে চান আমরা এই চাক্ষুষরূপে অধিকাংশ করেছিল, এবং মানুষের সাথে, কিন্তু যদি আমরা একটা সন্নিবেশ করতে চান? তাই মূল তালিকায় ছিল 9, 17, 20, 22, 29, 34. যদি আমরা তারপর malloc স্থান নম্বর 55, এটি জন্য একটি নোডের জন্য চেয়েছিলেন, এবং তারপর আমরা তালিকায় 55, ঠিক যেমন আমরা সোমবার কি সন্নিবেশ করতে চান? কিভাবে আমরা এই কাজ করে? ওয়েল, অনিতা এসেছেন এবং তিনি মূলত তালিকা পদচারণা. তিনি প্রথম উপাদান শুরু তারপর, পরের পরের পরের পরের পরের. অবশেষে বাম হাতের সমস্ত উপায় নিচে আঘাত এবং বুঝতে উহু, এই হল শূন্য. তাই পয়েন্টার ম্যানিপুলেশন প্রয়োজন করাতে হবে? ব্যক্তির প্রান্তে যারা ছিল, সংখ্যা 34, প্রয়োজন তার বাম হাত উত্থাপিত 55 এ দিকে নির্দেশ করে, তাদের 55 বাম হাত ইশারা করে নিচে নতুন শূন্য টারমিনেটর করা প্রয়োজন. সম্পন্ন হয়েছে. চমত্কার একটি সহজ অনুসারে সাজানো তালিকা মধ্যে যাও 55 সন্নিবেশ করুন. এবং কিভাবে এই চেহারা হতে পারে? আমাকে এগিয়ে যান এবং কিছু কোড যেমন খুলুন এখানে আপ. আমি gedit আপ খুলুন, এবং সম্পর্কে দুটি ফাইল খুলুন প্রথম আপ জানাবো. এর মধ্যে একটি হল list1.h, এবং আমার কেবল মনে করিয়ে দেওয়া যে, এই কোড চাঙ্গড় যে আমরা একটি নোড প্রতিনিধিত্ব করতে ব্যবহৃত. একটি নোডের মধ্যে উভয় কোন int বলা হবে এবং একটি পয়েন্টার নামক পরের যে পয়েন্ট তালিকায় পরবর্তী জিনিস আছে. যে একটি. জ ফাইলে এখন হয়. কেন? এই কনভেনশন আছে, এবং আমরা এই সুযোগ গ্রহণ না একটি বিপুল পরিমাণ নিজেদেরকে, কিন্তু যে ব্যক্তি printf এবং অন্যান্য কার্যাবলী লিখেছেন দিয়েছেন নামক কোনো ফাইল stdio.h লেখা বিশ্বের জন্য উপহার হিসাবে যারা র সমস্ত কর্ম ব্যবহার. এবং তারপর string.h আছে, এবং তারপর map.h আছে, এবং এই সব জ ফাইল আছে আপনি যে দেখা বা হতে পারে শব্দটি অন্যান্য ব্যক্তিদের দ্বারা লিখিত সময় ব্যবহৃত. সাধারণত যাদের. জ ফাইলগুলি শুধুমাত্র typedefs ভালো জিনিস অথবা কাস্টম প্রকারের বা ধ্রুবকের ঘোষণা এর ঘোষণা. আপনি হেডার ফাইল ফাংশন 'বাস্তবায়নের না করা উচিত. আপনি রাখা পরিবর্তে, শুধুমাত্র তাদের এগুলির নমুনা,. আপনি কি তারা বিশ্বের প্রয়োজন সঙ্গে বিষয় আপনাকে ভাগ করতে চান করা যাতে তাদের কোড কম্পাইল. সুতরাং শুধু এই অভ্যাস মধ্যে পেতে, আমরা একই জিনিস করে সিদ্ধান্ত নেওয়া. অনেক আছে list1.h না, কিন্তু আমরা মানুষ এবং বিশ্বের কিছু করেছি যে সুদ হতে পারে করা চাই যারা আমাদের যুক্ত তালিকা বাস্তবায়ন ব্যবহার. List1.c মধ্যে এখন, আমি এই গোটা ব্যাপারটাই মধ্য দিয়ে যেতে হবে না কারণ এটি একটি বিট দীর্ঘ, এই প্রোগ্রাম, কিন্তু আসুন প্রম্পটে চালানো দ্রুত এটা বাস্তব. সম্পর্কে তালিকা 1, কম্পাইল সম্পর্কে তারপর তালিকা 1 চালানো যাক, এবং কি আপনি দেখতে পাবেন যাক না আমরা কৃত্রিম একটি সহজ সামান্য এখানে প্রোগ্রাম করেছি যে আমাকে এবং জুড়তে একটি তালিকা নম্বর মুছে ফেলার অনুমতি দিতে যাচ্ছে. তাই আমাকে এগিয়ে যান এবং মেনু অপশন 3 জন্য টাইপ করুন 3. আমি নম্বর প্রবেশ করাতে চাই - এর প্রথম সংখ্যা যাক না, যা ছিল 9, এবং এখন আমি তালিকাটি এখন 9 বলেন করছি. সম্পর্কে এগিয়ে যান এবং অন্য সন্নিবেশ করুক না, তাই আমি মেনু অপশন 3 আঘাত. কি আমি কি নম্বর প্রবেশ করাতে চান? 17. লিখুন. এবং আমি শুধু একটা আরো দেব. আমাকে নম্বর 22 সন্নিবেশ করুন. সুতরাং আমরা লিঙ্ক তালিকা যে আমরা স্লাইড ফর্ম ছিল একটি মুহূর্ত পূর্বে সূত্রপাত আছে. কিভাবে এই সন্নিবেশ করা হয় আসলে কি ঘটছে? প্রকৃতপক্ষে, 22 তালিকা শেষে এখন হয়. তাই বিবরণ আমরা মঞ্চে ডটকমকে সোমবার এবং recapped ঠিক এখন কোড প্রকৃতপক্ষে ঘটছে করা আবশ্যক. চলুন কটাক্ষপাত. আমাকে এই ফাইলের মধ্যে স্ক্রোল ডাউন. আমরা ফাংশন কিছু ভূমিকা টীকাটিপ্পনী করব, কিন্তু আমরা যেতে ডাউন, বলবো, সন্নিবেশ ফাংশন. যাক কিভাবে আমরা এই লিঙ্ক তালিকায় নতুন নোডের মধ্যে ঢোকাতে সম্পর্কে যেতে দেখে. যেখানে তালিকা ঘোষণা করা হয়? ভাল, যাক এর স্ক্রল উপরের সব উপায় আপ, এবং লক্ষ্য করা যে আমার লিঙ্ক তালিকা মূলত একটি একক পয়েন্টার যে প্রাথমিকভাবে শূন্য হিসাবে ঘোষিত হয়. তাই আমি একটি গ্লোবাল ভেরিয়েবল ব্যবহার করছি এখানে, যা সাধারণভাবে আমরা এর বিরুদ্ধে প্রচার করেছি কারণ এটা একটু অগোছালো আপনার কোড বজায় রাখা, এটা অলস, সাধারণত ধরণের, কিন্তু এটা এবং এটা ভুল না অলস না এবং এটা খারাপ না যদি আপনার প্রোগ্রাম এর জীবনের একমাত্র উদ্দেশ্য এক যুক্ত তালিকা অনুকরণ করা হয়. যা ঠিক কি আমরা করছেন. তাই বরং প্রধান এবং তারপর এই ডিক্লেয়ার প্রতি ফাংশন এটি পাস আছে আমরা এই প্রোগ্রামের লিখিত করেছি, এর পরিবর্তে আমরা বুঝতে ওহ, আমি কি এটা বিশ্বব্যাপী করা কারণ এই প্রোগ্রামের উদ্দেশ্য হল সমগ্র একটি এবং কেবলমাত্র একটি লিঙ্ক তালিকা প্রদর্শন করা হয়. যাতে মনে ঠিক আছে. এখানে আমার এগুলির নমুনা, এবং আমরা এই সব দিয়ে যেতে হবে না, কিন্তু আমি একটি মুছুন ফাংশন, একটি ফাংশন খুঁজে, একটি সন্নিবেশ ফাংশন, এবং তর্ক করা একটি ফাংশন লিখেছে. কিন্তু আমরা এখন এর সন্নিবেশ ফাংশন ফিরে নামা এবং কিভাবে এই এক এখানে কাজ করে. লাইন সন্নিবেশ হয় - আমরা শুরু করছি. ঢোকান. সুতরাং, নিতে কোনো আর্গুমেন্ট না কারণ আমরা জিজ্ঞাসা করতে যাচ্ছেন তারা নম্বর প্রবেশ করাতে চান তাদের জন্য এই ফাংশনের ভিতর ব্যবহারকারী. কিন্তু প্রথম, আমরা তাদের কিছু জায়গা দিতে প্রস্তুত. এটি অন্যান্য উদাহরণ থেকে কপি এবং পেস্ট ধরণের. সেই ক্ষেত্রে, আমরা কোন int বণ্টন ছিল; এই সময় আমরা একটি নোডের মধ্যে বণ্টন করছেন. আমি কত বাইট একটি নোড হয় না সত্যিই মনে রাখবেন না, কিন্তু যে সূক্ষ্ম. Sizeof সম্পর্কে জন্য যে জিনিসটা আউট করতে পারেন. এবং কেন আমি লাইন 120 সালে শূন্য am পরীক্ষণের জন্য? যান কি লাইন 119 সালে ভুল হতে পারে? হাঁ? [ছাত্র উত্তর, অপাচ্য] গুড. শুধু ক্ষেত্রে যে আমি অত্যধিক স্মৃতি জন্য জিজ্ঞাসা করেছি হতে পারে বা এর কিছু ভুল এবং অপারেটিং সিস্টেম সম্পর্কে দিতে যথেষ্ট বাইট আছে না, তাই এটি NULL ফেরত দ্বারা অনেক ইঙ্গিত হিসাবে, এবং যদি আমি যে জন্য চেক না এবং আমি ফিরে যাও ঠিকানা ব্যবহার শুধুমাত্র অন্ধভাবে এগিয়ে যান, এটা হতে পারে শূন্য. এটা কিছু অজানা মান হতে পারে; ভাল জিনিস না, যদি না আমি একটি - আসলে একটি অজানা মান হবে না. এটা শূন্য হতে পারে, তাই আমি না চান এটি এবং অপব্যবহার এটি dereferencing ঝুঁকি. যদি এটি ঘটে, আমি এবং আমরা ফিরে মত আমি কোনো স্মৃতি ফিরে পেতে না এ সব মিথ্যা নালিশ করব. অন্যথা, আমি বলতে ব্যবহারকারী সম্পর্কে ঢোকানোর জন্য একটি নম্বর দিতে, আমি আমাদের পুরানো বন্ধু GetInt কল, এবং তারপর এই ছিল নতুন সিনট্যাক্স আমরা সোমবার চালু. 'Newptr> এন' আপনি যে ঠিকানা দেওয়া হয়েছে malloc দ্বারা গ্রহণ করা মানে এর ফলে একটি নতুন নোডের বস্তুর প্রথম বাইট প্রতিনিধিত্ব করে, এবং তারপর ক্ষেত্র বলা যেতে হবে. একটু তুচ্ছ বস্তু প্রশ্ন: এই গতি কি কোড আরো রহস্যপূর্ণ লাইন যাও? অন্যথায় আমি কিভাবে এই লিখিত হতে পারে? একটি ছুরিকাঘাত নিতে চান? [ছাত্র উত্তর, অপাচ্য] গুড. . N ব্যবহার করে, কিন্তু এটা বেশ হিসাবে এই হিসাবে সহজ না. আমি কি প্রথম প্রয়োজন যাও না? [ছাত্র উত্তর, অপাচ্য] গুড. আমি * newptr.n করতে হবে. তাই এই নতুন পয়েন্টার সম্ভবত এর একটি ঠিকানা বলছে না. কেন? কারণ এটা malloc দ্বারা উৎপন্ন হত. * Newptr বলে যে "সেখানে যাওয়ার জন্য," এবং তারপরে আপনি সেখানে থাকেন, তাহলে আপনি আরো পরিচিত. এন ব্যবহার করতে পারেন, কিন্তু শুধু এই দেখায় একটু কুশ্রী, বিশেষত যদি আমরা মানুষের যাচ্ছে পয়েন্টার তীর সহ সব সময় আঁকা; দুনিয়া আছে এই তীর স্বরলিপি উপর প্রমিত, যা হুবহু একই জিনিস আছে. > স্বরলিপি যখন বাম বিষয় একটি পয়েন্টার - সুতরাং শুধুমাত্র আপনি ব্যবহার করেন. অন্যথায়, যদি এটা প্রকৃত struct,. N ব্যবহার. এবং তারপর এই: কেন আমি newptr> পরবর্তী আরম্ভ নাল যাও? আমরা একটি আনত বাম পর্যায় শেষে হাত বন্ধ করতে ইচ্ছুক না. আমরা চাই এটি সরাসরি প্রতি নির্দেশ করে, যা এই তালিকার শেষে অর্থ সম্ভাব্য এই নোডের মধ্যে হতে পারে, তাই আমরা ভাল করতে নিশ্চিত হয়ে নিন এটি শূন্য. সাধারণ ও, আপনার ভেরিয়েবল অথবা আপনার সদস্য তথ্য এবং structs আরম্ভ করা কিছু একটা ভাল অভ্যাস. শুধু লেট আবর্জনা এবং বিদ্যমান সাধারণত বিদ্যমান কষ্ট আপনাকে পায় যদি আপনি কিছু পরে করতে ভুলবেন না. এখানে কয়েকটি ক্ষেত্রে. এই আবার,, হয় সন্নিবেশ ফাংশন, এবং সর্বপ্রথম যে জিনিসটি আমি জন্য চেক করা হল যদি প্রথম নামক পরিবর্তনশীল, যে বিশ্ব পরিবর্তনশীল শূন্য হয়, মানে কোন লিঙ্ক তালিকা আছে. আমরা কোন সংখ্যা না ঢোকানো আছে, তাই এটা এই বর্তমান নম্বর সন্নিবেশ মামুলি তালিকার মধ্যে, কারণ এটা তালিকা শুরু করার জন্যে. তাই এই ছিল যখন শুধু অনিতা দাঁড়িয়ে ছিল আপ এখানে একা, ভান কোন কেউ ছিল মঞ্চে এখানে আপ পর্যন্ত আমরা একটি নোড বরাদ্দ, তারপর তিনি প্রথমবারের জন্য তার হাত বাড়াতে পারে, যদি বাকিদের মঞ্চে আসে আপ সোমবার তার পরে. এখন এখানে, এই সামান্য একটি চেক যেখানে আমি বলতে যদি n নতুন নোড এর মান না n বর্তমান প্রথম নোডের মধ্যে মান <, মানে একটি তালিকা সংযুক্ত যে এর কাজ শুরু হয়. তালিকার মধ্যে অন্তত একটি নোড আছে, কিন্তু এই নতুন লোক এর সাথে সংযুক্ত হওয়ার আগে, তাই কাছাকাছি জিনিস সরানো প্রয়োজন. অন্য কথায়, শুধু যদি তালিকা দিয়ে শুরু করেনি, আমি কি বলতে, মাত্র 17 নম্বর, যে - আসলে, আমরা এই কি আরো স্পষ্ট করতে পারেন. আমরা যদি এখানে পয়েন্টার নামক প্রথম সঙ্গে আমাদের গল্পের শুরু, এবং প্রাথমিকভাবে এটা শূন্য, এবং আমরা সংখ্যা 9 সন্নিবেশ, 9 নম্বর পরিষ্কারভাবে তালিকা শুরু করার জন্যে. সুতরাং এর জাহির করা যাক আমরা ঠিক ঠিকানা অথবা সংখ্যা 9 malloced এবং এটা এখানে রাখুন. যদি প্রথম হয় ডিফল্টরূপে 9, শুধু প্রথম দৃশ্যকল্প আমরা আলোচনা let এর বিন্দু এই লোক মানে এখানে, এই হিসাবে শূন্য ছেড়ে; আমরা এখন 9 নম্বর আছে. পরবর্তী সংখ্যা আমরা সন্নিবেশ করতে চান 17. 17 জন্যে এখানে বেশী, তাই আমরা এই মাধ্যমে কিছু লজিক্যাল পদবিন্যাস করতে যাচ্ছেন. তাই আসুন, আগে আমরা যে, এর যে আমরা 8 নম্বর প্রবেশ করাতে চেয়েছিলেন জাহির করা যাক. তাই ঠিক সুবিধার দোহাই জন্য, আমি এখানে আঁকতে চলেছি. কিন্তু মনে রাখবেন, malloc রাখা সবচেয়ে কোথাও করতে পারেন. কিন্তু অঙ্কন এর অনুরোধে জন্য না, আমি এটা এখানে রেখে দেব. তাই আমি ঠিক করেছি নম্বর 8 জন্য একটি নোড বরাদ্দ জাহির করা; এটি ডিফল্টরূপে শূন্য. এখন কি করা হয়েছে? জিনিষ একটি দম্পতি. আমরা মঞ্চে এই ভুল করে সোমবার যেখানে আমরা ভালো একটি পয়েন্টার আপডেট, তারপর এই করেছেন, এবং তারপর আমরা দাবি - আমরা মঞ্চে অন্য সবাই এতিম. কারণ আপনি can't - অপারেশন এখানে অর্ডার গুরুত্বপূর্ণ, কারণ এখন আমরা এই নোডের 9 যে স্থান ফ্লোটিং ধরণের নষ্ট করেছি. তাই এই সোমবার ডান পন্থা ছিল না. আমরা প্রথম যাও অন্য কিছু করতে হবে. বিশ্বের রাষ্ট্র ভালো দেখায়. প্রাথমিকভাবে, 8 বরাদ্দ দেয়া হয়েছে. কি হতে একটি 8 ঢোকাতে ভালো উপায় কি? পরিবর্তে এই পয়েন্টার প্রথম আপডেট ঠিক, এই এখানে এক পরিবর্তে আপডেট. সুতরাং আমরা কোড একটি লাইন যে এই শূন্য অক্ষর চালু হচ্ছে প্রয়োজন একটি নোডের মধ্যে প্রকৃত পয়েন্টার যে 9 এর নির্দেশ করে, এবং তারপর নিরাপদে আমরা পরিবর্তন প্রথম এই লোক এখানে নির্দেশ করতে পারেন. এখন আমরা একটি তালিকা, দুটি উপাদানের একটি লিঙ্ক তালিকা, আছে. এই কি এবং এখানে আসলে ভালো লাগছে? যদি আমরা কোড তাকান, বিজ্ঞপ্তি যে আমি ঠিক যে সম্পন্ন করেছি. আমি newptr বলেন, করেছি এবং এই গল্পে, newptr এই লোক নির্দেশ ছিল. সুতরাং সম্পর্কে আরও একটি জিনিস আঁকা দিন, এবং আমি এই জন্য একটু বেশি ঘর ছেড়ে দেওয়া উচিত. তাই ছোট সামান্য অঙ্কন ক্ষমা. এই লোক newptr বলা হয়. এটা পরিবর্তনশীল আমরা ঘোষিত পংক্তির মধ্যে একটি কয়েক লাইন আগে, - মাত্র 25 উপরে. এবং এটি 8 এর প্রতি নির্দেশ করে. সুতরাং যখন আমি বলতে newptr> পরের, মানে struct যান যে সময়ে এর দ্বারা newptr হচ্ছে সরু, তাই এখানে আমরা, সেখানে যাওয়ার জন্য. তারপর তীরটি ক্ষেত্রের পেতে বলছে, এবং তারপর হয় = কি মান রাখা আছে বলছে না? মান যে প্রথম ছিল; প্রথম কি মূল্য নেই? প্রথম নোডের এই সময়ে, তাই প্রতি নির্দেশ মানে এই এখন এই নোডের এ নির্দেশ করা উচিত ছিল. অন্য কথায়, কি আমার হস্তাক্ষর সঙ্গে হাস্যকর জগাখিচুড়ি যদ্যপি দেখায়, একটি মাত্র চারপাশে এইসব তীরচিহ্ন চলন্ত সহজ ধারণা কি শুধু এই একটি মাছ ধরার নৌকা সঙ্গে অনুবাদ কোড যাও. প্রথম কি পরবর্তী ক্ষেত্রে সঞ্চয় হয় এবং তারপর কি আসলে প্রথম আপডেট হয়. এর কিছু মাধ্যমে এগিয়ে এবং দ্রুত এগিয়ে যাওয়া যাক, এবং এই লেঙ্গুড় সন্নিবেশ এ জন্য এখন শুধুমাত্র চেহারা. ধরুন আমি বিন্দু যেখানে আমি দেখি যে কিছু নোড পরবর্তী ক্ষেত্রটি শূন্য পেতে. এবং বিবরণ, একটি বিশদ এই সময়ে যে আমি উপর glossing করছি যে আমি অন্য পয়েন্টার চালু করেছি লাইন 142, পূর্বসুরী পয়েন্টার এখানে আপ. গল্পের এই সময়ে মূলত, একবার, তালিকা দীর্ঘ পায়, আমি দুই আঙ্গুলের সঙ্গে এটি পদব্রজে ভ্রমণ ধরনের প্রয়োজন কারণ যদি আমি কি খুব বেশী দূরে না, একটি একক দৈর্ঘ্যের তালিকা মধ্যে মনে রাখবেন, আপনি পিছনের দিকে যেতে না পারে. সুতরাং predptr এই ধারণা আমার বাম আঙুল, এবং newptr - newptr না. অন্য পয়েন্টার যে এখানে আমার অন্য আঙুল, এবং আমি তালিকা হাঁটা শুধু ধরনের. এটা কেন যে বিদ্যমান. কিন্তু এখানে একটা মাত্র সহজ এখানে ক্ষেত্রে এক বিবেচনা. যদি এই পয়েন্টার এর পরের ক্ষেত্রটি শূন্য, কি লজিক্যাল সংশ্লেষ? যদি আপনি এই তালিকা ঢোঁড়ন হয় এবং আপনি একটি NULL পয়েন্টার আঘাত? তালিকার শেষে হন, এবং অতএব এই কোড একটি অতিরিক্ত উপাদান যুক্ত করা স্বজ্ঞাত বাছাই করা হয় যে নোড যার পরের NULL পয়েন্টার হয় নিতে হবে, তাই এই বর্তমানে শূন্য, এবং এটি, যদিও পরিবর্তন করতে হলে, নতুন নোডের ঠিকানা হতে. তাই আমরা ঠিক কোড ভীষণ তীর অঙ্কন যে মঞ্চে আমরা কেউ এর বাম হাত বাড়িয়ে দ্বারা সৃষ্টি. এবং যে ক্ষেত্রে আমি এ জন্য এখন আমার হাতে তরঙ্গ করব, ঠিক কারণ আমি মনে করি সহজ পেতে হারিয়ে যাও যখন আমরা পরিবেশের এই সাজানোর মধ্যে তা করে, এর তালিকা মধ্যম এ সন্নিবেশ জন্য চেক করা হয়. তবে intuitively, কি করা প্রয়োজন যদি আপনি চিন্তা করতে চান যেখানে কিছু সংখ্যা মাঝখানে জন্যে আপনি এটা পায়চারি করা আছে সঙ্গে একাধিক আঙ্গুল, একাধিক পয়েন্টার, জিনিসটা যেখানে এটি পরীক্ষণ দ্বারা জন্যে উপাদান <বর্তমান এক, > বর্তমান এক, একবার এবং আপনি যে জায়গা খুঁজে, তারপর আপনি শেল খেলার এই সাজানোর যেখানে আপনি পয়েন্টার সরানো চারপাশে খুব সাবধানে করতে হবে. এবং যে উত্তর, যদি আপনি কোন কারণে এই মাধ্যমে আপনার নিজের বাড়ীতে চাই, boils নিচে এই কোড শুধুমাত্র দুই লাইন, কিন্তু যারা লাইনের অর্ডার সুপার গুরুত্বপূর্ণ. কারণ যদি আপনি কাউকে হাত বাড়াতে এবং ড্রপ অন্য কাউকে ভুল আদেশ আছে, আবার, আপনি আপ তালিকা orphaning শেষ হয়ে যায়নি. আরো ধারণার দিক থেকে সংক্ষেপ করা, লেঙ্গুড় এ সন্নিবেশ তুলনামূলকভাবে সহজবোধ্য. মাথা এ সন্নিবেশ এছাড়াও তুলনামূলকভাবে সহজবোধ্য, কিন্তু এই সময় আপডেট করতে একটি অতিরিক্ত পয়েন্টার প্রয়োজন যাও তালিকায় এখানে নম্বর 5 আলিঙ্গন, এবং তারপর মধ্যম মধ্যে সন্নিবেশ আরও প্রচেষ্টা জড়িয়ে আছে, খুব সাবধানে তার সঠিক অবস্থান মধ্যে 20 নম্বর ঢোকান, যা 17 এবং 22 এর মধ্যে হয়. সুতরাং আপনি 22 নতুন নোডের 20 পয়েন্ট আছে ভালো কিছু করতে হবে, এবং তারপর, যা নোড এর পয়েন্টার আপডেট করা প্রয়োজন শেষ? এটা 17, প্রকৃতপক্ষে এটি সন্নিবেশ করুন. তাই আবার, আমি যে বিশেষ বাস্তবায়নের জন্য প্রকৃত কোড মুলতবি রাখা হবে. এক নজরে যে এটা একটা সামান্য অপ্রতিরোধ্য, কিন্তু এটা সত্যিই একটা অসীম লুপ যে, looping looping, এর looping, looping, এবং ভঙ্গ যত তাড়াতাড়ি আপনি NULL পয়েন্টার আঘাত, কোন সময়ে আপনি প্রয়োজনীয় সন্নিবেশ করতে পারেন. এই তারপর, হয় প্রতিনিধির লিঙ্ক তালিকা কোড সন্নিবেশ. যে ছিল অনেক ধরনের, এবং এটা মনে ভালো আমরা এক সমস্যা সমাধান করেছি, কিন্তু আমরা একটি সম্পূর্ণ অন্য এক চালু করেছি. সত্যি, আমরা সব এই সময় অতিবাহিত করেছি বড় হে এবং Ω এবং সময় চলমান, সমস্যা আরো দ্রুত সমাধানের চেষ্টা, এবং আমরা এখানে একটি বড় পদক্ষেপ গ্রহণ করা হয় পিছন দিকে, এটা মনে. এবং এখনো, যদি উদ্দেশ্য হল তথ্য সংরক্ষণ, এটি পবিত্র ঈপ্সিত বস্তু ভালো মতানুযায়ী, হিসাবে আমরা সোমবার বলেন, সত্যিই, হবে অবিলম্বে জিনিষ সঞ্চয়. আসলে, যে আমরা অনুমান করা একটি মুহূর্ত জন্য সরাইয়া লিঙ্ক তালিকা করেছিল এবং পরিবর্তে আমরা একটি টেবিল এর ধারণা চালু করা. এবং একটি অ্যারে হিসাবে একটি মুহূর্ত যাক এর জন্য শুধু একটা টেবিল মনে. এই অ্যারে এবং এই ক্ষেত্রে এখানে কিছু উপাদানের 26, 25 0 মাধ্যমে হয়েছে, এবং অনুমান যে আপনি নামগুলি সঞ্চয়ের জন্য কিছু অঞ্চলে প্রয়োজন: এলিস এবং বব এবং চার্লি এবং ভালো. এবং আপনি সেই নামগুলি সংরক্ষণ কিছু তথ্য কাঠামো প্রয়োজন. হ্যাঁ, আপনি একটি লিঙ্ক তালিকা মত ব্যবহার করতে পারেন এবং আপনি বব এবং চার্লি বব পরে আগে তালিকা এলিস সন্নিবেশ এবং পদব্রজে ভ্রমণ তাই ঘোষণা করতে পারে. এবং, আসলে, আপনি যদি একটি সরাইয়া হিসাবে যে ভালো কোড দেখতে চাই, list2.h জানেন যে, আমরা কি ঠিক যে. আমরা এই কোড দিয়ে যেতে হবে না, কিন্তু এই প্রথম উদাহরণ কোনো বৈকল্পিক যে এক অন্য struct আমরা তথাকথিত ছাত্র আগে দেখা প্রবর্তন করেছি, এবং তারপর কি এটা আসলে সংযুক্ত তালিকার যে কোন দোকানে একটি ছাত্র কাঠামো একটি পয়েন্টার বরং একটি সহজ সামান্য পূর্ণসংখ্যা, এন. বুঝতে আছে সেখানে কোড যে প্রকৃত স্ট্রিং জড়িয়ে আছে, কিন্তু যদি হাতে লক্ষ্য দক্ষতা সমস্যা মোকাবেলার সত্যিই এখন হয়, এটি চমৎকার হবে না যদি আমরা একটি বস্তুর নামক এলিস করছি দেওয়া হবে, আমরা একটি তথ্য গঠন সঠিক অবস্থান করে তার লাগাতে চান, এটা মনে মত শুধু এলিস করা সত্যিই সুন্দর হতে চাই, একটি সঙ্গে যাদের নাম শুরু হয় প্রথম অবস্থানে,. এবং বব, যার নাম শুরু হয় দ্বিতীয় অবস্থানে বি সঙ্গে,. সঙ্গে একটি অ্যারের, বা দেওয়া কলিং এর একটি টেবিল, একটি যে হ্যাশ টেবিল এটি আরম্ভ করুন, আমরা ঠিক তা করতে পারে. যদি আমরা এলিস নামের মত নাম দেওয়া হয়, এলিস মত একটি পংক্তি যেখানে, আপনি একটি-l-i,-c-ই না করা? আমরা একটি hueristic প্রয়োজন. আমরা এলিস ভালো কিছু ইনপুট নিতে একটি ফাংশন প্রয়োজন এবং একটি answer ফিরে, "এই স্থানে এলিস রাখুন." এবং এই ফাংশন, এই কালো বাক্সে, করা হবে নামক একটি হ্যাশ ফাংশন যাচ্ছে. একটি হ্যাশ ফাংশন এমন কিছু বিষয় যা ভালো লাগে "এলিস" একটি ইনপুট, আয় এবং আপনি সাধারণত, কিছু তথ্য কাঠামো সাংখ্যিক অবস্থান যেখানে এলিস জন্যে. এই ক্ষেত্রে, আমাদের হ্যাশ ফাংশন তুলনামূলকভাবে সহজ হওয়া উচিত. আমাদের হ্যাশ ফাংশন, যদি আপনি "এলিস", যা অক্ষর আমি যত্নশীল হওয়া উচিত বলে দেওয়া উচিত? প্রথম এক. তাই আমি [0] তাকান, এবং তারপর আমি বলতে যদি [0] অক্ষর এ, নম্বর 0 ফিরে. এটি যদি বি, 1 ফিরে. যদি এর সি, 2, এবং তাই ফিরে ঘোষণা. সমস্ত 0 সূচক, এবং যে সম্পর্কে এলিস এবং তারপর বব এবং তারপর চার্লি যাও সন্নিবেশ এবং মঞ্জুরি তাই ঘোষণা করে এই ডাটা স্ট্রাকচার. কিন্তু একটা সমস্যা আছে. যদি অনিতা আসে আবার বরাবর? আমরা কোথা থেকে অনিতা করা? তার নাম খুব, একটি চিঠি দিয়ে, শুরু হয়, এবং এটা মনে ভালো আমরা এই সমস্যার বড় জগাখিচুড়ি তৈরি করেছি. আমরা এখন একটি ডাটা স্ট্রাকচার মধ্যে অবিলম্বে সন্নিবেশ, সময় ধ্রুবক সন্নিবেশ, আছে বরং খারাপ-ক্ষেত্রে রৈখিক, কিন্তু আমরা কি অনিতা সঙ্গে এই ক্ষেত্রে কি করতে পারি? অপশন দুটি কি সত্যিই,? হাঁ? [ছাত্র উত্তর, অপাচ্য] ঠিক আছে, তাই আমরা অন্য মাত্রা আছে পারে. এটা ভাল. সুতরাং আমরা 3D অনেক কিছু তৈরি করতে পারেন, যেমন আমরা বললাম সম্পর্কে সোমবার জবানি. আমরা অন্য এক্সেস এখানে যোগ করতে, কিন্তু পারিনি যে, আমি এই সহজ রাখতে চেষ্টা করছি অনুমান. সমগ্র এখানে লক্ষ্য অবিলম্বে ধ্রুবক সময় এক্সেস আছে, যাতে খুব বেশী জটিলতা যোগ হচ্ছে. অন্যান্য অপশন যখন এই ডাটা স্ট্রাকচার মধ্যে অনিতা সন্নিবেশ করার চেষ্টা করছেন কি? হাঁ? [ছাত্র উত্তর, অপাচ্য] গুড. সুতরাং আমরা বাকিদের নিচে যেতে পারিনি, চার্লি nudges বব এবং এলিস, এবং তারপর নিচে মত আমরা অনিতা করা যেখানে তিনি সত্যিই হতে চায়. অবশ্যই এখন,, একটি এই পার্শ্ব প্রতিক্রিয়া আছে. এই তথ্য গঠন সম্ভবত দরকারী না, কারণ আমরা মানুষ একবার সন্নিবেশ করতে চান কিন্তু, কারণ আমরা যদি তারা সেখানে করছি পরে চেক করতে চান যদি আমরা তথ্য কাঠামো নামের সকল প্রিন্ট আউট করতে চান. আমরা এই তথ্য দিয়ে ঘটনাক্রমে কিছু করতে যাচ্ছেন. তাই এখন আমরা যে ধরনের এলিস, যারা আর যেখানে সে হতে অনুমিত এর উপর মাতাল করেছেন. তাছাড়াও বব হয়, না হয় চার্লি. তাই হয়তো এই যেমন ভাল হয় না. কিন্তু প্রকৃতপক্ষে, এই হল একটি বিকল্প. আমরা সবাই নিচে নামান পারে, অথবা নরক, অনিতা খেলা দেরী করে আসে, শুধু আমরা কেন অনিতা না করা না এখানে, না এখানে, না এখানে, আমি শুধু তার করা তালিকায় একটু কম. কিন্তু তারপর আবার এই সমস্যা বর্তা আরম্ভ করা হয়. আপনি এলিস খুঁজে পেতে তাঁর প্রথম নামের উপর ভিত্তি করে অবিলম্বে হতে পারে. এবং বব অবিলম্বে, এবং চার্লি. কিন্তু তারপর আপনি অনিতা জন্য দেখুন, এবং আপনি দেখুন, হুম, এলিস উপায় হয়. আচ্ছা, আমাকে এলিস নীচের চেক. বব অনিতা হয় না. চার্লি অনিতা হয় না. ওহ, অনিতা আছে. এবং যদি আপনি অবিরত ভাবে সব যুক্তি যে ট্রেন, সবচেয়ে খারাপ বিষয় খোঁজার এই নতুন তথ্য গঠন বা অনিতা ঢোকাতে চলমান সময় কি? এটা হে (ঢ) ডান,? কারণ লক, এলিস, বব চার্লি আছে. . . সব কারো নামে "Y" কিভাবে ডাউন, শুধু একটা স্পট আছে বাকি. সৌভাগ্যক্রমে, আমরা কোন এক বলা হয় "Z" আছে, তাই আমরা খুব নীচে অনিতা করা. আমরা যে সত্যিই সমস্যার সমাধান না. তাই হয়তো আমরা এই তৃতীয় মাত্রা প্রবর্তন করা প্রয়োজন. এবং এটি সক্রিয় আউট, যদি আমরা এই তৃতীয় মাত্রা পরিচয় করিয়ে না, আমরা পুরোপুরি এই কাজ করতে পারে না, তবে পবিত্র ঈপ্সিত বস্তু করা পেয়ে যাচ্ছে ধ্রুব সময় সন্নিবেশ এবং গতিশীল insertions যাতে আমরা হার্ড কোড আকার 26 শ্রেণীবিন্যাস না. আমরা অনেক নাম হিসাবে হিসাবে আমরা চাই, কিন্তু এর সন্নিবেশ যাক এখানে আমাদের 5 মিনিটের বিরতি নিতে পারেন এবং তারপর সঠিকভাবে না. ঠিক আছে. আমি বিবরণ সেট আপ প্রশংসনীয় কৃত্রিম আছে দ্বারা এলিস এবং তারপর বব এবং তারপর চার্লি এবং তারপর অনিতা চয়ন, যার নাম ছিল সম্ভবত এলিস সঙ্গে সংঘর্ষ যাচ্ছে. কিন্তু প্রশ্ন আমরা সোমবার শেষ হয় ঠিক কিভাবে সম্ভবপর হয় এটা আপনি যে এই ধরণের collisions পেতে চাই? অন্য কথায়, যদি আমরা এই ট্যাবুলার গঠন ব্যবহার শুরু, যা সত্যিই একটা অ্যারে, মধ্যে 26 অবস্থানের এই ক্ষেত্রে, কি যদি পরিবর্তে আমাদের ইনপুট অবিশেষে বিতরণ করা হয়? এটা এলিস এবং বব এবং চার্লি এবং ডেভিড কৃত্রিম এবং হইনি তাই ঘোষণা বর্ণানুক্রমে, এটি একটি ওভার অবিশেষে জেড এর মাধ্যমে বিতরণ হয়তো আমরা পেতে ভাগ্যবান এবং আমরা দুই এর একটি বা দুটি বি এর আছে চলুন করব না সঙ্গে খুব উচ্চ সম্ভাবনা, কিন্তু হিসাবে কাউকে নির্দিষ্ট, যদি আমরা এই সাধারণ সমস্যা এবং না 0 যাও 25 কিন্তু,, বলতে 0 থেকে 364 অথবা 65, প্রায়ই দিনের সাধারণত বছরে নম্বর, এবং প্রশ্ন জিজ্ঞেস করলাম, "কি এর সম্ভাবনা যে এই রুমে আমাদের দুটি একই জন্মদিন আছে?" এটি অন্য কোনো উপায় রাখুন, কি যে সম্ভাবনা আমাদের দুটি একটি নামের একটি দিয়ে শুরু করা আছে? প্রশ্ন বাছাই করা হয়, কিন্তু এই ঠিকানা স্থান, এই সার্চ স্পেস, হয় জন্মদিন ক্ষেত্রে বড়, কারণ আমরা অনেক বছরের মধ্যে আরো বর্ণমালার অক্ষর তুলনায় দিন আছে. একটি টাল হওয়ার সম্ভাবনা কি আছে? ভাল, আমরা এই figuring আউট বিপরীত উপায় গণিত দ্বারা মনে করতে পারেন. কোন collisions হওয়ার সম্ভাবনা কি আছে? ভাল, এখানে এই অভিব্যক্তি বলে যে কি সম্ভাবনা যদি শুধু এই রুমে এক ব্যক্তি, যে তারা একটি অনন্য জন্মদিন আছে আছে? এটা 100%. কারণ যদি রুমে কেবল এক ব্যক্তি আছে, তার বা তার জন্মদিন বছরের আউট করা 365 দিনের কোনো পারেন. সুতরাং 365/365 অপশন দেয় 1 একটি মান সম্পর্কে. তাই প্রশ্ন মুহূর্তে সম্ভাবনা শুধুমাত্র 1. কিন্তু যদি একটি রুমে দ্বিতীয় ব্যক্তি আছে, সম্ভাব্যতা যে তাদের জন্মদিন ভিন্ন কি? মাত্র 364 দিন সম্ভব, উপেক্ষা লীপ বছর আছে, তাদের জন্মদিন জন্য অন্যান্য ব্যক্তিদের সাথে সংঘর্ষ না. সুতরাং 364/365. যদি কোনো তৃতীয় ব্যক্তির মধ্যে আসে, এটা 363/365, এবং তাই ঘোষণা. সুতরাং আমরা গুণকারক এই ভগ্নাংশে একসাথে রাখা, যা ক্ষুদ্রতর এবং ছোট হচ্ছে, যাও জিনিসটা কি সম্ভাবনা যে আমাদের মধ্যে সব অনন্য জন্মদিন আছে? তবে আমরা অবশ্যই ঠিক, যে উত্তর এবং নিতে পারেন এটি প্রায় টুসকি এবং 1 যে সব বিয়োগ, একটি অভিব্যক্তি আমরা অবশেষে পাবেন না যদি আপনি আপনার গণিত বই ফিরে মনে রাখবেন, এটি একটি ভালো সামান্য কিছু দেখায়, যা আরো অনেক সহজেই করা হয় graphically ব্যাখ্যা. এবং x অক্ষ উপর এই এখানে গ্রাফিক জন্মদিন সংখ্যা আছে, বা ব্যক্তিদের সঙ্গে জন্মদিন, এবং y অক্ষ সংখ্যা একটি মেলার সম্ভাবনা. এবং কি বলছে এই হয় যে আপনি যদি থাকে, এর বলা যাক, এমনকি, যাক এর 22, 23 ভালো কিছু চয়ন. যদি 22 বা 23 জনের রুমে আছে, সম্ভাবনা হল যে যারা খুব কয়েক জনের দুটি একই জন্মদিন আছে যাচ্ছে সে আসলে সুপার উচ্চ combinatorially,. 50% শ্রেষ্ঠতা যে, ঠিক 22 জনের, একটি সেমিনার এবং কার্যতঃ, একটি বর্গ, যাদের মধ্যে 2 একই জন্মদিন আছে যাচ্ছি. যেহেতু অনেক উপায় যার মাধ্যমে আপনি একই জন্মদিন আছে পারেন. এমনকি খারাপ, যদি আপনি লেখচিত্র ডান দিকে তাকান, সময় দ্বারা আপনি এটি মধ্যে 58 ছাত্র সঙ্গে একটি শ্রেণী আছে, 2 জন্মদিন হচ্ছে মানুষের সম্ভাবনা হল সুপার, সুপার উচ্চ, প্রায় 100%. এখন, যে একটা বাস্তব জীবন সম্পর্কে মজা আসলে সাজান. কিন্তু প্রভাব, এখন, ডাটা স্ট্রাকচার এবং সংরক্ষণের জন্য তথ্য এর মানে হল কেবল অভিমানী আপনি একটি সুন্দর, পরিচ্ছন্ন, তথ্য অভিন্ন ডিস্ট্রিবিউশন আছে এবং আপনি একটি বড় যাও একটা গুচ্ছ মাপসই যথেষ্ট অ্যারে আছে কিন্তু আপনি অনন্য অবস্থানে মানুষ পেতে যাচ্ছেন না মানে. আপনি collisions আছে চলুন. সুতরাং হ্যাশ এই ধারণা, এর হিসাবে বলা, ভালো "এলিস" একটি ইনপুট গ্রহণ এবং কিছু উপায়ে তা মালিশ এবং তারপর পেয়ে 0 বা 1 বা 2 মত একটি answer ফিরে. পথ যে ফাংশান থেকে কিছু আউটপুট ফিরে এই সংঘর্ষের সম্ভাবনা দ্বারা জর্জরিত হয়. তাই কিভাবে আমরা যারা collisions হ্যান্ডেল করতে পারে? এক ক্ষেত্রে উপর ভাল,, আমরা ধারণা যে প্রস্তাব গ্রহণ করতে পারেন. আমরা সবাই ঠিক নিচে নামান করতে পারেন, অথবা হয়ত আরো একটু সহজভাবে, বরং সরানো অন্য সবাই, আমি কি ঠিক উপলব্ধ স্পট নীচে অনিতা সরাতে. তাই আপনি যদি এলিস 0 হয়, বব 1 হয়, চার্লি 2 হয়, আমরা শুধু অবস্থান 3 এ অনিতা রেখে দেব. এবং এই তথ্য কাঠামোর মধ্যে একটি কৌশল বলা রৈখিক অনুসন্ধান. লিনিয়ার কারণ আপনার এই লাইন করছেন হাঁটা, এবং আপনি অনুসন্ধান কতকাংশে জন্য ডাটা স্ট্রাকচার উপলব্ধ দাগ. অবশ্যই, এই হে (ঢ) মধ্যে devolves. যদি ডাটা স্ট্রাকচার এর পূর্ণ সত্যিই, ইতিমধ্যেই আছে এটা 25 জনের মধ্যে, এবং তারপর অনিতা বরাবর আসে, সে কি অবস্থান Z হবে এ শেষ পর্যন্ত, এবং যে সূক্ষ্ম. তিনি এখনও ফিট করে, এবং আমরা তার পরে খুঁজে পেতে পারেন. কিন্তু এই ছিল বিপরীত জিনিস দ্রুত গাড়ী চালানোর আপ লক্ষ্য. তাই যদি পরিবর্তে আমরা এই তৃতীয় মাত্রা চালু? যে কৌশল সাধারণত বলা হয় পৃথক chaining, অথবা চেইন হচ্ছে. এবং কি এখন একটি হ্যাশ টেবিল, এই ট্যাবুলার গঠন, আপনার টেবিল শুধুমাত্র পয়েন্টার একটি অ্যারে. কিন্তু কি যারা পয়েন্টার নির্দেশ হয় কি অনুমান? একটি লিঙ্ক তালিকা. তাই আমরা যদি এই বোথ ওয়ার্ল্ডস উভয় শ্রেষ্ঠ সময় লাগবে? আমরা প্রাথমিক ইনডেক্সসমূহ জন্য অ্যারে ব্যবহার ডাটা স্ট্রাকচার মধ্যে যাতে অবিলম্বে আমরা [0] [1] [30], তাই বা ঘোষণা যেতে পারেন, কিন্তু যাতে আমরা কিছু নমনীয়তা আছে এবং আমরা অনিতা এবং এলিস এবং আদম ফিট করতে পারে এবং অন্য কোন একটি নাম, আমরা পরিবর্তে অন্য দিন অক্ষ ইচ্ছামত বাড়া. এবং পরিশেষে আমরা এর হিসাবে সোমবার,, যে সংযুক্ত তালিকা প্রকাশ করার ক্ষমতা আছে. আমরা একটি তথ্য গঠন ইচ্ছামত হত্তয়া পারেন. অথবা এর পরিবর্তে, আমরা একটি বিশাল 2-মাত্রিক অ্যারের করতে পারে, কিন্তু যে একটি ভয়াবহ পরিস্থিতি হতে যাচ্ছে যদি একটি 2-মাত্রিক অ্যারের মধ্যে সারি এক এমনিতেই বড় হয় যথেষ্ট অতিরিক্ত ব্যক্তি যার নাম ক দিয়ে শুরু যাও জন্য ঘটবে না বালাই আমরা একটি বিশাল 2-মাত্রিক গঠন reallocate আছে যেহেতু অনেক নামে একটি মানুষ আছে, বিশেষত যখন কয়েক নামে Z কিছু মানুষ আছে. এটি শুধু একটি খুব বিক্ষিপ্ত তথ্য গঠন হতে যাচ্ছে. এটা, কিন্তু কোনো উপায়ে নিখুঁত না এখন আমরা অন্তত ক্ষমতা আছে অবিলম্বে যেখানে এলিস বা অনিতা জন্যে খুঁজে, অন্তত উল্লম্ব অক্ষ শর্তাদি, এবং তারপর আমরা শুধু যেখানে এই লিঙ্ক তালিকায় যাও অনিতা বা এলিস করা সিদ্ধান্ত আছে. যদি আমরা জিনিস বাছাই যত্ন সম্পর্কে না, কত তাড়াতাড়ি ভালো একটি কাঠামোর মধ্যে আমরা এলিস সন্নিবেশ করতে পারেন? এটা ধ্রুব সময়. আমরা [0] মধ্যে সূচক, এবং যদি কেউ আছে, এলিস যে লিঙ্ক তালিকা শুরু করার যায়. কিন্তু যে একটি বিশাল চুক্তি না. কারণ যদি তারপর অনিতা আসে বরাবর ধাপ কিছু নম্বর পরে যেখানে, অনিতা অন্তর্গত আছে? ওয়েল, [0]. Oop. এলিস যে লিঙ্ক তালিকায় উপস্থিত থাকে. কিন্তু আমরা যদি এই নাম বাছাই যত্ন সম্পর্কে না, আমরা শুধু ওভার এলিস, সন্নিবেশ অনিতা, কিন্তু অগ্রসর করতে পারে এমন যে একটি ধ্রুবক সময়. এমনকি যদি এলিস এবং আদম এই সব এবং অন্য একটি নাম আছে, এটি তাদের সত্যিই এর নাড়াচাড়া না শারীরিকভাবে. কেন? কারণ আমরা লিঙ্ক তালিকা, যারা জানে সঙ্গে কি এখানে এই নোডের ছিল যাইহোক হয়? আপনাকে যা করতে হবে তা হচ্ছে রুটি crumbs সরাতে. কাছাকাছি অবস্থিত তীরচিহ্নগুলি সরান; আপনি শারীরিকভাবে কাছাকাছি কোনো তথ্য সরাতে না আছে. সুতরাং আমরা যে ক্ষেত্রে অনিতা সন্নিবেশ, অবিলম্বে, করতে পারেন. কনস্ট্যান্ট সময়. সুতরাং আমরা ধ্রুবক সময় লুকআপ, এবং অনিতা মত একজনের ধ্রুবক সময় সন্নিবেশ আছে. কিন্তু বিশ্বের oversimplifying ধরনের. কি হবে যদি আমরা পরে এলিস খুঁজতে চান কি হবে যদি আমরা পরে এলিস খুঁজতে চান কত যে পদক্ষেপ না নিতে যাচ্ছে? [ছাত্র উত্তর, অপাচ্য] ঠিক. মানুষের লিঙ্ক তালিকায় নম্বর এলিস আগে. এটা, কারণ আমাদের তথ্য গঠন, আবার, এই উল্লম্ব এক্সেস আছে পুরোপুরি নিখুঁত না এবং তারপর এই ঝুলন্ত তালিকা সংযুক্ত আছে - আসলে, এর এটি একটি অ্যারের আঁকা না. এটা এই লিঙ্ক তালিকা করেনি তা ঝুলন্ত বন্ধ যে একটি ভালো সামান্য কিছু দেখায়. কিন্তু সমস্যা হল যদি এলিস এবং আদম এই সব এবং অন্য একটি নাম সমূহ ওইখানে শেষ পর্যন্ত এবং আরো আরো, ফাইন্ডিং কেউ আপ ধাপের একটি গুচ্ছ গ্রহণ শেষ হয়ে যায় নি, bcause আপনি সংযুক্ত তালিকা তর্ক আছে, যা একটি রৈখিক অপারেশন. সত্যিই তাই, তারপরে, সময় সন্নিবেশ চরমভাবে হয় O (n), যেখানে n হল তালিকার উপাদানের সংখ্যা. দ্বারা বিভক্ত, আসুন ইচ্ছামত এটি মি, যেখানে m সংযুক্ত তালিকার নম্বরে কল যে আমরা এই উল্লম্ব অক্ষের মধ্যে আছে. অন্য কথায়, যদি আমরা সত্যিই একটি নামের ইউনিফর্ম ডিস্ট্রিবিউশনের অনুমান, সম্পূর্ণ অবাস্তব. কিছু অক্ষর অবশ্যই অন্যদের চেয়ে আরো আছে. কিন্তু যদি আমরা এই মুহুর্তে একটি ইউনিফর্ম ডিস্ট্রিবিউশনের জন্য ধরে নিই, এবং আমরা মোট লোকজন, এবং মিঃ মোট চেইন n আছে উপলব্ধ আমাদের, তাহলে এই চেইন প্রতিটি দ্বারা মোটামুটি সহজভাবে মোট, এন চেইন সংখ্যা দ্বারা বিভক্ত করা হয়. সুতরাং n / মি. কিন্তু এখানে যেখানে আমরা সব গাণিতিকভাবে চতুর হতে পারেন. মি একটি ধ্রুবক, কারণ এইসব একটি নির্দিষ্ট নম্বর আছে. আপনি প্রারম্ভে আপনার অ্যারের ডিক্লেয়ার চলুন, এবং আমরা উল্লম্ব অক্ষ resizing পারব না. সংজ্ঞা দ্বারা, যে সংশোধন মতেই. এটা মাত্র অনুভূমিক অক্ষ,, তাই কথা বলতে হচ্ছে এখন তা পরিবর্তন হচ্ছে. তাই টেকনিক্যালি, এই একটি ধ্রুবক. সুতরাং এখন, সময় সন্নিবেশ বেশ অনেক O (n). সুতরাং যে সব যে ভাল না মনে. কিন্তু এখানে কি সত্য? আচ্ছা, এই সব সময়, সপ্তাহের জন্য, আমরা বলছে করছি হে (ঢ ²). হে (ঢ), 2 x ² n, - এন, 2 দ্বারা বিভক্ত. . . ech. শুধু n কিলোমিটার. কিন্তু এখন, এ সেমিস্টারে এই অংশ, আমরা কথা বলছি, আবার বাস্তব জগত সম্পর্কে শুরু করতে পারেন. এবং N / মি শুধু একা n তুলনায় একেবারে দ্রুততর. আপনি যদি একটি হাজার নাম আছে, এবং আপনি তাদের বিরতি একাধিক buckets মধ্যে আপ যাতে আপনি এই চেইন প্রতিটি শুধুমাত্র দশ নাম আছে, একেবারে দশ বিষয় অনুসন্ধান করা একটি জিনিষ হাজার তুলনায় দ্রুততর হবে. তাই আসন্ন সমস্যা সেট এক আপনাকে চ্যালেঞ্জ হবে ঠিক যে আমার মনে হয় যদিও, হাঁ, asymptotically এবং গাণিতিকভাবে, এই এখনও ঠিক রৈখিক, যা সাধারণ sucks যখন জিনিষ খুঁজে পেতে চেষ্টা. প্রকৃতপক্ষে, এটা যে তুলনায় দ্রুততর হতে যাচ্ছে কারণ এই ভাজক. তাই আবার এর এই ট্রেড বন্ধ করা আছে যাচ্ছে এবং তত্ত্ব এবং বাস্তবতা মধ্যে এই দ্বন্দ্ব, এবং knobs এক সেমিস্টারে এই সময়ে বাঁক শুরু হবে বাস্তবতা এক আরো হিসাবে আমরা semster এর শেষ জন্য ধরণের প্রস্তুত, হিসাবে আমরা ওয়েব প্রোগ্রামিং বিশ্বের, চিনান যেখানে সত্যিই, কার্যসম্পাদনের জন্য গণনা করা যাচ্ছে না কারণ আপনার ব্যবহারকারীদের যাচ্ছে না যাও এবং মনে দরিদ্র নকশা সিদ্ধান্ত প্রশংসা শুরু. একটি হ্যাশ টেবিল 31 উপাদানের সঙ্গে - তাই কিভাবে সংযুক্ত একটি রূপায়ণকারী সম্পর্কে আপনাদের যান? এবং পূর্ববর্তী উদাহরণে জন্মদিন সম্পর্কে ইচ্ছামত ছিল. যদি কেউ 1 জানুয়ারী বা ফেব্রুয়ারী 1 জন্মদিন, আমরা এই বালতি তাদের রেখে দেব. এটি যদি জানুয়ারি 2, ফেব্রুয়ারি 2, মার্চ 2, আমরা এই বালতি তাদের রেখে দেব. এটা কেন এটি ছিল 31. আপনি কিভাবে একটি হ্যাশ টেবিল ডিক্লেয়ার? এটা প্রশংসনীয় সহজ হতে পারে, নোড * টেবিল এটি আমার জন্য অবাধ নাম, [31]. এই দেয় নোড যাও 31 পয়েন্টার সম্পর্কে, এবং যে সম্পর্কে লিঙ্ক তালিকাতে 31 পয়েন্টার করতে সক্ষম হবেন এমনকি যদি চেইন থাকে যারা প্রাথমিকভাবে শূন্য. কি আমি প্রয়োগ করা চান যদি আমি ধারণ করতে চান "এলিস," "বব," "চার্লি"? ভাল, আমরা একটি কাঠামো সেগুলো মোড়ানো প্রয়োজন কারণ আমরা এলিস বব যাও, নির্দেশ চার্লি দিকে নির্দেশ করে, এবং তাই ঘোষণা. প্রয়োজন আমরা শুধু একা নাম না থাকতে পারে, তাই আমি একটি নতুন কাঠামো নামক এখানে নোড তৈরী করতে পারে. একটি নোডের মধ্যে প্রকৃত কি? এই নতুন লিঙ্ক তালিকায় একটি নোডের মধ্যে কি? প্রথম জিনিস, বলা শব্দ, ব্যক্তির নামের জন্য. LENGTH সম্ভবতঃ, মানব এর নাম সর্বাধিক দৈর্ঘ্যের সাথে সম্পর্কিত, যাই হোক না কেন যে হয়, 20, 30, ছবি কোণ ক্ষেত্রে 40 টি অক্ষর, এবং +1 কি জন্য? এটি শুধু শূন্য অতিরিক্ত অক্ষর, \ 0. তাই এই নোডের ভিতর নিজেই "কিছু" মোড়কে হয়, কিন্তু এটি একটি পয়েন্টার নামক পরবর্তী ঘোষণা যাতে আমরা এবং বব যাও এলিস চার্লি শৃঙ্খল তাই প্রয়োগ করতে পারেন. কিন্তু শূন্য হতে না হতে অগত্যা নাও থাকতে পারে. এই হ্যাশ টেবিল উপর কোন প্রশ্ন? হাঁ? [ছাত্র প্রশ্ন জিজ্ঞেস করে, অপাচ্য] একটি অ্যারে - ভালো প্রশ্ন. কেন এই একটি অ্যারের বদলে শুধু গৃহস্থালি * মধ্যে গৃহস্থালি শব্দ? এই কিছুটা নির্বিচারে উদাহরণে, আমি রিসোর্ট আছে চায় নি আসল নামের জন্য প্রতিটি malloc. আমি পংক্তিটি একটি মেমরির সর্বোচ্চ পরিমাণ ডিক্লেয়ার চেয়েছিলেন যাতে আমি কাঠামোর মধ্যে এলিস \ 0 এবং না malloc এবং বিনামূল্যে এবং ভালো মোকাবেলা আছে অনুলিপি করতে পারিনি. কিন্তু আমি যে আমি যদি স্থান ব্যবহার আরো সচেতন হতে চেয়েছিলেন পারে. ভাল প্রশ্ন. তাই আসুন এই বিশ্বজনীন করা থেকে দূরে চেষ্টা ডাটা স্ট্রাকচার এবং আজ বাকি আরো সাধারণত ফোকাস এবং অন্যান্য যে সমস্যা রয়েছে, আমরা একই মৌলিক ব্যবহার করে সমাধান করতে পারে যদিও ডাটা স্ট্রাকচার নিজেরাই তাদের বিবরণ পার্থক্য হতে পারে. সুতরাং কম্পিউটার বিজ্ঞান মধ্যে সক্রিয় আউট, গাছ খুব সাধারণ. এবং আপনি একটি ট্রি সাজানোর একটি পরিবার গাছ মত মনে করতে পারেন, যেখানে কিছু শিকড়, কিছু পরিবারের মা ও কর্ত্রী বা কুলপতি আছে, ঠাকুরমা বা পিতামহ বা তার আগে ফিরে, যার তলদেশে হয় বাবা বা মায়ের এবং বিভিন্ন ভাইবোন বা চান. সুতরাং একটি ট্রি নোড আছে এবং এটি শিশু রয়েছে, সাধারণত প্রতিটি নোডের জন্য 0 বা আরো শিশু. অপভাষা এবং কিছু যে আপনি এই ছবি দেখতে এখানে হয় সামান্য কিডস প্রান্ত বা grandkids কোন যারা আছে তাদের থেকে কোন emanating তীর, তাই তথাকথিত পাতা, এবং ভেতরের যে কেউ একটি নোডের মধ্যে অভ্যন্তরীণ; আপনি ঐ লাইন বরাবর কিছু কল করতে পারেন. কিন্তু এই কাঠামো অত্যন্ত সাধারণ. এই এক একটা সামান্য নির্বিচারে. আমরা বাম দিকে এক সন্তান আছে, আমরা ডানে তিনটি সন্তান থাকে, নীচে দুটি সন্তান বাকি. সুতরাং আমরা বিভিন্ন মাপের গাছ আছে, কিন্তু করতে পারেন যদি আমরা প্রমিত জিনিষ শুরু, এবং আপনি প্যাট্রিক ভিডিও থেকে এই একটি সংক্ষিপ্ত আগের থেকে বাইনারি অনুসন্ধান প্রত্যাহার হতে পারে অনলাইন, বাইনারি অনুসন্ধান একটি অ্যারের সাথে বাস্তবায়িত করা হবে না আছে কাগজ বা একটি বিদ্যালয়ে লিপির জন্য তক্তা লাগেজ. ধরুন আপনি যে আরো একটি অত্যাধুনিক তথ্য কাঠামো আপনার নম্বর সঞ্চয় চেয়েছিলেন. আপনি ভালো একটি ট্রি তৈরি করতে পারি. আপনি একটি নোডের মধ্যে ঘোষিত সি আছে, এবং যে নোডের ভিতর এটা অন্তত দুটি উপাদান থাকতে পারে না পারে. এক নম্বর হল আপনি সংরক্ষণ করতে ইচ্ছুক, এবং অন্যান্য হয় - ভাল, আমরা এক আরো প্রয়োজন. অন্যান্য তার শিশু. তাই এখানে অন্য ডাটা স্ট্রাকচার. এই সময়, একটি নোডের একটি নম্বর সংরক্ষণকারী হিসাবে এন সংজ্ঞায়িত করা হয় এবং তারপর দুই পয়েন্টার; বাম শিশু এবং শিশুর অধিকার. এবং তারা নির্বিচারে পারব না. এই গাছ সম্পর্কে আকর্ষণীয় বিষয় কি? কিভাবে আমরা এই রোগে করেছি আউট বা কিভাবে প্যাট্রিক পাড়া তার ভিডিওতে এটি আউট প্যাটার্ন কি? এটা স্পষ্ট যে ধরনের কিছু বাছাই এখানে হচ্ছে আছে, কিন্তু সহজ নিয়ম কি? হাঁ? [ছাত্র উত্তর, অপাচ্য] পারফেক্ট. আপনি যদি এই সময়ে কটাক্ষে দেখা, আপনি বাম দিকের ছোট সংখ্যা দেখতে, বাম বড় সংখ্যা, কিন্তু যে প্রত্যেক নোডের জন্য প্রযোজ্য. প্রতিটি নোডের মধ্যে, তার সন্তানের এটা কম বাম, ডান এবং তার সন্তানের এটা তার চেয়ে অনেক বেশী. এখন কি এই মানে হল যদি আমি,, বলার জন্য 44 নম্বর এই তথ্য গঠন অনুসন্ধান করতে চান, আমি, কারণ এই সব এখন এইসব আরো জটিল ডাটা স্ট্রাকচার হিসাবে root-এ শুরু,, আমরা কেবল এক জিনিস একটি ইশারা আছে, শুরুতে. এবং এই ক্ষেত্রে, শুরুতে হয় রুট. এটি বাম শেষ না, এটা এই কাঠামো রুট. সুতরাং আমি দেখতে এখানে 55, 44 এবং আমি খুঁজছি. কোন দিক আমি যেতে চান? ওয়েল, আমি বাম যেতে চাই, কারণ সম্ভবত ডান যাও, যাও খুব বড় হবে. তাই এখানে লক্ষ্য করা, আপনি ধারণার অর্ধেক গাছ কাটা কতকাংশে কারণ আপনি নিচে যাচ্ছে ডান দিকে যাও না করছি. তাই আমি এখন 55 থেকে 33 যান. এটা একটা সংখ্যা খুবই ছোট. আমি 44 জন্য, খুঁজছি কিন্তু এখন আমি জানি যদি 44 এই গাছ হয়, আমি ডান দিকে স্পষ্টত যেতে পারেন না. তাই আবার, আমি কেঁটে সাফ অর্ধেক গাছ. এটি বেশ অনেক ফোন বই ধারণার দিক থেকে অভিন্ন. এটা কি আমরা অভিন্ন বিদ্যালয়ে লিপির জন্য তক্তা উল্ল্যেখ সঙ্গে কি, কিন্তু এটা আরো পরিশীলিত একটি কাঠামো যা আমাদের আসলে করতে পারবেন এই অ্যালগরিদম এবং বিভক্ত করা নকশা দ্বারা বশীভূত করা, এবং সত্য, ভালো একটি কাঠামো ঢোঁড়ন - উপস. ভালো একটি কাঠামো অঞ্চলগুলো, যেখানে এটি শুধুমাত্র "এই পথ বা যেতে যেতে যে পথ," যে সমস্ত কোড যা প্রথমে আপনার মনের নিচু যখন বিভাগে তা বাস্তবায়নের জন্য অর্থ এটি দিয়ে হাঁটা বা বাড়ীতে, বাইনারি অনুসন্ধান জন্য, recursion বা পুনরাবৃত্তির ব্যবহার করে, এটা ঘাড় ব্যাথা করছে. মধ্যম উপাদান খুঁজে পাও, তাহলে আপনার rounding আপ বা ডাউন না. এর এই পর্যন্ত একটি সৌন্দর্য কারণ আমরা এখন recursion আবার ব্যবহার করতে পারেন, কিন্তু আরো অনেক কিছু পরিচ্ছন্নভাবে. বস্তুত, যদি আপনি সংখ্যা 55 এ থাকেন এবং আপনাকে 44 খুঁজতে চান, আপনাকে যেতে হবে এই ক্ষেত্রে বাকি, তারপর কি করবেন? আপনি ঠিক সেই একই আলগোরিদিম চালানো. আপনি নোড মান পরীক্ষা করে, আপনি যেতে বাম বা ডান. তারপর আপনি নোড মান, চেক বা বাম ডানে যান. এই recursion যাও পুরোপুরি উপযুক্ত হয়. অতীতে সুতরাং যদিও আমরা কিছু মোটামুটি অবাধ recursion জড়িত উদাহরণ সম্পন্ন করেছি যে তথ্য stuctures সঙ্গে কোন যাও recursive করা প্রয়োজন,, বিশেষত গাছ, এটা একটা সমস্যা গ্রহণের এই ধারণা নিখুঁত আবেদন, এটি হ্রাস, এবং তারপর একই ধরনের, কিন্তু ছোট, প্রোগ্রাম সমাধান. তাই অন্য কোনো তথ্য কাঠামো, যা আমরা পরিচয় করিয়ে দিতে পারেন. এই প্রথম এক নজরে যাও রহস্যপূর্ণ চেহারা এ, পরিকল্পিত কিন্তু এই এক এর আশ্চর্যজনক হয়. সুতরাং এই একটি তথ্য গঠন নামক একটি trie, trie, যা শব্দ আহরণ থেকে উত্তরাধিকার সুত্রে প্রাপ্ত হয়, যা, উচ্চারিত পুনরায় চেষ্টা-Val না কিন্তু যে এর কি দুনিয়া কল এইসব জিনিস. চেষ্টা. T-r-i-ই. এটা একটা কিছু ধরণের ট্রি, কিন্তু একটি trie বিভিন্ন নোডের প্রতিটি কি উপস্থিত হতে পারে? এবং এই একটি বিট বিভ্রান্তিকর কারণ এটা সংক্ষিপ্ত ধরনের. কিন্তু মনে হচ্ছে এই trie প্রতিটি নোডের আসলে একটি অ্যারে. এবং যদিও এই চিত্রটি লেখক এটা দেখানো না করেনি, এই ক্ষেত্রে, এই trie একটি তথ্য কাঠামো যার উদ্দেশ্য জীবনের শব্দ সঞ্চয় হয় একটি ভালো-l-i,-c-ই অথবা B-o-বো. এবং উপায় যার মাধ্যমে এই তথ্য দোকানে এলিস এবং বব এবং চার্লি এবং অনিতা এবং তাই ঘোষণা এটি একটি অ্যারে ব্যবহার করে যেখানে একটি trie অ্যালিস ইন সঞ্চয়, আমরা রুট নোড একটি অ্যারের মতো দেখতেও শুরু, এবং এটি সাঁটে লেখার স্বরলিপি হয়েছে এর লিখিত. লেখক বাদ abcdefg কারণ যে কোন নাম ছিল. তারা শুধুমাত্র M এবং পি ও টি দেখিয়েছে, কিন্তু এই ক্ষেত্রে, যাক এর কিছু নামের যে এখানে আছেন দূরে থেকে এলিস এবং বব এবং চার্লি সরাতে. ম্যাক্সওয়েল এই চিত্রটি প্রকৃতপক্ষে হয়. সুতরাং কিভাবে লেখক দোকান কি এম একটি-x-w-ই-l-l? তিনি এই রুট নোড শুরু হয়, এবং একই সাথে [এম], যাতে প্রায় 13, অ্যারের মধ্যে 13 অবস্থান. তারপর থেকে সেখানে, একটি ইশারা আছে. একটি পয়েন্টার নেতৃস্থানীয় অন্য অ্যারের. সেখান থেকে লেখক যে অ্যারের মধ্যে একটি সূচীবদ্ধ অবস্থান এ, উপরের বাম হিসাবে এ আছে ফোটানো, এবং তারপর তিনি অন্য অ্যারের যে পয়েন্টার অনুসরণ করে, পয়েন্টার যাও এবং অবস্থান X-এ গিয়েছিলাম তারপর পরবর্তী অ্যারের অবস্থান ওয়াট, ই, এল, এল, এবং তাই ঘোষণা, এবং পরিশেষে, আমি আসলে এই একটি ছবি লাগাতে চেষ্টা করুন. একটি নোডের মধ্যে কোড মত চেহারা কি আছে? একটি trie একটি নোড পয়েন্টার আরো নোড যাও শ্রেণীবিন্যাস রয়েছে. কিন্তু এটাও যাও অন্তত এই বাস্তবায়ন হতে বুলিয়ান মান কিছু, সেখানে আছে. আমি এটা ঘটতে is_word কল. কেন? কারণ আপনি যখন ম্যাক্সওয়েল ঢোকাতে করছি, আপনি সন্নিবেশ করছি না এই তথ্য গঠন মধ্যে কিছু. আপনি আপনার লেখা X. করছি না লেখা এম করছি না সমস্ত আপনি করছেন পয়েন্টার অনুসরণ করা হয়. পয়েন্টার যে এম তারপর, পয়েন্টার যে A প্রতিনিধিত্ব করে উপস্থাপন করে, তারপর পয়েন্টার যে এক্স তারপর, লে, ই, এল, এল প্রতিনিধিত্ব করে, কিন্তু আপনি কি শেষে কি প্রয়োজন হয়, চেক যান বাছাই করা, আমি এই অবস্থানে পৌঁছেছেন. একটি শব্দ যে তথ্য কাঠামো এখানে শেষ ছিল. তাই একটি trie সত্যিই সাথে ভরা এবং লেখক উপস্থাপন করতে সামান্য triangles সঙ্গে এই terminuses. এই মাত্র মানে হল যে সত্য এই ত্রিভুজ এখানে, এই সত্য বুলিয়ান মান মানে যদি আপনি ট্রির পিছনের দিকে চলা, যে একটি শব্দ ম্যাক্সওয়েল নামক এই হল অর্থ. কিন্তু শব্দ foo বিন্যাস, উদাহরণস্বরূপ, গাছ মধ্যে, তার কারণ হল যদি আমি রুট নোড এ শুরু শীর্ষে আপ এখানে, কোন চ পয়েন্টার, কোন ণ পয়েন্টার, কোন ণ পয়েন্টার নেই. Foo এই অভিধান একটি নামের নয়. কিন্তু এর বিপরীতে, টুরিং, t-u-r-i-n-g. আবার, আমি টন বা না বা r বা তোমার বা n বা g সঞ্চয় না. কিন্তু আমি এই তথ্য কাঠামো দোকান কি সত্য পথ নিচে এখানে এই নোডের একটি মান - ট্রির সত্য এই is_word বুলিয়ান মান নির্ধারণ করতে হবে. সুতরাং একটি trie এই খুব আকর্ষণীয় মেটা গঠন ধরনের, যেখানে আপনি অভিধান এই ধরণের জন্য সত্যিই সংরক্ষণ করছি না নিজেদের শব্দ. পরিষ্কার করা, শুধুমাত্র আপনার সঞ্চয়ের yes অথবা no, একটি শব্দ যে এখানে সমাপ্ত হয়. এখন কি সংশ্লেষ? আপনি যদি একটি অভিধান মধ্যে 150,000 শব্দ আছে যা মেমরির মধ্যে সঞ্চয় করার চেষ্টা করছেন একটি লিঙ্ক তালিকা মত ব্যবহার করে, আপনার লিঙ্ক তালিকায় 150,000 নোড আছে যাচ্ছি. এবং যারা শব্দের এক বর্ণানুক্রমে ফাইন্ডিং হে (ঢ) সময় লাগতে পারে. রৈখিক সময়. কিন্তু একটি trie এখানে কেস, একটি শব্দ খুঁজে বের করার চলমান সময় কি? এটি সক্রিয় সৌন্দর্য এখানে আউট হল, এমনকি যদি আপনি ইতিমধ্যে এই অভিধানে 149.999 শব্দ আছে, এই তথ্য গঠন সঙ্গে হিসাবে প্রয়োগ, কত সময় এটা সন্ধান করতে বা আরো এক ব্যক্তির সন্নিবেশ, ভালো এলিস যে, এলিস নিতে? ওয়েল, এটা শুধুমাত্র 5, হয়তো trailing অক্ষর 6 জন্য পদক্ষেপ. কারণ কাঠামো অন্যান্য নামের presense কিন্তু এলিস ঢোকাতে পথে আসে না. তাছাড়া, এলিস ফাইন্ডিং একবার এই অভিধানে 150,000 শব্দ রয়েছে কিন্তু এলিস খুঁজে বের করার উপায় আপনার এ সব না পাওয়া, কারণ এলিস হয়. . . . . কারণ, এখানে আমি একটি বুলিয়ান মান পাওয়া গেছে. এবং যদি কোন বুলিয়ান সত্য হয় তাহলে, এলিস আছে এই শব্দের তথ্য গঠন হয় না. অন্য কথায়, জিনিষ খুঁজে পেতে এবং এই নতুন মধ্যে ঢোকাতে জিনিস চলমান সময় trie বা তথ্য গঠন হে সারাংশ - তা n না. কারণ 150,000 মানুষের presense এলিস প্রভাবিত হয় না, মনে হয়. সুতরাং আসুন কল এটি ট, যেখানে k ইংরেজী শব্দের সর্বোচ্চ দৈর্ঘ্য যা সাধারণত বেশী 20-কিছু অক্ষর. সুতরাং k একটি ধ্রুবক. তাই পবিত্র ঈপ্সিত বস্তু আছে বলে মনে হচ্ছে আমরা এখন পাওয়া হয় মুছে জন্য একটি trie, টিপে জন্য ধ্রুবক সময় যে, এর জন্য অনুসন্ধান,. কারণ ইতিমধ্যে কাঠামো জিনিষ সংখ্যা, যা এমনকি শারীরিকভাবে যায় না. আবার, শুধু ঐ চেক করা বন্ধ বাছাই করছেন, হ্যাঁ বা না, তার ভবিষ্যতের চলমান সময় কোন প্রভাব আছে. কিন্তু পেয়েছিলাম একটি ধরা আছে এর অন্যথায়, আমরা এত সময় নষ্ট হতো না এই সমস্ত অন্যান্য ডাটা স্ট্রাকচার এবং মাত্র এক গোপন পরিশেষে যে আশ্চর্যজনক যাও পেতে. তাই দাম আমরা এখানে এই গরিমা অর্জন বিল দিব? স্থান. এই জিনিষ গুরুভার. এবং যে কারণে লেখক এখানে উপস্থিত ছিল না, যে এইসব জিনিস লক্ষ্য করা অ্যারে মত সাথে সাথে যে সব, তিনি গাছ বাকি, trie বাকি কি আঁকা না, কারণ তারা শুধু প্রাসঙ্গিক বিবরণ যাও না. কিন্তু এই নোডের মধ্যে সমস্ত হল সুপার প্রশস্ত, এবং গাছ প্রতিটি নোডের লাগে আপ 26 বা আসলে, কারণ এই ক্ষেত্রে আমি ঊর্ধকমা জন্য স্থান সহ ছিল 27 হতে পারে অক্ষর যাতে আমরা apostrophized শব্দ হতে পারে. এই ক্ষেত্রে, এই ব্যাপক অ্যারে. সুতরাং যদিও তারা picutured করছি না, এই সময় নেয় উপস্থিত RAM-র পরিমাণ বিপুল আপ. কোন সূক্ষ্ম আধুনিক হার্ডওয়্যারে especilly হতে পারে, কিন্তু যে tradeoff. আমরা আরো স্থান দ্বারা খরচ কম সময় পান. সুতরাং যেখানে এই সমস্ত যাচ্ছে? ভাল, এর কি দেওয়া - এর এখানে দেখুন. এর এই লোক একটা লাফ এখানে করুক না. বিশ্বাস করুন, হিসাবে অনেক মজা হিসাবে সি এখন কিছু সময়ের জন্য করা হয়েছে, আমরা সেমেস্ত্র এটি যেখানে সময় জিনিষ আরো আধুনিক ট্র্যানজিশনের পয়েন্ট করছেন পৌঁছেছিল. একটি উচ্চ স্তরের থিংস. এবং যদিও জন্য পরবর্তী কয়েক সপ্তাহ আমরা এখনও পয়েন্টার এবং মেমরি পরিচালনার বিশ্বের নিজেদেরকে চুবান চালিয়ে যাব যে আরাম সঙ্গে যেটা পরে আমরা নির্মাণ করতে পারেন, শেষ খেলা শেষ পর্যন্ত হয়, হাস্যকর ভাবে পরিচয় করিয়ে দিতে এই ভাষা, না. আমরা 10 মিনিটের মত HTML এ বিষয়ে কথা খরচ করতে হবে. সমস্ত HTML এ হল একটি মার্কআপ ভাষা, এবং কি একটি মার্কআপ ভাষা খোলা বন্ধনী এবং বদ্ধ বন্ধনী যে বলে 'এই সাহস' এই সিরিজ 'এই কেন্দ্রিক না' এই italics না '.' এটা, কিন্তু সব বুদ্ধিমত্তা যে আকর্ষণীয় না এটা অতি দরকারী. এবং এটা অবশ্যই এর সর্বত্র বিরাজমান এই দিন. তা কিন্তু HTML-দুনিয়া সম্পর্কে শক্তিশালী, এবং ওয়েব প্রোগ্রামিং আরো সাধারণভাবে, গতিশীল হয় জিনিষ নির্মাণ; পিএইচপি বা পাইথন বা রুবি বা জাভা বা সি # ভালো ভাষায় কোড লেখা. সত্যিই, যাই হোক না কেন আপনার পছন্দের ভাষা, এবং উৎপাদিত পরিবর্তনশীল এইচটিএমএল. কিছু বলা পরিবর্তনশীল CSS এর জেনারেট হচ্ছে. Cascading স্টাইল শীট, যা নন্দনতত্ব সম্পর্কে হয়. তাই যদিও, আজ, যদি আমি পরিচিত Google.com ভালো কিছু ওয়েবসাইটে যান, এবং আমি বিকাশকারী, উৎস দেখুন, যা হয়তো আপনি আগে করেছেন দেখতে যান, কিন্তু সোর্স দেখতে যাচ্ছে, সম্ভবত এই স্টাফ দেখতেও সুন্দর রহস্যপূর্ণ. কিন্তু এই অন্তর্নিহিত কোড যে Google.com কার্যকরী. অন ​​সামনে শেষ. এবং প্রকৃতপক্ষে এই সমস্ত ফুঁয়োফুঁয়ো নন্দনতত্ব উপাদান. এটি এখানে CSS আপ. যদি আমি নিচে স্ক্রল করে রাখতে আমরা কিছু রঙ বিশেষভাবে স্টাফ পাবেন. এটি HTML এ. Google-এর কোড একটি জগাখিচুড়ি মত দেখাচ্ছে, কিন্তু আসলে আমি যদি ভিন্ন একটি উইন্ডোতে খুলুন, আমরা কিছু এই কাঠামো দেখতে পারেন. যদি আমি এই পূর্ণপ্রকাশিত এখানে, নোটিশ, এটা একটা সামান্য আরো পাঠযোগ্য. আমরা এই ট্যাগটি দেখতে ক্ষণপরে চলুন, [শব্দ] একটি ট্যাগ, এইচটিএমএল, মাথা, শরীর, div, স্ক্রিপ্ট, টেক্সট এলাকা, তাল, কেন্দ্রিক, div. এবং এই এছাড়াও রহস্যপূর্ণ সুদর্শন হয় প্রথম নজরে সাজাতে, কিন্তু এই জগাখিচুড়ি সব কিছু নিদর্শন, এবং repeatable নিদর্শন অনুসরণ করে, যাতে আমরা একবার বুনিয়াদি পেতে নিচে, আপনি ভালো কোড লিখতে সমর্থ হবেন এবং তারপর এই এখনো অন্য ভাষা, যাকে বলা হয় জাভাস্ক্রিপ্ট ব্যবহার করে ভালো কোড নিপূণভাবে. জাভাস্ক্রিপ্ট এবং একটি একটি ব্রাউজারের ভাষা যে ভিতরে রান আজ যে হার্ভার্ড কোর্স, উপর আমরা অবশ্যই কেনাকাটা টুল যা গুগল ম্যাপের ব্যবহার করে ব্যবহার আপনাকে একটি গতিশীলতা আভা দিতে, ফেসবুক তাত্ক্ষণিক অবস্থা আপডেট দেখান আপনি দেয়, টুইটার টুইট প্রদর্শন অবিলম্বে আপনি এটি ব্যবহার করে. এই সমস্ত আমরা নিজেরাই ইন চুবান আরম্ভ করা হবে কিন্তু সেখানে পেতে, আমরা একটি ইন্টারনেট সম্পর্কে সামান্য কিছু বুঝতে হবে. এই ক্লিপ এখানে মাত্র একটি মিনিট দীর্ঘ, এবং এর জন্য যাক এখন এই সত্য হয়, অনুমান, কিভাবে ইন্টারনেট কি আসা সম্পর্কে জন্য একটি টিজার হিসেবে কাজ করে. আমি দিতে "নেট এর ওয়ারিয়র্স." আপনি [♫ ♫ স্লো কোরাস সঙ্গীত] [পুরুষ কথক] তিনি একটি বার্তা নিয়ে এসেছেন. সঙ্গে একটি প্রোটোকল সব তার নিজস্ব. [♫ ♫ দ্রুত বৈদ্যুতিন সঙ্গীত] তিনি শীতল ফায়ারওয়াল বিশ্ব এসেছিলেন, রাউটার uncaring, এবং বিপদ মৃত্যুর চেয়ে অনেক খারাপ. তিনি দ্রুত. তিনি দৃঢ়. তিনি এর TCP / IP সংক্রান্ত, এবং তিনি আপনার ঠিকানা এর পেয়েছিলাম. নেট এর ওয়ারিয়র্স. [Malan] পরবর্তী সপ্তাহে, তারপর. ইন্টারনেট. ওয়েব প্রোগ্রামিং. এটি CS50. [CS50.TV]