1 00:00:00,000 --> 00:00:11,200 2 00:00:11,200 --> 00:00:12,580 >> DAVID Malan: ঠিক আছে, ফিরে আসার জন্য স্বাগতম. 3 00:00:12,580 --> 00:00:13,290 এটি CS50. 4 00:00:13,290 --> 00:00:15,130 এই সপ্তাহে সাত শুরু. 5 00:00:15,130 --> 00:00:18,890 সুতরাং এটি একটি সময় হয়েছে, তাই আমি মনে করি আমরা চাই এর যেখানে আমরা একটি ঘূর্ণিবায়ু ট্যুর নিতে 6 00:00:18,890 --> 00:00:20,760 বাকি বন্ধ এবং আমরা এখন কোথায় যাচ্ছেন. 7 00:00:20,760 --> 00:00:23,310 >> এই জিনিস এখানে থাকতে পারে তাই প্রথমে কিছু angst হত. 8 00:00:23,310 --> 00:00:27,680 কিন্তু আশা করছি, আপনি শুরু করছি এখানে এই নির্দেশ কি acclimate - 9 00:00:27,680 --> 00:00:32,670 যা একটি পয়েন্টার, প্রতিনিধিত্বমূলক তারা আরো layman এর পরিপ্রেক্ষিতে ঠিক কি,? 10 00:00:32,670 --> 00:00:33,400 সুতরাং এটি একটি ঠিকানা আছে. 11 00:00:33,400 --> 00:00:35,490 >> সুতরাং এটি ঠিকানা মেমরির মধ্যে কিছু. 12 00:00:35,490 --> 00:00:38,260 এবং আমরা ফিরে ছুলা স্তর শুরু কয়েক সপ্তাহ আগে, ভীষণ পছন্দ 13 00:00:38,260 --> 00:00:41,800 GetString, এবং অন্যান্য যেমন ফাংশন এই সব সময় ফিরে হয়েছে 14 00:00:41,800 --> 00:00:46,010 মত মেমরি জিনিস ঠিকানা, প্রথম অক্ষরের ঠিকানা 15 00:00:46,010 --> 00:00:46,990 কিছু ক্রম. 16 00:00:46,990 --> 00:00:50,360 >> সুতরাং আমরা Valgrind চালু যা আপনি এই সমস্যার জন্য ব্যবহার করতে শুরু করব 17 00:00:50,360 --> 00:00:53,380 বিশেষ করে পরের জন্য, সেট সমস্যা হিসাবে ভাল সেট. 18 00:00:53,380 --> 00:00:54,980 এবং Valgrind আমাদের জন্য কি আছে? 19 00:00:54,980 --> 00:00:57,520 20 00:00:57,520 --> 00:01:01,020 এটি মেমরি তথ্য ফাঁসের জন্য পরীক্ষা করা হবে, এবং এটা মেমরি ব্যবহার অপব্যবহারের জন্য পরীক্ষা করা হবে. 21 00:01:01,020 --> 00:01:05,890 >> এটা, কিছু সম্ভাবনা সঙ্গে সনাক্ত করা সম্ভব হলে আপনার কোড মেমরি স্পর্শ যাচ্ছে 22 00:01:05,890 --> 00:01:07,100 যে সহজভাবে তা করা উচিত নয়. 23 00:01:07,100 --> 00:01:10,410 সুতরাং একটি লিক অগত্যা, কিন্তু আপনি যদি না কিছু সীমানা অতিক্রম 24 00:01:10,410 --> 00:01:14,730 অ্যারে, এবং আসলে আপনি Valgrind চালানো এবং যে আচরণ প্রবর্তিত যখন 25 00:01:14,730 --> 00:01:17,870 Valgrind আপনার প্রোগ্রাম চলছে এটা ভিতরে চলমান, আপনি পাবেন 26 00:01:17,870 --> 00:01:21,460 ভালো বার্তা - "অবৈধ সম্পর্কে লিখুন , একটি দম্পতি প্রত্যাহার যা আকার 4 " 27 00:01:21,460 --> 00:01:25,880 সপ্তাহ আগে আমি ঘটনাক্রমে ছিল যে বোঝানো অতিদূরে এক int-এ পছন্দ মত 28 00:01:25,880 --> 00:01:27,250 একটি অ্যারের সীমা অতিক্রম. 29 00:01:27,250 --> 00:01:30,790 তাই আকার 4 এখানে মাপ মানে যে বিশেষ int-এর. 30 00:01:30,790 --> 00:01:35,260 >> তাই আসলে আশ্বস্ত গ্রহণ Valgrind এর আউটপুট, এটা বিন্যাস, 31 00:01:35,260 --> 00:01:36,170 শুধু atrocious হয়. 32 00:01:36,170 --> 00:01:40,180 এটি জগাখিচুড়ি মাধ্যমে দেখতে সত্যিই কঠিন আকর্ষণীয় তথ্যের জন্য. 33 00:01:40,180 --> 00:01:42,910 তাই কি আমরা এখানে কাজ করেছি মাত্র উদ্ধৃতাংশ হয় আরো দম্পতি কিছু 34 00:01:42,910 --> 00:01:43,850 মজার লাইন. 35 00:01:43,850 --> 00:01:46,760 কিন্তু বুঝি যে Valgrind এর 80% আউটপুট একটি একটি বিট হতে যাচ্ছে 36 00:01:46,760 --> 00:01:47,650 ক্ষোভ. 37 00:01:47,650 --> 00:01:52,820 >> শুধু এই মত নিদর্শন জন্য সন্ধান - ডান অবৈধ, অবৈধ, 40 বাইট পড়া 38 00:01:52,820 --> 00:01:56,690 এবং ব্লক কিছু সংখ্যা স্পষ্টভাবে হয় যে মত অভিব্যক্তি, হারিয়ে গেছে. 39 00:01:56,690 --> 00:02:01,920 এবং আপনি কি আশা দেখতে পাবেন কিছু হয় কাজ কি ট্রেস ধরনের 40 00:02:01,920 --> 00:02:03,340 ভুল করেননি আসলে 41 00:02:03,340 --> 00:02:07,195 এখানে এই ক্ষেত্রে, কি লাইন আমার কোড দৃশ্যত ত্রুটি হয়েছিল? 42 00:02:07,195 --> 00:02:09,729 43 00:02:09,729 --> 00:02:14,130 >> যা ছিল memory.c নামক একটি ফাইলের মধ্যে 26 আমরা সঙ্গে বাজানো হয় যেমন 44 00:02:14,130 --> 00:02:14,890 সময়. 45 00:02:14,890 --> 00:02:16,460 সুতরাং এটা malloc সম্ভবত না. 46 00:02:16,460 --> 00:02:18,630 এটা পরিবর্তে আমার কোড মধ্যে সম্ভবত ছিল না. 47 00:02:18,630 --> 00:02:20,910 তাই আমরা আবার এই দেখতে পাবেন এবং আবার আগে দীর্ঘ. 48 00:02:20,910 --> 00:02:24,080 >> Scanf সুতরাং, এই একটি মধ্যে এসেছেন এ পর্যন্ত ধরনের দম্পতি. 49 00:02:24,080 --> 00:02:26,410 আমরা সংক্ষেপে sscanf দেখেছি. 50 00:02:26,410 --> 00:02:28,330 এটা কিছু একটি সংখ্যা ছিল আপনি আপনার মধ্যে dived 51 00:02:28,330 --> 00:02:29,535 ব্যঙ্গ জন্য প্রস্তুতি. 52 00:02:29,535 --> 00:02:33,130 এবং scanf আসলে কি হয় এবং CS50 গ্রন্থাগারের নীচে ব্যবহার করা হয়েছে 53 00:02:33,130 --> 00:02:36,560 যাতে বেশ কিছু সময়ের জন্য ফণা ব্যবহারকারীর কাছ থেকে ইনপুট পেতে. 54 00:02:36,560 --> 00:02:40,420 >> উদাহরণস্বরূপ, আমি এবং CS50 উপর সরানো হলে যন্ত্র, এখানে একটি সম্পর্কে খুলুন যাক 55 00:02:40,420 --> 00:02:45,315 scanf-0.c বলা হচ্ছে যে উদাহরণ আজ এবং এটা অতি সহজ. 56 00:02:45,315 --> 00:02:46,590 এটি শুধু একটি কোড কয়েক লাইন এর. 57 00:02:46,590 --> 00:02:50,880 কিন্তু এটা প্রমান সত্যিই কিভাবে GetInt এই সময়ে সব কাজ করা হয়েছে. 58 00:02:50,880 --> 00:02:54,710 >> লাইন 16 এখানে এই প্রোগ্রাম ইন, , আমি কোন int ডিক্লেয়ার যে বিজ্ঞপ্তি. 59 00:02:54,710 --> 00:02:57,270 তাই কোন পয়েন্টার, ঐন্দ্রজালিক কিছুই আছে, ঠিক কোন int. 60 00:02:57,270 --> 00:03:00,330 তারপর লাইন 17, আমি অনুরোধ একটি সংখ্যা জন্য ব্যবহারকারীকে, দয়া করে. 61 00:03:00,330 --> 00:03:02,930 তারপর দেরী 18, আমি এখানে scanf ব্যবহার করুন. 62 00:03:02,930 --> 00:03:06,910 এবং আমি চিহ্নিত ধরনের মত printf, এর, আমি আশা করছি যে উদ্ধৃতি 63 00:03:06,910 --> 00:03:08,110 শতাংশ আমি unquote. 64 00:03:08,110 --> 00:03:10,920 >> শতাংশ আমি, অবশ্যই, কোন int হল. 65 00:03:10,920 --> 00:03:14,580 কিন্তু লক্ষ্য করা কি দ্বিতীয় scanf আপনি যুক্তি. 66 00:03:14,580 --> 00:03:17,350 আপনি কিভাবে দ্বিতীয় বর্ণনা করবেন কমা পরে যুক্তি? 67 00:03:17,350 --> 00:03:19,450 যে কি? 68 00:03:19,450 --> 00:03:20,670 >> এটা x এর ঠিকানা. 69 00:03:20,670 --> 00:03:25,490 তাই এই কারণ সরবরাহ করে দরকারী x এর ঠিকানা দিয়ে scanf, কি আছে 70 00:03:25,490 --> 00:03:29,560 যে কাজ যে ফাংশন ক্ষমতাবান? 71 00:03:29,560 --> 00:03:33,010 না ঠিক আছে যান, কিন্তু কি করবেন? 72 00:03:33,010 --> 00:03:34,060 >> এটি পরিবর্তন করুন. 73 00:03:34,060 --> 00:03:38,080 আপনি সেখানে যেতে পারেন, কারণ এটি সাজানোর এর মেমরির মধ্যে একটি অবস্থান একটা ম্যাপ. 74 00:03:38,080 --> 00:03:41,900 তাই যতদিন আপনি প্রদান scanf, অথবা যেমন একটি মানচিত্র, যে কোনো ফাংশন 75 00:03:41,900 --> 00:03:45,840 ফাংশন আছে যান, এবং পারে না শুধুমাত্র মান তাকান, কিন্তু এটি করতে পারেন 76 00:03:45,840 --> 00:03:49,670 যদি দরকারী, যা মান, পরিবর্তন scanf জীবনের উদ্দেশ্য হল 77 00:03:49,670 --> 00:03:53,060 নির্দিষ্টভাবে, ব্যবহারকারীর কাছ থেকে ইনপুট স্ক্যান কীবোর্ড থেকে. 78 00:03:53,060 --> 00:03:57,830 চ, ঠিক মত ফরম্যাট নির্দেশ printf,, চ একটি বিন্যস্ত নির্দেশ 79 00:03:57,830 --> 00:03:58,930 আপনি প্রিন্ট করতে চান যে পংক্তি. 80 00:03:58,930 --> 00:04:04,430 >> তাই সংক্ষিপ্ত, এই লাইন 18 সহজভাবে বলছেন, ব্যবহারকারীর থেকে কোন int পড়তে চেষ্টা করুন 81 00:04:04,430 --> 00:04:10,420 কীবোর্ড এবং এ, x এর ভিতরে এটি সংরক্ষণ এক্স বাস ঘটবে যাই হোক না কেন ঠিকানা. 82 00:04:10,420 --> 00:04:14,860 এবং তারপর সর্বশেষে, লাইন 19 ঠিক বলেছেন, এই ক্ষেত্রে কোন int জন্য ধন্যবাদ. 83 00:04:14,860 --> 00:04:15,940 >> তাই আমাকে এগিয়ে যান এবং এই করা যাক. 84 00:04:15,940 --> 00:04:18,570 সুতরাং scanf 0 না. 85 00:04:18,570 --> 00:04:20,130 আমাকে এগিয়ে যান এবং জুম চলুন শুরু করা যাক 86 00:04:20,130 --> 00:04:22,960 আমি সঙ্গে যান এবং এই রান করব বিন্দু scanf 0 কাট. 87 00:04:22,960 --> 00:04:24,020 সংখ্যা, দয়া করে? 88 00:04:24,020 --> 00:04:24,720 50. 89 00:04:24,720 --> 00:04:25,730 50 জন্য ধন্যবাদ. 90 00:04:25,730 --> 00:04:27,270 সুতরাং এটা বেশ সহজ. 91 00:04:27,270 --> 00:04:28,160 >> এটা এখন কি করছে না? 92 00:04:28,160 --> 00:04:29,940 এটা একটা আভা করছেন না ত্রুটি পরীক্ষণ. 93 00:04:29,940 --> 00:04:33,000 উদাহরণস্বরূপ, আমি সহযোগিতা না, এবং আমি একটি সংখ্যা টাইপ করুন, না কিন্তু 94 00:04:33,000 --> 00:04:37,860 এর পরিবর্তে আমি "হ্যালো," মত কিছু লিখুন যে অদ্ভুত শুধু ধরনের. 95 00:04:37,860 --> 00:04:41,130 জিনিষ এবং CS50 এবং তাই এক গ্রন্থাগারের কিছু আমাদের জন্য কাজ করা হয়েছে 96 00:04:41,130 --> 00:04:43,440 সময় যে reprompting হয় এবং reprompting. 97 00:04:43,440 --> 00:04:49,320 >> পুনরায় চেষ্টা করুন ফ্রেজ রিকল, cs50.c ছিল এবং যে GetInt মধ্যে কারণে 98 00:04:49,320 --> 00:04:51,670 CS50 লাইব্রেরি আসলে একটি সম্পূর্ণ হয় দীর্ঘ লাইন গুচ্ছ, আমরা কারণ 99 00:04:51,670 --> 00:04:53,190 ভালো মূঢ় উপাদান জন্য চেক করা হচ্ছে. 100 00:04:53,190 --> 00:04:55,730 ব্যবহারকারী দেয় নি আমাদের, আসলে, কোন int? 101 00:04:55,730 --> 00:04:57,910 সে আমাদের কিছু দিতে হয়নি একটি বর্ণানুক্রমিক অক্ষর ভালো লেগেছে? 102 00:04:57,910 --> 00:05:01,410 যদি তাই হয়, আমরা সনাক্ত করতে চান এবং যে তাদের চিত্কার. 103 00:05:01,410 --> 00:05:03,915 >> কিন্তু আরও বেশি আকর্ষণীয় পেতে এই পরের উদাহরণ. 104 00:05:03,915 --> 00:05:09,840 আমি scanf-1.c যান, কি এক মৌলিকভাবে মধ্যে পরিবর্তিত হয় যে জিনিস 105 00:05:09,840 --> 00:05:11,135 এই পরের উদাহরণ? 106 00:05:11,135 --> 00:05:13,690 107 00:05:13,690 --> 00:05:16,010 আমি, অবশ্যই, গৃহস্থালি * ব্যবহার করছি পরিবর্তে int-এর. 108 00:05:16,010 --> 00:05:19,210 >> কারণ গৃহস্থালি * তাই এই,, আকর্ষণীয় স্মরণ করছি, শুধু সত্যিই হয় 109 00:05:19,210 --> 00:05:20,190 স্ট্রিং একই জিনিস. 110 00:05:20,190 --> 00:05:23,840 সুতরাং এটা হয়ত মত এই একটি সুপার মতানুযায়ী GetString, সহজ বাস্তবায়ন. 111 00:05:23,840 --> 00:05:26,010 কিন্তু আমি স্তর ফিরে peeled করেছি CS50 লাইব্রেরি, আমি আছি তাই 112 00:05:26,010 --> 00:05:27,550 এখন এই গৃহস্থালি * কলিং. 113 00:05:27,550 --> 00:05:30,070 সুতরাং এর দেখতে দিন যেখানে, যে কোন স্থানে যদি, আমরা ভুল হয়ে যেতে পারে. 114 00:05:30,070 --> 00:05:30,840 >> লাইন 17 - 115 00:05:30,840 --> 00:05:33,950 আমি আবার, আমাকে কিছু দিতে দয়া করে বলে, এই ক্ষেত্রে, একটি পংক্তি. 116 00:05:33,950 --> 00:05:37,940 এবং তারপর পরের লাইন, আমি, scanf কল আবার, এটি একটি কোড বিন্যাস প্রদান, 117 00:05:37,940 --> 00:05:39,310 কিন্তু এই সময় শতাংশ গুলি. 118 00:05:39,310 --> 00:05:41,900 এবং তারপর এই সময়, আমি এটি বাফার প্রদান. 119 00:05:41,900 --> 00:05:43,550 >> এখন আমি ব্যবহার করছি না, বিজ্ঞপ্তি ampersand. 120 00:05:43,550 --> 00:05:47,120 কিন্তু এখানে কেন যে সম্ভবত ঠিক আছে? 121 00:05:47,120 --> 00:05:49,760 ইতিমধ্যে বাফার কি কারণ? 122 00:05:49,760 --> 00:05:50,770 যদি এটি ইতিমধ্যে একটি পয়েন্টার. 123 00:05:50,770 --> 00:05:51,650 এটি ইতিমধ্যে একটি ঠিকানা আছে. 124 00:05:51,650 --> 00:05:54,510 >> যাক এই শব্দ আমাকে, "গুলান" এর শুধু জন্য উদাহরণস্বরূপ, এটি গুলি কল 125 00:05:54,510 --> 00:05:55,050 সরলতা. 126 00:05:55,050 --> 00:05:58,250 কিন্তু আমি এটা বাফার বলা করেছি কারণ সাধারণ, প্রোগ্রামিং, আপনি একটি থাকে তাহলে 127 00:05:58,250 --> 00:06:02,130 মেমরি খণ্ড, যা একটি স্ট্রিং সত্যিই ঠিক, আপনি এটি একটি বাফার কল হতে পারে না. 128 00:06:02,130 --> 00:06:04,460 এটি তথ্য সংরক্ষণ করার জন্য একটি জায়গা. 129 00:06:04,460 --> 00:06:07,400 >> যখন ইউটিউব, ভালো জিনিস অনুরূপ তারা, তাই কথা বলতে, বাফার উপলব্ধ করছি 130 00:06:07,400 --> 00:06:10,270 এটা থেকে বিট ডাউনলোড মানে ইন্টারনেট এবং তাদের সংরক্ষণকারী 131 00:06:10,270 --> 00:06:14,160 স্থানীয় অ্যারের, তাই মেমরি স্থানীয় খণ্ড আপনি ছাড়া এটা পরে দেখতে পারেন যে 132 00:06:14,160 --> 00:06:16,830 এটি কুঁদন বা ঝুলন্ত আপনি ফিরে যখন বাজানো. 133 00:06:16,830 --> 00:06:20,930 >> সুতরাং একটি সমস্যা, যদিও এখানে আছে আমি scanf কহন করছি, কারণ আশা 134 00:06:20,930 --> 00:06:22,320 ব্যবহারকারী থেকে পংক্তি. 135 00:06:22,320 --> 00:06:24,410 এখানে ঠিকানা মেমরি একটি খণ্ড. 136 00:06:24,410 --> 00:06:26,180 সেখানে স্ট্রিং রাখুন. 137 00:06:26,180 --> 00:06:31,230 কেন যে বাউন্ড দিতে হয় যদিও আমাদের কষ্ট,? 138 00:06:31,230 --> 00:06:33,490 >> ওটা কি? 139 00:06:33,490 --> 00:06:35,510 আমি অ্যাক্সেস করতে অনুমোদিত am মেমরি যে অংশ? 140 00:06:35,510 --> 00:06:36,250 আপনি কি জানেন, আমি জানি না. 141 00:06:36,250 --> 00:06:39,210 বাফার সক্রিয়া করা হয়েছে কারণ কিছু? 142 00:06:39,210 --> 00:06:39,820 না সত্যিই. 143 00:06:39,820 --> 00:06:43,090 এবং তাই আমরা আহ্বান করছি কি একটি আবর্জনা মান, যা 144 00:06:43,090 --> 00:06:44,040 একটি প্রথাগত শব্দ নয়. 145 00:06:44,040 --> 00:06:49,200 এটা ঠিক আমরা কি বিট কোন ধারণা আছে মানে যে চার বাইট এর ভিতর আছে 146 00:06:49,200 --> 00:06:51,240 আমি বাফার হিসাবে বরাদ্দ করেছেন. 147 00:06:51,240 --> 00:06:52,450 >> আমি malloc বলা হয় নি. 148 00:06:52,450 --> 00:06:53,940 আমি স্পষ্টভাবে GetString, বলা হয় না করেছি. 149 00:06:53,940 --> 00:06:56,380 সুতরাং যারা আসলে জানেন কি বাফার এর ভিতরে? 150 00:06:56,380 --> 00:07:00,550 এবং এখনো scanf কহন অন্ধভাবে, সেখানে যান এবং ব্যবহারকারী টাইপ যাই হোক না কেন রাখা. 151 00:07:00,550 --> 00:07:04,460 >> তাই কারণ সম্ভবত কি আমাদের কোড আমরা এটি চালানোর জন্য তাহলে কি হবে? 152 00:07:04,460 --> 00:07:05,700 সম্ভবত একটি segfault. 153 00:07:05,700 --> 00:07:07,970 হয়ত না, কিন্তু সম্ভবত একটি segfault. 154 00:07:07,970 --> 00:07:10,620 এবং আমি বলতে হয়ত না, কারণ কখনও কখনও আপনি মাঝে মাঝে, কি 155 00:07:10,620 --> 00:07:11,380 আপনি একটি segfault পাবেন না. 156 00:07:11,380 --> 00:07:14,280 কখনও কখনও আপনি শুধু পেতে ভাগ্যবান, কিন্তু আছে এটা তবু হতে যাচ্ছে 157 00:07:14,280 --> 00:07:15,340 আমাদের প্রোগ্রামে একটি বাগ. 158 00:07:15,340 --> 00:07:17,060 >> তাই আমাকে এগিয়ে যান এবং এই সঙ্কলন করা যাক. 159 00:07:17,060 --> 00:07:18,280 আমি এটা পুরানো স্কুল উপায় কাজ করতে যাচ্ছি. 160 00:07:18,280 --> 00:07:23,825 তাই ঝনঝন ড্যাশ 0, scanf-1, scanf-1.c লিখুন. 161 00:07:23,825 --> 00:07:24,720 ওহো, খুব বেশি পুরানো স্কুল. 162 00:07:24,720 --> 00:07:26,550 এর দেখতে দিন. 163 00:07:26,550 --> 00:07:28,440 আমি কোথায় গেছে? 164 00:07:28,440 --> 00:07:29,700 ওহ, গৃহস্থালি * বাফার. 165 00:07:29,700 --> 00:07:33,595 166 00:07:33,595 --> 00:07:35,130 ওহ, আপনাকে ধন্যবাদ - 167 00:07:35,130 --> 00:07:36,930 ঠিক আছে, সংরক্ষণ করুন - 168 00:07:36,930 --> 00:07:37,690 খুব পুরানো স্কুল. 169 00:07:37,690 --> 00:07:38,900 ঠিক আছে, এটি একটি সময় হয়েছে. 170 00:07:38,900 --> 00:07:41,720 >> তাই আমি ঠিক ফাইল পরে সংরক্ষিত করেছি যে অস্থায়ী তৈরীর 171 00:07:41,720 --> 00:07:42,700 একটি মুহূর্ত আগে পরিবর্তন. 172 00:07:42,700 --> 00:07:46,090 এবং এখন আমি এটা কম্পাইল করা হয়েছে নিজে ঝনঝন সঙ্গে. 173 00:07:46,090 --> 00:07:49,500 এবং এখন আমি এগিয়ে যান যাচ্ছে না এবং Enter, scanf-1 রান. 174 00:07:49,500 --> 00:07:50,290 স্ট্রিং করুন. 175 00:07:50,290 --> 00:07:51,600 আমি টাইপ করব "হ্যালো." 176 00:07:51,600 --> 00:07:54,070 >> এবং এখন, এখানে printf,, সত্যি, যেখানে একটু বিরক্তিকর হতে পারে. 177 00:07:54,070 --> 00:07:56,020 এটা আসলে যাচ্ছে না এই ক্ষেত্রে segfault. 178 00:07:56,020 --> 00:07:59,860 Printf একটু বিশেষ কারণ এটা সাধারণভাবে ব্যবহৃত তাই সুপার যে 179 00:07:59,860 --> 00:08:03,570 মূলত printf, করছে আমাদের একটা উপকার এবং বুঝতে, 180 00:08:03,570 --> 00:08:04,830 যে একটি বৈধ পয়েন্টার না. 181 00:08:04,830 --> 00:08:09,080 নিজেকে ঠিক মুদ্রণ উপর আমার সম্পর্কে এটি করা যাক এব w বন্ধনী ববহার নাল আউট, এমনকি 182 00:08:09,080 --> 00:08:13,340 এটা অপরিহার্যভাবে না যদিও কি আমরা আমাদের নিজেদের প্রত্যাশিত. 183 00:08:13,340 --> 00:08:16,940 >> সুতরাং আমরা সত্যিই খুব সহজে প্রবর্তিত করতে পারবে না এই পরিষ্কারভাবে এই সঙ্গে segfault, কিন্তু আছে 184 00:08:16,940 --> 00:08:18,600 আমি চেয়েছি আচরণ নয়. 185 00:08:18,600 --> 00:08:19,800 তাই সহজ সমাধান কি? 186 00:08:19,800 --> 00:08:25,650 ওয়েল, scanf-2, সম্পর্কে উত্থাপন করা যাক যে পরিবর্তে শুধু একটি বণ্টন 187 00:08:25,650 --> 00:08:30,100 গৃহস্থালি *, আমাকে একটু বুদ্ধিমতী করা যাক এই, এবং আমাকে বাফার বরাদ্দ করা যাক 188 00:08:30,100 --> 00:08:32,940 16 অক্ষরের একটি ক্রম হিসেবে. 189 00:08:32,940 --> 00:08:34,200 >> তাই আমি উপায় কয়েক মধ্যে এটা করতে পারেন. 190 00:08:34,200 --> 00:08:35,610 আমি একেবারে malloc ব্যবহার করতে পারেন. 191 00:08:35,610 --> 00:08:38,980 কিন্তু আমি সপ্তাহে দুই থেকে ফিরে যেতে পারেন যখন আমি আভা প্রয়োজন 192 00:08:38,980 --> 00:08:39,620 অক্ষর. 193 00:08:39,620 --> 00:08:40,860 যে শুধু একটি অ্যারে. 194 00:08:40,860 --> 00:08:44,870 তাই আমাকে পরিবর্তে বাফার পুনরায় সংজ্ঞায়িত করা যাক 16 অক্ষরের একটি অ্যারের হবে. 195 00:08:44,870 --> 00:08:47,340 >> এবং এখন, যখন আমি বাফার পাস - 196 00:08:47,340 --> 00:08:49,940 এবং এই আমরা না হয় কিছু সপ্তাহে দুই সম্পর্কে কথা - 197 00:08:49,940 --> 00:08:53,730 কিন্তু আপনি এমন একটি অ্যারে হিসাবে বিবেচনা করতে পারেন এটি একটি ঠিকানা যদিও. 198 00:08:53,730 --> 00:08:56,390 আমরা দেখা করেছি টেকনিক্যালি,, তারা একটি সামান্য বিট বিভিন্ন. 199 00:08:56,390 --> 00:09:01,290 আপনি এটি পাস কিন্তু যদি scanf মনে না করা একটি অ্যারের নাম, কারণ কি 200 00:09:01,290 --> 00:09:05,030 আমাদের মূলত জন্য ঝনঝন করতে হবে যে অ্যারের নাম আচরণ 201 00:09:05,030 --> 00:09:08,280 16 বাইট খণ্ড ঠিকানা. 202 00:09:08,280 --> 00:09:09,550 >> তাই এই ভাল. 203 00:09:09,550 --> 00:09:12,110 এই এখন আমি আশা করতে পারেন এর মানে হল যে নিম্নোক্ত কাজ করুন. 204 00:09:12,110 --> 00:09:16,800 আমাকে একটি মুহূর্ত জন্য জুম আউট করা যাক এবং ঠিক আছে কম্পাইল scanf-2, করতে. 205 00:09:16,800 --> 00:09:19,390 এখন আমার সম্পর্কে স্ল্যাশ scanf-2 পেয়েছিলাম না দেওয়া. 206 00:09:19,390 --> 00:09:22,430 স্ট্রিং করুন. "হ্যালো." এবং এটা এই সময় কাজ করলো. 207 00:09:22,430 --> 00:09:26,020 >> কিন্তু কেউ একটি দৃশ্যকল্প উত্থাপন করতে পারেন যা এখনও এটি কাজ না হতে পারে? 208 00:09:26,020 --> 00:09:28,550 হ্যাঁ? 209 00:09:28,550 --> 00:09:30,640 16 অক্ষরের চেয়ে দীর্ঘতর কিছু. 210 00:09:30,640 --> 00:09:32,020 এবং প্রকৃতপক্ষে, আমরা হতে পারে একটি সামান্য আরো সুনির্দিষ্ট. 211 00:09:32,020 --> 00:09:36,540 আর তারপর 15 অক্ষর কিছু, সত্যিই আমরা মনে রাখা প্রয়োজন, কারণ 212 00:09:36,540 --> 00:09:39,920 আমরা যে ব্যাকস্ল্যাশ শূন্য প্রয়োজন পরোক্ষভাবে স্ট্রিং এর শেষে, 213 00:09:39,920 --> 00:09:42,950 যা একটি সরাইয়া scanf সাধারণত হবে আমাদের জন্য যত্ন নিতে. 214 00:09:42,950 --> 00:09:46,210 >> তাই আমার মত কিছু করতে যাক - 215 00:09:46,210 --> 00:09:48,040 কখনও কখনও আমরা ঠিক করতে পারেন যে মত এটি ছেড়ে. 216 00:09:48,040 --> 00:09:50,630 ঠিক আছে, তাই আমরা এখন প্রবর্তিত করেছি আমাদের সেগমেন্টেশন ফল্ট. 217 00:09:50,630 --> 00:09:51,000 কেন? 218 00:09:51,000 --> 00:09:54,940 আমি অধিক 15 টাইপ কারণ অক্ষর, এবং তাই আসলে আমরা করেছি 219 00:09:54,940 --> 00:09:58,280 স্পর্শ মেমরি যে আমি আসলে হবে না. 220 00:09:58,280 --> 00:10:00,180 >> তাই কি সত্যিই এখানে সমাধান? 221 00:10:00,180 --> 00:10:02,210 ভাল, আমরা একটি দীর্ঘ স্ট্রিং কি প্রয়োজন হলে? 222 00:10:02,210 --> 00:10:03,960 ভাল, আমরা হয়ত এটা 32 বাইট না. 223 00:10:03,960 --> 00:10:05,160 ওয়েল, এটা কি যথেষ্ট নয় তাহলে কি হবে? 224 00:10:05,160 --> 00:10:06,040 কিভাবে 64 বাইট? 225 00:10:06,040 --> 00:10:07,080 কি যে দীর্ঘ যথেষ্ট না হলে? 226 00:10:07,080 --> 00:10:09,640 কিভাবে 128 বা 200 বাইট? 227 00:10:09,640 --> 00:10:12,660 কি সত্যিই এখানে সমাধান সাধারণ ক্ষেত্রে, আমরা জানি না 228 00:10:12,660 --> 00:10:14,460 ব্যবহারকারী টাইপ করা যাচ্ছে কি আগাম? 229 00:10:14,460 --> 00:10:20,000 230 00:10:20,000 --> 00:10:23,050 >> এটা গাধা বড় ব্যথা শুধু ধরনের সৎ হবে, যা কেন 231 00:10:23,050 --> 00:10:29,050 CS50 লাইব্রেরি একটি কয়েক ডজন লাইন আছে সম্মিলিতভাবে বাস্তবায়ন যে কোড 232 00:10:29,050 --> 00:10:32,390 আমরা না একটি উপায় যে স্ট্রিং GetString অগ্রিম জানা আছে কি 233 00:10:32,390 --> 00:10:33,430 ব্যবহারকারী টাইপ করা যাচ্ছে. 234 00:10:33,430 --> 00:10:37,370 বিশেষ করে, যদি আপনি পিছনে তাকান cs50.c দুই সপ্তাহ আগে থেকে, আপনি দেখতে পাবেন 235 00:10:37,370 --> 00:10:40,480 যে GetString, আসলে আছে এই ভাবে scanf ব্যবহার করে না. 236 00:10:40,480 --> 00:10:43,720 বরঞ্চ, এটি একটি অক্ষর সার্চ একটি সময়ে. 237 00:10:43,720 --> 00:10:46,010 >> কারণ প্রায় এক চমৎকার জিনিস একটি অক্ষর পড়া আমরা করতে পারেন 238 00:10:46,010 --> 00:10:48,490 সবসময় নিজেদেরকে গ্যারান্টি অন্তত একটি গৃহস্থালি আছে. 239 00:10:48,490 --> 00:10:51,740 আমি নিতে তারপর একটি গৃহস্থালি ঘোষণা করতে পারেন শুধু এই সত্যিকারের শিশুর পদক্ষেপ 240 00:10:51,740 --> 00:10:54,380 একটি সময়ে একটি অক্ষর পড়া কীবোর্ড থেকে সময়. 241 00:10:54,380 --> 00:10:58,240 এবং তারপর, আপনি কি GetString, দেখতে পাবেন আছে, এটি রান আউট প্রতিটি সময় 242 00:10:58,240 --> 00:11:02,280 , মেমরি 16 বাইট বলে, এটি ব্যবহার করে malloc, অথবা একটি মামাতো ভাই উহার যাও 243 00:11:02,280 --> 00:11:06,810 পুরাতন কপি আরো মেমরি বরাদ্দ করা এর পরে নতুন, এবং বুকে - হাঁটা মধ্যে মেমরি 244 00:11:06,810 --> 00:11:09,900 বরাবর,, একটি সময়ে এক চরিত্র পেয়ে এবং এটা যে রান আউট যখন 245 00:11:09,900 --> 00:11:13,370 মেমরি খণ্ড, grabs দূরে ছোঁড়ার মেমরি বড় খণ্ড, পুরাতন কপি করা 246 00:11:13,370 --> 00:11:14,750 এক্সপ্লোর পরিচালনা, এবং পুনরাবৃত্তি করে. 247 00:11:14,750 --> 00:11:18,480 এবং এটি আসলে সত্যিই একটি ব্যাথা হিসাবে হিসাবে সহজ কিছু বাস্তবায়ন 248 00:11:18,480 --> 00:11:19,710 একজন ব্যবহারকারী থেকে ইনপুট পেয়ে. 249 00:11:19,710 --> 00:11:21,090 >> সুতরাং আপনি scanf ব্যবহার করতে পারেন. 250 00:11:21,090 --> 00:11:22,430 আপনি অন্যান্য অনুরূপ ফাংশন ব্যবহার করতে পারেন. 251 00:11:22,430 --> 00:11:25,420 এবং একটি পাঠ্যবই অনেক অনলাইন উদাহরণ করতে, কিন্তু তারা সব করছি 252 00:11:25,420 --> 00:11:27,210 ভালো সমস্যার ঝুঁকির মুখে. 253 00:11:27,210 --> 00:11:29,550 এবং পরিণামে, একটি segfault হচ্ছে ধরনের বিরক্তিকর হয়. 254 00:11:29,550 --> 00:11:30,680 এটি ব্যবহারকারীর জন্য ভালো নয়. 255 00:11:30,680 --> 00:11:33,560 >> কিন্তু সবচেয়ে খারাপ ক্ষেত্রে, কি আছে এটি মৌলিকভাবে আপনার করা 256 00:11:33,560 --> 00:11:37,160 ঝুঁকি কোড? 257 00:11:37,160 --> 00:11:39,250 আক্রমণের কিছু ধরনের, সম্ভাব্য. 258 00:11:39,250 --> 00:11:41,680 আমরা এক ধরনের আক্রমণ সম্পর্কে বললাম - স্ট্যাকের উদ্বেল. 259 00:11:41,680 --> 00:11:44,660 তবে সাধারণভাবে, আপনি অনুমতি দেওয়া করছি ওভারফ্লো একটি বাফার, যেমন আমরা একটি করেনি 260 00:11:44,660 --> 00:11:48,070 শুধু লেখা দিয়ে সপ্তাহ আগে দম্পতি, আরো স্ট্যাক "হ্যালো", আপনি 261 00:11:48,070 --> 00:11:52,330 প্রকৃতপক্ষে একটি, সম্ভাব্য, দায়িত্ব নিতে পারেন কম্পিউটার, বা অন্তত তথ্য পেতে যে 262 00:11:52,330 --> 00:11:53,510 আপনি অন্তর্গত নয়. 263 00:11:53,510 --> 00:11:55,970 >> আমরা কেন এত সংক্ষেপে, এই হল যারা প্রশিক্ষণ চাকার. 264 00:11:55,970 --> 00:11:59,090 কিন্তু এখন, আমরা তাদের বন্ধ করা শুরু আমাদের প্রোগ্রাম আর প্রয়োজন, 265 00:11:59,090 --> 00:12:00,610 ব্যবহারকারী থেকে অগত্যা, ইনপুট. 266 00:12:00,610 --> 00:12:03,960 কিন্তু সমস্যা ক্ষেত্রে, ছয় সেট আপনার ইনপুট একটি বিশাল থেকে আসা হবে 267 00:12:03,960 --> 00:12:07,520 150 সঙ্গে অভিধান ফাইল কিছু অদ্ভুত হাজার শব্দ. 268 00:12:07,520 --> 00:12:10,330 >> সুতরাং আপনি সম্পর্কে চিন্তা করতে হবে না ব্যবহারকারীর নির্বিচারে ইনপুট. 269 00:12:10,330 --> 00:12:13,720 আমরা আপনাকে কিছু অনুমিতি আপনাকে যে ফাইল সম্পর্কে. 270 00:12:13,720 --> 00:12:20,340 পয়েন্টার বা scanf উপর কোন প্রশ্ন অথবা সাধারণ ব্যবহারকারীর ইনপুট? 271 00:12:20,340 --> 00:12:24,450 >> ঠিক আছে, তাই এক সময়ে তারপর একটি দ্রুত বর্ণন দুই সপ্তাহ আগে থেকে বিষয় নিতে. 272 00:12:24,450 --> 00:12:28,590 এবং যে একটি struct এই ধারণা ছিল. 273 00:12:28,590 --> 00:12:34,180 নেই যে - একটি এই ধারণা কি ছিল, যা struct? 274 00:12:34,180 --> 00:12:35,430 Struct আমাদের জন্য কি করবেন? 275 00:12:35,430 --> 00:12:39,280 276 00:12:39,280 --> 00:12:39,860 >> ব্যাখ্যা করুন - 277 00:12:39,860 --> 00:12:41,710 দুঃখিত? 278 00:12:41,710 --> 00:12:42,820 একটি পরিবর্তনশীল টাইপ সংজ্ঞায়িত. 279 00:12:42,820 --> 00:12:44,410 সুতরাং সাজানোর. 280 00:12:44,410 --> 00:12:46,180 আমরা আসলে দুটি বিষয় মিশ্রন করছি. 281 00:12:46,180 --> 00:12:49,510 Typedef সঙ্গে সুতরাং, যে আমরা করতে পারেন প্রত্যাহার একটি মত, আমাদের নিজস্ব একটি টাইপ ডিক্লেয়ার 282 00:12:49,510 --> 00:12:51,500 গৃহস্থালি * জন্য স্ট্রিং মত সমার্থক. 283 00:12:51,500 --> 00:12:56,200 কিন্তু typedef এবং struct ব্যবহার করে, আমরা করতে পারেন সত্যিই আমাদের নিজস্ব ডাটা স্ট্রাকচার নির্মাণ করুন. 284 00:12:56,200 --> 00:12:59,600 >> উদাহরণস্বরূপ, আমি ফিরে যেতে হলে gedit মধ্যে এখানে শুধু একটা মুহূর্ত জন্য, এবং আমি এগিয়ে যান 285 00:12:59,600 --> 00:13:08,230 এবং কিছু পছন্দ করি, আমার সংরক্ষণ করতে দিন এই হিসাবে, structs.c, এর বলা যাক 286 00:13:08,230 --> 00:13:10,840 সাময়িকভাবে, আমি যাচ্ছি এগিয়ে যান এবং অন্তর্ভুক্ত 287 00:13:10,840 --> 00:13:14,360 standardio.h, int প্রধান অকার্যকর. 288 00:13:14,360 --> 00:13:18,960 এবং তারপর এখানে, আমি চাই যে অনুমান করা সঞ্চয় যে একটি প্রোগ্রাম লিখুন 289 00:13:18,960 --> 00:13:21,840 একাধিক থেকে একাধিক ছাত্র ঘর, উদাহরণস্বরূপ. 290 00:13:21,840 --> 00:13:24,430 তাই এটি একটি registrarial মত কিছু ধরণের ডাটাবেস. 291 00:13:24,430 --> 00:13:29,550 >> আমি নাম এক ছাত্র প্রয়োজন, তাই যদি আমি , গৃহস্থালির কাজ * নাম * ভালো কিছু করতে পারে 292 00:13:29,550 --> 00:13:31,570 এবং আমি ভালো কিছু করতে হবে - 293 00:13:31,570 --> 00:13:34,410 আসলে, এর CS50 লাইব্রেরি ব্যবহার করতে দিতে শুধু একটা মুহূর্ত জন্য এই একটি করতে 294 00:13:34,410 --> 00:13:38,380 একটু সহজ, তাই আমরা ধার করতে পারেন কোড লাইনের যারা অত্যাধিক. 295 00:13:38,380 --> 00:13:39,340 যাক এটা সহজ রাখা হচ্ছে. 296 00:13:39,340 --> 00:13:42,610 আমরা স্ট্রিং যাব এবং এখন GetString. 297 00:13:42,610 --> 00:13:47,420 >> তাই আমি নাম সংরক্ষিত করেছি যে এখন দাবি কিছু ছাত্র এবং বাড়ি 298 00:13:47,420 --> 00:13:50,240 কেবল ভেরিয়েবল ব্যবহার করে কিছু ছাত্র, আমরা কি এবং সপ্তাহে এক. চাই 299 00:13:50,240 --> 00:13:52,370 কিন্তু আমি এখন সমর্থন চাইছেন একাধিক ছাত্র. 300 00:13:52,370 --> 00:13:58,460 ঠিক আছে, তাই আমার সহজাত বুদ্ধির কাজ করতে হয় স্ট্রিং NAME2, GetString,, স্ট্রিং পায় 301 00:13:58,460 --> 00:14:01,370 house2 GetString, পায়. 302 00:14:01,370 --> 00:14:05,850 এবং তারপর আমাদের তৃতীয় ছাত্র, name3 GetString, না যাক. 303 00:14:05,850 --> 00:14:09,170 >> ঠিক আছে, তাই এই আশা আকর্ষণীয় হয় মূঢ় ধরনের হিসাবে আপনি, 304 00:14:09,170 --> 00:14:11,580 এই প্রক্রিয়া সত্যিই না কারণ শেষ পর্যন্ত যাচ্ছে, এবং এটা ঠিক যাচ্ছে 305 00:14:11,580 --> 00:14:13,130 আমার কোড খারাপ বানাতে এবং খারাপ থেকে আরও খারাপ. 306 00:14:13,130 --> 00:14:14,810 কিন্তু আমরা সপ্তাহে দুই খুবই এই মীমাংসিত. 307 00:14:14,810 --> 00:14:19,450 আমাদের অপেক্ষাকৃত পরিষ্কার সমাধান কী ছিল আমরা একাধিক ভেরিয়েবল ছিল 308 00:14:19,450 --> 00:14:23,580 একই ডাটা সমস্ত সম্পর্কিত যে ধরন, কিন্তু আছে আমরা এই atrocious জগাখিচুড়ি চান না 309 00:14:23,580 --> 00:14:26,870 একইভাবে নামে ভেরিয়েবল? 310 00:14:26,870 --> 00:14:30,060 আমরা এর পরিবর্তে কি? 311 00:14:30,060 --> 00:14:31,260 >> তাই আমি আমি কয়েক জায়গায় শোনা যায়. 312 00:14:31,260 --> 00:14:32,590 আমরা একটি অ্যারের ছিল. 313 00:14:32,590 --> 00:14:37,110 আপনি একাধিক দৃষ্টান্ত চান কিছু, কেন আমরা এই সব পরিষ্কার না 314 00:14:37,110 --> 00:14:39,540 আপ এবং শুধু আমাকে দিতে বলে, অ্যারের নাম বলা হয়? 315 00:14:39,540 --> 00:14:41,640 >> এবং এখন জন্য, এর হার্ড কোড 3 যাক. 316 00:14:41,640 --> 00:14:44,450 এবং তারপর আমাকে আরেকটা অ্যারের দিতে ঘর বলা হয়, এবং জন্য আমাকে 317 00:14:44,450 --> 00:14:45,800 এখন হার্ড কোড 3. 318 00:14:45,800 --> 00:14:49,220 এবং আমি ব্যাপক পরিষ্কার করেছি আমি তৈরি বিশৃঙ্খল. 319 00:14:49,220 --> 00:14:52,400 এখন, আমি এখনো হার্ড 3 কোডেড, কিন্তু আছে করেছি, এমনকি 3 পরিবর্তনশীল থেকে আসতে পারে 320 00:14:52,400 --> 00:14:54,350 ব্যবহারকারী বা argv, বা মত. 321 00:14:54,350 --> 00:14:55,720 তাই এই ইতিমধ্যে ক্লিনার. 322 00:14:55,720 --> 00:15:00,100 >> কিন্তু কি এই বিষয়ে বিরক্তিকর হয় যে এখন, যদিও একটি নাম একরকম হয় 323 00:15:00,100 --> 00:15:02,280 মৌলিকভাবে লিঙ্ক একটি ছাত্র এর ঘর - 324 00:15:02,280 --> 00:15:04,720 এটা যে আমি সত্যিই একটি ছাত্র এর প্রতিনিধিত্ব করতে চান - 325 00:15:04,720 --> 00:15:08,080 আমি এখন সমান্তরাল এমন দু 'অ্যারে আছে তারা যে অর্থে 326 00:15:08,080 --> 00:15:13,930 একই আকার, এবং নাম বন্ধনী 0 ঘর বন্ধনী 0 সম্ভবতঃ মানচিত্র, 327 00:15:13,930 --> 00:15:16,600 এবং নাম বন্ধনী 1 মানচিত্রগুলি ঘর বন্ধনী 1. 328 00:15:16,600 --> 00:15:19,280 অন্য কথায়, যে ছাত্র জীবন যে ঘর, এবং যে অন্য মোট ছাত্র, 329 00:15:19,280 --> 00:15:20,530 অন্য যে বাড়িতে বসবাস. 330 00:15:20,530 --> 00:15:23,720 তবে নিশ্চয় এই হতে পারে এমনকি আরো পরিচ্ছন্নভাবে কাজ. 331 00:15:23,720 --> 00:15:24,990 >> ওয়েল, এটা করতে পারেন, আসলে. 332 00:15:24,990 --> 00:15:28,730 এবং আমাকে এগিয়ে যান এবং খুলুন structs.h আপ, এবং আপনি পাবেন 333 00:15:28,730 --> 00:15:31,130 এখানে এই ধারণা দেখুন. 334 00:15:31,130 --> 00:15:34,905 আপনি, আমি typedef ব্যবহার করেছি যে বিজ্ঞপ্তি আগে ঘোষণা করা একটি মুহূর্ত alluded আমাদের 335 00:15:34,905 --> 00:15:35,570 নিজস্ব তথ্য টাইপ. 336 00:15:35,570 --> 00:15:39,660 কিন্তু আমি এই অন্য শব্দ ব্যবহার করছি struct নামক যা সম্পর্কে একটি নতুন দেয় 337 00:15:39,660 --> 00:15:40,790 ডাটা স্ট্রাকচার. 338 00:15:40,790 --> 00:15:43,980 >> এবং আমি দাবি এই তথ্য কাঠামো যাচ্ছে এর ভিতরে দুটি জিনিস আছে 339 00:15:43,980 --> 00:15:47,060 এটা - নাম বলা একটি স্ট্রিং, এবং ঘর নামক একটি পংক্তি. 340 00:15:47,060 --> 00:15:49,820 এবং আমি যাচ্ছি নাম দিতে এই তথ্য গঠন যাচ্ছে 341 00:15:49,820 --> 00:15:51,005 ছাত্র বলা হবে. 342 00:15:51,005 --> 00:15:54,030 আমি, এটা আমি চাই কিছু বলতে পেরেছিলাম কিন্তু এই শব্দার্থগতভাবে করতে 343 00:15:54,030 --> 00:15:55,810 আমার মন আমার ইন্দ্রিয়. 344 00:15:55,810 --> 00:15:59,160 >> সুতরাং এখন, আমি একটি ভাল সংস্করণ খুলে প্রোগ্রাম আমি লিখতে শুরু 345 00:15:59,160 --> 00:16:00,390 আছে, আমাকে উপরে স্ক্রল যাক. 346 00:16:00,390 --> 00:16:03,190 এবং কিছু কোড আরও লাইন আছে এখানে, কিন্তু আমার ফোকাস যাক 347 00:16:03,190 --> 00:16:04,160 এক মুহূর্ত. 348 00:16:04,160 --> 00:16:07,790 আমি একটি ধ্রুবক তথাকথিত ছাত্র ঘোষণা করেছি এবং হার্ড জন্য এখন 3 কোডেড. 349 00:16:07,790 --> 00:16:11,110 কিন্তু এখন, বিজ্ঞপ্তি কিভাবে ক্লিন আমার কোড পেতে শুরু. 350 00:16:11,110 --> 00:16:15,030 >> লাইন 22, আমি ঘোষণা ছাত্রদের অ্যারে. 351 00:16:15,030 --> 00:16:18,760 এবং ছাত্র দৃশ্যত যে বিজ্ঞপ্তি এখন একটি ডাটা টাইপ. 352 00:16:18,760 --> 00:16:23,360 এই ফাইলটি শীর্ষে, বিজ্ঞপ্তি কারণ আমি যে হেডার ফাইলটি অন্তর্ভুক্ত করেছেন 353 00:16:23,360 --> 00:16:24,820 আমি শুধু একটা মুহূর্ত আগে গুটান হয়. 354 00:16:24,820 --> 00:16:28,820 এবং যে হেডার ফাইলটি বেশ সহজভাবে ছিল একজন ছাত্র এই সংজ্ঞা. 355 00:16:28,820 --> 00:16:32,470 >> সুতরাং এখন, আমি আমার নিজস্ব তথ্য তৈরি করেছি টাইপ যে সি বছর লেখক 356 00:16:32,470 --> 00:16:33,890 আগে আগাম মনে করা হয়নি. 357 00:16:33,890 --> 00:16:34,570 কিন্তু কোন সমস্যা নেই. 358 00:16:34,570 --> 00:16:35,870 আমি নিজেকে করতে পারেন. 359 00:16:35,870 --> 00:16:39,050 তাই এই, ছাত্র নামক একটি অ্যারে যার সদস্যদের প্রতিটি 360 00:16:39,050 --> 00:16:41,100 একটি ছাত্র স্ট্রাকচার. 361 00:16:41,100 --> 00:16:44,270 এবং আমি যারা তিন চান অ্যারের মধ্যে. 362 00:16:44,270 --> 00:16:46,030 >> এবং এখন, বাকি কি আছে এই প্রোগ্রাম কি? 363 00:16:46,030 --> 00:16:47,550 আমি একটু নির্বিচারে কিছু প্রয়োজন. 364 00:16:47,550 --> 00:16:51,450 সুতরাং অনলাইনে 24 অনওয়ার্ড থেকে, আমি 0 থেকে 3 থেকে বারবার. 365 00:16:51,450 --> 00:16:54,000 আমি তারপর জন্য ব্যবহারকারীকে জিজ্ঞাসা ছাত্র এর নাম. 366 00:16:54,000 --> 00:16:56,110 এবং তারপর আমি আগে GetString ব্যবহার করুন. 367 00:16:56,110 --> 00:16:59,410 তারপর আমি, ছাত্র এর ঘর জন্য অনুরোধ এবং আমি আগের GetString ব্যবহার করুন. 368 00:16:59,410 --> 00:17:01,780 >> কিন্তু বিজ্ঞপ্তি - সামান্য নতুন সিনট্যাক্স সমাচার - 369 00:17:01,780 --> 00:17:07,010 আমি-তম ছাত্র এখনও ইনডেক্স করতে পারেন কিন্তু আমি নির্দিষ্ট তথ্য এ কিভাবে পেতে পারি 370 00:17:07,010 --> 00:17:08,354 struct ক্ষেত্রের ভিতর? 371 00:17:08,354 --> 00:17:11,770 ওয়েল, দৃশ্যত: কি নতুন বাক্য গঠন সমাচার? 372 00:17:11,770 --> 00:17:13,339 এটি শুধু বিন্দু অপারেটরের. 373 00:17:13,339 --> 00:17:14,510 >> আমরা সত্যিই এই আগে দেখা যায় না করেছি. 374 00:17:14,510 --> 00:17:17,819 আপনি থাকেন তাহলে আপনি pset পাঁচ এটা দেখা করেছি বিটম্যাপ ফাইল সঙ্গে ইতিমধ্যে dived. 375 00:17:17,819 --> 00:17:22,372 কিন্তু বিন্দু মাত্র এই ভিতর মানে struct বা একাধিক ক্ষেত্র, বিন্দু দিতে 376 00:17:22,372 --> 00:17:24,510 নাম, বা আমার সম্পর্কে বিন্দু বাড়ি দিতে. 377 00:17:24,510 --> 00:17:28,690 Struct ভিতরে যেতে মানে এবং যারা নির্দিষ্ট ক্ষেত্র পেতে. 378 00:17:28,690 --> 00:17:30,200 >> এই প্রোগ্রাম বাকি কী কাজ করে? 379 00:17:30,200 --> 00:17:31,190 এটা যে সব সেক্সি না. 380 00:17:31,190 --> 00:17:34,640 আমি আবার 0 থেকে 3 থেকে বারবার বিজ্ঞপ্তি, এবং আমি কেবল একটি ইংরেজি নির্মাণ 381 00:17:34,640 --> 00:17:40,500 তাই এবং তাই মত ফ্রেজ অমুক হয় থেকে বিন্দু নামে ক্ষণস্থায়ী যেমন একটি ঘর, 382 00:17:40,500 --> 00:17:43,320 আমি-তম ছাত্র এবং তাদের ঘর হিসাবে ভাল. 383 00:17:43,320 --> 00:17:47,560 >> এবং তারপর সর্বশেষে, এখন আমরা পেতে শুরু করব আমরা এখন যে এই বিষয়ে পায়ূ, 384 00:17:47,560 --> 00:17:49,580 কি malloc এবং সাথে পরিচিত অন্যান্য কার্যাবলী হয়েছে 385 00:17:49,580 --> 00:17:50,570 এই সব সময় করছেন. 386 00:17:50,570 --> 00:17:54,220 কেন আমি উভয় নাম মুক্ত আছে এবং ঘর, যদিও আমি 387 00:17:54,220 --> 00:17:56,960 malloc কল না? 388 00:17:56,960 --> 00:17:58,020 >> GetString, করেনি. 389 00:17:58,020 --> 00:18:00,930 এবং যে জন্য মলিন সামান্য গোপন ছিল কয়েক সপ্তাহ, কিন্তু GetString, আছে 390 00:18:00,930 --> 00:18:03,530 সর্বাঙ্গে মেমরি লিক হয়েছে এ পর্যন্ত সব সেমিস্টারে রাখুন. 391 00:18:03,530 --> 00:18:05,990 এবং valgrand অবশেষে পাবেন আমাদের এই প্রকাশ করা. 392 00:18:05,990 --> 00:18:10,730 >> আমি জানি কারণ এটি একটি বড় চুক্তি না আমি সহজভাবে নাম মুক্ত করতে পারেন 393 00:18:10,730 --> 00:18:15,750 এবং ঘর, যদিও টেকনিক্যালি, আপনি সুপার, সুপার নিরাপদ হবে, আমি হওয়া উচিত 394 00:18:15,750 --> 00:18:17,890 কিছু ত্রুটি করছেন এখানে চেক করা হচ্ছে. 395 00:18:17,890 --> 00:18:19,040 আপনার সহজাত বুদ্ধির কি বলার আছে? 396 00:18:19,040 --> 00:18:22,480 আমি কি চেক করা উচিত আমি কি মুক্ত আগে 397 00:18:22,480 --> 00:18:25,470 স্ট্রিং, ওরফে, যা একটি গৃহস্থালি *? 398 00:18:25,470 --> 00:18:33,460 >> আমি সত্যিই চেক করা উচিত যদি ছাত্র বন্ধনী আমি বিন্দু নাম না 399 00:18:33,460 --> 00:18:34,840 সমান নাল. 400 00:18:34,840 --> 00:18:40,400 তারপর, এটা এগিয়ে এবং বিনামূল্যে যেতে ওকে হবেন যে পয়েন্টার, এবং একই বা ভিন্ন 401 00:18:40,400 --> 00:18:41,160 এক হিসাবে ভাল. 402 00:18:41,160 --> 00:18:46,860 ছাত্র বন্ধনী আমি বিন্দু ঘর না হলে নাল সমান, এখন এই রক্ষা করবে 403 00:18:46,860 --> 00:18:52,520 কোণার ক্ষেত্রে বিরুদ্ধে যা GetString, নাল মত কিছু ফেরৎ. 404 00:18:52,520 --> 00:18:57,310 এবং আমরা printf, পাবেন, একটি মুহূর্ত আগে দেখেছি শুধু বলছে এখানে আমাদের রক্ষা 405 00:18:57,310 --> 00:18:58,990 নাল, যা অদ্ভুত চেহারা যাচ্ছে. 406 00:18:58,990 --> 00:19:02,340 কিন্তু অন্তত এটা segfault হবে না আমরা দেখা আছে. 407 00:19:02,340 --> 00:19:05,990 >> আচ্ছা, আমাকে এখানে অন্য একটি জিনিস না দেওয়া. structs-0 একটি মূঢ় প্রোগ্রাম ধরনের 408 00:19:05,990 --> 00:19:09,700 আমি তখন এই সব তথ্য লিখুন, এবং কারণ প্রোগ্রাম শেষ এটি একবার হারিয়ে এর. 409 00:19:09,700 --> 00:19:10,940 কিন্তু আমাকে এগিয়ে যান এবং এই কাজ করা যাক. 410 00:19:10,940 --> 00:19:12,830 আমার সম্পর্কে টার্মিনাল করা যাক একটি বিট বড় জানালা. 411 00:19:12,830 --> 00:19:17,000 আমাকে structs-1 যাক যা এই একটি নতুন সংস্করণ. 412 00:19:17,000 --> 00:19:18,520 >> আমি একটি সামান্য বিট জুম করব. 413 00:19:18,520 --> 00:19:21,620 এবং এখন আমার সম্পর্কে বিন্দু চালানো যাক structs-1 কাট. 414 00:19:21,620 --> 00:19:22,590 ছাত্র এর নাম - 415 00:19:22,590 --> 00:19:31,500 ডেভিড মাথের,, রব কার্কল্যান্ড করতে আসুন Lauren Leverett করতে আসুন. 416 00:19:31,500 --> 00:19:33,650 কি আকর্ষণীয় এখন বিজ্ঞপ্তি - 417 00:19:33,650 --> 00:19:35,540 এবং আমি শুধুমাত্র এই কারণ জানতে আমি প্রোগ্রাম লেখেন - 418 00:19:35,540 --> 00:19:38,930 একটি ফাইল আমার বর্তমান নেভিগেশন এখন আছে ডিরেক্টরি students.csv বলা হয়. 419 00:19:38,930 --> 00:19:40,420 আপনি কিছু দেখা হতে পারে বাস্তব জগতে এই. 420 00:19:40,420 --> 00:19:42,980 >> একটি CSV ফাইল কি? 421 00:19:42,980 --> 00:19:44,170 মানগুলি কমা দ্বারা পৃথক. 422 00:19:44,170 --> 00:19:46,670 এটি একটি দরিদ্র মানুষ এর মত সাজানোর এর একটি এক্সেল ফাইলের সংস্করণ. 423 00:19:46,670 --> 00:19:50,580 এটা সারি এবং কলাম একটি টেবিল যে আপনি, এক্সেল মত একটি প্রোগ্রাম খুলতে পারে 424 00:19:50,580 --> 00:19:51,800 একটি ম্যাক বা নাম্বার. 425 00:19:51,800 --> 00:19:55,180 >> এবং আমি gedit নেভিগেশন এখানে এই ফাইল খুলতে হলে, বিজ্ঞপ্তি - ও সংখ্যা নেই. 426 00:19:55,180 --> 00:19:57,360 যে শুধু বলছে gedit এর আমার সম্পর্কে লাইন নম্বর. 427 00:19:57,360 --> 00:19:59,740 এই প্রথম লাইন লক্ষ্য করুন ফাইল ডেভিড মাথের হয়. 428 00:19:59,740 --> 00:20:01,450 পরের লাইন রব কমা কার্কল্যান্ড হয়. 429 00:20:01,450 --> 00:20:04,170 এবং তৃতীয় লাইন Lauren হয় কমা Leverett. 430 00:20:04,170 --> 00:20:05,480 >> তাই আমি কি তৈরি হয়েছে? 431 00:20:05,480 --> 00:20:09,580 আমি এখন একটি C প্রোগ্রাম লিখিত করেছি কার্যকরভাবে স্প্রেডশীট তৈরি করতে পারেন 432 00:20:09,580 --> 00:20:11,840 একটি খোলা যাবে এক্সেল এর মত প্রোগ্রাম. 433 00:20:11,840 --> 00:20:15,520 নেই যে সব বাধ্যকারী একটি তথ্য সংকলন, কিন্তু আছে আপনি অনেক বড় অংশ থাকে তাহলে, 434 00:20:15,520 --> 00:20:18,440 আসলে আপনি চান যে তথ্য নিপূণভাবে এবং গ্রাফ জন্য 435 00:20:18,440 --> 00:20:21,260 চাই, এই সম্ভবত এক যে তথ্য তৈরি করার উপায়. 436 00:20:21,260 --> 00:20:25,370 উপরন্তু, CSVs সাধারণ আসলে সুপার শুধু সহজ ডেটা সঞ্চয় করার জন্য - 437 00:20:25,370 --> 00:20:28,940 ইয়াহু ফিন্যান্স, উদাহরণস্বরূপ, আপনি পেতে হলে তাদের তথাকথিত মাধ্যমে স্টক কোট 438 00:20:28,940 --> 00:20:33,180 এপিআই, যা আপনাকে বিনামূল্যে সেবা বর্তমান সময় পর্যন্ত টু ডেট মাল 439 00:20:33,180 --> 00:20:35,650 কোম্পানীর জন্য কোট, তারা পিঠ তথ্য দিতে 440 00:20:35,650 --> 00:20:37,800 সুপার সহজ CSV বিন্যাসে. 441 00:20:37,800 --> 00:20:39,380 >> সুতরাং আমরা যে কিভাবে করবেন? 442 00:20:39,380 --> 00:20:42,530 ওয়েল, এই প্রোগ্রাম এর সবচেয়ে বিজ্ঞপ্তি প্রায় একই. 443 00:20:42,530 --> 00:20:46,870 কিন্তু এখানে নিচে লক্ষ্য, বরং মুদ্রণ লাইন 35 ছাত্র আউট, 444 00:20:46,870 --> 00:20:51,040 অনওয়ার্ড, আমি সঞ্চয় করছি যে দাবি ডিস্কের মধ্যে ছাত্র, তাই একটি ফাইল সংরক্ষণ. 445 00:20:51,040 --> 00:20:53,630 >> তাই আমি একটি ফাইল * ঘোষণা করছি বিজ্ঞপ্তি - 446 00:20:53,630 --> 00:20:57,260 এখন, এই সি একটি anomaly ধরনের যাই হোক না কেন কারণে, ফাইল, সব বড় হাতের অক্ষর না 447 00:20:57,260 --> 00:21:00,690 যা অধিকাংশ অন্যান্য তথ্য ধরনের মত নয় সি কিন্তু এটি একটি বিল্ট ইন 448 00:21:00,690 --> 00:21:02,320 ডাটা টাইপ, ফাইল *. 449 00:21:02,320 --> 00:21:05,900 এবং আমি একটি ফাইল একটি পয়েন্টার ঘোষণা করছি আপনি যে মনে করতে পারেন কিভাবে হয়. 450 00:21:05,900 --> 00:21:08,070 >> fopen খোলা ফাইল মানে. 451 00:21:08,070 --> 00:21:09,470 আপনি কি ফাইল খুলতে চান? 452 00:21:09,470 --> 00:21:12,620 আমি একটি ফাইল খুলতে চান আমি আছি যে ইচ্ছামত students.csv কল. 453 00:21:12,620 --> 00:21:14,480 আমি চাই যে কিছু বলতে পেরেছিলাম. 454 00:21:14,480 --> 00:21:15,200 >> এবং তারপর একটি অনুমান নিতে. 455 00:21:15,200 --> 00:21:18,960 দ্বিতীয় যুক্তি কি আছে fopen সম্ভবত মানে? 456 00:21:18,960 --> 00:21:21,480 রাইট, লেখার জন্য W, পারা পাঠযোগ্য জন্য কিছু করা. 457 00:21:21,480 --> 00:21:24,120 যদি পরিশেষে যোগ করার জন্য, কিন্তু আছে আপনি সারি এবং না যোগ করতে চান 458 00:21:24,120 --> 00:21:25,200 গোটা ব্যাপারটাই মুছে ফেলা হয়. 459 00:21:25,200 --> 00:21:28,005 >> কিন্তু আমি এই ফাইলটি তৈরি করতে চান একবার, তাই আমি মূল্যউদ্ধৃতি unquote W ব্যবহার করব. 460 00:21:28,005 --> 00:21:31,880 এবং আমি পড়া থাকার থেকে শুধু জানি ডকুমেন্টেশন, অথবা man পৃষ্ঠা. 461 00:21:31,880 --> 00:21:35,100 ফাইল নাল না - যদি অন্য কথায়, কিছুই ভুল হলে - 462 00:21:35,100 --> 00:21:37,820 আমার সম্পর্কে পুনরুক্তি উপর যাক 0 থেকে 3 ছাত্রদের. 463 00:21:37,820 --> 00:21:40,410 >> এবং এখন কিছু আছে বিজ্ঞপ্তি কখনো তাই কিছুটা ভিন্ন 464 00:21:40,410 --> 00:21:42,110 এখানে লাইন 41. 465 00:21:42,110 --> 00:21:42,960 এটা printf, না. 466 00:21:42,960 --> 00:21:46,530 এটা printf, ফাইলের জন্য fprintf এর. 467 00:21:46,530 --> 00:21:47,790 তাই এটা করতে লিখুন যাচ্ছে. 468 00:21:47,790 --> 00:21:48,860 কোন ফাইল? 469 00:21:48,860 --> 00:21:53,630 যার পয়েন্টার আপনার নির্দিষ্ট এক প্রথম আর্গুমেন্ট হিসাবে. 470 00:21:53,630 --> 00:21:55,940 >> তারপর আমরা একটি ফরম্যাট স্ট্রিং উল্লেখ করুন. 471 00:21:55,940 --> 00:21:59,660 তারপর আমরা চাই পংক্তি উল্লেখ করুন প্রথম শতাংশ গণ জন্য প্লাগ, এবং 472 00:21:59,660 --> 00:22:04,320 তারপর অন্য পরিবর্তনশীল বা দ্বিতীয় শতাংশ গুলি. 473 00:22:04,320 --> 00:22:06,760 তারপর আমরা fclose ফাইলটি বন্ধ করুন. 474 00:22:06,760 --> 00:22:09,380 আমি যদিও, আগে হিসাবে মেমরি মুক্ত আর আমি ফিরে যান এবং যোগ করুন 475 00:22:09,380 --> 00:22:10,540 নাল জন্য কিছু পরীক্ষা করা হবে. 476 00:22:10,540 --> 00:22:12,090 >> এবং যে এটি. 477 00:22:12,090 --> 00:22:16,960 fopen, fprintf, fclose সম্পর্কে দেয় টেক্সট ফাইল তৈরি করার ক্ষমতা. 478 00:22:16,960 --> 00:22:19,640 এখন, আপনি সমস্যা সেট পাঁচটি দেখতে পাবেন ছবি জড়িত থাকে, যা আপনি ব্যবহার করা হবে 479 00:22:19,640 --> 00:22:20,990 বাইনারি ফাইল পরিবর্তে. 480 00:22:20,990 --> 00:22:24,200 কিন্তু মৌলিকভাবে, ধারণা, একই যদিও আপনি পাবেন ফাংশন 481 00:22:24,200 --> 00:22:28,710 একটি সামান্য বিট ভিন্ন দেখুন. 482 00:22:28,710 --> 00:22:32,580 >> ঘূর্ণিবায়ু সফর, কিন্তু আপনি পাবেন ফাইলের সাথে সব খুব পরিচিত I/O-- 483 00:22:32,580 --> 00:22:34,960 ইনপুট এবং আউটপুট - পাঁচ pset সঙ্গে. 484 00:22:34,960 --> 00:22:38,607 এবং কোন প্রশ্ন এখানে প্রাথমিক বুনিয়াদি? 485 00:22:38,607 --> 00:22:39,857 হ্যাঁ? 486 00:22:39,857 --> 00:22:41,880 487 00:22:41,880 --> 00:22:43,710 >> আপনি কি একটি নাল মান মুক্ত করার চেষ্টা করুন তাহলে কি হবে? 488 00:22:43,710 --> 00:22:48,880 বিনামূল্যে একটি অর্জিত হয়েছে, যদি না আমি বিশ্বাস করি একটু বেশি ব্যবহারকারী বান্ধব, আপনি যা করতে পারেন 489 00:22:48,880 --> 00:22:49,890 সম্ভাব্য segfault. 490 00:22:49,890 --> 00:22:54,160 আমি না, কারণ এটা null পাসিং খারাপ মুক্ত বিশ্বাস করি, আপনি পরীক্ষা করার জন্য বিরক্তির 491 00:22:54,160 --> 00:22:57,330 এটা সম্ভাব্য একটি বর্জ্য হবে, কারণ এটি জন্য নিজেই কি জন্য সময় 492 00:22:57,330 --> 00:22:59,022 বিশ্বের সবাই. 493 00:22:59,022 --> 00:23:00,590 ভাল প্রশ্ন, যদিও. 494 00:23:00,590 --> 00:23:04,300 >> ঠিক আছে, এই ধরনের পায়, তাই আমাদের একটা মজার বিষয়. 495 00:23:04,300 --> 00:23:07,010 সমস্যা সেট থিম পাঁচ ফরেনসিক হয়. 496 00:23:07,010 --> 00:23:08,420 অন্তত একটি অংশ এর সমস্যা সেট. 497 00:23:08,420 --> 00:23:12,030 ফরেনসিক সাধারণভাবে বোঝায় যে পারে বা তথ্য পুনরুদ্ধার 498 00:23:12,030 --> 00:23:14,110 মুছে দেওয়া হয়েছে না পারে ইচ্ছাকৃতভাবে. 499 00:23:14,110 --> 00:23:18,680 এবং তাই আমি একটি দ্রুত দিতে চাই কি স্বাদ সত্যিই সব যাচ্ছে 500 00:23:18,680 --> 00:23:21,230 নীচে এই সময় আপনার কম্পিউটার সম্পর্কে ফণা. 501 00:23:21,230 --> 00:23:23,960 >> উদাহরণস্বরূপ, আপনি ভিতরে থাকে তাহলে, আপনার ল্যাপটপ বা আপনার ডেস্কটপ কম্পিউটারে একটি 502 00:23:23,960 --> 00:23:28,040 হার্ড ড্রাইভ, এটা হয় একটি যান্ত্রিক এর আসলে ঘূর্ণন যে ডিভাইস - 503 00:23:28,040 --> 00:23:31,650 platters বলা বিজ্ঞপ্তি জিনিষ আছে বেশ যে মত কি আমি 504 00:23:31,650 --> 00:23:34,540 ঠিক, যদিও এখানে পর্দায় আপ ছিল এই ক্রমবর্ধমান পুরানো স্কুল হয়. 505 00:23:34,540 --> 00:23:37,370 এই তিনটি এবং একটি অর্ধ ইঞ্চি হার্ড ড্রাইভ. 506 00:23:37,370 --> 00:23:40,070 এবং তিনটি এবং একটি অর্ধ ইঞ্চি বোঝায় আপনি এটি ইনস্টল করার সময় জিনিস সঙ্গে 507 00:23:40,070 --> 00:23:40,890 একটি কম্পিউটার. 508 00:23:40,890 --> 00:23:44,890 >> এখন আপনার ল্যাপটপে আপনি অনেক বলছি কঠিন রাষ্ট্র ড্রাইভ, বা SSDs আছে 509 00:23:44,890 --> 00:23:46,260 যা অংশ চলন্ত নেই. 510 00:23:46,260 --> 00:23:49,170 তারা উপস্থিত RAM-র মত এবং কম ভালো আছেন এই যান্ত্রিক ডিভাইস. 511 00:23:49,170 --> 00:23:51,450 কিন্তু ধারনা, এখনও একই অবশ্যই তারা সাথে সম্পর্কিত হিসেবে 512 00:23:51,450 --> 00:23:52,790 সমস্যা পাঁচটি সেট. 513 00:23:52,790 --> 00:23:57,400 >> এবং আপনি একটি হার্ড ড্রাইভ এখন আমার মনে হয় যদি যা একটি বৃত্ত, হচ্ছে প্রতিনিধিত্ব করে 514 00:23:57,400 --> 00:23:58,930 আমি এখানে ভালো আঁকা করব. 515 00:23:58,930 --> 00:24:02,290 আপনি আপনার কম্পিউটারে একটি ফাইল তৈরি করার সময় এটি একটি এসএসডি, বা কিনা 516 00:24:02,290 --> 00:24:06,610 এই ক্ষেত্রে, একটি পুরোনো স্কুল হার্ড ড্রাইভ, যে ফাইল একাধিক বিট গঠিত. 517 00:24:06,610 --> 00:24:10,510 এটা 0 এবং 1 এই যে বলা যাক, 0 সেঃ এবং 1s আভা. 518 00:24:10,510 --> 00:24:11,660 তাই এই আমার সমগ্র হার্ড ড্রাইভ. 519 00:24:11,660 --> 00:24:13,225 এই দৃশ্যত একটি চমত্কার বড় ফাইল. 520 00:24:13,225 --> 00:24:18,080 এবং এটি যে সময়ে 0 সেঃ এবং 1s আপ ব্যবহার করা হয় শারীরিক থালা অংশটির. 521 00:24:18,080 --> 00:24:19,750 >> ভাল, যে শারীরিক অংশ কি? 522 00:24:19,750 --> 00:24:25,310 ওয়েল, এটা, একটি হার্ড ড্রাইভের দেখা যাচ্ছে যে এই ধরনের অন্তত আছে, 523 00:24:25,310 --> 00:24:27,340 এই সব ছোট ছোট সামান্য চৌম্বকীয় কণা. 524 00:24:27,340 --> 00:24:32,630 এবং তারা মূলত উত্তর আছে এবং তাদের দক্ষিণ মেরুতে, যাতে আপনি যদি 525 00:24:32,630 --> 00:24:35,710 যারা চৌম্বক কণা একটি চালু এই ভাবে, আপনি যে এটা বলতে পারে 526 00:24:35,710 --> 00:24:36,720 একটি 1 প্রতিনিধিত্বমূলক. 527 00:24:36,720 --> 00:24:39,340 এবং এটি উলটাইয়া দক্ষিণ যদি উত্তর, আপনি যে এটা বলতে পারে 528 00:24:39,340 --> 00:24:40,390 একটি 0 প্রতিনিধিত্ব করে. 529 00:24:40,390 --> 00:24:43,660 >> তাই রিয়েল ফিজিকাল বিশ্বের যে আপনি কিছু উপস্থাপন হতে পারে 530 00:24:43,660 --> 00:24:45,670 বাইনারি 0 রাষ্ট্র এবং একটি 1. 531 00:24:45,670 --> 00:24:46,720 সুতরাং যে সমস্ত ফাইলের মধ্যে লেখা হয় না. 532 00:24:46,720 --> 00:24:49,300 চৌম্বক আভা আছে তাদের এই ভাবে বা যে কণা 533 00:24:49,300 --> 00:24:51,920 এই ভাবে, তৈরি নিদর্শন এর 0 সেঃ এবং 1s. 534 00:24:51,920 --> 00:24:56,760 >> কিন্তু, আপনি একটি ফাইল সংরক্ষণের সময় সক্রিয় আউট কিছু তথ্য আলাদাভাবে সংরক্ষিত হয়. 535 00:24:56,760 --> 00:25:00,000 তাই এই সামান্য টেবিল একটি ডিরেক্টরি, তাই কথা বলতে. 536 00:25:00,000 --> 00:25:05,810 এবং আমি এই কলামের নাম কল, এবং করব আমি এই কলামের অবস্থান ডাকবো. 537 00:25:05,810 --> 00:25:08,850 >> এবং আমি অনুমান, বলতে যাচ্ছি এই হল আমার সারসংকলন হয়. 538 00:25:08,850 --> 00:25:14,050 আমার resume.doc এ সংরক্ষণ করা হয় পাঁচ, 123 এর কথা বলা যাক. 539 00:25:14,050 --> 00:25:15,390 আমি সবসময় যে সংখ্যা জন্য যেতে. 540 00:25:15,390 --> 00:25:18,810 কিন্তু ঠিক মত বলতে যথেষ্ট RAM-র মধ্যে, আপনি একটি হার্ড ড্রাইভ নিতে পারেন 541 00:25:18,810 --> 00:25:22,350 একটি গিগাবাইট বা 200 গিগাবাইট এর বা একটি terabyte, এবং আপনি যা করতে পারেন 542 00:25:22,350 --> 00:25:23,750 নম্বর বাইট সব. 543 00:25:23,750 --> 00:25:26,480 আপনি 8 বিট সব অংশ সংখ্যা পারেন. 544 00:25:26,480 --> 00:25:29,030 >> তাই আমরা যে এই বলবো অবস্থান 123 হয়. 545 00:25:29,030 --> 00:25:32,070 তাই আমার অপারেটিং এই ডিরেক্টরির ভিতরে সিস্টেম মনে যে আমার 546 00:25:32,070 --> 00:25:34,250 সারসংকলন অবস্থান 123 এ আছে. 547 00:25:34,250 --> 00:25:36,850 কিন্তু যখন আকর্ষণীয় পায় আপনি একটি ফাইল মুছে দিন. 548 00:25:36,850 --> 00:25:37,820 >> উদাহরণস্বরূপ তাই - 549 00:25:37,820 --> 00:25:40,790 এবং সৌভাগ্যক্রমে, বিশ্বের অধিকাংশ আছে এই সম্মুখের ধরা - কি যখন 550 00:25:40,790 --> 00:25:45,040 আপনি যদি আপনার ম্যাক OS ট্র্যাশে একটি ফাইল টেনে আনুন অথবা আপনার উইন্ডোজ জিনিসকে বিন? 551 00:25:45,040 --> 00:25:48,290 552 00:25:48,290 --> 00:25:50,510 যে করছেন এর উদ্দেশ্য কি? 553 00:25:50,510 --> 00:25:53,860 এটি ফাইলের পরিত্রাণ পেতে সম্ভবত এর কিন্তু কি টেনে আইন আছে এবং 554 00:25:53,860 --> 00:25:57,550 আপনার ট্র্যাশ বা মধ্যে ড্রপ আপনার রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন কম্পিউটারে কি? 555 00:25:57,550 --> 00:25:59,230 >> সত্যিই একেবারে কিছুই. 556 00:25:59,230 --> 00:26:00,320 এটি শুধু একটি ফোল্ডার মত. 557 00:26:00,320 --> 00:26:01,800 এটা নিশ্চিত করা, একটি বিশেষ ফোল্ডার এর. 558 00:26:01,800 --> 00:26:04,460 কিন্তু আসলে এটি ফাইলটি মুছে দিন না? 559 00:26:04,460 --> 00:26:06,780 >> কোন ভাল, কারণ আপনি সম্ভবত কিছু ভালো হয়েছে, অভিশাপ উহু, আপনি না 560 00:26:06,780 --> 00:26:07,420 যে কি মানে. 561 00:26:07,420 --> 00:26:09,130 তাই আপনি যদি ডবল ক্লিক করুন ট্র্যাশ বা জিনিসকে বিন. 562 00:26:09,130 --> 00:26:11,630 আপনি কাছাকাছি poked করেছি এবং আপনার উদ্ধার করেছি এটা dragging দ্বারা ফাইল 563 00:26:11,630 --> 00:26:12,110 সেখানে আউট. 564 00:26:12,110 --> 00:26:14,420 সুতরাং স্পষ্ট, এটা অপরিহার্যভাবে না এটি মুছে ফেলা. 565 00:26:14,420 --> 00:26:15,990 >> ঠিক আছে, আপনি দক্ষতা সহকারে যে চেয়ে আছেন. 566 00:26:15,990 --> 00:26:18,860 আপনি কি জানেন যে শুধু টেনে নিয়ে যান ট্র্যাশ বা জিনিসকে বিন মানে এই নয় 567 00:26:18,860 --> 00:26:19,930 আপনি ট্র্যাশ খালি রাখুন করছি. 568 00:26:19,930 --> 00:26:24,110 তাই আপনি যদি আপ মেনুতে যান এবং আপনি যা বলছেন ট্র্যাশ খালি বা ফাঁকা জিনিসকে বিন. 569 00:26:24,110 --> 00:26:25,360 তারপর কি হবে? 570 00:26:25,360 --> 00:26:29,070 571 00:26:29,070 --> 00:26:32,530 >> হ্যাঁ, তাই এটি অনেক বেশি মুছে ফেলা হয়. 572 00:26:32,530 --> 00:26:37,660 কিন্তু যে এরকম সব এই. 573 00:26:37,660 --> 00:26:45,350 কম্পিউটার যেখানে forgets resume.doc ছিল. 574 00:26:45,350 --> 00:26:47,400 >> কিন্তু কি দৃশ্যত পরিবর্তন হয়নি ছবি? 575 00:26:47,400 --> 00:26:51,390 576 00:26:51,390 --> 00:26:55,570 বিট, আমি দাবী করে যে 0 সেঃ এবং 1s আছে কিছু শারীরিক দৃষ্টিভঙ্গির সাইটে 577 00:26:55,570 --> 00:26:56,280 হার্ডওয়্যার. 578 00:26:56,280 --> 00:26:57,110 তারা এখনও করছি. 579 00:26:57,110 --> 00:26:58,930 এটি শুধু কম্পিউটার হয়েছে ভুলে যাওয়া কি তারা. 580 00:26:58,930 --> 00:27:03,160 >> সুতরাং এটি মূলত মুক্ত ফাইল এর তারা পুনঃব্যবহৃত করা যাবে বিট যাতে. 581 00:27:03,160 --> 00:27:06,940 কিন্তু আপনি আরও ফাইল তৈরি না হওয়া পর্যন্ত এবং আরও অনেক ফাইল এবং আরও ফাইল পাবেন 582 00:27:06,940 --> 00:27:12,150 সম্ভাব্য, যারা 0 সেঃ এবং 1s, যারা চৌম্বক কণা, পুনঃব্যবহৃত পেতে, 583 00:27:12,150 --> 00:27:16,220 জন্য গোলমালে বা ডাইন আপ, অন্যান্য ফাইল, 0 সেঃ এবং 1s. 584 00:27:16,220 --> 00:27:17,980 >> তাই আপনি যদি এই উইন্ডোটি সময় আছে. 585 00:27:17,980 --> 00:27:19,860 এবং এটা আন্দাজের এর না দৈর্ঘ্য, সত্যিই. 586 00:27:19,860 --> 00:27:22,240 এটি আপনার হার্ড আকারের উপর নির্ভর করে ড্রাইভ এবং কিভাবে অনেক ফাইল আছে এবং 587 00:27:22,240 --> 00:27:23,490 কত তাড়াতাড়ি আপনি নতুন না. 588 00:27:23,490 --> 00:27:27,050 কিন্তু সময় এই উইন্ডোটি সময় আছে যে ফাইল পুরোপুরি এখনও যা 589 00:27:27,050 --> 00:27:27,770 ফেরতযোগ্য. 590 00:27:27,770 --> 00:27:31,050 >> আপনি কি কখনও McAfee মত প্রোগ্রাম ব্যবহার করার জন্য তাই আপনি যদি অথবা নর্টন পুনরুদ্ধার করার চেষ্টা 591 00:27:31,050 --> 00:27:35,680 তথ্য, তারা করছি সব করার চেষ্টা করছে এই তথাকথিত ডিরেক্টরিতে পুনরুদ্ধার 592 00:27:35,680 --> 00:27:37,340 আপনার ফাইল ছিল আউট চিত্র যেখানে. 593 00:27:37,340 --> 00:27:40,605 এবং কখনও কখনও নর্টন এবং বলবে ফাইল 93% ফেরতযোগ্য হয়. 594 00:27:40,605 --> 00:27:42,020 ওয়েল, যে কি মানে? 595 00:27:42,020 --> 00:27:45,690 শুধু তার মানে এমন কিছু অন্যান্য ফাইল কাকতালীয়ভাবে,, বলতে ব্যবহার করে শেষ পর্যন্ত 596 00:27:45,690 --> 00:27:48,920 আপনার মূল ফাইলের খুঁজে যারা বিট. 597 00:27:48,920 --> 00:27:51,950 >> তাই আসলে কি জড়িত তথ্য পুনরুদ্ধার করা হচ্ছে না? 598 00:27:51,950 --> 00:27:55,720 ওয়েল, আপনার মত কিছু না থাকলে নর্টন, আপনার কম্পিউটারে প্রাক ইনস্টল 599 00:27:55,720 --> 00:27:59,510 আপনি মাঝে মাঝে করতে পারেন ভাল তাকান হয় সমগ্র হার্ড ড্রাইভ খুঁজছেন এ 600 00:27:59,510 --> 00:28:00,510 বিট নিদর্শন. 601 00:28:00,510 --> 00:28:05,350 এবং সমস্যা সেট থিম এক পাঁচ আপনাকে অনুসন্ধান হবে 602 00:28:05,350 --> 00:28:09,570 একটি হার্ড ড্রাইভ এর সমতুল্য, একটি ফরেনসিক একটি থেকে একটি কম্প্যাক্ট ফ্ল্যাশ কার্ড ইমেজ 603 00:28:09,570 --> 00:28:13,660 0 সেঃ অনুসন্ধানের জন্য ডিজিটাল ক্যামেরা, উচ্চ সঙ্গে যে সাধারণত এবং 1s, 604 00:28:13,660 --> 00:28:16,720 সম্ভাবনা দ্রাঘিমাংশ: কোন JPEG চিত্র শুরু. 605 00:28:16,720 --> 00:28:21,120 >> এবং আপনাকে বলছি দ্বারা যারা ইমেজ পুনরুদ্ধার করতে পারেন আমি এই প্যাটার্ন যদি দেখতে, অভিমানী 606 00:28:21,120 --> 00:28:24,380 ফরেনসিক ইমেজ বিট, সঙ্গে চিহ্নিত করে উচ্চ সম্ভাবনা, 607 00:28:24,380 --> 00:28:25,650 কোন JPEG শুরু. 608 00:28:25,650 --> 00:28:29,520 আর আমি আবার একই প্যাটার্ন দেখুন, সম্ভবত শুরু 609 00:28:29,520 --> 00:28:32,440 অন্য কোন JPEG, এবং অন্য কোন JPEG, এবং অন্য কোন JPEG. 610 00:28:32,440 --> 00:28:34,970 এবং এই সাধারণত হয় কিভাবে তথ্য পুনরুদ্ধার কাজ করবে. 611 00:28:34,970 --> 00:28:37,870 কি JPEGs সম্পর্কে চমৎকার যদিও হয় ফাইল ফরম্যাট নিজেই কিছুটা হয় 612 00:28:37,870 --> 00:28:44,400 প্রতি যেমন জটিল, এ ফাইল আসলে মোটামুটি চিন্হিত 613 00:28:44,400 --> 00:28:47,370 , আপনি দেখতে পাবেন, এবং সহজ আপনি যদি ইতিমধ্যে না করে থাকেন. 614 00:28:47,370 --> 00:28:50,270 >> তাই এর নীচে একটি ঘনিষ্ঠ কটাক্ষপাত করা যাক হয়েছে ঠিক কি হিসেবে ফণা 615 00:28:50,270 --> 00:28:53,360 যাচ্ছে, এবং এই 0 সেঃ এবং 1s কি আপনি একটি একটি বিট আরো দিতে হয়, 616 00:28:53,360 --> 00:28:55,330 এই বিশেষ চ্যালেঞ্জ জন্য প্রসঙ্গ. 617 00:28:55,330 --> 00:28:55,510 >> [ভিডিও প্লেব্যাক] 618 00:28:55,510 --> 00:28:58,700 >> আপনার পিসি অধিকাংশ সঞ্চয়-কোথায় তার স্থায়ী তথ্য. 619 00:28:58,700 --> 00:29:03,390 যে কাজ করতে, তথ্য উপস্থিত RAM-র থেকে ভ্রমণ বলুন যে সফ্টওয়্যার সংকেত বরাবর 620 00:29:03,390 --> 00:29:06,110 কিভাবে যে তথ্য ধারণ করার জন্য হার্ড ড্রাইভ. 621 00:29:06,110 --> 00:29:09,410 হার্ড ড্রাইভ সার্কিট অনুবাদ ভোল্টেজ মধ্যে যারা সংকেত 622 00:29:09,410 --> 00:29:10,870 ওঠানামা করছে. 623 00:29:10,870 --> 00:29:14,970 এই ঘুরে, হার্ড ড্রাইভ এর নিয়ন্ত্রণ চলন্ত অংশ, কিছু কিছু 624 00:29:14,970 --> 00:29:17,910 বাকি চলন্ত অংশ আধুনিক কম্পিউটার. 625 00:29:17,910 --> 00:29:22,130 >> সংকেত কিছু একটি মোটর নিয়ন্ত্রণ যা ধাতু প্রলিপ্ত platters ঘূর্ণন. 626 00:29:22,130 --> 00:29:25,470 আপনার ডেটা আসলে সংরক্ষিত হয় এই platters উপর. 627 00:29:25,470 --> 00:29:28,610 অন্য সংকেত পড়ুন / লিখুন সরাতে পড়া বা মাথা 628 00:29:28,610 --> 00:29:30,710 platters উপর তথ্য লিখুন. 629 00:29:30,710 --> 00:29:35,450 এই যন্ত্রপাতি যাতে সুনির্দিষ্ট একটি মানুষের যে চুল এমনকি মধ্যে পাস করতে পারেনি 630 00:29:35,450 --> 00:29:37,280 মাথা এবং কাটনা platters. 631 00:29:37,280 --> 00:29:40,316 তবুও, এটা সব অপরিসীম গতি এ কাজ করে. 632 00:29:40,316 --> 00:29:40,660 >> [END টি ভিডিও প্লেব্যাক] 633 00:29:40,660 --> 00:29:42,190 >> DAVID Malan: একটু জুম ইন গভীর এখন কি এ 634 00:29:42,190 --> 00:29:44,360 আসলে যারা platters উপর. 635 00:29:44,360 --> 00:29:44,720 >> [ভিডিও প্লেব্যাক] 636 00:29:44,720 --> 00:29:47,660 >> এর দর্শকমাত্র চলুন শুরু করা যাক কি আমরা ঠিক সময়ে স্লো মোশন দেখেছি. 637 00:29:47,660 --> 00:29:51,710 একটি বিদ্যুতের সংক্ষিপ্ত নাড়ি যখন ফ্লিপ, যদি পড়া / লেখা মাথা পাঠানো 638 00:29:51,710 --> 00:29:54,650 জন্য একটি অতি ক্ষুদ্র ইলেক্ট্রোম্যাগনেটিক নেভিগেশন একটি দ্বিতীয় একটি ভগ্নাংশ. 639 00:29:54,650 --> 00:29:58,970 চুম্বক যা একটি ক্ষেত্র তৈরি পরিবর্তন একটি অতি ক্ষুদ্র, অতি ক্ষুদ্র এর প্রান্তিকতা 640 00:29:58,970 --> 00:30:02,850 ধাতু কণার অংশ যা কোট প্রতিটি থালা পৃষ্ঠ. 641 00:30:02,850 --> 00:30:05,940 >> এই সব ছোট ছোট একটি প্যাটার্ন সিরিজ, ডিস্কের মধ্যে অভিযুক্ত আপ এলাকায় 642 00:30:05,940 --> 00:30:08,470 একটি একক বিট প্রতিনিধিত্ব করে বাইনারি সংখ্যা মধ্যে তথ্য 643 00:30:08,470 --> 00:30:10,530 কম্পিউটারে ব্যবহৃত সিস্টেম. 644 00:30:10,530 --> 00:30:13,775 এখন, বর্তমান পাঠানো হয় যদি একটি উপায় পঠিত মাধ্যমে / এলাকা মাথা লিখুন 645 00:30:13,775 --> 00:30:15,970 এক দিক সমবর্তিত হয়. 646 00:30:15,970 --> 00:30:17,950 বর্তমান পাঠানো হয় যদি বিপরীত দিক, 647 00:30:17,950 --> 00:30:19,930 পোলারাইজেশন বিপরীত হয়. 648 00:30:19,930 --> 00:30:22,370 >> আপনি হার্ড ডিস্ক বন্ধ তথ্য পেতে কিভাবে? 649 00:30:22,370 --> 00:30:24,090 শুধু প্রক্রিয়া বিপরীত. 650 00:30:24,090 --> 00:30:26,550 সুতরাং এটা ডিস্কে কণা এর যে বর্তমান পেতে 651 00:30:26,550 --> 00:30:27,960 মাথা চলন্ত পড়া / লেখা. 652 00:30:27,960 --> 00:30:30,700 এই লক্ষ লক্ষ একত্রে চুম্বকিত খন্ডের, এবং 653 00:30:30,700 --> 00:30:32,160 আপনি একটি ফাইল পেয়েছেন. 654 00:30:32,160 --> 00:30:36,060 >> এখন, একটি ফাইল টুকরোগুলি পারে সব ড্রাইভ এর উপর বিক্ষিপ্ত করা 655 00:30:36,060 --> 00:30:39,970 জগাখিচুড়ি মত ধরনের platters, আপনার ডেস্কের উপর কাগজপত্র. 656 00:30:39,970 --> 00:30:43,500 সুতরাং একটি বিশেষ অতিরিক্ত ফাইল ট্র্যাক রাখে সবকিছু যেখানে. 657 00:30:43,500 --> 00:30:45,985 কিন্তু আপনি না চান, যে ভালো কিছু? 658 00:30:45,985 --> 00:30:46,470 >> [END টি ভিডিও প্লেব্যাক] 659 00:30:46,470 --> 00:30:47,820 >> DAVID Malan: ঠিক আছে, সম্ভবত না. 660 00:30:47,820 --> 00:30:52,070 সুতরাং কিভাবে আপনি অনেক বলছি এই সঙ্গে বড় হয়েছি? 661 00:30:52,070 --> 00:30:53,970 ঠিক আছে, তাই এটি কম এবং কম এর হাতে প্রতি বছর. 662 00:30:53,970 --> 00:30:56,550 কিন্তু আমি আপনাকে অন্তত পরিচিত খুশি তাদের সঙ্গে, এই কারণ এবং আমাদের নিজস্ব 663 00:30:56,550 --> 00:31:00,520 বই ডেমো, দুঃখিতভাবে, একটি খুব মৃতু্য হয় পরিচিতি এখানে মৃত্যুর মন্থর. 664 00:31:00,520 --> 00:31:04,010 >> কিন্তু এই অন্তত, পিঠ, আমি কি হল উচ্চ বিদ্যালয়, ব্যাকআপ জন্য ব্যবহৃত ব্যবহার. 665 00:31:04,010 --> 00:31:08,110 এবং এটা আশ্চর্যজনক ছিল, কারণ আপনি নেভিগেশন 1.4 মেগাবাইটে সংরক্ষণ পারে 666 00:31:08,110 --> 00:31:08,930 এই বিশেষ ডিস্ক. 667 00:31:08,930 --> 00:31:12,260 এবং এই, উচ্চ ঘনত্ব সংস্করণ ছিল হিসাবে আছে যা এইচডি, দ্বারা নির্দেশিত 668 00:31:12,260 --> 00:31:14,240 আজকের HD ভিডিও আগে মর্ম. 669 00:31:14,240 --> 00:31:16,400 >> স্ট্যান্ডার্ড ঘনত্ব 800 কিলোবাইট ছিল. 670 00:31:16,400 --> 00:31:18,640 এবং যে আগে ছিল 400-kilobyte ডিস্ক. 671 00:31:18,640 --> 00:31:23,120 এবং যে আগে, 5 এবং 1/4 ছিল সত্যিকারের ফ্লপি যা ছিল ইঞ্চি ডিস্ক, 672 00:31:23,120 --> 00:31:25,680 এবং সামান্য চওড়া এবং লম্বা এখানে এই জিনিস আর. 673 00:31:25,680 --> 00:31:29,150 কিন্তু আপনি আসলে তথাকথিত দেখতে পারেন এই ডিস্ক ফ্লপি দৃষ্টিভঙ্গি. 674 00:31:29,150 --> 00:31:32,630 >> এবং এই বৈশিষ্ট্যগুলি, তারা আসলে করছি এ হার্ড ড্রাইভ বেশ অনুরূপ 675 00:31:32,630 --> 00:31:33,570 অন্তত এই টাইপ. 676 00:31:33,570 --> 00:31:37,270 নতুন কম্পিউটারে আবার, SSDs ভিন্নভাবে একটু কাজ করে. 677 00:31:37,270 --> 00:31:41,530 কিন্তু আপনি যে সামান্য ধাতু ট্যাব সরানো হলে, আসলে আপনি, একটু কুকি দেখতে পারেন 678 00:31:41,530 --> 00:31:42,560 বা থালা. 679 00:31:42,560 --> 00:31:43,830 >> এটা এই মত ধাতু না. 680 00:31:43,830 --> 00:31:46,000 এই এক আসলে কিছু সস্তা উপাদান প্লাস্টিকের. 681 00:31:46,000 --> 00:31:46,750 এবং যদি আপনি এটি আন্দোলিত ধরনের পারেন. 682 00:31:46,750 --> 00:31:50,310 এবং আপনি trully শুধু কিছু বন্ধ অপনোদিত করেছি বিট বা চৌম্বকীয় কণা সংখ্যা 683 00:31:50,310 --> 00:31:51,220 এই ডিস্ক থেকে. 684 00:31:51,220 --> 00:31:52,710 >> সুতরাং সৌভাগ্যক্রমে, এটা কিছুই আছে. 685 00:31:52,710 --> 00:31:55,790 জিনিস যে ভাবে, যদি - ও আবরণ আপনার চোখ ও আপনার প্রতিবেশী যারা - 686 00:31:55,790 --> 00:31:58,865 শুধু ধরনের এই টান করতে পারেন যে মত গোটা খাপ বন্ধ. 687 00:31:58,865 --> 00:32:01,900 কিন্তু সামান্য বসন্ত আছে, তাই হবে আপনার চোখ দিয়ে যে সচেতন. 688 00:32:01,900 --> 00:32:03,620 তাই এখন আপনি সত্যিই একটি ফ্লপি ডিস্ক আছে. 689 00:32:03,620 --> 00:32:07,090 >> এবং কি এই বিষয়ে অসাধারণ এর এই হিসাবে যে যতটা হয় একটি 690 00:32:07,090 --> 00:32:10,830 একটি বৃহত্তর ছোট মাপের উপস্থাপনা হার্ড ড্রাইভ, এই জিনিস, সুপার 691 00:32:10,830 --> 00:32:11,590 সুপার সহজ. 692 00:32:11,590 --> 00:32:15,170 আপনি এখন, এটা নীচে চিম্টি যদি যে যে ধাতু জিনিস বন্ধ, এবং বল্কল 693 00:32:15,170 --> 00:32:20,990 খোলা আছে, সব দুই টুকরা হয় অনুভব করেন এবং তথাকথিত ফ্লপি ডিস্ক 694 00:32:20,990 --> 00:32:22,930 ভেতরের ধাতু একটি টুকরা সঙ্গে. 695 00:32:22,930 --> 00:32:25,990 >> এবং অর্ধেক সেখানে যায় আমার ডিস্ক এর বিষয়বস্তু. 696 00:32:25,990 --> 00:32:27,540 তাদের অন্য অর্ধেক আছে যায়. 697 00:32:27,540 --> 00:32:31,375 কিন্তু যে ভিতরে কাটনা ছিল যে সব বিগতবত্সর আপনার কম্পিউটারে. 698 00:32:31,375 --> 00:32:35,220 699 00:32:35,220 --> 00:32:38,310 >> এবং আবার,, পরিপ্রেক্ষিত এই লাগাতে কিভাবে বড় হল আপনার অধিকাংশ 700 00:32:38,310 --> 00:32:39,560 হার্ড ড্রাইভ এই দিন? 701 00:32:39,560 --> 00:32:41,960 702 00:32:41,960 --> 00:32:46,230 500 গিগাবাইট, একটি terabyte, হয়তো এ একটি ডেস্কটপ কম্পিউটার, 2 terabytes, 3 703 00:32:46,230 --> 00:32:47,630 terabytes, 4 terabytes, ডান? 704 00:32:47,630 --> 00:32:52,480 এই এক megabyte হয়, দিতে বা নিতে এমনকি সাধারণ MP 3 মাপসই করা যাবে না, যা 705 00:32:52,480 --> 00:32:55,310 আর এই দিন, অথবা কিছু অনুরূপ সঙ্গীত ফাইল. 706 00:32:55,310 --> 00:32:59,500 >> তাই একটু আপনার জন্য স্যুভেনির আজ, এবং এছাড়াও কি contextualize সাহায্য করতে 707 00:32:59,500 --> 00:33:03,570 আমরা মঞ্জুর জন্য গ্রহণ করা হবে এখন সমস্যা পাঁচটি সেট. 708 00:33:03,570 --> 00:33:04,820 সুতরাং যারা রাখা ভেজাল হয়. 709 00:33:04,820 --> 00:33:07,340 710 00:33:07,340 --> 00:33:13,370 তাই হতে হবে যেখানে আমার সম্পর্কে রূপান্তর করা যাক পরবর্তী pset খরচ হিসাবে ভাল. 711 00:33:13,370 --> 00:33:18,470 সুতরাং আমরা এখন এই পৃষ্ঠার জন্য সেট করেছি - উহু, দ্রুত ঘোষণা একটি দম্পতি. 712 00:33:18,470 --> 00:33:21,730 >> এই শুক্রবার, আপনি চান এবং CS50 যোগদান লাঞ্চের জন্য, স্বাভাবিক জায়গায় যাবে 713 00:33:21,730 --> 00:33:23,610 cs50.net/rsvp. 714 00:33:23,610 --> 00:33:25,100 এবং চূড়ান্ত প্রকল্প - 715 00:33:25,100 --> 00:33:28,520 তাই পাঠ্যসূচি প্রতি, আমরা করেছি ইতিমধ্যে চূড়ান্ত প্রকল্প নির্দিষ্টকরণ. 716 00:33:28,520 --> 00:33:31,410 এর অর্থ এই নয় যে বুঝতে পারি যে এটা বিশেষ করে শীঘ্রই কারণে. 717 00:33:31,410 --> 00:33:33,990 এটা শুধু পাওয়া সত্যিই,, পোস্ট আপনাকে বলছি এটা সম্পর্কে চিন্তা করা. 718 00:33:33,990 --> 00:33:37,620 এবং প্রকৃতপক্ষে, একটি সুপার গুরুত্বপূর্ণ আপনি শতাংশ মোকাবেলা করা হবে 719 00:33:37,620 --> 00:33:40,780 উপাদানের চূড়ান্ত প্রকল্প যে আমরা এমনকি ক্লাস মধ্যে অর্জিত না, 720 00:33:40,780 --> 00:33:42,730 কিন্তু তাড়াতাড়ি পরের সপ্তাহে হিসাবে পাবেন. 721 00:33:42,730 --> 00:33:45,530 >> নোটিশ যদিও, বৈশিষ্ট জন্য আহ্বান জানাচ্ছে যে কয়েক বিভিন্ন উপাদানের 722 00:33:45,530 --> 00:33:46,190 চূড়ান্ত প্রকল্প. 723 00:33:46,190 --> 00:33:49,590 প্রথমত, কয়েক সপ্তাহের মধ্যে একটি প্রাক প্রস্তাব, একটি চমত্কার নৈমিত্তিক ইমেল 724 00:33:49,590 --> 00:33:52,760 আপনি তাকে বলতে TF বা কি আপনি সঙ্গে, আপনার প্রকল্পের জন্য চিন্তা 725 00:33:52,760 --> 00:33:53,650 কোন প্রতিশ্রুতি. 726 00:33:53,650 --> 00:33:56,710 প্রস্তাবনা আপনার নির্দিষ্ট করা প্রতিশ্রুতি, বলার অপেক্ষা রাখে না, এখানে, আমি কি সাহায্য 727 00:33:56,710 --> 00:33:57,770 আমি আমার প্রকল্পের জন্য কিছু করতে চাই. 728 00:33:57,770 --> 00:33:58,250 আপনি কি মনে করেন? 729 00:33:58,250 --> 00:33:58,650 খুব বড়? 730 00:33:58,650 --> 00:33:59,145 খুব ছোট? 731 00:33:59,145 --> 00:34:00,330 এটা সামলানো হয়? 732 00:34:00,330 --> 00:34:02,230 এবং যদি আপনি আরো বিস্তারিত বিবরণের জন্য বৈশিষ্ট দেখুন. 733 00:34:02,230 --> 00:34:05,060 >> সপ্তাহ দুয়েক পরে যে অবস্থা হয় একটি একভাবে যা রিপোর্ট, 734 00:34:05,060 --> 00:34:08,260 ঠিক কিভাবে বলতে আপনার TF নৈমিত্তিক ইমেল আপনি আপনার চূড়ান্ত হয় দূরে পিছনে 735 00:34:08,260 --> 00:34:12,360 দ্বারা অনুসরণ প্রকল্পের বাস্তবায়ন, এবং CS50 Hackathon যা সবাই 736 00:34:12,360 --> 00:34:17,520 আমন্ত্রণ জানানো হয়, থেকে একটি ঘটনা যা থাকবে 7:00 পর্যন্ত এক সন্ধ্যায় নেভিগেশন 8:00 PM তে পোস্ট করা 737 00:34:17,520 --> 00:34:19,150 পরের দিন সকালে আমি. 738 00:34:19,150 --> 00:34:22,560 আমি এক সপ্তাহের মধ্যে উল্লেখ করেছি পারে পিজা, শূন্য, Wil, 9:00 PM তে পোস্ট করা এ পরিসেবা উপলব্ধ করা হবে 739 00:34:22,560 --> 00:34:24,120 1:00 এ চীনা খাদ্য না. 740 00:34:24,120 --> 00:34:27,929 এবং আপনি 5:00 এ এখনও জাগ্রত হন তাহলে আমি, আমরা ব্রেকফাস্ট জন্য IHOP আপনাকে নিয়ে যাব. 741 00:34:27,929 --> 00:34:31,310 >> সুতরাং Hackathon আরো এক বর্গ মধ্যে স্মরণীয় অভিজ্ঞতা. 742 00:34:31,310 --> 00:34:35,290 তারপর বাস্তবায়ন কারণে, এবং তারপর climactic এবং CS50 উচিত. 743 00:34:35,290 --> 00:34:38,070 এই সব আরও বিস্তারিত সপ্তাহের মধ্যে আসা. 744 00:34:38,070 --> 00:34:40,739 >> কিন্তু এর কিছু ফিরে যান পুরানো স্কুল - 745 00:34:40,739 --> 00:34:41,920 আবার, একটি অ্যারে. 746 00:34:41,920 --> 00:34:45,040 এটি solves, কারণ তাই একটি অ্যারের, চমৎকার আমরা চাই সমস্যার মাত্র একটি দেখেছি 747 00:34:45,040 --> 00:34:49,290 ছাত্র কাঠামোর সঙ্গে আগে মুহূর্ত নিয়ন্ত্রণ একটু খুঁজে পেয়ে আমরা যদি 748 00:34:49,290 --> 00:34:52,405 ছাত্র এক, ছাত্র দুই, আছে চান ছাত্র তিন, ছাত্র বিন্দু বিন্দু বিন্দু, 749 00:34:52,405 --> 00:34:54,400 ছাত্রদের কিছু নির্বিচারে সংখ্যা. 750 00:34:54,400 --> 00:34:58,850 >> অ্যারে, তাই কয়েক সপ্তাহ আগে, এ swooped এবং সমাধান আমাদের সমস্যা না সব 751 00:34:58,850 --> 00:35:03,340 আগাম বুদ্ধিমান কিভাবে অনেক কিছু কিছু টাইপ আমরা করতে চাইবেন. 752 00:35:03,340 --> 00:35:07,390 এবং আমরা structs আমাদের সাহায্য করতে পারে দেখা করেছি আরও আমাদের কোড এবং সংগঠিত রাখা 753 00:35:07,390 --> 00:35:11,660 একটি মত ধারণার দিক থেকে অনুরূপ ভেরিয়েবল, নাম এবং ঘর একসাথে,, যাতে আমরা 754 00:35:11,660 --> 00:35:15,570 ভিতরে এক সত্তা, তাদের বিবেচনা করতে পারেন যা ছোট টুকরা আছে. 755 00:35:15,570 --> 00:35:17,810 >> কিন্তু অ্যারে কিছু অসুবিধেও আছে. 756 00:35:17,810 --> 00:35:19,780 অসুবিধাগুলি কিছু কি আমরা সম্মুখীন হয়েছি 757 00:35:19,780 --> 00:35:22,320 অ্যারে সঙ্গে এ পর্যন্ত? 758 00:35:22,320 --> 00:35:23,450 ওটা কি? 759 00:35:23,450 --> 00:35:28,130 স্থায়ী আকার - তাই এমনকি আপনি প্রতাপ যদিও একটি জন্য মেমরি বরাদ্দ করা সম্ভব 760 00:35:28,130 --> 00:35:32,310 অ্যারের একবার, আপনি কি জানেন কিভাবে অনেক ছাত্র আপনি কিভাবে অনেক অক্ষর আছে, 761 00:35:32,310 --> 00:35:35,460 ব্যবহারকারীর কাছ থেকে একবার, আপনি বরাদ্দ করেছি অ্যারে, আপনি ধরনের আঁকা করেছি 762 00:35:35,460 --> 00:35:36,740 কোণার মধ্যে নিজেকে. 763 00:35:36,740 --> 00:35:40,600 >> আপনি নতুন উপাদান অন্তর্ভুক্ত করা যাবে না, কারণ একটি অ্যারের মাঝখানে মধ্যে. 764 00:35:40,600 --> 00:35:43,660 আপনি আরও উপাদান অন্তর্ভুক্ত করা যাবে না একটি অ্যারের শেষে. 765 00:35:43,660 --> 00:35:47,750 আসলে, আপনি একটি নির্মাণ রিসোর্ট আছে আমরা আলোচনা করেছি সম্পূর্ণ নতুন অ্যারে, 766 00:35:47,750 --> 00:35:49,320 নতুন মধ্যে পুরাতন কপি. 767 00:35:49,320 --> 00:35:52,610 এবং আবার, যে মাথা ব্যাথা যে আপনার জন্য সঙ্গে সুযোগসুবিধা GetString. 768 00:35:52,610 --> 00:35:56,170 >> কিন্তু আবার, আপনি এমনকি অন্তর্ভুক্ত করা যাবে না অ্যারের মধ্যম মধ্যে কিছু 769 00:35:56,170 --> 00:35:58,200 হার সম্পূর্ণরূপে পূরণ করা হয় না. 770 00:35:58,200 --> 00:36:03,010 উদাহরণস্বরূপ, এই অ্যারে যদি এখানে আকারের ছয় শুধুমাত্র এটা যে পাঁচটি জিনিস আছে 771 00:36:03,010 --> 00:36:06,080 ভাল, আপনি শুধু ট্যাক পারে শেষ সম্মুখের কিছু. 772 00:36:06,080 --> 00:36:08,200 কিন্তু আপনি যদি এমন সন্নিবেশ কি করতে চান তাহলে মাঝখানে মধ্যে 773 00:36:08,200 --> 00:36:11,280 অ্যারে, এটা হতে পারে, যদিও এটি ছয় জিনিস পাঁচ খুঁজে? 774 00:36:11,280 --> 00:36:14,250 >> ভাল, আমরা আমরা সব ছিল তখন কি করবেন আমাদের মানব স্বেচ্ছাসেবকদের onstage মধ্যে 775 00:36:14,250 --> 00:36:15,110 সপ্তাহ গত? 776 00:36:15,110 --> 00:36:18,710 আমরা এখানে কেউ রাখতে চেয়েছিলেন, নয়তো এই পদক্ষেপ কিভাবে এই মানুষ 777 00:36:18,710 --> 00:36:22,540 পথ, অথবা এই সরানো কিভাবে এই মানুষ উপায়, এবং যে ব্যয়বহুল হয়ে ওঠে. 778 00:36:22,540 --> 00:36:26,950 একটি ভিতর মানুষের নাড়াচাড়া অ্যারের আপ যোগ ও খোয়াতে শেষ পর্যন্ত 779 00:36:26,950 --> 00:36:31,240 আমাদের সময়, তাই অনেকটা আমাদের N ছক সম্পর্কে জন্য, সন্নিবেশ সাজানোর মত বার চলমান 780 00:36:31,240 --> 00:36:32,550 উদাহরণস্বরূপ, লক. 781 00:36:32,550 --> 00:36:36,520 সুতরাং অ্যারে হয় মহান, কিন্তু আপনি করতে হবে আপনি তাদের চান কিভাবে বড় আগাম জানি. 782 00:36:36,520 --> 00:36:38,030 >> তাই ঠিক আছে, এখানে একটি সমাধান. 783 00:36:38,030 --> 00:36:43,860 আমি অগ্রিম জানা না থাকলে কত ছাত্র আমি থাকতে পারে, এবং একবার আমি জানি 784 00:36:43,860 --> 00:36:47,870 আমি সিদ্ধান্ত, যদিও, আমি যে সঙ্গে আটকে করছি , কেন আমি সবসময় অনেক ছাত্র না 785 00:36:47,870 --> 00:36:51,740 দুইবার হিসাবে অনেক স্থান বরাদ্দ আমি মনে হতে পারে হিসাবে আমি প্রয়োজন? 786 00:36:51,740 --> 00:36:54,450 একটি যুক্তিসঙ্গত সমাধান নয়? 787 00:36:54,450 --> 00:36:58,240 >> বাস্তবানুগভাবে, আমি আমরা মনে করি না 50 টিরও বেশি স্লট প্রয়োজন চালু 788 00:36:58,240 --> 00:37:02,190 একটি মাঝারি আকারের বর্গ জন্য একটি অ্যারের মধ্যে, তাই আসুন শুধু ধরপাকড় করা যাক. 789 00:37:02,190 --> 00:37:07,040 আমি আমার অ্যারের মধ্যে 100 স্লট করতে হবে যাতে আমরা নিশ্চিতভাবে পেতে পারেন 790 00:37:07,040 --> 00:37:10,330 আমি আশা ছাত্র সংখ্যা কিছু মাঝারি আকারের বর্গ হতে. 791 00:37:10,330 --> 00:37:14,320 তাই কেন শুধু ধরপাকড় এবং বরাদ্দ না একটি অ্যারের জন্য আরো মেমরি, সাধারণত, 792 00:37:14,320 --> 00:37:16,290 আপনি এমনকি প্রয়োজন দেখা দিতে পারে মনে হয় আর? 793 00:37:16,290 --> 00:37:20,190 এই সহজ pushback কি ধারণা যে আপনি? 794 00:37:20,190 --> 00:37:21,440 >> আপনি শুধু মেমরি নাশক করছি. 795 00:37:21,440 --> 00:37:25,350 আপনি তারপর লিখুন আক্ষরিক প্রত্যেক প্রোগ্রাম হয়তো দুইবার হিসাবে অনেক মেমরি ব্যবহার করা হয় 796 00:37:25,350 --> 00:37:26,680 আপনি আসলে প্রয়োজন. 797 00:37:26,680 --> 00:37:28,990 এবং মাত্র এক মত মনে হয় না বিশেষ করে মার্জিত সমাধান. 798 00:37:28,990 --> 00:37:31,990 তাছাড়া, এটা শুধু কমে যায় কোন সমস্যা হওয়ার সম্ভাবনা. 799 00:37:31,990 --> 00:37:35,300 আপনি একটি জনপ্রিয় অবশ্যই আছে কি যদি এক সেমিস্টারে এবং আপনি 101 আছে 800 00:37:35,300 --> 00:37:39,610 ছাত্র, আপনার প্রোগ্রাম এখনও মৌলিকভাবে একই সমস্যা সম্মুখীন. 801 00:37:39,610 --> 00:37:44,280 >> সুতরাং সৌভাগ্যক্রমে, একটি সমাধান আছে আকারে এই বিজ্ঞাপন আমাদের সকল সমস্যা 802 00:37:44,280 --> 00:37:46,790 যে ডাটা স্ট্রাকচার বেশী জটিল 803 00:37:46,790 --> 00:37:47,970 আমরা দূর পর্যন্ত দেখা করেছি. 804 00:37:47,970 --> 00:37:50,530 এই, আমি দাবি, একটি সংযুক্ত তালিকা. 805 00:37:50,530 --> 00:37:51,920 এই সংখ্যার একটি তালিকা - 806 00:37:51,920 --> 00:37:54,970 9, 17, 22, 26, এবং 34 - 807 00:37:54,970 --> 00:38:00,120 উপায় দ্বারা একত্রে সংযুক্ত করা হয়েছে কি আমি তীরচিহ্ন হিসেবে টানা করেছি. 808 00:38:00,120 --> 00:38:03,580 >> অন্য কথায়, যদি আমি প্রতিনিধিত্ব চেয়েছিলেন একটি অ্যারের, আমি কাজ করতে পারে 809 00:38:03,580 --> 00:38:04,910 ভালো কিছু. 810 00:38:04,910 --> 00:38:07,310 এবং আমি ওভারহেড এই রেখে দেব মাত্র একটি মুহূর্ত. 811 00:38:07,310 --> 00:38:09,970 আমি কাজ করতে পারে - 812 00:38:09,970 --> 00:38:12,520 হ্যালো, ঠিক আছে. 813 00:38:12,520 --> 00:38:14,470 পাশে দাঁড়ানো. 814 00:38:14,470 --> 00:38:17,360 এখানে নতুন কম্পিউটার, পরিষ্কার - 815 00:38:17,360 --> 00:38:18,090 ঠিক আছে. 816 00:38:18,090 --> 00:38:21,730 >> তাই আমি অ্যারের মধ্যে এই সংখ্যা আছে - 817 00:38:21,730 --> 00:38:28,880 9, 17, 22, 26, 24 - 818 00:38:28,880 --> 00:38:30,530 অপরিমাপ্য অগত্যা না. 819 00:38:30,530 --> 00:38:33,730 ঠিক আছে, তাই এখানে আমার অ্যারে - 820 00:38:33,730 --> 00:38:34,980 ঈশ্বরের ওহ. 821 00:38:34,980 --> 00:38:38,700 822 00:38:38,700 --> 00:38:40,395 ঠিক আছে, তাই এখানে আমার অ্যারে. 823 00:38:40,395 --> 00:38:44,110 824 00:38:44,110 --> 00:38:45,050 ঈশ্বরের ওহ. 825 00:38:45,050 --> 00:38:48,820 >> [হাস্য] 826 00:38:48,820 --> 00:38:49,440 >> DAVID Malan: জাহির. 827 00:38:49,440 --> 00:38:52,330 এটা ফিরে যেতে খুব প্রচেষ্টা এর এবং তাই আছে, ঠিক - 828 00:38:52,330 --> 00:38:54,290 26. 829 00:38:54,290 --> 00:38:57,650 সুতরাং আমরা এই অ্যারে আছে 9, 17, 22, 26, এবং 34. 830 00:38:57,650 --> 00:39:00,260 আপনি তাদের দেখতে পারেন লজ্জাজনক ভুল আমি ঠিক তৈরি হয়, 831 00:39:00,260 --> 00:39:00,830 আছে এটা. 832 00:39:00,830 --> 00:39:04,490 >> তাই আমি এই দাবি করে যে একটি খুব দক্ষ সমাধান. 833 00:39:04,490 --> 00:39:07,310 আমি অনেক ints হিসেবে বরাদ্দ করেছি আমি প্রয়োজন - এক, দুই, তিন, 834 00:39:07,310 --> 00:39:09,100 চার, পাঁচ, ছয় বা - 835 00:39:09,100 --> 00:39:11,660 এবং তারপর আমি নম্বর সংরক্ষিত করেছি এই অ্যারে এর ভিতর. 836 00:39:11,660 --> 00:39:15,220 কিন্তু ধরা যাক, তারপর, আমি সন্নিবেশ করতে চান সংখ্যা 8 মত একটি মান? 837 00:39:15,220 --> 00:39:16,100 ওয়েল, এটা কোথায় যেতে পারে? 838 00:39:16,100 --> 00:39:18,530 আমি প্রবেশ করাতে চাইছেন 20 এর মত একটি নম্বর. 839 00:39:18,530 --> 00:39:19,790 ওয়েল, এটা কোথায় যেতে পারে? 840 00:39:19,790 --> 00:39:23,160 কোথাও আছে মাঝখানে, অথবা সংখ্যা 35 যেতে হয়েছে 841 00:39:23,160 --> 00:39:24,010 কোথাও শেষে. 842 00:39:24,010 --> 00:39:25,320 কিন্তু আমি স্থান অল আউট আছি. 843 00:39:25,320 --> 00:39:29,120 >> এবং তাই এই একটি মৌলিক চ্যালেঞ্জ সমাধান হয় না যে অ্যারে এর. 844 00:39:29,120 --> 00:39:32,280 আমি GetString, একটি মুহূর্ত আগে দাবি এই সমস্যা solves. 845 00:39:32,280 --> 00:39:37,380 আপনি একটি ষষ্ঠ নম্বর প্রবেশ করাতে চান এই অ্যারের মধ্যে, অন্তত এক কি 846 00:39:37,380 --> 00:39:40,090 সমাধান আপনি নিশ্চিত করার জন্য অবলম্বন করতে পারেন আমরা GetString, করতে চাই? 847 00:39:40,090 --> 00:39:44,340 848 00:39:44,340 --> 00:39:46,030 ওটা কি? 849 00:39:46,030 --> 00:39:48,190 >> ওয়েল, এটা বড় করা সহজ কাজ আর বলেন. 850 00:39:48,190 --> 00:39:52,810 আমরা অগত্যা অ্যারের করতে পারবেন না বড়, কিন্তু আমরা কি করতে পারি? 851 00:39:52,810 --> 00:39:56,570 আকার বড় একটি নতুন অ্যারে, করুন 6, হয়তো বা আকার 10, আমরা যদি চান 852 00:39:56,570 --> 00:40:00,490 এগিয়ে জিনিস পেতে, এবং তারপর কপি করা পুরোনো নতুন অ্যারে মধ্যে, এবং তারপর 853 00:40:00,490 --> 00:40:01,680 পুরাতন অ্যারের বিনামূল্যে. 854 00:40:01,680 --> 00:40:05,770 >> কিন্তু চলমান সময় কি এখন যে প্রক্রিয়ার? 855 00:40:05,770 --> 00:40:09,870 এটা N বড় হে কারণ কপি আপনি কিছু ইউনিট খরচ যাচ্ছে 856 00:40:09,870 --> 00:40:13,480 আমরা সময়, তাই আদর্শ যদি না যাচ্ছে যা একটি নতুন অ্যারে, বরাদ্দ 857 00:40:13,480 --> 00:40:15,610 দুইবার হিসাবে অনেক গ্রাস অস্থায়ীভাবে মেমরি. 858 00:40:15,610 --> 00:40:16,660 নতুন মধ্যে পুরাতন কপি করুন - 859 00:40:16,660 --> 00:40:18,800 আমি বলতে চাচ্ছি, এটা শুধু একটা মাথা ব্যাথা, এর যা আবার, আমরা কেন লেখেন না 860 00:40:18,800 --> 00:40:19,920 আপনার জন্য GetString. 861 00:40:19,920 --> 00:40:21,380 >> আমরা পরিবর্তে তাই কি কি হতে পারে? 862 00:40:21,380 --> 00:40:25,000 ওয়েল, কি যদি আমাদের তথ্য গঠন আসলে এটা ফাঁক আছে? 863 00:40:25,000 --> 00:40:30,790 আমি থাকার আমার লক্ষ্য শিথিল যে ধরুন মেমরি সংলগ্ন অংশ, যেখানে 9 864 00:40:30,790 --> 00:40:34,500 যা 17, ডান পাশে হয় ডান 22 পরবর্তী, এবং তাই. 865 00:40:34,500 --> 00:40:39,570 >> এবং 9 এখানে ওভার হতে পারে অনুমান করা উপস্থিত RAM-র, 17, RAM-র মধ্যে এখানে করা যাবে 866 00:40:39,570 --> 00:40:40,990 এবং 22 RAM-র মধ্যে এখানে করা যাবে. 867 00:40:40,990 --> 00:40:43,610 অন্য কথায়, আমি তাদের প্রয়োজন হয় না এমনকি আর ব্যাক ব্যাক. 868 00:40:43,610 --> 00:40:47,850 আমি একরকম একটি সুচ থ্রেড আছে এই সংখ্যার প্রতিটি, অথবা প্রতিটি মাধ্যমে 869 00:40:47,850 --> 00:40:51,010 এই নোডের মধ্যে, আমরা ডাকবো আমি তাদের টানা করেছি rectangles, আপনি 870 00:40:51,010 --> 00:40:55,670 সর্বশেষ কিভাবে মনে রাখবেন প্রথম থেকে যেমন নোড. 871 00:40:55,670 --> 00:40:59,940 >> তাই প্রোগ্রামিং গঠন কি আমরা বেশ সম্প্রতি দেখা করেছি যা দিয়ে আমি 872 00:40:59,940 --> 00:41:03,030 যে থ্রেড বাস্তবায়ন, বা করতে পারেন এখানে টানা আমি করতে পারেন যা দিয়ে 873 00:41:03,030 --> 00:41:05,430 যারা তীর বাস্তবায়ন? 874 00:41:05,430 --> 00:41:06,500 তাই পয়েন্টার, ডান? 875 00:41:06,500 --> 00:41:09,560 আমি একটা ঠিক না বরাদ্দ যদি কোন int, কিন্তু একটি নোড - ও 876 00:41:09,560 --> 00:41:10,810 নোড, আমি ধারক মানে. 877 00:41:10,810 --> 00:41:12,900 এবং দৃশ্যত, আমি একটি আয়তক্ষেত্র মানে. 878 00:41:12,900 --> 00:41:16,420 একটি নোডের মধ্যে দৃশ্যত প্রয়োজন তাই দুটি মান ধারণ করে - 879 00:41:16,420 --> 00:41:21,490 int-এ নিজেই, এবং তারপর, হিসাবে উহ্য আয়তক্ষেত্র নীচে অর্ধেক, 880 00:41:21,490 --> 00:41:23,010 কোন int জন্য পর্যাপ্ত স্থান. 881 00:41:23,010 --> 00:41:26,130 >> তাই ঠিক, এখানে এগিয়ে চিন্তা এই নোডের এই, কিভাবে বড় হয় 882 00:41:26,130 --> 00:41:27,170 প্রশ্নের ধারক? 883 00:41:27,170 --> 00:41:29,250 Int-এ জন্য কত বাইট? 884 00:41:29,250 --> 00:41:31,310 সম্ভবতঃ 4, এটা যদি স্বাভাবিক হিসাবে একই. 885 00:41:31,310 --> 00:41:33,270 এবং তারপর কত বাইট পয়েন্টার জন্য? 886 00:41:33,270 --> 00:41:33,650 4. 887 00:41:33,650 --> 00:41:37,940 তাই এই ধারক, বা এই নোডের হয় একটি 8 বাইট গঠন হতে যাচ্ছে. 888 00:41:37,940 --> 00:41:41,760 ওহ, এবং যে একটি সুখী কাকতালীয় যে আমরা শুধু এই ধারণা চালু 889 00:41:41,760 --> 00:41:44,400 একটি struct, অথবা একটি C গঠন. 890 00:41:44,400 --> 00:41:48,890 >> তাই আমি একটি পদক্ষেপ নিতে চান যে দাবি এই আরও বাস্তবধর্মী দিকে 891 00:41:48,890 --> 00:41:52,560 সংখ্যার একটি তালিকা, একটি বাস্তবায়ন সংখ্যার লিঙ্ক তালিকা, আমি একটি কি প্রয়োজন 892 00:41:52,560 --> 00:41:56,920 আরো একটু সামনে চিন্তা এবং শুধুমাত্র কোন int, কিন্তু একটি struct ডিক্লেয়ার 893 00:41:56,920 --> 00:41:58,620 আমি কল করব, সাধারনত এখানে, নোড. 894 00:41:58,620 --> 00:42:01,630 আমরা এটা আমরা চাই কিছু কল, কিন্তু পারে নোড অনেক বিষয়ভিত্তিক হতে যাচ্ছে 895 00:42:01,630 --> 00:42:03,560 জিনিস আমরা এখন এ খুঁজছেন আরম্ভ. 896 00:42:03,560 --> 00:42:06,480 >> যে নোড এর ভিতরে কোন int N হয়. 897 00:42:06,480 --> 00:42:09,350 এবং তারপর এই বাক্য গঠন, একটি সামান্য প্রথম নজরে অদ্ভুত - 898 00:42:09,350 --> 00:42:12,960 struct নোড * পরবর্তী. 899 00:42:12,960 --> 00:42:16,900 ওয়েল pictorially, যে কি হল? 900 00:42:16,900 --> 00:42:21,000 যে নীচে অর্ধেক আমরা দেখেছি যে আয়তক্ষেত্র 901 00:42:21,000 --> 00:42:22,730 শুধু একটা মুহূর্ত আগে. 902 00:42:22,730 --> 00:42:27,600 >> কিন্তু কেন আমি * struct নোড বলছে am শুধু নোড * বিরোধিতা? 903 00:42:27,600 --> 00:42:31,370 যে পয়েন্টার প্রতি নির্দেশ করা হয় কারণ যদি অন্য নোড, এটা তো শুধু 904 00:42:31,370 --> 00:42:32,760 একটি নোড ঠিকানা. 905 00:42:32,760 --> 00:42:35,630 আমরা করেছি সঙ্গে সামঞ্জস্যপূর্ণ যে এ পর্যন্ত পয়েন্টার সম্পর্কে আলোচনা করেছেন. 906 00:42:35,630 --> 00:42:39,690 আমি দাবি করলে কিন্তু কেন, এই কাঠামো নোড বলা হয়, আমি struct বলতে আছে 907 00:42:39,690 --> 00:42:42,660 এখানে ভিতরে নোড? 908 00:42:42,660 --> 00:42:43,190 >> যথাযথভাবে. 909 00:42:43,190 --> 00:42:46,490 এটা সি একটি মূঢ় বাস্তবতা সাজানোর typedef, তাই কথা বলতে, না আছে 910 00:42:46,490 --> 00:42:47,220 কোনো ঘটেছে. 911 00:42:47,220 --> 00:42:48,510 সি আক্ষরিক সুপার. 912 00:42:48,510 --> 00:42:51,050 এটি আপনার কোড উপরে সার্চ নীচে, ডানে বামে. 913 00:42:51,050 --> 00:42:54,930 এবং শেষ না হওয়া পর্যন্ত যে সেমিকোলন হিট বটম লাইন, না কি অনুমান 914 00:42:54,930 --> 00:42:57,590 একটি ডাটা টাইপ হিসেবে বিদ্যমান? 915 00:42:57,590 --> 00:42:59,060 নোডের মধ্যে মূল্যউদ্ধৃতি unquote নোড. 916 00:42:59,060 --> 00:43:03,050 >> কিন্তু কারণ আরো ভার্বোস এর ঘোষণা আমি প্রথম লাইন কি - 917 00:43:03,050 --> 00:43:05,340 typedef struct নোড - 918 00:43:05,340 --> 00:43:08,790 যে আগে, প্রথম এসেছিলেন, কারণ কোঁকড়া ধনুর্বন্ধনী, যেমন ধরণের যে 919 00:43:08,790 --> 00:43:11,800 প্রাক educating ঝনঝন, আপনি জানি কি, আমাকে একটি struct দিতে 920 00:43:11,800 --> 00:43:13,570 struct নোড বলা হয়. 921 00:43:13,570 --> 00:43:16,270 সত্যি, আমি কলিং জিনিষ পছন্দ করি না struct নোড, struct নোড সব 922 00:43:16,270 --> 00:43:17,090 আমার কোড সর্বত্র. 923 00:43:17,090 --> 00:43:20,660 কিন্তু আমি শুধুমাত্র, শুধু ভিতরে, একবার এটা ব্যবহার করব যাতে আমি কার্যকরভাবে করতে পারেন 924 00:43:20,660 --> 00:43:25,010 , সার্কুলার রেফারেন্স কেমন না তৈরি একটি কোনটাই নিজেকে পয়েন্টার, কিন্তু একটি 925 00:43:25,010 --> 00:43:29,400 অন্য পয়েন্টার একটি অভিন্ন টাইপ. 926 00:43:29,400 --> 00:43:32,330 >> সুতরাং দেখা যাচ্ছে যে একটি ডাটা স্ট্রাকচার উপর ভালো, কয়েক আছে 927 00:43:32,330 --> 00:43:34,470 হতে পারে যে অপারেশন আমাদের সুদ. 928 00:43:34,470 --> 00:43:37,460 আমরা সন্নিবেশ করতে চাইবেন এই মত একটি তালিকা মধ্যে. 929 00:43:37,460 --> 00:43:39,850 আমরা মুছে ফেলতে চান হতে পারে ভালো একটি তালিকা থেকে. 930 00:43:39,850 --> 00:43:43,490 আমরা একটি তালিকা অনুসন্ধান করতে পারেন মূল্য, অথবা আরো সাধারণভাবে, ঢুকা. 931 00:43:43,490 --> 00:43:46,410 এবং ঢুকা মাত্র একটি অভিনব উপায় বাম এ শুরু বলার অপেক্ষা রাখে না এবং সব সরাতে 932 00:43:46,410 --> 00:43:47,650 ডান উপায়. 933 00:43:47,650 --> 00:43:52,640 >> এমনকি এই সামান্য সঙ্গে নোটিশ, অত্যাধুনিক তথ্য কাঠামো, যাক 934 00:43:52,640 --> 00:43:56,510 আমার সম্পর্কে আমরা কিছু ধার নিতে পারি যে প্রস্তাব গত দুই সপ্তাহ ধারণা ও 935 00:43:56,510 --> 00:43:58,410 নামক একটি ফাংশন বাস্তবায়ন ভালো সন্ধান করুন. 936 00:43:58,410 --> 00:44:01,360 এটা বা সত্য ফিরে যাচ্ছে মিথ্যা, ইঙ্গিত, হ্যাঁ অথবা 937 00:44:01,360 --> 00:44:03,390 কোন, এন তালিকার হয়. 938 00:44:03,390 --> 00:44:05,960 তার দ্বিতীয় যুক্তি একটি পয়েন্টার তালিকা নিজেকে তাই একটি 939 00:44:05,960 --> 00:44:07,920 একটি নোড যাও পয়েন্টার. 940 00:44:07,920 --> 00:44:10,350 >> তারপর আমি কাজ করতে যাচ্ছি সমস্ত ডিক্লেয়ার হয় একটি অস্থায়ী পরিবর্তনশীল. 941 00:44:10,350 --> 00:44:12,730 আমরা কনভেনশন দ্বারা এটি ptr ডাকবো পয়েন্টার জন্য. 942 00:44:12,730 --> 00:44:15,220 এবং আমি সমান দায়িত্ব অর্পণ করা তালিকার শুরুতে. 943 00:44:15,220 --> 00:44:16,680 >> এবং এখন যখন লুপ বিজ্ঞপ্তি. 944 00:44:16,680 --> 00:44:20,640 তাই দীর্ঘ পয়েন্টার সমান না হয় null, আমি চেক করতে যাচ্ছি. 945 00:44:20,640 --> 00:44:24,520 হয় পয়েন্টার তীর N সমান গৃহীত হয়েছিল N? 946 00:44:24,520 --> 00:44:26,410 নতুন - এবং একটি মিনিট অপেক্ষা করুন সিনট্যাক্স সমাচার. 947 00:44:26,410 --> 00:44:29,324 তীর একটি আকস্মিক সব কি? 948 00:44:29,324 --> 00:44:30,574 হ্যাঁ? 949 00:44:30,574 --> 00:44:34,200 950 00:44:34,200 --> 00:44:34,810 >> যথাযথভাবে. 951 00:44:34,810 --> 00:44:38,860 সুতরাং যেহেতু একটি মাত্র কয়েক মিনিট আগে, আমরা ব্যবহৃত কিছু অ্যাক্সেস বিন্দু স্বরলিপি 952 00:44:38,860 --> 00:44:43,080 একটি struct ভিতরে, পরিবর্তনশীল যদি আপনি struct না আছে 953 00:44:43,080 --> 00:44:47,420 নিজেই, কিন্তু একটি struct একটি পয়েন্টার, সৌভাগ্যক্রমে, বাক্য গঠন এক টুকরা যে 954 00:44:47,420 --> 00:44:48,620 অবশেষে স্বজ্ঞাত জ্ঞান করে তোলে. 955 00:44:48,620 --> 00:44:52,360 তীর, পয়েন্টার অনুসরণ মানে আমাদের তীর সাধারণত এর অর্থ চাই 956 00:44:52,360 --> 00:44:56,570 pictorially, এবং এ যান ডাটা ফিল্ড ভিতরে. 957 00:44:56,570 --> 00:44:59,700 সুতরাং তীর বিন্দু হিসাবে একই জিনিস, কিন্তু আছে আপনি একটি পয়েন্টার আছে যখন আপনি এটি ব্যবহার. 958 00:44:59,700 --> 00:45:05,270 >> তাই ঠিক, তাহলে সংক্ষিপ্তবৃত্তি আপনি যদি যদি ক্ষেত্রের struct ভিতরে পয়েন্টার বলা 959 00:45:05,270 --> 00:45:07,760 সমান সমান N, সত্য ফিরে. 960 00:45:07,760 --> 00:45:11,970 অন্যথা, এখানে এই লাইন - পয়েন্টার পরবর্তী পয়েন্টার সমান. 961 00:45:11,970 --> 00:45:17,540 তাই এই কি করছে, নোটিশ, যদি আমি বর্তমানে struct নির্দেশ am 962 00:45:17,540 --> 00:45:21,430 9, এবং 9 ধারণকারী সংখ্যা নয় আমি চাই - আমি খুঁজছি অনুমান 963 00:45:21,430 --> 00:45:22,830 জন্য N 50 সমান - 964 00:45:22,830 --> 00:45:25,930 আমি আমার অস্থায়ী পয়েন্টার আপডেট করতে যাচ্ছি এই নোডের এ নির্দেশ না 965 00:45:25,930 --> 00:45:31,190 আর, কিন্তু আছে পয়েন্টার তীর পরের, যা আমাকে এখানে আপ করা যাচ্ছে না. 966 00:45:31,190 --> 00:45:34,270 >> এখন, আমি একটি ঘূর্ণিবায়ু হয় উপলব্ধি উপস্থাপনা. 967 00:45:34,270 --> 00:45:37,380 বুধবার, আসলে আমরা এই কাজ করব কিছু মানুষ এবং আরো কিছু সঙ্গে 968 00:45:37,380 --> 00:45:38,900 ধীর গতিতে কোড. 969 00:45:38,900 --> 00:45:42,990 কিন্তু বুঝতে পারছি, এখন আমরা আমাদের তথ্য তৈরি করছি কাঠামো আরো জটিল, যাতে আমাদের 970 00:45:42,990 --> 00:45:45,780 আলগোরিদিম, আরও দক্ষ পেতে পারেন যা জন্য অপরিহার্য হতে যাচ্ছে 971 00:45:45,780 --> 00:45:50,500 pset ছয়, আমরা আবার, ইন লোড করা হলে, যারা 150,000 শব্দ, কিন্তু তাই করতে হবে 972 00:45:50,500 --> 00:45:55,650 দক্ষতার সঙ্গে, এবং মূলত একটি তৈরি করুন আমাদের ব্যবহারকারীদের করা জন্য রান যে প্রোগ্রাম 973 00:45:55,650 --> 00:46:00,460 রৈখিক, না স্কয়ার্ড n, কিন্তু মধ্যে আদর্শ মধ্যে ধ্রুবক সময়. 974 00:46:00,460 --> 00:46:02,300 >> আমরা বুধবার আপনি দেখতে পাবেন. 975 00:46:02,300 --> 00:46:07,240 >> স্পিকার: পরের CS50, ডেভিড এ তার বেস ক্ষেত্রে forgets. 976 00:46:07,240 --> 00:46:12,770 >> DAVID Malan: এবং যে আপনি যে কিভাবে টেক্সট বার্তা সি কি - 977 00:46:12,770 --> 00:46:14,020 >> [বিভিন্ন টেক্সট বার্তা বিজ্ঞপ্তি শোনাচ্ছে] 978 00:46:14,020 --> 00:46:19,734