[Powered by Google Translate] [সপ্তাহ 6]
[ডেভিড জে Malan] [হার্ভার্ড বিশ্ববিদ্যালয়]
[এটি CS50.] [CS50.TV]
>> এটি CS50, এবং এই সপ্তাহ 6 শুরু,
তাই নতুন সরঞ্জামের একটি দম্পতি এখন উপলব্ধ করার জন্য আপনাকে উপকারিতা নিতে,
যার প্রথম CS50 স্টাইল বলা হয়.
অডস হয় যদি আপনার সম্পর্কে বা শিক্ষণ ফেলোগণ কোনো ভালো থাকেন,
আপনি সম্ভবত করেছি একটি প্রোগ্রাম যার শৈলী একটি ভালো সামান্য কিছু চেহারা দেখা যায়.
হতে পারে আপনি শুরু কিছু কোণ রাত্রিতে কাটা, বা আপনি পরে এটা মোকাবেলা করব,
এবং তারপর একটি TF CA অথবা অফিসে কাজের সময় আসে না.
তারপর এটা হার্ড জন্য আমাদের পড়তে.
ওয়েল, এই কোড একটি চিহ্নগুলি সিন্টেক্সের ক্ষেত্রে সঠিক, এবং এটা কম্পাইল করা, এবং এটি আসলে চালানো হবে.
কিন্তু এটা স্পষ্টভাবে শৈলী জন্য একটি 5 হইনি.
>> কিন্তু এখন, যদি আমরা এই ডিরেক্টরির মধ্যে যেতে এখানে-
এবং লক্ষ্য করা যে আমি conditions2.c-আছে
এবং আমি এই ফাইলটি conditions2.c এই নতুন কমান্ড, style50, রান, লিখুন,
বিজ্ঞপ্তি যে এটি সম্পর্কে অবগত যে এটি stylized হয়েছে.
Gedit লক্ষ্য করেছি যে ফাইলটি ডিস্কে পরিবর্তিত হয়েছে,
এবং যদি আমি রিলোড ক্লিক করুন, এখন আপনার সব সমস্যা স্বয়ংক্রিয়রূপে করা হয়.
[সাধুবাদ]
যে জিনিস আমরা কি এই সপ্তাহান্তে এক.
এটা অপূর্ণ বুঝতে পারছি না কারণ কিছু কিছু কোড আছে
যে সহজভাবে তা পুরোপুরি stylize সক্ষম হবেন না, হবে
কিন্তু বুঝতে পারছি এটা এখন একটি হাতিয়ার আপনার সুবিধা গ্রহণ করতে পারেন
যদি শুধুমাত্র আরো errantly স্থাপিত কোঁকড়া ধনুর্বন্ধনী সম্পর্কে পরিষ্কার কিছু করতে চান.
>> কিন্তু এখন আরো আকর্ষক হয় CS50 চেক.
CS50 চেক সঙ্গে, আপনি আসলে একই শুদ্ধতা পরীক্ষা সম্পাদন করতে পারবেন না
আপনার নিজস্ব কোড যে শিক্ষণ ফেলোগণ সক্ষম হয়.
এটি একটি কমান্ড লাইন থেকে ব্যবহারযোগ্য যন্ত্রপাতি মধ্যে যে এখন আসে
যত তাড়াতাড়ি আপনি প্রতি হিসাবে একটি update50 না
pset 4 বিবরণ এবং আপনার ব্যবহার করা ভালো মূলত এটি.
আপনি কমান্ড চালানোর check50.
তারপর আপনি একটি কমান্ড লাইন আর্গুমেন্ট প্রেরণ করতে, অথবা একটি সুইচ বা একটি পতাকা হিসাবে আরো সাধারণভাবে পরিচিত.
সাধারণভাবে, যে হাইফেন আছে একটি সুইচ বলা হয়
একটি কমান্ড লাইন প্রোগ্রাম, তাই নির্দিষ্ট করে-c করা
চেক করতে হবে যে আপনার চালাতে চান.
>> পরীক্ষা যে আপনি চালাতে চান এককভাবে এই স্ট্রিং দ্বারা সনাক্ত করা হয়,
2012/pset4/resize.
অন্য কথায়, যে মাত্র একটি অবাধ কিন্তু অনন্য স্ট্রিংটি
যে আমরা এককভাবে pset 4 এর শুদ্ধতা পরীক্ষা চিহ্নিত করে.
এবং তারপর আপনি একটি ফাইলের পৃথক তালিকা নির্দিষ্ট স্থান যে আপনি আপলোড করতে ইচ্ছুক
যাও বিশ্লেষণের জন্য CS50 চেক.
উদাহরণস্বরূপ, যদি আমি আমার সমাধান ঢোকা এখানে জন্য resize.c-
আমাকে একটি উইন্ডো-বড় টার্মিনাল খুলুন
এবং আমি এগিয়ে যান এবং এর যাক চালানো বলতে check50 করে-c করা 2012/pset4/resize,
এবং তারপর আমি এগিয়ে যান এবং ফাইলের নাম উল্লেখ,
resize.c, তারপর লিখুন এবং আঘাত, এটি সংকোচন,
এটি আপলোড, এটি পরীক্ষা করা, এবং আমি একটি পরীক্ষা আভা ব্যর্থ হয়েছে.
লাল উপরের বাম এক বলছেন যে resize.c এবং bmp বিদ্যমান.
যে ছিল পরীক্ষা. প্রশ্ন ছিল যে আমরা জিজ্ঞাসা.
এবং এটা অখুশী ছিলেন কারণ উত্তর মিথ্যা.
এটি নীচের সাদা টেক্সট বলেছেন প্রত্যাশিত অস্তিত্ব bmp.h, এবং যে কেবল আমার ভুল.
আমি এটি আপলোড ভুলে গেছি, তাই আমি উভয় ফাইল আপলোড করার জন্য প্রয়োজন,
resize.c এবং bmp.h.
কিন্তু এখন অন্যান্য সকল পরীক্ষার হলুদ হয় কারণ তারা না চালানোর আছে বিজ্ঞপ্তি,
এবং তাই স্মাইলি মুখ উল্লম্ব কারণ তিনি এর ত্ত খুশি না দু: খিত,
কিন্তু আমরা লাল যে সমস্যাটি আগে অন্যান্য চেক চালানো হবে প্রতিকার আছে.
>> আমাকে এই সমাধানের জন্য.
সম্পর্কে জুম আউট এবং এই পুন: প্রকাশ করা যাক bmp.h সঙ্গে এই সময় এছাড়াও,
কমান্ড লাইন,, লিখুন এবং এখন যদি সব ঠিক যায়,
তা চেক করুন ও তারপরে ফলে ফিরে আপনার-রাখা যাচ্ছে উত্তেজনাকর
সমস্ত সবুজ, যার অর্থ আমি pset 4 ব্যবহার করছি সেটা সত্যিই ভাল এ পর্যন্ত.
আপনি এখানে দেখতে ও বর্ণনামূলক লেখা থেকে আবিষ্কার করতে পারেন
ঠিক কি এটা আমরা পরীক্ষিত.
আমরা পরীক্ষিত প্রথম ফাইল উপস্থিত নয়?
এরপর আমরা পরীক্ষিত resize.c কম্পাইল করে?
তারপর আমরা পরীক্ষা কিন্তু যখন হবে, পুনরায় মাপ ফ্যাক্টর, 1 মাপ পরিবর্তন একটি 1x1-পিক্সেল BMP না.
এখন, যদি আপনি কোন ধারণা কি n হল আছে, আপনি একবার pset 4 মধ্যে আপনি আকর্ষণীয় হবে,
কিন্তু শুধু যে একটি বৈধতা পরীক্ষা করে নিশ্চিত করুন যে আপনি resizing পারব না করা
একটি চিত্র এ সব যদি পুনরায় মাপ ফ্যাক্টর হয় 1.
বৈসাদৃশ্য দ্বারা যদি,, এটি একটি একটি 1x1 পিক্সেল BMP যাও 1x1 পিক্সেল resizes 2x2 সঠিকভাবে যাও
যখন n হল 2 পরে, একভাবে, খনি ফর্ম অনুসারে.
>> সংক্ষেপে, এই, এক বোঝানো হয়, মোড় নিতে আঙ্গুলের
ডানদিকে আপনি আগে সমীকরণ আউট আপনার pset জমা দিন.
আপনি ঠিক কি শীঘ্রই আপনার TF জানতে হবে জানতে হবে
যখন আপনি এই সমস্যা সেট কিছু জমা দেওয়ার চেষ্টা করা,
এবং এছাড়াও পণ্ডিতিপনামূলক প্রেরণা সত্যিই প্রয়োগ করা
আপনি সামনে সুযোগ যাতে যখন আপনি অবরোহমার্গী জানা
যে বাগ এবং আপনার কোড মধ্যে যে পরীক্ষা পাস করা হচ্ছে না হয় আছে,
আপনি আরো কার্যকর সময় সামনে যারা সমস্যার সমাধান করা যেতে পারে
বরং পয়েন্ট হারাবেন, আপনার TF থেকে প্রতিক্রিয়া পাওয়া,
এবং তারপর, যান "Ahh," আমি ভালো মূর্তিযুক্ত যে বার করা উচিত.
এখন অন্তত একটি টুল আপনি যে খুঁজে পেতে সহায়তা করতে পারে.
এটি বাতলান যেখানে বাগ হয়, যাচ্ছে না কিন্তু এটা আপনাকে বলতে হবে
এটা লাক্ষণিক কি হয়.
>> এখন বুঝতে পরীক্ষা অগত্যা সম্পূর্ণ হয় না.
কেবলমাত্র একটি পর্দা সবুজ স্মাইলি মুখগুলির পূর্ণ পেতে
কিন্তু আপনার কোড হল নিখুঁত, না মানে কিন্তু এটা মানে না
যে এটা কিছু কিছু বৈশিষ্ট দ্বারা নির্ধারিত পরীক্ষা পাস করেনি.
কখনও কখনও আমরা চেক মুক্তি হবে না.
উদাহরণস্বরূপ, রহস্যময় গল্প, pset 4 বিষয়,
হতাশাদায়ক ধরনের হয় যদি আমরা আপনাকে
কি এটা, এবং উপায় প্রকাশ করা একটি নম্বর আছে হিসাবে উত্তর
যে লাল গোলমালের মধ্যে যারা ব্যক্তি.
ফটকা খেলা সর্বদা ভবিষ্যতে pset 5 অনওয়ার্ড জন্য নির্দিষ্ট করা
পরীক্ষা কি আপনার জন্য বিদ্যমান.
আপনি এই নীচে সাদা URL-এ আছে বিজ্ঞপ্তি পাবেন.
এখন, এই শুধু ডায়গনিস্টিক আউটপুট.
যদি আপনি যে URL-এ যান, আপনি একটি ছবি, একটি সাঙ্কেতিক বার্তা আভা পাবেন
আপনি মাধ্যমে সন্ধান স্বাগত, কিন্তু তা কর্মীদের জন্য এর বেশিরভাগই
যাতে আমরা এবং check50 নিজেই বাগ ডিবাগ নির্ণয় করতে পারেন.
>> হৈচৈ ছাড়া, আসুন যাও যেখানে আমরা বাম বন্ধ যান.
CS50 গ্রন্থাগারের আমরা গ্রহণ কিছু সপ্তাহের জন্য জন্য দেয়া হয়,
কিন্তু পরে গত সপ্তাহে, আমরা শুরু পিলিং এটা এক স্তর ফিরে.
আমরা শুরু নির্বাণ কি পরিবর্তে পক্ষে স্ট্রিং সরাইয়া?
[ছাত্রদের] চর.
চর *, যা একটি গৃহস্থালি * হয়েছে সব সময় এই করেনি,
কিন্তু এখন আমরা যে এটি একটি প্রকৃত তথ্য টাইপ স্ট্রিং জাহির করতে হবে না.
বরঞ্চ, এটি গৃহস্থালি * জন্য ছিল প্রকারের একটি প্রতিশব্দ,
এবং একটি স্ট্রিংটি অক্ষরের একটি অনুক্রম,
তাই কেন এটি ইন্দ্রিয় জন্য গৃহস্থালি * গুলি স্ট্রিং হিসাবে চিত্রিত করা হয়েছে?
কি একটি গৃহস্থালি * একটি পংক্তি এই ধারণার প্রেক্ষিতে প্রতিনিধিত্ব করছে?
হাঁ. >> [ছাত্র] প্রথম অক্ষর.
গুড, প্রথম অক্ষর, কিন্তু পুরোপুরি প্রথম অক্ষর.
এটা-[শিক্ষার্থীরা] ঠিকানা.
গুড, প্রথম অক্ষরটি ঠিকানা.
সমস্ত যে একটি কম্পিউটার এর মেমরির মধ্যে একটি স্ট্রিং প্রতিনিধিত্ব প্রয়োজন
শুধুমাত্র তার খুব প্রথম বাইট অনন্য ঠিকানা.
আপনি কতদিন এটা জানা আছে না
কারণ আপনি কিভাবে যে আউট পরিবর্তনশীল জিনিসটা করতে পারেন?
[ছাত্র] স্ট্রিং দ্বারা.
আপনার স্ট্রিং দ্বারা, চমৎকার, কিন্তু কিভাবে স্ট্রিং দ্বারা কাজ করে কল করতে পারেন?
কি করব? হাঁ.
[ছাত্র] আপাতত পর্যন্ত আপনি নাল চরিত্র পেতে রাখুন.
হ্যাঁ ঠিক,, এটি একটি লুপ জন্য শুধু iterates, যখন লুপ,
যাহা থেকে * শেষে, এবং শেষ প্রতিনিধিত্ব করা হয়
দ্বারা \ 0, তথাকথিত nul অক্ষর, nul,
নাল, যা একটি পয়েন্টার দিয়ে বিভ্রান্ত করা হবে না,
যা কথোপকথন আসে আবার আজ হবে.
>> আমরা peeled ফিরে GetInt একটি স্তর, এবং তারপর আমরা GetString কটাক্ষপাত নেন,
এবং যে যারা উভয় কর্ম, বা সত্যিই প্রত্যাহার,
GetString, ছিল একটি নির্দিষ্ট ফাংশন ব্যবহার করে
প্রকৃতপক্ষে পার্স করতে, যে, বা না পড়া বিশ্লেষণ ব্যবহারকারীর ইনপুট,.
এবং কি ছিল যে নতুন ফাংশন?
Scanf বা sscanf. এটা আসলে কয়েক ভিন্ন স্বাদে আসে.
Scanf আছে, sscanf আছে, fscanf আছে.
এখন জন্য যদিও, এবার এর এক সবচেয়ে সহজে সচিত্র ফোকাস,
এবং আমাকে এগিয়ে যান এবং যন্ত্রপাতি আপ খুলুন
ভালো একটি ফাইল, scanf1.c.
এটি একটি সুপার সহজ প্রোগ্রাম,
কিন্তু যে কোন কিছু যে আমরা কখনও কাজ করেছি আছে
ছাড়া CS50 গ্রন্থাগারের সাহায্য.
এই ব্যবহারকারী একটি থেকে কোন int পায়. কিভাবে এটি কাজ করে?
ওয়েল, লাইন 16 আছে,
আমরা যে কোন int x নামক ডিক্লেয়ার বিজ্ঞপ্তি, এবং এ গল্প এই বিন্দু,
x এর মান কি হয়?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
[ডেভিড এম] ঠিক আছে, কে জানে, কিছু আবর্জনা সম্ভাব্য মান 17 করে, তাই, আমরা শুধুমাত্র ব্যবহারকারী বলুন
সম্পর্কে একটি নম্বর দিতে, দয়া করে, এবং 18 ধাপ হল যেখানে সেটা আকর্ষণীয়.
Scanf যাও printf থেকে একটি ধারণা যে এটি কোট এই বিন্যাসে কোড ব্যবহার করে ধার করা হচ্ছে.
% D অবশ্যই একটি দশমিক সংখ্যা.
কিন্তু কেন আমি & x এর পরিবর্তে শুধু x এর মধ্যে am পার?
সাবেক সঠিক. হাঁ.
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
ঠিক, যদি এই প্রোগ্রামের উদ্দেশ্য হল, ভালো ফাংশন GetInt নিজেই,
ব্যবহারকারী যাও না থেকে কোন int পেতে আমি ফাংশন পাস করতে পারেন
সব ভেরিয়েবল ব্যবহার করতে চাই, কিন্তু যদি আমি তাদের দ্বারা উল্লেখ না পাশ
দ্বারা বা ঠিকানা বা পয়েন্টার, আজ এর উদ্দেশ্যে সব সমার্থক,
তারপর যে ফাংশন যে পরিবর্তনশীল বিষয়বস্তু পরিবর্তন কোন ক্ষমতা আছে.
এই একটি কপি, ঠিক swap-র সংস্করণ বগী মত পাশ করানো যাবে
যে আমরা এখন কয়েক বার স্বপ্ন করেছি.
>> কিন্তু এর পরিবর্তে করছেন & x এর দ্বারা,, আমি আক্ষরিক কী করছি পার?
[ছাত্র] ঠিকানা. X ঠিকানা >>.
এটা ফাংশন বলা scanf জন্য একটি মানচিত্র অঙ্কন এবং বলছে এখানে মত,
এই কম্পিউটারে নির্দেশ মেমরি চাঙ্গড় যাও
যেটায় আপনার কিছু পূর্ণসংখ্যা সঞ্চয় যেতে পারেন
ইন অর্ডার এখন জন্য sscanf যে না
কি অপারেটর, বাক্য গঠন কি টুকরা এটা ব্যবহার করতে হবে
যদিও আমরা এটি কারণ অন্য কেউ এই ফাংশন লিখেছে দেখতে পারে না?
অন্য কথায় - কি যে?
[ছাত্র] এক্স পড়া.
গিয়ে কিছু পড়া আছে, কিন্তু এর সাথে শুধুমাত্র এক্স এখানে বিষয়ে.
যদি scanf হচ্ছে x ঠিকানা পাস,
চিহ্নগুলি সিন্টেক্সের ক্ষেত্রে, কি অপারেটর কোথাও অস্তিত্ব আবদ্ধ হয়
ভিতর scanf এর বাস্তবায়ন যাতে scanf
যে ঠিকানা প্রকৃতপক্ষে একটি সংখ্যা 2 লিখতে পারেন?
হাঁ, যাতে *.
যে প্রত্যাহার * আমাদের dereference অপারেটর, যা মূলত অর্থ সেখানে যান.
>> আপনি একবার করছি একটি ঠিকানা হস্তান্তর, হিসাবে এইখানে কেস,
scanf সম্ভবত, যদি না আমরা আসলে তার আশেপাশে তাকিয়ে সোর্স কোড-
হয় * x অথবা সমতুল্য আসলে যে ঠিকানায় যান এবং সেখানে কিছু মান রাখা করছেন.
এখন, কিভাবে হিসাবে জন্য scanf কীবোর্ড থেকে ইনপুট পায়,
আমরা আজকের জন্য আমাদের হাত তরঙ্গ আউট করব.
শুধু অনুমান যে অপারেটিং সিস্টেম এর সাহায্যে কথা বলার sscanf
ব্যবহারকারী যাও এর কীবোর্ড, কিন্তু এই সময়ে এখন লাইন 19,
যখন আমরা কেবল এক্স প্রিন্ট আউট, এই কেস বলে মনে হয়
যে scanf x এর মধ্যে করেনি কোন int করা.
এটা ঠিক কিভাবে scanf কাজ, এবং গত সপ্তাহে প্রত্যাহার
যে ঠিক কিভাবে GetString এবং GetInt এবং তার কর্ম পরিবারের অন্যান্য
পরিণামে কাজ sscanf মত অসম্মান ভ্যারিয়েন্স সঙ্গে, যদিও,
যার মানে পরিবর্তে কীবোর্ড একটি স্ট্রিং স্ক্যান.
কিন্তু যাক এর একটি এই সামান্য ভ্যারিয়েন্স কটাক্ষপাত করা.
Scanf2 ইন, আসলে আমি মাতাল আপ.
ভুল-এবং কি আমি মন্তব্য নেই যে হিসাবে অনেক-ব্যাখ্যা করব লুকান
এটা কি এই প্রোগ্রামের সাথে ভুল, সংস্করণ 2?
সম্ভব হিসাবে এই সময় হিসাবে প্রযুক্তিগত হবে.
আর দেখতেও ভাল প্রশংসনীয়.
এটা চমত্কারভাবে এর সংভৃত, কিন্তু-
ঠিক আছে, এর সম্পর্কে কিভাবে যাক এটি আলুবোখারা খাটো প্রশ্নগুলির ডাউন?
লাইন 16. লাইন 16 সুনির্দিষ্ট কিন্তু প্রযুক্তিগত ইংরেজি করছেন কি?
পথ একটু অসুবিধাজনক. হ্যাঁ, মাইকেল.
[ছাত্র] এটি একটি স্ট্রিং প্রথম অক্ষরটি এর প্রতি নির্দেশ করে.
>> ঠিক আছে, বন্ধ. আমাকে যে অল্প খামচি.
এর স্ট্রিং এর প্রথম অক্ষর নির্দেশক, আপনি একটি পরিবর্তনশীল নামক বাফার ঘোষণা করা হয়
যে একটি স্ট্রিং প্রথম ঠিকানা নির্দেশ করা,
অথবা এর পরিবর্তে, যে আরো নির্দিষ্টভাবে একটি গৃহস্থালি নির্দেশ করুন.
এটি আসলে কোথাও প্রতি নির্দেশ না কারণ কোন আরোপিত অপারেটর আছে লক্ষ্য করুন.
উপমা সাইন নেই, সুতরাং আমরা সমস্ত করছেন পরিবর্তনশীল তথাকথিত বাফার বণ্টন.
এটি 32 বিট হতে ঘটবে না কারণ এটি একটি পয়েন্টার,
এবং বাফার বিষয়বস্তু সম্ভবতঃ ঘটনাক্রমে
একটি গৃহস্থালি একটি ঠিকানা থাকে, কিন্তু এখন কি জন্য, বাফার থাকতে হবে না?
শুধু কিছু বাজে, কে জানে, কিছু আবর্জনা মান,
কারণ আমরা এটি সক্রিয়া করা স্পষ্টভাবে না, তাই আমরা কিছু না অনুমান করা উচিত.
ঠিক আছে, তাই এখন লাইন 17-কি হয় না লাইন 17 করবেন?
হতে পারে যে এই গরম করা হবে.
এটি একটি স্ট্রিং ছাপে অধিকার,?
সেটা ছাপে স্ট্রিং দয়া করে.
>> লাইন 18 হল পরিচিত ধরনের এখন যে আমরা এই একটি ভ্যারিয়েন্স দেখেছি
কিন্তু সঙ্গে একটি ভিন্ন কোড বিন্যাস, তাই লাইন 18,
আমরা scanf করছি এখানে কহন মেমরি একটি খণ্ড ঠিকানা.
আমি আপনাকে একটি স্ট্রিং এ, রিং% s দ্বারা হিসাবে উহ্য করতে চান,
কিন্তু সমস্যা হল এখানে আমরা সম্পন্ন জিনিষ কয়েক নি.
সমস্যা কি?
[ছাত্র] এটি একটি নাল পয়েন্টার dereference এর চেষ্টা.
গুড, নাল বা অন্যথায় শুধুমাত্র অজানা পয়েন্টার দেয়া হল.
আপনি কোনো ঠিকানা হস্তান্তর scanf, সেটি কিন্তু আপনি শুধু বলেন, একটি মুহূর্ত আগে
যে ঠিকানা হল কিছু আবর্জনা মান কারণ আমরা কিছু এটা আসলে দায়িত্ব অর্পণ করা হয় নি,
এবং যাতে আপনি scanf কার্যকরভাবে একটি স্ট্রিং এখানে করা যেতে বলছে করছি,
কিন্তু আমরা যেখানে এখনও এখানে হয় না,
তাই আমরা বাফার জন্য মেমরি বরাদ্দ আসলে আছে না.
তাছাড়া, কি এছাড়াও আপনি scanf এমনকি বলছে না?
ধরুন এই ছিল মেমরি একটি খণ্ড, এবং এটি একটি গার্বেজ মান ছিল না,
কিন্তু এখনও আপনি কিছু গুরুত্বপূর্ণ করছি scanf বলছে না.
[ছাত্র] কোথায় আসলে এটি হল, ampersand.
Ampersand এই ক্ষেত্রে, তাই, এটা ঠিক.
কারণ একটি পয়েন্টার বাফার হিসাবে ইতিমধ্যে ঘোষিত হয়
এর সিনট্যাক্স * টুকরা সঙ্গে, আমরা ampersand ব্যবহার করার প্রয়োজন হবে না
কারণ এটি ইতিমধ্যেই একটি ঠিকানা, কিন্তু আমি মনে করি আমি এটা এখানে শোনা.
[ছাত্র] এটা কত বড়?
গুড, আমরা কত বড় এই বাফার হয় কহন scanf না থাকেন,
যার মানে এমনকি যদি বাফার ছিল একটি পয়েন্টার,
আমরা scanf করছি বলছে, একটি স্ট্রিং এখানে রাখুন,
কিন্তু এখানে 2 বাইট হতে পারে, এটি 10 ​​বাইট হতে পারে, এটি একটি megabyte হতে পারে.
Scanf কোন ধারণা আছে, এবং কারণ এটি মেমরি চাঙ্গড়
সম্ভবতঃ, এটি একটি স্ট্রিং এখনো না.
এটি কেবলমাত্র একটি পংক্তি একবার আপনি অক্ষর এবং একটি মেমরি যে তাল যাও \ 0 লিখুন.
এখন এটি শুধু মেমরির কিছু খণ্ড.
Scanf লেখার যে ঠিকানা থেকে বিরত না হবে.
>> আপনি যদি পূর্বে কিছু উদাহরণ যেখানে আমি এলোমেলোভাবে কীবোর্ড টাইপ প্রত্যাহার
চেষ্টা করছে একটি বাফার ওভারফ্লো, এবং শুক্রবার আমরা ঠিক যে সম্পর্কে বললাম.
যদি একটি প্রতিদ্বন্দ্বী একরকম আপনার প্রোগ্রামের মধ্যে একটি অনেক বড় শব্দ injects
বা বাক্য বা শব্দগুচ্ছ তাহলে আপনি আশা করতে পারেন পদদলিত করা হয়েছে
মেমরির একটি খণ্ড, যা খারাপ পরিণাম হতে পারে,
ভালো পুরো প্রোগ্রাম নিজেই করে থা.
আমরা একরকম এই স্থির করা প্রয়োজন.
আমাকে জুম আউট এবং এই প্রোগ্রামের সংস্করণ 3 ঢোকা.
এটা একটি অল্প ভাল.
এই সংস্করণের মধ্যে পার্থক্য লক্ষ্য করা.
লাইন 16 ইঞ্চি, আবার আমি একটি পরিবর্তনশীল নামক বাফার ঘোষণা করছি,
কিন্তু এখন এটা কি হয়?
এটা 16 অক্ষরের একটা সুবিন্যস্ত.
এটা ভালো কারণ এই অর্থ আমি এখন scanf বলতে পারেন
এখানে একটি প্রকৃত মেমরি তাল.
আপনি প্রায় অ্যারে হচ্ছে এখন পয়েন্টার হিসাবে মনে করতে পারেন,
যদিও তারা আসলে সমতুল্য পারব না.
তারা বিভিন্ন প্রেক্ষাপটে ভিন্নভাবে আচরণ করা হবে.
কিন্তু এটা অবশ্যই এর ক্ষেত্রে যে বাফার উল্লেখ করা হয়
16 সংলগ্ন অক্ষর কারণ এর যে কোন একটি অ্যারের হয়
এবং এখন কিছু সপ্তাহ যাবত করেনি.
>> এখানে, আমি scanf কহন এখানে am এর মেমরি তাল.
এই সময়, এটি একটি প্রকৃত মেমরির একটি খণ্ড,
কিন্তু এখনও কেন এই প্রোগ্রাম exploitable?
ভুল কি এখনও?
আমি সম্পর্কে কিন্তু-16 বাইট দিতে বলেন করেছি
[ছাত্র] যদি তারা অধিক 16 টাইপ?
ঠিক, কি যদি ব্যবহারকারী 17 টি অক্ষর বা 1700 অক্ষর ধরনের?
বস্তুত, আসুন যদি আমরা এই ভুল উপর ট্রিপ করতে পারেন না এখন দেখুন.
এটা ভাল কিন্তু না নিখুঁত.
আমাকে এগিয়ে যান এবং scanf3 এই প্রোগ্রাম কম্পাইল করার জন্য রান.
সম্পর্কে scanf3 চালানো যাক, স্ট্রিং দয়া করে: হ্যালো, এবং আমরা ঠিক আছে মনে হয়.
আমাকে একটু লম্বা, হ্যালো চেষ্টা আছে.
ঠিক আছে, হ্যালো এর দেওয়া আছে কেমন আছেন আজ না, লিখুন.
ভাগ্যবান ধরনের এখানে পথ, যাক এর হ্যালো বলুন সেখানে কেমন আছেন.
এটা অভিশাপ.
ঠিক আছে, তাই আমরা পেয়েছিলাম ভাগ্যবান. চলুন আমরা যদি এই না দেখতে পারবো.
না, এটা সম্পর্কে কপি দেওয়া যাচ্ছে না.
আসুন আবার এই চেষ্টা.
সমস্ত অধিকার, পাশে দাঁড়ানো.
আমরা কতদিন আমি যদিও এই কাজ ফোকাস করতে পারবেন দেখতে পাবেন.
এটা অভিশাপ. এটা বরং যথাযথ আসলে,.
এখন পর্যন্ত আমরা যেতে.
পয়েন্ট হয়েছে.
>> এই, হতবুদ্ধিকর যদিও এটা, এটা মহান বিভ্রান্তির উৎস এক
যখন প্রোগ্রাম যে বাগ আছে লেখার কারণ তারা নিজেদের সুস্পষ্ট
শুধুমাত্র একবার একটি কখনও কখনও যখন.
বাস্তবতা হল যে যদি আপনার কোড সম্পূর্ণরূপে নষ্ট হয়ে গেছে,
এটি শুধুমাত্র হতে পারে একটি সম্পূর্ণ করা হবে যখন ভেঙ্গে একবার
কারণ কখনও কখনও মূলত, কি হল অপারেটিং সিস্টেম বরাদ্দ
আপনি একটু বেশী মেমরি প্রকৃতপক্ষে কোন কারনের জন্য প্রয়োজন,
এবং তাই কোনও কেউ ডান 16 অক্ষরের পরে আপনার চাঙ্গড় মেমরি ব্যবহার করছে,
তাই আপনি যদি 17, 18, 19, যাই হোক না কেন, এটা যেমন একটি বড় চুক্তি না যেতে.
এখন, কম্পিউটার, যদিও তা এক পর্যায়ে বিপর্যস্ত না,
অন্য কোন কিছু অবশেষে বাইট নম্বর 17 বা 18 বা 19 ব্যবহার করতে পারে,
যা আপনার তথ্য নির্দেশ করুন অতীব দীর্ঘ যদ্যপি যে আপনি সেখানে রাখা,,
কিছু অন্যান্য ফাংশন দ্বারা পেতে সম্ভাব্য মুছে ফেলা হবে.
এটা অক্ষত থাকা অগত্যা যাচ্ছে না,
কিন্তু অগত্যা এটি একটি seg দোষ না কারণ হবে.
কিন্তু এই ক্ষেত্রে, পরিশেষে আমি যথেষ্ট অক্ষর প্রদান
মূলত আমি যে মেমরি আমার সেগমেন্ট সীমা ছাড়িয়ে, এবং bam,
অপারেটিং সিস্টেম বলেন, "দুঃখিত, যে কোন ভাল, সেগমেন্টেশন ফল্ট."
>> দিন এর এখন দেখুন কি যদি আমার এখানে অবশেষ নির্দেশিকা-
বিজ্ঞপ্তি যে আমি এই ফাইলটি এখানে আছে, কোর.
উল্লেখ্য, আবার এই একটি কোর ডাম্প বলা হয়.
এটি মূলত একটি ফাইল যা আপনার প্রোগ্রাম এর মেমরি রয়েছে কন্টেন্ট
সময়ে সময়ে তা ক্র্যাশ,
এবং শুধু এখানে একটু চেষ্টা করুন যেমন আমাকে এখানে যান
এবং scanf3 উপর সময় gdb এবং তারপর চালানোর একটি তৃতীয় যুক্তি নামক কোর নির্দিষ্ট,
এবং এখানে লক্ষ্য করা যে যদি আমি কোড তালিকা,
আমরা সময় gdb করা স্বাভাবিক হিসাবে সক্ষম এই প্রোগ্রামের মাধ্যমে হাঁটা শুরু করব,
এবং আমি এটি চালানোর হিসাবে আমি আঘাত হিসাবে পদার্পণ কমান্ড এবং যত তাড়াতাড়ি পারেন সময় gdb-
যত তাড়াতাড়ি আমি একটি বিশাল স্ট্রিং টাইপ পরে সম্ভাব্য বগী লাইন আঘাত,
আমি আসলে এখানে এটি সনাক্ত করতে সক্ষম হবেন.
আরো এই, যদিও, কোর ডাম্প মধ্যে শর্তাবলী অধ্যায়
এবং চাই যাতে আপনি এমন অকর্মা কোর ডাম্প প্রায় ভিতরে পারেন
এবং দেখতে পান কি লাইন প্রোগ্রাম আপনাকে ব্যর্থ হয়েছে.
তারপর পয়েন্টার এবং ঠিকানাগুলি কোন প্রশ্ন?
কারণ আজ, আমরা গ্রহণ জন্য দেয়া হয় যে এইসব জিনিস বিদ্যমান শুরু চলুন
এবং আমরা জানি না ঠিক কি তারা.
হ্যাঁ.
>> [ছাত্র] কিভাবে আসতে আপনাকে একটি ampersand রাখতে হত না পরের অংশ-
ভাল প্রশ্ন.
কিভাবে আসা আমি একটি ampersand পরের অক্ষরে প্রকাশ করা অ্যারে হিসাবে আমি পূর্বে না
আমাদের সাথে উদাহরণ অধিকাংশ?
সংক্ষিপ্ত উত্তরটি অ্যারে হয় একটু বিশেষ.
আপনি প্রায় আসলে হচ্ছে একটি ঠিকানা হিসাবে একটি বাফার মনে করতে পারেন,
এবং শুধু তাই কেস করা যে গুরুবন্ধনী স্বরলিপি
একটি সুবিধার্থে যাতে আমরা বন্ধনী 0, 1 বন্ধনী মধ্যে যেতে পারেন,
বন্ধনী 2, যাও * নোটেশন ব্যবহার ছাড়াই.
যে একটি সাদা মিথ্যা একটি বিট কারণ অ্যারে এবং পয়েন্টার
সত্য হয়, সামান্য কিছুটা আলাদা, কিন্তু তারা সবসময় প্রায়ই কিন্তু না অদলবদল করে ব্যবহার করা যাবে.
সংক্ষেপে, যখন একটি ফাংশন মেমরি চাঙ্গড় একটি পয়েন্টার হয় আশা,
আপনি হয় পাস একটি ঠিকানা যে malloc দ্বারা উৎপন্ন হত এটা করতে পারেন,
এবং আমরা দীর্ঘ আগে malloc আবার দেখুন, অথবা আপনি পাবেন একটি অ্যারের নামের এটি পাস করতে পারেন.
আপনি অ্যারে সঙ্গে ampersand না কারণ তারা ইতিমধ্যেই না
মূলত ঠিকানা চাই.
এটা এক ব্যতিক্রম.
বর্গাকার বন্ধনী জন্য তাদের বিশেষ.
>> একটি ampersand আপনি পরের যাও বাফার করা যায়নি?
. এই ক্ষেত্রে নেই
এই যে কোণ ক্ষেত্রে কাজ কারণ, আবার না, হবে
যেখানে অ্যারে হয় ঠিকানাগুলি পুরোপুরি এমন নয়.
কিন্তু আমরা সম্ভবত যে আগে দীর্ঘ অন্যান্য উদাহরণ দিয়ে ফিরে পাবেন.
চলুন এখানে একটি সমস্যা সমাধানের চেষ্টা করুন.
আমরা একটি তথ্য কাঠামো, যা আমরা কিছু সময় একটি অ্যারে হিসাবে পরিচিত হয়েছে ব্যবহার করেছি আছে.
একটা উদাহরণ হল, তাই আমরা ঠিক ছিল.
কিন্তু অ্যারে কিছু upsides এবং downsides আছে.
অ্যারেগুলির হয় সুন্দর কেন?
এক দৌড় আপনি চান অ্যারে-সম্পর্কে অ্যারে চান-জিনিস যে আপনি কি?
তাদের বিষয়ে সুবিধাজনক কি? বাধ্যকারী কি?
কেন আমরা কখন প্রথম স্থানে তাদের পরিচয় করিয়ে দিতে?
হাঁ.
[ছাত্র] তারা অনেক তথ্য সংরক্ষণ, এবং আপনি একটি সম্পূর্ণ জিনিস ব্যবহার না করতে পারেন.
আপনি একটি অধ্যায় ব্যবহার করতে পারেন.
গুড, সঙ্গে একটি অ্যারের আপনি অনেক তথ্য সংরক্ষণ করতে পারেন,
এবং আপনি তা সব ব্যবহার করার প্রয়োজন হবে না, যাতে আপনি overallocate করতে পারেন,
যা সুবিধাজনক যদি আপনি আগে থেকে কিছু কিভাবে আশা অনেক জানি না হতে পারে.
>> GetString একটি নিখুঁত উদাহরণ.
GetString, আমাদের না, তার কোন ধারণা নেই কিভাবে অনেক অক্ষর আশা আছে,
তাই সত্য যে আমরা সংলগ্ন মেমরির অংশ বরাদ্দ করতে পারেন ভাল.
অ্যারেগুলির এছাড়াও একটি সমস্যা আমরা দেখেছি এখন কয়েক সপ্তাহ আগে সমাধান
যেখানে আপনার কোড কিছু খুব দুর্বল পরিকল্পিত মধ্যে বর্তা যাও আরম্ভ করা হয়.
পুনরাহ্বান যে আমি একজন ছাত্র গঠন নামক ডেভিড তৈরি,
এবং তারপর যে আসলে ছিল একটি বিকল্প, যদিও,
একটি পরিবর্তনশীল নামক নাম এবং অন্য পরিবর্তনশীল বলা হয়, আমি মনে করি, ঘর আছে,
এবং অন্য পরিবর্তনশীল নামক আইডি কারণ যে বিবরণ আমি তখন অন্য কিছু পরিচয় করিয়ে দিতে চেয়েছিল
প্রোগ্রাম Rob চান, অতএব আমি এক মিনিট অপেক্ষা করার সিদ্ধান্ত নিয়েছে,
আমি এইসব ভেরিয়েবল নামান্তর প্রয়োজন.
চলুন শুরু করা যাক খনি NAME1, ID1, house1 কল.
চলুন শুরু করা যাক রব এর NAME2, house2, ID2 কল.
কিন্তু কি টমি সম্পর্কে মিনিট অপেক্ষা করুন,?
তারপর আমরা আরো তিনটি ভেরিয়েবলের ছিল.
আমরা অন্য কারোর, ভেরিয়েবল চারটি সেট চালু.
বিশ্বের নোংরা পেতে খুব তাড়াতাড়ি শুরু,
তাই আমরা structs চালু, এবং কি এর একটি struct সম্পর্কে বাধ্যতামূলক?
কি একটি সি struct আপনাকে কি?
এটা সত্যিই কেবলা আজ.
কি? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
হাঁ, বিশেষত typedef আপনি একটি নতুন তথ্য টাইপ তৈরি করা যাবে,
এবং struct, struct অভিব্যক্তি, আপনি encapsulate করতে পারবেন
তথ্য ধারণার সাথে সম্পর্কিত একসঙ্গে টুকরা
এবং তারপরে একটা ভালো কিছু ছাত্র তাদের কল.
>> যে ছিল ভাল, কারণ এখন আমরা মডেল পারেন
এর আরো অনেক কিছু সাজানোর ধারণার সামঞ্জস্যপূর্ণ একজন ছাত্র একটি পরিবর্তনশীল মধ্যে ধারণা
বরং ইচ্ছামত এক একটি পংক্তি জন্য, একটি আইডি জন্য এক হচ্ছে, এবং তাই ঘোষণা.
অ্যারেগুলির হয় সুন্দর, কারণ তারা আমাদের পরিষ্কার আমাদের কোড আরম্ভ করার অনুমতি দেয়.
কিন্তু কি একটি অ্যারের এখন একটি downside?
আপনি কি পারেন না? হাঁ.
[ছাত্র] আপনি কিভাবে বড় এটা জানা আছে.
আপনি কিভাবে বড় এটা জানা আছে, তাই ব্যাথা ধরনের.
আপনি যারা পূর্বে প্রোগ্রামিং অভিজ্ঞতা সঙ্গে জানেন যে সব ভাষায় অনেক,
জাভা ভালো, আপনি মেমরি একটি খণ্ড, বিশেষভাবে একটি অ্যারের জন্য অনুরোধ করতে পারেন,
কিভাবে বড় হয় দৈর্ঘ্য, সম্পত্তি, তাই কথা বলতে সঙ্গে আপনি,, এবং যে সত্যিই সুবিধাজনক.
সি, আপনি এমন কি একটি জেনেরিক শৃঙ্খলার strlen কল করতে পারবেন না
strlen কারণ, শব্দ হিসাবে বোঝা শুধুমাত্র স্ট্রিং জন্য,
এবং আপনাকে একটি স্ট্রিং এর কারণ এই প্রথার দ্বারা মানুষের চিন্তা করতে পারেন
একটি \ 0, কিন্তু একটি অ্যারে হচ্ছে, আরো জেনেরিক, শুধুমাত্র মেমরির একটি খণ্ড.
এটি যদি ints একটি শ্রেণীবিন্যাস, যাচ্ছে কিছু বিশেষ অক্ষর আছে এর না
আপনার জন্য অপেক্ষা শেষে.
আপনি একটি অ্যারের দ্বারা স্মরণে রাখতে হবে.
একটি অ্যারের আরেকটি downside নিজেই GetString তার মাথা লালিত.
একটি অ্যারের অন্য downside কি?
স্যার, আপনি এবং সম্পর্কে আজ.
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> এটা কি?
এই স্ট্যাকের উপর ঘোষিত এর.
ঠিক আছে স্ট্যাক, ঘোষিত. কেন যে কি আপনি চান না?
[ছাত্র] যেহেতু এটি পাতাগুলো ব্যবহৃত হয়.
এটা পাতাগুলো ব্যবহৃত হয়.
ঠিক আছে, আপনি যদি মেমরি বরাদ্দ করা একটি অ্যারে ব্যবহার,
আপনি, উদাহরণস্বরূপ করতে পারেন না, কারণ এটি এটি স্ট্যাকের উপর এর প্রত্যাবর্তন.
ঠিক আছে, যে এর একটি অসুবিধা.
এবং কিভাবে আমার এক একটি অ্যারের সাথে অন্যান্য?
আপনি একবার এটা বরাদ্দ, আপনি ধরনের মাতাল যদি আপনি আরও জায়গা দরকার
যে অ্যারে আছে.
>> তারপর আমরা চালু রিকল, malloc, যা দিয়েছে পরিবর্তনশীলরূপে মেমরি বরাদ্দ করার ক্ষমতা আমাদের,.
যদি কি তবে আমরা চেষ্টা সর্বতোভাবে একটি আলাদা পৃথিবী?
যদি আমরা এই সমস্যার একটি সমাধান চেয়েছিলেন দম্পতি
তাই আমার পরিবর্তে আমরা পেন অবশ নিপতিত এখানে-করেনি
? কি যদি আমরা পরিবর্তে মূলত একটি বিশ্বের যে ভালো আর তৈরী করতে চান
এটি একটি অ্যারের, এবং, অবশ্যই, এই ধরণের deteriorates একবার আমরা অ্যারের শেষ আঘাত,
এবং এখন আমি আর অন্য কোনো পূর্ণসংখ্যা বা অন্য অক্ষরের জন্য স্থান আছে.
, যদি আমরা ভাল ধরণের preemptively বলে কেন আমরা শিথিল না
এই প্রয়োজন যে সমস্ত মেমরির অংশ এইসব সংলগ্ন ফিরে যাও ব্যাক করা,
এবং কেন আমি যখন কোন int অথবা একটি গৃহস্থালির কাজ করা প্রয়োজন, না,
শুধু তাদের জন্য এক দিতে স্থান সম্পর্কে?
এবং যখন আমি অন্য কোনো প্রয়োজন, আমাকে আরেকটা স্থান দিতে,
এবং যখন আমি অন্য কোনো প্রয়োজন, আমাকে আরেকটা স্থান দিতে.
যা এখন সুবিধা হল যে যদি কারোর
এখানে উপর মেমরি, কোন বড় চুক্তি লাগে.
আমি এই মেমরি অতিরিক্ত মোটা টুকরা নিতে এখানে এবং তারপর এই এক পাবেন.
>> এখন, শুধুমাত্র এখানে ধরা হয় যে প্রায় এই মতানুযায়ী আমি ভালো আছে
একটি বিভিন্ন ভেরিয়েবল আভা.
এই পাঁচটি পৃথক সম্ভাব্য ভেরিয়েবল ভালো মনে.
কিন্তু আমরা যদি কি স্ট্রিং থেকে চুরি করা একটি ধারণা
তদ্দ্বারা একরকম আমরা এইসব জিনিসগুলি নিয়ে একসাথে লিঙ্ক ধারণার দিক থেকে, এবং কি যদি আমি এই কি?
এটা আমার খুব দুর্বল টানা তীর.
কিন্তু অনুমান যে মেমরি এই অংশ প্রতিটি
তীক্ষ্ন অন্যান্য যাও, এবং এই লোক, যারা তার ডান কোন ভাইবোন আছে,
আছে যেমন তীর কোন.
এই সত্যটি কি যুক্ত তালিকা নামক এর মধ্যে হয়.
এটি একটি নতুন তথ্য কাঠামো, যা আমাদের মেমরি অঞ্চলে ধার্য করতে পারবেন,
তারপর আরেকটি, তারপর আরেকটি, তারপর আরেকটি, কোন সময় আমরা চাই
একটি প্রোগ্রাম সময়, এবং আমরা মনে রাখবেন, যে তারা সব একরকম সম্পর্কিত
আক্ষরিক chaining দ্বারা তাদের একসঙ্গে, এবং আমরা যে কি pictorially এখানে সঙ্গে তীর.
কিন্তু কোড, কি ব্যবস্থার মাধ্যমে আপনি সংযোগ করতে পারেনি যা একরকম হবে,
প্রায় লেগেছে শয়তান, অন্য এক খণ্ড খণ্ড?
আমরা একটি পয়েন্টার ব্যবহার, অধিকার হতে পারে?
কারণ যে উপরের বাম তীর বর্গ থেকে যাচ্ছে,
এই এই এক লোক এখানে, এই বর্গক্ষেত্র এর ভিতর থাকতে পারে
কিছু ঠিক ints না, শুধু কিছু টুকিটাকি কাজ না, কিন্তু যদি আমি আসলে বরাদ্দ
একটু অতিরিক্ত স্থান যাতে এখন,
প্রতিটি মেমরির অংশ আমার মধ্যে, যদিও এই সম্পর্কে কত খরচ হবে,
এখন দেখায় একটু আরো আয়তক্ষেত্রাকার যেখানে মেমরির অংশ এক
একটি নম্বর জন্য ব্যবহৃত হয়, যেমন সংখ্যা 1,
এবং তারপর যদি এই লোক সংখ্যা 2 সঞ্চয়,
এই মেমরি অন্যান্য অঞ্চলে একটি তীর জন্য ব্যবহৃত হয়,
অথবা আরো concretely, একটি পয়েন্টার.
এবং আমি অনুমান এখানে ওভার 3 নম্বর যখন আমি এই যে লোক এ নির্দেশ ব্যবহার সঞ্চয়,
এবং এখন এই লোক, আমি কি অনুমান আমি কেবল তিনটি মেমরি যেমন অংশ করতে চান.
আমি যে মাধ্যমে একটি লাইন, আঁকা নাল ইঙ্গিত করব.
কোন অতিরিক্ত অক্ষর পর্যন্ত.
>> প্রকৃতপক্ষে, এই ভাবে আমরা রূপায়ণকারী যেতে পারবেন
কিছু যে একটি তালিকা সংযুক্ত বলা হচ্ছে.
একটি লিঙ্ক তালিকা একটি নতুন তথ্য গঠন, এবং এটি একটি দিকে পাথর পদবিন্যাস
অনেক কল্পনাকারী ডাটা স্ট্রাকচার যে সমস্যার সমাধান আরম্ভ করার জন্য
বরাবর ফেসবুক টাইপ সমস্যার লাইন এবং Google-এর টাইপ সমস্যা
যেখানে আপনি বিপুল তথ্য সেট আছে, এবং তা আর মধ্যেও
যাও contiguously সব সঞ্চয় এবং রৈখিক অনুসন্ধান মত ব্যবহার
অথবা এমনকি বাইনারি অনুসন্ধান মত.
আপনি আরও ভাল করে চলমান সময় চান.
আসলে, এক পবিত্র Grails আমরা পরে এই সপ্তাহে বা পরের সম্পর্কে কথা বলতে পারবেন
একটি অ্যালগরিদম, যার চলমান সময় ধ্রুবক.
অন্য কথায়, সবসময় সময় একই পরিমাণ কোন ব্যাপার লাগে
কিভাবে ইনপুট বড় হয়, এবং যে প্রকৃতপক্ষে করা বাধ্যতামূলক হবে,
এমনকি আরো বেশী, তাই কিছু লগারিদমিক.
কি পর্দায় এটি এখানে কেন?
Rectangles প্রত্যেকটি ঠিক কি আমি হাত দ্বারা সৃষ্টি.
কিন্তু জিনিস সব বাম উপায় হল একটি বিশেষ পরিবর্তনশীল.
এটি একটি একক পয়েন্টার হতে যাচ্ছে কারণ এক gotcha এর
সঙ্গে একটি লিঙ্ক তালিকা, এই জিনিষ হিসাবে বলা হয়,
আপনি যে লিঙ্ক তালিকার এক প্রান্ত সম্মুখের স্তব্ধ হয়ে আছে.
>> একটি স্ট্রিং এর মতো, আপনি প্রথম গৃহস্থালির কাজ ঠিকানা জানা আছে.
সংযুক্ত তালিকার জন্য একই চুক্তি.
আপনি মেমরি প্রথম খণ্ড ঠিকানা জানা আছে
কারণ থেকে থাকে, আপনার প্রতি অন্য এক পৌঁছতে পারে.
Downside.
মূল্য কি আমরা একটি পরিবর্তনশীল থাকার জন্য এই বহুমুখিতা অর্থপ্রদানকারী
বৃহদাকার তথ্য কাঠামো, যা কখনও যদি আমরা আরো মেমরি প্রয়োজন, সূক্ষ্ম,
শুধু এক খণ্ড এবং আরো বরাদ্দ করা একটি পয়েন্টার থেকে আঁকা
তালিকার নতুন লেঙ্গুড় পুরানো?
হাঁ.
[ছাত্র] প্রায় দ্বিগুণ হিসাবে অনেক জায়গা নেয়.
এটা দুবার হিসাবে অনেক জায়গা নেয়, যাতে স্পষ্টভাবে এর একটি downside, এবং আমরা এই দেখা করেছি
মধ্যবর্তী সময় এবং স্থান এবং নমনীয়তা আগে tradeoff
যেখানে এখন দ্বারা, আমরা প্রয়োজন এই সংখ্যার প্রতিটি জন্য 32 বিট না.
আমরা সত্যিই 64 নম্বর জন্য, 32 এবং 32 পয়েন্টার জন্য প্রয়োজন.
কিন্তু মনে হয়, আমার RAM-র 2 গিগাবাইট আছে.
অন্য 32 বিট এখানে এবং এখানে যোগ করার পদ্ধতি যে একটি চুক্তি বড় মনে হয় না.
কিন্তু বৃহৎ তথ্য সেটের জন্য, স্পষ্টভাবে এটা আক্ষরিক হিসাবে দুইবার অনেক অ্যাডস আপ.
অন্য downside কি এখন এর, বা কি বৈশিষ্ট্য আমরা পরিত্যাগ করা,
যদি আমরা একটি লিঙ্ক তালিকা এবং হইনি একটি অ্যারের সঙ্গে জিনিসের তালিকা প্রতিনিধিত্ব করেন?
[ছাত্র] আপনি পিছন দিকে এটি তর্ক করতে পারবেন না.
আপনি পিছন দিকে এটি তর্ক না করতে পারেন, যাতে আপনি ধরনের মাতাল যদি আপনি হাঁটা করছি
বামদিক থেকে ডানদিকে লুপ বা করার জন্য একটি লুপ ব্যবহার
এবং তারপর আপনি বুঝতে, "ওহ, আমি তালিকার শুরুতে ফিরে যেতে চাই."
কারণ আপনি এই পয়েন্টার বাম থেকে ডানে শুধুমাত্র হইনি হিসাবে তীর চিহ্ন হতে পারে এবং এ যান.
>> এখন, আপনি অন্য পরিবর্তনশীল দিয়ে তালিকা শুরু মনে রাখতে পারে,
কিন্তু যে এর একটি জটিলতা মন রাখতে.
একটি অ্যারের, সেটা ব্যাপার নয় আপনি কতদূর যান, সবসময় কি বিয়োগ, বিয়োগ, বিয়োগ, বিয়োগ করতে পারেন
এবং সেখান হইতে আপনি এসেছিলেন থেকে ফিরে যান.
অন্য downside কি এখানে? হাঁ.
[শ্রবণাতীত ছাত্র প্রশ্ন]
আপনি তাই, আপনি করতে পারে নি আসলে করেছি শুধুমাত্র একটি ডাটা স্ট্রাকচার নামক একটি তালিকা দোকর লিঙ্ক প্রস্তাব,
এবং সত্যিই, আপনি অন্য পয়েন্টার এই rectangles প্রতিটি যোগ দিন
যে অন্যান্য অভিমুখ যায়, যা সম্পূর্ণ বিপর্যস্ত
হয় এখন আপনি পিছনে, তর্ক করতে পারেন,
যা downside এখন আপনাকে অনেক মেমরি হিসাবে ব্যবহার করছি তিনবার হিসাবে আমরা ব্যবহার
এবং এছাড়াও কোড শর্তাবলী জটিলতা যোগ আপনি ডান এটি পেতে লিখুন আছে.
কিন্তু এই সমস্ত সম্ভবত খুব যুক্তিসঙ্গত tradeoffs, যদি উলটাপালটা হয় আরো গুরুত্বপূর্ণ.
হাঁ.
[ছাত্র] এছাড়াও আপনি একটি 2D যুক্ত তালিকা থাকতে পারে না.
গুড, সত্যিই আপনি একটা 2D লিঙ্ক তালিকা থাকতে পারে না.
আপনি করতে পারে. এটা প্রায় হিসাবে একটি অ্যারে হিসাবে সহজ না.
একটি অ্যারের ভালো লেগেছে, আপনাকে খোলা বন্ধনী, বদ্ধ বন্ধনী, খোলা বন্ধনী, বন্ধনী বন্ধ করবেন,
এবং আপনি কিছু 2-মাত্রিক গঠন পেতে.
আপনি একটি 2-মাত্রিক লিঙ্ক তালিকা বাস্তবায়ন হতে পারে
যদি আপনি অ্যাড হিসাবে আপনি এই জিনিষ প্রতিটি তৃতীয় পয়েন্টার-একটি প্রস্তাব, না
এবং আপনি যদি আপনার অন্য তালিকা সম্পর্কে মনে 3D শৈলী আসছে
পর্দা থেকে আমাদের, যা শুধু কিছু বাছাই করা অন্য চেন.
আমরা না, কিন্তু এটি খোলা বন্ধনী, বর্গাকার বন্ধনী টাইপ হিসাবে হিসাবে সহজ না পারে. হাঁ.
[শ্রবণাতীত ছাত্র প্রশ্ন]
গুড, তাই এই একটি বাস্তব পদাঘাতকারী.
>> এই আলগোরিদিম যা আমরা, বেশী ভালো উহু, বাইনারি অনুসন্ধান pined করেছি,
আপনি বোর্ডে সংখ্যার একটি অ্যারের অনুসন্ধান করতে পারেন
অথবা একটি ফোন বই এত আরো দ্রুত যদি আপনি ব্যবহার এবং বিভক্ত করা জিতা
এবং একটি বাইনারি অনুসন্ধান অ্যালগোরিদম, কিন্তু বাইনারি অনুসন্ধান দুই ধারনাগুলো প্রয়োজন.
এক, যে তথ্য অনুসারে সাজানো ছিল.
এখন, সম্ভবতঃ আমরা রাখা এই অনুসারে বাছাই করতে পারেন,
তাই হয়তো যে, কিন্তু কোনো উদ্বেগ না বাইনারি অনুসন্ধান এছাড়াও অধিকৃত
আপনি যে সংখ্যার তালিকা র্যান্ডম এক্সেস ছিল,
এবং একটি অ্যারের আপনি রেন্ডোম অ্যাকসেস করতে সক্ষম হবেন, এবং দ্বারা র্যান্ডম এক্সেস,
আমি বলতে চাচ্ছি আপনি যদি একটি অ্যারের দেওয়া করছেন কত সময়, এটা আপনার লাগবে
বন্ধনী 0 পেতে?
এক অপারেশন, আপনি [0] ব্যবহার করে এবং আপনি অধিকার আছে.
কতগুলি পদক্ষেপ এটা অবস্থান 10 পেতে সময় লাগবে?
এক ধাপ, আপনি ঠিক [10] এ যান এবং সেখানে আপনি হন.
বিপরীতভাবে, একবার আপনি কিভাবে একটি লিঙ্ক তালিকায় 10th পূর্ণসংখ্যা যাও পেতে পারি?
আপনি শুরুতে শুরু আছে কারণ শুধুমাত্র আপনি মনে করছেন
একটি লিঙ্ক তালিকা শুধু একটি স্ট্রিং ভালো শুরুতে, মনে হচ্ছে
তার প্রথম গৃহস্থালির কাজ ঠিকানা দ্বারা, এবং যে 10 int-খুঁজে পায়
অথবা যে একটি স্ট্রিং মধ্যে 10 অক্ষর, আপনি পুরো জঘন্য জিনিস অনুসন্ধান আছে.
>> আবার, আমরা আমাদের সব সমস্যার সমাধান করছি না.
আমরা নতুন কিছু করছি পরিচায়ক, কিন্তু এটি কি আপনার জন্য ডিজাইন করার চেষ্টা করছি উপর নির্ভর করে.
এই রূপায়ণকারী নিরিখে আমরা যে ছাত্র কাঠামো থেকে একটি ধারণা ধার নিতে পারেন.
সিনট্যাক্স এখন ছাড়া খুব অনুরূপ,, একটি সামান্য ধারণা আরো বিমূর্ত
তুলনায় ঘর এবং নাম এবং আইডি.
কিন্তু আমি উত্থাপন করা যে আমরা একটি সি ডাটা স্ট্রাকচার পারে
যে নোড বলা হয়, হিসাবে স্লাইডে শেষ কথা সুপারিশ,
একটি নোডের অভ্যন্তরে, এবং একটি নোডের মধ্যে শুধুমাত্র একটি কম্পিউটার বিজ্ঞান মধ্যে জেনেরিক ধারক.
এটি একটি বৃত্ত অথবা একটি বর্গক্ষেত্র বা আয়তক্ষেত্র হিসাবে আমরা সম্পন্ন করেছি হিসাবে সাধারণত এর টানা.
এবং এই তথ্য কাঠামো, আমরা কোন int, পা আছে,
যাতে এর সংখ্যা আমি ধারণ করতে চান.
কিন্তু কি এই দ্বিতীয় লাইন, struct নোড * পরের?
কেন এই সঠিক, বা কি ভূমিকা আছে এই জিনিস খেলা,
যদিও এটি প্রথম নজরে কিছুটা রহস্যময়?
হাঁ.
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
ঠিক তাই, এর spoils * সাজানোর যে এটা কিছু ধরণের একটি পয়েন্টার.
এই পয়েন্টার নাম হচ্ছে ইচ্ছামত পরবর্তী,
কিন্তু আমরা কিছু বলা যেতে পারে এটা আমরা চাই, কিন্তু কি আছে এই পয়েন্টার বিন্দু?
[ছাত্র] আরেকটি নোড. >> যথাযথভাবে, এটি অন্য ধরনের নোডের স্থানটিকে.
>> এখন, এই হল সি একটি কৌতুহল সাজান
পুনরাহ্বান যে একটি সি কম্পাইলার নীচে শীর্ষ দ্বারা, পড়া বাকি অধিকার হয়,
যার মানে যদি এই হল একটু কি আমরা ছাত্র সঙ্গে কি থেকে পৃথক.
যখন আমরা একটি ছাত্র সংজ্ঞায়িত করা হয়, আসলে আমরা সেখানে রাখা হয়নি একটি শব্দ না.
এটা ঠিক বলেছেন typedef.
তারপর আমরা int-আইডি, স্ট্রিং নাম, স্ট্রিং ঘর ছিল,
এবং তারপর struct নীচে ছাত্র.
এই ঘোষণার একটি সামান্য ভিন্ন কারণ,
আবার, C কম্পাইলার একটি সামান্য বোবা.
এটা কেবল এর উপরে নীচে পড়া যাচ্ছে,
তাই এটি যদি 2nd লাইন এখানে পৌছানোর
যেখানে পরবর্তী ঘোষণা এবং এটি সূচিত হয়, উহু, এখানে একটি পরিবর্তনশীল নামক পরের.
এটা একটা struct নোডের একটি পয়েন্টার.
কম্পাইলার কি একটি নোড struct বুঝতে হবে?
আমি এই জিনিস আগে শুনিনি কখনও করেছি,
কারণ অন্যথায় শব্দ নোডের প্রদর্শিত হতে পারে
নিচ পর্যন্ত, তাই এই অতিরেক নেই.
আপনি এখানে struct নোড বলার আছে, যা আপনি পরে খাটো করতে পারেন
নিচে এখানে ধন্যবাদ typedef যাও, কিন্তু এই হল কারণ
আমরা ভিতরে গঠন কাঠামো নিজেই উল্লেখ করা হয়.
এটা এক gotcha আছে.
>> কিছু মজার সমস্যা উঠা যাচ্ছে.
আমরা সংখ্যার একটি তালিকা আছে. কিভাবে আমরা না তা সন্নিবেশ?
কীভাবে আমরা এটি অনুসন্ধান? আমরা কিভাবে এটা থেকে মুছে দিতে চান?
বিশেষ করে এখন যে আমরা এই পয়েন্টার সমস্ত পরিচালনা আছে.
আপনি চিন্তা পয়েন্টার ছিল মন-নমন কতকাংশে
যখন আপনি ছিল তাদের মধ্যে একজন মাত্র এটা কোন int পড়ার চেষ্টা.
এখন আমরা একটি সম্পূর্ণ তালিকা এর মূল্য নিপূণভাবে আছে.
কেন আমাদের 5 মিনিটের বিরতি নিতে আমরা এখানে না, এবং তারপর আমরা আনা হবে
উপর পর্যায় পর্যন্ত কিছু ভাবেন যে ঠিক না.
>> C হল আরো অনেক মজার যখন এটি অভিনীত হয়.
আক্ষরিক কে প্রথম হতে চান?
ঠিক আছে, উপরে আসা. আপনি প্রথম.
চান কে 9 হবে? ঠিক আছে, 9.
কেমন 9? 17?
একটু এখানে উপদল. 22 যে সামনের সারিতে এবং 26.
এবং সেটা কিভাবে সম্পর্কে কেউ ওখানে এ তীক্ষ্ন করা হচ্ছে.
আপনি 34. ঠিক আছে, তার উপরে 34, আসা.
প্রথম ওইদিকে. ঠিক আছে, আপনি না চারটি.
এবং যারা আমরা কি 9 জন্য বলে?
9 আমাদের কে?
সত্যিই কে 9 হতে চায়? সমস্ত অধিকার, চলো, 9 হতে.
আমরা শুরু করছি.
34, আমরা দেখা ওইখানে পাবেন.
প্রথম অংশ নিজের মত চেহারা করা হয়.
26, 22, 17, ভাল.
যদি আপনি পাশ দাঁড়াবার জন্য বন্ধ, কারণ আমরা একটি মুহূর্ত আপনাকে malloc চলুন পারেন.
>> ভাল, ভাল.
ঠিক আছে, চমৎকার, তাই এর প্রশ্ন এখানে কয়েক জিজ্ঞাসা করা যাক.
এবং প্রকৃতপক্ষে, কি আপনার নাম? >> অনিতা.
অনিতা, ঠিক আছে, এখানে উপর চলো.
অনিতা আমাদের ধরণের প্রথম মধ্যে সমাধান করা মোটামুটি সহজ প্রশ্ন এক সাহায্য যাচ্ছে,
যা আপনি কিভাবে করবেন কিনা বা না একটি মূল্য তালিকা হয় খুঁজে পেতে?
এখন, প্রথম লক্ষ্য করা যে, এখানে প্রতিনিধিত্ব দ্বারা লুকাস,
একটি সামান্য ভিন্ন, এবং তাই কাগজ তার অংশ ইচ্ছাকৃতভাবে পার্শ্বাভিমুখ
কারণ এটা না এবং আপ নিতে অনেক বিট হিসাবে না বেশ লম্বা হইনি,
যদিও টেকনিক্যালি সে কাগজ একই আকার মাত্র আবর্তিত হয়েছে.
কিন্তু তিনি কিছুটা আলাদা যে তিনি একটা পয়েন্টার জন্য শুধুমাত্র 32 বিট,
এবং এই সব না হয় 64 বিট, অর্ধেক যার মধ্যে একটি সংখ্যা, যার অর্দ্ধ্বেক একটি পয়েন্টার.
কিন্তু পয়েন্টার, তাই ফোটানো হয় না যদি না আপনি কিছুটা awkwardly পারা
আপনার বাম হাত ব্যক্তি পরের আপনাকে এ নির্দেশ ব্যবহার.
এবং আপনি নম্বর 34. আপনার নাম কি?
Ari.
Ari, তাই আসলে, আপনার ডান হাতে কাগজ, রাখা এবং বাঁ হাত সোজা নিচে চলে যায়.
আপনি বাম দিকের প্রতিনিধিত্বকারী নাল.
>> এখন আমাদের মানুষের ছবি খুব সামঞ্জস্যপূর্ণ.
আসলে এই পয়েন্টার কিভাবে কাজ.
এবং যদি আপনি এই ভাবে কিছুক্ষন scrunch তাই আমি আপনার উপায় না পারেন.
অনিতা এখানে, আমার 22 নম্বর খুঁজতে,
কিন্তু অধিষ্ঠিত কাগজের টুকরা মানুষের না পর্যন্ত বাধ্যতা অনুমান,
কিন্তু এই একটি তালিকা, এবং আপনি শুধুমাত্র লুকাস সঙ্গে শুরু করতে
কারণ তিনি আক্ষরিক প্রথম পয়েন্টার.
মনে করুন আপনি নিজেকে একজন পয়েন্টার, এবং তাই খুব আপনি কিছু এ নির্দেশ করার ক্ষমতা আছে.
কেন আপনি ঠিক কি নির্দেশ করা হয় লুকাস নির্দেশ দ্বারা শুরু হয় না?
গুড, এবং আমাকে এখানে উপর এই আইন পাস করা.
শুধু আলোচনার জন্য দোহাই, আমাকে একটি ফাঁকা পাতা বৈঠাচালনা এখানে আপ.
আপনি কিভাবে আপনার নাম? বানান >> অনিতা.
ঠিক আছে, অনিতা.
চলুন শুরু করা যাক নোড * anita = Lucas বলে.
ভাল, আমরা আপনাকে Lucas কল করা উচিত নয়. আমরা আপনাকে প্রথম ডাকা উচিত.
কেন আসলে বাস্তবতা এখানে সঙ্গে সামঞ্জস্যপূর্ণ হয় এই?
প্রথম ওয়ান, ইতিমধ্যেই বিদ্যমান.
প্রথম সম্ভবতঃ করেনি বরাদ্দ কোথাও আপ করা হয়েছে এখানে.
নোড * প্রথম, এবং এটি করা হয়েছে একটি তালিকা একরকম বরাদ্দ.
আমি কিভাবে যে কি আমি জানি না. যা কোনভাবে আগে ক্লাস শুরু.
এই মানুষের লিঙ্ক তালিকা তৈরি হয়েছে.
এবং এখন গল্প-এ এই সমস্ত ফেসবুকে যাচ্ছে দৃশ্যত এই পয়েন্ট পরে-
গল্পের এই পর্যায়ে, অনিতা সমান প্রথম হতে সক্রিয়া করা হয়েছে,
যা লুকাস সময়ে অনিতা পয়েন্ট মানে এই নয়.
বরং, সে কি তিনি এ স্থানটিকে এ স্থানটিকে
কারণ একই ঠিকানা যে লুকাস এর 32 বিট এর ভিতরে - 1, 2, 3 -
হয় এখন Anita এর 32 বিট এছাড়াও ভিতরে - 1, 2, 3.
>> এখন 22 খুঁজতে. কিভাবে আপনি এই কাজ করার চেষ্টা করা হবে?
যে যাই হোক না কেন যাও? >> পয়েন্ট কি.
যাই হোক না কেন নির্দেশ, তাই এগিয়ে যান এবং এটি কাজ হিসাবে আপনি ভাল করতে পারেন এখানে.
ভাল, ভাল, এবং এখন আপনি প্রতি নির্দেশ করে যাচ্ছি-কি 22 এর সাথে আপনার নাম?
Ramon. >> Ramon, তাই Ramon 22 অধিষ্ঠিত আপ করা হয়.
আপনি এখন চেক করতে পেরেছেন.
কি Ramon == 22, এবং উদাহরণস্বরূপ, যদি তাই হয়, আমরা সত্য ফিরে আসতে পারেন.
সম্পর্কে-সময় যাক এইসব বলছি এখানে দাঁড়ানো কিছুটা awkwardly-
সম্পর্কে কিছু করতে দ্রুত bool মত খুঁজে দিন.
আমি এগিয়ে যান এবং বলতে যাচ্ছে (নোড * তালিকা, int n) করছি.
আমি আপনাকে বলছি করা অধিকার ফিরে পাবেন. আমি শুধু কিছু কোড লিখুন আছে.
এবং এখন আমি এগিয়ে যান এবং এই, নোড * anita = তালিকা করতে যাচ্ছি.
এবং আমি এগিয়ে যান এবং বলতে যাচ্ছে সময় (anita! = শূন্য). করছি
>> এখানে রূপক একটু প্রসারিত হয়ে চলেছে, কিন্তু হয় যখন (anita! = শূন্য) কি, আমি কি করতে চান?
আমি উল্লেখ করার একটি উপায় সন্ধান প্রয়োজন
পূর্ণসংখ্যা যে অনিতা নির্দেশ করা হয়.
ইন অতীত, যখন আমরা কাঠামো ছিল, যা একটি নোড হল,
আমরা বিন্দু স্বরলিপি ব্যবহৃত, এবং আমরা এরকম কিছু একটা বলতে হবে
anita.n, কিন্তু এখানে সমস্যা হল অনিতা একটি struct অপরিহার্যভাবে হয় না.
সে কি?
তিনি একজন পয়েন্টার, সত্যিই তাই, যদি আমরা এই বিন্দুর ব্যবহার করতে চান স্বরলিপি-
এবং এই যাও ইচ্ছাকৃতভাবে একটু তাকান যাচ্ছে রহস্যপূর্ণ-
আমরা যাহা Anita এর বাম হাত যাওয়ার মত কিছু একটা আছে নির্দেশ করা হয়
এবং তারপর ক্ষেত্র বলা হবে পেতে.
অনিতা একটি পয়েন্টার, কিন্তু কি হবে * anita?
আপনি কি যখন আপনি কি অনিতা নির্দেশ না যেতে খুঁজে পেতে?
একটি struct, একটি নোড, এবং একটি নোড, রিকল, একটি ক্ষেত্র নামক করা হয়েছে
কারণ এটি, প্রত্যাহার করেনি, এই 2 ক্ষেত্র, এবং পরের n,
আমরা দেখেছি যে একটি মুহূর্ত আগে ডান এখানে.
>> প্রকৃতপক্ষে এই কোড নকল করা,
আমরা এই কাজ করতে এবং বলতে পারে যদি ((* anita). == n ঢ), এন যে আমি খুঁজছি.
উল্লেখ্য, ফাংশানের নম্বর আমি গুরুত্বপূর্ণ প্রেরণ করা হত.
তারপর আমি এগিয়ে যান এবং ফিরে ভালো কিছু সত্য করতে পারেন.
অন্যথায়, যদি এই ক্ষেত্রে না কি, আমি কি করতে চান?
আমি কিভাবে কি অনিতা তালিকা মাধ্যমে হাঁটা দ্বারা কি তাই intuitively কোড অনুবাদ?
আমি কি এখানে আপ অনিতা বাম যাও যে পদক্ষেপ গ্রহণ, যে পদক্ষেপ বাম যাও অনুকরণ করা উচিত?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> কি যে?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
ভালো, খারাপ ধারণা নয় অতীতে, কিন্তু, যখন আমরা এই সম্পন্ন করেছি, আমরা সম্পন্ন করেছি anita +
কারণ যে সংখ্যা 1 অনিতা যুক্ত হবে,
যা সাধারণত ব্যক্তি পরবর্তী সময়ে Ramon ভালো নির্দেশ, হবে,
বা ব্যক্তির পাশে তাকে, অথবা পরের তাকে ব্যক্তির লাইন ডাউন.
কিন্তু এখানে যে এর কারণ কি এই জিনিস মেমরি মত বেশ ভাল না?
নেই যে. আমরা যে নিষ্ক্রিয় আছে.
এটা ভালো দেখায় মেমরি, এবং এমনকি যদিও আমি 1 এবং 2 এবং 3 ঘনিষ্ঠ এক অন্য টানা করেছি,
যদি সত্যিই আমরা অনুকরণ না আপনি, এই-পারেন যদিও একই ব্যক্তিদের নির্দেশ করে,
একটি র্যান্ডম ধাপে ফিরে, কিছু আপনি সম্মুখে একটি র্যান্ডম ধাপে আপনি কিছু সময় লাগতে পারে?
>> এই জগাখিচুড়ি এখনও একটি তালিকা সংযুক্ত,
কিন্তু এই না কোথাও মেমরি হতে পারে,
তাই anita + যাও কেন কাজ করে যাচ্ছে না?
অবস্থান anita এ কি +?
কে জানে.
এটা অন্য কোনো মান যাতে ঠিক এরকম করা interposed যাও
সুযোগ দ্বারা এই নোডের মধ্যে সমস্ত কারণ আমরা একটি অ্যারে ব্যবহার করছি না.
আমরা এই নোডের প্রতিটি পৃথকভাবে বরাদ্দ.
ঠিক আছে, যদি না আপনি নিজেকে পরিষ্কার ব্যাক আপ করতে পারেন.
আমাকে যে পরিবর্তে anita + + ', পরিবর্তে আমরা anita এর উত্থাপন করা পায়-
ভাল, কেন আমরা যাহা অনিতা নির্দেশ করা হয় না এবং তারপর যান না না. পরের?
অন্য কথায়, আমরা Ramon, যারা 22 এর হোল্ডিং নম্বর যান,
এবং তারপর. পরবর্তী হিসাবে যদিও অনিতা অনুলিপি তার বাম হাত ইশারা করা হবে.
কিন্তু সে তুলনায় অধিকতর Ramon যান না, কারণ আমরা 22 পাওয়া যাবে.
কিন্তু যে ধারণা হবে. এখন, এই একটি সাংঘাতিক জগাখিচুড়ি.
সত্যি বলতে, কেউ কখনও এই বাক্য গঠন, এবং মনে রাখা হবে যাতে সৌভাগ্যক্রমে
এটা আসলে কিছুটা ইচ্ছাকৃত-উহু, আপনি কি আমার লেখা দেখতে আসলে না.
এই আরো আকর্ষক যদি পারা যাবে. Voila!
>> পর্দার পিছনের, আমি এই সমস্যা সমাধানের উপায় ছিল.
অনিতা, বামে যাও যে পদক্ষেপ গ্রহণ করা,
প্রথমে, আমরা ঠিকানা যাও যে অনিতা নির্দেশ না যাবেন না
এবং যেখানে সে n, যা আমরা ঠিক তুলনা এর অনুরোধে জন্য চেক না কেবল খুঁজে পেতে হবে,
কিন্তু আপনি খুঁজে পরের হবে - এই ক্ষেত্রে,
Ramon এর বাম হাত তালিকায় পরবর্তী নোডের যাও নির্দেশ করছে.
কিন্তু এটা সাংঘাতিক জগাখিচুড়ি যা আমি আগে বলা হয়,
কিন্তু এটি সক্রিয় আউট সি দেয় আমাদের এই সহজ করে.
পরিবর্তে লেখা (* anita), আমরা পরিবর্তে anita> n লিখতে পারেন,
এবং এটা বৈশিষ্ট্যগুলি সঠিক একই জিনিস, কিন্তু এটা আরও বেশি ধারণাসম্পন্ন,
এবং এটা একটা অনেক ছবি সঙ্গে আরও বেশি সঙ্গতিপূর্ণ যে আমরা করছি অঙ্কন
সব সময় এই তীরচিহ্ন ব্যবহার করে.
>> অবশেষে, আমরা কি এই প্রোগ্রাম শেষে কি প্রয়োজন?
কোড অবশিষ্ট একটি লাইন আছে.
কি দেখাবে?
মিথ্যা, কারণ যদি আমরা সমগ্র মাধ্যমে পেতে যখন লুপ
এবং অনিতা হয়, আসলে, নাল, যে মানে সে তালিকার শেষে সব উপায় গিয়েছিলাম
যেখানে তিনি প্রতি নির্দেশ ছিল-এ আপনার নাম আবার কি?
Ari. >> Ari এর বাম হাত, যা নাল.
অনিতা এখন নাল হয়, এবং আমি বুঝতে শুধুমাত্র আপনার স্থায়ী এখানে নরক মধ্যে awkwardly
কারণ আমি একটি নাটকাদি হচ্ছে করছি এখানে বন্ধ,
কিন্তু আমরা মাত্র কয়েক মিনিটের মধ্যে আপনি আবার কাজে নিযুক্ত করা হবে.
অনিতা গল্পের এক পর্যায়ে নাল হয়, তাই সময় লুপ শেষ,
এবং আমরা ফিরে যাও মিথ্যা আছে কারণ যদি তিনি সব Ari এর নাল পয়েন্টার উপায় আছে
তারপর কোন নম্বর যে সে তালিকায় চাওয়া ছিল.
আমরা এই পর্যন্ত পরিষ্কার করতে পারে কিন্তু এই হয় তাহলে খুবই ভালো বাস্তবায়ন
একটি ট্র্যাভেরসাল ফাংশন, একটি একটি লিঙ্ক তালিকা জন্য ফাংশন খুঁজে.
এটা এখনও রৈখিক অনুসন্ধান, কিন্তু এটি একটি + পয়েন্টার হিসাবে হিসাবে সহজ নয়
অথবা + একটি তোমার পরিবর্তনশীল এখন কারণ আমরা অনুমান করতে পারেন না
যেখানে এই নোডের প্রতিটি মেমরি হয়.
আমরা আক্ষরিক breadcrumbs এর লেজ অনুসরণ আছে বা, আরো ঠিক করে,
পয়েন্টার, একটি নোড থেকে অন্য পেতে.
>> এখন আমি কি করে অন্য একটি চেষ্টা করুন. অনিতা, আপনি এখানে ফিরে আসতে চান?
কেন আমরা এগিয়ে না যেতে না এবং এক শ্রোতা থেকে অন্য ব্যক্তির বরাদ্দ করা?
Malloc-কি আপনার নাম? >> রেবেকা.
রেবেকা. Rebecca শ্রোতাদের কাছ থেকে করেনি malloced করা হয়েছে,
এবং এখন তিনি 55 নম্বর সংরক্ষণ করা হয়.
এবং এখন হাতের লক্ষ্য জন্য অনিতা সন্নিবেশ যাও
লিঙ্ক তার যথাযথ স্থানে এখানে তালিকায় Rebecca.
এখানে এক মুহূর্ত জন্য আসা হয়.
আমি ভালো কিছু কাজ.
আমি নোড * কাজ আছে. এবং আপনার নাম আবার কি?
রেবেকা. >> রেবেকা, ঠিক আছে.
Rebecca malloc (sizeof (নোড)) পায়.
শুধু ভালো আমরা অতীতে ছাত্র এবং যাবদ্ধর ভালো জিনিস আছে বরাদ্দ,
আমরা নোড মাপ প্রয়োজন, তাই এখন Rebecca
কি নির্দেশ করা হয়?
রেবেকা তার ভিতর দুটি ক্ষেত্র, এক যা 55 আছে.
চলুন শুরু করা যাক না rebecca-> = 55. কি,
কিন্তু তারপর rebecca> পরের অধিকার এখন-পছন্দ করা উচিত, তার হাত হয় কে জানে ধরনের?
এটা কিছু আবর্জনা মান এ, তাই প্রতি নির্দেশ কেন ভাল পরিমাপের জন্য কি না
আমরা অন্তত এই করবেন যাতে বাম হাত হল এখন তার পাশ.
এখন অনিতা, এখান থেকে সময় লাগবে.
আপনি আছে রেবেকা বরাদ্দ থাকার হয়েছে.
এগিয়ে যান এবং যেখানে আমরা রেবেকা করা উচিত খুঁজে.
ভাল, খুব ভাল.
ঠিক আছে, ভাল, এবং এখন আমরা আপনাকে দিক একটি বিট করতে হবে,
যাতে আপনি Ari পৌঁছেছেন.
তার বাম হাত হল নাল, কিন্তু রেবেকা পরিষ্কারভাবে ডান জন্যে,
তাই কিভাবে আমরা এই লিঙ্ক তালিকা পরিবর্তন করা না থাকে
যাতে যথাযথ স্থানেই এ রেবেকা সন্নিবেশ?
যদি আপনি আক্ষরিক হিসাবে প্রয়োজন কাছাকাছি বাম হাতে মানুষ এর যেতে পারিনি,
আমরা সমস্যাটি সমাধানের জন্য যে ভাবে করব.
ঠিক আছে, ভাল, এবং অন্তর্বর্তীকালে, রেবেকা এর বাম হাত তার পাশ হয় এখন.
>> যেটা খুব সহজ.
চলুন শুরু করা যাক চেষ্টা বণ্টন-we're প্রায় হয়ে গেছে 20,.
ঠিক আছে, উপরে আসা.
20 বরাদ্দ করা হয়েছে, তাই আমাকে এগিয়ে যান এবং আবার এখানে বলার
আমরা ঠিক করেছি নোড * saad সম্পন্ন.
আমরা malloc আছে (sizeof (নোড)).
এরপর আমরা একই সঠিক বাক্য গঠন হিসাবে জন্য আমরা 20 আগে কি না,
এবং আমি পরের = শূন্য না, এবং এখন এটি অনিতা উপর নির্ভর করব
আপনাকে লিঙ্ক তালিকা মধ্যে সন্নিবেশ করুন, যদি আপনি যে সঠিক একই ভূমিকা পালন করতে পারে.
সম্পাদন করুন.
ঠিক আছে, ভাল.
এখন সতর্কতার সাথে মনে হয় আপনি আগে শুরু বাম হাত কাছাকাছি চলন্ত.
আপনি দ্বারা পর্যন্ত সবচেয়ে বিশ্রী ভূমিকা না আজ.
যার হাত প্রথম স্থানান্তরিত করা উচিত?
ঠিক আছে, অপেক্ষা করুন, আমি কোনো কিছু করছি এর শ্রবণ.
যদি কিছু ভাবেন সবিনয়ে একটা বিশ্রী পরিস্থিতি এখানে সমাধানের জন্য সাহায্য চাই.
যার বাম হাত আপডেট প্রথম সম্ভবত করা উচিত? হাঁ.
[ছাত্র] সাদ এর.
ঠিক আছে, সাদ এর, কেন, যদিও?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
ভাল, কারণ যদি আমরা অগ্রসর-কি আপনার নাম? >> মার্শাল.
মার্শাল, যদি আমরা তার হাত প্রথম নিচে নাল সরানো,
এখন আক্ষরিক এই তালিকার মধ্যে আছে চার জনের এতিম
কারণ তিনিই একমাত্র জিনিস Ramon এবং বাম সবাইকে নির্দেশ করে,
যাতে পয়েন্টার প্রথম আপডেট খারাপ ছিল.
চলুন যে পূর্বাবস্থা.
গুড, এবং এখন এগিয়ে যান এবং যথাযথ বাম হাত Ramon নির্দেশ সরাতে.
এই সামান্য অপ্রয়োজনীয় মনে.
এখন দুই Ramon নির্দেশ মানুষ আছে, কিন্তু যে সূক্ষ্ম
কারণ এখন কিভাবে অন্যথায় আমরা তালিকা আপডেট কি?
কি অন্য দিকে সরানো হয়েছে?
চমৎকার এখন, আমরা কোন মেমরি হারিয়েছে?
না, তাই ভাল, আসুন যদি আমরা এই আরো একবার বিরতি না করতে.
>> এক সময় শেষ Mallocing, সংখ্যা 5.
সমস্ত পিঠ উপায় ডাউন উপর, আসা.
এটা খুব উত্তেজনাপূর্ণ.
[সাধুবাদ]
আপনার নাম কি? >> রন.
রন, ঠিক আছে, আপনি 5 নম্বর হিসাবে malloced হয়.
আমরা ঠিক করেছি যে এই কোড সঞ্চালিত প্রায় অভিন্ন
শুধু একটি ভিন্ন নাম.
চমৎকার.
এখন, অনিতা, সৌভাগ্য তালিকায় সংখ্যা 5 এখন ঢোকাতে.
গুড, এবং?
অসাধারণ, তাই এটি সত্যিই মোট তিনটি ক্ষেত্রে তৃতীয়.
আমরা প্রথম শেষে কেউ ছিল, রেবেকা.
আমরা তখন কেউ ছিল মধ্যম.
এখন আমরা আরম্ভে, এবং এই উদাহরণে কেউ আছে,
আমরা এখন প্রথমবার লুকাস আপডেট ছিল
কারণ তালিকায় প্রথম উপাদান এখন একটি নতুন নোডের এ নির্দেশ আছে,
ঘুরে যারা,, নোড 9 নম্বর নির্দেশ করে না.
>> এটি ছিল অতিশয় কুতসিত বিক্ষোভের, আমি নিশ্চিত,
তাই একটি সাধুবাদ বড় এইসব বলছি জন্য বৃত্তাকার যদি আপনি করতে পারে.
চমত্কারভাবে কাজ.
এই যা. আপনি একটু স্মৃতি হিসাবে কাগজে আপনার টুকরা রাখা হতে পারে.
এটা পরিনত হয় যে এই কোড কাজ
বেশ হিসাবে ঠিক কাছাকাছি হাতে চলন্ত হিসাবে সহজ নয়
এবং বিভিন্ন জিনিস এ পয়েন্টার প্রতি নির্দেশ.
কিন্তু বুঝি যে যখন আসে সময় ভালো কিছু বাস্তবায়ন
একটি লিঙ্ক তালিকা বা এটি একটি বৈকল্পিক যদি আপনি সত্যিই ফোকাস
এই মৌলিক মৌলিক, কামড়-আকার সমস্যা আমি চিন্তা করা আছে,
এটা এই হাত বা এই হাত, বুঝতে পারি যে কি অন্যথায় একটি মোটামুটি জটিল প্রোগ্রাম
আসলে,, কমে মোটামুটি সহজ ভালো বিল্ডিং ব্লক করা যাবে.
>> যাক এর আরো একটি অত্যাধুনিক অভিমুখ এখনও জিনিষ নিতে.
আমরা এখন লিঙ্ক তালিকা ধারণা আছে.
আমরা ফিরে পরামর্শ আছে-দোকর একটি লিঙ্ক তালিকা আছে, ধন্যবাদ,
যা প্রায় একই দেখায়, কিন্তু এখন আমরা struct ভিতর দুই পয়েন্টার আছে
পরিবর্তে এক, এবং সম্ভবত আমরা যারা পয়েন্টার পূর্ববর্তী এবং পরবর্তী পারে
বা বাম বা ডান, কিন্তু আমরা আসলে,, না তাদের দুটি প্রয়োজন.
কোড একটু বেশি জড়িত হতে চাই.
অনিতা ছিল আরো কাজ এখানে মঞ্চে থাকবে.
কিন্তু আমরা অবশ্যই গঠন তজ্জাতীয় বাস্তবায়ন হতে পারে.
সময় চলমান নিরিখে যদিও,, কি চলমান সময় হবে
জন্য একটি লিঙ্ক তালিকা একটি সংখ্যা n এখন খুঁজে বের করার অনিতা?
এখনও বড় হে n র, তাই এটা রৈখিক অনুসন্ধান চেয়ে ভাল.
আমরা বাইনারি অনুসন্ধান, না যদিও বলতে পারে না, আবার.
কেন যে কেস? আপনি কাছাকাছি ফেলবেন না পারেন.
যদিও আমরা আমাদের সকল মঞ্চে মানুষের দেখুন,
এবং অনিতা এবং এটি eyeballed থাকতে পারে বলেন, "এখানে তালিকার মধ্যম,"
তিনি যে যদি সে ছিল কম্পিউটার প্রোগ্রাম জানি না
কারণ শুধু যে তিনি যাও দৃশ্যকল্প শুরু করার যাও হুড়কা উপর
লুকাস ছিল, ছিল প্রথম পয়েন্টার.
অগত্যা তিনি ঐ লিঙ্ক অনুসরণ করা হবে,
তার উপায় গণনা পর্যন্ত তিনি প্রায় মধ্যম পাওয়া গেছে,
এবং এমনকি তারপরে, সে যখন সে মধ্যম পৌঁছেছেন এর জানা যাচ্ছে না
যদি না তিনি শেষে সব উপায় চিন্তা করা যায় কিভাবে অনেক আছে,
তারপর খুব backtracks, এবং যে হার্ড, যদি না আপনি ছিল হবে
কিছু ধরণের দোকর লিঙ্ক তালিকা.
>> কিছু কিছু সমস্যার সমাধান আজ, কিন্তু অন্যদের পরিচায়ক.
একটি ভিন্ন তথ্য গঠন সম্পূর্ণভাবে সম্পর্কে কি?
এটি মাথের হাউস মধ্যে ট্রে একটি আলোকচিত্র,
এবং এই ক্ষেত্রে, আমরা একটি তথ্য গঠন করেছি আমরা ইতিমধ্যে ধরনের বিষয়ে কথা হয়েছে আছে.
একটি স্ট্যাক মেমরি সম্পর্কে আমরা প্রেক্ষিতে বললাম,
এবং ইচ্ছাকৃতভাবে যে ধরণের নামে এর কারণ মেমরি পদ একটি স্ট্যাক
হল কার্যকরভাবে একটি তথ্য কাঠামো, যা আরো এবং আরো স্টাফ এটি উপরে স্তরপূর্ণ আছে.
কিন্তু একটি স্ট্যাক সম্পর্কে আকর্ষণীয় বিষয় হিসাবে, বাস্তবে হয় কেস,
যে এটা একটা ডাটা স্ট্রাকচার বিশেষ ধরনের.
এটা একটা ডাটা স্ট্রাকচার যদ্দ্বারা প্রথম উপাদান
শেষ উপাদান আউট.
আপনি যদি প্রথম ট্রে যাও স্ট্যাকের মধ্যে স্থাপন করা হবে,
আপনি দুর্ভাগ্যবশত করা শেষ ট্রে নেওয়া স্ট্যাকের বন্ধ চলুন,
এবং যে ভালো তা নয়, এর.
বিপরীতভাবে, আপনি এটি সম্পর্কে অন্যান্য উপায় কাছাকাছি মনে করতে পারেন,
শেষ হল প্রথম আউট.
>> এখন, কোনো পরিস্থিতিতে যাও যেখানে একটি স্ট্যাক হচ্ছে মনে আসে না
ডাটা স্ট্রাকচার যেখানে আপনি যে সম্পত্তি আছে
, প্রথম বার শেষ, আসলে বাধ্যতামূলক?
এটা কি ভালো? এটা কি খারাপ জিনিস?
এটা অবশ্যই একটা বাজে জিনিস যদি ট্রে ছিল অভিন্ন সব না
এবং তারা সব বিশেষ বিভিন্ন রং বা যে কোন বস্তু,
এবং রঙ চান সমস্ত নীচে উপায়.
অবশ্যই, আপনি যে মহান প্রচেষ্টার ছাড়া পাবেন না.
আপনি উপর থেকে এবং শুরু আপনার উপায় নিচে কাজ আছে.
একইভাবে, যদি আপনি কি ছিল এই পাখা ছেলেদের এক
সমস্ত রাত্রি একটি আপ আইফোন এবং লাইন পেতে চেষ্টা যারা অপেক্ষা আপ
এ ভালো একটি স্থান?
এটি চমৎকার হবে না যদি আপেল দোকান
ছিল একটি স্ট্যাক ডাটা স্ট্রাকচার?
ইয়ে? বরং?
শেষ সম্ভব মিনিট এ লক্ষ মানুষ দেখানোর জন্য শুধুমাত্র ভাল
এবং তারপর অনুত্তীর্ণ কিউ বন্ধ করতে পারেন.
এবং সত্য যে, আসলে তাই আমি আনত ছিল কিউ বলে যাও
এটা কি আমরা এই ধরনের ডাটা স্ট্রাকচার কল করবে প্রকৃতপক্ষে সামঞ্জস্যপূর্ণ,
এক বাস্তবতা যেখানে আদেশ ব্যাপার আছে,
এবং আপনি প্রথম প্রথম এক এক হতে চান
যদি শুধুমাত্র মানুষের জন্য সততা অনুরোধে.
আমরা সাধারণত কল যে সারিতে তথ্য গঠন করব.
>> এটি সক্রিয় আউট লিঙ্ক তালিকা ছাড়াও, আমরা এই একই মূল ধারণা ব্যবহার শুরু করতে পারেন
এবং সমস্যার সমাধানের নতুন এবং ভিন্ন ধরনের নির্মাণ শুরু.
একটি স্ট্যাক ক্ষেত্রে উদাহরণস্বরূপ, আমরা একটি স্ট্যাক প্রতিনিধিত্ব করতে পারে
একটি ভালো তথ্য গঠন ব্যবহার করে, আমি উত্থাপন করা হবে.
এই ক্ষেত্রে, আমি একটি struct ঘোষণা করেছি, এবং আমি এই কাঠামোর ভিতর বলেন করেছি
একটি সংখ্যার একটি অ্যারে এবং তারপর একটি পরিবর্তনশীল নামক আকার,
এবং আমি একটি স্ট্যাক কল এই জিনিস যাচ্ছি.
এখন, কেন আসলে এই কাজ করে?
একটি স্ট্যাক ক্ষেত্রে, আমি একটি অ্যারে হিসাবে পর্দায় এই কার্যকরভাবে আঁকতে পারে.
এই যে আমার স্ট্যাকের. সেগুলো হল আমার নম্বর.
এবং আমরা তাদের এই হিসাবে, আঁকা এই করব, এই, এই, এই.
এবং তারপর আমি অন্য কিছু তথ্য এখানে সদস্য আছে,
যা সাইজ বলা হয়, তাই এই আকার, এবং এই নম্বরগুলি,
এবং সম্মিলিতভাবে, সমগ্র এখানে রহমান এক স্ট্যাকের গঠন করা হয়.
ডিফল্টরূপে, এখন, সম্ভবতঃ আকার পেয়েছে করেনি যাও 0 সক্রিয়া করা হবে,
এবং কি সংখ্যার অ্যারের ভিতর এর প্রাথমিকভাবে
প্রথম যখন আমি একটি অ্যারের বরাদ্দ করা?
জঞ্জাল. কে জানে? এবং এটা আসলে কোন ব্যাপার না.
যদি এই হয় 1, 2, 3, 4, 5 না, ব্যাপার সম্পূর্ণভাবে এলোমেলোভাবে
দুর্ভাগ্য আমার গঠন সঞ্চিত কারণ এতক্ষণ হিসাবে আমি জানি যে স্ট্যাকের আকার
মান 0, তারপরে আমি জানতে programmatically, অ্যারের মধ্যে উপাদানের কোনো তাকান না.
এটা কি আছে কোন ব্যাপার না.
না তাদের সময়, ২ 0 হিসাবে একটি মাপের সংশ্লেষ হবে না তাকান.
>> কিন্তু এখন আমি অনুমান এগিয়ে যান এবং স্ট্যাকের মধ্যে কিছু সন্নিবেশ করুন.
আমি 5 নম্বর প্রবেশ করাতে চান, যাতে আমি 5 নম্বর এখানে রাখুন,
এবং তারপর কি আমি নিচে না রাখা এখানে?
এখন আসলে আমি রাখা আকার জন্য 1 ডাউন হবে,
এবং এখন স্ট্যাকের মাপ হল 1.
আমি যদি এগিয়ে যান এবং নম্বর প্রবেশ করাতে, আমি কি বলতে, 7 পরের?
এই তারপর 2 যাও, আপডেট এবং তারপর আমরা 9 ​​করব পরার,
এবং তারপর এই 3 আপডেট করা হয়.
কিন্তু মজার এই স্ট্যাকের এখন বৈশিষ্ট হল
আমি বুঝতে পারি যে উপাদান যদি আমি পপ সরাতে চান অনুমিত করছি
স্ট্যাকের কিছু বন্ধ, তাই কথা বলতে?
9 সর্বপ্রথম যে জিনিসটি যেতে হবে.
কিভাবে ছবি পরিবর্তন যদি আমি স্ট্যাকের বন্ধ একটি উপাদান পপ করতে চান,
অনেক মাথের মধ্যে একটি ট্রে চান?
হাঁ. >> 2 [ছাত্র] আকার সেট করুন.
ঠিক, সব আমি 2 যাও আকার সেট করা হয়, এবং কি আমি অ্যারে নিয়ে কি করবেন?
আমি কিছু করতে হবে না.
আমি, মলদ্বারে হতে যাও, সেখানে 0 অথবা একটি একটি -1 বা কিছু বোঝান পারে করা
যে এই হয়, কিন্তু একটি legit মান না না এটা কোন ব্যাপার না কারণ
আমি অ্যারে নিজেই কতদিন এটা বাইরে রেকর্ড করতে পারি
যাতে আমি জানি শুধুমাত্র প্রথম অ্যারের মধ্যে এই দুটি উপাদান তাকান.
এখন, যদি আমি এই যান এবং অ্যারের 8 নম্বর যোগ করুন, কিভাবে পরবর্তী ছবি পরিবর্তন করবেন?
এই হয়ে 8, এবং এই পরিণত হয় 3.
আমি কয়েক কোণ কাটা করছি এখানে.
এখন আমরা 5, 7, 8, আছে এবং আমরা ফিরে যাও 3 একটি মাপ.
এটা বেশ প্রয়োগ করা অপেক্ষাকৃত সহজ,
কিন্তু যখন আমরা এই নকশা সিদ্ধান্ত দুঃখপ্রকাশ যাচ্ছি?
যখন জিনিষ না অত্যন্ত, ভুল হয়ে যেতে শুরু? হাঁ.
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
যখন আপনি ফিরে যান এবং প্রথম উপাদান আপনি রাখা ইন পেতে চাই
>> এটি সক্রিয় এখানে যদিও একটি স্ট্যাক হয় ফণা নীচে একটি অ্যারের,
ডাটা স্ট্রাকচার আমরা বলছি শুরু করেছি এছাড়াও সাধারণভাবে হিসাবে পরিচিত
বিমূর্ত ডাটা স্ট্রাকচার যেখানে তারা কিভাবে প্রয়োগ করছেন
সম্পূর্ণরূপে বিন্দু ছাড়াও হয়.
একটি স্ট্যাক মত তথ্য কাঠামো সমর্থন যোগ অনুমিত হয়
ধাক্কা, যা স্ট্যাকের মধ্যে একটি ট্রে push কর্মের মত অপারেশন,
এবং পপ, যা স্ট্যাকের দ্বারা একটি উপাদান থেকে সরিয়ে দেওয়া হয়, এবং যে এটি.
আপনি যদি অন্য কেউ এর কোড যারা ইতিমধ্যে বাস্তবায়িত ডাউনলোড হয়েছে
এই স্ট্যাকের নামক একটি জিনিস, যে ব্যক্তি না হত
আপনার জন্য মাত্র দুটি ফাংশন, এবং ধাক্কা পপ, যার একমাত্র উদ্দেশ্য জীবন
যাও যে ঠিক কি হবে.
আপনি অথবা তাকে যে প্রোগ্রাম বাস্তবায়িত
হয়েছে সম্পূর্ণরূপে একটি কিভাবে বাস্তবায়ন করার সিদ্ধান্ত নিতে হবে
ঠেলাঠেলি ফণা নীচে এবং পপিং এর শব্দার্থবিদ্যা
অথবা ঠেলাঠেলি এবং পপিং কার্যকারিতা.
এবং আমি কিছুটা shortsighted সিদ্ধান্ত এখানে আছে
এই সহজ ডাটা স্ট্রাকচার কেন আমার সঙ্গে স্ট্যাকের রূপায়ণকারী?
যখন এই ডাটা স্ট্রাকচার বিভাজক আছে?
কি মুহুর্তে আমি উদাহরণস্বরূপ একটি ত্রুটি ফেরত যখন ব্যবহারকারী কল ধাক্কা, আছে?
[ছাত্র] যদি কোন স্থান নেই.
ঠিক, যদি সেখানে এর কোন স্থান, যদি আমি ক্ষমতা অতিক্রম করেছেন,
যা সমস্ত ক্যাপ কারণ এটি বলে যে এটা বিশ্ব ধ্রুবক কিছু.
না সেটা, আমি শুধু আছে না যাচ্ছে, বলে "দুঃখিত, আমি অন্য কোনো মান হতে পারে না ধাক্কা
স্ট্যাকের মধ্যে, "অনেক মাথের মধ্যে চান.
>> এক পর্যায়ে তারা যে সামান্য মন্ত্রিসভা উপরের অংশ আঘাত চলুন.
কোন স্ট্যাকের মধ্যে স্থান বা ক্ষমতা আছে, যা কিছু বিন্দু ত্রুটি আছে.
তারা উপাদান অন্য কোথাও দিতে হবে, ট্রে অন্য কোথাও,
অথবা কোথাও না এ সব.
সারিতে সঙ্গে এখন, আমরা একটি পৃথক সামান্য এটা বাস্তবায়ন করতে পারে.
একটি কিউ ফণা নীচে যে, এটি প্রয়োগ করা যেতে পারে একটি সামান্য ভিন্ন
হিসাবে একটি অ্যারের, কিন্তু এই ক্ষেত্রে কেন,, আমি উপস্থাপক am
আরও একটি প্রধান উপাদান তালিকা মাথা প্রতিনিধিত্বমূলক আছে,
তালিকা সামনে, লাইন এ প্রথম আপেল দোকান এ ব্যক্তির আকার ছাড়াও,?
কেন আমি এখানে একটি অতিরিক্ত তথ্য টুকরা প্রয়োজন?
কি সংখ্যা হল ফিরে চিন্তা
যদি আমি টানা করেছি হিসাবে এটি অনুসরণ করে.
এই ধরুন এখন হয় পরিবর্তে একটি স্ট্যাকের সারিতে,
হচ্ছে-মাত্র আপেল দোকান-কিউ মত পার্থক্য হল পরিষ্কার.
লাইন প্রথম তালিকার শুরুতে ব্যক্তি, এই ক্ষেত্রে নম্বর 5,
সে দোকানে মধ্যে প্রথম দিন হবে না.
চলুন না যে.
ধরুন এই যে এই মুহূর্তে আমার কিউ রাজ্যের সময়, এখন আপেল এবং দোকান
প্রর্দশিত হবে এবং প্রথম ব্যক্তি, সংখ্যা 5, দোকান মধ্যে নেতৃত্বাধীন হয়.
আমি কিভাবে এখন ছবি পরিবর্তন যে আমি প্রথম ব্যক্তি de-সারিবদ্ধ
লাইনে সামনে?
কি যে? >> [ছাত্র] কিউ পরিবর্তন করুন.
মাথা পরিবর্তন, 5 disappears.
প্রকৃতপক্ষে, এটা হিসাবে যদিও-কীভাবে সেরা এই কাজের জন্য?
প্রকৃতপক্ষে, এটা হিসাবে যদিও এই লোক যাবে না.
কি নম্বর 7 একটি প্রকৃত বাজারের কি?
তারা একটি বড় পদক্ষেপ এগিয়ে নিতে চাই.
>> তবে কি আমরা কৃতজ্ঞ এসে যখন এটি অ্যারে আসে
এবং প্রায় জিনিষ যাচ্ছেন?
এটা আপনার সময় নষ্ট ধরনের অধিকার,?
আপনি কেন এত মলদ্বারে করা আছে হিসাবে প্রথম ব্যক্তি আছে
এ লাইনের শারীরিকভাবে মেমরি খণ্ড শুরু করার শুরু?
যে সম্পূর্ণ অপ্রয়োজনীয়. কেন?
কি ঠিক পরিবর্তে আমি স্মরণ করতে পারেন? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
ঠিক, আমি এই অতিরিক্ত তথ্য সদস্য মাথা সঙ্গে স্মরণ করা যেতে পারে
এখন যে তালিকা মাথা নেই 0, ​​তা ছিল একটি মুহূর্ত আগে.
এখন এটি প্রকৃত সংখ্যা 1. এই ভাবে, আমি সামান্য অপ্টিমাইজেশান পেতে.
কারণ আমি ঠিক করেছি লাইনের শুরুতে আপেল দোকান এ লাইন থেকে কেউ de-সারিবদ্ধ
কিন্তু প্রত্যেকের, রিকল নামান যা একটি রৈখিক অপারেশন আছে না মানে.
আমি ধ্রুব পরিবর্তে শুধুমাত্র সময় ব্যয় করতে পারেন
এবং অনেক দ্রুত প্রতিক্রিয়া তারপর অর্জন.
কিন্তু আমি মূল্য পরিশোধ করছি কি যে অতিরিক্ত কর্মক্ষমতা লাভ
এবং প্রত্যেকের নামান হচ্ছে না?
হাঁ. >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
আরো মানুষ যুক্ত করতে পারেন, ভাল, যে সমস্যা হয় লম্ব
যাও সত্য যে আমরা মানুষ নাড়াচাড়া করছি আশেপাশে না.
এটা এখনও একটি অ্যারের, তাই কি না তা আমরা সবাই বা নামান না-
ওহ, আমি দেখতে কি আপনি কি বোঝাতে চেয়েছেন, ঠিক আছে.
বাস্তবিক, আমি কি আপনাকে এটা প্রায় হিসাবে যদিও বলছে তা সাথে সম্মত
আমরা এখন করছি আর এই অ্যারের ব্যবহার শুরু যাচ্ছে না
কারণ আমি যদি 5 সরান তাহলে, আমি 7 সরান.
কিন্তু কেবল আমি অধিকার মানুষ করা.
>> এটা মনে ভালো আমি স্থান নাশক করছি, এবং অবশেষে আমার কিউ কিছুই মধ্যে disintegrates,
তাই আমরা ঠিক মানুষের wraparound পারে,
এবং আমরা সত্যিই এই অ্যারের বিজ্ঞপ্তি গঠন কিছু হিসাবে মনে করতে পারে,
কিন্তু আমরা সি কি অপারেটর যাও wraparound যে সাজানোর ব্যবহার করবেন?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> modulo অপারেটর.
এটা দিয়ে মনে হয় তা আপনি কীভাবে wraparound না একটু বিরক্তিকর হতে পারে,
কিন্তু আমরা তা না, এবং আমরা কি লাইনের সামনে ব্যবহৃত হতে পারে লোকজন নির্বাণ শুরু করতে পারে,
কিন্তু আমরা ঠিক এই মাথা পরিবর্তনশীল যিনি প্রকৃতপক্ষে লাইন প্রকৃত প্রধান সঙ্গে স্মরণ.
যদি, এর পরিবর্তে, আমাদের লক্ষ্য শেষ পর্যন্ত, যদিও,
নম্বর সন্ধান করার ছিল, হিসাবে আমরা অনিতা সঙ্গে মঞ্চে এখানে কি,
কিন্তু সত্যিই আমরা সব এই বোথ ওয়ার্ল্ডস সেরা করতে চান?
আমরা আরো কুতর্ক তুলনায় অ্যারের পারবেন চান
কারণ আমরা পরিবর্তনশীলরূপে ডাটা স্ট্রাকচার হত্তয়া ক্ষমতা চান.
কিন্তু আমরা যে আমরা নির্দিষ্ট যাও রিসোর্ট আছে না চান
প্রথম বক্তৃতা মধ্যে একটি অনুকূল আলগোরিদিম ছিল না,
রৈখিক অনুসন্ধানের যে.
এটা পরিনত হয় যে আপনি আসলে,, অর্জন করতে পারেন
বা ধ্রুবক সময় অন্তত বন্ধ, যদ্দ্বারা অনিতা মত কেউ,
যদি সে তার ডাটা স্ট্রাকচার কনফিগার একটি তালিকা সংযুক্ত করা না,
একটি স্ট্যাক করা না, এই সারির হবে না, আসলে,, পারা
ডাটা স্ট্রাকচার যে তার জিনিষ সন্ধান করতে পারবেন সঙ্গে চলে আসে,
কি এমনকি শব্দ, সংখ্যা না, আমরা নিত্য সময় ফোন করবো.
>> এবং সত্য, এগিয়ে খুঁজছেন, এই শ্রেণীতে psets এক প্রায় সবসময়
একটি spellchecker একটি বাস্তবায়ন, যদ্দ্বারা
আমরা আপনাকে আবার দিতে 150,000 কিছু ইংরেজি শব্দ এবং লক্ষ্য
মেমরির মধ্যে লোড করা এবং যারা দ্রুত যাও ফর্ম প্রশ্নের উত্তর দিতে পারবেন
এই শব্দ বানান ঠিক আছে?
এবং সত্যিই এটি স্তন্যপান যদি আপনি সব 150,000 শব্দের মাধ্যমে যে উত্তর পুনরুক্তি করা ছিল না.
আসলে কিন্তু,, আমরা যে আমরা খুব খুব, দ্রুত সময়ের মধ্যে তা করতে পারেন দেখতে পাবেন.
এবং তা বাস্তবায়নের জন্য কিছু নামক একটি হ্যাশ টেবিল জড়িত করা যাচ্ছে,
প্রথম নজরে এবং যদিও এই জিনিস নামক একটি হ্যাশ টেবিল যাচ্ছে
আমাদের অর্জন করা যাক এই সুপার দ্রুত প্রতিক্রিয়া বার,
এটি সক্রিয় যে আসলে একটা সমস্যা আছে.
যখন এটি এই জিনিস বলা-আবার বাস্তবায়নের সময় আসে, আমি এরকম আবার করছি.
আমি শুধু এখানে এক.
যখন তা আসে এই জিনিস রূপায়ণকারী সময় নামক একটি হ্যাশ টেবিল,
আমরা সিদ্ধান্ত করতে যাচ্ছেন.
কত বড় আসলে এই বিষয় হওয়া উচিত?
এবং যখন আমরা এই হ্যাশ টেবিল মধ্যে ঢোকাতে নম্বর শুরু,
কিভাবে আমরা এই ধরনের একটি উপায় তাদের সঞ্চয় যাচ্ছে
যে আমরা তাদের ফিরে পেতে আউট হিসাবে দ্রুত পারেন হিসাবে আমরা তাদের আছে?
কিন্তু আমরা আগে দীর্ঘ দেখতে পাবেন যে এই প্রশ্ন
যখন সবাই এর জন্মদিন বর্গ মধ্যে অত্যন্ত সঙ্গত হবে.
এটা পরিনত হয় যে এই রুমে, আমরা কয়েক শত মানুষের পেয়েছেন,
তাই মতভেদ আছে যা আমাদের দুটি একই জন্মদিন সম্ভবত অত্যন্ত উচ্চ.
যদি এই ছিল আমাদের রুমে আছে মাত্র 40?
দুটি একই জন্মদিন হচ্ছে মানুষের অমিল কি কি?
[ছাত্রদের] ওভার 50%.
হাঁ, উপর 50%. আসলে, এমনকি আমি একটি চার্ট আনা.
এটি সক্রিয় আউট এবং এই সত্যিই শুধু একটি স্নিক প্রিভিউ-
যদি আমাদের মাত্র 58 এই রুমে, 2 আমাদের সম্ভাবনা আছে
একই জন্মদিন হচ্ছে অতিশয় উচ্চ হয়, প্রায় 100%,
এবং যে বুধবার একটি আঘাত সমগ্র আমাদের জন্য গুচ্ছ ঘটাতে যাচ্ছে.
>> সঙ্গে বলেন যে, আমি কি এখানে স্থগিত রাখা. আমরা বুধবার আপনি দেখতে পাবেন.
[সাধুবাদ]
[CS50.TV]