>> JASON HIRSCHHORN: স্বাগতম A5 করতে, সবাই.
আমরা এগিয়ে আমাদের একটি উত্তেজনাপূর্ণ সপ্তাহে আছে তাই অনেক নতুন আছে বেশিরভাগই কারণ
এই রুমে সম্মুখীন হবে.
এটা বিস্ময়কর.
আপনি অনেক দৃর্ঘটনায় এখানে আছেন, যা আরও ভাল হয়.
তাই আশা করছি আপনি আমাদের সাথে যোগ যাব.
>> এই সপ্তাহে আমরা কাটাতে চলুন অধ্যায় বাল্ক
ব্যঙ্গ জন্য প্রস্তুতি নিচ্ছে.
আমাদের বিষয়সূচি প্রতি সুতরাং, আমরা কথা বলতে যাচ্ছেন বর্গ জন্য সম্পদ সম্পর্কে একটি বিট,
কিন্তু ব্যঙ্গ জন্য, এবং তারপর আবার,, বর্গ টকিং বাল্ক ব্যয়
প্রশ্ন সম্পর্কে.
আমরা উত্তর একবার হয়ে গেলে আপনার প্রশ্ন, অথবা যদি আপনার প্রশ্ন
স্বাভাবিকভাবেই আমি, কিছু কোডিং আমাদের নেতৃত্ব midterms থেকে নমুনা সমস্যা
আমরা বিভাগে লাইভ কোড যে অতীত একসাথে এছাড়াও কিছু অন্যান্য আসা যে
আবরণ ভাল বিষয়.
>> সুতরাং প্রথম, আমরা ধরে মাধ্যমে সর্বস্বান্ত করেছি আপনাকে মনে করিয়ে দিতে গত কয়েক সপ্তাহ
বলছি, সম্পদ একটি টন আছে এই কোর্সের জন্য উপলব্ধ.
তাদের মধ্যে অনেক অবিশ্বাস্যভাবে সহায়ক হবে আপনার কাছে যদি আপনি চালিয়ে হিসেবে
, ব্যঙ্গ 0 জন্য অধ্যয়ন কারণ এটা মঙ্গলবার বিকেলে এর.
সুতরাং আপনি সব হয়েছে একটি বিট জন্য অধ্যয়নরত.
>> বক্তৃতা নোট এবং উৎস আছে কোড যে আপনি উচিত
স্পষ্টভাবে চেক আউট.
হাফপ্যান্ট দেখুন.
Study.cs50.net দেখুন.
এবং তারপর, একটি সংখ্যা, নীচে তালিকাবদ্ধ অন্যান্য সম্পদ.
>> আবার, ব্যঙ্গ 0 আগামীকাল হয় 1 বাজে সময়ে.
যদি আপনি ইতিমধ্যে এটি না করে থাকেন, চেক উপর আমার ক্যুইজ 0 দস্তাবেজ আউট
চিন্তা করা অবশ্যই এর হোমপেজে আপনি ব্যঙ্গ গ্রহণ করছেন না.
প্রশ্নোত্তর 1:10 আরম্ভ এবং 70 মিনিট পরে শেষ হয়.
আপনি 1:10 পরে দেখা সুতরাং, যদি আপনি আছেন যে অনেক কম মিনিটের পেতে যাচ্ছে
70 ব্যঙ্গ নিতে চেয়ে.
তাই আপনি যদি সময়মত সেখানে থাকেন নিশ্চিত করুন.
আপনি একটি এক্সটেনশন ছাত্র হন বা আছে কিছু অন্যান্য পরীক্ষার বিবেচ্য বিষয়, এটা
1 বাজে আগামীকাল এ নাও হতে পারে.
কিন্তু আবার, সম্পর্কে ক্যুইজ 0 পরীক্ষা নিশ্চিত করুন যে আপনি যখন জানতে করা নথিতে
আপনি ব্যঙ্গ গ্রহণ করছেন.
আমি এখানে 75 মিনিটের লিখেছে.
আমি যে 70, ডান না মনে করি.
>> এটি একটি সপ্তাহ 0 থেকে সব উপাদান জুড়ে বুধবার গত সপ্তাহে এর বক্তৃতা করতে.
এবং আবার, এই ব্যঙ্গ জন্য, যে প্রতি নথি, আপনি এক দুই পার্শ্বযুক্ত পেতে এবং 8
আপনি পেতে যে কাগজ 11 শীট দ্বারা 1/2 ব্যঙ্গ সময় নোট হিসাবে ব্যবহার করার জন্য.
অনেকে, অধিকাংশ লোক, যদি না পাওয়া যে একক সবচেয়ে বড় উপায়
ব্যঙ্গ জন্য অধ্যয়ন করতে হয় একটি গবেষণায় শীট, একটি করুন
তাদের নিজস্ব এক-Sider,.
তাই অতীতের বেশী তাকান আপনি অতীতের বেশী দেখা করেছি.
দেখতে বন্ধুদের কাছে পৌঁছানো কি তারা তাদের উপর স্থাপন করছি.
>> কিন্তু হাত ডাউন, আপনি যা করতে পারেন সবচেয়ে ভালো উপায় গবেষণা সবকিছু মধ্য দিয়ে যেতে হয় এবং
কি করা উচিত বা উচিত যাও ছুরিবিশেষ ডাউন যে পত্রকে অন্তর্গত নয়
কাগজ, যে মাত্র একটি সত্যিই কারণ আপনি নিশ্চিত জন্য সহায়ক উপায়
আপনি সবকিছু দিয়ে যাচ্ছিলেন এবং করছি এটা দিয়ে কিছু ঘনিষ্ঠতা আছে.
অধিকাংশ মানুষ, আমরা, যদিও তারা কাগজ শীট ডান বসা আছে
ব্যঙ্গ তাদের পাশে, চালু না এটি করার জন্য, আবার, যে খুব, কারণ
তথ্য মাধ্যমে চালু করার প্রক্রিয়া তাদের এটা জানতে সাহায্য করেছে.
>> কেহ কোন প্রশ্ন আছে ব্যঙ্গ 0 সম্পর্কে কি?
সবাই আছে -
আমি হাতের একটি শো করতে যাচ্ছি না.
কিছু মনে করবেন না.
আমি কে জিজ্ঞাসা যাচ্ছে অধ্যয়নরত শুরু.
কিন্তু আমি আপনি করতে চান না সব আপনার হাত বাড়াতে না.
আমি আগেই বলেছি তাই মত - হ্যাঁ, Avi, এগিয়ে যান.
>> AVI: কি একটি দরকারী জিনিস হতে হবে এক পেজার রাখতে?
>> ছাত্র: এটা আপনার উপর.
>> JASON HIRSCHHORN: আপনি পেতে আপনার রায় ব্যবহার করতে.
এক পেজার রাখতে দরকারী জিনিস, আপনার বড় হে সম্পর্কে বিভ্রান্ত হয়
অনুসন্ধানে বিভিন্ন ধরনের রানটাইম এবং প্রকারের, একটি মধ্যে আছে উপর যে করা
কুশলী সপ্রতিভ চার্ট.
এই ভাবে, আপনি যে জিজ্ঞাসা করছি ব্যঙ্গ, আপনি চেষ্টা এবং চিত্রে করতে হবে না
এটি বা রানটাইম মাধ্যমে কারণে.
আপনি শুধু এটা দমন কপি করতে পারবে.
আপনি ক্যুইজ অতীত, অনেক তাকান বার, সময় প্রশ্ন আছে চলমান এর.
যাতে এর একটি ভাল একটি উদাহরণ হবে আপনার এক পেজার উপর করা জিনিস.
>> আপনি যদি, রাখতে অন্য ভাল জিনিস ডিক্লেয়ার করার পদ্ধতি সম্পর্কে বিভ্রান্ত একটি
ফাংশন বা কি বিভিন্ন অংশ ফাংশন ঘোষণা লিখুন, হয়
যে আছে, একটি জেনেরিক সংস্করণ এবং তারপর হয়তো একটি উদাহরণ.
আপনি পয়েন্টার সম্পর্কে বিভ্রান্ত হন, পয়েন্টার কাজ কিভাবে একটি ডায়াগ্রাম
সম্ভবত সত্যিই সহায়ক.
আপনি recursion একটি সম্পর্কে বিভ্রান্ত হন, সেখানে নেভিগেশন recursive ফাংশন নমুনা
সত্যিই সহায়ক হতে প্রমাণ পারে.
যে আপনি কিছু ধারনা দিতে হবে কেন?
>> AVI: আপনি বুঝতে প্রয়োজন ভালো সমগ্র কম্পাইল প্রক্রিয়া,
কিভাবে সব কাজ যে?
>> JASON HIRSCHHORN: সবকিছু যে আচ্ছাদিত হয়েছে পারা
ব্যঙ্গ দেখাবে.
প্রশ্ন -
কিন্তু আবার, কিছু কিছু বিষয় হবে অন্যদের চেয়ে প্রচন্ডভাবে পরিমেয়.
কিছু জিনিস আবার আসতে হবে এবং আবার ক্লাসে, এ
বক্তৃতা, ও বিভাগে.
অন্যান্য জিনিষ না থাকে যে প্রায়ই চলে আসে.
>> আমরা # অন্তর্ভুক্ত এবং সম্পর্কে অনেক কথা বলত করেছি -L কিছু এবং কি যারা এ অর্থ
সংকলন প্রক্রিয়া.
আমরা আটকে থাকা, GDB সম্পর্কে অনেক কথা বলত করেছি আমরা ব্যবহার করে যারা ভিন্ন পতাকা যখন
আমরা কিছু কম্পাইল, এবং কি make15, যেমন, সত্যিই
অর্থ এবং সত্যিই আছে.
আমরা প্রায় হিসাবে অনেক কথা বলা হয়নি প্রতি একক পদক্ষেপ
সংকলন প্রক্রিয়া.
আমরা এখনও এটি সম্পর্কে সায়ীদ করেছি.
তাই এটি এখনও যে আপনি কিছু সঙ্গে পরিচিত হতে হবে.
কিন্তু আবার, আমরা হতে যাচ্ছেন না -
ক্লাসে আরও প্রায়ই চলে আসে যে আরো চিন্তা করার সম্ভাবনা বেশি
প্রায়ই এবং আরো ব্যাপকভাবে হতে ব্যঙ্গ নেভিগেশন পরিমেয়.
>> কুল.
ব্যঙ্গ 0 সম্পর্কে অন্য কোন প্রশ্ন?
>> ঠিক আছে, তাই আমি একটি তালিকা করা বোর্ডে বিষয়.
আমি পাঠ্যক্রম মাধ্যমে গিয়েছিলাম.
আমি থেকে পর্যালোচনা বিভাগে মাধ্যমে গিয়েছিলাম চিন্তা করা শেষ রাত এবং যারা স্লাইড
বিষয়ের একটি অ সম্পূর্ণ তালিকা আমরা CS50 মধ্যে এ পর্যন্ত ঢেকে আছে
এবং জিনিস যে বল ব্যঙ্গ প্রদর্শিত.
তাই আমি মধ্য দিয়ে যেতে যাচ্ছি না এর মধ্যে প্রতি একক এক.
এটা আরো অনেক কিছু লাগবে আমরা এখন আছে বেশী সময়.
কিন্তু আমি আশা শ্লথ করার জন্য এখানে এই ন্যস্ত জিনিষ হিসাবে আপনার মেমরি যে may
অথবা আপনার সঙ্গে হিসাবে পরিচিত নাও হতে পারে.
>> এবং আমি বাল্ক এর ব্যয় ভালোবাসতাম সম্পর্কে আপনার প্রশ্নের উত্তর অধ্যায়
এই বিষয়, বিষয় যে এখানে কাভার করবে না.
আমরা ছদ্ম কোড লিখতে পারেন.
আমরা বাস্তব কোড লিখতে পারেন নিশ্চিত আপনি যে -
আমি আপনার প্রশ্নের উত্তর দিতে এবং সাহায্য করতে পারেন সবাই মৌলিকভাবে বুঝতে একটি
এই বিষয় অনেক আপনি বোধ করব তাই যাচ্ছে মধ্যে প্রস্তুত এবং আরামদায়ক
ব্যঙ্গ আগামীকাল.
সুতরাং তালিকা উপর পড়া.
আপনি আশা বিভাগে আসতে হবে কিছু প্রশ্ন হিসাবে ভাল.
আপনি যখন প্রস্তুত, আপনার হাত বাড়াতে এবং আমরা শুরু করতে হবে.
>> মনে রাখবেন, প্রশ্ন আছে, কোন মূঢ় প্রশ্ন আছে.
আমরা অনেক শুনেছি করেছি.
এবং যদি আপনি আছে প্রশ্ন, আমি রাজী নই , অন্যান্য অনেক মানুষ উভয় বাজি
এখানে বসা এবং পর্যবেক্ষক অনলাইন হিসাবে ভাল আছে.
সুতরাং আপনি শুধুমাত্র লোক সাহায্য করতে পারেন প্রশ্ন জিজ্ঞাসা করে.
মার্কাস.
>> MARCUS: স্ট্যাকের এবং এর মধ্যে গাদা, একটি প্রাক বরাদ্দ আছে
হিসাবে সংজ্ঞায়িত যে মেমরি শতাংশ এই স্ট্যাকের জন্য বা গাদা জন্য হয়?
অথবা ঠিক কিভাবে যে কাজ, করে?
>> JASON HIRSCHHORN: গ্রেট প্রশ্ন.
আমি অল্প ট্রেস ব্যাক যাচ্ছি.
সবাই কি -
এখানে সৎ হবে, দয়া করে.
আমি বাড়াতে আপনাকে জিজ্ঞাসা করছি জানি আপনার আপনার সহকর্মীরা সামনে হাত.
কিন্তু মনে যারা আছে স্ট্যাকের এবং গাদা সঙ্গে অস্বস্তিকর
এবং যে উপর যেতে চাই এবং যারা কি বোঝাতে চেয়েছেন?
আপনার হাতে যদি বাড়াতে -
ঠিক আছে.
আপনাকে ধন্যবাদ.
সুতরাং আমরা স্ট্যাকের উপর যেতে যাচ্ছে এবং করছি গাদা সত্যিই দ্রুত এবং তারপর
আপনার প্রশ্নের উত্তর সরাতে.
>> আমরা প্রতিনিধিত্ব করতে একটি বক্স বহিষ্কার সুতরাং যদি আপনার কম্পিউটারে মেমোরি, কিছু কি
এই বক্সের মধ্যে যে যেতে জিনিস?
মুখ্য.
একটি প্রধান ফাংশন.
কোথায় প্রধান যান না?
>> ছাত্র: [শ্রবণাতীত].
>> JASON HIRSCHHORN: সুতরাং আমরা করব নিচে এখানে প্রধান করা.
কি এই বাক্সে যায়?
>> ছাত্র: আপনি কল যে কর্ম.
>> JASON HIRSCHHORN: ফাংশন আমরা যে কল.
এবং যেখানে তারা যান?
>> ছাত্র: স্ট্যাকের মধ্যে.
>> JASON HIRSCHHORN: তারা স্ট্যাকের মধ্যে যান.
সুতরাং আমরা এই কল চলুন নিচে এখানে জিনিস স্ট্যাকের.
আর টপ আপ, আমরা গাদা আছে.
তাই মেমরি ঠিক এই মত একটি বক্স না.
কিন্তু এটা আসলে বেশ অনুরূপ.
এটা ধরে বাক্সে অনেক হতে যাচ্ছে এবং উপর, তার উপর নির্ভর করে কিভাবে বড় আপনার
কম্পিউটার বা আপনার মেমরি কিভাবে বড় হয়.
>> উদ্ধৃতি-উদ্ধতি "নিচ" এ স্ট্যাকের হয়.
এবং একাধিক বিষয় আছে যে স্ট্যাক যান.
এবং যারা ফাংশন উপর নির্ভর করে আপনি আপনার কোড আছে.
আপনি সবসময় এক ফাংশন আছে আপনার কোড প্রধান বলা হয়, তাই একটি সর্বদাই সেখানে
নিচে এখানে অধ্যায় প্রধান অনুগত গাদা.
>> স্ট্যাকের মধ্যে এই বিভাগে স্ট্যাক ফ্রেম বলা হয়.
আপনি অন্য ফাংশন কল করার সময়, প্রধান বলে একটি বাইনারি অনুসন্ধান ফাংশন কল,
আমরা স্ট্যাক অন্য ফ্রেম রাখা.
আরো নির্দিষ্টভাবে, আমরা যাচ্ছি প্রথম মেমরি একটি খণ্ড দান আমাদের
বাইনারি অনুসন্ধান এর স্থানীয় দোকান থেকে কম্পিউটার ভেরিয়েবল ও বাইনারি চালানোর
সার্চ কোড.
>> সুতরাং আমরা বাইনারি অনুসন্ধান কল.
মেমরির এই খণ্ড, আমরা চলুন তার স্থানীয় ভেরিয়েবল সংরক্ষণ.
আমরা তার printf কল সংরক্ষণ চলুন.
এরকম যাই হোক না কেন, যে ফাংশন অধিকার আছে সঞ্চিত করা যাচ্ছে.
বাইনারি অনুসন্ধান চালানো হবে.
এটা সঞ্চালনের সম্পূর্ণ করতে যাচ্ছে.
সি শব্দ কি যে তাৎপর্য্য বহন একটি ফাংশন উচিত যে
তার মৃত্যুদন্ড সম্পন্ন?
>> ছাত্র: ফিরুন.
>> JASON HIRSCHHORN: ফিরুন.
সুতরাং আপনি একটি ফিরতি বিবৃতি দেখতে যখনই, ফাংশন শেষ
এটা যে হিট.
তাই বাইনারি অনুসন্ধান তার ফিরতি আঘাত করা.
মেমরি এই ভাগে মূলত করবে আপ মুক্ত করা.
আর প্রধান ফিরে মৃত্যুদন্ড যেতে হবে.
, কল ছিল যেখানেই সুতরাং প্রধান বিরতি হবে বাইনারি অনুসন্ধান, কিছু ফিরতি মূল্য পেতে,
ও মৃত্যুদন্ড অবিরত.
এই স্ট্যাকের ফ্রেম দূরে যেতে হবে.
>> আমরা একটি recursive ফাংশন কল যদি যা নিজেই ধরে কল যে একটি ফাংশন
এবং উপর, আমরা পেতে পারে - আমরা বলতে recursively বাইনারি অনুসন্ধান করেনি.
আমরা বাইনারি অনুসন্ধান সংস্করণ একটি পেতে পারে বাইনারি অনুসন্ধান দুই, বাইনারি অনুসন্ধান
তিন, বাইনারি অনুসন্ধান চার, বাইনারি অনুসন্ধান পাঁচটি.
এবং তারপর এই চূড়ান্ত বাইনারি অনুসন্ধান পাঁচটি বেস কেস, এবং স্ট্যাকের আঘাত করা
ফ্রেম ফিরে যান এবং ক্লোজিং রাখা হবে আমরা ফিরে প্রধান পেতে না হওয়া পর্যন্ত.
আমরা কিছুক্ষনের মধ্যে recursion উপর যেতে পারেন.
আপনি যদি কিন্তু এই সব, বলতে হয় একটি সময়ে একাধিক ফাংশন আহ্বান
একাধিক স্ট্যাকের সেখানে থাকব স্ট্যাক ফ্রেম.
>> গাদা, অন্য দিকে, আপ এখানে, ফাংশন জন্য নয়,
না স্থানীয় ভেরিয়েবল জন্য.
এটা পরিবর্তনশীল বরাদ্দ জন্য ভেরিয়েবল.
সুতরাং এই হতে পারে যে ভেরিয়েবল প্রধান বা হয় সক্রিয়া
যে প্রধান কল কাজ.
কোথাও আপনার কোড, তারা সক্রিয়া করা যাবে.
এবং একটি পরিবর্তনশীল আরম্ভ বরাদ্দ পরিবর্তনশীল.
আমরা সি কি ফাংশন ব্যবহার করব?
>> ছাত্র: Malloc.
>> JASON HIRSCHHORN: Malloc.
আপনি malloc কল.
আপনি মেমরি একটি স্থান পেতে.
আর মেমোরী যে স্থান গাদা হয়.
আর মেমোরী যে স্থান থাকে আপনি বিনামূল্যে সেখানে কল না হওয়া পর্যন্ত.
>> সুতরাং পরিবর্তনশীল বরাদ্দ ভেরিয়েবলের মধ্যে গাদা আপনি যতদিন জন্য উপস্থিত হবে
তাদের অস্তিত্ব করতে চান, এবং তারা না করবে না স্পষ্টভাবে আপনি যতক্ষণ দূরে যেতে
দূরে যেতে বলুন.
আপনি এক ফাংশন তাদের তৈরি করতে পারেন.
যে ফাংশন এর স্ট্যাকের ফ্রেম দূরে যেতে হবে.
কিন্তু যে পরিবর্তনশীল এখনও বিদ্যমান হবে গাদা তা মুক্ত না হওয়া পর্যন্ত,
সম্ভাব্য নামক যে ফাংশন দ্বারা বাইনারি অনুসন্ধান বা যাই হোক না কেন.
>> সুতরাং যারা গাদা ভেরিয়েবল সেখানে থাকার যতদিন আপনি চান হিসাবে জন্য
তাদের সেখানে থাকার.
তারা এখানে রাখা হয়.
এবং তারপর পরবর্তী এক সেখানে রাখা হয়.
তারা পূরণ হচ্ছে রাখা, এবং তারা আপনি বিনামূল্যে কল না হওয়া পর্যন্ত সেখানে থাকার.
>> এবং মূলত, গাদা এবং স্ট্যাকের, , মার্কাস এর প্রশ্নের পেয়ে
একে অপরের দিকে বাড়া.
তারা একে অপরের মধ্যে চালানো এবং, যদি আপনি করেছি সমস্ত মেমরি আপ ব্যবহার আপনার
কম্পিউটার, এবং আপনার প্রোগ্রাম অব্যাহতিপ্রাপ্ত হবে আপনি কোন স্মৃতি আছে না, কারণ
ব্যবহার করা বাকি.
তাদের মধ্যে যে, সেখানে সম্ভাব্য অন্যান্য জিনিস.
কিন্তু এই কোর্সের সুযোগ, আপনার জন্য যে সম্পর্কে চিন্তা করার প্রয়োজন হবে না.
>> সুতরাং যে উত্তরটি ছিল আপনার প্রশ্নের.
এটা নিয়ে চিন্তা করবেন না.
কিন্তু যে দীর্ঘ উত্তরটি ছিল.
আপনাকে জানতে হবে সব হয় গাদা এবং স্ট্যাকের করবে না -
এক নীচে আরম্ভ করা হয়.
স্ট্যাকের আছে.
গাদা আপ আছে.
তারা একে অপরের কাছাকাছি বৃদ্ধি পায়.
>> তারা স্পর্শ এবং, যদি যে একটি সমস্যা.
আপনি মেমরির শেষ হয়েছে.
তবে, বুদ্ধিমান ছাড়াও যেখানে তারা কি উভয় মধ্যে সংরক্ষিত হয় হয়
গাদা এবং গাদা.
কার্টিস.
>> CURTIS: তারা সংঘর্ষ হলে, যে একটি স্ট্যাক ওভারফ্লো হয়?
>> JASON HIRSCHHORN: তারা সংঘর্ষ হলে, যে একটি স্ট্যাক ওভারফ্লো না.
একটি স্ট্যাক ওভারফ্লো একটি ভিন্ন এলাকা আপনি করতে চান তাহলে আমরা ধরে যেতে পারেন.
ঠিক আছে, আমরা কিছুক্ষনের মধ্যে যে ফিরে পাবেন.
>> ছাত্র: নামক শব্দটি কি তারা একে অপরকে আঘাত,
গাদা এবং গাদা?
>> JASON HIRSCHHORN: এখন জন্য, চিন্তার কিছু নেই.
শুধু জানি -
আমি যে প্রশ্নের উত্তর দিতে হবে ক্লাসের পরে.
তারা একে অপরের মধ্যে চালানো, আপনি স্বল্প কোন আরো আছে মেমরি, কারণ
সেখানে স্থান.
>> ছাত্র: দুঃখিত, একটি seg দোষ কি?
>> JASON HIRSCHHORN: একটি সেগমেন্ট দোষ জন্য বলা যেতে পারে -
seg দোষ বলা কেন তা নির্ভর করে.
কখনও কখনও, আপনার স্ট্যাক ওভারফ্লো, এটা করব seg ত্রুটি হিসাবে ফল্ট বলে.
>> ছাত্র: কি dereferencing সম্পর্কে একটি নাল পরিবর্তনশীল?
একটি seg দোষ কি?
>> JASON HIRSCHHORN: Dereferencing একটি নাল পয়েন্টার -
ঠিক আছে, যাতে আপনি যে আপনি একটি ইশারা আছে, যদি নাল সমান সেট, পয়েন্টার, রিকল,
দোকান মেমরি অ্যাড্রেস তাদের মান হিসাবে.
এবং একটি নাল পয়েন্টার মূলত হয় 0 সংরক্ষণকারী, 0-তম
যে পরিবর্তনশীল ঠিকানা.
সুতরাং 0x, 0, 0, 0, 0, ইত্যাদি ইত্যাদি.
না যে মেমরির মধ্যে যে 0-তম ঠিকানা আমাদের ছবিতে, যে পর্যন্ত আছে
কোথাও, যে সংরক্ষিত হচ্ছে কম্পিউটারের জন্য.
আমরা এটা স্পর্শ করার অনুমতি দেওয়া করছি না.
>> সুতরাং আপনার প্রোগ্রাম নির্বাহ যখন, যদি কিছু স্মৃতি যাওয়ার চেষ্টা করছে
ঠিকানা 0, এটা জানে যে যে একটি খালি মান.
এটা কিছুই আছে উচিত জানেন.
তাই আপনি যদি সেখানে কিছু চেষ্টা এবং ব্যবহার এবং ভালো আছে কিছু আচরণ বা
যে অবস্থান যাওয়ার চেষ্টা, আপনি আছেন একটি seg ফল্ট বা একটি ত্রুটি পেতে যাচ্ছে.
যে আপনার প্রশ্নের উত্তর আছে?
>> এবং এখন আমরা ফিরে যাবেন ওভারফ্লো গাদা.
আপনি না আছে হিসাবে স্ট্যাকের মধ্যে থিংস, আগে দেখা, এ - এর একটি ঘনিষ্ঠ আঁকা যাক
একটি স্ট্যাক ফ্রেম আপ.
সবাই যে দেখতে পাচ্ছেন না?
সুতরাং আমরা আমাদের স্ট্যাকের ফ্রেম আছে.
আমরা একটি স্থানীয় হিসেবে একটি অ্যারের সংরক্ষণ করছেন এই ফাংশন মধ্যে পরিবর্তনশীল.
সুতরাং আমাদের অ্যারের পাঁচটি দাগ আছে বলে.
ঐ সকল পাঁচটি সংরক্ষণ করা হবে যে স্ট্যাক ফ্রেম.
>> আমরা অতিক্রম লেখা শুরু এই অ্যারের কোট -
তাই আমরা করে লেখা শুরু করলে, এর যে 0 এর কথা বলা যাক.
যারা পাঁচটি সূচী হয় আমাদের অ্যারের.
আমরা সূচক 5, মধ্যে লেখা শুরু করলে যা আমরা একটি আছে যখন আমরা না থাকে
আয়তন 5 হাজার অ্যারে, আমরা মধ্যে লেখা শুরু সূচক 6, 7, 8, 9, আমরা একটি স্ট্যাক পেতে পারেন
ওভারফ্লো ত্রুটি.
>> সাধারণভাবে এটা না -
সম্ভবত আপনি কষ্ট পাবেন আপনি একের পর ওভার যান.
কিন্তু সাধারণত, আপনি মধ্যে পেতে হবে আপনি অনেক দ্বারা উপর যেতে হলে সবচেয়ে কষ্ট
এবং আপনি এ পর্যন্ত ধরে আপনি লিখুন যে যান যে ফেরত ঠিকানা ওভার
এ অবস্থিত যা ফাংশন, স্ট্যাক ফ্রেম নীচে.
>> ঠিক আছে, কারণ?
আপনি - এ - দুঃখিত.
নেই "ডান কারণ."
>> স্ট্যাকের ফ্রেম ইন, আপনি আপনার স্থানীয় ভেরিয়েবল.
স্ট্যাকের খুব নীচে ফ্রেম ফিরতি ঠিকানা হয়.
যে ফাংশন যেখানে আছে এটি উপর যখন যায়.
এবং আপনি যে ফিরতি মুছে ফেলা হলে ঠিকানা, তাহলে এই স্ট্যাকের ফ্রেম যখন,
আপনি স্ট্যাক মাধ্যমে চালু করছি ফ্রেমে এবং প্রতিটি লাইন নির্বাহ, আপনি আছেন
আপনার নতুন ফিরতি ঠিকানা যেতে হবে যে পরিবর্তে সেখানে লেখা
প্রকৃত এক.
এবং যে আমরা দেখা করেছি কিভাবে কিছু নিরাপত্তা ভঙ্গের
কম্পিউটারের সাথে ঘটতে পারে.
>> সুতরাং যখন স্ট্যাক ওভারফ্লো, সংক্ষেপে, হল আপনি স্ট্যাক অংশ মুছে ফেলা
আপনি, স্থানীয় ব্যবহার অনুমিত করছি পরিবর্তনশীল আপনি ব্যবহার অনুমিত, এবং করছি
বিশেষ করে আপনি overwriting শুরু মত গুরুত্বপূর্ণ বিষয়
ঠিকানা ফিরে.
আপনি কোনো ত্রুটি হয়ে উঠবেন যেখানে এবং যে.
অথবা হয়ত এমনকি আপনি শুরু করতে পারে এমনকি মধ্যে লেখা -
বাইনারি অনুসন্ধান ছিল বলে ডান প্রধান উপরে.
আপনি, অনেক overwrote যদি প্রধান করে লিখতে পারে.
কিন্তু সাধারণত, আপনি আগে কোনো ত্রুটি পাওয়া কম্পিউটার জানেন তাহলে, কারণ
আপনি কিছু করছেন এমনটি করা উচিত নয়.
হ্যাঁ.
>> ছাত্র: পার্থক্য কি একটি স্ট্যাক ওভারফ্লো মধ্যে
এবং একটি বাফার ওভারফ্লো?
>> JASON HIRSCHHORN: বাফার ওভারফ্লো আরো একটি জেনেরিক ধরনের হয়
আমি শুধু বর্ণনা করেছি.
>> ছাত্র: সুতরাং একটি স্ট্যাক ওভারফ্লো একটি হল একটি বাফার ওভারফ্লো উদাহরণ.
>> JASON HIRSCHHORN: যথাযথভাবে.
এই আমরা একটি হিসাবে মনে করতে পারেন একটি অ্যারে বাফার, এখনো যেতে জিনিসের জন্য একটি স্থান
এই একটি স্ট্যাক বাফার ওভারফ্লো হয়.
আমরা এক গাদা বাফার ওভারফ্লো থাকতে পারে.
যা আছে প্রায়ই একটি বাফার, ছিল যদি একটি অ্যারে গাদা, এবং আমরা
ঐ সীমার overwrote, তাহলে আমরা would এক গাদা বাফার ওভারফ্লো আছে.
>> এবং এই কোর্সের সুযোগ পরলোক, তারা একটু ভিন্নভাবে সনাক্ত করছি.
কম্পাইলার বিশেষ আছে প্রতিটি সনাক্ত উপায়.
কিন্তু একটি বাফার ওভারফ্লো আরো একটি জেনেরিক হয় আমি বর্ণিত ধরণ,
যা একটি স্ট্যাক বাফার ওভারফ্লো ছিল.
যে আপনার প্রশ্নের উত্তর দিতে হয়নি?
মিষ্টি.
>> অন্য কোন প্রশ্ন সম্পর্কিত ছিল স্ট্যাকের বা গাদা করতে?
হ্যাঁ.
>> ছাত্র: আমি আপনি বিনামূল্যে স্ট্রিং আছে জানি তারা গাদা মধ্যে আছেন, কারণ
এবং আপনি মেমরি লিক করতে চাই না.
তবে আপনি যদি গ্লোবাল ভেরিয়েবল মুক্ত আছে কি এবং যে ভালো জিনিস?
অথবা তারা স্বয়ংক্রিয়ভাবে মুক্ত করা হয়?
>> JASON HIRSCHHORN: ভাল প্রশ্ন.
সুতরাং cs50.h, আমরা এই জিনিস তৈরি জন্য আপনি একটি স্ট্রিং বলা.
একটি স্ট্রিং সত্যিই কি?
>> ছাত্র: চর তারকা.
>> JASON HIRSCHHORN: একটি গৃহস্থালি তারকা, একটি পয়েন্টার একটি অক্ষর, একটি পয়েন্টার করতে
অক্ষরের একটি অ্যারে.
স্ট্রিং হয় কি.
তাই আমরা এটি মুক্ত করতে প্রয়োজন কারণ GetString, যা আমরা অনেক ব্যবহার -
স্ট্রিং নাম GetString সমান -
যে আমাদের জন্য কিছু মেমরি mallocs গাদা এবং তারপর একটি পয়েন্টার ফেরৎ
যে প্রথম অক্ষর স্ট্রিং, একটি গৃহস্থালি তারকা.
>> তাই বাহ্যত, আপনি হয়েছে না হলে আপনার স্ট্রিং কোনো মুক্ত লেখা
আপনি এ পর্যন্ত বলা করেছি, আপনি করেছেন কিছু মেমরি লিক হয়েছে.
অবশ্যই আমরা স্বপ্ন নি এটা, তাই কেউ এ অর্জিত হচ্ছে
এরকম জন্য কষ্ট.
কিন্তু হ্যাঁ, এগিয়ে নিয়ে যাওয়া.
আপনি GetString কল, আপনি আছেন গাদা কিছু স্থান mallocing.
এবং আপনি যে পরে ফ্রী কল না হলে স্ট্রিং, আপনি একটি মেমরি লিক আছে.
যে আপনার প্রশ্নের উত্তর?
>> হাঁ
>> ছাত্র: তাই কি সেটা, আমরা ব্যবহার করব ফিরতি আগে মুক্ত ডান?
ভালো লেগেছে, সুযোগ মধ্যে, আমি অনুমান যদি আমরা মধ্যে, প্রধান int, মত বলে,
যাদের মধ্যে যে কোড সুযোগ কোঁকড়া ধনুর্বন্ধনী, ডান আগে -
আপনি কি জানেন যেখানে আপনি চাই সাধারণত ফিরতি করা.
আপনি যে আগে মুক্ত করা?
>> JASON HIRSCHHORN: তাই আপনি বিনামূল্যে লাগাতে পারেন আপনি বিনামূল্যে লাগাতে চান যেখানে.
এই পরিবর্তনশীল বরাদ্দ হয় ভেরিয়েবল, তারা করতে পারেন, কারণ
একটি বিশেষ সুযোগ অতিক্রম বাস ফাংশন, আপনি একটি মধ্যে malloc কল যদি
পৃথক ফাংশন, যেমন, GetString, আপনি মূল মধ্যে বিনামূল্যে কল করতে পারেন.
আপনি কল করতে হবে না নির্দিষ্ট ফাংশন
malloc বলা হয় যেখানে.
তবে আপনি এটি ফোন করতে চাই প্রধান আয় আগে.
>> এবং এটা সত্যিই নির্ভর করে.
এটা আপনি যে malloced কেন উপর নির্ভর করে প্রথমেই স্থান.
কিছু মানুষ কল হবে প্রশংসনীয় দ্রুত মুক্ত.
কিছু মানুষ হওয়া পর্যন্ত বিনামূল্যে কল করতে হবে তাদের প্রোগ্রাম শেষে.
এবং তারা মধ্য দিয়ে যাবেন এবং বিনামূল্যে সবকিছু.
এটা আপনি malloc বলা কেন উপর নির্ভর করে.
>> ছাত্র: আর আপনি কি বলতে হবে আপনি ব্যবহারের GetString নামক তাহলে কি হবে?
আপনি কি বিনামূল্যে বলতে চাই?
>> JASON HIRSCHHORN: তাই জন্য সিনট্যাক্স ফ্রী সহজভাবে বিনামূল্যে, খোলা paren, বন্ধ হয়
paren, এবং পয়েন্টার নাম.
সুতরাং আপনি স্ট্রিং নাম সমান লিখতে হলে GetString, আপনি এখানে নাম রাখা.
যে পয়েন্টার নামে এর.
এবং এটা যে মেমরি মুক্ত করতে জানে.
>> ছাত্র: এটা যে মেমরি মুক্ত সুতরাং যখন, পয়েন্টার এখনও যে জায়গায় স্থানটিকে
মেমরি?
অথবা এও এর emptied পয়েন্টার এটি স্থানটিকে যে ঠিকানা.
>> JASON HIRSCHHORN: আমরা যে চেষ্টা করা উচিত.
আমরা যে কোড উচিত.
আমরা পেতে হলে এর ফিরে আসা যাক কোডিং, এবং এর যে কোড দেওয়া.
এবং যদি আপনি উত্তর চিত্র আউট করতে চান যে জন্য, আপনি পারেন এছাড়াও কোড যে
ইতিমধ্যে.
কিন্তু যে একটি বড় প্রশ্ন.
>> ছাত্র: এটা কি সম্ভব খুব শীঘ্রই মুক্ত কিছু?
সুতরাং আপনি এখনও আপনার প্রোগ্রামের জন্য এটি প্রয়োজন, এবং আপনি যে মেমরি স্পেস মুক্ত?
>> JASON HIRSCHHORN: হ্যাঁ.
এটা সম্ভব, যদি আপনি বিনামূল্যে কিছু এবং তারপর আপনি এটি পুনরায় ব্যবহার, আপনি হবে
একটি ত্রুটি পাতিত.
আপনি মুক্ত কারণ কিন্তু যে, আপনার উপর এর তারপর কিছু এবং পরে তা বলা.
সুতরাং যে একজন প্রোগ্রামার এর ভুল ছিল.
কিন্তু হ্যাঁ.
আপনি যে লিখতে পারে.
>> কোন আরো প্রশ্ন -
হ্যাঁ.
>> ছাত্র: সুতরাং আপনি অনুমিত হয় যদি শুধু আগে সাধারণ এটি মুক্ত
প্রোগ্রাম যদি যে মানে, শেষ হয় প্রোগ্রাম শেষ হয় এবং আপনি তা মুক্ত করে না,
যে স্মৃতি এখনও বরাদ্দ করা হয়?
>> JASON HIRSCHHORN: আপনার প্রোগ্রাম শেষ হলে এবং এর পরে, কিছু মুক্ত করতে ভুলবেন
যে স্মৃতি জুড়ে বরাদ্দ ছিল আপনার প্রোগ্রাম সারা জীবনের.
আপনার প্রোগ্রাম, সম্পূর্ণ বন্ধ হয়ে গেলে যে মেমরি যাচ্ছে না
চিরকাল সেখানে থাকতে.
কম্পিউটার জানা স্মার্ট যথেষ্ট যে প্রোগ্রাম বন্ধ করা হলে,
স্মৃতি সব পরিত্রাণ পেতে উচিত যে প্রোগ্রামের সাথে যুক্ত ছিল.
>> যাইহোক, আপনি চালাতে পারেন টুলস আছে সনাক্ত করার জন্য একটি প্রোগ্রাম, যদি কখন
প্রোগ্রাম আপনাকে ভুলে গেছি, সমাপ্ত কিছু মেমরি মুক্ত করতে.
এবং আপনার পরের সমস্যার জন্য যেখানে সেট আপনি malloc ব্যবহার করে এবং ব্যবহার করা হবে
পয়েন্টার, আপনি এই চলমান করা হবে যদি দেখতে আপনার প্রোগ্রাম প্রোগ্রাম,
যখন প্রধান আয়, আপনি কিছু ছিল unfreed বাকি ছিল যে.
>> সুতরাং তারা malloced থাকার যাচ্ছেন না চিরকালের জন্য আপনার কম্পিউটার এ.
যে, অযথা হবে কারণ খুব দ্রুত, কম্পিউটার
মেমরি ফুরিয়ে যায়.
কিন্তু তারা আপনার শেষ পর্যন্ত চালানো হলে প্রোগ্রাম এবং তারা মুক্ত এবং করছি আপনার
প্রোগ্রাম যে এখনও একটি সমস্যা, প্রস্থান করে এই টুল সহায়তা করবে আপনাকে মোকাবেলার.
>> ছাত্র: Valgrind যে কি?
>> JASON HIRSCHHORN: এটা নামক Valgrind.
এবং আপনি হবেন -
>> ছাত্র: কিন্তু আমরা জানি করতে হবে না যে ব্যঙ্গ জন্য যদিও?
আমি বলতে চাচ্ছি, এটা স্বপ্ন ছিল বক্তৃতায় অল্প.
>> JASON HIRSCHHORN: সুতরাং Valgrind যে হাতিয়ার নাম.
এটি কী বুদ্ধিমান হয় ব্যঙ্গ জন্য যথেষ্ট.
কিন্তু আপনার উপর এখনো এটি ব্যবহার করেন নি আপনার আমরা ছিল না, কারণ সমস্যা সেট একটি
স্পষ্টভাবে মোকাবিলা করেছে যে সমস্যা সেট malloc সঙ্গে অথবা আপনি malloc ব্যবহার করে.
তাই আপনি যদি এখনো Valgrind ব্যবহার করেন নি.
কিন্তু আপনি যত তাড়াতাড়ি এটি ব্যবহার করবে বরং পরে.
>> ছাত্র: আপনি পুনরাবৃত্তি করতে পারি কি Valgrind হয়?
>> JASON HIRSCHHORN: দুঃখিত?
>> ছাত্র: আপনি কি পুনরাবৃত্তি করতে পারি Valgring উদ্দেশ্য কি?
>> JASON HIRSCHHORN: Valgrind নাম -
GDB, আপনি আপনার প্রোগ্রাম ডিবাগ সাহায্য চাই Valgrind আপনি জিনিসটা সাহায্য করে যদি
জিনিষ মুক্ত করা হয় নি আপনার প্রোগ্রাম বন্ধ হয়ে যায়.
তাই আপনি যদি আপনার প্রোগ্রাম থেকে তা রান করব.
এবং আপনার প্রোগ্রাম থেকে প্রস্থান করে, এবং এটা বলবো আপনার প্রোগ্রাম malloc এই অনেক বলা
এই অনেক বাইট জন্য বার, এবং আপনি শুধুমাত্র এই অনেকবার বিনামূল্যে বলা.
তাই আপনি এই অনেক বাইট বাকি মুক্ত হচ্ছে না.
অথবা এটা আপনি সবকিছু মুক্ত করেছি বলবো.
গুড জব.
>> ছাত্র: ওকে.
এবং এটা Valgring বলা হচ্ছে?
>> JASON HIRSCHHORN: ভী একটি, L-জি r-আমি-n-D:.
>> ছাত্র: পয়েন্টার সম্পর্কে একটি প্রশ্ন.
তাই আপনি যদি এন তারকা আছে বলে এক্স কিছু সমান.
তার মানে আপনি নির্বাণ করছি যাই হোক না কেন, সমান সেখানে, কি ভিতরে রাখা হচ্ছে যে হয়
কি এক্স প্রতি নির্দেশ করা হয়, বা x এর পয়েন্টার?
>> JASON HIRSCHHORN: আপনি Can প্রশ্নের পুনরাবৃত্তি?
আপনি এটা বলে, যখন আমরা তা আঁকতে পারেন?
>> ছাত্র: ব্যঙ্গ করে, আসলে, আপনি আমাদের পাঠানো এক, এটা, গৃহস্থালি মত ছিল
তারা সত্য সঠিক, CS50 স্কচ সমান?
যাতে এর মানে যে যে CS50 স্কচ সত্যের প্রতি নির্দেশ করা হয় কি?
>> JASON HIRSCHHORN: সুতরাং আপনি কথা বলছি একটি স্ট্রিং মধ্যে একটি গৃহস্থালি তারকা সম্পর্কে, কিভাবে
যে কাজ করে?
হ্যাঁ.
ঠিক আছে.
এর উপর এখানে এই আঁকা যাক.
>> [SIDE কথোপকথন]
>> JASON HIRSCHHORN: সুতরাং এই পরিবর্তনশীল টাইপ গৃহস্থালির তারকা হতে যাচ্ছে.
একটি পরিবর্তনশীল কত বড় হয় টাইপ গৃহস্থালির তারকা?
কত বাইট?
>> ছাত্রদের: চার.
>> JASON HIRSCHHORN: এটা চার বাইট এর.
একটি পরিবর্তনশীল কত অধিকার হয় টাইপ int-তারকা?
>> ছাত্রদের: চার.
>> JASON HIRSCHHORN: চার বাইট.
এটি একটি পয়েন্টার, তাহলে এটা সবসময় হয় চার বাইট, কারণ পয়েন্টার, তাদের
মূল্য একটি মেমরি ঠিকানা.
এবং CS50 নেভিগেশন মেমরি অ্যাড্রেস প্রয়োগ চার বাইট দীর্ঘ.
সুতরাং আমরা GetString, অথবা যখন আমরা কল যখন বলতে stringname তারপর সমান, এবং
উদ্ধৃতি চিহ্ন একটি পংক্তি করা, আমরা নির্বাণ -
ওহ, এটা একটু আলাদা.
আমরা উদাহরণ হিসাবে GetString না করব.
অথবা গৃহস্থালি তারা কিছু স্ট্রিং সমান.
দুঃখিত, আমার উদাহরণ দিতে যে আপনি পড়তে?
>> ছাত্র: গৃহস্থালি তারকা সত্য সমান উদ্ধৃতি চিহ্ন মধ্যে "CS50 স্কচ".
>> JASON HIRSCHHORN: তাই এই তারকা, এই আমরা এই পরিবর্তনশীল x ডাকবো আমাদের
জেনেরিক উদ্দেশ্যে.
আমরা এক্স নামক একটি পরিবর্তনশীল তৈরি করেছি.
এটা টাইপ গৃহস্থালির তারকা এর.
এটি একটি ধারাবাহিক একটি পয়েন্টার অক্ষরের.
তাই নিচে এখানে -
>> তাই এই কিভাবে এই would হয় মেমরি কাজ.
এটি একটি মেমরি ঠিকানা সংরক্ষণ করবে.
এটি মেমরি ঠিকানা সংরক্ষণ করবে অ্যারের মধ্যে প্রথম অক্ষর.
এবং তারপর যখন আপনি অনুসরণ পয়েন্টার, আপনি would
প্রথম অক্ষর পেতে.
>> আর আপনার মত এই জিনিস পড়ি যদি একটি পংক্তি, আপনার কম্পিউটার স্মার্ট
জানা ব্যাপার যে, এই পুরো জিনিস পড়তে এটি একটি নেতিবাচক প্রতিক্রিয়া 0 পায় না হওয়া পর্যন্ত.
কিন্তু আপনি এ এটি একটি অক্ষর পড়া করছি একটি সময়, তাই আপনার মাধ্যমে iterating করছি
এই পংক্তি, তাহলে আপনি শুধুমাত্র একটি পড়তে হবে একটি সময়ে অক্ষর আপনি পেতে না হওয়া পর্যন্ত
ব্যাকস্ল্যাশ 0.
যে উত্তর দিতে না পারে আপনার প্রশ্ন, যদিও.
>> ছাত্র: হ্যাঁ, কিন্তু আপনি না আছে malloced যে স্থান
এখনো যে পয়েন্টার জন্য.
>> JASON HIRSCHHORN: তাই আমি পুরোপুরি নিশ্চিত নই ঠিক কি আপনি এ খুঁজছেন,
আমি যে ব্যঙ্গ করতে না, কারণ.
এটা একটি সহায়ক হতে অনুমিত ছিল অন্য মেমরি থেকে সম্পদ.
আপনি একটি স্ট্রিং তৈরি করা হয় গাদা বা একটি স্থানীয় পরিবর্তনশীল, এটা করব
শুধু অভিযোগ অ্যারের বদলে করা প্রতি নির্দেশ সাধারণত একটি গৃহস্থালি তারকা
অন্য স্ট্রিং.
কিন্তু আমি জানি না.
অর্থাৎ অন্য একটি পয়েন্টার হতে পারে স্ট্যাক স্ট্রিং হিসাবে ভাল.
হ্যাঁ.
>> ছাত্র: আমি আপনাকে করতে হবে জানি পয়েন্টার যদি মেমরি বরাদ্দ
ভিতরে ঘোষিত হচ্ছে আরেকটি ফাংশন.
আপনি এটা যদি একই জিনিস করতে হবে না প্রধান ভেতরে ঘোষণা করা হচ্ছে,
আপনি প্রধান ভেতরে এটা ব্যবহার করছেন?
>> JASON HIRSCHHORN: তাই হ্যাঁ.
আপনি যে কোন একটি পয়েন্টার ডিক্লেয়ার করতে পারেন মেমরি মেমরি ঠিকানা.
এটি একটি স্থানীয় মেমরি ঠিকানা হতে পারে পরিবর্তনশীল, বারংবার যদিও,
মানুষ মেমরি অ্যাড্রেস ঘোষণা না তারা যেতে, কারণ স্থানীয় ভেরিয়েবল যাও
যে ফাংশন আয় দূরে একবার, যা আমরা সাধারণত জিনিস malloc কেন.
কিন্তু হ্যাঁ, আপনি একটি পয়েন্টার ডিক্লেয়ার পারে অন্য স্থানীয় পরিবর্তনশীল করতে.
এটা ঠিক সাধারণত সম্পন্ন না.
কিন্তু আমি যে একবার দেখে নিতে পারেন ক্লাসের পরে নির্দিষ্ট জিনিস.
হ্যাঁ.
>> ছাত্র: আমি এই ধরণের মনে হয় বলা হচ্ছে কি.
এটি আরম্ভ করার অদ্ভুত বলে মনে হচ্ছে না একটি হিসাবে একটি পয়েন্টার
ঠিকানা, কিন্তু হিসাবে কি একটি মান মত মনে হয়.
CS50 ভিতরে কি হয় এটি দেখে মনে হচ্ছে জিনিস জোরাল এবং হচ্ছে
না প্রকৃত ঠিকানা, ডান?
>> JASON HIRSCHHORN: সুতরাং যে না ক্ষেত্রে, যদিও.
যে ঘটছে না.
আপনি একটি গৃহস্থালি তারা ঘোষণা করে, এটি একটি মেমরি ঠিকানা নেই.
পয়েন্টার সব স্মৃতি ঠিকানা হয় অন্য কিছু করার প্রতি নির্দেশ.
অন্য যে কোনো কিছুর উপর হতে পারে স্ট্যাকের, কিন্তু প্রায় সবসময় হয়
আমরা এটা ব্যবহার দেখতে পাবেন ভাবে গাদা.
কিন্তু stringname ডবল মূল্যউদ্ধৃতি সমান ", GetString" আমরা দেখতে পারেন এবং আমরা
যে মাধ্যমে দেখবে এবং যে কোড পারেন.
GetString স্ট্রিং সংরক্ষিত হচ্ছে না যে পরিবর্তনশীল, বা যাই হোক না কেন স্ট্রিং
নামের যে সংরক্ষিত হচ্ছে না হয় পরিবর্তনশীল, যে কারণ না কিভাবে
পয়েন্টার কাজ.
যে জানার জন্য?
>> ছাত্র: হ্যাঁ.
>> JASON HIRSCHHORN: ঠিক আছে.
আশা করছি, যে ছিল না কেউ বিভ্রান্তিকর.
এটা ছিল কিন্তু, যদি আমরা আবার তাকান পারেন কিছুক্ষনের মধ্যে, আসলে আমরা চলুন কারণ
যে আশা করবে কিছু কোড করার স্ট্রিং সঙ্গে কাজ এবং আপনি বোধ সাহায্য
তাদের সঙ্গে আরো আরামদায়ক.
>> এই সংক্রান্ত অন্য কোন প্রশ্ন বিষয় বা অন্যান্য বিষয় যে
আমি ব্যাক আপ রেখে দেব?
এবং -
এই মুহূর্তে.
হ্যাঁ, Alden.
>> ALDEN: তাই এই সম্পূর্ণভাবে সম্পর্কহীন হয়, কিন্তু আমরা শুধু ওভার যেতে পারেন
সত্যিই দ্রুত আমরা জানা প্রয়োজন একটি 32 এবং এর মধ্যে পার্থক্য সম্পর্কে
64 বিট মেশিনের?
>> JASON HIRSCHHORN: হ্যাঁ.
তাই 32 বিট কত বাইট হয়?
>> ALDEN: এটা চার বাইট এর.
>> JASON HIRSCHHORN: এটা চার বাইট এর.
এবং 64 বিট কত বাইট হয়?
>> ছাত্র: আট.
>> JASON HIRSCHHORN: আট বাইট.
তাই আবার, আট বিট এক বাইট.
আপনার CS50 প্রয়োগ হয় একটি 32 বিট মেশিনের.
তাই মেমরি ঠিকানা হল দীর্ঘ চার বাইট.
2 32 করার আছে মেমরি অ্যাড্রেস.
0 32 বিয়োগ 1 থেকে 2.
এবং আমি ইতিবাচক নই, কিন্তু যে এর আপনি প্রয়োজন সম্ভবত সুযোগ
, একটি 32 বিট মেশিনের জন্য জানেন যে মেমরি ঠিকানা,, আবার, চার বাইট দীর্ঘ
এবং যে সর্বোচ্চ পরিমাণ আছে মেমরি ঠিকানা.
>> এছাড়াও, তথ্য ধরনের -
এই হিসাবে কিছু হতে পারে ভাল রাখবেন যে এর মূল্য.
একটি ডাটা টাইপ আকারের উপর নির্ভর করে আপনার সাথে কাজ করছি মেশিন.
সুতরাং একটি গৃহস্থালি, একটি একক চরিত্র, কিভাবে আমাদের CS50 প্রয়োগ অনেক বাইট?
এক বাইট.
এবং এটা আসলে এক বাইট হিসাবে এর ভাল একটি 64 বিট মেশিনের মধ্যে.
>> এবং সবচেয়ে তথ্য ধরনের একই সংখ্যা থাকে উভয় মেশিনে বাইট.
কিন্তু কিছু তথ্য ধরনের আলাদা হতে হবে উভয় মেশিনে.
সুতরাং যে সম্ভাব্য হবে আপনাকে জানতে হবে শুধু.
>> এমনকি যে, আমি মনে করি, সীমার বাইরে -
আপনি ফিরে তাকান যদি আমি প্রায় ইতিবাচক আছি পুরানো ক্যুইজ এ, এটা বলছেন, জন্য ধরে নিই
আপনি ব্যবহার করছেন সমস্যা কোডিং একটি 32 বিট মেশিনের.
কিন্তু যে সঙ্গে বরাবর যেতে, আছে আপনি আগ্রহী ক্ষেত্রে, আছে
একই যে ধরনের তথ্য সব মেশিনে আকার.
>> আপনি ভালো কিছু দেখা করেছি uint32_t, আপনি হতে পারে অথবা হতে পারে
যে দেখা যায় না.
যে একটি ডাটা টাইপ এর.
এটা 32 বিট কোনো ব্যাপার হবে, বলছে না এই কি মেশিনে হয়.
সুতরাং মানুষ পোর্টেবল লেখা হয় কোড, তারা সম্ভবত ints ব্যবহার করবে না.
তারা পরিবর্তে এই অন্যান্য তথ্য ব্যবহার করব তারা জানেন যে ধরনের একই হবে
প্রতি একক মেশিনে আকার.
মধু.
>> MADHU: আমি সম্পর্কে একটি প্রশ্ন ছিল সংকলন প্রক্রিয়া.
তাই আপনি ব্যবহার করে একটি প্রোগ্রাম লেখার করছি CS50 বা কিছু মত একটি লাইব্রেরি
যে মত, আমি জানি যে যে লাইব্রেরি , এক পর্যায়ে হতে হয়েছে
কম্পাইল এবং ইন লিঙ্ক
কিন্তু কত যে সময় ঘটবে আপনার প্রোগ্রাম সংকলন?
যে লাইব্রেরি প্রক্রিয়ার কি অংশ আপনি যখন ঘটে
আপনার নিজস্ব প্রোগ্রাম কম্পাইল?
>> JASON HIRSCHHORN: তাই এর উপর ছেড়ে দেওয়া এই প্রক্রিয়ার সাধারণত ধাপ.
তুমি তোমার. গ ফাইল লিখতে.
আপনার. গ ফাইল, আপনি # অন্তর্ভুক্ত আপনার হেডার লাইব্রেরি, যেমন, cs50.h.
ধারালো অন্তর্ভুক্ত কি না লাইন আপনার প্রোগ্রাম কি?
Akchar.
>> AKCHAR: এটা এর এগুলির নমুনা সংযোজন হেডার থেকে ফাংশন
লাইব্রেরি ফাইল.
>> JASON HIRSCHHORN: যথাযথভাবে.
এটা ঐ ফাংশন এগুলির নমুনা সংযোজন আপনার কোড করা.
আপনার কোড কম্পাইল করা হচ্ছে তাই যখন প্রাথমিক পর্যায়ে, কম্পাইলার জানে
এই ফাংশন সত্যিই বিদ্যমান, এবং যে যে কোথাও তারা সংজ্ঞায়িত করা হয়েছে.
. জ ফাইল অন্তর্ভুক্ত করবেন না এই ফাংশন জন্য সংজ্ঞা বা কিভাবে
তারা আসলে কাজ.
Cs50.h ঠিক বলেছেন এমন কিছু বিষয় রয়েছে GetString একটি বাস্তব ব্যাপার হল
ঘটতে পারে.
আর standardio.h printf, বলছেন ঘটতে পারে যে আসল জিনিস.
>> তাই এই সাথে আপনার C ভাষা. হেডারের ফাইলের কিছু পরিণত পরার
মেশিনে পাঠযোগ্য কোড, যা শেষ পর্যন্ত বাইনারি পরিণত পরার
কোড, 0 এবং 1 এর.
এবং যে কোড যে চরমভাবে মৃত্যুদন্ড কার্যকর করা হয়.
-L CS50 লাইন - উদাহরণস্বরূপ, আপনি ঝনঝন লেখার যখন -
এবং তারপর আপনি অন্তর্ভুক্ত-L CS50, আপনি লগইন করেননি যে টাইপ
এবং যদি আপনি দেখতে যে.
আপনি লিখুন, আপনি পাবেন এখানে যে লাইন দেখুন.
এবং আমরা একটি দ্বিতীয় মধ্যে দেখতে পাবেন যখন আমরা কোড বা পরে যখন আমরা কোড প্রথম.
>> কিন্তু যে-L CS50 লাইন কিছু না তুলনায় একটু ভিন্ন
# Cs50.h. অন্তর্ভুক্ত
যে-L CS50 লাইন কী কাজ করে?
Avi?
>> AVI: আমার মনে হয় এটা যে সংযোগগুলি বলতে চাই ফাংশন লাইব্রেরি
. ণ ফাইল মত, কল.
>> JASON HIRSCHHORN: তাই খুবই বন্ধ, স্পট অন না হলে.
-L CS50 বাইনারি ফাইল লাগে এবং আপনার বাইনারি ফাইল সঙ্গে এটি সংযোজন করে.
সুতরাং cs50.h, বাঁক কোন পয়েন্ট আছে প্রতিটি বাইনারি থেকে সি ভাষা থেকে cs50.h
এটি ব্যবহৃত হচ্ছে একক সময়.
অর্থাৎ, নিরীহ হবে, কারণ যে অনেক সময় নষ্ট হবে.
সুতরাং এটি ইতিমধ্যে কম্পাইল করা হয়েছে এবং একটি এক্সিকিউটেবল পরিণত হয়েছে.
এবং এখন এটি মিশে গিয়ে তৈরি করা যাচ্ছে না শেষে আপনার ফাইল সঙ্গে.
সুতরাং ঐ 1 এর এবং 0 এর যাচ্ছি আপনার বেশী সঙ্গে একত্রীকরণ
এবং শেষে 0 এর.
তাই এখন আপনি আসলে প্রকৃত করতে হবে 1 এর এবং 0 এর কিভাবে GetString সংজ্ঞায়িত যে,
উদাহরণস্বরূপ,, কাজ, বা কিভাবে printf উদাহরণস্বরূপ, কাজ করে.
>> এবং আরও তথ্যের জন্য, আছে একটি Nate যে যে দেয় স্বল্প কম্পাইলার
আপনি যে যায় পরীক্ষা করা উচিত এই পদক্ষেপের মধ্য দিয়ে.
কিন্তু -
হ্যাঁ.
>> ছাত্র: তারা সবসময় ণ ফাইল. তারা লাইব্রেরি আকারে যখন,
মত - লিঙ্ক, মার্জ করা প্রস্তুত তারা বাইনারি কোড মধ্যে আছেন?
>> JASON HIRSCHHORN: ঠিক আছে.
কি -
>> ছাত্র: যে সবসময় জন্য কেস লাইব্রেরি আপনি তাদের সংযোগ আছে যখন?
>> JASON HIRSCHHORN: হ্যাঁ.
তাই. গুলি করা হবে, যা ফাইল, আছে এছাড়াও হবে, যা মেশিন কোড,
আপনার কাছে রহস্যপূর্ণ.
আপনি যাদের সম্পর্কে চিন্তা করতে হবে না.
কিন্তু সাধারণত, হাঁ, তারা করব হে যেতে প্রস্তুত ফাইলের মধ্যে. করা.
>> ছাত্র: সুতরাং আপনি করতে অর্ণবপোত যখন একটি লাইব্রেরি, আপনি শুধুমাত্র অর্ণবপোত না
. জ ও. হে?
আপনি. গ বা. গুলি অর্ণবপোত না.
>> JASON HIRSCHHORN: তাই -
এবং এই, যদি পাশাপাশি এই সংক্ষেপে হয় এই তথ্য আসছে বলে মনে হয়
একটু দ্রুত.
কিন্তু কম্পাইলার উপর সংক্ষিপ্ত এই সম্পর্কে আলোচনা হিসাবে ভাল.
আপনি একটি লাইব্রেরি অর্ণবপোত করার সময়, যদি আপনি অর্ণবপোত . জ, হেডার ফাইল, যারা
ফাংশন এগুলির নমুনা, এবং 1 এর এবং 0 এর, যে আপনি দিতে প্রয়োজন সব.
আপনি দিতে প্রয়োজন নেই কিভাবে ফাংশন. গ ফাইল, কাজ করে.
কারণ বিমূর্ততা বিন্দু, অথবা API গুলি নির্দেশ, এই SPL এ বিন্দু,
স্ট্যানফোর্ড বহনযোগ্য লাইব্রেরি, এটা আপনি চিন্তা করবেন না করার জন্য কিভাবে নতুন
GRect, কাজ, বা কিভাবে কাজ অগ্রসর বা কিভাবে কাজ যোগ করুন.
আপনাকে জানতে হবে সব যে অ্যাড হয় আপনি পারেন যে একটি ফাংশন
ব্যবহার, এবং এটা এই আছে.
সুতরাং আপনি সত্যিই জানতে হবে না, কিভাবে এটা সি আপনি এ লেখা শুধু প্রয়োজন
জানি, এখানে ফাংশন হয়, কি তারা কাজ, এবং এখানে 1 এর এবং 0 এর হয়
আপনি সত্যিই তাদের ব্যবহার করতে চান না.
>> কুল.
কম্পাইলার উপর কোন প্রশ্ন বা বোর্ডে অন্যান্য বিষয়?
>> ছাত্র: আমি একটি প্রশ্ন আছে recursive ফাংশন রূপায়ণকারী.
Recursion সম্পর্কে একটি প্রশ্ন.
আমি চিন্তা যে একটা অনুভূতি ছিল.
সুতরাং আসুন দ্রুত মধ্য দিয়ে যেতে দেওয়া একটি নির্দিষ্ট সঙ্গে recursion
উদাহরণস্বরূপ, একটি গৌণিক ফাংশন.
এই একটি উদাহরণ কারণ যে প্রায়ই আসে আপ বা ব্যবহার করা হয়
recursion চিত্রিত.
>> সুতরাং "4" 4 গৌণিক হিসেবে পড়া হয়.
এবং 4 গৌণিক কি মানে?
যে কী কাজ করে?
আপনি কিভাবে 4 গৌণিক নিরূপণ করব?
4 বার 3 বার 2 বার 1.
>> 4 গৌণিক লিখতে তাই অন্য উপায় এই লিখতে হয়.
4 বার 3 গৌণিক.
3 গৌণিক কারণ 3 বার 2 বার 1.
তাই 4 বার 3 গৌণিক 4 হয় বার 3 বার 2 বার 1.
গৌণিক একটি মহান এটি কেন recursion জন্য প্রার্থী, এটা কারণ
যে কিছু আছে স্পষ্ট যে একটি উপর উপর এবং বহুবার এরকম
জিনিস ছোট নম্বর না হওয়া পর্যন্ত আপনি শেষ পৌঁছানোর.
আপনি 1 পৌঁছানোর, 1 গৌণিক 1.
আপনি অনেক অগ্রগতি হতে পারে না.
0 গৌণিক এছাড়াও 1 হিসেবে সংজ্ঞায়িত করা হয়.
আপনি 1 বা 0 থেকে যখন সুতরাং, আপনি আছেন শেষে, এবং আপনি যা করতে পারেন
ফিরে ঊর্ধ্বগামী শুরু.
আমরা একটি recursive লিখতে চেয়েছিলেন তাই যদি একটি গৌণিক নিরূপণ ফাংশন,
আমরা কিছু লিখতে যাচ্ছেন যে এখন জন্য pseudocode.
আমরা যে pseudocode লিখুন আগে -
আমি আপনাকে বলছি কয়েক মিনিট দেব ছদ্ম কোড লিখতে বা শুধু মনে
এটা সম্পর্কে - প্রতি দুটি জিনিস আছে recursive ফাংশন প্রয়োজন.
ঐ দুটি জিনিস কি কি?
>> JACK: এটা নিজেই কল আছে.
>> JASON HIRSCHHORN: নোয়া?
ওহ, জ্যাক.
এগিয়ে যান.
>> JACK: এটা নিজেই কল আছে.
>> JASON HIRSCHHORN: তাই একটি recursive ফাংশন একটি recursive কল প্রয়োজন একটি
নিজেই কল.
যে এক.
আর অন্যান্য জিনিস কি?
>> JACK: একটি বেস কেস.
>> JASON HIRSCHHORN: একটি বেস কেস.
একটি বেস ক্ষেত্রে আমরা থামাতে যখন এখানে, হয়.
সুতরাং আপনার ফাংশন বলা হয়.
বেস কেস আসে প্রথম.
আপনি শেষে যদি জানতে চান.
এবং আপনি, শেষে আপনি না হন তাহলে আপনার recursive কল করতে.
এবং যদি আপনি আবার এই ফাংশন দিয়ে যেতে আবার আপনার বেস কেস চেক.
আপনি শেষে পারব না, আপনি করতে অন্য recursive কল,
ইত্যাদি ইত্যাদি, ইত্যাদি ইত্যাদি.
>> এটা কেন recursive ফাংশন সর্বদাই ঐ বেস ক্ষেত্রে এবং ঐ প্রয়োজন
recursive কল.
আপনি একটি recursive কল না থাকে, এটা একটি recursive ফাংশন হবে না.
আপনি একটি বেস কেস আছে কি না যদি, আপনি চিরতরে গিয়ে হবে
কোন সমাপ্তি হতে পারে.
এবং বেস ক্ষেত্রে সবসময় প্রথম আসে, আপনি সবসময় পরীক্ষা করতে হবে, কারণ
আপনাকে প্রথমে শেষে হন তাহলে.
আমরা কিছু pseudocode কি তাই আগে, কেন আপনি আমার মনে হয় এক মিনিট লাগবে না
কিভাবে একটি recursive গৌণিক ফাংশন লেখা হবে?
>> এছাড়াও, আপনি করছেন হিসাবে হিসাবে অনেক, লেখা কাগজের একটি পত্রকে এটি হল
আপনার কাছে আছে চলুন কি আগামীকাল ব্যঙ্গ করবেন.
করা তাই সম্ভবত ভাল অভ্যাস নিশ্চিত করুন যে আপনি লেখার কোড
কাগজ পত্রকে নিচে -
অথবা আপনি তা করতে পারে.
সেমিকোলন যেখানে আপনি জানেন.
আপনি সিনট্যাক্স মনে রাখবেন.
আপনার থাকতে পারবে না করছি কারণ একটি কম্পাইলার আপনাকে একটি ত্রুটি তৈরি বলুন.
>> এছাড়াও, যারা লাইন, আগামীকাল, বরাবর যখন আপনি যদি আপনি, সমস্যার কোডিং করেছেন
সময় জন্য rushed, বা হয় যদি আপনি খুব করছি আপনি অনুমিত করছি কিভাবে হিসাবে বিভ্রান্ত
সি নির্দিষ্ট জিনিস লিখুন, এটা ছদ্ম - কোড লিখুন আপনি behoove হবে
অথবা পাশাপাশি এ মন্তব্য লিখুন.
একটি জন্য আংশিক ক্রেডিট আছে কারণ ব্যঙ্গ প্রশ্ন অনেক.
তাই আপনি যদি আপনি rushed, বা হতে পারে শুধু বিভ্রান্ত হতে পারে.
মতামত বা ছদ্ম - কোড মধ্যে লিখন প্রায়ই ভাবে যে আপনি
আংশিক ক্রেডিট পেতে পারেন.
>> তাই কিছু ছেড়ে না ব্যঙ্গ নেভিগেশন ফাঁকা.
জন্য কোনো জরিমানা নেই ইন জিনিষ নির্বাণ
আসলে, ছদ্ম - কোড নির্বাণ বা মন্তব্য grader সাহায্য যাচ্ছে
আসলে আপনি যদি জানেন জিনিসটা কি আপনি হয়তো পুরস্কার সম্পর্কে কথা বলা, এবং করছি
আপনি যে জন্য কিছু আংশিক ক্রেডিট.
>> এছাড়াও যারা লাইন বরাবর পরিষ্কারভাবে লিখতে.
আমরা সত্যিই আপনি লেখার না পারেন তা হলে, আমরা আপনার ফোন করতে যাচ্ছেন না
চিত্রে থেকে মধ্যরাত আগামীকাল এ আপনি লিখেছেন কি.
আমরা শুধু পয়েন্ট বন্ধ করা চলুন.
তাই আমরা বরং শুনতে, বা পারেন পরিষ্কারভাবে লিখুন, আমরা আপনাকে লেখেন কি পড়তে পারেন.
>> এবং এটি দুটি বাক্য বলে থাকেন, একটি অনুচ্ছেদ লিখুন না.
নির্দেশাবলী অনুসরণ করুন.
পরিষ্কারভাবে লিখুন.
এবং যারা মন্তব্য লিখতে বা প্রশ্নের জন্য pseudocode যে পারা
পুরস্কার আংশিক ক্রেডিট.
>> ঠিক আছে, এর গুণিতক করতে যান.
সুতরাং আমরা একটি ফাংশন গৌণিক আছে.
আমি আসলে সি এই লেখার ছিল, যদি কি আমি নামের আগে করা প্রয়োজন
ফাংশন?
রিটার্ন টাইপ, এই যা, ক্ষেত্রে, আমরা এটি int-দেব.
এবং তারপর কোঁকড়া ধনুর্বন্ধনী ভিতরে হয় কি জন্য কোঁকড়া ধনুর্বন্ধনী ভিতরে যায়
একটি ফাংশন?
>> ছাত্রদের: আর্গুমেন্ট টাইপ.
>> JASON HIRSCHHORN: তার আর্গুমেন্ট.
সুতরাং গৌণিক হবে সম্ভবত একটি আর্গুমেন্ট গ্রহণ করা.
এটা সম্ভবত শুধুমাত্র এক যুক্তি নেব.
এবং আমরা তা গ্রহণ করব বলবো একটি পূর্ণসংখ্যা নামক এক্স.
এবং আবার, প্রোটোটাইপ লেখার সময় একটি ফাংশন বা ফাংশন লেখা
, আপনি এটা নির্ধারণ করার আগে আপনার কোডে ডাটা টাইপ এবং নাম লিখুন
শুধু তাই ফাংশনের জন্য যে পরিবর্তনশীল.
তাই আপনি যদি এই মধ্যে কিছু সংখ্যক পাস করতে পারেন ফাংশন, এটা x এর হিসাবে উল্লেখ করা হবে
অন্ত.
>> আমরা আমাদের গৌণিক ফাংশন আছে.
আমরা দুটি জিনিস, একটি বেস ক্ষেত্রে প্রয়োজন এবং একটি recursive কল.
গৌণিক জন্য বেস কেস কি?
এটি লিখেছেন এবং যারা না আছে কারো এখনো কথিত, বেস কি
গৌণিক জন্য কেস?
>> ছাত্র: এন কম থাকলে 2 তুলনায়, 1 ফিরে.
>> JASON HIRSCHHORN: R থাকলে 2 তুলনায় কম, 1 ফিরে.
আমি চাই যে, এ কারণে যে 0 এবং 1 যত্ন নেয়.
সুতরাং আমরা, X <2 করবেন 1 ফিরে আসবেন.
আমরা পেতে যদি আমরা 0 পাস করতে হলে 1 অতিক্রান্ত, এই ফাংশন হবে
অবিলম্বে 1 ফিরে.
আমরা কিছু সংখ্যক বৃহত্তর পাশ করতে হলে বেশী বা 2 সমান, আমরা চলুন
আমাদের recursive কল আছে.
>> তাই কিভাবে যে কাজ করে যাচ্ছে?
এই কাজ যারা অন্য কেউ যারা এখনো উচ্চারিত হয়নি আমাকে দিতে
এই ফাংশন জন্য recursive কল pseudocode মধ্যে?
আমরা একটি সংখ্যা x এর মধ্যে পাস করতে হলে এবং এটা 2 থেকে বড় হচ্ছে, কি
আমরা যেতে চাই না?
আমরা একটি উদাহরণ উপর লিখিত আছে আপনি একটা ইংগিত দিতে পারে এমন দিকে.
>> ছাত্র: এক্স বার কল করুন এক্স বিয়োগ 1 এর গৌণিক?
>> JASON HIRSCHHORN: ঠিক ঠিক.
আমরা এক্স বার ফিরে চলুন এক্স বিয়োগ 1 এর গৌণিক.
এবং, আমি আপ লিখেছিলেন, যদিও যে মূলত, আপনি কি ইংরেজিতে বলেন,
এই গৌণিক ফাংশন আবার বলা হবে.
এটি এক্স বিয়োগ 1 উপর চালানো করব.
এটা কিছু পূর্ণসংখ্যা সঙ্গে ফিরে, এবং করব তারপর এটি এই দুই গুন করব
একসাথে, এবং যে মান হবে এই বলা যাহা ফিরে
গৌণিক ফাংশন, যা যথাসাধ্য অন্য ইনস্ট্যান্সের মধ্যে হতে
এই গৌণিক ফাংশন.
>> সুতরাং যে একটি recursive একটি উদাহরণ ফাংশন, একটি খুব
সহজ recursive ফাংশন.
কিন্তু তাদের অধিকাংশই এই মত হতে হবে.
আপনি একটি ভাল recursive চাই ব্যঙ্গ জন্য চ্যালেঞ্জ, কোডিং চেষ্টা
বাইনারি অনুসন্ধান recursively.
কারণ আপনার জন্য বাইনারি অনুসন্ধান না হলে সমস্যা তিন সেট, তাহলে সম্ভবত তা
iteratively যখন একটি লুপ মধ্যে.
>> কিন্তু এটা এমন একটা লেখা যেতে পারে recursively.
আপনি আপনার নিজের লেখার প্রয়োজন চলুন কিছু লাগে পৃথক ফাংশন
বিভিন্ন কমান্ড লাইন আর্গুমেন্ট - বা না কমান্ড লাইন আর্গুমেন্ট, কিছু
বিভিন্ন শুধু নিয়মিত আর্গুমেন্ট.
কিন্তু আপনি বাইনারি অনুসন্ধান লিখতে পারেন recursively হিসাবে ভাল.
>> ছাত্র: সুতরাং আপনার কাছে লিখিত আছে পারে, পরিবর্তে এক্স বিয়োগ 1 হাজার, আপনি
এছাড়াও এক্স বিয়োগ লেখা থাকতে পারে বিয়োগ, বা, আপনি হতে পারে
লিখিত বিয়োগ বিয়োগ এক্স.
আপনি শুধু সত্যিই দ্রুত ব্যাখ্যা করতে পারি যারা বিভিন্ন বিষয় হবে,
পার্থক্য মধ্যে কি মত এক্স বিয়োগ বিয়োগ এবং বিয়োগ বিয়োগ এক্স?
>> JASON HIRSCHHORN: না, আমি নই যে ঢোকা যাচ্ছে.
কিন্তু আমি পরে এটি সম্পর্কে আপনি কথা বলতে হবে বর্গ. এক্স বিয়োগ বিয়োগ, বিয়োগ বিয়োগ এক্স
1 দ্বারা এক্স হ্রাস.
কিন্তু তারা একটু ভিন্নভাবে এটা.
কিন্তু আমি যে ঢোকা না চান.
Recursion সম্পর্কে অন্য প্রশ্নের এই ফাংশন?
যে সত্যিই এমনকি pseudocode না.
এটা মূলত মধ্যে কোড এর আপনি এই জন্য লিখতে হবে C.
>> ঠিক আছে, অন্য কোন প্রশ্ন এখানে বিষয় আপ সম্পর্কে কি?
হ্যাঁ.
>> ছাত্র: আমি দ্রুত ভগ্নস্বাস্থ্য শিঠ্ট আছে ফ্লোটিং পয়েন্ট এবং স্পষ্টতা.
>> JASON HIRSCHHORN: ফ্লোটিং বিন্দু এবং স্পষ্টতা.
Can কারো সত্যিই দ্রুত আমার একটি ভগ্নস্বাস্থ্য শিঠ্ট দিতে
ফ্লোটিং পয়েন্ট এবং স্পষ্টতা?
আপনি সব আপনার জন্য এই কি ছিল সমস্যা সেট, তাই আপনি সব করছি
এটা সাথে পরিচিত.
অথবা হয়ত সব না আপনাদের মধ্যে.
যে কেউ?
আমাকে একটা শুরু স্পট দিন.
ফ্লোটিং পয়েন্ট এবং স্পষ্টতা.
সমস্যা কি?
হ্যাঁ.
ভিক্টোরিয়া?
>> Vanessa: Vanessa.
>> JASON HIRSCHHORN: Vanessa.
দুঃখিত.
>> Vanessa: শুধুমাত্র একটি নির্দিষ্ট নম্বর আছে প্রতিনিধিত্ব করা যাবে সংখ্যার
আপনি যদি একটি, এ করছি, কারণ আমাদের ক্ষেত্রে, একটি 32 বিট সিস্টেম.
সুতরাং আপনি ধরনের আছে কিছু সংখ্যা আপ.
>> JASON HIRSCHHORN: সুতরাং যে ঠিক অধিকার.
শুধুমাত্র একটি নির্দিষ্ট পরিমাণ আছে প্রতিনিধিত্ব করা যাবে নম্বর.
আপনি দুটি খুব বড় সংখ্যার গুন করা হলে, এটি পরিমাণ ওভারফ্লো পারে
জায়গার আপনি উপস্থাপন করতে হবে একটি পূর্ণসংখ্যা.
কখনও কখনও আমরা ব্যবহার কেন একটি পরিবর্তে কোন int দীর্ঘ দীর্ঘ.
যে আরো শূণ্যস্থান আছে.
এটা একটি বড় সংখ্যা রাখা যাবে.
>> ফ্লোটিং পয়েন্ট স্পষ্টতা কি আছে যে, কিন্তু কি আছে
দশমিক সংখ্যা যে সবসময় প্রতিনিধিত্ব না.
দুঃখিত.
আমার এই ব্যাক আপ করা যাক.
দশমিক সংখ্যা 1.0 সবসময় নয় আপনার মত প্রতিনিধিত্ব আশা করবে,
1,000000000.
এটি কখনও কখনও হিসাবে প্রতিনিধিত্ব করা হয় 1,000000001 বা 0,999999999.
এটি এমনকি 89 নিক্ষিপ্ত হতে পারে কোথাও সেখানে.
সুতরাং যারা দশমিক সংখ্যা নয় ঠিক আপনি একটা ভালো প্রতিনিধিত্ব
তাদের প্রতিনিধিত্ব করা আশা.
>> সুতরাং সমস্যা সেট -
এটি দুটি ছিল? -
সমস্যা আমরা মোকাবেলা যেখানে দুই, সেট আমরা চেয়েছি যখন ফ্লোটিং পয়েন্ট সংখ্যা,
তাদের আমরা চেয়েছিলেন ঠিক কি প্রতিনিধিত্বকারী তাদের প্রতিনিধিত্ব করতে, সংখ্যা
পেনিসমূহ, বা সেন্ট সংখ্যা, আমরা 100 দ্বারা তাদের গুন.
আমরা তাদের বৃত্তাকার.
এবং তারপর আমরা সবকিছু ছিন্ন দশমিক পয়েন্ট পেছনে.
তা নিশ্চিত করার জন্য যে তারা হবে আমরা চেয়েছিলেন ঠিক কি আসলে সমান
তাদের সমান.
>> আপনি কিছু নিতে যখন যে কারণ একটি float এবং আপনি কোন int এটা করান
ডান সবকিছু ছিন্ন দশমিক বিন্দু.
কিছু ফ্লোটিং পয়েন্ট আছে কারণ অনির্দিষ্টতা, 100.000 হতে পারে
99,999999999 হিসাবে প্রতিনিধিত্ব.
আর আপনি শুধু সবকিছু থেকে বিচ্ছিন্ন হলে এখুনি ঠিক আছে, আপনি চলুন
ভুল নম্বর পেতে.
হ্যাঁ.
>> ছাত্র: আমি ছিল একটি প্রশ্ন সম্পর্কে নিক্ষেপণ.
কি যাতে এটা ঘটতে পারে?
আপনি ভাসা করতে চাই তাহলে, বন্ধনী, 1 বিভক্ত 10 দ্বারা, 1, 10 দ্বারা এটি বিভক্ত করবেন না
তারপর 0.1 পেতে, তারপর চালু একটি float মধ্যে এটি?
>> JASON HIRSCHHORN: যদি তা চান 10 দ্বারা বিভক্ত 1 ভাসা -
>> ছাত্র: হ্যাঁ, এবং তারপর সমান -
ওয়েল, এটা সাধারণতঃ একটা তা সমান আছে -
হ্যাঁ.
আপনি এটি একটি float করতে চাই, ডান?
>> JASON HIRSCHHORN: ঠিক আছে, তাই আমরা চলুন figuring আউট মধ্যে segue যে ব্যবহার
এই প্রশ্নগুলির উত্তর কোডিং এর মাধ্যমে.
আপনি সম্ভবত অনেক করতে হবে কারণ এইসব মিনিটে প্রশ্ন, এবং একটি ভালো উপায়
তাদের সমাধান কোডিং মাধ্যমে হয়.
সুতরাং আমরা এখন এই অধিকার কোড চলুন এবং তারপর আমরা ফিরে যেতে হবে এবং করছি
আপনি ছিল প্রশ্ন কোড.
>> তাই প্রথম লাইন -
আমি এটা লিখিত আছে উচিত না - কি আমরা যেতে চাই প্রথম জিনিস যখন আমরা
gedit মধ্যে একটি নতুন ফাইল খুলুন?
>> ছাত্র: অন্তর্ভুক্ত করুন.
>> JASON HIRSCHHORN: কি হল?
>> ছাত্র: CS50 লাইব্রেরি.
>> JASON HIRSCHHORN: ঠিক আছে.
আমরা আর কি অন্তর্ভুক্ত করা উচিত?
আমরা ঠিক কি চেক চলুন আপনি একটি float কিছু নিক্ষেপ করে.
কিন্তু কি আমরা আমরা যদি অন্তর্ভুক্ত করার প্রয়োজন নেই একটি সি প্রোগ্রাম লিখতে যাচ্ছি?
>> ছাত্র: স্ট্যান্ডার্ড ইনপুট / মন্ত্রণালয়
>> JASON HIRSCHHORN: stdio.h.
আমরা আসলে এই জন্য, দরকার নেই প্রোগ্রাম, cs50.h, এটা যদিও
এটি অন্তর্ভুক্ত সবসময় সহায়ক.
কিন্তু আমরা সবসময় stdio.h প্রয়োজন.
>> ছাত্র: সি কোডিং করার সময়?
>> JASON HIRSCHHORN: সি কোডিং যখন
>> তাই আমি এই. গ ফাইল হিসাবে এটি সংরক্ষণ করুন.
আমি কিছু চমৎকার সিনট্যাক্স হাইলাইটিং পেতে.
আমি মূল ভেতরের শূন্যতা লিখেছে.
অকার্যকর অর্থ কি?
>> ছাত্র: কোন গ্রহণ না কমান্ড লাইন আর্গুমেন্ট.
>> JASON HIRSCHHORN: এই অকার্যকর মানে, মামলা, প্রধান কোনো লাগবে না
কমান্ড লাইন আর্গুমেন্ট.
অন্যান্য ক্ষেত্রে, এটি ফাংশন মানে কমান্ড লাইন আর্গুমেন্ট গ্রহণ করা হয় না.
অথবা ফাংশন, আমি যদি অকার্যকর লিখতে প্রধান (অকার্যকর), যে প্রধান এর বলতে হবে
কিছু ফিরে না.
তাই অকার্যকর শুধু কিছুই মানে.
আমি ছিল আমি কি লিখতে হবে কমান্ড লাইন আর্গুমেন্ট নিতে?
>> ছাত্র: int-চাপ সি স্ট্রিং চাপ ভি
>> JASON HIRSCHHORN: INT argc স্ট্রিং argv.
যে অধিকার আছে?
>> ছাত্র: এটা গৃহস্থালি তারকা argv বন্ধনী এর.
>> JASON HIRSCHHORN: তাহলে আপনি লিখতে পারেন স্ট্রিং argv বন্ধনী বা গৃহস্থালি তারকা argv
বন্ধনী, কিন্তু আপনি বন্ধনী প্রয়োজন.
Argv একটি অ্যারের কারণ স্ট্রিং, মনে রাখবেন.
এটা শুধু একটা স্ট্রিং না.
তাই স্ট্রিং argv এখানে, এর হয় এক স্ট্রিং argv বলা.
স্ট্রিং argv বন্ধনী, এখানে হয় স্ট্রিং একটি অ্যারে.
সুতরাং int-argc স্ট্রিং argv বন্ধনী কিছু হবে আমি
সম্ভবত লিখতে হবে.
>> তাই আপনি যদি একটি পূর্ণসংখ্যা মধ্যে সংরক্ষণ করতে চান?
>> ছাত্র: হ্যাঁ, পূর্ণসংখ্যা.
অথবা একটি float মধ্যে.
>> JASON HIRSCHHORN: একটি float ইন?
ভালো লেগেছে, ভাসা X 10 দ্বারা বিভক্ত 1 সমান.
>> JASON HIRSCHHORN: ঠিক আছে.
আমি কিভাবে printf মধ্যে একটি float প্রিন্ট আউট হয়?
কি?
>> ছাত্র:% চ.
>> JASON HIRSCHHORN:% চ.
একটি পূর্ণসংখ্যা কি?
ডি অথবা আমি.
একটি পংক্তি কি?
>> ছাত্র: গুলি.
>> JASON HIRSCHHORN: গুলি.
কিভাবে আমি একটি নতুন লাইন পেতে পারি?
>> ছাত্র: backslash হবে.
>> JASON HIRSCHHORN: আমি কি ফিরে না প্রধান রান সঠিকভাবে তাহলে কি হবে?
>> ছাত্র: 0.
আমি যদিও, যে লাইন লিখতে হবে?
>> ছাত্র: নং
ঠিক আছে, আমরা তারপর, এটা লিখতে হবে না.
সবাই যে পড়তে পারেন?
এটা একটু ছোট দেখাচ্ছে.
সবাই দেখতে, বা উচিত পারি আমি এটা বড় করতে?
আমি ক্যামেরা জন্য, আমরা করতে হবে মনে করি যদিও, এটা একটু বড়.
>> JASON HIRSCHHORN: আমি এই চালু করতে চান, . একটি এক্সিকিউটেবল মধ্যে ফাইল সি, কি
আমি লিখতে পারি?
>> ছাত্র: পরীক্ষা করুন.
>> JASON HIRSCHHORN: দুঃখিত?
>> ছাত্র: পরীক্ষা করুন.
>> JASON HIRSCHHORN: পরীক্ষা করুন.
আমরা যে বিষয়ে কথা বলছি হয়েছে তার আগে এই লাইন.
ঝনঝন.
ঝনঝন কি?
কম্পাইলার নাম.
এই লাইন কি?
>> ছাত্র: GDB ব্যবহারের জন্য এটি নির্ধারণ করে.
>> JASON HIRSCHHORN: সেট গুলি এটা GDB ব্যবহারের জন্য.
এই লাইন, যে কি?
>> ছাত্র: উত্স কোড.
>> JASON HIRSCHHORN: যে সোর্স ফাইল,. গ ফাইল.
এই দুই লাইন কি করব?
অথবা এই দুটি না রেখা.
>> ছাত্র: এটা নাম তা পরীক্ষা.
>> JASON HIRSCHHORN: তাই ড্যাশ ণ বলেছেন, ভিন্নভাবে এটি কিছু নাম দিন.
এবং এখানে আপনি পরীক্ষা এটা আহ্বান করছি.
আমি যে এর মধ্যে আছে কি না যদি, কি এটা এই নাম হবে?
>> ছাত্র: a.out.
>> JASON HIRSCHHORN: a.out.
এই কী কাজ করে?
>> ছাত্র: গণিত লাইব্রেরি লিংক.
>> JASON HIRSCHHORN: এটা লিঙ্ক গণিত লাইব্রেরি.
আমরা গণিত লাইব্রেরি অন্তর্ভুক্ত, কিন্তু হয়নি যাতে সাধারণ যেহেতু, তারা করেছেন
লিখিত মেক সবসময় অন্তর্ভুক্ত গণিত লাইব্রেরি.
এবং অনুরূপভাবে, এই অন্তর্ভুক্ত CS50 লাইব্রেরি.
>> আমরা তার তালিকা দেখাবে যদি ঠিক আছে, তাই আমরা এখন আছে পরীক্ষা নামক একটি এক্সিকিউটেবল.
এটি নির্বাহ করার জন্য, আমি পরীক্ষায় লিখতে.
আমি আমার ফ্লোটিং পয়েন্ট দেখতে যেমন প্রত্যাশিত, 0 সমান.
যে কি -
তাই -
>> ছাত্র: তারপর আপনি করা হলে, এখন ভাসা যেমন আপনি ভাসা হিসাবে এটি নিক্ষেপ -
>> JASON HIRSCHHORN: Cast একটি ভাসা 1?
>> ছাত্র: না, পুরো ব্যাপারটাই নিক্ষেপ -
হাঁ.
আপনি শুধু যে কি করেন, would যে এটি 0.1 করতে?
>> JASON HIRSCHHORN: ঠিক আছে, তাই সত্যিই দ্রুত, 1 10 দ্বারা বিভক্ত, যাদের হয়
ইন্টিজার বিভক্ত করা হচ্ছে.
আপনি ইন্টিজার বিভক্ত সুতরাং যখন তারা করছি 0, এবং আপনি সংরক্ষণ করছেন যে 0 সালে
স্ল্যাশ কারণ, ভাসা শুধু পূর্ণসংখ্যা বিভাগ.
তাই এখন আমরা কিছু বাঁক করছি একটি float মধ্যে.
>> এর কি দেখতে দিন.
আমরা পরীক্ষা করতে পারবেন.
তাই এখন আমরা যে স্ল্যাশ ছিল না দেখুন পূর্ণসংখ্যা বিভাগ, এটি ভাসমান ছিল
বিন্দু বিভাগ.
কারণ তার আর্গুমেন্ট এক একটি float থেকে নিক্ষেপ করা হয়েছে.
তাই এখন এটা এই আচরণ, বলার অপেক্ষা রাখে না ছিল বিভাজন আমরা সঙ্গে লেনদেন করছেন মত
ফ্লোটিং পয়েন্ট, না পূর্ণসংখ্যার সঙ্গে.
এবং তাই আমরা আমরা আশা উত্তর পাবেন.
>> এর কি চলুন দেখা যাক -
ওহো.
আমি আরো দশমিক প্রিন্ট করতে চেয়েছিলেন দাগ, আমি যে কিভাবে কি করতে পারে?
>> ছাত্র: পয়েন্ট ডট চ, অথবা অনেক হিসাবে আপনি চান দশমিক স্থান.
>> JASON HIRSCHHORN: তাই আমি প্রিন্ট 10 দশমিক দাগ.
এবং আমরা এখন আমরা পেয়ে থাকেন দেখুন কিছু অদ্ভুত জিনিস.
এবং যে ফিরে আপনার প্রশ্নের যায় আমার পয়েন্ট অনির্দিষ্টতা ভাসমান.
এখানে সংরক্ষিত অদ্ভুত জিনিস আছে.
>> ঠিক আছে, যে আপনার প্রশ্নের উত্তর আছে?
আপনি আর কি চান নি দ্রুত কোড করার জন্য?
>> ছাত্র: আমি ঠিক কিনা বা দেখতে চেয়েছিলেন না, আপনি কিছু পয়েন্টার আপ মুক্ত হলে,
যে পয়েন্টার এখনও সঞ্চিত ছিল কিনা এটা ছিল কি ঠিকানা
পূর্বে প্রতি নির্দেশ.
>> JASON HIRSCHHORN: ঠিক আছে, তাই এর যে না দেওয়া.
চর তারকা ptr, এই একটি পরিবর্তনশীল তৈরি করে টাইপ গৃহস্থালির তারকা ptr বলা.
কিভাবে আমি malloc লিখুন?
Alden?
>> ALDEN: শুধু malloc.
কিন্তু তারপর এটা মাপ হতে হয়েছে, এবং এই ক্ষেত্রে, আমি আপনাকে চাই অনুমান
গৃহস্থালি প্রতি নির্দেশ করা.
সুতরাং গৃহস্থালির কাজ হতে চাই.
>> JASON HIRSCHHORN: ঠিক আছে, তাই আরও জেনেরিক, ইনসাইড -
এর সম্পাদনা যাক.
Malloc ইনসাইড, আপনি নম্বর চাই এর গাদা বাইট.
সাধারণত, আমরা কি আমরা যে পাচ্ছি করছেন আমরা malloc চলুন হয়
উদাহরণস্বরূপ স্ট্রিং,, অথবা পূর্ণসংখ্যার অ্যারে.
তাই আমরা 10 ইন্টিজার, বা 10 চাই অক্ষর, 10 আমাদের 10 দিতে হবে.
এবং তারপর অক্ষর মাপ দিতে হবে আমাদের যে অক্ষর আকার, যা
এই ক্ষেত্রে 1 বাইট.
আমরা 10 বাইট পেতে.
আমরা int মাপ লিখতে হয়, যদি যে আমাদের 40 বাইট দেবে.
>> তাই আরো জেনেরিক, malloc ভেতরে আপনি চান বাইট সংখ্যা.
এই ক্ষেত্রে, আমরা 1 বাইট পেয়ে থাকেন.
একটি অদ্ভুত ব্যবহারের মত যা মনে malloc এর, কিন্তু এর জন্য আমাদের
উদ্দেশ্য জ্ঞান করে তোলে.
সুতরাং যে আছে.
>> আমরা বিনামূল্যে কল চলুন.
আমরা এটা পরিত্রাণ পেতে এবং আমরা আবার ptr ব্যবহার.
এবং যদি আপনি না পরীক্ষা কি চাইলেন?
>> ছাত্র: আমি ঠিক কি না চেক করতে চেয়েছিলেন বা কিছু ছিল না
এটি ভেতরে.
>> JASON HIRSCHHORN: তাই কিনা এটা কিছু তীক্ষ্ন?
>> ছাত্র: হাঁ, ঠিক, কিনা এটি এখনও একটি মেমরি ঠিকানা ছিল.
>> JASON HIRSCHHORN: তাই আপনি চান ptr মান চেক করতে?
>> ছাত্র: হ্যাঁ, ঠিক.
>> JASON HIRSCHHORN: আমি এখানে কি লিখতে পারি তোমার মান পরীক্ষা করতে হলে
পয়েন্ট - কি, জর্দান মূল্য, বলেন?
অথবা কি ptr ভেতরে সংরক্ষিত হয়?
>> ছাত্র: একটি মেমরি ঠিকানা.
>> JASON HIRSCHHORN: একটি মেমরি ঠিকানা.
আমি এই লেখার সুতরাং, যদি এটা করব আমার ptr মান দিতে.
এবং কিভাবে আমি প্রিন্ট আউট না একটি মেমরি ঠিকানা?
ফরম্যাট স্ট্রিং কি একটি মেমরি ঠিকানা?
>> ছাত্র:% পি.
>> JASON HIRSCHHORN:% পি.
% S-একটি পংক্তি.
পয়েন্টার জন্য% পি.
যে অধিকার আছে?
একেবারে ঠিক না.
সুতরাং ptr সমান -
এটি এখনও এটি মধ্যে কিছু আছে.
এটা সম্ভবত আরো একটি হল মজার প্রশ্ন.
যে লাইন কী কাজ করে?
>> ছাত্র: Seg ফল্ট.
>> JASON HIRSCHHORN: কি?
>> ছাত্র: আমি এটা ফল্ট seg মনে করি.
>> JASON HIRSCHHORN: Hm?
>> ছাত্র: আমি এটা ফল্ট seg করব.
>> JASON HIRSCHHORN: তাই এই লাইন কোড, তারকা ptr হাজার, কি
তারা মানে?
>> ছাত্র: এর বিষয়বস্তু.
>> JASON HIRSCHHORN: হ্যাঁ.
বিষয়বস্তু পেতে যান.
তাই এই মেমরি যেতে হবে সেখানে ঠিকানা এবং আমাকে যে দিতে.
আমি এখানে ডান% গ ব্যবহৃত কারণ আছে অক্ষর আছে সংরক্ষণ করা হয়.
সুতরাং আমরা যে ঠিকানা আমরা যেতে চলুন শুধু দেখেছি - অথবা সম্ভবত এটি একটি থাকব
সামান্য কিছুটা আলাদা এই আমরা প্রোগ্রাম চালানো সময়.
কিন্তু আমরা যে ঠিকানায় যাবেন আমরা এখনও বিদ্যমান জানি যা
এবং আছে তা দেখতে.
>> সুতরাং এটি ফল্ট seg না.
এটা ঠিক আমাদের কিছু দেয় নি.
এটা আসলে আমাদের দেওয়া হতে পারে কিছু, আমরা তা দেখতে পারছি না.
এবং যে ফিরে এই ধারণা করা যায় -
এবং আমরা মধ্যে খুব বেশী পেতে যাচ্ছেন না এই, যে বহুদূরে কারণ
এই কোর্সের সুযোগ.
আমরা কিন্তু যদি আমরা অধিকার এখানে স্বপ্ন দ্বারা অ্যারের সীমার অতিক্রম গিয়েছিলাম
1, আমরা কষ্ট পেতে পারে না.
>> কখনও কখনও, আপনি শুধু 1 দ্বারা বন্ধ যান যখন, আপনি ভুল কিছু করছেন, এবং করছি
কষ্ট পেতে পারে.
কিন্তু আপনি সবসময় ঝামেলায় পাবেন না.
এটা নির্ভর করে কত খারাপ জিনিস আপনি , আপনি কষ্ট পেতে যাচ্ছেন না.
পঙ্কিল হবে, বলতে হয় না যা আপনার কোড সঙ্গে.
কিন্তু প্রোগ্রাম না করবে না, বলতে হয় আপনি কোথাও যেতে এমনকি যদি সবসময় প্রস্থান
আপনি যেতে অনুমিত করছি না.
>> যে একটি ভাল উদাহরণ, অনেক তাদের সমস্যা ব্যক্তিদের, 3 সেট যা
15, চেক পাইনি ছিল বোর্ডের কোট.
সুতরাং আপনি লাগছিল, বাঁদিকে তাকিয়ে অধিকার, লাগছিল, উপরে তাকিয়ে
নীচে.
কিন্তু আপনি দেখুন না শীর্ষ আসলে বোর্ডে হতে যাচ্ছে.
এবং যে যারা মানুষ অনেক এবং যে পরিণত, তাদের প্রোগ্রাম কাজ
পুরোপুরি, যে যেখানে বোর্ড কারণ আপনি এক গিয়েছিলাম যদি কণ্ঠস্থ
উপরে বা চেক করা যে মেমরি ঠিকানা, কিছু ছিল না
যে সম্পর্কে বিশেষ ভয়ঙ্কর, তাই আপনার প্রোগ্রাম ছিল না
আপনি চিত্কার যাচ্ছে.
>> কিন্তু আমরা এখনও পয়েন্ট বন্ধ করা হবে যদি আপনি, যে চেক করা হয়নি আপনি কারণ
আপনি না কিছু কাজ হয়েছে করতে অনুমিত, এবং, আপনি হতে পারে
ঝামেলায় অর্জিত.
অডস আপনি সম্ভবত না, যদিও, হয়.
তাই এই, হ্যাঁ, যে দেখানোর জন্য আমরা এখনও এটা যেতে পারেন.
এবং আমরা পেয়ে না থাকেন এই ক্ষেত্রে ঝামেলা.
আমরা পড়তে করতে চেষ্টা যদি পরবর্তী 100 টি অক্ষর, আমরা চাই
সম্ভবত কষ্ট পেতে.
এবং আপনি পরের 100 পড়ার কোড পারে অক্ষর আপনি কিছু করে চান
বাছাই করা লুপ জন্য.
হ্যাঁ.
>> ছাত্র: আমরা নির্ধারিত হয় যেহেতু যে স্থান একটি প্রকৃত মূল্য, আমরা না would
আসলে কিছু দেখতে সক্ষম.
আমরা নির্ধারণের সঙ্গে এটি চেষ্টা করা উচিত যে সি বা কিছু মত সমান?
>> JASON HIRSCHHORN: গ্রেট প্রশ্ন.
আমি কিভাবে যে মান সেট করে -
কি কোড লাইন আমি লাইনে লিখুন সাতটি আপনি বলেন কি করবেন?
>> ছাত্র: স্টার ptr একক সমান উদ্ধৃতি একক উদ্ধৃতি শেষ c.
>> JASON HIRSCHHORN: সুতরাং যে নির্বাণ এর একটি অক্ষর, সি, যে অবস্থানে,
কারণ আবার, যে তারকা সেখানে যেতে হবে.
এবং বাম দিকে এর ব্যবহার যখন একটি নিয়োগ অপারেটর, যে সমান
সাইন, আমরা পেতে যাচ্ছেন না যে মান যে মান সেট যতটা.
এখন আসুন দেখুন সেখানে কি ঘটছে যাক.
>> আমরা সেখানে কিছু করা এবং এটি ছিল.
আমরা মুক্ত বলা.
কিছু উপাদান সম্ভবত ঘটেছে গাদা.
সুতরাং আর সেখানে না.
কিন্তু আবার, আমরা পেয়ে না থাকেন সেখানে যাওয়ার জন্য ঝামেলায়.
>> আমি চিত্রিত কোডে এই আউট করছি যে এইসব অনেক
আপনি যে প্রশ্ন, তারা আছেন সত্যিই আকর্ষণীয়
অনেক সময় উত্তর.
এবং তারা সত্যিই ভাল প্রশ্ন করছি.
এবং আপনি তাদের চিন্তা করতে পারেন আপনার নিজের যদি, উদাহরণস্বরূপ,
আমরা বিভাগে পারব না.
হ্যাঁ.
>> ছাত্র: আপনি পাঠানোর করছি না কারণ যে কোন জায়গায় পয়েন্টার, আপনি প্রয়োজন
malloc ব্যবহার?
>> JASON HIRSCHHORN: তাই এই ফিরে যায় আপনার প্রারম্ভিক প্রশ্নের.
[? ?]
এটি শুধু একটি স্থানীয় ভেরিয়েবল কি?
এখানে malloc যে বাধ্যকারী না.
এখানে malloc ব্যবহার নয় এটা এ কারণে যে বাধ্যকারী
শুধু একটি স্থানীয় পরিবর্তনশীল.
>> ছাত্র: সুতরাং আপনি গৃহস্থালি যেত না তারকা ptr হ্যালো সমান?
>> JASON HIRSCHHORN: ওহ.
সুতরাং আমরা এখন ফিরে পেতে যাচ্ছেন আপনার প্রারম্ভিক প্রশ্নের.
আমি আপনাকে সন্তুষ্ট ছিল না মনে হয় আমার উত্তরটি দিয়ে.
ঠিক আছে?
যে পছন্দ?
>> ছাত্র: হ্যাঁ.
অপেক্ষা করুন.
>> JASON HIRSCHHORN: এবং যেখানে আপনি প্রিন্ট আউট করতে চান?
সুতরাং আমরা যে মত একটি পংক্তি প্রিন্ট আউট করব?
>> ছাত্র: আকর্ষনীয়.
>> JASON HIRSCHHORN: সুতরাং এই এই বললেন যুক্তি একটি অক্ষর টাইপ আছে.
তাই এই একটি অক্ষর হতে হবে.
>> ছাত্র: শুধু প্রথম এক সময় লাগে.
>> JASON HIRSCHHORN: তাই এই আমি আগে বলেন কি.
ভালো লেগেছে আমি এটি সংরক্ষণ না, বলেন পরিবর্তনশীল পয়েন্টার ভিতরে পংক্তি.
এটি সংরক্ষণ হচ্ছে -
>> ছাত্র: প্রথম মূল্য স্ট্রিং.
>> JASON HIRSCHHORN: ঠিকানা স্ট্রিং প্রথম মূল্য.
আমরা এই প্রিন্ট আউট ছিল, আমরা করছি পয়েন্টার ভিতরে মূল্য পাচ্ছেন.
এবং আমরা, এটা নিশ্চয় হয় দেখতে পাবেন একটি মেমরি ঠিকানা.
>> যে জানার জন্য?
দুঃখিত.
যে আপনার উত্তর আছে, অপেক্ষা করুন প্রশ্ন, যদিও?
>> ছাত্র: হ্যাঁ.
>> JASON HIRSCHHORN: কোড এই লাইন একটি স্ট্রিং এবং তারপর অন্য তৈরি
এর প্রতি নির্দেশ করে যে পরিবর্তনশীল পয়েন্টার স্ট্রিং থেকে, যে অ্যারে.
হ্যাঁ.
>> আমরা এক মেমরি গিয়েছিলাম যদি তাই হয়: শিক্ষার্থীদের আরও মোকাবেলার, আমরা জ পেতে হবে?
এটি একটি স্ট্রিং হিসেবে সংরক্ষণ করা হয়েছে!
>> JASON HIRSCHHORN: ভালো লেগেছে, আমরা কি -
তাই এই কাজ করতে মূল্যবান.
এই বিন্দু পাটীগণিত, যা আপনি না হয় আগে দেখা যায় এবং করা উচিত
সঙ্গে তুলনামূলকভাবে আরামদায়ক.
এই লেখার সদৃশ হয় -
আমরা কোড এই লাইন লিখতে হয়, যদি আমরা আগে অ্যারে নোটেশন দেখা করেছি.
এটি আমাদের দ্বিতীয় দিতে হবে এই অ্যারে, এইচ মান.
>> আমরা এই কি, এই এছাড়াও দিতে হবে আমাদের যে অ্যারের মধ্যে দ্বিতীয় মান.
এটি মেমরি না যাচ্ছে কারণ প্রথম জিনিস ঠিকানা, কিন্তু
এক ওভার জিনিস মেমরি ঠিকানা.
এবং তারপর তারা অপারেটর dereferences যে পয়েন্টার.
এবং আবার, দেখুন.
আমরা আবার জ পেতে.
>> ছাত্র: কি ঠিক আছে মানে dereference?
>> JASON HIRSCHHORN: Dereference যেতে জন্য অভিনব শব্দ.
যে যান এবং সেখানে কি পেতে একটি পয়েন্টার dereference হয়.
এটা যে জন্য শুধু একটি অভিনব শব্দ এর.
>> আমরা মুদ্রণ চেয়েছিলেন: শিক্ষার্থীদের পুরো স্ট্রিং, পারা আমরা
ampersand পয়েন্টার কি?
>> JASON HIRSCHHORN: ঠিক আছে, আমরা হয় এখানে বিরতি যাচ্ছে.
আমরা এখানে শেষ হয়ে যাচ্ছে.
Ampersand আপনি একটি ঠিকানা দেয় অবস্থান, তাই যখন আপনাদের মধ্যে ampersand না
একটি পরিবর্তনশীল, এটা আপনার ঠিকানা দেয় যে পরিবর্তনশীল সঞ্চিত যেখানে.
Ampersand পয়েন্টার আপনি দিতে হবে ptr মেমরি যেখানে ptr এর ঠিকানা.
>> আমরা যেতে যাচ্ছেন না এই উদাহরণ দিয়ে.
আপনি এই চিন্তা করতে পারেন আপনার নিজের জিনিস.
কিন্তু আবার, এই এমনকি একটি verging হতে পারে আপনার জন্য জানা প্রয়োজন পরেও বিট
এই মধ্য মেয়াদী সুযোগ -
এই ব্যঙ্গ, বরং.
দুঃখিত.
>> আমি কারণ আমরা এগিয়ে যেতে যাচ্ছে এক কোডিং সমস্যা যা করতে চাই
সময় হয় আগে.
এবং আমরা আমি মনে কোড যাচ্ছে এর মধ্যে সবচেয়ে আকর্ষক হয়
উদাহরণ, ATOI.
তাই এই একটি প্রশ্ন ছিল দুই বছর আগে একটি ব্যঙ্গ.
এবং আমি এখানে বোর্ডে এটি আছে.
>> মানুষ ব্যঙ্গ বলা হয়েছিল -
তারা একটু বেশি tesxt দেওয়া হয় প্রশ্ন, কিন্তু আমি কাটানো
এটি অপ্রয়োজনীয় ছিল টেক্সট কারণ এখন আমাদের উদ্দেশ্যে.
এটি শুধু কিছু পটভূমি ছিল কি ATOI নেভিগেশন.
কিন্তু আপনি সব জানেন এবং হয় খুব ATOI সাথে পরিচিত.
>> আমি আপনাকে এই কোড সুপারিশ কাগজের একটি পত্রকে.
আমি আপনি কৌশল ব্যবহার সুপারিশ আমরা উপর চলে গেছে করেছি
আমাদের বিভাগে অনেক.
প্রথমত, নিশ্চিত করুন যে আপনি বুঝতে না কি ATOI এর করছেন.
একটি ছবি আঁকুন বা কিছু চিন্তা আপনার মাথায় এটা মানসিক ছবিটি.
এর পরে, এই জন্য pseudocode লেখে.
ব্যঙ্গ, আপনি পেতে সব যদি pseudocode, অন্তত আপনি
কিছু দমন করা.
এবং তারপর সম্মুখের যে pseudocode ম্যাপ সি আপনি মধ্যে একটি চেক আছে আপনার
pseudocode, মত চেক করে যদি কিছু 1, একটি হলে সম্মুখের মানচিত্র হয়
তাই ঘোষণা শর্ত ও.
এবং পরিশেষে, সি প্রোগ্রাম কোড
>> তাই ফিরে ATOI যান এবং পাঁচ মিনিট সময় লাগবে একটি চাদর নেভিগেশন এই কোড থেকে
সম্পর্কে সম্ভবত যা কাগজ, আপনি একটি নিতে হবে সময় পরিমাণ
কোড ATOI যাও ব্যঙ্গ.
পাঁচ থেকে 15 মিনিট, পাঁচ থেকে পাঁচ, 12 10 মিনিট, পরিমাণ সম্পর্কে
আপনি এই খরচ চাই সময় প্রশ্নোত্তর প্রশ্ন.
সুতরাং, এখন পাঁচ মিনিট অনুগ্রহ করে নিতে.
এবং যদি আপনার কোন প্রশ্ন থাকে তাহলে, বাড়াতে আপনার হাত এবং আমি প্রায় আসবো.
>> [SIDE কথোপকথনে]
>> JASON HIRSCHHORN: ঠিক আছে, তাই যে পাঁচ মিনিট ছিল.
যে পরিমাণ প্রায় সম্ভবত ছিল সময় আপনি একটি ব্যঙ্গ যে খরচ চাই
যে সময় হয়তো কম শেষ.
আমরা কিছুক্ষনের মধ্যে সংক্ষিপ্তবৃত্তি করব.
আমাদের এই কোডিং এর শুরু.
এবং আমরা সব উপায় মাধ্যমে পেতে না, এই উত্তর এবং এই
প্রশ্নোত্তর প্রশ্ন আবার, পাওয়া যায়, পতন 2011 এই প্রশ্ন যখন হয়
ব্যঙ্গ হাজির.
>> এবং এটা আট পয়েন্ট মূল্য ছিল ব্যঙ্গ তারপর.
আট পয়েন্ট উচ্চ শেষ হয় পয়েন্ট কিছু পরিমাণ মূল্য.
বেশিরভাগ প্রশ্ন সীমার মধ্যে হয় এক থেকে ছয় পয়েন্ট.
তাই এই একটি আরো চ্যালেঞ্জিং নিশ্চিত জন্য প্রশ্ন.
আমার কেহ শুরু করতে পারেন?
>> সাধারণত, কি আমরা যাচ্ছি এই সঙ্গে কাজ করতে চান করতে
যুক্তি, ATOI কাজ?
আমরা কি করতে চান?
তাই আমরা লিখতে যাচ্ছেন কিছু pseudocode.
>> ছাত্র: অক্ষরের রূপান্তর করুন ইন্টিজার মধ্যে.
>> JASON HIRSCHHORN: অক্ষরের রূপান্তর করুন ইন্টিজার মধ্যে.
ঠিক আছে.
সুতরাং কিভাবে অনেক অক্ষর আমরা মধ্য দিয়ে যেতে প্রয়োজন যাচ্ছে?
>> ছাত্র: তাদের সব.
>> ছাত্র: সমস্ত অক্ষর স্ট্রিং.
>> JASON HIRSCHHORN: সমস্ত স্ট্রিং অক্ষর.
আমরা প্রতি মধ্য দিয়ে যেতে চেয়েছিলেন তাই যদি একটি পংক্তি মধ্যে অক্ষর, একটি জিনিস কি
সি আমরা অনুমতি দেওয়া হয়েছে যে দেখা করেছি আমাদের প্রতি মধ্য দিয়ে যেতে
একটি স্ট্রিং মধ্যে চরিত্র?
>> ছাত্রদের: লুপ জন্য একটি.
>> JASON HIRSCHHORN: লুপ জন্য একটি.
সুতরাং আমরা মাধ্যমে লুপ চলুন গুলি প্রতিটি চরিত্র.
>> তারপর কি আমরা যেতে চাই যাচ্ছে আমরা একটি নির্দিষ্ট অক্ষর পেতে হলে?
আমরা একটি 90 পাস পেয়ে থাকেন বলুন.
আমরা 9 ​​পেতে.
এটি একটি চরিত্র আছে.
আমরা কি সঙ্গে কাজ করতে চান না যে চরিত্র 9?
>> ছাত্র: অক্ষর 0 থেকে বিয়োগ?
>> ছাত্র: 0 যোগ করবেন?
>> JASON HIRSCHHORN: বিয়োগ অক্ষর 0 থেকে এটা?
>> ছাত্র: হ্যাঁ.
>> JASON HIRSCHHORN: কেন করবেন আপনি যে কাজ করতে চান?
>> ছাত্র: [শ্রবণাতীত]
মূল্য.
এর int মান.
>> JASON HIRSCHHORN: ঠিক আছে, তাই আমরা গ্রহণ চরিত্র 9, থেকে বিয়োগ
চরিত্র 0 একটি পেতে প্রকৃত পূর্ণসংখ্যা 9.
মিষ্টি.
এবং কিভাবে আপনি যে চরিত্র জানেন 9 0 ঋণাত্মক চরিত্র 9 হয়?
আপনি এ কি চার্ট তাকান নি?
>> ছাত্র: ন 'কথাটি আছে 9 এবং 0 এর মধ্যে জায়গা.
অথবা আপনি ASCII টেবিল তাকান পারে.
>> JASON HIRSCHHORN: ASCII টেবিল.
কিন্তু হ্যাঁ, আপনি যেমন সঠিক করছি.
সুতরাং আমরা 0 বিয়োগ.
তাই এখন আমরা পূর্ণসংখ্যা 9 আছে.
এবং কি আমরা যে সঙ্গে কাজ করতে চান না?
আমরা 90 আছে, এটা প্রথম পূর্ণসংখ্যা আমরা, আমরা কি চাই আছে?
>> ছাত্র: আমি একটি অস্থায়ী পূর্ণসংখ্যা রাখা চাই অ্যারের তারপর, এটা করার জন্য গণিত না
পরে শেষ মধ্যে এটি করা.
>> JASON HIRSCHHORN: ঠিক আছে.
>> ছাত্র: আপনি শেষে শুরু করতে পারেন তারপর অ্যারের এবং যাতে অগ্রসর
যে আপনি অগ্রসর প্রতিটি সময়, আপনি 10 দ্বারা এটি সংখ্যাবৃদ্ধি.
>> JASON HIRSCHHORN: ঠিক আছে.
এটা একটি প্রশংসনীয় মত শোনাচ্ছে বাধ্যকারী ধারণা.
আমরা আমাদের অ্যারের শেষে শুরু করতে পারেন, এবং আমরা strleng ব্যবহার করতে পারেন.
আমরা এখানে strleng ব্যবহার করতে পারেন.
আমরা আমাদের স্ট্রিং এর দৈর্ঘ্য পাবেন.
আমরা শেষে শুরু.
এবং + প্রথম এক, আমরা নিতে যে পূর্ণসংখ্যা, এবং হয়ত আমরা একটি ভালো তৈরি
নতুন পূর্ণসংখ্যা পরিবর্তনশীল আপ উপরে যেখানে আমরা সবকিছু সংরক্ষণ করছেন.
থেকে গুলি প্রতি গৃহস্থালি মাধ্যমে তাই আমরা লুপ ফিরে সামনে, আমরা 0 বিয়োগ, এবং
তারপর আমরা তা গ্রহণ করা, এবং তার উপর নির্ভর করে যেখানে এটা, আমরা এটা সংখ্যাবৃদ্ধি
10 একটি শক্তি দ্বারা.
কারণ প্রথম এক, আমরা কি ডানদিকে অবস্থিত অক্ষর দ্বারা সংখ্যাবৃদ্ধি?
>> ছাত্র: 0 থেকে 10.
>> JASON HIRSCHHORN: 0 থেকে 10.
আমরা দ্বিতীয় কি সংখ্যাবৃদ্ধি না ডানদিকে অবস্থিত অক্ষর দ্বারা?
>> ছাত্র: [শ্রবণাতীত].
>> JASON HIRSCHHORN: কি?
>> ছাত্র: 1 10.
>> JASON HIRSCHHORN: 1 10.
তৃতীয় ডানদিকে অবস্থিত চরিত্র?
>> ছাত্র: 2 10.
>> JASON HIRSCHHORN: 2 10.
>> ছাত্র: দুঃখিত, আমি বুঝতে পারছি না আমরা এখানে কি করছেন.
>> JASON HIRSCHHORN: ঠিক আছে, এর পরে, ফিরে যান.
সুতরাং আমরা পেতে যাচ্ছেন একটি পংক্তি সালে পাশ.
আমরা ATOI লেখার কারণ.
সুতরাং আমরা একটি স্ট্রিং পাস পেতে.
আমরা পাশ শুরু করছেন বলুন স্ট্রিং 90 সালে.
>> আমরা কি করতে যাচ্ছেন সর্বপ্রথম সেট করা হয় আমরা যে একটি নতুন পূর্ণসংখ্যা পরিবর্তনশীল
শুধু তৈরি করতে যাচ্ছে আমাদের নতুন পূর্ণসংখ্যা হিসাবে.
আমরা চলুন শেষে ফিরে যাওয়ার জন্য.
আমরা প্রতিটি চরিত্রের মধ্য দিয়ে যেতে হবে স্ট্রিং আমরা নির্ধারণ করেছি, কারণ
আমরা প্রতিটি এক স্পর্শ করতে হবে এবং যে তারপর আমাদের নতুন পূর্ণসংখ্যা এটি যোগ করুন.
>> কিন্তু আমরা শুধু একটি সংখ্যা হিসেবে এটি যোগ করতে পারবেন না.
আমরা শুধু 9 এবং নিতে না পারে আমাদের পূর্ণসংখ্যা 9 যোগ করুন.
এটা কি জায়গা উপর নির্ভর করে এটি স্ট্রিং হয়.
আমরা সংখ্যাবৃদ্ধি প্রয়োজন চলুন এটা 10 একটি শক্তি দ্বারা.
কারণ যে কিভাবে বেস 10 কাজ করে.
>> সুতরাং আমরা প্রকৃত পেতে যাচ্ছেন চরিত্র, বা প্রকৃত পূর্ণসংখ্যা
সংখ্যা, অক্ষর 0 subtracting দ্বারা চরিত্র 9 আমরা সঙ্গে কি মত থেকে
থেকে অক্ষর বড় হাতের একটি subtracting আমরা এক ছিল যাই হোক না কেন চরিত্র
সেই সমস্যা.
তাই আসলে আমরা 0 থেকে একটি নম্বর পাবেন 9 একটি বাস্তব সংখ্যা হিসেবে সংরক্ষিত, এবং আমরা করব
নির্ভর করে 10 এর ক্ষমতা দ্বারা এটি সংখ্যাবৃদ্ধি আমরা স্ট্রিং যেখানে নেভিগেশন.
এবং তারপর আমরা তা ফিরে যোগ চলুন আমাদের নতুন পূর্ণসংখ্যা পরিবর্তনশীল মধ্যে.
>> তাই এই একটা ভালো দেখাবে আমরা এখানে উপর আঁকা করব - করা.
আমরা স্ট্রিং 90 সালে পাশ পেতে হলে -
>> ছাত্র: [শ্রবণাতীত].
>> JASON HIRSCHHORN: কিন্তু ATOI একটি পংক্তি প্রদর্শন করা হয়.
সুতরাং আমরা মধ্য দিয়ে যেতে চলুন জোত.
আমরা 90 সালে পাশ পাবেন.
আমরা সামনে পিছন থেকে যান.
আমরা 0 নিতে.
>> ছাত্র: আমি দুঃখিত.
হয়তো এই মূঢ়.
আমরা একটি স্ট্রিং পাস পেয়ে করছি, কেন আমরা করছি কি 90 হয়
সালে পাশ হচ্ছে?
90 একটি পূর্ণসংখ্যা হয়.
>> JASON HIRSCHHORN: ATOI একটি লাগে কারণ স্ট্রিং এবং পূর্ণসংখ্যা মধ্যে এটি সক্রিয়
যে স্ট্রিং এর উপস্থাপনা.
কিন্তু স্ট্রিং 90 পূর্ণসংখ্যা নয় 90 বা সংখ্যা 90.
স্ট্রিং 90 একটি দুটি অ্যারে, বা হয় তিনটি অক্ষর, বরং, 9
চরিত্র, 0 চরিত্র, এবং ব্যাকস্ল্যাশ 0 চরিত্র.
>> এবং আমরা, কারণ জন্য ATOI লেখার উদাহরণস্বরূপ, আপনি কমান্ড গ্রহণ করার সময়
লাইন আর্গুমেন্ট, এবং এটি মধ্যে সংরক্ষিত হচ্ছে argv, এটি একটি স্ট্রিং হিসেবে সংরক্ষিত হচ্ছে.
তবে আপনি যদি একটি সংখ্যা হিসেবে বিবেচনা করতে চান, আপনি যদি একটি থেকে এটি রূপান্তর করতে হবে
প্রকৃত পূর্ণসংখ্যা.
যা আমরা আমাদের সমস্যা সেট এক করেছিল.
আমরা একটি নম্বর করেছিল কোনটি আমাদের সমস্যা সেট.
একটি পূর্ণসংখ্যা গ্রহণ প্রত্যেকেরই একটি কমান্ড লাইন আর্গুমেন্ট হিসাবে.
সুতরাং যে কেন আমাদের ATOI ফাংশন একটি পংক্তি প্রদর্শন করা হয়.
>> তাই আবার, এখানে আমাদের উদাহরণে, আমরা করছি গত এক নিতে যাচ্ছে.
আমরা চরিত্র বিয়োগ চলুন এটি থেকে 0, কারণ অক্ষর 0
চরিত্র 0 দ্বারা বিয়োগ আপনি দেয় অনুযায়ী প্রকৃত সংখ্যা 0,
আমরা কি যে হওয়া ASCII গণিত.
>> অক্ষর হিসাবে প্রতিনিধিত্ব করা হয় কারণ তাদের প্রকৃত চেয়ে ভিন্ন -
অক্ষর একটি, যেমন, ছোট হাতের একটি 97 হয়.
এটা না - উফ!
এটা আপনি আশা করবে যাই হোক না কেন নয় এটা উদাহরণস্বরূপ,, 0 হতে.
সুতরাং আপনি বিয়োগ করতে হবে অক্ষর একটি 0 পেতে.
>> তাই আমরা এখানে যে করতে যাচ্ছেন প্রকৃত সংখ্যা পেতে.
এবং তারপর আমরা দ্বারা এটি সংখ্যাবৃদ্ধি যাচ্ছে 10 এর একটি ক্ষমতা যেখানে এটি উপর নির্ভর করে
স্ট্রিং, এবং তারপর যে গ্রহণ এবং আমাদের জায়গা ধারক এটি যোগ করুন
পরিবর্তনশীল তাই আমরা চিন্তা করতে পারে আমাদের চূড়ান্ত নতুন পূর্ণসংখ্যা.
সবাই যে ইন্দ্রিয় তোলে না?
>> সুতরাং আমরা এই কোড যাচ্ছেন না ঠিক এখন, কারণ আমরা করছি
সময় সংক্ষিপ্ত পেয়ে.
আমি যে সময়সীমাকে জন্য ক্ষমাপ্রার্থী.
কিন্তু এই কি, আশা, আপনি হয় এ - ব্যঙ্গ করতে পারা
অন্ততপক্ষে, এই pseudocode পেতে আউট লিখিত.
>> এবং তারপর, আমরা যদি লিখতে pseudocode, আসলে, আমরা এই কাজ করতে পারে
প্রশংসনীয় দ্রুত.
আমরা আমরা লিখেছিলেন মন্তব্য প্রত্যেকটি লাইন এখানে প্রায় অনুবাদ
সি কোড একটি লাইন.
একটি নতুন পরিবর্তনশীল, লিখিত ঘোষণা একটি লুপ, কিছু বিয়োগ, কিছু
গুণ, এবং কিছু নিয়োগ.
আমরা সম্ভবত এটাও চাই চাই একটি ফিরতি লাইন লিখুন.
আমরা রাখতে চাইবেন এখানে কিছু চেক.
হ্যাঁ.
>> ছাত্র: সুতরাং আমরা বিবেচনা করতে পারেন প্রকৃত স্ট্রিং হিসেবে গুলি?
আমি জানি কারণ এটি শুধু একটি ঠিকানা আছে.
ভালো লেগেছে, কিভাবে আপনি দৈর্ঘ্যের পেতে চাই স্ট্রিং মাধ্যমে গৃহীত হচ্ছে?
>> JASON HIRSCHHORN: সুতরাং কিভাবে কি একটি স্ট্রিং এর দৈর্ঘ্য?
Strlen.
>> ছাত্র: strlen, হাঁ.
কিন্তু আপনি যত গুলি লাগাতে পারেন যে জন্য যুক্তি?
>> JASON HIRSCHHORN: তাই strlen একটি গৃহস্থালি তারকা লাগে.
এবং এটা যে গৃহস্থালি তারকা অনুসরণ করে, এবং এটি এটি একটি পায় না হওয়া পর্যন্ত বেড়ে চলেছে রাখে
ব্যাকস্ল্যাশ 0. strlen আসলে ছিল অন্যান্য প্রোগ্রামের এক আমরা
কোড চালু ছিল.
যে কোড আরেকটি ভাল এক.
যে এক, একটু সহজ যদি কারণ আপনি যে সম্পর্কে চিন্তা করতে যাচ্ছেন
ধারণার দিক -
আমি অট্ট এটা বলেন - strlen অনুসরণ একটি পয়েন্টার এবং রাখে যাচ্ছে এবং
বেড়ে চলেছে এবং যতক্ষণ অবগত থাকার আপনি একটি ব্যাকস্ল্যাশ 0 পৌঁছানোর.
>> ছাত্র: ঠিক আছে, পেয়েছি.
>> JASON HIRSCHHORN: তাই সেরা ব্যঙ্গ 0 আগামীকাল নেভিগেশন ভাগ্য.
যদি আপনার কোন প্রশ্ন থাকে, আমি করব এই পর বাইরে করা.
আমাকে ইমেইল বিনা দ্বিধায়.
আপনি যদি আপনার নিজের TF কাছে পৌঁছানো আমার বিভাগে বা পাবেন না আমার
আপনি এটি করতে চান ইমেইল.
>> আপনি খেয়াল আউট করতে চান এবং শুধু পাঠাতে হলে আমাকে একটি ইমেইল, একটি Freakout ইমেইল, আমি করব
, একটি হাস্যজ্জল মুখ, মত, আপনাকে ফেরত পাঠাতে বা, মত, একটি তামাশা বা কিছু.
সুতরাং হিসাবে ভাল তা করতে বিনা দ্বিধায়.
গুড লাক আবার, এবং আমি করব সব আগামী সপ্তাহে আপনি দেখতে.