[সঙ্গীত বাজাচ্ছি] ডেভিড জে MALAN: এই ভালো হয় একজন নবীন সেমিনার আজ. ঠিক আছে. আউট তাই খুব বৃষ্টির. এই বুধবারে ঘটতে থাকে, কিন্তু সব আরো সুযোগ প্রশ্নের জন্য আজ. তাই আসলে শুরু করা যাক মাত্র কয়েক মিনিটের মধ্যে ফিল্ম সঙ্গে. কিন্তু আমরা সবসময় হিসাবে grandly শুরু করব. এটি CS50, এবং এই সপ্তাহে 4 শেষে হয়. আপনি কি দেখেছেন করেছি, তাই যদি টিভি বা সিনেমা যাহাতে কিছু কম্পিউটার বিশেষজ্ঞদের আছে এবং পুলিশ, বা FBI, বা কিছু সংস্থা কিছু ধরতে চেষ্টা করছে বিপক্ষ ভাল, আপনি করেছি সম্ভবত ", উন্নত" মত প্রকাশের শোনা যদ্দ্বারা যে প্রকর্মী একরকম magically অসীম মধ্যে zooms অপরাধীদের দেখতে পর্যন্ত পরিচয় বা লাইসেন্স প্লেট নম্বর একটি আয়না এমনকি চকমক মধ্যে বা কেউ এর চোখের জ্বলজ্বল. তাই প্রকৃতপক্ষে, এর কটাক্ষপাত করা যাক হলিউড থেকে কয়েক ধরনের দৃশ্য. [ভিডিও প্লেব্যাক] -OK, এখন আপনি একটি ভাল চেহারা পেতে দিন. -এটা ধরো. যে ফিরে চালান. -একটি মিনিট অপেক্ষা করুন. ডানে যাও. -আছে, যে নিথর. -পূর্ণ পর্দা. -OK, যে নিথর. আপনি, যে হবে আপ আঁট? যে এ -ভেক্টর ফিরে চাকা দ্বারা লোক. ঠিক এই স্পট ইন জুম. ডান সরঞ্জাম সাথে-, ইমেজ বৃদ্ধ এবং শাণিত হতে পারে. -ওটা কী? -এটা একটি বর্ধিতকরণ প্রোগ্রাম. যে পর্যন্ত কোন সুস্পষ্ট আপনি -পারি? -আমি জানি না. এটা উন্নত করা যাক. বর্ধিত অধ্যায় থেকে A6. -আমি বিস্তারিত উন্নত, and-- আমি মনে করি উন্নত যথেষ্ট, আমার পর্দায় এটি মুক্তি দেয়া হোক. -আমি তার চোখে প্রতিফলন উন্নত. -যাক মাধ্যমে এই চালানো ভিডিও বর্ধিতকরণ. -Edgar, আপনি এই বাড়াতে পারে? -লেগে থাকা. এই প্রতিফলন কাজ হয়েছে -I've. -কেউ এর প্রতিফলন. -Reflection. মানুষের মুখের একটি প্রতিফলন. -প্রতিফলন. একটি প্রতিফলন. আয়না ইন জুম. -আপনি একটি প্রতিফলন দেখতে পারেন. আপনি এখান থেকে ইমেজ উন্নত? আপনার অধিকার এখানে তাকে উন্নত? আপনি এটি উন্নত? আপনি এটা উন্নত করতে পারি? আমরা এই উন্নত? আপনি এটি উন্নত? এক সেকেন্ড হোল্ড, আমি উন্নত করব. দরজা ইন জুম. 10 -টাইমস. জুম. -চলে আসা. -আরো. -Wait, থামাতে. বন্ধ করুন. এটা-বিরাম. আমাদের 75 ডিগ্রী ঘোরান উল্লম্ব চারপাশে, দয়া করে. বন্ধ করুন. অংশ ফিরে যান আবার দরজা, সম্পর্কে. বিটম্যাপ করতে পারেন যে একটি চিত্র enhancer- পেয়েছেন? -আরে, হয়তো আমরা প্রদীপ ব্যবহার করতে পারেন সেন পদ্ধতি উইন্ডোজ মধ্যে দেখতে. -এই সফটওয়্যার শিল্পের রাষ্ট্র. -বাছাইযোগ্য Eigenvalue বন্ধ হয়. ডান -সঙ্গে এলগরিদম সমন্বয় -তিনি এর গ্রহণ বর্জন পরবর্তী স্তরে আলগোরিদিম, এবং আমি তাদের ব্যবহার করতে পারেন এই ফটো উন্নত. উপর লক এবং z- অক্ষ বিস্তৃত. বর্ধিত. বর্ধিত. বর্ধিত. -ফ্রিজ এবং উন্নত. [END টি প্লেব্যাক] ডেভিড জে MALAN: ঠিক আছে, তাই ঐ সব আসলে শব্দ হয়. তারা শুধু একটি একসঙ্গে গ্রথিত করছি আসলে যুক্তিসম্মত নয় যে ভাবে. এটা ভালো, আসলে, CS50 এবং কোর্স টিভি ও সিনেমা অনেক নিকুচি থাকে তোমার জন্য. যখন যারা কম্পিউটার বিশেষজ্ঞদের কারণ শর্তাবলী বন্ধ প্রাণবন্ত এবং বলার অপেক্ষা রাখে না হয় মত শৌখিন জিনিস eigenvectors, এবং z- অক্ষ, এবং অন্যান্য কোন সংখ্যা আসলে আরো পরিভাষা, তারা সত্যিই শুধু গাঁথন করছি শব্দ একসাথে সব খুব প্রায়ই. আমাদের আশা এক যে হয়, নেবার মাঠ পার্শ্ব প্রতিক্রিয়া হিসাবে এই মত, আরো মানুষ বিশ্বের আসলে তৌল পাবে এবং শুধু কি তাই সামান্য প্রভাবিত গুণমান এবং যারা ছায়াছবি সঠিকতা? বস্তুত, এর বাস্তবতা কটাক্ষপাত করা যাক. সুতরাং এখান থেকে কর্মীদের ছবি হয় মেরি, আমাদের শিক্ষার ফেলোগণ এক. এবং তিনি অনুমান কিছু সন্দেহ. এবং এখনো, একটি আভাস আছে তার চোখে প্রমাণের কিছু টুকরা, বা তার চশমা প্রতিফলন. ওয়েল, আমরা ফিল্মসের ঠিক করতে হলে আমরা জুম এবং "উন্নত" যাহাতে, প্রস্তাব, এই কত তথ্য Mary এর মুখে হয় আপনি কি চান একজন প্রতিচ্ছবি যখন যে মূল রেজোলিউশনে. এবং, আসলে, আপনি এই বিন্দু দেখতে পারেন. আর এগুলো কি হয় বলা পিক্সেল, পি-আমি-এক্স-ই-এল-এস, যা সাধারণত মাত্র একটি বর্গক্ষেত্র যে একটি চিত্র রচনা করে একটি বিন্দু. আর ফিরে দিন, এবং আসলে এমনকি আজকের নেতৃত্বাধীন টিভি কিছু আজ অথবা এলসিডি টিভি, আপনি পেয়েছেন আপনার রুমে অথবা বাড়িতে এক, আপনি এটা করতে সুপার বন্ধ আপ যান, এবং যদি এটি একটি কিছুটা পুরোনো টিভি, বিশেষত যদি, আপনি সম্ভবত এমনকি এই বিন্দু দেখতে পারেন এবং যে একটি ইমেজ কম্পোজ কি. আর কোন নেই এই তুলনায় তথ্য. আমরা অর্থে, "উন্নত" পারে ওভার এবং সাজানোর জিনিষ মসৃণকরণ ধরনের, সাজানোর কি inferring রঙ মেরি এর চোখের পাশে হওয়া উচিত যাতে এটা আসলে তাই pixelated না. কিন্তু আমি এ zooming রাখতে হলে, সেখানে তার চোখে খারাপ লোক হয়. যে সব ভালো হয় তথ্য আমরা আছে. আপনি তৈরি করতে পারবেন না কিছুই আউট তথ্য. শুধুমাত্র একটি নির্দিষ্ট নেই সেখানে বিট সংখ্যা. সমস্যা সেট 4, যেখানে তাই আপনি একটি সুযোগ আছে বিশ্বের এই ধরনের সাথে খেলতে. সমস্যা সেট 4, আপনি অন্বেষণ করব গ্রাফিক্স, এবং ফরেনসিক বিশ্বের, এবং আসলে কোড লিখুন যে হারিয়ে ইমেজ recovers. আপনি কোড লিখতে হবে যে বিদ্যমান ইমেজ নিপূণভাবে ব্যবহার এবং শেষ পর্যন্ত কি বুঝতে ফণা নীচে যাচ্ছে. আর, এটা আসলে, দেখা যাচ্ছে সব যে জটিল নয়. উদাহরণস্বরূপ, যদি আমরা করতে চেয়েছিলেন একটি হাস্যজ্জল মুখ যেখানে প্রতিনিধিত্ব এই কালো পিক্সেল সাথে, বা এই কালো বিন্দু, ভাল, আমরা কেবল প্রতিনিধিত্ব করতে পারে তাদের হিসাবে সত্যিই একটি বিটম্যাপ. আর যদি আপনি কখনও শুনেছেন প্রকাশের বিটম্যাপ, সম্ভবত এটি এখন একটি করতে শুরু একটু বেশি অর্থে আজ. আমরা ইতিমধ্যে একটি বিট কি জানেন. এটা 0 বা 1 এর. আর একটি মানচিত্রের ঠিক কিছু এক টুকরা কাগজ মত যে আপনি নির্দেশ দেয় এবং আছে হয়তো এক্স এবং ওয়াই-স্থানাঙ্ক একটি গ্রিড. তাই এখানে একটি বিটম্যাপ. এটা বিট একটি মানচিত্রের যদ্দ্বারা একটি 1 দৃশ্যত হয় একটি সাদা পিক্সেল প্রতিনিধিত্ব করতে যাচ্ছে, এবং একটি 0 একটি কালো পিক্সেল প্রতিনিধিত্ব যাচ্ছে. কিন্তু আমরা অবশ্যই এটি প্রায় টুসকি পারে. এটা সত্যিই কোন ব্যাপার না, তাই না আমরা সামঞ্জস্যপূর্ণ আছেন যতদিন. এবং এখানে ভিতরে binary-- মধ্যে, কিভাবে হয় একটি কম্পিউটার এর মেমরি, অথবা এমনকি ভিতরে আপনার হার্ড একটি ফাইলের drive-- আপনি সংরক্ষণ করতে পারে হাস্যজ্জল মুখ ইমেজ সহজ. কিন্তু আমরা কি হয়, অবশ্যই, এই ছবিটি উদাসীন? রঙ, ডান? এটি একটি সুস্পষ্ট পরবর্তী পদক্ষেপ বা বর্ধিতকরণ রঙের সাথে এই উন্নতি. তাই দুর্ভাগ্যবশত মাত্র এক ক্লিকেই সঙ্গে বিট, 0 বা 1, আমরা রঙ প্রতিনিধিত্ব করতে পারে. যে লাল, নীল বা হতে পারে, অথবা কালো, বা সাদা, সবুজ অথবা, অথবা গোলাপী, বা রং এর কোন জোড়া. কিন্তু সরলতা দোহাই, আমরা করব শুধু কালো এবং সাদা অনুমান. সুতরাং যুক্তি আমরা যদি প্রয়োজন কি আমরা একটি ছবিতে রং বাস্তবায়ন করতে চান? আমরা কি করতে আছে? এখানে সীমিত ফ্যাক্টর যদি ভালো লেগেছে যে এক বিট সঙ্গে আপনি শুধুমাত্র পারেন হয় দুই রাজ্যের 0 বা 1, সাদা প্রতিনিধিত্ব অথবা কালো, আপনি কি করতে চান না? শ্রোতা: আরো তথ্য. ডেভিড জে MALAN: আরো বিট, হ্যা আরো তথ্য, আরো বিট. এবং, প্রকৃতপক্ষে, যে ঠিক কিভাবে রঙ ইমেজ প্রতিনিধিত্ব করা হয়. একটি একক বিট ব্যবহার, বরং 0 বা প্রতিটি পিক্সেলের জন্য 1, প্রতিটি বিন্দু, আপনি শুধু একাধিক ব্যবহার. হয়তো, আরো সাধারণভাবে, 8 ব্যবহার সমস্যা সেট, প্রকৃতপক্ষে 24 ব্যবহার, এবং 4, আপনি একটি ফাইল সঙ্গে খেলতে হবে সাধারণত 24 বিট ব্যবহার করে ফরম্যাট. কিন্তু তোমাদের অধিকাংশই হয় JPEGs সঙ্গে পরিচিত. আপনি কি কখনও গ্রহণ করে থাকেন তাহলে আপনার ফোনে একটি ছবি, বা আপলোড বা কিছু দেখা ফেসবুক, ফ্লিকার, কোনো সংখ্যা ছবি-ভিত্তিক ওয়েবসাইটের, আপনি করেছি সম্ভবত আগে একটি JPEG চিত্র দেখা. আর এটা এই ফাইলটি সক্রিয় আউট, বিন্যাস আমরা pset 4 মধ্যে ব্যবহার করতে যাচ্ছেন যদ্দ্বারা আপনি যাচ্ছেন ইমেজ পুনরুদ্ধার করতে হবে আমি ঘটনাক্রমে একটি থেকে মুছে ফেলেন যে ক্যামেরা দুর্নীতিগ্রস্ত মেমরি কার্ড, যদি আপনি হবে. এবং এটি সক্রিয় আউট যে যদিও কোন JPEG প্রশংসনীয় sophisticated-- হয় এটা অনেক বেশি বাস্তববুদ্ধিসম্পন্ন কালো এবং সাদা বিন্দুর চেয়ে নেই, কারণ আমরা একটি মুহূর্ত আগে দেখেছি আসলে অভিনব আলগোরিদিম যে তাই, কোন JPEG কম্প্রেস করার জন্য ব্যবহৃত হয় আপনি সত্যিই একটি চমৎকার থাকতে পারে, মানের ছবি কিন্তু ব্যবহার তুলনামূলকভাবে কম বিট. আর আমরা ফিরে আসবো দীর্ঘ আগে কম্প্রেশন. এটা প্রথম দেখা যাচ্ছে যে কোন JPEG ছবিটি তিনটি বাইট কোন ব্যাপার আপনি একটি ফটোগ্রাফ গ্রহণ করেছেন কি র মান 255, 216, 255 হয়. অন্য কথায়, আপনি যদি শুধু বিট যে প্যাটার্ন দেখতে, তিনটি হিসেবে এখানে প্রতিনিধিত্ব বাইট, বা 24 বিট, মোট উচ্চ সম্ভাবনা সঙ্গে আপনি আবিষ্কার করতে পারেন আপনি এই প্রথম তিনটি এটি এ খুঁজছেন কোন JPEG বাইট. আর এই কি পরিচিত হয় কোন JPEG স্বাক্ষর হিসেবে. ফাইল ফরম্যাটের একটি অনেক শুরু করার জন্য আছে ঝোঁক আউট 0 সেঃ এবং 1s নির্দিষ্ট নকশার সঙ্গে, যে জানালা, এবং ম্যাক অপারেটিং সিস্টেম, এবং iOS তাই, এবং অ্যান্ড্রয়েড জানেন ফাইল কি ধরনের তারা তথাকথিত ফাইল ছাড়াও, হয় এক্সটেনশন ফাইল অনেক আছে. আপনি আপনি JPG জানতে চান, যে কম্পিউটারে অন্য খেই. তাই এখন এই সময়ে পর্যবেক্ষণ করা যাক আরো টেকনিক্যালি একটু. আমরা দশমিক জানেন সিস্টেম 9 মাধ্যমে 0 হয়. আমরা বাইনারি 0 এবং 1 জানে. আর যদি আপনি কীভাবে PSet ফিরে মনে করেন 0, আমরা আপনার সাথে কুস্তি ছিল একটি সামান্য বিট, কিছু হেক্সাডেসিমেল বলা, আপনি 16 ডিজিটের আছে যেখানে, পরিবর্তে 10 বা পরিবর্তে 2. আর যারা সংখ্যা, কনভেনশন দ্বারা তারপর একটি 9 এবং মাধ্যমে 0 হয় F কি প্রতিনিধিত্ব করে যেখানে F, মাধ্যমে শুধু একটি দ্রুত বৈধতা হিসাবে দশমিক সংখ্যা, পরীক্ষা? সুতরাং, 15. এবং একটি মাত্র দ্বারা 10 প্রতিনিধিত্ব নয় আমি দিয়েছি যে ক্রম প্রকৃতি. এটা শুধুমাত্র একটি অবাধ রীতিনীতি কিন্তু এটা বেশ আদর্শ. আমরা এই প্যাটার্ন তাকান সুতরাং তিনটি আসুন বাইট শুধু তা তাকান শুরু কিভাবে সঙ্গে সামঞ্জস্যপূর্ণ এমনভাবে সাধারণত কম্পিউটার বিজ্ঞানীরা তাকান এবং ফাইল সম্পর্কে চিন্তা. আপনি অবশ্যই মনে করতে পারেন 0 সেঃ মধ্যে ফাইল, এবং 1s, এবং দশমিক, কিন্তু বাস্তবে আমরা বাইনারি ব্যবহারের প্রবণতা বা আরো সাধারণত hexadecimal-- ফিরে pset 0 থেকে. তাই আমাকে উত্থাপন করা যাক যে 255, 216, এবং 255 0 সেঃ এবং 1s শুধু এইসব নিদর্শন হয়. এবং যদি আপনি এই যদি পরীক্ষা করতে পারবেন আপনি 0 সপ্তাহ থেকে গণিত কাজ করতে চান. কিন্তু, এখন জন্য, শুধু অনুমান যে এই প্রকৃতপক্ষে সঠিক. আমি শুধু তিন দশমিক পুনর্লিখিত করেছি তিনটি বাইনারি মান হিসাবে নম্বর. এখন আমি কি করতে যাচ্ছি হয় শুধু কিছু সাদা স্পেস যোগ, শুধু পাঠযোগ্যতা দোহাই. এবং খেয়াল করুন, আমি শুধু যাচ্ছি জিনিষ বাদে সরাতে. তাই আগে পরে, আগে, পরে. আমি অন্যান্য আকর্ষণীয় কিছুই করছি শুধু তাই কিছু ছড়িয়ে চেয়ে যে নোটিশ আট প্রতিটি সেট বিট এখন চার বিট দুই সেট হয়. এই হেক্সাডেসিমেল কারণ দরকারী বিশেষ কেতাদুরস্ত কারণ প্রতিটি হেক্সাডেসিমেল ডাক 0 মাধ্যমে এফ, বা আরো নির্দিষ্টভাবে 0 মাধ্যমে 15, প্রতিনিধিত্ব করা যাবে ঠিক চার বিট সঙ্গে. অন্য কথায়, হেক্সাডেসিমেল আপনি যদি এটা শুধু 0000 এর, একটি 0 প্রতিনিধিত্ব করতে চান, চার শূন্য. এবং আপনি 15 প্রতিনিধিত্ব করতে চান, এটা চার বিট, যা 1111 এর. আর আপনি গণিত করতে হলে, এই বেশী জায়গা হয়, এই, 16s জায়গা যে তোমাদেরকে দিতে যাচ্ছে বরং যে যাচ্ছে দুঃখিত চাচ্ছি, বাইনারি, যে 15 আপনি দিতে যাচ্ছে, বেশী জায়গা, দুই দুই জায়গায়, চার ও এইট জায়গায়. তাই আমাকে যে উত্থাপন করা যাক Glosbe উপর চার বিট সেট আমরা চ কল চলুন কি. এটা সবচেয়ে বড় সংখ্যা আপনি চার বিট সঙ্গে উপস্থাপন করতে পারেন. আর ইতিমধ্যে আমরা হেক্সাডেসিমাল থেকে জানি, F হেক্সাডেসিমেল বৃহত্তম ডাক হয়. আমরা, সেখানে অন্য F পেয়েছেন দুই ওইখানে আরো. এবং এখন জন্য, শুধু বিশ্বাসের উপর নিতে আমি গণিত সঠিক কাজ করেছেন যে এবং যে বাম অর্ধেক যারা বিট, 1101 এর, হেক্সাডেসিমেল D হিসাবে একই জিনিস. এবং ডান হাত, 1000, মাত্র 8 হয়. এবং সহজ যে কেউ এর সঠিক, দেখতে? 8 প্রতিনিধিত্ব অধিকার যে এইট জায়গায় নীচে. সুতরাং আমরা এইট কলামে এক আছে এবং হামাগুড়ি দিয়া, দুই দুই বা বেশী কিছুই. তাই এখন আরো সাধারনত, মানুষের ঝোঁক এই মত হেক্সাডেসিমেল সংখ্যা লিখতে, আপনি শুধু তাদের একসঙ্গে ঝুপ্ এবং তারপর আপনি 0x সঙ্গে তাদের উপসর্গ. এটা ছাড়া অন্য কিছুই মানে একটি human-- একটি চাক্ষুষ খেই এখানে একটি হেক্সাডেসিমাল value-- কারণ আসে এটা অন্যথায় সুস্পষ্ট নাও হতে পারে. যা আছে, তা শেষ পর্যন্ত, বলতে হয় zeros এবং বেশী প্যাটার্ন, বা হেক্সাডেসিমেল প্যাটার্ন সংখ্যা equivalently আপনি আছেন যে খুঁজছেন শুরু করতে যাচ্ছে সমস্যা সেট 4 আপাততঃ হয় এবং সমস্যা সেট 4 বৈশিষ্ট পায়চারি করা হবে আরো detail-- এই মাধ্যমে আপনি কিন্তু গোপনীয় সাজানোর হিসাবে বুঝতে পারছি এই প্রথম নজরে তাকান পারে আপনি এই অনেক দেখা শুরু করতে যাচ্ছেন. এবং সত্য, এমনকি GDB মধ্যে, ডিবাগার আমরা সোমবার চালু এবং ড্যান pset 3 এ, যাচ্ছে প্রবর্তন প্রায়ই আপনি হেক্সাডেসিমেল মান প্রদর্শন শুধু তারা আরো হতে থাকে, কারণ দশমিক বাইনারি বা বেশী প্রচলিত কম্পিউটার জগতে. এখন এই প্রেক্ষাপটে করা যাক. অনেক আপনি এই মনে হতে পারে এর কি থেকে যা এসেছিল, এখানে ছবি? ভিস্তা, তাই এমনকি আগে এর চেয়ে বড় যে, উইন্ডোজ এক্সপি এই আত্মপ্রকাশ করেনি. সুতরাং এই একটি সুন্দর আড়াআড়ি হয়. এবং বাস্তবিকই, আপনার online-- প্রায় অকর্মা যদি আমি এটি একটি উইকিপিডিয়া নিবন্ধ মনে করি, যাহাতে কেউ খুব বিস্ময়করভাবে বাইরে গিয়ে পাওয়া বিশ্বের এই পাঁচ সেট আপ তার ক্যামেরায় অবিকল সঠিক place-- এবং এই আজ করার মত মনে হচ্ছে কিন্তু এটা ঠিক একই সেটিং. এই ছবিটি, যদিও, একটি ফাইল হয় বিন্যাস বলা বিটম্যাপ, বি-এম-পি. আর আমরা একটি সুপার নিতে যাচ্ছেন এর মানে হল যে কি এ ঝলকে. কিন্তু বিটম্যাপ ঠিক একটি ভিন্ন উপায় প্রতিনিধিত্বমূলক ইমেজগুলি পিক্সেল ব্যবহার 0 সেঃ এবং 1s মধ্যে, শেষ পর্যন্ত. কিন্তু দ্রুত এক নজরে, এটা আছে আরো একটি আকর্ষণীয় স্বাক্ষর ফাইলের শুরুতে. এটা মাত্র তিনটি নয় বাইট, বরং আছে বাইটের নিদর্শন আভা যে অর্থ পূর্বাহ্নে আছে. উদাহরণস্বরূপ, কোথাও একটি বিটম্যাপ ইমেজ প্রথম কয়েক বাইট মাপ হতে যাচ্ছে ইমেজ, ইমেজ প্রস্থ, ছবিটি উচ্চতা, তাই দরকারী মেটাডাটা, যদি আপনি হবে. প্রয়োজনীয় তথ্য যে ফটোশপ অথবা কোন গ্রাফিক্স আপনি ব্যবহার করছেন প্রোগ্রাম আসলে যত্নশীল হতে পারে. এই প্রথম তাই বেশি সমস্যা 4 সেট, কিন্তু এই বলতে শুধুমাত্র হয় দিন শেষে আপনি ব্যবহার করে থাকেন সব ফাইল ফরম্যাটের years-- মাইক্রোসফট ওয়ার্ড ফাইল, নাম্বার ফাইল, এক্সেল ফাইল, ফাইল ফরম্যাটের কোনো সংখ্যা যে কিছু থাকতে পারে পরিচিত ফাইল এক্সটেনশন ফণা নীচে শুধু 0 সেঃ এবং 1s হয়. আর মানুষের সিদ্ধান্ত নিয়েছি নিয়মাবলী কি, কি 0 সেঃ এবং 1s নিদর্শন প্রতিনিধিত্ব একটি শব্দ, একটি এক্সেল ফাইল বনাম দায়ের অন্যান্য ফাইল ফরম্যাটের কোনো নম্বর বনাম. Pset 4 মধ্যে সুতরাং, আপনি একটি থাকবে সুযোগ যে সাথে খেলতে. কিন্তু এটা কি একটি struct আছে মানে. এই এখন আসলে একটা চমৎকার segue হয় শুধুমাত্র একটি দম্পতি আছে, যার মধ্যে সি, অতিরিক্ত বৈশিষ্ট্য যে আমরা এখনো লাগছিল না. এটি একটি খুবই ছোট ভাষা ও এক সি সম্পর্কে চমৎকার বৈশিষ্ট্য একটি struct হয়. উদাহরণস্বরূপ, আপনি যদি আসুন represent-- চেয়েছিলেন আপনি একটি পরিবর্তনশীল করতে চেয়েছিলেন বলে যে কিছু প্রোগ্রাম একটি ছাত্র প্রতিনিধিত্ব করে. হতে পারে আপনি একটি কোর্স ছিল লেখা রেজিস্ট্রেশন প্রোগ্রাম, বা কোর কেনাকাটা টুল, বা যে ভালো কিছু. সম্পর্কিত তথ্য টুকরা কি কি মনে আসে যে একজন ছাত্র কিভাবে? একজন ছাত্র ভালো লেগেছে মান সঙ্গে প্রতিনিধিত্ব? হ্যা? আপনি একজন ছাত্র হিসেবে একটি নাম আছে. একটি টিপিক্যাল ছাত্র আর কি আছে? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: সুতরাং, দুঃখিত. শ্রোতা: বয়স. ডেভিড জে MALAN: একটি বয়স বা জন্মদিন equivalently, হাঁ. আর কি? শ্রোতা: আইডি নম্বর? ডেভিড জে MALAN: হয়তো তাই একটি আইডি নম্বর, একটি ফোন নম্বর, হয়তো একটি আস্তানায়, অথবা ঘর, কলেজ, বা যে ভালো কিছু বা. তথ্য টুকরা যে কোন সংখ্যার যে আপনি আপনার পরিচিতি তালিকায় থাকতে পারে একটি ছাত্র সংজ্ঞায়িত করতে পারি কি না. আমরা কোড এ, এই কাজ করতে চেয়েছিলেন, তাই যদি, আমরা এই মত সহজ কিছু করতে পারে. আমরা যাতে একটি প্রোগ্রাম থাকতে পারে আছে, এর কথা বলা int প্রধান (অকার্যকর) দিন. আর আমি প্রতিনিধিত্ব করতে চান আমি উদাহরণস্বরূপ, থাকতে পারে ছাত্র, যে ছাত্র জন্য নাম নামক একটি স্ট্রিং, যে ছাত্র জন্য আস্তানায় নামক একটি স্ট্রিং, হয়তো কোন int যে শিক্ষার্থীর জন্য আইডি বলা. আর আমি স্ট্রিং ব্যবহার করছি কারণ, আমি cs50.h. ফিরে যান এবং আপ করা প্রয়োজন হয়তো আমি stdio.h প্রয়োজন যাচ্ছি. তাই আমাকে যাও preemptively যারা কাজ করতে দিন এবং আমি এখন জন্য এই student.c কল যাচ্ছে এবং এই সংরক্ষণ. এবং এখন আমি কিছু করতে পারেন এই ভেরিয়েবল সঙ্গে. আর আমরা শুধু লিখতে যাচ্ছেন যে ছদ্ম কোড একটি মন্তব্য হিসাবে, এটা আকর্ষণীয় না, কারণ আমরা এখন কি. ঠিক আছে, তাই এই একটি প্রোগ্রাম যে একরকম একটি ছাত্র সঞ্চয়. আমি হলে যা করতে চাও আমি দুই ছাত্র এ সঞ্চয় করতে চান? তাই আমার প্রথম প্রবৃত্তি যাচ্ছে একটি মিনিট অপেক্ষা করুন, সব ঠিক হয়ে যাবে, আমি অন্য ছাত্র আছে, কেন আমি না শুধু স্ট্রিং নাম 2, স্ট্রিং আস্তানায় 2 না, কোন int id2. আর আমরা যখন চলে করেছেন এই রাস্তা সামনে উপুড় এবং মনে হয় কি আমাদের সমাধান কি ছিল একটি hackish কপি পেস্ট ধরনের হতে এখানে কাজ? শ্রোতা: একটি অ্যারে. ডেভিড জে MALAN: হ্যাঁ, আমরা একটি অ্যারের ব্যবহার করতে পারে. ঠিক এই খুব দ্রুত জবরজং. আপনি ইচ্ছামত এর বাছাই আছে এই ভেরিয়েবল সব নামকরণ শুরু. আর আপনি মানুষের, রাখা আছে যে ওকে NAME2 অনুরূপ ট্র্যাক dorm2 সঙ্গে id2 সঙ্গে অনুরূপ. এটা শুধু একটা জগাখিচুড়ি হয়ে. সুতরাং এটি একটি অনেক সহজ কয়েক সপ্তাহ আগে থেকে প্রত্যাহার, শুধু বলা স্ট্রিং নাম থাকার এবং হয়তো আমাদের যারা তিন দিতে. এবং তারপর হয়তো আমরা আছে স্ট্রিং ছাত্রাবাসে ও আছে যারা তিন, বা একটি ধ্রুবক সাথে, আইডির int এবং ঐ তিনটি আছে. কিন্তু এমনকি এখন এই মতানুযায়ী একজন সামান্য পঙ্কিল, ঠিক আছে. আমরা এখনো ছাত্র এবং যে বিষয়ে কথা বলছি আমি সত্যিই নিম্ন স্তরে বাস করছি বাস্তবায়ন বিবরণ. ছাত্র একটি নাম ও একটি আস্তানায় এবং আইডি. কেন শুধু একটি ভেরিয়েবল ডিক্লেয়ার করা যাবে না ছাত্র বলা হয় এবং এটি গুলি কল. আর আমি অন্য ছাত্র চান তাহলে, কেন আমি শুধু টি কল না. অথবা আমি আভা চান শিক্ষার্থীদের, কেন আমি ঠিক না আমি একটি পুরো ক্লাসের আছে বলে ছাত্র, এবং এটা তাদের তিনটি আছে. অন্য কথায়, কেন আমি আসতে পারব না বলা আমার নিজের ডাটা টাইপ, সঙ্গে আপ শিক্ষার্থীরা, ভিতরে যা হয় একটি নাম, একটি আইডি একটি dorm হয়, অন্যান্য ক্ষেত্র কোনো সংখ্যা. এবং এটা আপনাকে দেখা যাচ্ছে ঠিক তা করতে পারে. তাই সি struct নামক এই বৈশিষ্ট্য আছে. একটি ভাষা যে বৈশিষ্ট্য যে আমাদের ঠিক এই কাজ করতে পারবেন. আমি এগিয়ে যেতে চলেছি এবং structs.h খুলুন আমরা দেখতে যাচ্ছেন যেখানে একজন ছাত্র সংজ্ঞা অনুসরণ. এটি সক্রিয় আউট - এবং এই এক এমনকি এর একটি আইডি জড়িত এক এর চেয়ে সহজ এক মুহূর্ত আগে. আপনার সাথে আসা করতে চান তাহলে আপনার গৃহ্য ডাটা টাইপ, এবং int ছাড়াও, এবং গৃহস্থালি ও , যে অস্তিত্ব এবং এই সব অন্যদের ভাসা আপনি আক্ষরিক দ্বারা তা করতে পারেন typedef struct লেখা, তারপর কিছু কোঁকড়া ধনুর্বন্ধনী, যার ভিতরে আপনি আপনি করতে চান ভেরিয়েবল তালিকায় এই নতুন কাস্টম তথ্য সঙ্গে সংযুক্ত একটি নাম এবং একটি dorm মত টাইপ, এবং তারপর কোঁকড়া ধনুর্বন্ধনী পরে আপনি নতুন ডাটা টাইপ করার জন্য একটি নাম দিতে. সুতরাং, উদাহরণস্বরূপ, ছাত্র. আর কি এখন এই সম্পর্কে চমৎকার হয় আমরা সংশ্লিষ্ট কোড তাকান, প্রথম কনভেনশন সব, এই করা হয় একটি ফাইল নামক কিছু ডট জ মধ্যে, আমরা না আছে, যা একটি হেডার ফাইল, খুব বেশী নিজেদেরকে ব্যবহার শুরু. কিন্তু আমরা শুরু করতে যাচ্ছেন এখন বেশ বিট ব্যবহার. আর আমরা এই কাজটা করা যায় কি, পরিণামে, এই কোড কয়েক লাইনে ঠিক যে ঘোষণা করা হয় ডাটা টাইপ, একজন ছাত্র. আর এখন এর ব্যবহার করা উচিত. আমি এখন ঢোকা যাচ্ছে না একটি ফাইল structs1.c বলা. আর এর একটি কটাক্ষপাত করা যাক এখানে কয়েকটি বৈশিষ্ট্য. তাই এখানে কোন উপাদান বেশিরভাগ পরিচিত, এবং আমরা করব কি নয় ফিরে আসা মাত্র কয়েক মিনিটের মধ্যে পরিচিত. অবশ্যই এটা আমার নিজের সহ হয় পাশাপাশি নতুন যা হেডার ফাইল, pset 3 যেখানে ছাড়া, রিকল, আমরা helpers.h আছে. সুতরাং আপনি #include helpers.h প্রত্যাহার করা হতে পারে. কেন যদিও আমি কোট ব্যবহার করছি পরিবর্তে কৌণিক বন্ধনী? যখন আমি তাদের মধ্যে নির্বাচন করতে হয়? প্রায় সবসময় আমি মনে কৌণিক বন্ধনী ব্যবহার করতে. এবং তারপর, একটি সব হঠাৎ করে লাইন ছয় আমি ডবল কোট ব্যবহার করছি. কেন যে হতে পারে? হ্যা? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: কি যে, একটি প্রকৃত কী? শ্রোতা: যে আপনার আইডিই এর. ডেভিড জে MALAN: হ্যাঁ, যে আমার প্রকৃত আইডিই এর. আর, কারণ এর আইডিই উপর বাস করা যাক যে শুধু আমি ব্যবহার করছি যে একটি হাতিয়ার. যে আমার বর্তমান আছে ডিরেক্টরি, বিশেষভাবে. সুতরাং structs.h আমার নিজের ফাইল IDE তে ইনস্টল করা, অপারেটিং সিস্টেম নিজেই, বরং এটা আমার বর্তমান ডিরেক্টরির মধ্যে. তাই প্রচলিত রীতি অনুযায়ী আপনি চান তাহলে হয় আপনার নিজস্ব হেডার ফাইল অন্তর্ভুক্ত করতে, আপনি শুধু ডাবল কোট ব্যবহার. আমরা এই জিনিস দোকানদারের কি দোষ লাইন 8, সাধারণভাবে বলতে? এই কি? # define কিছু. এই অধিকার, ধ্রুবক প্রতিনিধিত্ব? আপনি একটি আছে চান আপনার প্রোগ্রামে মূল্য আপনি একটি পুরো ব্যবহার করে সময়ের গুচ্ছ, এটা , এটি বিবেচনার কনভেনশন ভাল হ্যাশ চিহ্ন ব্যবহার করে, এটা ঘোষণা সব কনভেনশন দ্বারা, তারপর, সংজ্ঞায়িত এটা না যদিও word-- বড়হাতের কঠোরভাবে প্রয়োজনীয়, কিন্তু এটা মানুষের রীতিনীতি ধ্রুবক পুঁজিতে তারা আউট তিড়িং লাফ যাতে আপনি স্থান visually-- এ ও তারপর আপনি চান মান হতে যে ধ্রুব এর নাম সমতূল্য. কোন সেমিকোলন, কিন্তু কেবল আপনি সেখানে যে প্যাটার্ন অনুসরণ. তাই কি আমি এই প্রকৃত কোড করছি. সুতরাং আসুন কটাক্ষপাত করা যাক এখানে মূল প্রোগ্রাম. লাইন 12 আমি কারণ structs.h অন্তর্ভুক্ত আছে, আমি এখন এ magically আছে আমার নিষ্পত্তি একটি নতুন ডাটা টাইপ. আমি শুধু, int- এ অ্যাক্সেস না থাকে এবং গৃহস্থালি, এবং ভাসা, এবং স্ট্রিং, এবং নীল এবং অন্যদের. আমি এখন এক্সেস আছে একজন ছাত্র ডাটা টাইপ. লাইন 12, আমি দুই মিশ্রন করছি তাই , এক একটি নিজস্ব ডাটা টাইপ এবং দুটি ideas-- একটি অ্যারে ব্যবহার করে. আর তাই এই প্রোগ্রাম যদি এ আমি আসলে সমর্থন করতে চান তিনটি ভিন্ন ছাত্র আমার প্রোগ্রাম, আমি আমার একটি পরিবর্তনশীল দিতে বলতে কেবল পারেন যা প্রতিটি বলা ছাত্র, টাইপ শিক্ষার্থীর যা আমার নিজস্ব ডাটা টাইপ হল. আর, বিশেষভাবে, আমাকে দিতে আমার অ্যারের মধ্যে যারা তিনটি. তাই এখন আমরা এই প্রোগ্রাম কি করবেন? এখানে শুধু একটি লুপ iterating জন্য যে কারণ, 3 থেকে 0 শিক্ষার্থীদের মান কি. আমি শুধু ব্যবহারকারীকে করছি আমার ছাত্রের নাম দিতে. এবং তারপর লাইন 17 সালে আমরা একটি বেশিরভাগই পরিচিত লাইন আছে. আমরা আমাদের পুরনো বন্ধু আছে ডানদিকে GetString. সিনট্যাক্স এবং তা টুকরা দৃশ্যত নতুন আপনি আগে সি প্রোগ্রাম করেছি যদি, এবং structs ব্যবহার করেন নি? হ্যা? শ্রোতা: .নাম. ডেভিড জে MALAN: .নাম. কিন্তু এই একটি লীপ অত্যধিক নয় এখন ছাত্র আমি বন্ধনী কারণ আপনি আমি-তম ছাত্র দেয়. আর আপনি আকর্ষণীয় করতে চান যে কাঠামো ভেতরে, আপনি শুধুমাত্র একটি একক সময়ের ব্যবহার এবং তারপর ভিতরে পরিবর্তনশীল এর নাম, অথবা যে ভিতরে সম্পত্তি আপনি অ্যাক্সেস পেতে চান. একইভাবে, তারপর আমি তারপর প্রম্পট যদি ব্যবহারকারী, আমার ছাত্র এর আস্তানায় দিতে, আপনি একইভাবে যে সংরক্ষণ করতে পারেন ভিতরে আস্তানায় পরিবর্তনশীল স্ট্রিং যে ছাত্র কাঠামো. এবং এখন কিছু একটু অভিনব পেতে. আর এই দেখুন যাচ্ছে সম্ভবত অনেক সময়ে বেশ তাড়াতাড়ি. কিন্তু আপনি pset মধ্যে এই পর্যন্ত আরো দেখতে পাবেন 4, তাই এটি এখন এ মাত্র এক নজরে যাক. এটা লাইন 23 সালে মাধ্যমে দেখা যাচ্ছে যে 38, আপনি আমি সম্ভবত করছি কি মনে করেন? আমি মন্তব্য মুছে থাকেন আজ কিন্তু সংস্করণ জন্য অনলাইন কোডের রেফারেন্স সব মন্তব্যগুলি. আমি কাজ হবে বলে কি মনে কর? শ্রোতা: সব দিয়ে ফাইল সংরক্ষণ ব্যবহারকারী প্রবেশ করে তথ্য. ডেভিড জে MALAN: হ্যাঁ, ঠিক, এই একটি নতুন উপায় আমরা দুই দেখছি যে, সি এর আরেকটি বৈশিষ্ট্য, যদ্দ্বারা আমি আমার নিজস্ব ফাইল তৈরি করতে পারেন. সেটা অনেক দূরে, প্রায় প্রতিটি প্রোগ্রাম লিখিত করেছি আপনি দেশহীন. যত তাড়াতাড়ি এটা চলমান কাজ হিসাবে, যে এটি. কোন মেমরি বা এটা নিয়ে টনক আছে. সংরক্ষিত কোন ফাইল নেই. কিন্তু আপনি কি করতে চান তাহলে যে ইনপুট সংরক্ষণ একটি খেলা বা প্রোগ্রাম মত, ঘটেছে এই মত, এটা আমরা তা করতে পারি দেখা যাচ্ছে. এবং যদি আপনি এই আরো দেখতে পাবেন pset 4 এবং অনুচ্ছেদ. কিন্তু এই লাইন 23 মূলত students.csv নামক একটি ফাইল তৈরি করে. আপনি আগে এই দেখা হয়ে থাকতে পারে. আপনি আগে সি এস চর্চিত ছিল না, এমনকি যদি, CSV- তে কমা দ্বারা পৃথক ভেরিয়েবল হয়. এটা একটা খুব দরিদ্র মানুষ এর মত একটি এক্সেল ফাইল এর সংস্করণ, যা এটি খোলা হতে পারে এর মানে হল যে Excel এ এবং অ্যাপল নাম্বার, এবং এটা সারি এবং কলাম আছে. কিন্তু এটা একটি মালিকানাধীন নয় মাইক্রোসফট বা আপেল এর মত ফরম্যাটে. এটি পৃথক শুধু কমা এর আমরা একটি মুহূর্ত দেখতে পাবেন যে মান. আর মাত্র একটি অনুমান নিতে. খুব লাইনে 23, ইন শেষ, আমার দ্বিতীয় যুক্তি নামক এই নতুন ফাংশন F ফাইল খোলা জন্য খোলা W হয়. W কি বোঝান পারে? হ্যা? শ্রোতা: এটা আপনার ফাইলটি লেখার দেয়? ডেভিড জে MALAN: এটা দেয় আপনার ফাইলটি লেখার. তাই ভিন্নতা একটি দম্পতি আছে যে আমরা এখানে চলা যাবে. কিন্তু আপনি শুধু পড়তে চান তাহলে ফাইল, যে এটি তাকান হয় এবং, মেমরিতে আপনি এটা পড়তে শুধু উদ্ধৃতি উদ্ধতি "R" ব্যবহার. আপনি লিখতে চান ফাইল, আপনি "W" উদ্ধৃতি উদ্ধতি ব্যবহার. সেখানে লিখবেন এবং অন্যান্য জিনিষ একটি দম্পতি আপনি বিদ্যমান ফাইল পরিবর্তন করতে চান তাহলে. এখন আমরা এই এইজন্য রাখতে যাচ্ছেন 24 রেখায় জিনিস, তারপর আমরা ফিরে আসবো. শূন্য, এটি সক্রিয় আউট, হয় একটি বিশেষ মূল্য যে নির্দিষ্ট ফাংশন দ্বারা ফিরে যাবে কিছু wrong-- গেছে তাহলে ফাইল উপস্থিত না থাকলে, আপনি মেমরি রান আউট করেছি, তাহলে অন্যান্য ত্রুটি বা একটি গুচ্ছ. কিন্তু এখন জন্য, শুধু এই যে অনুমান করা যাক শুধু প্রচলিত ত্রুটি পরীক্ষা হয়. এখানে লাইন 26 সালে, আমি iterating করছি 0 থেকে আমার সব ছাত্র ওভার 3. আর এই ধরণের ধরনের একটি নতুন ফাংশন, fprintf, কিন্তু শুধু একটা আন্দাজ নিতে. Printf, শুধু প্রিন্ট হয় তাহলে একটি ফরম্যাট স্ট্রিং, fprintf সম্ভবত এর অর্থ কী? শ্রোতা: একটি ফাইল মুদ্রণ করুন. ডেভিড জে MALAN: মুদ্রন একটি একটি ফাইল ফরম্যাট স্ট্রিং. যে অতিরিক্ত কি চ মানে ফাইল. আর নতুন প্রথম যুক্তি হতে হয়েছে আপনার ফাইল প্রতিনিধিত্ব করে পরিবর্তনশীল. তারপর আমরা শুধু একটি বিন্যাসে আছে শুধু ভালো printf স্ট্রিং. এবং এমনকি এই যদিও সিনট্যাক্স এই মাত্র, নতুন ছাত্র এর নামে চলা মানে, ছাত্র আস্তানায় প্লাগ ইন, এবং তারপর fclose সাথে, ফাইল বন্ধ. এবং তারপর এই নতুন lastly-- এবং আমরা এই ফিরে আসবো আমি freeing করছি দীর্ঘ আগে কারণে ছাত্র যে আছে উপরে আপ ঘটেছে. কিন্তু আমরা ফিরে আসবো যে দীর্ঘ আগে যে কারণে হয় GetString কিভাবে এর আসলে ফণা নীচে কাজ. সুতরাং আসুন এখানে একটি দ্রুত কটাক্ষপাত করা যাক. আমি আমার ডিরেক্টরির মধ্যে ls ব্যবহার করে, আমি না যে, নোটিশ , students.csv নামক একটি ফাইল আছে ঠিক আছে না, তার কোন অস্তিত্ব নেই. আমি এখন এই প্রোগ্রাম কম্পাইল যদি তাই, , structs -1 করতে. / Structs -1, এবং আমি এগিয়ে যান এবং টাইপ করতে যাচ্ছি ইয়েল এ বার্কলে যারা বসবাস Andi,. আমরা রব আছে চলুন যারা এই দিন Thayer বসবাস. আর কোথায় নিয়ে আসা যাক হয়, আমি মনে করি, মারিয়া, মাথের মধ্যে যদি আমি সঠিকভাবে স্মরণ. তাই কিছুই ঘটবে বলে মনে হয়. কিন্তু আমি এখন ls ব্যবহার করে, students.csv নেই. আসুন এগিয়ে এবং খোলা students.csv যাই. এই আবার একটি খুব হয় লাইটওয়েট ফাইল ফরম্যাট. কিন্তু আমি কেবল একটি কনভেনশন গৃহীত করেছি যে আমি এখানে দুটি সারি এবং কলাম আছে. প্রথম কলাম মানুষ প্রথম নাম. দ্বিতীয় কলামে ছাত্রের হয় আস্তানায়, কলেজ অথবা, অথবা ঘর, বা যে কোন বস্তু. এবং এখন আমি এই সংরক্ষণ করেছি স্থায়ীভাবে একটি ফাইলে. সুতরাং এটা যে সব আকর্ষণীয় নয়. কিন্তু শুধু এই একটি পদবিন্যাস পাথর এখন তথ্য জিদ করতে সক্ষম হচ্ছে স্থায়ীভাবে. তাই এখন কি আমরা যত বেশি পারেন এর দেখতে দিন এই এবং অন্যান্য বৈশিষ্ট্য না. কিন্তু প্রথম, কোন প্রশ্ন? যে ছিল অনেক, এবং যে দ্রুত ছিল. কিন্তু আপনি অনেক কিছু দেখতে পাবেন pset 4 মধ্যে আরো, পাশাপাশি. হ্যা? শ্রোতা: একটি উপায় আছে যে ফাইল নাম যোগ করার সময় অবিরত? ডেভিড জে MALAN: গুড প্রশ্ন. অবিরত করার জন্য একটি উপায় আছে কি যে ফাইল নাম যোগ করার সময়? হ্যাঁ. এবং, আসলে, আপনি শেষ হলে আপ, ফাইল পুনরায় খোলার আপনি উক্তি ব্যবহার করবে উদ্ধতি "একটি" পরিশেষে জন্য, যা শুধু একটি নতুন লাইন যোগ হবে, একটি নতুন লাইন আবার এবং আবার, ঠিক. ভালো প্রশ্ন. অন্য প্রশ্ন? হ্যা? শ্রোতা: আপনি দৌড়ে তাহলে প্রোগ্রাম আবার ডান এখন, এটা করার নাম দিয়ে যাবেন ফাইল বা যদি একটি নতুন ফাইল খুলুন হবে? ডেভিড জে MALAN: আহ, ভাল প্রশ্ন. আপনি আবার ডান প্রোগ্রাম দৌড়ে তাহলে এখন, হয়তো নতুন নাম টাইপ, এটা ফাইল যোগ করা হবে বা ফাইলটি প্রতিস্থাপন? আধুনিক, আমি নই, কারণ পরিশেষে যোগ মোড ব্যবহার করা. আর আমি শুধু অন্ধভাবে নই, কারণ লেখার জন্য ফাইল খোলার, এটা শুধু ফাইলটি প্রতিস্থাপন করতে যাচ্ছে. তাই আমি তোমাদের লিখবেন যা করতে হবে, আমি আসলে একটি দীর্ঘ মেয়াদী করতে চান তাহলে ডাটাবেস. এখন CSV এমনকি, অকপটে, দরকারী জন্য চাই আপনি হন writing-- এবং আমরা শেষ পর্যন্ত এই দেখতে পাবেন পরে যখন সেমিস্টারে আমরা অন্য কাজে CSVs ব্যবহার. আপনি মানুষ সব সঞ্চয় করতে চান তাহলে যারা কিছু ইভেন্টের জন্য নিবন্ধিত হয়েছে অথবা আপনার ছাত্র জন্য সাইন আপ গ্রুপ, বা যে ভালো কিছু, এই ধরনের তথ্য সংরক্ষণকারী বিন্যাসের সুপার সুবিধাজনক. আক্ষরিক কারণ, আমি যদি এই ফাইলটি ডাউনলোড করতে হয়. আমি double-- পারে এবং এর আসলে এই চেষ্টা করা যাক আমি এখানে এক্সেল বা নাম্বার আছে. আমি ডান-ক্লিক করুন যাচ্ছি অথবা আমার ফাইল নিয়ন্ত্রণ-এ ক্লিক করুন. ওহো. ডান ক্লিক করুন অথবা আমার ফাইল নিয়ন্ত্রণ-এ ক্লিক করুন. চলো, আমার মাউস সহযোগী নয়. আমি যাচ্ছি Download-- তাই এখানে সব ফাইল ডাউনলোড ঠিক তাই আমি এই এক দখল করতে. আর এই কাজ করে তাহলে দেখা যাক students.csv-- প্রথমবার আমি সক্রিয় থাকেন. এখন তারা আমার পরিচিতি দেখতে চান. এখন, আমি রেজিস্টার করতে হবে. এটা CSVs ব্যবহার করা কত সহজ দেখুন? হ্যাঁ, এটিকে আপ টু ডেট রাখা. ঠিক আছে, এখন আমরা বর্গ জন্য প্রস্তুত হন. ওহ, ঠিক আছে, নতুন কি? ঠিক আছে, বন্ধ. যে ঐন্দ্রজালিক ছিল. ঠিক আছে, এখন আমরা আপডেট করতে হবে. এবং এখন, এটা ভুলে গেছি কি আমি মূলত খোলা ফাইল, কিন্তু সেখানে ছাগু karigor.com কি আমরা যেতে. ঠিক আছে, তাই এখন আমরা একটি এক্সেল ফাইল আছে. তোমাকে ধন্যবাদ. ঠিক আছে, তাই আমি কি সহজ ছিল. অবশ্যই আমি প্রাক ইনস্টল করতে পারে এক্সেল, বা নাম্বার, বা যাই হোক না কেন প্রোগ্রাম. কিন্তু এই কারণ, সুন্দর এখন আমি কি করতে পারেন নিপূণভাবে একটি মান বিন্যাসে তথ্য. তাই এখন যাক প্রেক্ষাপটে আমরা যেখানে আপনি বাম বন্ধ স্যুইচ শুরু করার জন্য, যা ছিল শেষ সময়, প্রশিক্ষণ চাকার অপসৃত করা. কিন্তু প্রথম, আপনি না এই আগে লাঞ্চ দেখতে আবার আগুন এখানে ঘটছে এবং নিউ হ্যাভেন কেমব্রিজ, সেতার মধ্যে আইস. যত শীঘ্র সম্ভব CS50s ওয়েবসাইটে সাইন আপ করুন CS50 ছাত্র এবং কর্মীদের যোগদানের জন্য. সুতরাং আমরা প্রশিক্ষণ চাকার গ্রহণ সোমবার বন্ধ অনুসরণ হিসাবে স্ট্রিং মধ্যে ঘোষণা করা হয়েছে কিছু সময়ের জন্য CS50s লাইব্রেরি. কারণ এটি করতে পারবেন এবং এটি চমৎকার আমাদের হচ্ছে ভেরিয়েবল সম্পর্কে কথা বলার জন্য সম্পূর্ণ শব্দ এবং বাক্য এবং আরও অনেক কিছু. কিন্তু এটা কোন অস্তিত্ব নেই স্ট্রিং দেখা যাচ্ছে. যে শুধু একটি প্রতিশব্দ, বা উপনাম হল, আমরা কিছু তৈরি করেছেন যে আসলে একটু বেশি হয় প্রযুক্তিগত * একটি গৃহস্থালি বলা. এবং প্রকৃতপক্ষে, আমরা একটি উদাহরণ দেখেছি সোমবার একটি প্রোগ্রাম যে আমরা আশা বেশ মতো আচরণ করা হয়নি. এই তুলনা -0, ফাইল ছিল. আর যদি, যে তুলনা-0 প্রত্যাহার আমি সোমবারের প্রোগ্রাম কম্পাইল এবং চালানোর-0 তুলনা এবং মায়ের টাইপ আবার ছোট হাতের মধ্যে ছোট হাতের অক্ষর, এবং মায়ের. প্রোগ্রাম আমি জোর বিভিন্ন জিনিষ টাইপ, এমনকি মায়ের সব যদিও ছোট হাতের অক্ষর, দৃশ্যত অভিন্ন. তাই সংক্ষিপ্ত উত্তর কি ছিল কম্পিউটার মনে করে কেন জন্য ঐ দুটি স্ট্রিং ভিন্ন? হ্যা? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: রাইট. তাই, মায়ের, প্রথমবার আমি হচ্ছে, তা টাইপ আমার কম্পিউটার এর কোথাও সংরক্ষিত মেমরি কিন্তু ভিন্ন অবস্থানে দ্বিতীয় সময় চেয়ে আমি মায়ের টাইপ. এখন এটা অবশ্যই অপ্টিমাইজ করা যায়নি. কম্পিউটার স্মার্ট হতে পারে এবং , আরে, এই দুটি স্ট্রিং বুঝতে পারছি তারা অভিন্ন করছি. আমার redundantly এটি সংরক্ষণ না করা যাক. কিন্তু কম্পিউটারের যে কি না অপ্টিমাইজেশান আপনি তাদের বলুন, যদি না. সুতরাং, ডিফল্টরূপে, তারা আছেন শুধু আপ শেষ হয়ে যাচ্ছে মেমরি দুটি ভিন্ন জায়গায়. আর তাই, যখন আরো স্পষ্ট করা আমরা, দুটি পংক্তি তুলনায় প্রথমে বলা হয়েছিল এর, দ্বিতীয় বলা হয় T, বিশেষভাবে আমি কি ছিল লাইন 13 এখানে তুলনা? হ্যা. শ্রোতা: এটা মেমরি জায়গা পরিবর্তনশীল নির্দেশ করবে যে. ডেভিড জে MALAN: ঠিক, আমি ছিল মেমরি জায়গায় তুলনা ঐ যে ভেরিয়েবল জোরাল. তাই বিশেষভাবে, তাহলে মায়ের ছিল বাইট সংখ্যা 1, এবং 2, এবং 3, এবং 4-- কারণ ব্যাকস্ল্যাশ স্মরণ 0 শেষে সব পথ করা প্রয়োজন. আর মায়ের, এম-হে-এম অন্য উদাহরণস্বরূপ, অঙ্ক 10, 11, 12, ও 13 এ ছিল. আমি 1 তুলনা ছিল, যে ঠিকানা, স্মৃতিতে যে অবস্থান, 10 বিরুদ্ধে, যা হয় অবশ্যই না একই. 1 10 নয়. সুতরাং এই যে সুন্দর হয় এটি বেশ সহজবোধ্য. কিন্তু এটা হিসাবে যতটা সমস্যাযুক্ত আমরা স্ট্রিং তুলনা মনে করতে পারে না. সুতরাং fundamentally-- এবং এই নিম্ন পর্যায়ে, আপনি বাস্তবায়ন করতে চেয়েছিলেন একটি প্রোগ্রাম তুলনা দুটি পৃথক শব্দ যে ব্যবহারকারী মানের জন্য টাইপ করা হয়েছে তারা চর আপ লাইন শুধু সাধারণ শর্তাবলী গৃহস্থালি, কি আমরা দৃশ্যত, কী করতে হবে? এটা শুধু যথেষ্ট নয় ঐ দুটি ঠিকানায় তাকান. আমাদেরকে কি করতে হবে? হ্যা? শ্রোতা: মাধ্যমে পুনরুক্তি স্ট্রিং [শ্রবণাতীত]. ডেভিড জে MALAN: হ্যাঁ, এর দিন স্ট্রিং মাধ্যমে বারবার. এর লুপ, যখন একটি লুপ জন্য একটি ব্যবহার করা যাক, বা আপনার সাথে সবচেয়ে আরামদায়ক যাই হোক না কেন. আর আমরা কোথাও দুই স্ট্রিং পেয়েছেন স্মৃতিতে, একে এর তাকান প্রথম অক্ষর, তারপর প্রতিটি দ্বিতীয় চরিত্র, তারপর তৃতীয়, ও চতুর্থ, এবং পঞ্চম আমরা আঘাত না হওয়া পর্যন্ত কি বিশেষ সেন্টিনেলে মান? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: হ্যাঁ, ব্যাকস্ল্যাশ শূন্য, হয় স্ট্রিং মধ্যে যা বিন্দু আমরা যে এটি সিদ্ধান্ত নিতে পারেন. আমরা প্রতিটি অক্ষর মিলেছে? যদি না হয়, তাই ফিরে এলাম. যদি তাই হয়, সত্য ফিরে. আর তাই যে কি এই সংস্করণে ঠিক প্রোগ্রাম তুলনা-1.c আছে. এটা অভিন্ন কি আমরা যে আমি করেছি ছাড়া সোমবার দিকে তাকিয়ে যদিও শব্দ পংক্তি পরিত্রাণ অর্জিত যে সব কোন কার্যকরী impact-- হয়েছে আমি এখন করছি অপসারণ করা হয় কিছু চাক্ষুষ প্রশিক্ষণ কায়দা করে, কিন্তু পরিষ্কারভাবে দেখতে যাও এর এবং T ঠিকানাগুলো. আর যে, কি তারকা তারকা, প্রতিনিধিত্ব একটি ঠিকানা অন্যথায় পরিচিত, হল আরো টেকনিক্যালি একটি পয়েন্টার হিসেবে. তাই আমি গুলি ঘোষণা যখন লাইন 9 এবং গৃহস্থালি * গুলি বলে, যে সম্পর্কে একটি স্ট্রিং দিতে না মানে. যে আমাকে যার একটি পরিবর্তনশীল দিতে মানে জীবনের উদ্দেশ্য একটি ঠিকানা সংরক্ষণ করা হয়. আমি লাগাতে সম্পর্কে নই সেটিকে একটি স্ট্রিং এর ঠিকানা. এবং প্রকৃতপক্ষে, GetString,, হতে পরিষ্কার, একটি স্ট্রিং ফেরত দেয় না. এটা মায়ের আসতে না ব্যাকস্ল্যাশ শূন্য, কোনটাই. বিশেষভাবে কি GetString না এবং সঠিকভাবে আসতে? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: একটি ঠিকানা, প্রথম অক্ষরটি ঠিকানা কিছু স্ট্রিং তা অর্জিত হয়েছে. আর তাই এখন আমরা দেখছি আবার একটি বিশেষ শব্দ. আর, আমি এই আগে উল্লিখিত. এই ভাল কনভেনশন হতে যাচ্ছে আমরা এখন আবার এবং আবার দেখতে পাবেন যে. আমি নিশ্চিত করুন যে আপনি চেক করছি এর নাল নয় এবং T নাল নয়. সত্যিই আমার উপর ভিত্তি করে কারণ দ্রুত উল্লেখ আগে GetString, না ফেরৎ যদি মানে কি হতে পারে একটি ঠিকানা কিন্তু আবার, যা এন-ইউ-এল-এল, কিছু বিশেষ মূল্য? শ্রোতা: ত্রুটি. ডেভিড জে MALAN: এটা একটা ত্রুটি. কিছু ভুল হয়েছে. আর তা সাধারণত বিশেষ করে, ঘটতে পারে strings-- যা দিয়ে হতে পারে advance-- অজানা দৈর্ঘ্যের হয়তো কম্পিউটার ' মেমরি আউট, হয়তো আপনি এই ধরনের একটি টাইপ করা দীর্ঘ শব্দ বা বাক্য বা এই ধরনের একটি বিশাল রচনা আটকানো শুধু পর্যাপ্ত মেমরি আছে. আর তাই GetString, আসতে পারবেন না গোটা ব্যাপারটাই ঠিকানা, তাই এটা শুধু কিছুই ফেরৎ. এবং এটি একটি ত্রুটির ঘটেছে বলেছেন বিশেষ NULL মান ফিরে. এটা তাই কথা বলতে, শূন্য ঠিকানা. এখন এটি সক্রিয় আউট সি দিয়ে আসে যে পুনরাবৃত্তির যে ফাংশন. আমরা সাথে এই বাস্তবায়ন করতে হবে না লুপ বা যখন একটি লুপ নিজেদের জন্য একটি. আমরা একটি ফাংশন ব্যবহার করতে পারেন, বলতে গেলে বলা হয়, যার, সঙ্গত আলোড়ন, বা স্ট্রিং তুলনা জীবনের উদ্দেশ্য ঠিক যে কাজ করতে হয়. আপনি এটিকে দুটি পয়েন্টার, দুটি ঠিকানার দিতে, এবং ঐ ঠিকানায় যেতে হবে এবং তারপর জন্য চিঠি তুলনা মানের জন্য চিঠি, সত্য কি শুধুমাত্র যখন বাঁধন? Intuitively, সঙ্গত আলোড়ন উচিত যখন শুধু পরিষ্কার iterating করা হবে থামাতে? এটা একটি ব্যাকস্ল্যাশ 0 হিট হয় স্ট্রিং, যা সময়ে এটা নির্ধারণ করতে পারবেন সবকিছু মিলেছে বা একটি অমিল আছে হয়েছে? আমরা এখন এই রান এবং যদি তাই হয়, চেষ্টা আমাদের সামান্য মূলধন খেলা, তাই তুলনা -1, ./compare-1 করতে, এবং ছোট হাতের উভয় বার মায়ের টাইপ. এখন এটা একই জিনিস. এবং আমি যাদের সাথে আবার এটা করতে হলে ছোট হাতের এবং তারপর হয়তো ধাঁচের. এখন এটি প্রকৃতপক্ষে আলাদা ঊর্ধ্ব এবং ছোট হাতের মধ্যে. তাই না সব যে কঠিন বা ঐন্দ্রজালিক, কিন্তু এটা এখন ব্যাখ্যা না কি ফণা নীচে যাওয়া. তাই আমরা যত বেশি নিষ্কাশন করতে পারেন কি পাঠ এই ধরনের থেকে? তাই আসুন এই কটাক্ষপাত করা যাক. আমি এগিয়ে যান এবং একটি লিখতে যাচ্ছি দ্রুত প্রোগ্রাম এখানে কপি-0 বলা. আর এখন আমি এগিয়ে এবং আসলে যেতে দিন , এর কপি-0 সাথে আপাততঃ না যাক আমি এখানে পেয়েছেন কি কটাক্ষপাত. আমি প্রথম ব্যবহারকারী বলছি, কিছু বলতে. তারপর আমি একটি স্ট্রিং পেতে এবং আমি এর মধ্যে এটি সংরক্ষণ করা. এর সমান হলে তারপর আমি পরীক্ষা শূন্য সমান, শুধু 1 আসতে. সুতরাং এই মাত্র স্ট্যান্ডার্ড ত্রুটি পরীক্ষা হয়. আকর্ষণীয় কিছুই ঘটেনি. এবং সত্য, আমরা ত্রুটি পরিত্রাণ পেতে হলে চেক, এই সপ্তাহে 1 কোড মত দেখায় এখন. কিন্তু আমি একটি পেতে শুরু করেছি যে সম্পর্কে কিছুটা ভালো. এখন লাইন 16 সালে, এক সপ্তাহ আগে, হয়তো এমনকি কয়েক দিন বা কয়েক মিনিট আগে, আপনি লাইন 16 হয় বলতে পারে একটি পরিবর্তনশীল নামক টি তৈরি এবং অনুলিপি সেটিকে গুলি. এবং যে একটি পুরোপুরি এর যুক্তিসঙ্গত Takeaway. কিন্তু এখন আরও ভালো হবে. লাইন 16 সালে কি ঘটছে? কি কপি হচ্ছে ডান থেকে বাম? হ্যা? শ্রোতা: T এর একটি ঠিকানা পাচ্ছেন? ডেভিড জে MALAN: ঠিক, T এর ঠিকানা হচ্ছে. আমি যদি যাই তাহলে তাই, এখন স্পষ্ট করা ফিরে যে আগে যেমন করতে এবং আমি টাইপ করেছি জিনিস আঁকা আউট. আর আমি টাইপ করেছি তা in-- এখানে গুলি, এবং এখানে আমি কোথাও টাইপ করেছি তা মেমরি, মায়ের এবং তারপর একটি ব্যাকস্ল্যাশ আমার জন্য যোগ যে 0. আমি কি এখানে সংরক্ষিত, প্রত্যাহার এই অবস্থান 1, 2, 3, 4 এ হল এই গুলি বর্তমানে কি হয়. লাইন 16 সুতরাং, যদি আমি আমাকে দিতে বলে অন্য পরিবর্তনশীল নামক T এবং দোকান এর মান এ, কি এখানে সংরক্ষিত পরার মায়ের না বরং শুধু সংখ্যা 1. আমরা এই প্রোগ্রাম যদি এগিয়ে চেহারা তাই এখন, কি ঘটতে যাচ্ছে? তাই আছে বিজ্ঞপ্তি এই ফাংশন আপনি পারে সিজার জন্য কিছু সময় আগে এই তথ্য ব্যবহার করে, অথবা Vigenere, হয়তো বা না এ সব. আমি আছি, আমার printf সঙ্গে দাবি কপি টি পুঁজিতে যাচ্ছে. প্রথম লাইন 19, দ্রুত বৈধতা মধ্যে , T এর strlen চেক দৈর্ঘ্য পরীক্ষা. কারণ আমি চাই না কিছু পুঁজিতে করার চেষ্টা যদি সেখানে কোন স্ট্রিং আছে. ব্যবহারকারী শুধু এন্টার তাহলে, পুঁজিতে করার কিছুই নেই. তাই আমি লাইন 21 করতে চাই না. তাই লাইন 21 ভিত্তি হয় যা দৃশ্যত চিঠি, T মধ্যে? শ্রোতা: M? ডেভিড জে MALAN: এটা দেখায় মত অনুলিপি করা যা এক? শ্রোতা: এম. ডেভিড জে MALAN: আহ, এম. ঠিক আছে, প্রথম M তাই, আমি যে বিজ্ঞপ্তি, কারণ , toupper করতে পার যা আপনি কখনও দেখা করেছি যদি এটা শুধু একটি ফাংশন তার ইনপুট হিসাবে পুঁজিতে. T বন্ধনী শূন্য দিতে মানে আমার টি শূন্য চরিত্র. তাই কিভাবে এই আছে ছবি পরিবর্তন, পরিষ্কার করা? কি পুনর্লিখিত বা পরিবর্তন করার জন্য প্রয়োজন এর সম্মান ও T এবং মায়ের সাথে ব্যাকস্ল্যাশ শূন্য. শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: হ্যাঁ, তাই এই এক এখানে কেবল আপাততঃ ঠিক চাচ্ছি পরিবর্তন করার জন্য প্রয়োজন একটি মূলধন এম পরিবর্তিত করার জন্য প্রয়োজন. কিন্তু এখন, পরে দেখুন প্রোগ্রাম, আমি প্রিন্ট আউট হলে আমি এখানে পরিষ্কার হিসাবে এর এবং T, কি ঘড়ি এর এবং T মুদ্রণ ঘটতে যাচ্ছে. তাই কপি-0, ./copy-0 করতে. আমাকে এগিয়ে যান এবং টাইপ করুন সব ছোট হাতের মধ্যে মায়ের মধ্যে. লক্ষ্য করুন উভয় আসল এবং কপি মূলধনী হয়েছে. কেন? ওয়েল, এর এবং T উভয় প্রতি নির্দেশ করা হয়, যদি আপনি হবে, মেমরি একই খণ্ড. এবং সত্যি, এই হচ্ছে সত্যিই আসলে uninteresting-- আমরা এখানে অঙ্ক শূন্য ব্যবহার করছেন. আমি বলতে চাচ্ছি, আমি সত্যিই কি যত্ন না যেখানে কাপড় মেমরি হয়. দুঃখিত আমি একটু অত্যধিক erasing করছি. কিন্তু আমি সত্যিই গ্রাহ্য না কিছু স্মৃতি আছে যেখানে. তাই প্রকৃতপক্ষে কি প্রোগ্রামারদের সম্পর্কে চিন্তা করার ঝোঁক আপনার সম্পর্কে কথা বলতে হলে যে হয় একটি ঠিকানা, অথবা একটি পয়েন্টার, এটি মেমরি যেখানে যারা বজায় রাখে. এটা এ যদি আমি না যত্ন বাইট অথবা এক বিলিয়ন. আমি শুধু এই যে যত্ন পরিবর্তনশীল কার্যকরভাবে হয় মেমরি যে তাল নির্দেশ করে. আর তাই, অত: পর, বরং টাল নির্বিচারে মেমরি অ্যাড্রেস ধরে, আসুন শুধু পয়েন্টার আঁকা শুরু তীরচিহ্ন হিসেবে পয়েন্টার, হিসাবে. সুতরাং এবং T সত্যিই কি এর এই প্রোগ্রাম অনুযায়ী, আমি T নির্মিত কিভাবে কারণ এটা শুধু দুটি পৃথক ভেরিয়েবল এর মেমরি একই খণ্ড নির্দেশ করে. যেখানে তারা এবং আমরা পরোয়া করি না. সুতরাং আমরা বিমূর্ত দূরে যে বিস্তারিত পারেন. সুতরাং কিভাবে আমি এই ঠিক করব? আমি কপি একটি সংস্করণ লিখতে চান প্রোগ্রাম যে আসলে কপি স্ট্রিং এবং শুধুমাত্র capitalizes কপি, শুধুমাত্র intuitively কি পেয়েছিলাম একটি হতে আমাদের সমাধান করার উপাদান? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: আমরা একটি কি প্রয়োজন? শ্রোতা: মেমরি খণ্ড. ডেভিড জে MALAN: আমরা প্রয়োজন মেমরি আরেকটি খণ্ড, ডান? আমরা জানি না কিভাবে অগত্যা, এখনো এটা না. কিন্তু আমি ধরনের তাই ঘটতে এই প্রয়োজন যে কম ক্ষেত্রে মূল মায়ের মেমরি যে অতিরিক্ত খণ্ড শেষ পর্যন্ত. এবং তারপর আমি কপি পরিবর্তন হলে, আমি এখানে এই কপি পরিবর্তন করতে চান না. আমি পরিবর্তে শুধুমাত্র এই পরিবর্তন করতে চান কপি যাতে মূল অপরিবর্তিত. সুতরাং, আসুন আমরা এই কাজ করতে পারে কিভাবে দেখতে দিন. কপি-1, ইতিমধ্যে যা মন্তব্য ছিনতাই হয়েছে, কিন্তু অনলাইন মন্তব্য করা হয়. আমরা পরিবর্তে নিম্নলিখিত এইসব কি লাইন অভিন্ন, সম্পর্কে একটি স্ট্রিং পেতে এবং এটি গুলি কল. কিন্তু এখন আমাদের সবচেয়ে এক তাকান জটিল কিন্তু জটিলতা শেষ অল্প সময়ের জন্য, লাইন 16 ঠিক এই আছে. সাথে আপনার আরামদায়ক, তাই যদি ছবি আমরা শুধু drew-- আমার মেমরি একটি নতুন খণ্ড দিতে সেটিকে সবকিছু কপি, আসুন আমরা কোড যে অনুবাদ দেখতে দিন. তাই লাইন 16, বাম দিকে, গৃহস্থালি * T এখানে ওভার আমার এই বক্স দেয়. যে এটা সব. ডানদিকে, এম alloc, বা malloc, সুপার অভিনব মেমরি বরাদ্দ, হয় শুধু বলছে একটি রহস্যপূর্ণ উপায় আমার মেমরি একটি খণ্ড দিতে. আমরা কত স্মৃতি প্রয়োজন? ওয়েল, একটি অভিব্যক্তি বড় ধরনের. কিন্তু এর তা এখানে বলে কি দেখতে দিন. তাই এই, অবশ্যই, দিতে হয় আমার s এর স্ট্রিং দৈর্ঘ্য. তাই, মায়ের এটা কি হওয়া উচিত? তাই মাত্র তিনটি, ডান? মায়ের তিনটি অক্ষর. আপনি গণনা করা হয় না ব্যাকস্ল্যাশ শূন্য যখন আপনি এটি একটি স্ট্রিং এর দৈর্ঘ্য সম্পর্কে কথা আসলে মানুষের দৃশ্যমান বর্ণ. তাই মায়ের, তাই এই 3 আমার দেয়. কিন্তু আমি এখন 1 যোগ করছি, একটি মিনিট অপেক্ষা করুন. কেন আমি আসলে চাই না 4 বাইট এবং শুধুমাত্র 3 বরাদ্দ? হ্যা? শ্রোতা: সেন্সিনেল মূল্য জন্য? ডেভিড জে MALAN: ঠিক, যে সেন্টিনেলে মূল্য জন্য. ব্যাকস্ল্যাশ শূন্য, আমি 4 বাইট মোট প্রয়োজন. তাই আমি দৈর্ঘ্য প্রয়োজন স্ট্রিং প্লাস 1 এর. এবং তারপর শুধু ভাল measure-- জন্য এমনকি এই সিস্টেমে যদিও, এটা সবসময় আমি বলার অপেক্ষা রাখে না 1 টি হতে যাচ্ছে একটি গৃহস্থালি এর আয়তন দ্বারা এই সংখ্যাবৃদ্ধি. Sizeof দেখা যাচ্ছে সি একটি অপারেটর যে শুধু আপনি বলে যে বাইটের সংখ্যা একটি নির্দিষ্ট ডাটা টাইপ জন্য প্রয়োজন. এটা অ্যারে জন্য কাজ করে না, সাধারণত, মাঝে মাঝে তা করে. কিন্তু সাধারণ ক্ষেত্রে, কোন. অনেক একটি বাইট কিন্তু কিভাবে এটি আমার বলতে হবে দেখা যাচ্ছে, যা গৃহস্থালি, সর্বদা 1 হবে. সুতরাং এই 1 দ্বারা গুন ভালো হয়. কোডের তাই সুপার রহস্যপূর্ণ খুঁজছেন লাইন. কিন্তু সব কিছু দেয় হল আমার মেমরি একটি খণ্ড. কিন্তু এটা কপি করা বলে মনে হচ্ছে না যে মেমরিতে কিছু? এখনো না. তাই লাইন 22 আমি কি, এবং 23, 24, 25, ওয়েল, আমি কেবল এই কাজ. আর এই ধরণের হয় এখন পুরানো স্কুল কাপড়. এই pset 2, যেখানে ভালো হয় আপনি শুধু কিছু চলন্ত করছি প্রায় মেমরি, অথবা বরং স্ট্রিং মধ্যে. তাই আমি 0 থেকে iterating করছি স্ট্রিং এর দৈর্ঘ্য. এবং আমি-তম অক্ষর অনুলিপি করছি T আমি-তম অক্ষর মধ্যে এর মধ্যে. আর আমি সিদ্ধান্ত নিয়েছি, প্রোগ্রামার, তৈরি ঠিক যেমন অনেক বাইট বরাদ্দ নিশ্চিত আমি প্রয়োজন হিসাবে, এটা একেবারে ঠিক এক-এক সম্পর্ক. এবং আমি মায়ের কপি নতুন এক ছোটহাতের. এবং তারপর সর্বশেষে, আমি এই লাইন না. আর তাই প্রভাব শুধুমাত্র হয় এখানে এই T পুঁজিতে. তাই অনেক শোষণ, কিন্তু আপনি শুধু বিবেচনা যদি সত্যিই কি ঘটছে ফণা নীচে শুধু এই চলন্ত হয় সব যে, প্রায় বাইট এই সমস্যা সমাধানের জন্য প্রয়োজন হয় শুধু আমাদের মেমরি এই অঞ্চলে দিতে. এখন ঝুঁকির মধ্যে অপ্রতিরোধ্য, আমাকে দেখানোর দিন প্রায় যে এক অন্য উদাহরণ এই এক জন্য প্রয়োগ করা কোড লাইন. সুতরাং এই হ্যাকার সংস্করণ এই প্রোগ্রামের, যদি আপনি হবে. কিন্তু এর মাত্র চুয়ান দিন এটা কি ঘটছে মধ্যে. লাইন 24 এই T ব্যবহার করা হয় বন্ধনী আমি গুলি বন্ধনী আমি পায়. এখন, আমি এই পরিবর্তন করছি আরো অনেক কিছু রহস্যপূর্ণ তারকা টি প্লাস 1 তারকা এর প্লাস 1 সমান. তাই কি ঘটছে এবং কেন আমরা একটি তারকা চরিত্র আছে না? আমরা আগে তারকা দেখা করেছি, এবং এটা ভিন্নভাবে এখানে ব্যবহৃত হচ্ছে. আমরা পূর্বে এখন আমি দেখছি, গৃহস্থালি * দেখেছি একটি শুরুতে এ তারকা, এবং যে ঠিক আছে. আমরা দেখা যাচ্ছে, কারণ ধরনের মাত্র আবিষ্কার করতে পারেন যারা প্রথম থেকে নীতি কি ঘটছে. তাই ঠিক পরিষ্কার হবে, এর কি? গত সপ্তাহে, এটি একটি স্ট্রিং ছিল. যে আর যথেষ্ট নয়. বিশেষভাবে, এর কি হল? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: এটা একটা পয়েন্টার. এটা এর ঠিকানা প্রথম অক্ষর আমরা টাইপ. ঠিক আছে, টি কি? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: প্রথম বাইট ঠিকানা T মধ্যে, মেমরি যে তাল reallocated. সুতরাং দেখা যাচ্ছে যে, যখন আমরা স্ট্রিং পর্যন্ত 0 থেকে বারবার দৈর্ঘ্য সর্বপ্রথমে আমি কারণ, 0 আরম্ভ বন্ধ লুপ জিনিসের জন্য এই পুরানো স্কুল. তাই শুধু সরলীকরণের জন্য, আসুন কোড যে প্রথম লাইন অনুমান সত্যিই শুধু এই, সঠিক. আমি শূন্য, যোগ শূন্য হয়, তাহলে কিছু সম্ভবতঃ একটি প্রভাব আছে যাচ্ছে না. তাই এই কি বলছে না? এটা তারা যে দেখা যাচ্ছে এই প্রেক্ষাপটে অপারেটর ডি-রেফারেন্স হয় শুধু যা অপারেটর, যেতে বলছে এর অভিনব উপায় নিম্নলিখিত ঠিকানায়. সুতরাং এর যদি প্রথম ঠিকানা মেমরি এই অঞ্চলে এ চরিত্র, * এর মানে সেখানে যান. আর আমরা টানা করেছি কারণ এই ভাবে ছবি, আপনি গ্রহণ করতে পারেন মানসিক মডেল অনুসরণ. এই গুলি হল, এবং আপনি * গুলি, * গুলি যদি বলি ধরনের Chutes এবং Ladders মত, আপনি শৈশব থেকে খেলা মনে যদি, যে তীর অনুসরণ এবং যেতে ভালো হয় ঠিকানায়. * T একই জিনিস. সুতরাং এখানে শুরু, তার খণ্ড যান. আমি শুধু প্রথম আহরণ করতে পারে না এই পর্দায় যে ভাবে. * T এখানে যাওয়ার মানে. এবং তারপর, লুপ জন্য শুধু নয় এখানে এই অক্ষর সরানো বলছে এখানে এই অক্ষর সরানো, এখানে এই অক্ষর সরানো. কিন্তু কিভাবে আমি যে incrementation করবেন? আমি শুধু মুছে কি পূর্বাবস্থা প্রয়োজন. সাধারণত বলা হয় পয়েন্টার এরিথমেটিক, যা ঠিকানার সঙ্গে গণিত মানে. তাহলে, এই লুপ জন্য, আমি বৃদ্ধিশীল রাখতে এবং এর একটি ঠিকানা এবং T একটি হল অঙ্ক, আমি শুধু 1 যুক্ত রাখা হলে, যে শুধু গতির রাখা মানে, এবং ফরওয়ার্ড, এবং মেমরি ফরোয়ার্ড. এটা অক্সফোর্ড স্ট্রিট মত, সি এস বিল্ডিং হয় যে রাস্তায়. সি এস ভবন 33 অক্সফোর্ড স্ট্রিটে হয়. যদি তাই আপনি 33 কি ছিল অক্সফোর্ড স্ট্রিট প্লাস 1, যে 34 অক্সফোর্ড আপনাকে এনেছে রাস্তার, তারপর 35 অক্সফোর্ড স্ট্রিট, তারপর 36 অক্সফোর্ড স্ট্রিট, যাই হোক না কেন যারা ভবন আসলে - যদি তাদের অস্তিত্ব. আর তাই, যে আমরা করছেন সব এখানে পয়েন্টার গাণিতিক সঙ্গে. সুতরাং এটি একটি সুপার গোপনীয় উপায় নিজেদেরকে প্রকাশ. কিন্তু সব যে ঘটছে ফণা নীচে শুধু এই ঠিকানাগুলির অনুসরণ করছে, একটি মানচিত্রের নিচের মত, যদি আপনি হবে, বা মত তীর অনুসরণ আমরা পর্দায় টানা করেছি. ঠিক আছে, অনেক হজম. সিনট্যাক্স উপর কোন প্রশ্ন, ধারণা, পয়েন্টার, malloc, বা ভালো. হ্যাঁ, এখানে ওভার প্রথম. শ্রোতা: তাই যে যেখানে * T এর toupper * T সমান বলেছেন পুঁজিতে যাচ্ছে যে সব অক্ষর বা ঠিক করা ডেভিড জে MALAN: আহ, সত্যিই ভাল প্রশ্ন. এখানে এই লাইন সুতরাং, 31, এই পুঁজিতে যাচ্ছে প্রথম অক্ষর বা বর্ণ সব. সুতরাং আসুন যাচ্ছে দ্বারা যে উত্তর দিন ফিরে প্রথম নীতির. এবং এখানে প্রথম নীতির আমি বলতে চাচ্ছি শুধু মৌলিক সংজ্ঞা যান জড়িত কি. সুতরাং এর toupper একটি ফাংশন যে একটি গৃহস্থালি capitalizes. এখানেই শেষ. * T first-- যেতে মানে T এ ঠিকানায় যান. সুতরাং, ছবি, এই অঞ্চলে তাহলে মেমরি আমরা malloc সঙ্গে বরাদ্দ, এবং এই T * T এখানে যান মানে, হয়. এদিকে, আপনি পার করছি যে মান, ছোট হাতের M toupper করতে, আপনি ফিরে পেয়ে থাকেন রাজধানী এম, যেখানে আপনি এটি স্থাপন করা হয়? আপনি যে একই স্থানে এটি স্থাপন করছি. তাই যারা এর যে যুক্তি দ্বারা মৌলিক সংজ্ঞা এটা কেবলমাত্র প্রথম অক্ষরটিই ভিত্তি আপনি আমি বা সঙ্গে বারবার তবে লুপ বা যখন একটি লুপ জন্য, এটা যাচ্ছে না আপনি এটা জিজ্ঞাসা বেশী কিছু করতে. ভালো প্রশ্ন. হ্যা? শ্রোতা: কেন আপনি ব্যবহার হয়নি পদ্ধতি বদলে ডি-রেফারেন্স অ্যারে? ডেভিড জে MALAN: আহ, ভাল প্রশ্ন. কেন আপনি ডি-রেফারেন্স ব্যবহার করতে হবে পরিবর্তে অ্যারে পদ্ধতি পদ্ধতি? কোন এক কারনে, সৎ হতে. এবং, আসলে, এই জন্য উদাহরণস্বরূপ ধরনের, ঠিক আছে, আমি শুধু উপার্জন arguing করছি আরো জটিল প্রোগ্রাম, আরো চোখের উপর চাকচিক্যময় হয় মানুষ চেক আউট হয় এই, সুপার গোপনীয় মনে হচ্ছে, কারণ কিন্তু এমনকি এটি একই জিনিস করছে, যদিও. আর তাই, উন্মুক্তভাবে, এই হল একটি অকারণে দৃশ্যত জটিল সমাধান সমস্যা. এটা, এখনও ভাল নকশা পাঁচটি নকশা জন্য পাঁচটি আউট, এটা বন্ধনীর মধ্যে কিনা স্বরলিপি বা পয়েন্টার স্বরলিপি. আমরা পেতে হলে, বিশেষ করে But-- পরে কোর্সে 5 pset মধ্যে আমরা যে অভিধান বাস্তবায়ন হলে যে আমি একটি বার দম্পতি উল্লেখ করেছি আমরা আসলে যত্নশীল হবেন নিম্ন স্তরের মেমরি অ্যাড্রেস আমরা সত্যিই বুঝতে পারে কি হচ্ছে. কিন্তু, এখন জন্য, এটা এই যে দেখা যাচ্ছে কোড এখানে বর্গাকার বন্ধনী লাইন সত্যিই কোন অস্তিত্ব নেই. তারা কি বলা হয় অন্বিত চিনি, যা বলার অপেক্ষা রাখে না শুধু একটি weirdly শীতল উপায় কম্পাইলার বর্গাকার বন্ধনী হতে পরিবর্তন যে গাণিতিক এক্সপ্রেশন. সুতরাং এটি একটি মানুষের রীতিনীতি শুধু লিখতে পাবে এইসব খুব ব্যবহারকারী বন্ধুত্বপূর্ণ বন্ধনী. কিন্তু কি কম্পাইলার, ঝনঝন, সত্যিই কোন সময় করছে আপনি লাইনে হাইলাইট করা হয়েছে তা লিখুন 24, ফণা নীচে এটি সত্যিই এই রূপান্তর. এটা একজন মানুষ হিসেবে শুধু আরও আনন্দদায়ক এর পড়তে এবং লাইন 24 মত কোড লিখতে. কিন্তু শেষ পর্যন্ত ঐ প্রশিক্ষণ চাকার খুব খসা নিজের আরাম পায় শক্তিশালী হলে. ঠিক আছে, তাই তখন যে এই প্রত্যাহার সবচেয়ে বড় সমস্যা ধরণের ছিল আমরা গাড়ীতে. আর যে এই পুরো sparked কি পয়েন্টার সম্পর্কে অভিশাপ কথোপকথন, এবং ঠিকানা, এবং অনুলিপি করা জিনিষ. আমরা উপর হোঁচট খেয়েছি, কারণ এটা ছিল এই স্টুপিড ইস্যু, যদ্দ্বারা আমি Lauren সঙ্গে logically-- বাস্তবায়িত এখানে ডেমো এবং কমলার রস আপ milk-- একটি পুরোপুরি algorithmically, সঠিক ফাংশন দুটি ভেরিয়েবল 'সোয়াপিং জন্য বর্তমান মানের, কিন্তু জঘন্য জিনিস কোনো ক্রমাগত আছে, বা করা হয়নি আমার কোড স্থায়ী, প্রভাব. আর যে ছিল কেন? সংক্ষেপে, এই হল কেন অদল-বদলের কাজটি বাস্তবায়ন কথাটি সঠিক, কিন্তু কোন প্রভাব রয়েছে এটি প্রেরণ করা হয় যে ভেরিয়েবলের উপর, প্রধান জন্য x এবং y মত? সমস্যা সারকথা কী ছিল? হ্যা? শ্রোতা: পরিবর্তনশীল প্রণীত কারণ পাস পরিবর্তনশীল কপি ফাংশন মাধ্যমে. ডেভিড জে MALAN: ঠিক, আপনি যখন পাস একটি ফাংশন মধ্যে ভেরিয়েবল, বা আর্গুমেন্ট একটি ফাংশন মধ্যে, তারা আছেন কপি কর্তৃক গৃহীত, যা আপনি খুঁজছেন একটি অভিন্ন পেতে মানে X এবং Y উভয় জন্য বিট প্যাটার্ন, A এবং B এখানে বলা. এবং আপনি কিছু করতে পারেন আপনি ঐ কপি চান, কিন্তু তারা কোন আছে চলুন কলিং ফাংশন উপর প্রভাব. এবং, আসলে, আমরা যে সৃষ্টি পর্দা, রিকল ছবি সর্বশেষ সময়, যদ্দ্বারা আপনি যদি সত্যিই কি আমার মনে হয় যদি hood-- নীচে যাওয়া এই, আপনার কম্পিউটার এর মেমরি হয় এবং এখানে নিচে খণ্ড মেমরি, প্রধান জন্য ব্যবহৃত হচ্ছে এই খণ্ড মেমরি, swap 'র জন্য ব্যবহৃত হচ্ছে এবং তাই, এমনকি যদি প্রধান হয়েছে দুটি ভেরিয়েবল, এক্স এবং ওয়াই, অদল-বদল অভিন্ন খুঁজছেন থাকতে পারে 1 এবং 2, উভয় যা মান, কিন্তু তারা সম্পূর্ণভাবে আছেন মেমরি বিভিন্ন অংশ. সুতরাং আমরা এই একটি সমাধান প্রয়োজন. এবং সত্যি, এটা এখন আমরা যে মনে হবে ঠিক আছে, এই সমস্যার একটি সমাধান আছে. আমরা এখন ক্ষমতা থাকে ঠিকানার মাধ্যমে জিনিষ নিপূণভাবে এবং, সাজানোর Chutes এবং Ladders শৈলী, তিরগুলো অনুসরণ এবং আমরা চাই যে কোন জায়গায় যেতে স্মৃতিতে, হরতাল ডাকবে না এই সমস্যা সমাধানের জন্য প্রধান থেকে পাশ অদলবদল না মান আমরা করতে চান অদল-বদলের কাজটি কিন্তু শুধু intuitively আমরা কি পরিবর্তে অদলবদল পাস হতে পারে? [ভয়েসেস interposing] ডেভিড জে MALAN: কেন আমরা ঠিক না এটা ঠিক আছে, ঠিকানাগুলি পাস? কেন আমরা swap 'র একটি দিতে হবে না ভাণ্ডারী মানচিত্র, যদি আপনি হবে, যে এটা বাড়ে প্রকৃত মান x এবং y. চলুন শুরু করা যাক swap ', আসলে পরিবর্তন যারা আসল বিট, বরং শুধু বিট কপি ক্ষণস্থায়ী. আর তাই, আসলে, যে কি যাচ্ছে সমাধান হতে. এই সংস্করণ এখানে পরিষ্কারভাবে খারাপ এবং ভ্রান্ত. এবং এখন, প্রথম নজরে, এটা ঠিক দেখায় মত আমরা এলোমেলোভাবে বড় একটি গুচ্ছ যোগ এবং আমাদের আঙ্গুলের পার এটা কম্পাইল হবে. কিন্তু, এটা এখন কম্পাইল হবে. কিন্তু এর, এসবের অর্থ কি দেখতে দিন. এবং, দুর্ভাগ্যবশত, লেখক সি অন্য কোনো চিহ্ন বেছে নিতে পারতেন এই একটু করতে পরিষ্কার, কিন্তু তারকা অপারেটর বিভিন্ন অর্থ রয়েছে দুটি ভিন্ন প্রেক্ষিতে. আর আমরা উভয় দেখা করেছি, কিন্তু এর পার্থক্য যাক. সেখানে উপরের আপ সুতরাং আমি A এবং B পরিবর্তিত হয়েছে যখন খারাপ কোন int এর থেকে সংস্করণ বড়, A এবং B int করতে, পূর্বে, পূর্ণসংখ্যার ছিল. এখন একটি এবং বি কি হয় ভাল, সবুজ সংস্করণ? তারা ঠিকানাগুলি আছেন. কি, ঠিকানাও স্পষ্ট হতে? পূর্ণসংখ্যার ঠিকানাও. আমি যে তাই কোন int তারকা মানে বলছে এই ঠিকানা একটি পূর্ণসংখ্যা, বিশেষভাবে. তাই এখন কোডের লাইনে লক্ষ্য, অন্য কিছু খুব পরিবর্তিত হয়েছে. tmp কারণ, একই থাকে এটা শুধু অস্থায়ী পূর্ণসংখ্যা, সেখানে কোন স্মৃতি যাদু. কিন্তু এখন একটি তারকা প্রয়োজন. এবং, আসলে, যে A এবং B এর অন্যান্য উল্লেখ, সব যে যে বিজ্ঞপ্তি লাল থেকে সবুজ পরিবর্তন আমি prefixing করছি যে হয় বড় সঙ্গে যারা ভেরিয়েবল. আমি A এবং B কপি করতে চান না, কারণ. কারণ আমি শুধু A এবং B ও swap 'র কপি করে A এবং B, আমি আসলে কি সোয়াপিং করছি? শুধু ঠিকানা, আমি অদলবদল করতে চান কি ঐ ঠিকানার এ. আমি সেখানে যেতে চাই. আর তাই তারা অপারেটর আমার ফাংশনের ভিতর, না পরামিতি তালিকার ভিতরে, আপনি ঐ ঠিকানায় যেতে মানে এবং আসলে সেই মান পরিবর্তন. তাই কি ছবি আছে এখন পরিবর্তে অনুরূপ. ওয়েল, এর পরিবর্তে যদি আমি পার করছি একটি জন্য এবং না 1 এবং B 2 না আমি আসলে যুক্ত করতে হবে এখানে অন্য একটি সংজ্ঞা. তাই এই অঞ্চলে যে অনুমান মেমরি পাঁচ 10 এ হয়. এই পাঁচ 11 এ, কিন্তু এই একটি সরলীকরণ একটি বিট, আমি এখন এক্স দুটি বিকল্প আমি পাস করতে হবে এবং y বা আমি তাদের বাসার ঠিকানাসহ পাস না? আমি তাদের বাসার ঠিকানাসহ পাস হলে এই মত, আমি শুধু এখন বাস্তবায়ন করতে হবে সবুজ কোড প্রতি অদল-বদলের কাজটি যে দেখতে পায় তাই একটি এবং যখন এটা বি, এটা শুধু A এবং B কপি না সূচিত দুধ এবং কমলার রস সরাতে. দুধ এবং কমলার রস রূপক এখন ভেঙ্গে নিচে যারা কারণ কাপ হয় তরল ও না ম্যাপের. আমরা পরিবর্তে যেতে হবে 10 এবং আমরা মোকাবেলার 11 ঠিকানায় যেতে হবে, এবং তারপর যে সোয়াপিং যুক্তিবিজ্ঞান সঞ্চালন. সুতরাং যুক্তি, একই কিন্তু আমরা সামান্য অন্যভাবে প্রয়োজন যারা ভেরিয়েবল ব্যবহারের. আর তাই শেষ পর্যন্ত, কি প্রোগ্রাম এই মত চেহারা আছে. Swap.c আক্ষরিক কপি এবং সবুজ সংস্করণ আটকানো. কিন্তু আমি একটা পরিবর্তন করা প্রয়োজন. এটা শুধু অদল-বদলের কাজটি পরিবর্তন যথেষ্ট নয়. কি কোড অন্য লাইনে আমি পরিবর্তন করতে হবে? হ্যা? শ্রোতা: এটা আর্গুমেন্ট লাগে যেখানে. ডেভিড জে MALAN: কোথায় এটা তার আর্গুমেন্ট গ্রহণ করা হয়. তাই আমি মূল স্ক্রল আপ, তাহলে আমি শুধু x এবং y এর মধ্যে পাস করতে পারবে না, এবং, আমি গত অঙ্গীকার নতুন বাক্য গঠন টুকরা আজ. আমি না X মধ্যে পাস করতে হবে এবং Y কিন্তু x এবং y এর ঠিকানা. এবং এটা, প্রতীক সক্রিয় আউট সি এর লেখক নেওয়া হয়েছে যে আপনি এখানে একটি ampersand ব্যবহার যদি না করতে হয় bitwise এম্পারসেন্ড দিয়ে বিভ্রান্ত করা, আপনি কি চান একজন এম্পারসেন্ড ব্যবহার করা হলে এখানে এবং এখানে একটি এম্পারসেন্ড, এই, তোমার জন্য পরিসংখ্যান x এর ঠিকানা কি, হয়তো এটা 10 এর, কি y এর ঠিকানা, হয়তো এটা 11, এবং পরিবর্তে যারা প্রেরণ করা হয়. তাই অনেক একবারে সব শুষে. কিন্তু এর মধ্যে দ্রুত এখন দেখা যাক আমাদের অবশিষ্ট চার মিনিট যেখানে কিছু টেরা যেতে পারেন. এবং একটি সরাইয়া, আসলে যেমন আমি ছবি তোলেন, মেমরি একটি বা দুটি আগে ছবি তোলেন. তাই এই ফিরে কোণায় হয় ইলিয়ট ডাইনিং হলের. পয়েন্টার সম্ভবত কঠিন হয় আমরা CS50 মধ্যে আবরণ যে বিষয়ে. আপনি সাজান চিন্তা যদি তাই হয়তো এটা ভালো ঢাল হয় একটি হকি স্টিক এর আরো এই মত, বুঝতে পারছি আমরা ধরনের একটি শিখর কাছাকাছি করছি ধারণাগত জটিলতা শর্তাবলী. আর আমি এই আনা ছবি, আমি শপথ করে বলছি, কারণ পতনের পর 1996 সালে ঈশ্বর, এর সাথে, যখন আমি গ্রহণ আমার সহকর্মী শিক্ষণ সঙ্গে CS50, নিশাত মেহতা, তিনি আমাকে বসলেন লাঞ্চ উপর ইলিয়ট ডি হলের কোণে, বা ডিনার, অথবা কিছু চেষ্টা আমার পয়েন্টার বুঝতে সাহায্য করার জন্য. আমি এক সপ্তাহ পরে ছিল এবং এই হল যেখানে এটা বক্তৃতা যখন চালু ছিল পরিশেষে আমি পয়েন্টার বোঝা. আর আমি এই যে আশাবাদী নই পর্যন্ত যত তাড়াতাড়ি আপনি জন্য ক্লিক করতে হবে. কিন্তু একেবারে মধ্যে এই উপলব্ধি আরো পরিশীলিত বিষয় আমরা দিকে তাকিয়ে থাকেন. কিন্তু এটা সবচেয়ে শক্তিশালী মধ্যে আছে. আপনি এটা পেতে হলে, এটা সত্যিই সব শুধু অবশেষে একসঙ্গে আসতে যাচ্ছে. তাই বাকি একটিও ভাষা ব্যবহারযোগ্য না আশ্বস্ত আজ সব বেসিনে প্রয়োজন. সুতরাং এখানে সর্বশেষ প্রোগ্রাম আমরা তাকান চলুন. আর আমরা একটি সঙ্গে শেষ হয়ে যাচ্ছেন claymation দ্রুত তিন মিনিট আমাদের বন্ধু, নিক Parlante দ্বারা তৈরি. এখানে একটি প্রোগ্রাম উপরের দুটি যে, এর লাইন একটি পরিবর্তনশীল x এবং y ঘোষণা. উভয় যা ঠিকানাগুলো পূর্ণসংখ্যার, ওরফে পয়েন্টার. আমরা তখন যথেষ্ট বরাদ্দ মেমরি কোন int সংরক্ষণ করতে এবং ঠিকানা সংরক্ষণ X মধ্যে যে মেমরি. সুতরাং, এটা এমনকি সহজ এর আগে যেমন বেশী. আমার মেমরির চার বাইট দিন যে কোন int এর আকার, এবং এক্স যে অঙ্ক করা. এই লাইন এখানে মানে এক্স ঠিকানায় যান এবং এর কোন অর্থ গ্রহণ করা জীবন, সেখানে 42 নম্বর. কিন্তু এই লাইন সম্পর্কে চিন্তিত. Y Y এ ঠিকানায় যান মানে তারা, এবং সেখানে দুর্ভাগ্য নম্বর 13 করা. কেন এই সময়ে, এটা বিপজ্জনক গল্পে যদ্যপি দ্রুত জানান আমাদের ক্ষীয়মাণ মিনিটের মধ্যে এখানে কেন এটা খারাপ আমার বলার জন্য, Y মধ্যে ঠিকানায় যান? শ্রোতা: আপনার কাছে নেই [শ্রবণাতীত]. ডেভিড জে MALAN: আমি না আছে Y এর মধ্যে কিছু করা. সুতরাং y এর মান কি, গল্পের এই সময়ে? আমরা কোন ধারণা আছে. এটা কিছু আবর্জনা মান এবং না একটি পোলট্রি জানে. আমরা এই নোট শেষ করতে সক্ষম হতাম. [ভিডিও প্লেব্যাক] -আরে, Binky, জেগে ওঠা. এটা মজা করার জন্য পয়েন্টার সময়. -ওটা কী? পয়েন্টার সম্পর্কে জানুন? ওহ, বুড়ি. -ওয়েল, শুরু, আমি মনে করি আমরা করছি অনুমান একটি দম্পতি পয়েন্টার প্রয়োজন যাচ্ছে. -ঠিক আছে. এই কোড দুই পয়েন্টার বরাদ্দ যা পূর্ণসংখ্যার নির্দেশ করতে পারেন. -OK, ভাল আমি দেখতে দুই পয়েন্টার, কিন্তু তারা কিছু ইশারা হবে বলে মনে হচ্ছে না. -সেটা ঠিক. প্রাথমিকভাবে পয়েন্টার কিছু নির্দেশ করে না. তারা নির্দেশ জিনিস pointees বলা হয় এবং তাদের স্থাপনের একটি পৃথক ধাপ. ঠিক আছে, ঠিক আছে, -ওহ. আমি ঐটা জানতাম. pointees আলাদা. সুতরাং কিভাবে আপনি একটি pointee বরাদ্দ না? -OK, পাশাপাশি এই কোড বরাদ্দ একটি নতুন ইন্টিজার pointee, এবং এই অংশ সেট X তা নির্দেশ করার জন্য. -আরে, যে ভালো দেখায়. সুতরাং এটা কিছু না করা. -OK, আমি করব পয়েন্টার এক্স ডি-রেফারেন্স তার pointee মধ্যে 42 নম্বর সঞ্চয়. এই কৌতুক জন্য, আমি হবে আমার dereferencing যাদু জাদুদণ্ড. Dereferencing এর -আপনার যাদু জাদুদণ্ড? আহ, যে, যে মহান. -এই কোড দেখে মনে হচ্ছে কি. আমি শুধু সংখ্যা সেট আপ করব and-- [পপ শব্দ] -আরে, এটা যায় সেখানে দেখুন. সুতরাং, x এর একটি dereference করছেন অনুসরণ তীর তার pointee অ্যাক্সেস. এই ক্ষেত্রে, সেখানে যাও 42 সঞ্চয়. আরে, সংখ্যা সংরক্ষণ করার জন্য এটি ব্যবহার করার চেষ্টা করুন অন্যান্য পয়েন্টার মাধ্যমে 13, Y. -ঠিক আছে. আমি শুধু Y এখানে উপর যাবেন, এবং 13 নম্বর সেট আপ পেতে. এবং তারপর এর জাদুদণ্ড নিতে dereferencing এবং ঠিক করা [হর্ণ শব্দ] -ওহ, আরে যে কাজ করা হয়নি. , একটি পোলট্রি আহ, আমি না, বলুন dereferencing মনে সেটিং কারণ Y, একটি ভাল ধারণা আপ pointee একটি পৃথক ধাপ. আমি এবং আমরা কখনও তা মনে করি না. -Hmm, ভাল পয়েন্ট. হ্যা, আমরা পয়েন্টার, y বরাদ্দ, কিন্তু আমরা একটি pointee নির্দেশ সেট কখনও. -Hmm, খুব সজাগ. -আরে, আপনি সেখানে একটি পোলট্রি ভাল খুঁজছেন. আপনি যাতে এটা ঠিক করতে পারবো Y পয়েন্ট X হিসাবে একই pointee. -নিশ্চিত, আমি আমার যাদু জাদুদণ্ড ব্যবহার পয়েন্টার নিয়োগ. একটি হতে যাচ্ছে যে -কি সমস্যা নেই, আগের মতই? -না, এই pointees না স্পর্শ না. এটা শুধু একটা পয়েন্টার পরিবর্তন একই জিনিস করতে নির্দেশ [শব্দ পপিং] অন্য --as. -আচ্ছা বুঝলাম. X একই জায়গা থেকে এখন Y পয়েন্ট. সুতরাং, এখন Y সংশোধন করা হয়েছে, অপেক্ষা করুন. এটি একটি pointee আছে. সুতরাং আপনি জাদুদণ্ড চেষ্টা করতে পারেন 13 ওভার পাঠাতে আবার dereferencing. -ওহ, ঠিক আছে, এখানে যায়. -আরে, যে তাকান. এখন Y তে কাজ dereferencing. আর পয়েন্টার ভাগ করা হয়, কারণ এক pointee যে, তারা উভয় 13 দেখুন. হ্যা, শেয়ারিং, আহ, যাই হোক না কেন. সুতরাং, আমরা এখন জায়গা সুইচ করতে যাচ্ছি? -ওহ, আমরা সময় ফুরিয়েছে দেখুন. -But-- তিন পয়েন্টার নিয়ম মনে -শুধু. সংখ্যা 1, মৌলিক কাঠামো আপনি একটি ইশারা আছে, এবং এটি একটি pointee পয়েন্ট. কিন্তু পয়েন্টার এবং pointee আলাদা. এবং সাধারণ ত্রুটি একটি পয়েন্টার সেট আপ করতে হয় কিন্তু এটি একটি pointee দিতে ভুলবেন না. সংখ্যা 2, পয়েন্টার dereferencing পয়েন্টার আরম্ভ এবং তার উপর তীর অনুসরণ তার pointee অ্যাক্সেস. আমরা সব জানি, এই শুধুমাত্র সেখানে যদি কাজ ধরনের ফিরে পায় যা একটি pointee, হয় সংখ্যা 1 শাসন করার. সংখ্যা 3, পয়েন্টার নিয়োগ এক পয়েন্টার নেয় এবং নির্দেশ পরিবর্তন অন্য পয়েন্টার হিসাবে একই pointee. নিয়োগ পরে তাই, দুই পয়েন্টার একই pointee নির্দেশ করবে, কখনও কখনও যে শেয়ারিং বলা হচ্ছে. এবং যে সত্যিই, এটা আছে সব. বিদায় এখন. [END টি প্লেব্যাক] ডেভিড জে MALAN: যে CS50 জন্য এটি. অধ্যাপক নিক Parlante ধন্যবাদ. আমরা আগামী সপ্তাহে আপনি দেখতে পাবেন. [বৈদ্যুতিন সঙ্গীত বাজাচ্ছি]