বক্তা 1: হাই সবাই. আমরা শুরু করতে যাচ্ছি. আমি এখনও মানুষ যাচ্ছে মনে মধ্যে ফিল্টার হবে. কিন্তু সময় স্বার্থে, আমরা করতে পারেন, তাই সময় এখানে আপনি আউট না পেতে, আমরা শুরু করতে যাচ্ছেন. সুতরাং CS50 ক্যুইজ 0 পর্যালোচনা স্বাগত জানাই. বুঝতে না যারা আপনি তাদের জন্য এখনো, আপনি বুধবার একটি প্রশ্ন আছে. পাণিপ্রার্থনা ব্যবহৃত অভিব্যক্তি. আপনি যদি এখনো অধ্যয়নরত শুরু না করে থাকেন বা এই এখনো বিদ্যমান বুঝলাম যে না, গত ক্যুইজ এবং সম্পর্কে তথ্য আপনার ব্যঙ্গ cs50.net/quizzes হয়. কিছু প্রশংসনীয় ভাল কাপড় সেখানে আছে, 10 শেষ থেকে গত ক্যুইজ বছর হিসেবে তথ্য এই ব্যঙ্গ এবং বিষয় সম্পর্কে যে আচ্ছাদিত করা হবে. তাই এর শুরু করা যাক. তাই আপনাকে বলছি, প্রথম মনে রাখতে পারে বর্গ ডেভিড দিন যারা আলো ছিল. তাই মূলত, সবকিছু যায় যে একটি কম্পিউটার ফণা অধীন উপর বাইনারি মধ্যে সম্পন্ন করা. বাইনারি শোনাচ্ছে কি মানে মত, 0 এবং 1 এর. এটা দুই মান আছে যে প্রতিনিধিত্ব করা যাবে. তাই শুধু অধ্যায় প্রথম দিন ভালো ডেভিড একটি হালকা চালু যখন কন্দ, আমাদের কম্পিউটারে প্রতিনিধিত্ব করেন, বা 1 বোঝে 0 এর বাইনারি এবং 1 এর, বা বন্ধ. বাইনারি এর বুনিয়াদি. প্রতিটি জায়গা প্রতিনিধিত্ব করা হয় বেস দুই. তাই আপনি যদি 0 থেকে 2 যোগ 1 সব পথ আপ 2. আপনার বাইনারি কি নিরূপণ দশমিক, আপনি শুধু এই সমীকরণ অনুসরণ টাইপ জিনিস. আপনি ঐ জায়গা কোনো একটি 1 আছে, আপনার দ্বারা এটি সংখ্যাবৃদ্ধি যাই হোক না কেন এটা বেস, এটি আপ যোগ করুন, এবং আপনি দশমিক পেতে. তাই এই আপনি গণনা করা হয় বাইনারি 5. শুধু আমরা এরকম হয় ভালো শেষ স্লাইডে, এই কিভাবে আপনি হয় 5 মাধ্যমে 1 প্রতিনিধিত্বকারী. একইভাবে, আপনি যোগ করতে পারেন চান এবং দশমিক বিয়োগ বা 10 বেস, বা সত্যিই কোনো বেস উপর যোগ করতে পারেন এবং বাইনারি বিয়োগ. যখন আপনি আশা করবে ঠিক কি এটি বৃহত্তর সমান হলে, দুই আপ যোগ করুন 1, আপনি একটি 1, এটি একটি 0 না বহন করে, এবং শুধু, উপরন্তু যে উপায় কি যেমন আপনি নিয়মিত সঙ্গে আশা করে দশমিক বা অন্য কোন বেস. কুল. আমি সবকিছু আগে বলেন সুতরাং যে আমাদের কম্পিউটার এর ফণা অধীন যায় 0 এবং 1 এর, বা বাইনারি মধ্যে সম্পন্ন করা হয়. তাই আমরা প্রকাশ না কিভাবে, উদাহরণস্বরূপ, অক্ষর, বা সংখ্যা বা অক্ষর? এবং যে উত্তর হওয়া ASCII হয়. ASCII অক্ষর মধ্যে একটি ম্যাপিং আমরা সাধারণত দেখতে হবে যে একটি, বি, এর মত ইংরেজি ভাষা, সি এর, আন্ডারস্কোর, ড্যাশ, এবং যে মত কিছু. এবং এটি একটি ASCII মান যে মানচিত্র. একটি ASCII মান মাত্র একটি সংখ্যা যে আপনার কম্পিউটার দ্বারা বোঝা যাবে. এবং যদি আপনি ছাড়াও করতে পারেন, ঠিক মত এবং সংখ্যার বিয়োগ, আপনি কি করতে পারেন ASCII মান সঙ্গে তাদের. , এই উদাহরণে কি এই প্রিন্ট আউট হবে? হ্যাঁ, তাই শুধু একটি স্থান বি স্থান সি স্থান ডি কোথায় আমার মাউস যান নি? আপনি যদি 65 এ কোন int নির্ধারণ করতে পারবেন লক্ষ্য করুন. এবং আপনি ব্যবহার করে প্রিন্ট আউট যখন শতাংশ সি, এটি একটি হিসাবে যে ব্যাখ্যা করব অক্ষর এবং এ প্রিন্ট আউট হবে একইভাবে, আপনি ডিক্লেয়ার করতে পারেন এটি একটি গৃহস্থালি হিসাবে. এবং যদি আপনি শতাংশ ব্যবহার করে এটি প্রিন্ট আউট যখন সি, এটি হিসাবে যে ব্যাখ্যা করব শতাংশ ডি এবং যদি আপনি একটি যোগ করতে পারেন, ঠিক মত সংখ্যা, আপনি অক্ষর যোগ করতে পারেন এই ক্ষেত্রে ASCII মান,. সবার জন্য তাই একটু পয়েন্টার. 5, একটি স্ট্রিং হিসেবে, না আসলে 5 সমান. সুতরাং আমরা কিভাবে রূপান্তর হতে পারে পূর্ণসংখ্যা 5 স্ট্রিং 5? কোন ধারণা? হ্যাঁ. সুতরাং আমরা একটি স্ট্রিং হিসেবে 5 আছে, আমরা 0 বিয়োগ করতে পারেন. এবং যে আমাদের 5 দেব. এবং একইভাবে, আমরা একটি 5 আছে পূর্ণসংখ্যা, স্ট্রিং 0 যে যোগ করুন. এবং যে আমাদের স্ট্রিং 5 দেয়. কুল. এখন, এক যেখানে বক্তৃতা ফিরে প্রত্যাহার আমরা আলগোরিদিম সম্পর্কে বললাম. তাই আসলে আমরা একটি কম্পিউটার চান কিভাবে আকর্ষণীয় কিছু করার? আপনি শুধু যোগ এবং subtracting, জানি সংখ্যা এবং প্রিন্টিং কিছু হয় না যে উত্তেজনাপূর্ণ. সাধারণত, আমরা আমাদের কম্পিউটার চাই আলগোরিদিম কিছু সঞ্চালন. আরো একটু জটিল কিছু শুধু সহজ গাণিতিক তুলনায়. একটি অ্যালগরিদম পদক্ষেপ সেট দ্বারা শুধুমাত্র একটি পদক্ষেপ সঞ্চালন কিভাবে নির্দেশাবলীর জন্য একটি নির্দিষ্ট task-- শুধু একটি রেসিপি চাই. আপনি প্রথম দিন মনে রাখতে পারে ডেভিড আমাদের একটি রুম গণনা ছিল যেখানে বর্গ মানুষ এবং কিভাবে অনেক মানুষ রুমে ছিল. আপনি বেড়ে চলেছে ব্যবহার করা হতে পারে এক এক করে. 1, 2, 3, 4. যে ক্ষেত্রে, একটি রৈখিক সময় আলগোরিদিম. কিন্তু ডেভিড জন্য একটি অ্যালগরিদম চালু আপনি রুমে মানুষ গণনা সবাই দাঁড়িয়েছে আপ, যেখানে আপনি আপনার বলে অন্য ব্যক্তির সংখ্যা, যোগ সংখ্যা, এবং এক ব্যক্তি নিচে অস্ত যায়. এবং আপনি যে পুনরাবৃত্তি. যে অ্যালগরিদম এক ধরনের. আমরা কিভাবে দক্ষ একটি বিশ্লেষণ করতে পারে এটা সময় চালানো উপর এলগরিদম ভিত্তি করে. কিন্তু আমরা একটি সামান্য বিট কথা বলতে পারবেন পরে যে সম্পর্কে আরো. তাই সব আলগোরিদিম করতে পারেন pseudocode মধ্যে লেখা হবে. Pseudocode ঠিক মত একটি ইংরেজি সিনট্যাক্স প্রতিনিধিত্ব করতে ব্যবহৃত একটি প্রোগ্রামিং ভাষা. উদাহরণস্বরূপ, একটি ব্যবহারকারী আমরা চেয়েছিলেন জিজ্ঞাসা আমার প্রিয় সংখ্যা অনুমান করার জন্য, আমরা যেমন pseudocode হয় থাকতে পারে. একটি ব্যবহারকারীদের অনুমান পান. অনুমান যদি সঠিক হয়, তাদের বলুন তারা সঠিক, অন্য তাদের বলুন তারা সঠিক না. এবং pseudocode হয় সহজে একটি উপায় একটি ধারণা বা একটি অ্যালগরিদম প্রতিনিধিত্বমূলক. তাই এখন আমরা আসলে লিখতে চান হতে পারে এই ভাষায় যে কম্পিউটার বুঝতে পারে. তাই আমরা আমাদের pseudocode লিখতে পারে এবং সোর্স কোড মধ্যে যে ব্যাখ্যা. এ পর্যন্ত, সোর্স কোড মেনে চলতে হবে একটি নির্দিষ্ট বাক্য গঠন করতে একটি প্রোগ্রামিং ভাষা. এবং এ পর্যন্ত, CS50 মধ্যে, আমরা করেছি বেশিরভাগ গ ব্যবহার করা হয়েছে. তাই এই গ সোর্স কোড হতে পারে. পরে অবশ্যই, আপনি রাতে আসা অন্যান্য প্রোগ্রামিং সঙ্গে যোগাযোগের মধ্যে পিএইচপি মত ভাষা. অথবা আপনি এমনকি, আপনি অন্যান্য ক্লাস নিতে যদি জাভা, পাইথন, অথবা এমনকি OCML করতে পারে. কিন্তু আমাদের সি প্রোগ্রাম ভাষা, এই আমরা জন্য সোর্স কোড লিখতে পারে pseudocode হয় আলগোরিদিম যে আমি আগে বর্ণিত. সুতরাং কিভাবে আসলে আপনার কম্পিউটার আছে বুঝতে? আমি শুধুমাত্র সত্যিই, এটা আগে বলেন, ভালো লেগেছে zeros এবং বেশী বোঝে. তাই কিভাবে এটি উৎস থেকে পাবেন না হতে পারে যে কিছু কোড বোঝা যায়? ভাল, আমরা কিছু আছে একটি কম্পাইলার বলা হয়. আপনি সবচেয়ে ফিরে প্রত্যাহার, আপনার psets, আপনি প্রোগ্রাম কিছু ছিল একটি বিন্দু গ ফাইল লেখা. এবং তারপর আপনি টাইপ করতে হবে. তাই কি না করছে? আপনি কম্পাইল করতে টাইপ করতে পারেন আপনার প্রোগ্রাম someone-- কারণ যে কেহ আপনার পি সেট লেখেন; সম্ভবত David-- একটি ফাইল তৈরি করা. এবং যে চালানোর জানতে না বলে আপনার কম্পাইলার বলা হয়, ঝনঝন শব্দ, যে ইচ্ছা তারপর বস্তু আপনার সোর্স কোড কম্পাইল zeros এবং বেশী, যা কোড, আপনার কম্পিউটার বুঝতে পারে যে. কিন্তু পরে একটু, আমরা যেতে হবে কম্পাইলার সম্পর্কে গভীরতার মধ্যে আরো. তাই প্রত্যাহার, pset 0, where-- হ্যাঁ, যদি আপনি একটি প্রশ্ন আছে? শ্রোতা: [শ্রবণাতীত]? বক্তা 1: হ্যাঁ. আমি আসলে তারা মনে করে অনলাইন হতে হবে. হ্যাঁ. শ্রোতা: এটা [শ্রবণাতীত] মত কি? বক্তা 1: এটা হয় না. দ্য cs50.net/quizzes হয়. শ্রোতা: স্ল্যাশ মো,, 2013 কাট 0 কাট, এবং শুধু মাধ্যমে ক্লিক করুন ক্যুইজ 2013 এবং ব্যঙ্গ 0, অধ্যায় স্লাইড পর্যালোচনা. বক্তা 1: হ্যাঁ, তাই আপনি যদি না করতে চান তাহলে এটি বৈঠাচালনা আপ এবং এটি তাকান আপনার নিজের কম্পিউটার, যে খুব সূক্ষ্ম. আবার বলে. শ্রোতা: [শ্রবণাতীত]. বক্তা 1: হ্যাঁ, [শ্রবণাতীত] ডামি পরিবর্তনশীল. হ্যাঁ, ওহ? শ্রোতা: [শ্রবণাতীত]? বক্তা 1: না, ধর্মঘট পরীক্ষা হয় না. দুঃখিত, ছিল তার প্রশ্ন ছিল, পরীক্ষা স্ট্রাইক. এবং এটা করা হয় না. তাই pset 0, আপনাকে বলছি সব আছে স্ক্র্যাচ ব্যবহার করে কিছু বাস্তবায়িত হয়নি. এবং আমরা কিছু মৌলিক প্রোগ্রামিং শেখা স্ক্র্যাচ ব্যবহার করে বিল্ডিং ব্লক. তাই কিছু কটাক্ষপাত করা যাক এই বিল্ডিং ব্লক একটি প্রোগ্রাম করা. প্রথম বুলিয়ান অভিব্যক্তি. বুলিয়ান এক্সপ্রেশন বেশী এবং যে 0 এর অথবা কিছু দুই সম্ভাব্য মান. এই ক্ষেত্রে, সত্য বা মিথ্যা, বা বন্ধ, এবং হ্যাঁ অথবা না. খুব সহজ একটি সহজ একটি উদাহরণ, একটি বুলিয়ান ব্যবহার করে প্রোগ্রাম এখানে মত প্রকাশের আপ. তাই বুলিয়ান এক্সপ্রেশন করার জন্য দরকারী হতে পারে, আমরা বুলিয়ান অপারেটর আছে. এই ব্যবহার করা যেতে পারে অপারেটরদের হয় নির্দিষ্ট মান তুলনা. সুতরাং আমরা আছে এবং বা না সমান, কম কম বা তার চেয়ে অনেক বেশী, সমান বা সমান, এবং কম তুলনায় বা তার অধিক. কিন্তু এই অপারেটর খুব দরকারী নয় আমরা তাদেরকে একত্রিত করতে পারে না, যদি না শর্ত. তাই আপনাকে বলছি গোড়া থেকে মনে রাখতে পারে এবং আপনার পি থেকে আমরা যে সেট শর্ত ছিল. তারা কাটাচামচ মত, মূলত, হয় আপনার প্রোগ্রাম যুক্তি যে কিনা তার উপর নির্ভর করে executes একটি শর্ত পূরণ করা হয়. আমরা যে অবস্থার তাই এক এই কোর্সে অনেক বার ব্যবহার করা হয় অন্যথায়, যদি, এবং অন্য শর্ত, যদি. এখানে কিভাবে একটি উদাহরণ আপনি যে ব্যবহার করতে পারে. যে কেউ এর মধ্যে পার্থক্য কি জানেন না শুধু বিবৃতি সব যদি ব্যবহার করে যদি, অন্য আয়াত নিচে উপায়, যদি, এবং অন্য মিলিত? হ্যাঁ? শ্রোতা: [শ্রবণাতীত]. বক্তা 1: ঠিক. তাই আমি যদি এই সকল উপায় উপায়, এমনকি এই অবস্থা আয় যদি সত্য, এটা এখনও অব্যাহত থাকবে পরবর্তী দুই পরীক্ষা. , যেহেতু অন্য একটি যদি একটি অন্য সঙ্গে বিবৃতি, এক ফেরৎ সত্য যদি, অন্যদের পরীক্ষা করা হয় না. যে সম্পর্কে কোন প্রশ্ন? কুল. তাই আপনি যদি একটি অন্য একটি যদি অন্য ব্যবহার আপনি যদি জানেন যে বিবৃতি এটা শুধুমাত্র করতে পারেন এই ক্ষেত্রে এক হতে হবে. এক্স কম 0 তাই আপনি যদি আমরা এটা জানি, স্পষ্টভাবে করা যাচ্ছে না 0 থেকে. এর পরে, অন্য বিল্ডিং ব্লক আমরা শিখেছি loops যে হয়. আমরা loops তিন ধরনের আছে. Loops জন্য, যখন loops, এবং যখন loops না. এবং সাধারণত, আপনি যখন নিচে বসতে কিছু লিখুন, আপনি কি ঠিক আছে আপনি ব্যবহার করতে চান তিনটি যা. তাই কিভাবে আমরা যা তা স্থির? আমরা জানি যদি আমরা সাধারণত লুপ জন্য একটি ব্যবহার কতবার আমরা বারবার করতে চান কিছু মাধ্যমে বা কিভাবে অনেক বার আমরা একটি কাজ করতে চান. আমরা কিছু প্রয়োজন হলে আমরা যখন loops ব্যবহার শর্ত চলমান রাখা সত্য হতে পারে. এবং আমরা অনুরূপ যখন না ব্যবহার যখন, কিন্তু আমরা আমাদের কোড এ চালাতে চান অন্তত এক সময়. বিক্ষোভ হয় যাই হোক না কেন, তাই না, যখন হবে সবসময় অন্তত এক সময় চালানো. , যেহেতু সময় সঙ্গে, এটা এ সব যদি চালাতে না পারে শর্ত সন্তুষ্ট না হয়. যে কোন প্রশ্ন? লুপ এর জন্য তাই কাঠামো. আপনি যদি না এই সব দেখা যায়. আপনি এটি আরম্ভ. আপনি অবস্থার কিছু আছে. উদাহরণস্বরূপ, আমরা আরম্ভ হতে পারে হিসাবে জন্য আমি 0 সমান. আমি কম 10. এবং আমি ++. আমরা সম্পন্ন করেছি যে অত্যন্ত সহজ এক. যখন একটি লুপ জন্য, একভাবে, আপনি আরম্ভের কিছু আছে, অবস্থার কিছু ধরনের, এবং আপডেট কিছু. সুতরাং আমরা লুপ জন্য আমাদের বাস্তবায়ন করতে পারেন যখন একটি লুপ হিসাবে এই ব্যবহার করে. এবং একইভাবে একটি বিক্ষোভ যখন লুপ সঙ্গে, আমরা কিছু আরম্ভের থাকতে পারে, কিছু চালানো এটি আপডেট, এবং তারপর পরীক্ষা. তাই এখন কাজ করে. আমরা একসাথে সবকিছু করা. আমরা কিছু লিখতে চান হতে পারে ফাংশন ধরনের. প্রচলিত ফাংশন যে আপনি পারে ইতিমধ্যে দেখা হল প্রধান. প্রধান একটি ফাংশন. এটি একটি রিটার্ন টাইপ, কোন int আছে. এটা প্রধান একটি ফাংশন নাম, আছে. এবং এটা আর্গুমেন্ট, argc এবং argv আছে. তাই প্রধান ঠিক একটি ফাংশন. আপনি ব্যবহৃত হতে পারে অন্যান্য কার্যাবলী, , printf printf, একটি ফাংশন হয় GetInt, toupper,. কিন্তু এই হয়েছে এরকম আমাদের জন্য প্রয়োগ লাইব্রেরি কিছু. আপনি যদি না সহ মনে রাখবেন এই CS50.h, লাইব্রেরী বা স্ট্যান্ডার্ড ইনপুট / আউটপুট লাইব্রেরি. হ্যাঁ, প্রশ্ন আছে? শ্রোতা: গ মাত্র সহজাত প্রধান হয়? এটা কোন ধরনের [শ্রবণাতীত] কি? বক্তা 1: প্রশ্ন প্রধান যদি গ মধ্যে অন্তর্নিহিত. এবং হ্যাঁ, সব ফাংশন একটি প্রধান ফাংশন আছে. এটা কোন ধরনের কম্পিউটারের জন্য এর প্রয়োজন যেখানে শুরু জানি কোড চলমান. শ্রোতা: তাই আপনি যদি হবে না [শ্রবণাতীত]? বক্তা 1: নং অন্য কোন প্রশ্ন? কুল. আপনি একটি ফাংশন ব্যবহার করতে পারেন, তাই ঠিক মত যে আপনার জন্য লেখা, আপনি যা করতে পারেন আপনার নিজস্ব ফাংশন লিখুন. এই যে কেউ হতে পারে একটি ফাংশন ভলিউম নিরূপণ করা আছে উদাহরণস্বরূপ একটি প্রশ্ন, এর. একটি রিটার্ন টাইপ এই ক্ষেত্রে, এখানে আছে কোন int, আমাদের ফাংশন নাম q এবং আমাদের পরামিতি তালিকা. এবং যদি আপনি তথ্য লিখতে হবে দয়া করে নোট আপনি চান পরামিতি ধরণ ব্যবহার বা ফাংশন না অন্য কি ধরনের জানা পরামিতি আমি গ্রহণ করা উচিত. সুতরাং, এই ক্ষেত্রে, আমরা চাই আমাদের ইনপুট হিসাবে একটি পূর্ণসংখ্যা. তাই কেন আমরা ফাংশন ব্যবহার করতে চাইবেন? প্রথম সব, প্রতিষ্ঠানের জন্য মহান. তারা আপনার কোড ভেঙ্গে সাহায্য আরো অংশ সংগঠিত এবং এটি সহজ পড়া. সরলীকরণ. এই নকশা জন্য ভাল. আপনি একটি কোড টুকরা পড়া হয়ে গেলে এবং প্রধান ফাংশন, সত্যিই সত্যিই দীর্ঘ, এটা কঠিন হতে পারে কি ঘটছে তা সম্পর্কে কারণ. তাই আপনি যদি ফাংশন মধ্যে এটি ভেঙ্গে, এটা পড়তে সহজ হতে পারে. এবং পুনরায় ক্ষমতা. আপনি কোড একটি খণ্ড আছে হচ্ছে যে বলা বা একাধিক বার চালানোর জন্য, পরিবর্তে যে কোড 10 বার rewriting এর আপনার প্রধান ফাংশন, আপনি হতে পারে এটি পুনরায় ব্যবহার করতে চান. এবং তারপর প্রত্যেক সময় আপনি যে ব্যবহার করতে হবে কোড টুকরা, ফাংশন কল. তাই এখন আমরা ফিরে যাও স্ক্র্যাচ মনে রাখবেন, আমরা, কয়েক ধারণা সম্পর্কে কথা বলত যা এক থ্রেডিং করা হয়. থ্রেড একাধিক ধারণা কোড ক্রমের একই সময়ে নির্বাহ. দায়ূদ যেখানে এক দিন ফিরে মনে আপনি যদি না এর সংখ্যা গণনা রুমে মানুষ. মূলত, কি চালু ছিল উপর আপনি না সব ছিল আলাদা থ্রেড চলমান. এবং যারা থ্রেড একসঙ্গে আসছে উত্তর কিছু পেতে. একইভাবে, ভূত, আপনি যখন আছে একাধিক sprites, আপনি হতে পারে একটি বিড়াল এবং একটি কুকুর আছে. এবং তারা একযোগে হতে হবে তাদের নিজস্ব স্ক্রিপ্ট চলমান. যে থ্রেডিং এর একটি উদাহরণ. এবং অন্যান্য ধারণা ছিল যে স্ক্র্যাচ চালু ঘটনা ছিল. এবং ঘটনা যখন একাধিক অংশ আপনার কোড একে অপরের সাথে যোগাযোগ. আপনি যখন ব্যবহৃত ভূত, এই ছিল সম্প্রচার নিয়ন্ত্রণ এবং যখন আমি ব্লক পান. এবং এছাড়াও, সমস্যা সেট 4, আমরা দেখেছি পাশাপাশি ঘটনা একটি সামান্য বিট. আপনি না ব্যবহার করা হতে পারে Gevent লাইব্রেরি. এবং একটি ফাংশন ছিল waitForClick যা আপনি অপেক্ষা ছিল ব্যবহারকারী ক্লিক করার জন্য. এবং আপনার ক্লিক করুন, এই ক্ষেত্রে, হবে ক্লিকের জন্য ইভেন্ট এবং অপেক্ষা করুন আপনার হয় ইভেন্ট হ্যান্ডলার. এবং এছাড়াও, আপনার psets জুড়ে চলমান এবং আপনার psets কাজ, আপনি সংস্পর্শে আসতে পারে এই কমান্ড কিছু. আপনি এই টাইপ কি আপনার টার্মিনাল উইন্ডোতে বা যাই হোক না কেন উইন্ডো যে, আপনার গ্রাম সম্পাদনা দেখায় মূলত, আপনার কম্পিউটার নেভিগেট. সুতরাং উদাহরণস্বরূপ, নির্মিত LS তালিকা একটি ডিরেক্টরির বিষয়বস্তু. ডিরেক্টরি একটি নতুন ফোল্ডার তৈরি করে না. সিডি, পরিবর্তন করুন. Rm, অপসারণ, একটি ফাইল মুছে ফেলা অথবা কিছু ডিরেক্টরি. এবং তারপর ডিরেক্টরি অপসারণ একটি ডিরেক্টরি সরিয়ে ফেলা হয়. শ্রোতা: [শ্রবণাতীত]? বক্তা 1: হ্যাঁ, নিশ্চিত. দুঃখিত, প্রশ্ন ছিল আপনি যদি এই নির্বাণ সুপারিশ করবে Cheat শীট উপর. এটা সাহায্য করতে পারে. আপনি রুম আছে, আপনি এটা করা যাবে. এটা ঠিক যথেষ্ট সাধারণত ভাল যখন আপনি এটি ব্যবহার, কারণ মনে রাখা আপনি করতে চাইবেন শুধু তা কণ্ঠস্থ আছে. যে আপনার জীবন অনেক সহজ করতে হবে. আমি আপনার প্রশ্নের উত্তর দিতে হয়নি? সুতরাং এখন, আমরা অল্প কথা বলত লাইব্রেরি সম্পর্কে সংক্ষিপ্তভাবে. কিন্তু দুই প্রধান বেশী আমরা চলেছি যে এ পর্যন্ত কোর্স আছে ব্যবহার করে স্ট্যান্ডার্ড ইনপুট / আউটপুট এবং CS50. কি ধরনের জিনিস অন্তর্ভুক্ত করা হয় স্ট্যান্ডার্ড ইনপুট / আউটপুট লাইব্রেরি? হ্যাঁ, এ পর্যন্ত আমরা printf ব্যবহার করেছি. CS50 মধ্যে, আমরা GetInt ব্যবহার করেছি এবং GetString. এবং তথ্য টাইপ স্ট্রিং ঘটবে এই CS50 লাইব্রেরি ঘোষণা করা হবে. আমরা প্রায় গভীরতার মধ্যে আরো একটু কথা বলতে পারবেন কিভাবে লাইব্রেরি কাজ এবং কিভাবে তারা আপনার কোড বাকি সঙ্গে যোগাযোগ করার জন্য. কিন্তু যারা দুই প্রধান ওগুলো যে আমরা এ পর্যন্ত এ সংস্পর্শে আসা আছে অবশ্যই. ধরন. এই কত মনে রাখা ভাল প্রতিটি টাইপ কিভাবে বা প্রতিনিধিত্ব করা হয় অনেক বাইট টাইপ প্রতিটি requires-- কোন int 4 বাইট; গৃহস্থালির কাজ, 1 বাইট. ভাসা 4 বাইট. একটি ডবল কি? শ্রোতা: [শ্রবণাতীত]. বক্তা 1: হ্যাঁ, তাই একটি float কিন্তু দ্বিগুণ. কি একটি দীর্ঘ সম্পর্কে? শ্রোতা: [শ্রবণাতীত]. বক্তা 1: ঠিক আছে. একটি দীর্ঘ কি? শ্রোতা: [শ্রবণাতীত]. বক্তা 1: হ্যাঁ, কোন int দ্বিগুন. হ্যাঁ. শ্রোতা: [শ্রবণাতীত]. বক্তা 1: দীর্ঘ [শ্রবণাতীত]. এবং তারপর একটি দীর্ঘ দীর্ঘ যে ডবল হয়. শ্রোতা: না, না. একটি দীর্ঘ ঠিক কোন int হয়. এটা আর্কিটেকচারের উপর নির্ভর করে আগে [শ্রবণাতীত] এবং কোন int একই আকার আছে. [শ্রবণাতীত]. বক্তা 1: তাই একটি দীর্ঘ এবং কোন int একই. এবং তারপর একটি দীর্ঘ দীর্ঘ ডবল কোন int হয়. কুল. এবং তারপর, গত টাইপ কি? শ্রোতা: পয়েন্টার. বক্তা 1: হ্যাঁ, তাই আমরা শিখেছি পয়েন্টার সম্পর্কে একটি সামান্য বিট. এবং নির্বিশেষে একটি পয়েন্টার কি এটা চাচ্ছি প্রতি নির্দেশ একটি গৃহস্থালি তারকা হতে পারে বা কোন int star-- এটা সবসময় একটি পয়েন্টার 4 বাইট. যে সম্পর্কে প্রশ্ন? হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? বক্তা 1: তাই একটি দীর্ঘ এবং কোন int হয় এই CS50 অ্যাপ্লায়েন্স একই. শ্রোতা: যন্ত্রপাতি সম্পূর্ণ হয় বিনিমেয়. বক্তা 1: হ্যাঁ. আমি তখন একটি দীর্ঘ দীর্ঘ ডবল কোন int হয়. শ্রোতা: এই 32 বিট? বক্তা 1: 32 বিট, হাঁ. AUDIENCE: তাই [শ্রবণাতীত]? বক্তা 1: হ্যাঁ, যদি না স্পষ্টভাবে, আপনি বলে একটি 32 বিট অনুমান করা উচিত. শ্রোতা: এটা কিছু বলতে হবে একটি অভিমানী মত প্রয়োগ মত স্থাপত্য. 64 বিট, শুধুমাত্র জিনিস যে পরিবর্তন জন্য longs এবং পয়েন্টার দেয়া হল. তারা উভয় [শ্রবণাতীত]. বক্তা 1: হ্যাঁ? শ্রোতা: প্রশ্ন. অনুশীলন ক্যুইজ উপর সুতরাং, এটি একটি স্বাক্ষরবিহীন int সম্পর্কে জিজ্ঞেস করে. সুতরাং কিভাবে নির্ধারিত হবে কোন int [শ্রবণাতীত] থেকে? বক্তা 1: একটি স্বাক্ষরবিহীন এছাড়াও 4 বাইট. কিন্তু একটি সাইন সম্পর্কে বিভিন্ন কি int এবং একটি স্বাক্ষরবিহীন int? শ্রোতা: [শ্রবণাতীত]. বক্তা 1: রাইট. এক নেতিবাচক মান উপস্থাপন করতে পারেন. কিন্তু কিভাবে এটা যে কি না? শ্রোতা: [শ্রবণাতীত]. বক্তা 1: হ্যাঁ, এটি 1 সংরক্ষণ বিট সাইন প্রতিনিধিত্ব করতে. সাইন ইন এক বিট আছে যে সাইন প্রতিনিধিত্ব করে. এবং স্বাক্ষরবিহীন শুধু সব ধনাত্মক হয়. শ্রোতা: ঠিক আছে. তাই আপনি যদি একটি ডবল বলে যে একটি float দ্বিগুণ আকার? বক্তা 1: ডবল দ্বিগুণ একটি float এর সাইজ, হ্যাঁ. শ্রোতা: একটি পয়েন্টার কিভাবে একটি দীর্ঘ দীর্ঘ [শ্রবণাতীত]? বক্তা 1: কিভাবে তাই প্রশ্ন হল একটি লম্বা দীর্ঘ পয়েন্টার কিভাবে যে শুধুমাত্র চার বাইট যখন তার 8 বাইট একটি দীর্ঘ দীর্ঘ. তাই একটি পয়েন্টার মনে রাখবেন, মূলত, খুব বেস মান. শ্রোতা: [শ্রবণাতীত]. বক্তা 1: হ্যাঁ, তাই একটি পয়েন্টার শুধু একটি মেমরি অবস্থান. সুতরাং এটা কতটা স্থান কোন ব্যাপার না যে পয়েন্টার প্রতি নির্দেশ করা হয়. এটা শুধুমাত্র ট্র্যাক রাখা 4 বাইট প্রয়োজন যে মেমরি অবস্থান. অন্য কোন প্রশ্ন? কুল. তাই শেষ জিনিস আমি মান আউটপুট. যদি আপনি ঘন ঘন তাদের ব্যবহার করা উচিত আপনি মনে করতে পারেন যে যথেষ্ট. আমরা ব্যবহার কিন্তু যখন এই হয় printf,, যেমন. এবং আমরা এই স্থানধারক আছে বিন্যাস কোড বলা হয়. তাই int জন্য শতাংশ গ গৃহস্থালির কাজ, শতাংশ আমি, এবং আমরা শতাংশ ঘ ব্যবহার করতে পারেন. এটা একই জিনিস. কিন্তু, সাধারণত, মধ্যে CS50 আমরা শতাংশ আমি ব্যবহার করার চেষ্টা করুন. Float জন্য শতাংশ চ. দীর্ঘ দীর্ঘ জন্য শতাংশ LD এবং স্ট্রিং জন্য শতাংশ এর. একইভাবে, আমরা কয়েক ব্যবহার করে এই পালাবার ক্রম. উদাহরণস্বরূপ, ব্যাকস্ল্যাশ জন্য এন নতুন লাইন জন্য. আপনি এই বিন্যাস করছেন জন্য শুধু মুদ্রণ চ জন্য আপনার কোড. হ্যাঁ? শ্রোতা: শতাংশ ঘ কি? বক্তা 1: তাই প্রশ্ন শতাংশ ঘ জন্য কি করা হয়? শতাংশ ঘ ints জন্য হয়. শতাংশ ঘ এবং শতাংশ আমি একই. শ্রোতা: মধ্যে পার্থক্য কি ব্যাকস্ল্যাশ এন ও ব্যাকস্ল্যাশ আর? বক্তা 1: তাই প্রশ্ন কি হয় নেতিবাচক প্রতিক্রিয়া n এবং এর মধ্যে পার্থক্য নেতিবাচক প্রতিক্রিয়া আর? আমি ব্যাকস্ল্যাশ আর মনে হচ্ছে ÑÑ AUDIENCE: তাই ব্যাকস্ল্যাশ আর ঠিক বোঝা লাইনের শুরুতে ফেরৎ আসলে একটি নতুন লাইন যাচ্ছে না. তাই আপনি যদি একটি ব্যাকস্ল্যাশ R মুদ্রণ এবং আপনি যদি লাইনের শুরুতে ফিরে যান তারপর আপনি আপনার মুছে ফেলা, আরো স্টাফ মুদ্রণ ইতিমধ্যে যে উপাদান [শ্রবণাতীত]. যেহেতু, এন আসলে একটি নতুন যায় লাইন এবং [শ্রবণাতীত] যায়. বক্তা 1: আচ্ছা, অন্য কোন প্রশ্ন? ঠিক আছে. আমি এটা বন্ধ হাত করা যাচ্ছে না অবিরত হবে যারা ড্যান. [সাধুবাদ] | DAN: সমস্ত righty. তাই আমি অন্য চওড়া সম্পর্কে কথা বলা হবে যে বর্গ থেকে ধারণা পরিসীমা প্রায় দুই সপ্তাহ প্রতিনিধি এবং সপ্তাহে তিন শুরুর বন্ধ শুরু শুধু একটি উপায়, যা ঢালাই, সঙ্গে একটি নির্দিষ্ট ধরনের একটি মান হিসাবে চিকিত্সা একটি ভিন্ন ধরনের একটি মান. তাই আমরা অক্ষর সঙ্গে এটা করতে পারেন ints হয়, আপনি ints থেকে floats, এবং দীর্ঘ longs দুবার. এই সমস্ত জিনিস উপায় হিসাবে ব্যবহার করা যেতে পারে কিছু সাংখ্যিক মান চিকিত্সা অন্য কিছু হিসাবে বিয়োগ গৃহস্থালির কাজ সাংখ্যিক মান. কিছু বিষয় এই, এর সঙ্গে আছে তাই আপনি নিক্ষেপ যখন যা আসে অবশ্যই, আপনি ints থেকে ভাসা ভালো জিনিস. তাই এই সামান্য অদ্ভুত. আমরা 1.31 যে একটি float আছে. আমরা 10,000 দ্বারা এটি সংখ্যাবৃদ্ধি. এবং তারপর আমরা কোন int হিসাবে এটি মুদ্রণ. এই আউটপুট কি? 10,000 বার 1.31. তাই 13,000, অনুমান করা হয় যে? শ্রোতা: আমি এটা 10,000 মনে করি. | DAN: আমি 10,000 দ্বারা গুন করছি আমি এটা ঢালাই করছি আগে. শ্রোতা: ওহ. সেখানে এক 9 হবে না এবং কিছু 0 নম্বর? | DAN: আপনি কিছু অদ্ভুত সংখ্যা থাকতে পারে. তাই অধিকার, এটা 1.3 গুণ 10,000 এর. সুতরাং যে 13,000 এর. এবং এই অতিরিক্ত weird-- শ্রোতা: 13,100. | DAN: 13,100. , রব আপনাকে ধন্যবাদ. এবং এই অতিরিক্ত weirdness-- এই 9,9-- কেবল এই সাক্ষাৎকারের কারণ শেষ পর্যন্ত নিচে যেখানে rounding এটা হবে না. হ্যাঁ. শ্রোতা: কাস্টিং ঘটবে অন্য কিছু পরে? | DAN: কারণ আমি এটা মুদ্রণ এই আছে এটা আগে এই গুণ আছে এই সাক্ষাৎকারের আছে. শ্রোতা: [শ্রবণাতীত]. | DAN: আমি এটা প্রথম নিক্ষেপ হবে মনে হয় হাঁ, 10,000, যা হতে হবে. অন্য কিছু? কুল. তাই এই 13.099 হয়. কেন এই ঘটবে? অস্পষ্টতা. Floats নিখুঁত হয় না. তারা শুধুমাত্র একটি সংখ্যা উপস্থাপন করতে পারেন উল্লেখযোগ্য পরিসংখ্যান নির্দিষ্ট সংখ্যক. আমরা 8 sig ডুমুর প্রিন্ট আউট তাই আপনি যদি এই ভাসা, আমরা একটি ধরনের পেতে কুদর্শন সংখ্যা. এবং যে কারণ 1.31 সঠিকভাবে না করতে পারেন সহজ দ্বারা প্রতিনিধিত্ব করা মেশিন দুটি ক্ষমতা. এটি নিকটস্থ গ্রহণ শেষ পর্যন্ত তাই যা শেষ পর্যন্ত, অনুমান একটু কম হচ্ছে. জানার জন্য? ঠিক আছে. এখন, সুইচ বিভিন্ন উপায় শর্তাধীন বিবৃতি যেখানে সব কাজ আমরা একটি একক পরিবর্তনশীল যত্নশীল. তাই এই বিশেষ উদাহরণ, আমরা আছেন ব্যবহারকারী থেকে একটি পূর্ণসংখ্যা পেয়ে. এবং তারপর আমরা এ খুঁজছেন যে পূর্ণসংখ্যা কি. সম্ভবত, এটা সংখ্যা এক এবং চার মধ্যে. যে জন্য আমরা বলছি কি. তাই আপনি যদি একটি সুইচ করতে পরিবর্তনশীল নাম. তারপর আপনি সম্ভব ক্ষেত্রে সেট আপ এটা হতে পারে মান. তাই এক ক্ষেত্রে, এটা কম বলে. এবং তারপর আপনি খুঁজে পেতে বিরতি সুইচ অবস্থার তাই আপনি বর্তা না. পরবর্তী ক্ষেত্রেই ইন তাই মামলা দুটি এবং কেস three-- এটা ক্ষেত্রে দুই যদি এটা শুধু ড্রপ ডাউন এটা দিয়ে সূচিত হিসাবে প্রথম কোড লাইন এটি একটি বিরতি উদ্ধার না হওয়া পর্যন্ত তিনটি ক্ষেত্রে. কারণ আপনি ক্ষেত্রে এক পেতে শুধুমাত্র মুদ্রণ কম কারণ আমি এখানে এই বিরতি আছে. আমি যদি, বলে, এই বিরতি উপেক্ষা আমি এই breakaway-- ছুড়ে ফেলে যদি এটা কম প্রিন্ট হবে, এবং তারপর এটি হবে মধ্যম মুদ্রণ, এবং তারপর এটি ভঙ্গ করা হবে. বিরতি একটি গুরুত্বপূর্ণ অংশ, তাই শর্ত এবং সুইচ তারা সেখানে উচিত. স্পষ্টভাবে বিবৃত হয় না যে কোন ক্ষেত্রে ডিফল্ট দ্বারা পরিচালিত হয় এবং সুইচ ক্ষেত্রে নিক্ষেপ করা উচিত. শ্রোতা: সুতরাং 1, 2, 3, এবং 4 এন হবে? | DAN: এন হতে পারে যে মূল্যবোধ. হ্যাঁ. হ্যাঁ? শ্রোতা: সুতরাং আপনি আছে [শ্রবণাতীত] যে? | DAN: তারপর আপনি কম মুদ্রণ, এবং এটা মধ্যম মুদ্রণ, এবং তারপর এটি ভঙ্গ করা হবে. শ্রোতা: কেন এটা প্রিন্ট হবে মাঝখানে যদি [শ্রবণাতীত]? | DAN: একটি কেস অধীনে তাই সবকিছু একটি বিরতি অধীন পড়ে আগে. সুতরাং ক্ষেত্রে এক মুদ্রণ নীচে কেস এক এই নিম্নলিখিত মুদ্রণ. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? | DAN: সুতরাং এই সংখ্যা মাত্র একটি নির্দিষ্ট হয় মান যে এই পরিবর্তনশীল অধিকার, গ্রহণ করতে পারেন? যে জানার জন্য? হ্যাঁ. শ্রোতা: [শ্রবণাতীত]? | DAN: হ্যাঁ, ক্ষেত্রে দুই প্রিন্ট হবে মধ্যম এবং তারপর বিরতি. শ্রোতা: [শ্রবণাতীত]? | DAN: আমি কোনো মনে? কি কি ধরনের তথ্য আপনি উপর সুইচ করতে পারেন? শ্রোতা: আপনি সুইচ করতে পারেন কোনো ধরনের তথ্য উপর. কিন্তু এটি শুধুমাত্র অক্ষর উপর কিছু মানে এবং ints এবং যে মত কাপড়, কারণ আপনি একটি পয়েন্টার পরিবর্তন উপর করছি যে সত্যিই, না ইন্দ্রিয় না এটা এমনকি যাক, যদি লোড স্যুইচ উপর আপনি কারণ ফ্লোটিং পয়েন্ট এর যে কি, স্পষ্টতা, আপনি সত্যিই হবে না যাহাই হউক না কেন যে কাজ করতে চান. তাই প্রায় কাছাকাছি, শুধু ints এবং যে মত অক্ষর এবং উপাদান. | DAN: আপনি সুস্পষ্ যখন হাঁ, এটা আপনি কি জানেন মান যে, আমি মনে করি, হতে পারে যে একটি সুইচ আসলে দরকারী. ভাল? ঠিক আছে. ব্যাপ্তি একটি ঘোষণা যে পরিসর পরিবর্তনশীল প্রসারিত করে. আমি এই কোড সামান্য খণ্ড তাই, এটা ত্রুটি পূর্ণ হবে. এবং কারণ আমি এই int ঘোষণা করা হয় আমি লুপ জন্য এই সুযোগ মধ্যে. এবং তারপর আমি যে উল্লেখ করার চেষ্টা করছি আমি লুপ সুযোগ জন্য যে বাইরে. তাই মূলত, আপনি সুযোগ সম্পর্কে মনে করতে পারেন আপনি ডিক্লেয়ার কিছু যে হিসাবে কোঁকড়া ধনুর্বন্ধনী একটি সেট ভিতরে শুধুমাত্র যারা কোঁকড়া ধনুর্বন্ধনী মধ্যে বিদ্যমান. এবং আপনি চেষ্টা করুন এবং যে ভেরিয়েবল ব্যবহার করে যারা কোঁকড়া ধনুর্বন্ধনী বাইরে, আপনি কম্পাইলার থেকে একটি ভুল পান. হ্যাঁ? শ্রোতা: তাই এই এক কাজ করে না? | DAN: এই হ্যাঁ, কাজ করে না. স্ট্রিং. স্ট্রিং একটি গৃহস্থালি *. তারা ঠিক একই. তারা শুধু অক্ষর পয়েন্টার. এবং আপনি যে কোন স্ট্রিং শেষ করতে হবে ঠিক যা ব্যাকস্ল্যাশ শূন্য, সঙ্গে একটি সি কনভেনশন. এটা শূন্য টারমিনেটর বলা হয়. এবং নাল রাজধানী এন, রাজধানী হবে, রাজধানী এল, রাজধানী L-- হিসাবে একই নয় শূন্য টারমিনেটর. এটি একটি পয়েন্টার. এটি একটি চরিত্র. তারা খুব স্বতন্ত্র. এটা মনে রাখবেন. এটা সম্ভবত, ব্যঙ্গ করা হবে. আমি ব্যঙ্গ দেখা যায় না. হ্যাঁ? AUDIENCE: তাই NULL পয়েন্টার, বলে, কি? | DAN: হ্যাঁ. শ্রোতা: কি [শ্রবণাতীত] আছে? | DAN:, বলে, malloc আহবান করা হয় যখন আপনি যথেষ্ট মেমরি নেই যাই হোক না কেন আপনার জন্য বলছি আকার, malloc NULL ফেরত হবে. একটি ফাংশন যখনই এটি মূলত, এর একটি পয়েন্টার ফেরত অনুমিত, আপনি শূন্য কারণ বিরুদ্ধে চেক করতে হবে শূন্য একটি চমত্কার good-- হয় এটা, বাছাই করা, আবর্জনা মান. এটা যতটা পয়েন্টার হিসাবে একটি শূন্য. যখনই আপনি একটি ফাংশন কল, একটি পয়েন্টার ফেরৎ. আপনি হতে চেক করতে চান, চলুন যে পয়েন্টার শূন্য হয় না শূন্য খুবই সাধারণ কারণ. এটি একটি আবর্জনা ফেরত ধরণের. কিছু অধিকার না যান, তাই যদি শুধু পরিবর্তে শূন্য ফিরে. শ্রোতা: [শ্রবণাতীত]? | DAN: হ্যাঁ, এবং যে এই আছে. শ্রোতা: [শ্রবণাতীত]? | DAN: এই হিসাবে এটি বানান. এটা শূন্য টারমিনেটর এর. এটা ছোট হাতের অক্ষর n-ইউ এল এল যদি আপনি এটি বানান করছি. শ্রোতা: এবং আমি গিয়েছিলাম ফিরে এবং এটা পরীক্ষিত. এবং যদি আপনি একটি ফ্লোটিং পয়েন্ট করা চেষ্টা একটি সুইচ মধ্যে মান, এটা আপনি চিত্কার করব বলার অপেক্ষা রাখে না, বিবৃতি প্রকাশের প্রয়োজন পূর্ণসংখ্যা ধরনের. | DAN: এখন পর্যন্ত আপনি যান. তবে হাঁ, প্রশ্ন আবার কি ছিল? শ্রোতা: [শ্রবণাতীত]? | DAN: তাই রাজধানী এন, রাজধানী হবে, রাজধানী এল, রাজধানী এল একটি প্রকৃত গ জিনিস. এটা NULL পয়েন্টার এবং করবে শুধুমাত্র যেমন হিসাবে গণ্য করা. আপনি কি কখনও চেষ্টা করুন এবং বানান হবে না শূন্য অক্ষর এবং কোনো দেখতে এই ছাড়া অন্য উপায়. হ্যাঁ? AUDIENCE: তাই সর্বোচ্চ গৃহস্থালি ফিরে বা নোট কিছু, এটা হবে একই ফাংশন অঙ্গীভূত করা [শ্রবণাতীত] হিসাবে? শ্রোতা: তাই আপনি যদি উল্লেখ করা হয় GetChar থেকে গৃহস্থালি সর্বোচ্চ ফিরে, বা যাই হোক না কেন এটা হয়? শ্রোতা: হ্যাঁ. শ্রোতা: হ্যাঁ, সাধারণ, তাই সমস্ত জিনিষ জন্য শব্দ প্রহরী মান. সুতরাং GetInt থেকে int-সর্বোচ্চ ফিরে মত এবং GetChar থেকে গৃহস্থালি সর্বোচ্চ, এটা যদি সমস্ত অধিকার, মত হতে অনুমিত এই জিনিস, আমাদের ফিরে হয় কিছু ভুল হয়েছে. পয়েন্টার জন্য, আমরা শুধু আছে এরকম এই প্রহরী মান যে সবাই উপর সম্মত হয়. এবং এই আপনি ফিরে জিনিস কিছু ভুল হয়ে যান. তাই গৃহস্থালি সর্বোচ্চ আমরা ব্যবহার করছেন কি কিছু প্রতিনিধিত্ব শূন্য বা GetChar মত. শ্রোতা: আপনি GetChar পরীক্ষা করছি তাই আপনি যদি, আপনি শুধু শূন্য করা হতে পারে? যে একটি পার্থক্য করতে হবে? | DAN: আপনি শুধু শূন্য চেক করতে পারে না. কারণ আপনি গৃহস্থালি সর্বোচ্চ চেক করতে চাই ফাংশন থেকে ফেরত মান একটি অক্ষর একটি পয়েন্টার. হ্যাঁ? শ্রোতা: এই প্রশ্ন জিজ্ঞেস করে স্ট্রিং দৈর্ঘ্য জন্য. শূন্য অক্ষর অন্তর্ভুক্ত করে? | DAN: নং এবং যে কিভাবে স্ট্রিং দ্বারা আসলে এটি দিয়ে যায়, কারণ বন্ধ করতে জানে অক্ষর আপনার অ্যারের পর্যন্ত এটি একটি শূন্য অক্ষর সূচিত করা হবে. এবং তারপর এটি সব, মত ঠিক আছে, আমি কাজ করছি. শ্রোতা: [শ্রবণাতীত] পাঁচ? | DAN: হ্যালো পাঁচ হবে. হাঁ. সুতরাং অ্যারে ক্রমাগত হয় মেমরি ব্লক. তারা বলছে দ্বারা তাত্ক্ষণিক এক্সেস আছে কোঁকড়া, অ্যারের নাম এবং তারপর আপনি যেতে চান যাই হোক না কেন সূচক ধনুর্বন্ধনী, , তারা এর মাধ্যমে শূন্য থেকে ইন্ডেক্স করছি 1 বিয়োগ অ্যারের দ্বারা. এবং তারা কি ধরনের ঘোষণা করছি আপনি সংরক্ষণ করছেন যে জিনিস অ্যারে অ্যারে নাম, এবং তারপর যাই হোক না কেন আকার যে অ্যারের হয়. তাই এই দৈর্ঘ্যের একটি গৃহস্থালি অ্যারে এই মান যে ছয়. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? | DAN: হ্যাঁ. শ্রোতা: [শ্রবণাতীত]? | DAN: আপনি কি ঘটছে আছে অ্যারের মধ্যে ইতিমধ্যে প্রণীত. তাই আপনি যদি এর পরিবর্তে এই নির্দিষ্ট পারে, এর বলে, গৃহস্থালি, যাই হোক না কেন নাম আপনার অ্যারে খালি বন্ধনী কোঁকড়া সমান হয়, এইচ কমা ই কমা এল কমা এল কমা উত্সাহিত হে কমা শূন্য অক্ষর এবং কোঁকড়া যুগল. যে একটি ঘোষণাপত্র হিসাবে কাজ করবে. শ্রোতা: [শ্রবণাতীত]? | DAN: তারপর আপনি প্রয়োজন আছে আকার ইতিমধ্যে প্রণীত. শ্রোতা: [শ্রবণাতীত]? | DAN: হ্যাঁ. সমস্ত righty. কমান্ড লাইন আর্গুমেন্ট একটি উপায় ব্যবহারকারী হিসাবে থেকে ইনপুট পেয়ে প্রধান আর্গুমেন্ট. প্রধান দুটি আর্গুমেন্ট লাগে. হচ্ছে যে আর্গুমেন্টের সংখ্যা কমান্ড লাইন এবং একটি পাশ বরাবর স্ট্রিং ভেক্টর অথবা একটি স্ট্রিং অ্যারে আর্গুমেন্ট সব. তাই আমি, বলে, যেমন একটি ফাংশন বলা যদি 1 স্থান, 2 স্থান, তিনটি একটি বিন্দু, -argc 4 হবে. এবং argv 0 আউট একটি বিন্দু হতে হবে. Argv1 1 হবে. argv2 2 argv3 হবে হবে 3, যে বিশেষ ক্ষেত্রে. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? | DAN: অ্যারের মধ্যে শেষ উপাদান অ্যারের দৈর্ঘ্য argc হয় কারণ প্লাস ARGB এক, শেষ উপাদান শূন্য পয়েন্টার. এটা-argc প্লাস 1. আমি শুধু, এটা বলেন যে ক্ষেত্রে 0 argv করা হবে একটি বিন্দু. argv হয় 1 1 argv2 3 3 2 হয় argv হয়. এক বড়, যা হয় argv 4, -argc চেয়ে শূন্য হবে. এবং যে শূন্য পয়েন্টার. হ্যাঁ. স্ট্রিং এবং যে কারণ একটি গৃহস্থালি তারা একটি পয়েন্টার. সুতরাং এটি একই ধরনের হতে হবে. হ্যাঁ? শ্রোতা: দুই প্রশ্ন. তাই এক, পার্থক্য মধ্যে কি এক ধরনের তুলনায় অন্যান্য এই এবং GetString ব্যবহারকারী ইঞ্জিন? এবং দুই, এটি মধ্যে সংরক্ষিত হয় আপনার সাম্প্রতিক মেমরি? যেমন, GetString, হবে [শ্রবণাতীত] হবে? | DAN: এটা কোথায় সংরক্ষণ করা হয়? এটি সঞ্চিত যেখানে আমি জানি না. AUDIENCE: তাই, আসলে, আপনি কিভাবে কোনো জানেন আপনি এটি আর্গুমেন্ট কল কাজ স্ট্যাকের মধ্যে সংরক্ষণ করা হয়? সুতরাং argc এবং argv আর্গুমেন্ট প্রধান করা হয় এবং তারা স্ট্যাক হয়, অথবা সত্যিই শুধু হিসাবে আপনি কি মনে করেন উপরে স্ট্যাকের শুরু. অন্যান্য অংশ কি ছিল প্রশ্ন? AUDIENCE: তাই কি [শ্রবণাতীত]? | DAN: হ্যাঁ, এটা ঠিক একটি ভিন্ন উপায় এর ব্যবহারকারী থেকে ইনপুট পেয়ে. এই এক এর সামান্য বেশি দক্ষ ও এটা স্ক্রিপ্ট handier আপনি কারণ শুধু আপনার প্রধান আর্গুমেন্ট প্রেরণ করতে পারেন ফাংশন বরং অপেক্ষা করতে থাকার চেয়ে ব্যবহারকারীদের জন্য যদি কোন অ্যাকাউন্ট না থাকে. শ্রোতা: এবং হ্যাঁ, স্ট্রিং পেতে [শ্রবণাতীত] হবে. এটা আপনি প্রয়োজন কাপড় সংরক্ষণ করবে. | DAN: হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? | DAN: হ্যাঁ, argv হয় 0 সবসময় রয়েছে বিন্দু ফাংশন কল কাট. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? | DAN: হ্যাঁ, আর্গুমেন্ট প্রতিটি শূন্য অক্ষর শেষ তারা স্ট্রিং আছে. শ্রোতা: [শ্রবণাতীত]? | DAN: হ্যাঁ, argv হয় argc একটি NULL পয়েন্টার হয়. শ্রোতা: [শ্রবণাতীত]? | DAN: ওহ হ্যাঁ. হ্যাঁ, দুঃখিত. AUDIENCE: তাই [শ্রবণাতীত]? | DAN: আপনি ছিল যদি প্রশ্ন করা হয়, তাই কমান্ড লাইন বিন্দু, 2, 1 একটি বিন্দু স্ল্যাশ কি কমান্ড লাইন সংখ্যা আর্গুমেন্ট দুটি হতে বা তিনটি হবে? শ্রোতা: আমি এটা না মনে হয় সত্যিই কোন ব্যাপার. আমি ওহ, আপনি পাস না, বলতে ঝোঁক যখন কোন কমান্ড লাইন আর্গুমেন্ট, সম্ভবত, আপনি ফাংশন বলা হয়. তাই আমি স্বরবর্ণ বাদ ঝোঁক কমান্ড লাইন থেকে ফাংশন এটা যদিও যুক্তির argv মধ্যে অন্তর্ভুক্ত করা হয়েছে. | DAN: কিন্তু এটা test-- ছিল যদি yeah-- এবং আপনি কিছু বলতে যদি -argc 3 সমান মত, আপনি নিরাপদ স্থায়ী আছেন. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? | DAN: আমি যদি এই পরিবর্তে কলিং মনে argc এবং স্ট্রিং argv বন্ধনী কিন্তু একই ধরনের রাখা এবং শুধু বলা একটি মত বিভিন্ন তাদের কিছু এবং খ, এখনও এটা কাজ করবে? এবং এটি এখনও কাজ করবে, আপনি ঠিক করা হবে পরিবর্তে argc-- ব্যবহার করে আপনি একটি এবং খ ব্যবহার করতে চাই. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? | DAN: তাই প্রশ্ন GetString, হয় গাদা মেমরি সংরক্ষণ করা যাচ্ছে GetString, গৃহস্থালির কাজ, কারণ *. এটা কারণ গাদা মেমরি সঞ্চয় প্রকৃত মধ্যে এখন যদি malloc কল GetString, বাস্তবায়ন. ঠিক আছে, চলন্ত উপর. নিরাপত্তা. তাই সত্যিই নিরাপদ হবে, আপনি কোন উপর নির্ভর করে এক এবং আপনি কোন কোন এক ব্যবহারের অনুমতি আপনার তথ্য, যা কেন সবাই তাদের নিজস্ব মেশিন তৈরী করে তাদের নিজস্ব অপারেটিং সিস্টেম, তাদের সব গোড়া থেকে প্রোগ্রাম, এবং সম্ভবত অন্য কোন মেশিনের সাথে সংযোগ না ইন্টারনেটের মাধ্যমে. তাই কম্পিউটার অনিরাপদ হয়. সত্যিই তারা. আমরা অন্য মানুষ বিশ্বাস আছে. এবং নিরাপত্তা ধারণা আপনি যে এর পরিমাণ সীমিত করার চেষ্টা করছে যে আপনি প্রয়োজন বিশ্বাস. এবং মানে এক আপনি যে কি ক্রিপ্টোগ্রাফি মাধ্যমে হয়. ক্রিপ্টোগ্রাফি, মূলত, হয় আমরা গোপন আছে. কখনও কখনও আমরা আমাদের গোপন পাস করতে হবে বরাবর মাধ্যমে, বলে, ইন্টারনেট বা অন্যান্য বিষয়. এবং আমরা মানুষ চাই না এই গোপন জানতে. সুতরাং আমরা একটি উপায় মধ্যে আমাদের গোপন এনক্রিপ্ট যে আমরা কোন এক চিন্তা করতে পারেন আশা করি. তাই আমরা used-- এই ক্লাসে অবশ্যই মাধ্যমে সিজার সাইফার মত জিনিস এবং উভয় খুব খুব, যা [শ্রবণাতীত], কিছু এনক্রিপ্ট অনিরাপদ উপায়. তারা চিন্তা করা সহজ কি তারা এবং আপনার কি গোপন. বাস্তব জগতে আরো অনেক কিছু ব্যবহার করে জটিল এনক্রিপশন স্কিম. এবং আমরা মধ্যে পেতে হবে না যে তুলনায় আরো অনেক কিছু. ডিবাগ করার পদ্ধতি. , GDB ভাল হয়. আমি আবার এই চাপ সৃষ্টি করতে যাচ্ছি. , GDB সব সময় প্রতি ব্যবহার করুন সময় আপনি একটি সমস্যা আছে. GDB- র মধ্যে দরকারী কমান্ড আপনি একটি লাইন হয় পাস, যা বিরতি সংখ্যা, একটি ফাংশন নাম, মূলত যেখানে আপনার কোড আপনি বন্ধ করতে চান, এবং নিয়ন্ত্রণ নিতে সক্ষম. প্রিন্ট করুন একটি পরিবর্তনশীল নেয় এবং ছাপে আউট যে পরিবর্তনশীল যে যাই হোক না কেন আপনার মৃত্যুদন্ড পয়েন্ট. পরবর্তী আপনার মৃত্যুদন্ড চলে আসে এক ধাপ বরাবর. এবং একটি ফাংশন ভিতরে ধাপ ধাপ আপনার মৃত্যুদন্ড. অন্যান্য বিষয় কিভাবে, যা চালানো হয় আপনি আসলে আপনার কোড রান. চালিয়ে প্রয়োজনীয় সব পদক্ষেপ নেয় পরবর্তী বিরতি বিন্দু পেতে. এবং অনেক, অনেক অন্যদের আছে. তাদের দেখুন. তারা মহান. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? | DAN: হ্যাঁ, একটি ডিবাগার হয়. সুতরাং একটি ডিবাগার একটি প্রোগ্রাম যে আপনি আপনার প্রোগ্রাম ডিবাগ করতে দেয়. এটা বাগ খুঁজে বের করে একটি প্রোগ্রাম যা না আপনি, যদিও যে মহান হতে হবে. এবং অনুসন্ধান আমার জন্য শেষ. আমরা বললাম যে সার্চ ধরনের তাই এই ক্লাসে সম্পর্কে রৈখিক অনুসন্ধান, যা আপনি প্রতিটি মাধ্যমে যে চেহারা ঠিক হয় অনুসন্ধান স্থান উপাদান, এক একটি সময়ে উপাদান, আপনি পেতে কি পর্যন্ত আপনি বা আপনার পৌঁছানোর পর্যন্ত খুঁজছেন আপনার অনুসন্ধানের স্থান শেষে যা আপনি খুঁজে পেতে পারে না বলে নির্দেশ আপনি খুঁজছেন হয়েছে যে উপাদান. এবং এই, এ সেরা ধ্রুবক সময় লাগে যা 1 0 এবং সবচেয়ে খারাপ রৈখিক এ এন 0, যা সময়,. প্রয়োজন, যা বাইনারি অনুসন্ধান, নোংরা উপাদান. আপনি আপনার উপাদানের মধ্যম যান, যদি আপনি খুঁজছেন উপাদান উপাদান চেয়ে বড় বা ছোট হয় আপনি মধ্যম করেন যে. এটা বড়, আপনি নীচে বলে আপনার অনুসন্ধানের স্থান আপনার হয় বর্তমান অবস্থান, মধ্যম, এবং আপনি প্রক্রিয়া পুনরায় আরম্ভ করুন. এটি ছোট, আপনি বলে চেহারা হাঁ, কি the-- যে? শ্রোতা: [শ্রবণাতীত]? | DAN: হ্যাঁ. শেখানো হয়েছে যে ধরণের কোন ধরণের বর্গ পরীক্ষার জন্য পরিষ্কার খেলা. [হাস্য] | DAN: এবং আপনি ছিল না যে একটি সমস্যা সেট জন্য এটা, এটা পরিষ্কার পরীক্ষার জন্য খেলা. শ্রোতা: আমরা এটি উপর যেতে পারি কিভাবে চাচ্ছি | DAN: এটা উপর সর্বস্বান্ত করা হবে. স্পিকার 2: জন্য প্রকৃত কোড [শ্রবণাতীত] study.cs50.net হয়. আপনি অনুশীলন সমস্যা তাকান তাই এর একত্রীকরণ সাজানোর পাতা study.cs50.net, কোড আছে একত্রীকরণ সাজানোর বাস্তবায়নের জন্য. তাই আপনি যদি বাস্তবায়ন করতে হবে না এটা নিজেকে আজ রাতে. কিন্তু নিশ্চিত করুন যে আপনি বরং এটা বুঝতে না আর শুধু এটা মনে রাখার. শ্রোতা: [শ্রবণাতীত]? স্পিকার 2: উপর একত্রীকরণ সাজানোর পৃষ্ঠা study.cs50.net, একটি অনুশীলন আছে আপনি মাধ্যমে ক্লিক করুন যে, সমস্যা সমস্যা, খুব শেষে আছে একটি একত্রীকরণ, যা সমাধান, সাজানোর বাস্তবায়ন. কিন্তু নিশ্চিত আপনি এটা বুঝতে বরং এটি মনে রাখার চেয়ে অথবা এটি নিচে কপি. শ্রোতা: এবং একটি পুরোপুরি বৈধ পরীক্ষার জন্য সমস্যা হবে এখানে ভালো কিছু একটি তালিকা. এই তালিকা পর কেমন কি পছন্দসই মান নির্বাচন করে সাজানোর এক ধাপ বা সন্নিবেশ সাজানোর বা যাই হোক না কেন. তালিকার এক পূর্ণ পুনরাবৃত্তির. আপনি প্রয়োজন না শেষ তাই, এমনকি যদি এটা জন্য কোড, আপনি এটা বুঝতে হবে এটি হচ্ছে জানতে যথেষ্ট এই অ্যারের পরিবর্তন করা হবে. | DAN: এটা আমার জন্য এটি. [সাধুবাদ] LUCAS: আরে সবাই. আমার নাম লুকাস. আমি সব জন্য, recursion সম্পর্কে কথা বলতে যাচ্ছি আমরা শিখেছি যে প্রকারের, এবং একটি সব পয়েন্টার সামান্য বিট. ঠিক আছে? সুতরাং প্রথম সব জন্য, recursion. এটা বলে মানে কি একটি ফাংশন recursive হয়? শ্রোতা: নিজেই কল. LUCAS: ঠিক আছে, হাঁ, কল নিজেই. তাই যেমন এই ছবি, মত. এটা ভিতরে ছবি মত একটি ছবি এবং তাই. সুতরাং উদাহরণস্বরূপ, যদি আপনি ড্যান হিসাবে থাকতে পারে যে বাইনারি অনুসন্ধান সম্পর্কে কথা বলা হয়েছিল. এক উপায়, যা বাইনারি অনুসন্ধান রিকার্সিভ আপনি সত্য যে একটি সংখ্যা খুঁজে বের করার চেষ্টা. সুতরাং আপনি মধ্যম যান. সেখানে সংখ্যা এবং তারপর যদি আপনি না পরীক্ষা বাম এবং ডান. এবং তারপর আপনি সংখ্যা খুঁজে বের করে বাম হতে যাচ্ছে, এটি একই আবার অনুসন্ধান করছেন হিসাবে জিনিস কিন্তু শুধু তালিকা বাম. শোনাচ্ছে কিভাবে সুতরাং যে মত রিকার্সিভ না. আপনি যদি না রিকার্সিভ আছে সুতরাং যে কেন একত্রীকরণ সাজানোর জন্য সমাধান. ঠিক আছে, তাই এখানে একটি উদাহরণ. তাই আমি চয়ন করতে চান যে বলা যাক 1 থেকে n যাও সব সংখ্যা. আমি বুঝতে পারেন যে n এর সমষ্টি সংখ্যা n প্লাস এন 1 বিয়োগ 1 আপ হয়. কিন্তু তারপর, আমি এন 1 বিয়োগ তাকান প্লাস এন বিয়োগ 2 প্লাস 1, যে একই summing সংখ্যার হিসাবে জিনিস এন 1 বিয়োগ আপ. তাই আমি একটি সমান সমষ্টি এর সমষ্টি বলতে পারেন এন বিয়োগ 1 এন প্লাস সমষ্টি সমান. যে জানার জন্য? এবং আমি অন্য কিছু হবে যে যা বেস ক্ষেত্রে বলা আপ সংখ্যার যোগফল শূন্য শূন্য হবে. তাই যত তাড়াতাড়ি আমি সংখ্যা পেতে শূন্য, আমি বেড়ে চলেছে থামাতে. যে জানার জন্য? তাই এখানে কিভাবে একটি উদাহরণ আমি যে বাস্তবায়ন করতে পারেন. তাই আমি কিছু এই ফাংশন আছে. যে একটি পূর্ণসংখ্যা এন লাগে. এন যদি তাই এখানে আমি প্রথম চেক কম বা শূন্য সমান. সুতরাং এটি শূন্য থেকে কম বা সমান যদি আমি আমাদের বেস কেস, যা শূন্য ফিরে. অন্যথা, আমি ঠিক ফিরে আসতে পারেন এন প্লাস সংখ্যার যোগফল থেকে এন বিয়োগ এক এক. জানার জন্য? ঠিক আছে. তাই এখানে এটা দেখে মনে হচ্ছে কি. আপনি 2 সমান সমষ্টি আছে 2 প্লাস 1 এর সমষ্টি. এবং 1 কিছু প্লাস 1 0 0 যা এর সমষ্টি. জানার জন্য? আমরা স্ট্যাক তাকান সুতরাং আপনার প্রোগ্রাম, এই এটা দেখে মনে হচ্ছে কি না. প্রথমত, আমরা প্রধান ফাংশন আছে. এবং তারপর প্রধান ফাংশন সমষ্টি 2 বলা হয়. এবং তারপর সমষ্টি 2 ওহ, বলতে হবে, সমষ্টি 2 2 প্লাস এক সমষ্টি সমান. তাই আমি স্ট্যাকে 1 এর সমষ্টি যোগ করুন. এবং 1 এর সমষ্টি এর সমষ্টি কল করতে যাচ্ছে 0, যা যোগ করা যাচ্ছে স্ট্যাকে. এবং যে এই বেশী তারপর প্রতিটি অন্য উপরে ফিরে যাও, অন্যান্য বেশী বর্তা পারেন. সুতরাং উদাহরণস্বরূপ, এখানে, 0 সমষ্টি, প্রথম, 0 ফিরে যাচ্ছে. এবং তারপর 1 এর সমষ্টি নির্বাচন করুন. তারপর 1 এর সমষ্টি যাচ্ছে 2 এর সমষ্টি 1 ফিরে. এবং পরিশেষে, 2 এর সমষ্টি যাচ্ছে প্রধান 3 ফিরে. যে জানার জন্য? এটা বুঝতে খুব গুরুত্বপূর্ণ স্ট্যাকের কাজ এবং চেষ্টা করা হয় এটা জ্ঞান করে তোলে দেখুন. ঠিক আছে, তাই বাছাই. সুতরাং কেন, গুরুত্বপূর্ণ বাছাই করা হয় প্রথম সব? কেন আমরা যত্ন করা উচিত? যে কেউ? আমাকে একটা উদাহরণ দিন? হ্যাঁ? শ্রোতা: [শ্রবণাতীত]. LUCAS: ঠিক আছে, হ্যাঁ. সুতরাং আপনি আরো দক্ষতার অনুসন্ধান করতে পারেন. এটা একটা ভাল উপায়. উদাহরণস্বরূপ, আমরা একটি অনেক আছে জিনিষ, আসলে, আমাদের জীবনের যে সাজানো হয়. উদাহরণস্বরূপ, অভিধান. এটা সব আছে খুব গুরুত্বপূর্ণ যাতে কিছু শব্দ যে আমরা সহজে অ্যাক্সেস করতে পারেন. সুতরাং যে তিনি বলার অপেক্ষা রাখে না কি. আপনি আরও দক্ষতার অনুসন্ধান করতে পারেন. এটি একটি আছে হবে কিভাবে হার্ড চিন্তা কথায় যা অভিধান র্যান্ডম ক্রম. আপনি অনেক সুন্দর, তাকান করতে হবে প্রতি একক শব্দ আপনি খুঁজে না হওয়া পর্যন্ত আপনি যা খুঁজছেন যে শব্দ. এছাড়াও আপনি ফেসবুক ব্যবহার করছেন, যখন আপনি আপনার বন্ধুদের এ খুঁজছেন, আপনি আছেন ফেসবুক করা দেখতে যাচ্ছে আপনার কাছাকাছি বন্ধু বেশী উপরে আপনি যে অনেক কথা বলতে না. আপনি নীচে সমস্ত উপায় যান আপনার বন্ধু তালিকা, আপনি দেখতে যাচ্ছেন আপনি সম্ভবত এমনকি না যে মানুষ আপনার সাথে বন্ধু মনে রাখবেন. এবং যে ফেসবুক প্রকারের কারণ কিভাবে উপর ভিত্তি করে আপনার বন্ধুদের আপনি তাদের থেকে হয় বন্ধ. তাই তথ্য সংগঠিত. এছাড়াও পোকেমন. সুতরাং আপনি সব pokemons দেখতে সংখ্যা আছে. এবং যে একটি সহজ মত তথ্য অ্যাক্সেস এর উপায়. শ্রোতা: পোকেমন প্রবেশ. LUCAS: হ্যাঁ. শ্রোতা: [শ্রবণাতীত]. LUCAS: হাঁ. ঠিক আছে, তাই নির্বাচন সাজানোর. নির্বাচন সাজানোর নির্বাচন করতে যাচ্ছে একটি তালিকা ক্ষুদ্রতম পাঁচমিশালী মান প্রতিটি প্রতিটি পুনরাবৃত্তির সময়. এটা কোন ধরনের আপনি কি যে সাজানোর মত আপনার মাথার মধ্যে আপনি চেষ্টা করছেন হাতে একটি তালিকা বাছাই. মূলত, আপনি কি সব আপনি তাকান হয় ক্ষুদ্রতম সংখ্যার জন্য. আপনি অনুসারে সাজানো তালিকা রাখা. এবং তারপর আপনার জন্য চেহারা পরবর্তী সবচেয়ে ছোট সংখ্যা. এবং তারপর আপনি করছেন রাখা যে তাই. তাই নির্বাচন সাজানোর আপনি মূলত হয় প্রত্যেক সময় ক্ষুদ্রতম নির্বাচন পাঁচমিশালী মান. সাজানো শেষে রাখুন তালিকার অংশ. এবং যে করছেন রাখা. সুতরাং এর দ্রুত দেখুন কি ভালো দেখায়. তাই এখানে সাজানো এবং পাঁচমিশালী তালিকা. তালিকা অনুসারে বাছাই করা জন্য, প্রথমে এটি খালি. এবং তারপর আমি নির্বাচন করা যাচ্ছে না 2, যা এখানে সবচেয়ে ছোট সংখ্যা,. তাই আমি 2 নম্বর পেতে এবং আমি করা তালিকা সামনে. এবং তারপর আমি পরের ক্ষুদ্রতম জন্য চেহারা 3 যা উপাদান. তাই আমি শেষে এটা করা সাজানো তালিকা. এবং তারপর আমি যে করছেন রাখা. আমি 4 খুঁজে পেতে এবং শেষে এটা করা. 5 খুঁজুন এবং শেষে এটা করা. এবং যারা বার কিভাবে এ সব যে চেহারা আমি, শেষ হয় এ এটা করা বলছে মূলত, দুটি মান সোয়াপিং. ঠিক আছে? এবং তারপর গত এক, আপনি শুধু আরো এক উপাদান আছে. তাই এটি ইতিমধ্যেই সাজানো. ঠিক আছে, তাই সন্নিবেশ সাজানোর. সন্নিবেশ সাজানোর আপনি আছে চলুন একটি সাজানো থাকার যে জিনিস এবং একটি পাঁচমিশালী তালিকা. শুধুমাত্র জিনিস যে প্রত্যেক সময় যে আপনি সাজানো একটি উপাদান যোগ করছি তালিকা, আপনি শুধু উপাদান বাছাই পাঁচমিশালী তালিকা সামনে. এবং তারপর আপনি কি এটি চালু করছি অবস্থান এটা সাজানো হতে হবে তালিকার অংশ. এর এই কি দেখতে দিন এই আরো ইন্দ্রিয় তোলে. তাই প্রথমে, উদাহরণস্বরূপ, আমি চেষ্টা করছি এর মধ্যে তিন নম্বর সন্নিবেশ করা তালিকা সাজানো অংশ. তাই তালিকা কিছু নেই. তাই আমি ঠিক 3 নম্বর লাগাতে পারেন. এখন, আমি 5 নম্বর যোগ করতে চান তালিকা সাজানো অংশ. তাই আমি 5 নম্বর তাকান. আমি এটি 3 এর চেয়ে বড় যে বিজ্ঞপ্তি. তাই আমি এটি 3 পর হতে হয়েছে জানি. তাই আমি 3 ও 5 করা. তারপর আমি 2 নম্বর সন্নিবেশ করতে চান. আমি 2 নম্বর আসলে বিজ্ঞপ্তি তারপর 3 এবং 5 উভয় শেষ. আমি আসলে এটা সব করা আছে তালিকার শুরুতে উপায়. তাই আমি ধরনের, সব নামান আছে অনুসারে সাজানো তালিকা যাতে আমি করতে পারেন উপাদান সংখ্যা 2 জন্য জায়গা. তারপর আমি 6 নম্বর দেখুন. আমি এটি 5 পরে হতে হবে দেখতে. তাই আমি সেখানে রাখা. এবং পরিশেষে, আমি 4 নম্বর তাকান. এবং আমি এটা করা উচিত বিজ্ঞপ্তি 3 ও 5 এর মধ্যে হতে. এবং তারপর আমি সেখানে এটা করা এবং স্থানান্তর সমস্ত অন্যান্য উপাদান. জানার জন্য? বুদ্বুদ সাজানোর. সুতরাং বুদ্বুদ সাজানোর আপনি কি মূলত যাচ্ছে আমরা বুদ্বুদ কল do-- থেকে আপনি list-- মধ্য দিয়ে যেতে সাজানোর কারণ আমি শুধু দেখাতে যদি এটা আসলে ভাল আপনি আপাততঃ চাই এবং আপনি তুলনা করতে যাচ্ছেন সন্নিহিত সংখ্যা. এবং যদি আপনি অদলবদল করতে যাচ্ছেন তাদের অবস্থানের তারা যদি না হন ডান ক্রম. তাই মূলত, কি যাচ্ছে এখানে ঘটেছে, যেমন, আপনি 8 এবং 6 আছে. আপনি যে সাজানো ক্রম করবে না আসলে ডান 6 এবং 5, হবে? তাই আপনি যদি আদেশ অদলবদল করতে যাচ্ছেন. তারপর আমি এখানে 8 এবং 4 দেখুন. এবং আমি একই জিনিস করে. আমি আবার অদলবদল. এবং পরিশেষে, 2 এবং 8. আমি তাদের অদলবদল. এটা বুদ্বুদ সাজানোর কারণ পরে বলা এই পুনরাবৃত্তিও প্রতিটি, আসলে, তালিকার মধ্যে বৃহত্তম সংখ্যা সব পায় তালিকার শেষে উপায়. যে জানার জন্য? এটা সোয়াপিং রাখে, কারণ এবং ডান থেকে এটি পরিবর্তনশীল. ঠিক আছে, তাই এই দ্বিতীয় পুনরাবৃত্তির. এটা একই জিনিস হবে. আমি এক swap 'র কি হবে এবং তারপর গত এক. কোন অদলবদল আছে আমি যে এবং তালিকা অনুসারে বাছাই করা হয়. বুদ্বুদ সাজানোর, আমরা মূলত রাখা তালিকা দিয়ে যাচ্ছে এবং সোয়াপিং কিছু আমি কি না লক্ষ্য করা যে পর্যন্ত যে পুনরাবৃত্তির করছেন কোনো অদলবদল, যা ইতিমধ্যে তালিকা অনুসারে বাছাই করা হয় এর মানে হল যে. জানার জন্য? এর একটি সামান্য বিট কথা বলা যাক চলমান সময় সম্পর্কে. তাই আপনাকে বলছি বিগ মনে রাখবেন না হে, ওমেগা, এবং থীটা? হ্যাঁ? ঠিক আছে, বিগ হে প্রথম সব, কি হয়? শ্রোতা: [শ্রবণাতীত]. LUCAS: হ্যাঁ, এটি একটি খারাপ ক্ষেত্রে বলা হচ্ছে শুধু যে এটা যার মানে রানটাইম, আপনি কত প্রোগ্রাম আশা রান নিতে. ভালো লেগেছে, পদ র এই ক্ষেত্রেই n মধ্যে. উপাদানের সংখ্যা সবচেয়ে খারাপ ক্ষেত্রে তালিকা. ভালো লেগেছে, সম্ভাব্য সবচেয়ে খারাপ ক্ষেত্রে. বুদ্বুদ সাজানোর জন্য উদাহরণস্বরূপ, আমরা n বর্গ বিগ হে আছে. কেন আমরা যে আছে না? কেন বাবল বিগ হে এন বর্গ বাছাই করা হয়? শ্রোতা: [শ্রবণাতীত]. LUCAS: হ্যাঁ, তাই সবচেয়ে খারাপ ক্ষেত্রে হতে হবে যে আমি n পুনরাবৃত্তিও করতে হবে. তাই পুনরাবৃত্তিও প্রতিটি যাচ্ছে শেষ বৃহত্তম উপাদান আনা তালিকা. তাই সবচেয়ে খারাপ ক্ষেত্রে আমি আছে যে জিনিস n বার করতে. এবং যারা বার জন্য, আমি আছে আমি তুলনা করতে হবে, কারণ এন অদলবদল করতে প্রতিটি দুটি উপাদান. এটা স্কয়ার্ড n এর সুতরাং যে কেন এটি এন এন বার কারণ. তারপর, নির্বাচন সাজানোর এ এন বর্গক্ষেত্র কারণ, প্রতিটি পুনরাবৃত্তির জন্য, আমি আছে প্রতি একক উপাদান তাকান তালিকায়. এবং তারপর, ক্ষুদ্রতম খুঁজে যা আমি মানে n উপাদান মাধ্যমে সন্ধান. এবং আমি যে কারণ n বার করতে হবে আমি সব n উপাদান নির্বাচন করা আছে. একটি সন্নিবেশ সাজানোর এ এন বর্গক্ষেত্র লক দৃশ্যকল্প হবে কারণ এক হতে পারে, আমি সন্নিবেশ আছে এন নম্বর, ডান? তাই আমি ইতিমধ্যে আমি যাচ্ছি জানি যে, এন পুনরাবৃত্তিও আছে. কিন্তু আমি ঐ সংখ্যার প্রতিটি জন্য, যদি সংখ্যার সকল তাকান অনুসারে সাজানো তালিকা এবং এটি সমস্ত উপায় করা সামনে, যে n বর্গ হতে হবে এটি এন এন বার আবার হতে হবে. জানার জন্য? কি ওমেগা সম্পর্কে? শ্রোতা: [শ্রবণাতীত]. LUCAS: এটা শ্রেষ্ঠ কেস দৃশ্যকল্প এর. সুতরাং এটা বার অনেক জন্য, মত শ্রেষ্ঠ কেস দৃশ্যকল্প হয়, বাছাই ইতিমধ্যে তালিকা অনুসারে বাছাই করা হয়. তাই আপনি যদি সত্যিই না কিছু করতে. বুদ্বুদ সাজানোর সেরা হয়েছে n এর ক্ষেত্রে দৃশ্যকল্প. আপনি যদি না কেন জানেন? শ্রোতা: [শ্রবণাতীত]. LUCAS: হ্যাঁ, আপনি ট্র্যাক রাখা তথ্য রেশন কোনো অদলবদল ছিল কিনা বা আপনি কিছু আছে না, সেট মত একটি পুনরাবৃত্তির যদি ছিল, যদি সত্য ইতিমধ্যে তালিকা, মূলত সাজানো হয় কি ঘটতে যাচ্ছে আমি যাচ্ছি হয় প্রতিটি দুই অদলবদল করার চেষ্টা করুন সন্নিহিত উপাদান. আমি যে দেখতে যাচ্ছি কোন অদলবদল করা হয়. এবং আমি ঠিক এখুনি ফিরে. তাই এটা আমি ঠিক ছিল অর্থ তালিকা এক সময় দিয়ে যান. আমি চেহারা, কারণ তাই এটি এন এর n উপাদান এ. কেন নির্বাচন সাজানোর এন স্কয়ার? হ্যাঁ, তালিকা অনুসারে বাছাই করা হয়, এমনকি যদি জন্য নির্বাচন সাজানোর প্রতি পুনরাবৃত্তির, আমি সর্বনিম্ন উপাদান নির্বাচন করা আছে. সুতরাং যে আমি চেহারা আউট আছে যে মানে পাঁচমিশালী সব উপাদান তালিকা এবং সর্বনিম্ন খুঁজে প্রতিটি পুনরাবৃত্তির জন্য. যে জানার জন্য? এবং সন্নিবেশ তলোয়ার কারণ n হয় আমি সন্নিবেশ করার চেষ্টা করছি যে ক্ষেত্রে সংখ্যা এবং সংখ্যার সব, যখন আমি তাদের সন্নিবেশ করার চেষ্টা করুন, আমি মনে করি তারা দেখতে সঠিক অবস্থানে আছে. আমি অন্য সব পরীক্ষা যেতে হবে না পাঁচমিশালী তালিকা মধ্যে সংখ্যা. এটি এন হতে হবে সুতরাং যে কেন. জানার জন্য? এবং থেটা কি? শ্রোতা: [শ্রবণাতীত]. LUCAS: কি, দুঃখিত? আবার এটা বলুন. শ্রোতা: [শ্রবণাতীত]. LUCAS: ঠিক. সুতরাং আপনি যে শুধুমাত্র নির্বাচন দেখতে পারেন মার্জ মধ্যে সংরক্ষিত সাজানোর thetas আছে. আপনি শুধুমাত্র থেটা আছে এবং যে কারণ বিগ হে এবং ওমেগা উভয় একই হয়. ঠিক আছে. এবং পরিশেষে, লগ n মধ্যে সাজানোর একত্রীকরণ. ড্যান বলছে ছিল হিসাবে এবং তারপর,, সাজানোর মার্জ ধরনের একই ভাবে ভালো হয় আপনি বাইনারি অনুসন্ধান. তাই আপনি যদি তালিকা পেতে. এবং আপনি অর্ধেক কাটা যাচ্ছে. এবং তারপর আপনি তাদের কাটা ছোট অর্ধেক. এবং তারপর আপনি তাদের একত্রীকরণ. আপনি না ডান, মনে রাখবেন, যে? ঠিক আছে, তিনি ছিল. ঠিক আছে, পয়েন্টার. সুতরাং একটি পয়েন্টার কি? শ্রোতা: [শ্রবণাতীত]. LUCAS: একটি ঠিকানা. ঠিক আছে. আমি ডেভিড একটি গুচ্ছ দেখায় জানি যে Binky এর ভিডিও এবং কিছু নির্দেশ একে অপরের. কিন্তু আমি পয়েন্টার মনে করতে চান নিছক একটি ঠিকানা হিসাবে. সুতরাং এটি চালু করা হয় যে একটি পরিবর্তনশীল একটি ঠিকানা সংরক্ষণ করে. তাই এটি শুধু এই বিশেষ পরিবর্তনশীল যে চার বাইট দীর্ঘ. কিছু যে পয়েন্টার মনে রাখবেন, আমাদের 32 বিট জন্য দীর্ঘ সবসময় চার বাইট মেশিন কেস সঙ্গে তাই প্রয়োগ. এবং এটি শুধু অবস্থান আছে এটা ভিতরে একটি পরিবর্তনশীল. ঠিক আছে, তাই মূলত, এই মেমরি আছে. তাই মেমরি প্রতিটি ব্লক আসলে একটি ঠিকানা যা লেবেল, slotty মেমরি. সুতরাং যে আমি করতে পারেন এর মানে হল যে একটি পয়েন্টার প্রতি নির্দেশ এই ঠিকানার কোনো. তাই আমরা পয়েন্টার ব্যবহার করব কারণ আমি অবস্থান মনে আছে যে একটি নির্দিষ্ট পরিবর্তনশীল একটি স্মৃতি. এবং যদি আপনি না মনে রাখবেন যারা এক যে আমি একটি ফাংশন আছে যদি ক্ষেত্রে ছিল আমি আসলে আছে যদি আপনি চান reals জন্য swap 'র, আমি আসলে একটি পয়েন্টার পাঠাতে হবে. না পরিবর্তনশীল. আপনি যদি না যে মনে করবেন না? পার্থক্য between-- নাম কি? মান এবং কল করে কল করা রেফারেন্স দ্বারা, ডান? হাঁ, ঠিক আছে. তাই মান দ্বারা কল. আপনি শুধু একটি পরিবর্তনশীল পাঠান আপনি শুধু একটি মান প্রেরণ করছেন কাজ. সুতরাং আপনি আসলে প্রেরণ করছেন পরিবর্তনশীল এর একটি কপি. এবং আপনার প্রোগ্রাম কম গ্রাহ্য না পারে আসলে একই পরিবর্তনশীল যদি সম্পর্কে একটি কপি করে তোলে. এবং রেফারেন্স যে মানে আহ্বান আমি আসলে একটি কপি পাঠানোর করছি যে পরিবর্তনশীল পয়েন্টার. তাই এটা আমি প্রেরণ করছি যে মানে যে পরিবর্তনশীল এর অবস্থান. তাই আমি এর অবস্থান আছে অনুভূতি পরিবর্তনশীল, আমি যখন কল ফাংশন পয়েন্টার সাথে, আমি আসলে করতে পারবেন না প্রধান ছিল যে তথ্য পরিবর্তন. জানার জন্য? যদিও, পয়েন্টার একটি কপি হয়, পয়েন্টার এখনও আসল ঠিকানা আছে আমি পরিবর্তন করতে চান যে পরিবর্তনশীল. জানার জন্য? তাই পয়েন্টার তৈরি. সবসময় পয়েন্টার আছে মনে রাখবেন, এটা নির্দেশ করে যে টাইপ একটি তারকা এবং তারপর. এবং তারপর আপনি নাম রাখা. তাই আপনি যখনই মনে রাখবেন, যে যাই হোক না কেন তারা, এটা একটি পয়েন্টার মত যাই হোক না কেন পরিবর্তনশীল যে যে আপনি ছিল টাইপ করুন. সুতরাং এখানে তারা, যেমন, এটা একটি পয়েন্টার এবং একটি পূর্ণসংখ্যা. এবং তারপর গৃহস্থালির কাজ তারা একটি পয়েন্টার গৃহস্থালির কাজ তারা এবং তাই ঘোষণা. হ্যাঁ? শ্রোতা: আমরা কি আছে একটি এন পয়েন্টার এক্স তারকা. আমি যে এক্স একটি পয়েন্টার সৃষ্টি জানেন. এটি একটি পূর্ণসংখ্যা x ডিক্লেয়ার করে? LUCAS: ঠিক আছে, তাই আপনি যদি তারা x বলে, আপনি একটি একটি পয়েন্টার তৈরি করছি না পরিবর্তনশীল x. আপনি এক্স নামে একটি পয়েন্টার তৈরি করছি. শ্রোতা: [শ্রবণাতীত]. LUCAS: আমি এন তারা বলতে x সুতরাং যখন, আমি আরে, মেমরি, আমি যাচ্ছি, বলার অপেক্ষা রাখে না এই তিনটি বাক্সে এক পেতে. এবং আমি যে বলতে যাচ্ছি যা, এক্স হতে যাচ্ছে যাচ্ছে একটি পয়েন্টার হতে হবে. এবং পয়েন্টার সম্পর্কে আকর্ষণীয় কিছু আমরা তারা আছে বলে যে একটি 32 বিট মেশিনের জন্য 4 বাইট. এবং যে জন্য কারণ কারণ 4 বাইট 32 বিট. 64 বিট আসলে যে এবং মেশিন পয়েন্টার ঠিকানা আছে 64 বিট দীর্ঘ হয়. সুতরাং এটা মানে হল যে এর আকার মেশিনের মধ্যে ঠিকানা ভিন্ন. তাই রেফারেন্স এবং Dereferencing. দুই অপারেটর আছে আপনি যদি না মনে রাখা উচিত. প্রথম এম্পারসেন্ড হয়. দ্বিতীয় তারকা. যে তারকা এবং এই দ্বারা বিভ্রান্ত করবেন না কারণ, মনে রাখবেন, যে একধরনের এই ক্ষেত্রে, আপনি n তারা আছে. এটি একসঙ্গে একটি পুরো জিনিস মত. কোন স্কুল স্থান তারকা আছে. সুতরাং এটি টাইপ এর মানে হল যে. আপনি যখন যে মনে রাখবেন, পরিবর্তনশীল তারকা, আপনি আছেন ধরন সম্পর্কে কথা বলা. তারপর আপনি শুধু তারা এবং আছে পরিবর্তনশীল এর নাম, এটা মানে হল যে আপনি পয়েন্টার, dereferencing করছি যা আপনি এ খুঁজছেন যে মানে পয়েন্টার, ঠিকানা খুঁজে পেতে এটা , প্রতি নির্দেশ যে ঠিকানা যাচ্ছে, এবং যখনই এ খুঁজছেন আপনি সেখানে আছে. তাই আমি আপনি যখন যে আমার ছাত্র বলতে তারকা, আপনি যে এটা চিন্তা করা উচিত বিষয়বস্তু সমাহার. আপনি একটি ইশারা আছে, তাই যদি ও আপনি তারা পয়েন্টার কি, এটা পয়েন্টার বিষয়বস্তু. তাই আপনি যদি এটি এর প্রতি নির্দেশ যাই হোক না কেন যান এবং ধ্রুব বিষয়বস্তু তাকান. এবং চিহ্ন; একই ঠিকানা হিসাবে জিনিস. আমি ভালো ছাগু karigor.com একটি পরিবর্তনশীল আছে, তাই যদি যাক কোন int একটি সমান আমি বলতে 3-- আমি যে এর ঠিকানা খুঁজতে চান পরিবর্তনশীল একটি মেমরি, আমি কি করতে পারেন একটি ampersand. সুতরাং এটি একটি ঠিকানা. জানার জন্য? তাই এখানে একটি উদাহরণ. এই int খ এবং কোন int গ অনুপস্থিত. একটি 3 উপায়ে সমান, তাই int যে আমি মেমরি যেতে যাচ্ছি. এবং আমি একটি স্লট খুঁজে পাওয়া যাচ্ছে না এবং এখানে 3 নম্বর করা. এবং তারপর কোন int খ 4 সমান. আমি একই জিনিস করতে যাচ্ছি. মেমরি যান এবং একটি সংখ্যা করা বাক্সে এক 4. এবং কোন int 5 সমান. অন্য একটি বক্স এবং খুঁজুন একটি সংখ্যা 5 করা. তাই আউট করছেন এই লাইন কি? এন তারা বাবা এবং চিহ্ন; একটি সমান. সুতরাং প্রথম সব, এন তারা বাবা. এটা কি করছে? শ্রোতা: [শ্রবণাতীত]. LUCAS: হ্যাঁ, তাই এন তারা PA, প্রথম, বাবা নামক একটি পয়েন্টার ঘোষণা করে. এবং তারপর এটি মান বরাদ্দ যে পয়েন্টার একটি ঠিকানা হতে. সুতরাং একটি ampersand. তারপর, আমি তারা PB না, একটি তারকা PB কি? ওহ, দুঃখিত. এই অনুপস্থিত. এন তারা PB. আমি তারকা পিসি মানে. আমি তাই দুঃখিত. এটা একই জিনিস. কিন্তু এখন আমি একটি পয়েন্টার তৈরি আরবী ভাল আছি তারপর গ একটি পয়েন্টার b এবং. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? LUCAS: হ্যাঁ. তাই আপনি যদি মেমরি যান এবং আপনি যান PA জন্য designator যে বক্স, আপনি আসলে চলুন একটি একটি ঠিকানা দেখুন. ঠিক আছে? হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? LUCAS: হ্যাঁ, পয়েন্টার একটি ঠিকানা. যে ভুলবেন না. এটা সবচেয়ে গুরুত্বপূর্ণ মত পয়েন্টার সম্পর্কে অংশ. সংরক্ষণ এবং ঠিকানা আছে কিছু পরিবর্তনশীল. অন্য কিছু? অন্য কোন প্রশ্ন? ঠিক আছে. তাই পয়েন্টার এবং অ্যারে. মনে রাখবেন যে, আমি অ্যারে 3 int না, মূলত, আমি কি করছি আমি ধরনের, না হয় , একটি পয়েন্টার ঘোষণা. সুতরাং অ্যারের ধরনের একটি একটি পয়েন্টার ভালো হয় মেমরি নির্দিষ্ট জায়গা যা আমি পূর্ণসংখ্যার জন্য তিনটি স্লট বরাদ্দ. যে জানার জন্য? আমি int অ্যারে 3 যখন সুতরাং, আমি কি করছি করছেন, মূলত তিনটি তৈরি করা হয় মেমরি স্লট. তাই আমি ঠিক মেমরি তিনটি স্লট খুঁজে. তাই আমি, তারপর, একটি তারকা অ্যারে, এটা করতে হলে মূলত অ্যারের বিষয়বস্তু মানে, যা আমি যেতে, আমি পয়েন্টার নিশ্চিহ্ন মানে এটি এর প্রতি নির্দেশ যে যে জায়গায়, এবং আমি এক নম্বর রাখা. এবং তারপর, আমি তারা অ্যারে প্লাস 1 না, যে অ্যারের করছেন হিসাবে একই জিনিস শুধু আমি যেতে, যার মানে, এক বন্ধনী এটা নির্দেশ করে যে জায়গা. এবং তারপর প্লাস 1 তোলে আমার এক অবস্থান নামান. তাই আমি, আসলে, এই অবস্থান থেকে যান এবং দুই নম্বর রাখা. এবং তারপর, পরিশেষে, আমি যখন অ্যারে প্লাস 2, আমি যেখানে যেতে এ অ্যারে এর প্রতি নির্দেশ. এবং তারপর আমি মেমরি ব্লক সরাতে. এবং তারপর আমি এখানে তিন নম্বর রাখা. হ্যাঁ? AUDIENCE: তাই তারা অ্যারে সহজভাবে হয় প্রথম বিন্দু বলছে. এবং আপনি শুধু কারণ, 1 যোগ করতে পারেন আমরা শুধুমাত্র সত্যিই আছেন যে প্রথম ঠিকানা উল্লেখ. LUCAS: হ্যাঁ. কেন আমরা, উদাহরণস্বরূপ, অ্যারে বলতে না 0, অ্যারে 1, এবং অ্যারের 2? আমি, আপনি কেন 0 করবেন, বলছে 1, 2, 3 পরিবর্তে 1, 2, 3? কারণ এক, এক, কম্পিউটার প্রোগ্রামারদের শুরু করতে পছন্দ 0 থেকে বেড়ে চলেছে. আপনি অ্যারে 0 যখন কারণ দুই, হয় এটি অ্যারের করছেন হিসাবে একই জিনিস যার মানে প্লাস 0, আমি যেতে যে অবস্থান, এবং আমি না কোন মেমরি ব্লক লাফালাফি করা. তাই আমি কোনো মেমরি ব্লক সরানো না. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? LUCAS: তাই সে কি জিজ্ঞাসা এরকম মধ্যে পার্থক্য এই বা malloc করছেন. পার্থক্য এক যে int অ্যারে 3 একটি তৈরি হয় স্ট্যাক অ্যারে. এবং আমি malloc না, এটা গাদা তৈরি করে. যে জানার জন্য? সুতরাং কিভাবে malloc আসলে কাজ করে? তাই কেন আমরা এমনকি malloc ব্যবহার করতে হবে? পরিসংখ্যান আপনার কম্পাইলার ধরনের সব আপনি ঘোষণা যে ভেরিয়েবল. এবং তিনি সব জন্য স্থান তৈরি করে স্ট্যাকের মধ্যে তাদের. সুতরাং আপনার ভেরিয়েবল সব যাচ্ছে কোথাও স্ট্যাকের মধ্যে হতে হবে. তাই এখানে পরিবেশের হয়. যারা ভেরিয়েবল জন্য তাই মূলত, স্থান মেমরি বরাদ্দ করা হয় সময় সঙ্কলন. তাই এটা আপনার কম্পিউটারে যে মানে যারা ভেরিয়েবল সব জানতে পূর্বেই. এটা কি মান জানা প্রয়োজন না আপনি তাদের রাখা চলুন. কিন্তু এটা কিভাবে জানা প্রয়োজন আপনি প্রয়োজন অনেক স্মৃতি. কিন্তু এখন, এর, উদাহরণস্বরূপ, যে বলা যাক আপনি একটি অ্যারের তৈরি বা গ্রহণ করছেন আপনি গ্রহণ করছেন স্ট্রিং ব্যবহারকারীর কাছ থেকে. আপনি জানেন না কিভাবে দীর্ঘ স্ট্রিং যেমন, হতে যাচ্ছে. সুতরাং আপনি ঠিক কত জানি না মেমরি ব্লক আপনি সঠিক, বরাদ্দ করা? তাই এটা সত্যিই না করা অর্থে না আপনি 100 অক্ষর করা বলে. এবং তারপর ব্যবহারকারী 150 লিখেছেন কি? আপনি মাতাল করা চলুন. তাই মূলত, আপনি কিভাবে নিশ্চিত হতে পারে না আপনি বরাদ্দ করা প্রয়োজন অনেক মেমরি যখন আপনি প্রোগ্রাম কম্পাইল. আপনি শুধুমাত্র রান সময় জানি. আপনি গাদা আছে সুতরাং যে কেন. সুতরাং গাদা মেমরি আছে যাচ্ছে আপনি সময় বণ্টন করছেন যে প্রোগ্রাম সময়কাল. তাই মূলত, আপনি malloc যখন, কি আপনি মেমরি বণ্টন করা হয় করছেন আপনি যার মানে রানটাইম, যে মুহূর্তে সঠিক সিদ্ধান্ত যে আপনি যে মেমরি থাকতে হবে. আপনি এটি বণ্টন করছেন সুতরাং যখন যে. যে জানার জন্য? সুতরাং স্ট্যাকের ভেরিয়েবল আছে, মনে রাখবেন, যে কম্পাইল সময় উপর নির্মিত হয়. এবং তারপর গাদা ভেরিয়েবল আছে হিসাবে আপনি যেতে তৈরি করা হয় যে উদাহরণ জন্য malloc সঙ্গে. শ্রোতা: [শ্রবণাতীত]? LUCAS: সুতরাং GetString হয় malloc কল যাচ্ছে. আমাকে যদি malloc সম্পর্কে কথা বলা যাক, এবং আমি GetString ব্যাখ্যা করব. সুতরাং malloc একই জিনিস মেমরি বরাদ্দ হিসাবে. সুতরাং এটি বরাদ্দ করা যাচ্ছে গাদা মেমরি. এবং এটি একটি পয়েন্টার ফিরে যাচ্ছে যেখানে যে মেমরি বরাদ্দ করা হয়. তাই আপনি যদি do-- যখন এখানে উদাহরণস্বরূপ জন্য এন তারকা পয়েন্টার. এবং তারপর পয়েন্টার malloc সমান ইঞ্চি বার 10 আকার. আমি একটি পয়েন্টার তৈরি করছি. এবং তারপর আমি যে পয়েন্টার বরাদ্দ করছি পয়েন্টার যে malloc মান আমাকে প্রদান করা হয়. তাই আমি জিজ্ঞাসা করছি না malloc আপনি বরাদ্দ করতে পারেন 10 পূর্ণসংখ্যার জন্য স্থান. যে এটা বলার অপেক্ষা রাখে না কি. এবং malloc আমাকে ফেরত দেয় একটি যে জায়গায় পয়েন্টার. জানার জন্য? ঠিক আছে. আমি এবং GetString, মূলত একটি করছে আপনি বরাদ্দ করতে পারেন তাই malloc কল রানটাইম সময় মেমরি. সর্বদা নাল জন্য চেক মনে malloc NULL ফিরে যাচ্ছে, কারণ এটি মেমরি বরাদ্দ করতে পারবেন না. আপনি একটি হাস্যকর জন্য অনুরোধ বলে মেমরির পরিমাণ. আপনার কম্পিউটার হতে যাচ্ছে না অনেক যে বরাদ্দ করতে সক্ষম. সুতরাং malloc ঠিক যাচ্ছে নাল ফিরে. তাই সবসময় চেক করতে মনে রাখবেন আপনি malloc থেকে পেয়েছেন পয়েন্টার নাল বা না যদি এটা হয়, আপনি হতে পারে, কারণ একটি পয়েন্টার dereferencing করা এবং পাশ ফল্ট ঘটাচ্ছে. এবং পরিশেষে, ভুলবেন না আপনার মেমরি মুক্ত. Malloc গাদা মেমরি তৈরি করা হয়. এবং আপনি মেমরি মুক্ত আছে প্রোগ্রাম শেষ করার আগে. ঠিক আছে, যে আমার জন্য সব. দুঃখিত, রব. ধন্যবাদ. [সাধুবাদ] LUCAS: কোন শেষ প্রশ্ন রব আসে আগে? কোন? হ্যাঁ? শ্রোতা: আমি দেখতে পাইনি এই এক অনলাইন. আপনি এখনো আপলোড করা আছে? LUCAS: আমি ডেভ মনে হয় শীঘ্রই এটি আপলোড. ডেভ: এটা পোস্ট করা হবে. LUCAS: এটা অনলাইন হতে হবে. শ্রোতা: এটা আপ. LUCAS: এটা কি? ঠিক আছে. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? LUCAS: হ্যাঁ, আপনি মুক্ত করতে হবে সব গাদা করা হয় যে মেমরি. শ্রোতা: [শ্রবণাতীত]? LUCAS: হ্যাঁ. আপনি একটি সংস্কৃতি malloc হয় আছে কোন সময়, আপনি বিনামূল্যে একটি সংস্কৃতি আছে আপনি পরে যে পরিবর্তনশীল ব্যবহার বন্ধ. সুতরাং malloc এবং বিনামূল্যে সবসময় একসাথে. তাদের সেরা বন্ধুদের. হ্যাঁ. রব? Rob: আমি দ্রুত যেতে হবে. এবং এছাড়াও ভিডিও আপ করা হবে. আমি মাইক আছে. ঠিক আছে, তাই সপ্তাহে পাঁচ জিনিস. আমরা প্রথম জিনিস স্ট্যাকের. সুতরাং শুধুমাত্র এক স্ট্যাকের আছে মনে রাখবেন, যে সক্রিয় ফাংশন কল প্রতি ফ্রেম. আমরা একটি দ্বিতীয় মধ্যে দেখতে পাবেন. এবং এছাড়াও আসলে কি যায় মনে প্রতিটি স্ট্যাকের ফ্রেম হতে যাচ্ছে আমাদের কর্ম স্থানীয় ভেরিয়েবল, মধ্যে গৃহীত হয় পাল্টা যুক্তি হল যে আমাদের একটি দম্পতি সঙ্গে বরাবর ফাংশন, অন্যান্য জিনিষ আপনি সত্যিই না সম্পর্কে চিন্তা করতে হবে. তাই এখানে যেখানে একটি উদাহরণ প্রোগ্রাম, নোটিশ, প্রধান ফেরত printfing হয় foo বিন্যাস 4 মান. foo বিন্যাস ঠিক ফিরে যাচ্ছে বার 4 কমা 6 মান. এবং বার কিছু স্থানীয় সেট যাচ্ছে 4 বার 6 সমান পরিবর্তনশীল n. এবং তারপর ফিরে. সুতরাং এর সারা স্ট্যাক তাকান এই প্রোগ্রাম প্রকৃত পুনরাবৃত্তির. সুতরাং আমাদের স্ট্যাকের নীচে আছে. স্ট্যাকের বৃদ্ধি আপ রাখুন. আমাদের স্ট্যাকের নীচে, তাই আমরা প্রধান জন্য একটি স্ট্যাক ফ্রেম আছে. যখন প্রোগ্রাম আরম্ভ, প্রধান সবসময় হতে যাচ্ছে আমাদের স্ট্যাকের নীচে. এবং এর ভিতরে কি আমাদের প্রধান জন্য ফ্রেম গাদা? তাই কোন স্থানীয় আছে যদিও প্রধান ভেরিয়েবল আমি আগে বলেন, মত আমরা argc এবং RGV স্থান গ্রহণ করেছেন প্রধান স্ট্যাকের ফ্রেম ভিতরে. এখন যাচ্ছে তাই প্রধান ফাংশন foo বিন্যাস কল. এবং যে foo বিন্যাস যাচ্ছে মানে নিজস্ব স্ট্যাকের ফ্রেম পেতে. তাই এখন আমরা এর ভিতরে করছি ফাংশন foo বিন্যাস. এবং কি যেতে প্রয়োজন foo বিন্যাস এর সময় স্ট্যাক ফ্রেম? ওয়েল, foo বিন্যাস একটি যুক্তি এন হয়েছে. যে যেহেতু এন 4 সমান কি প্রধান foo বিন্যাস এর যুক্তি হিসাবে ক্ষণস্থায়ী হয়. তাই এখন foo বিন্যাস বার কল করতে যাচ্ছে. কি বার ভিতরে আছে যাচ্ছে তার 'স্ট্যাক ফ্রেম? এটি ছয় সমান 4 Y x সমান আছে. যে আমরা আছে চলুন যে সব না বার কারণ স্ট্যাক ফ্রেম একটি স্থানীয় পরিবর্তনশীল n আছে. এবং n আমরা 24 সমান সেট করতে যাচ্ছেন. তাই এখন বার এন ফিরে যাচ্ছে. তাই বার 24 ফিরে স্ট্যাক ফ্রেম foo বিন্যাস. এবং বার যে এখন, ফিরে কারণ আমরা স্ট্যাক ফ্রেম পপিং করছি মানে স্ট্যাকের বন্ধ বারের জন্য. বার হয়েছে যাতে সব স্মৃতি ব্যবহার করে স্ট্যাকের বন্ধ হয়. এখন, foo বিন্যাস এছাড়াও যাচ্ছে প্রধান 24 ফিরে. তাই এখন যে foo বিন্যাস, মেমরি ফিরে যে foo বিন্যাস তার 'ব্যবহার করা হয় স্ট্যাক ফ্রেম চলে গেছে. এবং এখন, প্রধান printf কল করতে যাচ্ছে. তাই printf শুধু আরেকটি ফাংশন. আমরা printf কল, এটি হতে যাচ্ছে printf, অন্য স্ট্যাক ফ্রেম ফাংশন কল. আমরা কি printf, ক্ষণস্থায়ী হয়? যে যেতে যাচ্ছে কি তার স্ট্যাক ফ্রেম উপর. অন্ততপক্ষে, আমরা পার করছি যে শতাংশ আমি এন ব্যাকস্ল্যাশ এবং যুক্তি 24. এটি স্ট্যাক ফ্রেম এর মধ্যে এটি আরো থাকতে পারে printf, কিছু ব্যবহার করা হবে যদি স্থানীয় ভেরিয়েবল. আমরা জানি না. কিন্তু সব যে printf এর মধ্যে যায় ফ্রেম গাদা. এটা printf, চালানো যাচ্ছে. তারপর printf, এর কাজ. এটা ফিরে আসতে হবে. অবশেষে, প্রধান করা হয়. প্রধান ফিরে আসতে হবে. এবং তারপর আমাদের প্রোগ্রাম করা হয়. হ্যাঁ? শ্রোতা: আপনি দেখতে পান [শ্রবণাতীত] আর্গুমেন্ট [শ্রবণাতীত] পরামিতি? Rob: তাই একটি সূক্ষ্ম পার্থক্য আছে আর্গুমেন্ট এবং প্যারামিটার মধ্যে. এবং সত্যিই, সাধারণ কথা, মানুষ ঝোঁক সব সময় তাদের মিশ্রিত করা. কিন্তু পরামিতি প্রথাগত কিছু নাম. সুতরাং argc এবং argv হয় প্রধান পরামিতি. আর্গুমেন্ট কি আসলে আপনি যারা পরামিতি হিসেবে পাস. তাই সেখানে আমি 4 foo বিন্যাস, 4 যখন কল আমি পার করছি যুক্তি. এবং এর ভিতরে পরামিতি এন, foo বিন্যাস, মান 4 লাগে 4 থেকে যুক্তি ছিল. শ্রোতা: [শ্রবণাতীত]? Rob: এন বার একটি স্থানীয় পরিবর্তনশীল. এন, এখনও foo বিন্যাস স্থানীয় কিন্তু এটা foo বিন্যাস থেকে একটি প্যারামিটার আছে. এটি একটি স্থানীয় পরিবর্তনশীল নয়. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: foo বিন্যাস ঠিক আহ্বান করা হয় বার এবং যাই হোক না কেন বার আয় ফিরে. শ্রোতা: [শ্রবণাতীত]? Rob: হ্যাঁ, ঠিক একাধিক দেখতে ফ্রেম গাদা. হ্যাঁ? শ্রোতা: কেন foo বিন্যাস বলা হয় printf, আগে? Rob: কেন foo বিন্যাস printf, আগে বলা হত? আমি হতে পারে সুতরাং, পরিবর্তে, কিছু কাজ int মত x 4 foo বিন্যাস সমান এবং তারপর এক্স মুদ্রিত. কিন্তু পরিবর্তে, ফাংশন সংযুক্ত printf, যুক্তি মধ্যে কল. কিন্তু লক্ষ্য করা যে আমরা আসলে না করতে পারেন আমরা যতক্ষণ না printf কল চালানো 4 foo বিন্যাস জিনিসটা কি. সুতরাং আমরা এই মূল্যায়নের চলুন. এবং যে কাজ শুধুমাত্র একবার যাচ্ছে ফিরে আসা এবং এই মূল্যায়নের. হ্যাঁ? শ্রোতা: উভয় দণ্ড থেকে [শ্রবণাতীত] মান, কেন আমরা [শ্রবণাতীত] আছে না? Rob: তারা সম্পূর্ণই কোন int হতে হবে. যে উপর ধরা হয় নি একাধিক পাস. সুতরাং এটা কোন int বার এবং কোন int হতে হবে যারা উভয় থেকে foo বিন্যাস পূর্ণসংখ্যার ফিরে হয়. তারা যাচ্ছেন না যদি অকার্যকর শুধুমাত্র প্রকৃত মান প্রত্যাবর্তন. হ্যাঁ? শ্রোতা: আপনি একটি লাইন ছিল উপরে রিটার্ন, [শ্রবণাতীত]? Rob: ফিরে উপরে একটি লাইন? শ্রোতা: হ্যাঁ. ভালো লেগেছে আপনি printf এবং [শ্রবণাতীত] না হলে, এটি দুইবার প্রিন্ট হবে? Rob: foo বিন্যাস ভিতরে তাই? আমরা অধিকার এখানে একটি printf ছিল? শ্রোতা: হ্যাঁ. Rob: তাই আপনি যদি আমরা একটি printf অধিকার ছিল এখানে, এটি একবার প্রিন্ট হবে. আমরা একবার ডান foo বিন্যাস আহ্বান করা হয় যেহেতু এখানে তারপর, আমরা printf আঘাত করব. তারপর আমরা বার কল করব. এবং তারপর foo বিন্যাস ফিরে আসতে হবে. এবং যে এটি. আমরা শুধুমাত্র কখনও সম্মুখীন একবার printf,. হ্যাঁ? শ্রোতা: [শ্রবণাতীত] আমরা প্রথম কারণ printf, foo বিন্যাস আহ্বান printf, কলিং এবং তারপর আমরা পার করছি আর্গুমেন্ট. Rob: তত্ত্ব তাই নয়, printf, foo বিন্যাস আহ্বান? তাই কোন. গ যাচ্ছে যে শুধু অর্ডার আমরা করতে পারেন আগে, এই জিনিস হয় চালানো , আর্গুমেন্ট সব একটি ফাংশন কল ফাংশন আছে সম্পূর্ণ মূল্যায়ন করা. তাই এই সম্পূর্ণভাবে মূল্যায়ন করা হয়? হ্যাঁ, এটা ঠিক একটি পংক্তি. এটি শুধু একটি মান. তারপর আমরা সম্পূর্ণ করতে হবে এই নির্ণয় করা. এখন এই সব, একবার সম্পন্ন হলে তার আর্গুমেন্ট মূল্যায়ন করা হয়. এবং এখন আমরা করতে পারেন printf কল. হ্যাঁ? শ্রোতা: এক প্রশ্ন. আপনি একটি অকার্যকর ফাংশন আছে, অবশ্যই আপনি ফিরে সেমিকোলন আছে? Rob: আপনি একটি ফিরতি সেমিকোলন না আপনি একটি অকার্যকর ফাংশন আছে. ঠিক আছে. তাই এখন কিছু গাদা কাপড়. সুতরাং গাদা আমরা মোকাবেলা করতে যাচ্ছেন কিভাবে ডাইনামিক মেমরি পরিচালনার সঙ্গে. এবং এই সরাসরি সাথে বৈপরীত্য আমরা স্বয়ংক্রিয় কল করবে যা স্ট্যাকের মেমরি ব্যবস্থাপনা. স্ট্যাক সুতরাং, আপনি সত্যিই আছে না কিভাবে স্থানীয় ভেরিয়েবল সঙ্গে মোকাবিলা করার জন্য push করা এবং সমস্ত বন্ধ popped হচ্ছে এই স্ট্যাকের ফ্রেম এবং যে সব উপাদান. আপনি এটি সম্পর্কে চিন্তা করতে হবে না. এটা স্বয়ংক্রিয়. সুতরাং গাদা ম্যানুয়াল হয়. এবং [শ্রবণাতীত] এই ফাংশন থেকে আসে malloc এবং বিনামূল্যে. তাই এখানে অন্য প্রোগ্রাম. আমরা করছেন mallocing হয় একটি পূর্ণসংখ্যা. আমরা তারা x এর মধ্যে এটি সংরক্ষণ করছেন. অবশ্যই, আমরা চেক আছে এক্স নাল কিনা দেখতে. তারপর আমরা ঠিক কি সেট চলুন এক্স 50 প্রতি নির্দেশ করা হয়. , প্রতি নির্দেশ করা হয় কি এক্স মুদ্রণ করুন মুদ্রণ এক্স, এবং তারপর বিনামূল্যে এক্স. সুতরাং কিভাবে আসলে এই চেহারা হবে আমরা আমাদের স্ট্যাকের এবং গাদা তাকান? তাই আমরা আবার শুরু করব. আগে আমাদের স্ট্যাকের নীচে. তোমাকে সরাসরি গাদা মনে রাখবেন যে, স্ট্যাকের বিরোধিতা করে? সুতরাং আমরা আছে চলুন আপ আছে আমাদের গাদা উপরে. আমাদের স্ট্যাকের নীচে, তাই আমরা প্রধান জন্য আমাদের স্ট্যাকের ফ্রেম. এটা argc, argv জন্য স্থান আছে, এবং আমরা এখন একটি স্থানীয় পরিবর্তনশীল x, যা কোন int তারকা. তাই আমরা বারবার চলুন এই প্রোগ্রামের মাধ্যমে. আমরা প্রথম জিনিস যদি malloc একটি কল. তাই আমরা malloc একটি কল করছেন. Malloc একটি ফাংশন. এটি একটি স্ট্যাকের ফ্রেম পাওয়া যাচ্ছে. আমরা কি malloc ক্ষণস্থায়ী হয়? যে ভিতরে যেতে যাচ্ছে স্ট্যাক ফ্রেম. আমরা 4, যা এন, আকার পার করছি. সুতরাং যে malloc প্রেরণ করা হয়. যদি malloc কী কাজ করে? এটা আমাদের গাদা কিছু স্থান grabs. তাই আমরা গাদা যেতে চলুন. এবং আমরা দখল করতে যাচ্ছেন গাদা থেকে 4 বাইট. তাই আসুন শুধু যে দিন একটি অবাধ ঠিকানা. 0x123 শুধু যে একটি জাহির গাদা হয় যে ঠিকানা. সুতরাং যে এর ভিতরে আসলে কি ঠিকানা ox123 এ মেমরি অঞ্চলের? বর্জ্য. সুতরাং আমরা এটা কিছু সংরক্ষণ করা হয়নি. তাই যতটা আমরা এটি জানি কোন কিছুই হতে পারে. আপনি এটা শূন্য অনুমান করা উচিত নয়. এটা শূন্য সম্ভবত. তাই এখন যদি malloc আয়. এবং আমরা যখন malloc আয় কি করবেন? আমরা এটা ফেরৎ কি সেট. আমরা x সমান সেট কি এটি ফিরে আসছে. তাই এটি ফিরে? যে যেহেতু এটি 0x123 এর ফিরে মেমরি ব্লক ঠিকানা যে শুধু গাদা বরাদ্দ. তাই 0x123 এক্স এখন নির্ধারণ করা যাচ্ছে ফিরে 0x123 সমান, যা pictorially, আমরা প্রায়ই একটি প্রকৃত থাকার x হিসাবে আঁকা যে ব্লক প্রতি নির্দেশ তীর. কিন্তু x ঠিক যে ঠিকানা সংরক্ষণ করা হয়. তাই এখন আমরা x নাল যদি চেক আছে. এটা নাল না. আমরা যে malloc সফল জাহির. তাই এখন তারা 50 x সমান. তাই তারা এটা মানে মনে যে ঠিকানায় যান. তাই 0x123 আমরা চলুন যে ঠিকানায় যান. সুতরাং যে সেখানে আমাদের দেখাবে. আমরা যে ঠিকানায় কি করছেন? আমরা 50 সংরক্ষণ করছেন. তাই এই লাইন পরে, যে কি কিছু মত চেহারা যাচ্ছে. সুতরাং এখন এটা আর সেখানে আবর্জনা আপ. এখন আমরা 50 যে জানি যে নির্দিষ্ট ঠিকানা, কারণ আমরা যে এটি সেট. ঠিক আছে? তাই এখন আমরা চ মুদ্রণ চলুন. তাই আমরা প্রথমে তারা এক্স মুদ্রণ চলুন. তাই তারা এক্স কি? আবার, তারা এক্স যেতে মানে x এর প্রতি নির্দেশ করা হয় যে জিনিস. তাই x যে 0x123 যান সংরক্ষণ করা হয়. আমরা 50 পেতে. সুতরাং যে চ মুদ্রণ. এবং যে এটি 50 মুদ্রণ যাচ্ছে না. এবং তারপর ফেরৎ. এবং তারপর আমরা দ্বিতীয় printf আছে. আমরা এখন শতাংশ পি করছি. যদি আপনি এটি দেখা না করে থাকেন, যে শুধু আপনি একটি পয়েন্টার মুদ্রণ কিভাবে. সুতরাং আমরা শতাংশ শতাংশ আমি আছে চ, এবং ইতিমধ্যে যারা সব. তাই শতাংশ পি, একটি পয়েন্টার মুদ্রণ. তাই x এর একটি পয়েন্টার. তাই আমরা নিজেই এক্স মুদ্রণ যাচ্ছে করছি, আমরা ভিতরে কি আসলে মুদ্রণ করছি সুতরাং প্রথম 0x123 যা এক্স, মুদ্রণ চ 50 মুদ্রণ যাচ্ছে. দ্বিতীয় মুদ্রণ চ যাচ্ছে হ্যাঁ 0x123 মুদ্রণ? শ্রোতা: আপনি শতাংশ ব্যবহার করবেন না x এর একটি পয়েন্টার মুদ্রণ? Rob: তাই আপনি শতাংশ ব্যবহার করবেন x এর একটি পয়েন্টার মুদ্রণ? সুতরাং, আপনি যা করতে পারেন কিন্তু শতাংশ x ঠিক হয় সাধারণত, মত আপনি কিছু আছে পূর্ণসংখ্যা এবং আপনি প্রিন্ট করতে চান এটি একটি হেক্সাডেসিমাল হিসাবে. আপনি যে এটা কিভাবে ঠিক. যেহেতু, শতাংশ ঘ হবে দশমিক হিসাবে মুদ্রণ. আমরা শতাংশ পেতে হয় যে এর ঘ. আমি শুধু পূর্ণসংখ্যা. শতাংশ পি বিশেষভাবে হয় পয়েন্টার জন্য. তাই x এর একটি পয়েন্টার. আমরা শতাংশ পি ব্যবহার করতে চান. কিন্তু শতাংশ এক্স কাজ করতে পারে. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: হ্যাঁ. এই জন্য অন্তত তাই call-- আমি এখানে অন্তর্ভুক্ত করা হয়নি. কিন্তু এই দুটি আর্গুমেন্ট অগত্যা হয় এই স্ট্যাকের ফ্রেম ভিতরে কোনো স্থানীয় ভেরিয়েবল সহ printf ব্যবহার করে করা হবে. এবং তারপর পরবর্তী কল এখন printf থেকে printf, এর ভিতরে স্ট্যাকের ফ্রেম, শতাংশ পি ব্যাকস্ল্যাশ এন এবং যাই হোক না কেন x এর মান 0x123, যা হয়. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: এটা কিছু প্রিন্ট হবে যে ভালো দেখায়. শ্রোতা: [শ্রবণাতীত]. Rob: তাই এটি অঙ্ক আকারে ছাপে. এটি একটি ঠিকানা মত দেখায়. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: কেন কি হল? শ্রোতা: [শ্রবণাতীত]? Rob: কেন এই পয়েন্টার 4 বাইট? তাই আভা আছে এই সামনে 0 এর. তাই এটা সত্যিই 0x0000000123 না. একটি 64 বিট সিস্টেমে, হতে পারে আরো শূন্য আভা. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]. Rob: তাই প্রথম printf, print-- যাচ্ছে শ্রোতা: [শ্রবণাতীত]. Rob: হ্যাঁ, এটা মুদ্রণ যাচ্ছে কি এক্স প্রতি নির্দেশ করা হয়. তারা এই কি বলছেন বিষয় প্রতি নির্দেশ. এটা নিন. তাই এটি প্রতি নির্দেশ করা হয় কি? 50. এটা নিন. যে আমরা মুদ্রণ চলুন কি. পরের এক, যেহেতু, আমরা শুধু নিজেই এক্স মুদ্রণ. চ ভিতরে কি? 0x123. ঠিক আছে. এবং তারপর, পরিশেষে, আমরা বিনামূল্যে আছে. আমরা কি মুক্ত করতে ক্ষণস্থায়ী হয়? আমরা x পার করছি. আমি আসলে প্রদর্শিত যে সময় এটি স্ট্যাক ফ্রেম. তাই আমরা মান পার করছি 0x123 মুক্ত করতে. তাই এখন জানে বিনামূল্যে, সমস্ত অধিকার, আমি গাদা আপ যেতে হবে এবং যে মেমরি বিনামূল্যে. এটি আর ব্যবহার কি ঠিকানা 0x123 হয়. তাই বিনামূল্যে প্রকাশ করতে যাচ্ছে গাদা থেকে যে. এখন আমাদের গাদা আবার খালি. আমরা কোন মেমরি তথ্য ফাঁসের আছে. এখন বিনামূল্যে ফিরে আসতে হবে. যে x এখনও 0x123 বিজ্ঞপ্তি. কিন্তু যে এখন বৈধ মেমরি হয় না. আমরা আর ডি-রেফারেন্স এক্স উচিত. হ্যাঁ? শ্রোতা: 0 অপ্রয়োজনীয় ফিরে কি? Rob: 0 অপ্রয়োজনীয় returen হয়? হ্যাঁ. আমরা শুধু আছে, কারণ যে করা আমরা বায়ু জন্য একটি ফিরতি আছে. সুতরাং এটা হাঁ, দেয়, মত রিটার্ন 0 অন্তর্ভুক্ত. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: তাই বিনামূল্যে এক্স পর কি ঘটবে যদি আমরা পয়েন্টার dereference চেষ্টা? এটা কিছুই গোলমাল যে সম্ভব. আমরা এখনও 50 পাবেন যে এটা সম্ভব. এটা যে মেমরি যে, এছাড়াও, সম্ভব এখন অন্য কিছু ব্যবহার করা হচ্ছে. সুতরাং এটা অনির্ধারিত আচরণ. এবং অনির্ধারিত কিছু মানে ঘটতে পারে. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: না, তাই আপনি নির্ধারণ অন্য কিছু এক্স. তাই এখানে ডান যদি আমরা x সমান বলেন, কিছু malloc else-- যদি malloc আকার ইভেন্ট তারপর যে মূল ব্লক মেমরি মুক্ত করা হয় না. এবং আমরা আনুষ্ঠানিকভাবে এটি হারিয়ে গেছে. যে একটি মেমরি লিক. আমরা সব রেফারেন্স হারিয়ে ফেলেছি মেমরি যে ব্লক. তাই আমরা কখনও এটি মুক্ত করতে পারেন কোন উপায় আছে. ঠিক আছে, তাই তারপর কাজ 0 মানে ফিরে. সমস্ত অধিকার, তাই স্ট্যাক ওভারফ্লো. এখানে ধারণা কি? তাই মনে রাখবেন, গাদা নিচে যাচ্ছে. স্ট্যাক আপ যাচ্ছে. তাই এই বক্তৃতা থেকে যেমন ছিল, আমি যেখানে প্রধান ঠিক হবে, মনে যাচ্ছে যা এই ফাংশন foo বিন্যাস, কল উপর যাও recursively নিজেই কল করতে এবং আবার. তাই ফ্রেম যাচ্ছে গাদা ঠিক একই কাজ করে. তাই আমরা প্রধান সঙ্গে শুরু করতে যাচ্ছেন নীচে স্ট্যাক ফ্রেম. তারপর প্রধান, foo বিন্যাস কল করতে যাচ্ছে, যা একটি স্ট্যাক ফ্রেম পাওয়া যাচ্ছে. তারপর foo বিন্যাস foo বিন্যাস কল করতে যাচ্ছে আবার, যা পাওয়া যাচ্ছে অন্য স্ট্যাক ফ্রেম. এবং তারপর আবার, এবং আবার, এবং আবার, এবং আবার পর্যন্ত, শেষ পর্যন্ত, আমরা রান গাদা মধ্যে. তাই এই আমরা পেতে হয় একটি স্ট্যাক ওভারফ্লো. এবং এই সময়ে, আপনি seg ফল্ট. অথবা আপনি সত্যিই seg আগে দোষ চাই এই বিন্দু কিন্তু হাঁ. শ্রোতা: কোর ডাম্প হয় seg দোষ হিসাবে একই? Rob: তাই আপনি সেগমেন্টেশন দেখতে পাবেন দোষ কোর ডাম্প. আপনি একটি কোর ডাম্প যখন পেতে আপনি seg ফল্ট. এবং এটি সমস্ত একটি ডাম্প মত আপনার বর্তমান মেমরির বিষয়বস্তু, তাই আপনি চেষ্টা করুন এবং চিহ্নিত করতে পারে কেন আপনি faulted seg. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: তাই একটি সেগমেন্টেশন ফল্ট মানে একটি স্ট্যাক ওভারফ্লো আছে. তাই অগত্যা না. একটি সেগমেন্টেশন ফল্ট আপনি যে মানে একটি উপায় স্পর্শ মেমরি আপনি করা উচিত হবে না. তাই যে ঘটছে এক উপায়, যখন আমরা স্পর্শ শুরু, ওভারফ্লো গাদা আমরা করা উচিত হবে না একটি উপায় যে মেমরি. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: একটি অসীম লুপ এর ভিতরে তাই. ভালো লেগেছে, এই একটি recursive অসীম ভালো হয় লুপ এবং তাই আমরা অন্য পেতে স্ট্যাকের প্রতিটি সময় ফ্রেমে. কিন্তু শুধু একটি নিয়মিত ভিতরে অসীম one-- যখন ভাল, এর এমনকি মুদ্রণ না f-- কিছু করতে. যাই হোক না কেন. আমরা পেয়ে যাচ্ছেন না অন্য স্ট্যাক ফ্রেম. আমরা শুধু looping, রাখা চলুন এই একক নির্দেশ করে. স্ট্যাকের ক্রমবর্ধমান হয় না. এটা প্রতিটি recursive যে সত্য কল আমাদের একটি স্ট্যাক ফ্রেম প্রদান করা হয়. আমরা একটি স্ট্যাক ওভারফ্লো পেতে কেন. হ্যাঁ? শ্রোতা: তাই আপনি যদি আপনি পেতে বলেন, লুপ এবং তারপর [শ্রবণাতীত]? Rob: যখন লুপ এর ভিতরে তাই একটি printf ছিল, আপনি কি এখনও হবে seg না দোষ. আমি শুধু কিছু গুলান চান না. এটি লুপ হবে. আপনি একটি স্ট্যাকের পেতে চাই printf, জন্য ফ্রেমে. তারপর printf, ফিরে আসবে. তারপর আপনি আবার লুপ চাই. আপনি একটি স্ট্যাকের পেতে চাই printf, জন্য ফ্রেমে. এটা ফিরে আসবে. একা স্ট্যাক ফ্রেম. তাই আপনি যদি এই অসীম না পেয়ে থাকেন স্ট্যাকের ফ্রেম আপ পাইল. শ্রোতা: [শ্রবণাতীত]? Rob: হ্যাঁ. তাই এই স্ট্যাক ওভারফ্লো ঘটে এই না কারণ foo বিন্যাস কল ফিরে হয়. আমরা ফিরে তারপর, আমরা তাই স্ট্যাকের ফ্রেম হারানো শুরু. এবং তারপর আমরা ওভারফ্লো গাদা না. আপনি একটি বেস ক্ষেত্রে প্রয়োজন কেন এবং যে আপনার ব্যক্তিগত ফাংশন জন্য. হ্যাঁ? শ্রোতা: সম্ভাব্য আকার এবং গাদা জন্য একই জন্য গাদা সব প্রোগ্রাম? Rob: প্রায়. হয় স্ট্যাকের সম্ভাব্য আকার এবং সব প্রোগ্রামের জন্য একই গাদা? প্রায়. কিছু রেন্ডোমাইজেশন নেই যেখানে স্ট্যাকের শুরু হয় এবং যেখানে গাদা শুরু হয়. আপনি একটি সম্পূর্ণ অনেক আছে এরকম গ্লোবাল ভেরিয়েবল এবং কিছু, আপনি হতে পারে কিছু স্থান থেকে দূরে আপনার গাদা জন্য. একটি 64 বিট সিস্টেম, আপনি ফলত অসীম মেমরি আছে. ঠিক তাই অনেক আছে. 32 বিট এবং 64 বিট, যে এর মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য. আপনি আরো একটি সম্পূর্ণ অনেক পেতে যাচ্ছেন একটি 64 বিট, এবং গাদা গাদা স্থান সিস্টেম ঠিক আরো আছে কারণ তারা ব্যবহার করতে পারেন ঠিকানা. কিন্তু একটি পৃথক সিস্টেমে, এটা করবে না স্ট্যাকের প্রায় একই পরিমাণ হতে এবং গাদা স্থান. ঠিক আছে. তাই শেষ জিনিস সংকলন. তাই আপনি যদি এই প্রক্রিয়া জানা উচিত. চার বড় ধাপ আছে. সুতরাং প্রথম এক উচিত মনে রাখা সহজ হবে. প্রাক প্রক্রিয়াকরণ. এতে পূর্ব উপসর্গ আছে. সুতরাং এটা অন্য সব কিছুর আগে আসে. মনে রাখা জিনিস হ্যাশ হয়. সুতরাং হ্যাশ সংজ্ঞায়িত এবং হ্যাশ রয়েছে যারা সব. যারা সব প্রাক প্রসেসর আছে নির্দেশ. এই জিনিস যে আছে প্রাক প্রসেসর যত্ন নেয়. সুতরাং একটি প্রাক প্রসেসর কি করবেন না? এটা সত্যিই একটি মূক জিনিস. এটি করতে সক্ষম এই সব সব কপি, এবং কাটা, এবং পেস্ট অপারেশন. সুতরাং হ্যাশ মান i0 ডট জ রয়েছে. করছেন কি? এটা মান i0 ডট জ দখল এর ফাইল এবং উপরের মধ্যে পেস্ট যেখানেই এটি হ্যাশ অন্তর্ভুক্ত বলেছেন মান i0 ডট জ. এবং কোনো হ্যাশ আমরা করেছি যে নির্ধারণ দেখা যায়, কি করছে? তার হ্যাশ মান কপি এবং পেস্ট সংজ্ঞায়িত করা হয় সংজ্ঞায়িত যে আপনি যেখানেই থাকুন না মান ব্যবহার করা হয়. সুতরাং preprocessor সত্যিই আছে সহজ টেক্সট ভিত্তিক অপারেশন. এটা স্মার্ট কিছুই না. তাই অন্য সব কিছুর হয় আরো জটিল. তাই এখন যে preprocessor এবং হয় কাজ, আমরা আসলে সঙ্কলন. তাই কম্পাইল মানে কি? আমরা এখন গ কোড থেকে যাচ্ছেন সমাবেশ কোড. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: হ্যাঁ, আমরা যে ধরা. তাই কম্পাইল. আমরা সমাবেশ থেকে সি চলুন. তাই এই একটি প্রকৃত ভাষা পরিবর্তন. নিজেই কম্পাইল থেকে যাচ্ছে মানে একটি উচ্চ স্তরের ভাষা একটি নিম্ন স্তরের ভাষা. এবং সি একটি উচ্চ পর্যায়ের ভাষা সমাবেশ তুলনায়. সমাবেশ কি? যে তার নির্দেশাবলী, সুন্দর অনেক, আপনার CPU 'র জন্য তৈরি. কিন্তু আপনার কম্পিউটার এখনও আছে সমাবেশ বুঝতে না. এটা শুধুমাত্র বেশী এবং zeros বুঝতে পারে. তাই পরবর্তী পদক্ষেপ, একত্রিতকরনের হয়, যা এই নির্দেশাবলী থেকে আমাদের যে এটি আপনার CPU বোঝে এবং আসলে তাদের অনুবাদ বেশী এবং zeros. বাইনারি সমাবেশ সি তাই. কিন্তু আমি এখনো একটি এক্সিকিউটেবল না. সুতরাং CS50 লাইব্রেরি মনে করি. আমরা একটি বাইনারি সঙ্গে আপনার দেওয়া GetString, যা এই CS50 লাইব্রেরি, এবং GetInt এবং যে সব. কিন্তু CS50 লাইব্রেরি এবং নিজেই এর এক্সিকিউটেবল হয় না. এটি একটি প্রধান ফাংশন আছে না. এটা বাইনারি শুধু একটি গুচ্ছ আপনি ব্যবহার করতে পারেন. তাই লিঙ্ক আমরা একসাথে সব আনা হয় এই বিভিন্ন বাইনারি ফাইল একটি প্রকৃত এক্সিকিউটেবল মধ্যে. আপনি টাইপ করতে পারেন যে বিন্দু একটি বিন্দু আউট কাট. তাই এই ফাইল মত যে আপনি লিখেছেন - যাই হোক না কেন আপনার প্রোগ্রাম হচ্ছে ÑÑ Ceaser বিন্দু গ. কিন্তু এখন এটা কম্পাইল করা হয়েছে বাইনারি নিচে. তাই Ceaser ডট ণ. এবং এই আমাদের CS50 বাইনারি লাইব্রেরি হয়. এবং তারা মিলিত হচ্ছে একটি এক্সিকিউটেবল মধ্যে. হ্যাঁ? শ্রোতা: [শ্রবণাতীত]? Rob: তাই প্রথম অন্তর্ভুক্ত করা, মনে রাখবেন, অন্তর্ভুক্ত আসলে একটি হয় হ্যাশ প্রাক প্রসেসর পদক্ষেপ. কিন্তু যে পৃথক. আপনি যদি কোন ফাংশন ব্যবহার করছি না যে তারপর আপনার ফাইল এর বাইরে আছে, না, আপনি কিছু লিঙ্ক করার প্রয়োজন হবে না আপনি সবকিছু আছে. যে বলেন, printf মধ্যে সংযুক্ত করা হচ্ছে. আপনি কি কখনও printf ব্যবহার, যে কিছু যে লিঙ্ক করা প্রয়োজন আপনি যে লিখতে না, কারণ. এবং, আসলে printf, স্বয়ংক্রিয়ভাবে সংযুক্ত. আপনি কি জানেন কিভাবে কমান্ড লাইন বা যখন আপনি কি এটা আছে, দেখতে না টাইপ লিঙ্ক আছে যা ড্যাশ ঠ CS50, CS50 লাইব্রেরি? যে printf, এবং কাপড়, যাচ্ছে স্বয়ংক্রিয়ভাবে সংযুক্ত করা হবে. কিছু অন্য কোন প্রশ্ন? শ্রোতা: [শ্রবণাতীত]? Rob: লিঙ্ক? আমরা একটি আভা আছে বিভিন্ন বাইনারি ফাইল. এই ক্যানোনিকাল উদাহরণ আমরা ব্যবহার করি যে CS50 লাইব্রেরি. আমরা কম্পাইল এবং আপনি দেওয়া আছে এই CS50 লাইব্রেরি বাইনারি. আপনি GetString ব্যবহার করতে চান আপনার প্রোগ্রাম. সুতরাং আপনি যান এবং GetString ব্যবহার. কিন্তু আমার জন্য বাইনারি কোড ছাড়া GetString,, আপনি আপনার কোড কম্পাইল যখন নিচে, আপনি আসলে চালাতে না পারেন আপনার প্রোগ্রাম GetString, স্ট্রিং, কারণ এখনো সম্পূর্ণ সংজ্ঞায়িত না. আপনি আমার বাইনারি লিঙ্ক যখন এটি শুধুমাত্র যে সব, এখন যে GetString, রয়েছে ঠিক আছে, আমি আসলে যা করতে পারেন GetString, চালানো হয়. আমার ফাইল সম্পূর্ণ. এবং আমি এই রান করতে পারেন. হ্যাঁ? শ্রোতা: রূপান্তর লিঙ্ক না বাইনারি এক্সিকিউটেবল? আপনি অন্যান্য, না আছে তাই, এমনকি যদি লাইব্রেরি, এটি এখনও হবে না অনুবাদ করতে প্রয়োজনীয় [শ্রবণাতীত]? Rob: তাই একটি এক্সিকিউটেবল বাইনারি এখনও. এটি শুধু একটি সম্পূর্ণ মিশ্রন এর বাইনারি গুচ্ছ. শ্রোতা: অনেক ধন্যবাদ. Rob: কোন সমস্যা নেই. অন্য কোন প্রশ্ন? অন্যথায়, আমরা সব সেট করছি. ঠিক আছে. ধন্যবাদ. [সাধুবাদ] শ্রোতা: আপনাকে ধন্যবাদ. Rob: হ্যাঁ.