JASON HIRSCHHORN: স্বাগতম, সপ্তাহ 6 সবাই,. আমি ভাল জীবিত আপনি সব দেখতে খুশি এবং ক্যুইজ 0 পরে, কারণ আমি জানি যে, একটু রুক্ষ ছিল. কিন্তু সৌভাগ্যক্রমে, আপনি সব অবিশ্বাস্যভাবে ভাল. তাই যে বিস্ময়কর. আপনি আমার বিভাগে হন, আমি সবচেয়ে দিয়েছি আপনাদের মধ্যে ইতিমধ্যে আপনার ক্যুইজ ব্যাক. আপনি একটি দম্পতি, আমি মিটিং করছি ক্লাসের পরে. এবং যদি আপনি একটি এক্সটেনশন ছাত্র এবং যদি আপনি ফিরে আপনার ব্যঙ্গ পাইনি এখনো, আপনার TF সম্ভবত এটি কাজ এবং এটি শূন্য, এবং এটি ফিরে পাবেন আপনার কাছে খুব শীঘ্রই. যারা তাই আমার এক্সটেনশন ছাত্র এই মুহূর্তে পর্যবেক্ষক - আশা বাস - আমি আপনার ক্যুইজ পাবেন খুব শীঘ্রই হিসাবে ভাল. নিম্নরূপ আজকের জন্য আমাদের বিষয়সূচি হয়. প্রথমত, আমরা কিছু পুনরালোচনা চলুন CS50 আপনার জন্য উপলব্ধ করা হয় যে সম্পদ. আমরা পরের ক্যুইজ 0 ওভার যেতে যাচ্ছে, এবং করছি আমি কোন প্রশ্ন কেহ উত্তর পাবেন বিশেষ সমস্যা সম্পর্কে আছে. এবং তারপর, আমরা ধরে যাওয়া হবে ফাইল ইনপুট / আউটপুট এবং সমস্যা 5 সেট. যারা গত দুই বিষয় নিতে হবে অধ্যায় বাল্ক আজ পর্যন্ত. আমি একটি হিসাবে প্রতি সপ্তাহে এই তালিকা পেশ করা আপনি সব করতে, কিন্তু কোর অনুস্মারক অধ্যায়, আমরা শুধুমাত্র 90 মিনিট আছে - আমরা সবকিছু আবরণ করতে পারবেন না যে আমি আপনাকে বলছি জন্য আবরণ চাই. কিন্তু আমরা জন্য সম্পদ একটি টন আছে আপনি জানতে পারেন হিসাবে আপনার উপর আঁকা মাধ্যমে উপাদান এবং কাজ আপনার সমস্যার সেট করে. আমি অনলাইনে একটি টেক্সট আছে একটি অনুস্মারক আপনি যদি পূরণ করতে আপনার জন্য সেট আপ বক্স, আমার জন্য কোন মতামত, ধনাত্মক এবং উভয় অধ্যায় সম্পর্কে, গঠনমূলক. যে URL টি সঠিক নিচে এখানে অবস্থিত. আপনার কোন আছে সুতরাং, যদি একটি মুহূর্ত গ্রহণ করুন মতামত, কিনা অধ্যায় সময়, বা পরে, বা পরে আপনি ভিডিও দেখতে অনলাইন, সম্পর্কে আপনার মতামত দিতে. আমি সত্যিই তা যেকোন এবং সমস্ত প্রশংসা করি. তাই আমি ছোট কথোপকথন জমিদারি করছি আমার অনেক সঙ্গে সপ্তাহ জুড়ে ছাত্র - আমি হাত হিসেবে ফিরে ক্যুইজ, বিষয়ে কথা অবশ্যই, আপনি করছেন কিভাবে দেখছি. আর এক থিম উপর চলে আসে এবং হয়েছে উপর বিষয়ে কথা এ - এ বিশেষ - সমস্যা সেট করে. এবং আমি যে থিম encapsulated আছে এই মুহূর্তে বোর্ডে. মূলত, একটি পার্থক্য আছে কিছু যে মধ্যে বাঁক মধ্যে সঠিকভাবে এবং কিছু কাজ যে ভাল হয়. অধিকাংশ মানুষ চমত্কার হয়েছে করছেন শুদ্ধি শর্তাবলী - সব psets নেভিগেশন 5 এর বা 4 এর. অধিকাংশ মানুষ পাচ্ছেন ঐ সময় সব. তবে, শুধুমাত্র এই কারণে আপনি কাজ করেছি কিছু অধিকার আপনি করেছি মানে এই নয় হিসাবে elegantly কিছু কাজ, বা দক্ষতার সঙ্গে, অথবা হিসাবে পরিচ্ছন্নভাবে আপনি হিসাবে এটা কাজ করে থাকতে পারে. এবং যে কি নকশা - এবং একটি ক্ষুদ্রতর ডিগ্রী, শৈলী - অক্ষ জন্য. তাই আমি আপনি সব ঠেলাঠেলি, এবং অন্যান্য টিএফএস am শুধুমাত্র না ঘুরে যাও, আপনাকে বলছি ঠেলাঠেলি হয় সঠিক, কিন্তু ঘুরিয়ে যে জিনিস ভাল কোডেড যে জিনিসের মধ্যে. Loops জন্য অপ্রয়োজনীয় করছেন না, ভেরিয়েবল যদি পুনঃগণনা না আপনি করতে হবে না. উদাহরণস্বরূপ, সেট ব্যাক সমস্যা খুঁজছেন 4, উপর ইট স্থাপন হলে পর্দা, প্রত্যেক সারি - একটি প্রতি ইটের প্রদত্ত সারি একই Y-তুল্য আছে - একই উচ্চতা সমন্বয় সাধন. Y-সমন্বয় সাধন করতে হবে না তাই অভ্যন্তর ভেতরে গণনা করা আপনি সম্ভবত যে জন্য লুপ নেস্টেড পর্দায় যারা ইট রাখা. এটি শুধুমাত্র প্রতিটি গণনা করা প্রয়োজন সময় আপনি একটি সারিতে সুইচ, অথবা একটি সারি নিচে সরানো. 10 ইষ্টকদ্বারা একটি মধ্যে রয়েছে সুতরাং যদি বলতে সারি, প্রতিটি ইট একই থাকতে পারে Y-তুল্য, এবং Y-তুল্য যে শুধু হিসাব করা যায় ঐ সব জন্য একবার. এটা 10 গণনা করা না প্রয়োজন বার, কিংবা যে হিসাব প্রয়োজন প্রকৃত মধ্যে ঘটতে ফাংশন কল - নতুন gracked ফাংশন কল. সুতরাং যে জন্য একটু বিভ্রান্ত ছিল আপনি, আরো জেনেরিক, জিনিস যে প্রতি একক সময় ঘটতে করতে হবে না আপনি করা উচিত হবে একটি জন্য লুপ দিয়ে যেতে জন্য লুপ ভিতর করা, এবং উচিত না আপনি যেতে প্রত্যেক সময় ঘটবে জন্য লুপের মাধ্যমে. আমরা দেখেছি আরেকটি ভাল ডিজাইন উদাহরণ 15 জন্য সপ্তাহ 3, আপনি রাখতে পারে শূন্য ট্র্যাক. তাই আপনি যদি, আপনি বোর্ড আরম্ভ হলে সংরক্ষণ - একটি বিশ্বব্যাপী পরিবর্তনশীল মধ্যে, সম্ভবত - x এবং শূন্য Y-তুল্য. এবং তারপর যখনই আপনি - আপনার পদক্ষেপ ফাংশন, যখনই আপনি করতে একটি সফল পদক্ষেপ, আপনি আপডেট শূন্য অবস্থান. যে কাজ করতে হচ্ছে থেকে আপনি সংরক্ষণ করতে হবে মাধ্যমে সন্ধান করতে loops জন্য নেস্টেড আপনার সরানো ফাংশন প্রতিটি সময় বোর্ড এবং শূন্য খুঁজে, বা টালি খুঁজে, এবং তারপর পরবর্তী তা কি চেক. পরিবর্তে, আপনি অবস্থান আছে শূন্য, আপনি শুধু নিচে, উপরে সন্ধান করতে পারেন এবং এটি বাম এবং ডান, খুঁজে আপনি করছিলেন টালি. তাই আমরা করছি প্রোগ্রাম শর্তাবলী লেখা, তারা পর্যাপ্ত স্থান না হন যে এই নকশা সিদ্ধান্ত কিছু সত্যিই ব্যাহত করতে যাচ্ছি আপনার প্রোগ্রাম, বা, এটা আরো ধীরে ধীরে সঞ্চালন করতে বা সম্ভবতঃ মেমরি ফুরিয়ে. কিন্তু আমরা এখনও আপনাকে বলছি ঠেলাঠেলি করছি লিখতে হিসেবে মার্জিত এবং সম্ভব দক্ষ কোড. তাই আপনি যদি জিনিষ লেখা শেষ একটি উল্লেখযোগ্যভাবে বৃহত্তর আছে সুযোগ, তারা ভালো দিয়ে লেখা হবে সঠিক হচ্ছে ছাড়াও ডিজাইন. সুতরাং আপনি আছে একটি সংখ্যা যে আনা. যে আমরা খুঁজছেন কিছু - আমরা অবিরত চলুন কিছু আপনার উপর বলছি ধাক্কা. আপনি কি কখনও সম্পর্কে কোনো প্রশ্ন থাকে, আপনার প্রোগ্রাম ডিজাইন, বিনামূল্যে হতে আমার কাছে পৌঁছান, এবং আমি খুশি করার আপনার সাথে আপনার প্রোগ্রাম ভিতর দিয়ে হেটে, এবং নকশা কিছু নির্দেশ আপনার তৈরি করা, এবং আপনি কিছু দিতে সিদ্ধান্ত কিভাবে কাজটা এমনকি ভাল নকশা সিদ্ধান্ত. সুতরাং আমরা যান চলুন ক্যুইজ 0 বিষয়ে কথা হয়. আমরা তা করতে আগে, কেহ না সম্পর্কে কোন প্রশ্ন থাকে কি আমি এ পর্যন্ত আবৃত করেছি? [খচ্মচে গোলমাল] JASON HIRSCHHORN: সাত যাও. ঠিক আছে. এর একটি বিট জন্য ক্যুইজ 0 সম্পর্কে কথা বলুন. আপনি অধিকাংশ আপনার ক্যুইজ 0 এর ফিরে আছে. আপনি না আশা না আপনি এটা একটু মনে রাখবেন. কিন্তু এর পরে ক্যুইজ 0, আপনি গ্রহণ করেছি এছাড়াও অনলাইন পিডিএফ অ্যাক্সেস আছে নমুনা সমাধান. কেহ আগে কোন প্রশ্ন আছে আমরা যে বিষয়ে সপ্তাহে এর উপাদান মধ্যে তিড়িং লাফ ক্যুইজ 0 একটি বিশেষ সমস্যা - কেন উত্তরটি কি এটা আছে? কেহ সম্পর্কে কিছু বিভ্রান্ত হয়? আপনি সঠিক সমস্যা আছে, কিন্তু এমনকি আপনি যদি শুধু আমাকে এটা একটু ব্যাখ্যা চাই আরো, আমি এখন তা করার খুশি. তাই আমি আপনাকে বলছি জিজ্ঞাসা কিছু সঙ্গে প্রস্তুত আসা ক্যুইজ 0 সম্পর্কে চিন্তা. সুতরাং যারা আমাদের পেতে চাই একটি প্রশ্ন দিয়ে বা শুরু ক্যুইজ 0 সম্পর্কে মন্তব্য? [কাগজ খচ্মচে] JASON HIRSCHHORN: নেই সবাই পুরোপুরি হয়নি. তাই আমি জানি [LAUGHS] কিছু প্রশ্ন করা আছে আছে ক্যুইজ 0 ওপর. ঠিক আছে. হ্যাঁ. Ompica. OMPICA: সংখ্যা 10. JASON HIRSCHHORN: সংখ্যা 10. কোনটি সংখ্যা 10 ছিল? OMPICA: - JASON HIRSCHHORN: আমি haven't - OMPICA: দ্য মধ্যে রয়েছে - JASON HIRSCHHORN: সংখ্যা 10 আটটি ছিল আমি - আমি আট লেখা? OMPICA: হ্যাঁ. JASON HIRSCHHORN: ঠিক আছে. তাই আরেকটি প্রশ্ন, আপনি হতে পারে আমি দূরদর্শী am ছিল জিজ্ঞাসা? উত্তর হবে হ্যাঁ. ব্যঙ্গ আগে বিভাগে, আমি জিজ্ঞাসা আপনাকে বলছি স্টার্লিং উভয় কোড করার জন্য এবং আট আমি করতে. দুইটাই ঘটেছে ব্যঙ্গ প্রদর্শিত. তাই আশা করছি, আপনাকে অর্থ প্রদান যে মনোযোগ. আপনি ছিল, তাহলে আপনার থাকতে হবে সম্ভবত ঐ দুটি উপর ভাল কাজ করেছেন. কিন্তু আট আমি, আমরা কি না আসলে কোড এটা বর্গ, কিন্তু এটি আবার,, ছিল ব্যঙ্গ উপর জিজ্ঞাসা. তাই নিতে জিনিষ কয়েক আমি আট কোডিং করার সময় মনে রাখবেন. প্রথম জিনিস, প্রশ্ন প্রতি ছিল আপনি চেক করতে প্রয়োজন যে যদি স্ট্রিং নাল সমান ছিল. কয়েক জনের পরে চেক করতে চেষ্টা প্রোগ্রামে গুলি যদি বন্ধনী আমি ছিল - যে যাতে একটি নির্দিষ্ট অক্ষর স্ট্রিং - নাল সমান ছিল. কিন্তু যে নাল মূলত হল, মনে রাখবেন - এটা মনে ভাল একটি শূন্য পয়েন্টার হিসেবে নাল - শূন্য একটি পয়েন্টার - মেমরির মধ্যে কোথাও যেখানে আপনি প্রবেশ না করতে পারেন. তাই যদি কিছু আপনি নাল সমান এটি সক্রিয়া করা হয় নি জানি যে, অথবা সেখানে কিছুই নেই. তাই এস, একটি গৃহস্থালি তারকা গুলি হল বন্ধনী আমি একটি গৃহস্থালি হয়. সুতরাং, নাল গুলি তুলনা জ্ঞান করে তোলে কিন্তু গুলি বন্ধনী আমি নাল. কিন্তু আবার - তাই প্রথম যে কাজটা ছিল আপনাকে যা অনুমিত হয় যে - নিশ্চিত যে চেক আপনি আসলে একটি বাস্তব স্ট্রিং পেয়েছেন. এর পরে, আপনি মাধ্যমে যেতে চেয়েছিলেন স্ট্রিং প্রতিটি অক্ষর. তাই এমন একটি গুলি বন্ধনী মত হবে আমি, উদাহরণস্বরূপ, আমি আপনার iterator যদি. এবং যে চরিত্র গ্রহণ করা, এবং তার প্রকৃত মূল্য পেতে. আপনি এটা একটি গৃহস্থালি হিসাবে সঞ্চিত, কিন্তু আছে শূন্য জন্য ASCII মান - একটি চরিত্র হিসাবে শূন্য - আসলে পূর্ণসংখ্যা শূন্য নয়. এটি আপনি করতে পারেন যে কিছু অন্যান্য সংখ্যা হওয়া ASCII টেবিলের সন্ধান. তাই একটি উপায় যে জন্য সঠিক - জন্য সঠিক সম্ভবত সবচেয়ে ভালো উপায় যে - এটা থেকে বিয়োগ করা হয় চরিত্র মান - একটি চরিত্র হিসাবে শূন্য. তাই মাইনাস একক উদ্ধৃতি, শূন্য, আরেকটি একক উদ্ধৃতি. তার মানে আপনি আছে যাই হোক না কেন নম্বর নিতে হবে একটি গৃহস্থালি হিসাবে, এবং তা সমান করুন একটি প্রকৃত পূর্ণসংখ্যা হিসাবে নম্বর. এবং যে পদ্ধতির অনুরূপ মানুষ অনেক মধ্যে গ্রহণ সমস্যা সিজার সঙ্গে, 2 সেট এবং Viginere - যারা সাইফারগুলির, যখন আপনি তাদের আবর্তিত হয়. আপনার কাছ থেকে একটি সংখ্যা হিসেবে এটা আছে তাই পরে শূন্য থেকে নয়, তাহলে - তার উপর নির্ভর করে এটি চূড়ান্ত সংখ্যায় যায় যেখানে - আপনি এটি সংখ্যাবৃদ্ধি প্রয়োজন 10 একটি শক্তি দ্বারা. কিছু মানুষ ফিরে থেকে সরানো সামনে, এবং স্বতন্ত্র গুন 10 একটি শক্তি দ্বারা নম্বর. কিছু মানুষ থেকে সরানো ব্যাক সামনে - এবং যাতে সর্বোচ্চ গ্রহণ প্রথম সংখ্যার অর্ডার - এবং একটি যারা সংরক্ষণ করবে বিশ্বব্যাপী পাল্টা পরিবর্তনশীল. এবং তারপর জন্য মাধ্যমে প্রতিটি সময় লুপ, গুন যে বিশ্বব্যাপী দৈত্য করা, 10 দ্বারা পরিবর্তনশীল মোকাবেলায় পরবর্তী গৃহস্থালি জন্য স্থান. সুতরাং যে করেই একটু বিভ্রান্ত ছিল আমার বোর্ডে এটি লেখা. কিন্তু নমুনা সমাধান আপনার জন্য উপলব্ধ করা হয়. কিন্তু যারা বড় জিনিস ছিল আমরা করছিলেন. উপরন্তু নিশ্চিত প্রতিটি যা করতে একটি চেক স্বতন্ত্র চরিত্র একটি প্রকৃতপক্ষে ছিল শূন্য এবং নয়টি, এবং না মধ্যকার চরিত্র একটি একটি ভালো কিছু অন্যান্য চরিত্র,, উদাহরণস্বরূপ. যারা আমরা করছিলেন জিনিস ছিল জন্য যে প্রশ্নে. যে আপনার প্রশ্নের উত্তর আছে? OMPICA: হ্যাঁ. JASON HIRSCHHORN: ঠিক আছে. অন্য কোন প্রশ্ন আছে ক্যুইজ 0 সম্পর্কে কি? কি কম্পাইল সম্পর্কে কি? সকলে ডান কম্পাইল? না. একটি ছিল - [LAUGHS] সম্পর্কে কোন প্রশ্ন সংকলন প্রক্রিয়া? বাহ. [কাগজ খচ্মচে] JASON HIRSCHHORN: হ্যাঁ. মাইকেল. মাইকেল: - র্যান্ডম সংখ্যা 7 কি? JASON HIRSCHHORN: সংখ্যা 7. নম্বর 7 একটি র্যান্ডম পূর্ণসংখ্যা পেতে ছিল. চমৎকার. তাই আপনি যদি একটি পূর্ণসংখ্যা একটি প্রদত্ত এবং একটি করছি পূর্ণসংখ্যা খ, এবং আপনি একটি র্যান্ডম চাই A এবং B এর মধ্যে পূর্ণসংখ্যা. আমরা আসলে এই এক লিখতে পারেন বোর্ড, কারণ এই এক কোড একটি লাইন ছিল - এটা করতে এক উপায়. সুতরাং আমরা একটি হিসাবে drand দেওয়া করছি ফাংশন আমরা ব্যবহার করতে পারেন. এবং কি drand না - এটা বীজযুক্ত হয়েছে অভিমানী - কি ফিরে drand করে? মাইকেল: 0.0 এবং 1.0 মধ্যে একটি ভাসা. JASON HIRSCHHORN: একটি সংখ্যা - হাঁ. 0 এবং 1 এর মধ্যে একটি সংখ্যা. এবং তাই আমরা বি এবং একটি আছে. এবং তারপর আমরা আমাদের র্যান্ডম সংখ্যা আছে 0 এবং 1 drand আমাদের দেওয়া. কিছু মানুষ খ রাখতে চেষ্টা করুন, অথবা খ বিয়োগ যারা ভিতরে একটি, বা কিছু প্রথম বন্ধনী. অর্থাৎ তারা যে অর্থ হবে এই ফাংশন আর্গুমেন্ট. drand কোনো আর্গুমেন্ট গ্রহণ করা হয় না - getString আছে মত কোনো আর্গুমেন্ট গ্রহণ করা. সুতরাং এটি বন্ধ, শুধু খোলা paren এর paren - এবং যে, নিজেই, হয় ফাংশন কল. এবং যে আপনি একটি নম্বর দেয় 0 এবং 1. অবশ্যই, আমরা একটি সম্পূর্ণ পরিসীমা আছে নম্বর ইন হতে পারে বি 10 এবং একটি 5 হয়, তাহলে আমরা সত্যিই, বলুন 5 একটি পরিসীমা সঙ্গে একটি নম্বর চান. তাই আমরা যা করতে হবে পরবর্তী জিনিস পরিসীমা খ বিয়োগ একটি দ্বারা এই সংখ্যাবৃদ্ধি. সুতরাং যে গুন এর অভিমানী. এবং যে আমাদের একটি নম্বর দেব একটি নির্দিষ্ট পরিসীমা মধ্যে. এবং যে নির্দিষ্ট পরিসীমা হচ্ছে খ বিয়োগ একটি মধ্যে পার্থক্য. এবং পরিশেষে, শুধু থেকে এটি দেব - খ বিয়োগ একটি মধ্যে পরিসীমা বলে 5, যে আমাদের একটি দেব হয় 0 থেকে 5 নম্বর. একটা সত্য 5 হয় কিন্তু, যদি আমরা অনুমোদন প্রয়োজন এটি যেখানে এই পরিসীমা আপ আসলে একটি যুক্ত করে, হতে অনুমিত. সুতরাং যে যুক্তি অধিকার পায়. এবং তারপর, আপনি থাকতে হবে অন্য প্রশ্ন? মাইকেল: নং আমি ঠিক এই মুহূর্তে সত্যিই মূক বোধ. [LAUGHS] JASON HIRSCHHORN: নং সত্যিই মূক বোধ করবেন না. মানুষ একটি সংখ্যা লড়াই এই প্রশ্নের সঙ্গে. এবং তারপর, অন্য প্রশ্ন হল, drand, আপনি বলেন, আপনি একটি float দেয় - একটি float ফেরৎ. কিন্তু এই ফাংশন আসলে জিজ্ঞাসা একটি পূর্ণসংখ্যা ফিরে যাওয়ার জন্য. আপনি স্পষ্টভাবে এই নিক্ষেপ করার প্রয়োজন হবে না একটি পূর্ণসংখ্যা জন্য, এই কারণ অপারেশন সমস্ত একটি হিসেবে বিবেচনা করবে ভাসা - একটি ফ্লোটিং পয়েন্ট সংখ্যা হিসেবে. এই ইচ্ছার লেগেছে - এমনকি এই যদি একটি পূর্ণসংখ্যা, এই ইচ্ছা হয় সঠিকভাবে গুন করা. সমস্ত গুণ কাজ করবে. আপনি এখানে এটি নিক্ষেপ করার প্রয়োজন হবে না. আসলে, আপনি এটি নিক্ষেপ করা উচিত নয়. যে হবে - যদি আপনি একটি নম্বর নিক্ষেপ যদি যে 0 এবং 1 এর মধ্যে আছে - একটি র্যান্ডম সংখ্যা, একটি ফ্লোটিং পয়েন্ট - তারপর এটা হয়, যাতে শুধুমাত্র 0 বা 1 হতে হবে আপনি যে স্পষ্টতা সব হারান. কিন্তু শেষে, আপনি ফিরে যখন, এটি স্বয়ংক্রিয়ভাবে পায় একটি পূর্ণসংখ্যা হিসাবে ফেরত পাঠানো. তাই আপনাকে যা করতে হবে না যে নিজেকে নিক্ষেপণ. তাই এই উত্তর ছিল যে প্রশ্ন, সংখ্যা 7. ক্যুইজ 0 অন্য কোন প্রশ্ন? হ্যাঁ, অ্যানি. অ্যানি: আমরা recursive ব্যবহার করব যখন - যখন আমরা পুনরাবৃত্ত loops ব্যবহার? JASON HIRSCHHORN: যখন আপনি ব্যবহার করবেন recursive - তাই আরো সাধারণভাবে, recursion বনাম এর আগপাছ একটি পুনরাবৃত্ত পদ্ধতির. কেহ একটি প্রো বা একটি বিরূদ্ধে দিতে পারেন? অনুগ্রহ করে? কেহ পারেন না. কে একটি প্রো বা একটি বিরূদ্ধে দিতে পারবেন? [কাগজ খচ্মচে] শিক্ষার্থীদের 1: Recursive কম কোডিং - কম টাইপিং? JASON HIRSCHHORN: তাই সাধারণত, recursion বিশেষ করে, একটি ফাংশন - বা একত্রীকরণ মত একটি অ্যালগরিদম সাজানোর - যা নিজেকে ধার একটি recursive পদ্ধতির করতে - আরো সহজবোধ্য হতে পারে recursively কোড করার. এবং শুধুমাত্র আরো জানার জন্য recursively তা করে. সুতরাং যে recursion একটি প্রো হবে. অন্যরা? হাঁ? শিক্ষার্থীদের 2: recursion করতে Con - এটা আরো মেমরি ব্যবহার করে. JASON HIRSCHHORN: তাই ঠিক অধিকার. একটি recursive ফাংশন যোগ রাখা হবে স্ট্যাক স্ট্যাকের ফ্রেম করতে. আপনি অনেক অপারেটিং করছি তাই যদি সংখ্যা, এবং এই ফোন করতে হবে অনেক কাজ, তাহলে আপনি অবশ্যই করবে যখন আরো মেমরি লাগতে একটি পুনরাবৃত্ত পদ্ধতির শুধুমাত্র একটি লাগাতে হবে , স্ট্যাক ফ্রেম গাদা কারণ এটা সব এক ফাংশন মধ্যে ঘটবে. অন্য কোন আগপাছ? হ্যাঁ. শিক্ষার্থীদের 3: recursion জন্য পেশাদাররা. আপনি নির্ধারণ করতে হবে না আগাম কতবার কোড পুনরাবৃত্তি করা হবে. আপনি একটি পূর্বাহ্নে নির্ধারিত নম্বর থাকতে পারে এর পরে, পুনরুক্তি করা আছে যে বার recursion, ভাল কারণ এটা যে ফলাফল প্রদর্শন করা হয়. JASON HIRSCHHORN: আমি যে সত্য মনে করি. কিন্তু আমি উভয় ক্ষেত্রেই মনে আপনি কখনও হবে - আপনি সম্ভবত কিছু পেতে চাই ব্যবহারকারী থেকে ইনপুট. অথবা এই ফাংশন কিছু ইনপুট করতে হবে যে নির্ধারণ করবে কতবার এটা চালানো উচিত. তাই সাধারণত, আপনি হার্ড কোড করা হবে না - এমনকি একটি পুনরাবৃত্ত পদ্ধতির মধ্যে - কিভাবে অনেক বার যে লুপ চালানো হবে. আপনি ছিল অন্য আছে কি অ্যানি, সম্পর্কে চিন্তা? ঠিক আছে. সুতরাং যারা সম্ভবত দুটি - সবচেয়ে বড় প্রো এবং সবচেয়ে বড় বনাম একটি recursive করার বিরূদ্ধে একটি পুনরাবৃত্ত পদ্ধতির. ঠিক আছে. ক্যুইজ 0 ওপর আরও কিছু লাগবে? এর উপর সরানো যাক. ফাইল ইনপুট / মন্ত্রণালয় একটি বিস্ময়কর সংক্ষিপ্ত নেই এই সপ্তাহে ফাইল ইনপুট / আউটপুট যে আশা আপনি একাধিক দেখেছেন বার, এবং প্রশংসিত. কাজ অনেক যে মধ্যে গিয়েছিলাম, এবং আমি করেছি এটা অন্যন্ত সহায়ক শুনেছেন. আমি, এই স্লাইডে লিঙ্ক অন্তর্ভুক্ত যদি আপনি ছিল না একটি এটা 10 বার ঘড়ি সুযোগ. সুতরাং, আমরা সংক্ষিপ্তভাবে উপর যেতে যাচ্ছে খোলার এবং কাজ করার প্রধান ধাপ ফাইল সঙ্গে, এবং তারপর আমরা যাচ্ছি আগে একটি কোডিং সমস্যা মধ্যে আকর্ষণীয় সমস্যা সেট অনুসন্ধানী. তাই আবার, আমি এই ন্যস্ত চলেছি পর্দা, কিন্তু আমি কথা বলতে যাচ্ছি আমরা করছি সে সম্পর্কে মাত্র একটি মিনিট ফাইলের সাথে এখানে কাজ I/O-- যে কি মানে? আমরা তৈরি করতে পারেন এর মানে হল যে আমাদের প্রোগ্রাম, এবং তারপর আমাদের প্রোগ্রাম আছে প্রস্থান করুন, এবং কোনো প্রভাব তৈরি না আমাদের প্রোগ্রাম বাইরে বিশ্বের. কিন্তু আমরা ফাইল নিয়ে কাজ শুরু করার সময় - উভয় তাদের পড়া এবং তৈরি তাদের - আমরা কিছু প্রভাব সৃষ্টি করতে পারে আমাদের প্রোগ্রাম বাইরে বিশ্বের. শুধু ভালো মাইক্রোসফট ওয়ার্ড সক্ষম ছিল না যদি তারপর, কোন Word নথি করা মাইক্রোসফট ওয়ার্ড, আপনার সব প্রস্থান করার জন্য একবার কাজ চলে যাবে, এবং এটি হবে সত্যিই বেহুদা হতে. আমরা শেষ পর্যন্ত পাবে চান প্রভাবিত করতে পারে প্রোগ্রাম লিখুন তাদের চারপাশে বিশ্বের, উভয় গ্রহণ করে ফাইল পদ ও - জটিল ইনপুট ফাইল এর মাধ্যমে, এবং এছাড়াও আকর্ষণীয় তৈরি এবং আকর্ষক আউটপুট - ফাইল বিভিন্ন ধরনের পদ. আমরা শুরু হয় সুতরাং যে কেন হয় ফাইল সঙ্গে কাজ শিখতে. আরো নির্দিষ্টভাবে, কি আমরা অনুসরণ হিসাবে হয় না. এটা খুব সহজ. এখন পর্যন্ত পদক্ষেপ শুধুমাত্র একটি দম্পতি আছে, এবং তারা এই কোড এখানে তালিকাভুক্ত করা হয়. সুতরাং আমরা মধ্য দিয়ে যেতে চলুন লাইন দ্বারা এই কোড লাইন. প্রথমত, আপনি হাইলাইট দেখুন - আপনি একটি ফাইল সঙ্গে কাজ, যখন নির্বিশেষে ফাইলের ধরনের তা হল আপনি এটি খোলার প্রয়োজন. এবং যে fopen একটি কল সঙ্গে হল - অধিকার এখানে. আপনি ফাইলের নাম অন্তর্ভুক্ত. ফাইল, আপনার ডিরেক্টরির মধ্যে নয়, বা ফোল্ডার যেখানে এই প্রোগ্রাম জীবন, তাহলে আপনি এছাড়াও অন্তর্ভুক্ত করা প্রয়োজন যে ফাইল যেখানে একটি পথ. আমরা ধরে নিই চলুন যে এই "text.txt" নামক ফাইল - একটি সহজ পাঠ্য নথি - হয় এই প্রোগ্রাম হিসাবে একই ফোল্ডারে থাকে. যাতে এর মধ্যে রাখা অন্য জিনিস মন - যে আপনি একটি ফাইল খুলতে চান অন্য কোথাও, আপনি আসলে প্রয়োজন তার অবস্থান অন্তর্ভুক্ত. দ্বিতীয়ত, আপনি একটি আর্গুমেন্ট পাস করতে পারেন fopen, এবং যে আপনি কাজ করতে চান কি ফাইল সঙ্গে. তিনটি প্রধান আর্গুমেন্ট যে আছে আপনি fopen পাস চলুন. কে আমাকে ঐ তিন দিতে পারেন? কে আমাকে তাদের একজন দিতে পারেন? হ্যাঁ. শিক্ষার্থীদের 4: ফাইলের নাম? JASON HIRSCHHORN: দুঃখিত. আপনি পাস করতে পারেন তিনটি প্রধান আর্গুমেন্ট দ্বিতীয় যুক্তি fopen হিসাবে. আপনি ঠিক - ফাইল নাম প্রথম যুক্তি হল. কিন্তু fopen যাও দ্বিতীয় যুক্তি হল সাধারণত তিনটি পংক্তি, এবং - হ্যাঁ. Aleja. Aleja: append জন্য. JASON HIRSCHHORN: একটি, আপনি চান ইতিমধ্যেই বিদ্যমান একটি ফাইলে লিখবেন. শিক্ষার্থীদের 5: পড়া জন্য কিছু r. JASON HIRSCHHORN: আর, আপনি যদি একটি ফাইল থেকে পড়তে চাই. শিক্ষার্থীদের 6: লেখার জন্য ওয়াট. JASON HIRSCHHORN: এবং, লে যদি আপনি একটি ফাইলে লিখতে চান. তাই এই ক্ষেত্রে, আমরা লেখার ফাইলে, তাই আমরা W আছে. আপনি এটি খুলতে, আপনি সংরক্ষণ করতে হবে কোথাও দায়ের, এবং যে সঙ্গে আছে বাম হাতের দিকে কোড নিয়োগ অপারেটর - আমি একটি ফাইল একটি পয়েন্টার তৈরি করছি এই ক্ষেত্রে, ফাইলের মধ্যে, বলা হয়. আমরা চিন্তা যাচ্ছে না কি এই সব ক্যাপ ফাইল জিনিস. বলতে চলা, এটি একটি দীর্ঘ zeros এবং বেশী প্রবাহ. এবং যে আমরা করতে যাচ্ছি কিভাবে এটা কাজ করে এবং এটা বুঝতে. আমরা যা করতে হবে পরবর্তী জিনিস - ও এই অবিশ্বাস্যভাবে গুরুত্বপূর্ণ - আপনি একটি ফাইল খোলার জন্য যখনই - আসলে, আপনি malloc কল যখনই জন্য উদাহরণ, এবং কিছু স্মৃতি এবং পেতে চেষ্টা করুন এবং আপনি সবসময় একটি পয়েন্টার মধ্যে এটি সংরক্ষণ করুন নিশ্চিত যে পরীক্ষা করতে যে ফাংশন নাল ফিরে না. তাই এই ক্ষেত্রে, আমরা করতে পরীক্ষণ করা হয় আমরা আসলে খোলা নিশ্চিত যে সঠিকভাবে দায়ের, এবং ছিল আমাদের প্রোগ্রামে কোন ত্রুটি. এর পরে, একবার আমরা নিশ্চিত চেক করেছি আমরা আমরা করতে পারেন, একটি কাজ ফাইল আছে , লিখুন, বা থেকে পড়া বা ফাইলে লিখবেন. এই ক্ষেত্রে, আমি কেবল মুদ্রণ am এই ফাইলের মধ্যে এক লাইন. আমি কিভাবে যে জানেন? ওয়েল, আমি এই ফাংশন ব্যবহার করছি fprintf বলা. আপনি ব্যবহার করা হবে কর্ম সব , লেখা বা থেকে, অথবা যখন পড়া ফাইল সাধিত অনুরূপ হবে আপনি আগে দেখা, কিন্তু করেছি ফাংশন অক্ষর, F দিয়ে শুরু, ফাইলের জন্য দাঁড়িয়ে. এবং fprintf, আমাদের স্বাভাবিক মুদ্রণ অসদৃশ অ্যাপ্লিকেশন, এক অতিরিক্ত আর্গুমেন্ট গ্রহণ করা হয়, এবং যে ফাইলটি আপনি যেখানে এই লাইন প্রিন্ট করতে চান. আমি কিছু না থাকে ohai অধিকার. আমি তৃতীয় হবে না printf করার যুক্তি - বা দ্বিতীয় যুক্তি printf যাও, তৃতীয় যুক্তি fprintf যাও, কারণ আমি এখানে কোন স্থানধারক হবে না. আমি কোনো ভেরিয়েবল সহ না করছি. কিন্তু আবার, fprintf এবং এই ফাইলের সব ফাইল সঙ্গে কাজ যে ফাংশন সাধারণত ফাইলের প্রয়োজন যাচ্ছি যার উপর তারা অপারেটিং করছি. অবশেষে, গত গুরুত্বপূর্ণ বিষয় থেকে না, ঠিক মত ফাইল বন্ধ করতে হয় সঙ্গে - আমরা কিছু malloc যখনই, আমরা, পাছে কিছু মুক্ত করতে চাই একটি মেমরি লিক আছে - আমরা চাই আমাদের ফাইল বন্ধ করতে. এই প্রোগ্রাম বন্ধ ছাড়া প্রস্থান যদি ফাইল, মতভেদ কিছুই যেতে হবে হয় ভুল, বিশেষ করে যদি তা একটি ছোট ফাইল ছিল. কিন্তু এটা অবশ্যই ভাল কোডিং শৈলী এবং সবসময় আপনার ফাইল বন্ধ করার অভ্যাস যদি আপনি এটি ব্যবহার করে সমাপ্ত করছি. সুতরাং যে ফাইলের বেসিক ইনপুট / ও হয় আপনি সম্ভবত আগে যে দেখা, বা করেছি যে চমত্কার সংক্ষেপে তা দেখেছেন. কেহ আগে, কোন প্রশ্ন করে আমরা কিছু অভ্যাস কোডিং ঢোকা ফাইল সম্পর্কে সমস্যা, ইনপুট / আউটপুট বা ধাপ আমি ঠিক গিয়েছিলাম? [টাইপ শব্দসমূহ] JASON HIRSCHHORN: আপনি কি একটি প্রশ্ন, Avi আছে? AVI: নং JASON HIRSCHHORN: ঠিক আছে. আমি অন্য অপেক্ষা করা যাচ্ছে না সাত যাও. [LAUGHS] এটা সত্যিই একটি ভাল টিপ এর. আপনি না ঠিক পছন্দ না প্রশ্ন জিজ্ঞাসা. যে সূক্ষ্ম. ঠিক আছে. তাই আমাদের প্রথম অনুশীলন সমস্যা আমরা, হয় ফাংশনের প্রতিলিপি যাচ্ছে একটি কমান্ড লাইন টুল যে আপনি সম্ভবত কপি - পূর্বে ব্যবহৃত - কপি হাতিয়ার. আপনি CP টাইপ করুন এবং তারপর এটি পাস হলে দুই আপনার টার্মিনাল মধ্যে আর্গুমেন্ট, আপনি যা করতে পারেন একটি ফাইল কপি করুন. এবং যে আমরা যাচ্ছি কি এই মুহূর্তে লিখতে. তাই আবার, এই স্লাইড দেখা বন্ধ পড়া, আমি চাই প্রদর্শিত হয় একটি প্রোগ্রাম লিখতে দুটি এবং দুটি কমান্ড লাইন কেবল আর্গুমেন্ট - উৎস ফাইল এবং একটি গন্তব্য ফাইল - এবং কপি উৎস বিষয়বস্তু গন্তব্য ফাইল থেকে ফাইল একটি সময়ে এক বাইট. যাতে এর চাইতে অনেক. আবার, এই একটি ভালো পদ্ধতি হল সি কোড সরাসরি যেতে, কিন্তু না ধাপের একটি দম্পতি সেটিকে ভেঙ্গে. প্রথমত, যুক্তি আমার মনে হয় - ঠিক আমি কি করতে আপনাকে জিজ্ঞাসা করছি - এবং সব বোঝেন এই সমস্যার পদক্ষেপ. না সি, কিছু কিছু pseudocode সালে, বা এমনকি একটি মানসিক মডেল কি ঘটছে. এর পরে, আপনি pseudocode নিচে আছে একবার, চিন্তা করা কিভাবে pseudocode সরঞ্জাম এবং আমরা করেছি জিনিষ সম্মুখের মানচিত্র সি ব্যবহার শিখেছি এবং পরিশেষে, একবার আপনি সব যে আছে একসঙ্গে, আপনি সমস্যা কোড করতে পারেন. করতে 5 থেকে 10 মিনিট সময় নিন এই সমস্যার উপর কাজ. আমি নির্দেশাবলী রেখে দেব ফিরে একটি দ্বিতীয় মধ্যে বড়. এবং তারপর আমরা পুনরালোচনা চলুন pseudocode, এবং কোড এটি একটি গ্রুপ হিসাবে বসবাস. আপনি যখন আপনার কোন প্রশ্ন থাকে, এই কাজ, বাড়াতে বিনামূল্যে হতে আপনার হাত, এবং আমি আসতে হবে কাছাকাছি এবং তাদের উত্তর. শিক্ষার্থীদের 7: আমি ধুমধাড়াক্কা করতে পারেন কাগজ এক টুকরা? JASON HIRSCHHORN: কি খবর? [টাইপ শব্দসমূহ] JASON HIRSCHHORN: ঠিক আছে. প্রথম pseudocode ধরে যাওয়া যাক, এবং তারপর আমি আপনি কয়েক আরো দেব মিনিট কোডিং শেষ. কে আমাকে চলতে শুরু করে দিন প্রথম লাইন দিয়ে এই ফাংশন জন্য pseudocode? শিক্ষার্থীদের 8: নিশ্চিত যে পরীক্ষা করুন আপনি দুটি ফাইল দেওয়া হয়. JASON HIRSCHHORN: ঠিক আছে. এবং আমরা না হন তাহলে কি হবে? শিক্ষার্থীদের 8: ২ 0 ফিরে আসবে. JASON HIRSCHHORN: আমরা 0 ফিরে উচিত? শিক্ষার্থীদের 8: একটি ফিরতি - blanking. দুঃখিত. JASON HIRSCHHORN: হ্যাঁ. সম্ভবত না 0. 0 সবকিছু ভাল মানে না. ঠিক আছে. সুতরাং যে প্রথম লাইন হচ্ছে pseudocode মধ্যে. কে pseudocode দ্বিতীয় লাইন আছে? শিক্ষার্থীদের 9: ফাইল উভয় ওপেন? JASON HIRSCHHORN: উভয় ফাইল খুলুন. ঠিক আছে? শিক্ষার্থীদের 10: দেখার জন্য পরীক্ষা করে দেখুন ফাইল শূন্য হয় তাহলে কি হবে? JASON HIRSCHHORN: করতে পরীক্ষা করুন নিশ্চিত শূন্য হয় ত্ত. একটি সরাইয়া হিসাবে - 0 কাট - যে শূন্য হয়? শিক্ষার্থীদের 11: নং JASON HIRSCHHORN: যে শূন্য নয়. যে শূন্য টারমিনেটর বলা হয়. এটা আসলে শুধুমাত্র একটি ঠ দিয়ে বানান এর. যাতে এর বিরুদ্ধে কিছু চেক - যে আসলে একটি চরিত্র আছে - তাই যে বিরুদ্ধে কিছু করা হয় পরীক্ষণ দেখতে পরীক্ষণ হিসাবে একই না হলে এটা শূন্য সমান. এবং কিছু লোক - তাদের মো এবং তাদের সমস্যার উপর সেট - করিয়েছি বিভ্রান্ত ঐ দুটি. কিন্তু ঐ দুটি বিভিন্ন আসলে. এক একটি পংক্তি শেষ হয় - এক 0 একটি পয়েন্টার. শিক্ষার্থীদের 12: কেন আপনার কাছে চেক না ফাইল শূন্য নয় তা নিশ্চিত করুন আপনি তাদের খুলতে আগে? JASON HIRSCHHORN: তাই খোলা সংরক্ষণ যে ফাইলে কিছু. এবং যদি আপনি এখানে ফিরে যান - তাই এই লাইন - fopen - আপনি একটি ঠিকানা এবং দোকান দেবে এটি কাজ করে যদি ফাইলে যে ঠিকানা. এটা কাজ করে না, এটা শূন্য সংরক্ষণ করবে - শিক্ষার্থীদের 12: ওহ. ঠিক আছে. আপনি পেয়েছেন. JASON HIRSCHHORN: ফাইলের মধ্যে. সুতরাং আপনি শূন্য জন্য চেক করতে পারবেন না আপনি তাদের খোলা করেছি আগে. শূন্য কিছু না মানে সঠিকভাবে কাজ. ঠিক আছে. তাই নিশ্চিত ত্ত করা চেক? বা কি? আমরা কি মনে করেন? আমরা যে সঙ্গে যাবেন. শিক্ষার্থীদের 13: হয়. JASON HIRSCHHORN: কি? হয় আমরাও? শিক্ষার্থীদের 13: হয়. JASON HIRSCHHORN: ঠিক আছে. আমরা কিছু আছে বলে মনে হচ্ছে যে উপর ঐক্যমত্য. শূন্য আমরাও. ঠিক আছে, pseudocode এর পরের লাইন. কে এখনো আমার একটি লাইন দেওয়া হয় নি? আমরা আপনার জন্য অপেক্ষা করবে. হ্যাঁ. শিক্ষার্থীদের 14: আপনি পড়া আছে প্রথম ফাইল থেকে? JASON HIRSCHHORN: ঠিক আছে. শিক্ষার্থীদের 14: অথবা আমরা fscanf ব্যবহার করুন অথবা যে প্রথম ফাইলটি মত কিছু? JASON HIRSCHHORN: সুতরাং আমরা চাই প্রথম ফাইল থেকে পড়া এবং - এর অধিকার এখানে যে করা যাক. সোর্স ফাইল থেকে পড়ুন. এবং তারপর, আমরা পরে কি করবেন সোর্স ফাইল থেকে পড়া? অন্য কারো? শিক্ষার্থীদের 15: লিখুন মধ্যে গন্তব্য ফাইল? JASON HIRSCHHORN: আমরা লিখতে গন্তব্য ফাইল, এবং - ঠিক আছে. আমরা আর কি নাই? আমার একটি প্রদত্ত না যিনি অন্য কারো এখনও কোড লাইন - pseudocode মধ্যে. হ্যাঁ. শিক্ষার্থীদের 16: হতে পারে আপনি সবসময় চেক করতে পারেন কিনা জন্য পড়তে কিছু আছে, পরের লাইন পছন্দ? পরের লাইন ভালো হয় যে, এটি উপস্থিত রয়েছে কি না. [ইলেক্ট্রনিক হুইসেল] JASON HIRSCHHORN: ওহো. এটা আমার জার্নালিং সফটওয়্যার এর. হাঁ? শিক্ষার্থীদের 16: হ্যাঁ. JASON HIRSCHHORN: তাই দিতে এটা আমার আরো এক সময়. শিক্ষার্থীদের 16: আছে কি না তা পরীক্ষা করুন থেকে এখনও একটি পরের লাইন পড়তে সোর্স ফাইল. JASON HIRSCHHORN: ঠিক আছে. সুতরাং আমরা লাইন পড়া করছি না - এখানে বাইট পড়া হয় - কিন্তু আপনি সঠিক করছি. আমরা যতক্ষণ পড়তে এবং লিখতে চান কোন বাইট আছে. ঠিক আছে. এবং তাই এই সত্যিই সংভৃত হওয়া উচিত একটু, তারা সেখানে অধীনে কারণ. রাইট? আমরা বাইট ফুরিয়েছে পর্যন্ত, আমরা চলুন সোর্স ফাইল থেকে পড়তে ও লিখতে গন্তব্য ফাইল. এবং তারপর, শেষ কি pseudocode লাইন? দেওয়া না কেউ আমার কিছু এখনো. শিক্ষার্থীদের 17: ফাইল বন্ধ করুন! JASON HIRSCHHORN: যথাযথভাবে. ফাইল বন্ধ করুন. সুতরাং আমাদের pseudocode আছে. আমি মধ্যে pseudocode করা যাচ্ছে না gedit, এবং কয়েক মিনিট মধ্যে আমরা একসঙ্গে এই কোড হবে. ঠিক আছে. আমাদের একটি গ্রুপ হিসাবে শুরু করা যাক. Nishant, আমি আমার নতুন ফাইল আছে. আমি এই পর্যন্ত খোলা করেছি. শিরোনামহীন দস্তাবেজ 1. আমি কি উচিত প্রথম জিনিস কি? NISHANT: লাইব্রেরি অন্তর্ভুক্ত করুন! JASON HIRSCHHORN: ঠিক আছে. কি লাইব্রেরি? NISHANT: stdio.h, stdlib.h, আমি বিশ্বাস করি? JASON HIRSCHHORN: ঠিক আছে. জন্য stdlib কি? NISHANT: আমি ভুলে গেছি. JASON HIRSCHHORN: ঠিক আছে. সুতরাং stdio অন্তর্ভুক্ত. আমি এমনকি আগে কি করতে হবে আমি কোডিং শুরু? NISHANT: একটি হেডার লিখুন? JASON HIRSCHHORN: কিভাবে এটা রঙ্গিন আমি পেতে পারি? [Interposing ভয়েসেস] NISHANT: কিভাবে আপনি এটি রঙ্গিন পেতে পারি? JASON HIRSCHHORN: কিভাবে আমি কোডিং রঙ হয়? NISHANT: আমি জানি না. ওহ. সংরক্ষণ করুন. JASON HIRSCHHORN: সংরক্ষণ করুন. হ্যাঁ. আমি একটি. সি হিসাবে এটি সংরক্ষণ করা উচিত. সুতরাং cp.c. হিসাবে ডেস্কটপে এটি সংরক্ষণ মিষ্টি. আর আমি পুরো শৈলী পেতে চান পয়েন্ট, কি করা উচিত আমি শীর্ষে অন্তর্ভুক্ত? NISHANT: আপনি আপনার নাম, নাম লিখতে পারেন প্রোগ্রাম, এবং উদ্দেশ্য পাশাপাশি প্রোগ্রামের? JASON HIRSCHHORN: ভাল মনে হচ্ছে. চমৎকার. সুতরাং আপনি পুরোপুরি আমাদের শুরু বন্ধ করেছি. # অন্তর্ভুক্ত - আমরা লিখতে হবে - ঠিক আছে. তাই আমি আমার সব যেতে সেট করছি মনে করি. কে আমার জন্য কোড প্রথম লাইন আছে - অথবা প্রথম কোড লাইনের যে এটি আমাদের প্রথম সন্তুষ্ট নিতে হবে pseudocode মধ্যে মন্তব্য? আপনি. শিক্ষার্থীদের 18: এটি int-নাও উচিত argc, এবং তারপর গৃহস্থালি * argv? JASON HIRSCHHORN: আমি মনে করি আপনি ডান করছি. এর এটি প্রধান, খোলা paren int পরিবর্তন করা যাক, int-argc, কমা, গৃহস্থালি * argv? যে পছন্দ? শিক্ষার্থীদের 18: বন্ধনী. JASON HIRSCHHORN: বন্ধনী. খোলা বন্ধনী, বন্ধ বন্ধনী, বন্ধ অভিভাবক. পারফেক্ট. এখন আমি কমান্ড লাইন আর্গুমেন্ট গ্রহণ করতে পারেন. ঠিক আছে. আমরা দুটি ফাইল দেওয়া করছি তা পরীক্ষা করুন. আপনি যেমন আমাকে যে দিতে পারেন. শিক্ষার্থীদের 18: argc যদি - এই এক 3 সমান হয় না. JASON HIRSCHHORN: যদি খোলা paren 3 argc সমান না? শিক্ষার্থীদের 18: হ্যাঁ, আপনি ফিরে 1 বা কিছু. JASON HIRSCHHORN: দুঃখিত. শিক্ষার্থীদের 18: ফিরে 1 বা কিছু. JASON HIRSCHHORN: 1 ফিরুন. ঠিক আছে? গ্রেট. উভয় ফাইল খুলুন. কে আমাকে উভয় ফাইল খুলতে সাহায্য করতে পারেন? কে এখনো আমার কোড দেওয়া হয় নি? কার্ট? KURT: তাই সব ক্যাপ, F-আমি-l-ই তারকা উৎস. JASON HIRSCHHORN: আমি যাচ্ছি স্বরবর্ণ নিতে আউট. সেগুলো হল শান্ত. এটা টাম্বলার মত. শিক্ষার্থীদের 18: fopen সাইটে সমান - JASON HIRSCHHORN: fopen সাইটে সমান? শিক্ষার্থীদের 18: ওপেন paren, argv, খোলা বন্ধনী. JASON HIRSCHHORN: অপেক্ষা করুন. দুঃখিত. ওপেন paren. ঠিক আছে. শিক্ষার্থীদের 18: হ্যাঁ. Argv সাব 1. JASON HIRSCHHORN: নিম্নতর 1? শিক্ষার্থীদের 18: হ্যাঁ. Argv খোলা বন্ধনী 1 - হ্যাঁ. এবং তারপর কমা, এবং তারপর খোলা ডবল উদ্ধৃতি, আর, ডাবল কোট, বন্ধ paren, সেমিকোলন. JASON HIRSCHHORN: মিষ্টি. এবং কি অন্য এক সম্পর্কে কি? শিক্ষার্থীদের 18: অত্যন্ত অনুরূপ, কিন্তু এর পরিবর্তে s-r-C-এর, আপনি D-s-টি কল চাই. JASON HIRSCHHORN: Oo! আমি যে চাই. শিক্ষার্থীদের 18: শুধু ডি, S-টি. হ্যাঁ. এবং তারপর,, 2 খোলা বন্ধনী argv. হ্যাঁ. এবং তারপর W পরিবর্তে R. হ্যাঁ. JASON HIRSCHHORN: গ্রেট. লাইন পরবর্তী কয়েক. এছাড়াও, কেহ যুক্ত জিনিষ হয়েছে থাকে আমরা সম্পন্ন করেছি যে লাইন, বিনামূল্যে হতে পাশাপাশি যারা যোগ করুন. নিশ্চিত ত্ত শূন্য করতে পরীক্ষা করুন. কে আমাকে আমি প্রয়োজন কোড দিতে পারেন pseudocode যে লাইন সন্তুষ্ট? ধনু. তীরন্দাজ: SRC সমান সমান হলে শূন্য বা DST সমান সমান শূন্য, তাহলে আপনি ফিরে - JASON HIRSCHHORN: কি? তীরন্দাজ: 2 ফিরে? JASON HIRSCHHORN: 2 ফিরুন. তাই খোলা paren SRC সমান হলে শূন্য সমান, বা - যে thing's যাই হোক না কেন - নল? পাইপ? আমরা পাইপ কল করব. পাইপ, পাইপ, DST সমান সমান শূন্য, 2 ফিরে. ঠিক আছে? আমরা বাইট ফুরিয়েছে পর্যন্ত - আমরা ধরণের থেকে এই পদক্ষেপ উপর এড়ানো এখানে যাচ্ছে করতে pseudocode অংশ. কিন্তু যতক্ষণ না আমরা বাইট ফুরিয়েছে - যে শব্দ মত কি করে? সি কাঠামো কি প্রকারের - কিন্তু আমি শব্দ গঠন ব্যবহার করবেন না, আমরা ব্যবহার শুরু করতে যাচ্ছেন, কারণ যে অন্যান্য ক্ষেত্রে - কিন্তু সি হাতিয়ার মত যে শব্দ আছে? শিক্ষার্থীদের 19: একটি লুপ. JASON HIRSCHHORN: একটি লুপ. একটি লুপ মত শোনায়. সুতরাং যারা আমার প্রথম লাইন দিতে পারে অধিকার এখানে লুপ কোডের? আপনি বাছাই করতে পারেন কি ধরনের আপনি কি আমাকে দিতে হলে লুপ আপনি যদি চান কোড এই লাইন. তিন ধরনের আছে. আপনি বাছাই পেতে. আমি ঐ এক সুপারিশ করবে. Avi. আপনি কোনটি চান? AVI: জন্য. JASON HIRSCHHORN: জন্য. AVI: আমি শূন্য সমান int. JASON HIRSCHHORN: ঠিক আছে. AVI: আমি প্রায় নিশ্চিত না এই ভাগে. কিন্তু আমি সাইজ কম তারকা উৎস? আমি যে এর নিশ্চিত না. JASON HIRSCHHORN: ঠিক আছে. আপনি চান কারণ: AVI একটি ফাইলের আকার, ডান? JASON HIRSCHHORN: তাই এটা সম্ভবত না করবে না আমাদের প্রকৃত মাপ দিতে বাইট ফাইল. তাই আমরা কি কি করতে পারে? লুপ আরেক ধরনের কি? অথবা আমরা জন্য লুপ দিয়ে বিদ্ধ করা উচিত? শিক্ষার্থীদের 20: আপনি যখন একটি লুপ করতে পারে? এবং তারপর, কি আপনি করতে চাই you'd হয় - আমরা ফাইলের জন্য একটি গৃহস্থালি * কারণ. আমরা শুধু বৃদ্ধিশীল রাখতে তাই যদি যে আমরা শূন্য চরিত্র এ খুঁজে পেতে চাই না হওয়া পর্যন্ত এটি শেষ? অথবা কোন, ফাইল কিভাবে কাজ করে হল? JASON HIRSCHHORN: সুতরাং আমরা রাখতে পারেন * গৃহস্থালি বৃদ্ধিশীল আমরা শূন্য খুঁজে না হওয়া পর্যন্ত - শিক্ষার্থীদের 20: মূলত বর্তা অক্ষর দ্বারা অক্ষর আমরা আঘাত না হওয়া পর্যন্ত ফাইলের শেষে. JASON HIRSCHHORN: হ্যাঁ. সুতরাং যে আমরা যেতে চাই কি. আমরা পড়া, অক্ষর রাখতে চান অক্ষর দ্বারা, আমরা পেতে না হওয়া পর্যন্ত ফাইলের শেষে. শিক্ষার্থীদের 20: হ্যাঁ. দেখুন - শেষ বা স্টপ সাইন কি একটি টেক্সট ফাইল শেষে. JASON HIRSCHHORN: ঠিক আছে. সুতরাং আমরা ফাইলের শেষে পেতে হলে - কিভাবে আমরা আমাদের পৌঁছেছেন জানেন একটি ফাইলের শেষে? আমি আহ্বান করছি - যদি তাই এর একধাপ পিছনে যাক. একটি ফাংশন কি? এর ঠিক এই লাইন করতে যাওয়া যাক. সোর্স ফাইল থেকে পড়ুন. কে আমার কোড যে লাইন দিতে পারেন? শিক্ষার্থীদের 21: fscanf? JASON HIRSCHHORN: fscanf. ঠিক আছে. আমি কি পড়তে চান, খুব বিশেষ করে, এক বাইট? শিক্ষার্থীদের 21: আমি জানি না. JASON HIRSCHHORN: ঠিক আছে. Fscanf তুলনায় এমনকি সহজ - একটি কি - আমি একটি সোর্স ফাইল থেকে পড়তে চান? উৎস ফাইল থেকে পড়ুন. একটি ফাংশন কি - হাঁ. শিক্ষার্থীদের 22: এটা fread আছে? JASON HIRSCHHORN: fread. আমি এর সঙ্গে বিদ্ধ করা যাক মনে এখন জন্য যে এক. আর্গুমেন্ট কি ধরনের fread নিতে? শিক্ষার্থীদের 22: সম্ভবত ফাইলের ধরন, এবং তারপর ফাইলে অবস্থান? JASON HIRSCHHORN: আমি এখানে কি টাইপ করতে পারেন জিনিসটা আর্গুমেন্ট কি ধরনের fread লাগে? একাধিক ছাত্র: ম্যান fread. JASON HIRSCHHORN: ম্যান fread এবং fwrite. তারা একসাথে থাকা মনে হচ্ছে. সুতরাং fread কতগুলি আর্গুমেন্ট লাগে? শিক্ষার্থীদের 23: চার. JASON HIRSCHHORN: এটা লাগে চার আর্গুমেন্ট. এটি একটি পয়েন্টার, একটি আকার নেয়, এবং যে অদ্ভুত যা জিনিস,, এবং কিছু ফাইল. ঠিক আছে? এর অধিকার এখানে এটি সম্পর্কে পড়া যাক. "ফাংশন fread এন memb সার্চ তথ্য উপাদান, প্রতিটি আকার বাইট দীর্ঘ, স্ট্রীম থেকে দ্বারা জোরাল অবস্থানে তাদের সংরক্ষণ, স্ট্রিম পয়েন্টার দ্বারা প্রদত্ত. " তাই চার আর্গুমেন্ট. কেন আমি এই কপি করা হবে না, এবং ডান এখানে পেস্ট করুন. ঠিক আছে. সুতরাং যারা ভর্তি শুরু করতে পারেন আমার জন্য এই আর্গুমেন্ট? Avi. AVI: অকার্যকর খুঁজে নিন. শুধু SRC রাখুন. পয়েন্টার এবং তারকা খুঁজে নিন. SRC রাখুন. তারপর - JASON HIRSCHHORN: তাই আমি বন্ধ করতে যাচ্ছি সেখানে আপনি, যে ভুল কারণ. আপনি SRC সাথে সঠিক, কিন্তু SRC যেখানে যেতে হবে? [Interposing ভয়েসেস] JASON HIRSCHHORN: এটা উচিত এখানে যান উপর. যে SRC এর - আমাদের SRC একটি প্রকার. এর এখানে তাকান. এটি একটি টাইপ ফাইল * জন্য জিজ্ঞাসা করা হয়, আমরা আসলে সাধারণত যে ভালো তাদের দেখতে. সুতরাং এই একটি যুক্তি জন্য জিজ্ঞাসা করা হয় * SRC যে বলা প্রবাহ ফাইল টাইপ. ঠিক আছে? কিছু করার কি সাইজ আমরা পড়তে চান? আমি আপনাকে এই দিয়েছেন সমস্যার বিবরণ. শিক্ষার্থীদের 24: একটি সময়ে এক বাইট. JASON HIRSCHHORN: এক বাইট. একটি বাইট কত বড় হয়? তার আকার বাইট হয়, তাই কি আমি অধিকার আছে লাগাতে পারেন? শিক্ষার্থীদের 25: এক. JASON HIRSCHHORN: এক. রাইট. এর আয়তন একক বাইট হয়, তাই 1 1 বাইট. আমি একটি সময়ে পড়তে কত চান. শিক্ষার্থীদের 26: এক? JASON HIRSCHHORN: একটা জিনিষ. আমি আকারের এক জিনিস পড়তে চান 1, একটি সময়ে এক কামড়. আমি এটা পড়া এবং একবার যেখানে আমি এটা করা হয়? শিক্ষার্থীদের 27: গন্তব্য? JASON HIRSCHHORN: তাই আমি না লাগাতে পারেন এটা সোজা গন্তব্য মধ্যে. শিক্ষার্থীদের 28: আপনি করত রাখা করছি এটি একটি তৃতীয় পয়েন্টার মধ্যে? শিক্ষার্থীদের 27: গন্তব্যে. JASON HIRSCHHORN: ঠিক আছে. হ্যাঁ. শিক্ষার্থীদের 29: আপনি কিছু ডিক্লেয়ার করতে পারেন একটি অস্থায়ী স্টোরেজ আগে হিসাবে কাজ. JASON HIRSCHHORN: ঠিক আছে. আমার যে দিন. শিক্ষার্থীদের 29: আরেকটি ফাইল পয়েন্টার, হয়ত? JASON HIRSCHHORN: ঠিক আছে. তাই এই অকার্যকর তারকা - এটি একটি টাইপ অকার্যকর তারকা, তাই না হয় একটি ফাইল পয়েন্টার হতে হবে. আর আমি এক বাইট পড়া করছি যদি, একটি ভাল জায়গা হবে যেখানে এক বাইট জমা করার? শিক্ষার্থীদের 29: একটি অ্যারের? JASON HIRSCHHORN: একটি অ্যারে. ঠিক আছে. এবং কিছু যে কি কি হয় মাত্র এক বাইট আকার? শিক্ষার্থীদের 30: একটি গৃহস্থালি *? শিক্ষার্থীদের 29: হ্যাঁ. JASON HIRSCHHORN: একটি গৃহস্থালি * এক বাইট নয়. শিক্ষার্থীদের 29: একটি গৃহস্থালি. JASON HIRSCHHORN: একটি গৃহস্থালি এক বাইট. রাইট? তাই আসুন এই বাফার কল করা যাক একটি জেনেরিক হয় সংরক্ষণ এই জিনিস জন্য ব্যবহৃত নাম কিছু সাময়িকভাবে. তাই আমি একটি বাফার তৈরি. রাইট? কিন্তু এটা * একটি অকার্যকর লাগবে. তাই হয়তো আপনি ঠিক যে এটা আকার 0 একটি বাফার হতে হবে. সুতরাং এটি একটি সঞ্চয় - ডান. কারণ এখানে এই অধিকার - গৃহস্থালি বাফার একটি অক্ষর, কিন্তু এই * একটি অকার্যকর লাগে - একটি পয়েন্টার. তাই আমি এখন এই না এবং পারে বাফার একটি পয়েন্টার. আমি আর কী করতে পারে? শিক্ষার্থীদের 31: গৃহস্থালি পরবর্তী একটি তারকা রাখুন. JASON HIRSCHHORN: আমি করতে পারে এটা গৃহস্থালি * তৈরি করেছেন. ঠিক আছে. আমি যেত না অন্য জিনিস কি? অথবা এর এই এক সঙ্গে নিয়ে চলুন. চর * বাফার, তাই কি আমি এখানে স্থাপন করা হয়? শিক্ষার্থীদের 31: বাফার. JASON HIRSCHHORN: বাফার. বাফার একটি গৃহস্থালি একটি পয়েন্টার. এবং যে অবস্থানে, আমরা নির্বাণ করছি আমরা পড়েছি কিছু এক বাইট. হ্যাঁ. Avi. AVI: শুধু একটি দ্রুত প্রশ্ন. আপনি বাফার malloc করতে চান? JASON HIRSCHHORN: কে যা করতে পারেন যে প্রশ্নের উত্তর? শিক্ষার্থীদের 32: ওয়েল, এটা না না সত্যিই এই মুহূর্তে কিছু বিন্দু, তাই - JASON HIRSCHHORN: কিন্তু কি আমরা এটা malloc করতে চান? শিক্ষার্থীদের 32: আপনি এটা করতে হলে যে আপনার যা দরকার তা চাই কারণ ভাবে, আমি, হাঁ, অনুমান এটি নির্দেশ করার জন্য কিছু জায়গা. JASON HIRSCHHORN: আমরা কি এটা malloc আছে? শিক্ষার্থীদের 33: আপনি চলুন লুপ বাইরে এটি ব্যবহার করুন. JASON HIRSCHHORN: আমরা যাচ্ছে লুপ বাইরে এটি ব্যবহার? শিক্ষার্থীদের 34: হ্যাঁ. শিক্ষার্থীদের 35: অপেক্ষা করুন. আমরা তা ডিক্লেয়ার করতে চান অতিক্রম করতে লুপ? JASON HIRSCHHORN: তাই আমি মনে করি আমরা আছে অনুমান এখানে আমরা যে কিছু ছদ্ম যখন লুপ , চিন্তা করার চেষ্টা করে আমরা এখনো অর্জিত হয়নি. আমরা এটা malloc করতে হবে না. আমরা প্রধান অপারেটিং করছি, এটি শুধুমাত্র যাচ্ছে এই লুপ ভিতরে ব্যবহার করা হবে. এটি বিদ্যমান না প্রয়োজন এই বাইরে. সুতরাং এটি একটি স্থানীয় পরিবর্তনশীল হতে পারে. আপনি একটি পয়েন্টার আছে একটি স্থানীয় পরিবর্তনশীল. শিক্ষার্থীদের 36: কিন্তু এটা না কিছু ইশারা. JASON HIRSCHHORN: না, এটা না কিছু সক্রিয়া. কিন্তু আমরা এটি ব্যবহার করতে যাচ্ছেন না. আমরা কিছু করা চলুন এটা প্রথমবার আমরা এটি ব্যবহার. সুতরাং যে ঠিক আছে মনে হয়. তাই আমরা এখানে malloc হবে না. এবং আমি হিসাবে এটি ঠিক আছে মনে হয়. ঠিক আছে. আমরা fread লাইন আছে. এর পরের লাইন করুক না. আমরা একটি ফাইলে লিখতে চান, তা হল কি সেটা ব্যবহার করার জন্য একটি ভাল ফাংশন? শিক্ষার্থীদের 37: fwrite? শিক্ষার্থীদের 38: fprintf? JASON HIRSCHHORN: fprintf এক. অন্য এক কি? শিক্ষার্থীদের 39: fwrite. JASON HIRSCHHORN: fwrite. এবং আমাদের উদ্দেশ্যে, fwrite, আমরা এখানে যা দেখেছি, হয় সম্ভবত ভাল পছন্দ. এটা পাশাপাশি চারটি আর্গুমেন্ট লাগে. Nishant, আপনি দিতে পারেন আর্গুমেন্ট আমার? NISHANT: প্রথম এক এর চালু শুধু বাফার হতে. JASON HIRSCHHORN: ঠিক আছে. NISHANT: দ্বিতীয় এক মাত্র 1 হতে যাচ্ছে. তৃতীয় এক 1 হতে যাচ্ছে. এবং চতুর্থ এক DST হতে যাচ্ছে. JASON HIRSCHHORN: কেহ আছে যে লাইন সম্পর্কে কোন প্রশ্ন? যে দেখতেও ভাল. ঠিক আছে. তাই এখন এটা আমরা করছি এক জিনিস মনে হচ্ছে নিখোঁজ - আসলে, আমি কি লিখতে যাক এই শেষ লাইন. ফাইল বন্ধ করুন. কে লিখিতভাবে আমাদের পর্যন্ত শেষ করতে পারেন এই শেষ দুই লাইন? হ্যাঁ. দুঃখিত, আপনার নাম কি? লুসি: লুসি. JASON HIRSCHHORN: লুসি. লুসি: তারপর fclose SRC এবং fclose গন্তব্য. JASON HIRSCHHORN: fclose, খোলা paren, SRC, বন্ধ paren, সেমিকোলন. এবং fclose - হাঁ? লুসি: ওপেন বন্ধনী, DST এবং তারপর সেমিকোলন. JASON HIRSCHHORN: গ্রেট. এবং আমি শেষে কি অন্তর্ভুক্ত করা উচিত? লুসি: 0 ফিরে. JASON HIRSCHHORN: 0 ফিরে. আমি আছে? শুধু একটি প্রশ্ন. আমরা ফিরতি 0 অন্তর্ভুক্ত করার আছে? একাধিক ছাত্র: নং JASON HIRSCHHORN: নং মুখ্য স্বয়ংক্রিয়ভাবে এটি আছে আপনি শেষ পেতে হলে. কিন্তু আমি এটা চমৎকার চিন্তা স্পষ্টভাবে এটা অন্তর্ভুক্ত. আমরা অন্যান্য ফেরার করছি বিশেষ করে যখন প্রোগ্রামটি সারা জিনিস. ঠিক আছে. এই আমরা অনুপস্থিত করছি কি - কি যখন? কে কিছু মনে করতে পারেন - কিছু ধারনা আছে কি জিনিস সেখানে যেতে পারে? এটা কিছু কিছু pseudocode আছে এমনকি আপনি যদি ভাষা পছন্দ? আমরা সত্যিই কি কি - কি আমরা যতক্ষণ যেতে চান? হ্যাঁ, লুসি. লুসি: ফাইলের শেষে. JASON HIRSCHHORN: ফাইলের শেষে. সুতরাং আপনি ফাইলের শেষে দ্বারা কি বোঝাতে চেয়েছেন? লুসি: আপনি পৌঁছাতে একবার ফাইলের শেষে, থামাতে. JASON HIRSCHHORN: ঠিক আছে. তাই একবার আমরা ফাইলের শেষে পৌঁছানোর. আমরা পৌঁছেছেন যখন আমরা কিভাবে জানি ফাইলের শেষে? শিক্ষার্থীদের 40: আমি বাফার মনে শূন্য থেকে সেট করা হবে. শিক্ষার্থীদের 41: বাফার ঘোষিত হয় লুপ ভিতরে. JASON HIRSCHHORN: তাই আপনি যদি মনে করেন বাফার শূন্য নির্ধারণ করা হবে. কেন নাল নির্ধারণ করা বাফার করবে? শিক্ষার্থীদের 40: যখন আপনি কারণ fread, আপনি রাখতে চেষ্টা করছেন বাফার মধ্যে কিছুই. JASON HIRSCHHORN: ঠিক আছে. সুতরাং আপনি fread চিন্তা করছি - আমরা শেষ পৌঁছেছেন যখন ফাইল, কি fread করতে যাচ্ছে? আমি যে প্রশ্ন মনে করি আমরা চিন্তা করা আছে. Fread কী কাজ করে? এটি বাফারের মধ্যে শূন্য করা, বা না এটা অন্য কিছু না করে? আমরা কিভাবে এটা আছে কি চিন্তা করতে পারেন? শিক্ষার্থীদের 42: ম্যান. JASON HIRSCHHORN: ম্যান. সুতরাং আসুন এখানে উপর চেহারা. মূল্য ফিরুন. সাফল্য, fread অন এবং ফিরে fwrite পড়া বা লেখা আইটেম সংখ্যা. এই সংখ্যা বাইট সংখ্যা সমান সাইজ 1 শুধুমাত্র যখন স্থানান্তরিত. একটি ত্রুটি দেখা দেয়, অথবা শেষ হলে ফাইল উপনিত, ফিরতি মূল্য একটি হল সংক্ষিপ্ত আইটেমটি গণনা বা 0. সুতরাং আমাদের উদ্দেশ্যে, যদি fread ছুঁয়েছে ফাইলের শেষে, এবং থেকে সার্চ ফাইলের শেষে, বাকি কিছুই নেই পড়া, কি এটি ফিরে যাচ্ছে? শিক্ষার্থীদের 43: জিরো? JASON HIRSCHHORN: কি? শিক্ষার্থীদের 43: জিরো? JASON HIRSCHHORN: জিরো. এটি শূন্য ফিরে যাচ্ছে. তাই আমরা যদি আমরা করেছি যে fread, জানি ফাইলের শেষে পৌঁছেছেন, যাচ্ছে শূন্য ফিরে যাও. কিভাবে আমরা আমাদের সুবিধাজনক যে ব্যবহার করতে পারেন? AVI: আপনি বাইরে একটি ভেরিয়েবল ডিক্লেয়ার করতে পারেন চেক বলা লুপ. চেক সমান হলে - এখন জন্য - এক. JASON HIRSCHHORN: ঠিক আছে. AVI: এবং তারপর আপনি একটি যদি লাগাতে পারেন ডান fread বলছে পরে বিবৃতি যদি fread শূন্য সমান - কোন. JASON HIRSCHHORN: কে Avi সাহায্য করতে পারেন? AVI: মূল্য কি fread দ্বারা ফিরে? JASON HIRSCHHORN: আমরা শুধু যে উপর গিয়েছিলাম. AVI: আপনি এটা কিভাবে উপস্থাপন করব? JASON HIRSCHHORN: তাই এটি ফেরৎ - যাক এর এখানে সন্ধান - এটি একটি ফেরৎ মূলত যা size_t গণনা, একটি পূর্ণসংখ্যা. সুতরাং এটি একটি পূর্ণসংখ্যা ফেরৎ. এবং আমাদের ক্ষেত্রে, এটা করবে 1 অথবা 0 ফিরে - 1 এটা এক জিনিস পড়তে হলে - এক বাইট, এবং 0 আমরা শেষ পৌঁছেছেন করেছি. সুতরাং fread যদি - হাঁ? শিক্ষার্থীদের 45: আপনি শুধু পূর্ণ লাগাতে না পারি মধ্যে fread (বাফার, 1, 1, SRC) লুপ যখন? JASON HIRSCHHORN: তাহলে আপনি উত্থাপন করা সেখানে মধ্যে এই কাজ? [Interposing ভয়েসেস] JASON HIRSCHHORN: উপর রাখা. সুতরাং আমরা যে ridding করছি. সুতরাং আপনি নির্বাণ প্রস্তাব করছি fread সেখানে মধ্যে? কি আমরা সরানো উচিত আপনি তা করতে চান? শিক্ষার্থীদের 45: বাইরে বাফার. JASON HIRSCHHORN: আমরা উচিত এছাড়াও এখানে এই আউট সরাতে. শিক্ষার্থীদের 45: কিন্তু যে ক্রমাগত এগিয়ে সরিয়ে নেয়া? [Interposing ভয়েসেস] JASON HIRSCHHORN: ঠিক আছে. তাই এই Okshar প্রস্তাবিত হয়. আমরা আমাদের বাফার তৈরি. আমরা যখন fread, তাহলে আমরা fwrite. এই উপর থটস? শিক্ষার্থীদের 46: আমার শুধু প্রশ্ন, কি হয় এটি আসলে কমান্ড fread চালানো? JASON HIRSCHHORN: গ্রেট প্রশ্ন. আপনি যদি একটি ফাংশন কল নির্বাণ হয়ে গেলে একটি শর্ত ভেতরে, যে আছে ফাংশন কল চালানো? আমরা আগে এই উদাহরণ দেখা করেছি. রাইট? শিক্ষার্থীদের 46: ঠিক আছে. হ্যাঁ. সুতরাং এটি চালানো আছে. JASON HIRSCHHORN: আমরা জিনিস দেখা করেছি যে আগে, আমরা যেখানে মত একটি শর্ত ভেতরে ফাংশন কল. যে ফাংশন কল চালানো আছে? হ্যাঁ. তাই উত্তর হবে হ্যাঁ. এই ফাংশনটি কল চালানো হবে. কিন্তু আবার, এটা আমরা চাই কি? আমরা চিন্তা করতে পারে একটি উপায় কি এটা আমরা চাই কি আউট যদি? একাধিক ছাত্র: এটা চালান? JASON HIRSCHHORN: আমরা এটি চালানো হবে. আমরা তা করতে কিন্তু আগে, আমরা পারা এই মাধ্যমে কারণ. যদি - আমরা এক বাইট আছে বলে আমাদের আমরা এখানে পাবেন, ফাইল, আমরা এই কোড পাবেন. এই চালানো হবে. fread এক বাইট এবং ফিরে হবে এটি বাফারের মধ্যে সঞ্চয়. এবং এই, 1 থেকে নির্ণয় করা হবে ঠিক আছে, পরে তিনি 1 প্রদান. সুতরাং যখন 1. যে ভিতরে কোড মানে যখন লুপ চালানো হবে? শিক্ষার্থীদের 47: হ্যাঁ. এটা সত্য. JASON HIRSCHHORN: হ্যাঁ. 1 সত্য. এটা 0 না. তাই এখানে ভিতরে কোড চালানো হবে. সুতরাং আমরা যে লিখতে হবে. আমরা এই ফিরে সরানো করব লাইন আবার. এখন আমরা আছে - আমরা আমাদের ফাইলের শেষে করছি. আমরা আমাদের ফাইলের শেষে থেকে পড়া, আমরা কেবল এটা এক বাইট ছিল কারণ. Fread 0, দোকানে ফেরৎ বাফার কিছু. আমি ভাল জানি না কি এটি বাফারের মধ্যে সঞ্চয় করে. আমরা সম্ভবত সন্ধান পারে এটা আছে তা দেখতে. আমি ভাল জানি না. আমরা কি বজায় রাখে যারা, জানি না এটি বাফারের মধ্যে সঞ্চয় করে? কিন্তু এটা 0 ফিরে না. এবং 0 নির্বাহ করার সময় হবে? 0 চালানো না হবে. আমি তখন আমরা এখানে নিচে নামাও করব. সুতরাং আসুন হাতের একটি শো করতে দেওয়া এই যদি আমরা চালানো, বা আমরা যদি উচিত কোড হল প্রথম পরিবর্তন করা উচিৎ. আপনি কি মনে যদি তাই - আপনি ভোট দিতে হবে. আপনি আমরা এই কোড রান করা উচিত যদি মনে করেন যেমন আছে, আপনার হাত বাড়াতে করুন. ঠিক আছে. এক আছে - আপনি একটি প্রশ্ন, উদ্বেগ আছে? হ্যাঁ. শিক্ষার্থীদের 48: আমরা বাফার সরানো পর লুপ বাইরে, আমরা কি এটা malloc আছে? JASON HIRSCHHORN: গ্রেট প্রশ্ন. আমরা বাইরে বাফার সরানো পর লুপ, আমরা এটি malloc আছে? এটি একটি সুযোগ প্রশ্ন. আমরা বাইরে বাফার আরম্ভ হলে এই লুপ, এটি উপস্থিত হবে লুপ এর ভিতরে? একাধিক ছাত্র: হ্যাঁ. JASON HIRSCHHORN: হ্যাঁ. তার সুযোগ, লুপ এর ভিতর জুড়ে এবং সত্যিই,, কিছু ভিতর এটি নীচের সহ এই কোড, এর এখানে ভিতরে জিনিস. সুতরাং আমরা এটা malloc করতে হবে না. এটি একটি স্থানীয় পরিবর্তনশীল, এবং তার সুযোগ এখনও লুপ অন্তর্ভুক্ত. শিক্ষার্থীদের 49: আমরা এটি মুক্ত করা প্রয়োজন? JASON HIRSCHHORN: আমরা কি বিনামূল্যে বাফার প্রয়োজন? শিক্ষার্থীদের 49: হ্যাঁ, আমরা malloc না হলে. JASON HIRSCHHORN: আমরা কি বিনামূল্যে বাফার প্রয়োজন? আমরা না করতে. আবার, এটি একটি স্থানীয় পরিবর্তনশীল, তাই আমরা এটি মুক্ত করার প্রয়োজন হবে না. ঠিক আছে. এর কি দেখতে দিন. সুতরাং uninitialized হয়. এটা কি কিছু ছিল মার্কাস আগে প্রস্তাবিত. সুতরাং আমরা যে ত্রুটি, পরিবর্তনশীল বাফার আছে এখানে যখন ব্যবহৃত uninitialized হয়. আমরা এই কিভাবে ঠিক করতে পারবো? শিক্ষার্থীদের 50: এটা malloc? শিক্ষার্থীদের 51: শূন্য সাইটে সমান? শিক্ষার্থীদের 52: বাফার শূন্য সমান বলুন. JASON HIRSCHHORN: ঠিক আছে. ভাল মনে হচ্ছে. আমরা এখন এটা আছে. এর অনুলিপি করা চেষ্টা কিছু তৈরি করা যাক. সুতরাং আমরা আমাদের টেক্সট ফাইল আছে. কিভাবে আমরা এই প্রোগ্রাম রান করতে পারেন? হ্যাঁ. শিক্ষার্থীদের 53: আপনি বিন্দু কি করতে পারেন CP, test.txt কাট. এবং তারপর আপনি অন্য ফাইলের নাম পারেন তা সংরক্ষণ করবে যা. JASON HIRSCHHORN: ঠিক আছে. আমরা এটা out.txt ডাকবো. কুল? Seg ফল্ট. Seg ফল্ট নেভিগেশন থটস? এই মহান. কিভাবে আমরা জানতে পারেন যেখানে seg দোষ কি? কি? শিক্ষার্থীদের 54: GDB. JASON HIRSCHHORN: GDB. আমরা GDB ডট স্ল্যাশ লিখে GDB চালানো আমাদের প্রোগ্রামের নাম. সেখানে কোন কমান্ড লাইন আর্গুমেন্ট. আমরা একটি সেট চলুন প্রধান এ ব্রেকপয়েন্ট. আমি GDB শুরু করতে চান তাহলে, আমি কি করব? শিক্ষার্থীদের 55: আর তারপর আর কি: Jason HIRSCHHORN? শিক্ষার্থীদের 55: আর্গুমেন্ট? JASON HIRSCHHORN: তারপর কমান্ড লাইন আর্গুমেন্ট. এর ভিতর দিয়ে হেটে যাক. এন শুধু লাইন দ্বারা আমার লাইন গ্রহণ করা হয়. আমি যেতে চলেছি যতক্ষণ আমি আমার seg ফল্ট পেতে. আমার seg দোষ আছে. Fread সৃষ্ট মত দেখে মনে হচ্ছে আমার seg ফল্ট. আমি, fread আমার seg দোষ হত জানি যে কারণ লাইন আমরা শুধু মৃত্যুদন্ড কার্যকর. তখন ছিল শুধু যে যে লাইন ঘটছে - দুটি জিনিস ঘটছে হয়. Fread চালু ছিল, এবং তারপর আমরা ছিল কিছু যখন পরীক্ষা করছেন. আমি বাজি ধরতে ইচ্ছুক যে যখন চেক আমার seg ফল্ট ঘটাচ্ছে না. সম্ভবত, fread ছিল আমার seg ফল্ট ঘটাচ্ছে. আমি এখানে কিছু, memcopy দেখুন. স্মৃতি কপি. থেকে মেমরি সরানোর মত শোনায় অন্য একটি অবস্থান. ঘটতে পারে এমন কিছু মত শোনায় fread মধ্যে হয়ত, কিছু স্মৃতি এখানে এখানে থেকে সরানোর. এর আবার এই মাধ্যমে যাওয়া যাক. আমি কিভাবে এটা শুরু করবেন এবং আবার এটি চালানো? হ্যাঁ. শিক্ষার্থীদের 56: আপনি কি করা প্রয়োজন বাফার আগে একটি ampersand? JASON HIRSCHHORN: তাই আগে ampersand বাফার আমার ঠিকানা দিতে হবে * একটি গৃহস্থালি যা বাফার,. এর এই এক আরো সময় মাধ্যমে চালানো যাক. আমি কিভাবে আরো এক সময় এটি মাধ্যমে চালানো হয়? শিক্ষার্থীদের 57: Can আপনি শুধু আবার চালাতে টাইপ? JASON HIRSCHHORN: শুধু আবার রান টাইপ করুন. সুতরাং আমরা যাচ্ছেন না এই লাইন চালানো. তাই বাফার একটি NULL পয়েন্টার হয়. সঠিক? এটি প্রতি নির্দেশ করা হয় - দেখুন. আমরা যদি আমাদের - এই দ্রুত ছবি আঁকা. যদি সবাই দেখতে পারি আমি এখানে উপর লিখতে? সুতরাং স্ট্যাকের মধ্যে, আমরা একটি স্থানীয় আছে পরিবর্তনশীল এবং এটি বাফার বলা হচ্ছে, এবং এটি একটি গৃহস্থালি একটি পয়েন্টার এর. কি ঠিকানা এই গৃহস্থালি হয়? শিক্ষার্থীদের 58: 0x0. JASON HIRSCHHORN: রাইট. যে এই হয় কি. এখানে সালে বাফার ভিতরে, 0x0 সংরক্ষিত হয়. যে আমরা আছে কি - আমরা এই মুহূর্তে আছে সেটআপ. তাই এই লাইন, fread, কিছু রাখে যেখানে উৎস থেকে? এই বক্স বা এই বাক্সে? যা বক্স? বক্স বা ডান বাক্স বাম? এই অধিকার বাক্স. এটা পয়েন্টার অনুসরণ করে, এবং এখানে এটা বন্ধ রাখে. আমরা এ চেষ্টা করুন এবং টাচ স্মৃতি যখন অবস্থান 0, আমরা কি পেতে পারি? একটি সেগমেন্টেশন ফল্ট. আমরা এই মুহূর্তে আছে ত্রুটি আছে. হ্যাঁ. শিক্ষার্থীদের 59: আপনি নেই তারা বাফার করা? কোন বা? Fread জন্য? JASON HIRSCHHORN: তাই fread একটি পয়েন্টার লাগে. সুতরাং এটি বাফারের মধ্যে প্রেরণ করা হয়. এবং তারপর এটা পাবেন ডি রেফারেন্স কোথাও fread ভিতরে এটা. কিন্তু আবার, আমরা দেখেছি, এটি একটি পয়েন্টার লাগে. আমরা এটা তারা বাফার পাস করতে হবে না. যে ক্ষণস্থায়ী হবে এটা এখানে যাই হোক না কেন. এবং যে সম্ভবত আমাদের একটি ত্রুটি দেবে আমরা তা ডি উল্লেখ করছি কারণ. রাইট? আমরা এই পয়েন্টার-রেফারেন্স ডি করার সময়, যখন আমরা এই অবস্থান অ্যাক্সেস করতে চেষ্টা করুন, আমরা একটি ত্রুটি পেয়ে থাকেন - আমাদের সেগমেন্টেশন ফল্ট. তাই - ওহো. আমরা GDB আউট প্রস্থান করার জন্য চলুন. আমাদের লাইন - আমাদের সমস্যা - অধিকার এখানে এই লাইনে. এবং এটা একটা সমস্যা, কারণ এই লাইনের. কিভাবে আমরা একটি বক্স তৈরি করতে পারেন fread মধ্যে প্রবেশযোগ্য. রাইট? আমরা এক যে একটি বক্স তৈরি করা প্রয়োজন বাইট বড়, একটি গৃহস্থালি মাপ. কিন্তু আমরা যে বক্স সুগম হতে হবে এই ফাংশন executes যখন. তাই যেখানে - হাঁ. কোন ধারনা? শিক্ষার্থীদের 60: শুধু হিসাবে এটি সেট কোন র্যান্ডম অক্ষর. শুধু গৃহস্থালি বাফার সমান না চরিত্র. এবং তারপর, আপনি সেখানে বাফার যখন - JASON HIRSCHHORN: অপেক্ষা করুন. চর বাফার? তাই কোন তারকা? শিক্ষার্থীদের 60: হ্যাঁ. তারকা খুঁজে নিন. একটি র্যান্ডম অক্ষর সমান. JASON HIRSCHHORN: ঠিক আছে. তাই আমাকে এক দিন. শিক্ষার্থীদের 60: ভালো লেগেছে একটি বা কিছু. এবং তারপর আপনি বাফার আছে সেখানে, আপনি একটি ব্যবহার - শিক্ষার্থীদের 61: রাশি? ওহ না, ampersand. শিক্ষার্থীদের 60: ampersand ব্যবহার করুন. JASON HIRSCHHORN: ঠিক আছে. এবং কি fwrite এ সম্পর্কে কি? শিক্ষার্থীদের 60: আবার ampersand ব্যবহার করুন. JASON HIRSCHHORN: ঠিক আছে. সুতরাং আপনার ধারণা, হয় আমরা একটি গৃহস্থালি তৈরি এবং তারপর এটি কিছু করা, এবং যে গৃহস্থালি লিখতে. শিক্ষার্থীদের 60: হ্যাঁ. JASON HIRSCHHORN: কি মানুষ মনে হয়? শিক্ষার্থীদের 62: এটা সংবর্ত এর. JASON HIRSCHHORN: ঠিক আছে. এর এটি আঁকা যাক. তাই এই সময়, আমি এই আঁকতে চলেছি আমরা তাহলে এখানে স্ট্যাক লাল, এবং থাকবে - বিস্ময়! দুঃখিত. তাই এই সময় আমরা কিছু বলা আছে বাফার, এবং এটি স্ট্যাক এর. সঠিক? এবং আমরা প্রাথমিকভাবে, এটি একটি মধ্যে সংরক্ষণ করছেন. তারপর আমরা fread আমাদের কল আছে. কি fread তা থেকে একটি বাইট নেয় হয় না আমাদের ফাইল এবং কোথাও এটা বন্ধ রাখে. এটি যাই হোক না কেন এটা বন্ধ রাখে ব্যাপার হল এর প্রতি নির্দেশ করে. ভাল, আমরা এই ঠিকানা ছিল আগে - 0x0. এখন আমরা কি ঠিকানা আছে? শিক্ষার্থীদের 63: যাই হোক না কেন ঠিকানা বাফার হয়. JASON HIRSCHHORN: যাই হোক না কেন ঠিকানা বাফার হয়. এটা সম্ভবত হতে যাচ্ছে যে ভালো কিছু. সম্ভবত একটি বি দিয়ে শুরু করতে যাচ্ছে এবং তারপর একটি ফল, এবং ছয় অন্যান্য আছে হেক্সাডেসিমেল সংখ্যা. কোন ব্যাপার না. কিছু ঠিকানা. এবং আমরা এখনো সদস্য না যে ঠিকানা পার করছি এবং আমরা আমাদের এক করা চলুন যে ঠিকানায় বাইট জিনিস. সুতরাং আমরা আমাদের এক করা চলুন বাইট জিনিস এখানে ভিতরে. এবং তারপর আমরা থেকে লিখতে যাচ্ছেন ভিতরে এখানে কখনও কি. কেহ কোন প্রশ্ন আছে যে সম্পর্কে কি? কে এই কোড কাজ করবে মনে করে? আপনি কি মনে যদি আপনার হাত বাড়াতে এই কোড কাজ করবে. আপনি একটি ভঙ্গি নিতে. এবং যারা এই কোড কাজ করবে না মনে করে? আপনার হাত বাড়াতে. অন্য সকলে হওয়া উচিত তাদের হাত তোলা. ঠিক আছে. মাইকেল, আপনি যেখানে দাড়িয়ে আছে? মাইকেল: আমি সিদ্ধান্ত নিতে পারে না. কাইন্ড মাঝখানে. JASON HIRSCHHORN: আপনি আছেন মাঝখানে. একটি বাছাই করুন. মাইকেল: আমি বিশ্বাস করতে হবে এবং এটি কাজ করবে বলে. JASON HIRSCHHORN: ঠিক আছে. আপনি বিশ্বাস আছে এবং এটি কাজ করে বলবো? কি হয়েছিল? [Interposing ভয়েসেস] JASON HIRSCHHORN: না seg ফল্ট. কিভাবে আমরা দেখতে পরীক্ষা করতে পারবেন যদি দুটি জিনিস সমান? দুই ফাইল সমান. শিক্ষার্থীদের 64: পার্থক্য খুঁজুন. JASON HIRSCHHORN: পার্থক্য খুঁজুন. মধ্যে পার্থক্য জন্য পার্থক্য খুঁজুন চেক এটি ফেরৎ দুটি ফাইল, এবং, যদি কিছুই, তারা অভিন্ন করছি. আমরা খুলুন এবং, যদি আমরা আমাদের ফাইল পেতে. যাতে এর সঠিক সমাধান ছিল. এর তা আরো এক সময় ফিরে তাকান. আমরা আসলে এমন না এটি আরম্ভ করা প্রয়োজন. এটা সম্ভবত একটু দেখাবে আপনাকে করা না ক্লিনার সেখানে র্যান্ডম কিছু. বিন্দু হচ্ছে, আপনি তৈরি করতে প্রয়োজন থেকে কিছু জমা করার কিছু স্থান fread এবং কিছু গ্রহণ fwrite আউট. এবং যে জিনিস ছিল একটি স্থানীয় নয়তো হতে স্ট্যাক পরিবর্তনশীল - আপনি কিছু স্থান malloc'd করেছি পারে. সুতরাং আমরা আসলে হতে পারে লিখিত এখানে malloc, এবং যে কাজ করে. এবং তারপর আমরা সংরক্ষণ করা হত কোথাও গাদা আমাদের জিনিস. কিন্তু এই, সম্ভবত, আসলে সবচেয়ে মার্জিত সমাধান. শুধু স্ট্যাকের উপর কিছু স্থান তৈরি এই জিনিস যেতে জন্য. আমি দুই অন্যান্য মন্তব্য আছে. আপনি এই মোড় নিতে, এবং ছিল তারপর আমার মতামত, এই স্কোর পেতে নিম্নরূপ হবে. এই 1 এখানে, আমার জন্য, চেহারা ম্যাজিক সংখ্যার মত. এই 1, fread নিরিখে জ্ঞান করে তোলে. যে জিনিসের সংখ্যা বেশি পড়তে বা লিখতে. কিন্তু ঠিক এই এক করা উচিত সম্ভবত অন্য কিছু করা. তাই এক সমাধান কি? শিক্ষার্থীদের 65: বাইট এর আয়তন. JASON HIRSCHHORN: যে পছন্দ? শিক্ষার্থীদের 65: গৃহস্থালি এর আয়তন. JASON HIRSCHHORN: গৃহস্থালি এর আয়তন. হাঁ, বাইট একটি টাইপ নয়. গৃহস্থালির কাজ তাই মাপ. আমরা শীর্ষে, হতে পারে আমাদের কোড, # যা সংজ্ঞায়িত. কিছু বাইট এবং বলা এটি সত্যিই একটি গৃহস্থালি এর. বাস্তবিক, একটি আরও উন্নত পদ্ধতির এই হয়েছে পারে - uint. কেহ যে কি জানেন? দুঃখিত. আমি পিছন দিকে তা আছে. কোন, অপেক্ষা করুন. এটা কোন ভাবেই যান না? কেহ যে কি জানেন? হ্যাঁ. শিক্ষার্থীদের 67: প্রমিত সাহায্য অনুমিত সিস্টেম জিনিস জুড়ে যে আছে - স্বাক্ষরবিহীন পূর্ণসংখ্যার মত 8 বাইট আছে? JASON HIRSCHHORN: যে ঠিক অধিকার. বিভিন্ন যন্ত্র উপর, একটি গৃহস্থালি মাপ - না সাধারণত একটি গৃহস্থালি. চর সাধারণত এক বাইট হয়. কিন্তু অন্যান্য তথ্য ধরনের মাপ হয় একটি 32 বিট মেশিনের বিভিন্ন মাপ একটি 64 বিট মেশিনের বনাম. একটি uint8_t সবসময় 8 বিট - সবসময় এক বাইট. এবং আমি অন্তর্ভুক্ত করা প্রয়োজন যে মান int-হেডার ফাইল. সুতরাং এখন, এটা সম্ভবত হত এই কোড লিখুন সবচেয়ে ভালো উপায়. তাই আমি ম্যাজিক নম্বর পরিত্রাণ পেতে. এবং আমি আরো একটি লজিক্যাল আছে বাফার জন্য টাইপ করুন. এটি, এটি একটি বাইট হয়, কেবল একটি গৃহস্থালি নয় যা আমরা এটি বলে আশা করা হয়. এবং এখানে, আমরা আসলে করেছি কিছুটা জোরালো হয়েছে. আমরা যা একটি গৃহস্থালি এটা আহ্বান করছি না - হয়তো, কে জানে - একটি ভিন্ন হতে পারে বিভিন্ন মেশিনে আকার. আমরা আসলে এই ঠিক বলছে এক বাইট, সবসময়, কোন ব্যাপার কি. আমরা এখানে তাকান এবং, যদি আমরা CP করা. Uh-উহু. কি হয়েছিল? শিক্ষার্থীদের 68: এটা জাগ্রত হতে পারে. JASON HIRSCHHORN: কি? শিক্ষার্থীদের 69: এটা কি? শিক্ষার্থীদের 70: আপনি না একটি ধরন হিসেবে সংজ্ঞায়িত. শিক্ষার্থীদের 71: কিন্তু এটি করা উচিত মান সংজ্ঞায়িত করা. শিক্ষার্থীদের 72: কি করছেন? শিক্ষার্থীদের 73: define উচিত সব ক্যাপ করা? JASON HIRSCHHORN: তাই এটা না # সংজ্ঞায়িত. বাস্তবিক, এই ক্ষেত্রে, আমি আছি typedef ব্যবহার করা যাচ্ছে. আমরা হিসাবে এটি ব্যবহার করছেন কারণ এক স্থানে একটি ধরন. তাই এই ক্ষেত্রে, আমরা আসলে চান আমরা একটি নতুন ধরনের মুদ্রণ করছি মত typedef বাইট, এবং এটি এই মূলত,, হয়. এটি # define চেয়ে একটু আলাদা. এবং এখন, আমাদের কোড ঠিকভাবে কাজ. সুতরাং, আবার, # কিছু লাগে নির্ধারণ, সর্বত্র তা প্রতিস্থাপন অন্যান্য জিনিস দিয়ে. এটি শুধু একটি ম্যাক্রো এর - সাঁটে লেখার ম্যাজিক নম্বর পরিত্রাণ পেতে. কিন্তু এই ক্ষেত্রে, কারণ আমরা করছি একটি ধরন হিসাবে এটি ব্যবহার করে - এখানে ডান - যে কাজ করার জন্য, যাতে আমরা প্রয়োজন যাই হোক না কেন বাইট typedef করতে. এবং আমরা অধিকার এখানে তা নির্ধারণ করছেন. এটা আসলে এর একটি struct না শুধু একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা. এটা এক বাইট দীর্ঘ. এই কোড অনলাইনে পাওয়া যাবে, এবং হবে আপনি সব অধিকার এখন এটা থাকা উচিত. সুতরাং আমরা আছে - নিখুঁত - 13 মিনিট যেতে বাকি বেশি সমস্যা 5 সেট. আমি একসাথে copy.c ভিতর দিয়ে হেটে যেতে চাই এবং তারপর আমরা সংক্ষেপে কথা বলতে পারবেন অন্যান্য অংশ সম্পর্কে সমস্যা সেট. তাই আমাকে copy.c. থামা যাক আর শীতল জিনিস আমরা আসলে করেছি, হয় ইতিমধ্যে এই কোড অনেক লেখা. আমরা আক্ষরিক লিখেছিলেন কোড ঠিক আমি যখন এখানে এসেছিলেন আউট আমার নিজের এই লেখা. কিন্তু এই, copy.c হয় ফাউন্ডেশন ফর্ম প্রথম দুটি অংশ জন্য whodunit.c, জন্য সমস্যা সেট যা আপনি লিখুন প্রয়োজন, এবং resize.c. তৃতীয় এবং চূড়ান্ত যা Recover.c, সমস্যা সেট অংশ, নয় এই ফাইলের বন্ধ করে. আপনি যে ফাইলটি লিখতে প্রয়োজন চলুন, আমরা আপনাকে যে জন্য একটি টেমপ্লেট দিতে ফাইল, কিন্তু এটা কিছুই হয়েছে copy.c. কি কিন্তু copy.c জন্য ভিত্তি কারণ প্রথম দুটি অংশ, আমরা চলুন এখন এটা ভিতর দিয়ে হেটে, তাই আপনার আছে এটি কী একটি ভাল ধারনা. এবং মন্তব্য এটা কিছু দূরে দিতে. আমরা ইতিমধ্যে এই কিছু লিখিত করেছি. প্রথমত, আমরা এমনটা নিশ্চিত করছি আমরা তিন আর্গুমেন্ট পেতে. এর পরে, আমরা ফাইলের নাম স্মরণ করছি. সুতরাং আমরা এই পদক্ষেপ এড়ানো যখন আমরা আমাদের জিনিস কোডেড - যখন আমাদের CP. কিন্তু এখানে, তারা তৈরি করছেন একটু ক্লিনার এটি. তারা নিশ্চিত করুন চেক করছি উভয় ফাইল, ভাল তাদের খোলার ছাড়াও. আমরা শুধু এখন এই সব কোড লিখেছিলেন, তাই আমি আছি এই কোড অধিষ্ঠান যাচ্ছে না. পরবর্তী নির্দিষ্ট যে কিছু উপাদান হল আমরা ব্যবহার করছেন ফাইলের ধরন যা বিটম্যাপ ফাইল হয়. বিটম্যাপ ফাইল কিছু মেটাডেটা আছে এর সাথে জড়িত. তাই বাইট প্রথম দম্পতি ফাইল সম্পর্কে বলতে. তারা রং নয় যে ছবিতে পিক্সেল. তারা ফাইল সম্পর্কে বলতে. এবং যদি আপনি সমস্যা সেটকে পড়তে হলে, আপনি আরো অনেক তথ্য পাবেন মেটাডাটা স্ট্রাকচার কি ধরনের বিটম্যাপ সঙ্গে অন্তর্ভুক্ত করা হয়. আমরা এই প্রথম আছে কেন কিন্তু যে ঠিক এই কোড - এর সেট. আমরা মেটাডাটা পড়া হয় - মেটাডাটা দুই টুকরা - ফাইল হেডার এবং তথ্য হেডার. এবং আমরা তা কিছু অংশ পরীক্ষা করা হয় নিশ্চিত এটি একটি সত্য বিটম্যাপ ফাইল করা অব্যাহত আগে. এবং আবার, এই বিবরণ আমরা এখন যান, দরকার নেই. আপনি সমস্যা সেটকে পড়তে থাকে, আপনি এই বুঝতে হবে. লং সংক্ষিপ্ত বিবরণ, এই মাত্র বলছে, এই একটি বিটম্যাপ ফাইল, এবং যে নিশ্চিত. এর পরে, আমরা যারা লেখার আউট ফাইলে. আমরা এখানে দেখতে যে. আমরা খুঁজে পয়েন্টার যাও লেখার. এর পরে, আমরা প্যাডিং নির্ণয় করছি. তাই আবার, হিসাবে বিশেষত্ব সাথে আছেন একটি বিটম্যাপ ফাইল, কিছু লাইন অন্তর্ভুক্ত শেষে প্যাডিং. এবং যদি আপনি সমস্যা সেটকে পড়তে হলে, আপনি প্যাডিং সম্পর্কে আরো জানতে পারবেন. এই প্যাডিং খুঁজে সূত্র. মনে রাখা গুরুত্বপূর্ণ - আপনি একটি বিটম্যাপ মাপ পরিবর্তন করার সময় , প্যাডিং পরিবর্তন দায়ের. আপনি একটি মাপ পরিবর্তন করা হলে , প্যাডিং পরিবর্তন দায়ের. এটি হতে যাচ্ছে কখনো ছিল না 3 থেকে বড় - এটা, 3 মাধ্যমে সমেত 0 হবেন. কিন্তু আপনি মাপ পরিবর্তন করার সময় কিছু প্যাডিং পরিবর্তন. আমি শুধুমাত্র যে সারিতে এক পিক্সেল আছে, আমি , প্যাডিং তিন বাইট প্রয়োজন কারণ প্রতিটি সারির চার গুণিতক হতে হয়েছে একটি বিটম্যাপ ফাইলের মধ্যে দীর্ঘ বাইট. কিন্তু আমি এটা দুবার যদি এক পিক্সেল থেকে যেতে দুই পিক্সেল করার জন্য, প্রতিটি যা, এর কথা বলা যাক, একটি বাইট তারপর আমি প্রয়োজন হয় করা প্যাডিং দুই বাইট চার থেকে যে সমান. তাই আমি কিছু মাপ পরিবর্তন করা হলে, আমি পরিমাণ পরিবর্তন প্রয়োজন প্যাডিং আমি আছে. যে প্রত্যেকের জানার জন্য? এর পরে, আমরা প্রতিটি সারির উপর বারবার, বা সব সারি মাধ্যমে. এবং তারপর আমরা মাধ্যমে পুনরুক্তি প্রতিটি সারিতে প্রতিটি কলামের. আমরা চাই এই বিটম্যাপ চিকিত্সা করছেন একটি গ্রিড, মত আমরা চিকিত্সা করেছি 15 সালে বোর্ড. ভালো লেগেছে আমরা ইট চিকিত্সা যখন আমরা পর্দায় তাদের মুদ্রিত. সারি এবং কলাম একটি গ্রিড. তারপর - আমরা এই দেখেছি. আমরা আসলে শুধু এই কোডেড. আমরা কিছু অস্থায়ী স্টোরেজ তৈরি. আমরা তখন সেখানে পড়তে ও আমরা এটি লিখতে. এই আমরা ঠিক করেছিলাম ঠিক কি না. আমি বলেন এর পরে, কারণ প্রতিটি লাইন কিছু প্যাডিং মধ্যে শেষ হয়, আমরা যে প্যাডিং উপর লাফালাফি - পুরানো প্যাডিং. এবং তারপর আমরা তা ফিরে যোগ করুন. এই ক্ষেত্রে, আমরা তৈরি করছি একই সঠিক ফাইল. আমরা শুধু এটা কপি করছি. তাই এই লাইন ধরনের মূর্খ হয়. আমরা পারা আক্ষরিক শুধু ইন প্যাডিং করা তবে আপনি যদি ফাইলের আকার পরিবর্তন করা হলে, আপনি এখনও এই লাইন চান? আমরা একটি ফাইলের আকার পরিবর্তন তাই যদি, আমরা এখনও লাফালাফি করতে চান পুরানো প্যাডিং উপর? শিক্ষার্থীদের 74: হ্যাঁ. JASON HIRSCHHORN: তাই আমরা যা. এই আবার,, পুলিশ কারণ উৎস ফাইলের সাথে. আমরা প্যাডিং যত্নশীল না সোর্স ফাইল থেকে. আমরা পরের লাইনে যেতে চান. কিন্তু আমরা শুধু ফিরে লাগাতে না প্যাডিং পুরোনো পরিমাণ. আমরা ফিরে রাখা প্রয়োজন প্যাডিং নতুন পরিমাণ. সুতরাং আমরা একটি মাপ পরিবর্তন করছি ফাইল, আমরা এখনও বেশী লাফালাফি করতে চান পুরোনো ফাইলে প্যাডিং - কি আমরা থেকে এ পড়ি. কিন্তু আমরা লিখিতভাবে করছি, আমরা চলুন কিছু ভিন্ন প্রতিহত করা প্রয়োজন প্যাডিং সংখ্যা যে আমরা নির্ধারণ করেছি. হ্যাঁ. শিক্ষার্থীদের 75: ঐ দুটি ক্রম লাইন ঠিক আছে, ব্যাপার না? আপনি হ্যান্ডলিং করছি কারণ বিভিন্ন ফাইল. JASON HIRSCHHORN: যথাযথভাবে. এই দুই লাইনের অর্ডার কোন ব্যাপার না. আমরা এই লাইন লিখুন. এই ফাইলের জন্য এখানে হয় আমরা করতে লেখার. এটা গুরুত্বপূর্ণ, তাই আমরা পেতে প্যাডিং ঠিক পরিমাণ. এই ফাইল সঙ্গে মোকাবিলা করতে হবে. আমরা ডান লাফালাফি করতে চান প্যাডিং উপর. আমরা পড়তে চাই না - আমরা একটি সময়ে একটি বাইট পড়া করছি, আমরা যারা প্যাডিং বাইট যত্নশীল না. আমরা পরের লাইন স্থানান্তর করতে চান. অবশেষে লুসি আমাদের জন্য দিয়েছেন, ঠিক মত আমরা ফাইল বন্ধ করুন এবং 0 ফিরে. তাই এই copy.c. হয় এবং আমরা আসলে লিখেছে - আমরা অধিকাংশ ব্যয় মূলত, এই লেখা বিভাগে. আপনি এই করেছেন. তাই আশা করছি আপনি একটা ভাল ধারনা আছে এখানে কি করছেন এর. বড় পার্থক্য, সত্যি বলতে, শুধু হয় সঙ্গে পুলিশ যে এই প্রথম অংশ বিটম্যাপ ফাইল নিজস্ব চালচলন. তাই আমি আমার পরবর্তী স্লাইড হিসাবে আছে আমরা কি করতে হবে? ভাল, এর রহস্যময় গল্প নিয়ে চিন্তা করা যাক. আর কারো জন্য যিনি পড়বেন সমস্যা সেট, আমরা কি রহস্যময় গল্প মধ্যে কি প্রয়োজন? সহজ ভাবে. Aleja. Aleja: আপনি যদি অংশ গ্রহণ করতে পারি লাল উল্লেখ করে যে প্রতিটি পিক্সেল. এবং তারপর - ধরনের? JASON HIRSCHHORN: ঠিক আছে. তাই প্রতিটি অংশ গ্রহণ লাল উল্লেখ করে যে পিক্সেল. যে এটি সব বন্ধ, কিন্তু না. শিক্ষার্থীদের 76: হ্যাঁ, আছে এটা করতে বিভিন্ন উপায়. JASON HIRSCHHORN: ঠিক আছে. আমার এক উপায় দিন. শিক্ষার্থীদের 76: সব লাল নিন আউট, এবং তারপর জোর নীল ও সবুজ. JASON HIRSCHHORN: ঠিক আছে. সুতরাং এই উপায়ে উভয় দেওয়া - আমরা এটি একটি পিক্সেল দিতে মত, শব্দ এটা একটি লাল, নীল, সবুজ স্তর আছে. আমরা আপেক্ষিক মাত্রা পরিবর্তন করতে চান নির্ভর করে, লাল, নীল, সবুজ যে পিক্সেল উপর. এই কোডে আমরা পরিবর্তন করা উচিত কোথায় আপেক্ষিক, লাল, নীল, সবুজ একটি প্রদত্ত পিক্সেল মাত্রা. আমরা তা পড়েছি পর - আমরা এটি লেখার আগে? আমার লাইন নম্বর দিন. একাধিক ছাত্র: 83. JASON HIRSCHHORN: 83. সুতরাং এখানে ডান. রহস্যময় গল্প জন্য, কোড আপনি প্রয়োজন লেখার সব অধিকার আছে যেতে হবে. এবং যে শুধুমাত্র কোড এর আপনি লিখুন প্রয়োজন. আমরা শুনেছি মত, সব আপনি প্রয়োজন, কারণ না, এই আপেক্ষিক নীল পরিবর্তন হয় প্রতিটি পিক্সেল থেকে লাল, সবুজ এবং মাত্রা. আপনি এটা পড়েছি, এবং এখন আপনি আছেন এটি লিখতে যাচ্ছি. আমি কিভাবে পেতে পারি - আমি এই জিনিস আছে অধিকার এখানে, ট্রিপল বলা হয়, এবং এটি আছে RGBTRIPLE টাইপ করুন - ভাল, আমরা bmp.h মধ্যে লাগছিল, যদি, RGBTRIPLE কি? শিক্ষার্থীদের 77: এটি একটি struct এর. JASON HIRSCHHORN: RGBTRIPLE একটি struct হয়. আমরা ডান নিচে এখানে দেখতে. এবং তাই আমি,, বলতে এক্সেস চেয়েছিলেন struct লাল স্তর, কিভাবে আমি না এই struct লাল স্তর অ্যাক্সেস? [ক্লাস murmurs] শিক্ষার্থীদের 78: RGBTRIPLE.rgbtred? JASON HIRSCHHORN: যে সঠিক? শিক্ষার্থীদের 79: এটা ট্রিপল হওয়া উচিত পরিবর্তে RGBTRIPLE ডট এর বিন্দু,? JASON HIRSCHHORN: ট্রিপল. ট্রিপল স্থানীয় পরিবর্তনশীল, তাই এখানে, এখানে কোন পয়েন্টার আছে. তাই আমরা শুধু বিন্দু স্বরলিপি ব্যবহার. এই আমার লাল স্তর দিতে হবে. আমি এটা পরিবর্তন করতে চান, আমি শুধু সেট এটা নতুন কিছু করার সমান. তাই আবার, কোড এই লাইন ব্যবহারের এই এই struct ভিতরে পরিবর্তনশীল, এবং আমরা নতুন কিছু করতে এটা সেট করতে পারেন. সুতরাং রহস্যময় গল্প জন্য, আবার, এই হল, প্রকৃতরূপে, আমরা কি করতে হবে. অত্যন্ত সহজ. শুধু কিছু আপেক্ষিক মাত্রা পরিবর্তন, এবং যে কোড যায় যেখানে এই হল. অন্য দিকে, পুনরায় আকার, একটি বিট trickier হয়. আসলে, পুনরায় মাপ সম্ভবত এই সমস্যার trickiest অংশ সেট. আমরা এটা ধরে যেতে তিন মিনিট আছে. কিন্তু আবার, আমরা ইতিমধ্যে লিখিত করেছি এই কোড অধিকাংশই, তাই আমরা বেশ পরিচিত হওয়া উচিত. আমরা এ কাজ করতে চান কিছু জিনিস কি কি আপনি উপর পড়তে করেছি, মাপ পরিবর্তন সমস্যা সেট? আপনি আমাকে দিয়ে দিন, আমরা তাদের বিষয়ে কথা বলতে পারেন. আমরা যেতে চাই কিছু জিনিস কি কি? শিক্ষার্থীদের 80: উলম্ব - তাই আপনি, অনুভূমিকভাবে এটি মাপ পরিবর্তন করতে হবে কিন্তু উল্লম্বভাবে পাশাপাশি এটি মাপ পরিবর্তন? JASON HIRSCHHORN: সুতরাং আমরা দেওয়া করছি যদি পিক্সেল, এবং আমরা একটি দ্বারা এটি মাপ পরিবর্তন চাই দুটি ফ্যাক্টর, এটা এখন করা প্রয়োজন অনুভূমিকভাবে মাপ পরিবর্তন ও পরিবর্তিত উল্লম্বভাবে. যে জানার জন্য? হ্যাঁ. সুতরাং যে সম্ভবত সবচেয়ে বড় চ্যালেঞ্জ. এবং আমরা একটি সেকে মধ্যে যে বিষয়ে কথা বলতে পারবেন. হ্যাঁ. শিক্ষার্থীদের 81: আমি এটা চিন্তা উপায় আপনি মুদ্রণ এটি প্রয়োজন ছিল - JASON HIRSCHHORN: অপেক্ষা করুন. আপনি কি আমাদের বলতে না. আমরা যুক্তি মধ্যে কথা বলতে চলুন. শিক্ষার্থীদের 81: ঠিক আছে. প্রশ্ন কি ছিল? JASON HIRSCHHORN: আপনি ঠিক আপনার হাত উত্থাপিত. কোন প্রশ্ন ছিল. আমার তা উপস্থাপন করা যাক. আমাকে শুধু এই সংক্ষিপ্তভাবে আলোচনা করা যাক. সুতরাং আমরা, আমরা এক পিক্সেল চান করেছেন উভয় অনুভূমিকভাবে, এটি প্রতিলিপি নির্মাণ ও উল্লম্বভাবে. তাই মনে মনে কি আমরা এখানে না, হয় আমরা আমাদের পিক্সেল পড়তে, আমরা তা লিখুন বার কিন্তু অনেক. কিন্তু তারপর আমরা এখানে আমাদের কৌতুক আছে, কারণ তারপর আমরা করতে লাফালাফি করতে চান পরের লাইন এবং তা লিখুন পরের লাইনের শুরুতে. সুতরাং আমরা উভয় প্রতিলিপি নির্মাণ করতে চান অনুভূমিকভাবে এবং উল্লম্বভাবে, কি যে কি এক ভালো উপায় - ভালো, যদিও যে কি? সুতরাং আমরা ক্রমাগত চাওয়া দরকার নেই আমাদের ফাইল চারপাশে জিনিস লিখুন. যে প্রশ্ন আছে নাও হতে পারে অনুভূতি তৈরি, কিন্তু আমি মনে করি একটি এটি উত্তর দিতে সাহায্য করবে. শিক্ষার্থীদের 82: একটি অ্যারে তৈরি করুন! JASON HIRSCHHORN: সুতরাং আসুন মনে করা যাক একটি সারিতে হিসাবে প্রতিটি ফাইলের. এর সারি পরিপ্রেক্ষিতে মনে করি. আমরা আমাদের ছোট থেকে আমাদের প্রথম সারিতে আছে ছবি, আমরা যে সারি করতে পারেন বৃহৎ ছবি থেকে বৃহৎ সারি মধ্যে, এবং তারপর কিন্তু যে সারি প্রতিলিপি এটি প্রতিলিপি করা প্রয়োজন অনেক বার, বরং পিক্সেল দ্বারা পিক্সেল যাচ্ছে ছাড়া, যখন বিভ্রান্তিকর পায় যা ফাইল সঙ্গে লেনদেন. আমরা ছিল কারণ - আমি স্থান চলমান আউট করছি. এই আমাদের ফাইল, এবং আমরা আছে যে সেখানে এক পিক্সেল, এবং আমরা এটা করা চাই অধিকার আছে, আমরা এখনও কিছু কিছু বিষয় আছে ওইখানে আমরা যখন যেতে যে প্রয়োজন লেখা এবং আমাদের নতুন ফাইল তৈরি - আমাদের ফাইলে যে দুইবার হিসাবে বড়. কিন্তু ফাইল ফাংশন সঙ্গে সত্যিই কঠিন নতুন লাইন চারপাশে লাফালাফি করা যে মত, এবং তারপর এখানে ফিরে যান এবং সেখানে অনেক কিছু করা. এটা কিছু করতে প্রায় অসম্ভব সেই মতো, যে অর্থে তোলে যদি. আমরা সারি পরিপ্রেক্ষিতে মনে সুতরাং, যদি আমরা করতে পারেন আমাদের সারি গ্রহণ, এবং তারপর এটা করা - উল্লম্বভাবে সারি প্রতিলিপি. এবং যে আমরা resizing মোকাবেলা কিভাবে উল্লম্বভাবে বরং অনুভূমিকভাবে তুলনায়. যে ধরনের দ্রুত, এবং একটু বিভ্রান্ত. দুর্ভাগ্যবশত আমাদের সময় হয়. আমি আপনি তাদের জন্য বাইরে দাঁড়ানো হবে এখানে প্রশ্ন থাকে যারা পুনরুদ্ধার সহ সমস্যা সেট,. তাই আসুন এখন জন্য স্থগিত রাখা যাক. এবং আবার, যদি আপনার কোন প্রশ্ন থাকে তাহলে, আমরা বাইরে চ্যাট করতে পারবেন.