[সঙ্গীত বাজানো] ডেভিড জে Malan: ঠিক আছে. [হাস্য] ফিরে আসার জন্য স্বাগতম. এটি CS50. এবং এই সপ্তাহে পাঁচ শেষে. এবং এখন পর্যন্ত আমরা প্রায় কাছাকাছি করেছি মঞ্জুর জন্য গ্রহণ করা হয়েছে সেখানে আপনি করেছেন যে এই কম্পাইলার, ঝনঝন শব্দ, বিদ্যমান এই প্রণালী দ্বারা invoking হয়েছে অন্যান্য টুল যে একরকম করুন বলা magically আপনার সোর্স কোড পরিবর্তিত অবজেক্ট কোড, zeros এবং বেশী মধ্যে আপনার কম্পিউটারের CPU-র কেন্দ্রিয় প্রসেসিং ইউনিট, আসলে বুঝতে পারে. যে একটি সংখ্যা আছে খুঁজে কিন্তু এটি সক্রিয় এ ফণা নীচে যাচ্ছে ইনপুট এবং আউটপুট মধ্যে. এবং আমি যে আমরা মাংস উত্থাপন করতে চাই একটি সামান্য আরো বিস্তারিত মধ্যে যে আউট এই চারটি ধাপ, কিছু বলা আছে প্রাক প্রক্রিয়াকরণ, কিছু আমরা দেখা যা কম্পাইল করার প্রণালী,, বলা কিছু একত্রিতকরনের বলা হয়, এবং কিছু লিঙ্ক বলা হয়. তাই এখন পর্যন্ত আমাদের কিছু প্রোগ্রাম, আমরা ধারালো অন্তর্ভুক্ত করেছি. সম্প্রতি আমরা কিছু ধারালো ছিল করেছি ধ্রুবক জন্য সংজ্ঞায়িত করে. সুতরাং দেখা যাচ্ছে সেগুলো যে হ্যাশ চিহ্ন বা অগ্রে যুক্ত করা হয় আধা কেজি প্রতীক প্রাক প্রসেসর হয় নির্দেশনা. যে শুধু এটা বলার অপেক্ষা রাখে না একটি অভিনব উপায় আসলে যে কোড একটি লাইন আগে অন্য কিছু রূপান্তরিত কম্পিউটার এমনকি রূপান্তর করার চেষ্টা করুন আপনার zeros এবং বেশী মধ্যে প্রোগ্রাম. উদাহরণস্বরূপ, ধারালো মান অন্তর্ভুক্ত আমি / হে. জ, অনেক সুন্দর শুধু যেতে মানে এগিয়ে, ফাইল বিষয়বস্তু দখল stdio.h এবং অধিকার আছে পেস্ট করুন. তাই কোন zeros এবং বেশী এখনও যে সময়ে. এটা সত্যিই শুধু একটি প্রতিস্থাপন জন্য. এবং যে তথাকথিত সময় কাজ প্রাক প্রক্রিয়াজাতকরণ পর্যায়ে, যখন আপনি আসলে বিশেষভাবে ঝনঝন চালানো বা বেশিরভাগ ক্ষেত্রেই করুন. তাই এই সব ঘটছে হয়েছে প্রথম স্বয়ংক্রিয়ভাবে পর্যন্ত. তারপর কম্পাইলেশন ধাপে আসে. কিন্তু আমরা oversimplified আসছি কম্পাইলেশন. একটি প্রোগ্রাম কম্পাইল সত্যিই মানে , C-এর মতো কিছু থেকে তা গ্রহণ সোর্স কোড আমরা নিচে, লেখা হয়েছে করেছি কিছু সমাবেশ বলা হয়েছে. এসেম্বলি ভাষা একটি নিম্ন স্তর ভাষা যে, সৌভাগ্যক্রমে, আমরা না করবে না অনেক মাঝে আছে এই সেমিস্টারে ভর্তি করা হবে. কিন্তু মধ্যে সর্বনিম্ন পর্যায়ে আছে আপনি আক্ষরিক অর্থে যে লেখা শুরু যোগ এবং বিয়োগ এবং সংখ্যাবৃদ্ধি এবং লোড করা মেমরি থেকে এবং সংরক্ষণ মেমরি খুব মৌলিক নির্দেশাবলীর একটি কম্পিউটার যে, ফণা নীচে, আসলে বুঝতে পারে. অবশেষে, এসেম্বলিং যে ভাষা লাগে আমরা চলেছি যে zeros এবং বেশী যাও এ পর্যন্ত বর্ণনা. এবং সত্যিই সর্বশেষে, তথাকথিত আছে ফেজ লিঙ্ক, যা আমরা করব সম্মিলন যা শুধু একটা মুহূর্ত, দেখতে আপনার zeros এবং zeros সঙ্গে বেশী এবং আগে ওগুলো অন্য মানুষ আপনি তৈরি করেছেন. তাই এই সুপার সহজ প্রোগ্রাম বিবেচনা. এটা সপ্তাহ 1 থেকে ছিল. এটা ঠিক, হ্যালো ওয়ার্ল্ড বলেন, পর্দায়. আমরা ঝনঝন মাধ্যমে এই দৌড়ে. অথবা আমরা এটা মাধ্যমে করুন দৌড়ে যা ঝনঝন স্থাপিত হয়. এবং সময়ে outputted যেখানে কিছু zeros এবং বেশী. আছে আউট কিন্তু এটি সক্রিয় একটি অন্তর্বর্তী ধাপ. আমি এখানে ওভার যেতে না - যদি ওহো, না এখনও তাকে দেখতে চাই. আমি আমার প্রয়োগ এখানে যান উপর যদি এবং আমি hello.c, এখানে খুলুন একই প্রোগ্রাম. এবং কি আমি আমার টার্মিনালে কাজ করতে যাচ্ছি এখানে উইন্ডোর আমি যাচ্ছি না , ঝনঝন চালানোর বদলে যা চারটি স্বয়ংক্রিয়রূপে আমাদের জন্য যারা ধাপ. এবং আমি ঝনঝন-s করতে যাচ্ছে এবং করছি লিখুন তারপর hello.c এবং তারপর. এবং আমি একটি জ্বলজ্বলে প্রম্পট পাবেন আবার, যা ভাল. এবং এখন একটি সামান্য বড় উইন্ডোতে, আমি এখানে gedit খুলুন যাচ্ছি. এবং আমি একটি ফাইল খুলুন যাচ্ছি দেখা যাচ্ছে, এই hello.s বলা হয় যে সমাবেশ ভাষা রয়েছে, আমি আগে উল্লেখ করা. এবং এই সমাবেশ বলা কি ভাষা, মোটামুটি নিম্ন স্তরের নির্দেশাবলীর যে আপনার ইন্টেল CPU-র বা যাই হোক না কেন এটা ভিতরে যে হয় বুঝতে পারে. এবং MOV সরানো জন্য. কল জন্য একটি খুব কম স্তর ফাংশন কলিং. সাব বিয়োগ জন্য. আপনি ভিতরে একটি বিশেষ CPU-র আছে সুতরাং যখন আপনার কম্পিউটার এর, এটা কি করে তোলে নেভিগেশন স্বতন্ত্র, বনাম অন্যান্য CPU-র বাজার, যা নির্দেশনা থেকে এটি বুঝতে পারে এবং প্রায়ই কিভাবে দক্ষ তা এটা কিছু নির্বাহ হয় কিভাবে দ্রুত হয়, যারা নির্দেশাবলীর. এখন এই আরও, আপনি গ্রহণ করতে পারেন কলেজে পরবর্তী পতন CS61. কিন্তু এখানে আমরা কয়েক, উদাহরণস্বরূপ, আছে পরিচিত চেহারা হতে পারে যে অভিন্ন পরিচয়. hello.c প্রোগ্রামের নাম. . টেক্সট - সুদ অনেক সেখানে না ঠিক এখন, পুনরাহ্বান যে টেক্সট যেখানে মধ্যে সেগমেন্ট, সোমবার, যেমন হয় মেমরি আপনার প্রোগ্রাম আসলে শেষ পর্যন্ত. যাতে অন্তত অস্পষ্টভাবে এর সেখানে পরিচিত. এখানে, অবশ্যই, একটি উল্লেখ করা হয় আমাদের প্রধান ফাংশন. নিচে স্ক্রল, এই জিনিস পড়ুন তথাকথিত নিবন্ধনের, খুব ছোট অংশ আপনার প্রকৃত CPU-র মেমরি ভিতরে. এবং আমি এমনকি নিচে স্ক্রল যদি উপরন্তু, আমি কিছু সাজানোর দেখতে হওয়া ASCII এর পরোক্ষ উল্লেখ. এবং প্রকৃতপক্ষে, স্ট্রিং আছে, হ্যালো, কমা, বিশ্ব. তাই দীর্ঘ গল্প সংক্ষিপ্ত, এই হয়েছে স্বয়ংক্রিয়ভাবে আপনার জন্য ঘটছে ফণা নীচে এই সময় সব. এবং কি ঘটছে হয়েছে সত্যিই একবার হয় আপনি ঝনঝন চালানোর জন্য, বা এইভাবে করেছি , আপনাকে প্রথমেই পেয়ে থাকেন, তৈরি করুন সোর্স কোড থেকে, সমাবেশ ভাষা তথাকথিত. তারপর ঝনঝন এই সমাবেশ রূপান্তরের নিচে zeros এবং বেশী ভাষা. এবং এই যে আমরা শুরু স্লাইড হয় নেভিগেশন সপ্তাহ 0 আমাদের আলোচনার - এবং তারপর নেভিগেশন সপ্তাহ 1. এবং পরিশেষে, যারা zeros এবং বেশী zeros এবং বেশী সঙ্গে মিলিত হয় যারা লাইব্রেরি থেকে আমরা গ্রহণ করেছি হয়েছে স্ট্যান্ডার্ড ইনপুট / আউটপুট বা মত প্রদান জন্য স্ট্রিং লাইব্রেরী বা এমনকি CS50 লাইব্রেরি. যাতে আরও বেশি এই ছবি আঁকা দৃশ্যত, আমরা hello.c আছে. এবং এটা অবশ্যই printf, ব্যবহার হ্যালো ওয়ার্ল্ড বলে, কাজ করে. কম্পাইলেশন ধাপে নিচে লাগে যে ফাইল আমরা ঠিক, এমনকি hello.s দেখেছি সাধারণত মুছে ফেলা যে যদিও স্বয়ংক্রিয়ভাবে আপনার জন্য. কিন্তু যে সমাবেশ কোড এর মধ্যম ধাপে. এবং তারপর আমরা সমাবেশ জড় যখন যখন আপনি ভাষা, তাই কথা বলতে, যে যারা zeros এবং বেশী পেতে. তাই আমরা আজ কার্যকরভাবে জুম করেছি কি মঞ্জুর জন্য আমরা গ্রহণ করেছি, সোর্স কোড যাচ্ছে মানে কোড অবজেক্ট. কিন্তু সর্বশেষে, এখন সেই একই ছবি - এটা উপর থেকে ঠেলা আসুন বাম দিকে. এবং মনে রাখবেন যে উপরে আছে আমি stdio.h উল্লেখ করেছে. যে আমরা অন্তর্ভুক্ত করেছেন একটি ফাইল এর প্রায় সব বড় আমরা লিখিত করেছি প্রোগ্রাম. এবং যে যার বিষয়বস্তু ফাইলের কপি আটকানো পেতে, কার্যকরীভাবে আপনার কোড উপরে. কিন্তু এটা যে, একটি কম্পিউটার নেভিগেশন সক্রিয় আউট সিস্টেম কোথাও, সম্ভবতঃ একটি আছে কেউ বছর লিখেছে stdio.c ফাইল আগে যে সব কার্যকরী ঘোষণা করা হয়েছে যে ফাংশন stdio.h এ. এখন বাস্তবে এটা সম্ভবত না বা এমনকি আপনার ম্যাক বা আপনার পিসি এবং CS50 প্রয়োগ একটি কাঁচা সি কোড. ইতিমধ্যে কেউ এটা কম্পাইল করা এবং অন্তর্ভুক্ত . হে বস্তু কোড ফাইল অথবা. একটি শেয়ার্ড লাইব্রেরি বলতে বোঝায়, যা ফাইল যে প্রাক ইনস্টল করা হয়েছে আপনার জন্য প্রাক কম্পাইল করা. কিন্তু প্রকৃতপক্ষে সেখানে উপস্থিত থেকে অনুমান করা সমান্তরাল আমাদের কম্পিউটার stdio.c নেভিগেশন ঝনঝন সঙ্গে. আপনার কোড কম্পাইল করা হচ্ছে এবং একত্র. stdio.c 'গুলি কোড কম্পাইল এবং হচ্ছে একত্র, তাই এই শেষ যে এখানে নিচে, পদক্ষেপ, আমরা একরকম আছে লিংক, তাই কথা বলতে, আপনার zeros এবং বেশী এক মধ্যে তার zeros এবং বেশী সঙ্গে পরিণামে যে সহজ প্রোগ্রাম হ্যালো ঠিক বলা হয়. সুতরাং যে যে জাদু সব এ পর্যন্ত ঘটছে হয়েছে. এবং এই গ্রহণ অব্যাহত থাকবে জন্য প্রসেস দেওয়া, কিন্তু বুঝতে পারছি সরস বিবরণ অনেক আছে সেখানে নীচে যাওয়া. এবং এই কি করে তোলে আপনার ইন্টেল ভিতরে কম্পিউটার বিশেষ করে স্বতন্ত্র. তাই মনে রাখবেন যে, আপনি চান তাহলে আপনি এই শুক্রবার লাঞ্চ জন্য আমাদের সঙ্গে যোগদান, যান স্বাভাবিক জায়গা cs50.net/rsvp যাও, 1:15 PM তে পোস্ট করা এই শুক্রবার. এবং এখন কয়েক ঘোষণা. তাই আমরা কিছু ভাল খবর আছে. এবং আমরা কিছু খারাপ খবর আছে. এখানে কিছু ভালো খবর দিয়ে শুরু করুন. [GROANING] ঠিক আছে. ওয়েল, এটা, তাই টেকনিক্যালি একটি ছুটির দিন এর এটা এত আমাদের কাছ থেকে একটি উপহার না. অবশ্যই কিন্তু তারপর খারাপ খবর. [GROANING] আমি অনেক সময় কাটিয়েছি এই অ্যানিমেশন নেভিগেশন. [হাস্য] একটি পর্যালোচনার সময় থাকবে এই সোমবার আসছে. এটা 5:30 PM তে পোস্ট করা হতে যাচ্ছে. আমরা এই সব বিস্তারিত আপনাকে স্মরণ করিয়ে দেবে কোর্স এর ইমেলের মাধ্যমে দিন সময় শুধুমাত্র একটি দম্পতি ওয়েবসাইট. এটা শুট এবং উপলব্ধ করা হবে তারপরে খুব শীঘ্রই. আপনি না করতে পারেন, তাই যদি যে সোমবার রাতে স্লট, চিন্তা করবেন না. সেকশনস এই আসছে সপ্তাহে এছাড়াও পাবেন ব্যঙ্গ জন্য পর্যালোচনা ফোকাস. আপনার সেকশন, যা সোমবার, হয় যদি প্রকৃতপক্ষে বিশ্ববিদ্যালয় ছুটির দিন, আমরা এখনও বিভাগে দেখা. আপনি কেবল যে করতে না পারেন, তাহলে বিভাগে চলুন কারণ দূরে, যে সূক্ষ্ম. একটি রবিবার অথবা সোমবার বিভাগে বা পরিচর্যা করা জেসন এর অধ্যায় সুর ইন, যা অনলাইন উপলব্ধ. সুতরাং, আরো খারাপ খবর. সুতরাং পাঠ্যসূচি অনুযায়ী, আমরা পরের শুক্রবার বক্তৃতা আছে. কিন্তু ভাল খবর - স্পষ্টত, আমি এই খুব বেশী সময় কাটিয়েছি. [হাস্য] আমরা শুক্রবার এর বক্তৃতা পরবর্তী বাতিল করব. সুতরাং যে আমাদের জন্য একটি উপহার হতে হবে, তাই আপনি সত্যিই একটি চমৎকার অবকাশ আছে করতে পারেন এই সপ্তাহ এবং অত: পর দুই সপ্তাহের মধ্যে. কোন বক্তৃতা আগামী সপ্তাহে, শুধু একটি ক্ষুদ্র তাই আপনি হবে, যার জন্য একটু ব্যঙ্গ, ক্রমবর্ধমান উত্তেজিত হচ্ছে. সুতরাং এখন আমাদের মনোযোগ ঘুরিয়ে দেওয়া প্রকৃতপক্ষে আরো চাক্ষুষ কিছু যে এবং আরও উত্তেজনাকর এবং পর্যায় সেট দিগন্ত উপর হতে যাচ্ছে কি জন্য সপ্তাহ সময় শুধুমাত্র একটি দম্পতি. প্রথম ব্যঙ্গ পরে, আমরা চালু করব আমাদের সমস্যা সেট অন্য ফোকাস ডোমেন নির্দিষ্ট সমস্যা, যে আরো সাধারণভাবে ফরেনসিক বা নিরাপত্তা. এই সমস্যার সঙ্গে আসলে, ঐতিহ্য সেট আমার জন্য এক জুড়ে পায়চারি সহকর্মী বা সি এ এস অধ্যাপনা কিছু ফটোগ্রাফ গ্রহণ ক্যাম্পাস শনাক্তযোগ্য কিন্তু অ সুস্পষ্ট মানুষ, তারপর, স্থান, বা কিছু, প্রতি বছর আমি একরকম ঘটনাক্রমে মুছে ফেলা পরিচালনা বা ডিজিটাল মিডিয়া কার্ড দুর্নীতিগ্রস্ত যে আমাদের ক্যামেরার ভিতর. কিন্তু কোন বড় চুক্তি. আমি এগিয়ে যান এবং চলা করতে পারেন আমার কম্পিউটারের মধ্যে যে. আমি তাই, এটি একটি ফরেনসিক চিত্র তৈরি করতে পারেন zeros অনুলিপি করে, কথা বলতে এবং আপনি যে মেমরি কার্ড এর বেশী বন্ধ, কিনা তার একটি SD কার্ড অথবা কম্প্যাক্ট ফ্ল্যাশ কার্ড বা আপনার সাথে পরিচিত যাই হোক না কেন. এবং তারপর আমরা যে হাতে করতে পারেন. তাই অন্য মধ্যে এগিয়ে চ্যালেঞ্জ, আপনার জন্য কিছু লিখতে হবে আভা recovers যে সি কোড আমার জন্য JPEGs এবং প্রকাশ করা হবে যারা ব্যক্তি, স্থান, বা জিনিষ. এবং আমরা এই সমস্যা, কথা বলতে পারবেন সেট এবং দিন সম্পর্কে, আসা আরো সাধারণভাবে গ্রাফিক্স. আমরা,, একটি কোর্স তাদের ব্যবহার করেছি সহসা আবির্ভূত হত্তয়া জন্য. মঞ্জুর জন্য কিন্তু আপনি ধরণের গ্রহণ করেছি এই উচ্চ পর্যায়ের ধারণার অস্তিত্ব আছে rectangles এবং ovals না. কিন্তু ফণা নীচে পিক্সেল আছে. এবং আপনি কি শুরু করতে হয়েছে যারা চিন্তা. অথবা আপনি পি সেট 4 মনে হবে জন্য আপনার ইষ্টকদ্বারা মধ্যে ফাঁক ওপর, কিভাবে আপনি দ্রুত বল জুড়ে চলন্ত করছি স্ক্রীনের আউট বিরতি. তাই এই ধারণা আছে যে আপনার পর্দায় বিন্দু ইতিমধ্যে খেলার মধ্যে আসা. এখন আপনি দেখতে যদিও,, কি আপনি কম্পিউটারের পর্দায় পেতে. আপনি কি কখনও কিছু ভাল বা প্রেক্ষিত থাকেন তাহলে খারাপ টিভি, মতভেদ তারা অনেক সুন্দর হয় technophobes মত দর্শকদের আচরণ যারা সত্যিই কি অনেক কম্পিউটিং সম্পর্কে জানতে. এবং তাই পুলিশের জন্য খুব সহজ বলে গোয়েন্দা, আপনি যা করতে পারেন আমার জন্য যে পরিষ্কার আপ? বা ডান, উন্নত? উন্নত মধ্যে buzz এই শব্দ ভালো হয় সবচেয়ে কোনো অপরাধ সংক্রান্ত শো. আপনি একটি খুব নিতে এবং যদি বাস্তবতা এরকম একটি সন্দেহভাজন এর blurry ছবি কিছু খারাপ, আপনি করতে পারেন না এটা উন্নত. আপনি অসীম জুম করতে পারবে না. যদি আপনি কাউকে এর glint দেখতে পারে না যে প্রতিশ্রুতিবদ্ধ যারা চোখ সত্ত্বেও বিশেষ অপরাধ, টিভিতে এই প্রকোপ. এবং যাতে এর অনুপ্রাণিত করা যাক যে আসন্ন সমস্যা একটি আভাস সঙ্গে সেট কিছু দেখায়, যা দিয়ে আপনি পরিচিত হতে পারে. [ভিডিও প্লেব্যাক] -ঠিক আছে. এখন, আপনি একটি ভাল বর্ণন করা যাক. এটি ধরে থাকুন. যে ফিরে চালান. এক মিনিট, অপেক্ষা করুন. ডানে যান. কিছু আছে. যে ফ্রিজ. পর্দা পূর্ণ. -ঠিক আছে. যে ফ্রিজ. Ya, যে হবে আপ আঁট করা? যে লোক নেভিগেশন মধ্যে বাহক ফিরে চাকা দ্বারা. এই স্পট এখানে ডান ইন জুম. সঙ্গে ডান সরঞ্জাম, অঙ্কিত বৃহদাকার এবং শাণিত করা যাবে. কি যে? -এটি একটি বর্ধিতকরণ প্রোগ্রাম. করতে যদি আপনার কোন পর্যন্ত স্পষ্ট যে? আমি জানি না. এটা উন্নত করা যাক. বিভাগে-6-বর্ধিত করুন. আমি বিস্তারিত উন্নত এবং - আমি উন্নত যথেষ্ট মনে করি. আমার পর্দায় এটি রিলিজ. তার চোখে প্রতিফলন-বর্ধিত করুন. এর এই মাধ্যমে চালানো-চলুন শুরু করা যাক ভিডিও বৃদ্ধি. -এডগার, আপনি এই উন্নত করতে পারি? অন ​​Hang. -I've এই প্রতিফলন কাজ করা হয়েছে. -কেউ এর প্রতিফলন. -অনুভূতি. একটি প্রতিফলন-আছে মানুষের মুখ. -প্রতিফলন. আছে একটি প্রতিফলন না. মিরর নেভিগেশন ইন জুম করুন. -আপনি একটি প্রতিফলন দেখতে পারেন. -পারেন এখানে থেকে ইমেজ উন্নত? করতে আপনার অধিকার এখানে তাকে উন্নত? করতে আপনি এটি উন্নত? করতে আপনি এটি উন্নত? করতে আমরা এই উন্নত? করতে আপনি এটি উন্নত? একটি দ্বিতীয় অন ধরুন, আমি উন্নত করব. দরজায় ইন জুম করুন. -X10. -জুম. [হাস্য] ইন-সরান বন্ধ, অপেক্ষা করুন. স্টপ. এটি বিরতি. প্রায় 75 ডিগ্রী ঘোরান উল্লম্ব করুন. [হাস্য] অংশ ব্যাক করা বন্ধ করুন, এবং দরজা ওপর আবার. একটি চিত্র enhancer-পেয়েছেন যে বিটম্যাপ করতে পারেন? -হয়তো আমরা প্রদীপ সেন ব্যবহার করতে পারেন পদ্ধতি উইন্ডোজ মধ্যে দেখুন. এই সফটওয়্যার শিল্পের অবস্থা. -আইকন মান বন্ধ. সঙ্গে সঠিক সমন্বয় আলগোরিদিম. -তিনি আলোকসজ্জা আলগোরিদিম নেওয়া পরবর্তী স্তরে এবং আমি ব্যবহার করতে পারেন এই ফটো উন্নত. অন ​​লক ও z-অক্ষ বিস্তৃত. -বর্ধিত করুন. -বর্ধিত করুন. -বর্ধিত করুন. -ফ্রিজ এবং উন্নত. [END টি ভিডিও প্লেব্যাক] ডেভিড জে Malan: সুতরাং সমস্যা সেট 5 আছে এগিয়ে মিথ্যা কি. সুতরাং আমরা শীঘ্রই একটি ভাল বুঝতে পাবেন কখন এবং কেন আপনি করতে পারেন এবং আমাদের যে ভাবে বৃদ্ধি করতে পারবেন না. কিন্তু প্রথম, এর আমাদের মনোযোগ ফিরে আসুন আমরা করব বিল্ডিং ব্লক কিছু যে গল্প বলতে সক্ষম হতে হবে. সুতরাং আমরা এই ছবিটি সৃষ্টি যে প্রত্যাহার সোমবার এবং একটি সামান্য বিট গত সপ্তাহে. এবং এই জিনিষ লেআউট বর্ণনা আপনার কম্পিউটার এর মেমরি যখন কিছু প্রোগ্রাম চলমান. উপরে কারিগরি সেগমেন্ট, রিকল, বোঝায় প্রকৃত zeros এবং বেশী যাও যে আপনার প্রোগ্রাম রচনা করুন. আছে, যে, নিচে কয়েকটি সক্রিয়া বা uninitialized তথ্য, যা সাধারণত বা ধ্রুবক ভালো জিনিস বোঝায় স্ট্রিং বা যে গ্লোবাল ভেরিয়েবল আগাম ঘোষণা করা হয়েছে. আছে গাদা, কিন্তু আমরা আসবো ফিরে একটি বিট যে. এবং তারপর স্ট্যাকের আছে. অনেক ট্রে একটি স্ট্যাক মত মেমরি পায় যেখানে ক্যাফেটেরিয়া, এই হল স্তরপূর্ণ এবং যখনই স্তরপূর্ণ আপনি একটি প্রোগ্রাম কি? জন্য স্ট্যাক ব্যবহার কি? হ্যাঁ? ফাংশন কল করুন. আপনি যদি একটি ফাংশন কল যে কোনো সময়, এটা তার জন্য মেমরি sliver দেওয়া স্থানীয় ভেরিয়েবল বা তার পরামিতি. এবং pictorially, আমরা দেখতে যে প্রতিটি সঙ্গে যখন একটি ধারাবাহিক ফাংশন, বলা কল কল বি সি কল ডি, তারা স্ট্যাকের সম্মুখের স্তরপূর্ণ পেতে. এবং যারা টুকরা প্রতিটি মধ্যে মেমরি মূলত একটি অনন্য সুযোগ হয় যে ফাংশন জন্য, যা, অবশ্যই, আপনাকে হাতে করতে চান তাহলে সমস্যা হয় এক ফাংশন থেকে অন্য একটি অংশ থেকে আপনি এটি করতে চান যে তথ্য mutate বা পরিবর্তন. সুতরাং সক্রিয় করার জন্য আমাদের সমাধান কি ছিল এক স্ট্যাকের দ্বারা প্রতিনিধিত্ব একটি ফাংশন ভিতরে মেমরি পরিবর্তন ফ্রেমে অন্য স্ট্যাক ফ্রেম? কিভাবে একে অপরের ঐ দুটি আলাপ করবেন? তাই পয়েন্টার বা ঠিকানা উপায় দ্বারা, যেখানে যা আবার,, শুধু বর্ণনা একটি নির্দিষ্ট মেমরি দ্বারা উপায় কামড় নম্বর, বিশেষ মান পাওয়া যাবে. সুতরাং খুব আমরা অব্যাহত শেষ সময় প্রত্যাহার শুধুমাত্র একটি গল্প এবং লাগছিল মোটামুটি বগী প্রোগ্রাম. এবং এই প্রোগ্রামটি কয়েক জন্য বগী কারণ, কিন্তু সবচেয়ে বিরক্তিকর এক এটা কি চেক করতে ব্যর্থ হওয়ার? হ্যাঁ, এটা ইনপুট চেক করতে ব্যর্থ হবে. দুঃখিত? এটি 12 অক্ষরের বেশী হলে. সুতরাং খুব smartly, memcopy কলিং যখন, , যা নামই ইঙ্গিত করে, ঠিক তার দ্বিতীয় যুক্তি থেকে কপি মেমরি তার প্রথম যুক্তি মধ্যে. তৃতীয় যুক্তি, খুব smartly হয় আপনি না নিশ্চিত করুন যে আপনি চেক এই ক্ষেত্রে, দৈর্ঘ্য আর আরো কপি বার, অক্ষর সংখ্যা গন্তব্য মধ্যে, এই যা অ্যারে সি কিন্তু সমস্যা হল যে কি সি নিজেই যথেষ্ট বড় হয় না যে হ্যান্ডেল করতে? আপনি সংখ্যা কপি চলুন আপনি দেওয়া হয়েছে করেছি বাইট. কিন্তু আপনি আসলে আরো কি কি আছে আপনার জন্য রুম আছে আর বাইট? ওয়েল, এই প্রোগ্রাম খুব মূর্খতাপূর্ণভাবে ঠিক অন্ধভাবে তা যাই হোক না কেন নিতে আয় দেওয়া, হ্যালো ব্যাকস্ল্যাশ 0 স্ট্রিং ছোট বড় হলে যথেষ্ট, পাঁচটি অক্ষর ভালো লেগেছে. কিন্তু আসলে এটি 12 টি অক্ষর বা যদি 1,200 অক্ষর, আমরা শেষ সময় দেখেছি আপনি শুধু সম্পূর্ণভাবে চলুন মেমরি মুছে ফেলা যে আপনি অন্তর্গত নয়. এবং সবচেয়ে খারাপ ক্ষেত্রে, আপনি নতুন করে লেখা হলে যে আমরা বলা হয় যে সেখানে লাল অংশ ঠিকানা ফিরে - এই ঠিক যেখানে কম্পিউটার স্বয়ংক্রিয়ভাবে আপনার জন্য, পিছনে দূরে দৃশ্য, tucks একটি 32 বিট মান যে এটি করা উচিত কি ঠিকানায় মনে করিয়ে দেয়, ফিরে foo বিন্যাস, এই অন্যান্য ফাংশন, নির্বাহ করা হয়. এটা প্রকারের একটি রুটি টুকরা এর তা ফেরৎ না. আপনি সম্ভাব্য যে, নতুন করে লেখা হলে আপনি খারাপ লোক হন, তাহলে করতে পারেন পারে সম্ভাব্য নিতে কেউ এর কম্পিউটার. এবং আপনি অবশ্যই পাবেন বেশিরভাগ ক্ষেত্রেই এটি বিপর্যস্ত. এখন এই সমস্যা শুধুমাত্র ঘটায় ছিল আমরা মেমরি সম্পর্কে কথা বলা শুরু আরো সাধারণভাবে ব্যবস্থাপনা. এবং malloc, মেমরি বরাদ্দকরণ জন্য, একটি আমরা বরাদ্দ ব্যবহার করতে পারেন যে ফাংশন আমরা আগাম জানি না যখন মেমরি আমরা কিছু করতে হবে পারে. সুতরাং, উদাহরণস্বরূপ, আমি ফিরে যেতে হলে এখানে আপনি প্রয়োগ. এবং আমি শেষ সময় hello2.c থেকে খুলুন তাকিয়ে যা এখানে এই প্রোগ্রাম, প্রত্যাহার একটি ভালো সামান্য কিছু, মাত্র তিনটি লাইন - আপনার নাম, তারপর, স্ট্রিং নাম, রাজ্য বাম, GetString সমান. এবং তারপর আমরা এটি প্রিন্ট আউট ব্যবহারকারীর নাম. তাই এই একটি সুপার সহজ প্রোগ্রাম ছিল. পরিষ্কার করা, আমাকে এগিয়ে যান এবং হ্যালো-2 না. আমি বিন্দু স্ল্যাশ হ্যালো-2 কাজ করতে যাচ্ছি. আপনার নাম State - ডেভিড. লেখো. ডেভিড হ্যালো. এটি ঠিক আছে কাজ করে বলে মনে হয়. কিন্তু কি সত্যিই যাচ্ছে এখানে ফণা নীচে? প্রথম let এর কিছু স্তর ফিরে ছুলা. স্ট্রিং আমরা করেছি মাত্র একটি প্রতিশব্দ হয় কি বুঝতে পেরেছি? চর তারা. সুতরাং এটি একটি সামান্য আরো রহস্যময় করা যাক কিন্তু আরো টেকনিক্যালি সঠিক এই যে যার অর্থ হল যে একটি গৃহস্থালি তারকা, হয় নাম, হ্যাঁ, একটি পরিবর্তনশীল. কিন্তু কি নাম দোকানে ঠিকানা হল একটু অদ্ভুত মনে যা একটি গৃহস্থালি, আমি একটি স্ট্রিং ফিরে পেয়ে করছি কারণ. আমি ফিরে একাধিক পেয়ে করছি অক্ষর একটি গৃহস্থালি না. কিন্তু অবশ্যই, আপনি শুধুমাত্র প্রথম প্রয়োজন মনে রাখবেন আপনি গৃহস্থালি এর ঠিকানা যেখানে কারণ কেন পুরো স্ট্রিং? আপনি কিভাবে চিন্তা করবেন যেখানে শেষ স্ট্রিং এ বুদ্ধিমান হয়? ব্যাকস্ল্যাশ শূন্য. সুতরাং ঐ দুটি সংকেত সনাক্ত করুন সাথে আপনি চিন্তা করা শুরুতে এবং শেষ হওয়ার আগে যে কোনো পংক্তি তারা তাই যতদিন আছে, সঠিকভাবে যে নাল গঠিত টারমিনেটর, যে ব্যাকস্ল্যাশ শূন্য. কিন্তু এই GetString আহ্বান করা হয়. এবং এটা যে GetString সক্রিয় আউট এই সব সময় ধরনের হয়েছে আমাদের জন্য ঠকায়. এটা নিশ্চিত, আপনি এই শ্রম করছেন হয়েছে ব্যবহারকারী থেকে একটি পংক্তি পেতে. কিন্তু যে মেমরি যেখানে থেকে আগত করা হয়েছে কি? আমরা এখানে ছবি ফিরে যান এবং যদি শুধু একটি সংজ্ঞা থেকে আবেদন মুহূর্ত আগে, যে স্ট্যাকের যেখানে ফাংশন বলা হয় যখন মেমরি, যায় যে যুক্তি দ্বারা, আপনি GetString কল যখন, এবং তারপর আমি টাইপ : D-একটি-ভী-i-d, লিখুন যেখানে ডি,-A-ভী-i-D: ব্যাকস্ল্যাশ শূন্য উপর ভিত্তি করে সংরক্ষিত গল্প আমরা অনেক দূরে আমাদের জানান করেছি? এটা মনে করা হবে স্ট্যাকের, ডান? আপনি স্ট্রিং পেতে কল যখন আপনি একটি পেতে স্ট্যাকের উপর মেমরি সামান্য ছে. সুতরাং এটা যে: D-একটি-ভী-i-D: কারণ দাঁড়িয়েছে ব্যাকস্ল্যাশ শূন্য সংরক্ষিত হয় সেখানে স্ট্যাকের মধ্যে. কিন্তু আয় GetString, একটি মিনিট অপেক্ষা করুন স্ট্রিং, তাই কথা বলতে, যার মানে এটি ক্যাফেটেরিয়া থেকে ট্রে এর স্ট্যাকের নেয়া বন্ধ করা হয়. এবং আমরা যে যত তাড়াতাড়ি একটি হিসাবে শেষ সময় বলেন, ফাংশন আয়, এবং আপনি নিতে স্ট্যাকের বন্ধ ট্রে, তাই কথা বলতে, কি আপনি অবশিষ্টাংশ সম্পর্কে অনুমান করতে পারেন যে মেমরি? আমি বাছাই করা প্রশ্ন চিহ্ন হিসাবে তাদের redrew তারা কার্যকরভাবে হয়ে কারণ অজানা মান. যখন কিছু তারা পুনঃব্যবহৃত করা যাবে পরের ফাংশন বলা হয়. অন্য কথায়, আমরা ঘটতে হলে সংরক্ষণ করা হবে - আমি একটি দ্রুত ছবি আঁকা করব এখানে স্ট্যাকের. আমরা নীচে অঙ্কন করা ঘটতে যদি আমার মেমরি সেগমেন্ট, এবং আমরা বলবো এই মেমরি জায়গায় যে প্রধান এবং হয়ত ARG সি এবং দখল করা ARG বনাম প্রোগ্রামে অন্য রয়েছে, GetString বলা হয়, সম্ভবতঃ GetString পায় এখানে মেমরি একটি খণ্ড. এবং তারপর: D-একটি-ভী-i-D: একরকম এই ফাংশন আপ শেষ. এবং আমি অতিসরল করে তোলা যাচ্ছে না. কিন্তু এর অনুমান করা যাক তার ডি,-A-ভী-i-D: যে ব্যাকস্ল্যাশ শূন্য. তাই এই অনেক বাইট ব্যবহার করা হয় GetString জন্য ফ্রেম. কিন্তু যত তাড়াতাড়ি GetString আয়, আমরা শেষ সময় বলেন যে এই মেমরি এখানে সব হয়ে - woops! - সমস্ত কার্যকরভাবে মুছে ফেলা হয়. এবং আমরা প্রশ্ন হিসেবে এখন মনে করতে পারেন চিহ্ন যিনি জানেন, কারণ কি যে মেমরি হয়ে যাচ্ছে. প্রকৃতপক্ষে, আমি খুব প্রায়ই ফাংশন কল GetString আর অন্য. এবং যত তাড়াতাড়ি আমি কিছু অন্যান্য কল হিসাবে GetString আর ফাংশন, হয়তো না আমরা শুধু তাকিয়ে এই বিশেষ প্রোগ্রাম কিন্তু অন্য কিছু, নিশ্চয় কিছু অন্যান্য সময়ে ফাংশন দেওয়া হচ্ছে শেষ হতে পারে স্ট্যাকের মধ্যে এই পরের স্পট. সুতরাং এটা যে GetString সঞ্চয় করা যাবে না স্ট্যাকের উপর: D-একটি-ভী-i-D: আমি কারণ অবিলম্বে এটি অ্যাক্সেস হারান. কিন্তু আমরা জানি তারা GetString শুধুমাত্র কি ফেরৎ? এটা ফিরে না আমার সম্পর্কে ছয়টি অক্ষর. এটি সত্যিই কি ফিরে না আমরা শেষ সময় শেষ করা? প্রথম ঠিকানা. তাই একরকম, আপনি GetString বলা হয়, এটি জন্য মেমরি একটি খণ্ড বণ্টন এর স্ট্রিং যে ব্যবহারকারী টাইপ এবং এটি তারপর ফিরে ঠিকানা. এবং এটি আপনি যখন চান সক্রিয় আউট এই মেমরি বরাদ্দ করা কাজ পথ এবং বলা হয় ব্যক্তির রিটার্ন যে ফাংশন, ঠিকানা মেমরি যে তাল, আপনি একেবারে এ স্ট্যাকের মধ্যে এটি করা যাবে না নীচে, কারণ এই বৈশিষ্ট্যগুলি এটা তো শুধু খুব ভেজাল হয়ে যাচ্ছে দ্রুত, তাই সম্ভবত আপনি অনুমান করতে পারেন যেখানে আমরা সম্ভবত এটি টসে চলুন পরিবর্তে, তথাকথিত গাদা. তাই আপনার মেমরি এর নীচে মধ্যে লেআউট এবং আপনার মেমরি এর উপরে লেআউট খন্ডের আভা আছে. এক স্ট্যাকের, এবং অধিকার উপরে গাদা হয়. এবং গাদা শুধু বিভিন্ন খণ্ড হয় ফাংশন জন্য ব্যবহৃত না যে মেমরি তারা বলা করছি. এটা যখন দীর্ঘমেয়াদী মেমরির জন্য ব্যবহৃত আপনি একটি ফাংশন কিছু দখল করতে চান মেমরি এবং এটি নেভিগেশন স্তব্ধ করতে পারবেন এটা উপর নিয়ন্ত্রণ হারানো ছাড়া. এখন আপনি সম্ভবত অবিলম্বে পারে এই যে দেখুন একটি নিখুঁত ডিজাইন নয়. আপনার প্রোগ্রাম মেমরি বরাদ্দ হিসাবে স্ট্যাকের, অথবা আপনি কল হিসাবে এবং আরো আরও ফাংশন, অথবা আপনি বরাদ্দ হিসেবে হিসাবে malloc সঙ্গে গাদা মেমরি GetString করছেন, কি স্পষ্ট হয় অনিবার্য সমস্যা হবে বলে মনে হয়? রাইট. আসলে ভালো লেগেছে যে এই তীর একে অপরের দিকে নির্দেশ করা হয় ভাল Bode না. এবং প্রকৃতপক্ষে, আমরা খুব দ্রুত বিপর্যস্ত হতে পারে উপায় যে কোন সংখ্যার মধ্যে একটি প্রোগ্রাম. আসলে, আমি আমরা মনে করেন এই ঘটনাক্রমে একবার সম্পন্ন. বা, যদি না এটা করতে আসুন ইচ্ছাকৃতভাবে এখন. আমাকে এগিয়ে যান এবং দ্রুত সুপার লিখুন চলুন শুরু করা যাক একটি প্রোগ্রাম dontdothis.c বলা হয়. এবং এখন আমি এখানে যান এবং করব ধারালো stdio.h অন্তর্ভুক্ত করবেন না. ফাংশন foo বিন্যাস লাগে ডিক্লেয়ার চলুন শুরু করা যাক কোন যুক্তি, যা অকার্যকর দ্বারা সেইসাথে denoted. এবং foo বিন্যাস করতে যাচ্ছে শুধুমাত্র জিনিস সম্ভবত না, যা কল foo বিন্যাস, বুদ্ধিমান ধারণা, কিন্তু তাই এটি হতে. Ent প্রধান অকার্যকর. এখন প্রধান যাচ্ছে একমাত্র জিনিস কি ভাল foo বিন্যাস কল করা হয়. এবং শুধু kicks জন্য, আমি যেতে চলেছি এগিয়ে এখানে থেকে হ্যালো "printf, বলে foo বিন্যাস. " ঠিক আছে. আমি কোনো ভুল করেন নি, তাই যদি Dontdothis বিন্দু স্ল্যাশ করুন. যাক এর একটি বড় উইন্ডোতে এটা - বিন্দু স্ল্যাশ, dontdothis. উপর আসা. OH uh. স্পষ্টত, আপনি এটা করতে পারেন. এটা অভিশাপ. ঠিক আছে. অপেক্ষা করুন. পাশে দাঁড়ানো. আমরা কি - আমরা সঙ্গে এটি ব্যবহার হয়নি. [Sighs] আমি জানি কিন্তু আমি মনে করি আমরা ঠিক যে মুছে দেওয়া হয়. Uh, হাঁ. এটা অভিশাপ. এই রব সমাধান. কি? এটা খুবই সহজ. হ্যাঁ, আমরা অপ্টিমাইজেশান বন্ধ আছে. ঠিক আছে, Bye দাঁড়ানো. এখন আমি ভালো লাগছে. ঠিক আছে. ঠিক আছে. তাই এর এই কম্পাইল করা যাক - আপনি dontdothis করুন. আপনি এই পরিবর্তন থাকতে পারে মাত্র একটি মুহূর্ত dothis.c. সেখানে আমরা যেতে. আপনাকে ধন্যবাদ. ঠিক আছে. তাই আমি মুদ্রণ ছিল যে কিছু আসলে ঠিক ছিল প্রক্রিয়ার গতি কমে যার দ্বারা আমরা যে বিন্দু পৌঁছেছেন হবে. ঠিক আছে. Phew! তাই আসলে নেভিগেশন যাচ্ছে? শুধু একটি সরাইয়া হিসাবে আছে কারণ হল, ইনপুট পরিপ্রেক্ষিতে কিছু করছেন এবং আউটপুট ধীর হতে থাকে, কারণ আপনি অক্ষর লিখতে হবে পর্দা, এটি স্ক্রল আছে. তাই দীর্ঘ গল্প সংক্ষিপ্ত, আমি আসলে ছিল তাই অধীর ঘটেছে, আমরা হবে সেইসাথে এই শেষ ফলাফল দেখা যায়. আমি মুদ্রণ আপগুলি হেয় পেয়েছিলাম, এখন যে আমরা এটি সরাসরিভাবে দেখুন. সুতরাং কেন এই ঘটছে. ওয়েল, অবশ্যই সহজ ব্যাখ্যা,, যে foo বিন্যাস সম্ভবত উচিত না হয় নিজেই আহ্বান করা হবে. এখন সাধারণ পদ, এই recursion হয়. এবং আমরা একটি কয়েক সপ্তাহ চিন্তা আগে recursive ভাল. Recursion এই ঐন্দ্রজালিক উপায় succinctly সুপার নিজেকে প্রকাশ. আর এটা কাজ করে. কিন্তু সব কী বৈশিষ্ট্য আছে আমরা স্বপ্ন করেছি recursive প্রোগ্রাম তারিখ ও দিকে তাকিয়ে সেটা অনেক দূরে, যা তারা কি ছিল? কিছু হার্ড কোডেড যা ছিল বেস কেস, কিছু পরিস্থিতিতে বলেন যে ক্ষেত্রে পরিষ্কারভাবে যা foo বিন্যাস, কল না এখানে কোনো ঘটনা না ঘটে. তাই কি সত্যিই ঘটছে এই ছবি পরিপ্রেক্ষিতে? ওয়েল, যখন প্রধান foo বিন্যাস, এটি আহ্বান মেমরি একটি ফালি পায়. Foo বিন্যাস foo বিন্যাস কল করা হলে, সেটা মেমরি একটি ফালি. Foo বিন্যাস foo বিন্যাস কল করা হলে, একটি ফালি পায়. এটি একটি ফালি পায়. এটি একটি ফালি পায়. Foo বিন্যাস ফিরে না হয়. আমরা যারা এক মুছে না করছি স্ট্যাক ফ্রেম থেকে. সুতরাং আমরা গাদা মাধ্যমে প্রবাহিত করছেন যারা কি অন্য জানেন, এবং উল্লেখ আমরা আমাদের সীমার overstepping করছি মেমরি সেগমেন্ট তথাকথিত. সেগমেন্টেশন মিথ্যা যেতে ত্রুটি. তাই আছে সমাধান স্পষ্টতই এই করবেন না. কিন্তু বড় সংশ্লেষ যে, হ্যাঁ, হয় একেবারে কিছু সীমা আছে, এটা ভাল কিভাবে হিসেবে সংজ্ঞায়িত না, এমনকি যদি আপনি একটি কল করতে পারেন অনেক ফাংশন প্রোগ্রাম কতবার একটি ফাংশন নিজেই কল করতে পারেন. আমরা recursion ধর্মপ্রচার করেনি সুতরাং যদিও এই সম্ভাব্য ঐন্দ্রজালিক জিনিস হিসাবে একটি সিগমা জন্য সপ্তাহ আগে দম্পতি ফাংশন, এবং যখন আমরা তথ্য পেতে কাঠামো এবং CS50, আপনি অন্যান্য দেখতে পাবেন এটি জন্য অ্যাপ্লিকেশন, এটি না অগত্যা ভাল জিনিস. একটি ফাংশন নিজেই কল, কারণ যদি একটি বেস আছে, এমনকি যদি নিজেই কল ক্ষেত্রে, আপনি যে বেস ক্ষেত্রে আঘাত না হলে, 1,000 কল বা 10,000 কলের জন্য, দ্বারা আপনি কি রুমে রান আউট হতে পারে যে সময় আপনার তথাকথিত স্ট্যাকের এবং আঘাত নেভিগেশন মেমরি অন্য কিছু অংশ. তাই এটা খুব একটা নকশা ট্রেড বন্ধ হল কমনীয়তা মধ্যে মধ্যে আপনার নির্দিষ্ট এর বলিষ্ঠতা বাস্তবায়ন. তাই অন্য একটি downside হয় বা আছে আমরা করেছি কি অন্য gotcha এ পর্যন্ত করছেন. আমি GetString বলা হয় - আমার সম্পর্কে Hello-2 ফিরে যান. , আমি GetString আহ্বান করছি যে বিজ্ঞপ্তি যা একটি ঠিকানা ফিরে না. এবং আজ আমরা দাবী করে যে ঠিকানা গাদা থেকে. এবং এখন আমি খুঁজে মুদ্রণ am যে ঠিকানায় পংক্তি. কিন্তু আমরা নামক করেছি GetString এর বিপরীত. আমরা চাই একটি ফাংশন calll ছিল না করেছি যেখানে আপনি হাতে ফিরে ungetstring, যে মেমরি. কিন্তু অকপটে আমরা সম্ভবত হওয়া উচিত ছিল. কারণ আমরা কম্পিউটার জিজ্ঞাসা রাখা মত কেউ স্মৃতির জন্য, দ্বারা উপায় GetString তবে নিশ্চয়, এটা ফেরত দিতে না যে খুব হতে বাধ্য করা হয় আমরা মেমরি রান আউট যদ্দ্বারা সমস্যা. এবং বাস্তবিকই, আমরা এই জন্য সন্ধান করতে পারেন যার ব্যবহার নতুন হাতিয়ার সঙ্গে সমস্যা টাইপ একটু রহস্যপূর্ণ. কিন্তু আমাকে এগিয়ে যান এবং এটা স্প্ল্যাশ যাক মাত্র একটি মুহূর্ত পর্দায়. আমি এগিয়ে যান এবং Valgrind চালানো যাচ্ছে না যার প্রথম কমান্ড পরামিতি সহ লাইন আর্গুমেন্ট নাম যে প্রোগ্রাম হ্যালো-2. এবং দুর্ভাগ্যবশত এটা আউটপুট নৃশংসভাবে হয় কোন ভাল কারণ জটিল. সুতরাং আমরা যে সব জগাখিচুড়ি দেখুন. ডেভিড আমার সম্পর্কে নাম রাষ্ট্র. সুতরাং যে প্রোগ্রাম আসলে চলমান. এবং এখন আমরা এই আউটপুট পেতে. সুতরাং Valgrind অনুরূপ GDB-র আত্মা মধ্যে. এটা কোনটাই একটি ডিবাগার না. কিন্তু এটা একটি মেমরি পরীক্ষা হবে. এটি আপনার চালানো হবে যে একটি প্রোগ্রাম প্রোগ্রাম এবং যদি আপনি একটি জিজ্ঞাসা যদি আপনি বলুন মেমরির জন্য কম্পিউটার এবং কখনও তা হস্তান্তর ফিরে, যার ফলে আপনি যে অর্থ একটি মেমরি লিক. এবং মেমরি ডিস্ক্রিপ্টরের লিক সম্বন্ধে সূচিত খারাপ হতে থাকে. এবং আপনি কম্পিউটার ব্যবহারকারীদের আছে সম্ভবত এই যদি আপনি একটি আছে কিনা, অনুভূত Mac বা একটি পিসি. আপনি কি কখনও আপনার কম্পিউটার ব্যবহার করেছেন এবং বিভিন্ন মধ্যে পুনরায় বুট করার সময় দিন বা আপনি অনেক পেয়েছেন চলমান প্রোগ্রাম, এবং অভিশাপ জিনিস একটি নাকাল স্থগিত করার গতি, বা অন্তত কারণ এটি ব্যবহার সুপার বিরক্তিকর সমস্তকিছু সুপার ধীর পেয়েছিলাম. এখন যে কারণে কোন সংখ্যা হতে পারে. এটি একটি অসীম লুপ, একটি বাগ সংশোধন করা হতে পারে কেউ এর কোড, বা আরো সহজভাবে, এটা আপনি আরো ব্যবহার করছেন মানে হতে পারে আপনার আর মেমরি, বা করার চেষ্টা করছেন, কম্পিউটার আসলে আছে. এবং হয়ত কিছু প্রোগ্রামে একটি বাগ আছে মেমরি চাওয়ার জন্য রাখা. বছর জন্য ব্রাউজারের জন্য কুখ্যাত ছিল এই, আরো এবং আরো মেমরি জন্য জিজ্ঞাসা কিন্তু এটা ফিরে হস্তান্তর না. নিশ্চয়, আপনি কেবল একটি নির্দিষ্ট থাকে তাহলে মেমরির পরিমাণ, আপনি জিজ্ঞাসা করতে পারবে না জন্য অসীম অনেকবার যে মেমরি কিছু. এবং যাতে আপনি, যদিও এখানে দেখতে কি আবার Valgrind এর আউটপুট এ এক নজরে আপনি অকারণে জটিল প্রথমত, এই আকর্ষণীয় অংশ. গাদা - প্রস্থান করুন এ ব্যবহার. সুতরাং এখানে কত মেমরি ছিল এ গাদা ব্যবহার সময় আমার প্রোগ্রাম থেকে প্রস্থান করা হয়েছে - এক ব্লক মধ্যে দৃশ্যত ছয় বাইট. তাই আমি আমার হাত তরঙ্গ করতে যাচ্ছি কি একটি ব্লক. আরো একটি, এটা ঠিক একটি খণ্ড হয় চিন্তা খণ্ড জন্য প্রযুক্তিগত শব্দ. ছয় বাইট কিন্তু - যে ছয়টি বাইট কি ব্যবহার এখনো ছিল? যথাযথভাবে. : D-একটি-ভী-i-D: ব্যাকস্ল্যাশ শূন্য, পাঁচটি অক্ষর নাম প্লাস নাল টারমিনেটর. সুতরাং এই প্রোগ্রামের লক্ষ্য Valgrind যে আমি দ্বারা, দৃশ্যত, ছয় বাইট জন্য জিজ্ঞাসা GetString উপায়, কিন্তু না তাদের ফেরত দিয়েছে. এবং বাস্তবিকই, এই তাই নাও হতে পারে আমার প্রোগ্রামের তিনটি নয় সুস্পষ্ট হলে লাইন, কিন্তু এটি 300 লাইন এর. সুতরাং আমরা আসলে অন্য কমান্ড দিতে পারে লাইন আর্গুমেন্ট আপনি Valgrind যাও এটি আরও ভার্বোস করতে. এটা মনে রাখতে একটু বিরক্তিকর. কিন্তু আমি যদি না - এর দেখতে দিন. লিক - এটি লিক ছিল - এমনকি আমি না মনে রাখবেন এটি হাত বন্ধ হচ্ছে. - লিক চেক পুরো সমান. YEP, আপনাকে ধন্যবাদ. - লিক চেক পুরো সমান. লেখো. একই প্রোগ্রাম চলছে. আবার ডেভিড মধ্যে টাইপ করুন. এখন আমি একটি সামান্য আরো বিস্তারিত দেখুন. কিন্তু গাদা সারাংশ নিচে, যা চার থেকে অভিন্ন - অই, এই চমৎকার ধরনের. এখনই Valgrind আসলে খুঁজছেন হয় আমার কোড মধ্যে কঠিন একটি সামান্য. এবং এটি দৃশ্যত, যে বলছে লাইনে malloc - আমরা জুম আউট. এ লাইন - আমরা কি এটা লাইন না. কিন্তু malloc প্রথম অভিযুক্ত ব্যক্তি হয়. Malloc একটি ব্লগ আছে. ঠিক আছে? ঠিক আছে, কোন. রাইট? আমি GetString বলা হয়. GetString দৃশ্যত malloc কল. তাই কি কোড লাইন দৃশ্যত হয় থাকার জন্য ফল্ট এ এই মেমরি বরাদ্দ করা? চলুন শুরু করা যাক কেহ malloc লিখেছে অনুমান দীর্ঘ যথেষ্ট যে এটা প্রায় হয়েছে তাদের দোষ. সুতরাং এটি সম্ভবত খনি এর. cs50.c মধ্যে GetString - একটি যাতে কম্পিউটারে কোথাও ফাইল - লাইন 286 অপরাধী মনে করা হয়. এখন এর CS50 হয়েছে অনুমান করা যাক তাই সময় শালীন পরিমাণ, জন্য কাছাকাছি আমরা খুব অব্যর্থ হয়. এবং তাই GetString সম্ভবত না বাগ এই ব্যবস্থার সবচেয়ে গুরত্বপূর্ণ, বরং যে হ্যালো-2.c লাইন 18. তাই এর কটাক্ষপাত করা যাক যে লাইন 18 কি ছিল. ওহ. একরকম এই লাইন অগত্যা না হয় বগী, প্রতি ব:, কিন্তু এটা কারণ যে মেমরি লিক পিছনে. তাই সুপার সহজভাবে, কি intuitively হবে এখানে সমাধান হতে? আমরা মেমরির জন্য জিজ্ঞাসা করছি, না হয় এটা ফেরত প্রদান, এবং যে একটি বলে মনে হয় সমস্যা কারণ সময় আমার কম্পিউটারের মাধ্যমে মেমরি রান আউট হতে পারে, ধীর হতে পারে নিচে, খারাপ জিনিস, ভাল, ঘটতে পারে সহজ স্বজ্ঞাত সমাধান কি? এটা ফেরত দিতে. কিভাবে আপনি যে মেমরি মুক্ত করতে পারি? ওয়েল, সৌভাগ্যক্রমে এটা বেশ সহজ শুধু বিনামূল্যে নাম বলতে. এবং আমরা আগে এই কাজ করেছি. কিন্তু আপনি মূলত মনে করতে পারেন malloc বিপরীত হিসাবে বিনামূল্যে. বিনামূল্যে বিপরীত মেমরি বণ্টন. সুতরাং এখন আমাকে এই কম্পাইল করা যাক. হ্যালো-2 করুন. আমাকে আবার এটি চালানো যাক. হ্যালো-2 ডেভিড. তাই এটি কাজ করে বলে মনে হয় ঠিক একই ভাবে. কিন্তু আমি Valgrind ফিরে যান এবং পুনরায় চালনা যদি আমার সদ্য নেভিগেশন যে একই কমান্ড কম্পাইল করা প্রোগ্রাম, টাইপ আগে আমার নামে - খুশী হলাম. গাদা করুন সংক্ষিপ্ত - - প্রস্থান করা এ ব্যবহার শূন্য ব্লক শূন্য বাইট. এবং এই সুপার চমৎকার, সব গাদা ব্লক মুক্ত করা হয়. কোন তথ্য ফাঁসের সম্ভব. সুতরাং, না সমস্যা সেট 4 সঙ্গে উত্ক্রান্ত কিন্তু সমস্যা সেট 5, ফরেনসিক সঙ্গে এবং অনওয়ার্ড, এই খুব একটা হয়ে যাবে আপনার এর শুদ্ধতা পরিমাপ আপনি কিনা বা না প্রোগ্রাম, বা মেমরি ডিস্ক্রিপ্টরের লিক সম্বন্ধে সূচিত করা হবে না. কিন্তু সৌভাগ্যক্রমে, আপনি করতে পারেন না কারণ শুধুমাত্র তাদের intuitively, যার মাধ্যমে ছোট প্রোগ্রামের জন্য সহজ, তর্কসাপেক্ষ হয় কিন্তু বড় প্রোগ্রাম জন্য কঠিন, , যারা বড় প্রোগ্রাম জন্য, Valgrind আপনি সনাক্ত সাহায্য করতে পারেন বিশেষ সমস্যা. কিন্তু অন্য একটি সমস্যা আছে যে গাত্রোত্থান পারে. , যা হল, আমার এখানে এই ফাইল খুলুন আবার, একটি কিছুটা সহজ উদাহরণ. কিন্তু এখানে কি ফোকাস এই প্রোগ্রাম আছে. এই memory.c বলা হয়. আমরা পরে আজ পোস্ট করব আজ এর সোর্স কোড জিপ. এবং আমি নামক একটি ফাংশন আছে যে বিজ্ঞপ্তি আর্গুমেন্ট এবং কোন নেয় চ কিছুই ফেরৎ. লাইন 20, আমি দৃশ্যত একটি ঘোষণা করছি কোন int এবং এটি এক্স কলিং যাও পয়েন্টার. আমি বরাদ্দ করছি ফিরে malloc মান. এবং ঠিক থাকি কত বাইট, পরিষ্কার করা আমি সম্ভবত malloc থেকে ফিরে পেয়ে এই পরিস্থিতিতে? সম্ভবত 40. আপনি কোথায় থেকে পেতে পারি? হ্যাঁ, আপনি কোন int প্রায়ই যে প্রত্যাহার হলে 4 বাইট, অন্তত এটা হয় প্রয়োগ, বার 4 10 সম্ভবত 40 হয়. সুতরাং malloc একটি ঠিকানা ফিরে না একটি মেমরি খণ্ড এবং সংরক্ষণের যে x এর মধ্যে শেষ পর্যন্ত সুরাহা করে. সুতরাং, পরিষ্কার হবে কি তারপর কী ঘটছে? আচ্ছা, আমাকে ফিরে যেতে দেওয়া এখানে আমাদের ছবি. আমাকে শুধু আমার নীচে না আঁকা চলুন শুরু করা যাক কম্পিউটার এর মেমরি, আমাকে এগিয়ে যান এবং গোটা আয়তক্ষেত্র আঁকতে যে আমার RAM-র সমস্ত প্রতিনিধিত্ব করে. আমরা বলবো যে স্ট্যাকের নীচে হয়. এবং একটি টেক্সট সেগমেন্টের মধ্যে আছে uninitialized তথ্য. কিন্তু আমি বিমূর্ত যারা যাচ্ছি দূরে বিন্দু, বিন্দু বিন্দু অন্যান্য জিনিষ. আমি এই পড়ুন যাচ্ছি উপরের গাদা হিসাবে. এবং তারপর এই ছবি নীচে, প্রধান প্রতিনিধিত্বকারী, আমি যাচ্ছি এটি একটি টুকরা মেমরি দিতে স্ট্যাকের উপর. চ জন্য, আমি এটি একটি ফালি দিতে যাচ্ছি স্ট্যাকের উপর মেমরি. এখন, আমি আমার পরামর্শ পেয়েছিলাম আবার সোর্স কোড. মুখ্য জন্য স্থানীয় ভেরিয়েবল কি কি? স্পষ্টত কিছুই, যাতে ছে কার্যকরভাবে খালি থাকা অথবা এমনকি বড় আমি এটা টানা করেছি. কিন্তু চ, আমি একটি স্থানীয় পরিবর্তনশীল আছে যা এক্স বলা হয়. তাই আমি এগিয়ে যান এবং চ দিতে যাচ্ছি এটি এক্স কলিং মেমরি একটি খণ্ড. , 10 বার 4 এবং এখন malloc যে যেখানে malloc 40, তাই মেমরি থেকে আসছে? আমরা একটি ছবি আঁকা না করেছি আগে ভালো লেগেছে. কিন্তু এটা কার্যকরভাবে যে অনুমান করা যাক তাই এক, এখানে থেকে আসছে, দুই, তিন, চার, পাঁচ. এবং এখন আমি এই 40 প্রয়োজন. তাই আমি ঠিক সুপারিশ বিন্দু, বিন্দু, বিন্দু করব এমনকি আরো মেমরি আছে গাদা থেকে ফেরত আসছে. এখনই ঠিকানা কি? চলুন শুরু করা যাক আমাদের অবাধ নির্বাচন করুন হিসাবে সবসময় ঠিকানা - এটি সম্ভবত যাচ্ছে যদিও Ox123, সম্পূর্ণ ভিন্ন কিছু হতে পারে. যে প্রথম বাইট ঠিকানা আমি জিজ্ঞাসা করছি malloc মেমরি যে. তাই সংক্ষিপ্ত, একবার লাইন 20, executes আক্ষরিক কি এখানে x এর ভিতরে সঞ্চিত? Ox123. Ox123. এবং Ox নীরস হয়. এটা ঠিক এখানে মানে একটি হেক্সাডেসিমেল সংখ্যা. কিন্তু কি কি আমি দোকান করেছেন কি যে হয় x এর মধ্যে, যা একটি স্থানীয় পরিবর্তনশীল. কিন্তু তার ডাটা টাইপ, আবার, কোন int একটি ঠিকানা. ওয়েল, আমি Ox123 সংরক্ষণ করতে যাচ্ছি. কিন্তু আবার, একটি খুব সামান্য যে যদি আমি স্ক্রল যদি অকারণে জটিল ফিরে, আমরা এই দূরে বিমূর্ত পারেন বেশ যুক্তিসঙ্গতভাবে এবং শুধু বলে যে হল x একটি মেমরি যে তাল যাও পয়েন্টার. ঠিক আছে. এখন হাতের প্রশ্ন নিম্নোক্ত - লাইন 21, এটি সক্রিয় আউট, বগী. কেন? দুঃখিত? এটা না - আরো একবার বলে. ওয়েল, এটা বিনামূল্যে না. সুতরাং যে দ্বিতীয় কিন্তু. তাই অন্যান্য কিন্তু বিশেষভাবে এক আছে লাইন 21 এ. যথাযথভাবে. কোড এই সহজ লাইন মাত্র একটি বাফার ওভারফ্লো, একটি বাফার পদদলিত. একটি বাফার শুধু মেমরি একটি খণ্ড মানে. কিন্তু মেমরি যে তাল আকারের হয় 10, 10 পূর্ণসংখ্যার, যার মানে যদি আমরা অন্বিত চিনি ব্যবহার করে সেটিকে সূচক অ্যারের স্বরলিপি এর স্কয়ার বন্ধনী, আপনাকে এক্সেস আছে এক্স এক্স বন্ধনী 0 বন্ধনী 1 এক্স, বন্ধনী বিন্দু, বিন্দু, বিন্দু. এক্স বন্ধনী 9 বৃহত্তম এক. আমি এক্স বন্ধনী 10, তাই যদি যেখানে আসলে আমি যা মেমরির মধ্যে যাচ্ছি? ওয়েল, আমি 10 int-এ আছে - এর যাক আসলে সব আঁকা এখানে এই আউট. সুতরাং যে প্রথম পাঁচটি ছিল. এখানে অন্য পাঁচটি ints না. সুতরাং x এর বন্ধনী 0 এখানে. এক্স বন্ধনী 1 এখানে. এক্স বন্ধনী 9 এখানে. এক্স বন্ধনী 10 এখানে, যা, আমি বলছি মানে লাইন 21 সালে, কম্পিউটার রাখা নম্বর কোথায়? নম্বর 0 কোথায়? ওয়েল, এটা, হ্যাঁ 0. কিন্তু ঠিক যে তার 0 কাকতালীয় ধরনের. এটা সংখ্যা হতে পারে 50, আমরা যত্ন সব জন্য. কিন্তু আমরা x বন্ধনী এ এটি করা করার চেষ্টা করছেন যেখানে এই যা 10, প্রশ্ন চিহ্ন, টানা হয় যা একটি ভাল জিনিস না. এই প্রোগ্রামটি খুব ভাল বল ফলে বিপর্যস্ত. এখন, এর এগিয়ে যান এবং দেখুন এই যদি প্রকৃতপক্ষে, কি হয়. মেমরি করুন, যেহেতু ফাইল memory.c বলা হয়. চলুন শুরু করা যাক এগিয়ে যান এবং চালানোর জন্য প্রোগ্রাম মেমরি. সুতরাং আমরা ভাগ্যবান পেয়েছিলাম, আসলে, মনে হয়. আমরা ভাগ্যবান পেয়েছিলাম. কিন্তু আমরা এখন Valgrind চালানো হলে এর দেখতে দিন. প্রথম নজরে, আমার প্রোগ্রাম প্রতাপ পুরোপুরি সঠিক হবে বলে মনে হচ্ছে. কিন্তু সঙ্গে Valgrind সম্পর্কে চালানো যাক - লিক চেক মেমরি পূর্ণ সমান. এবং এখন আমি এই রান যখন - আকর্ষণীয়. অবৈধ এ আকার 4 লিখুন memory.c লাইন 21. Memory.c লাইন 21 এক যা? ওহ, আকর্ষণীয়. কিন্তু অপেক্ষা করুন. আয়তন 4, উল্লেখ যে কি হয়? আমি শুধুমাত্র এক, লিখতে থাকেন কিন্তু এটা আকার 4 এর. কেন এটা হয় 4? এটা যা কোন int, কারণ এটা আবার, চার বাইট হয়. সুতরাং Valgrind একটি বাগ খুঁজে পাওয়া যায় নি যে আমি, আমার কোড এ glancing, না. এবং হয়ত আপনার TF হবে বা না হবে. কিন্তু নিশ্চিত পাওয়া যায় যে জন্য Valgrind কি এমনকি আমরা সেখানে একটি ভুল করেছি আমরা ভাগ্যবান পেয়েছিলাম, এবং যদিও কম্পিউটার সিদ্ধান্ত নিয়েছে, অঁ্যা, আমি বিপর্যস্ত যাচ্ছি না আপনি এক বাইট, এক স্পর্শ মাত্র কারণ আপনি না যে মেমরি int-এর মূল্য আসলে নিজের. ভাল, এখানে বগী কি কি হয়. ঠিকানা - এই একটি পাগল খুঁজছেন ঠিকানা হল হেক্সাডেসিমেল মধ্যে. শুধু কোথাও গাদা হয় মানে আয়তন 40 একটি ব্লক পরে শূন্য বাইট বরাদ্দ করা হয়. আমাকে এখানে জুম আউট এবং দেখুন যদি এই একটু বেশি সহায়ক. আকর্ষণীয়. 40 বাইট স্পষ্টভাবে হারিয়ে গেছে 1 ক্ষতি রেকর্ড 1. আবার, আরো বেশী শব্দ এখানে দরকারী. কিন্তু, হাইলাইট লাইন উপর ভিত্তি করে যেখানে আমি সম্ভবত ফোকাস করা উচিত আমার অন্য বাগ মনোযোগ? Memory.c একটি লাইন 20 মত দেখায়. আমরা লাইন 20 ফিরে যান, তাই যদি হয় আপনি আগে চিহ্নিত এক. এবং এটা বগী অগত্যা না. কিন্তু আমরা এই তার প্রভাব বিপরীত হয়েছে. সুতরাং কিভাবে আমি অন্তত সঠিক না যারা ভুল এক? আমি লাইন 21 পরে কি করতে পারে? আমি, তাই x এর মুক্ত করতে পারে যে মেমরি ফেরত দিতে. এবং আমি এই বাগ কিভাবে ঠিক করব? আমি স্পষ্টভাবে যেতে হবে কোন অধিকতর 0 আর. তাই আমাকে চেষ্টা করুন এবং এই পুনরায় চালানো যাক. দুঃখিত, স্পষ্টভাবে যান কোন অধিকতর 9 আর. মেমরি করুন. Valgrind সম্পর্কে পুনরায় আরম্ভ করা যাক একটি বড় উইন্ডোতে. এবং এখন তাকান. খুশী হলাম. সমস্ত গাদা ব্লক মুক্ত করা হয়. কোন তথ্য ফাঁসের সম্ভব. এবং এখানে উপরে, কোনো উল্লেখ নেই অবৈধ অধিকার কোন. শুধু অর্থগৃধ্নু পেতে, এবং let এর আপনি যদি দেখতে অন্য বিক্ষোভের উদ্দেশ্যে যেতে হয় না - আমি একটি মুহূর্ত আগে পেতে ভাগ্যবান হয়নি. এবং এই হল 0 যে সম্ভবত হয় অকারণে বিভ্রান্তিকর. মাত্র 50, কিছুটা নির্বিচারে করতে চলুন শুরু করা যাক সংখ্যা, মেমরি বিন্দু স্ল্যাশ মেমরি করতে - এখনও পেতে ভাগ্যবান. কিছুই বিপর্যয় হচ্ছে. আমি সত্যিই কিছু করতে ধরুন বিচারবুদ্ধিহীন, এবং আমি 100 কি. , আমার মেমরি পুনর্নির্মাণ করা যাক বিন্দু স্ল্যাশ স্মৃতি - আবার ভাগ্যবান পেয়েছিলাম. কিভাবে 1,000? পরলোক ints, প্রায়, যেখানে আমি উচিত? মেমরি করুন - এটা অভিশাপ. [হাস্য] ঠিক আছে. এর আর কাছাকাছি বিশৃঙ্খল না. মেমরি পুনরায় আরম্ভ করুন. সেখানে আমরা যেতে. ঠিক আছে. তাই আপাতদৃষ্টিতে আপনি সূচক 100,000 ints আপনি হওয়া উচিত যেখানে পরলোক মেমরি, খারাপ ব্যাপার ঘটতে. তাই এই সম্ভবত হয় না একটি হার্ড, দ্রুত নিয়ম. আমি ট্রায়াল ব্যবহার ধরনের এবং ত্রুটি সেখানে পেতে. কিন্তু এই কারণ, দীর্ঘ গল্প সংক্ষিপ্ত আপনার কম্পিউটার এর মেমরি এছাড়াও বিভক্ত করা হয় এই জিনিষ মধ্যে অংশ বলা হয়. এবং কখনও কখনও, কম্পিউটার আসলে আপনি একটু বেশি মেমরি দেওয়া হয়েছে আপনার জন্য জিজ্ঞাসা আর. কিন্তু দক্ষতা জন্য, এটি শুধু সহজ আরো মেমরি পেতে কিন্তু শুধুমাত্র আপনি বলুন আপনি এটি একটি অংশ পেয়ে থাকেন যে. এবং যদি আপনি কখনও কখনও পেতে ভাগ্যবান যদি, অতএব, আপনি স্পর্শ করতে সক্ষম হতে পারেন যে মেমরি আপনাকে অন্তর্গত নয়. আপনি কোন গ্যারান্টি আছে যে কি মান আপনি সেখানে থাকবো করা কারণ কম্পিউটার এখনও এটা না মনে করে পুলিশের, কিন্তু এটা অপরিহার্যভাবে যাচ্ছে না মেমরির অন্য সেগমেন্ট আঘাত কম্পিউটার ও একটি ভুল মত প্রবর্তিত এখানে এই এক. ঠিক আছে. তারপর কোন প্রশ্ন মেমরি? ঠিক আছে. তারপর,, এর এখানে কটাক্ষপাত করা যাক আমরা গ্রহণ করছি কিছু বেশ কিছু সময় জন্য মঞ্জুর, যা cs50.h. নামক এই ফাইলটি হয় তাই এই একটি ফাইল. এই মাত্র একটি আভা আছে উপরে মন্তব্য. এবং আপনি এই যদি দিকে তাকিয়ে থাকতে পারে আপনি প্রয়োগ কাছাকাছি poked. কিন্তু এটা যে সব সময় সক্রিয় আউট আমরা একটি স্ট্রিং হিসাবে ব্যবহার করার জন্য ব্যবহৃত প্রতিশব্দ, আমরা ঘোষিত যার দ্বারা যে সমার্থক এই সঙ্গে ছিল টাইপ সংজ্ঞা জন্য typedef শব্দ. এবং আমরা মূলত বলছে না, গৃহস্থালি তারা জন্য একটি প্রতিশব্দ পংক্তি. এর মানে হল যে যার দ্বারা স্ট্যাকের নামে পরিচিত এই প্রশিক্ষণ চাকার নির্মিত পংক্তি. এখন এখানে শুধু একটি প্রোটোটাইপ এর getchar জন্য. আমরা আগে এটা দেখা হতে পারে, তবে যে প্রকৃতপক্ষে এটি কী জন্য. getchar , কোনো আর্গুমেন্ট লাগে একটি গৃহস্থালি ধার্য করা হয়. getdouble, কোনো আর্গুমেন্ট লাগে একটি ডবল ধার্য করা হয়. getfloat কোনো আর্গুমেন্ট বিনা, আয় লাগে একটি float, এবং তাই ঘোষণা. GetInt এখানে আছে. getlonglong এখানে আছে. এবং GetString এখানে আছে. এবং যে এটি. এই রক্তবর্ণ লাইন অন্য preprocessor হয় কারণ নির্দেশ এটি শুরুতে হ্যাশট্যাগ. ঠিক আছে. তাই এখন আমার সম্পর্কে cs50.c. ঢোকা যাক এবং আমরা এই অত্যন্ত দীর্ঘ কথা বলতে হবে না. কিন্তু আপনি কি একটি আভাস দিতে এই সব নেভিগেশন যাচ্ছে সময়, আমাকে যেতে দিন - যাক এর getchar না. সুতরাং getchar বেশিরভাগ মন্তব্য করা হয়. কিন্তু এটা ভালো দেখায়. তাই এই প্রকৃত ফাংশন আমরা চলেছি যে getchar মঞ্জুর জন্য গ্রহণ বিদ্যমান. এবং আমরা এই একটি ব্যবহার করেন নি, যদিও প্রায়ই, যদি কখনও, এটা অন্তত যে তুলনামূলকভাবে সহজ. তাই এটা গ্রহণ মূল্য এখানে এ দ্রুত বর্ণন. সুতরাং getchar, একটি অসীম লুপ আছে ইচ্ছাকৃতভাবে তাই দৃশ্যত. তারপর কল - এবং এই একটি ধরনের কোড চমৎকার খারাপ লেবেলযুক্ত আমরা নিজেদেরকে লিখেছিলেন. এটা GetString কল. এটা কি কারণ একটি গৃহস্থালি পেতে মানে? ওয়েল, যদি আপনি একটি পেতে চেষ্টা করতে পারেন গোটা ব্যবহারকারীর কাছ থেকে লেখার লাইন এবং তারপর মাত্র এক তাকান যারা অক্ষর. লাইন 60 সালে, এখানে একটু এর একটি বৈধতা চেক বিট. GetString নাল ফিরে, যদি এর এগিয়ে যাওয়া যাক. কিছু ভুল হয়েছে. এখন এই কিছুটা বিরক্তিকর কিন্তু সম্ভবত সি গৃহস্থালি সবের্াচ্চ মধ্যে প্রচলিত প্রতিনিধিত্ব করে ঠিক কি তার নামের উপর ভিত্তি করে? এটি একটি ধ্রুবক এর. এটি সংখ্যাবিহীন মত আপনার সাথে উপস্থাপন করতে পারেন গৃহস্থালি বৃহত্তম সম্ভবত সংখ্যা যা এক কামড়, বৃহত্তম সংখ্যা আপনি যা 255, , আট বিট প্রতিনিধিত্বকারী শূন্য থেকে শুরু. তাই আমি যখন এই ফাংশন, এই পদ্ধতি প্রয়োগ করেছি শুধুমাত্র কারণ, এই কোড লেখা কিছু getchar মধ্যে গোলমাল কিন্তু যদি জীবনের উদ্দেশ্য একটি ফিরতি হয় গৃহস্থালির কাজ, আপনি একরকম সক্ষম হতে হবে যে ব্যবহারকারী যাও সংকেত কিছু ভুল হয়েছে. আমরা নাল ফিরে আসতে পারবে না. এটা নাল একটি পয়েন্টার যে দেখা যাচ্ছে. এবং আবার, getchar আছে একটি গৃহস্থালি ফিরে যাওয়ার জন্য. তাই প্রচলিত রীতি অনুযায়ী, কিছু যায় যদি ভুল, আপনি প্রোগ্রামার, বা হয়, এই ক্ষেত্রে, আমার সম্পর্কে গ্রন্থাগারের সঙ্গে, আমি ছিল একটি মাত্র, যদি ইচ্ছামত সিদ্ধান্ত কিছু গোলমাল, আমি যাচ্ছি সত্যিই, যা সংখ্যা 255, ফিরে আমরা ব্যবহারকারী টাইপ করতে পারবেন না করতে পারবেন না মানে দ্বারা প্রতিনিধিত্ব চরিত্র আমরা কারণ সংখ্যা 255 এটি চুরি করা একটি তথাকথিত সেন্টিনেলে মূল্য একটি সমস্যা উপস্থাপন করে. এখন দেখা যাচ্ছে যে চরিত্র 255 আপনি টাইপ করতে পারেন কিছু না আপনার কীবোর্ড, তাই এটা কোন বড় চুক্তি. ব্যবহারকারী বিঞ্জপ্তি না আমি এই চরিত্র চুরি করেছি. কিন্তু আপনি কি কখনও একটি নেভিগেশন man পৃষ্ঠাগুলি দেখতে হলে একটি কম্পিউটার সিস্টেমের কিছু রেফারেন্স বলেছেন, যে ধ্রুবক ভালো সমস্ত ক্যাপ ত্রুটি এই ধ্রুবক যথাসাধ্য ক্ষেত্রে ফিরে, যে কি সব কিছু মানব বছর আগে ইচ্ছামত সিদ্ধান্ত ছিল এই বিশেষ মান এবং ফিরে এটা ক্ষেত্রে একটি ধ্রুবক কল কিছু গোলমাল. এখনই জাদু এখানে নিচে ঘটবে. প্রথমত, আমি লাইন 67 ঘোষণা করছি দুই অক্ষর, C1 এবং C2. এবং তারপর লাইন 68, আসলে আছে যা মনে করিয়ে দেয় যে কোড একটি লাইন আমাদের বন্ধু printf,, প্রদত্ত যে এটা উদ্ধৃতি চিহ্ন শতাংশ Cs আছে. কিন্তু এখানে কি ঘটছে সে লক্ষ্য করা. sscanf স্ট্রিং স্ক্যান এর মানে হল - একটি ফরম্যাট স্ক্যান মানে স্ট্রিং, ergo sscanf. এর অর্থ কি? এটি আপনাকে একটি স্ট্রিং sscanf পাস মানে. এবং লাইন যাই হোক না কেন হয় ইন ব্যবহারকারী ধরনের আপনি একটি ফরম্যাট স্ট্রিং মত sscanf পাস কি scanf বলে যে এই আপনি যদি ব্যবহারকারী ইন টাইপ করা হয়েছে প্রত্যাশী তারপর আপনি পাস ইন দুটি ঠিকানা এই ক্ষেত্রে মেমরি অংশ, আমি দুই স্থানধারক আছে. তাই আমি এটা ঠিকানা দিতে যাচ্ছি C1 এবং C2 এর ঠিকানা. এবং যদি আপনি একটি ফাংশন দিতে প্রত্যাহার কিছু ভেরিয়েবলের ঠিকানা, কি সংশ্লেষ? যে ফাংশন ফলে কি করতে পারেন এটি একটি ঠিকানা দেবার পরিবর্তনশীল, হিসাবে বিরোধিতা পরিবর্তনশীল নিজেই? এটা ঠিক আছে, তা পরিবর্তন করতে পারেন? যদি আপনি কাউকে একটি শারীরিক একটি মানচিত্র ছিল ঠিকানা, তারা সেখানে যান এবং কি করতে পারেন তারা যে ঠিকানায় চান যাই হোক না কেন. এখানে একই ধারণা. আমরা sscanf, দুটি ঠিকানায় প্রেরণ যদি এমনকি মেমরি অংশ, এই সব ছোট ছোট মেমরি, C1 C2 এবং সামান্য অংশ, কিন্তু আছে আমরা, এটা তাদের ঠিকানা বলুন sscanf তা পরিবর্তন করতে পারেন. জীবনের sscanf এর উদ্দেশ্য সুতরাং, আমরা পড়তে হলে man পৃষ্ঠা পড়া কি ব্যবহারকারী টাইপ করা, জমিদারি ব্যবহারকারীর জন্য আশা করি একটি অক্ষর টাইপ করা এবং হয়ত অন্য অক্ষর, এবং যাই হোক না কেন ব্যবহারকারী টাইপ করা, প্রথম অক্ষর যায় এখানে, দ্বিতীয় অক্ষর এখানে যায়. এখন, একটি সরাইয়া হিসাবে, এই, এবং আপনি হবে শুধুমাত্র, নথিপত্র থেকে এই জানি আমি সেখানে একটি ফাঁকা স্থান রাখা যে শুধু আমি না যত্ন এর মানে হল যে যদি ব্যবহারকারী স্পেস বার কয়েক হিট সে একটি লাগে বার আগে অক্ষর, আমি উপেক্ষা করা যাচ্ছে না কোনো সাদা স্থান. যাতে, আমি থেকে জানি ডকুমেন্টেশন. একটি দ্বিতীয়% গ আছে যে সাদা স্থান দ্বারা অনুসরণ আসলে ইচ্ছাকৃত. আমি সনাক্ত করতে সক্ষম হতে চান, তাহলে ব্যবহারকারী আপ মাতাল বা সহযোগিতা করা হয়নি. তাই আমি ব্যবহারকারী শুধুমাত্র টাইপ প্রত্যাশী করছি এক অক্ষর, তাই আমি আশা করছি যে sscanf শুধুমাত্র ফিরে যাচ্ছে মান 1 আমি পড়তে, যদি আবার, কারণ ডকুমেন্টেশন, sscanf এর উদ্দেশ্য এ জীবনের নম্বর ফিরে হয় ভরা ছিল যে ভেরিয়েবল ব্যবহারকারীর ইনপুট সঙ্গে. আমি দুটি ভেরিয়েবল পাস ঠিকানা, C1 এবং C2. আমি যে যদিও,, আশা করছি এর মধ্যে শুধুমাত্র একটি তাদের হত্যা করা পরার কারণ যদি sscanf আয় 2, সম্ভবতঃ কি কথাটি সংশ্লেষ? ব্যবহারকারী শুধু আমার দিন না চরিত্র মত আমি তাকে বললাম তার. তারা সম্ভবত এ টাইপ করা অন্তত দুই অক্ষর. আমি পরিবর্তে দ্বিতীয় আছে কি না তাই আপনি যদি % গ, শুধু আমি, এক যা ছিল অকপটে আরও বেশি ধারণাসম্পন্ন হবে পদ্ধতি, আমি একটি প্রথম নজরে মনে হয়, আপনি সনাক্ত করতে সক্ষম হতে যাচ্ছেন না ব্যবহারকারী আপনাকে আরও প্রদান করা হয়েছে যদি আপনি আসলে চেয়েছিলেন আর ইনপুট. তাই এই একটি অন্তর্নিহিত ফর্ম ত্রুটি পরীক্ষণ. কিন্তু আমি এখানে কি লক্ষ্য. একবার আমি ব্যবহারকারী আমাকে এক দিয়েছে নিশ্চিত নই অক্ষর, আমি করছেন, লাইন মুক্ত GetString এর বিপরীত, যা পালা আমি ফিরে তারপর malloc ব্যবহার করে, এবং C1, আমি প্রত্যাশিত যে চরিত্র ব্যবহারকারী দেওয়া হয় না এবং শুধুমাত্র উপলব্ধ. সুতরাং একটি দ্রুত শুধুমাত্র glimpsed, কিন্তু আছে getchar উপর কোন প্রশ্ন? আমরা অন্যদের কিছু ফিরে আসবো. আচ্ছা, আমাকে এগিয়ে যান এবং এই কাজের জন্য - শুধু অনুপ্রাণিত করার জন্য, এখন কল্পনা করা আমাদের সপ্তাহে প্লাস সময় আলোচনা, এই structs.h নামক একটি ফাইল. এবং আবার, শুধু এই একটি স্বাদ হয় এগিয়ে গুরত্বপূর্ণ কিছু যে. কিন্তু বিজ্ঞপ্তি যে অনেক এই মন্তব্য করা হয়. তাই আমাকে হাইলাইট করা যাক শুধুমাত্র এখন জন্য আকর্ষণীয় অংশ. typedef - একই শব্দ আবার আছে. typedef আমরা স্ট্রিং ঘোষণা ব্যবহার একটি বিশেষ তথ্য টাইপ করার সাথে সাথে. আপনি নতুন ব্র্যান্ডের তৈরি করতে typedef ব্যবহার করতে পারেন যখন উপস্থিত করেনি যে ডেটা প্রকার সি আবিষ্কৃত হয়. উদাহরণস্বরূপ, int-সি গৃহস্থালি সঙ্গে আসে সি সি ডবল সঙ্গে আসে সঙ্গে আসে কিন্তু একজন ছাত্র কোন ধারণা আছে. এবং এখনো এটা হতে বেশ সহায়ক হবে সঞ্চয় যে একটি প্রোগ্রাম লিখতে সমর্থ একটি পরিবর্তনশীল, একটি ছাত্র এর আইডি নম্বর, তাদের নাম, এবং তাদের বাড়ী. অন্য কথায়, তিন টুকরা তথ্য, কোন int এবং একটি পছন্দ স্ট্রিং এবং অন্য একটি পংক্তি. Typedef সঙ্গে, কি সুন্দর শক্তিশালী জন্য এই শব্দ sturct সম্পর্কে গঠন, আপনি 2013 সালে প্রোগ্রামার, আসলে আপনার নিজস্ব নির্ধারণ করতে পারবেন বছর না উপস্থিত করেনি যে ডেটা প্রকার আগে কিন্তু যে আপনার উদ্দেশ্য অনুসারে. তাই এখানে 19 এর মাধ্যমে লাইন 13, আমরা চাই, একটি নতুন ডাটা টাইপ ঘোষণা করছি কোন int, কিন্তু এটা ছাত্র কলিং. এবং ভেতরের এই পরিবর্তনশীল যাচ্ছে কোন int, একটি স্ট্রিং, - তিনটি বিষয় হতে এবং একটি পংক্তি. তাই আপনি যদি সত্যিই কি মনে করতে পারেন এই হল, যদিও এখানে ঘটেছে একটি আজকের জন্য একটি সরলীকরণ বিট, একটি ছাত্র মূলত যাচ্ছে ভালো চেহারা. তার একটি খণ্ড হতে যাচ্ছে একটি আইডি সঙ্গে মেমরি, একটি নাম যদি ক্ষেত্রের কিছু r, এবং একটি বাড়িতে যদি ক্ষেত্রের কিছু r. এবং আমরা যারা অংশ ব্যবহার করতে পারবেন মেমরি এবং তাদের অ্যাক্সেস হিসাবে অনুসরণ করে. আমি struct0.c ঢোকা থাকে, তাহলে এখানে একটি অপেক্ষাকৃত দীর্ঘ, কিন্তু অনুসরণ কোড প্যাটার্ন, যে এই নতুন কৌতুক ব্যবহার করে. সুতরাং প্রথম, আমার প্রতি আপনার দৃষ্টি আকর্ষণ করা যাক উপরে আকর্ষণীয় অংশ. শার্প ছাত্র 3 সংজ্ঞায়িত, ঘোষণা করে একটি ধ্রুবক বলা হয় ছাত্র এবং নির্ধারণ করা হয় এটা শুধু ইচ্ছামত সংখ্যা 3, তাই আমি ব্যবহার করে তিন ছাত্র আছে এখন জন্য এই প্রোগ্রাম. এখানে মুখ্য আসে. এবং বিজ্ঞপ্তি, কিভাবে আমি ডিক্লেয়ার না ছাত্রদের একটি অ্যারের? ওয়েল, আমি ঠিক একই সিনট্যাক্স ব্যবহার করুন. শব্দ ছাত্র সম্ভবত নতুন. কিন্তু ছাত্র, বর্গ, বন্ধনী ছাত্র. তাই দুর্ভাগ্যবশত অনেক আছে এখানে পদ পুনরায়. শুধু এই একটি সংখ্যা. তাই এই তিন বলছে ভালো হয়. ক্লাস আমি চাই ঠিক কি হয় পরিবর্তনশীল কল. আমি এটা ছাত্র পেরেছিলাম. কিন্তু বর্গ, এই একটি একটি ক্লাস হয় না অবজেক্ট ওরিয়েন্টেড জাভা ধরনের উপায়. এটা ঠিক ছাত্র একটি বর্গ জন্য. এবং প্রত্যেক উপাদান ডাটা টাইপ যে অ্যারের মধ্যে ছাত্রী. তাই এই সামান্য ভিন্ন এবং কিছু বলার অপেক্ষা রাখে না থেকে ভালো, এটা তো শুধু - আমি আমার তিন ছাত্র দিতে বলছে এবং যে অ্যারের বর্গ কল. ঠিক আছে. এখন এখানে একটি চার লুপ এর. এই লোক এর পরিচিত - পুনরুক্তি আপ নেভিগেশন শূন্য থেকে তিন থেকে. এবং এখানে বাক্য গঠন নতুন টুকরা এর. প্রোগ্রাম, আমার সম্পর্কে লেখার অনুরোধ জানানো যাচ্ছে এটি একটি ছাত্র দিতে মানব, কোন int যা আইডি. এবং এখানে আপনি যা করতে পারেন যা দিয়ে বাক্য গঠন এর এ ID ক্ষেত্রের মধ্যে কিছু সঞ্চয় পাঁচ ক্লাস বন্ধনী আই সুতরাং এই বাক্য গঠন নতুন নয়. এই মাত্র আমার সম্পর্কে অষ্টম দিতে মানে ক্লাসে ছাত্র. কিন্তু এই চিহ্ন নতুন. এখন পর্যন্ত, যতক্ষণ না আমরা বিন্দু ব্যবহার করা যাবে না করেছি ভালো অন্তত সালে কোড. এই উপায় হিসেবে পরিচিত struct যান একজন ছাত্র এবং সেখানে কিছু করা. একইভাবে, এই পরের লাইন, 31, যান এগিয়ে রাখা যাই হোক না কেন ব্যবহারকারী ধরনের এখানে একটি নামের জন্য এবং কি তারা একটি জন্য ঘর, একই জিনিস, এগিয়ে যান এবং . বাড়িতে লাগাতে হবে. তাই এই প্রোগ্রাম কি আছে শেষ পর্যন্ত কি? আপনি সেখানে একটু টিজার দেখতে পারেন. আমাকে এগিয়ে যান এবং structs 0 করতে না দেওয়া বিন্দু স্ল্যাশ struct 0, ছাত্র এর আইডি 1, ডেভিড মাথের, ছাত্র আইডি 2 বলে. রব কার্কল্যান্ড, ছাত্র আইডি 3. Lauren Leverit - এবং এই প্রোগ্রাম কি কেবল জিনিস, যা ঠিক, সম্পূর্ণ অবাধ হয় আমি, এই তথ্য সঙ্গে কিছু করতে চেয়েছিলেন আমি কিভাবে আমাদের শেখানো করেছি এখন যে structs ব্যবহার করে, আমি ঠিক ছিল না এখানে এই অতিরিক্ত লুপ. আমি ছাত্রদের অ্যারের পুনরুক্তি উপর. আমি আমাদের, সম্ভবত এখন পরিচিত বন্ধু, ব্যবহৃত স্ট্রিং, stircomp তুলনা চেক 8 ছাত্র এর ঘর মাথের সমান? এবং যদি তাই হয়, শুধু কিছু প্রিন্ট ইচ্ছামত চাই, হ্যাঁ, এটা. কিন্তু আবার, আমার সুযোগ প্রদান এবং ব্যবহার এবং পুনরায় ব্যবহার করার জন্য এই নতুন বিন্দু স্বরলিপি পুনরায়. সুতরাং যারা, ডান বজায় রাখে? একটি ছাত্র প্রোগ্রামের সাথে আপ আসছে কিছুটা নির্বিচারে, কিন্তু এটি সক্রিয় আউট আমরা দরকারী জিনিষ করতে পারেন এই উদাহরণস্বরূপ, হিসাবে অনুসরণ করে. এটি একটি অনেক বেশি জটিল struct হয় সি মধ্যে এটি একটি ডজন অথবা অধিক ক্ষেত্র পেয়েছিলাম কিছুটা cryptically নামে. কিন্তু আপনি কি কখনও একটি গ্রাফিক্স শোনা করেছি বিটম্যাপ নামক ফাইল ফরম্যাট, BMP, এটা দেখা যাচ্ছে যে বিটম্যাপ ফাইল ফরম্যাট অনেক সুন্দর এই যে মত দেখায়. এটি একটি মূঢ় একটু হাসি মুখ করে. আমি জুম করেছি যে একটি ছোট ইমেজ এর বেশ বড় নেভিগেশন আমি প্রতিটি দেখতে পারে যাতে পৃথক বিন্দু বা পিক্সেল. আমরা উপস্থাপন করতে পারেন খুঁজে, এখন এটি সক্রিয় সংখ্যা 0, বলে, সঙ্গে কালো বিন্দু. সংখ্যা 1 এবং একটি সাদা বিন্দু. তাই অন্য কথায়, যদি আপনি চান একটি আঁকা হাস্যজ্জল মুখ এবং একটি যে চিত্র সংরক্ষণ করুন কম্পিউটার, এটা zeros এবং সংরক্ষণ করার জন্য যথেষ্ট এই মত যে বেশী, যেখানে, আবার, বেশী সাদা এবং zeros কালো. একসঙ্গে, আপনি কার্যকরভাবে থাকে তাহলে বেশী এবং zeros এর হত্তয়া একটি, আপনি একটি আছে পিক্সেল গ্রিড, এবং আপনি যদি lay তাদের আউট, আপনি একটি বুদ্ধিমান আছে একটু হাসি মুখ. এখন, বিটম্যাপ ফাইল ফরম্যাট, BMP, হয় কার্যকরভাবে যে ফণা নীচে, কিন্তু আরো পিক্সেল Sot সঙ্গে যে আপনি আসলে রং উপস্থাপন করতে পারেন. তবে আপনি যদি আরো পরিশীলিত আছে BMP এবং JPEG ও জিআইএফ মত ফাইল ফরম্যাটের যা দিয়ে আপনি, যারা পরিচিত হতে পারে ডিস্কের মধ্যে ফাইল সাধারণত শুধুমাত্র zeros এবং পিক্সেল জন্য বেশী আছে, কিন্তু তারা ভাল কিছু মেটাডেটা আছে - সত্যিই হয় না যে অর্থে মেটা তথ্য কিন্তু আছে দরকারী. সুতরাং এখানে এই ক্ষেত্র implying, এবং আমরা পি সেট মধ্যে বিশদ আলোচনা করা এই দেখতে পাবেন 5, যে zeros এবং বেশী যে আগে একটি ছবিতে পিক্সেল উপস্থাপন মেটাডেটা একটি গুচ্ছ মত আছে ইমেজ এর আকার এবং চিত্র প্রস্থ. এবং আমি কিছু বন্ধ অবচয় করছি বিজ্ঞপ্তি এখানে অবাধ জিনিষ - প্রস্থ এবং উচ্চতা. বিট গণনা এবং কিছু অন্যান্য বিষয়. সুতরাং একটি ফাইলে কিছু মেটাডেটা আছে. কিন্তু ফাইল পরিপূর্ণ হয় কিভাবে বুঝতে দ্বারা এই ভাবে আউট, আপনি আসলে করতে পারেন তারপর ইমেজ নিপূণভাবে, ইমেজ পুনরুদ্ধার ডিস্ক থেকে, ইমেজ মাপ পরিবর্তন. কিন্তু আপনি অগত্যা না করতে পারেন তাদের উন্নত. আমি একটি ফটোগ্রাফ প্রয়োজন. তাই আমি আপনাকে দেখেছি, যারা এখানে RJ ফিরে গিয়েছিলাম বেশ কিছু সময় আগে পর্দায়. আমি এখানে তান খুলুন এবং যদি, এই হল আপনি কি জুম করার চেষ্টা করলে কী ঘটবে এবং RJ উন্নত. তিনি সত্যিই কোন ভাল পাচ্ছেন না. এখনই তান এটি একটি অস্পষ্টতা ধরনের সামান্য বিট, শুধু ওভার গ্লস যাও RJ বিশেষ পাবেন না যে আপনি জুম যখন উন্নত এবং এই ভাবে না, স্কোয়ার দেখতে? হ্যাঁ, আপনি স্পষ্টভাবে দেখতে পারেন একটি প্রজেক্টর নেভিগেশন স্কোয়ার. যে আপনি উন্নত যখন আপনি পেতে কি. কিন্তু বুঝতে কিভাবে আমাদের RJ বা হাস্যজ্জল মুখ বাস্তবায়িত হয় আমাদের দেওয়া হবে আসলে manipulates যে কোড লিখুন এই জিনিস. এবং আমি সঙ্গে, আমি এই নোট শেষ চাই একটি 55 যাও, যে উন্নত আমি বরং বিভ্রান্তিকর বলে, সাহস. [ভিডিও প্লেব্যাক] -তিনি মিথ্যা না. কি বিষয়ে, আমি জানি না. তাই আমরা কি জানি? যে 9:15 সত্যজিৎ Santoya এ এটিএম ছিল. তাই প্রশ্ন কি তিনি 9:16 এ করছেন? শুটিং নয় মিলিমিটার কিছু এ. হয়তো তিনি স্নাইপার দেখেছি. বা তার সঙ্গে কাজ ছিল. -অপেক্ষা করুন. এক ফিরে যান. কি আপনি দেখেন? পূর্ণ পর্দায় তার মুখ পর্যন্ত আনুন. তার চশমা. আছে একটি প্রতিফলন না. যে Neuvitas বেসবল দল. যে তাদের লোগো এর. এবং সে যে কেহ আপনি কথা বলা যে জ্যাকেট পরা. [END টি ভিডিও প্লেব্যাক] ডেভিড জে Malan: এই আছি সমস্যা সেট 5 হতে. আমরা পরের সপ্তাহে দেখতে পাবেন. MALE স্পিকার: পরের CS50 না. [CRICKETS CHIRPING] [সঙ্গীত বাজানো]