ডগ লয়েড: হিসাবে আপনি শুরু ফাংশন সঙ্গে কাজ,
আরেকটি বিষয় হয়ে যাচ্ছে বুঝতে সত্যিই গুরুত্বপূর্ণ,
যা পরিবর্তনশীল সুযোগ ধারণা.
তাই সুযোগ হয় একটি একটি পরিবর্তনশীল এর বৈশিষ্ট
যে যা ফাংশন থেকে সংজ্ঞায়িত যে পরিবর্তনশীল অ্যাক্সেস করা যেতে পারে.
>> সি দুটি প্রাথমিক সুযোগ থাকে না, স্থানীয় ভেরিয়েবল এবং গ্লোবাল ভেরিয়েবল.
এখন, স্থানীয় ভেরিয়েবল পারেন শুধুমাত্র ফাংশন মধ্যে প্রবেশ করা
যা তারা তৈরি করছেন.
তারা প্রত্যেক অন্যান্য দ্বারা ব্যবহার করা যাবে না আপনার প্রোগ্রাম যে উপস্থিত ফাংশন,
একমাত্র ফাংশন যা এটি তৈরি করা হয়েছে.
গ্লোবাল ভেরিয়েবল, অন্যদিকে, অ্যাক্সেস করা যেতে পারে
প্রোগ্রাম কোনো ফাংশন দ্বারা.
আর এর কারণ হল তারা ভিতরে তৈরি করছি না, কারণ
কোন নির্দিষ্ট ফাংশন.
আমরা বাইরে তাদের ঘোষণা ফাংশন, সব যা
প্রতি ফাংশন যেখানে জানে যে মানে তা না হয় এবং অ্যাক্সেস এবং এটি করতে পারেন নিপূণভাবে.
>> এ পর্যন্ত কোর্সে আপনি বেশ করেছি অনেক একচেটিয়াভাবে কাজ হয়েছে
স্থানীয় ভেরিয়েবল সঙ্গে.
এখানে একটি একটি উদাহরণ খুব, খুব কী সহজ প্রধান ফাংশন এবং একটি খুব সহজ
আমরা লিখিত করেছি যে অতিরিক্ত ফাংশন.
এই ক্ষেত্রে, এক্স যা আমি শুধু সবুজ রঙ্গিন করেছি
স্থানীয় তুলে ধরতে অথবা যে পরিবর্তনশীল এর সুযোগ,
ট্রিপল ফাংশন স্থানীয়.
প্রধান সব সময়ে এক্স পড়ুন পারবেন না.
এটা কি এটা জানেন না.
অন্য কোনো ফাংশন, আসলে, আমরা যদি এখানে অতিরিক্ত ফাংশন ছিল
X পড়ুন পারে.
>> একইভাবে, আমি করেছি যা ফলাফল নীল রঙের, শুধুমাত্র স্থানীয় প্রধান যাও.
শুধু প্রধান জানেন কি পরিবর্তনশীল ফলাফল.
ট্রিপল এটা ব্যবহার করতে পারবেন না.
>> এখন আমি হিসাবে উল্লেখ করেছে, গ্লোবাল ভেরিয়েবল এর মধ্যে রয়েছে.
আপনি যে ভেরিয়েবল ডিক্লেয়ার যদি ফাংশানের বাইরে,
ইন ফাংশান উপস্থিত সব প্রোগ্রাম তা উল্লেখ করতে পারেন.
তাই এই ক্ষেত্রে আমি হাইলাইট করেছি একটি বিশ্বব্যাপী পরিবর্তনশীল ঘোষণা সবুজ.
এই ক্ষেত্রে, পরিবর্তনশীল হচ্ছে ঘোষণা
শুধু, গ্লোবাল বলা হয় এটি সম্পর্কে অত্যন্ত পরিষ্কার হতে.
এটা টাইপ ভাসা হয়.
এবং আমি এটা মান 0,5050 নির্ধারণ করুন.
>> আপনি প্রধান এবং যে বিজ্ঞপ্তি পাবেন ট্রিপল, আমি গ্লোবাল বোঝাতে সক্ষম নই.
এবং বাস্তবিকই, আমি প্রোগ্রাম মধ্য দিয়ে যেতে হলে প্রধান প্রথম কল ট্রিপল নির্দেশিত হিসাবে,
3 দ্বারা গ্লোবাল ট্রিপল তা বৃদ্ধি পায়, যা 1.5-কিছু তার মূল্য নির্ধারণ করা হবে,
1.51 বা যে ভালো কিছু, এবং তারপর প্রধান মান ছাপে আউট
বিশ্বব্যাপী.
0,5050 প্রিন্ট আউট হবে না, তাই প্রধান, এটা , 1.51 গ্লোবাল বার 3 প্রিন্ট আউট হবে.
তাই আপনি যখন সতর্কতা অবলম্বন করা আবশ্যক পেয়েছেন আপনি গ্লোবাল ভেরিয়েবল নিয়ে কাজ করছি.
তারা খুব নমনীয়, যখন তথ্য প্রেরণ করতে সক্ষম হচ্ছে
কাছাকাছি যাতে প্রতি ফাংশন এটি ব্যবহার করতে পারেন,
এটা এমন একটা কিছু থাকতে পারে বিপজ্জনক পরিণতি
এক ফাংশন পরিবর্তন হলে একটি ভেরিয়েবলের মান
আপনি আশা করার আগে এটি পরিবর্তন করা.
>> কেন এই পার্থক্য কি কোন সমস্যা?
কেন আমরা যত্ন কিছু ভেরিয়েবল কিনা স্থানীয় এবং অন্যদের গ্লোবাল হয়?
ওয়েল, অধিকাংশ অংশ জন্য, স্থানীয় ভেরিয়েবল সি মান দ্বারা গৃহীত বলা কি হয়
আমরা একটি ফাংশন কল করার সময়.
ওটার মানে কি?
>> ওয়েল, একটি পরিবর্তনশীল পাশ হলে মূল্য, callee মধ্যে, দ্বারা যা
ফাংশন বলছে অন্য উপায় যে পরিবর্তনশীল গ্রহণ করা হয় যে
একটি ইনপুট হিসেবে গৃহীত পরার, এটা আসলে যে পরিবর্তনশীল নিজেই গ্রহণ করে না.
এটা নিজস্ব পায় এটা কপি সঙ্গে কাজ করতে.
এটি একটি সত্যিই গুরুত্বপূর্ণ পার্থক্য.
আমরা শুধু এই একটি দ্বিতীয় আগে দেখেছি গ্লোবাল ভেরিয়েবল সঙ্গে, যে
আমরা গ্লোবাল নিপূণভাবে যদি এক ফাংশন পরিবর্তনশীল, প্রভাব
যে এক ফাংশন বহন প্রত্যেক অন্যান্য ফাংশন মাধ্যমে.
>> কিন্তু স্থানীয় ভেরিয়েবল সঙ্গে, এটা সত্যি না.
প্রতিটি ফাংশন যখন এটি ইনপুট হিসেবে ভেরিয়েবল পায়
যারা ভেরিয়েবল কপি পাবেন, না ভেরিয়েবল নিজেদের.
সুতরাং যে প্বার্শপ্রতিক্রিয়া কি?
এর মানে হল যে পরিবর্তনশীল আহ্বানকারী, ফাংশন যে
ফাংশন কল করছে, হয় অপরিবর্তিত আপনি এটি অগ্রাহ্য না.
>> উদাহরণস্বরূপ, এই কোড এ foo বিন্যাস এ সব পরিবর্তন করা হয় না.
Int foo বিন্যাস 4 সমান, ট্রিপল কল foo বিন্যাস, ট্রিপল ভেতরে,
আমরা যে foo বিন্যাস would আশা করবে 3 দ্বারা গুন এবং ফিরে যেতে,
কিন্তু আসলে কোন প্রভাব নেই.
>> এখানে যদিও, একটি খুব সূক্ষ্ম পার্থক্য.
এই আমরা চাই প্রভাব আছে.
আপনি কেন দেখতে পান কি?
আমরা প্রধান এই সময়ে foo বিন্যাস অগ্রাহ্য করছি.
>> সুতরাং int- foo বিন্যাস 4, foo বিন্যাস সমান সমান ট্রিপল foo বিন্যাস, আমরা যে কল করতে হলে,
ট্রিপল নিজস্ব কপি পায় foo বিন্যাস, 4 নিজস্ব কপি.
যাই হোক না কেন 4 বার 3, বা আসতে বলেছেন পরিবর্তনশীল বার 3 পাশ.
এবং তারপর আমরা ফিরে যাও ধার্য ট্রিপল মান আবার foo বিন্যাস করতে.
তাই এই আসলে foo বিন্যাস মুছে ফেলা হবে.
এই না করার একমাত্র উপায় স্থানীয় পরিবর্তনশীল সঙ্গে এই.
তাই এখন আমরা অন্য যোগ হলে এখানে কোড লাইন
প্রধান শেষে , foo বিন্যাস মান প্রিন্ট আউট
এটা আসলে 12 প্রিন্ট আউট হবে.
>> পরিবর্তনশীল সুযোগ সাধারণত হয় একটি সমস্যা অত্যধিক না
আপনি সব নাম যদি আপনার ভেরিয়েবল বিভিন্ন জিনিষ.
কিন্তু এটা বাজে ধরনের পেতে পারেন একই পরিবর্তনশীল নাম যদি
একাধিক ফাংশন প্রদর্শিত হবে, যা অনেক ঘটবে.
আপনি কি কাজ করবেন না, তাহলে বাস্তব জগতে যেখানে
আপনি সহযোগীতা করার জন্য কাজ করছেন বিভিন্ন দল এ প্রোগ্রাম ও মানুষ
একই লিখতে একসাথে কাজ করছে প্রোগ্রাম বা প্রোগ্রাম একই সেট,
তারা প্রায়শই পরিবর্তনশীল পুনরায় করব নাম, বিশেষ করে সাধারণ ওগুলো
তাই এক্স, ওয়াই, আমি, জে, এবং মত.
>> কিন্তু যখন ভেরিয়েবল আছে একই নামের, সুযোগ সমস্যা
একটু trickier বিশ্লেষণ পেতে পারেন.
উদাহরণস্বরূপ, যদি আপনি জানেন না কি করে প্রিন্ট করা হবে
এই বিশেষ প্রোগ্রাম শেষে?
একটু সময় নিন.
ভিডিও টা খানিকক্ষণের পড়তে এই প্রোগ্রামের মাধ্যমে.
আপনি উপরের আমরা এ দেখতে পারেন একটি ফাংশন ঘোষণা আছে
বর্ধন নামক একটি ফাংশন জন্য.
যে ফাংশন একটি একক লাগে পরামিতি, আমরা এক্স কল যা একটি পূর্ণসংখ্যা.
আর এটি একটি পূর্ণসংখ্যা আউটপুট.
যে শুরুতে রিটার্ন টাইপ এর.
>> তারপর আমরা লাইন প্রধান, একটি দম্পতি আছে প্রধান কোড, যার শেষ
একটি মুদ্রণ স্টেটমেন্ট.
আর এটাই প্রশ্ন, মনে রাখবেন.
কি আসলে হতে যাচ্ছে এই ফাংশন শেষে মুদ্রিত?
এবং তারপর আমরা আসলে আছে নীচের বর্ধন সংজ্ঞা.
>> সুতরাং মাধ্যমে পইঠা, এক মিনিট সময় নিতে কোড, কিছু খুঁজে ট্রেস.
আপনি এ প্রিন্ট করা হবে কি না জানি না এই বিশেষ প্রোগ্রাম শেষে?
>> ঠিক আছে.
আশা করছি, আপনি কয়েক সেকেন্ডের গ্রহণ করেছি চেষ্টা করুন এবং এই এক বিশ্লেষণ করতে.
এটা একসঙ্গে কাজ করতে দিন.
>> তাই আমি বর্ধন এর খুঁজে পার করেছি সেখানে উপরের ঘোষণা.
এটা একটা ক্ষোভ ধরনের ছিল.
এটা নিজস্ব পরিবর্তনশীল নয়.
এটা তার নিজস্ব সুযোগ নেই.
এটি শুধু একটি ফাংশন ঘোষণা, তাই উদ্দেশ্যে
এর কি আউট পার্স করার চেষ্টা এই প্রোগ্রাম ঘটছে,
আমরা পাশাপাশি এটা এড়ানোর পারে.
>> এখন আমরা এই ক্ষেত্রে আছে, এই সমস্যা চতুর কারণে
আমরা স্থানীয় ভেরিয়েবল আছে, কারণ প্রধান ও বৃদ্ধি, উভয় প্রতিটি যা
বলা হল x.
এবং অবশ্যই এই ইস্যু মূল অংশ X পরিবর্তন যা পায় আউট suss করার চেষ্টা
এবং এটা কিভাবে পাল্টাই না.
তাই আমি প্রত্যেকবারই রঙ্গিন করেছি X প্রধান লাল স্থানীয় যে.
আর আমি প্রত্যেকবারই রঙ্গিন করেছি X নীল বাড়ায় স্থানীয় আছে.
>> যে তৃতীয় লাইনে নোটিশ প্রধান, Y বর্ধন সমান
X, যে বৃদ্ধি হচ্ছে না পাশ এর প্রধান X, অথবা লাল রংয়ের X.
এটা একটি কপি পাস হচ্ছে.
এবং এটা শুধুমাত্র সঙ্গে কাজ করে যাচ্ছে এটা যে কপি, নীল X.
আপনি গাণিতিকভাবে হন আনত, তবে আপনাকে
পরিবর্তে X সাব হিসেবে এই চিন্তা আছে বর্ধন জন্য প্রধান এবং এক্স সাব আমি এম.
কিন্তু এটি একই ধারণা.
X সাব এম, বা এক্স এর লাল পূর্ববর্তী স্লাইড,
local-- হয় ভেরিয়েবল বরং X ইনস্ট্যান্স হয়
স্থানীয় প্রধান যাও, এবং এক্স সাব আমি বা পূর্ববর্তী স্লাইডে নীল ভেরিয়েবল,
X ইনস্ট্যান্সের হয় বাড়ায় স্থানীয়.
>> সুতরাং, আপনি চিন্তা করতে সক্ষম ছিল কি শেষে মুদ্রিত এই ফাংশন?
আমি ডগ লয়েড আছি, এবং এই CS50.