[Powered by Google Translate] [Walkthrough - সমস্যা সেট 6]
[Zamyla Chan - হার্ভার্ড বিশ্ববিদ্যালয়]
[এটি CS50. - CS50.TV]
>> Huff'n বহান: হ্যালো, প্রত্যেককে, Walkthrough 6 যাও এবং স্বাগত জানাই.
Huff'n বহান আমরা কি করছেন একটি Huffman ফাইল কম্প্রেস সাথে ডিল করা যাচ্ছে না
এবং তারপর, তাই এটি puffing ব্যাক আপ, এটি decompressing,
যাতে আমরা 0 সেঃ এবং 1s যে ব্যবহারকারী পাঠায় আমাদের থেকে অনুবাদ করতে পারেন
এবং রূপান্তর করুন মূল টেক্সট ফিরে.
Pset 6 চমত্কার হবে কারণ আপনি সরঞ্জামের কিছু দেখতে যাচ্ছেন না
যে pset 4 এবং 5 pset এবং ধরণের আপনি 1 চমত্কার ঝরঝরে ধারণার মধ্যে তাদের মিশ্রন ব্যবহৃত
যখন আপনি এ সম্বন্ধে চিন্তা আসে.
>> এছাড়াও তর্কসাপেক্ষ,, pset 4 এবং 5 ছিল সবচেয়ে চ্যালেঞ্জিং psets যে আমরা অফার ছিল.
তাই এখন থেকে, আমরা এই সি 1 pset আরো আছে,
যে পরে এবং তারপর আমরা ওয়েব প্রোগ্রামিং করছি.
সুতরাং CS50 মধ্যে toughest কুঁজ উপর পাবার জন্য নিজের অভিনন্দন.
>> Huff'n বহান জন্য মুভিং উপর, এই pset জন্য আমাদের টুলবাক্স যাও Huffman গাছ হতে যাচ্ছে,
তাই না শুধুমাত্র বাইনারি গাছ কিভাবে কাজ কিন্তু বিশেষভাবে Huffman গাছ অন্তর্দৃষ্টিসম্পন্ন,
কিভাবে তারা নির্মাণ করছেন.
এবং তারপর আমরা এই pset ডিস্ট্রিবিউশন কোড অনেক আছে চলুন,
এবং আমরা যে আসলে দেখতে কোড কিছু আসবো
আমরা এখনো পুরোপুরি বুঝতে সক্ষম নাও হতে পারে,
এবং তাই যারা. গ ফাইল হতে পারে, কিন্তু পরে তাদের প্রবন্ধসহ. জ ফাইল করা
যথেষ্ট যে আমরা বোঝার প্রয়োজন যাতে আমরা জানতে পারি কিভাবে তাদের কাজ কর্ম আমাদের দিতে হবে
বা অন্তত তাতে, তারা কি অনুমিত হয় - তাদের ইনপুট এবং আউটপুট -
এমনকি যদি আমরা কি কালো বাক্সে ঘটছে না
বা কালো বাক্সে কি মধ্যে ঘটছে না বোঝেন.
এবং তারপর অবশেষে স্বাভাবিক হিসাবে, আমরা নতুন ডাটা স্ট্রাকচার সাথে ডিল করা হয়,
নোড যে নির্দিষ্ট ধরনের কিছু জিনিস নির্দেশ,
এবং এখানে শুধুমাত্র তাই নয় নকশা প্রক্রিয়ার জন্য কলম এবং কাগজ হচ্ছে
এবং আপনি যখন চিন্তা কিভাবে আপনার pset কাজ করা উচিত চেষ্টা করছেন
কিন্তু সময় ডিবাগিং.
আপনি আপনার কলম এবং কাগজ পাশাপাশি GDB আছে যখন আপনি সরানোর কি মান পারেন,
যেখানে আপনার তীর, এবং যে প্রতি নির্দেশ মত কাজ হয়.
>> প্রথম দিন Huffman গাছ তাকান এর.
Huffman গাছ হয় বাইনারি গাছ, যার মানে হল শুধুমাত্র প্রতিটি নোডের মধ্যে 2 সন্তান রয়েছে.
চরিত্রগত Huffman গাছ হল যে অধিকাংশ ঘন মান
fewest বিট দ্বারা প্রতিনিধিত্ব করা হয়.
আমরা সাঙ্কেতিক লিখন - পদ্ধতি সম্পর্কে বক্তৃতা উদাহরণ, দৃঢ় কোন ধরনের কিছু অক্ষর দেখেছি.
আপনি যদি কোনো একটি বা উদাহরণ জন্য একটি ই, অনুবাদ করার চেষ্টা করছেন,
আপনি যে প্রায়ই অনুবাদ করছি, তাই বদলে যাও বিট পূর্ণ সেট ব্যবহার
যে স্বাভাবিক তথ্য টাইপ জন্য বরাদ্দ, আপনি এটি কম কম্প্রেস করে,
এবং তারপর ঐ অক্ষর যারা কম প্রতিনিধিত্ব করা হয় প্রায়ই আর বিট সঙ্গে প্রতিনিধিত্ব করা হয়
কারণ আপনি যে সামর্থ্য যখন আপনি তৌল ফ্রিকোয়েন্সি যে ঐ অক্ষর প্রদর্শিত করতে পারেন.
আমাদের সাথে আছে Huffman গাছ এখানে একই ধারণা
যেখানে আমরা একটি চেইন, পাথ একটি নির্দিষ্ট ধরনের অক্ষর পেতে তৈরি করছেন.
এবং তারপর অক্ষর কে ফ্রিকোয়েন্সি আছে
যাও fewest বিট সঙ্গে প্রতিনিধিত্ব করা যাচ্ছে.
>> উপায় যে আপনি একটি Huffman ট্রি নির্মাণ করা
অক্ষর টেক্সট দেখা যায় সব স্থাপন হয়
এবং তাদের ফ্রিকোয়েন্সি হিসাবী, কিভাবে তারা প্রায়ই প্রদর্শিত হবে.
এটি হয় হতে কতবার ঐ অক্ষর প্রদর্শিত একটি গণনা করতে পারে
অথবা সম্ভবত আউট সকল অক্ষর কতগুলি প্রতিটি প্রদর্শিত শতাংশ.
তাই আপনি কি করবেন আপনি যে মাপা হয় একবার আউট সব আছে,
তারপর আপনি 2 সর্বনিম্ন ফ্রিকোয়েন্সি জন্য তাকান এবং তারপর ভাইবোন হিসাবে তাদের যোগদান
যেখানে তারপর ঊর্ধ্বতন নোডের একটি ফ্রিকোয়েন্সি যা তার 2 শিশুদের সমষ্টি রয়েছে.
এবং কনভেনশন দ্বারা তারপর আপনি যে বাম নোড,
আপনি 0 শাখা অনুসরণ করে যে অনুসরণ,
এবং তারপর ডানদিকে অবস্থিত নোড 1 টি শাখা.
সাঙ্কেতিক লিখন - পদ্ধতি হিসাবে আমরা দেখেছি, এক gotcha ছিল যে আপনি যদি শুধুমাত্র একটি হুইসেল এবং হুইসেল ছিল
এটি ছিল অনির্ধারিত.
এটা করা হয় 1 চিঠি বা এটি 2 বর্ণের ক্রম হতে পারে পারে.
তাই কি Huffman গাছ আছে কারণ হল দ্বারা অক্ষর প্রকৃতি
অথবা আমাদের চূড়ান্ত প্রকৃত অক্ষর হচ্ছে শাখা শেষ নোড -
যারা পাতার হিসাবে যাও আমরা পড়ুন - যে কারণে দ্বারা কোনো অস্পষ্টতা নেই পারেন
এ পদ যা চিঠি আপনি বিট সিরিজ সঙ্কেতাক্ষরে লিখা চেষ্টা করছি
কারণ 1 বিট যে চিঠি প্রতিনিধিত্ব বরাবর দাঁড়াতেই
অন্য পুরো চিঠি আপনি সম্মুখীন হবে এবং সেখানে কোনো ধরনের বিভ্রান্তির সেখানে হবে না.
কিন্তু আমরা উদাহরণ মধ্যে আসলে আপনি না দেখতে পারেন যাবেন যে
পরিবর্তে শুধু আমাদেরকে বলছে যে এটা সত্য.
>> চলুন একটি Huffman গাছ সহজ উদাহরণ তাকান.
আমি এখানে একটি পংক্তি নির্মিত হবে যা 12 অক্ষর দীর্ঘ আছে.
আমি, যেহেতু 6 Bs, এবং 2 Cs 4 আছে.
আমার প্রথম পদক্ষেপ গণনা করা হবে.
কত বার একটি মনে হয় না? এটি স্ট্রিং মধ্যে 4 বার প্রদর্শিত হবে.
বি 6 বার প্রদর্শিত হবে, এবং সি 2 বার প্রদর্শিত হবে.
স্বাভাবিকভাবেই, আমি আমি বি করছি ব্যবহার করে প্রায়ই বলতে যাচ্ছি,
আমি বিট fewest নম্বর, 0 সেঃ এবং 1s এর fewest নম্বর বি প্রতিনিধিত্ব করতে চান.
এবং তারপর এছাড়াও আমি সি 0 সেঃ এবং 1s অধিকাংশ পরিমান হিসাবে ভাল প্রয়োজন আশা করছি না.
প্রথমে আমি এখানে কি আমি ফ্রিকোয়েন্সি পদ ক্রম ঊর্ধ্বগামী হয় সেগুলি স্থাপন করা.
আমরা দেখতে যে সি এবং একটি, যারা আমাদের 2 সর্বনিম্ন ফ্রিকোয়েন্সি.
আমরা একটি ঊর্ধ্বতন নোড নির্মাণ, এবং যে পিতা বা মাতা নোডের একটি চিঠি সঙ্গে যুক্ত নেই,
কিন্তু এটি একটি ফ্রিকোয়েন্সি, যা সমষ্টি আছে.
সমষ্টি হয়ে 2 + 4, যা 6.
তারপর আমরা বাম শাখা অনুসরণ.
যদি আমরা যে 6 নোড ছিল, তারপর আমরা সি পেতে 0 অনুসরণ করবে
এবং তারপর 1 এ পেতে
তাই এখন আমরা 2 নোড আছে.
আমরা মান 6 আছে এবং তারপর আমরা মান 6 সঙ্গে অন্য একটি নোড আছে.
তাই যারা 2 হয় না কেবলমাত্র 2 সর্বনিম্ন কিন্তু মাত্র 2 যে বাকি আছে,
তাই আমরা অন্য ঊর্ধ্বতন দ্বারা যারা যোগদান যোগফল হচ্ছে 12 সহ,.
তাই আমরা এখানে আমাদের Huffman গাছ আছে
যেখানে বি পেতে, ঠিক যে বিট হতে হবে 1
এবং তারপর একটি পেতে থাকে, তবে আমরা 01 এবং সি হচ্ছে 00 দিন.
সুতরাং এখানে আমরা দেখতে যে আমরা মূলত হয় 1 বা 2 বিট সঙ্গে এইসব টুকিটাকি কাজ করছেন প্রতিনিধিত্বমূলক
যেখানে বি, পূর্বাভাস হিসাবে, অন্তত হয়েছে.
এবং তারপর আমরা সি সবচেয়ে প্রত্যাশিত আছে, কিন্তু তিনি যেহেতু এটা যেমন একটি ছোট Huffman গাছ,
তারপর একটি এছাড়াও 2 কোথাও হিসাবে মধ্যম বিরোধিতা বিট দ্বারা প্রতিনিধিত্ব করা হয়.
>> আর Huffman গাছ সহজ উদাহরণ উপরে যেতে,
বলতে আপনি স্ট্রিং আছে "হ্যালো."
আপনি কি কি করতে হয় প্রথম আপনি কতবার H জন্য এই উপস্থিত বলতে হবে?
H প্রদর্শিত হবে একবার এবং তারপর ই প্রদর্শিত হবে একবার এবং তারপর আমরা ঠ প্রদর্শনে দুইবার আছে
ণ এবং একবার প্রকাশমান.
এবং তারপর, তাই আমরা আশা যা চিঠি বিট কমপক্ষে নম্বর দ্বারা প্রতিনিধিত্ব করা হবে?
[ছাত্রদের] ঠ. >> ঠ. হাঁ. ঠ সঠিক.
আমরা আশা ঠ বিট কমপক্ষে নম্বর দ্বারা প্রতিনিধিত্ব করা
কারণ ঠ স্ট্রিং হয় সর্বাধিক ব্যবহৃত "হ্যালো."
আমি এখন কি করতে যাচ্ছি এই নোডের হয় আঁকা আউট.
আমি 1 আছে, যা H, এবং তারপরে অন্য 1 টি, যা ই, এবং তারপর একটি 1, যা ণ -
ডান এখন আমি আদেশ করছি তাদের নির্বাণ - তারপর এবং 2, যা ঠ.
তারপর আমি বলতে উপায় যে আমি একটি Huffman ট্রি নির্মাণ কমপক্ষে ফ্রিকোয়েন্সি সঙ্গে 2 নোড খুঁজতে হয়
পিতা বা মাতা এবং একটি নোড দ্বারা তৈরি করা ভাইবোন তাদের.
এখানে আমরা অধম ফ্রিকোয়েন্সি সঙ্গে 3 নোড আছে. এগুলি সব 1.
সুতরাং এখানে আমরা নির্বাচন যা আমরা প্রথম লিঙ্ক চলুন.
চলুন শুরু করা যাক বলতে আমি ই H ও চয়ন.
যোগফল 1 + 1 2, কিন্তু এই নোডের একটি চিঠি সঙ্গে যুক্ত নেই.
এটা মান ঝুলিতে.
এখন আমরা পরবর্তী 2 সর্বনিম্ন ফ্রিকোয়েন্সি তাকান.
এটা 2 এবং 1. যে হয় যারা 2 হতে পারে, কিন্তু আমি এই একটি চয়ন চলেছি পারে.
যোগফল হয় 3.
এবং পরিশেষে, তারপরে আমি শুধুমাত্র 2 বাম আছে, অতএব যে হয়ে 5.
তারপর এখানে হিসাবে, আশা, যদি আমি যে এনকোডিং পূরণ,
1s সবসময় ডান বাম এক শাখা এবং 0 সেঃ হয়.
তারপর আমরা ঠ 2 দ্বারা মাত্র 1 বিট এবং তারপর ণ দ্বারা প্রতিনিধিত্ব আছে
এবং তারপর 2 ই এবং তারপর H 3 বিট থেকে নিচে পড়ে.
সুতরাং আপনি এই বার্তা প্রেরণ করা "হ্যালো" করতে পারেন পরিবর্তে প্রকৃতপক্ষে অক্ষর ব্যবহার করে
দ্বারা শুধুমাত্র 0 সেঃ এবং 1s.
তবে, মনে রাখবেন, যে কয়েকটি ক্ষেত্রে আমরা আমাদের ফ্রিকোয়েন্সি সঙ্গে বন্ধন ছিল.
আমরা হয় H ও ণ হয়তো প্রথম যোগদান করে থাকতে পারে.
অথবা তারপর পরে যখন আমরা ঠ 2 দ্বারা প্রতিনিধিত্ব ছিল
সেইসাথে এক 2 দ্বারা প্রতিনিধিত্ব যোগদান, আমরা এক সাথে লিঙ্ক করা হয় থাকতে পারে.
>> তাই যখন আপনি পাঠাতে 0 সেঃ এবং 1s, আসলে যে নিশ্চয়তা দেয় না
যে প্রাপক সম্পূর্ণরূপে অধিকার বাদুড় বন্ধ আপনার মেসেজটি পড়তে পারেন
কারণ তারা যা সিদ্ধান্ত আপনার তৈরি করা হয়ত জানেন না.
সুতরাং যখন আমরা Huffman কম্প্রেশন সঙ্গে লেনদেন করছেন,
একরকম আমরা আমাদের বার্তার প্রাপক কিভাবে আমরা সিদ্ধান্ত জানাতে হবে -
তারা অতিরিক্ত তথ্য কিছু জানা প্রয়োজন
মধ্যে কম্প্রেস বার্তা ছাড়াও.
তারা কি আসলে গাছ মত দেখাচ্ছে বুঝতে হবে,
কিভাবে আসলে আমরা যারা সিদ্ধান্ত হয়েছে.
>> এখানে আমরা প্রকৃত গণনা উপর ভিত্তি করে উদাহরণ ছিল করছেন,
কিন্তু কখনও কখনও আপনি একটি Huffman গাছ থাকতে পারে
ফ্রিকোয়েন্সি উপর ভিত্তি করে যা অক্ষর প্রদর্শিত হবে, এবং এটা সঠিক একই প্রক্রিয়া.
এখানে আমি শতাংশে অথবা একটি ভগ্নাংশ শর্তাবলী এটা প্রকাশ করছি,
এবং তাই এখানে সঠিক একই জিনিস.
2 আমি অধম, তাদের যোগফল, পরবর্তী 2 অধম, তাদের যোগফল খুঁজে,
যতক্ষণ না আমি একটি সম্পূর্ণ গাছ আছে.
যদিও আমরা উভয় ক্ষেত্রেই, যখন আমরা শতকরা সঙ্গে লেনদেন করছেন এটা করতে পারে,
তার মানে আমরা জিনিস করছি বিভাজক এবং decimals সাথে ডিল বরং বা floats
যদি আমরা একটি মাথার ডাটা স্ট্রাকচার সম্পর্কে চিন্তা করছি.
কি আমরা floats সম্পর্কে জানেন?
একটি সাধারণ সমস্যা যখন আমরা floats সঙ্গে লেনদেন করছেন কি?
[ছাত্রদের] গাণিতিক সম্পূর্ণ ঠিক নয়. >> হ্যাঁ. অনির্দিষ্টতা.
এই pset জন্য কারণ ফ্লোটিং পয়েন্ট অনির্দিষ্টতা মধ্যে, যাতে আমরা নিশ্চিত হোন যে,
আমরা যে কোনো মান হারান না করেন তাহলে, আমরা আসলে চলুন যাও গণনা সাথে ডিল করা হবে.
তাই আপনি যদি একটি Huffman নোডের মধ্যে, মনে যদি আপনি কাঠামো পিছনে তাকান এখানে ছিল,
যদি আপনি সবুজ বেশী তাকান এটি একটি ফ্রিকোয়েন্সি এবং এর সঙ্গে যুক্ত হয়েছে
পাশাপাশি তার বাম একটি নোড হিসেবে তার অধিকার একটি নোড স্থানটিকে.
এবং তারপর সেখানে লাল বেশী এছাড়াও একটি অক্ষর এর সাথে জড়িত আছে.
আমরা বাবা এবং তারপর চূড়ান্ত নোডের জন্য পৃথক বেশী করতে যাচ্ছেন না,
যা আমরা পড়ুন পাতার হিসাবে, বরং যারা শুধু শূন্য মান ধারণ করবে.
প্রত্যেক নোডের জন্য আমরা একটি অক্ষর, প্রতীক যে নোড উপস্থাপন করতে হবে,
তারপর একটি ফ্রিকোয়েন্সি পাশাপাশি তার বাম শিশু হিসেবে তার অধিকার বাচ্চাকে একটি পয়েন্টার.
পাতা, খুব নীচে হয়, এছাড়াও নোড পয়েন্টার থাকবে
তাদের বাম এবং তাদের অধিকার, কিন্তু যারা প্রকৃত মান নোড যাও প্রতি নির্দেশ দেওয়া হয় না,
কি হবে তাদের মান? >> [ছাত্রদের] শূন্য. >> শূন্য. ঠিক.
এখানে কিভাবে আপনি floats মধ্যে ফ্রিকোয়েন্সি প্রতিনিধিত্ব করতে পারে একটি উদাহরণ,
কিন্তু আমরা একে সঙ্গে পূর্ণসংখ্যার সাথে ডিল করা যাচ্ছেন,
তাই সব আমি একটি ডাটা টাইপ পরিবর্তন আছে.
>> যাক এর একটি জটিল উদাহরণ আছে একটি সামান্য বিট আরও যান.
কিন্তু এখন যে আমরা বেশী সহজ করেছেন, এটি শুধু একই প্রক্রিয়া.
আপনি 2 সর্বনিম্ন ফ্রিকোয়েন্সি খুঁজে, ফ্রিকোয়েন্সি যোগফল
এবং যে আপনার পিতা বা মাতা নোড নতুন ফ্রিকোয়েন্সি,
যা পরে তার বাম যাও 0 1 শাখা সঙ্গে শাখা এবং ডান সঙ্গে পয়েন্ট.
যদি আমরা স্ট্রিং "এটি cs50," তবে আমরা গণনা কতবার টি উল্লেখ করা হয়,
জ উল্লেখ করেছে, তোমার, গুলি, গ, 5, 0.
তারপর লাল নোড আমি নিবদ্ধ সঙ্গে কি আমি এখানে কি হয়,
আমি আগেই বলেছি আমি এইসব অক্ষর অবশেষে আমার গাছ নীচে যাচ্ছি.
যারা পাতার সমস্ত হতে যাচ্ছে.
তারপর কি হল আমি কি আমি ফ্রিকোয়েন্সি দ্বারা আদেশ আরোহী তাদের সাজানো,
এবং এই আসলে উপায় যে pset কোড এটি আছে
এটা ফ্রিকোয়েন্সি দ্বারা এটা অসুস্থ এবং তারপর বর্ণানুক্রমে.
সুতরাং সংখ্যা আছে ফ্রিকোয়েন্সি দ্বারা বর্ণানুক্রমে প্রথম এবং তারপর.
তারপর কি হল আমি কি আমি 2 সর্বনিম্ন খুঁজতে হবে. এটা 0 এবং 5.
আমি তাদের যোগফল, এবং যে এর 2 হবে. তারপর আমি, পরের 2 সর্বনিম্ন খুঁজে পেতে থাকবে.
সেগুলো হল 1s দুটি, এবং তারপর যারা হত্তয়া 2 হিসাবে ভাল.
এখন আমি জানি যে আমার পরবর্তী পদক্ষেপ সর্বনিম্ন নম্বর যোগদান করা যাচ্ছে না,
যা, T 1, এবং তারপর নোড যে ফ্রিকোয়েন্সি হিসাবে 2 হয়েছে এক নির্বাচন করে.
তাই আমরা এখানে 3 অপশন আছে.
আমি কি করতে যাচ্ছি স্লাইডের জন্য শুধু চাক্ষুষরূপে হয় আপনি তাদের জন্য নতুন করে সাজানো
যাতে আপনি কিভাবে আমি তা নির্মাণ করছি আপ দেখতে পারেন.
কি কোড এবং আপনার কোড বিতরণ করতে যাচ্ছে T এক যোগদান করা হবে
সঙ্গে 0 এবং 5 নোড.
আমি তখন যে অঙ্ক 3, তাহলে আমরা এবং কর্ম অগ্রসর.
2 2 এবং এখন হয় অধম, তাই তারপর 4 যারা সমষ্টি.
প্রত্যেকেরই অনুসরণ এতদূর? ঠিক আছে.
তারপর যে পরে আমরা 3 এবং 3 যে প্রয়োজন যোগ করা পর্যন্ত আছে,
তাই আবার আমি এটা করছি সুইচিং যাতে আপনি চাক্ষুষরূপে যাতে খুব নোংরা না পেতে দেখতে পারেন.
তারপর আমরা একটি 6 আছে, এবং তারপর আমাদের এখন চূড়ান্ত পদক্ষেপ হল যে আমরা কেবল 2 নোড আছে
আমরা আমাদের গাছ, যা 10 রুট তা যোগফল.
এবং 10 নম্বর বিষয়টি যুক্তিযুক্ত কারণ প্রতিটি নোডের প্রতিনিধিত্ব,
তাদের মান, তাদের ঘটন সংখ্যা, ছিল কতবার তারা পংক্তি উপস্থিত ছিল,
এবং তারপর আমরা আমাদের স্ট্রিং মধ্যে 5 টি অক্ষর আছে, যাতে ইন্দ্রিয় তোলে.
যদি আমরা কিভাবে আমরা আসলে এটি সঙ্কেতাক্ষরে লিখা চাই তাকান আপ,
প্রত্যাশিত হিসাবে, আমি এবং গুলি, যা প্রদর্শিত অধিকাংশ
বিট fewest নম্বর দ্বারা প্রতিনিধিত্ব করা হয়.
>> মনোযোগী হতে এখানে.
Huffman গাছ প্রকৃতপক্ষে ক্ষেত্রে বিষয়.
একটি য়ের বড়হাতের অক্ষর ছোটহাতের S একটি ছোট হাতের অক্ষর ব্যবহার গুলি থেকে পৃথক.
যদি আমরা ছিল "এটি CS50" বড় হাতের অক্ষর দিয়ে তারপর, ছোট হাতের গুলি মাত্র দুবার প্রদর্শিত হবে,
এই ক্ষেত্রে মান হিসাবে 2 সঙ্গে একটি নোড হতে পারে, এবং তারপর শুধুমাত্র য়ের বড়হাতের অক্ষর ছোটহাতের S একবার করবে.
আমি তখন আপনার ট্রি কাঠামো পরিবর্তন কারণ আসলে আপনি একটি অতিরিক্ত পাত আছে এখানে হবে.
কিন্তু যোগফল 10 হতে হবে.
এটা কি আসলে আমরা চলুন যাও চেকসাম আহ্বান করা হবে,
সংখ্যা সব ছাড়াও.
>> এখন যে আমরা Huffman গাছ আবৃত করেছি, আমরা Huff'n বহান, pset মধ্যে আকর্ষণীয় করতে পারেন.
আমরা প্রশ্নগুলির একটি অধ্যায় শুরু চলুন,
এবং আপনাকে এই বাইনারি গাছ এবং কিভাবে তার মধ্যে প্রায় সঙ্গে কাজ করতে অভ্যস্ত পাওয়া যাচ্ছে:
অঙ্কন নোড, একটি নোডের জন্য আপনার নিজের typedef struct তৈরি,
এবং এইজন্য কিভাবে আপনি বাইনারি গাছ, এক যে সাজানো এর মধ্যে সন্নিবেশ পারে,
এটি, এবং যে ভালো জিনিস ঘোরা.
যে জ্ঞান স্পষ্টভাবে হয় আপনি যখন আপনি Huff'n বহান অংশ মধ্যে ডুব সাহায্য যাচ্ছে
এর pset.
Pset মান সংস্করণে, আপনার কাজে বহান বাস্তবায়ন হয়,
এবং আপনার কাজে অভিমান বাস্তবায়ন হ্যাকার সংস্করণ হয়.
কি অভিমান আছে এটা টেক্সট প্রদর্শন করা হয় এবং তারপর এটি 0 সেঃ এবং 1s এটা অনুবাদ,
তাই আমরা যে প্রক্রিয়ার উপরে কি যেখানে আমরা ফ্রিকোয়েন্সি সংখ্যাত
এবং তারপর ট্রি তৈরি এবং তারপর বলেন, "আমি কীভাবে টি পেতে পারি?"
টি 100 উপস্থাপন করা হয়, যে জিনিস যেমন,
এবং তারপর অভিমান নিতে টেক্সট এবং তারপর আউটপুট যে বাইনারি হবে.
কিন্তু এটাও একটা কারণ আমরা জানি যে আমরা বার্তার আমাদের প্রাপক মঞ্জুরি দিতে চান
সঠিক একই ট্রি পুনঃ, এটা ঘটন সংখ্যা সম্পর্কে তথ্য রয়েছে.
তারপর বহান সঙ্গে আমরা একটি 0 সেঃ এবং 1s এর বাইনারি ফাইল দেওয়া হয়
এবং প্রদত্ত এছাড়াও ফ্রিকোয়েন্সি সম্পর্কে তথ্য.
আমরা মূল বার্তা যে ছিল মধ্যে যারা 0 সেঃ এবং 1s পিছনে সমস্ত অনুবাদ,
তাই আমরা যে decompressing করছি.
যদি আপনি মানক সংস্করণে করছেন, আপনি অভিমান বাস্তবায়ন করতে হবে না,
অতএব আপনি শুধু অভিমান এর কর্মীরা বাস্তবায়ন ব্যবহার করতে পারেন.
কিভাবে যে করবেন বৈশিষ্ট নির্দেশাবলী আছে.
আপনি নির্দিষ্ট একটি টেক্সট ফাইল এর উপর অভিমান কর্মীদের বাস্তবায়ন রান করতে পারেন
এবং তারপর আপনার ইনপুট হিসাবে যে আউটপুট বহান ব্যবহার.
>> হিসাবে আমি আগে উল্লেখ করেছে, আমরা এই এক বিতরণের জন্য কোড অনেক আছে.
আমি এটা দিয়ে যাওয়া শুরু যাচ্ছি.
আমি অধিকাংশ সময় ব্যয় করা যাচ্ছে. জ ফাইল
কারণ. গ ফাইল, কারণ আমরা. জ আছে
এবং যে কর্ম এগুলির নমুনা সঙ্গে আমাদের প্রদান করে,
আমরা ঠিক বুঝতে প্রয়োজন সম্পূর্ণরূপে না -
আপনি যদি আপনার. গ ফাইল যাচ্ছে না বুঝতে তারপর, খুব বেশী চিন্তা করবেন না,
কিন্তু নিশ্চিতভাবে দেখব চেষ্টা করুন কারণ এটি কিছু ইঙ্গিত দিতে পারে
এবং তা অন্যান্য ব্যক্তিদের এর কোড পড়া ব্যবহার উপযোগী করতে পারেন.
>> মন্তব্য huffile.h এ জন্যে, এটা বিমূর্ততা একটি Huffman বিশেষভাবে ফাইল জন্য স্তর ঘোষণা করে.
যদি আমরা নিচে যান, আমরা দেখতে যে 256 প্রতীক সর্বাধিক যে আমরা কোড জন্য প্রয়োজন হতে পারে আছে.
য়ের বড়হাতের অক্ষর ছোটহাতের এবং ছোট হাতের অক্ষর ব্যবহার - এই সব বর্ণমালার অক্ষর অন্তর্ভুক্ত করে -
এবং তারপর চিহ্ন ও সংখ্যা, ইত্যাদি
তারপর আমরা এখানে একটি ম্যাজিক নম্বর Huffman একটি বিশেষভাবে চিহ্নিত ফাইল আছে.
একটি Huffman কোড মধ্যে তারা একটি নির্দিষ্ট ম্যাজিক নম্বর আছে চলুন
হেডারের সাথে যুক্ত.
এই মাত্র একটা র্যান্ডম ম্যাজিক নম্বর মত চেহারা হতে পারে,
কিন্তু যদি আপনি এমন ASCII মধ্যে এটি অনুবাদ তারপর, এটা আসলে spells অভিমান আউট.
এখানে আমরা একটি Huffman-এনকোডেড ফাইলের জন্য একটি struct আছে.
এই ফাইলটি একটি অভিমান সাথে যুক্ত সমস্ত বৈশিষ্ট্য আছে.
তারপর এখানে নিচে আমরা একটি ফাইল হেডারের অভিমান আছে, তাই আমরা কল এটি Huffeader
পরিবর্তে অতিরিক্ত জ যোগ করার কারণ এটি একই যাইহোক শোনাচ্ছে.
বুদ্ধিমান.
আমরা একটি ম্যাজিক নম্বর এর সাথে জড়িত আছে.
যদি এটি একটি প্রকৃত অভিমান ফাইল, এটা সংখ্যা হবে আপ উপরে, এই যাদু এক করে যাচ্ছে.
এবং তারপর এটি একটি অ্যারের থাকবে.
সুতরাং যা প্রতিটি সিম্বলের জন্য, 256 আছে,
এটা কি সেই চিহ্ন ফ্রিকোয়েন্সি অভিমান ফাইল মধ্যে তালিকা যাচ্ছে.
এবং পরিশেষে, তাহলে আমরা ফ্রিকোয়েন্সি জন্য একটি চেকসাম আছে,
যা তাদের ফ্রিকোয়েন্সি যোগফল হতে হবে.
যাতে এর কি একটি Huffeader হয়.
তারপর আমরা কিছু ফাংশন যে অভিমান ফাইল পরবর্তী বিট ফিরে আছে
সেইসাথে অভিমান ফাইলটি একটি বিট লিখেছেন, এবং তারপর এই ফাংশন এখানে, hfclose,
আসলে অভিমান ফাইল প্রচেষ্টা.
আগে, আমরা সোজা শুধু fclose সাথে ডিল করা হয়েছে,
কিন্তু যখন আপনি একটি ফাইল আছে অভিমান, পরিবর্তে এটি fclosing
আপনি আসলে কি করছেন না যাওয়া হয় এবং এটি hfclose hfopen.
সেগুলো হল অভিমান ফাইল নির্দিষ্ট ফাংশন যে আমরা সাথে ডিল করা চলুন.
তারপর এখানে হেডারের আমরা এবং তারপর পড়া হেডারের লিখুন.
>> আমরা শুধু. জ ফাইল পড়া দ্বারা কি অভিমান ফাইল হতে পারে একটা ধারনা পেতে ধরনের পারেন,
কি বৈশিষ্ট্য তা huffile.c মধ্যে আসলে যাচ্ছে ছাড়া হয়েছে,,
যা, যদি আমরা আকর্ষণীয়, একটি বিট আরো জটিল হবে.
এর মধ্যে ফাইল ইনপুট / আউটপুট এখানে পয়েন্টার সাথে ডিল করার সব আছে.
এখানে আমরা দেখতে যে উদাহরণস্বরূপ যখন আমরা hfread কল,, এটা এখনও fread এর সঙ্গে জড়িত.
আমরা যারা ফাংশন পরিত্রাণ পাবার সম্পূর্ণভাবে করছি না, কিন্তু আমরা যারা করছেন পাঠানোর যত্ন নিতে হবে
ভিতরে পরিবর্তে এটি আমরা এর সমস্ত করছেন অভিমান ফাইল.
আপনি এই স্ক্যানের মাধ্যমে বিনামূল্যে যদি আপনি অদ্ভুত বোধ করতে পারে
এবং ফিরে যান এবং ছুলা স্তর অল্প.
>> পরবর্তী ফাইলটি যে আমরা তাকান যাচ্ছে সেটি tree.h.
আগে Walkthrough স্লাইড আমরা বলেছেন আমরা একটি নোড Huffman আশা
এবং আমরা একটি typedef struct নোড হয়েছে.
আমরা এটি একটি প্রতীক, একটি ফ্রিকোয়েন্সি, এবং তারপর 2 নোড বড় থাকবে.
এই ক্ষেত্রে আমরা কি করছেন এই মূলত একই
পরিবর্তে নোড ছাড়া আমরা তাদের গাছ কল চলুন.
আমরা একটি ফাংশন কল করতে যে যখন আপনি গাছ এটি একটি ফেরৎ পয়েন্টার আপনি গাছ আছে.
Speller পশ্চাতে, যখন আপনি একটি নতুন নোড তৈরীর ছিল
আপনি বলেন নোড * নতুন শব্দ = malloc (sizeof) এবং যে ভালো জিনিস.
মূলত, mktree যে আপনার সাথে জন্য আচরণ করা হবে.
একইভাবে, আপনি যখন একটি গাছ সরাতে চান,
তাই মূলত যে গাছ যখন আপনি এটি সঙ্গে সম্পন্ন এর freeing,
পরিবর্তে স্পষ্টভাবে আহ্বান জানান যে, বিনামূল্যে, আসলে আপনি ঠিক করছি rmtree ফাংশন ব্যবহার করা যাচ্ছে
যেখানে আপনি পয়েন্টার পাস যে গাছ যাও এবং তারপর tree.c নিতে জন্য আপনি যে যত্ন হবে.
>> আমরা tree.c. দেখব
আমরা বাস্তবায়ন দেখতে ছাড়া একই ফাংশন আশা.
হিসাবে আমরা আশা, যখন আপনি কল mktree এটি একটি পয়েন্টার মধ্যে একটি গাছ মাপ mallocs,
শূন্য মান, তাই 0 সেঃ অথবা NULLs মানের সমস্ত সূচনা করে,
এবং ঐ বৃক্ষ যাও পয়েন্টার ফেরৎ যে আপনি শুধু আপনার করেছি malloc'd.
এখানে আপনি যখন গাছ সরাতে কল প্রথম এটি নিশ্চিত যে আপনি ডবল freeing করছি না.
এটা নিশ্চিত যে আপনি এমন একটি গাছ যে আপনি সরাতে চান আছে.
কারণ এখানে একটি গাছ তার শিশুদের অন্তর্গত,
এই কি আছে এটা recursively ট্রি বাম নোডের উপর গাছ সরানোর আহ্বান
সেইসাথে ডান নোড.
আগে এটি ঊর্ধ্বতন মুক্ত, এটি শিশুদের পাশাপাশি মুক্ত প্রয়োজন.
মূল হয় রুট সঙ্গে বিনিমেয়.
প্রথম অত্যন্ত মহান মহান--মহান মহান--নানা মত পিতা বা মাতা,
বা নানী ট্রি প্রথম, আমরা মাত্রা মুক্ত প্রথম ডাউন আছে.
নীচে, তাই তর্ক যারা বিনামূল্যে, এবং তারপর ফিরে আসা পর্যন্ত, যারা বিনামূল্যে, ইত্যাদি
সুতরাং যে গাছ.
>> এখন আমরা বন তাকান.
বন যেখানে আপনি আপনার Huffman গাছ সব লিখুন.
এটা যে আমরা কিছু আছে চলুন বলছে নামক একটি চক্রান্ত এর
যে একটি গাছ একটি পয়েন্টার হিসেবে একটি চক্রান্ত নামক পাশে একটি পয়েন্টার রয়েছে.
কি গঠন ভালো বর্ণন এই ধরনের আছে?
এটা কোন ধরনের এটি ওইদিকে.
উপর রাইট এখানে.
একটি লিঙ্ক তালিকা.
আমরা দেখতে যে, যখন আমরা একটি চক্রান্ত আছে এটি একটি প্লট এর লিঙ্ক তালিকা মত.
বন একটি প্লট এর লিঙ্ক তালিকা হিসাবে সংজ্ঞায়িত করা হয়,
এবং তাই বন গঠন হয় আমরা ঠিক করছি আমাদের প্রথম চক্রান্ত একটি পয়েন্টার আছে যাচ্ছে
এবং যে চক্রান্ত মধ্যে এটি একটি গাছ আছে অথবা একটি গাছ যাও বদলে স্থানটিকে
এবং তারপর পরবর্তী চক্রান্ত স্থানটিকে, তাই এবং তাই ঘোষণা.
একটি বন করতে আমরা mkforest কল.
তারপর আমরা কিছু চমত্কার সহায়ক ফাংশান এখানে আছে.
আমাদের সাথে আছে যেখানে আপনি একটি বনের মধ্যে পাস করে এবং তারপর ফিরতি মূল্য একটি বৃক্ষ * বাছাই,
একটি গাছ একটি পয়েন্টার.
কি পছন্দ করবেন এটা বন মধ্যে যেতে হবে যে আপনি ইশারা করছেন
তারপর সর্বনিম্ন ফ্রিকোয়েন্সি সঙ্গে যে বন থেকে একটি ট্রি মুছে ফেলুন
এবং ঐ বৃক্ষ দিতে পয়েন্টার আপনি.
আপনি একবার ফোন বাছাই, গাছের বন মধ্যে উপস্থিত না আর হবে,
কিন্তু ফিরতি মূল্য হল যে গাছ যাও পয়েন্টার.
তারপর আপনি গাছ আছে.
শর্ত থাকে যে, আপনি একটি পয়েন্টার পাস একটি গাছ যে একটি অ 0 ফ্রিকোয়েন্সি আছে,
উদ্ভিদের কি করবেন এটা নিতে বন, গাছ নিতে হবে এবং উদ্ভিদের যে বনের ভিতরে গাছ.
এখানে আমরা rmforest আছে.
যাও গাছ, যা মূলত আমাদের জন্য আমাদের সব গাছ কাটা সরিয়ে অনুরূপ,
বন অপসারণ বিনামূল্যে যা বন অন্তর্গত হবে.
>> যদি আমরা forest.c দেখব, আমরা সেখানে অন্তত 1 rmtree কমান্ড দেখতে আশা করব,
কারণ যাও বনে মেমরি মুক্ত যদি বনের মধ্যে এটি গাছ আছে,
তারপর অবশেষে আপনি খুব যারা গাছ সরাতে চলুন.
যদি আমরা forest.c দেখব, আমরা আমাদের mkforest, যা হিসাবে আমরা আশা আছে.
আমরা জিনিস malloc.
আমরা শূন্য হিসাবে বন প্রথম চক্রান্ত কারণ এটা দিয়ে শুরু করতে খালি আরম্ভ করা,
তারপর আমরা পছন্দ, যা সর্বনিম্ন ওজন সঙ্গে গাছ ফেরৎ, সর্বনিম্ন ফ্রিকোয়েন্সি দেখুন,
এবং তারপর পায় যে বিশেষ নোড পরিত্রাণ যে পয়েন্ট যে গাছ এবং পরবর্তী এক,
তাই এটি লাগে বন লিঙ্ক তালিকার যে আউট.
এবং তারপর এখানে আমরা উদ্ভিদ, যার মধ্যে একটি লিঙ্ক তালিকা ট্রি টিপে আছে.
কি বন এটা চমত্কারভাবে রাখে এটা আমাদের জন্য সাজানো হয় না.
এবং পরিশেষে, তাহলে আমরা rmforest আছে এবং, আশা, আমরা আছে rmtree বলা আছে.
>> বিতরণের জন্যে কোড এ পর্যন্ত huffile.c পর্যন্ত hardest বুঝতে দ্বারা সম্ভবত ছিল,
নিজেদের অন্যান্য ফাইল যেখানে ছিল প্রশংসনীয় অনুসরণ সহজ.
সঙ্গে পয়েন্টার এবং সংযুক্ত তালিকা এবং যেমন আমাদের জ্ঞান,
আমরা চমত্কার অনুসরণ করতে পারবে.
কিন্তু আমরা সত্যিই কি নিশ্চিত যে সম্পূর্ণরূপে আমরা বুঝতে পারি না প্রয়োজন হয়. জ ফাইল
কারণ আপনাকে যারা ফাংশন, কলিং যারা ফিরে মান সঙ্গে আচরণ করা হবে,
তাই নিশ্চিত করুন যে আপনি কি সম্পূর্ণরূপে কর্ম সম্পাদন করা যাচ্ছে বুঝতে
যখনই আপনি সেই কর্ম এক কল.
কিন্তু আসলে তা ভিতরে প্রতীতি হয়. জ ফাইল পুরোপুরি প্রয়োজন কারণ আমরা যারা আছে না.
আমরা আরো 2 আমাদের বিতরণ কোড বাকি ফাইল আছে.
>> চলুন ডাম্প তাকান.
তার মন্তব্যটি এখানে দ্বারা আস্তাকুঁড় একটি Huffman-কম্প্রেস ফাইল লাগে
এবং তারপর তার অনুবাদ এবং ডাম্প কন্টেন্ট সব আউট.
এখানে আমরা দেখতে যে এটা hfopen বলছেন.
এটি যাও = fopen দায়ের * ইনপুট মিরর ধরনের,
এবং তারপর আপনি তথ্য পাস.
এটি পরিবর্তে একটি ফাইল * আপনি একটি Huffile কথা প্রসঙ্গে করছেন ছাড়া এর প্রায় অনুরূপ;
পরিবর্তে fopen আপনি hfopen কথা প্রসঙ্গে করছি.
এখানে আমরা হেডারের মধ্যে প্রথম পড়া, যা ধরনের অনুরূপ আমরা কিভাবে হেডারের মধ্যে পড়তে যাও
বিটম্যাপ জন্য একটি ফাইল.
আমরা এখানে কি করছেন দেখতে হয় কিনা চেক হেডারের তথ্য
ডান ম্যাজিক নম্বর যে ইঙ্গিত করে যে এটি একটি প্রকৃত অভিমান ফাইল আছে,
তারপর এই সমস্ত পরীক্ষা নিশ্চিত করা যে যে ফাইল খোলা আমরা একটি প্রকৃত huffed ফাইল বা না.
এই কি আছে এটা চিহ্ন দেখতে পারেন যে আমরা সব ফ্রিকোয়েন্সি আউটপুট
মধ্যে একটি গ্রাফিকাল টেবিলের মধ্যে একটি টার্মিনাল.
এই অংশে দরকারী হবে.
এটি একটি বিট আছে এবং পরিবর্তনশীল বিট মধ্যে অল্পে অল্পে পড়ে এবং তারপর সেটা ছাপে আউট.
সুতরাং যদি আমি hth.bin, যা একটি ফাইল huffing ফলাফল উপর ডাম্প কল ছিল
কর্মীদের সলিউশন ব্যবহার করে, আমি এই পেতে হবে.
এটা এই অক্ষরের সমস্ত এর outputting এবং তারপর ফ্রিকোয়েন্সিতে যা তারা প্রদর্শিত নির্বাণ.
যদি আমরা চেহারা, তাদের অধিকাংশই এই জন্য ছাড়া হয় 0 সেঃ: H, যা দুইবার প্রদর্শিত হবে,
এবং তারপর, T যা একবার প্রদর্শিত হবে.
এবং তারপর এখানে আমরা 0 সেঃ এবং 1s মধ্যে প্রকৃত বার্তা আছে.
যদি আমরা hth.txt তাকান, যা সম্ভবতঃ মূল বার্তা huffed ছিল যে,
আমরা সেখানে কিছু Hs এবং Ts দেখুন আশা.
বিশেষত, আমরা শুধু 1 টি এবং 2 Hs দেখুন আশা.
এখানে আমরা hth.txt হয়. এটি সত্যিই আছে HTH.
অন্তর্ভুক্ত আছে, যদিও আমরা তা দেখতে পারছি না, একটি newline অক্ষর.
অভিমান ফাইল hth.bin হয় newline অক্ষর এনকোডিং হিসাবে ভাল.
কারণ এখানে আমরা জানি যে অর্ডার HTH এবং তারপর newline,
আমরা কেবলমাত্র একটি 1 দ্বারা দেখতে পারেন যে সম্ভবত H প্রতিনিধিত্ব করা হয়
এবং পরে সম্ভবত 01 টি এবং তারপর পরবর্তী এইচ 1 হিসাবে ভাল
এবং তারপর আমরা একটি newline দুটি 0 সেঃ দ্বারা নির্দেশিত আছে.
কুল.
>> এবং তারপর অবশেষে, কারণ আমরা একাধিক. গ সঙ্গে এবং আচরণ করছি. জ ফাইল,
আমরা কম্পাইলার একটি চমত্কার জটিল যুক্তি আছে চলুন,
এবং এখানে যাতে আমরা একটি Makefile যে আপনার জন্য ডাম্প করে আছে.
কিন্তু প্রকৃতপক্ষে, আপনি আপনার নিজের puff.c ফাইল তৈরীর চেষ্টা করা হবে.
Makefile আসলে আপনার জন্য puff.c তৈরীর সঙ্গে কারবার করে না.
আমরা যাব আপনি আপ করছি Makefile সম্পাদনা করুন.
উদাহরণস্বরূপ, যখন আপনি সব করতে মত একটি কমান্ড লিখুন,, এটি তাদের জন্য সব করতে হবে.
Makefile উদাহরণ এ pset অতীত থেকে চেয়ে নির্দ্বিধায়
সেইসাথে এই এক যাওয়া বন্ধ কিভাবে আপনি আপনার বহান ফাইলটি করতে সক্ষম নাও হতে পারে দেখুন
দ্বারা এই Makefile সম্পাদনা.
এটি সম্পর্কে যে আমাদের বিতরণ কোড এর জন্য.
>> একবার আমরা যে মাধ্যমে অর্জিত তাহলে, এখানে শুধু একটি রিমাইন্ডার
কিভাবে আমরা যাও Huffman নোডের সাথে ডিল করা চলুন.
আমরা করা কলিং আর তাদের নোড করছি যাচ্ছে না; আমরা করা কলিং গাছ তাদের চলুন
যেখানে আমরা একটি গৃহস্থালি সঙ্গে তাদের প্রতীক প্রতিনিধিত্বমূলক করা যাচ্ছেন,
তাদের ফ্রিকোয়েন্সি, ঘটনার মধ্যে একটি পূর্ণসংখ্যা সঙ্গে নম্বর,.
আমরা যে ব্যবহার করছেন, কারণ এটি একটি float তুলনায় আরো সুনির্দিষ্ট.
এবং তারপর আমরা বাম সন্তান হিসেবে অধিকার বাচ্চাকে অন্য কোন পয়েন্টার আছে.
বন হিসাবে আমরা দেখেছি, মাত্র একটি গাছ যুক্ত তালিকা.
পরিশেষে, আমরা যখন আমাদের অভিমান আপ ফাইল নির্মাণ করছেন,
আমরা আমাদের বন মাত্র 1 ট্রি যাও থাকতে চান -
1 টি গাছ, একাধিক শিশুদের সঙ্গে 1 রুট.
আগে যখন আমরা আমাদের Huffman গাছ ছিল তৈরীর,
আমরা আমাদের পর্দা সম্মুখের নোডের মধ্যে সমস্ত স্থাপন শুরু আউট
এবং বলছে আমরা এইসব নোড আছে চলুন,
ঘটনাক্রমে তারা পাতার হবে, এবং সেটি এই হল তাদের প্রতীক, এই হল তাদের ফ্রিকোয়েন্সি.
আমাদের বন ইন যদি আমরা 3 অক্ষর আছে, যে 3 গাছের একটি বন.
এবং তারপর হিসাবে আমরা যেতে, যখন আমরা প্রথম ঊর্ধ্বতন যোগ,
আমরা 2 গাছের একটি বন তৈরি.
আমরা আমাদের বন থেকে যারা শিশুদের 2 মুছে ফেলা এবং তারপর একটি ঊর্ধ্বতন নোডের সাথে এটি প্রতিস্থাপন
যে যারা শিশু হিসাবে 2 নোড ছিল.
এবং তারপর পরিশেষে, আমাদের যেমন, Bs সঙ্গে আমাদের উদাহরণ দিয়ে শেষ পদক্ষেপ, এবং Cs
অন্তিম ঊর্ধ্বতন করতে হবে,
এবং অতএব যে আমাদের গাছের মোট বনভূমির মধ্যে গণনা ঃ 1 আনতে হবে.
কি প্রত্যেকের কিভাবে আপনি একাধিক গাছ দিয়ে শুরু আপনার বনে আউট
এবং সঙ্গে 1 শেষ পর্যন্ত? ঠিক আছে. কুল.
>> কি আমরা বহান জন্য কি করা প্রয়োজন?
আমরা কি করতে হবে যে, সবসময়, তারা দিতে ইনপুট টাইপ অধিকার আমাদের আছে তা নিশ্চিত
যাতে আমরা আসলে প্রোগ্রাম চালাতে পারেন.
এই ক্ষেত্রে তারা তাদের প্রথম কমান্ড লাইন আর্গুমেন্ট পরে আমাদের দান করা চলুন
আরো 2: ফাইলটি যে আমরা এবং ডিকম্প্রেস decompressed ফাইল আউটপুট চান.
কিন্তু একবার আমরা নিশ্চিত যে তাদেরকে মান ঠিক পরিমাণ আমাদের প্রেরণ করার জন্য,
আমরা যে ইনপুট একটি অভিমান বা ফাইলটি নিশ্চিত করতে চাইবেন.
এবং একবার তারপর আমরা গ্যারান্টি দিই যে এটা একটা অভিমান ফাইল, তারপর আমরা আমাদের ট্রি নির্মাণ করতে চান,
গাছ যেমন যে গাছ যে ব্যক্তি বার্তাটি পাঠানো নির্মিত সাথে মেলে বিল্ড আপ.
তারপর পরে আমরা ট্রি নির্মাণ তারপর, আমরা সঙ্গে 0 সেঃ এবং 1s যে তারা সালে পাশ, মোকাবিলা করতে পারেন
আমাদের গাছ বরাবর যারা কারণ এটা অভিন্ন অনুসরণ,
এবং তারপর যে বার্তা আউট লিখুন, বিট ব্যাখ্যা ফিরে অক্ষরের মধ্যে.
শেষে তারপর এবং কারণ আমরা পয়েন্টার সাথে ডিল এখানে করছি,
আমরা নিশ্চিত যে আমরা কোন তথ্য ফাঁসের মেমরি না করতে চাই
এবং যে আমরা সবকিছু বিনামূল্যে.
>> সঠিক ব্যবহার সুনিশ্চিত করা আমাদের জন্য এখন পুরানো টুপি দ্বারা.
আমরা একটি ইনপুট গ্রহণ করা, যা ফাইলের নামের বহান হবে,
এবং তারপর আমরা একটি নির্দিষ্ট আউটপুট,
তাই স্ফীত আউটপুট, যা টেক্সট ফাইল হতে হবে জন্য ফাইলের নাম.
এটা ব্যবহার. এবং এখন আমরা যে ইনপুট বা huffed না নিশ্চিত করতে চাই.
চিন্তা করুন, ছিল বন্টন কোড যে আমাদের সাহায্য করতে পারে কিছু
সাথে মতের মিল হবে কিনা বা ফাইলটি huffed না হয়?
Huffeader huffile.c সম্পর্কে তথ্য ছিল.
আমরা জানি যে প্রতি অভিমান ফাইলটি একটি Huffeader একটি ম্যাজিক নম্বর সঙ্গে সঙ্গে যুক্ত হয়েছে
পাশাপাশি প্রতিটি সিম্বলের জন্য ফ্রিকোয়েন্সি একটি শ্রেণীবিন্যাস
সেইসাথে একটি চেকসাম.
আমরা জানি যে, কিন্তু আমরা dump.c একটি উঁকি নেন,
যার মধ্যে এটি একটি অভিমান ফাইলে পড়া ছিল.
এবং তা যে কি, তা কিনা সত্যিই এটা বা huffed হইনি হয়েছে কি না চেক করে.
তাই হয়তো আমরা আমাদের puff.c. জন্য একটি কাঠামো হিসাবে ব্যবহার dump.c পারে
পিছনে যাও pset 4 যখন আমরা ফাইলটি copy.c আরজিবি triples যে কপি ছিল
এবং আমরা রহস্যময় গল্প এবং পুনরায় মাপ জন্য যে ব্যাখ্যা,
একইভাবে, ঠিক কি কি হতে পারে cp dump.c puff.c মত কমান্ড চালনা করে
এবং সেখানে কিছু কোড ব্যবহার.
তবে, এটি একটি প্রক্রিয়ার হিসাবে সহজবোধ্য করা যাচ্ছে না
জন্য puff.c আপনার dump.c অনুবাদ,
কিন্তু অন্তত এটা আপনি কোথাও দেয় শুরু
কত যে আসলে ইনপুট huffed হয় বা না নিশ্চিত
যেমন কয়েক অন্যান্য বিষয়.
আমরা সঠিক ব্যবহার নিশ্চিত করা আছে এবং নিশ্চিত যে ইনপুট huffed হয়.
প্রত্যেক সময় যে আমরা যে আমরা আমাদের সঠিক ত্রুটি পরীক্ষা সম্পন্ন কাজ করেছি,
তাই ফিরে এবং ফাংশান থেকে প্রস্থান যদি কিছু বিপত্তি ঘটে, যদি একটা সমস্যা আছে.
>> এখন কি আমরা যেতে চাই প্রকৃত ট্রি নির্মাণ.
যদি আমরা বন অল্পক্ষণের জন্য, 2 প্রধান ফাংশন আছে
যা আমরা করার সাথে খুব পরিচিত হয়ে চান চলুন.
বুলিয়ান ফাংশন উদ্ভিদ আছে যে উদ্ভিদ একটি অ 0 আমাদের বনের ভিতর ফ্রিকোয়েন্সি গাছ.
তাই সেখানে আপনি একটি পয়েন্টার পাস একটি বন এবং একটি গাছ একটি পয়েন্টার যাও.
কুইক প্রশ্ন: আপনি কত বন আছে যখন আপনি একটি Huffman ট্রি নির্মাণ করছেন হবে?
আমাদের বন ক্যানভাস আমাদের মত ডান,?
তাই আমরা শুধুমাত্র যাও 1 বন করছেন যাচ্ছে, কিন্তু আমরা একাধিক গাছ আছে চলুন.
তাই আগে আপনি উদ্ভিদ কল, সম্ভবতঃ আপনি আপনার বন করতে চান সেটি যাচ্ছে.
যে জন্য এখন পর্যন্ত একটি কমান্ড যদি forest.h মধ্যে আপনি কিভাবে আপনি একটি বন করতে পারে দেখুন.
আপনি একটি গাছ নেওয়া যেতে পারে. আমরা জানি যে কিভাবে করবেন.
এবং তারপর আপনাকে বন থেকে একটি গাছ বাছাই করতে পারেন,
সর্বনিম্ন ওজন সঙ্গে একটি গাছ সরানোর এবং দেবার যে পয়েন্টার আপনি.
যখন আমরা নিজেদেরকে করছেন উদাহরণ ছিল চিন্তা ফিরে,
যখন আমরা এটি আঁকা হত, কেবলমাত্র আমরা শুধু লিঙ্ক যুক্ত.
কিন্তু এখানে শুধু পরিবর্তে লিঙ্ক যোগ করুন,
মনে আরো হিসাবে আপনি ঐ নোডের মধ্যে 2 টি অপসারণ করে থাকেন এবং তারপর অন্য এক দ্বারা প্রতিস্থাপন.
যাও অবচয় এবং আবাদ নিরিখে যে প্রকাশ,
আপনি 2 গাছ করছেন অবচয় এবং তারপর আরেকটি গাছ রোপণ
যে যারা 2 গাছ যে আপনার সন্তান হিসাবে অবচিত হয়েছে.
যাও Huffman এর ট্রি নির্মাণ, আপনি চিহ্ন আদেশ এবং ফ্রিকোয়েন্সির পড়তে পারেন
কারণ Huffeader আপনি যে দেয়,
দেয় ফ্রিকোয়েন্সিতে একটি শ্রেণীবিন্যাস আপনি.
তাই এগিয়ে যান এবং আপনি ঠিক 0 এবং তাদের সঙ্গে কিছু উপেক্ষা করতে পারেন
কারণ আমরা তা শেষে 256 পাতার চান না.
আমরা কেবলমাত্র পাতার যে অক্ষরের সংখ্যা চান
যে ফাইলটি প্রকৃতপক্ষে ব্যবহার করা হয়.
আপনি ঐ চিহ্নের মধ্যে, এবং যারা পড়তে প্রতীক যা অ 0 ফ্রিকোয়েন্সি আছে প্রতিটি করতে পারেন,
যারা গাছ হতে যাচ্ছে.
আপনি কি করতে পারেন প্রত্যেক সময় আপনি একটি অ 0 ফ্রিকোয়েন্সি প্রতীক পড়ার জন্য,
আপনি বনের মধ্যে যে গাছ নেওয়া যেতে পারে.
আপনি একবার বনে গাছ নেওয়া, আপনার ভাইবোন যারা হিসাবে গাছ, যোগ দিতে পারেন
তাই গাছ রোপণ করা এবং 2 অবচয় যেখানে আপনি বাছাই এবং তারপর উদ্ভিদ 1 ফিরে যাওয়া,
যে যেখানে যে আপনি উদ্ভিদ 1 2 শিশুদের আপনার বাছাই করা অভিভাবক.
আমি তখন আপনার শেষ ফলে আপনার বন একক গাছ হবে.
যে কিভাবে আপনি আপনার ট্রি নির্মাণ.
>> কয়েকটি জিনিস যে এখানে ভুল হয়ে যেতে হতে পারে
কারণ আমরা নতুন গাছ তৈরীর এবং পয়েন্টার যে মত এবং আচরণ জিনিষ সঙ্গে সঙ্গে লেনদেন করছেন.
আগে যখন আমরা পয়েন্টার সাথে ডিল করা হয়েছে,
যখনই আমরা malloc'd আমরা নিশ্চিত যে এটা একটি NULL পয়েন্টার মান আমাদের নি প্রত্যাবর্তন করতে চেয়েছিলেন.
তাই এই প্রক্রিয়ার মধ্যে বিভিন্ন পদক্ষেপ এ গিয়ে বিভিন্ন ক্ষেত্রে করা আছে
যেখানে আপনার প্রোগ্রামের বিফল হতে পারে.
আপনি কি করতে চান আপনি কি নিশ্চিত যে আপনি ঐ এরর হ্যান্ডেল করতে চাই,
এবং এটা তাদের gracefully হ্যান্ডেল বৈশিষ্ট মধ্যে বলেছেন,
তাই ব্যবহারকারী যাও মুদ্রণ একটি বার্তা বার বলছে কেন প্রোগ্রাম ছেড়ে পছন্দ হয়েছে
এবং অবিলম্বে তারপর এটা ত্যাগ করুন.
এই ত্রুটির সমাধান ব্যবস্থায় না, মনে রাখবেন যে আপনি এটা চেক করতে চান
প্রতি একক সময় যে একটি ব্যর্থতা রয়েছে.
প্রতি একক সময় যে আপনি একটি নতুন পয়েন্টার তৈরি করছি
আপনি কি নিশ্চিত যে এটা সফল করতে চাই.
আগে কি আমরা করতে ব্যবহার করা হয় একটি নতুন পয়েন্টার এবং malloc এটি করা,
এবং তারপর আমরা কিনা যে পয়েন্টার হয় শূন্য চেক করবে.
সুতরাং এখানে গিয়ে কিছু দৃষ্টান্ত যেখানে আপনি যে ঠিক করতে পারেন করা আছে,
কিন্তু কখনও কখনও আপনি এমন একটি ফাংশন করছি কলিং
এবং যে ফাংশানের মধ্যে, এটা যে এক mallocing এর করছেন.
এ ক্ষেত্রে যে, যদি আমরা ফাংশন কিছু কোড মধ্যে ফিরে তাকান,
তাদের কয়েকটি বুলিয়ান ফাংশন.
ইন বিমূর্ত ক্ষেত্রে যদি আমরা একটি বুলিয়ান foo বিন্যাস ফাংশন বলা আছে,
মূলত, আমরা সেটা যাই হোক না কেন foo বিন্যাস আছে ছাড়াও যে ধারনা করতে পারি,
যেহেতু এটি একটি বুলিয়ান ফাংশন, এটা সত্য বা মিথ্যা ফেরৎ -
সত্য যদি সফল, মিথ্যা যদি না.
তাই আমরা কিনা foo বিন্যাস ফেরত মান সত্য বা মিথ্যা চেক করতে চান.
এটি যদি মিথ্যা, মানে যে আমরা বার্তাটি কিছু প্রিন্ট করতে চান চলুন
এবং তারপর প্রোগ্রাম ত্যাগ করুন.
আমরা কি করে যেতে চাই হয় foo বিন্যাস ফেরত মান পরীক্ষা করুন.
যদি foo বিন্যাস ফেরৎ মিথ্যা তারপর, আমরা জানি যে আমরা ভুল কিছু সম্মুখীন
এবং আমরা আমাদের প্রোগ্রাম প্রস্থান করার জন্য প্রয়োজন.
একটি উপায় কি এই শর্ত যেখানে প্রকৃত ফাংশন নিজেই আপনার শর্ত আছে.
বলুন foo বিন্যাস x এর মধ্যে লাগে.
আমরা যদি একটি শর্ত হিসাবে থাকতে পারে (foo বিন্যাস (x)).
মূলত, তার মানে যদি এটি foo কমান্ডটি নির্বাহ শেষে ফেরৎ সত্য,
তারপর আমরা এই কাজের কারণ ফাংশন foo বিন্যাস মূল্যনির্ধারণ করতে পারেন
যাতে পুরো অবস্থা নির্ণয় করা.
আমি তখন যে কিভাবে আপনি কিছু করতে যদি ফাংশন ফেরৎ সত্য এবং সফল করতে পারেন.
কিন্তু যখন আপনি ত্রুটি পরীক্ষা করা, শুধুমাত্র যদি আপনার ফাংশন উত্পন্ন করে প্রস্থান করার মিথ্যা চান.
আপনি কি কি করতে পারে মাত্র যোগ হয় একটি == মিথ্যা বা এটা ঠিক সামনে একটি ঠুং ঠুং শব্দ যোগ করা
এবং তারপর আপনি যদি (! foo বিন্যাস) আছে.
যে অবস্থার যে শরীরের মধ্যে আপনি ত্রুটি পরিচালন ব্যবস্থায় সব আছে,
তাই, চাই "এই ট্রি তৈরী করা যায়নি" এবং তারপরে 1 বা ওই জাতীয় কিছু ফেরত.
কি যে আছে যদিও, যে যদিও foo বিন্যাস ফিরে মিথ্যা -
বলুন foo বিন্যাস ফেরৎ সত্য.
তারপর আপনি আবার foo বিন্যাস কল করতে হবে না. এটা একটা সাধারণ ভুল ধারণা.
কারণ এটা আপনার শর্ত ছিল, ইতিমধ্যে এটি বুদ্ধ এর,
তাই আপনি যদি ইতিমধ্যে আপনার ফলে গাছ বা যে ভালো কিছু করতে ব্যবহার করছেন আছে
বা উদ্ভিদ বা পছন্দ বা কিছু.
এটা ইতিমধ্যেই যে মান আছে. এটি ইতোমধ্যেই মৃত্যুদন্ড কার্যকর.
সুতরাং এর শর্ত হিসাবে বুলিয়ান ফাংশন ব্যবহার উপযোগী
কারণ কিনা বা লুপ আসলে শরীরের আপনি না চালানো,
এটি ফাংশন যাইহোক করুন.
>> শেষ পদক্ষেপ আমাদের দ্বিতীয় ফাইলটি বার্তা লেখা হয়.
একবার আমরা Huffman ট্রি নির্মাণ তারপর, ফাইল বার্তা লেখা বেশ সহজবোধ্য.
এটা এখন চমত্কার সহজবোধ্য ঠিক 0 সেঃ এবং 1s অনুসরণ করুন.
প্রচল দ্বারা যাতে এবং আমরা জানি যে, একটি Huffman ট্রির 0 সেঃ বাকি ইঙ্গিত
এবং 1s অধিকার নির্দেশ করে.
তখন যদি বিট আপনাকে বিট দ্বারা পড়া, প্রত্যেক সময় যে আপনি একটি পেতে 0
আপনি বাম শাখা অনুসরণ করা, এবং তারপর প্রতি করব সময় আপনি একটি 1 পড়া
আপনি সঠিক শাখা অনুসরণ চলুন.
এবং তারপরে আপনি কি অবিরত করতে যাচ্ছে পর্যন্ত আপনি একটি পাত আঘাত করছি
কারণ পাতার শাখা শেষ হতে যাচ্ছে.
কিভাবে আমরা বলতে কিনা আমরা একটি গাছের পাতা বা না আঘাত করতে পারবেন?
আমরা আগে এটা বলেন.
[ছাত্রদের] যদি পয়েন্টার হয় শূন্য. >> হ্যাঁ.
যদি আমরা একটি গাছের পাতা আঘাত করেছি যদি উভয় বাম এবং ডান গাছ যাও NULL পয়েন্টার হয় বলতে পারেন.
পারফেক্ট.
আমরা জানি যে আমরা কিছুক্ষনের মধ্যে আমাদের অভিমান ফাইলে পড়তে বিট দ্বারা চান.
হিসাবে আমরা dump.c আগে দেখেছি, তারা কি কি হয় বিট তারা অভিমান ফাইলে পড়তে বিট দ্বারা
এবং শুধুমাত্র প্রিন্ট আউট কি যারা বিট ছিল.
আমরা যে কাজ করছি করা যাচ্ছে না. আমরা কিছু যে কিছুটা জটিল কাজ করা চলুন.
কিন্তু আমরা কি করব তা করা যেতে পারে, আমরা কোড যে বিট বিট যে সার্চ নিতে পারেন.
এখানে আমরা বিট পূর্ণসংখ্যা বর্তমান বিট যে আমরা করছি প্রতিনিধিত্বমূলক আছে.
এই ফাইলের মধ্যে বিটের সব iterating যত্ন নেয় যতক্ষণ না আপনি ফাইলের শেষে আঘাত.
উপর ভিত্তি করে, তাহলে যাও iterator কিছু চাই চলুন
আপনার গাছ তর্ক.
এবং তারপর কিনা বিট 0 বা 1 উপর ভিত্তি করে,
আপনি হয় যে iterator বাম বা ডান দিকে সরাতে সরাতে চান এটি চলুন
সমস্ত পথ পর্যন্ত আপনি একটি পাত আঘাত, তাই সব পথ পর্যন্ত যে নোড যে আপনি উপর
কোনো নোড আরো নির্দেশ না.
কেন একটি Huffman ফাইলটি কিন্তু না সাঙ্কেতিক লিখন - পদ্ধতি সঙ্গে আমরা এটা করতে পারেন?
কারণ সাঙ্কেতিক লিখন - পদ্ধতি মধ্যে দ্ব্যর্থতার একটি বিট আছে.
আমরা, ভালো ওহ অপেক্ষা করতে হতে পারে, আমরা পথ বরাবর একটি চিঠি আঘাত করেছি, তাই হয়তো এই হল আমাদের চিঠি,
পক্ষান্তরে যদি আমরা অব্যাহত শুধুমাত্র একটি বিট আর তারপর, আমরা অন্য অক্ষর আঘাত করে.
কিন্তু যে ঘটতে যাচ্ছে Huffman এনকোডিং না,
যাতে আমরা আশ্বস্ত যে একমাত্র উপায় হল যে আমরা চলুন একটি অক্ষর আঘাত বিশ্রাম করতে পারেন
যদি হয় যে নোড এর বাম এবং ডান সন্তান শূন্য.
>> পরিশেষে, আমরা আমাদের সমস্ত মেমরি মুক্ত করতে চান.
আমরা উভয় অভিমান ফাইল বন্ধ করতে চান যে আমরা হয়েছে আচরণ করেছি
সেইসাথে আমাদের বনে গাছের সব সরান.
আপনার বাস্তবায়নের উপর ভিত্তি করে, সম্ভবত আপনি চান সেটি চালু যাও বন অপসারণ কল
পরিবর্তে আসলে গাছ নিজের সব দিয়ে যাচ্ছে.
তবে আপনি যদি কোনো গাছ অস্থায়ী হয়েছে, আপনি যে মুক্ত করতে চাইবেন.
আপনি আপনার কোড ভাল জানেন, তাই আপনি কি জানেন যেখানে আপনি মেমরি বণ্টন করছেন.
এবং তাই আপনি যদি যান, এমনকি কন্ট্রোল জন্য F'ing malloc দ্বারা, শুরু,
এইজন্য যখনই আপনি malloc এবং এমনটা নিশ্চিত করা যে আপনি যে সকল মুক্ত
কিন্তু তারপরে শুধু আপনার কোড মধ্যে দিয়ে যাচ্ছিলেন,
প্রতীতি যেখানে আপনি মেমরি বরাদ্দ করে থাকতে পারে.
সাধারণত আপনি বলে, "একটি ফাইলের শেষে আমি আমার বনের অরণ্য অপসারণ করা যাচ্ছে," হতে পারে
তাই মূলত যে মেমরি, বিনামূল্যে পরিষ্কার যে,
"তারপর এবং আমি এও ফাইল এবং তার পরে আমার প্রোগ্রাম ছেড়ে যাচ্ছে না যাচ্ছে."
কিন্তু এটি যে কেবল আপনার সময় যে প্রোগ্রাম শোধবোধ হয়ে যাওয়া?
না, কখনও কখনও কারণ একটি ত্রুটি ঘটেছে হয়েছে সেখানে থাকতে পারে.
আমরা হয়তো একটি ফাইল খুলতে বা না আমরা অন্য গাছ না করতে পারে
ত্রুটি বা কোন ধরণের মেমরি বরাদ্দকরণের প্রক্রিয়ায় ঘটেছে এবং তাই ফিরে শূন্য.
একটি ত্রুটি ঘটেছে এবং তারপর আমরা ফিরে ছেড়ে দিন.
অতএব আপনি নিশ্চিত যে কোনো সময় সম্ভব যে আপনার প্রোগ্রাম অব্যাহতিপ্রাপ্ত পারেন করতে চাই,
আপনাকে সেখানে আপনার মেমরি সকল মুক্ত করতে চান.
এটা মূল ফাংশন যে আপনি আপনার কোড প্রস্থান করার জন্য খুব শেষে করা ঠিক যাচ্ছে না.
আপনি প্রতিটি উদাহরণের ফিরে দেখতে চাই যে সম্ভাব্য আপনার কোড অকালে ফিরে হতে পারে
এবং তারপর বিনামূল্যে যাই হোক না কেন মেমরি ইন্দ্রিয় তোলে.
ধরা যাক, বন এবং যে ফিরে না মিথ্যা বলা যায়.
তারপর আপনি সম্ভবত আপনার বন মুছে ফেলার প্রয়োজন হবে না
কারণ এখনও পর্যন্ত আপনার কোন একটি বন না.
কিন্তু কোড প্রতিটি স্থানে যেখানে অকালে প্রত্যাবর্তন করতে পারে
আপনি কি নিশ্চিত যে আপনি কোনো সম্ভব মেমরি মুক্ত করতে চাই.
>> সুতরাং যখন আমরা মেমরি freeing সঙ্গে আচরণ এবং সম্ভাব্য তথ্য ফাঁসের ভোগ করছি,
আমরা শুধু আমাদের রায় এবং আমাদের যুক্তিবিজ্ঞান ব্যবহার করতে চান
তবে কিনা আমরা আমাদের মেমরি সব কাটা করেছি বা সঠিকভাবে নির্ধারণ করা Valgrind ব্যবহার.
হয় আপনি বহান উপর Valgrind এবং তারপর রান করতে পারেন, এটি পাস আছে
কমান্ড লাইন আর্গুমেন্ট সঠিক সংখ্যার Valgrind যাও.
আপনি যে চালানোর, কিন্তু আউটপুট একটি বিট রহস্যপূর্ণ পারেন.
আমরা একটি বিট Speller সঙ্গে ব্যবহৃত এটি করেছি, অর্জিত, কিন্তু আমরা এখনও একটি বিট আরো সাহায্যের প্রয়োজন হয়,
অতএব কয়েক লিক চেক = পূর্ণ মত আরো পতাকা এটি চলমান,
যে সম্ভবত কিছু দিতে Valgrind আরও সহায়ক আউটপুট আমাদের হবে.
>> তারপর আরেকটি কার্যকর টিপ যখন আপনি ডিবাগিং সেটি পরিবর্তন কমান্ড.
আপনি অভিমান এর কর্মীরা এর বাস্তবায়ন অ্যাক্সেস, চালানোর যে একটি টেক্সট ফাইল, করতে পারেন
এবং তারপর একটি বাইনারি ফাইল, একটি বাইনারি ফাইল অভিমান এটি নির্দিষ্ট করা আউটপুট.
তারপর যদি আপনি যে বাইনারি ফাইল আপনার নিজস্ব তুলি চালানো,
তারপর মনে মনে, আপনার outputted টেক্সট ফাইলে অভিন্ন হবে
মূল যে আপনি পাশ ইন
এখানে আমি উদাহরণ হিসাবে ব্যবহার করছি hth.txt, এবং যে কেউ আপনার মধ্যে বৈশিষ্ট সম্পর্কে বললাম.
যে আক্ষরিক শুধু HTH এবং তারপর একটি newline.
কিন্তু স্পষ্টভাবে নির্দ্বিধায় এবং আপনি স্পষ্টভাবে হয় আর উদাহরণ ব্যবহার উত্সাহিত
আপনার জন্য টেক্সট ফাইল.
>> এমনকি আপনি হয়তো সংকুচিতকারী একটি শট এবং তারপর নিতে পারেন decompressing
যুদ্ধ ও শান্তি মত যে ফাইলগুলি আপনি Speller ব্যবহৃত কিছু
অথবা অসটেন বা ওই জাতীয় কিছু - যে শীতল ধরনের হবে - অমুসলিম বা ক্ষমতা,
বড় ফাইল সাথে ডিল ধরনের কারণ আমরা তা অবতরণ না
আমরা যদি পরবর্তী এখানে হাতিয়ার, ls-l দ্বারা ব্যবহৃত.
আমরা ls, যা মূলত আমাদের বর্তমান ডিরেক্টরির মধ্যে সমস্ত বিষয়বস্তু তালিকা ব্যবহার করতেন.
পতাকা-l কথা প্রসঙ্গে আসলে ঐ ফাইলের মাপ প্রদর্শন করা হয়.
আপনি যদি pset বৈশিষ্ট মধ্য দিয়ে যেতে হবে, আসলে এটি বাইনারি ফাইল তৈরি করার মাধ্যমে আপনি পদচারনা,
তা huffing, এবং আপনি খুব ছোট জন্য যে ফাইলগুলি দেখুন
এটি সংকুচিতকারী এবং যে সমস্ত তথ্য অনুবাদ স্থান খরচ
সব ফ্রিকোয়েন্সিতে যে ভালো এবং জিনিস outweighs আসল বেনিফিট
প্রথম স্থানে ফাইল সংকুচিতকারী.
তবে আপনি যদি কিছু আর টেক্সট ফাইল এটি চালানোর পরে, আপনি যে আপনি কিছু বেনিফিট পেতে শুরু হতে পারে
যারা ফাইল সংকুচিতকারী.
>> এবং পরিশেষে, তাহলে আমরা আমাদের পুরানো সাথী GDB, যা স্পষ্টভাবে হয় খুব উপকারে আসা যাওয়া আছে.
>> আমরা অভিমান গাছ বা প্রক্রিয়ার কোন প্রশ্ন থাকে সম্ভবত গাছ করার
বা কোনো Huff'n বহান অন্যান্য প্রশ্ন?
ঠিক আছে. আমি একটু কাছাকাছি থাকার জন্য করব.
>> ধন্যবাদ, সবাই. এই ছিল Walkthrough 6. এবং শুভকামনা.
>> [CS50.TV]