[Powered by Google Translate] [2 সপ্তাহ, ক্রমাগত] [ডেভিড জে Malan, হার্ভার্ড বিশ্ববিদ্যালয়] [এই হয় CS50. - CS50.TV] ঠিক আছে. এটি CS50, এবং এই 2 সপ্তাহ শেষে. আপনি যদি এই সময় প্রায় খাই করা আগামীকাল আশা, জানি যে আমরা একটি ছোট গ্রুপ আগামীকাল, বৃহস্পতিবার, 1:15 অপরাহ্ন হিসাবে আহ্বান যাও চলুন. এখানে এখন পর্যন্ত এই URL-এ যদি আপনি উত্তর দিতে চাই. স্থান সীমিত, তাই আপনি যদি এই ফর্ম পূরণ করার সময় দ্বারা পূরণ করেনি আপ ক্ষমা করুন. অন্য URL, যদিও, যে সুদ হতে পারে এটি. প্রায় এক মাসের সময়, কোর্স করা উপলব্ধ করা যাচ্ছে যার মাধ্যমে সকল আরো বিস্তৃতভাবে মাধ্যমে edX, ইন্টারনেট ভাবেন যাও বরাবর অনুসরণ করতে হবে, অবশ্যই ব্যস্ত আসলে বেশ সক্রিয়ভাবে,. তারা CS50 অ্যাপ্লায়েন্স এবং CS50 আলোচনা ব্যবহার করা হবে বিভিন্ন সফ্টওয়্যার এবং টুলস যে ইতিমধ্যে আমরা এই সেমিস্টারে ভর্তি করা হয়েছে ব্যবহার করে বেশিরভাগ. এবং এক উদ্যোগের আমরা একটি পরীক্ষা হিসাবে গ্রহণ এই বছরের চাই ঠিক কত কন্টেন্ট আমরা অনুবাদ করতে হয় অন্যান্য উচ্চারিত এবং লিখিত ভাষা. তাই আপনি যদি এই প্রকল্পে অংশগ্রহণ করতে আগ্রহ থাকতে পারে যেখানে আমরা অবশ্যই এর বক্তৃতা জন্য ইংরেজি সাবটাইটেল প্রতিলিখন এবং প্রদান করবে এবং হাফপ্যান্ট এবং সেমিনার ও বিভাগে এবং মত, যদি আপনি অনর্গল কথা বলুন অথবা অন্যান্য ভাষা অনর্গল কিছু লিখুন, আমরা এই প্রকল্পে আপনি ব্যস্ত সাহায্যে আপনি এক বা একাধিক ভিডিও নিতে চাই, একটি ভাষা আপনি কি জানেন বেশ ভাল সেগুলি অনুবাদ. আপনার ইন্টারফেসের একটি ধারনা দেবে, এই ওয়েব ভিত্তিক ইউজার ইন্টারফেস আছে যে আমরা ব্যবহার করে যে মূলত ভালো একটি UI 'তে তৈরি করা হবে. এই সম্পর্কে কিছু ছিল অধ্যাপনা হ্যালোইন আগে, এবং ডান হাত কালো সেখানে পার্শ্ব পরের এইসব সময় স্ট্যাম্প, আপনি বিভিন্ন বিষয় আছে যা আমার মুখ দিয়ে বেরিয়ে আসেন যে দিন দেখতে পাবেন না, এটি নীচের এবং তারপরে আপনি কিছু অন্য ভাষায় অনুবাদ করতে পারবেন ঠিক কি ম্যাপিং, তাদের মধ্যে এই ক্ষেত্রে, এবং ইংরেজি, স্প্যানিশ ভাষায়,. সুতরাং এটি প্রকৃত একটি খুব ব্যবহারকারী বন্ধুত্বপূর্ণ হাতিয়ার. আপনি এবং কিবোর্ড শর্টকাটের মাধ্যমে গুটিয়ে দ্রুত এগিয়ে যায় খুব সহজেই করতে পারেন. তাই আপনি যদি এই গবেষণায় অংশ নিতে চান, তাহলে আপনার শব্দ দেখা যায় এবং পড়া সেখানে আউট ভাবেন সম্ভাব্য হাজার হাজার দ্বারা, অংশগ্রহণের মুক্ত মনে করবেন না দয়া করে. বিড়ালছানা সোমবার থেকে একটি মাত্র শব্দ. পাছে আমরা একটি মাত্রাতিরিক্ত ভয়ের বার্তা পাঠিয়েছে, যে, বুঝতে হিসাবে অফিসে ঘন্টা সুপারিশ করবেন এবং হিসাবে বিভাগে সুপারিশ, অবশ্যই নকশা বহুলাংশেই ছাত্রদের সমস্যা সেট মাধ্যমে সহযোগী এবং কাজ করার কথা বলা আছে এবং একসাথে সমস্যা, এবং সত্যিই ঠিক লাইন আসে নিচে, আবার, আপনি যে কাজ চূড়ান্তভাবে জমা আপনার হওয়া উচিত. এবং অফিসে ঘন্টার মধ্যে সেজন্য ভাল, এটা সম্পূর্ণই স্বাভাবিক, এটি সম্পূর্ণই এর প্রত্যাশিত হবে, এমনকি যাও, যাও কিছু বন্ধুর পাশে আপনার সাথে চ্যাট করা হবে. যদি তিনি কিছু বিষয় সঙ্গে সংগ্রাম এবং আপনি ভালো হয়, "ওহ, ভাল, আপনি কোড সম্পর্কে কিছু লাইনের একটি আভাস যে আমি লিখেছি দিতে যাক," যে সূক্ষ্ম, এটি ঘটে, এবং এর যে শিক্ষণ প্রক্রিয়ার সঙ্গে খুব সহায়ক, আমি মনে করি. যেখানে লাইন পার পরার যখন প্রধান ধরণের হেলানো পর্যন্ত অনেকগুলি যাও জন্য এখানে উপর বা ঠিক যে সত্যিই জন্য মিনিট আছে আপনার বন্ধুর জন্য একটি সুযোগ অবরোধমুক্ত, এবং কিছু জিনিস যখন ইমেল এবং ড্রপবক্স এবং মত বিনিময় মাধ্যমে পেতে, অত্যন্ত লাইন আছে. তাই সব উপায়ে আরাম লাগছে এবং বন্ধুদের সাথে চ্যাট করতে উত্সাহ বোধ এবং psets এবং আরো সম্পর্কে এবং সহপাঠীদের ঠিক বুঝতে পারি যে কি চরমভাবে আপনার জমা দেওয়া সত্যিই আপনার সৃষ্টিতে এবং না অন্য কারোর পণ্য উচিত. এবং তাই pset2 জন্য ডোমেন নির্দিষ্ট সমস্যা, যা আউট দেরী আগামীকাল রাতে আসবে, ক্রিপ্টোগ্রাফি বিশ্বের মধ্যে আকর্ষণীয় হয়, যা এনক্রিপ্ট বা তথ্য scrambling শিল্প, এবং শেষ পর্যন্ত এই নিরাপত্তা বিশ্বের সাথে সম্পর্কিত. এখন, আমাদের অধিকাংশ জন্য নিরাপত্তা মোটামুটি জাগতিক মেকানিজম আকারে আসে. আমাদের সমস্ত ব্যবহারকারীর নাম এবং পাসওয়ার্ডের আছে, এবং আমাদের খুব খারাপ ব্যবহারকারীর নাম এবং পাসওয়ার্ডের আছে, সম্ভবত. আপনি যদি আপনার পাসওয়ার্ড একাধিক ওয়েবসাইটের জন্য একই, যে হয়ত ভাল ধারণা না, হিসাবে আমরা সেমেস্ত্র এর শেষ দিকে নিয়ে আলোচনা করব. কোন রসিকতা - - যদি আপনার পাসওয়ার্ড একটি স্টিকি নোট করা হয় আপনার মনিটরের উপর, যে খুব ভাল হয় অগত্যা নকশা কিন্তু বেশ সাধারণ প্রপঞ্চ না. এবং যদি আপনি আপনার পাসওয়ার্ডগুলি এনক্রিপ্ট ক্রিপ্টোগ্রাফি ব্যবহার করছি না, তারা বিশেষ করে প্রবন. তাই আপনি যদি মনে করেন যে আপনার কোন গোপন ওয়ার্ড ফাইলটি থাকার হচ্ছে সুপার চতুর করছি কোথাও আপনার হার্ড ড্রাইভের যে আপনার পাসওয়ার্ডের সব আছে কিন্তু এটি একটি ফোল্ডার আছে যে কোন এক, তার যে খুব একটা খুব নিরাপদ পদ্ধতিও না যাচ্ছে. তাই কি pset2 প্রবর্তন করা হয় ক্রিপ্টোগ্রাফি এই শিল্প এবং তথ্য scrambling যাতে পাসওয়ার্ডগুলি মত জিনিষ সব আরো সুরক্ষিত. এখানে প্রসঙ্গ হল সঙ্গে অসুরক্ষিত তথ্য এটি এবং এনক্রিপ্ট এটা হামাগুড়ি দিয়া আরোহণ একটি সুযোগ আসে. তাই এই উদাহরণস্বরূপ,, একটি এনক্রিপ্ট করা বার্তার একটি উদাহরণ. এই প্রকৃতপক্ষে ইংরেজিতে কিছু বলছে, কিন্তু এটা স্পষ্ট না বিলকুল সুস্পষ্ট. এবং আমরা দুষ্টচক্র আজ সরাইয়া জ্বালাতন করা কি এই গোপন বার্তা হয় এখানে পাবেন. কিন্তু কম্পিউটারের বাস্তব জগতে, ভালো জিনিস তারা ইংরেজি বাক্যাংশ চেহারা হতে পারে না এমনকি না. উদাহরণস্বরূপ, এটি কি আপনি একটি প্রমিত লিনাক্স বা Mac বা ইউনিক্স কম্পিউটারে পারে যে একটি ফাইলের মধ্যে একবার ছিল উপর একটি পাসওয়ার্ড সময় নামক ফাইলটি. আজকাল এটা অন্যান্য জায়গা থেকে সরানো হয়েছে এর. কিন্তু আপনি যদি একটি সিস্টেমে যথাস্থানে চেহারা, না আপনি শুধুমাত্র আপনার ব্যবহারকারী নাম দেখতে পাবেন সিস্টেমের অন্যান্য ব্যক্তিদের অথবা যে, কিন্তু আপনি এমন একটি পাসওয়ার্ড তাদের মধ্যে এনক্রিপ্ট সংস্করণ দেখতে পাবেন. প্রকৃতপক্ষে, শব্দ আছে সমাধিগৃহ দাড়ায় যে নিম্নলিখিত স্টাফ এনক্রিপ্ট করা হয়, এবং আপাতদৃষ্টিতে র্যান্ডম অক্ষর এবং অক্ষর এবং সংখ্যার এই সিরিজের এবং তাই ঘোষণা সাধারণত শুধুমাত্র কিছু গোপন বুদ্ধিমান দ্বারা decrypted করা যেতে পারে - একটি গোপন শব্দ, একটি গোপন নম্বর - এবং তাই প্রকৃতপক্ষে, পরিণামে boils ক্রিপ্টোগ্রাফি নিচে শিল্প কিছু ধরণের বিশ্বাস এবং কিছু যে কারোর না বুদ্ধিমান. সুতরাং আমরা একটি বিট আরো বিস্তারিতভাবে এই আজকের অন্বেষণ এবং করব pset আসা যাও. এবং এখন পাস / ব্যর্থ একটি শব্দ. বিশেষত হিসাবে আপনি কিছু pset1, অ্যাপ্লায়েন্স মধ্যে dived আছে, এবং নিজের জন্য খুব নতুন দুনিয়া, বুঝতে পারি যে বিরক্তির এবং বিভ্রান্তির এবং শুধু প্রযুক্তিগত সমস্যার খুব আশা করা যায়, বিশেষ করে প্রথম pset, যেখানে ঠিক তাই নতুন অনেক আছে, শুধুমাত্র ls এবং সিডি পেয়ে সাথে পরিচিত এবং এই গোপনীয় সব কমান্ড এবং একটি নতুন পরিবেশ, এবং যে এর প্রকৃত উপাদান এবং নিজেই প্রোগ্রামিং থেকে পৃথক. তাই বুঝতে পারি যে খুব আছে অবশ্যই আছে অফিসে ঘন্টা সমর্থন কাঠামো হিসাবে যে বিদ্যমান. এই বিভাগে শুরু আগামী রবিবার. তবে সবচেয়ে গুরুত্বপূর্ণভাবে, যদি আপনি ঠিক যে এই বিশ্বের জন্য আপনি বোধ করছি না, বুঝতে পারি যে এটা সত্যিই সময় লাগবে. এবং সুযোগ ছিল এই জন্য এটি আমার জন্য একটি শ্রেণী পাস গ্রহণ / ব্যর্থ সারাংশ বছর আগে হইনি, সত্যি বলতে, এমনকি আমি চাই না শ্রেণীকক্ষে পাদদেশ সেট. এবং আপনি এই পর্যন্ত পরিবর্তন আপ, বলতে পারেন, পঞ্চম সোমবার অবশ্যই, তাই আপনি যদি এখন উত্তেজিত হন, যে, বরং মাথা বুঝতে সম্পূর্ণভাবে মধ্যে কিছু অন্যান্য জলের, না অবশ্যই শুধুমাত্র / পাস ব্যর্থ পরিবর্তন বিবেচনা. আবার, হার্ভার্ড এ আছে সত্যিই এই সংস্কৃতি জিনিস না গ্রহণের এখানে / পাস বিফল যেহেতু সবাই সত্যিই বা অর্জন, overachieve চায় কিন্তু অকপটে, এই একটি আউট কিছু করার চেষ্টা করছেন এর বিস্ময়কর উপায় যে পরিচিত আপনি না, এবং আপনি আপ বেশিরভাগ ক্ষেত্রেই কাজ শেষ করব পারে, বেশ সূক্ষ্ম, আপনার বিস্ময় যাও সম্ভবত অনেক. এবং আরো কংক্রিট পদ, আমার মনে / পাস সাধারণত ব্যর্থ আছে, বিশেষত হিসাবে আপনি pset0 সঙ্গে সম্মুখীন হতে পারে, যদি 10 ঘন্টা, 15 ঘন্টা, 25 ঘন্টার মধ্যে আপনার কিছু pset পুরা মাত্র এবং আপনি প্রাচীর বিরুদ্ধে করছি আপনার মাথা banging এবং এটা রাতে পেতে দেরী সুপার এর কিন্তু আপনি pset উপায় 90% গ্রহণ করেছি এবং আপনি শুধু একটা জিনিস চিন্তা না করতে পারেন, / পাস সত্যিই ভালো লাগে ক্লাসের প্রান্ত বন্ধ ব্যর্থ হয়, যেখানে আপনার বাছাই সুখে, বলে "ঠিক আছে, আমি জানি এটা নিখুঁত না করতে পারেন, কিন্তু আমি এই কাজ আমার মলদ্বার বন্ধ, আমি যেখানে এটা শেষ পর্যন্ত সঙ্গে চমত্কার খুশি, " এবং যে পাস জন্য প্রত্যাশা / মেটাতে ব্যর্থ হবে. তাই মন না থাকে. ঠিক আছে. তাই আপনাদের মধ্যে যারা যাও হার্ভার্ড বিশ্ববিদ্যালয়ের ওয়াই ফাই ব্যবহার অসুবিধা আছে, জানেন যে একটি CS50 SSID, Wi-Fi সংযোগ, ফ্লোটিং চারপাশে আছে যে ভাল ভাগ্য জন্য থাকতে পারে. এটা একটা সামান্য বিদ্রূপাত্মক যে এই পাসওয়ার্ড জন্য, আপনি যদি সাথে সংযোগ এই চেষ্টা করতে চাই এবং আমাদের যদি কোন ভাল জানাতে - - ভাল গতিশীলতার জন্য 8 আপ 12345, সমস্ত উপায় কারণ 8 5 তুলনায় বেশী নিরাপদ. তাই আপনি যদি ওয়াই ফাই পাসওয়ার্ড প্রয়োজন CS50 যাও, wirelessly এখানে সংযোগ 12345678,, এবং CS50 পোস্ট যদি এখনও আপনার সবিরাম সংযোগ বিষয় আছে আলোচনা, এবং ক্ষমতা যে আমরা এই স্থান জানি করা জানাবো. ঠিক আছে. সুতরাং একটি দ্রুত বিশেষত আপনাদের মধ্যে যারা পাখা ছেলেদের সব জিনিষ আপেল বা মেয়েশিশুদের জন্য টিজার,. আমি কি কয়েক বছর থেকে খুঁজে বের করা ব্যাকআপ ছিল এখানে এই ফাইলটি, iUnlock.c, শুধু ধরনের আরো কংক্রিট এবং আরো জটিল করা আরো মৌলিক সি প্রোগ্রাম লেখা আমরা করছি কিছু. তাই আমি এই ফাইলটি খোলা পর্যন্ত, iUnlock.c. এটা আজকের জন্য লেকচার পৃষ্ঠায় উপলব্ধ. বাম দিকে আপনি একটি কর্ম দীর্ঘ তালিকা দেখুন. তাই সহকর্মী যিনি এই লিখেছেন লেখেন ফাংশন অনেক, কেবল প্রধান তুলনায় আরো আপ. তিনি একটি লাইব্রেরি আভা এখানে ব্যবহৃত, এবং আমরা যদি স্ক্রলিং শুরু মাধ্যমে, এই কি আসলে খুবই প্রথম মূল আইফোন জন্য, আমি বিশ্বাস করি, ক্র্যাক. আপনি যখন আসল আইফোন jailbreak চেয়েছিলেন, যা AT & T থেকে এটি untether অর্থ এবং এটা আসলে বিশেষ সফ্টওয়্যার এবং ইনস্টল যে আপেল মানুষ কি না করতে চান না, কেউ চিন্তা করা ঠিক কিভাবে তারা সফ্টওয়্যার সংক্রান্ত ত্রুটিগুলি নিজের কাজে লাগানো যায় নি সময় নেয়, - iUnlock.c-ভুল, আপেল সফ্টওয়্যার বাগ,, এবং এইভাবে জন্মগ্রহণ করেন আপনি যদি আপনার কম্পিউটারে এটা কম্পাইল করা এবং একটি আইফোন সম্মুখের এটি ইনস্টল করা যে আপনার কম্পিউটার যাও, যেমন একটি USB তারের মাধ্যমে সংযুক্ত ছিল, এই আপনার আইফোনের প্রশাসনিক অথবা root অ্যাকাউন্টের অনুমতিসহ ব্যবহারযোগ্য দিতে হবে এবং আপনাকে কি চমত্কার অনেক যাই হোক না কেন আপনি কি করতে চান. এবং তাই হয়েছে এই চটুল বিড়াল ইঁদুরের খেলা এর নেই মধ্যে অ্যাপল এবং বিশ্ব, বিশেষ করে বিশ্রাম হিসাবে তারা, মত অনেক কোম্পানি, তাদের পণ্যদ্রব্য লক ডাউন যাতে শুধুমাত্র আপনি এটা দিয়ে কি তারা মনস্থ করা চেষ্টা করতে পারেন. কিন্তু ধন্যবাদ জনের ভালো এবং নিম্নস্তরের বিবরণ বুঝতে - এবং এই ক্ষেত্রে C প্রোগ্রামিং - পরিচিত এবং নির্মানের অনেক যে আমরা বাজানো দিয়ে শুরু করেছি, আপনি সত্যিই হার্ডওয়্যার লিভারেজ সক্ষম আপনি এমনভাবে দেখতে উপযুক্ত এবং অগত্যা কিছু কর্পোরেট সত্তা না. সুতরাং উদাহরণস্বরূপ, আমি কোন ধারণা কি এই সব করছে আছে, কিন্তু GetVersion শোনাচ্ছে প্রশংসনীয় সহজবোধ্য, এবং এটা দেখে মনে হচ্ছে এই একটি ফাংশন যে এই ব্যক্তির লিখেছে. এটি একটি আর্গুমেন্ট হিসাবে পূর্ণসংখ্যা কিছু লাগে, কিছু ফেরত না, লুপ যাও কিন্তু এখানে একটি লুপ জন্য এবং যদি একটি শর্ত, যদি শর্ত বিরতি, প্রদর্শিত হবে এবং একরকম সংস্করণ সংখ্যার সাথে সম্পর্কিত যদি আমরা নিচে স্ক্রল, যদিও এই কীওয়ার্ড অনেক নতুন হতে যাচ্ছে. এবং এখানে একটি ফাংশন এর পুরো অনেক করেছি এবং আমরা কখনও দেখতে পারে না দেখেননি আছে উপর সেমেস্ত্র অবশ্যই. দিন শেষে, এটি একই নিয়ম এবং যুক্তি অনুসরণ করে যে আমরা সঙ্গে পর্যন্ত করেছি বাজানো হয়েছে. তাই এই পর্যন্ত খুব আপনার আইফোন 3s বা 4s বা শীঘ্রই 5s এইসব দিন ফাটল পুরানো, কিন্তু জানি যে এই দুনিয়া থেকে সমস্ত খুব এর প্রাপ্ত যে আমরা মধ্যে dived করেছি. চলুন একটু সহজ উদাহরণ কটাক্ষপাত: এই এক, মাত্র কয়েকটি বাক্য গঠন নিয়ে যাও উত্তাপিত যায় এবং এছাড়াও অন্যান্য কিছু তথ্য টাইপ আমরা যে বিষয়ে কথা বললাম আছে কিন্তু সত্যিই দেখা সি না করেছি এটি একটি ফাইল নামক positive1.c, এবং প্রতি শীর্ষে মতামত, এই দাবী ঠিক যে একটি ব্যবহারকারী একটি ধনাত্মক সংখ্যা প্রদান. এটা কি একটা সময় লুপ, যা ব্যবহারকারী ইন্টারেক্টিভ প্রোগ্রামের জন্য চমৎকার একটি উদাহরণ যেখানে আপনি ব্যবহারকারীর প্রয়োজন বলতে কোনো কিছু করতে, এবং যদি তারা আপনাকে তাদের অথবা চিত্কার ইনপুট প্রত্যাখ্যান না সহকর্মী. একটা উদাহরণ: আমি 24 কি 19 লাইনের মাধ্যমে যাচ্ছি তাই যতদিন ব্যবহারকারী একটি ধনাত্মক সংখ্যা সম্পর্কে দেওয়া হইনি. এই লাইন 18 এখানে বিস্তারিত, কেন আমি এই পুরো looping গড়া উপরে n ঘোষণা ডান পাশে লাইন 22 যেখানে আমি আসলে n পেতে যত্ন হিসাবে বিরোধিতা? হাঁ. ব্যাপ্তি [ছাত্রদের]. >> হ্যাঁ, তাই সুযোগ রয়েছে এই সমস্যা. এবং অ - বিশেষজ্ঞ এর শর্ত কি, সুযোগ আছে পড়ুন? হাঁ. >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> একটু জোরে আপনি কথা বলতে পারি? [ছাত্রদের] কোথায় আপনি যে পরিবর্তনশীল অ্যাক্সেস করতে পারেন. >> পারফেক্ট. যেখানে আপনি একটি নির্দিষ্ট পরিবর্তনশীল অ্যাক্সেস করতে পারেন. এবং সাধারণত, চলতি রীতি পর্যন্ত হয়েছে যে কিছু পরিবর্তনশীল সুযোগ সাম্প্রতিকতম কোঁকড়া ধনুর্বন্ধনী যে আপনি পাচ্ছি দ্বারা সংজ্ঞায়িত করা হয়. এই ক্ষেত্রে এবং তাই, যদি আমি লাইন 22 n প্রকাশক ভুল করে, যে লাইন কাজ করবে. আমি কোন int পেতে, এবং আমি যে পরিবর্তনশীল n মধ্যে এটি 22 লাইন স্থাপন করা হবে, কিন্তু কোন কোড লাইন এখন কোন ধারণা আমি কি বিষয়ে কথা বলছি না থাকবে? >> [ছাত্রদের] 25. [Malan] 25, 24 এবং এটি সক্রিয় আউট হিসাবে ভাল কারণ এটি এই ক্ষেত্রে পড়ে কোঁকড়া ধনুর্বন্ধনী বাইরে. তাই শুধু একটি উত্পাত সামান্য বিট কিন্তু কেবল পরিবর্তনশীল প্রকাশক দ্বারা খুব সহজে সমাধান বাইরে কাজ নিজেই. আমরা পরে আজ আপনি আরও এক ধাপ যেতে পারেন দেখতে পাবেন এবং এমনকি আপনি পেতে একটু অলস পারে. এবং এই হয়, কিন্তু সাধারণ সুপারিশ করা হবে না আপনাকে এমনকি পেতে অলস পারে এবং বিশ্বব্যাপী একটি পরিবর্তনশীল করা, তাই কথা বলতে একটি ফাংশন, ভিতরে না একটি লুপ এর ভিতরে, কিন্তু র সমস্ত কর্ম ব্যবহার বাইরে ফাইল নিজেই, আপনি, লিখিত হিসাবে আমি 15 লাইন এখানে কি করেছি. এই উপর সাধারণত frowned, কিন্তু বুঝতে পারছি এটা কখনও কখনও অন্যান্য সমস্যার সমাধান, অবশেষে হিসাবে আমরা দেখতে পাবেন. তাই এখন জন্য আমরা এটা ভালো, ছেড়ে পাবেন, কিন্তু এর দিন যদি আমরা এই পুনর্লিখন করতে পারেন শুধু প্রকাশ নিজেদেরকে একটু ভিন্নভাবে শুরু. এই প্রোগ্রামটি, ঠিক পরিষ্কার করা হয় positive1. আমাকে এগিয়ে যেতে এখানে এবং আমার টার্মিনাল উইন্ডোর positive1, লিখুন না. কম্পাইল করা একদম ঠিক. আমি positive1 চালানো লিখুন আঘাত যাচ্ছি. আমি দাবি করছি যে আপনার সম্পর্কে একটি ধনাত্মক পূর্ণসংখ্যা দিতে. আমি -1 বলবো. যে কাজ করে নি. 0, 99. যে কাজ মনে হয়. হয়তো সবচেয়ে কঠোর পরীক্ষা না, কিন্তু অন্তত এটা একটা চমৎকার সদ্বিবেচনা চেক যে মুহূর্তে আমরা ট্র্যাক করছি. সুতরাং এখন আমাকে এগিয়ে যান এবং এই সংস্করণ 2 খুলুন এব, এবং কি ইতিমধ্যেই বিভিন্ন? সেই একই জিনিস দেখা দেবে, কিন্তু কি স্পষ্টতই বিভিন্ন সময় এই হিসাবে এর জাম্পিং আউট? এই bool সবুজ. এটা সবুজ, এই অভিব্যক্তি bool, যা একটি তথ্য টাইপ হিসাবে পরিচিত হাইলাইট হয়. এটা সি সব সংস্করণের জন্য নির্মিত না আসা আপনি একটি নির্দিষ্ট লাইব্রেরি অন্তর্ভুক্ত করা প্রয়োজন. আমাদের ক্ষেত্রে, আমি CS50 লাইব্রেরি অন্তর্ভুক্ত যাতে আমরা bool অ্যাক্সেস আছে. কিন্তু লাইন 18, আমরা একটি বুলিয়ান মান এখানে বলা কৃতজ্ঞ করেছেন বলে মনে হচ্ছে. আমি এই কিছু, বলা যেতে পারে কিন্তু আমি এটা বলা কৃতজ্ঞ ঠিক যে ধরণের কিছু শব্দার্থিক অর্থ বহন করা. তাই প্রাথমিকভাবে উপর লাইন 18, আমি দৃশ্যত কৃতজ্ঞ না কারণ বুলিয়ান মান কৃতজ্ঞ লাইন 18 মিথ্যা যাও সক্রিয়া করা হয়. এবং তারপর মনে হয় আমি কি লাইন 21 সম্পন্ন করেছি এখানে 23 এর মাধ্যমে না আমি শুধু আমার ধরনের লজিক পুনর্লিখিত করেছি. সুতরাং কোন বৈশিষ্ট্যগুলি ভিন্ন, কিন্তু এখন লাইন 22 আমি যদি int-ব্যবহারকারী দেওয়া চেক মান 0, তার চেয়ে অনেক বেশী, তাহলে আমি কৃতজ্ঞ কেবল সত্য যাও মান পরিবর্তন. এবং কেন আমি করব না যে? কারণ লাইন 25 দৃশ্যত, আমি একটি পরীক্ষা যাচ্ছি. এই লুপ যখন কৃতজ্ঞ মিথ্যা কি. তাই আমি সংস্করণ 1 বিকল্প হিসাবে এই প্রস্তাব কারণ এটা সম্ভবত অন্তত একটু আরও বেশি ধারণাসম্পন্ন, এটা একটু বেশি ইংরেজি ভিত্তির উপরে প্রতিষ্ঠিত. তাই নিচের কাজগুলো করার সময় আপনি বা যখন কৃতজ্ঞ মিথ্যা কৃতজ্ঞ নয়. এবং খুব এই সময় আমি কি ইউজার টাইপ স্মরণ দৃশ্যত না যত্ন বিজ্ঞপ্তি কারণ কোনো চলক n, তাই আসলে, সেখানে একটি সাদা সামান্য মিথ্যা আছে. কাজের, প্রোগ্রাম একটি বিট বিভিন্ন একবার আমরা এটি ডোবান কারণ আমি কি n হল মনে করছি না. কিন্তু আমি এখানে খুব প্রকট চেয়েছিলেন যে যদিও আমরা GetInt দেখা করেছি এবং একটি GetString ডান দিকে ব্যবহৃত হচ্ছে সাইন সমান দূর পর্যন্ত যাতে আমরা মান, টেকনিক্যালি, যে কঠোরভাবে প্রয়োজন না মনে রাখবেন. যদি কোন কারনের জন্য আপনাকে কেবল মান সংরক্ষণ করতে না যত্ন, আপনি শুধু মান, চেক লক্ষ্য করা যে, আমরা শুধু GetInt হিসাবে এই লিখতে পারেন করতে চান, paren খোলা, বন্ধ paren. যে ফাংশন এর মান ফিরে যাচ্ছে, হিসাবে আমরা করছি বলছে না. এটা আপনাকে ফেরত দিতে কোন int যাচ্ছে. তাই যদি আপনি মনে মনে এই ঘটনাকেই মনে করি, যখন আমি 99 টাইপ, GetInt ফেরৎ নম্বর 99, এবং তাই ধারণার, এটা হিসাবে যদিও আমার কোড আসলে ছিল এই. তাই আপনি যদি 99 হয় 0 থেকে প্রকৃতপক্ষে বৃহত্তর তারপর, কৃতজ্ঞ হয়ে সত্য, তারপর লাইন 25 বুঝতে খুশি, আমরা কারণ এখন আমি কৃতজ্ঞ সম্পন্ন হলে, এবং লাইন 26 সালে, কেবলমাত্র আমরা, বলে "ধনাত্মক পূর্ণসংখ্যা জন্য ধন্যবাদ!" যাই হোক না কেন এটা ঘটেছে. এখন এর অসম্মান অন্বিত চিনি এখানে করতে দেওয়া, তাই কথা বলতে. আসুন আমরা এই তৃতীয় এবং চূড়ান্ত বৈকল্পিক সঙ্গে এই লাইন 25 পরিষ্কার positive3 আপ করতে পারেন. শুধু পার্থক্য এখন কি কোড লাইন লক্ষ্য করুন? >> [ছাত্রদের] 25. >> [Malan] হ্যাঁ, 25. এবং আমরা এই কৌতুক দেখা সত্যিই করেছি না এখনো, কিন্তু আমরা সোমবার বিস্ময়বোধক বিন্দু দেখতে পাইনি, যা কি বোঝায়? >> [ছাত্রদের] নেই. >> নেই বা অস্বীকৃতি. সুতরাং একটি বুলিয়ান মান গ্রহণ এবং তার মান টুসকি. মুক্ত হয়ে মিথ্যা, মিথ্যা হয়ে ওঠে সত্য. এই সুতরাং, আমি উত্থাপন করা হবে, এমনকি সামান্য একটি আরও বেশি ধারণাসম্পন্ন কোড লেখার একটি উপায় কারণ এখনও আমি কৃতজ্ঞ মিথ্যা আরম্ভ, এখনও আমি নিম্নোক্ত কাজ করুন, আমি সেট কৃতজ্ঞ সত্য যখন সময় আসে, তবে এখন আপনি কি সত্যিই এই কোড ডানে বামে শব্দগতভাবে অনুবাদ করতে পারেন, যখন (কৃতজ্ঞ!); কারণ ঠুং ঠুং শব্দ বা বিস্ময়বোধক বিন্দু না ধারণা হল, তাই যখন হইনি কৃতজ্ঞ. তাই আবার, আমরা কোনো কোনটাই নতুন ধারণা চালু করেন নি. আমরা Booleans সম্পর্কে ফিরে সায়ীদ যখন আমরা ভূত সঙ্গে অভিনয়, কিন্তু এখন বুঝতে আমরা কেবল শুরু বিভিন্নভাবে আমাদের কোড লেখা যাবে. তাই বিশেষ করে pset1 মধ্যে যদি আপনি কিছু প্রোগ্রাম লিখে উপায় চিত্র আউট সংগ্রাম সাজানোর, অমিল হল আপনি ভাগ্য আছেন কারণ হতে সমাধানের কোনো নম্বর থাকতে পারে যে আপনার উপর ঘটতে পারে. উদাহরণস্বরূপ, এই মাত্র এমনকি প্রোগ্রামের জন্য সহজ 3. ঠিক আছে. এবং এখন প্রত্যাহার সোমবার এই নোট উপর আমরা ফিরে মান বাকি. সুতরাং খুব প্রথমবার জন্য আমরা একটি প্রোগ্রাম যা প্রধান না ঠিক আছে না লেখেন; এটা নিজস্ব কাস্টম ফাংশন যে আমি এখানে লিখেছে আছে. 34 এর মাধ্যমে সুতরাং লাইন 31 সালে আমি একটি ঘনক ফাংশন প্রয়োগ করেছি. এটা জটিল না. এটি শুধু একটি * একটি একটি * এই ক্ষেত্রে. কিন্তু কি এটি সম্পর্কে গুরুত্বপূর্ণ হল যে আমি একটা ফর্ম ইনপুট গ্রহণ করছি এবং আমি একটি * একটি * একটি ফর্ম ফিরে আউটপুট করছি. তাই এখন আমি ক্ষমতা আছে, অনেক ভালো যাও আমি একা prinf সঙ্গে ব্যবহার, যাও ঘনক্ষেত্র ফাংশন কল করে এই ফাংশন কল. ঘনক্ষেত্র ফাংশন এবং কিছু ইনপুট নেয়, এবং ঘনক্ষেত্র ফাংশন কিছু ফলাফল উত্পন্ন হবে. বিপরীতভাবে, একবার মাত্র printf কিছু করেছিল. এটা, ফিরিয়ে কিছু যে আমরা যত্ন সম্পর্কে না যদিও একটি সরাইয়া হিসাবে এটি একটি মান ফিরে না; আপনি সাধারণত কেবল এটি উপেক্ষা করা. Printf মাত্র কিছু করেছিল. এটি একটি মুদ্রণ পর্দায় পাশ প্রভাব ছিল. বৈসাদৃশ্য এখানে দ্বারা, আমরা ঘনক্ষেত্র ফাংশন, যা আসলে কিছু ফেরৎ আছে. তাই যারা এর সাথে পরিচিত এই জন্য যে এটা একটা মোটামুটি ধারণা সহজবোধ্য. কিন্তু যারা পাশ করার জন্য ইনপুট এবং আউটপুট পেয়ে ফিরে এই ধারণা কম পরিচিত, যাক এর মাত্র কিছু সুপার সহজ চেষ্টা করুন. না কেউ আরামদায়ক মঞ্চে আসছে সংক্ষিপ্তভাবে আপ? আপনি আপনার ক্যামেরা সঙ্গে আরামদায়ক হতে হিসাবে ভাল আছে. হাঁ? ঠিক আছে. আপনার নাম কি? >> [ছাত্রদের] কেন. >> Ken. ঠিক আছে. Ken, এসেছেন তার উপরে. Ken যাও প্রকারের একটি ফাংশন এখানে হবে. চলুন এগিয়ে যান এবং এই কাজের জন্য. চলুন একটু অভিনব পেতে. দেখা হওয়ায় খুশী হলাম. স্বাগতম কেন্দ্র পর্যায়ে. ঠিক আছে. আসুন এখানে এই বোতাম আঘাত. ঠিক আছে. তাই এখানে আপনি একটি আধুনিক chalkboard আছে, এবং কি আমি হয় উদাহরণস্বরূপ, প্রধান ফাংশন,, আমি এবং আমার হাতে একটি আইপ্যাড না. ওয়েল, আমি যা বলতে পারে না - আমি কিভাবে কি সত্যিই মনে রাখবেন না. আমি ভাল হস্তাক্ষর সত্যিই নেই, এবং সেইজন্য আমি কি আমার জন্য পর্দায় কিছু প্রিন্ট করতে চান. আমি মূল প্রোগ্রাম হচ্ছে, এবং am আমি আপনাকে এই বলতে যাচ্ছি দ্বারা আমার মুরগির স্ক্র্যাচ মধ্যে লিখে তারপর ক্ষণস্থায়ী এবং একটি ইনপুট আপনি. তাই অর্থহীন যদিও এই ব্যায়াম হয়, ফাংশন এর ধারণা এবং একটি ফাংশন কলিং এবং ফিরে একটি ফাংশন সত্যিই boils এই ডাউন. আমি প্রধান, শুধু আমি পর্দায় আছে printf, মূল্যউদ্ধৃতি-উদ্ধতি কিছু না, আমি এই প্রোগ্রাম am চলমান, এবং হিসাবে হিসাবে শীঘ্রই printf নামক পরার, এটি একটি যুক্তি অথবা একটি উদ্ধৃতি চিহ্ন মধ্যে কখনও কখনও প্যারামিটার নেয়. এখানে যে যুক্তি. আমি কেন নিকট এটি ক্ষণস্থায়ী. তিনি একটি কালো বাক্স বছর কিছু সংখ্যা আগে লিখিত যে শুধুমাত্র দৃশ্যত জানেন কিভাবে পর্দায় জিনিষ মুদ্রণ. তাই চালানো হয়. যে খারাপ না. খুব ভাল. তাই এখন Ken নির্বাহ করার জন্য এটা করা হয়. কিন্তু সে সম্পর্কে কিছু সমর্পন ফিরে প্রয়োজন? নেই যে আমরা এইভাবে দেখা করেছি. আবার printf, আসলে একটি নম্বর আছে, কিন্তু আমরা ফিরে যাও এখন জন্য যে উপেক্ষা চলুন কারণ আমরা তা নিইনি. যাতে এর Ken জন্য এটি. তাই এখন প্রধান প্রোগ্রাম নিয়ন্ত্রণ আবার লাগে কারণ কোড যে লাইন printf,, নির্বাহ করার জন্য এটা করা হয়. এবং আমাদের উপায় সম্পর্কে আমরা, যাই হোক না কেন যেতে নির্বাহ অন্যান্য লাইন আছে. তাই এখন যাক এর একটি উদাহরণ চেষ্টা কিছুটা ভিন্ন. এই সময় এখানে এর প্রথম পর্দা পরিষ্কার করে দেওয়া, এবং এই সময় আমরা cubing ফাংশন করব, কিন্তু এই সময়, আমি একটি আউটপুট মান প্রত্যাশা. তাই আসুন আর দেরী না করে এবং এই কাজের জন্য. এখন আমি কোড একটি লাইন যে x x এর ঘনক্ষেত্র পায় আছে. কোড লাইন, রিকল, ভালো দেখায়: x = ঘনক (x); সুতরাং কিভাবে এই কাজ করে যাচ্ছে? চলুন এগিয়ে যান এবং একটি সাদা পর্দা দিতে আবার আপনি. আমি লিখে এখন x এর মান যাচ্ছি, যা সময় এই মুহূর্তে করা হয়, এর বলতে দেওয়া 2, এটা সহজ রাখা. আমি এক টুকরা কাগজ 2 মান, যা আমার মান x এর থেকে লিখে রাখা. আমি কেন এটা ওদের হাতে. >> এবং আমি ঠিক উত্তর লিখুন? >> হ্যাঁ, আমি কি ঠিক উত্তর লিখুন. ঠিক আছে. এবং এখন তিনি ফিরে যাও সম্পর্কে কিছু আছে. পারফেক্ট. Segue চমৎকার. সুতরাং এখন তিনি আমার হাত এই ক্ষেত্রে ফিরে 8 মান, এবং কি আমি কি কাজ? বাস্তবিক - এর দেখতে দিন, এই অধিকার পেতে. Am কি আমি কাজ করতে যাচ্ছি? এখন আমি এই মান গ্রহণ করা এবং প্রকৃতপক্ষে যারা মেমরির মধ্যে একই বিটের মধ্যে এটি সংরক্ষণ যাচ্ছি. কিন্তু লক্ষ্য করা আমি সংগ্রাম এখানে ধরনের. আমি একটু বিভ্রান্ত, কারণ যেখানে আসলে আমি x এর মান লিখুন, কারণ কি আমি ঠিক করেছি কাজ হয় শারীরিকভাবে হাতে এক টুকরা কাগজ কেন যে মান 2 ছিল, যা ছিল x, প্রকৃতপক্ষে, অবিকল যে কি ঘটেছে. সুতরাং দেখা যাচ্ছে যে আপনি যখন ফাংশন কল করবে এবং আপনাকে একটি আর্গুমেন্ট পাস হ্যালো ভালো, বিশ্বের অথবা একটি আর্গুমেন্ট আপনি 2 ভালো পাস, সাধারণত, আপনি যে যুক্তি একটি কপি মধ্যে পার করছি. এবং সে হিসাবে আমি wrote 2 নম্বর এখানে নিচে এবং কেন তা হস্তান্তর, যে যা এখনও আমি মান 2 একটি কপি আছে কোথাও মানে আবশ্যক কারণ সত্যিই, আমি এখন যে মান 8 অর্জিত ফিরে করেছি, আমি উপস্থিত RAM-র মধ্যে ফিরে যেতে প্রয়োজন এবং প্রকৃতপক্ষে 8 লিখে যেখানে একবার আমি 2 নম্বর ছিল. সুতরাং দৃশ্যত, ক্ষণস্থায়ী আক্ষরিক অর্থ, মান একটি অনুলিপি, এই ধারণা মনে রাখবেন. Ken আছে তার জিনিস, আমার হাতে ফেরত কিছু - এই ক্ষেত্রে 8 মত একটি মান - এবং তারপর আমি এই মান সঙ্গে কিছু করতে হবে যদি আমি এটা কাছাকাছি রাখতে চান. তাই এই সব অতি দীর্ঘ আগে পরিচিত হতে ফিরে আসা হবে. আপনাকে ধন্যবাদ এই ডেমো জন্য এখানে এত, Ken. [সাধুবাদ] খুব ভাল কাজ করেছেন. চলুন কিভাবে যে চরমভাবে ফাংশন কলিং যে এখানে আমরা কাজ করছি কিছু সাথে সম্পর্কিত দেখুন. আমাকে এগিয়ে যান এবং আমাদের আনা cubing উদাহরণ এখানে ফিরে. যে যদি আমরা আসলে এই বিষয়ে আরও গ্রহণ শুরু করতে চান বিজ্ঞপ্তি, আমরা যে সংখ্যা x যে এখানে হচ্ছে এর পাশ সম্পর্কে সচেতন থাকুন হতে যাচ্ছেন এটা কি আসলে এর ফাংশন হচ্ছে পাশ থেকে আলাদা. তাই আবার, কপি দ্বারা এই পাস মাত্র এক মিনিটের মধ্যে বেশ প্রাসঙ্গিক হয়ে যাচ্ছে. যাক এর কিছু যে অধিকার আছে এখনো পুরোপুরি কাজ না কটাক্ষপাত করা. আমি এগিয়ে যান এবং একটি তৃতীয় বগী উদাহরণ, যা প্রকৃতি দ্বারা ত্রুটিপূর্ণ হয় খুলুন চলেছি, এবং এটি buggy3 বলা হয় এবং এটি একটি সোয়াপিং ফাংশন এর কার্যকরী. এখানে আমরা একটি প্রধান ফাংশন যে x এবং y করেনি ইচ্ছামত 1 এবং 2 যাও সক্রিয়া, যথাক্রমে আছে. আমরা GetInt ব্যবহার, কিন্তু আমরা শুধু একটি সহজ ব্যায়াম করার প্রয়োজন হতে পারে, তাই 1 এবং 2 হিসাবে হার্ড কোড. লাইন 21 এবং 22 ইঞ্চি, আপাতদৃষ্টিতে আমরা x এবং y, প্রতি লাইনে 1 প্রিন্ট আউট. তারপর লাইন 23, আমি দাবী আমি এই মান am সোয়াপিং, বিন্দু, বিন্দু, বিন্দু. আমি দৃশ্যত একটি ফাংশন কল লাইন 24 তথাকথিত swap 'র যে 2 আর্গুমেন্ট লাগে. এটা সম্পূর্ণই এর legit ফাংশন আর্গুমেন্ট 2 নিতে. আমরা printf ইতিমধ্যে এটা দেখা করেছি. সুতরাং দৃশ্যত: swap-x এবং y লাগে, এবং তার নাম সুপারিশ, আমি যে এইসব 2 মান বিনিময় করা হবে এই আশা. আমি তখন লাইন দাবি 25 "অদলবদল করা হয়েছে!" এবং আমি এক্স এবং ওয়াই পুনর্মুদ্রণ অধীন ভাবনাটি হলো এই যে প্রকৃতপক্ষে তারা হয়েছে করেছি আনা যায়. কিন্তু যদি আমি আসলে এই প্রোগ্রাম চালানো - আমাকে একটি টার্মিনাল উইন্ডোতে খুলুন, সম্পর্কে buggy3 করার সুযোগ - হিসাবে নাম সুপারিশ, এই ভাল শেষ হয়ে যাচ্ছে না কারণ আমি যখন, লিখুন যে x 1 বিজ্ঞপ্তি আঘাত, y 2, এবং এখনো প্রোগ্রাম শেষে, তারা এখনও বস্তুত,, একই. বিক্ষোভের উপর ভিত্তি করে শুধু তাই এখন Ken সঙ্গে, আসলে কি হচ্ছে উপর? এই swap 'র মধ্যে ডুব এর ফাংশন যাক. এটা অতি অল্প. এটি কেবলমাত্র একটি কোড দীর্ঘ কয়েক লাইন. কিন্তু কি মৌলিক সমস্যার সহজ বিবরণ বলা Ken সঙ্গে এখানে আপ উপর ভিত্তি করে? কেন ভাঙ্গা হয় ও swap 'র? [ছাত্রদের] আপনি একটি কপি পরিবর্তনশীল, না সংরক্ষণ করছেন. ঠিক. আমরা একটি কপি যাও, সংরক্ষণকারী পরিবর্তনশীল নিজেই করছি না. অন্য কথায়, দৃশ্যত মাপের swap 2 আর্গুমেন্ট, কোন int লাগে, এবং ইচ্ছামত বলা এর একটি এবং খ, এবং এখানে আমি x এবং y, ও যা হল যথাক্রমে 1 এবং 2 সালে পাশ করেছি, কিন্তু আমি আক্ষরিক পার করছি x এর মধ্যে না, আক্ষরিক আমি পার করছি y না, আমি x এর একটি অনুলিপি এবং y একটি কপি করছি ক্ষণস্থায়ী. যদিও এটা প্রায় হিসাবে আপনি এর কপি এবং swap 'র মধ্যে আটকানো মান যে আপনি এটি আসলে নিপূণভাবে চান. তাই আপনি যদি এর ক্ষেত্রে, যখন আমি প্রোগ্রাম শুরু লাইন নির্বাহ তারপর 35 36, আমি যখন লাইন 37 পেতে বিবরণ এই সময়ে,, কি একটি মান কি? গল্পের এই পর্যায়ে, লাইন 37, কি একটি এই সময়ে মান? >> [ছাত্রদের] 1. [Malan] এটা ঠিক হতে 1 অধিকার, উচিত, কারণ এক্স প্রথম আর্গুমেন্ট হিসাবে পাস করা হয়েছিল, এবং এই ফাংশনটি শুধু ইচ্ছামত তার প্রথম যুক্তি একটি আহ্বান করা হয়. একইভাবে দ্বিতীয় আর্গ্যুমেন্টটি y, এবং এটা ইচ্ছামত এর দ্বিতীয় যুক্তি বো কলিং. এই বৈপরীত্য আসলে মোটামুটি সহজভাবে ব্যাখ্যা করা হয়. সেটা ভাবুন. আমাদের কেউ ব্যক্তি printf লিখেছেন পরিচয়, তাই নিশ্চয়, সে বা তিনি কোন ধারণা কি আমাদের ভেরিয়েবল 30 বছর পরে করা হবে বলা যাচ্ছে হয়েছে. তাই হয়েছে কি কল ফাংশন আপনি লেখার মধ্যে ভেরিয়েবলের মধ্যে একটি পার্থক্য আছে এবং আপনি কি ফাংশন কল করতে বা কলিং ব্যবহার করছেন মধ্যে ভেরিয়েবল. তাই অন্য কথায়, আমি x এবং y হিসাবে আমার ভেরিয়েবল আছে না, কিন্তু যদি কারোর জন্য swap ফাংশন লিখিত ছিল, অবশ্যই সে জানা নেই করা হবে বলা কি আমার ভেরিয়েবল যাচ্ছে, বুঝতে হবে যে এটা কেন আপনি নামের এই দ্বৈত আছে. টেকনিক্যালি, আমি কাকতালীয় এই যেত না, কিন্তু তারা এখনও হিসাবে কপি মধ্যে হস্তান্তর করা হবে. এটা ঠিক করা একটি খাঁটি কাকতালীয় হবে aesthetically যদি যে ব্যক্তি করতে swap লিখেছেন তিনি একই নাম ব্যবহৃত. তাই গল্পের এই সময়ে, লাইন 37, একটি হল 1, 2 b হল, এবং এখন আমি তাদের অদলবদল এগিয়ে যান. প্রথম সব, আমাকে আসলে এই না আরো অনেক কিছু সহজভাবে. আমি কি ঐ কোড 3 লাইন এমনটি ছিল না. সম্পর্কে শুধু এই করুক: খ = একটি; একটি = বো; সম্পন্ন. কেন হয় এই ভাঙা যুক্তি,? এটা স্বজ্ঞাত জিনিস ধরনের অধিকার,? সুতরাং একজন পরিণত হয় এবং বো বো হয়ে, কিন্তু সমস্যা হল যত তাড়াতাড়ি লাইন 37 executes, কি এবং a ও b মান কি? একই, 1, কারণ আপনি clobbered আছে, তাই কথা বলতে, আপনি বো একটি সমান পরিবর্তন করেছেন. তাই একবার লাইন 37 মৃত্যুদন্ড কার্যকর করেনি, দারুণ, এখন আপনি কি নম্বর 1 2 কপি আছে এই ফাংশনের ভিতর, অতএব যখন আপনি লাইন 38 বলতে একটি = খ, আপনি ধরনের করছি মাতাল কারণ আপনি 1 করছি 1 বরাদ্দ. আপনি ধরনের করেছি মান সম্পর্কে যত্ন হারিয়ে গেছে. তাই এই মূল সংস্করণে, বিজ্ঞপ্তি আমি কি. আমি পরিবর্তে একটি কোড তৃতীয় লাইনটি ভালো যে তাকিয়ে ছিল. আমি একটি অস্থায়ী ভেরিয়েবল ডিক্লেয়ার. Tmp একটি অস্থায়ী পরিবর্তনশীল জন্য খুব সাধারণ নাম, এবং এটা কোন int কারণ এটা থেকে কি আমি একটি কপি করতে চান মেলে আছে. আমি tmp একটি ভিতর কপি সংরক্ষণ, তাই একবার লাইন 37 মৃত্যুদন্ড কার্যকর করেনি, একটি মান - দ্রুত বৈধতা চেক - 1, বো মান 2, tmp এবং মান হয় 1. তাই এখন আমি লাইন 38 চালানো হয়. একবার লাইন 38 executes, একটি বো মূল্যের লাগে. এবং বো ছিল 2, তাই এখন হল 2. তাই গল্পের এই সময়ে, একটি হল 2, b হল 2, এবং tmp 1, তাই এখন যুক্তি, এবং আমরা বো মধ্যে মাত্র চুর্পশব্দ tmp এর মান আমরা সম্পন্ন করতে পারেন. সুতরাং আমরা যে সমস্যার সমাধান করেছি. দুর্ভাগ্যবশত, যখন আমি এই ফর্ম এই প্রোগ্রাম চালানো, এটি আসলে কোনো মান কোনো অদলবদল না. কিন্তু পরিষ্কার হবে, কেন? আমি শুধু একটা মুহূর্ত আগে থেকে লজিক্যাল সমস্যা সমাধান, কিন্তু আবার, যদি আমি এই প্রোগ্রামটি চালানোর জন্য, x এবং y থাকা অপরিবর্তিত প্রোগ্রাম সঞ্চালনের এর সমাপ্তি. [শ্রবণাতীত ছাত্র মন্তব্য নেই] >> আমরা কিছু ফিরে আসেন নি, তাই এটা সত্য. কিন্তু এটি সক্রিয় আউট এখানে আছে একটি সমস্যার একটি বিট কারণ দূর পর্যন্ত, শুধুমাত্র জিনিস আমরা ফিরে আসতে পারব এক জিনিস, এবং এই সি একটি সীমাবদ্ধতা আপনি শুধুমাত্র ফিরে সত্যিই এক মান, হতে পারে যে ক্ষেত্রে আমি ধরনের এখানে আটকে কারণ আমি এক্স নতুন মূল্য ফেরত দিতে পারে বা আমি y নতুন মূল্য ফেরত দিতে পারে, কিন্তু আমি উভয় ফেরত চাইবেন. সুতরাং এখানে ফিরে সহজ সমাধান হয় না. কিন্তু মৌলিকভাবে সমস্যা হয় কেন? কি আসলে আমরা আনা? [ছাত্রদের] এবং a ও b. >> A ও b. কিন্তু a ও b হল x এবং y, যার মানে আমরা ঠিক এই কাজ করে কি কপি, আমরা মাত্র 3 মিনিট সময় ব্যয় করতে swap ফাংশন এবং এই ভেরিয়েবলগুলি সমস্ত 3 বিষয়ে কথা বলছি, এবং যে বিচ্ছিন্নতা মধ্যে দারুণ, পুরোপুরি সঠিক, কিন্তু a ও b এর সুযোগ রয়েছে এখানে শুধুমাত্র এই লাইনে হয়. তাই শুধু লুপ জন্য একটি ভালো, আপনি যদি একটি পূর্ণসংখ্যা ডিক্লেয়ার ভিতরে লুপ তোমার জন্য, একইভাবে, আপনি যদি একটি ফাংশন এবং a ও b এর ভিতরে আপনি যে লিখিত করেছি ঘোষণা করছি, তারা কেবল যে ফাংশন বৈধ ভিতর, যার মানে হিসাবে শীঘ্রই swap হিসাবে নির্বাহ করার জন্য এটা করা হয় এবং আমরা লাইন 25 লাইন 24 থেকে যান, এক্স এবং ওয়াই এ সকল পরিবর্তন করা হয়েছে না. আপনি শুধু একটা সময় পুরো অনেক ভেরিয়েবল কপি সোয়াপিং বরবাদ. সুতরাং দেখা যাচ্ছে যে এই সমাধান আসলে অ সুস্পষ্ট. এর কারণ আমরা শুধু 1 মান প্রত্যাবর্তন করতে পুরোপুরি ফিরে যাও মান যথেষ্ট না, এবং আমি সত্যিই একই সময়ে উভয় x এবং y অদলবদল করতে না চান, তাই আমরা এই ফিরে আসতে যাচ্ছেন. কিন্তু এখন জন্য, বুঝতে পারছি যে বিষয় মৌলিকভাবে যে a ও b হল কপি থেকে প্রাপ্ত এবং তারা তাদের নিজস্ব সুযোগ আছে. যাক এর কিছু উপায়ে এই সমস্যার সমাধানের চেষ্টা করুন. সম্পর্কে আসলে স্ক্রল এখানে ফিরে আসুন এবং আপ খুলুন, এর একটি এই চতুর্থ বৈকল্পিক, buggy4 বলে, যাক. কি হবে এই সম্পর্কে এটি একটি অনুরূপ কিন্তু সহজ সমস্যা সমাধানের আগে আমরা একটি ছুরিকাঘাত নিতে তাকান. এই প্রোগ্রামটি বৃদ্ধি বলা হয়, এবং এটি দৃশ্যত 1 যাও লাইন 18 x এর একটি পূর্ণসংখ্যা সূচনা করে. আমি দাবি x 1, তারপর আমি "বৃদ্ধিশীল ..." দাবি আমি তারপর বৃদ্ধি কল, কিন্তু তারপর লাইন 22 এবং 23 সালে, আমি দাবী এটা মান বৃদ্ধি করা হয়েছে, আমি দাবী x যাই হোক না কেন এখন হয় এটা - 2, সম্ভবতঃ - কিন্তু এই প্রোগ্রামটি বগী. সমস্যা কি? হাঁ. >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> যথাযথভাবে. তাই এক্স, ঘোষিত হয়েছে সম্ভবত লাইন 18,. যে প্রধান এর কোঁকড়া ধনুর্বন্ধনী ভিতরে হয়. সুতরাং এখানে সহজ উত্তর হল যে যখন এক্স এখানে বিদ্যমান, এটি লাইন 32 মধ্যে বিদ্যমান নেই, তাই এই প্রোগ্রাম এমনকি প্রকৃতপক্ষে না কম্পাইল হবে. কম্পাইলার যখন আমি এই কোড কম্পাইল করে দেখুন এ সম্পর্কে চিত্কার যাচ্ছে সম্পর্কে কিছু অঘোষিত শনাক্তকারী বা যে প্রভাব কিছু. আসলে, আমি কি চেষ্টা করুন. এই buggy4 করা হয়. এটা এখন পর্যন্ত. অঘোষিত শনাক্তকারী লাইন 32 'x' ব্যবহার. এবং প্রকৃতপক্ষে, এর আরো স্পষ্ট হতে আজ এখানে, তাই যাক যে এই সহায়ক ঘন্টার মধ্যে অফিসে এবং বাড়িতে. উল্লেখ্য, এটি একটি সামান্য cryptically লিখিত. কিন্তু যে ঝনঝন শব্দ আছে আমাদের yelled, বলছে buggy4.c: 32:5, সে আসলে দরকারী. মানে ত্রুটি অক্ষর অবস্থান 5 লাইনে 32 হয়. সুতরাং 1, 2, 3, 4, 5. যে সত্য আছে, যেখানে সমস্যা হয়. এবং এছাড়াও খুব,, অফিস সময়ে এবং বাড়িতে রাখবেন, আমি ভাগ্যবান এখানে. আমি এক ভুল আছে. এটা তুলনামূলকভাবে সহজ ফিক্স করা হচ্ছে. কিন্তু আপনি যদি একটি সম্পূর্ণ পর্দা অপ্রতিরোধ্য ত্রুটির বার্তা সম্পূর্ণ পেতে, আবার ঠিক বুঝতে পারি যে গভীরতম এক হতে হবে সর্বোচ্চ এক লাক্ষণিক পারে. সুতরাং সর্বদা উপরে নিচে থেকে আপনার পেছনে তাড়া বাগ নিচে কারণ মাত্র একটি চেইন ফ্ুলপাছ প্রভাব আছে পারে যে ভাবে আপনি আরো বেশী সমস্যা আসলে আপনি কি ইঙ্গিত করা হয়. তাই আমরা কিভাবে এই যদি আমার লক্ষ্য স্থির করা হয় x এর বাড়ায় পারে? >> [ছাত্রদের] x বিশ্বব্যাপী না. ঠিক আছে, তাই আমরা x বিশ্বব্যাপী করতে পারেন. চলুন শুরু করা যাক শর্টকাট যে আমি সতর্ক সম্পর্কে আগে, করতে হবে, কিন্তু নরক, আমরা দ্রুত ফিক্স করা প্রয়োজন, তাই আসুন শুধু int x আপ এখানে বলার. যে এক্স বিশ্বব্যাপী তোলে. তাই এটি এখন প্রধান অ্যাক্সেস এবং তা বৃদ্ধি করেনি অ্যাক্সেস আছে, এবং তাই আমাকে এগিয়ে যান এবং এখন এই সঙ্কলন. Buggy4 না, লিখুন. যাও এখন কম্পাইল করা হচ্ছে. চলুন buggy4 চালানো. এবং এটা আসলে কাজ মনে হয়. এই হল এই যে হিসাবে আমি বলতে কি এর এক, আমি হিসাবে না, হিসাবে আমি করেছেন এখানে, কারণ সাধারণ, আমাদের প্রোগ্রাম আরো অনেক আকর্ষণীয় এই তুলনায় অনেক এবং আর পাওয়া যাচ্ছে, যদি এবং কেবল জীবন এর সমস্যার সমাধান আপনার আপনার ফাইল শীর্ষে রাখা হয় সব ভেরিয়েবল, খুব দ্রুত প্রোগ্রাম পেতে horrifically কঠিন পরিচালনা করুন. সেটা কঠিন নতুন ভেরিয়েবলের নাম মনে আপ, সেটা কঠিন কি পরিবর্তনশীল কি করছে বুঝতে, সাধারণভাবে তাই, এই একটা ভালো সমাধান নয়. তাই এর এই কি ভালো দিন. আমরা এখানে একটি গ্লোবাল ভেরিয়েবল ব্যবহার করতে চান না. আমি এক্স বাড়াতে চান, ঠিক তা আমি স্পষ্টত পারে - দিনের শেষে, এই একটি অর্থহীন গল্প ধরনের কারণ আমরা এই কি - কিন্তু যদি আমি যে অপারেটর সম্পর্কে বা কি আমি যাও প্রধান নিজেই তা পরিবর্তন করতে অনুমতি দেওয়া হয়েছিল না জানি না, কিভাবে অন্যথায় এখানে উপর আমি কেন এই সময় বাস্তবায়ন করা যায়নি ঘনবস্তু কিন্তু বাড়ায়? আমি কিভাবে এখানে এই জিনিস পরিবর্তন? হাঁ. [ছাত্রদের] x এর মধ্যে পাস এবং তারপর ফিরে [শ্রবণাতীত] >> ঠিক আছে, ভাল. সুতরাং কেন আমি x এর মধ্যে না পাশ করে এবং তারপর বরং এটা ফেরত দিতে, কেন শুধু আমি না x + 1 টি ফেরত. একটি দম্পতি আরো জিনিষ এখানে পরিবর্তন আছে. আমি ঠিক দিকে যাচ্ছে না. আমি আর কী করতে হবে না যাও খামচি? অন্য কেউ. হাঁ. [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] আমি বর্ধন ফেরত টাইপ পরিবর্তন প্রয়োজন কারণ এটি না বাতিলযোগ্য এর. অকার্যকর অর্থ কিছুই না হলেও এখন এটা স্পষ্ট হচ্ছে, তাই এই পরিবর্তন প্রয়োজন যাও - >> [ছাত্রদের] int. যাই হোক না কেন আসলে আমি ফিরে যাও করছি সঙ্গে সামঞ্জস্যপূর্ণ হবে int. এখন অন্য কোন কিছু এখনও বগী এখানে. হাঁ. [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> [Malan] আমি এক্স বাড়ায় প্রয়োজন? [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> [Malan] আহ, তাই আমি এক্স পাস প্রয়োজন. আমি এখানে এই প্রয়োজন. >> [শ্রবণাতীত ছাত্র মন্তব্য নেই] [Malan] সুতরাং প্রোটোটাইপ, আমি এই পর্যন্ত এখানে পরিবর্তন আছে. তাই এই যাও কোন int হয়ে আছে, এই হয়ে আছে - হুম, আমি আসলে একটি বাগ আছে নিচে এখানে. যাক এই প্রথম এক ফিক্স. এই আসলে কি করা উচিত? এটা কোন int কিছু করা না হয়. এটি এক্স, হতে উন্মুক্তভাবে কিন্তু, হতে পারে যদি আপনি আপনার ভেরিয়েবল x সব কলিং, এটা কম পরিষ্কার যা যা করবে. সুতরাং এর ইচ্ছামত শুধু একটি ভিন্ন আমার সাহায্যকারী ফাংশন নামকরণের জন্য কনভেনশন চয়ন যাক, ফাংশন আমি লিখছি না. আমরা, কল বা আমরা একে ডাকতে পারে করব - চলুন শুরু করা যাক ফোন নম্বর এটি এমনকি আরো স্পষ্ট হবে. আমি তখন যাও যাই হোক না কেন নম্বর হল প্লাস 1 ফিরে আছে, এবং এখন আমি 1 অন্যান্য জিনিস আপ পরিবর্তন এখানে এবং অন্য একটি বিষয় এখানে আছে. কি করে আমি লাইন 21 প্রথম পরিবর্তন আছে? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] [Malan] আমি এক্স এটি দায়িত্ব অর্পণ করা আছে. আমি শুধু বৃদ্ধি কল (x) করতে পারেন. আমি বাম দিকে x এর মান পরিবর্তন করে উত্তর মনে রাখা প্রয়োজন. এবং যদিও x বর্তমান বাম এবং ডান, যা সম্পূর্ণই জরিমানা কারণ প্রথম ডানদিকের সাইড মৃত্যুদন্ড কার্যকর পরার পরে বাঁদিকের জিনিস মধ্যে plopped সম্ভার - এই ক্ষেত্রে এক্স. এবং সর্বশেষে, তাহলে এই একটি সহজ ফিক্স এখন. এই মাত্র সুসংগত হওয়া আবশ্যক কি এর নিচে নিচে, int-নম্বর. সুতরাং একটি পরিবর্তন পুরো একটি সত্যিই মূঢ় ফাংশন জন্য গুচ্ছ কিন্তু যে আমরা ক্রমবর্ধমান করতে চাইবেন প্রতিনিধি. সুতরাং buggy4 করা. আমি কোথাও মাতাল করেছি. ওহ, আমার ঈশ্বর. 6 লাইন প্রোগ্রামে পাঁচ ভুল. তাই লাইন 18 এর ভুল, চরিত্র 5? আমি এই, int-ডিক্লেয়ার আছে. চলুন দেখুন. অন্য একটি ত্রুটি আভা আছে. ওহ, আমার ঈশ্বর - 19, 18, 21 - আবার কিন্তু, আমি কি শুধু পর্দা, সাফ এখানে কন্ট্রোল এল, ঝনঝন শব্দ এবং পুন: প্রকাশ. তাই 5 সমস্যা আসলে ঠিক যে 1. তাই এখন এর buggy4 চালানো যাক, লিখুন. Whew, সঠিকভাবে x এর মান বৃদ্ধি হয়েছে. ঠিক আছে. কিভাবে নম্বর বাড়ায় উপর কোন প্রশ্ন? হাঁ. [শ্রবণাতীত ছাত্র প্রশ্ন] >> গুড প্রশ্ন. কিভাবে এটি যে আমি শুধু সংখ্যা x এবং পরিবর্তন করতে পারেন প্রোগ্রাম অবিলম্বে জানতে হবে? আবার তা, এই বিমূর্ততা হিসাবে মনে করি. সুতরাং যদি আমি প্রধান এবং কেন হল বৃদ্ধি উন্মুক্তভাবে,, আমি কি তার Ken কল রহমান না যত্ন. আমি কি তিনি কল কিছু যে এই কার্যকারিতা তার বাস্তবায়ন না আছে না যত্ন. এটি একটি বাস্তবায়ন বিশদ যে আমি, প্রধান, যত্নশীল না. এবং শুধু তাই পরিবর্তন ফাংশন ভিতরে এটা ধারাবাহিকভাবে - নম্বর এখানে এবং সংখ্যা এখানে - সব এটি লাগে তাই যতদিন আমি recompile. এটা ধরণের যদি আপনি মনে করেন আমাদের সম্পর্কে অনেক, ড্রাইভার এর লাইসেন্সধারীরা আপনার যারা যারা চালিত অথবা আপনি যদি আরও একটি গাড়ীর করেছি চালিত আছে, আমাদের অধিকাংশ কোন ধারণা কিভাবে একটি গাড়ী ফণা নীচে কাজ করে. এবং আক্ষরিক, যদি আপনি খুলুন ফণা, আমাদের অধিকাংশ আপ - নিজেকে অন্তর্ভুক্ত - হয় সত্যিই কি আমরা এ খুঁজছেন তা জানা যাচ্ছে না, যেমন আপনি এখন এই অধিকার ভালো স্টাফ সঙ্গে মনে হতে পারে ধরনের. কিন্তু আমরা কিভাবে কাজ করে গাড়ির যত্ন সত্যিই আছে না, আমরা যত্ন না কি rods এবং pistons মধ্যে গাড়ী এবং তারের ভিতর সব আসলে হয় না. তাই আপনি কল পিস্টন এখানে কোনো ব্যাপার এই ক্ষেত্রে কিছু নয়. একই ধারণা. হাঁ. >> [শ্রবণাতীত ছাত্র প্রশ্ন] যদি আগে হয় পরিবর্তনশীল XA মুহুর্তে আরো ব্যবহার আপনি, প্রোগ্রামার সর্বত্র তাদের পরিবর্তন, থাকবে. অথবা আপনি আক্ষরিক ফাইল, মেনু, না পারে, তাহলে খুঁজুন প্রতিস্থাপন করুন - যে ভালো কিছু - কিন্তু আপনি নিজে তা পরিবর্তন করতে যাচ্ছি. আপনি সামঞ্জস্যপূর্ণ হতে হবে. >> [ছাত্রদের] যদি একাধিক ভেরিয়েবল আছে [শ্রবণাতীত] এখানে একটি বিশেষ মত অর্ডার, যদি এই ছিল আরেকটি নম্বর int? >> [ছাত্রদের] সঠিক. [Malan] হ্যাঁ. আদেশ বিষয়ে যখন আপনি ফাংশন আহ্বান করা হয়. সুতরাং যদি আমি বর্ধন কলিং এখানে কিছু কিছু কমা সঙ্গে ছিল, একটি সরাসরি ম্যাপিং আছে. প্রথম পরিবর্তনশীল, যাই হোক না কেন এর বলা, এখানে উপর প্রথম আর্গুমেন্টের একটি কপি হয়. দুঃখিত. এই একটি লঘুবন্ধনী উচিত নয়. দ্বিতীয় এক সঙ্গে যুক্তি লাইন আপ. তাই অর্ডার, হ্যাঁ, বিষয়গুলি. ঠিক আছে. দুঃখিত. আমি সেখানে পেতে দীর্ঘ পথ গ্রহণ করেন. অন্য প্রশ্ন? ঠিক আছে. সুতরাং আসুন যদি আমরা কি এখানে আসলে যাচ্ছে না আঁকা একটা ছবি দেখতে পারেন ফণা তল, তাই কথা বলতে. এটি একটি আয়তক্ষেত্র যে আপনার কম্পিউটার এর মেমরি প্রতিনিধিত্ব করতে পারে. এমনকি আপনি যদি কোন ধারণা কিভাবে কাজ করে বা মেমরি উপস্থিত RAM-র কিভাবে কাজ আছে, অন্তত অনুমান করা হয় যে আপনি এটি bunches আছে এই দিন. আপনি এটা মেগাবাইটের বেশি পেয়েছেন, তাহলে গিগাবাইট পেয়েছেন, এবং আমরা সপ্তাহে 0 থেকে জানি যে একটি বাইট ঠিক কি? >> [ছাত্রদের] 8 বিট. 8 বিট, ডান? তাই 8 শূণ্যসমূহ এবং 1. তাই আপনি যদি আপনার কম্পিউটারের RAM-র একটি কোঁচ, উপস্থিত RAM-র 2 যোগাড় করে এই দিন আছে, আপনি মেমরি বা 2 বিলিয়ন বিলিয়ন বাইট বা প্রায় 8 বিলিয়ন ডলার বা 16 বিলিয়ন বিট আছে ভিতর আপনার কম্পিউটার. একটু অস্পষ্ট Willy উদাহরণের থেকে ভিন্ন, এটা সাধারণত আর চৌম্বকীয় কণা না. ল্যাপটপের মধ্যে অন্তত - - ধীরে এটা কঠিন রাষ্ট্র ড্রাইভ, SSDs, যে কোন চলন্ত যন্ত্রাংশ আছে. এটা সকল ইলেকট্রনিক. এটা সব খানে বিদ্যুত-ভিত্তিক. এই আয়তক্ষেত্র তাই শুধু মেমরি 1 বা 2 গিগাবাইট যে আপনি আছে প্রতিনিধিত্বমূলক হিসাবে মনে করি. এটা মেমরির একটি খণ্ড. কম্পিউটার বিজ্ঞান বিশ্বের করেনি ধরণের পার্টিশন বন্ধ মেমরির অংশ বিভিন্ন জিনিষ না. উদাহরণস্বরূপ, যদি এটি আপনার কম্পিউটারের RAM-র, হিসাবে সেখানে আয়তক্ষেত্র দ্বারা প্রস্তাবিত, এটি সক্রিয় যে কনভেনশন দ্বারা, তাই আপনার RAM-র উপরে, কথা বলতে, সাধারণত কি একটি টেক্সট অংশ বলা হয়. সেগুলো হল 0 সেঃ এবং 1s যে আপনি কম্পাইল করা আছে. সুতরাং যখন আমরা ফণা নীচে কি a.out হয় দিকে তাকিয়ে করেছি, এই সমস্ত 0 সেঃ এবং 1s, আপনি যখন একটি প্রোগ্রাম চালানো, যারা 0 সেঃ এবং 1s আপনার হার্ড ড্রাইভ থেকে কিছু বলা উপস্থিত RAM-র মধ্যে লোড করা হয়, এবং উপস্থিত RAM-র মধ্যে তারা শীর্ষে রাখা করছি. ইতিমধ্যে, আপনি অন্যান্য বিষয় আছে: তথ্য, আরম্ভ তথ্য uninitialize. যারা মেমরি 2 swaths গ্লোবাল ভেরিয়েবল, যা আপনি প্রায়ই ব্যবহার করবেন না পড়ুন তবে কখনও কখনও যদি আপনি না, তারা শেষ পর্যন্ত সেখানে হিসাবে ভাল. এনভায়রনমেন্ট ভেরিয়েবলের মান, যা আমরা অনেক সময় ব্যয় হবে না,: তারপর অন্য কিছু উপাদান আছে কিন্তু তারপর 2 গুরুত্বপূর্ণ বিষয় আছে যা সারা সেমিস্টারে প্রত্যাবর্তন করা, স্ট্যাকের এবং গাদা. তাই আপনার কম্পিউটার এর মেমরি সবচেয়ে যখন একটি প্রোগ্রাম সংরক্ষিত কিছু জন্য স্ট্যাকের নামক এবং কিছু গাদা বলা. গাদা সম্পর্কে আমরা আজ কথা বলার, করছি যাচ্ছে না কিন্তু আমরা স্ট্যাকের সম্পর্কে কথা বলতে হবে. স্ট্যাকে মাথের হাউস এ ভেলকি দেখান ভোজনশালা খাবার ট্রে চাক্ষুষ আপ বোঝানো হয় অথবা আপনি যেখানেই যাও হতে ঘটতে যেখানে ভোজনশালা কর্মীরা তাদের প্রতিদিন পরিষ্কার করা, তারা তাদের গাদা মেঝে থেকে উপরে, এবং একইভাবে মেমরি,, একটি স্ট্যাক কিছু নির্বাণ এই ধারণা আছে, একটি স্ট্যাক কিছু নির্বাণ, একটি স্ট্যাক কিছু নির্বাণ. আমরা কি এবং এই দ্বারা মানে? চলুন শুরু করা যাক, ঠিক এই ছবি নীচে অর্ধেক, আপনার কম্পিউটারের RAM এর উপর জুম, নিম্নলিখিত উপস্থাপিত. এটা পরিনত হয় যে যখন আপনি a.out অথবা হ্যালো মত একটি প্রোগ্রাম চালানো - যাই হোক না কেন প্রোগ্রাম যে আপনি লিখিত করেছি - আবার, যারা 0 সেঃ এবং 1s আপনার হার্ড ড্রাইভ, যা দীর্ঘমেয়াদী সংগ্রহস্থল থেকে লোড হয়, থাকে সেখানে এমনকি যখন আপনি প্লাগ, উপস্থিত RAM-র মধ্যে লোড করা মারবে না. উপস্থিত RAM-র তুলনায় দ্রুততর হয় হার্ড ড্রাইভ - এর হার্ড ড্রাইভের চেয়ে কম - কিন্তু যেখানে প্রোগ্রাম বাস যখন আপনি তাদের চালাচ্ছেন. তাই ডবল আপনি একটি Mac বা PC তে একটি প্রোগ্রাম ক্লিক করুন, এটি উপস্থিত RAM-র মধ্যে হার্ড ড্রাইভ থেকে লোড হয়. যত তাড়াতাড়ি এটা RAM-র, পথ শীর্ষে 0 সেঃ এবং 1s লোড এর মধ্যে চলতে চলতে, তথাকথিত টেক্সট সেগমেন্ট, তারপর কিন্তু যত তাড়াতাড়ি আসলে আপনার প্রোগ্রাম আরম্ভ চলমান, প্রধান ফাংশন, এবং বলা হয় প্রধান, হিসাবে আমরা দেখা করেছি প্রায়ই, স্থানীয় ভেরিয়েবল আছে, এবং এটি ints এবং স্ট্রিং এবং অক্ষর এবং ভালো হয়েছে. তাই আপনি যদি আপনার প্রোগ্রাম যে আপনি লিখিত আছে বা প্রোগ্রাম যে আপনি ডবল ক্লিক আছে ব্যবহৃত কিছু ভেরিয়েবল প্রধান ভেতরে, তারা মেমরি আপনার স্ট্যাকের নীচে শেষ পর্যন্ত, তাই কথা বলতে. আরো concretely কি, আসলে এর মানে কি? এই মাত্র মানে হল যে যদি আমরা আপনার কম্পিউটারে উপস্থিত RAM-র মাপ, বাইট হিসাবে নম্বর চালু ছিল, যে এই সংখ্যা 0 বাইট হতে পারে বিজ্ঞপ্তি, এই বাইট সংখ্যা 1, 2, 3, 4, 5, 6 হতে পারে, সমস্ত 2 বিলিয়ন আপ উপায় সমস্ত উপায় আপ সেখানে উপরে হবে. তাই অন্য কথায়, যখন উপস্থিত RAM-র বা মেমরি সম্পর্কে আমরা বাইট নিরিখে কথা বলুন, এটা মানে হল কেউ কি মেমরি যারা অংশ প্রতিটি নম্বর সিদ্ধান্ত নেওয়া হয়েছে. সুতরাং যখন আপনি কোন int জন্য 32 বিট প্রয়োজন অথবা আপনি একটি গৃহস্থালি জন্য 8 বিট প্রয়োজন, যেখানে তারা যা মেমরির মধ্যে শেষ? ধারণার দিক থেকে, তারা ঠিক এই জিনিস নীচে নামক স্ট্যাকের আপ শেষ. কিন্তু কি এখন আকর্ষণীয় হয় যখন প্রধান একটি ফাংশন কল - একটি ফাংশন বলা foo বিন্যাস, শুধু একটি অবাধ নামের অনুমান করা - মেমরি এই স্ট্যাকের নীচে কি হল প্রধান হয়; foo বিন্যাস এখন প্রধান উপরে মেমরি রাখা হয়. সুতরাং কোনো স্থানীয় ভেরিয়েবল যে foo বিন্যাস শেষ ধারণার উপরে মূল মধ্যে যারা সাজানোর আপ করেনি. যদি foo বিন্যাস ফাংশন কল অন্য নামক বার, যারা ভেরিয়েবল আপ এখানে শেষ. যদি বার অন্য কিছু এখানে, এখানে, এখানে কল. তাই এর একটি প্রোগ্রাম সম্পর্কে আকর্ষণীয় হয় যে হিসাবে আপনি ফাংশন কল এবং সেই হিসাবে ফাংশন ফাংশন কল হিসাবে এবং তাদের কর্ম ফাংশন কল, আপনি নির্মাণ মেমরির মধ্যে কর্ম এই স্ট্যাকের আপ. এবং শুধুমাত্র একবার একটি ফাংশন আয় আপনি যে স্মৃতি ফিরে পেতে শুরু. সুতরাং সহজতম উপায় মেমরির একটি কম্পিউটার প্রোগ্রাম চালানোর আউট এক ফাংশন যে ফিরে না লিখতে হয়. সুতরাং উদাহরণস্বরূপ, যাক এর একটি ইচ্ছাকৃতভাবে বগী প্রোগ্রামের সাথে হিসাবে অনেক প্রকট. সম্পর্কে এগিয়ে যান এবং না # অন্তর্ভুক্ত করা যাক, int প্রধান (অকার্যকর), এবং আমি যখন (2> 1), সম্ভবত যা আমাদের উপর কখনো পরিবর্তন করবে না চলেছি, এবং আমাকে এখন এগিয়ে যান এবং printf না. বাস্তবিক, যে কম চাক্ষুষরূপে আকর্ষণীয় হতে যাচ্ছে. এর এই করুক না. জন্য int i = 0; i> এ 0 - এর এই ভুল করার সুযোগ - তোমার +. এবং এর এখানে printf না. চলুন কি আমি প্রচারক ছিল অভ্যাস. চলুন শুরু করা যাক একটি পদ্ধতি আছে, অকার্যকর কোরাস, এবং আমরা int আমি বলবো, এবং তারপর আমি printf বলতে চলেছি - কোন, আসুন না এই আরো আকর্ষণীয়. চলুন আসলে এ সব মুদ্রণ কিছু না. ধুয়া (ঝ): এর মাত্র এই করুক না. ঠিক আছে. তাই এই বগী কারণ কেন? আমি এই করছি অভাবপূরণ হিসাবে আমি কি কারণ প্রোগ্রাম আসলে সুদের কিছু না. কিন্তু যে উদ্দেশ্য না. লক্ষ্য হল একটি প্রোগ্রাম যার প্রধান ফাংশন কি, দৃশ্যতঃ আছে লিখতে হয়? নিজেই কল করুন. এবং প্রকৃতপক্ষে, আমরা লুপ প্রয়োজন নেই. চলুন শুরু করা যাক এমনকি এই হিসাবে ঠিক তাই সত্যিই মৌলিক বাগ দেখিতে না হারান যাও সহজ করে. মুখ্য কল কিছু ধুয়া sing কোরাস, তারপর আমি কিছু মূঢ় করেছিলাম এবং আমি ধুয়া ধুয়া কল ছিল কারণ আমি অধিকৃত অন্য কাউকে হয়তো এটা বাস্তবায়ন হচ্ছে, এবং এখন এই এখনও সঙ্কলন করা যাচ্ছে না. আমি কি করতে হবে কি? আমি প্রোটোটাইপ প্রয়োজন, মনে রাখবেন. আমি আপ আছে এখানে অকার্যকর ধুয়া প্রয়োজন (int-i); সুতরাং এখন যদি আমি কি এখানে ডাউন - প্রকৃতপক্ষে, আমি কি বড় উইন্ডো ব্যবহার. চলুন এগিয়ে যান এবং কোরাস করা. চলুন এগিয়ে যান এবং কোরাস করা. অঘোষিত শনাক্তকারী আমি ব্যবহার. ওহ, যে ছিল মূঢ়. আমরা যুক্তি প্রয়োজন হয় না. এর ঠিক এই করুক না. আমি ইচ্ছুক আমরা এই ভাবে শুরু করেছে. এটা হয়েছে একটি সহজ প্রোগ্রাম লিখতে হবে. এখন পর্যন্ত. এখন আমি কি আমার টার্মিনাল উইন্ডোতে পুনরালোচনা, ঝনঝন পুন: প্রকাশ, এবং এখানে আমরা যান. এটা ছিল সত্যিই দ্রুত. ঠিক আসলে কি ঘটেছে, যদিও? অবশ্য, এখন আমি মুদ্রণ লাইন যুক্ত করুন যাতে আমরা দেখতে পাবেন. সম্পর্কে বলতে printf ("আমি এখানে আছি") যাক - কোন ভেরিয়েবল. আমরা যে মত ছেড়ে দেব. সম্পর্কে পুন: প্রকাশ করা যাক. আমাকে ধুয়া পুন: প্রকাশ. এবং ... চলো. বর্তা. একটি সরাইয়া হিসাবে, কারণ এখনও তা করেনি ক্র্যাশ না? সেগমেন্টেশন ফল্ট সুপার ফাস্ট আগে ঘটেছে. [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> যথাযথভাবে. সুতরাং মুদ্রণ সময় লাগে, ঠিক? এটা কম্পিউটার এর পক্ষ থেকে আরো কাজ নেয়. এবং এটা আছে: সেগমেন্টেশন ফল্ট. তাই লক্ষ্য করা ঠিক কিভাবে দ্রুত প্রোগ্রাম সঞ্চালন করা হয়. আপনি যদি কিছু, সুপার ফাস্ট মুদ্রণ করছি না. কিন্তু আমরা এখনও এই সেগমেন্টেশন ফল্ট না কারণ কি ছিল? আপনি যদি মনে করেন যে সম্পর্কে কিভাবে আপনার কম্পিউটার এর মেমোরি আউট পাড়া হল, এই মেন করা হয়, কিন্তু এখানে এর শুধু এই ধুয়া কল দেওয়া, এবং এর যাক এই ধুয়া কল. এবং এখন যদি আমি আমার নন্দনতত্ব অধিকার না, শুধু এই কোরাস, কোরাস, কোরাস বলতে হবে, কোরাস, কোরাস, কোরাস, কোরাস, বিজ্ঞাপন nauseum, এবং ঘটনাক্রমে, কি ঘটতে যাচ্ছে? যদি বড় ছবি আক্ষরিক,, এই, ঠিক কি ধারণার দিক থেকে? স্ট্যাকের overruns গাদা. অথবা, খারাপ, তাহলে টেক্সট সেগমেন্ট সহ সবকিছু, পদদলিত করা, যা 0 সেঃ এবং 1s যে আপনার প্রোগ্রাম প্রতিনিধিত্বকারী. সংক্ষেপে, এই শুধু সুপার, সুপার খারাপ. তোমার প্রোগ্রাম নিয়ন্ত্রণ করেনি spiraled আউট. আপনি পথ আরো মেমরি তুলনায় আপনি উদ্দেশ্যে ব্যবহার করছেন সমস্ত কারণে এই একটি ক্ষেত্রে ভুল মূঢ়, অথবা এই ক্ষেত্রে একটি খুব ভেবেচিন্তে কাজ ফাংশন নিজেই কলিং. এখন, এই সব খারাপ হয় না. নিজেদের কলিং কার্যাবলী আসলে মহান ক্ষমতা আছে আপনি যখন এটি সঠিকভাবে ব্যবহার. আমি এখানে সঠিকভাবে ব্যবহৃত এটি নি. তাই এই হয়, কিন্তু সব খারাপ না যে আসলে আমি নিজেকে থামাতে না কলিং একটি মৌলিক এই প্রোগ্রামের এখানে দুর্বলতা. তাই যেখানে আমরা এই সমস্ত সাথে যাচ্ছে? এর সত্যিই কি ঘটছে? যখন আমি বর্ধন ফাংশন কল মত আমরা যারা উদাহরণ মধ্যে কাজ হয়েছে, 1 আমি যে আমি পাস ইনের মত একটি মান আছে আমি 1 নম্বর একটি কপি পাস, যাতে নিম্নলিখিত ঘটবে. বৃদ্ধি উদাহরণ ঢোকা চলুন শুরু করা যাক, এখানে ডান উপর এই লোক. এখানে আসলে এর ঘটছে. আমি যখন কল বৃদ্ধি এবং আমি x এর মধ্যে পাস pictorially,, এখানে কি হচ্ছে এই. যদি আমি 1 এর মান এখানে সংরক্ষিত আছে এবং আমি আসলে বৃদ্ধি কল, যা এখন বলা হয় ধুয়া - রহমান সম্পর্কে এখানে নিক্ষেপ বন্ধ করা হয়. চলুন শুরু করা যাক এই বৃদ্ধি কল, এবং আমরা কি এই পরের ফাংশন হবে জানি না. তাই আসলে কী ঘটছে এখানে প্রধান কোথাও আমি মেমরি তাল আছে যে সংখ্যা 1 সংরক্ষণ করা হয়. আমি যখন কল বৃদ্ধি, আমি মেমরি অন্য চাঙ্গড় ব্যবহার করছি, কিন্তু এখন আমি 1 কপি আছে. যখন আমি যে মান বাড়ায়, এই পরিণত 2, কিন্তু তারপর কি ঘটবে হিসাবে আয় বৃদ্ধি যত তাড়াতাড়ি? এই মেমরি শুধুমাত্র অপারেটিং সিস্টেমের হস্তান্তর পরার ফিরে, যার মানে আপনি সব সম্পন্ন করেছি কিছুই দরকারী. 1 যে প্রধান হয়েছিল আছে এখনও আসলে আছে. তাই যেখানে আমরা এই সাথে যাচ্ছে? এটি সক্রিয় যে মেমরি আপনাকে এই বাইট ব্যাক টু ব্যাক ক্রম আছে যে আপনি স্টাফ রাখতে পারেন এবং এটি সক্রিয় যে ইতিমধ্যে আমরা কিছু করেছি দেখা যে বিষয় জড়িত থাকে নির্বাণ ফিরে যাও যাও যাও ব্যাক ব্যাক ব্যাক. একটি স্ট্রিং সপ্তাহ 1 এবং এখন সপ্তাহ 2 উপর ভিত্তি কি? এটি শুধু একটি অক্ষর সংগ্রহে. সুতরাং এটি সক্রিয় আউট ঠিক হিসাবে আপনি মেমরি সংখ্যাগুলি লাগাতে পারেন, একভাবে মেমরি আপনাকে অক্ষর লাগাতে পারেন. এবং একবার আমরা যা মেমরির মধ্যে আরম্ভ নির্বাণ অক্ষর ফিরে যাও ফিরে যাও যাও ব্যাক ব্যাক, এটি সক্রিয় করে একটি লুপ বা মত একটি লুপ করার জন্য সহজ জিনিস ব্যবহার করে, আমরা বাঁ দিক থেকে ডানদিকে অক্ষর উপর একটি স্ট্রিং মধ্যে পুনরুক্তি করতে পারেন এবং বিভিন্ন অক্ষর সেগুলি সম্পূর্ণভাবে মালিশ শুরু - একটি বো হতে পারে, খ গ হতে পারে - যাতে শেষ পর্যন্ত, আমরা একটি ইংরেজি বাক্য যে আসলে অর্থ গ্রহণ করতে পারেন এবং একটি সময়ে যারা এক অক্ষর প্রতিটি রূপান্তর অধিকার আমাদের কম্পিউটার এর মাধ্যমে মেমরি হেঁটে যাও আসলে এনক্রিপ্ট বাকি. তাই আমাদের এখানে এর পাঁচ মিনিট ব্রেক নেয়া যাক, এবং যখন আমরা ফিরে আসুন, আমরা তথ্য scrambling এই প্রক্রিয়া শুরু করব. ঠিক আছে. আগে কিছু ক্রিপ্টো মধ্যে আকর্ষণীয় এবং আমরা এইসব জিনিস বলা অ্যারে, সম্পর্কে কোন প্রশ্ন জন্য বিরতি দেওয়া কারণ আমি মনে সত্যিই আমি ধরনের বলার ঐ বিষয়ের কিছু. সুতরাং এর ঠিক করা যাক এখন যদি আমরা করতে পারেন. আমরা শুধু ফিরে মান সম্পর্কে বললাম, আমরা আর্গুমেন্ট সম্পর্কে বললাম, এবং আমরা এই ধারণা সম্পর্কে বললাম, যা আমরা ফিরে যাও সপ্তাহের মধ্যে আসবো, একটি এইসব স্তুপীকৃত ট্রে আভা মেমরি হিসাবে দেখছেন, তাই কথা বলতে, উপর থেকে নিচ পর্যন্ত, যেমন প্রতিটি ট্রে যে স্ট্যাক করা পরার একটি ফাংশান বর্তমানে বলা হচ্ছে প্রতিনিধিত্ব করে. কোন প্রশ্ন? আমাকে এখানে একটি প্রশ্ন জিজ্ঞাসা করুন. আমাকে কি এটা আমাদের আগে প্রশ্ন এ কিছু আগে ছিল এই ফিরে অজটিল যে বৃদ্ধি খোলা লঘুবন্ধনী, int-নম্বর আছে, লঘুবন্ধনী বন্ধ - না কি int-নম্বর প্রতিনিধিত্ব করেন? [ছাত্রদের] একটি যুক্তি. >> একটি যুক্তি. ঠিক আছে. কিন্তু কি একটা যুক্তি? [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> কি যে? >> [ছাত্রদের] কিছু যে আপনি পাস ইন ঠিক আছে, তাই কিছু যে আপনি পাস ইন এবং আরো সাধারণভাবে, এটি শুধু ইনপুট. আপনি যদি একটি জীবনের ফাংশন এবং যে ফাংশন এর উদ্দেশ্য লেখা ছিল যাও একটু ভিন্ন প্রত্যেক সময় আপনি এটি ব্যবহার করতে কিছু হয়, তাহলে একমাত্র উপায় জন্য যে সত্যিই ঘটতে ইনপুট সঙ্গে এটি প্রদান করা হবে বলে মনে হচ্ছে যাতে তা যে ইনপুট সঙ্গে কিছু সময় বিভিন্ন প্রতিটি করতে পারেন. তাহলে আপনি দুটি জিনিস যখন একটি ফাংশন ইনপুট নেয় নির্দিষ্ট করতে হবে. আপনি নামের যে আপনি যে ইনপুট দিতে চান নির্দিষ্ট করতে হবে কেবল আপনার নিজের সুবিধার জন্য যাতে আপনি তা উল্লেখ করতে পারেন ফাংশানের যে আপনি নিজে করুন, লেখা হিসাবে আমি 32 লাইন এখানে কি হয়. কিন্তু আপনাকে তার টাইপ কারণ সি একটি প্রোগ্রামিং ভাষা নির্দিষ্ট করতে হবে যে শুধু প্রয়োজন যে আপনি যদি একটি পরিবর্তনশীল করতে চান, আপনি কম্পিউটার কি তথ্য টাইপ এটা বলা আছে, বৃহৎ অংশ যাতে তা জানে কতগুলি বিট যে পরিবর্তনশীল জন্য বরাদ্দ করা যাও কারণ এটি হতে পারে 6 - দুঃখিত, এটি 6 করা সম্ভব হবে না. এটা 16 হতে পারে, এটি 8 হতে পারেন, এটি 32, এমনকি 64 হতে পারে, কিন্তু কম্পিউটার জানা প্রয়োজন. এখন, বাম দিকে int-বিপরীতে দ্বারা কি, প্রতিনিধিত্ব করে? [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> কি যে? >> [ছাত্রদের] ফাংশন প্রকার. একটি ফাংশন টাইপ এবং, আরো নির্দিষ্টভাবে, এর উত্পাদনের টাইপ. রাইট. সুতরাং প্রথম বন্ধনী জিনিস উপস্থাপন করে যেহেতু তার ইনপুট, যদি থাকে, বাম জিনিস থেকে আউটপুট তার প্রতিনিধিত্ব করে. এবং এই ক্ষেত্রে, দৃশ্যত বৃদ্ধি কোন int ফেরৎ, এবং তাই int-এই ফাংশন রিটার্ন টাইপ. কি মানে ফিরে যাও? আক্ষরিক, আপনি ফিরে অভিব্যক্তি ব্যবহার এবং তারপরে যদি ফিরে আপনি কি হয় অভিব্যক্তি ডানদিকে একটি পূর্ণসংখ্যা, তারপর যে কি আমরা অঙ্গীকার করেছি প্রকৃতপক্ষে সঙ্গে সামঞ্জস্যপূর্ণ. হ্যালো, বিশ্ব - - আপনি ভালো কিছু করতে না পারে কারণ যে একটি স্ট্রিং. একথাও ঠিক যে, এটি একটি পূর্ণসংখ্যা হয় না. তাই সংক্ষিপ্ত, বোঝা আমাদের সত্যিই হয়, প্রোগ্রামার, নির্দিষ্ট করা আমরা কী করছি এবং ফিরে যাও হিসাবে তারপর আসলে এটা সম্পর্কে ফিরে যান. এখানে প্রসঙ্গ এখন মনে হয় যে আপনার কম্পিউটার এর একটি গিগাবাইট মেমরি, 2 গিগাবাইট - যাই হোক না কেন - হয়তো এটা আরো হয়তো, এটা কম, কিন্তু কম্পিউটার বিভিন্ন বিভাগে তার হিসাবে এটি দেখে. কিছু যায় নিচে আছে, অন্য কিছু যায় সেখানে আপ, বিভিন্ন উপাদান মধ্যম যায়, এবং আজ আমরা গল্প বলছি শুরু, কিন্তু আমরা এই সময়ের যাও ফিরে পাবেন. এখন জন্য, মেমরি শুধুমাত্র টুকরা আমরা সত্যিই যত্নশীল হয় টেক্সট সেগমেন্ট কারণ ঠিক সেই 0 সেঃ এবং 1s যে ঝনঝন outputted উপস্থাপন করেনি. সুতরাং যখন আপনি a.out ভালো কীবোর্ড এ একটি কমান্ড ব্যবহার করুন ডবল বা আপনি উইন্ডোজ বা ম্যাক অপারেটিং সিস্টেম একটি আইকন ক্লিক করুন, আপনার প্রোগ্রাম থেকে আপনার হার্ড ড্রাইভে উপস্থিত RAM-র মধ্যে লোড করা হয় এবং এটি আপনার কম্পিউটারের RAM-র শীর্ষে, তাই কথা বলতে plopped এর. এদিকে, হিসাবে আপনার প্রোগ্রাম আরম্ভ চলমান এবং প্রধান নামক পরার আপনি প্রোগ্রাম লেখেন, বা প্রোগ্রাম মাইক্রোসফট বা আপেল লিখেছেন, নিজের স্থানীয় ভেরিয়েবল কোনো আপনার কম্পিউটার এর মেমরি নীচে শেষ আপ ডাউন আছে. কিন্তু প্রধান ফাংশন কল অন্য যে নিজেই ভেরিয়েবল অথবা যদি আর্গুমেন্ট আছে, তারা এটি উপরে শেষ. এবং যদি কিছু ফাংশন কল যে, তারা এটা উপরের শেষ, উপরে উপরে,. এবং শুধুমাত্র একবার একটি ফাংশন নির্বাহ করার জন্য এটা করা হয় ট্রে স্ট্যাকের মধ্যে, যাতে কোনো কথা বলতে, নিম্ন এবং নিম্ন পেতে শুরু. এবং এই কি তাহলে সংক্ষেপে মধ্যে,, ব্যাখ্যা দিয়েছে কেন যখন আপনি ঘনক্ষেত্র কল অথবা আপনি বৃদ্ধি কল, মান একটি কপি মধ্যে পার করছি. এবং কি যে pictorially মানে হল যে আপনি আক্ষরিক সংখ্যা 1 করছি লেখা মেমরি আরেকটি অংশ, পরিবর্তন যে 1 বৃদ্ধি ক্ষেত্রে যাও 2 অথবা ঘনক্ষেত্র ক্ষেত্রে একটি 8 এবং তারপরে যে মেমরি দূরে নিক্ষেপ যত দ্রুত বৃদ্ধি বা ঘনক্ষেত্র ফাংশন আয়. প্রশ্ন. [ছাত্রদের] কোথায় গ্লোবাল ভেরিয়েবল সংরক্ষণ করা হয়? গ্লোবাল ভেরিয়েবল কি বর্তমানে বলা সক্রিয়া তথ্য বা uninitialized তথ্য সংরক্ষিত হয়, পার্থক্য হচ্ছে যদি আপনি একটি বিশ্বব্যাপী পরিবর্তনশীল আছে এবং আপনি তা অবিলম্বে অর্পণ মান সাইন সমান, এটা আছে শীর্ষে সমাপ্তি, এবং আপনি যদি শুধুমাত্র বলতে int x; কোন মান, এটা শেষ পর্যন্ত উপস্থিত RAM-র মধ্যে সামান্য কম সহজভাবে দ্বারা কনভেনশন. অন্য প্রশ্ন? ঠিক আছে. তাই এই ছবি হিসাবে আমরা ফিরে পেতে আরো শক্তিশালী হবে সঙ্গে সঙ্গে কম্পিউটার কি আমরা করতে পারি, কিন্তু এখন জন্য, এর একটি ক্রিপ্টোগ্রাফি সংক্ষিপ্ত ভূমিকা আছে যাক, ক্রিপ্টোগ্রাফি একটি নির্দিষ্ট ধরনের যে বিশ্বের সকল সমস্যার সমাধান না না কিন্তু তাদের মধ্যে কিছু আছে সমাধানের জন্য. এখানে এই ক্ষেত্রে, আমরা কিছু বলা গোপন-কি ক্রিপ্টোগ্রাফি আছে. গোপন-কি ক্রিপ্টোগ্রাফি, নামের প্রস্তাবক হিসাবে, একটি গোপন নিরাপত্তা থেকে আহরিত. উদাহরণস্বরূপ, যদি আপনি গ্রেড স্কুলে ফিরে ছিল এবং আপনি একটু গোপন প্রেমপত্র ক্ষণস্থায়ী ছিল ছেলে বা মেয়ে আপনাকে নিষ্পেষণ, যদি আপনি শ্রোতার মাধ্যমে যে নোট পাস চেয়েছিলেন ছিল, আপনি সম্ভবত যেমন ইংরেজিতে একটি নোট বা কিছু লিখতে যাই হোক না কেন আপনার স্থানীয় ভাষা হয় না. বরং, আপনি এটি এনক্রিপ্ট অথবা আপনি শুধুমাত্র একটি টেক্সট মেসেজ পাঠাতে তাদের এইসব দিন পারে. কিন্তু আসলে আপনি পাস শ্রেণীকক্ষ জুড়ে একটি নোট তাদের পারে. এবং এই না নিরাপদভাবে এমনভাবে যে আপনার বন্ধু এবং শিক্ষক না কি আপনি লেখার না জানি, আপনি একটি মোটামুটি সহজ এলগরিদম সঙ্গে আসা পর্যন্ত হতে পারে, যদিও তরুণ হতে পারেন, শুধু শব্দের হামাগুড়ি দিয়া আরোহণ. তাই এর পরিবর্তে একটি লেখার আপনি বো লিখতে পারে, পরিবর্তে আপনি খ গ লিখতে পারে, পরিবর্তে গ ঘ আপনি লিখুন, এবং তাই ঘোষণা হতে পারে. অথবা আপনি আরো পরিশীলিত অনুবাদ সাথে আসতে পারেন চিঠি বিভিন্ন অক্ষর. কিন্তু ধরা হয় যাকে আপনি এই নোট প্রেরণ করছি ছেলে বা মেয়ে প্রয়োজন কিছু, যা কি, সম্ভবত আপনি জানেন? >> [ছাত্রদের] আপনি কী প্রেরণ করছেন. কি একটি এবং এর বো এর এবং এর গ এবং সম্মানের গুলি মধ্যে যে ম্যাপিং মত কি আপনার গোপন করা হয়,. হয় এটা অক্ষর প্রতিটি 1 থেকে একটি বো, বো যাও যাও গ যেতে যোগ? এটা যে তুলনায় আরো জটিল? যাতে আপনি এবং আপনার ভালোবাসার এই গোপন তথ্য আছে প্রয়োজন, কিন্তু এখানে একটি নিয়মিত 22 ধরনের আছে. যদি এই হয় খুব প্রথমবার বর্গ মাধ্যমে এই প্রেমপত্র পাঠানোর করছি, কিভাবে যে ছেলে বা মেয়ে না কি এমন হয় গোপন জানা যাচ্ছে? তাই গোপন চাবি ক্রিপ্টো বিশ্বের সকল সমস্যার সমাধানের জন্য না, এবং এর একটা সম্পর্ক আসলে এখানে যে আমরা আসা সেমেস্ত্র এর শেষের দিকে ফিরে পাবেন. একইভাবে আমাদের অধিকাংশ জানি যে কেউ ইনস্ট্যান্সের জন্য কাজ করে, Amazon.com এ, না, এবং সম্ভবত এখনো আমাদের অনেক Amazon.com আছে পণ্যদ্রব্য কেনা, এবং আমরা যে এই ই কমার্স লেনদেন নিরাপদ শেখানো অনুমান করছি. URL-এ সম্ভবত বলছেন এটির মধ্যে দিয়ে https, এর হয়তো সেখানে একটি নিরীহ সামান্য তালা আইকন কোথাও, ক্রিপ্টোগ্রাফি কিছু আপনার ক্রেডিট কার্ডের তথ্য সুরক্ষিত আছে মধ্যে আপনি এবং Amazon.com. এবং এখনো যদি ক্রিপ্টোগ্রাফি জড়িত থাকে কিছু গোপন বুদ্ধিমান এবং এখনো আমি জানি না এবং ইসলাম কাউকে না আমি অবশ্যই ব্যবস্থা করেছি গোপন কোন ধরনের না ইসলাম কারও সাথে, কিভাবে আমার কম্পিউটারে বা আমার ব্রাউজার এই করছেন? এটি সক্রিয় আউট সম্পূর্ণভাবে আছে ক্রিপ্টোগ্রাফি অন্যান্য ধরনের যে যে সমস্যার সমাধানের জন্য. কিন্তু আজকের জন্য, আমরা একটি সহজ মনোনিবেশ করব যেখানে আপনি কিছু জানেন গোপন আগাম ব্যবস্থা করতে পারে ভালো +1 করুন অথবা এর একটি এবং খ এর মধ্যে কিছু ম্যাপিং. এবং সাধারণত ক্রিপ্টোগ্রাফি প্রক্রিয়ার এই যায়. আপনি কিছু প্লেইন টেক্সট, বাম এখানে ফোটানো আছে, আপনি এলগরিদম বা পদ্ধতির কিছু মাধ্যমে এনক্রিপ্ট করার জন্য এটি চালানোর জন্য - হয়তো যে শুধু একটি পরিণত বো, বো হয়ে গ - এবং তারপর আপনি ciphertext সঙ্গে শেষ. ইতিমধ্যে একবার, আপনার ভালোবাসার এই গোপন নোট পায়, সে আছে তারপর সাধারণত দ্বারা ডিক্রিপ্ট এটি যে অ্যালগরিদম reversing সুতরাং হিসাবে প্লেইন টেক্সট ফিরে পেতে. এই প্রকৃত সমগ্র আদর্শের আছে. উদাহরণস্বরূপ, এই সামান্য একটি গোপন সঙ্কেতমোচক রিং, এবং এই অর্থে যে এখানে আছে দুটি dials মধ্যে একটি আংটি. এই জিনিস বাইরে পরিধি অন করুন, Z মাধ্যমে একটি চিঠি আছে, যদিও তারা র্যান্ডম ক্রম করছি, এবং ভেতরের, এর আসলে সেখানে কিছু সংখ্যা যেমন যে এই রিং সঙ্গে আপনি বাইরে ধরনের কিন্তু চালু করতে পারবেন না ভিতর যাতে চিঠি সঙ্গে রেখায় নম্বর আপ. একটি সিনেমা নামক একটি ক্রিসমাস গল্প থেকে, আপনি যে সামান্য Ralphie দেখতে পাবেন ছিল তা জিনিসটা কি লিটল অনাথ অ্যানি এর গোপন বার্তা ছিল তাকে আগ্রহান্বিত যে সাংখ্যিক বার্তা আকারে হয়েছে বিশ্বকে একটি খাদ্যশস্য বাক্স উপর, আমি মনে করি, এবং আপনি কি সব সামান্য কার্ড খাদ্যশস্য বাক্সে পরিপ্রেক্ষিতে যে স্তূপাকার করা ছিল, আপনি তাদের মেইল ​​ছিল, আপনি গোপন সঙ্কেতমোচক রিং ফিরে পেতে ছিল যাতে অবশেষে আপনি চিন্তা করতে পারেন কি ম্যাপিং অক্ষর এবং সংখ্যার মধ্যে বা চিঠি এবং চিঠি. কিভাবে একটি কম্পিউটার আমরা রূপায়ণকারী বা ভালো জিনিস প্রতিনিধিত্বমূলক যেতে পারবেন? আমরা আমাদের নিজেদের মত প্রকাশের একটি সামান্য flexibly আরো একটি উপায় প্রয়োজন তুলনায় আমাদের ভেরিয়েবল পর্যন্ত করে নিতে পারে. আমরা ints করেছি ছিল, আমরা টুকিটাকি কাজ করেছি ছিল, আমরা floats এবং টেনিস এবং কয়েক অন্যদের ছিল করেছি, কিন্তু যারা আছেন মেমরি পৃথক টুকরা যা আমাদের জিনিষ প্রকাশ করে সত্যিই অনুমতি দেয় না শব্দ এবং বাক্য ও বাক্যাংশ. বস্তুত, আমরা বিষয়গুলো নামক স্ট্রিং করেছি, কিন্তু আমরা এই অঙ্গীকার যে আসলেই ঠিক CS50 লাইব্রেরি একটি সরলীকরণ যে আমরা ফিরে ছুলা উদ্দেশ্যে করছেন. তাই আসুন এখানে যে কি শুরু. আমাকে এগিয়ে যান এবং একটি ফাইল খুলুন - ফাইলগুলির সমস্ত উপলব্ধ, স্বাভাবিক হিসাবে, অনলাইন - তথাকথিত array.c একটি সমস্যা সম্পর্কহীন স্ট্রিং যাও কিন্তু সমাধানের যে একটি ছবি এখানে রঙে কিভাবে আমরা কিছু নামক একটি অ্যারে ব্যবহার করতে পারে. একটি অ্যারের একটি ডাটা টাইপ. এটা পরিবর্তনশীল একটি প্রকারের টাইপ একাধিক ক্ষুদ্রতর তথ্য ধরনের এটি ভেতরে আছে ফিরে যাও যাও যাও ব্যাক ব্যাক ব্যাক. সুতরাং উদাহরণস্বরূপ, যদি আমরা একটু প্রোগ্রাম যে দেয় আপনার ব্যঙ্গ গড় আপনি লিখতে চেয়েছিলেন যে জন্য 50 2 quizzes আছে ভালো একটা কোর্স, আপনি এই প্রোগ্রাম এমনকি গত সপ্তাহে এর কিছু উপাদানের উপর ভিত্তি করে খুব সহজেই লিখতে পারেন দ্বারা GetInt এবং ভেরিয়েবল কয়েক ব্যবহার: int-quiz1, int-quiz2. এবং এটি বেশ সহজবোধ্য. এটা হয়তো এর 10, সর্বোচ্চ 20 লাইন কোড একটি প্রোগ্রাম বাস্তবায়ন যে 2 ব্যঙ্গ স্কোর ব্যবহারকারী তারপর জিজ্ঞেস করল এবং তাদের গড় নির্ণয় দ্বারা পরিতিচিতে একসঙ্গে, 2 দ্বারা বিভক্ত করা, এবং তারপর ফলাফল মুদ্রণ. আমরা সম্ভবত না যে কিছু সংখ্যক মিনিট পরে চমত্কার নির্দ্ধিধায় এখন পারে. কিন্তু সমস্যা হল অনুমান ছিল যে 50 ক্যুইজ 3 বা 4. ধরুন আপনি যে একটি শ্রেণী যে সাপ্তাহিক ছিল quizzes জন্য একই প্রোগ্রাম ব্যবহার করতে চেয়েছিল. একটি বর্গ যে সাপ্তাহিক ক্যুইজ সম্পর্কে চিন্তা করেনি. যদি একটি সেমিস্টারে মধ্যে 16 বা তাই সপ্তাহের আছে এখন, আপনি 16 ভেরিয়েবল আছে: int-quiz1, int-quiz2, int-quiz3, int-quiz4. যত তাড়াতাড়ি আপনি শুরু এই অতিরেক এইজন্য, এই অনুলিপি এবং কোড পেস্ট, এটা আপনি চান একটি ভাল উপায় ছিল না শুরু করা উচিত. এবং সৌভাগ্যক্রমে অ্যারে এর কারণ, আছে. তাই এর এই না দেওয়া. প্রথমত, আমাকে একটি খুব সহজ বিষয় যে আমরা এ পর্যন্ত ব্যবহার করেছি না পরিচয় করিয়ে, কিন্তু আপনি কোড তা মাঝে মাঝে দেখতে পাবেন. এটা কি সাধারণভাবে এর নামক একটি ধ্রুবক. এটা অর্থে যে এই মান পরিবর্তন না একটি ধ্রুবক. মানুষের রীতিনীতি যখন একটি ধ্রুবক তৈরি সব বড় হাতের অক্ষরে ঠিক তাই যে সত্যিই এটি আপনার কোড মধ্যে ঘোরা আউট ব্যবহার করা হয়, # এবং বিশেষ অভিব্যক্তি যে আপনি সি ব্যবহার সংজ্ঞায়িত করা হয়. সুতরাং আমরা বলতে #, তারপর একটি স্থান নির্ধারণ করুন, তারপর আপনি যে শব্দ ধ্রুবক এর নামের জন্য ব্যবহার করতে চান এবং তারপর ধ্রুবক মান. এই একটি পরিবর্তনশীল কিছু বরাদ্দ থেকে বিভিন্ন বিজ্ঞপ্তি. সাইন কোন উল্লেখ আছে, কোন সেমিকোলন আছে. এটি কি একটি preprocessor ডিরেক্টিভের হিসাবে সাধারণত এর পরিচিত, অন্য যে সময় আছে আরো. এখন, এই একটি অপরিবর্তনীয় মান নামক কুইজ সৃষ্টি যার প্রকৃত সাংখ্যিক মান 2. সুতরাং আপনি যে কোন জায়গায় দেখতে কুইজ, কুইজ এই ফাইলটি জুড়ে, কুইজ, যে শুধু সংখ্যা 2. যদি আমি প্রধান এ এখন দেখুন, আমি কিভাবে এই কাজ করে দেখুন. প্রথম মনে একটু রহস্যপূর্ণ, কিন্তু এটা সপ্তাহ 1 থেকে সকল উপাদান. বাংলাদেশের জন্য ব্যবহারকারীকে জিজ্ঞাসা করুন. কিভাবে আমরা এই কাজ করে? লাইন 22 ইঞ্চি - এই সত্যিই সরস অংশ - আমি একটি float ঘোষণা কিন্তু আছে. কেবলমাত্র একটি float না আমি, বরং প্রকাশক ফ্লোটিং পয়েন্ট মান একটি অ্যারের করছি,. যে পরিবর্তনশীল করা হবে নামক বাংলাদেশের, যাও হিসাবে এখানে উহ্য যাচ্ছে, কিন্তু তারপর নতুন বাক্য গঠন শুধুমাত্র টুকরা এই বর্গাকার বন্ধনী. যে আমি বাংলাদেশের float এবং তারপর খোলা বন্ধনী এবং তারপর একটি নম্বর বলেন করেছি - যদি এই একটি ধ্রুবক এই মাত্র আমরা এই কি ভালো হয় বিজ্ঞপ্তি - এর মানে হল, "আরে কম্পিউটার, সম্পর্কে 2 floats দিতে এবং এর সম্মিলিতভাবে তাদের বাংলাদেশের কল দিন." এই একটি ভালো আরো অনেক ক্লান্তিকর প্রক্রিয়া বিপরীতে হয়: float grade1; grade2 ভাসা; এবং তাই ঘোষণা. আমি একটি অ্যারের আমাদের এই ধারণা প্রয়োগ করা যাবে কিন্তু অনেক কম অগোছালভাবে, এমন যে আমরা কোড 1 লাইন লিখুন পরিবর্তে, বলতে পারেন, একটি 16 সপ্তাহ সেমেস্ত্র জন্য 16. আমি হার্ড কোড 2 বার করতে চান না, কারণ আপনি যদি এই বিষয়ে এখন মনে হয় যুক্তি, পরের বছর ঠাউর 3 CS50 পরিবর্তন পরিবর্তে ক্যুইজ এবং আমি এখানে 2 নম্বর ছিল, আমি এখানে 2 নম্বর ছিল, আমি এখানে 2 নম্বর ছিল, সংখ্যা 2 এখানে. তা খুব ক্লান্তিকর এবং খুব সহজ পর্যন্ত যৌনসঙ্গম এবং ঘটনাক্রমে 3 যাও 1 মান পরিবর্তন এবং কিছু 2 অন্যান্য মান মিস্. তাই আমি পরিবর্তে বিমূর্ত এই চলে যাচ্ছে এবং এই ধ্রুবক যে ব্যবহার করছি, হিসাবে তার নাম পরিবর্তনের প্রস্তাব দেওয়া হয়, না. এবং এখন কোন ব্যাপার আছে কিনা আমরা বিভিন্ন এই বছর বা পরের ক্যুইজ আমি এক জায়গায় এটা পরিবর্তন এখানে শীর্ষে আছে. তাই যে সমস্ত একটি ধ্রুবক হয়. এদিকে, নতুন ধারণাগত বৈশিষ্ট্য হল একটি অ্যারের যে. সুতরাং বর্গাকার বন্ধনী দিন অনেক floats সম্পর্কে এবং এখানে তাদের কল করতে দেয় সম্পর্কে সম্মিলিতভাবে বাংলাদেশের. তাই এখন আমি কি আমি কি করতে যাচ্ছি দেখতে. এখানে লাইন 24 একটি লুপ এর জন্য শুরুতে. এই সত্যিই কিছুই অভিনব. এটা ঠিক এর কুইজ ব্যবহার পরিবর্তে একটি হার্ড কোড নম্বর. কিন্তু কিছুই বুদ্ধিমত্তা শেষ সপ্তাহ থেকে বিভিন্ন আছে. এটি শুধুমাত্র printf, তাই printf ("% d এর% d ক্যুইজ #:") কারণ আমি যে মুদ্রণ সম্পর্কে 2 সংখ্যা 1 এবং তারপর উপহাস 2 মোট 2 দিতে চান. সুতরাং এই একটি বিশুদ্ধরূপে নান্দনিক জিনিস. কিন্তু আকর্ষণীয় অংশ এখন লাইন 27 হয়. যাতে দুই স্থানধারক এক একটি ভাসমান পয়েন্ট মান পূরণ করে, আপনি আবার বর্গাকার বন্ধনী ব্যবহার করুন. এই ক্ষেত্রে, আমি তোমার ব্যবহার করছি কারণ লুপ জন্য এই কি তোমার মান equaling সঙ্গে, দৃশ্যত শুরু করেনি? 0 [ছাত্রদের]. >> [Malan] 0. তাই এই লুপ প্রথম পুনরাবৃত্তির উপর, এটা যেন আমি এই কোড লিখেছেন, কিন্তু এই লুপ দ্বিতীয় পুনরাবৃত্তির উপর, এটা যেন আমি আমার মধ্যে এই কোড লেখেন. কিন্তু এটা সত্য যে আমি একটি ভেরিয়েবল ব্যবহার করা হয় নিখুঁত কারণ, নাম হিসাবে সুপারিশ, এটি প্রতি পুনরাবৃত্তির উপর এর মান তারতম্য, তাই আমি একটি সময়ে ভর্তি এক স্পট এই অ্যারে করছি. কি এই অ্যারে কেমন হয়েছে? কারণ আমি সুপার পর্দায় সহজ আয়তক্ষেত্র এখানে সৃষ্টি আগে এই কারণে ছিল. একটি অ্যারের শুধুমাত্র মেমরি চাঙ্গড় মেমরি অন্য চাঙ্গড় অনুসরণ অনুসরণ মেমরি অন্য চাঙ্গড় দ্বারা এবং তাই ঘোষণা. তাই আপনি যদি আমার অ্যারের আকার 2 এখানে এই ক্ষেত্রে, আমি সব কাজ করা হবে আমার ব্যঙ্গ স্কোর টাইপ করে এখানে চাই - আমি এই একটিতে 100 পেয়েছেন এবং তারপর আমি এই এক একটা 99 পেয়েছিলাম - তারপর এই মেমরি ব্যবহার করা যেতে পারে না, কারণ আমি শুধুমাত্র কম্পিউটার জিজ্ঞাসা করেছি জন্য আকার 2 শ্রেণীবিন্যাস. যারা এখনও স্কোয়ার আছে, ডান? আপনি এখনও 2 গিগাবাইট RAM উপস্থিত থাকে, এমনকি যদি আপনি শুধুমাত্র 2 floats জন্য বলছেন. সুতরাং অ্যারে পিছনে ধারণা হয় যে শুধু কম্পিউটার মেমরি চাঙ্গড় লাগে এবং তারপর ছোট টুকরা apportions ফিরে যাও যাও যাও ব্যাক ব্যাক ব্যাক. তাই যে সমস্ত একটি অ্যারের হয়. এটা একটা মেমরি ভিতর সংলগ্ন অঞ্চলে যা আপনি জিনিষ লাগাতে পারেন. এই তারপরে শুধু কিছু বিরক্তিকর পাটীগণিত কি ঘটবে. যদি আমি এখানে স্ক্রল ডাউন, এই হল যেখানে আমি তারপর অ্যারের উপর বারবার. আমি অ্যারে মান সব সঙ্কলন সঙ্গে আসা পর্যন্ত, এবং তারপর আমি এখানে বৃত্তাকার ফাংশন ব্যবহার করার জন্য আসলে সমষ্টি কুইজ দ্বারা বিভক্ত না. কিন্তু আমাকে যে এ জন্য এখন যথেষ্ট গাণিতিক ধরণের হিসাবে আমার হাত ঢেউ. কিন্তু শেষ পর্যন্ত যে সব সম্পর্কে জন্য করছে একটি গড় কম্পিউটিং হয়. তাই প্রথম প্লাস ব্যঙ্গ দ্বিতীয় ব্যঙ্গ 2 দ্বারা বিভক্ত এবং তারপর মুদ্রণ কোন int হিসাবে এটি. কিন্তু এখন let এর একটি পৃথক উদাহরণে বলা string1 রূপান্তর, যা একই ছবি ব্যবহার করে কিন্তু স্ট্রিং রঙে. আমাকে এগিয়ে যান এবং শুধু একটা মুহূর্ত জন্য এই সহজ করে. এখন জন্য ক্ষমা খাঁজ. এই উদাহরণ লাইন 19 নোটিশ, আমি ব্যবহারকারী থেকে একটি পংক্তি পেতে. কিন্তু লক্ষ্য করা কি আমি পরের লাইনে করছি 22 অনওয়ার্ড করছেন. আমি তোমার থেকে আসলে করছি iterating আপ - এবং এই একটি নতুন কৌতুক - strlen, স্ট্রিং দ্বারা. এটি একটি এই যে আপনি যদি এটি একটি স্ট্রিং পাস, ফাংশন সি সাথে এটা আপনাকে বলে যে, স্ট্রিং কতগুলি অক্ষর. এই যা. এবং যে এটা strlen পরিবর্তে স্ট্রিং দৈর্ঘ্য মাত্র কারণ এটা আরো পরিবেষ্টিত. ত্রিশ বছর আগে, মানুষ জিনিষ হিসাবে succinctly হিসাবে সম্ভাব্য পছন্দ লিখুন, তাই আমরা যে কনভেনশন রাখা এখানে করেছি. আমি + মানে শুধুমাত্র প্রতিটি পুনরাবৃত্তিতে তোমার বাড়ায়. এবং এখন এই, নোটিশ যা সত্যিই আকর্ষণীয়. লাইন 24 ইঞ্চি, আমি বলে, "কম্পিউটার, সম্পর্কে একটি চরিত্র দিন, 8 বিট, এবং এটি গ ফোন." কিন্তু কি ডানদিকের সাইড বলছে হয় এই? ইন ইংরেজি কি, যে প্রতিনিধিত্ব না? [ছাত্রদের] অ্যারের মধ্যে প্রথম অক্ষর. ঠিক. সম্পর্কে অ্যারের মধ্যে প্রথম অক্ষর দিন. অথবা, আরো সাধারণভাবে, সম্পর্কে অ্যারের মধ্যে ith অক্ষর দিন. এবং এটা গুরুত্বপূর্ণ এখন বুঝতে পারি যে হিসাবে কম্পিউটার বিজ্ঞানীরা, আমরা 0 থেকে আসলে করছি বেড়ে চলেছে. আপনি এখন নেই বিচক্ষণতা না এই কাজ শুরু. এখন আপনার কম্পিউটার এর প্রত্যাশা অনুযায়ী আচরণ করে এবং 0 থেকে গণনা আছে [0] কারণ স্ট্রিং এর মধ্যে প্রথম অক্ষর হতে হবে, [1] দ্বিতীয় হবে, [2] তৃতীয়, এবং তাই ঘোষণা করা হয়. তাই এই প্রোগ্রাম, যদি আমি এটা কম্পাইল, এই আবার string1, তাই string1 করা, এবং এখন আমি আমার টার্মিনাল উইন্ডোর string1 রান করেছি. এটা ইনপুট জন্য অপেক্ষা করছে, যাতে আমি ডেভিড মধ্যে, টাইপ করে Enter যাচ্ছি এর, এবং এখন এটি সমস্ত ভিন্ন পংক্তিতে ডেভিড ছাপে কারণ বিজ্ঞপ্তি আমি কি করছি. আমি একটি সময়ে করছি একটি অক্ষর মুদ্রণ. আমরা বিস্তারিত ঢোকা হবে না এই আজ, কিন্তু আমি এই চেক আগে এক মুহুর্ত এখানে মোছা. এটা পরিনত হয় যে ব্যবহারকারী যদি অনাচারী হয়, adversarial, বা শুধু বিভ্রান্ত, আপনাকে আসলে কিছু দৈর্ঘ্যের একটি স্ট্রিং দিতে ব্যর্থ হতে পারে. যদি আপনি কীবোর্ডের কী ভুল আঘাত, আপনি স্ট্রিং এ সব দিতে পারে, অথবা যদি আপনি দূষিত, আপনি একটি নিবন্ধের একটি গিগাবাইট এর মূল্য মধ্যে পেস্ট করার চেষ্টা করতে পারেন এই পংক্তি, ভরাট এবং যদি কম্পিউটার মেমরি রান আউট, এটি সক্রিয় করে যে আমরা এই বিশেষ মান নামক NULL ফেরত পেতে যাচ্ছেন. তাই এখন জন্য, শুধু জানি যে এই বিশেষ মান NULL বলা আছে যা আমাদের যখন আমরা মেমরি ফুরিয়েছে অন্যান্য বিষয়ের মধ্যে, চেক করার অনুমতি দেবে. কিন্তু যদি আমি খুলুন এখন string2, এখানে একটি পার্থক্য লক্ষ্য করা. এক পার্থক্য লক্ষ্য করুন এখানে string2 সঙ্গে. String2 সঙ্গে, লুপ জন্য এই একটি সামান্য ভিন্ন. আমাকে NULLs যাতে আমরা যারা অন্য সময় সম্পর্কে কথা বলতে পারেন মুছে দিন. লুপ জন্য এই সময় সম্পর্কে বিভিন্ন কি? আমি আগের উদাহরণ ফিরে যেতে পারেন. যাতে এর সংস্করণ 2, এই সংস্করণ 1. 1, 2. 1, 2. strlen কল করা হয় যেখানে? এটি প্রথম অংশ জন্য লুপ আছে. কেন আমি এই হিসাবে কোন চিন্তা করছি? হাঁ. [ছাত্রদের] সুতরাং আপনি ফাংশন প্রতি একক সময় কল করবেন না. [Malan] সুতরাং আমরা প্রতি একক সময় ফাংশন কল করবেন না. ঠিক. জন্য loops থেকে প্রত্যাহার করা যে তারা সুপার সহজ একবার আপনি বোঝেন যে এই ধরণের হয় আরম্ভের, শর্ত, এবং আপডেট. সমস্যা হল শর্ত লুপ প্রতি পুনরাবৃত্তির উপর ঘটবে. এই উদাহরণে, তাই এখানে এবং, কি সত্য যে, এই হল আমার অবস্থা খারাপ? [ছাত্রদের] আপনি strlen আহ্বান করছি. [Malan] আপনি strlen করছি আবার কলিং এবং আবার এবং আবার. কিন্তু একবার আমি ডেভিড টাইপ করেছি, স্ট্রিং এর দৈর্ঘ্য হল 5, এবং এটি লুপ প্রতি পুনরাবৃত্তির পরিবর্তন যাও যাচ্ছে না কারণ স্ট্রিং এখনও হল D-a-v-i-ঘ. তাই এটি কি একটি ক্রমবর্ধমানভাবে গুরুত্বপূর্ণ ধারণা হয়ে যাচ্ছে এ ইঙ্গিত একটি নকশা সিদ্ধান্ত যেখানে শুধু কম্পিউটার অপ্রয়োজনীয় কাজ না করা হিসাবে পরিচিত. শুধু হিসাবে একটি pset2, pset2 একটি স্নিক মানক সংস্করণে মধ্যে প্রাকদর্শন আপনাকে আসলে কিছু সাইফারগুলির নম্বর বাস্তবায়ন চ্যালেঞ্জ হবে, এনক্রিপশন অ্যালগোরিদম কিছু নম্বর, যাতে আপনি উভয় এনক্রিপ্ট করতে পারেন এবং সেখানে অনেক ডিক্রিপ্ট এক Ralphie মত গোপন বার্তা সঙ্কেতমুক্ত. Pset2 র হ্যাকার সংস্করণে, আমরা যাও একটু আরো চলুন. আমরা একটি প্রকৃত কম্পিউটার সিস্টেম থেকে করছি আপনি একটি ফাইল হাতে যাচ্ছে যে একটি ব্যবহারকারীর নাম এবং প্রকৃত পাসওয়ার্ডগুলি এনক্রিপ্ট আভা রয়েছে, এবং হ্যাকার সংস্করণ জন্য চ্যালেঞ্জ যারা পাসওয়ার্ডগুলি ফাটল হবে এবং জিনিসটা কি ক্রিপ্টোগ্রাফি বা কি গোপন প্রকৃতপক্ষে যারা পাসওয়ার্ড জেনারেট করতে ব্যবহৃত হয়. এবং আমরা একটি নতুন বৈশিষ্ট্য ব্যবহার করে এখানে C দ্বারা এই কাজ করতে যাচ্ছেন যে আমি একটি ডেমো কমান্ড লাইন আর্গুমেন্ট হিসাবে পরিচিত দেব. এটি সক্রিয় আউট, হিসাবে আপনি কিছু অধ্যায় বা পাঠ্যবই পারে আছে দেখা যায়, প্রধান যাও বন্ধনীর মধ্যে অকার্যকর হতে থাকে সবসময় না. এটি সক্রিয় আউট দুটি আর্গুমেন্ট সহ যে প্রধান এছাড়াও ভালো করা যাবে,, argc এবং argv, যেখানে argc হয় শব্দের সংখ্যা যে প্রোগ্রাম এর নামের পরে আপনি আপনার কমান্ড লাইনে টাইপ করুন এবং argv হয় মূল শব্দ. এবং হিসাবে বর্গাকার বন্ধনী প্রস্তাব আছে, argv দৃশ্যত একটি অ্যারে. এটা মেমরির মধ্যে একটি স্ট্রিং পরে একটি পংক্তি স্ট্রিং এর পরে যাচ্ছে. তাই আমরা যা কর pset 2 দিয়ে শুরু করতে হবে সেটি ভালো কিছু. যদি আমি argv1, যা একটি উদাহরণ আমরা ফিরে সোমবার, করব এবং এটি চালানোর জন্য, বিজ্ঞপ্তি যে এটা এখনও কিছু করতে না বলে মনে হচ্ছে. এটা নিজস্ব ছাপে নাম আউট. কিন্তু যদি আমি বলে বিদায় বর্গ, যে বিজ্ঞপ্তি দৃশ্যত এই প্রোগ্রাম iterates উপর শব্দের প্রম্পটে টাইপ করা হয়েছে প্রতিটি. এবং যার দ্বারা আমরা শব্দ ঢোকার জন্য যে ব্যবহারকারী প্রম্পটে টাইপ করেনি হবে পরিবর্তন প্রধান প্রধান int-(অকার্যকর) থেকে শুরু এই সপ্তাহের শেষের ছুটির যাও প্রধান (argc, argv) int হয় এবং এইভাবে কমান্ড লাইন আর্গুমেন্ট জন্মগ্রহণ করা হবে. এবং একবার যখন আপনি এই সময়ে পেতে সত্যিই বাস্তববুদ্ধিসম্পন্ন, সত্যিই আপনার trippy প্রোগ্রামগুলি লিখতে সক্ষম হবেন এই যেমন এখানে এক, যা উপরে যায় এবং অতিক্রম কার্যকারিতা আমরা কিছু দূর পর্যন্ত কাজ করেছি, কিন্তু বেশ শক্তিশালী. সুতরাং আমরা এই সঙ্গে এই পর্দায় চলে, করব এবং আমরা সোমবার আপনি দেখতে পাবেন. [CS50.TV]