ছিনিয়ে বাউডেন: হাই, আমি, রব বাউডেন আছি এবং এর quiz0 সম্পর্কে কথা বলুন. সুতরাং, প্রথম প্রশ্ন. এই প্রশ্নের কোথায় আপনি নম্বর কোড করার প্রয়োজন বাইনারি বাল্ব মধ্যে 127. আপনি চান, তাহলে আপনি পারে নিয়মিত রূপান্তর করতে দশমিক বাইনারি থেকে যাও, bi-- বা থেকে. কিন্তু যে সম্ভবত যাচ্ছে অনেক সময় নিতে. আমি আপনাকে যে জিনিসটা পারে, মানে, ঠিক আছে, 1, সেখানে, 2 সেখানে হয় হয় 4 সেখানে, 8 সেখানে হয় হয়. সুষ্ঠু ভাবে, 127 128 বিয়োগ এক. যে leftmost আলোর বাল্ব 128-বিট. সুতরাং 127 শুধু সব সত্যিই হয় অন্যান্য লাইট বাল্ব এর, যে leftmost যেহেতু আলোর বাল্ব বিয়োগ 1. যে যে প্রশ্নের জন্য এটি. প্রশ্ন এক. 3 বিট সঙ্গে তাই আপনি যা করতে পারেন 8 স্বতন্ত্র মান প্রতিনিধিত্ব. কেন, তারপর, বৃহত্তম অ ঋণাত্মক 7 আপনি উপস্থাপন করতে পারেন দশমিক পূর্ণসংখ্যা? ওয়েল, যদি আমরা শুধুমাত্র পারেন 8 স্বতন্ত্র মান প্রতিনিধিত্ব, তারপর কি আমরা হতে যাচ্ছেন প্রতিনিধিত্বমূলক 7 মাধ্যমে 0. 0 মান এক আপ লাগে. প্রশ্ন দুটি. এন বিট সঙ্গে, কতগুলি স্বতন্ত্র মান আপনি উপস্থাপন করতে পারেন? সুতরাং, এন বিট সঙ্গে, আপনি 2 আছে প্রতিটি বিট জন্য সম্ভাব্য মান. সুতরাং আমরা 2 সম্ভাব্য মান জন্য আছে প্রথম বিট, 2 সম্ভাব্য মান দ্বিতীয় জন্য, 2 তৃতীয় জন্য সম্ভব. তাই যে 2 বার 2 বার 2, এবং শেষ পর্যন্ত উত্তর এন যাও 2 হয়. প্রশ্ন তিনটি. বাইনারি মধ্যে 0x50 কি? তাই হেক্সাডেসিমেল একটি খুব আছে মনে রাখা বাইনারি করার সহজবোধ্য রূপান্তর. তাই এখানে, আমরা শুধু তাকান প্রয়োজন 5 এবং স্বাধীনভাবে 0. সুতরাং বাইনারি মধ্যে 5 কি? 0101, যে 1 বিট এবং 4 বিট. বাইনারি 0 কি? চতুর নেই. 0000. তাই শুধু তাদের একত্র করা, এবং যে বাইনারি মধ্যে পূর্ণ সংখ্যা. 01010000. আপনি চেয়েছিলেন এবং যদি আপনি করতে পারে যে leftmost শূন্য অপসৃত. এটা অপ্রাসঙ্গিক. আমি তখন অন্যথায়, দশমিক 0x50 কি? আপনি চেয়েছিলেন আপনি যদি, আপনি could-- বাইনারি সঙ্গে আরো আরামদায়ক, আপনি যে বাইনারি উত্তর নিতে পারে এবং দশমিক মধ্যে যে রূপান্তর. অথবা আমরা শুধু মনে রাখতে পারে যে হেক্সাডেসিমাল. 0 যাতে 0-তম স্থানে, এবং 5 প্রথমেই যাও 16 হয়. তাই এখানে, আমরা 5 বার 16 আছে প্রথম, শূন্য প্লাস 0 বার 16, 80 হল. এবং যদি আপনি দিকে তাকিয়ে যদি প্রশ্নের শিরোনাম, এটি একটি ধরনের যা ছিল সি এস 80, ছিল এই সমস্যার উত্তর দিতে প্রজ্ঞান. প্রশ্ন পাঁচটি. আমরা যা, এই ভূত স্ক্রিপ্ট আছে 4 বার চিনাবাদাম মাখন জেলি পুনরায়. তাই কিভাবে আমরা সি কোড এখন যে কি? ভাল, আমরা এখানে গাঢ় অংশ থাকে আপনি বাস্তবায়ন ছিল একটি অংশ মাত্র. সুতরাং আমরা 4 looping যে একটি 4 লুপ আছে বার printf,-ing চিনাবাদাম মাখন জেলি, নতুন লাইন দিয়ে সমস্যার জন্য অনুরোধ জানাবে হিসাবে. প্রশ্ন ছয়, অন্য ভূত সমস্যা. আমরা আমরা একটি চিরকালের লুপ দেখতে. আমরা পরিবর্তনশীল তোমার বলছে এবং তারপর 1 দ্বারা আমি বৃদ্ধিশীল. এখন আমরা সি আছে যে কাজ করতে চান আমরা এই কাজ করে থাকতে পারে একাধিক উপায়ে. এখানে আমরা কোড ঘটেছে কিছুদিনের (সত্য) হিসাবে চিরকালের লুপ. তাই আমরা ঠিক, পরিবর্তনশীল আমি ঘোষণা ভালো আমরা ভূত পরিবর্তনশীল তোমার ছিল. পরিবর্তনশীল আমি ঘোষণা, এবং চিরকালের (সত্য), যখন আমরা পরিবর্তনশীল আমি বলতে. Printf,% তোমার বা তোমার% ঘ ব্যবহার করেছি পারে তাই. আমরা যে ভেরিয়েবল বলে, ও তারপর তা বাড়ায়, i ++. প্রশ্ন সাত. এখন আমরা খুব অনুরূপ কিছু করতে চান মারিও ডট গ করতে সমস্যা থেকে এক সেট. আমরা এই হ্যাশট্যাগ প্রিন্ট করতে চান, আমরা একটি পাঁচ প্রিন্ট করতে চান এই হ্যাশ এর তিনটি আয়তক্ষেত্র দ্বারা. তাই কিভাবে আমরা তা করতে যাচ্ছি? ভাল, আমরা আপনাকে একটি পুরো দিতে কোড অফ গুচ্ছ, এবং আপনি শুধু মুদ্রণ গ্রিড ফাংশন পূরণ করতে হবে. তাই কি PrintGrid কেমন হয়েছে? ওয়েল আপনি অতীতের আছেন প্রস্থ এবং উচ্চতা. সুতরাং আমরা একটি বাইরের আছে 4 লুপ, যে looping এর এই সারি সর্বাঙ্গে আমরা প্রিন্ট আউট করতে চান যে গ্রিড. তারপর আমরা, আন্ত নেস্টেড 4 লুপ আছে যে প্রতিটি কলামের উপর প্রিন্টিং এর. সুতরাং প্রতিটি সারির জন্য, আমরা জন্য প্রিন্ট প্রতিটি কলাম, একটি একক হ্যাশ. তারপর সারি শেষে আমরা মুদ্রণ একটি একক নতুন লাইন পরবর্তী সারিতে যেতে. এবং যে পুরো গ্রিড জন্য এটি. প্রশ্ন আটটি. PrintGrid মত একটি ফাংশন বলা হয় একটি ফিরতি একটি পার্শ্ব প্রতিক্রিয়া আছে, কিন্তু না মান. পার্থক্য ব্যাখ্যা কর. তাই এই আপনি মনে উপর নির্ভর একটি পার্শ্ব প্রতিক্রিয়া কি. ওয়েল, একটি ফিরতি মান আমরা PrintGrid না জানি যেহেতু, ফিরতি মূল্য আছে এখানে ডান এটি অকার্যকর বলেছেন. অকার্যকর ফিরিয়ে দেয় তাই কিছু সত্যিই কিছু ফেরত না. সুতরাং পার্শ্ব প্রতিক্রিয়া কি? ওয়েল, একটি পার্শ্ব প্রতিক্রিয়া সাজান চলতেই যে কিছু ফাংশন শেষ হওয়ার পর যে, শুধু ফিরে ছিল না এবং এটি শুধু ইনপুট থেকে ছিল না. সুতরাং, উদাহরণস্বরূপ, আমরা প্রতাপ একটি বিশ্বব্যাপী পরিবর্তনশীল পরিবর্তন. এটা একটি পার্শ্ব প্রতিক্রিয়া হতে হবে. এই বিশেষ ক্ষেত্রে, একটি খুব গুরুত্বপূর্ণ পার্শ্ব প্রতিক্রিয়া পর্দা মুদ্রণ করা হয়. সুতরাং যে একটি পার্শ্ব প্রতিক্রিয়া যে PrintGrid হয়েছে. আমরা পর্দায় এই জিনিস প্রিন্ট করা হবে. এবং যদি আপনি মনে করতে পারেন একটি পার্শ্ব প্রতিক্রিয়া হিসাবে, কিছু যে যেহেতু যে এই ফাংশন শেষ হয় পরে চলতেই থাকে. যে সুযোগ বাইরে কিছু এই ফাংশন যে শেষ পর্যন্ত পরিবর্তিত হচ্ছে, পর্দার বিষয়বস্তু. প্রশ্ন নয়. নীচের প্রোগ্রাম বিবেচনা করুন যা লাইন নম্বর জন্য যোগ করা হয়েছে আলোচনা অনুরোধে. এই প্রোগ্রামে তাই আমরা ঠিক হয় এটি সংরক্ষণ, GetString আহ্বান এই পরিবর্তনশীল এর মধ্যে, এবং তারপর যে পরিবর্তনশীল এর মুদ্রণ. ঠিক আছে. লাইন এক উপস্থিত কেন তাই ব্যাখ্যা. # অন্তর্ভুক্ত CS50 ডট জ. কেন আমরা CS50 ডট জ # অন্তর্ভুক্ত করতে হবে? আচ্ছা আমরা আহ্বান করছি ফাংশন GetString, এবং GetString সংজ্ঞায়িত করা হয় CS50 লাইব্রেরি. আমরা আছে কি না যদি তাই # অন্তর্ভুক্ত CS50 ডট জ, আমরা যে অন্তর্নিহিত ঘোষণা পেতে চাই GetString ফাংশন ত্রুটির কম্পাইলার থেকে. সুতরাং আমরা লাইব্রেরি অন্তর্ভুক্ত করা প্রয়োজন আমরা হেডার ফাইল অন্তর্ভুক্ত করা প্রয়োজন, বা অন্য কম্পাইলার না করবে না GetString বিদ্যমান যে স্বীকার করে. লাইন দুটি উপস্থিত কেন ব্যাখ্যা কর. তাই প্রমিত IO ডট জ. এটা ঠিক একই আগের সমস্যা হিসাবে, পরিবর্তে মোকাবেলার ছাড়া GetString, আমরা printf বিষয়ে কথা বলছি. আমরা আমরা প্রয়োজন বলে না যদি তাই প্রমিত IO ডট জ অন্তর্ভুক্ত, তারপর আমরা পারব না printf ফাংশন ব্যবহার করতে, কম্পাইলার কারণ এটা সম্পর্কে জানেন না. Why-- তাৎপর্য কি লাইন চার বাতিলযোগ্য? তাই আমরা এখানে int প্রধান (অকার্যকর) আছে. যে শুধু যে আমরা এর বলছে কোন কমান্ড লাইন প্রাপ্ত না হয় প্রধান আর্গুমেন্ট. আমরা int বলতে পারে যে মনে রাখুন প্রধান int-argc স্ট্রিং argv বন্ধনী. তাই আমরা এখানে শুধু আমরা বলতে অকার্যকর বলে কমান্ড লাইন আর্গুমেন্ট উপেক্ষা করা হয়. ঠিক, মেমরি সম্মান সঙ্গে, ব্যাখ্যা করো লাইনে কি GetString ছয় আয়. GetString একটি ব্লক ফিরে আসছে মেমরি, অক্ষরের একটি অ্যারের. এটা সত্যিই একটি ফিরে পাবে প্রথম অক্ষর পয়েন্টার. একটি স্ট্রিং একটি গৃহস্থালি তারকা মনে রাখবেন. সুতরাং প্রথম একটি পয়েন্টার চরিত্র যাই হোক না কেন এ পংক্তি ব্যবহারকারী কীবোর্ড এ প্রবেশ করানো. এবং যে মেমরি malloced করা হবে, তাই যে মেমরি গাদা হয়. প্রশ্ন 13. নিচের প্রোগ্রামটি বিবেচনা করুন. তাই এই সব প্রোগ্রাম করছে 10 দ্বারা বিভক্ত 1 printf,-ing হয়. তাই কম্পাইল করার সময় এবং মৃত্যুদন্ড কার্যকর, এই প্রোগ্রাম আউটপুট 0.0, যদিও 10 দ্বারা বিভক্ত 1 0.1 হয়. সুতরাং কেন এটা 0.0 হয়? ওয়েল, এই কারণ হল পূর্ণসংখ্যা বিভাগের. তাই 1 একটি পূর্ণসংখ্যা 10 একটি পূর্ণসংখ্যা হয়, হয়. তাই 1 থেকে 10, সবকিছু দ্বারা বিভক্ত ইন্টিজার হিসেবে গণ্য করা হয়, এবং সি, আমরা পূর্ণসংখ্যা বিভাগ না হলে, আমরা কোনো দশমিক পয়েন্ট অগ্রভাগ ছাঁটিয়া. সুতরাং 1 10 দ্বারা বিভক্ত 0, এবং তারপর আমরা চেষ্টা করছি তাই, একটি float হিসাবে যে প্রিন্ট একটি float হিসাবে মুদ্রিত শূন্য 0.0 হয়. আমরা 0.0 পেতে কেন এবং যে. নিচের প্রোগ্রামটি বিবেচনা করুন. এখন আমরা 0.1 মুদ্রণ করছি. সুতরাং কোন পূর্ণসংখ্যা বিভাগ, আমরা শুধু 0.1 মুদ্রণ করছি কিন্তু আমরা এটা মুদ্রণ করছি 28 দশমিক স্থান. এবং আমরা এই 0.1000, আভা পেতে শূন্যের, 5 5 5, বাজে বাজে বাজে কথা. এটা আছে কেন তাই এখানে প্রশ্ন হল পরিবর্তে ঠিক 0.1 এর, যে মুদ্রণ? তাই এখানে কারণে এখন হয় পয়েন্ট অনির্দিষ্টতা ভাসমান. একটি float শুধুমাত্র 32 বিট মনে রাখবেন. সুতরাং আমরা শুধুমাত্র একটি সসীম সংখ্যা উপস্থাপন করতে পারেন যারা 32 সঙ্গে ফ্লোটিং পয়েন্ট মান বিট. ওয়েল শেষ পর্যন্ত অসীম নেই অনেক ফ্লোটিং পয়েন্ট মান, এবং ভাসমান অসীম অনেক আছে 0 এবং 1 এর মধ্যে যে বিন্দু মান, এবং আমরা অবশ্যই সক্ষম হন যে চেয়ে আরও বেশি মান প্রতিনিধিত্ব. তাই আমরা বলি করতে হবে সবচেয়ে মান প্রতিনিধিত্ব করতে পারবে. সুতরাং 0.1 মত একটি মান, দৃশ্যত আমরা যে ঠিক না প্রতিনিধিত্ব করতে পারে. সুতরাং পরিবর্তে 0.1 প্রতিনিধিত্বমূলক এর আমরা কি সেরা আমরা এই 0.100000 5 5 উপস্থাপন করতে পারেন 5. এবং যে, নিকট প্রশংসনীয় কিন্তু অ্যাপ্লিকেশন অনেক জন্য আপনি চিন্তা করতে হবে পয়েন্ট অনির্দিষ্টতা ভাসমান, আমরা শুধু প্রতিনিধিত্ব করতে পারে না, কারণ সব ঠিক পয়েন্ট ভাসমান. প্রশ্ন 15. নিচের কোড বিবেচনা করুন. আমরা শুধু 1 প্লাস 1 মুদ্রণ করছি. তাই এখানে কোন কৌতুক আছে. 1 প্লাস 1 2 মূল্যায়ণ, এবং তারপর আমরা যে মুদ্রণ করছি. এই মাত্র 2 ছাপে. প্রশ্ন 16. এখন আমরা অক্ষর মুদ্রণ করছি 1 প্লাস অক্ষর 1. সুতরাং কেন এই না একই জিনিস মুদ্রণ? ওয়েল চরিত্র 1 প্লাস চরিত্র 1, চরিত্র 1 ASCII মান 49 আছে. তাই এই সত্যিই 49 বলছে প্লাস 49, এবং হয় শেষ পর্যন্ত এই 98 প্রিন্ট করতে যাচ্ছে. তাই এই 2 প্রিন্ট করে না. প্রশ্ন 17. বাস্তবায়ন সম্পন্ন করুন এমনভাবে নীচের বিজোড় ফাংশন যদি ফেরৎ সত্য যে এন এমনকি যদি এন বিজোড় এবং মিথ্যা. এটি একটি মহান উদ্দেশ্য mod অপারেটর জন্য. সুতরাং আমরা আমাদের যুক্তি এন নিতে, এন mod 2 পাশাপাশি 1, সমান হলে যে এন বিভক্ত যে মানে 2 দ্বারা একটি বাকি ছিল. N 2 দ্বারা বিভক্ত, একটি বাকি ছিল যে এন বিজোড় হয়, তাই আমরা সত্য ফিরে মানে হল যে. অন্যথায় আমরা ফিরে মিথ্যা. এছাড়াও আপনি 2 সমান mod n কাজ করতে পারে শূন্য, অন্যথায়, মিথ্যা ফিরে ফিরে সত্য. নীচের রিকার্সিভ ফাংশন বিবেচনা করুন. এন যদি তাই কম বা 1 ফিরে, 1 সমান, এন বিয়োগ 1 চ অন্য রিটার্ন এন বার. তাই এই ফাংশন কি? ওয়েল, এই মাত্র হল গৌণিক ফাংশন. এই চমত্কারভাবে প্রতিনিধিত্ব করা হয় এন গৌণিক হিসেবে. তাই এখন 19 প্রশ্ন, আমরা চাই এই রিকার্সিভ ফাংশন নিতে. আমরা এটা পুনরাবৃত্ত করতে চাই. তাই কিভাবে আমরা তা করতে পারি? ওয়েল কর্মীদের জন্য সমাধান, এবং আবার আছে আপনি কাজ করতে পারে একাধিক উপায় আমরা এই int পণ্য দিয়ে শুরু যে 1 সমান. এবং এই সারা লুপ জন্য, আমরা চলুন পরিণামে করার পণ্যের গুন করা পূর্ণ গৌণিক দিয়ে শেষ. Int জন্য আমি 2 সমান সুতরাং, আমি হয় কম বা সমান হবে, i ++. আমি 2 সমান কেন আপনি হতাশ হতে পারে. ভাল, আমরা আছে এখানে মনে রাখা আমাদের বেস ক্ষেত্রে সঠিক কি না. এন চেয়ে কম বা সমান যদি তাই 1 যাও, আমরা শুধু 1 ফিরে করছি. আমি 2 সমান এখানে ওভার সুতরাং, আমরা শুরু. ওয়েল আমি 1, হলে তারপর the-- বা এন লুপ জন্য তারপর 1, হলে এ সব না চালানো হবে. তাই আমরা ঠিক would 1 যা রিটার্ন পণ্য,. একইভাবে, যদি এন ছিল বেশী কিছু কম 1 টি এটা 0, যদি নেতিবাচক 1, যাই হোক না কেন আমরা এখনও, 1 ফিরে যেতে চাই যা ঠিক কি রিকার্সিভ সংস্করণ করছে. এখন, এন বেশী হলে 1 বেশী, তারপর আমরা চলুন অন্তত একটি কাজ করতে এই লুপ পুনরাবৃত্তির. তখন আমরা করছি, এর এন 5 হয় বলা যাক পণ্য বার করতে যাচ্ছে 2 সমান. তাই এখন পণ্য 2 হয়. এখন আমরা কি করতে যাচ্ছেন পণ্য কয়েকবার 3 সমান. এখন তা 6 এর. প্রোডাক্ট বার এটি এখন 24 এর, 4 সমান. প্রোডাক্ট বার এটি এখন 120 এর, 5 সমান. আমি তখন শেষ পর্যন্ত, আমরা ফিরে করছি সঠিকভাবে 5 গৌণিক যা 120,. প্রশ্ন 20. এই কমান্ডের সাহায্যে আপনি পূরণ করতে হবে যেখানে এক কোনো আলগোরিদিম সঙ্গে এই টেবিলের, আমরা দেখা করেছি কিছু যে, যে এই আলগোরিদিমিক রান ফিট বার এই asymptotic চালানোর বার. সুতরাং একটি অ্যালগরিদম কি যে 1 এর ওমেগা, কিন্তু n এর বড় হে হয়? তাই অসীম হতে পারে এখানে অনেক উত্তর. আমরা সম্ভবত সবচেয়ে পাচ্ছি যে এক ঘন ঘন শুধু রৈখিক অনুসন্ধান. সেরা ক্ষেত্রে তাই দৃশ্যকল্প, আমরা করছি আইটেমটি খুঁজছেন এ হল তালিকার শুরুতে এবং তাই 1 ধাপের ওমেগা সালে, আমরা পরীক্ষা সর্বপ্রথম, আমরা সঙ্গে সঙ্গে ফিরে যে আমরা আইটেমটি পাওয়া. লক দৃশ্যকল্প ইন, আইটেম, শেষে হয় অথবা আইটেমটি এ সব তালিকায় না থাকে. সুতরাং আমরা আপনাকে আছে সম্পূর্ণ তালিকা, সব এন উপাদান, এবং এটি n হে কেন. তাই এখন এটা যে উভয় কিছু এন লগ n র ওমেগা, এবং n log n এর বড় হে. ওয়েল সবচেয়ে প্রাসঙ্গিক জিনিস আমরা এখানে দেখা সাজানোর একত্রীকরণ হয় করেছি. সুতরাং সাজানোর, মনে একত্রীকরণ, পরিণামে থীটা হয় থেটা সংজ্ঞায়িত করা হয় যেখানে n log n, এর ওমেগা ও বড় হে উভয় একই হলে. উভয় এন এন লগ ইন করুন. ওমেগা কিছু যে কি n র, এবং n হে ছক? ওয়েল, আবার আছে একাধিক সম্ভাব্য উত্তর. এখানে আমরা বুদ্বুদ সাজানোর বলতে ঘটতে. সন্নিবেশন সাজানোর এছাড়াও এখানে কাজ করবে. যে বুদ্বুদ সাজানোর মনে রাখুন যে অপ্টিমাইজেশান যেখানে আছে, আপনি পেতে পারবেন যদি সম্পূর্ণ তালিকা মাধ্যমে কি প্রয়োজন ছাড়া কোনো অদলবদল, তারপর, ভাল, আমরা অবিলম্বে যে আসতে পারেন তালিকায় দিয়ে শুরু করতে সাজানো হয়েছিল. , শ্রেষ্ঠ কেস দৃশ্যকল্প মধ্যে তাই এটি এন শুধু ওমেগা এর. এটি শুধু একটি চমত্কারভাবে না হলে , দিয়ে শুরু করতে তালিকায় সাজানো তারপর আমরা n হে বিনিময়সমূহ ছক আছে. এবং পরিশেষে, আমরা নির্বাচন সাজানোর আছে n ছক জন্য, ওমেগা এবং বড় ও উভয় প্রশ্ন 21. পূর্ণসংখ্যা ওভারফ্লো কি? ওয়েল আবার, আগে অনুরূপ, আমরা শুধুমাত্র finitely অনেক বিট আছে একটি পূর্ণসংখ্যা প্রতিনিধিত্ব, তাই হয়তো 32 বিট. আসুন আমরা একটি স্বাক্ষরিত পূর্ণসংখ্যা আছে বলে. তারপর শেষ পর্যন্ত সর্বোচ্চ ধনাত্মক সংখ্যা আমরা উপস্থাপন করতে পারেন হল 2 থেকে 31 বিয়োগ 1. আমরা চেষ্টা করে তাই কি হবে তারপর যে পূর্ণসংখ্যা বাড়ায়? ভাল, আমরা 31 থেকে 2 থেকে যেতে চলুন বিয়োগ 1, নিচে নেতিবাচক 2 সব পথ 31. তাই এই পূর্ণসংখ্যা ওভারফ্লো হয় আপনি বৃদ্ধিশীল রাখতে হলে, এবং শেষ পর্যন্ত আপনি করতে পারেন না কোনো উচ্চতর এবং এটা শুধু পেতে ফিরে সব পথ গোপন করে একটি নেতিবাচক মান কাছাকাছি. একটি বাফার ওভারফ্লো সম্পর্কে কি? সুতরাং একটি বাফার overflow-- একটি বাফার কি মনে. এটা মেমরি শুধু একটি খণ্ড. একটি অ্যারের মত কিছু একটা বাফার হয়. সুতরাং একটি বাফার ওভারফ্লো যখন হয় আপনি মেমরি অ্যাক্সেস করার চেষ্টা যে অ্যারের শেষ বহুদূরে. আপনি একটি আছে সুতরাং আকার 5 এবং আপনি অ্যারে অ্যারে বন্ধনী অ্যাক্সেস করতে চেষ্টা 5 বা বন্ধনী 6 বা বন্ধনী 7, তার পরেও বা কিছু শেষ, অথবা এমনকি কিছু নীচের অ্যারে বন্ধনী নেতিবাচক 1 টি ঐ সব বাফার উপচে হয়. আপনি খারাপ উপায়ে মেমরি স্পর্শ করছি. প্রশ্ন 23. আপনি প্রয়োজন এই এক তাই strlen বাস্তবায়ন. এবং আমরা আপনি পারেন যে আপনি বলুন এর নাল হবে না অনুমান, তাই আপনাকে করতে হবে না নাল জন্য কোনো চেক করতে. এবং একাধিক উপায় আছে আপনি এই কাজ করতে পারে. এখানে আমরা শুধু সহজবোধ্য নিতে. আমরা এন, একটি কাউন্টার সঙ্গে শুরু. এন হয় আছে কতগুলি অক্ষর গণনা. তাই আমরা আমরা 0 থেকে আরম্ভ, এবং সম্পূর্ণ তালিকায় পুনরুক্তি. সমান গুলি বন্ধনী 0 নাল টারমিনেটর অক্ষর? আমরা খুঁজছেন মনে রাখুন নাল টারমিনেটর অক্ষর আমাদের স্ট্রিং কতদিন নির্ধারণ. যে বিনষ্ট যাচ্ছে কোনো প্রাসঙ্গিক পংক্তি. সুতরাং গুলি বন্ধনী সমান 0 নাল টারমিনেটর কিভাবে? এটা না, তাহলে আমরা চলুন গুলি বন্ধনী 1, গুলি বন্ধনী 2 তাকান. আমরা পর্যন্ত বর্তা নাল টারমিনেটর খুঁজে. আমরা এটা পেয়েছি একবার, তারপর এন রয়েছে স্ট্রিং এর মোট দৈর্ঘ্য, এবং আমরা শুধু যে যেতে পারেন. প্রশ্ন 24. তাই এই এক যেখানে আপনি বাণিজ্য বন্ধ করতে হবে. তাই এক জিনিস এক ভালো হয় কিন্তু কি ভাবে ভাবে এটা খারাপ? তাই এখানে, একত্রীকরণ সাজানোর থাকে বুদ্বুদ সাজানোর তুলনায় দ্রুততর হতে. সেখানে, ভাল যে সব বলেন না একাধিক উত্তর এখানে আছে. কিন্তু প্রধান এক যে বুদ্বুদ বাছাই করা একটি অনুসারে সাজানো তালিকা জন্য n র ওমেগা হয়. আমরা আগেই আমরা দেখেছি যে টেবিল রাখবেন. সুতরাং বুদ্বুদের ওমেগা অসুস্থ এন, শ্রেষ্ঠ কেস দৃশ্যকল্প এটা শুধু ওভার যেতে সক্ষম হয় তালিকায় একবার, নির্ধারণ হেই এই জিনিস আগে থেকেই সাজানো, এবং বিনিময়ে. কোন ব্যাপার, সাজানোর মার্জ কি আপনাকে যা, এন লগ n র ওমেগা হয়. অনুসারে সাজানো তালিকা জন্য, বুদ্বুদ তাই সাজান দ্রুত হতে যাচ্ছে. এখন তালিকার সম্পর্কে লিঙ্ক? সুতরাং একটি লিঙ্ক তালিকা বাড়া এবং সঙ্কুচিত করতে পারেন প্রয়োজন হিসাবে অনেক উপাদান মাপসই. তাই যে সব বলেন না সাধারণত সরাসরি তুলনা একটি লিঙ্ক হতে যাচ্ছে একটি অ্যারের সাথে তার তালিকা দেখাবে. সুতরাং এমনকি অ্যারে পারেন, যদিও সহজে বাড়া এবং সঙ্কুচিত হিসাবে অনেক উপাদান মাপসই হিসাবে প্রয়োজন, একটি তালিকা লিঙ্ক একটি অ্যারে একটি তুলনা অ্যারে র্যান্ডম এক্সেস আছে. আমরা একটিতেও সূচক পারেন অ্যারের বিশেষ উপাদান. সুতরাং একটি লিঙ্ক তালিকা জন্য, আমরা নারা শুধু পঞ্চম উপাদান যান, আমরা শুরু থেকে, তর্ক আছে আমরা পঞ্চম উপাদান পেতে পর্যন্ত. এবং যে থেকে আমাদের প্রতিরোধ যাচ্ছে বাইনারি অনুসন্ধান ভালো কিছু করছেন. বাইনারি অনুসন্ধান কথা বলছেন, বাইনারি অনুসন্ধান রৈখিক অনুসন্ধান তুলনায় দ্রুততর হতে থাকে. যে সব বলেন না তাই, এক সম্ভাব্য জিনিস আপনি বাইনারি করতে পারে না সংযুক্ত তালিকার উপর অনুসন্ধান, আপনি শুধুমাত্র অ্যারে উপর এটা করতে পারেন. কিন্তু সম্ভবত আরো গুরুত্বপূর্ণ, আপনি বাইনারি অনুসন্ধান করতে পারবেন না সাজানো নয় এরকম একটি অ্যারের উপর. আপফ্রন্ট আপনাকে বাছাই করতে হবে পারে অ্যারে, এবং শুধুমাত্র তারপর পারেন আপনি বাইনারি অনুসন্ধান করতে. আপনার জিনিস না যদি তাই দিয়ে শুরু করতে সাজানো, তারপর রৈখিক অনুসন্ধান দ্রুততর হতে পারে. প্রশ্ন 27. তাই নীচের প্রোগ্রাম বিবেচনা, যা পরবর্তী স্লাইডে মধ্যে হতে হবে. আর এই আমরা করছি যেখানে এক স্পষ্টভাবে রাজ্য চাই যাচ্ছে বিভিন্ন ভেরিয়েবলের জন্য মান. সুতরাং আসুন যে তাকান. তাই এক রেখায়. আমরা int x 1 এর সমান আছে. যে ঘটেছে যে শুধুমাত্র জিনিস. তাই লাইন এক সময়ে, আমরা দেখতে আমাদের টেবিল, যে Y, A, B, এবং tmp সব হয় খুঁজে blacked. তাই x কি? আচ্ছা আমরা শুধু এটা 1 সমান সেট. এবং তারপর, ভাল, দুই লাইন আমরা, y 2 সেট করা হয় দেখতে এবং টেবিল ইতিমধ্যে হয় আমাদের জন্য এ ভরা. সুতরাং x 1 এবং y 2 হয়. এখন, লাইন তিনটি, আমরা এখন করছি swap ফাংশন ভিতরে. আমরা কি অদলবদল পাস হয়নি? আমরা জন্য ampersand এক্স পাস খ জন্য, এবং ampersand Y. কোথায় সমস্যা আগে বলেন যে x এর ঠিকানা 0x10, এবং y এর ঠিকানা 0x14 হয়. সুতরাং a ও b এর সমান হয় যথাক্রমে 0x10 এবং 0x14,. এখন লাইন তিনটি এ, x এবং y কি হয়? ওয়েল, কিছুই পরিবর্তিত হয়েছে এই সময়ে x এবং y সম্পর্কে. এমনকি তারা করছি যদিও একটি প্রধান স্ট্যাকের ফ্রেম ভিতরে, তারা এখনও একই আছে মূল্যবোধ তারা আগে কি. আমরা কোন মেমরি পরিবর্তিত হয়নি. তাই x 1, y 2 হয়. ঠিক আছে. তাই এখন আমরা একটি তারকা সমান int-tmp বলেন. তাই লাইন চার, সবকিছু এ tmp ছাড়া একই. আমরা কোনো মান পরিবর্তিত হয়নি tmp ছাড়া কিছু. আমরা একটি তারকা সমান tmp সেটিং করা হয়. তারা একটি কি? ওয়েল, একটি পয়েন্ট x যাও, তাই একটি তারকা 1, যা সমান এক্স, যাচ্ছে. সুতরাং সবকিছু কপি করা হয় নিচে, এবং tmp 1 সেট করা হয়. এখন পরের লাইন. রাশি একটি তারকা খ সমান. তাই লাইন দ্বারা পাঁচটি ভাল আবার, সবকিছু তারা একটি যা কিছু ছাড়া একই. তারা একটি কি? ভাল, আমরা শুধু তারকা একটি হল x বলেন. সুতরাং আমরা সমান তারকা খ করার এক্স পরিবর্তন করছি. তারকা খ কি? Y. Y করতে খ পয়েন্ট. সুতরাং তারকা খ Y হল. সুতরাং আমরা, Y করার এক্স সমান সেটিং করছি এবং অন্য সব কিছুর একই. এক্স এখন যে আমরা পরের সারিতে দেখতে 2, এবং বাকি শুধু নিচে কপি করা হয়. এখন পরের লাইনে, তারকা খ tmp সমান. ভাল, আমরা শুধু তারকা খ Y হল বলেন, তাই আমরা tmp যাও y সমান সেটিং করছি. অন্য সব কিছুর একই, তাই সবকিছু নিচে কপি পরার. আমরা যা, tmp সমান Y সেটিং করছি অন্য এক, এবং সবকিছু একই. এখন পরিশেষে, লাইন সাত. আমরা ফিরে প্রধান ফাংশন মধ্যে আছেন. Swap 'সমাপ্ত হয় পরে আমরা করছি. আমরা একটি, খ হারিয়ে, এবং আছে tmp, কিন্তু আমরা শেষ পর্যন্ত কোনো মান পরিবর্তন হয় না এই সময়ে কিছু, আমরা শুধু x এবং y নিচে কপি. এবং আমরা x এবং y দেখতে এখন 2 এবং 1 এর পরিবর্তে 1 এবং 2. swap 'র সফলভাবে মৃত্যুদন্ড কার্যকর করেছে. প্রশ্ন 28. আপনি সম্মুখীন যে ধরুন ত্রুটি বার্তা অফিসে ঘন্টা সময় নীচের একটি CA বা TF হিসেবে আগামী বছরের. এই ত্রুটিগুলি প্রতিটি ফিক্স পরামর্শ কিভাবে. GetString যাও সুতরাং অনির্ধারিত রেফারেন্স. কেন আপনি এই দেখতে পারে? ওয়েল, একজন ছাত্র ব্যবহার করা হলে তাদের কোড মধ্যে GetString, তারা সঠিকভাবে CS50 অন্তর্ভুক্ত হ্যাশ আছে ডট জ CS50 লাইব্রেরি অন্তর্ভুক্ত. ওয়েল, তারা কি এই ত্রুটি ঠিক করা প্রয়োজন? তারা এ একটি ড্যাশ lcs50 করতে হবে তারা কম্পাইল করছি যখন কমান্ড লাইন. তারা পাস না হলে সুতরাং ঝনঝন ড্যাশ lcs50, তারা আছেন প্রকৃত আছে যাচ্ছে না GetString যে কার্যকরী কোড. প্রশ্ন 29. পরোক্ষভাবে ঘোষণা লাইব্রেরি ফাংশন strlen. আচ্ছা এই এখন, তারা না আছে সঠিক হ্যাশ সম্পন্ন হল. এই বিশেষ ক্ষেত্রে, হেডার ফাইল তারা, স্ট্রিং ডট জ হয় অন্তর্ভুক্ত করা প্রয়োজন এবং এখন পংক্তি ডট জ সহ এখন student-- কম্পাইলার ব্যবহার করেছে strlen এর ঘোষণা, এবং এটা জানেন আপনার কোড যে সঠিকভাবে strlen ব্যবহার করা হয়. প্রশ্ন 30. আরো শতাংশ ধর্মান্তর তথ্য আর্গুমেন্ট বেশী. তাই এই কি? ওয়েল এই শতাংশ মনে রাখা তারা printf প্রাসঙ্গিক করছি কিভাবে signs--. তাই printf মধ্যে আমরা percent-- পারে আমরা কিছু প্রিন্ট পারে শতাংশ মত আমি এন ব্যাকস্ল্যাশ. অথবা আমরা, শতাংশ আমি ভালো প্রিন্ট পারে স্থান, শতাংশ আমি, স্থান, শতাংশ আমি. যারা প্রতিটি জন্য তাই শতাংশ লক্ষণ, আমরা প্রয়োজন printf, শেষে একটি পরিবর্তনশীল পাস. সুতরাং আমরা বলতে যদি printf, paren শতাংশ আমি, এন বন্ধ paren ব্যাকস্ল্যাশ ভাল, আমরা এসেছি বলে একটি পূর্ণসংখ্যা মুদ্রণ যাচ্ছে, কিন্তু তারপর আমরা printf পাস না একটি পূর্ণসংখ্যা আসলে প্রিন্ট করতে. সুতরাং এখানে আরো শতাংশ তথ্য আর্গুমেন্ট চেয়ে ধর্মান্তর? যে আমরা আছে যে বলছে শতকরায় আভা, এবং আমরা যথেষ্ট ভেরিয়েবল নেই আসলে ঐ শতকরায় ভরাট. এবং তারপর স্পষ্টভাবে, প্রশ্ন 31 জন্য, নিশ্চিতভাবে এক ব্লকে 40 বাইট হারিয়েছে. সুতরাং এই একটি Valgrind ত্রুটি হয়. এই যে বলছে না কোথাও আপনার কোড মধ্যে, আপনি 40 যে বরাদ্দের আছে বাইট বড় তাই আপনি 40 বাইট malloced এবং আপনি এটা মুক্ত না. আপনি শুধু প্রয়োজন সম্ভবত কিছু মেমরি লিক খুঁজে পেতে, এবং আপনি প্রয়োজন যেখানে খুঁজে এই মেমরি ব্লক মুক্ত. এবং, 32 প্রশ্ন আকার 4 অবৈধ লেখার. আবার এই একটি Valgrind ত্রুটি হয়. এই যা করতে হবে না এখন মেমরি তথ্য ফাঁসের সঙ্গে. এই আমি বলতে চাচ্ছি likely-- সবচেয়ে, এটি, হয় অবৈধ মেমরি অধিকার কিছু বাছাই. এবং সম্ভবত এই হল কিছু বাফার ওভারফ্লো সাজানোর. কোথায় আপনি হয়তো, একটি অ্যারে আছে একটি পূর্ণসংখ্যা অ্যারে, এবং এর যাক এটি আকার 5 হাজার বলতে, এবং আপনি অ্যারে বন্ধনী 5 স্পর্শ করার চেষ্টা করুন. আপনি যে লিখতে চেষ্টা যদি তাই মান, যে মেমরি এক টুকরা না আপনি আসলে অ্যাক্সেস আছে, এবং যে তাই আপনি যদি এই সমস্যার পেতে যাচ্ছেন, আকার 4 অবৈধ লেখার বলছে. Valgrind আপনি আছেন চিনতে যাচ্ছে অযথাযথভাবে মেমরি স্পর্শ করার চেষ্টা. এবং যে quiz0 জন্য এটি. আমি রব বাউডেন আছি, এবং এই CS50.