>> [সঙ্গীত বাজাচ্ছি]
>> ডেভিড জে 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 <stio-- জন্য ইনপুট / output-- ডট জ এবং প্রকৃতপক্ষে,
যদি আমি এখন এই ফাইলটি সংরক্ষণ, আমি যাচ্ছি এগিয়ে যান এবং আমার পর্দা পরিষ্কার,
আপনি টাইপ করে নির্বাচন করতে পারবেন যা পরিষ্কার, অথবা আপনি কন্ট্রোল এল ধরে রাখতে পারেন,
শুধু আপনার টার্মিনাল উইন্ডোতে পরিষ্কার শুধু কিছু গোলমাল নিষ্কাশন করা.
>> আমি এগিয়ে যান যাচ্ছি এবং পুনরায় টাইপ মেক buggy0, লিখুন.
এবং voila, আমি এখনও দেখতে ঝনঝন থেকে দীর্ঘ কমান্ড,
কিন্তু সেখানে কোন ত্রুটি বার্তা এই সময়.
এবং প্রকৃতপক্ষে, আমি ./buggy0 না, শুধু শেষবারের মত,
যেখানে বিন্দু এই অর্থ ডিরেক্টরি, স্ল্যাশ মানে,
এখানে প্রোগ্রামের নাম আসে এবং প্রোগ্রাম যে নাম buggy0 হয়,
লিখুন, "হ্যালো, দুনিয়া."
>> এখন, আপনি কিভাবে থাকতে পারে এই সমাধান উত্পন্ন
ছাড়া অগত্যা যেমন অনেক শব্দ স্বীকৃতি
যেমন আমি, অবশ্যই, জমিদারি অনেক বছর ধরে এই কাজ?
আচ্ছা, প্রথম সমস্যা প্রতি উপলব্ধি সেট, আমরা আপনাকে একটি কমান্ডের সাথে পরিচয় করিয়ে
যে CS50 এর নিজস্ব কর্মীদের help50 নামক লিখেছেন.
এবং প্রকৃতপক্ষে, সি স্পেসিফিকেশন করে সমস্যা এই কিভাবে ব্যবহার করার জন্য সেট করা.
>> কিন্তু help50 মূলত একটি প্রোগ্রাম যা CS50 এর কর্মীদের
আপনি চালানোর যে লিখেছে পারবেন একটি কমান্ড বা একটি প্রোগ্রাম চালানো,
এবং যদি আপনি বুঝতে না তার আউটপুট, help50 তার আউটপুট পাস
যা সফটওয়্যার বাতলান যে কোর্স এর কর্মীরা লিখেছে
আপনার প্রোগ্রামের আউটপুট তাকান হবে পাতিপাতি অক্ষর দ্বারা চরিত্র.
আর যদি আমরা, কর্মী, চিনতে যে আপনি সম্মুখীন করছি ত্রুটির বার্তা,
আমরা কিছু সঙ্গে আপনি ঘটান করতে চেষ্টা করবে অলঙ্কৃত প্রশ্ন, কিছু পরামর্শ দিয়ে,
অনেক একটি TF অথবা একটি CA বা আমার মতো অফিস সময়ে ব্যক্তি না হবে.
>> সুতরাং help50 চেহারা যদি আপনি এরূপ না অগত্যা একটি সমস্যা স্বীকার করে.
কিন্তু এটা উপর নির্ভর করে না একটি খঁজের যষ্টি হিসাবে অত্যধিক.
অবশ্যই বোঝার চেষ্টা তার আউটপুট এবং তারপর তা থেকে শিক্ষা
যাতে শুধুমাত্র বারকতক আপনি না কখনো একটি নির্দিষ্ট ত্রুটির জন্য help50 চালানোর
বার্তা.
এর পরে, আপনি হতে হবে ভাল নিজেকে সজ্জিত
জিনিসটা কি এটা আসলে.
>> এখানে অন্য এক কাজ করা যাক.
আমাকে এগিয়ে যান এবং অন্য মধ্যে দিন ফাইল আমরা এই buggy1.c ডাকবো.
এবং এই ফাইলের মধ্যে আমি আছি deliberately-- যাচ্ছে
কিন্তু দাবী করে যে, আমি না বুঝতে কি ভুল আমি করেছি.
>> আমি এগিয়ে যান এবং আপাততঃ কাজ করতে যাচ্ছি #include, যেহেতু আমি করেছি
একটি মুহূর্ত আগে থেকে আমার পাঠ শিখেছি.
Int main (অকার্যকর), আগের মতোই.
এবং তারপর এখানে আমি যাচ্ছি স্ট্রিং গুলি করতে হবে - get_string.
এবং শেষ সময় থেকে প্রত্যাহার এই উপায়ে, হেই, কম্পিউটার,
আমাকে একটি পরিবর্তনশীল দিতে, এটি গুলি কল, এবং যে পরিবর্তনশীল একটি স্ট্রিং টাইপ করা
তাই আমি এটা এক বা একাধিক শব্দ সংরক্ষণ করতে পারেন.
>> তারপর ডানদিকের উপর সমান চিহ্ন পাশ
get_string হয়, যা একটি হল CS50 লাইব্রেরি ফাংশন
যে ঠিক তাই করছে.
এটি একটি ফাংশন এবং তারপর পায় ডান দিক থেকে হাত এটা বামে.
তাই এই সমান চিহ্ন মানে এই নয় "সমান" আমরা গণিত মনে হতে পারে হিসাবে.
এটা ডান থেকে বাম কার্যভার মানে.
তাই এই অর্থ থেকে স্ট্রিং নিতে ব্যবহারকারী এবং এটি গুলি ভেতরে সংরক্ষণ করি.
>> এখন এর ব্যবহার করা উচিত.
আমাকে এখন এগিয়ে এবং যেতে একটি দ্বিতীয় যেমন যাক লাইন, আমাকে এগিয়ে যান এবং বলে "হ্যালো" দিন -
না "দুনিয়া," কিন্তু "হ্যালো,% s-- যা আমাদের স্থানধারক, কমা গুলি,
যা আমাদের পরিবর্তনশীল, এবং তারপর একটি সেমিকোলন.
সুতরাং যদি আমি অত্যধিক স্ক্রু আপ করা হয়নি এখানে, এই সঠিক কোড মত দেখাচ্ছে.
>> আর আমার সহজাত এখন এটা কম্পাইল হয়.
ফাইল buggy1.c বলা হয়.
তাই আমি buggy1 করা, লিখুন যা করতে যাচ্ছি.
আর ধ্যাত্তেরি-এটা, যদি সেখানে নেই আগের চেয়ে আরও বেশি ত্রুটি.
আমি বলতে চাচ্ছি, আরো আছে ত্রুটির বার্তা এটা would
এই প্রোগ্রামের মধ্যে প্রকৃত লাইন চেয়ে মনে হচ্ছে.
>> কিন্তু takeaway এখানে, এমনকি যদি আপনি উদ্বেল করছি
দুই বা তিন বা সঙ্গে আরও চারটি ত্রুটির বার্তা,
খুব সবসময় ফোকাস সেই বার্তা প্রথম.
উপরের সবচেয়ে এক দিকে তাকিয়ে, ব্যাক আপ হিসাবে প্রয়োজন স্ক্রলিং হবে.
তাই এখানে আমি মেক buggy1 টাইপ.
এখানে যে ঝনঝন আউটপুট প্রত্যাশিত হিসাবে.
>> এবং এখানে প্রথম লাল ত্রুটি.
অঘোষিত শনাক্তকারী ব্যবহারের স্ট্রিং, আমি প্রমিত বুঝিয়েছিলেন?
তাই মান হয় আসলে অন্য কিছু.
এটা ব্যবহারকারীর বোঝায় কীবোর্ড, মূলত.
>> কিন্তু যে আমি কি অভিপ্রেত নয়.
আমি স্ট্রিং বোঝানো, এবং আমি get_string বোঝানো.
তাই কি হল যে আমি এই সময় কাজ করতে ভুলে গেছি?
কি এই সময় অনুপস্থিত?
আমি আমার #include আছে, তাই আমি printf এক্সেস আছে.
>> কিন্তু আমি কি না শুধু এখনো এক্সেস?
ওয়েল, শুধু শেষবারের মত, আমি কম্পাইলার বলা প্রয়োজন
ঝনঝন কি এই ফাংশন হয়.
Get_string আসে না সি দিয়ে এবং বিশেষ করে, এটা
আসে না , হেডার ফাইল.
এটা পরিবর্তে আসে কিছু কর্মীরা লিখেছে,
যা একটি ভিন্ন ফাইল নাম কিন্তু যথাযোগ্যভাবে নামে.
>> তাই কেবল এক লাইন যোগ করে শেষ সময় থেকে code-- রিকল
যখন ঝনঝন চালায় যে, এটা চলে যাচ্ছে নিচ থেকে আমার কোড উপরের দেখুন,
বাম থেকে ডান.
এটা লক্ষ্য করা যাচ্ছে উহু, যদি আপনি চান.
আমাকে যেতে এবং যে খুঁজি, যেখানেই এটা সার্ভারে হয়,
কপি এবং পেস্ট করুন, মূলত, আপনার নিজস্ব ফাইল উপরের প্রবেশ
যাতে গল্প এই সময়ে, লাইন 1, প্রোগ্রাম বাকি
প্রকৃতপক্ষে, ফাংশন কোন ব্যবহার করতে পারেন তথায় তাদের মধ্যে get_string.
তাই আমি উপেক্ষা করা যাচ্ছে না ঐ এরর বাকি,
কারণ আমি প্রকৃতপক্ষে, যে শুধুমাত্র সন্দেহ প্রথম এক আসলে গুরুত্বপূর্ণ.
এবং আমি এগিয়ে এবং পুন: প্রকাশ যেতে যাচ্ছি আমার ফাইল সংরক্ষণ পরে buggy1 করতে.
এবং voila, এটা কাজ করেনি.
আর আমি যদি ./buggy1 এবং, টাইপ জন্য উদাহরণস্বরূপ,, Zamyla, আমি এখন হ্যালো পাবেন,
, Zamyla, পরিবর্তে হ্যালো, দুনিয়া.
>> ঠিক আছে.
তাই এখানে টেকওযে় তারপর হয়, এক, যতটা আপনি পারেন হিসাবে উঁচ্ছবৃত্তি চেষ্টা
একা ত্রুটির বার্তা থেকে, খুঁজছি চেনা শব্দের কিছু.
যে ছাড়া, প্রতি help50 ব্যবহার সমস্যা সেট স্পেসিফিকেশন.
কিন্তু বাদে যে, খুব, সবসময় দেখুন শীর্ষ ত্রুটি শুধুমাত্র অন্তত
প্রাথমিকভাবে, দেখতে কি তথ্য এটা আসলে উত্পাদ পারে.
কিন্তু এটা সেখানে আউট সক্রিয় এমনকি অধিক কার্যকারিতার নির্মিত
CS50 লাইব্রেরি মধ্যে সাহায্য করার জন্য আপনি প্রথম সেমিস্টারে
এবং প্রথম প্রোগ্রামিং জিনিসটা কি ভুল হতেই থাকবে.
সুতরাং আসুন আর একটি উদাহরণ এখানে কাজ করতে দিন.
আমি, যা এই buggy2 কল চলেছি, আবার, আউট ত্রুটিপূর্ণ হতে যাচ্ছে
গেট, নকশা দ্বারা.
>> এবং আমি এগিয়ে যেতে চলেছি এবং #include না.
এবং তারপর আমি int প্রধান (অকার্যকর) করতে যাচ্ছি.
এবং তারপর আমি লুপ জন্য একটি কাজ করতে যাচ্ছি.
জন্য (আমি int: _ 0.
আমি কম বা 10 সমান.
i ++, এবং তারপর কোঁকড়া ধনুর্বন্ধনী মধ্যে, আমি যাচ্ছি প্রিন্ট আউট করতে এখানে শুধু একটি হ্যাশট্যাগ প্রতীক
এবং একটি নতুন লাইন অক্ষর.
>> এই সঙ্গে আমার অভিপ্রায় তাই প্রোগ্রাম বেশ সহজভাবে হয়
10 বার পুনরুক্তি করতে এবং প্রতিটি পুনরাবৃত্তির
যে লুপ প্রতিটি সময় চক্র মাধ্যমে,
একটি হ্যাশট্যাগ প্রিন্ট আউট, একটি হ্যাশট্যাগ, একটি হ্যাশট্যাগ.
আমি কারণ এক প্রতি লাইনে সেখানে নতুন লাইন আছে.
এবং যে জন্য প্রত্যাহার লুপ, গত সপ্তাহে প্রতি
এবং আপনি আরও পাবেন সিনট্যাক্স সঙ্গে পরিচিত
অনুশীলন সঙ্গে এটি ব্যবহার করে দীর্ঘ আগে এই আমাকে দেয়
একটি পরিবর্তনশীল নামক তোমার এবং এটি 0 সেট.
>> এই আমি উপর বৃদ্ধি 1 দ্বারা প্রতি পুনরাবৃত্তির.
তাই আমি 3 2 1 যায়.
এবং তারপর এই অবস্থায় সেমি-কোলন মধ্যে মধ্যম
করতে প্রতি পুনরাবৃত্তির চেক নিশ্চিত করুন যে আমরা সীমার মধ্যে এখনও.
তাই আমি 10 বার পুনরুক্তি করতে চান, তাই আমি আছে সাজানোর খুব intuitively শুধু
10 আমার ঊর্ধ্বসীমামান সেখানে যেমন করা.
>> এবং এখনো, যখন আমি এই রান পর মেক সঙ্গে এটা কম্পাইল করার প্রণালী buggy2--
এবং এটা ঠিক আছে কম্পাইল করে.
তাই আমি একটি না বাক্যগঠন ত্রুটি এই সময়.
আমাকে এখন এগিয়ে যেতে দাও এবং buggy2 চালানো লিখুন.
আর এখন পর্যন্ত স্ক্রোল করুন.
আর আমাকে বাড়িয়ে দিন উইন্ডোর আকার.
>> আমি আছে বলে মনে হচ্ছে 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.
সুতরাং, 11 হ্যাশট্যাগ যদিও আমি পরিষ্কারভাবে এই লুপ এর ভিতরে 10 করা.
এখন, আপনি কিছু অবিলম্বে দেখতে পারে কি ত্রুটি কারণ, প্রকৃতপক্ষে, এই হল
একটি খুব কঠিন ত্রুটি না করতে হয়.
কিন্তু এটা খুব সাধারণভাবে এর খুব ভোরে তৈরি.
>> কি আমি বাতলান করতে চাই, যদিও, , কিভাবে আমি এই জিনিসটা পারে হয়?
ওয়েল, দেখা যাচ্ছে যে CS50 লাইব্রেরি আসে
না শুধুমাত্র get_string এবং get_int সঙ্গে এবং get_float এবং অন্যান্য কার্যাবলী.
এটি একটি বিশেষ ফাংশন সঙ্গে আসে বলা eprintf, বা, ত্রুটি printf,.
আর এটা একমাত্র বিদ্যমান করতে এটা আপনার জন্য একটি সামান্য বিট সহজ
যখন শুধু আপনার কোড ডিবাগ পর্দায় একটি ত্রুটির বার্তা প্রিন্ট
আর জেনে রেখো এটা কোথা থেকে এসেছে.
>> সুতরাং উদাহরণস্বরূপ, এক জিনিস আমি প্রতাপ এখানে কি এই ফাংশন সঙ্গে আপাততঃ নেই
eprintf, এবং তারপর আমি এগিয়ে যেতে চলেছি এবং বলে আমি এখন% হল আমি, ব্যাকস্ল্যাশ, এন.
এবং আমি এর মূল্য চলা করতে যাচ্ছি.
এবং টপ আপ, এই কারণ CS50 লাইব্রেরি রয়েছে,
আমি এগিয়ে যেতে চলেছি এবং অন্তর্ভুক্ত
তাই আমি এই ফাংশন এক্সেস আছে.
কিন্তু এর বিবেচনা করা যাক কি লাইন 9 করছেন করা অনুমিত হয়.
অবশেষে আমি এই মুছে যাচ্ছি.
এই কোন সম্পর্ক নেই আমার প্রতিষ্ঠানের লক্ষ্য সঙ্গে.
কিন্তু eprintf, ত্রুটি printf, শুধু বোঝানো হয় আমাকে কিছু ডায়গনিস্টিক তথ্য দিতে.
যখন আমি আমার প্রোগ্রাম চালানো, আমি চাই সাময়িকভাবে পর্দায় এই দেখুন
হিসাবে ভাল শুধু বুঝতে কি ঘটছে.
>> এবং প্রকৃতপক্ষে, প্রতিটি লাইন 9 এখানে পুনরাবৃত্তির
আমি দেখতে চাই, আমি এর মান কি?
আমি এর মান কত?
এবং, আশা, আমি শুধুমাত্র উচিত যে বার্তা, এছাড়াও 10 বার দেখতে.
>> তাই আমাকে এগিয়ে যান এবং আমার প্রোগ্রাম কম্পাইল,
আমি যে কোন সময় করতে হবে যেমন আমি একটা পরিবর্তন করতে. ./buggy2.
আর now-- ঠিক আছে.
সেখানে অনেক বেশি ঘটছে.
তাই আমাকে আপ স্ক্রল যাক একটি বড় উইন্ডোতে.
>> এবং আপনি যে প্রতিটি দেখতে পাবেন হ্যাশট্যাগ এখনও মুদ্রণ করা হয়.
কিন্তু মাঝে মধ্যে তাদের প্রতিটি এখন এই হল ডায়গনিস্টিক আউটপুট নিম্নরূপ ফরম্যাট.
আমার প্রোগ্রাম এখানে নাম buggy2 হয়.
ফাইলের নাম buggy2.c হয়.
লাইন সংখ্যা যা থেকে এই ছাপা হয়েছিল লাইন 9.
এবং তারপর যে ডানদিকে থাকা যে আমি আশা করছি সংশ্লিষ্ট ত্রুটি সংক্রান্ত বার্তা.
>> আর কি সুন্দর সম্পর্কে এই যে হয় এখন আমি অগত্যা গণনা করতে হবে না
আমার মাথার মধ্যে কি আমার প্রোগ্রাম করছে.
আমি যে দেখতে পারেন প্রথম পুনরাবৃত্তির আমি 0,
তারপর তারপর 1, 2, তারপর 3, তারপর 4, তারপর 5, তারপর 6, তারপর 7, তারপর 8, তারপর 9, তারপর
10.
সুতরাং একটি মিনিট অপেক্ষা করুন.
এখানে কি হচ্ছে?
আমি এখনো গণনা করা হবে বলে মনে হচ্ছে যেমন 10 পর্যন্ত অভিপ্রেত.
>> কিন্তু আমি কোথা থেকে শুরু হয়নি?
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
তাই 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- 11 আঙুল
সমস্যা ইঙ্গিতবহ.
আমি গণনা করা হয়েছে বলে মনে হচ্ছে ভুল আমার লুপ.
10 পুনরাবৃত্তিও যেতে বরং, আমি 0 থেকে শুরু করছি,
আমি এ এবং 10 মাধ্যমে শেষ করছি.
কিন্তু কারণ, একটি কম্পিউটার এর মত, আমি 0 থেকে গণনা শুরু করছি,
আমি গণনা করা উচিত থেকে, কিন্তু 10 এর মাধ্যমে, না.
>> আর তাই ঠিক, আমি অবশেষে এখানে উপলব্ধি, দুটি জিনিস এক হয়.
আমি খুব সহজভাবে বলতে পারে কম 10 পর্যন্ত গণনা.
তাই 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, যা প্রকৃতপক্ষে, সঠিক,
এমনকি এটি একটি সামান্য ভুল শোনাচ্ছে যদিও.
বা আমি করতে পারে এর চেয়ে বড় বা সমান কম 9, এতক্ষণ আমি 0 থেকে আরম্ভ হিসাবে.
অথবা আপনি সত্যিই যে পছন্দ করি না যদি, আপনি 10 মাধ্যমে আপ গণনা কিন্তু আছে 1 শুরু করতে পারেন.
কিন্তু আবার, এই মাত্র না করে প্রচলিত.
programming-- যদ্যপি ইন গোড়া এত না
কিন্তু প্রোগ্রামিং মধ্যে সি এবং অন্যান্য ভাষায়,
জাভাস্ক্রিপ্ট এবং মত পাইথন এবং অন্যদের, এটা
শুধু জন্য খুব সাধারণ বাইনারি আমাদের আলোচনার
শুধু এ গণনা শুরু করার সর্বনিম্ন সংখ্যা আপনি যা করতে পারেন, যা হল 0.
ঠিক আছে.
সুতরাং যে eprintf এর.
এবং আবার, এখন আমি মূর্ত আউট করেছি যে আমার সমস্যা, এবং আমি 0 ফিরে যেতে চলেছি
কম 10 মাধ্যমে, আমি যাচ্ছি এ যান এবং eprintf মুছে দিতে.
>> এটা সেখানে থাকার কথা নয় যখন আমি আমার কোড জাহাজ বা আমার কোড জমা
অথবা এটা অন্য কাউকে দেন.
এটা সত্যিই শুধু বোঝানো সাময়িকভাবে ব্যবহার করা.
কিন্তু এখন আমি এই সংশোধন করা হয়েছে করেছি পাশাপাশি বিশেষ সমস্যা.
>> আচ্ছা, এর আরও একটি উদাহরণ এখানে কাজ করতে দিন যে আমি পিটান নিম্নরূপ যাচ্ছি.
আমি এগিয়ে যান যাচ্ছি এবং #include. $ 50
এবং আমি এগিয়ে যেতে চলেছি এবং #include.
>> আমি সংরক্ষণ করতে যাচ্ছি এই ফাইলটি buggy3.c হিসাবে.
এবং আমি এগিয়ে যেতে চলেছি এবং ঘোষণা int প্রধান (অকার্যকর).
এবং তারপর এর ভিতরে আমি আমি int করতে যাচ্ছি: _ -
আমি একটি প্রোগ্রাম বাস্তবায়ন করতে চান একটি get_negative_int সঙ্গে.
এটি একটি ফাংশন এখনো বিদ্যমান নয়.
সুতরাং আমরা বাস্তবায়ন করতে যাচ্ছেন এটা মাত্র কয়েক মিনিটের মধ্যে.
কিন্তু আমরা কেন দেখতে যাচ্ছেন এটা প্রথম পাস এ বগী.
আর একবার আমি অর্জিত করেছি ব্যবহারকারী থেকে int,
আমি শুধু% আমি প্রিন্ট চলেছি একটি নেগেটিভ পূর্ণসংখ্যা, ব্যাকস্ল্যাশ, এন, কমা, আমি.
অন্য কথায়, সব আমি এই প্রোগ্রাম আপনি করতে পারেন
থেকে একটি নেতিবাচক int- পেতে হয় ব্যবহারকারী এবং তারপর প্রিন্ট আউট
যে অমুক অমুক একটি নেতিবাচক int হয়.
>> এখন আমি এই ফাংশন বাস্তবায়ন করতে হবে.
তাই আমার ফাইল পরবর্তী, আমি যেতে চলেছি এগিয়ে এবং একটি ফাংশন বলা ঘোষণা
get_negative_int (অকার্যকর) - এবং আমরা করব ফিরে আসা কি যে লাইন আবার মানে
একটি মুহূর্ত কোন int n মধ্যে; do-- করণীয় নিম্নলিখিত printf, n হল :.
এবং তারপর আমি কি করতে যাচ্ছি - get_int, এবং এই যখন n 0 থেকে বেশি হয় না.
এবং তারপর এন ফিরে ;.
>> তাই অনেক ঘটছে আছে এই কিন্তু কোনওটিই আমরা না
অন্তত গত সপ্তাহে সংক্ষেপে তাকান.
সুতরাং এখানে লাইন 10 আমি ঘোষণা করেছি একটি ফাংশন get_negative_int ডেকে
এবং আমি রেখেছি (অকার্যকর), মধ্যে প্রথম বন্ধনী, কারণ এই হচ্ছে
একটি ইনপুট লাগবে না.
আমি কিছু পাশ করছি না এই ফাংশন.
আমি শুধু কিছু তা থেকে ফিরে পেয়ে করছি.
>> এবং কি আমি আশা করছি ফিরে পেতে একটি পূর্ণসংখ্যা.
সেখানে কোন ডাটা টাইপ সি negative_int বলা.
এটা শুধু int, তাই এটা চলে যাচ্ছে নিশ্চিত করার জন্য আমাদের উপর করা
যে মান আসলে যে ফিরে আসলে না শুধুমাত্র কোন int
বরং নেতিবাচক.
>> লাইন 12 উপর আমি একটি পরিবর্তনশীল ঘোষণা করছি এন এবং int- এ টাইপ এটিকে বলা.
এবং তারপর লাইন 13 18 মাধ্যমে আমি কিছু কাজ করার সময় কিছু সত্য.
আমি এগিয়ে এবং মুদ্রণ যাচ্ছি এন, কোলন, এবং তারপর একটি স্পেস,
ব্যবহারকারীর জন্য একটি প্রম্পট মত.
>> আমি তারপর get_int আহ্বান করছি এবং তার তথাকথিত ফেরত মান সংরক্ষণকারী
যে পরিবর্তনশীল n মধ্যে.
কিন্তু আমি এটা চালিয়ে যাচ্ছি এই যখন n 0 চেয়ে অনেক বেশী.
অন্য কথায়, ব্যবহারকারী আমাকে একটি দেয় যদি int এবং যে সংখ্যা 0 চেয়ে অনেক বেশী,
অতএব, ইতিবাচক, আমি যাচ্ছি শুধু ব্যবহারকারী reprompting রাখা,
reprompting রাখা, তাদের জোর করে সহযোগিতা এবং আমাকে একটি নেতিবাচক int দিন.
>> আর একবার এন আসলে negative-- হয় ব্যবহারকারী অনুমান অবশেষে ধরনের -50,
তারপর এই সময় লুপ আর সত্য কারণ -50 0 চেয়ে বড় নয়.
সুতরাং আমরা যে আউট বিরতি লুপ কথাটি এবং এন ফিরে.
>> কিন্তু অন্য একটি ব্যাপার জিনিস আমি করতে হবে.
এবং শুধু আমি এটা করতে পারেন কপি এবং পেস্ট দ্বারা
ফাইল উপরের কোড এক লাইন.
আমি, ঝনঝন শেখাতে হবে বা ঝনঝন করার অঙ্গীকার,
স্পষ্টভাবে যে আমি আছি, প্রকৃতপক্ষে, যান এবং বাস্তবায়ন
এই ফাংশন get_negative_int.
এটা শুধু ফাইল কম হতে পারে.
আবার, পুনরাহ্বান যে ঝনঝন শীর্ষ নিচ থেকে কিছু লেখা,
ডানে বামে, যাতে তুমি না পারো যদি ঝনঝন একটি ফাংশন কল
এটি বিদ্যমান যাচ্ছে জানেনা.
>> এখন, দুর্ভাগ্যবশত, এই প্রোগ্রাম, যেমন আপনি কিছু লক্ষ্য হতে পারে,
ইতিমধ্যে বগী.
আমাকে এগিয়ে যান এবং তা buggy3 করা যাক.
এটি প্রনয়ন, তাই আমার সমস্যা এখন নয় একটি বাক্যগঠন ত্রুটি, একটি পাঠগত ত্রুটি মত,
এটা আসলে একটি যৌক্তিক হতে যাচ্ছে ত্রুটি যে আমি ইচ্ছাকৃতভাবে করেছি
একটা সুযোগ হিসেবে তৈরি কি ঘটছে মাধ্যমে পইঠা.
>> আমি এগিয়ে যেতে চলেছি এখন এবং buggy3 চালানো.
আমি যেতে চলেছি এগিয়ে এবং সহযোগিতা.
আমি এটা সংখ্যা 1 দিতে যাচ্ছি.
এটা পছন্দ না, তাই এটা আমাকে আবার প্ররোচনা.
>> কিভাবে সম্পর্কে 2?
3?
50?
ঐ কোনটিই কাজ করছে.
কিভাবে -50 সম্পর্কে?
এবং প্রোগ্রাম কাজ বলে মনে হয়.
>> আমাকে এটা আরো একবার চেষ্টা করা যাক.
আমাকে -1 চেষ্টা করা যাক, কাজ বলে মনে হয়.
আমাকে -2 চেষ্টা করা যাক, কাজ বলে মনে হয়.
আমাকে 0 চেষ্টা করা যাক.
হাহ, যে ভুল.
এখন, আমরা এখানে একটু গোঁড়া হচ্ছে.
কিন্তু এটা, প্রকৃতপক্ষে, যদি যে 0 তন্ন তন্ন ইতিবাচক কিংবা নেতিবাচক.
তাই আসলে আমার প্রোগ্রাম যে বলার অপেক্ষা রাখে না, যে 0 একটি নেতিবাচক পূর্ণসংখ্যা
যে টেকনিক্যালি সঠিক নয়.
>> এখন, এটা এই কেন করছে?
ওয়েল, এটা সুস্পষ্ট হতে পারে.
এবং প্রকৃতপক্ষে, প্রোগ্রাম মোটামুটি সহজ হতে বোঝানো
তাই আমরা অন্বেষণ করতে কিছু আছে.
>> কিন্তু এর একটি তৃতীয় ডিবাগিং পরিচয় করিয়ে দেওয়া কৌশল এখানে debug50 বলা.
সুতরাং এই একটি প্রোগ্রাম আমরা শুধু তৈরি করেছি যে
এই বছর নামক debug50 যে আপনি অনুমতি দেবে
ব্যবহার করার জন্য কি একটি বিল্ট ইন বলা এবং CS50 IDE তে গ্রাফিকাল ডিবাগার.
আর একটি ডিবাগার শুধু একটি প্রোগ্রাম যে সাধারণত আপনি আপনার প্রোগ্রাম চালাতে দেয়
কিন্তু পদক্ষেপ, লাইন দ্বারা ধাপে ধাপে পাতিপাতি দ্বারা, pausing, খোঁচা
প্রায়, ভেরিয়েবল এ খুঁজছেন যাতে প্রোগ্রাম ঠিক আপনি অতীত পেশা নয়
এবং দ্রুত কিছু প্রিন্ট না বা অন্যকিছু প্রিন্ট করা হবে.
এটা আপনি একটি সুযোগ দেয়, এ মানুষের গতি, এটা সাথে যোগাযোগ করার জন্য.
>> আর এই কাজ করতে, আপনি কেবল নিম্নলিখিত কাজগুলো.
আপনার কোড কম্পাইল করার পর, যা আমি ইতিমধ্যে করেনি তা buggy3,
আপনি এগিয়ে যান এবং debug50 ./buggy চালানোর.
এত মত help50 আপনি চালাতে হয়েছে help50 এবং তারপর কমান্ড,
debug50 আপনি debug50 চালানো হয়েছে এবং তারপর কমান্ডের নাম.
>> এখন দেখার আমার পর্দায় কি ঘটবে, বিশেষ করে ডান দিকে.
যখন আমি রান, সব আঘাত আকস্মিক এই ডানদিকের প্যানেলে
পর্দায় আপ প্রর্দশিত হবে.
এবং সেখানে অনেক যাচ্ছে প্রথম ঝলকে দেখে.
কিন্তু সেখানে না সম্পর্কে এখনো চিন্তা করতে অনেক.
>> এই সবকিছু আমাকে দেখানো হয় যে আমার প্রোগ্রামের ভিতরে হচ্ছেটা
এখনই এবং এই মাধ্যমে বাটন উপরে তারপর হয়
আমার কোড মাধ্যমে পইঠা করতে সক্ষম হবেন পরিণামে ধাপে ধাপে ধাপে.
কিন্তু না এখনও.
লক্ষ্য করুন কি ঘটবে.
আমার টার্মিনাল উইন্ডোর এ আমি n জন্য অনুরোধ জানানো হচ্ছে না.
এবং আমি এগিয়ে যান যাচ্ছি এবং এই সময় এবং -1 টাইপ সহযোগিতা.
আর যদিও একটু cryptically, -1 একটি নেতিবাচক পূর্ণসংখ্যা, আশানুরূপ নয়.
>> তারপর শিশু সমেত সমাপ্ত অবস্থা 0 GDBserver প্রস্থান.
GDB, গনু ডিবাগার, নাম অন্তর্নিহিত সফ্টওয়্যার
যে এই ডিবাগার প্রয়োগ করা হয়.
কিন্তু এই সব সত্যিই মানে, ডিবাগার চলে গেল, কারণ আমার প্রোগ্রাম প্রস্থান
এবং সব ভাল ছিল.
আমি সত্যিই আমার প্রোগ্রাম ডিবাগ করতে চান তাহলে, আমি, preemptively debug50 জানাতে হবে
যেখানে আমি শুরু করতে চাই না আমার কোড দিয়ে পদবিন্যাস?
>> আর সম্ভবত সবচেয়ে সহজ উপায় যে নিম্নরূপ করতে.
যদি আমি উপর কার্সার রেখে আমার দেশ সম্পাদক এর নিরাশ্রয় এখানে,
সত্যিই তাই শুধু সাইডবারে এখানে, লাইন সংখ্যা বাঁদিকে,
বিজ্ঞপ্তি যে যদি আমি শুধু ক্লিক একবার, আমি একটি সামান্য লাল বিন্দু করা.
এবং যে সামান্য লাল বিন্দু, একটি স্টপ সাইন মত, মানে, হেই,
debug50, আমার কোড বিরতি মৃত্যুদন্ড ওখানেই যখন আমি এই প্রোগ্রাম চালানো.
>> তাই আসুন যে কাজের জন্য.
আমাকে এগিয়ে যান এবং আমার প্রোগ্রাম চালানো যাক debug50 ./buggy3 সঙ্গে আবার লিখুন.
আর এখন, নোটিশ, কিছু বিভিন্ন ঘটেছে.
আমি অনুরোধ জানানো হচ্ছে না করছি এখনো আমার টার্মিনাল উইন্ডোতে
কিছু জন্য, কারণ আমি না আছে আমার প্রোগ্রামে এখনো সেখানে অর্জিত.
লক্ষ করুন যে, লাইন 8 যা এখন হাইলাইট করা হয়,
এবং সেখানে একটি সামান্য তীর এর বাম উক্তি, আপনি এখানে বিরতি দেওয়া হয়.
কোড, এই লাইনের লাইন 8, এখনো মৃত্যুদন্ড কার্যকর করেনি.
>> আর যদি আমি চেহারা, জানার আগ্রহ রয়েছে ডান দিকে উপর এখানে,
উল্লেখ্য, আমি একটি স্থানীয় হয় পরিবর্তনশীল, অর্থে স্থানীয়
এটি বর্তমান ফাংশন ভিতরে.
এবং তার মান, দৃশ্যত ডিফল্টরূপে, এবং সাজানোর সুবিধামত, 0.
কিন্তু আমি 0 টাইপ না.
যে শুধু হতে হবে তার মুহূর্তে ডিফল্ট মান.
>> তাই আমাকে এগিয়ে যান এবং এখন এই কাজ করতে দিন.
আমাকে এগিয়ে এবং যান উপরের ডান এখানে, আমি আছি
এগিয়ে যান যাচ্ছে এবং এই প্রথম আইকনে ক্লিক করুন, যা
যার উপর পদক্ষেপ মানে লাফালাফি না মানে এটা কিন্তু কোডের এই লাইনের উপরে পইঠা,
পথ বরাবর এটা নির্বাহ.
>> আর এখন, বিজ্ঞপ্তি, আমার প্রম্পট শুধু পরিবর্তন করা হয়েছে.
কেন হল?
আমি debug50 বলেছি, কোড এই লাইন চালানো.
কোড এই লাইন কী কাজ করে?
আমাকে কোন int জন্য অনুরোধ জানানো হবে.
ঠিক আছে.
আমাকে সহযোগিতা করা.
আমাকে এখন এগিয়ে যান এবং টাইপ -1, লিখুন.
এবং এখন লক্ষ্য কি পরিবর্তন হয়েছে.
ডানদিকে, আমার স্থানীয় পরিবর্তনশীল আমি
হচ্ছে -1 এখন যেমন নির্দেশিত হয়.
আর এটা int- এ টাইপ এখনও.
>> এবং খেয়াল করুন, খুব, আমার তথাকথিত স্ট্যাক কল, আমি যেখানে বিরাম হয়নি?
আমরা সম্পর্কে আরো আলোচনা করব ভবিষ্যতে এই.
কিন্তু কল স্ট্যাক শুধু বোঝায় কি ফাংশন গতি বর্তমানে চলছে.
রাইট এখন এটা শুধু মূল ব্যাপার.
আর এখন শুধুমাত্র স্থানীয় পরিবর্তনশীল 1 একটি মান সঙ্গে আমি নেই.
>> আর যখন আমি পরিশেষে এই লাইনের উপরে পইঠা এখানে উপরের দিকের ডান প্রান্তের যে একই আইকন সঙ্গে,
-1 একটি নেতিবাচক পূর্ণসংখ্যা.
এখন এটা যে কোঁকড়া বক্রবন্ধনী ওভার pausing হচ্ছে.
স্বীকার করে নেওয়াই ভালো তার জিনিস না করুক.
আমি যে লাইন, এবং voila উপর পইঠা.
>> তাই না সব যে ভয়ঙ্কর প্রমাণ ও উজ্জ্বল এখনো,
কিন্তু এটা দিয়েছিলেন আমাকে বিরাম এবং যুক্তি দিয়ে চিন্তা
এই প্রোগ্রাম কি করছে.
কিন্তু যে ভ্রান্ত ক্ষেত্রে ছিল না.
নিম্নরূপ এর এই আবার করি.
>> আমি যে ছেদবিন্দু ছেড়ে যাচ্ছি লাল বিন্দু দিয়ে লাইন 8.
আমি debug50 পুন: প্রকাশ করা যাচ্ছে না.
এটি স্বয়ংক্রিয়ভাবে এখানে বিরতি দেওয়া হচ্ছে.
কিন্তু এই সময়, পরিবর্তে এই লাইনের উপরে পদবিন্যাস,
আমাকে আসলে ভিতরে যেতে দিন get_negative_int জিনিসটা,
কেন এটা একটি বৈধ উত্তর হিসাবে 0 মেনে নেওয়ার মতো?
>> তাই ধাপ ওভার ক্লিক পরিবর্তে.
আমি এগিয়ে যেতে চলেছি এবং ঢুকলেই ক্লিক করুন.
এবং যে যে লাইন 8 লক্ষ্য এখন হঠাৎ এখন হাইলাইট
লাইন 17 হয়ে যায়.
>> এখন, এটা যে ডিবাগার নয় লাইন 14 এবং 15 ও 16 এড়ানো হয়েছে.
এটা শুধু কিছুই নেই এর আপনি সেখানে দেখানোর জন্য.
যারা শুধু ভেরিয়েবল ঘোষণা করা হয়, এবং তারপর সেখানে শব্দ করি
এবং তারপর একটি খোলা কোঁকড়া বক্রবন্ধনী.
শুধুমাত্র কার্মিক লাইন যে সরস সত্যিই এই এক এখানে, 17.
এবং যে যেখানে আমরা করেছি স্বয়ংক্রিয়ভাবে বিরতি দেওয়া হয়েছে.
>> তাই printf ( "n.is:") ;, তাই যে এখনও ঘটেনি.
সুতরাং আসুন এগিয়ে যান এবং ওভার স্টেপ ক্লিক করা যাক.
এখন আমার প্রম্পট, প্রকৃতপক্ষে, থেকে পরিবর্তিত ( "এন").
এখন get_int, আমি যাচ্ছি না মধ্যে পদবিন্যাস বিরক্ত করার জন্য,
কারণ যে ফাংশন ছিল লাইব্রেরী এবং CS50 দ্বারা তৈরি.
এটা সম্ভবতঃ সঠিক.
>> তাই আমি এগিয়ে যান যাচ্ছি এবং সাজানোর এটা দান দ্বারা সহযোগিতা
কোন int, কিন্তু না একটি নেতিবাচক কোন int.
তাই আমাকে এগিয়ে যান এবং 0 চাপুন.
আর এখন কি এখানে 21 লাইন যখন আমি নিচে পেতে?
আমি আবার iterated না থাকেন.
আমি যে লুপে আটকে গেছে বলে মনে হচ্ছে না.
অন্য কথায়, এই হলুদ বার কাছাকাছি যাচ্ছে না রাখা হয়নি,
এবং প্রায়, এবং প্রায়.
>> এখন, কেন এমন হল?
ওয়েল, N, কি এখনই এন?
আমি স্থানীয় তাকান পারেন ডিবাগার ভেরিয়েবল.
n হল 0.
ঠিক আছে, আমার অবস্থা কেমন ছিল?
>> 20-- লাইন 20, ভাল, 0 0 চেয়ে অনেক বেশী.
ওটা সত্যি না.
0 0 চেয়ে বড় নয়.
আর তাই আমি এই কপর্দকশূন্য আউট.
>> তাই যে কেন লাইনে আছেন 21, আমি আসলে অবিরত যদি,
আমি 0 ফিরে যাচ্ছি, এমনকি যদিও আমি 0 প্রত্যাখ্যান করা উচিত
যেমন আসলে নেতিবাচক হচ্ছে না.
সুতরাং এখন, আমি সত্যিই এমন কি ডিবাগার যত্নশীল.
এটা, আমি প্রয়োজন না ফেরার জানেন কি আরও যাচ্ছে.
>> তাই আমি এগিয়ে যান যাচ্ছি এবং শুধু প্লে বাটন ক্লিক করুন,
এবং এই ফিনিস আপ দিন.
এখন, আমি যে উপলব্ধি করেছি আমার বাগ লাইন 20 দৃশ্যত হয়.
যে আমার লজিক্যাল ত্রুটি.
>> তাই আমি চাই না এই পরিবর্তন করতে হবে?
সমস্যা হয়, তাহলে যে আমি নই 0 সংক্রামক, এটি শুধু একটি লজিক্যাল ত্রুটি.
এবং আমি বলতে পারি এন সময় এর চেয়ে বড় বা 0 সমান,
ব্যবহারকারী আবার এবং আবার প্ররোচনা রাখা.
>> সুতরাং, আবার, সহজ ভুল, সম্ভবত এমনকি সুস্পষ্ট যখন আপনি আমাকে দেখলেন
এটা মাত্র কয়েক মিনিট আগে, অনুগ্রহ করে লিখুন.
কিন্তু takeaway এখানে হয় ডিবাগ 50 যে,
এবং ডিবাগিং সঙ্গে সফ্টওয়্যার আরো সাধারণভাবে,
আপনি এই নতুন পাওয়া ক্ষমতা আছে আপনার নিজস্ব কোড দিয়ে হেঁটে যাই, চেহারা
ডানহাতে ওটা প্যানেলের মাধ্যমে কি আপনার ভেরিয়েবল মান.
সুতরাং আপনি অগত্যা না কিছু ব্যবহার করতে হবে
মত আপনি ঐ মান প্রিন্ট করতে eprintf.
আপনি আসলে তাদের দেখতে পারেন চাক্ষুষরূপে পর্দায়.
>> এখন, এই বাইরে, এটি এর মূল্য সেখানে আরেকটি কৌশল যে যে
আসলে সুপার সাধারণ.
আর আপনি হয়তো ভাবতে পারেন যে কেন এই সামান্য এখানে লোক মঞ্চে বসা হয়েছে.
তাই সেখানে এই টেকনিক, সাধারণভাবে রাবার হাঁস ডিবাগিং নামে পরিচিত,
যা সত্যিই শুধু একটি নয় সত্য উইল
যে প্রায়ই যখন প্রোগ্রামার কোড লেখা হয়,
তারা অগত্যা নও অন্যদের সঙ্গে সহযোগী,
অথবা একটি ভাগ পরিবেশে কাজ.
>> তারা বাড়ীতে সাজানোর করছি.
হয়তো এটা রাতে দেরি হয়ে গেছে.
তারা চিন্তা করার চেষ্টা করছি তাদের কোডে কিছু বাগ আউট.
আর তারা শুধু এটা এইজন্য করছি না.
>> আর যত প্রকার রুমমেটের.
কোন মেমরি হয়.
আশেপাশে কাউকেই সিএ হয়.
সকল তারা তাদের বালুচর আছে এই সামান্য রাবার আদরের সন্বোধনবিশেষ হয়.
>> তাই রাবার হাঁস ডিবাগিং শুধু এই আমন্ত্রণ
যেমন নিরীহ কিছু মনে করতে এই যেমন একটি বাস্তব জীব হিসাবে,
এবং আসলে আপনার কোড দিয়ে হেটে শব্দগতভাবে এই জড় বস্তু.
সুতরাং, উদাহরণস্বরূপ, যদি এই আমার দৃষ্টান্ত এখানে
এবং যে এর আগে প্রত্যাহার সমস্যা এই ছিল,
যদি আমি এই কোড প্রথম লাইন মুছে দিন, এবং আমি এগিয়ে যান এবং আবার বগী 0 করতে,
পুনরাহ্বান যে আমি এই ছিল এখানে ত্রুটির বার্তা.
তাই ধারণা এখানে, যদিও আমি হাস্যকর মুহূর্তে মনে সর্বজনীনভাবে করছেন,
যে ত্রুটি.
>> ঠিক আছে, তাই আমার সমস্যা হল আমি করেছি পরোক্ষভাবে একটি লাইব্রেরি ফাংশন ঘোষণা.
আর যে লাইব্রেরি ফাংশন printf.
Declare-- ঠিক আছে, ঘোষণা আমাকে এগুলির নমুনা এর কথা মনে করিয়ে দেয়.
>> তার মানে আমি আসলে প্রয়োজন আগাম কম্পাইলার বলা কি
ফাংশন মনে.
একটি মিনিট অপেক্ষা করুন.
আমি প্রমিত io.h. হয়নি
আপনাকে অনেক ধন্যবাদ.
>> তাই শুধু আপনি র এই প্রক্রিয়া আসলে একটি হাঁস আছে প্রয়োজন হবে না.
কিন্তু হেঁটে এই ধারণা নিজেকে আপনার নিজস্ব কোড মাধ্যমে
তাই আপনি এমনকি শুনতে যে নিজেকে, যাতে আপনি
আপনার নিজের মধ্যে অর্থ উপলব্ধি মন্তব্য সাধারণভাবে ধারণা.
>> এবং, সম্ভবত আরও যুক্তি, না তাই যে এক কিন্তু আরো জড়িত সঙ্গে অনেক
উদাহরণস্বরূপ আমরা শুধু বগী 3.c করেছিল, আপনি এটি দিয়ে নিজের জীবনযাপন
নিম্নরূপ.
তাই সব ঠিক আছে, রাবার আদরের সন্বোধনবিশেষ, DDB, যদি আপনি হবে.
এখানে আমরা আমার প্রধান ফাংশন আছে, আমি নেতিবাচক int- পেতে আহ্বান করছি.
>> আমি ফেরত মান পাচ্ছি.
আমি বাম দিকে এটা সংরক্ষণকারী করছি একটি পরিবর্তনশীল লাইন 8 আমি নামক.
ঠিক আছে, কিন্তু অপেক্ষা করুন, কীভাবে যে মান পেতে?
আমার লাইন 12 ফাংশন তাকান.
>> লাইন 12 সালে, আমরা নেতিবাচক int- পেতে আছে.
কোনো ইনপুট লাগবে না, কোন int ওকে ফেরত.
আমি লাইন 14 একটি পরিবর্তনশীল n উপর ঘোষণা.
এটি একটি পূর্ণসংখ্যা সংরক্ষণ করে যাচ্ছে.
এটাই সেটা যা আমি চাই.
>> সুতরাং নিম্নলিখিত যখন n হচ্ছে ÑÑ যাক আমাকে পূর্বাবস্থায় ফিরিয়ে আনতে কি ফিক্স আমি ইতিমধ্যে প্রণীত.
সুতরাং যখন n তার চেয়ে অনেক বেশী 0, প্রিন্ট আউট এন, ঠিক আছে.
তারপর কল কোন int n মধ্যে সংরক্ষণ করতে.
তারপর পরীক্ষা, যদি n হল 0 এন not-- সেখানে এটা হয়.
সুতরাং, আবার, আপনি না প্রকৃত হাঁসের প্রয়োজন.
কিন্তু শুধু নিজেকে দিয়ে হাঁটা একজন বুদ্ধিজীবী ব্যায়াম হিসেবে আপনার কোড
প্রায়ই আপনাকে সাহায্য করবে বুঝতে কি ঘটছে,
যেমন শুধু কিছু করছেন উল্টোদিকে এই মত, পর্দায় চোখে পড়ার মত,
এবং নিজেকে মাধ্যমে কথা না এটা, যা সত্যি নয়
প্রায় একটি কার্যকর কৌশল হিসেবে.
তাই সেখানে যদি আপনি এটি আছে, একটি বিভিন্ন কৌশল সংখ্যা
আসলে আপনার কোড ডিবাগ করার জন্য এবং ত্রুটি লক্ষ্য, যা সব
আপনার টুলকিট টুলস হওয়া উচিত যে আপনি নিশুতি নও তাই,
বিশেষত, আপনি ডাইনিং আছেন হল, বা অফিসে ঘন্টা এ,
বিরুদ্ধে আপনার মাথা banging প্রাচীর, কিছু সমস্যা সমাধানের চেষ্টা করা.
বুঝতে সফটওয়্যার টুলস আছে.
সেখানে রাবার হাঁস সরঞ্জাম আছে.
এবং সেখানে একটি পুরো স্টাফদের একটি হাত ধার অপেক্ষা সমর্থন.
>> সুতরাং এখন, সমস্যা উপর একটি শব্দ সেট, এবং আমরা আপনাকে কি আশা করছেন
তাদের মধ্য থেকে বের পেতে, এবং কিভাবে আমরা মূল্যায়নের সম্পর্কে যেতে.
প্রতি কোর্স এর পাঠ্যক্রম, CS50 এর সমস্যা সেট
চারটি প্রধান অক্ষ উপর মূল্যায়ন করা হয়, তাই সুযোগ speak-- করতে, শুদ্ধতা, নকশা,
এবং শৈলী.
আর সুযোগ মাত্র কত বোঝায় টুকরা আপনি বন্ধ কামড় আছে?
আপনি কিভাবে একটি সমস্যা অনেক চেষ্টা করেছি?
প্রচেষ্টার কি স্তর আপনি প্রকাশ করেছি?
>> শুদ্ধি, হিসাবে প্রোগ্রাম কাজ করে এটি CS50 স্পেসিফিকেশন অনুযায়ী অনুমিত এর
যখন আপনি নির্দিষ্ট ইনপুট প্রদান অথবা নির্দিষ্ট আউটপুট ফিরে আসছে?
ডিজাইন তাদের অধিকাংশই ইতিবাচক.
আর এটা যে এক হবে দীর্ঘতম নিতে শিখতে
এবং দীর্ঘতম শেখান, এ এতদূর এটি boils নিচে যেমন,
কিভাবে ভাল লেখা আপনার কোড?
>> এটা এক জিনিস শুধু সঠিক মুদ্রণ করার আউটপুট বা ডান মান প্রত্যাবর্তন.
কিন্তু যদি আপনি শব্দটি করছেন দক্ষতার সঙ্গে যতটা সম্ভব?
আপনি এটা ডিভাইড করছেন এবং জয়, বা বাইনারি
অনুসন্ধান হিসাবে আমরা শীঘ্রই দেখতে পাবেন যে আমরা করেনি দুই সপ্তাহ আগে টেলিফোন বইয়ের সঙ্গে?
সেখানে সবকিছু ভাল উপায় আছে সমস্যা আপনি বর্তমানে এখানে আছে চেয়ে?
যে ভাল ডিজাইন জন্য একটি সুযোগ.
>> তারপর কিভাবে শৈলী প্রশংসনীয় আপনার কোড?
আপনি লক্ষ্য করবেন যে আমি বেশ আছি আমার কোড সংভৃত সম্পর্কে বিশেষ করে,
এবং নিশ্চিত আমার ভেরিয়েবল উপার্জন যুক্তিসঙ্গতভাবে নামকরণ করা হয়. এন,
অনতিকালমধ্যে, একটি জন্য একটি ভাল নাম সংখ্যা, একটি কাউন্টিং পূর্ণসংখ্যা জন্য আমি,
একটি স্ট্রিং জন্য গুলি.
আর আমরা আর থাকতে পারে ভেরিয়েবলের নাম শৈলী.
স্টাইল ঠিক কিভাবে ভাল হয় আপনার কোড লাগছে?
এবং এটা কিভাবে পাঠযোগ্য?
>> এবং সময়ের সাথে, কি আপনার TAS এবং টিএফএস কোর্সে করতে হবে
যে সঙ্গে আপনি প্রদান করা হয় গুণগত প্রতিক্রিয়া ধরনের
যাতে আপনি ভাল পেতে যারা বিভিন্ন দিক.
আর কীভাবে আমরা পদ এই অক্ষ প্রতিটি মূল্যায়ন,
এটা খুব অল্প দিয়ে সাধারণত এর বালতি যাতে আপনি, সাধারণত,
আপনি কিভাবে ভাল করছেন একটা ধারনা পেতে.
এবং প্রকৃতপক্ষে, আপনি একটি স্কোর গ্রহণ করে ঐ axes-- শুদ্ধি, নকশা কোন
এবং শৈলী especially-- যে সংখ্যা সাধারণত 1 এবং 5 এর মধ্যে হতে হবে.
আর, আক্ষরিক, আপনি পেয়ে থাকেন তাহলে সেমিস্টারের শুরুতে 3 এর,
এই একটি খুব ভাল জিনিস.
এর অর্থ হচ্ছে এটা এখনও উন্নতির জন্য রুম,
আপনি আশা করবে, যা প্রথমবার জন্য একটি বর্গ গ্রহণ.
আছে আশা সিলিং কিছু বিট যা তোমার কাছে পৌঁছানোর উচ্চাকাঙ্ক্ষী করছি.
তাই 3 এর উপর পাওয়ার নিকটতম টুকরা,
যদি না কিছু 2 এবং 4 এর, প্রকৃতপক্ষে, একটি ভাল জিনিস.
এটা ভাল পরিসীমা ভেতরে, ভাল প্রত্যাশার মধ্যে.
>> আর যদি আপনার মন ধাবমান হয়, অপেক্ষা করুন এক মিনিট, তিন থেকে পাঁচ বাইরে.
যে সত্যিই 10 একটি 6 বাহিরে.
যে 60% এর.
আমার ঈশ্বর, একটি এফ যে
>> এটা নয়.
এটা, না, আসলে যে.
বরঞ্চ, এটি উন্নত করতে একটি সুযোগ সেমিস্টারে অবশ্যই বেশী.
আর তুমি কিছু পেয়ে থাকেন তাহলে poors, এই একটি সুযোগ আছে
অফিসে ঘন্টা সদ্ব্যবহার করা, অবশ্যই বিভাগে এবং অন্যান্য সম্পদ.
>> শ্রেষ্ঠ একটি সুযোগ, সত্যিই, হয় আপনি ঠিক কতদূর করেছি গর্বিত হতে
সেমেস্ত্র অবশ্যই উপর আসা.
তাই বুঝতে পারি না, যদি কিছুই অন্য তিনটি ভাল.
এবং এটা সময়ের বৃদ্ধির জন্য রুম অনুমতি দেয়.
>> কিভাবে সেই অক্ষ আছেন ভরযুক্ত, বাস্তবানুগভাবে তুমি
পেয়ে আপনার অধিকাংশ সময় ব্যয় করা যাচ্ছে কাজ করার জন্য কিছু সঠিকভাবে ঘাঁটান.
তাই শুদ্ধতা থাকে সঙ্গে হিসাবে, সবচেয়ে পরিমেয় করা
তিনজনের এই বর্ধক ফ্যাক্টর.
ডিজাইন, গুরুত্বপূর্ণ কিন্তু কিছু যে আপনি অগত্যা না
যারা ঘন্টার সব খরচ জিনিস ঠিক কাজ পেতে চেষ্টা.
>> আর তাই এটি ভরযুক্ত হচ্ছে একটু বেশি স্বল্প.
এবং তারপর শৈলী অন্তত পরিমেয় হয়.
এমনকি এটা কোন কম, যদিও মৌলিকভাবে গুরুত্বপূর্ণ,
এটা ঠিক, সম্ভবত, সবচেয়ে সহজ পদ্ধিতি হল জিনিস ঠিক করতে,
উদাহরণ আমরা অনুকারী বক্তৃতা এবং অধ্যায় না,
কিছু চমত্কারভাবে সঙ্গে সংভৃত, এবং মন্তব্য,
এবং তাই ঘোষণা সহজতম মধ্যে হয় কিছু না এবং সঠিকভাবে নির্ণয় করা.
তাই যেমন, উপলব্ধি যে ঐ পয়েন্ট
যে উপলব্ধি করতে অপেক্ষাকৃত সহজ হয়.
>> এবং এখন একটি শব্দ উপর একাডেমিক সততা আপাততঃ.
তাই অবশ্যই এর প্রতি পাঠ্যক্রম, আপনি দেখতে হবে
অবশ্যই আছে যে বেশ একটি এই প্রায় ভাষা বিট.
এবং অবশ্যই সমস্যা লাগে বেশ গুরুত্বের সঙ্গে একাডেমিক সততা.
>> আমরা পার্থক্য আছে, ভাল বা খারাপ,
এর পাঠালেন প্রতি বছর অধিক সংখ্যক শাস্তিমূলক ব্যবস্থা জন্য ছাত্র
অধিকাংশ অন্য কোন তুলনায় অবশ্যই, যে আমি সচেতন আছি.
এই অগত্যা নয় আসলে পরিচায়ক
সি এস ছাত্র, বা CS50 ছাত্র, আছে কোন কম আপনার সহপাঠীদের চেয়ে সৎ.
কিন্তু বাস্তবতা যে এই বিশ্বের, বৈদ্যুতিন, আমরা শুধু
প্রযুক্তি আছে এই detecting এর মানে.
>> এটা আমাদের কাছে খুবই জরুরী শ্রেণী জুড়ে সততা
এই ডিটেক্ট করে এবং বাড়াতে যে আমরা কি বিষয়টি যখন আমরা জিনিস দেখতে.
আর মাত্র একটি ছবি অঙ্কন করা, এবং সত্যিই এই বেসিনে মত কিছু সাহায্য করার জন্য,
এগুলোর সংখ্যা গত 10 বছর ধরে ছাত্র
কিছু জড়িত করা হয়েছে যে একাডেমিক সততা যেমন সমস্যা,
কিছু 32 ছাত্রদের সঙ্গে পতনের 2015, থেকে যা
বলতে চাই যে আমরা নিতে না হয় ব্যাপার অত্যন্ত গুরুত্ব সহকারে.
এবং, পরিণামে, এই সংখ্যার রচনা, সম্প্রতি, প্রায় 3%, 4% বা তাই
ক্লাসের.
>> শিক্ষার্থীদের সুপার সংখ্যাগরিষ্ঠ জন্য তাই এটা মনে হয় যে লাইন পরিষ্কার হয়.
কিন্তু এই লক্ষ্য রাখুন মনে করবেন না, বিশেষ করে শেষের দিকে
রাতে যখন সঙ্গে সংগ্রামরত একটি সমস্যা সেটে কিছু সমাধান,
সেখানে মেকানিজম আছে নিজেকে পেয়ে ভাল
তোমার চেয়ে সমর্থন প্রতাপ মনে হয়, এমনকি যে বেগে.
বুঝতে পারি যখন আমরা গ্রহণ করে ছাত্র জমা, আমরা পার
এই বছর যে জমা সুবিধাগুলি তুলনা করুন প্রত্যেক জমা গত বছর বিরুদ্ধে,
2007 থেকে প্রত্যেক জমা বিরুদ্ধে, এবং যেহেতু, এ খুঁজছেন পাশাপাশি,
কোর্ডের অনলাইন, আলোচনা ফোরাম, কাজের সাইট.
এবং আমরা এই উল্লেখ, সত্যিই, অনুরোধে জন্য সব
পূর্ণ প্রকাশ, যে যদি অন্য কেউ এটা অনলাইন খুঁজে পেতে পারেন,
অবশ্যই, তাই আমরা অবশ্যই করতে পারেন.
কিন্তু, সত্যিই, আত্মা অবশ্যই boils নিচে
সিলেবাসে এই অনুচ্ছেদের.
এটা সত্যিই ঠিক যুক্তিযুক্ত হতে হয়.
>> আর যে ব্যাপারে বিস্তারিত আমরা ছিল যদি শুধুমাত্র একটি বিট আরো ভাষার সাথে,
বুঝতে পারি যে সব সারাংশ কাজ যে আপনি এই কোর্সের জন্য জমা
আপনার নিজের হতে হবে.
কিন্তু যে মধ্যে, সেখানে অবশ্যই হয় সুযোগ, এবং অনুপ্রেরণা,
এবং বাঁক মধ্যে প্রাতিষ্ঠানিক মান নিজেকে others--, টিএফএস, সি এ এস,
TAS, এবং, ক্লাসে অন্যদের সমর্থনের জন্য, একা বন্ধুর দিন
এবং রুমমেট কে চর্চিত হয়েছে সি এস এবং প্রোগ্রামিং সামনে.
তাই সেখানে যে জন্য একটি ভাতা হয়.
আর চলতি সাধারণ নিয়ম আপাততঃ যখন সাহায্যের জন্য জিজ্ঞাসা করা হয়,
আপনি অন্যদের আপনার কোড দেখাতে পারে, কিন্তু তুমিও দেখতে পারে না.
তাই আপনি যদি অফিস সময়ে করছি এমনকি যদি, অথবা ডি হল, বা অন্য কোথাও
কিছু টুকরা সেটে কাজ, একটি বন্ধু, পাশাপাশি কাজ যা
এ, সম্পূর্ণই জরিমানা দিন আপনার কাজ শেষ
পরিণামে প্রতিটি অন্তর্গত উচিত আপনি যথাক্রমে, এবং না
কিছু স্ক্রিন প্রচেষ্টা হতে, চূড়ান্ত প্রকল্প যেখানে ছাড়া
এটি অনুমোদিত এবং উৎসাহিত হচ্ছে.
>> বুঝতে পারছি আপনি যদি যে কিছু সঙ্গে সংগ্রামরত
এবং আপনার বন্ধু ঠিক এরকম তারপর এই সময়ে ভালো হবে বলে আপনি,
বা তোমার চেয়ে যে সমস্যা ভালো, অথবা একটি সামান্য অধিকতর তোমার চেয়ে এগিয়ে,
এটি চালু করতে সম্পূর্ণভাবে যৌক্তিক আপনার বন্ধু এবং, বলেছিলাম,
আপনি এখানে আমার কোড দিকে তাকিয়ে মন খারাপ করি, সাহায্য আমাকে খুজো কি আমার বিষয়?
এবং, আশা, এ প্রাতিষ্ঠানিক মান স্বার্থে
যে বন্ধু না শুধু আছে বলে, ওহ, এই না, বরং,
কি আপনি লাইনে অনুপস্থিত হয় 6, বা যে ভালো কিছু?
কিন্তু সমাধান নয় আপনি পাশে বন্ধুর জন্য
বলতে, উহু, ভাল, এখানে, আমাকে টেনে তুলবো এই পর্যন্ত, আর তোমাদের জন্য আমার সমাধান দেন.
সুতরাং যে লাইন.
আপনি আপনার কোড প্রদর্শন অন্যদের, কিন্তু তুমি না
তাহাদেরই দেখতে, অন্যান্য বিষয় অবশ্যই এর সিলেবাসে সীমাবদ্ধতা.
>> তাই মন এই রেখো খেদ দফা তথাকথিত
অবশ্যই এর পাঠ্যসূচির পাশাপাশি, যে আপনি কিছু আইন কমিট যদি যে
যুক্তিসঙ্গত নয়, কিন্তু এটা আনতে অবশ্যই এর মাথা মনোযোগ
72 ঘন্টার মধ্যে, অবশ্যই স্থানীয় নিষেধাজ্ঞা আরোপ করতে পারে যে
একটি অসন্তোষজনক অন্তর্ভুক্ত হতে পারে বা কাজ জমা জন্য ব্যর্থ গ্রেড.
তবে অবশ্যই পড়ুন করা হবে না আরও শাস্তিমূলক ব্যবস্থা জন্য কোন ব্যাপার,
পুনরাবৃত্তি কাজ এর ক্ষেত্রে ছাড়া.
অন্য কথায়, কিছু করতে আপনি কি যদি মূঢ়, বিশেষত নিশুতি, সিদ্ধান্ত
যে পরদিন সকালে বা দুদিন পরে, আপনি জেগে ওঠা এবং বুঝতে,
আমি কি ভাবছিলাম?
আপনি CS50 না একটি নালী আছে যে সমস্যাটি সমাধানের জন্য
এবং সেই অনুযায়ী owning, যাতে আমরা আপনি অর্ধেক পূরণ এবং মোকাবেলা করতে হবে
এটা একটি ব্যাপার সঙ্গে যে উভয় শিক্ষাগত এবং আপনার জন্য মূল্যবান,
কিন্তু এখনও কিছু উপায় শাস্তিমূলক.
আর এখন, প্রান্ত বন্ধ নেওয়া, এই.
>> [ভিডিও প্লেব্যাক]
>> [সঙ্গীত বাজাচ্ছি]
>> [END টি প্লেব্যাক]
ডেভিড জে MALAN: ঠিক আছে, আমরা ফিরে এসেছি.
আর এখন আমরা এক সময়ে দেখুন আমাদের বাস্তব জগতে ডোমেইনের প্রথম
CS50 মধ্যে, ক্রিপ্টোগ্রাফি শিল্প, প্রেরণ এবং গ্রহণ শিল্প
গোপন বার্তা, এনক্রিপ্ট করা বার্তা যদি আপনি হবে,
যে শুধুমাত্র আপনি পাঠোদ্ধার করা যেতে পারে কিছু মূল উপাদান প্রেরক আছে
যেমন.
তাই এই উদ্বুদ্ধকরণ আমরা নেব একটি এখানে এই জিনিস তাকান,
যা একটি উদাহরণ গোপন সঙ্কেতমোচক রিং যে
অর্ডার জিনিসটা ব্যবহার করা যেতে পারে কি একটি গোপন বার্তা আসলে.
বস্তুত, ফিরে গ্রেড স্কুলে প্রতিদিন,
আপনি যদি কখনও গোপন বার্তা পাঠানো কিছু বন্ধু বা ক্লাসে কিছু ক্রাশ,
আপনি মনে হতে পারে আপনি চালাক হওয়ার
কাগজ বদলানোর আপনার টুকরা উপর দ্বারা, মত, ক এবং খ গ, ও সি ডি,
এবং তাই ঘোষণা.
কিন্তু আপনি আসলে এনক্রিপ্ট হয়েছে আপনার তথ্য, এমনকি
যদি এটি একটি সামান্য তুচ্ছ ছিল, ছিল না যে কঠিন শিক্ষক উপলব্ধি করার জন্য,
ভাল, আপনি শুধু পরিবর্তন A ও C বি খ,
আপনি আসলে জিনিসটা কি বার্তা ছিল,
কিন্তু আপনি তথ্য ciphering ছিল.
>> আপনি শুধু এটা করছিলে কেবল, অনেক Ralphie মত এখানে
একটি বিখ্যাত সিনেমা যে পালন প্রায় কাছাকাছি বিজ্ঞাপন nauseum প্রতিটি শীতকালে.
[ভিডিও প্লেব্যাক]
-Be এটা যে সব পরিচিত রালফ পার্কার এতদ্দ্বারা হয়
লিটল সদস্য নিযুক্ত অনাথ অ্যানি সিক্রেট বৃত্ত
এবং সব সন্মান প্রাপ্ত করার উদ্দেশ্যে এনটাইটেল করা হয় এবং সুবিধা তত্প্রতি ঘটমান.
>> -Signed, লিটল অনাথ অ্যানি, পাল্টা স্বাক্ষরিত পিয়েরে আন্দ্রে, কালিতে.
অনার্স এবং বেনিফিট, ইতিমধ্যে নয় বছর বয়সে.
>> [চিৎকার]
-চলে আসো.
এর সাথে পেতে চলুন শুরু করা যাক.
আমি সব যে জ্যাজ প্রয়োজন হবে না পাচারকারীদের এবং জলদস্যু সম্পর্কে.
>> জন্য -listen আগামীকাল রাতে আখেরী দু: সাহসিক কাজ
কালো জলদস্যু জাহাজের.
এখন, এটা সময় এসেছে এ্যানি এর গোপন বার্তা
আপনি সিক্রেট সার্কেলের সদস্যদের জন্য.
মনে রাখবেন, বাচ্চাদের, শুধুমাত্র সদস্যদের এ্যানি এর সিক্রেট সার্কেলের
এ্যানি এর গোপন বার্তা ডিকোড করতে.
>> মনে রাখবেন, অ্যানি আপনি উপর নির্ভর করে না.
B2 তে আপনার পিন সেট করুন.
এখানে বার্তা.
12, 11--
>> -আমি, আছি আমার প্রথম গোপন বৈঠক.
>> -14, 11, 18, 16.
>> -Pierre মহান ভয়েস আজ রাতে ছিল.
আমি যে আজ রাতের বলতে পারে বার্তাটি সত্যিই গুরুত্বপূর্ণ ছিল.
>> -3, 25, যে একটি বার্তা অ্যানি নিজেকে থেকে.
মনে রেখো, কাউকে বল না.
>> -90 সেকেন্ড পরে, আমি শুধুমাত্র আছি বাড়িতে রুম যেখানে নয়টি একটি ছেলে
গোপনীয়তা এবং ডিকোড বসতে পারে.
অই, বি!
আমি পরবর্তী ই গিয়েছিলাম
>> প্রথম শব্দ হতে হয়.
এস, এটি সহজ আসছিল এখন, ইউ, 25--
>> -ওহ, Ralphie আসো, আমাকে যেতে হবে!
>> এক্ষুনি -I'll মা!
ফার্গুসন বলবো!
>> -T, হে, চাচ্ছি কি নিশ্চিত করা নিশ্চিত করা?
কি লিটল অনাথ ছিল অ্যানি বলার চেষ্টা?
কি নিশ্চিত হবে?
>> -Ralphie অ্যান্ডি পেয়েছিলাম হয়েছে তুমি দয়া করে বের হয়ে আসবে?
>> বাইরের অধিকার, মা!
আমি বাইরে থাকব!
>> -আমি কাছাকাছি এখন পেয়ে ছিল.
টান ছিল ভয়ংকর.
এটা কি ছিল?
গ্রহের ভাগ্য ভারসাম্য হ্যাং করতে পারে.
>> -Ralphie!
অ্যান্ডির অতি যান!
>> অট্ট চিত্কার জন্য ডান আউট হতে -I'll!
>> সেখানে -Almost, আমার আঙ্গুলের flew, আমার মন একটি ইস্পাত ফাঁদ ছিল, যে লোমকূপ আন্দোলিত.
এটা প্রায় পরিষ্কার ছিল, হ্যা, হ্যা, হ্যা.
>> আপনার Ovaltine পান করতে ভুলবেন -Be.
Ovaltine?
একটি নোংরা বাণিজ্যিক?
কুত্তার বাচ্চা.
[END টি প্লেব্যাক]
ডেভিড জে MALAN: ঠিক আছে, তাই যে একটি খুব দীর্ঘ পথ ছিল
ক্রিপ্টোগ্রাফি প্রবর্তনের, এবং Ovaltine.
বস্তুত, এই পুরাতন বিজ্ঞাপন থেকে এখানে কেন Ovaltine এত ভাল?
এটা পাকা একটি ঘনীভূত আহরণ বার্লি সীরা, খাঁটি মাখনের মতো গরুর দুধ,
এবং বিশেষভাবে কোকো প্রস্তুত, একসঙ্গে প্রাকৃতিক phosphatides এবং ভিটামিন সঙ্গে.
এটি আরও শক্তিশালী হয় অতিরিক্ত ভিটামিন বি এবং ডি, yum দ্বারা.
এবং আপনি এখনও এটা পেতে পারেন, দৃশ্যত হরতাল, আমরা এখানে করেনি.
>> কিন্তু প্রেরণা এখানে ছিল ক্রিপ্টোগ্রাফি পরিচয় করিয়ে, বিশেষভাবে
ক্রিপ্টোগ্রাফি একটি টাইপ পরিচিত গোপন কি ক্রিপ্টোগ্রাফি হিসাবে.
আর নাম প্রস্তাব দেওয়া হয়, সামগ্রিকভাবে একটি গোপন চাবি ক্রিপ্টো সিস্টেমের নিরাপত্তা,
যদি আপনি হবে, একটি পদ্ধতি শুধু হাহাকার জন্য
দুই জনের মধ্যে তথ্য, যে শুধুমাত্র প্রেরক এবং শুধুমাত্র প্রাপক
একটি গোপন key-- কিছু মান জানি, কিছু গোপন শব্দগুচ্ছ, কিছু গোপন নম্বর, যে
তাদের উভয় এনক্রিপ্ট করতে পারবেন এবং তথ্য ডিক্রিপ্ট.
আর ক্রিপ্টোগ্রাফি, সত্যিই, 0 সপ্তাহ থেকে শুধু এই হয়.
>> এটি একটি সমস্যা যেখানে ইনপুট আছে এর, ইংরেজিতে প্রকৃত বার্তা মত
বা যাই হোক না কেন ভাষা যে আপনি ক্লাসে কেউ পাঠাতে চান,
বা ইন্টারনেট জুড়ে.
কিছু আউটপুট, যা যাচ্ছে scrambled বার্তা হতে যে আপনি
প্রাপক গ্রহণ করতে চান.
আর যদি কাউকে মাঝখানে এটা খুব পায়,
আপনি না তাদের চাই অগত্যা ডিক্রিপ্ট পাবে,
কারণ এই ভেতরে ব্ল্যাক বক্স, অথবা আলগোরিদিম,
কিছু প্রক্রিয়া ধাপে কিছু পদক্ষেপ নির্দেশাবলী, যে ইনপুট গ্রহণ
এবং এটা রূপান্তরিত আউটপুট, আশা একটি নিরাপদ ভাবে.
>> কিছু এবং, আসলে, নেই এই বিশ্বের শব্দভান্ডার নিম্নরূপ.
প্লেইন টেক্সট শব্দ একটি হল কম্পিউটার বিজ্ঞানী would
ইনপুট বর্ণনা করতে ব্যবহার বার্তা, ইংরেজি মত
বা যাই হোক না কেন আপনি আসলে ভাষা কিছু মানুষের পাঠাতে চান.
এবং তারপর সাইফার একত্র হয় enciphered করতে, বা এনক্রিপটেড,
সংস্করণ উহার.
>> কিন্তু অন্য একটি উপাদান এখানে.
আছে এক অন্য ইনপুট গোপন কি ক্রিপ্টোগ্রাফি.
আর যে কী নিজেই, যা সাধারণত হয়,
হিসাবে আমরা দেখতে পাবেন, একটি নম্বর, বা চিঠি, বা শব্দ, যাই হোক না কেন
অ্যালগরিদম এটা আসলে আশা.
>> আর আপনি তথ্য কিভাবে ডিক্রিপ্ট না?
আপনি এটা কিভাবে জট ছাড়ানো না?
আচ্ছা, তুমি শুধু বিপরীত আউটপুট এবং ইনপুট.
>> অন্য কথায়, একবার কেউ আপনার এনক্রিপ্ট বার্তা গ্রহণ করে,
সে কেবল হয়েছে যে একই কী জানতে.
তারা সাইফার পেয়েছি.
আর ঐ দুটি প্লাগিং দ্বারা ক্রিপ্টো সিস্টেমের মধ্যে ইনপুট,
অ্যালগরিদম, এই কালো বক্স, আউট মূল প্লেইন আসা উচিত.
তাই যে খুব উচ্চ স্তর কি ক্রিপ্টোগ্রাফি আসলে দৃশ্যে
সব বিষয়ে.
>> সুতরাং আসুন সেখানে যাক.
এর এখন নীচে তাকান চলুন শুরু করা যাক কিছু ফণা
আমরা জন্য মঞ্জুর গ্রহণ করেছি গত সপ্তাহে, এবং জন্য এই অধিবেশন
স্ট্রিং এখানে.
দিনের শেষে একটি স্ট্রিং শুধু অক্ষরের একটি ক্রম.
>> এটা হ্যালো দুনিয়া হতে পারে, বা হ্যালো, Zamyla, বা যাই হোক না কেন.
কিন্তু যে কি মানে অক্ষরের একটি ক্রম হতে?
বস্তুত, CS50 লাইব্রেরি দেয় আমাদের স্ট্রিং নামক একটি ডাটা টাইপ.
>> কিন্তু সেখানে আসলে কোন সি অনুযায়ী পংক্তিরূপে যেমন জিনিস
এটা সত্যিই শুধু একটা ক্রম অক্ষর, অক্ষর, অক্ষর,
চরিত্র, পিছনে, ফিরে যাও, ফিরে, ব্যাক, ভিতরে ব্যাক
আপনার কম্পিউটার এর মেমরি, অথবা RAM- র.
এবং আমরা যে গভীরে সন্ধান করব ভবিষ্যতে যখন আমরা, মেমরি নিজেই তাকান
এবং ব্যবহার, এবং হুমকি জড়িত হয়.
>> কিন্তু এর স্ট্রিং, Zamyla বিবেচনা করা যাক.
তাই শুধু নাম মানব এখানে, Zamyla,
যে একটা ক্রম অক্ষর, জেড-এ-এম-ওয়াই-এল-এ.
এবং এখন এর অনুমান করা যাক যে, Zamyla নাম একটি কম্পিউটার এর ভিতরে সঞ্চিত হচ্ছে
প্রোগ্রাম.
>> ওয়েল, এটা যৌক্তিক যে আমরা উচিত ঘোরা ঐ অক্ষর তাকান পাবে
স্বতন্ত্রভাবে.
তাই আমি শুধু একটু আঁকা যাচ্ছি এখানে, Zamyla নাম প্রায় বক্স.
আর সি কেস হল যে যখন আপনি Zamyla-- এবং হয়ত মত, একটি স্ট্রিং আছে
স্ট্রিং থেকে ফিরে এসেছে পেতে স্ট্রিং মত একটি ফাংশন,
আপনি আসলে নিপূণভাবে পারেন অক্ষর দ্বারা এটি চরিত্র.
>> এখন, এই জন্য সঙ্গত নয় কথোপকথন হাতে, কারণ
ক্রিপ্টোগ্রাফি আপনি পরিবর্তন করতে চান তাহলে A ও B, এবং বি সি এবং ডি সি,
এবং তাই ঘোষণা, আপনি সক্ষম হতে হবে পৃথক অক্ষর তাকান
একটি স্ট্রিং.
আপনি পরিবর্তন করতে সক্ষম হতে হবে অন্য কিছু, Z থেকে A
অন্য কিছু, এম করতে আর, এবং তাই কিছু.
এবং তাই আমরা একটি উপায় প্রয়োজন, প্রোগ্রামের মাধ্যমে, তাই
কথা বলতে, সি পরিবর্তন পাবে এবং স্বতন্ত্র অক্ষর তাকান.
এবং আমরা এই অনুসরণ হিসাবে কাজ করতে পারেন.
>> আমাকে এবং CS50 IDE তে ফিরে আগাইয়া যাই.
এবং আমাকে এগিয়ে যান এবং একটি নতুন ফাইল তৈরি
যে আমি এই সময় string0 ডাকবো, আমাদের প্রথম ধরনের একটি উদাহরণ হিসাবে, বিন্দু গ.
এবং আমি এগিয়ে যেতে চলেছি এবং এটা পিটান আপ নিম্নরূপ.
>> সুতরাং, CS50.h অন্তর্ভুক্ত, এবং তারপর অন্তর্ভুক্ত প্রমিত io.h,
যা আমি প্রায় সবসময় যাচ্ছি আমার প্রোগ্রাম ব্যবহার করে, অন্তত হতে
প্রাথমিকভাবে.
প্রধান অকার্যকর int, এবং তারপর এখানে আমি আছি স্ট্রিং করতে যাচ্ছেন স্ট্রিং পেতে পায়.
এবং তারপর আমি যাচ্ছি এগিয়ে যান এবং এই কাজের জন্য.
আমি এগিয়ে যেতে চাই এবং, একটি সদ্বিবেচনা চেক হিসাবে,
শুধু বলে, হ্যালো, শতাংশ গুলি, সেমিকোলন, স্ট্রিং 0 নির্মিত হয়.
ওহো, আমি এখানে কি হয়নি?
ওহ, আমি এটা প্লাগ ইন করা হয়নি.
সুতরাং পাঠ শিখেছি যে ইচ্ছাকৃত ছিল না.
>> তাই ভুল, আরো শতাংশ তথ্য আর্গুমেন্ট চেয়ে ধর্মান্তর.
এবিষয়ে কোথায়, লাইন 7-- ঠিক আছে, তাই আমি আছে,
মূল্যউদ্ধৃতি উদ্ধতি, যে আমার স্ট্রিং printf থেকে.
আমি একটি শতকরা চিহ্ন পেয়েছেন.
কিন্তু আমি দ্বিতীয় যুক্তি অনুপস্থিত করছি.
>> আমি অনুপস্থিত করছি কমা গুলি, যা আমি পূর্ববর্তী উদাহরণ আছে হয়নি.
সুতরাং এটি একটি ভাল সুযোগ ফিক্স আরও একটি ভুল, ঘটনাক্রমে.
আর এখন আমাকে চালানো যাক , Zamyla মধ্যে string0 টাইপ.
, Zamyla হ্যালো ঠিক আছে.
>> সুতরাং আমরা প্রোগ্রাম এই ধরনের চালানো করেছি এখন কয়েক বিভিন্ন বার.
কিন্তু এর কিছু কাজ করতে দিন একটু ভিন্ন এই সময়.
পরিবর্তে, Zamyla এর মুদ্রণ printf সঙ্গে আউট পুরো নাম,
চরিত্র দ্বারা এটা চরিত্র করতে দিন.
>> আমি লুপ জন্য একটি ব্যবহার করতে যাচ্ছি.
এবং আমি নিজেকে দিতে যাচ্ছি একটি কাউন্টিং পরিবর্তনশীল, আমি বলা হয়.
আমি iterating রাখতে যাচ্ছি, তাই যতদিন আমি গুলি দৈর্ঘ্য কম.
>> এটি সক্রিয় আউট, আমরা না এই শেষ সময় না,
যে সি দিয়ে আসে ফাংশন স্টারলিং বলা.
পিছনে দিন, এবং সাধারণভাবে এখনও যখন ফাংশন রূপায়ণকারী,
মানুষেরা প্রায়ই খুব পছন্দ করবেন সংক্ষিপ্ত নাম যে শব্দ ধরনের
আপনি কি চান, এটা যদিও মত কয়েক স্বরবর্ণ বা অক্ষর অনুপস্থিত.
সুতরাং স্টারলিং হয় একটি ফাংশন এর নাম যে
মধ্যে একটি আর্গুমেন্ট গ্রহণ প্রথম বন্ধনী যে একটি স্ট্রিং হতে হবে.
আর এটি শুধু একটি পূর্ণসংখ্যা ফেরৎ, স্ট্রিং এর দৈর্ঘ্য.
>> লাইন 7 লুপ জন্য এই তো যাচ্ছে গণনা আমি 0 সমান শুরু করার.
এটা বাড়ায় যাচ্ছে প্রতিটি পুনরাবৃত্তির আমি
1 দ্বারা, আমরা কয়েক বার করছি হিসাবে.
কিন্তু এটা শুধুমাত্র করতে যাচ্ছে বিন্দু পর্যন্ত এই পর্যন্ত
যখন আমি দৈর্ঘ্য হল স্ট্রিং নিজেই.
>> সুতরাং এই একটি উপায়, পরিণামে, অক্ষরের উপর iterating
স্ট্রিং হিসেবে নিম্নে প্রদত্ত.
আমি না প্রিন্ট আউট একটি যাচ্ছি পুরো স্ট্রিং, কিন্তু শতাংশ গ,
একটি একক চরিত্র একটি নতুন লাইন অনুসরণ.
এবং তারপর আমি যাচ্ছি এগিয়ে যান, এবং আমি প্রয়োজন
আমি প্রিন্ট করতে চান বলে s এর ith চরিত্র.
>> সুতরাং যদি আমি পরিবর্তনশীল যে ইঙ্গিত দেয় স্ট্রিং, যেখানে এর সূচক
আপনি এটা, আমি পাবে প্রয়োজন হয় বলে, আমাকে গুলি ith অক্ষর দিতে.
এবং গ এরকম একটি উপায় রয়েছে বর্গাকার বন্ধনী সঙ্গে এই.
আপনি কেবল নাম বলতে স্ট্রিং, যা এই ক্ষেত্রে গুলি.
তারপর আপনি বর্গাকার বন্ধনী, যা ব্যবহার সাধারণত শুধু আপনার রিটার্ন বা Enter উপরে
কীবোর্ড কী.
এবং তারপর আপনি ইনডেক্স করা চরিত্র যে আপনি প্রিন্ট করতে চান.
সুতরাং সূচক একটি হতে যাচ্ছে হল-- 0, বা 1, বা 2 অথবা 3, বা বিন্দু,
বিন্দু, বিন্দু, কিছু অন্যান্য সংখ্যা.
>> এবং আমরা নিশ্চিত যে এটা যাচ্ছে , সঠিক সংখ্যা হবে কারণ আমি
0 এ গণনা শুরু.
এবং ডিফল্ট দ্বারা, প্রথম অক্ষর একটি স্ট্রিং কনভেনশন 0 দ্বারা হয়.
আর দ্বিতীয় চরিত্র বন্ধনী 1.
আর তৃতীয় চরিত্র বন্ধনী 2.
এবং আপনি খুব যেতে চাই না পর্যন্ত, কিন্তু আমরা, কারণ আমরা করছি না হবে
শুধুমাত্র এটা না হওয়া পর্যন্ত আমি বাড়ায় যাচ্ছে স্ট্রিং এর দৈর্ঘ্য সমান.
আর যা বিন্দু, লুপ জন্য এই থামাতে হবে.
>> তাই আমাকে এগিয়ে যান এবং এই সংরক্ষণ করতে দিন প্রোগ্রাম, এবং রান স্ট্রিং 0 করতে.
কিন্তু আমি মাতাল আপ.
পরোক্ষভাবে প্রকাশক লাইব্রেরি ফাংশন ঘোষণা টাইপ ধরনের সঙ্গে Stirling এবং এখন such--,
এই পরিচিত শোনাচ্ছে.
কিন্তু এটা printf না.
আর এটা পংক্তি হয়ে যাবে.
>> আমি স্ক্রু আপ করা হয়নি একই ভাবে এই সময়.
কিন্তু এখানে নিচে নেমে একটু লক্ষ্য আরও হেডার string.h অন্তর্ভুক্ত,
স্পষ্টভাবে প্রদান স্টারলিং জন্য ঘোষণা.
তাই সেখানে আসলে সেখানে একটি খেই.
>> এবং প্রকৃতপক্ষে এটি সক্রিয় আউট সেখানে অন্য হেডার ফাইল
যে আমরা ব্যবহার না করে থাকেন ক্লাসে এখনো, কিন্তু এটা
যাঁদের পাওয়া মধ্যে আপনাকে, বলা string.h.
এবং যে ফাইল, string.h মধ্যে স্টারলিং ঘোষিত হয়.
তাই আমাকে এগিয়ে যান এবং এই সংরক্ষণ, স্ট্রিং করা
0-- সুন্দর, কোন ত্রুটি বার্তা এই সময়.
>> ./string0 Zamyla, এবং আমি, সম্পর্কে লিখুন আঘাত করছি
এই বিন্দুতে GetString যাচ্ছে স্ট্রিং ফিরে, গুলি রাখা.
লুপ জন্য পুনরুক্তি করতে যাচ্ছে তখন যে একটি সময়ে এস এর অক্ষর এক ওভার,
এবং তাদের প্রতি লাইনে একটি মুদ্রণ, কারণ আমি শেষে যে ব্যাকস্ল্যাশ এন ছিল.
তাই আমি যে ব্যাকস্ল্যাশ বর্জন করা যেতে পারে এন, এবং তারপর মাত্র, Zamyla সব প্রিন্ট
একই লাইনে, কার্যকরভাবে reimplementing
printf, যা সব যে দরকারী নয়.
কিন্তু এই ক্ষেত্রে, আমি যে না করেছেন.
আমি আসলে এক মুদ্রিত করেছি একটি সময়ে চরিত্র, প্রতি লাইনে একটি,
তাই আমরা আসলে প্রভাব দেখতে যে.
>> তবে আমি একটা কথা এখানে মনে রাখতে হবে.
এবং আমরা ফিরে আসবো ভবিষ্যতে সপ্তাহে এই.
এটা এই যে দেখা যাচ্ছে কোড সম্ভাব্য বগী.
>> এটা পরিনত হয় যে পেতে স্ট্রিং এবং জীবনের কিছু অন্যান্য কার্যাবলী
অগত্যা সবসময় না আপনি কি আশা করছেন আসতে.
আমরা ক্লাসের শেষ থেকে জানি এই যে পেতে সময়
স্ট্রিং একটি স্ট্রিং ফিরে অনুমিত হয়.
কিন্তু কি যদি ব্যবহারকারী ধরনের আউট যেমন একটি দীর্ঘ শব্দ অথবা অনুচ্ছেদ, অথবা প্রবন্ধ
সেখানে যথেষ্ট নয় যে কম্পিউটার মেমরি এটি মাপসই.
>> ভালো লেগেছে, কি কিছু যায় ফণা নীচে ভুল?
এটা প্রায়ই ঘটতে না পারে, কিন্তু এটা একবার ঘটতে পারে
কিছুদিনের মধ্যে, খুব কম ক্ষেত্রে.
আর তাই এটি সক্রিয় আউট যে পেতে স্ট্রিং এবং অগত্যা না এটা মত কার্যাবলী
সবসময় স্ট্রিং ফিরে.
তারা কিছু ত্রুটি মান ফিরে যেতে পারি, কিছু প্রহরী মান তাই কথা বলতে,
যে ইঙ্গিত কিছু ভুল হয়েছে.
এবং আপনি শুধুমাত্র থেকে এই জানতে চাই ক্লাসে এটা এখন শিখে,
বা আরো কিছু ডকুমেন্টেশন পড়া থাকার.
এটা পরিনত হয় যে পেতে স্ট্রিং নাল নামক একটি মান ফিরে আসতে পারেন.
নাল একটি বিশেষ মূল্য যে আমরা করব ভবিষ্যতে সপ্তাহে ফিরে আসা.
কিন্তু এখন জন্য, শুধু জানি যে যদি আমি চাই সত্যিই অগ্রগতিশীল যথাযথ হতে
স্ট্রিং পেতে ব্যবহার করে, আমি শুধু এটা বলা ঠিক নয়,
এবং অন্ধভাবে তার রিটার্ন মান ব্যবহার, বিশ্বাস যে এটি একটি স্ট্রিং এর.
>> আমি প্রথম, বলতে হবে হেই, এক মিনিট শুধুমাত্র অপেক্ষা করুন,
এগিয়ে যান, তাহলে এর সমান না নাল, যেখানে নাল, আবার,
শুধু কিছু বিশেষ মূল্য.
এবং এটা শুধুমাত্র বিশেষ মান আপনি পেতে স্ট্রিং জন্য চিন্তা করতে হবে.
স্ট্রিং পারেন যাচ্ছে পান একটি স্ট্রিং বা নাল ফিরে.
>> আর এই বিস্ময়বোধক বিন্দু সমান চিহ্ন আপনি হয়তো গণিত ক্লাস থেকে জানতে পারে
আপনার সাথে একটি সমান চিহ্ন আঁকা হতে পারে এটি দিয়ে একটি লাইন সমান না নির্দেশ করার জন্য.
যে সাধারণত একটি অক্ষর নয় আপনি আপনার কীবোর্ডের টাইপ করতে পারেন.
তাই বেশীর ভাগ প্রোগ্রামিং ভাষায়, আপনি সমান না বলতে চাই যখন,
আপনি একটি বিস্ময়বোধক বিন্দু ব্যবহার, অন্যথায় ঠুং নামে পরিচিত.
সুতরাং আপনি বলে ঠুং, সমান যা সমান নয়, কথাটি মানে.
এটা একটা বড় নয় শুধু মত চেয়ে, বা সমান, বা কম
অথবা সমান আপনার কীবোর্ড উপর কীতে এটি সব এক প্রতীক মধ্যে আছে.
সুতরাং যে কেন, গত উদাহরণগুলোতে, আপনি একটি খোলা বন্ধনী করেনি, এবং তারপর
একটি সমান চিহ্ন, যাতে করতে এর চেয়ে বড় বা, বলতে চেয়েও কম.
>> তাই কি takeaway এখানে আছে?
এই কেবল এখন একটি উপায় এই সিনট্যাক্স উপস্থাপক, এই বৈশিষ্ট্য,
পৃথক উপর iterating একটি স্ট্রিং চরিত্রদের.
আর ঠিক ঐ বর্গক্ষেত্র মত বন্ধনী, আপনি তাদের এ পেতে অনুমতি
যেমন যারা বর্গাকার বন্ধনী বিবেচনা এই ধরনের অন্তর্নিহিত আভাস
নকশা, যদ্দ্বারা যে একটি স্ট্রিং এর ভিতরে চরিত্র
ধরনের নীচে কোথাও boxed হয় আপনার কম্পিউটারের মেমরিতে হুড.
>> কিন্তু এই একটি বৈকল্পিক করা যাক.
এটা এই যে দেখা যাচ্ছে প্রোগ্রাম সঠিক.
সুতরাং CS50 এর অক্ষ প্রতি মূল্যায়নের জন্য কোড, এই এখন সঠিক.
বিশেষ করে এখন যে আমি চেক করছি নাল, এই প্রোগ্রাম কখনও বিপর্যস্ত উচিত.
আর আমি শুধু যে অভিজ্ঞতা থেকে জানি.
কিন্তু সেখানে অন্য কিছুই যে আমরা সত্যিই ভুল এখানে যেতে পারেন.
কিন্তু এটা খুব ভাল ডিজাইন নয়, কারণ আসুন বুনিয়াদি ফিরে যেতে.
>> প্রথমত, principles-- লুপ জন্য একটি কি করবেন না?
লুপ জন্য একটি তিন জিনিস.
এটা কিছু সূচনা মান, যদি আপনি এটি জিজ্ঞাসা.
এটি একটি শর্ত পরীক্ষা করা হবে.
এবং তারপর পরে প্রতিটি পুনরাবৃত্তির, প্রতিটি চক্র পরে,
এটা কিছু সংখ্যা বৃদ্ধি মান, বা মান, এখানে.
>> সুতরাং যে কি মানে?
আমরা তোমার 0 আরম্ভ.
আমরা পরীক্ষা এবং নিশ্চিত আমি কম হয় s এর দৈর্ঘ্য, যা জেড এ-এম-ওয়াই-এল-এ নয়,
তাই যা 6 এর চেয়েও কম.
এবং প্রকৃতপক্ষে, 0 কম 6.
>> আমরা, Zamyla নাম থেকে জেড প্রিন্ট আউট.
তারপর আমরা তোমার 0 থেকে 1 বাড়ায়.
আমরা তারপর পরীক্ষা, 1 কম গুলি দৈর্ঘ্যের তুলনায়?
s এর দৈর্ঘ্য 6.
হ্যাঁ, এটা.
>> সুতরাং আমরা, Zamyla নাম, জেড এ একটি প্রিন্ট করা হবে.
আমরা 0 থেকে আমি বাড়ায়, 1, 2.
আমরা তারপর চেক, 2 কম হয় , Zamyla নামের দৈর্ঘ্য.
6- তাই 2 6 এর চেয়েও কম.
হ্যাঁ, এর মধ্যে M এখন প্রিন্ট আউট করা যাক , Zamyla নাম, তৃতীয় চরিত্র.
>> কী এখানে প্রতিটি হয় গল্পের পুনরাবৃত্তির, আমি চেক করছি,
আমি, Zamyla দৈর্ঘ্যের চেয়ে কম হয়?
কিন্তু ধরা হয় স্টার্লিং একটি সম্পত্তি নয়.
তোমাদের মধ্যে যারা প্রোগ্রাম আছে জাভা বা অন্য ভাষায় আগে
দৈর্ঘ্য জানতে পারে এর একটি পংক্তি একটি সম্পত্তি, শুধু কিছু শুধুমাত্র মান পড়া.
>> এই ক্ষেত্রে সি, এই হলে একটি ফাংশন আক্ষরিক যে
সংখ্যা বেড়ে চলেছে যে সময়, Zamyla অক্ষর
আমরা যে ফাংশন কল.
প্রতিটি সময় আপনি ব্যবহার করতে কম্পিউটার জিজ্ঞাসা স্টারলিং, এটা, Zamyla কটাক্ষপাত গ্রহণ,
এবং বলছে জেড এ-এম-ওয়াই-এল-এ, 6.
আর 6 ফেরৎ.
পরের বার আপনি যখন কল এটা যে লুপ জন্য ভিতরে,
এটা, Zamyla তাকান যাচ্ছে আবার বলে, জেড-এ-এম-ওয়াই-এল-এ, 6.
আর 6 ফিরে যাচ্ছে.
তাই কি এই নকশা সম্পর্কে মূঢ়?
>> কেন আমার কোড না 5 আউট একটি 5 নকশা জন্য ডান এখন, তাই কথা বলতে?
ওয়েল, আমি জিজ্ঞাসা করছি একটি অকারণে প্রশ্ন.
আমি আরও কাজ করছি চেয়ে আমি প্রয়োজন.
>> সুতরাং যদিও উত্তর সঠিক হয়, আমি আছি
কম্পিউটার জিজ্ঞাসা, কি , Zamyla দৈর্ঘ্য আবার,
এবং আবার, এবং আবার, এবং আবার?
আর যে উত্তর হল কখনও পরিবর্তন করতে যাচ্ছেন.
এটা সবসময় 6 হতে যাচ্ছে.
>> তাই এই তুলনায় ভাল সমাধান এই পরবর্তী সংস্করণ হবে.
আমাকে এগিয়ে যান এবং একটি মধ্যে এটা করা string1.c নামক পৃথক ফাইল,
শুধু রাখা এটি আলাদা.
এবং এটি জন্য একটি সক্রিয় আউট লুপ, আপনি আসলে করতে পারেন
একবারে একাধিক ভেরিয়েবল ডিক্লেয়ার.
>> তাই আমি আমি রাখা এবং 0 থেকে এটি সেট করতে যাচ্ছি.
কিন্তু আমিও যাচ্ছি একটি কমা যোগ এবং বল পবিত্র তিনি,
আমাকে একটি পরিবর্তনশীল বলা হবে, যার দিতে মান s এর স্ট্রিং দৈর্ঘ্য সমান.
আর এখন, আমার অবস্থার করতে দয়া করে তাই যতদিন আমি এন চেয়ে কম হয়.
>> তাই এই ভাবে, যুক্তি নেই দিনের শেষে অভিন্ন.
কিন্তু আমি স্মরণ করছি মান 6, এই ক্ষেত্রে.
, Zamyla নামের দৈর্ঘ্য কত?
আর আমি এন এটি নির্বাণ করছি.
>> আর আমি এখনো চেক করছি শর্ত প্রত্যেক সময়.
0 6 চেয়ে কম হয়?
1 6 চেয়ে কম হয়?
2 6 কম, এবং তাই ঘোষণা?
>> কিন্তু আমি কম্পিউটার জিজ্ঞাসা করছি না আবার, এবং আবার, কি
, Zamyla নামের দৈর্ঘ্য?
, Zamyla নাম দৈর্ঘ্য কত?
এই, Zamyla নাম দৈর্ঘ্য কত?
আমি আক্ষরিক স্মরণ করছি যে প্রথম এবং শুধুমাত্র এই দ্বিতীয় পরিবর্তনশীল n উত্তর.
সুতরাং এখন এই না শুধুমাত্র হবে সঠিক, কিন্তু সুগঠিত.
>> এখন, শৈলী সম্পর্কে কি?
আমি আমার ভেরিয়েবল নামে করেছি বেশ ভাল, আমি বলতে বাধ্য হচ্ছি.
তারা অধিকার এখন সুপার সংক্ষিপ্ত করছি.
এবং যে সম্পূর্ণই সূক্ষ্ম.
>> আপনি শুধুমাত্র এক থাকে তাহলে একটি প্রোগ্রাম স্ট্রিং,
আপনি পাশাপাশি কল হতে পারে এটা স্ট্রিং জন্য গুলি.
আপনি শুধুমাত্র এক পরিবর্তনশীল থাকে একটি প্রোগ্রাম গণনা জন্য,
আপনি ভাল হিসাবে এটি আমি ডাকতে পারে.
আপনি একটি লম্বা থাকে, এন পাশাপাশি সুপার সাধারণ.
কিন্তু আমি আমার কোডের কোন মন্তব্য করেন নি.
>> আমি reader-- অবগত না থাকেন যে আমার মেমরি, বা টিএ কিনা,
বা শুধু সহকর্মী কি অনুমিত হয় এই প্রোগ্রামের মধ্যে চালু করা.
তাই ভাল শৈলী পেতে, আমি কি করতে চান কি
আপাততঃ কিছু হয় মত ইনপুট জন্য ব্যবহারকারীকে জিজ্ঞাসা.
আমি পুনর্লিখন পারে উপায়ে এই কোন সংখ্যা.
>> নিশ্চিত করুন পরিচিত করতে s-- নিশ্চিত স্ট্রিং একটি স্ট্রিং ফিরে.
এবং তারপর এখানে এবং এই সম্ভবত হয় সবচেয়ে গুরুত্বপূর্ণ comment-- পুনরুক্তি
একটি সময়ে গুলি এক অক্ষর উপর.
আর আমি কোন ব্যবহার করতে পারে ইংরেজি ভাষা পছন্দ
এখানে প্রতিটি বর্ণনা করতে এই কোড অংশ.
>> লক্ষ্য করুন যে, আমি একজন না করা আছে কোড প্রতিটি লাইন মন্তব্য
সত্যিই আকর্ষণীয় মাত্র বেশী বেশী করে
কিছু অর্থ আছে আমি প্রতাপ কেউ অতি পরিষ্কার করতে চাই
আমার কোড পড়া.
এবং কেন আপনি পেতে আহ্বান করা হয় স্ট্রিং ইনপুট জন্য ব্যবহারকারীকে জিজ্ঞাসা?
এমনকি যে এক অগত্যা নয় সব যে বর্ণনামূলক.
কিন্তু এটা একটা গল্প বলি সাহায্য করে, কারণ গল্পের দ্বিতীয় লাইন, নিশ্চিত করুন
স্ট্রিং পেতে একটি স্ট্রিং ফিরে.
>> আর গল্পের তৃতীয় লাইন, হয় গুলি এক অক্ষর পুনরুক্তি
একেবারে.
আর এখন শুধু ভাল পরিমাপ জন্য, আমি এগিয়ে যান এবং যোগ করতে যাচ্ছি
আরও একটি মন্তব্য করে শুধু গুলি মুদ্রণ I- তম অক্ষর বলেছেন.
এখন, আমি কি করেছি দিনের শেষে?
>> আমি কিছু ইংরেজি যোগ করেছেন মন্তব্য আকারে শব্দ.
স্ল্যাশ স্ল্যাশ চিহ্ন মানে, হেই, কম্পিউটার এই মানুষের জন্য নয়,
আপনার জন্য না, কম্পিউটার.
তাই তারা কথাটি উপেক্ষিত করছি.
তারা শুধু সেখানে আছেন.
>> এবং প্রকৃতপক্ষে, এবং CS50 আইডিই তাদের যেমন দেখায় ধূসর, যেমন দরকারী, কিন্তু কী হচ্ছে না
প্রোগ্রাম.
লক্ষ্য করুন আপনি এখন কি করতে পারি.
আপনি সি জানেন কিনা প্রোগ্রামিং বা না, আপনি
শুধু এই সময়ে ফিরে দাঁড়াতে পারে প্রোগ্রাম, এবং মন্তব্য সর পড়া.
ইনপুট জন্য ব্যবহারকারীকে জিজ্ঞাসা করুন, নিশ্চিত করা স্ট্রিং একটি স্ট্রিং ফিরে পেতে,
গুলি অক্ষর পুনরুক্তি একটি সময়ে এক, অক্ষর মুদ্রণ
ই-তম অক্ষর s-- আপনি না এমনকি কোড তাকান আছে
বুঝতে কি এই প্রোগ্রাম আছে.
এবং, এখনো ভালো, যদি আপনি নিজেকে দেখুন এক বা দুই সপ্তাহের মধ্যে এই প্রোগ্রাম এ,
অথবা এক মাস কিংবা এক বছর, আপনি খুব না
কোড দিকে তাকিয়ে থাকতে, মনে করার চেষ্টা,
কি আমি এই কোড দিয়ে কাজ করার চেষ্টা করা হয়েছিল?
>> আপনি নিজেকে বলেছি.
আপনি এটা নিজে বর্ণনা করেছি, অথবা কিছু সহকর্মী, বা টিএ, বা মেমরি.
আর তাই এই এখন হবে সঠিক, এবং ভাল ডিজাইন,
এবং শেষ পর্যন্ত ভাল শৈলী হিসাবে ভাল.
তাই মন যে রাখতে না.
>> তাই সেখানে এক অন্য ব্যাপার জিনিস আমি এখানে করতে যাচ্ছি
যে এখন প্রকাশ করতে ঠিক কি ফণা নীচে যাচ্ছে.
সুতরাং এই বৈশিষ্ট্য সি, ও অন্যান্য ভাষায়,
বলা টাইপকাস্টিং যে হয় পরোক্ষভাবে
অথবা স্পষ্টভাবে আপনি রূপান্তর করতে পারবেন অন্য একটি ডাটা টাইপ থেকে.
আমরা তাই হয়েছে আচরণ করেছি পর্যন্ত স্ট্রিং সঙ্গে আজ.
>> এবং স্ট্রিং অক্ষর.
কিন্তু সপ্তাহ থেকে প্রত্যাহার 0 চরিত্রগুলোকে কি হয়?
অক্ষর শুধু একটি বিমূর্ততা সংখ্যার দশমিক সংখ্যার উপরে,
এবং দশমিক সংখ্যা সত্যিই শুধু একটি হয় বাইনারি সংখ্যার উপরে বিমূর্ততা,
আমরা এটা হিসাবে সংজ্ঞায়িত.
>> সুতরাং অক্ষর সংখ্যা.
এবং সংখ্যার অক্ষর, শুধু প্রসঙ্গের উপর নির্ভর করে.
আর এটা যে ভিতরে সক্রিয় আউট একটি কম্পিউটার প্রোগ্রাম,
আপনি কিভাবে আপনি তাকান করতে চান নির্দিষ্ট করতে পারেন যে প্রোগ্রামের ভিতর বিট দিকে?
>> সপ্তাহে 0 যে আমরা ছিল থেকে প্রত্যাহার ASCII, যা শুধু এই কোড
নম্বরে ম্যাপিং অক্ষর.
আর আমরা পিতাকে বললাম, মূলধন একটি 65.
ক্যাপিটাল বি তাই ঘোষণা 66, এবং.
>> এবং খেয়াল করুন, আমরা মূলত চর আছে এখানে উপরের সারির, যেমন সি তাদের কল করবে,
অক্ষর, এবং তারপর দ্বিতীয় সারিতে আপনি ints.
এবং এটি সক্রিয় আউট আপনি রূপান্তর করতে পারেন অঙ্গীভূতভাবে দুই, সাধারণত মধ্যে.
আর আমরা কি করতে চান তাহলে এই ইচ্ছাকৃতভাবে আমরা
মোকাবেলা করার চাইতে পারেন এটার মতো কিছু.
>> আমরা রূপান্তর করতে পারেন বড় হাতের অক্ষরে অর্ধবৃত্ত
কেস, বা বড় হাতের অক্ষরে কম ক্ষেত্রে.
এবং এটি সেখানে এর সক্রিয় আউট আসলে একটি প্যাটার্ন এখানে
আমরা মাত্র কয়েক মিনিটের মধ্যে আলিঙ্গন করতে পারেন.
কিন্তু এর একটি প্রথম যাক স্পষ্টভাবে এই কাজ করার উদাহরণ.
>> আমি CS50 আইডিই ফিরে যেতে চলেছি.
আমি একটি তৈরি করতে যাচ্ছি ফাইল ASCII 0.c. বলা
আমি এগিয়ে যান এবং যোগ করতে যাচ্ছি আমার উপরের মান io.h, int প্রধান অকার্যকর
আমার ফাংশন উপরের.
এবং তারপর আমি কি করতে যাচ্ছি লুপ জন্য একটি নিম্নলিখিত আমি থেকে সমান,
স্বীকার করে বলে, 65 দিন.
>> এবং তারপর আমি কম হতে যাচ্ছে বর্ণমালার 65, প্লাস 26 অক্ষর.
তাই আমি কম্পিউটার জানাবো সেখানে আমার জন্য গণিত না.
এবং তারপর এই লুপ ভিতরে, কি আমি প্রিন্ট করতে যাচ্ছি?
>> % গ% আমি এন ব্যাকস্ল্যাশ হয়.
এবং এখন আমি দুটি মান চলা করতে চান.
আমি সাময়িকভাবে প্রশ্ন করেছি সেখানে চিহ্নিত প্রশ্ন আমন্ত্রণ জানাতে.
>> আমি অনওয়ার্ড 65 থেকে পুনরুক্তি করতে চান বর্ণমালার 26 অক্ষর জন্য,
প্রতিটি পুনরাবৃত্তির উপর প্রিন্ট আউট করে চরিত্রের অবিচ্ছেদ্য সমতুল্য.
অন্য কথায়, আমি চাই পুনরুক্তি উপর 26 নম্বর মুদ্রণ
কি ASCII অক্ষর, অক্ষর, এবং কি সংশ্লিষ্ট সংখ্যা হচ্ছে ÑÑ
সত্যিই শুধু recreating যে স্লাইড থেকে চার্ট.
তাই কি এই প্রশ্ন চিহ্ন হওয়া উচিত?
>> ওয়েল, এটা যে দ্বিতীয় সক্রিয় আউট এক মাত্র পরিবর্তনশীল আমি কি হব.
আমি দেখতে যে একটি সংখ্যা হিসাবে চান.
আর মাঝখানে যুক্তি এখানে, আমি কম্পিউটার বলতে পারেন
যে পূর্ণসংখ্যা আচরণ করা আমি একটি চরিত্র হিসাবে, তাই
এটা এখানে শতাংশ সি জন্য প্রতিকল্প
>> অন্য কথায়, যদি আমি, মানুষের প্রোগ্রামার, জানি
এই মাত্র সংখ্যা দিনের শেষে.
এবং আমি জানি যে 65 উচিত কিছু অক্ষর ম্যাপ.
এই সুস্পষ্ ঢালাই সঙ্গে, একটি প্রথম বন্ধনী দিয়ে,
আপনি করতে চান ডাটা টাইপ এর নাম রূপান্তর, এবং একটি বদ্ধ বন্ধনী,
আপনি বলতে পারেন কম্পিউটার, হেই, কম্পিউটার,
একটি গৃহস্থালি এই পূর্ণসংখ্যা রূপান্তর.
>> তাই যখন আমি এই রান প্রোগ্রাম কম্পাইল করার প্রণালী পর,
চলুন দেখি আমি কি get-- ASCII 0 করে দিন.
অভিশাপ এটা, কি আমি ভুল এখানে কি?
অঘোষিত শনাক্তকারী ব্যবহার করুন, সব ঠিক আছে, ইচ্ছাকৃত নয়,
কিন্তু দেখা যাক যদি আমরা না করতে পারেন মাধ্যমে এই কারণে.
>> তাই লাইন পাঁচটি তাই আমি পাইনি সুদূর আপ screwing সামনে.
ঠিক আছে.
তাই লাইন 5 আমি জন্য সমান 65-- দেখতে পাচ্ছি. '
তাই সি মনে রাখবেন যে, কিছু অসদৃশ যদি আপনি পূর্বে প্রোগ্রামিং আছে প্রত্যেক
অভিজ্ঞতা, আপনি কম্পিউটার বলতে,
স্ক্র্যাচ অসদৃশ, কি পরিবর্তনশীল ধরনের তা হল.
>> এবং আমি একটি কি ফ্রেজ এখানে ভুলে গেছি.
লাইন পাঁচটি, আমি আমি ব্যবহার শুরু করেছি.
কিন্তু আমি সি বলা হয়নি কি ডাটা টাইপ হয়.
তাই আমি এখানে যেতে যাচ্ছি এবং বলে, অই, এটি একটি পূর্ণসংখ্যা করতে.
>> এখন আমি এগিয়ে যান এবং কম্পাইল যাচ্ছি.
যে সংশোধন করা হয়েছে.
./ascii0 লিখুন, যে শীতল ধরনের.
নেই শুধু এটা সুপার দ্রুত হয় , কম্পিউটার এই প্রশ্ন জিজ্ঞাসা
বরং একটি স্লাইডে এটা তাকিয়ে চেয়ে, এটা প্রতি লাইনে একটি প্রিন্ট আউট, একটি 65,
বি থেকে আমি down-- 66, সব পথ অক্ষর z এর এই 26 বার করেনি,
যা 90.
এবং, আসলে, সামান্য আরো বুদ্ধিমান would
আমার জন্য হয়েছে না নির্ভর করতে কম্পিউটারে 26 যোগ করার জন্য.
আমি শুধু কাজ করতে পারে 90 পাশাপাশি, এতক্ষণ
যেমন আমি দুবার একই ভুল করতে না.
আমি মাধ্যমে যেতে চান z- র, না শুধু ওয়াই মাধ্যমে আপ.
>> সুতরাং যে একটি সুস্পষ্ নিক্ষিপ্ত হচ্ছে.
এটা এই যে দেখা যাচ্ছে এমনকি প্রয়োজন নেই.
আমাকে এগিয়ে যান এবং এই পুন: প্রকাশ করা যাক কম্পাইলার, এবং পুন: প্রকাশ ASCII 0.
এটা পরিনত হয় যে সি বেশ স্মার্ট.
>> এবং printf, বিশেষ করে, বেশ স্মার্ট.
আপনি শুধু একটি আমি দুইবার পাস উভয় স্থানধারক জন্য printf,
, বুঝতে হবে, ওহ, ভাল আমি আপনাকে চিনি আমাকে একটি কিছু সংখ্যা integer-- দিয়েছিলাম
65, বা 90, বা যাই হোক না কেন.
কিন্তু আমি দেখছি তোমরা চাও একটি অক্ষর মত যে সংখ্যা ফরম্যাট.
আর তাই printf পরোক্ষভাবে নিক্ষেপ করতে পারেন The পাশাপাশি আপনার জন্য একটি গৃহস্থালি int.
সুতরাং একটি সমস্যা যে এ সব না.
>> কিন্তু লক্ষ্য করা, এই সমানতা এর কারণ আমরা আসলে এই হিসাবে ভাল করতে পারেন.
আমাকে এগিয়ে যান এবং এক করা যাক আপাততঃ ASCII 1.c. অন্যান্য সংস্করণ
আর এর পরিবর্তে উপর iterating ইন্টিজার, সত্যিই আপনার মন গাট্টা করতে পারেন
অক্ষরের উপর iterating দ্বারা.
একটি গৃহস্থালি গ মূলধন পায় তাহলে আমি এগিয়ে যান এবং এই কাজ করতে চান,
এতক্ষণ সি কম বা সমান হিসাবে রাজধানী জেড এবং প্রতিটি পুনরাবৃত্তির
আমি সি বাড়ায় করতে চাই, আমি যা করতে পারেন এখন আমার printf লাইন এখানে
বলে, শতাংশ সি শতাংশ আমি আবার, কমা সি
>> এবং এখন, আমি অন্য দিক যেতে পারেন, চরিত্র স্পষ্টভাবে ঢালাই
একটি পূর্ণসংখ্যা.
সুতরাং, আবার, কেন আপনি এই কাজ করতে হবে?
এটা বাছাই একটু অদ্ভুত অক্ষর পরিপ্রেক্ষিতে গণনা.
>> কিন্তু যদি তোমরা বুঝতে পার কি ফণা নীচে যাচ্ছে,
আসলে কোন জাদু.
আপনি শুধু বলছে, আরে, কম্পিউটার দিতে আমাকে একটি পরিবর্তনশীল টাইপ গৃহস্থালির বলা হয় সি.
রাজধানী উ এটি আরম্ভ এবং একক উদ্ধৃতি ব্যাপার লক্ষ্য.
>> সি অক্ষরের জন্য, থেকে প্রত্যাহার গত সপ্তাহে, আপনি একক উদ্ধৃতি চিহ্ন ব্যবহার.
স্ট্রিং জন্য, শব্দ, বাক্যাংশ, আপনি ডবল কোট ব্যবহার.
ঠিক আছে, কম্পিউটার, ইহা করিও, তাই চরিত্র যতদিন চেয়ে কম হয়
অথবা z সমান.
আর আমি আমার ASCII টেবিল থেকে জানি যে সব এই ASCII কোড এর সংলগ্ন হয়.
>> কোন ফাঁক নেই.
তাই এটি শুধু একটি Z দিয়ে হয়, এক নম্বর প্রতিটি দ্বারা বিভক্ত.
এবং তারপর আমি বাড়ায় পারেন একটি গৃহস্থালি, যদি আমি সত্যিই চান.
দিনের শেষে, এটা শুধু একটা সংখ্যা.
আমি এটা জানি.
তাই আমি শুধু এটা 1 যোগ অনুমান করতে পারেন.
>> এবং তারপর এই সময়, আমি গ প্রিন্ট, এবং তারপর অবিচ্ছেদ্য সমতুল্য.
এবং আমি এমনকি সুস্পষ্ নিক্ষিপ্ত করার প্রয়োজন হবে না.
আমি printf এবং জানাতে পারেন কম্পিউটার চিত্রে কিছু,
যাতে এখন যদি আমি চালানোর Ascii1./ascii1 করা,
আমি পাশাপাশি সঠিক একই জিনিস পেতে.
>> বেহুদা প্রোগ্রাম, কেউ যদিও আসলে লেখার সফ্টওয়্যার যাচ্ছে
অর্ডার জিনিসটা, কি ছিল সংখ্যা যে একটি মানচিত্র, অথবা B অথবা জেড?
আপনি শুধু বা এটি Google চলুন, এটি খোঁজা অনলাইন, বা এটি খোঁজা
একটি স্লাইড, বা মত.
সুতরাং যেখানে এই আসলে দরকারী পায়্?
>> আচ্ছা, যে ভাষী স্লাইড, আছে নোটিশ
য়ের বড়হাতের অক্ষর ছোটহাতের মধ্যে একটি প্রকৃত প্যাটার্ন এখানে এবং ছোট হাতের অক্ষর ব্যবহার আপতিক ছিল না যে.
লক্ষ করুন যে, রাজধানী একটি 65.
ছোট হাতের একটি 97.
আর দূরে কতদূর লোয়ার কেসটি একটি হল?
>> তাই 65 97 থেকে কতগুলি পদক্ষেপ দূরে?
সুতরাং 97 বিয়োগ 65 32.
তাই মূলধন একটি 65.
আপনি যে 32 যোগ করুন, আপনি একটি ছোট হাতের অক্ষর পেতে.
আর, equivalently, যদি আপনি 32 বিয়োগ, আপনি মূলধন ফিরে পেতে ছাগু karigor.com বি একই
সামান্য খ, সামান্য গ বড় সি.
>> এই ফাঁক সমস্ত 32 সরাইয়া.
এখন, এই আমাদের অনুমতি মনে হবে মাইক্রোসফট ওয়ার্ড ভালো কিছু না,
বা Google ডক্স বৈশিষ্ট্য, যেখানে আপনি সবকিছু নির্বাচন করতে পারেন এবং তারপর বলে,
ছোট হাতের অক্ষর সব পরিবর্তন, বা উপরের ক্ষেত্রে সব পরিবর্তন,
অথবা শুধুমাত্র প্রথম শব্দ পরিবর্তন বড় হাতের অক্ষরে একটি বাক্য এর.
আমরা আসলে কিছু করতে পারেন নিজেদেরকে যে মত.
>> আমাকে এগিয়ে যান এবং একটি ফাইল সংরক্ষণ এখানে 0.c. পুঁজিতে বলা
আর এর এগিয়ে যান এবং একটি প্রোগ্রাম পিটান দিন যে ঠিক যে নিম্নরূপ করে.
সুতরাং CS50 লাইব্রেরি অন্তর্ভুক্ত.
আর মান ইনপুট / আউটপুট অন্তর্ভুক্ত.
>> আর আমি এই শীঘ্রই আসছে জানি.
তাই আমি এটা করা যাচ্ছে না সেখানে ইতিমধ্যে, string.h,
তাই আমি এক্সেস আছে স্টার্লিং ভালো জিনিস,
এবং তারপর প্রধান অকার্যকর int, যথারীতি.
এবং তারপর আমি এগিয়ে যেতে চলেছি এবং স্ট্রিং স্ট্রিং পেতে পায়,
শুধু ব্যবহারকারী থেকে একটি পংক্তি পেতে.
এবং তারপর আমি যাচ্ছি আমার সদ্বিবেচনা চেক না.
স্ট্রিং সমান নাল না হলে, তারপর এটা এগিয়ে যেতে নিরাপদ.
আর আমি কি করতে চাও?
আমি বারবার থেকে আমি 0 সমান যাচ্ছি, এবং n s এর স্ট্রিং দৈর্ঘ্য পর্যন্ত.
>> আমি তাই যতদিন এই কাজ করতে যাচ্ছি আমি এন চেয়ে কম হয়, এবং আমি প্লাস প্লাস.
এ পর্যন্ত, আমি সত্যিই ঠিক আছি আগে থেকে ধারণা ধার.
এবং এখন আমি একটি শাখা চালু করতে যাচ্ছি.
>> তাই শয়তান, যেখানে ফিরে মনে আমরা রাস্তা সেই কাঁটা ছিল,
এবং গত সপ্তাহে সি আমি যাচ্ছি এই বলে, যদি গুলি আই-তম অক্ষর
হয় তার চেয়ে অনেক বেশী বা যদি একটি অর্ধবৃত্ত সমান,
and-- ভূত আপনি আক্ষরিক would বলে, কিন্তু সি আপনি বলতে এম্পারসেন্ড,
ampersand-- এবং এর মধ্যে আই-তম অক্ষর কম বা কেস z- র নত সমান,
এর আকর্ষণীয় কিছু দিন.
চলুন শুরু করা যাক আসলে একটি প্রিন্ট আউট কোন সম্পর্কে newline সঙ্গে চরিত্র
স্ট্রিং মধ্যে চরিত্র, স্ট্রিং মধ্যে আই-তম অক্ষর.
>> কিন্তু আসুন এগিয়ে যান এবং এটা থেকে 32 বিয়োগ.
অন্যথায় যদি অক্ষর স্ট্রিং যে আমরা নজর রাখছি
সামান্য একটি মধ্যবর্তী নয় এবং সামান্য z- র, এগিয়ে যান
এবং শুধু তা অপরিবর্তিত মুদ্রিত.
তাই আমরা চালু করেছি এই বন্ধনী স্বরলিপি
আমাদের স্ট্রিং এ পেতে জন্য I- তম স্ট্রিং মধ্যে চরিত্র.
>> আমি ভালো কিছু শর্তসাপেক্ষ যুক্তিবিজ্ঞান জুড়েছি, গত সপ্তাহে সপ্তাহে এক, যেখানে মধ্যে ভূত
আমি শুধু আমার মৌলিক ব্যবহার করছি কি বোঝা
ফণা নীচে যাচ্ছে.
s এর I- তম চরিত্র অপেক্ষাকৃত বড় অথবা একটি সমান?
ভালো লেগেছে, এটা, 97, বা 98 হয় বা 99, এবং তাই ঘোষণা?
>> কিন্তু এটা আরো কম বা সমান ছোট হাতের z এর মান?
এবং তাই যদি, এই লাইন কি মানে?
14, এই সাজানোর পুরো ধারণা জীবাণু,
দ্বারা চিঠি পুঁজিতে কেবল এটা থেকে 32 বিয়োগ,
এই ক্ষেত্রে, কারণ আমি জানি, যে প্রতি চার্ট, কিভাবে আমার নম্বর প্রতিনিধিত্ব করা হয়.
সুতরাং আসুন এগিয়ে যান এবং এই চালানো যাক, 0.c পুঁজিতে পরে কম্পাইল করার প্রণালী,
এবং রান 0 পুঁজিতে.
>> এর মত কিছু টাইপ যাক সব ছোট হাতের মধ্যে, Zamyla লিখুন.
আর এখন আমরা সব বড় হাতের মধ্যে, Zamyla আছে.
এর সব ছোট হাতের মধ্যে রব এ লিখে দাও.
এর সব ছোট হাতের মধ্যে জেসন চেষ্টা করা যাক.
এবং আমরা পেয়ে রাখা বাধ্য মূলধন.
একটা ছোটখাট বাগ যে আমি ধরনের কহা নি.
লক্ষ্য করুন আমার নতুন প্রম্পট আপ শেষ হয় তাদের নাম হিসাবে একই লাইনে,
যা একটু নোংরা মতানুযায়ী.
>> তাই আমি এখানে যেতে চলেছি, এবং আসলে এই প্রোগ্রাম শেষে
একটি newline অক্ষর প্রিন্ট আউট.
এখানেই শেষ.
printf সঙ্গে, আপনি প্রয়োজন বোধ করেন না ভেরিয়েবল বা বিন্যাস কোডে পাস.
আপনি আক্ষরিক শুধু মুদ্রণ করতে পারেন একটি newline মত কিছু.
>> সুতরাং আসুন এগিয়ে যান এবং করা যাক 0 আবার পুঁজিতে, এটা পুন: প্রকাশ করা,, Zamyla.
আর এখন এটা একটু prettier এর.
এখন, আমার প্রম্পট নিজস্ব নতুন লাইন হয়.
সুতরাং যে সব জরিমানা এবং ভাল.
সুতরাং যে একটা ভাল উদাহরণ.
এমনকি আমি অগত্যা না হার্ড কোড 32 প্রয়োজন.
তুমি কি জান?
আমি কথাই বলতে পারি আমি কি না কি স্মরণ রেখো যা পার্থক্য.
>> কিন্তু আমি জানি, আমি যদি একটি ছোট হাতের অক্ষর আছে,
আমি মূলত বন্ধ বিয়োগ করতে চান যাই হোক না কেন দূরত্ব সামান্য মধ্যবর্তী সবকিছুর
একটি এবং বড় একটি কারণ যদি আমি অনুমান অন্যান্য অক্ষর সব একই,
যে কাজ করাতে হবে.
কিন্তু কি যে বদলে, আপনি কি জানেন?
এখনও অন্য উপায়.
>> তাহলে যে আমি যদি 1.c-- পুঁজিতে হচ্ছে একটি পৃথক ফাইলে সংরক্ষণ করা হবে.
এর পুঁজিতে 2.c না নিম্নরূপ দিন.
আমি সত্যিই এখানে এই পরিষ্কার করতে যাচ্ছি.
এবং পরিবর্তে এমনকি থাকার জানি বা নিম্ন স্তরের যত্নশীল
বাস্তবায়ন বিবরণ, আমি বদলে গেছি মাত্র একটি অক্ষর মুদ্রণ যাচ্ছে,
মূল্যউদ্ধৃতি উদ্ধতি, শতাংশ সি, এবং তারপর অন্য ফাংশন কল করে
বিদ্যমান যে একটি আর্গুমেন্ট যা চরিত্র, এই মত হল.
>> এটা সি সক্রিয় আউট, আছে অন্য ফাংশন কল
উপরের যা তার নামের প্রস্তাব একটি অক্ষর লাগে
এবং এটা তার উপরের কেস করে তোলে সমতুল্য, এবং তারপর এটি ফেরৎ
তাই যে printf আছে তা চলা করতে পারেন.
আর তাই এই কাজ করতে, যদিও, আমি এক অন্য ফাইল প্রবর্তন করা প্রয়োজন.
এটা দেখা যাচ্ছে আরেকটি ফাইল আছে আউট আপনি শুধুমাত্র বর্গ থেকে জানতে চাই,
অথবা একটি পাঠ্যবই, বা একটি অনলাইন রেফারেন্স, সি type.h. বলা
>> সুতরাং যদি আমি যে পর্যন্ত যোগ আমার হেডার মধ্যে ফাইল, এবং এখন পুনরায় কম্পাইল এই প্রোগ্রাম,
capitalize2 করা, লিখুন ./capitalize2.
এর সব, Zamyla টাইপ ছোট হাতের অক্ষর ব্যবহার, এখনও একই ভাবে কাজ করে.
কিন্তু আপনি কি জানেন?
এটা উপরের থেকে দেখা যাচ্ছে যে অন্য কিছু কার্যকারিতা রয়েছে.
>> আর আমাকে এই পরিচয় করিয়ে দিন এখানে আদেশ সাজানোর awkwardly
নামে, কিন্তু ম্যানুয়াল জন্য মানুষ.
এটা পরিনত হয় যে অধিকাংশ লিনাক্স কম্পিউটার, লিনাক্স অপারেটিং এখানে ব্যবহার করা হয় যেমন
সিস্টেম একটি কমান্ড আছে বলা মানুষের, যা বলে,
হেই, কম্পিউটার, আমাকে দিতে কম্পিউটার এর ম্যানুয়াল.
আপনি চান কি যে পুস্তিকায় সন্ধান?
>> আমি ফাংশন আপ দেখতে চাই উপরের ডেকে লিখুন.
এবং এটি একটি সামান্য রহস্যপূর্ণ মাঝে মাঝে পড়তে.
কিন্তু লক্ষ্য করা আমরা আছেন লিনাক্স প্রোগ্রামার এর ম্যানুয়াল.
এবং এটা সব লেখা.
এবং লক্ষ্য করা যে আছে এখানে আপ ফাংশনের নাম.
এটি সক্রিয় আউট এটি একটি পিসতুত ভাই বলা অর্ধবৃত্ত, যা তার বিপরীত কাজ করে.
আর সংক্ষিপ্তসার অধীন নোটিশ, এই ব্যবহার করতে man পৃষ্ঠা কাজ, তাই কথা বলতে,
আমাকে যে আমি কহন হয় গ type.h. অন্তর্ভুক্ত করা প্রয়োজন
আমি অনুশীলন থেকে জানতেন যে.
>> এখানে, এটা আমাকে দেখাচ্ছে দুই ফাংশনের জন্য এগুলির নমুনা,
যাতে আমি কখনও এই ব্যবহার করতে চান তাহলে আমি জানি যা তারা ইনপুট হিসাবে গ্রহণ করে,
এবং কি তারা আউটপুট হিসাবে ফিরে.
এবং তারপর যদি আমি পড়তে বর্ণনা, আমি দেখতে
আরো বিস্তারিতভাবে কি ফাংশন আছে.
কিন্তু আরো গুরুত্বপূর্ণ, যদি আমি, ফেরত মান অধীনে দেখুন
এটা বলছেন ফিরে মান রূপান্তরিত অক্ষর যে,
বা সি, মূল ইনপুট, যদি রূপান্তর সম্ভব ছিল না.
>> অন্য কথায়, উপরের চেষ্টা করবে বড় হাতের অক্ষরে একটি চিঠি রূপান্তর করতে.
আর যদি তাই হয়, তা ফিরে যাচ্ছে.
কিন্তু যদি কিছু reason-- জন্য না এটা করতে পারেন হয়ত এটা ইতিমধ্যে উপরের কেস,
হয়ত এটা একটি বিস্ময়বোধক বিন্দু বা অন্য কিছু punctuation--
এটা ঠিক যাচ্ছে মূল সি ফিরে,
যার মানে আমি আমার কোড করতে পারেন ভাল নিম্নরূপ পরিকল্পিত.
>> আমি সব প্রয়োজন হবে না এই কোড অভিশাপ লাইন.
লাইন আমি করেছি সব শুধু হাইলাইট করতে পারেন
মাত্র এক সহজ মধ্যে ধসে পড়ে যাবে লাইন, যা আপাততঃ printf, শতাংশ
উপরের এস বন্ধনী আমি আনু.
আর এই একটি হবে ভাল ডিজাইন এর উদাহরণ.
>> কেন 7 বা 8 লাইন বাস্তবায়ন কোডের, যাই হোক না কেন এটা আমি ঠিক ছিল
মুছে ফেলা যখন আপনি পরিবর্তে ঢলে পড়তে পারে যুক্তি ও সিদ্ধান্ত গ্রহণের সব
এক একক লাইন, 13 এখন, সেই একটি লাইব্রেরি উপর নির্ভর করে একটি ফাংশান
একটি ফাংশন যে সি সাথে আসে, কিন্তু যে কি আপনি এটি করতে চান ঠিক আছে.
এবং অকপটে, এমনকি যদি এটা সি সাথে আসা হয়নি,
আপনি এটা নিজেকে বাস্তবায়ন হতে পারে, যেমন আমরা দেখা করেছি, নেতিবাচক int- পেতে সঙ্গে
এবং ইতিবাচক কোন int গত সপ্তাহে পাশাপাশি পেতে.
>> এই কোড এখন অনেক বেশি পাঠযোগ্য.
এবং প্রকৃতপক্ষে, আমরা স্ক্রল আপ যদি, কত আরো কম্প্যাক্ট দেখুন
আমার প্রোগ্রামের এই সংস্করণ.
এটা একটা সামান্য উপরের ভারী এখন, এই সব রয়েছে.
কিন্তু যে ঠিক আছে, কারণ এখন আমি দাঁড়িয়ে আছি প্রোগ্রামারদের কাঁধে
আমার আগে.
আর কেহ ছিল যারা সত্যিই উপরের বাস্তবায়িত
আমাকে একটা উপকার করেনি অনেক মত কেহ বাস্তবায়িত স্টারলিং সত্যিই
আমার একটা উপকার কিছু সময় আগে করেনি.
আর তাই এখন আমরা একটি আছে ভাল ডিজাইন প্রোগ্রাম
যে সঠিক একই যুক্তি প্রয়োগ করা হয়.
>> স্টারলিং কথা বলছেন, দিন আমাকে এগিয়ে যান এবং এই কাজের জন্য.
আমাকে এগিয়ে যান এবং সংরক্ষণ করুন এই ফাইলটি stirling.c হিসাবে.
এবং এটি সক্রিয় আউট, আমরা ফিরে ছুলা পারেন এক অন্য স্তর চমত্কার সহজভাবে এখন.
আমি এগিয়ে এবং চাবুক যেতে যাচ্ছি প্রধান অন্য প্রোগ্রাম
এখানে যে কেবল পুনরায় কার্যে স্ট্রিং দৈর্ঘ্য নিম্নরূপ.
তাই এখানে কোড একটি লাইন যে আমাকে ব্যবহারকারী থেকে একটি পংক্তি পায়.
আমরা আবার এবং আবার এই ব্যবহার করতে থাকুন.
আমার নিজেকে একটি পরিবর্তনশীল নামক দিই টাইপ int যে একটি সংখ্যা সঞ্চয় এন.
>> এবং আমাকে এগিয়ে যান এবং নিম্নলিখিত যুক্তিবিজ্ঞান না.
গুলি মধ্যে n- তম চরিত্র যদিও সমান নয় ব্যাকস্ল্যাশ 0, এগিয়ে যান
এবং n বাড়ায়.
এবং তারপর printf শতাংশ আমি এন প্রিন্ট আউট.
আমি যে এই প্রোগ্রাম এখানে দাবি, স্ট্রিং দৈর্ঘ্য কলিং ছাড়া,
একটি স্ট্রিং এর দৈর্ঘ্য পরিসংখ্যান আউট.
>> আর যাদু গোটাটাই লাইন 8 encapsulated
এখানে কি নতুন সিনট্যাক্স মত দেখায় সঙ্গে, এই ব্যাকস্ল্যাশ 0 একক উদ্ধৃতি.
কিন্তু কেন এমন হল?
আচ্ছা, কি বিবেচনা করা হয়েছে এই সব সময় চলছে.
>> এবং একটি সরাইয়া আগে আমি ভুলে যাই, বুঝতে হিসাবে খুব, যে ব্যক্তি পৃষ্ঠাগুলি ছাড়াও
যে একটি টিপিক্যাল সঙ্গে আসা এবং CS50 আইডিই মত লিনাক্স সিস্টেম,
বুঝতে পারি যে আমরা, অবশ্যই এর কর্মী, এছাড়াও আছে
একটি ওয়েবসাইট সংস্করণ তৈরি এই একই ধারণা নামক
reference.cs50.net, যা ঐ একই ব্যক্তি পেজের সব,
যে একই সব ডকুমেন্টেশন, সেইসাথে
উপরের যে দেয় একটি সামান্য বাক্স আপনি মোটামুটি সব রূপান্তর করতে
কম আরামদায়ক মধ্যে রহস্যময় ভাষা মোড, যেখানে আমরা, শিক্ষণ কর্মী,
মাধ্যমে সর্বস্বান্ত এবং প্রক্রিয়া সহজ করার চেষ্টা করেছি কিছু রাখার ভাষা কিছু
ধারণা না নিবদ্ধ, এবং পরিভাষা কিছু.
তাই মনে রাখা, reference.cs50.net অন্য সম্পদ পাশাপাশি.
>> কিন্তু কেন স্ট্রিং দৈর্ঘ্য কাজ করে উপায় আমি আগে একটি মুহূর্ত প্রস্তাবিত?
এখানে, Zamyla নাম আবার.
আর এখানে, Zamyla এর নাম , এ boxed হিসাবে আমি করছেন রাখা,
এটা হচ্ছে একটা ছবি অঙ্কন করা, সত্যিই, মাত্র অক্ষরের একটি ক্রম.
কিন্তু, Zamyla অস্তিত্ব নেই একটি প্রোগ্রাম একলা.
>> যখন আপনি লিখুন এবং একটি প্রোগ্রাম চালানো, আপনি আপনার ম্যাক বা আপনার পিসি ব্যবহার করছেন
মেমরি, অথবা RAM- র হিসাবে, তাই কথা বলতে.
এবং আপনি মনে করতে পারেন থাকার হিসাবে আপনার কম্পিউটার
মেমরি গিগাবাইট আজকাল প্রচুর.
এবং একটি কোঁচ বিলিয়ান মানে, তাই বাইট বিলিয়ান.
>> কিন্তু এর সময় গুটিয়ে দেওয়া.
এবং যে আমরা ব্যবহার করছি অনুমান করা সত্যিই একটি পুরাতন কম্পিউটার যে
ওনলি মেমোরি 32 বাইট আছে.
আমি পারতাম, আমার কম্পিউটারের পর্দায়, কেবল এই আউট আঁকা নিম্নরূপ.
>> আমি শুধু বলতে পারে যে আমার কম্পিউটার এই মেমরি সব আছে.
আর এই একটি মেমরি স্টিক মত, যদি আপনি শেষ সময় থেকে আমাদের ছবি প্রত্যাহার.
আর আমি যদি শুধু বিভক্ত পর্যাপ্ত সময়ের মধ্যে এই,
আমি দাবী আমি 32 বাইট আছে পর্দায় মেমরি.
>> শুধুমাত্র এখন বাস্তবে, আমি করতে পারেন এখানে এই পর্দায় এতদূর আঁকা.
তাই আমি এগিয়ে যেতে চলেছি এবং শুধু কনভেনশন দ্বারা,
একটি যেমন আমার কম্পিউটার এর মেমরি আঁকা গ্রিড, না, ঠিক যেমন এক সরল রেখা.
বিশেষ করে, আমি এখন যে দাবি এই গ্রিড, এই 8 4 গ্রিড,
শুধু সব 32 বাইট প্রতিনিধিত্ব করে আমার ম্যাক পাওয়া মেমরি,
অথবা আমার পিসি পাওয়া যায়.
তাঁরা মোড়কে করছি উপর থেকে দুই লাইন, শুধু
কারণ এটা পর্দায় দেখাচ্ছে.
কিন্তু এই প্রথম বাইট.
এই দ্বিতীয় বাইট.
এই তৃতীয় বাইট.
>> আর এই 32nd বাইট.
অথবা, আমরা একটি কম্পিউটার এর মত মনে হয় বিজ্ঞানী, এই বাইট 0, 1, 2, 3, 31.
তাই আপনি যদি 31 0 আছে, যদি আপনি 0 থেকে গণনা শুরু.
>> তাই আপনি যদি আমরা একটি প্রোগ্রাম ব্যবহার যে কল স্ট্রিং পেতে,
এবং আমরা মানুষের কাছ থেকে একটি পংক্তি পেতে মত আমি, Zamyla বলা হয়নি, জেড-এ-এম-ওয়াই-এল-এ,
কিভাবে এ দুনিয়া আছে কম্পিউটার সম্পর্কে অবগত থাকুন যা বাইট,
যা মেমরি খণ্ড, যা স্ট্রিং জন্যে?
অন্য কথায়, যদি আমরা এগিয়ে যেতে কম্পিউটারের মধ্যে অন্য একটি নাম টাইপ করুন,
এই Andi, মত, কলিং স্ট্রিং একটি দ্বিতীয় সময় পেতে,
একটি-এন-ডি-ই শেষ পর্যন্ত হয়েছে কম্পিউটার এর মেমরি হিসাবে ভাল.
কিন্তু কিভাবে?
>> ওয়েল, দেখা যাচ্ছে যে নীচে ফণা, কি সি যখন পংক্তি সংরক্ষণ করে
যে মানুষের ধরনের, বা যে কিছু অন্যান্য উৎস থেকে আসা, এটা
সঙ্গে তাদের শেষ delineates একটি বিশেষ চরিত্র ব্যাকস্ল্যাশ
0, যা শুধু একটি বিশেষ উপায় একটি সারিতে 80 বিট বলছে.
>> সুতরাং ছাগু karigor.com এই সংখ্যা 97 রিকল হয়.
তাই 8 বিট কিছু প্যাটার্ন দশমিক সংখ্যা 97 প্রতিনিধিত্ব করে.
এই ব্যাকস্ল্যাশ 0 আক্ষরিক সংখ্যা হল 0, ওরফে nul, এন-ইউ-এল, আগে অসদৃশ,
এন ইউ-এল-এল, যা আমরা স্বপ্ন.
কিন্তু এখন জন্য, শুধু এই যে জানি ব্যাকস্ল্যাশ 0 পরপর মাত্র 80 বিট.
>> এবং এটা ঠিক যে এই লাইন বালি যে বাম খারাপ কিছু বলে
এক পংক্তি, অথবা একটি ডেটা প্রকার জন্যে.
আর ডানদিকে কিছু অন্য কিছু করার জন্যে.
Andi, নাম, এদিকে, যা শুধু চাক্ষুষরূপে
অন্যান্য লাইন মোড়ানো ঘটবে, কিন্তু যে শুধু একটি নান্দনিক বিস্তারিত আছে,
একইভাবে nul পর্যবসিত হয়.
>> এটা একটি-এন-ডি-আমি অক্ষরের একটি পংক্তি, প্লাস একটি পঞ্চম গোপন চরিত্র,
সব 0 বিট, যে শুধু demarcates Andi, এর নামের শেষে পাশাপাশি.
আর স্ট্রিং তৃতীয়বার পেতে যদি আমরা কল কম্পিউটারে মত একটি পংক্তি পেতে
মারিয়া, এম-এ-আর-আই-এ, একভাবে মারিয়ার হয় নাম nul ব্যাকস্ল্যাশ 0 দিয়ে শেষ করা.
>> এই মৌলিকভাবে ভিন্ন থেকে কিভাবে একটি কম্পিউটার সাধারণত would
একটি পূর্ণসংখ্যা, অথবা একটি float, অথবা অন্য সংরক্ষণ করে এখনও ধরনের তথ্য, কারণ রিকল,
একটি পূর্ণসংখ্যা সাধারণত 32 বিট, বা 4 বাইট, হয়তো বা এমনকি 64 বিট,
বা আট বাইট.
কিন্তু একটি কম্পিউটার অনেক আদিম একটি প্রোগ্রামিং ভাষা
একটি নির্দিষ্ট নম্বর আছে hood-- নীচে বাইট
হয়তো 1, হয়তো 2, হয়তো 4, হয়তো 8.
>> কিন্তু স্ট্রিং, নকশা দ্বারা, একটি আছে অক্ষর গতিশীল সংখ্যা.
আপনি আগাম জানি না, যতক্ষণ না জেড-এ-এম-ওয়াই-এল-এ মানব ধরনের,
বা M-ক-আর-আই-এ, অথবা A-এন-ডি-আমি. তুমি জানো না কতবার ব্যবহারকারী আঘাত যাচ্ছে
কীবোর্ড.
অতএব, আপনি কিভাবে জানি না আগাম অনেক অক্ষর
আপনি প্রয়োজন চলুন.
>> আর তাই সি শুধু ধরনের একটি মত ছেড়ে ফণা নীচে গোপন ব্রেডক্রম্বে
পংক্তির শেষে.
মেমরির মধ্যে Z-একটি-এম-ওয়াই-এল-এ সংরক্ষণকারী পর এটা শুধু সমতুল্য রাখে
একটি যুগের.
একটি বাক্য শেষে, এটা 80 বিট রাখে, তাই
মনে রাখা যেখানে , Zamyla শুরু হয় এবং শেষ হয়.
>> তাই সংযোগ কি, তারপর, এই প্রোগ্রামের?
এখানে এই প্রোগ্রামটি, স্টারলিং, কেবল একটি প্রক্রিয়া
একটি স্ট্রিং পেয়ে জন্য ব্যবহারকারী থেকে, লাইন 6.
লাইন 7, আমি একটি ভেরিয়েবল ডিক্লেয়ার এন ডেকে এটা 0 সমান সেট.
>> এবং তারপর লাইন 8, কেবল আমি জিজ্ঞাসা প্রশ্ন, যখন n তম চরিত্র আছে
সমান নয় সব 0 bits-- অন্য কথায়, না
সমান এই বিশেষ চরিত্র, ব্যাকস্ল্যাশ 0, যা
শুধু যে বিশেষ nul চরিত্র ছিল এগিয়ে যান এবং শুধু এন বাড়ায়.
>> আর এটা করছেন রাখা, এবং রাখা এরকম, এবং তা করছেন রাখা.
এমনকি যদিও গত আমরা আমি ব্যবহার করেছি,
এটা পুরোপুরি সূক্ষ্ম শব্দার্থগতভাবে n ব্যবহার করতে,
আপনি শুধু চেষ্টা করছি ইচ্ছাকৃতভাবে এই সময় গণনা,
এবং শুধু এটি এন কল করতে চান.
সুতরাং এই মাত্র প্রশ্ন জিজ্ঞাসা রাখে, গুলি সব 0 সেঃ n- তম চরিত্র?
যদি তা না হয়, পরবর্তী বর্ণন চেহারা, পাশের চেহারা পরবর্তী চেহারা,
পরবর্তী চেহারা.
>> কিন্তু যত তাড়াতাড়ি আপনি ব্যাকস্ল্যাশ 0 দেখতে যেমন, 11-- মাধ্যমে এই লুপ লাইন 9 স্টপ.
আপনি যখন লুপ আউট বিরতি, যে পরিবর্তনশীল n এর ভিতরে যাব
সমস্ত একটি মোট গণনা আপনি স্ট্রিং দেখেছি অক্ষর,
যার ফলে এটি প্রিন্ট আউট.
তাই আসুন এই চেষ্টা.
>> আমাকে এগিয়ে যান এবং ছাড়া, স্টারলিং ফাংশন ব্যবহার করে,
কিন্তু শুধু আমার নিজের গড়ে ওঠা সংস্করণ ব্যবহার এখানে স্টারলিং ডেকে আমাকে এগিয়ে যান
এবং রান স্টারলিং, কিছু টাইপ , Zamyla, যা আমি অগ্রিম জানা মত
ছয় অক্ষর.
চলুন শুরু করা যাক এটি কাজ করে দেখুন.
প্রকৃতপক্ষে, এটা ছয় নেই.
এর রব সঙ্গে চেষ্টা করা যাক, তিন অক্ষর, তিনটি অক্ষর পাশাপাশি, এবং তাই ঘোষণা.
তাই যে সমস্ত যে যাচ্ছে ফণা নীচে.
আর সংযোগ লক্ষ্য, তারপর, প্রথম সপ্তাহে
ক্লাসের, যেখানে আমরা স্বপ্ন বিমূর্ততা মত কিছু,
যা শুধু ধারণা এই প্রলেপের হয়, অথবা জটিলতা, মৌলিক নীতির উপরে.
এখানে, আমরা সাজানোর বেরাচ্ছেন স্টারলিং এর ফণা নীচে,
তাই কথা বলতে, জিনিসটা, এটা কিভাবে বাস্তবায়িত হবে?
>> আর আমরা নিজেদের পুনরায় বাস্তবায়ন করতে পারে.
কিন্তু আমরা কখনও আবার চলুন পুনরায় বাস্তবায়ন স্টারলিং.
আমরা শুধু চলুন অনুক্রমে স্টারলিং ব্যবহার
আসলে কিছু স্ট্রিং দৈর্ঘ্য পেতে.
>> কিন্তু সেখানে কোন জাদু ফণা নীচে.
যে নীচে যদি তোমরা জানতে ফণা, একটি স্ট্রিং
শুধু অক্ষরের একটি ক্রম.
এবং অক্ষরের ক্রমের সব সংখ্যার সুরাহা করা যেতে পারে
বন্ধনী 0, বন্ধনী সঙ্গে 1, বন্ধনী 2, এবং আপনি
জানি যে একটি পংক্তির শেষে একটি হল বিশেষ অক্ষর, আপনি চিন্তা করতে পারেন
কিভাবে একটি সবচেয়ে কিছু করতে প্রোগ্রাম, সব কারণ এটি boils নিচে
পড়া এবং মেমরি লেখা হয়.
অর্থাৎ পরিবর্তন এবং খুঁজছি মেমরি, বা কিছু চলন্ত
স্মৃতিতে প্রায়, মুদ্রণ কিছু পর্দা, এবং তাই ঘোষণা উপর.
>> তাই আসুন এখন এই নতুন ব্যবহার আসলে স্ট্রিং বোঝা
ফণা নীচে হয়, এবং ফিরে ছুলা এক অন্য স্তর
যে এখন পর্যন্ত আমরা করেছি পুরাপুরি উপেক্ষা করা হয়েছে.
বিশেষ করে, যে কোন সময় যে আমরা একটি প্রোগ্রাম প্রয়োগ করেছি,
আমরা কোড এই লাইন ছিল করেছি উপরের অংশে প্রধান প্রকাশক.
এবং আমরা int প্রধান অকার্যকর উল্লেখ করেছি.
>> এবং প্রথম বন্ধনী ভিতরে যে শূন্যতা এই সব সময় বলছে হয়েছে যে প্রধান
নিজেই কোনো আর্গুমেন্ট গ্রহণ করা হয় না.
কোন ইনপুট প্রধান যে ব্যবহারকারী থেকে পেতে যাচ্ছেন
অন্য কিছু থেকে আসা হয়েছে প্রক্রিয়া, মত কোন int পেতে,
অথবা ভাসা পেতে, বা স্ট্রিং পেতে, বা অন্য কিছু ফাংশন.
কিন্তু দেখা যাচ্ছে যে যখন আপনি একটি প্রোগ্রাম লিখতে,
আপনি আসলে নির্দিষ্ট করতে পারেন যে এই প্রোগ্রাম পাবে
মানুষের কাছ থেকে ইনপুট নিতে কমান্ড লাইন নিজেই এ.
>> অন্য কথায়, যদিও আমরা এ পর্যন্ত শুধু হ্যালো চলমান হয়েছে হ্যালো আছে
বা অনুরূপ প্রোগ্রাম, সব অন্যান্য প্রোগ্রাম যে আমরা ব্যবহার করছি,
যে আমরা নিজেদেরকে লেখেননি, আছে গ্রহণ করা হয়েছে, মনে হয়,
কমান্ড লাইন arguments-- মেক ভালো জিনিস.
আপনি মেক ভালো কিছু বলতে, এবং তারপর একটি দ্বিতীয় শব্দ.
বা ঝনঝন, আপনি ঝনঝন বলে, এবং তারপর একটি দ্বিতীয় শব্দ, একটি ফাইলের নাম.
>> অথবা এমনকি আরএম বা সিপি, যেমন আপনি প্রতাপ দেখা বা ইতিমধ্যে ব্যবহার করেছেন
অপসারণ বা ফাইল কপি করতে.
ঐ সব তথাকথিত নিতে কমান্ড লাইন arguments--
টার্মিনাল প্রম্পটে অতিরিক্ত শব্দ.
কিন্তু এখন পর্যন্ত, আমরা নিজেদেরকে না ছিল
থেকে ইনপুট গ্রহণ এই বিলাসিতা ব্যবহারকারী যখন সে আসলে চালায়
প্রোগ্রাম নিজেই কমান্ড লাইনে.
>> কিন্তু আমরা যে পুনরায় ঘোষণা করতে পারি না প্রধান এগিয়ে চলন্ত, জমিদারি হিসেবে
বন্ধনীর মধ্যে বাতিলযোগ্য, কিন্তু এই দুটি আর্গুমেন্ট
প্রথম একটি পূর্ণসংখ্যা পরিবর্তে, এবং দ্বিতীয় কিছু
নতুন, এমন কিছু বিষয় যা আমরা কল চলুন একটি অ্যারের, আত্মা অনুরূপ কিছু
কি আমরা একটি তালিকা হিসাবে ভূত দেখেছি, কিন্তু স্ট্রিং একটি অ্যারে, আমরা শীঘ্রই দেখতে পাবেন যেমন.
কিন্তু আসুন এই দেখুন উদাহরণের পথ, আমরা আগে
পার্থক্য যে ঠিক কি মানে.
>> সুতরাং যদি আমি CS50 আইডিই ঢোকা এখানে, আমি এগিয়ে গেছেন
এবং নামক একটি ফাইলে ঘোষণা নিম্নলিখিত টেমপ্লেট argv0.c.
এবং শুধুমাত্র জিনিস লক্ষ্য এখন পর্যন্ত আলাদা
সত্য যে, আমি int অকার্যকর পরিবর্তন করেছি argc আছে স্ট্রিং খোলা বন্ধনী argv, বন্ধ
বন্ধনী.
এবং এখন জন্য লক্ষ্য, সেখানে ঐ বন্ধনীর ভিতরে কিছুই.
>> সেখানে কোন নম্বর.
আর যত প্রকার আমি, অথবা এন, বা অন্য কোন চিঠি.
আমি শুধু ব্যবহার করছি এখন জন্য বর্গাকার বন্ধনী,
কারণে আমরা আসবো ফিরে মাত্র কয়েক মিনিটের মধ্যে থেকে.
>> আর এখন আমি কি করতে যাচ্ছি এই হল.
argc সমান যদি সমান 2 শনাক্ত এবং পুনরাহ্বান যে সমান সমান
সমতা অপারেটর তুলনা হয় বাম ও সমতার জন্য সঠিক.
এটা নিয়োগ না অপারেটর, যা
একক সমান চিহ্ন, যা কপি মানে ডান দিক থেকে কিছু মান বামে.
>> argc হয় সমান সমান 2 তাহলে, আমি চাই বলে, printf হ্যালো, শতকরায়, নতুন লাইন,
এবং তারপর in-- চলা এবং এখানে নতুন কোন খবর আছে trick-- argv হয় বন্ধনী 1, কারণে
যে আমরা একটি মুহূর্ত ফিরে আসবো.
অন্যথায় যদি argc হয় না সমান 2, আপনি জানেন কি?
এর মাত্র এগিয়ে যান এবং স্বাভাবিক, প্রিন্ট, আউট হ্যালো কোন প্রতিকল্পন সঙ্গে বিশ্বের.
>> সুতরাং এটা মনে হবে যে যদি argc, যা যুক্তি গণনা ঘোরা, 2 সমান,
আমি প্রিন্ট আউট করা যাচ্ছে না হ্যালো কিছু বা অন্যান্য.
অন্যথা, ডিফল্টরূপে, আমি আছি হ্যালো প্রিন্ট করতে বিশ্বের যাচ্ছে.
তাহলে এর অর্থ কি?
>> আচ্ছা, আমাকে এগিয়ে যান এবং সংরক্ষণ করতে দিন এই ফাইল, এবং তারপর argv0 করি,
এবং তারপর ./argv0, লিখুন.
আর এটা হ্যালো দুনিয়া বলেছেন.
এখন, কেন এমন হল?
>> ওয়েল, এটা যে কোন সময় সক্রিয় আউট আপনি কমান্ড লাইন থেকে একটি প্রোগ্রাম চালানো,
আপনি পূরণ হয় আমরা কি করব সাধারণভাবে একটি আর্গুমেন্ট ভেক্টর কল.
অন্য কথায়, স্বয়ংক্রিয়ভাবে কম্পিউটার, অপারেটিং সিস্টেম,
আপনার প্রোগ্রামে সম্ভবত কিছু হাতে যাচ্ছে নিজেই সব শব্দের একটি তালিকা
মানুষের এ টাইপ করে প্রম্পট, যদি আপনি
প্রোগ্রামার কি করতে চান যে তথ্য দিয়ে কিছু.
এবং এই ক্ষেত্রে, শুধুমাত্র শব্দ আমি প্রম্পটে টাইপ করেছি ./argv0 হয়.
>> তাই আর্গুমেন্টের সংখ্যা যে আমার প্রোগ্রাম গৃহীত হচ্ছে মাত্র এক.
অন্য কথায়, যুক্তি গণনা, অন্যথায়-argc নামে পরিচিত
এখানে একটি পূর্ণসংখ্যা হিসাবে, মাত্র এক.
এক, অবশ্যই, সমান দুই না.
তাই এই কি ছাপে, হ্যালো দুনিয়া.
>> কিন্তু আমাকে এই কোথাও অবলম্বন করুক.
আমাকে বলতে দাও, argv0.
তারপর কিভাবে মারিয়া সম্পর্কে?
এবং তারপর এন্টার চাপুন.
>> আর তা লক্ষ্য জাদুর এখানে ঘটবে.
এখন, পরিবর্তে হ্যালো জগতের, আমি আছে এই প্রোগ্রামের আচরণ পরিবর্তন
ইনপুট পেতে থেকে গ্রহণ না করে স্ট্রিং বা অন্য কিছু ফাংশন,
কিন্তু থেকে, দৃশ্যতঃ আমার কমান্ড নিজেই, কি আমি মূলত টাইপ.
এবং আমি আবার এই গেমটি খেলতে পারেন এটা Stelios পরিবর্তন, উদাহরণস্বরূপ.
>> এবং এখন আমি অন্য একটি নাম এখনও দেখতে.
আর এখানে আমি Andi, বলতে পারে.
আর আমি, Zamyla বলতে পারে.
আর আমরা এই খেলা সারাদিন খেলতে পারেন, শুধু বিভিন্ন মান প্লাগিং,
এতক্ষণ আমি ঠিক প্রদান যেমন প্রম্পটের মধ্যে দুটি শব্দ,
যেমন যে argc, আমার যুক্তি গণনা, 2.
>> আমি কি দেখ না যে নাম প্লাগ printf,, এই অবস্থায় এখানে প্রতি?
সুতরাং আমরা এখন আছে বলে মনে হচ্ছে ভাবপূর্ণ ক্ষমতা
আরেকটি প্রক্রিয়া থেকে ইনপুট গ্রহণ, তথাকথিত কমান্ড লাইন থেকে,
বরং অপেক্ষা করতে থাকার চেয়ে যতক্ষন পর্যন্ত ব্যবহারকারী প্রোগ্রাম চালায়,
এবং তারপর তাকে অনুরোধ জানানো পেতে স্ট্রিং মত কিছু ব্যবহার.
>> তাই এই কি?
Argc, আবার, শুধু একটি পূর্ণসংখ্যা, words-- arguments-- সংখ্যা
যে সময়ে ব্যবহারকারী প্রম্পট, টার্মিনাল উইন্ডোর এ,
প্রোগ্রাম এর নাম সহ.
সুতরাং আমাদের ./argv0, কার্যকরভাবে, প্রোগ্রাম এর নাম,
বা কিভাবে আমি প্রোগ্রাম চালানো.
>> যে একটি শব্দ হিসাবে গন্য হয়.
সুতরাং argc 1 হবে.
কিন্তু যখন আমি Stelios লিখুন, অথবা Andi, অথবা, Zamyla, বা মারিয়া,
এর মানে হল যে যুক্তি গণনা দুটি.
আর তাই এখন সেখানে পাস দুটি শব্দ.
>> এবং খেয়াল করুন, আমরা এই যুক্তিবিজ্ঞান চালিয়ে যেতে পারেন.
তাহলে আমি আসলে বলতে Zamyla চ্যান মত কিছু,
একটি পূর্ণ নাম, যার ফলে ক্ষণস্থায়ী মোট তিনটি আর্গুমেন্ট,
এখন এটি ডিফল্ট আবার বলেছেন, কারণ, অবশ্যই, 3 সমান 2 আছে.
>> আর তাই এই ভাবে, আমি কি argv হয় এই নতুন যুক্তি মাধ্যমে এক্সেস
যে আমরা টেকনিক্যালি পারা আমরা চাই কিছু কল.
কিন্তু কনভেনশন দ্বারা, এটা argv হয় এবং argc, যথাক্রমে.
Argv, যুক্তি ভেক্টর, দয়ালু একটি প্রোগ্রামিং জন্য একটি প্রতিশব্দ এর
সি বৈশিষ্ট্য একটি অ্যারে বলা.
>> একটি অ্যারের অনুরূপ মান একটি তালিকা দেয়া হল ফিরে, ফিরে, ফিরে ফিরে যাও.
অন্য কথায়, যদি এক অধিকার এখানে রয়েছে উপস্থিত RAM- র, আগামী এক ডান পাশে হয়,
এবং ডান পাশে.
তারা সব জায়গায় বেশি নও.
আর যে পরেরটির দৃশ্যকল্প, যেখানে কিছু সব স্মৃতিতে রয়েছে জায়গা,
আসলে একটি শক্তিশালী বৈশিষ্ট্য হতে পারে.
কিন্তু আমরা যখন আমরা যে ফিরে আসবো কল্পনাকারী ডাটা স্ট্রাকচার সম্পর্কে কথা বলা.
এখন জন্য, একটি অ্যারের শুধু একটি নয় সংলগ্ন মেমরি খণ্ড,
প্রতিটি যার উপাদান ফিরে, ব্যাক, ব্যাক, ব্যাক,
এবং সাধারণত একই ধরনের.
>> তাই আপনি সম্পর্কে চিন্তা যদি একটি থেকে, মুহূর্ত আগে, একটি স্ট্রিং কি?
ওয়েল, একটি পংক্তি,, Zamyla মত, জেড-এ-এম-ওয়াই-এল-এ, টেকনিক্যালি, হয়,
শুধু একটি অ্যারে.
এটা অক্ষরের একটি অ্যারে.
>> আর তাই যদি আমরা সত্যিই এই, আঁকা হিসাবে আমি , মেমরি একটি খণ্ড যেমন, নি আগে
এটা যে এই প্রতিটি সক্রিয় আউট অক্ষর একটি বাইট পর্যন্ত সময় লাগে.
এবং তারপর যে বিশেষ প্রহরী চরিত্র, ব্যাকস্ল্যাশ 0,
বা সব আট 0 বিট, যে যে স্ট্রিং এর শেষে demarcates.
সুতরাং একটি পংক্তি, এটি সক্রিয় আউট, উদ্ধতি স্ট্রিং উদ্ধৃত করছি,
শুধু chara-- একটি অ্যারে গৃহস্থালির কাজ একটি প্রকৃত ডাটা টাইপ হচ্ছে.
>> এবং এখন argv হয়, meanwhile-- এর পিছনে প্রোগ্রাম যাই.
Argv, যদিও আমরা শব্দ দেখতে স্ট্রিং এখানে, একটি স্ট্রিং নিজেই নয়.
Argv, যুক্তি ভেক্টর, স্ট্রিং একটি অ্যারে.
>> আপনি একটি অ্যারের থাকতে পারে তাই ঠিক যেমন অক্ষর, আপনি উচ্চ স্তরের হতে পারে,
strings-- একটি অ্যারের তাই, উদাহরণস্বরূপ, যখন আমি আগে একটি মুহূর্ত টাইপ ./argv0
argv0, স্থান জেড এ-এম-ওয়াই-এল-এ, আমি দাবি করে argv হয়, এটিকে ./argv0 মধ্যে দুটি পংক্তি ছিল
এবং Z-একটি-এম-ওয়াই-এল-এ. মধ্যে অন্য কথায়,-argc 2 ছিল.
কেন হল?
>> আচ্ছা, কার্যকরীভাবে, কী হচ্ছে হয় এই স্ট্রিং প্রতিটি যে
অবশ্য, অক্ষরের একটি অ্যারে আগের মতোই, যার প্রতিটি অক্ষর
এক বাইট পর্যন্ত সময় লাগে.
আর প্রকৃত 0 গুলান না 0 সঙ্গে প্রোগ্রাম এর নামে,
যা সব 80 বিটের মানে.
আর, Zamyla এদিকে, এখনও এছাড়াও অক্ষরের একটি অ্যারের.
>> দিনের শেষে সুতরাং, এটা সত্যিই ফণা নীচে ভালো দেখায়.
কিন্তু কিভাবে প্রধান argv, প্রকৃতি দ্বারা কাজ, আমাকে এই সব মোড়ানো করতে পারবেন
, যদি আপনি হবে, একটি বড় অ্যারে উঠে যে, আমরা যদি সামান্য বেশি সহজতর করা
ছবি মত করে না দেখায় কি বেশ সেখানে আকার পরিবর্তন করার জন্য এটা আঁকা,
এই অ্যারের, প্রথম শুধুমাত্র আকার 2 হয় উপাদান যা একটি স্ট্রিং রয়েছে,
দ্বিতীয় উপাদান যা একটি স্ট্রিং রয়েছে.
আর এর ফলে, আপনি যদি ধরনের প্রতিটি জুম
যারা স্ট্রিং, এর কি আপনি ফণা নীচে দেখুন
প্রতিটি স্ট্রিং শুধু নয় অক্ষরের একটি অ্যারের.
>> এখন, শুধু স্ট্রিং সঙ্গে যেমন, আমরা প্রবেশাধিকার পেতে সক্ষম হয়েছি
একটি স্ট্রিং I- তম অক্ষরে যে বর্গাকার বন্ধনী নোটেশন ব্যবহার করে.
একইভাবে, অ্যারে সাধারণভাবে, আমরা করতে পারেন
বর্গাকার বন্ধনী স্বরলিপি ব্যবহার পেতে একটি অ্যারের মধ্যে স্ট্রিং কোন নম্বরে?
উদাহরণস্বরূপ, আমাকে এগিয়ে যান এবং এই কাজের জন্য.
>> আমাকে এগিয়ে যান এবং argv1.c তৈরি করা যাক, যা একটু ভিন্ন এই সময়.
পরিবর্তে argc2 জন্য চেকিং, আমি পরিবর্তে এই কাজ করতে যাচ্ছি.
int- এ আমি 0 পেতে জন্য, আমি কম argc আছে চেয়ে, আমি প্লাস প্লাস,
এবং তারপর এই ভেতরে প্রিন্ট আউট, শতাংশ গুলি, নতুন লাইন, এবং তারপর
argv হয় বন্ধনী আমি.
>> অন্য কথায়, তাই আমি সঙ্গে আচরণ করছি না মুহূর্তে স্বতন্ত্র অক্ষর.
Argv, যেমন এই খালি বর্গ দ্বারা উহ্য নাম argv হয় ডানদিকে ধনুর্বন্ধনী,
argv হয় স্ট্রিং একটি অ্যারে মানে.
এবং argc ঠিক কোন int হয়.
>> এখানে এই লাইন, 6, হয় সেট বলছে আমি 0 সমান.
আপ সব পথ গণনা, কিন্তু-argc সহ না.
এবং তারপর প্রতিটি পুনরাবৃত্তির উপর, একটি স্ট্রিং প্রিন্ট আউট.
কি স্ট্রিং?
>> argv মধ্যে I- তম পংক্তি.
সুতরাং যেহেতু সামনে ছিলাম বর্গাকার বন্ধনী ব্যবহার
স্বরলিপি ith এ পেতে একটি স্ট্রিং অক্ষর, এখন
আমি বর্গাকার বন্ধনী স্বরলিপি ব্যবহার করছি একটি অ্যারের মধ্যে ith স্ট্রিং এ পেতে.
সুতরাং এটি একটি স্তর ধরনের উপরে, ধারণার.
>> তাই কি এই সম্পর্কে ঝরঝরে এখন প্রোগ্রাম, যদি আমি argv1 কম্পাইল,
এবং তারপর ./argv1 না, এবং তারপর টাইপ করুন foo বিন্যাস বার Baz ভালো কিছু,
যা তিন ডিফল্ট শব্দের যে একটি হয় কম্পিউটার বিজ্ঞানী কোনো সময় জন্য ছুঁয়েছে
সে কিছু স্থানধারক শব্দ দরকার, এবং Enter আঘাত, এই কথাগুলোর প্রতি,
প্রোগ্রাম এর নাম সহ যা প্রথম অবস্থানে argv মধ্যে হয়,
শেষ পর্যন্ত একটি সময়ে এক ছাপা হচ্ছে.
আর যদি আমি এই পরিবর্তন, এবং আমি বলতে argv1 Zamyla চ্যান মত কিছু,
আমরা ঐ সব তিনটি পেতে শব্দ, যা argv0 হয়,
argv1, argv2, এই কারণ কেস-argc, গণনা, 3.
>> কিন্তু কি ঝরঝরে যদি তোমরা বুঝতে পার হয় যে argv, শুধু স্ট্রিং একটি অ্যারে
এবং আপনি যে একটি স্ট্রিং বুঝতে অক্ষরের একটি অ্যারে,
আমরা আসলে এই ধরনের ব্যবহার করতে পারেন বর্গাকার বন্ধনী স্বরলিপি একাধিক বার
একটি স্ট্রিং চয়ন, এবং তারপর নির্বাচন স্ট্রিং মধ্যে একটি অক্ষর,
অনুসরণ গভীর হিসাবে ডাইভিং.
এই উদাহরণে, আমাকে যেতে দাও এগিয়ে এবং এই argv2.c কল.
আর এই উদাহরণে, আমাকে এগিয়ে যান এবং int আমি 0 পেতে জন্য নিম্নলিখিত কাজ,
আমি-argc চেয়ে কম হয়, আমি প্লাস প্লাস, ঠিক আগের মত.
তাই অন্য words-- এবং এখন এই যথেষ্ট জটিল হচ্ছে.
তারপর আমি বলতে যাচ্ছি argv মধ্যে স্ট্রিং পুনরুক্তি,
নিজে একটা মন্তব্য হিসাবে.
এবং তারপর আমি একটি আছে যাচ্ছি লুপ জন্য নেস্টেড, আপনি সম্ভবত যা
কাজ করেছেন, বা বিবেচিত যেখানে, করছেন ভূত,
আমি বলতে int-- আমি যাচ্ছি আমি আবার ব্যবহার করা যাচ্ছে না,
কারণ আমি ছায়া চাই না, বা সাজানোর বিদ্যমান আমি ওভাররাইট করবে.
>> আমি পরিবর্তে, ঞ বলতে যাচ্ছি, কারণ যে আমি পরে পরিবর্তনশীল আমার যেতে,
যখন আমি শুধু চেষ্টা করছি সহজ সংখ্যা গণনা.
ঞ পায় 0-- এবং, এন, যাচ্ছে , Argv হয় বন্ধনী আমি কঠোর দৈর্ঘ্য পেতে
তাই যতদিন ঞ মিটার চেয়ে কম হয়, ঞ প্লাস প্লাস, নিম্নলিখিত কাজগুলো.
এবং এখানে আকর্ষণীয় অংশ.
>> একটি চরিত্র এবং একটি নতুন লাইন প্রিন্ট আউট, argv হয় বন্ধনী আমি, বন্ধনী ঞ প্লাগিং.
ঠিক আছে, তাই আমাকে এখানে কিছু মন্তব্য যোগ করা যাক.
অক্ষর পুনরুক্তি বর্তমান স্ট্রিং মধ্যে,
I- তম স্ট্রিং মুদ্রণ ঞ-তম অক্ষর.
তাই এখন, আমি বিবেচনা করি এই মন্তব্য কি বলতে চাচ্ছি.
>> স্ট্রিং পুনরুক্তি argv-- মধ্যে কতগুলি
স্ট্রিং argv মধ্যে হয়, যা একটি অ্যারে?
Argc অনেক, তাই আমি iterating করছি আমি থেকে সমান 0-argc পর্যন্ত.
এদিকে, কিভাবে অনেক অক্ষর argv মধ্যে I- তম স্ট্রিং আছে?
>> আচ্ছা, যে উত্তর পেতে, আমি স্ট্রিং দৈর্ঘ্য কল
বর্তমান স্ট্রিং আমি যত্ন উপর সম্পর্কে, যা argv হয় বন্ধনী আমি হয়.
আমি সাময়িকভাবে সংরক্ষণ করা যাচ্ছে না মান n মধ্যে, শুধু ক্যাশে উদ্দেশ্য পূরণকল্পে,
দক্ষতা জন্য এটা মনে রাখা.
এবং তারপর আমি 0 থেকে ঞ আরম্ভ যাচ্ছি, এতক্ষণ যাচ্ছে ঞ হিসাবে এন কম রাখা,
এবং প্রতিটি পুনরাবৃত্তির বর্ধন ঞ উপর.
>> এবং তারপর এখানে, প্রতি লাইন 12 আমার মন্তব্য,
একটি অক্ষর প্রিন্ট আউট, একটি নতুন লাইন অনুসরণ,
বিশেষভাবে argv হয় বন্ধনী আমি আমার আমি-তম স্ট্রিং দেয়
argv-- তাই প্রথম শব্দ, দ্বিতীয় শব্দ, তৃতীয় শব্দ, যাই হোক না কেন.
তারপর গভীর মধ্যে ঞ ধনী আর পায় আমাকে যে শব্দের ঞ-তম অক্ষর.
আর তাই, কার্যত, আপনি বিবেচনা করতে পারেন argv একটি বহুমাত্রিক যেমন,
একটি দ্বি-মাত্রিক, অ্যারে হিসাবে, যদ্দ্বারা সৌন্দর্য প্রতিটি শব্দ ধরনের
আপনার মনের মধ্যে এই মত চোখ ও প্রতিটি ভাষার প্রতিটি অক্ষরের
ধরনের রচিত হয় একটি কলাম, যদি সাহায্য করে.
>> বাস্তবে, আমরা যখন আঁচড়ান ভবিষ্যতে সপ্তাহের মধ্যে এই পৃথক্,
এটি একটি সামান্য হতে যাচ্ছে যে বেশী বাস্তবধর্মী.
কিন্তু আপনি কি সত্যিই করতে পারেন যে মনে, এখন জন্য,
শুধু এই দুই-মাত্রিক যেমন অ্যারে, যদ্দ্বারা এক মাত্রা
স্ট্রিং সব হয়.
এবং তারপর আপনি গভীর, আপনি ঝাঁপিয়ে যদি স্বতন্ত্র অক্ষর পেতে পারেন
এখানে এই নোটেশন ব্যবহার দ্বারা গণনা কর.
>> তাই নেট প্রভাব কি?
আমাকে এগিয়ে যান এবং argv2-- অভিশাপ এটি তৈরি করতে.
আমি ভুল করেছি.
পরোক্ষভাবে প্রকাশক লাইব্রেরি ফাংশন স্টারলিং.
তাই এই সব সময়, এটা সম্ভবত উপযুক্ত
আমরা সাজানোর শেষ করছি যে ঠিক যেখানে আমরা শুরু.
>> আমি মাতাল আপ, পরোক্ষভাবে প্রকাশক লাইব্রেরি ফাংশন স্টারলিং.
ঠিক আছে, এক মিনিট অপেক্ষা করুন.
আমার মনে, বিশেষ করে যেহেতু এটা ঠিক এখানে.
আমি string.h অন্তর্ভুক্ত প্রয়োজন কর্মসূচির এই সংস্করণে.
>> আমাকে এগিয়ে যান এবং অন্তর্ভুক্ত করা যাক string.h, সংরক্ষণ, এগিয়ে যান
এবং argv2 কম্পাইল.
এবং এখন, আমরা এখানে যান argv2 করতে লিখুন.
এবং যদিও এটি একটি সামান্য ব্যাপার প্রথম নজরে রহস্যপূর্ণ,
নোটিশ, প্রকৃতপক্ষে, কি ছাপা হয় ডট argv2 হয়.
>> কিন্তু আমি যদি পরে কিছু শব্দ টাইপ প্রম্পট, argv2 Zamyla চ্যান মত,
লিখুন, একটি সামান্য প্রথম নজরে রহস্যপূর্ণ.
কিন্তু আমরা যদি আপ ফিরে স্ক্রল, ./argv2 জেড এ-এম-ওয়াই-এল-সি-এইচ-একটি-এন.
তাই আমরা প্রতিটি শব্দের উপর iterated থাকেন.
আর এর ফলে, আমরা ধরে iterated করেছি একটি শব্দ মধ্যে প্রতিটি ভাষার প্রতিটি অক্ষরের.
>> এখন, এই সব পরে, বুঝতে পারি যে আছে
এক অন্য বিস্তারিত আমরা ধরনের চলেছি এই পুরো সময় উপেক্ষা.
আমরা শুধু পৃথক্ teased কি প্রধান এর ইনপুট হতে পারে?
কি প্রধান এর আউটপুট সম্পর্কে?
>> এই সময় সবাই আমরা চলেছি শুধু কপি এবং পেস্ট
প্রধান সামনে শব্দ কোন int, আপনি অনলাইন দেখতে পারেন, যদিও,
কখনও কখনও পুরোনো সংস্করণগুলি ত্রুটিপূর্ণভাবে সি এবং কম্পাইলার, তারা অকার্যকর বলে যে,
বা এ সব কিছুই.
কিন্তু, প্রকৃতপক্ষে, সংস্করণের জন্য সি এর আমরা ব্যবহার করছি যে,
সি 11, বা 2011, উপলব্ধি এটি কোন int হতে হবে.
আর এটা হয় করা উচিত অকার্যকর বা argc এবং এখানে argv.
>> কিন্তু কেন int প্রধান?
এটা আসলে কি ফিরে আসছে?
আচ্ছা, এটা এই সময়ের সব দেখা যাচ্ছে, যে কোনো সময় আপনি একটি প্রোগ্রাম প্রধান লিখিত করেছি
সবসময় কিছু ফিরে আসছে.
কিন্তু এটা এত গোপনে করছেন হয়েছে.
>> একটি যে কিছু হয় কোন int, লাইন 5 প্রস্তাব দেওয়া হয়.
কিন্তু কি int-?
আচ্ছা, এই ব্যাপার প্রোগ্রামিং কনভেনশন,
যদ্দ্বারা যদি কিছুই হয়েছে ভুল সর্বস্বান্ত এবং সব ঠিক থাকে,
প্রোগ্রাম এবং ফাংশন সাধারণত প্রত্যাবর্তন কিছুটা counterintuitively--
0.
0 সাধারণত সব ভাল হয় উল্লেখ করা হয়.
সুতরাং যদিও আপনি মনে এটা অনেক প্রেক্ষিতে যেমন মিথ্যা,
এটা আসলে সাধারণত একটি ভাল জিনিস মানে
>> এদিকে, একটি প্রোগ্রাম ফেরৎ 1, বা নেতিবাচক 1, বা 5, বা নেতিবাচক 42,
বা কোনো অ 0 মান, যে সাধারণত উল্লেখ
যে কিছু ভুল হয়েছে.
আসলে, আপনার নিজের পিসিতে Mac বা, আপনি আসলে দেখা হতে পারে
একটি ত্রুটির বার্তা, যদ্দ্বারা এটা বলে কিছু বা অন্যান্য, ত্রুটির
কোড নেতিবাচক 42, বা ত্রুটি কোড 23, বা যে মত কিছু.
যে সংখ্যা সাধারণত শুধু ইঙ্গিত প্রোগ্রামার, বা কোম্পানীকে
যে সফটওয়্যার তৈরি, কি, ভুল এবং কেন গেলেন
যাতে তারা মাধ্যমে সন্ধান করতে পারেন তাদের ডকুমেন্টেশন কোড,
জিনিসটা কি ত্রুটি আসলে মানে.
এটা সাধারণত নয় এ আমাদের উপকারে আসতে ব্যবহারকারীদের শেষ.
>> কিন্তু প্রধান আয় 0, সব ঠিক থাকে যখন.
যদি আপনি এখানে কিছু উল্লেখ না মূল প্রত্যাবর্তন করা উচিত কি,
এটা ঠিক স্বয়ংক্রিয়ভাবে হবে আপনার জন্য 0 ফিরে.
কিন্তু কিছু রিটার্নিং আর আসলে দরকারী.
>> এই চূড়ান্ত প্রোগ্রাম ইন, আমার দিন এগিয়ে যান এবং এই exit.c কল,
এবং আজকের সর্বশেষ পরিচয় করিয়ে বিষয়, একটি ত্রুটি কোড হিসাবে পরিচিত.
আমাকে এগিয়ে যান এবং অন্তর্ভুক্ত করা যাক আমাদের পরিচিত ফাইল উপরে, int প্রধান না.
আর এই সময়, এর int-argc করতে দিন স্ট্রিং argv, এবং আমার বন্ধনী দিয়ে
পরোক্ষভাবে এটি অ্যারের মধ্যে.
এবং তারপর আমার শুধু একটি বৈধতা চেক করতে দিন.
এই সময়, যদি-argc না সমান 2, তারপর আপনি জানেন কি?
ভুলে যাও.
আমি যে বলতে যাচ্ছি, হেই, ব্যবহারকারী, আপনি কমান্ড লাইন আর্গুমেন্ট নিখোঁজ হয়
ব্যাকস্ল্যাশ এন.
>> এবং তারপর যে এটি.
আমি প্রস্থান করতে চান.
আমি preemptively যাচ্ছি, এবং অকালে সত্যিই, রিটার্ন
কিছু সংখ্যা 1 ছাড়া অন্য.
প্রথম জন্য মান যান ত্রুটি ঘটতে পারে 1.
আপনি অন্য কিছু ভ্রান্ত থাকে পরিস্থিতি যে ঘটতে পারে,
আপনি রিটার্ন 2 বলে বা 3 ফিরে যেতে পারি, অথবা এমনকি নেতিবাচক 1 বা নেতিবাচক 2.
>> এই মাত্র প্রস্থান কোড আছে যে হয়, সাধারণত,
শুধুমাত্র প্রোগ্রামার থেকে দরকারী, বা কোম্পানী যে সফ্টওয়্যার শিপিং এর.
কিন্তু আসলে এটা যে 0 কি গুরুত্বপূর্ণ হয়.
তাই এই প্রোগ্রাম যদি, আমি চাই গ্যারান্টি দিই যে এই প্রোগ্রামটি শুধুমাত্র
কাজ করে ব্যবহারকারী আমাকে উপলব্ধ দুই একটি যুক্তি গণনা সঙ্গে,
প্রোগ্রামের নাম, এবং কিছু অন্যান্য শব্দ, আমি অনুসরণ যতটা জোরদার করতে,
printf, বলছে ব্যবহারকারী এ চিত্কার, অনুপস্থিত কমান্ড লাইন আর্গুমেন্ট,
1 ফিরে.
যে শুধু অবিলম্বে হবে প্রোগ্রাম প্রস্থান.
>> শুধু যদি-argc সমান 2 আমরা নিচে পাবেন এখানে, যা সময়ে আমি বলতে যাচ্ছি,
হ্যালো শতাংশ গুলি, ব্যাকস্ল্যাশ এন, argv1.
অন্য কথায়, আমি আছি argv হয় 0 পরে যাচ্ছে না,
যা শুধু প্রোগ্রামের নাম.
আমি প্রিন্ট আউট হ্যালো, কমা চান, দ্বিতীয় শব্দ যে মানুষের টাইপ.
আর এই ক্ষেত্রে লাইন 13, সব ঠিক থাকে.
>> আমি জানি যে argc 2 কথাটি এই প্রোগ্রাম থেকে.
আমি এগিয়ে যান এবং ফিরে 0 যাচ্ছি.
একটি সরাইয়া হিসাবে, মনে রাখা যে পাশাপাশি এই ভূত সত্য.
>> কথাটি আমি পারবোই এবং এই লাইন encapsulate
এই আর এখানে দফা কোডের.
কিন্তু যে ধরণের আছে অকারণে আমার কোড সংভৃত.
আমি সুপার করতে চাই স্পষ্ট যে কোন ব্যাপার কি,
ডিফল্টরূপে, হ্যালো কিছু মুদ্রিত হবে,
এতক্ষণ ব্যবহারকারী সহযোগীতা হিসাবে.
>> তাই এটা ব্যবহার করা খুবই সাধারণ একটি শর্ত, শুধু একটি হলে,
কিছু ভ্রান্ত আঁকড়ি পরিস্থিতি, এবং তারপর প্রস্থান.
এবং তারপর, এতক্ষণ সব ভাল, একটি অন্য আছে না,
কিন্তু শুধু কোড আছে যে বাইরে যদি, কারণ এটা
এই সমতুল্য বিশেষ ক্ষেত্রে, কথাটি.
তাই আমি 0 ফেরত দিচ্ছি মাত্র স্পষ্টভাবে বোঝান সব ঠিক থাকে.
>> তাহলে আমি রিটার্ন 0 বাদ, এটা would স্বয়ংক্রিয়ভাবে আমার জন্য অনুমান করা.
কিন্তু এখন যে আমি ফিরে আছি অন্তত এই ক্ষেত্রে এক,
আমি যাচ্ছি, ভাল পরিমাপ জন্য এবং স্বচ্ছতা, এই ক্ষেত্রে 0 ফিরে.
সুতরাং এখন আমাকে এগিয়ে যান এবং প্রস্থান করা যাক, যা একটি নিখুঁত segue মাত্র ছেড়ে চলে যেতে হয়.
>> কিন্তু প্রস্থান করা, আর আমাকে যেতে দাও এগিয়ে এবং ./exit না, লিখুন.
এবং প্রোগ্রাম আমার দিকে চিৎকার করে বলল, অনুপস্থিত কমান্ড লাইন আর্গুমেন্ট.
ঠিক আছে, আমাকে সহযোগিতা দেবেন.
>> আমাকে পরিবর্তে ./exit না, ডেভিড, লিখুন.
আর এখন এটা বলছেন, হ্যালো ডেভিড.
এবং আপনি সাধারণতঃ এই দেখুন না.
>> কিন্তু এটি সক্রিয় আউট সেখানে একটি যে লিনাক্স-এ বিশেষ ভাবে আসলে দেখতে
কি প্রস্থান কোড দিয়ে একটি প্রোগ্রাম থেকে প্রস্থান.
একটি গ্রাফিকাল মধ্যে কখনও কখনও ম্যাক অপারেটিং সিস্টেম বা উইন্ডোজের মত বিশ্ব,
আপনি শুধুমাত্র এই সংখ্যার যখন একটি দেখুন ত্রুটি বার্তা পর্দায় pops আপ
এবং প্রোগ্রামার আপনি যে সংখ্যা দেখায়.
কিন্তু আমরা কি ভুল দেখতে চান তাহলে বার্তা, হয় আমরা এটা এখানে কি করতে পারেন
তাই ./exit, লিখুন, মুদ্রণ অনুপস্থিত কমান্ড লাইন আর্গুমেন্ট.
>> আমি এখন চাইলে echo $ ?, না, তাহলে হয় হাস্যকর রহস্যপূর্ণ খুঁজছেন.
কিন্তু $?
ঐন্দ্রজালিক জাদুমন্ত্র নয় যে বলে, হেই, কম্পিউটার,
আমাকে বল কি পূর্ববর্তী প্রোগ্রাম এর প্রস্থান কোড ছিল.
আমি আঘাত লিখুন.
আমি 1 দেখুন, যে কারণ কি আমি ফিরে আসার জন্য আমার প্রধান ফাংশন বলা.
>> এদিকে, যদি আমি ./exit ডেভিড না, এবং আঘাত লিখুন, আমি দেখতে, হ্যালো ডেভিড.
আর আমি যদি এখন চাইলে echo $ না ?, আমি হ্যালো 0 দেখুন.
তাই এই আসলে হবে মূল্যবান তথ্য হতে
ডিবাগার প্রেক্ষাপটে, তাই না অনেক যে আপনি মানুষ, যত্ন নেবেন.
কিন্তু ডিবাগার এবং অন্যান্য প্রোগ্রাম আমরা এই সেমিস্টারে ব্যবহার করব
প্রায়ই যে সংখ্যা দিকে তাকাবে যদিও এটি সাজানোর দূরে লুকানো
যদি না আপনি এটি জন্য, চেহারা কিনা বা না একটি প্রোগ্রাম এর
মৃত্যুদন্ড সঠিক বা ভুল ছিল.
>> এবং যাতে আমাদের এনেছে এই, দিনের শেষে.
আমরা এ খুঁজছেন দ্বারা আজ শুরু ডিবাগিং, এবং অবশ্যই এ পালাক্রমে
নিজেই, এবং তারপর আরো মজার, টেকনিক্যালি ফণা নীচে
কি এ স্ট্রিং, যা স্থায়ী সপ্তাহে আমরা শুধু মেনে নিল,
এবং অবশ্যই তাদের গ্রহণ জন্য ভূত মঞ্জুর.
>> আমরা তারপর আমরা কিভাবে অ্যাক্সেস করতে পারেন দিকে তাকিয়ে একটি স্ট্রিং পৃথক অক্ষর,
এবং তারপর আবার একটি উচ্চ স্তরের গ্রহণ , জিনিস তাকান well-- কিভাবে এ খুঁজছেন
আমরা পৃথক এ পেতে চান তাহলে গঠন মত একটি তালিকায় উপাদান,
আমরা একাধিক স্ট্রিং সঙ্গে ব্যবহার করতে পারবেন না?
এবং আমরা কমান্ড লাইন আর্গুমেন্ট সাথে করতে পারেন.
কিন্তু এই ছবি শুধু বাক্সে এখানে এই সাধারণ ধারণার নির্দেশাত্মক
একটি অ্যারের, বা একটি তালিকা, বা একটি ভেক্টরের.
এবং তার উপর নির্ভর করে প্রসঙ্গ, এই সব শব্দের
কিছুটা ভিন্ন জিনিষ মানে.
তাই সি, আমরা শুধুমাত্র যাচ্ছেন অ্যারে সম্পর্কে কথা বলার জন্য.
আর একটি অ্যারের একটি খণ্ড মেমরি, যাদের প্রত্যেকের আছে
উপাদান, সংলগ্ন হয় ফিরে, ব্যাক, ফিরে ফিরে যাও.
>> আর যারা উপাদান, হয় সাধারণত, একই ধরনের তথ্য, চরিত্র,
অক্ষর, অক্ষর, অক্ষর, বা স্ট্রিং, স্ট্রিং, স্ট্রিং, স্ট্রিং, বা কোন int,
কোন int, কোন int, যাই হোক না কেন আমরা দোকান করার চেষ্টা করছেন.
কিন্তু দিনের শেষে, এই হল কি এটা ধারণার মত দেখায়.
আপনি গ্রহণ করছেন আপনার কম্পিউটারের মেমরি বা র্যাম.
আর আপনি এটা আউট খোদাই করছি অভিন্নরুপে আকারের বক্স, যা সব
ফিরে এসেছে, ফিরে যাও, ফিরে, এই ভাবে ব্যাক.
>> এবং কি সম্পর্কে চমৎকার এই ধারণা, এবং সত্য
আমরা এই ভাবে মান প্রকাশ করতে পারে আমাদের ডাটা স্ট্রাকচার প্রথম
ক্লাসে, আমরা শুরু করতে পারেন মানে কোড দিয়ে সমস্যার সমাধান করতে
যে সপ্তাহে 0 সুতরাং intuitively এসেছিলেন.
আপনি ফোন প্রত্যাহার করব বই উদাহরণ, যেখানে
আমরা একটি ডিভাইড ব্যবহৃত এবং জয়, অথবা একটি বাইনারি অনুসন্ধান অ্যালগোরিদম,
একটি পুরো মাধ্যমে টালা নাম এবং সংখ্যার গুচ্ছ.
কিন্তু আমরা ধারণ, রিকল, যে যে ফোন বই ইতিমধ্যে সাজানো হয়
অন্য কেউ ইতিমধ্যে ছিল যে out-- নামের একটি তালিকা দেয়া মূর্ত
এবং সংখ্যার তাদের বর্ণানুক্রমে কিভাবে.
আর এখন যে সি আমরা, খুব, ক্ষমতা আছে
জিনিষ খুঁজে রাখা, না শারীরিকভাবে একটি ফোন বই
কিন্তু কার্যত একটি কম্পিউটারের মধ্যে স্মৃতি, আমরা সক্ষম আগামী সপ্তাহে হবে
প্রথম আপাততঃ আবার পরিচয় করিয়ে একটি অ্যারে আমাদের ডাটা স্ট্রাকচার
কিন্তু আরো গুরুত্বপূর্ণ, প্রকৃত কম্পিউটার বিজ্ঞান আলগোরিদিম বাস্তবায়ন
কোডে, যা দিয়ে আমরা সংরক্ষণ করতে পারেন এই মত কাঠামোর মধ্যে তথ্য,
এবং তারপর এটি নিপূণভাবে শুরু, এবং আসলে এটা দিয়ে সমস্যার সমাধান করতে,
এবং যে উপরে নির্মাণ করা, পরিণামে, সি প্রোগ্রাম,
পাইথন, জাভাস্ক্রিপ্ট, এসকিউএল সঙ্গে ডাটাবেস অনুসন্ধান?
>> এবং আমরা এই সব দেখতে পাবেন বিভিন্ন ধারনা আলিঙ্গনাবদ্ধ.
কিন্তু এখন জন্য, যে স্মরণ ডোমেইন যে আমরা আজ চালু
এই জিনিস এখানে ছিল, এবং ক্রিপ্টোগ্রাফি বিশ্বের.
আর তুমি নিজের পরবর্তী সমস্যার মধ্যে সমাধান হবে ক্রিপ্টোগ্রাফী শিল্প,
scrambling এবং ডি-হাহাকার তথ্য, এবং ciphering
এবং টেক্সট পাঠোদ্ধারে, এবং পরিণামে অভিমানী
আপনি এখন জানেন যে কি ফণা নীচে হয়
যাতে যখন আপনি দেখতে বা গ্রহণ এই মত একটি বার্তা, আপনি
নিজেকে এটি পাঠোদ্ধার করতে.
সকল এই, এবং আরো অনেক কিছু পরবর্তী সময়.
>> [ভিডিও প্লেব্যাক]
>> -Mover এইমাত্র.
আমি দর্শন যেতে যাচ্ছি তার কলেজের প্রফেসর.
হাঁ.
হাই.
এটা তুমি.
অপেক্ষা করুন!
ডেভিড.
আমি শুধু চিন্তা করার চেষ্টা করছি তোমার কি হয়েছে জানতে.
অনুগ্রহ করে, কিছু সাহায্য করতে পারে.
আপনি তার কলেজ ছিল একই ঘরে বাসিন্দা, তাই না?
তুমি তাকে সঙ্গে ছিল তিনি এবং CS50 প্রকল্প শেষ?
>> [সঙ্গীত বাজাচ্ছি]
>> -যে CS50 ছিল.
>> আমি এই জায়গা ভালবাসা.
>> -সাবাড় করা.
আমরা ব্যবসার বাইরে যাচ্ছেন.
>> [END টি প্লেব্যাক]