[সঙ্গীত বাজাচ্ছি] ডেভিড জে MALAN: ঠিক আছে. এটি CS50 এবং এই সপ্তাহ 2 এর সূচনা. আর আপনি যে ওভার প্রত্যাহার করব গত কয়েক সপ্তাহ, আমরা কম্পিউটার প্রবর্তনের করে থাকেন বিজ্ঞান এবং, ঘুরে, প্রোগ্রামিং. এবং আমরা এর উপায় দ্বারা গল্প শুরু ভূত, যে গ্রাফিক্যাল ভাষা এমআইটি মিডিয়া ল্যাব থেকে. এবং তারপর অতি সম্প্রতি, গত সপ্তাহে, আমরা করেনি একটি higher-- একটি পরিচয় করিয়ে নিম্ন স্তরের ভাষা পরিচিত সি, কিছু যে বিশুদ্ধরূপে পাঠগত হিসাবে. এবং প্রকৃতপক্ষে, আমরা শেষ সময় যে প্রসঙ্গের মধ্যে অন্বেষণ ধারণার একটি নম্বর. এই, রিকল, খুব ছিল প্রথম প্রোগ্রাম আমরা দিকে তাকিয়ে. এবং এই প্রোগ্রামটি, বেশ সহজভাবে, কপি করে প্রিন্ট আউট, "হ্যালো, দুনিয়া." কিন্তু সেখানে এত ভান জাদু চলছে. এই # অন্তর্ভুক্ত এই কোণ বন্ধনী দিয়ে. সেখানে int. আছে (অকার্যকর). প্রথম বন্ধনী, কোঁকড়া ধনুর্বন্ধনী আছে, সেমি-কোলন, এবং আরও অনেক কিছু. আর তাই, যে প্রত্যাহার আমরা ভূত চালু যাতে আমরা, আদর্শভাবে, অতীত দেখতে পারে যে বাক্য গঠন, কাপড় সত্যিই না যে সব যে বুদ্ধিমত্তা মজার কিন্তু প্রথম , একেবারে, একটি বিট কূট আপনার মন চারপাশে মোড়ানো. এবং প্রকৃতপক্ষে, সবচেয়ে সাধারণ এক কিছু প্রথম দিকে একটি প্রোগ্রামিং ক্লাসে, বিশেষ করে কম জন্য আরামদায়ক, হতাশ পেতে হয় এবং নির্দিষ্ট অন্বিত দ্বারা আপ হোঁচট খেয়েছি ত্রুটি, লজিক্যাল ত্রুটি উল্লেখ না. এবং আমাদের লক্ষ্য মধ্যে তাই আজ, আসলে, হবে কিছু সঙ্গে আপনি সজ্জিত করা জন্য কিভাবে সমস্যা সমাধানে কৌশল ভাল সমস্যার নিজেদের সমাধান করতে ডিবাগ আকারে. এবং আপনি প্রত্যাহার করব যে, পরিবেশ যে আমরা চালু শেষ সময় CS50 আইডিই বলা হয়. এই ওয়েব ভিত্তিক সফ্টওয়্যার যে আপনি মেঘ প্রোগ্রমিং করতে পারবেন, তাই কথা বলতে, যখন সব পালন আপনার একসাথে ফাইল, যেমন আমরা আজ আবার হবে. এবং যে আমরা প্রত্যাহার এখানে এই বিষয় revisited, তাদের মধ্যে ফাংশন, এবং loops, এবং ভেরিয়েবল, এবং বুলিয়ান এক্সপ্রেশন, এবং শর্ত. এবং প্রকৃতপক্ষে আরো কয়েকটি যে আমরা স্ক্র্যাচ থেকে বিশ্বের অনূদিত সি জগতে কিন্তু মৌলিক বিল্ডিং ব্লক, তাই কথা বলতে, সত্যিই এখনও একই গত সপ্তাহে ছিল. একটা সত্য, আমরা সত্যিই ঠিক ছিল বিভিন্ন পাজল টুকরা, যদি আপনি হবে. যে রক্তবর্ণ পরিবর্তে ব্লক সংরক্ষণ, আমরা পরিবর্তে printf ছিল, যা সি এই ফাংশন যে আপনি কিছু প্রিন্ট করতে পারবেন পর্দায় এটি ফরম্যাট. আমরা CS50 চালু লাইব্রেরী, আপনি যেখানে আপনার নিষ্পত্তি get_char এখন আছে, এবং get_int, এবং get_string, এবং হিসাবে কয়েক অন্যান্য কার্যাবলী ভাল, যার মাধ্যমে আপনি ইনপুট পেতে পারেন ব্যবহারকারীর নিজের কীবোর্ড থেকে. এবং আমরা কিছু কটাক্ষপাত গ্রহণ these- bool, এবং গৃহস্থালি মত, এবং ডবল, float, কোন int, long_long পংক্তি. আর সেখানে সি এমনকি অন্য ধরনের তথ্য অন্য কথায়, যখন আপনি ঘোষণা ইন একটি পরিবর্তনশীল কিছু মান ধারণ করার জন্য, অথবা যখন আপনি একটি ফাংশন বাস্তবায়ন যে কিছু মান, আপনি কি নির্দিষ্ট করে দিতে পারেন মান যে ধরণ. এটা একটি পংক্তি, একটি মত অক্ষর ক্রম? এটি একটি পূর্ণসংখ্যা মত একটি নম্বর আছে কি? এটা একটা ফ্লোটিং পয়েন্ট মান, বা মত? তাই সি, স্ক্র্যাচ অসদৃশ, আমরা আসলে তথ্য কি ধরনের উল্লেখ করতে লাগলেন আমরা ফিরে বা ব্যবহার করা হয়েছে. কিন্তু, অবশ্যই, আমরা গাড়ীতে কম্পিউটিং এর কিছু মৌলিক সীমা. এবং বিশেষ করে, এই ভাষা সি, রিকল আমরা কটাক্ষপাত গ্রহণ করে পূর্ণসংখ্যা ওভারফ্লো, বাস্তবতা যে আপনি যদি শুধুমাত্র একটি আছে মেমরি সসীম পরিমাণ বা নির্দিষ্টভাবে, একটি সসীম সংখ্যা বিট, আপনি শুধুমাত্র তাই উচ্চ গণনা করতে পারেন. তাই আমরা এখানে এই উদাহরণে দিকে তাকিয়ে যদ্দ্বারা একটি বিমান একটি কাউন্টার, আসলে, যদি দীর্ঘ যথেষ্ট হবে চলমান ওভারফ্লো এবং একটি সফ্টওয়্যার ফল একটি প্রকৃত শারীরিক সম্ভাব্য ত্রুটি. আমরা ভাসমান দিকে তাকিয়ে পয়েন্ট অনির্দিষ্টতা, বাস্তবতা যে শুধুমাত্র একটি সসীম সংখ্যা সঙ্গে বিট, তা 32 বা 64 হয়, আপনি শুধুমাত্র তাই অনেক সংখ্যা নির্দিষ্ট করতে পারেন একটি দশমিক বিন্দু, পরে যা পরে আপনি যথাযথ নয় এমন পেতে শুরু. উদাহরণস্বরূপ, এক-তৃতীয়াংশ তাই এখানে বিশ্বের, আমাদের মানব বিশ্বের, আমরা জানি শুধু একটি অসীম সংখ্যা হল দশমিক বিন্দু পরে 3s এর. কিন্তু একটি কম্পিউটার অগত্যা না করতে পারেন সংখ্যার একটি অসীম সংখ্যা প্রতিনিধিত্ব যদি আপনি শুধুমাত্র অনুমতি কিছু তথ্য সসীম পরিমাণ. তাই না শুধুমাত্র আমরা আপনাকে সজ্জিত হয়নি পদ বৃহত্তর ক্ষমতা সঙ্গে কীভাবে আপনি নিজেকে এ প্রকাশ পারে প্রোগ্রামিং এর পরিপ্রেক্ষিতে একটি কীবোর্ড, আমরা সীমাবদ্ধ কি আপনি আসলে কি করতে পারেন. এবং প্রকৃতপক্ষে, বাগ এবং ভুল করতে পারেন বিষয় ঐ ধরণের থেকে উঠা. এবং প্রকৃতপক্ষে, বিষয় মধ্যে আজ ডিবাগ মত বিষয় হতে যাচ্ছে এবং আসলে ফণা নীচে খুঁজছেন কিভাবে কিছু চালু করা হয়েছে গত সপ্তাহে এ আসলে বাস্তবায়িত হয় যাতে আপনি ভাল বুঝতে উভয়ের ক্ষমতা ও সি মত একটি ভাষা সীমাবদ্ধতার এবং সত্য, আমরা স্তর ফিরে ছুলা পাবেন ডাটা স্ট্রাকচার সহজ এর, কিছু একটি অ্যারের নামক স্ক্র্যাচ একটি কল ঘটবে "তালিকা." এটা একটা সামান্য বিট যে প্রেক্ষাপটে বিভিন্ন. এবং তারপর আমরা এক পরিচয় করিয়ে দেব আমাদের ডোমেইন নির্দিষ্ট সমস্যার প্রথম CS50 মধ্যে, বিশ্বের ক্রিপ্টোগ্রাফি, scrambling শিল্প বা এত তথ্য ciphering আপনি গোপন বার্তা পাঠাতে পারেন যে এবং গোপন বার্তা ডিকোড দুই ব্যক্তি, A এবং B মধ্যে তাই আমরা এই পরিবর্তনকে সামনে যে নতুন জগতের, এর কিছু সঙ্গে আপনি সজ্জিত করার চেষ্টা করা যাক কৌশল যা দিয়ে আপনি বাদ দিতে পারে বা অন্তত কিছু কমাতে বিরক্তির আপনি সম্ভবত সম্মুখীন যে গত সপ্তাহে একা বেশি. আসলে, আপনি এগিয়ে কিছু such-- হয় সি আর মতভেদ আপনার প্রথম সমস্যা, হয় যদি আপনি আমার মত হন, প্রথমবার আপনি একটি প্রোগ্রাম খুঁজে টাইপ করার চেষ্টা করুন, এমনকি যদি আপনি মনে করেন কথাটি প্রোগ্রাম বেশ সহজ, আপনি খুব ভাল একটি প্রাচীর আঘাত হতে পারে, এবং কম্পাইলার সহযোগিতা করা যাচ্ছে না. করুন বা ঝনঝন যাচ্ছে না আসলে আপনার নিলামীতে না. এবং কেন যে হতে পারে? ওয়েল, এর কটাক্ষপাত করা যাক সম্ভবত, একটি সহজ প্রোগ্রাম. আমি এগিয়ে যান এবং এই সংরক্ষণ করতে যাচ্ছি একটি ফাইল ইচ্ছাকৃতভাবে buggy0.c ডেকে কারণ আমি এটা জানি আগাম দ্বিধান্বিত হবেন. কিন্তু আমি বুঝতে পারি যে যদি এই না পারে প্রথম বা দ্বিতীয় বা তৃতীয় প্রোগ্রাম যে আমি আসলে নিজেকে তৈরি করছি. তাই আমি এগিয়ে যান যাচ্ছি এবং টাইপ আউট, int প্রধান (অকার্যকর). তারপর আমার কোঁকড়া ধনুর্বন্ধনী ভিতরে, একটি খুব পরিচিত ( "হ্যালো, world-- ব্যাকস্ল্যাশ, এন ") - এবং একটি সেমিকোলন. আমি ফাইল সংরক্ষণ করেছি. এখন আমি নিচে যেতে যাচ্ছি আমার টার্মিনাল উইন্ডোতে এবং লিখুন মেক buggy0, কারণ, আবার, আজ ফাইলের নাম buggy0.c হয়. তাই আমি buggy0 করতে লিখুন লিখুন. এবং, উহু, হায় ভগবান, শেষ সময় থেকে প্রত্যাহার যে কোন ত্রুটির বার্তা একটি ভাল জিনিস. তাই কোন আউটপুট একটি ভাল জিনিস. কিন্তু এখানে আমি স্পষ্ট আছে ভুল কিছু সংখ্যা. আউটপুট প্রথম লাইন তাই buggy0 টাইপ করতে হবে পরে, রিকল, ঝনঝন এর মোটামুটি বাগাড়ম্বরপূর্ণ আউটপুট. ফণা নীচে, এবং CS50 আইডিই কনফিগার করা আভা ব্যবহার করতে এই কম্পাইলার দিয়ে অপশন তাই আপনি না যে তাদের সম্বন্ধে ভাবতে. আর যে সব যে প্রথম লাইন হচ্ছে মানে যে ঝনঝন দিয়ে শুরু হয়. কিন্তু পরে, সমস্যা তাদের চেহারা করা শুরু. লাইন 3, চরিত্রের উপর Buggy0.c 5, সেখানে একটি বড় লাল পথভ্রষ্টতা. এটা কি? পরোক্ষভাবে প্রকাশক লাইব্রেরি ফাংশন ঘোষণা সঙ্গে টাইপ int (const গৃহস্থালি * printf, ...) [-Werror]. আমি খুব দ্রুত বলতে চাচ্ছি, এটা খুব রহস্যময় পায়. এবং অবশ্যই, প্রথম এক নজরে, আমরা পারব না আপনি বুঝতে আশা যে বার্তা সম্পূর্ণতা. তাই পাঠ এক আজ যাচ্ছে লক্ষ্য করার চেষ্টা করা যাবে নিদর্শন, বা অনুরূপ কিছু, ত্রুটি আপনি থাকতে পারে অতীতে সম্মুখীন. তাই আসুন পৃথক্ শুধুমাত্র আঁচড়ান কথাগুলোর যে পরিচিত চেহারা. বড় লাল ত্রুটি পরিষ্কারভাবে কিছু সিম্বলিক ভুল হচ্ছে. পরোক্ষভাবে প্রকাশক লাইব্রেরি ফাংশন printf,. তাই, এমনকি যদি আমি বেশ বুঝতে পারছি না কি পরোক্ষভাবে লাইব্রেরি ফাংশন ঘোষণা মানে, সমস্যা নিশ্চয় একরকম printf সম্পর্কযুক্ত. আর যে বিষয়টি উৎস এটা ঘোষণা করতে হয়েছে. ঘোষণা একটি ফাংশন প্রথমবার জন্য এটা উল্লেখ. এবং আমরা গত সপ্তাহে পরিভাষা ব্যবহৃত একটি ফাংশন এর প্রোটোটাইপ ঘোষণা, পারেন উপরের এক লাইন দিয়ে আপনার নিজস্ব ফাইল বা তথাকথিত হেডার ফাইলটি. এবং কি ফাইল আমরা বলছি না গত সপ্তাহে যে printf উদ্ধৃতি, উদ্ধতি ঘোষণা? কি ফাইলের মধ্যে তার প্রোটোটাইপ? তাই আপনি যদি প্রত্যাহার, প্রথম জিনিস আমি টাইপ, প্রায় প্রতিটি প্রোগ্রাম গত time-- এবং ঘটনাক্রমে একটি মুহূর্ত আগে শুরু myself-- টাইপ এই এক এখানে ছিল হ্যাশ #include