1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [মতামত] [ক্যুইজ 0] 2 00:00:03,000 --> 00:00:05,000 >> [Lexi রস, টমি MacWilliam, লুকাস Freitas, জোসেফ Ong] [হার্ভার্ড বিশ্ববিদ্যালয়] 3 00:00:05,000 --> 00:00:08,000 >> [এটি CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> আরে, সবাই. 5 00:00:10,000 --> 00:00:15,000 স্বাগতম ক্যুইজ 0, যা কোন জায়গা নেওয়ার জন্য বুধবার এই পর্যালোচনার সময়. 6 00:00:15,000 --> 00:00:19,000 আমরা কি আজ রাতের করতে যাচ্ছেন, আমি 3 অন্যান্য টিএফএস সঙ্গে আছি, 7 00:00:19,000 --> 00:00:24,000 এবং আমরা একসাথে কি আমরা অবশ্যই যতদূর করেছেন পর্যালোচনার মধ্য দিয়ে যেতে চলুন. 8 00:00:24,000 --> 00:00:27,000 এটা 100% ব্যাপক হবে, হতেই থাকবে না কিন্তু এটি একটি ভাল ধারণা আপনাকে দেবে 9 00:00:27,000 --> 00:00:31,000 আপনি কি ইতিমধ্যে ডাউন আছে এবং আপনি কি এখনও বুধবার আগে অধ্যয়ন প্রয়োজন. 10 00:00:31,000 --> 00:00:34,000 এবং প্রশ্নের সাথে আপনার হাত বাড়াতে মুক্ত মনে হিসাবে আমরা বরাবর চলুন, 11 00:00:34,000 --> 00:00:38,000 কিন্তু মনে রাখতে যে আমরা একটি সময় সামান্য বিট করতে হবে শেষ 12 00:00:38,000 --> 00:00:41,000 যদি আমরা কয়েক মিনিটের সঙ্গে পেতে মাধ্যমে অতিরিক্ত-যাও যাও সাধারণ প্রশ্ন করবেন, 13 00:00:41,000 --> 00:00:47,000 তাই মন যে, রাখা এবং যাতে আমরা সপ্তাহ 0 সাথে শুরুতে শুরু চলুন. 14 00:00:47,000 --> 00:00:50,000 >> [0 পর্যালোচনা ক্যুইজ!] [পার্ট 0] [Lexi রস] কিন্তু আগে আমরা যে let এর সম্পর্কে কথা বলা 15 00:00:50,000 --> 00:00:53,000 ব্যঙ্গ মধ্যে পণ্য সরবরাহ. 16 00:00:53,000 --> 00:00:55,000 >> [লজিস্টিক] [ক্যুইজ বুধবার 10/10 বক্তৃতা পরিবর্তে সঞ্চালিত] 17 00:00:55,000 --> 00:00:57,000 >> [(বিস্তারিত জানার জন্য http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf দেখুন)] এটা বুধবার, অক্টোবর 10 ম হয়. 18 00:00:57,000 --> 00:01:00,000 >> এটা এই বুধবার, এবং যদি আপনাকে এই URL-এ যান এখানে, 19 00:01:00,000 --> 00:01:03,000 যা হয় CS50.net-গুলি আছে 'থেকে অ্যাক্সেসযোগ্য একটি লিঙ্ক এটি- 20 00:01:03,000 --> 00:01:06,000 আপনি যেখানে উপর ভিত্তি করে যেতে সম্পর্কে তথ্য দেখতে পারেন 21 00:01:06,000 --> 00:01:10,000 আপনার শেষ নাম বা স্কুল অন্তর্ভুক্তি সেইসাথে 22 00:01:10,000 --> 00:01:14,000 এটা ঠিক কি বলে সম্পর্কে ব্যঙ্গ এবং প্রশ্নের ধরন আবরণ যে আপনি পেতে যাচ্ছেন হবে. 23 00:01:14,000 --> 00:01:19,000 মনে রাখবেন যে আপনি ব্যঙ্গ জন্য বিভাগে একটি পর্যালোচনা করার সুযোগ থাকবে, 24 00:01:19,000 --> 00:01:21,000 তাই আপনার টিএফএস কিছু অভ্যাস সমস্যার উপর উচিত হবে, 25 00:01:21,000 --> 00:01:29,000 এবং যে এর আরেকটি ভাল সুযোগ যেখানে আপনি কি এখনও ব্যঙ্গ জন্য আপ অধ্যয়ন প্রয়োজন দেখুন. 26 00:01:29,000 --> 00:01:32,000 যাক বিটস 'এন' বাইট সঙ্গে শুরুতে এর শুরু. 27 00:01:32,000 --> 00:01:35,000 মনে রাখবেন একটি বিট শুধুমাত্র 0 বা 1, 28 00:01:35,000 --> 00:01:38,000 এবং একটি বাইট ঐ 8 বিটের একটি সংকলন. 29 00:01:38,000 --> 00:01:42,000 যাক বিট এই সংগ্রহে এ অধিকার এখানে এর চেহারা. 30 00:01:42,000 --> 00:01:44,000 আমরা চিন্তা করা কতগুলি বিট আছে সক্ষম হওয়া উচিত. 31 00:01:44,000 --> 00:01:48,000 যেখানে আমরা গণনা শুধু সেখানে তাদের 8, আট 0 অথবা 1 টি ইউনিট. 32 00:01:48,000 --> 00:01:51,000 এবং যেহেতু 8 বিট, যে 1 বাইট আছে, 33 00:01:51,000 --> 00:01:53,000 এবং আসুন হেক্সাডেসিমেল যাও তা রূপান্তর করুন. 34 00:01:53,000 --> 00:01:58,000 হেক্সাডেসিমাল বেস 16 হয়, এবং এটি বেশ সহজ রূপান্তর 35 00:01:58,000 --> 00:02:01,000 বাইনারি একটি সংখ্যা, যার মধ্যে একটি হেক্সাডেসিমেল সংখ্যা কি যে হয়,. 36 00:02:01,000 --> 00:02:04,000 সমস্ত আমরা না হয় আমরা 4 দলের তাকান, 37 00:02:04,000 --> 00:02:07,000 এবং আমরা যথাযথ হেক্সাডেসিমেল অঙ্ক তাদের রূপান্তর. 38 00:02:07,000 --> 00:02:11,000 আমরা 4 ডানদিকে সবচেয়ে গ্রুপ দিয়ে শুরু, তাই 0011. 39 00:02:11,000 --> 00:02:16,000 যে এক এবং এক 1 2 হতে, তাই একসঙ্গে যে 3 তোলে যাচ্ছে. 40 00:02:16,000 --> 00:02:19,000 এবং তারপর দিন এর 4 অন্যান্য ব্লক তাকান. 41 00:02:19,000 --> 00:02:24,000 1101. যে এক 1, এক 4, 8 এবং এক হতে যাচ্ছে. 42 00:02:24,000 --> 00:02:28,000 একসাথে যে 13 হতে, যা ডি তোলে যাচ্ছে 43 00:02:28,000 --> 00:02:32,000 এবং আমরা যে হেক্সাডেসিমেল আমরা 9 ​​0 মাধ্যমে ঠিক না যায় স্মরণ করব. 44 00:02:32,000 --> 00:02:36,000 আমরা ফল মাধ্যমে 0 যান, তাই 9 পরে, একটি 10 ​​অনুরূপ, 45 00:02:36,000 --> 00:02:40,000 11 বি, ইত্যাদি ইত্যাদি যেখানে ফল হল 15. 46 00:02:40,000 --> 00:02:44,000 এখানে একটি 13 ডি, 47 00:02:44,000 --> 00:02:49,000 তাই এটা দশমিক রূপান্তর আমরা সব কাজের জন্য আমরা আসলে 48 00:02:49,000 --> 00:02:52,000 2 একটি ক্ষমতা হিসাবে প্রতিটি স্থান খাওয়াবো. 49 00:02:52,000 --> 00:02:58,000 এটা এক 1, 2 এক, শূন্য 4s, শূন্য 8s, এক 16, ইত্যাদি ইত্যাদি, 50 00:02:58,000 --> 00:03:03,000 এবং এটা একটু হার্ড আপনার মাথা গনা যাও, কিন্তু আমরা যদি পরবর্তী স্লাইডে গমন 51 00:03:03,000 --> 00:03:05,000 আমরা উত্তর দেখতে পারেন. 52 00:03:05,000 --> 00:03:09,000 >> মূলত আমরা ফিরে যাওয়া বাম থেকে ডান জুড়ে করছি, 53 00:03:09,000 --> 00:03:14,000 এবং আমরা 2 অনুরূপ শক্তি দ্বারা প্রতিটি অঙ্ক করছি গুন. 54 00:03:14,000 --> 00:03:19,000 এবং মনে হেক্সাডেসিমেল জন্য আমরা 0x সঙ্গে শুরুতে এই সংখ্যা বোঝান 55 00:03:19,000 --> 00:03:23,000 যাতে আমরা এটি একটি দশমিক সংখ্যা সাথে গুলিয়ে ফেলা নয়. 56 00:03:23,000 --> 00:03:29,000 উপর অব্যাহত, এই একটি ASCII ছক, 57 00:03:29,000 --> 00:03:35,000 আমরা কি জন্য ব্যবহার হওয়া ASCII অক্ষর থেকে সংখ্যাগত মান ম্যাপ হয়. 58 00:03:35,000 --> 00:03:39,000 ক্রিপ্টোগ্রাফি pset মধ্যে মনে রাখবেন আমরা ASCII ছক ব্যাপক ব্যবহার করেছেন 59 00:03:39,000 --> 00:03:43,000 যাতে ক্রিপ্টোগ্রাফি বিভিন্ন পদ্ধতি ব্যবহার করা, 60 00:03:43,000 --> 00:03:47,000 সিজার এবং Vigenère সাইফার, বিভিন্ন বর্ণের রূপান্তর 61 00:03:47,000 --> 00:03:52,000 ইন কী ব্যবহারকারী দ্বারা প্রদত্ত অনুযায়ী একটি পংক্তি. 62 00:03:52,000 --> 00:03:56,000 চলুন একটি ASCII গণিত সামান্য বিট তাকান. 63 00:03:56,000 --> 00:04:02,000 দেখার জন্যে এ 'P' অক্ষর ফর্ম যে প্রশ্ন হবে এ + 1 টি, 64 00:04:02,000 --> 00:04:07,000 এবং মনে রাখবেন, '5 '≠ 5. 65 00:04:07,000 --> 00:04:10,000 এবং কিভাবে ঠিক আমরা যারা 2 ফর্মের মধ্যে রূপান্তর করতে চান? 66 00:04:10,000 --> 00:04:13,000 এটা আসলে খুব কঠিন নয়. 67 00:04:13,000 --> 00:04:16,000 যাতে 5 পেতে আমরা '0 বিয়োগ ' 68 00:04:16,000 --> 00:04:20,000 কারণ '0 মধ্যে 5 জায়গা আছে 'এবং '5.' 69 00:04:20,000 --> 00:04:23,000 যাতে অন্য কোন উপায়ে আমরা ঠিক 0 যোগ যান, 70 00:04:23,000 --> 00:04:25,000 তাই এটি নিয়মিত গাণিতিক মত ধরণের. 71 00:04:25,000 --> 00:04:29,000 শুধু মনে রাখবেন, যখন এটি কাছাকাছি কিছু উক্তি আছে যে এটা একটা অক্ষর 72 00:04:29,000 --> 00:04:37,000 এবং এইভাবে ASCII টেবিলের মধ্যে একটি মান অনুরূপ. 73 00:04:37,000 --> 00:04:40,000 আরো সাধারণ কম্পিউটার বিজ্ঞান বিষয়ের মধ্যে স্থানান্তর করে. 74 00:04:40,000 --> 00:04:43,000 আমরা শিখেছি কি একটি অ্যালগরিদম হয় এবং আমরা কিভাবে ব্যবহার প্রোগ্রামিং 75 00:04:43,000 --> 00:04:45,000 যাও আলগোরিদিম বাস্তবায়ন. 76 00:04:45,000 --> 00:04:48,000 আলগোরিদিম উদাহরণ হল কিছু ভালো সত্যিই সহজ 77 00:04:48,000 --> 00:04:51,000 চেক কিনা একটি নম্বর এমনকি বা অদ্ভুত. 78 00:04:51,000 --> 00:04:54,000 মনে রাখবেন যে আমরা 2 নম্বর ও mod যদি এর ফলে 0 চেক. 79 00:04:54,000 --> 00:04:57,000 যদি তাই হয়, এটি এমনকি এর. যদি না হয়, এটা অদ্ভুত. 80 00:04:57,000 --> 00:04:59,000 আর এটা সত্যিই একটি মৌলিক আলগোরিদিম একটি উদাহরণ. 81 00:04:59,000 --> 00:05:02,000 >> একটি আরও বেশী জড়িত এক সামান্য বিট বাইনারি অনুসন্ধান করা হয়, 82 00:05:02,000 --> 00:05:05,000 যা আমরা পর্যালোচনা সেশনের মধ্যে পরে যাবেন. 83 00:05:05,000 --> 00:05:09,000 এবং প্রোগ্রামিং শব্দ হয় আমরা একটি অ্যালগরিদম নেওয়ার জন্য ব্যবহার 84 00:05:09,000 --> 00:05:15,000 এবং এটি কম্পিউটারে কোড রূপান্তর পড়তে পারেন. 85 00:05:15,000 --> 00:05:20,000 প্রোগ্রামিং এর মধ্যে 2 টি উদাহরণ ভূত হয়, 86 00:05:20,000 --> 00:05:22,000 যা কি আমরা সপ্তাহ 0 করেছিল. 87 00:05:22,000 --> 00:05:25,000 যদিও আমরা কোড টাইপ আসলে না আউট এটা রূপায়ণকারী একটি উপায় 88 00:05:25,000 --> 00:05:29,000 এই অ্যালগরিদম, যার সংখ্যা 1-10 মুদ্রণ করা হয়, 89 00:05:29,000 --> 00:05:32,000 এবং এখানে আমরা C প্রোগ্রামিং ভাষা একই না. 90 00:05:32,000 --> 00:05:41,000 এই বৈশিষ্ট্যগুলি হল সমতুল্য, বিভিন্ন ভাষার সিনট্যাক্স বা ঠিক করা. 91 00:05:41,000 --> 00:05:44,000 আমরা তখন বুলিয়ান এক্সপ্রেশন সম্পর্কে শিখেছি, 92 00:05:44,000 --> 00:05:48,000 এবং একটি বুলিয়ান মান যা একটি সত্য বা মিথ্যা হয়, 93 00:05:48,000 --> 00:05:51,000 এবং এখানে বারংবার বুলিয়ান এক্সপ্রেশন 94 00:05:51,000 --> 00:05:55,000 শর্ত ভিতরে যান, তাই যদি (x ≤ 5), 95 00:05:55,000 --> 00:06:00,000 ভাল, আমরা ইতিমধ্যেই সেট x = 5, যাতে শর্ত সত্য যাও নির্ণয় করা যাচ্ছে. 96 00:06:00,000 --> 00:06:03,000 এবং যদি এটা সত্যি, যাই হোক না কেন কোড শর্ত অধ হয় 97 00:06:03,000 --> 00:06:08,000 কম্পিউটার দ্বারা মূল্যায়ন করা হবে, যাতে স্ট্রিং প্রিন্ট করা যাচ্ছে 98 00:06:08,000 --> 00:06:12,000 যাও স্ট্যান্ডার্ড আউপুট, এবং শব্দ শর্ত 99 00:06:12,000 --> 00:06:16,000 বোঝায় যদি বিবৃতির প্রথম বন্ধনী ভিতর যা কিছু থাকে যাও. 100 00:06:16,000 --> 00:06:20,000 সব অপারেটরদের মনে রাখুন. 101 00:06:20,000 --> 00:06:26,000 | যখন আমরা চেষ্টা করছি একত্রিত যাও 2 বা আরো শর্ত, | এটি এর && এবং মনে রাখুন 102 00:06:26,000 --> 00:06:30,000 == না = কিনা 2 জিনিষ সমান চেক. 103 00:06:30,000 --> 00:06:36,000 মনে রাখবেন যে নিয়োগ জন্য = হয় যেহেতু == একটি বুলিয়ান অপারেটর. 104 00:06:36,000 --> 00:06:41,000 ≤, ≥ এবং তারপর চূড়ান্ত 2 হয় স্বশাসিত. 105 00:06:41,000 --> 00:06:45,000 একটি বুলিয়ান যুক্তি সাধারণ এখানে পর্যালোচনা. 106 00:06:45,000 --> 00:06:48,000 এবং বুলিয়ান এক্সপ্রেশন এছাড়াও loops গুরুত্বপূর্ণ, 107 00:06:48,000 --> 00:06:50,000 যা আমরা এখন উপর যাবেন. 108 00:06:50,000 --> 00:06:56,000 আমরা শিখেছি CS50 loops মধ্যে প্রায় 3 ধরনের এতদূর, জন্য, যখন, এবং কাজ করার সময়. 109 00:06:56,000 --> 00:06:59,000 এবং এটা জানা জরুরী যে যখন জন্য সবচেয়ে উদ্দেশ্য 110 00:06:59,000 --> 00:07:02,000 আমরা আসলে লুপ কোনো ধরনের সাধারণত ব্যবহার করতে পারেন 111 00:07:02,000 --> 00:07:06,000 উদ্দেশ্য বা প্রচলিত ধরন নির্দিষ্ট ধরনের আছে 112 00:07:06,000 --> 00:07:09,000 প্রোগ্রামিং এ যে নির্দিষ্টভাবে এই loops একটির জন্য কল 113 00:07:09,000 --> 00:07:13,000 যে এটা সবচেয়ে দক্ষ বা যে উপায়ে তা কোড মার্জিত. 114 00:07:13,000 --> 00:07:18,000 যাক এর উপর যেতে কি এই loops প্রতিটি tends যাও জন্য ব্যবহৃত অধিকাংশ করা হবে. 115 00:07:18,000 --> 00:07:21,000 >> একটি লুপ ইন জন্য সাধারণভাবে আমরা ইতিমধ্যে জানি কতবার আমরা পুনরুক্তি করতে চান. 116 00:07:21,000 --> 00:07:24,000 আমরা শর্ত রাখা হয়. 117 00:07:24,000 --> 00:07:28,000 জন্য, i = 0, তোমার <10, যেমন. 118 00:07:28,000 --> 00:07:31,000 আমরা ইতিমধ্যে জানি যে আমরা 10 গুণ বেশি কিছু করতে চান. 119 00:07:31,000 --> 00:07:34,000 যখন একটি লুপ জন্য এখন, সাধারণত, আমরা অগত্যা না 120 00:07:34,000 --> 00:07:36,000 জানি কতবার আমরা লুপ চালানোর চান. 121 00:07:36,000 --> 00:07:39,000 কিন্তু আমরা অবস্থার কিছু সাজানোর যে আমরা তা জানতে চাই না 122 00:07:39,000 --> 00:07:41,000 সর্বদা সত্য বা মিথ্যা হতে সবসময়. 123 00:07:41,000 --> 00:07:44,000 উদাহরণস্বরূপ, যখন সেট করা হয়. 124 00:07:44,000 --> 00:07:46,000 চলুন শুরু করা যাক যে এর একটি বুলিয়ান পরিবর্তনশীল. 125 00:07:46,000 --> 00:07:48,000 যদিও এটা সত্য আমরা কোড মূল্যনির্ধারণ করতে চান, 126 00:07:48,000 --> 00:07:52,000 তাই অল্প আরো বাড়ানো যায়, সামান্য বিট একটি লুপ জন্য অধিক সাধারণ, 127 00:07:52,000 --> 00:07:55,000 কিন্তু লুপ জন্য কোনো একটা সময় লুপ রূপান্তরিত করা যায়. 128 00:07:55,000 --> 00:08:00,000 অবশেষে, যখন loops না, যা trickiest অধিকার দূরে হৃদয়ঙ্গম করা হতে পারে, 129 00:08:00,000 --> 00:08:04,000 প্রায়ই ব্যবহৃত হয় যখন আমরা প্রথম কোড নির্ণয় করা চাই 130 00:08:04,000 --> 00:08:06,000 প্রথম সময় আগে আমরা পরীক্ষা. 131 00:08:06,000 --> 00:08:09,000 একটি সাধারণ ব্যবহারের জন্য একটি কেস না যখন লুপ 132 00:08:09,000 --> 00:08:12,000 যখন আপনি ব্যবহারকারীর ইনপুট পেতে চান, এবং আপনি কি জানেন যে ব্যবহারকারী যাও জিজ্ঞাসা করতে চান 133 00:08:12,000 --> 00:08:15,000 জন্য ইনপুট অন্তত একবার, কিন্তু অধিকার যদি তারা ভাল ইনপুট আপনি কি না দূরে 134 00:08:15,000 --> 00:08:18,000 আপনি তাদের জিজ্ঞাসা পর্যন্ত তারা আপনাকে ভাল ইনপুট দিতে রাখতে চান. 135 00:08:18,000 --> 00:08:21,000 এটা একটি সবচেয়ে প্রচলিত ব্যবহার হয় যখন লুপ না, 136 00:08:21,000 --> 00:08:23,000 এবং আসুন এইসব loops প্রকৃত কাঠামো তাকান. 137 00:08:23,000 --> 00:08:27,000 তারা সবসময় সাধারণত এইসব নিদর্শন অনুসরণ ঝোঁক. 138 00:08:27,000 --> 00:08:30,000 >> ভিতরে জন্য লুপ আপনি 3 উপাদান আছে: 139 00:08:30,000 --> 00:08:35,000 আরম্ভের, প্রথাগতভাবে কিছু ভালো int i = 0 যেখানে আমি পাল্টা হয়, 140 00:08:35,000 --> 00:08:40,000 অবস্থা, যেখানে আমরা লুপ জন্য এই হিসাবে এই অবস্থা এখনও দীর্ঘ ঝুলিতে হিসাবে চালানো বলতে চাই, 141 00:08:40,000 --> 00:08:44,000 তোমার মত <10, তারপর এবং পরিশেষে, আপডেট, যা আমরা কীভাবে বাড়ায় 142 00:08:44,000 --> 00:08:47,000 লুপের মধ্যে প্রতিটি পর্যায়ে পাল্টা পরিবর্তনশীল. 143 00:08:47,000 --> 00:08:50,000 একটি সাধারণ বিষয় সেখানে দেখতে ঠিক তোমার + + ', 144 00:08:50,000 --> 00:08:52,000 যা 1 দ্বারা তোমার প্রতি সময় বাড়ায় মানে. 145 00:08:52,000 --> 00:08:55,000 এছাড়াও আপনি i + = 2 ভালো কিছু করতে পারে, 146 00:08:55,000 --> 00:08:58,000 যার মানে তোমার 2 প্রতিটি সময় আপনি লুপের মাধ্যমে যেতে হবে. 147 00:08:58,000 --> 00:09:03,000 এবং তারপর এই কোড যে আসলে ঠিক কোন লুপ অংশ হিসাবে সঞ্চালিত বোঝায়. 148 00:09:03,000 --> 00:09:09,000 এবং একটি লুপ করার জন্য, এই সময় আসলে আমরা বাইরে লুপ আরম্ভ আছে, 149 00:09:09,000 --> 00:09:12,000 যাতে, উদাহরণস্বরূপ, আসুন আমরা বলতে লুপ একই টাইপ হিসাবে আমি বর্ণনা করতে চেষ্টা করছেন. 150 00:09:12,000 --> 00:09:16,000 আমরা int i = 0 লুপ আরম্ভ করার আগে বলতে হবে. 151 00:09:16,000 --> 00:09:20,000 তারপর আমরা যখন তোমার <10 এই কি বলতে পারে, 152 00:09:20,000 --> 00:09:22,000 তাই কোড একই আগে হিসাবে ব্লক, 153 00:09:22,000 --> 00:09:26,000 এবং এই সময় কোড আপডেটের জন্য উদাহরণস্বরূপ অংশ,, আমি + + ', 154 00:09:26,000 --> 00:09:29,000 লুপ এর ভিতরে আসলে যায়. 155 00:09:29,000 --> 00:09:33,000 এবং অবশেষে, একটি কাজের জন্য যখন, এটা অনুরূপ যখন লুপ যাও, 156 00:09:33,000 --> 00:09:36,000 কিন্তু আমরা যে একবার কোড নির্ণয় করা হবে স্মরণে রাখতে হবে 157 00:09:36,000 --> 00:09:40,000 আগে অবস্থা চেক করা হয়, তাই এটি অনেক বেশি অর্থ 158 00:09:40,000 --> 00:09:44,000 যদি আপনি এটি তাকান নিচ অনুযায়ী. 159 00:09:44,000 --> 00:09:49,000 ইন করার সময় একটি লুপ কোড মূল্যায়ন করার আগে আপনাকে এমনকি শর্ত তাকান, 160 00:09:49,000 --> 00:09:55,000 যখন একটি লুপ যেহেতু, এটি পরীক্ষা করে প্রথম. 161 00:09:55,000 --> 00:09:59,000 বিবৃতি এবং ভেরিয়েবল. 162 00:09:59,000 --> 00:10:04,000 যখন আমরা একটি নতুন উপাদান তৈরি করতে চান আমরা প্রথমে এটি আরম্ভ করতে চান. 163 00:10:04,000 --> 00:10:07,000 >> উদাহরণস্বরূপ, int-বার বার পরিবর্তনশীল সূচনা করে, 164 00:10:07,000 --> 00:10:10,000 কিন্তু এটি একটি মান দেয় না, তাই কি হয় এখন দণ্ড এর মান? 165 00:10:10,000 --> 00:10:12,000 আমরা জানি না. 166 00:10:12,000 --> 00:10:14,000 এটা কিছু আবর্জনা মান যে মেমরি পূর্বে ছিল সঞ্চিত হতে পারে, 167 00:10:14,000 --> 00:10:16,000 এবং আমরা যে ভেরিয়েবল ব্যবহার করতে না চান 168 00:10:16,000 --> 00:10:19,000 যতক্ষণ না আমরা আসলে এটি একটি মান প্রদান, 169 00:10:19,000 --> 00:10:21,000 তাই আমরা এখানে এটা ডিক্লেয়ার. 170 00:10:21,000 --> 00:10:24,000 তারপর আমরা এটি 42 নীচের হতে আরম্ভ. 171 00:10:24,000 --> 00:10:28,000 অবশ্যই এখন,, আমরা জানতে পারি যে এই কাজ এক লাইন, int = 42 বার করা যেতে পারে. 172 00:10:28,000 --> 00:10:30,000 তবে একাধিক পদ্ধতি অনুসরণ করে যাচ্ছি করা সাফ, 173 00:10:30,000 --> 00:10:34,000 ঘোষণা এবং আরম্ভের আলাদাভাবে এখানে ঘটছে. 174 00:10:34,000 --> 00:10:38,000 এটা এক ধাপ উপর সেটা হয়, এবং পরবর্তী এক, int-baz = দণ্ড + 1 টি, 175 00:10:38,000 --> 00:10:44,000 এই নীচের বিবৃতি, যাতে এই কোড ব্লক শেষে যে বাড়তি baz, 176 00:10:44,000 --> 00:10:48,000 যদি আমরা baz মান মুদ্রণ এটি ছিল 44 হবে 177 00:10:48,000 --> 00:10:52,000 কারণ আমরা ঘোষণা এবং এটি 1> বার হতে আরম্ভ করা, 178 00:10:52,000 --> 00:10:58,000 এবং তারপর আমরা তা বাড়ায় সঙ্গে আরো একবার +. 179 00:10:58,000 --> 00:11:02,000 আমরা এই সুন্দর সংক্ষিপ্তভাবে উপর গিয়েছিলাম, কিন্তু এটা একটা সাধারণ ভালো আছে 180 00:11:02,000 --> 00:11:04,000 কি থ্রেড এবং ইভেন্ট হয় অন্তর্দৃষ্টিসম্পন্ন. 181 00:11:04,000 --> 00:11:06,000 আমরা প্রধানত শয়তান এই হয়নি, 182 00:11:06,000 --> 00:11:09,000 তাই আপনি কোড থ্রেডের একাধিক ক্রম হিসাবে মনে করতে পারেন 183 00:11:09,000 --> 00:11:11,000 একই সময়ে চলমান. 184 00:11:11,000 --> 00:11:14,000 বাস্তবতা ইন, এটা সম্ভবত একই সময়ে সঞ্চালিত না, 185 00:11:14,000 --> 00:11:17,000 কিন্তু abstractly ধরণের আমরা যে ভাবে মনে করতে পারেন. 186 00:11:17,000 --> 00:11:20,000 >> উদাহরণস্বরূপ ভূত ইন,, আমরা একাধিক sprites ছিল. 187 00:11:20,000 --> 00:11:22,000 সেই একই সময়ে বিভিন্ন কোড নির্বাহ করা যায়নি. 188 00:11:22,000 --> 00:11:26,000 এক হাঁটা যখন অন্য কিছু বলছে না করা হতে পারে 189 00:11:26,000 --> 00:11:29,000 একটি পর্দার বিভিন্ন অংশ. 190 00:11:29,000 --> 00:11:34,000 অনুষ্ঠান হয় পৃথক যুক্তিবিজ্ঞান বাইরে অন্য কোনো উপায় 191 00:11:34,000 --> 00:11:37,000 মধ্যে আপনার কোড বিভিন্ন উপাদান, 192 00:11:37,000 --> 00:11:40,000 এবং আমরা ভূত ছিল এর ঘটনা ব্রডকাস্ট ব্যবহার করে অনুকরণ করতে সক্ষম, 193 00:11:40,000 --> 00:11:43,000 এবং যে প্রকৃত যখন আমি পান, আমি শুনতে যখন হইনি, 194 00:11:43,000 --> 00:11:47,000 কিন্তু মূলত এটা একটা উপায় তথ্য প্রেরণ 195 00:11:47,000 --> 00:11:49,000 থেকে এক পরী অন্য. 196 00:11:49,000 --> 00:11:52,000 উদাহরণস্বরূপ, আপনি খেলা উপর প্রেরণ করতে পারেন, 197 00:11:52,000 --> 00:11:56,000 এবং যখন অন্য পরী খেলা পায় উপর, 198 00:11:56,000 --> 00:11:58,000 এটি একটি নির্দিষ্ট উপায় সাড়া. 199 00:11:58,000 --> 00:12:03,000 এটা একটি গুরুত্বপূর্ণ মডেল প্রোগ্রামিং জন্য বুঝতে. 200 00:12:03,000 --> 00:12:07,000 শুধু মৌলিক সপ্তাহ 0 ওভার যেতে, কি আমরা ধরে চলে গেছে এ পর্যন্ত করেছি, 201 00:12:07,000 --> 00:12:10,000 আসুন এই সহজ সি প্রোগ্রাম তাকান. 202 00:12:10,000 --> 00:12:14,000 টেক্সট একটু বিট এখানে থেকে ছোট হতে পারে, কিন্তু আমি এটা সত্যিই উপর দ্রুত যাবেন হতে পারে. 203 00:12:14,000 --> 00:12:20,000 আমরা 2 উপরে, cs50.h এবং stdio.h এ হেডার ফাইল সহ করছি. 204 00:12:20,000 --> 00:12:23,000 এরপর আমরা করছি একটি ধ্রুবক বলা সীমা 100 সংজ্ঞা. 205 00:12:23,000 --> 00:12:26,000 এরপর আমরা করছি আমাদের প্রধান ফাংশন রূপায়ণকারী. 206 00:12:26,000 --> 00:12:29,000 যেহেতু এখানে আমরা ব্যবহার করে কমান্ড লাইন আর্গুমেন্ট না আমরা অকার্যকর করা প্রয়োজন 207 00:12:29,000 --> 00:12:32,000 প্রধান হিসাবে জন্য আর্গুমেন্ট. 208 00:12:32,000 --> 00:12:38,000 আমরা দেখতে প্রধান উপরে int. এটা রিটার্ন টাইপ তাই নীচে ফিরে 0. 209 00:12:38,000 --> 00:12:41,000 এবং আমরা CS50 লাইব্রেরি ফাংশন ব্যবহার করছেন int-get 210 00:12:41,000 --> 00:12:45,000 ইনপুট জন্য ব্যবহারকারী, জিজ্ঞাসা এবং আমরা এই পরিবর্তনশীল x এর মধ্যে এটি সংরক্ষণ, 211 00:12:45,000 --> 00:12:51,000 তাই আমরা উপরে x ঘোষণা, এবং আমরা x = GetInt সঙ্গে এটি আরম্ভ. 212 00:12:51,000 --> 00:12:53,000 >> আমরা তারপরে যদি ব্যবহারকারী দিয়েছেন ভাল ইনপুট আমাদের দেখুন. 213 00:12:53,000 --> 00:12:59,000 এটি যদি ≥ LIMIT আমরা একটি ত্রুটির কোড 1 প্রত্যাবর্তন করার সময় একটি ত্রুটি বার্তা প্রিন্ট করতে চান. 214 00:12:59,000 --> 00:13:02,000 এবং অবশেষে, যদি ব্যবহারকারী আমাদের দেওয়া করেনি ভাল ইনপুট 215 00:13:02,000 --> 00:13:08,000 আমরা নম্বর এবং স্কয়ার যে ফলাফল প্রিন্ট আউট চলুন. 216 00:13:08,000 --> 00:13:11,000 শুধু নিশ্চিত করতে যে তাদের সব আঘাত হোম 217 00:13:11,000 --> 00:13:17,000 আপনি এখানে কোডের বিভিন্ন অংশের লেবেল দেখতে পারেন. 218 00:13:17,000 --> 00:13:19,000 আমি ধ্রুব, হেডার ফাইল উল্লেখ করেছে. 219 00:13:19,000 --> 00:13:21,000 ওহ, int-x. যে একটি স্থানীয় পরিবর্তনশীল মনে রাখবেন কিনা তা নিশ্চিত করুন. 220 00:13:21,000 --> 00:13:24,000 যে একটি পরিবর্তনশীল বিশ্ব থেকে এটি বৈপরীত্য, যা আমরা যে বিষয়ে কথা বলতে পারবেন 221 00:13:24,000 --> 00:13:27,000 কিছুক্ষন পরে পর্যালোচনা সময়, 222 00:13:27,000 --> 00:13:30,000 এবং আমরা লাইব্রেরি ফাংশন কলিং printf হয়, 223 00:13:30,000 --> 00:13:34,000 তাই আমরা যদি stdio.h হেডার ফাইলটি অন্তর্ভুক্ত ছিল না 224 00:13:34,000 --> 00:13:37,000 আমরা printf কল করতে পারব না. 225 00:13:37,000 --> 00:13:42,000 এবং আমি বিশ্বাস করি যে তীর এখানে কেটে গিয়েছে% d তে প্রতি নির্দেশ করা হয়, 226 00:13:42,000 --> 00:13:45,000 যা printf মধ্যে ফরম্যাট স্ট্রিং. 227 00:13:45,000 --> 00:13:52,000 এটি বলছে যে একটি সংখ্যা,% d হিসাবে এই পরিবর্তনশীল প্রিন্ট আউট. 228 00:13:52,000 --> 00:13:58,000 এবং যে সপ্তাহ 0 জন্য এটা. 229 00:13:58,000 --> 00:14:06,000 এখন লুকাস অবিরত যাচ্ছে. 230 00:14:06,000 --> 00:14:08,000 আরে, না. আমার নাম লুকাস. 231 00:14:08,000 --> 00:14:10,000 আমি ক্যাম্পাস, মাথের সেরা বাড়িতে একটি বার্ষিক, 232 00:14:10,000 --> 00:14:14,000 এবং আমি সপ্তাহ 1 এবং 2.1 সম্পর্কে অল্প কথা বলতে যাচ্ছি. 233 00:14:14,000 --> 00:14:16,000 [1 সপ্তাহ এবং 2.1!] [লুকাস Freitas] 234 00:14:16,000 --> 00:14:19,000 হিসাবে Lexi, বলছে যখন আমরা শুরু থেকে ভূত C এবং আপনার কোড অনুবাদ ছিল 235 00:14:19,000 --> 00:14:23,000 বিষয় আমরা খেয়াল না হয় যে আপনি ঠিক করতে পারবেন না 236 00:14:23,000 --> 00:14:26,000 আপনার কোড লিখুন এবং এটি একটি সবুজ পতাকা আর ব্যবহার করুন. 237 00:14:26,000 --> 00:14:30,000 বাস্তবিক, আপনি কিছু পদক্ষেপ আপনার সি প্রোগ্রাম ব্যবহার করা আছে 238 00:14:30,000 --> 00:14:33,000 একটি এক্সিকিউটেবল ফাইল হয়ে. 239 00:14:33,000 --> 00:14:36,000 মূলত আপনি কি করবেন আপনি যখন একটি প্রোগ্রাম লেখা সেটি যে 240 00:14:36,000 --> 00:14:40,000 আপনি একটি ভাষা যে একটি কম্পাইলার বুঝতে পারেন আপনার ধারণা অনুবাদ, 241 00:14:40,000 --> 00:14:44,000 তাই যখন আপনি সি একটি প্রোগ্রাম করছি লেখা 242 00:14:44,000 --> 00:14:47,000 আপনি কি করছেন প্রকৃতপক্ষে কিছু লেখা যে আপনার কম্পাইলার বুঝতে হবে, 243 00:14:47,000 --> 00:14:50,000 এবং তারপর কম্পাইলার যে কোড অনুবাদ যাচ্ছে 244 00:14:50,000 --> 00:14:53,000 মধ্যে কিছু যে আপনার কম্পিউটার বুঝতে হবে. 245 00:14:53,000 --> 00:14:55,000 >> এবং জিনিস, আপনার কম্পিউটারে করা হয় আসলে খুব বোবা. 246 00:14:55,000 --> 00:14:57,000 আপনার কম্পিউটার কেবল বুঝতে 0 সেঃ এবং 1s করতে পারেন, 247 00:14:57,000 --> 00:15:01,000 তাই আসলে প্রথম কম্পিউটারের সাধারণত মানুষ প্রোগ্রাম 248 00:15:01,000 --> 00:15:04,000 ব্যবহার করে আর 0 সেঃ এবং 1s, কিন্তু না, শ্বরপ্রসাদ. 249 00:15:04,000 --> 00:15:07,000 আমরা 0 সেঃ এবং 1s জন্য ক্রম মুখস্থ করতে হবে না 250 00:15:07,000 --> 00:15:10,000 জন্য লুপ জন্য অথবা যখন জন্য একটি লুপ এবং তাই একটি. 251 00:15:10,000 --> 00:15:13,000 এটা কেন আমরা একটি কম্পাইলার আছে. 252 00:15:13,000 --> 00:15:17,000 কি একটা কম্পাইলার আছে এটা মূলত সি কোড অনুবাদ, 253 00:15:17,000 --> 00:15:21,000 আমাদের ক্ষেত্রে, একটি ভাষা যে আপনার কম্পিউটার বুঝতে হবে, 254 00:15:21,000 --> 00:15:25,000 যা অবজেক্ট কোড, এবং কম্পাইলার যে আমরা ব্যবহার করছেন 255 00:15:25,000 --> 00:15:30,000 ঝনঝন শব্দ বলা হয়, তাই এটি আসলে ঝনঝন জন্য প্রতীক. 256 00:15:30,000 --> 00:15:33,000 আপনি যখন আপনার প্রোগ্রাম আছে, আপনি 2 কিছু করার আছে. 257 00:15:33,000 --> 00:15:37,000 প্রথমত, আপনার প্রোগ্রাম কম্পাইল আছে, এবং তারপর আপনি আপনার প্রোগ্রাম চালানো চলুন. 258 00:15:37,000 --> 00:15:41,000 আপনার প্রোগ্রাম আপনাকে অপশনের তাই অনেক আছে সঙ্কলন. 259 00:15:41,000 --> 00:15:44,000 প্রথম এক ঝনঝন program.c না হয় 260 00:15:44,000 --> 00:15:47,000 যার মধ্যে প্রোগ্রাম আপনার প্রোগ্রামের নাম. 261 00:15:47,000 --> 00:15:51,000 এই ক্ষেত্রে আপনি তারা ঠিক করছেন বলে যে "আরে, আমার প্রোগ্রাম কম্পাইল." দেখতে পারেন 262 00:15:51,000 --> 00:15:56,000 আপনি কিছু করছেন বা "আমি আমার প্রোগ্রামের জন্য এই নাম চাই" বলছে না. 263 00:15:56,000 --> 00:15:58,000 >> দ্বিতীয় বিকল্পটি আপনার প্রোগ্রাম নামকরণ করা হয়. 264 00:15:58,000 --> 00:16:02,000 আপনি ঝনঝন-ণ এবং তারপর নাম চান সেটি বলতে পারেন 265 00:16:02,000 --> 00:16:06,000 এক্সিকিউটেবল ফাইল নামে হিসাবে এবং তারপর program.c যাও. 266 00:16:06,000 --> 00:16:11,000 এবং আপনি এ প্রোগ্রাম করতে না পারে, এবং কিভাবে প্রথম 2 ক্ষেত্রে দেখুন 267 00:16:11,000 --> 00:16:15,000 আমি করা গ., এবং তৃতীয় একজন কেবলমাত্র আমি প্রোগ্রাম আছে? 268 00:16:15,000 --> 00:16:18,000 হ্যাঁ, আসলে আপনাকে করা গ. না যখন আপনি ব্যবহার করা উচিত. 269 00:16:18,000 --> 00:16:22,000 অন্যথা আসলে কম্পাইলার আপনাকে চিত্কার যাও যাচ্ছে. 270 00:16:22,000 --> 00:16:24,000 এবং এছাড়াও, আমি যদি আপনি মনে করতে না জানি, 271 00:16:24,000 --> 00:16:29,000 কিন্তু বার আমরা ব্যবহৃত-lcs50 অথবা-lm অনেক. 272 00:16:29,000 --> 00:16:31,000 যে লিঙ্ক বলা হয়. 273 00:16:31,000 --> 00:16:35,000 এটা কম্পাইলার বলে যে আপনাকে সেই লাইব্রেরি ব্যবহারের অধিকার থাকবে, 274 00:16:35,000 --> 00:16:39,000 তাই আপনি যদি যাও cs50.h ব্যবহার করতে চান তাহলে আপনি আসলে টাইপ আছে 275 00:16:39,000 --> 00:16:43,000 ঝনঝন-program.c lcs50. 276 00:16:43,000 --> 00:16:45,000 যদি আপনি তা না করেন তাহলে, কম্পাইলার জানা যাচ্ছে না 277 00:16:45,000 --> 00:16:50,000 আপনি যে cs50.h. যারা ফাংশন ব্যবহার করছেন 278 00:16:50,000 --> 00:16:52,000 এবং আপনি যখন আপনার প্রোগ্রাম আপনাকে 2 অপশন আছে চালাতে চান. 279 00:16:52,000 --> 00:16:57,000 আপনি যদি ঝনঝন program.c কি আপনার নামের একটি প্রোগ্রাম কি দেয় না. 280 00:16:57,000 --> 00:17:01,000 আপনি এটি. / A.out ব্যবহার করে চালানো আছে. 281 00:17:01,000 --> 00:17:06,000 A.out একটি সাধারণ নাম যে ঝনঝন আপনার প্রোগ্রাম দেয় যদি আপনি একটি নাম এটা কি না. 282 00:17:06,000 --> 00:17:11,000 অন্যথায় আপনি. / প্রোগ্রাম চালু না যদি আপনি আপনার প্রোগ্রামটি একটি নাম কেউ জানে না করছি, 283 00:17:11,000 --> 00:17:15,000 এবং এছাড়াও যদি আপনি প্রোগ্রামের নাম না কি যে একটি প্রোগ্রাম পেতে যাচ্ছে 284 00:17:15,000 --> 00:17:23,000 ইতিমধ্যে হয় going to গ ফাইল হিসাবে একই নামের প্রোগ্রাম করা হবে. 285 00:17:23,000 --> 00:17:26,000 তারপর আমরা ধরনের তথ্য এবং তথ্য সম্পর্কে বললাম. 286 00:17:26,000 --> 00:17:31,000 >> মূলত তথ্য ধরনের সামান্য বাক্সে তারা ব্যবহার হিসাবে একই জিনিস 287 00:17:31,000 --> 00:17:35,000 যাও মান সংরক্ষণ, তাই তথ্য ধরনের Pokémons ঠিক মত আসলে. 288 00:17:35,000 --> 00:17:39,000 তারা সব আকারের এবং রকমের. 289 00:17:39,000 --> 00:17:43,000 আমি যদি যে উপমা অর্থে তোলে জানি না. 290 00:17:43,000 --> 00:17:46,000 তথ্য আকার আসলে মেশিন আর্কিটেকচারের উপর নির্ভর করে. 291 00:17:46,000 --> 00:17:49,000 সমস্ত তথ্য মাপ যে আমি এখানে দেখানোর চলেছি 292 00:17:49,000 --> 00:17:53,000 একটি 32 বিট মেশিন, যা আমাদের প্রয়োগ ক্ষেত্রে আসলে, 293 00:17:53,000 --> 00:17:56,000 কিন্তু আসলে আপনি যদি আপনার ম্যাক বা উইন্ডোজ রয়েছে কোডিং 294 00:17:56,000 --> 00:17:59,000 সম্ভবত আপনি একটি 64 বিট মেশিনের আছে চলুন, 295 00:17:59,000 --> 00:18:03,000 তাই মনে রাখবেন যে এখানে তথ্য মাপ যে আমি যাচ্ছি দেখানোর জন্য 296 00:18:03,000 --> 00:18:06,000 32 বিট মেশিনের জন্য. 297 00:18:06,000 --> 00:18:08,000 প্রথম এক যে ছিল আমরা দেখেছি কোন int, 298 00:18:08,000 --> 00:18:10,000 যা বেশ সহজবোধ্য. 299 00:18:10,000 --> 00:18:13,000 আপনাকে ব্যবহার করার জন্য একটি পূর্ণসংখ্যা সঞ্চয় int. 300 00:18:13,000 --> 00:18:16,000 আমরা চরিত্র, গৃহস্থালির কাজ দেখেছি. 301 00:18:16,000 --> 00:18:20,000 আপনি যদি একটি চিঠি বা সামান্য চিহ্ন ব্যবহার করতে চান তাহলে সম্ভবত আপনি একটি গৃহস্থালি ব্যবহার করছি না. 302 00:18:20,000 --> 00:18:26,000 একটি গৃহস্থালি 1 বাইট, যা 8 Lexi বলেন ভালো বিট, মানে আছে. 303 00:18:26,000 --> 00:18:31,000 মূলত আমরা একটি ছক ASCII যে 256 আছে 304 00:18:31,000 --> 00:18:34,000 0 সেঃ এবং 1s সম্ভাব্য সমাহার, 305 00:18:34,000 --> 00:18:37,000 এবং তারপর যখন আপনি একটি গৃহস্থালি টাইপ করুন এটি অনুবাদ করছে 306 00:18:37,000 --> 00:18:44,000 অক্ষর যে উত্তরগুলি আপনি একটি নম্বর আছে যে আপনি Lexi যেমন ASCII টেবিল, বলেন. 307 00:18:44,000 --> 00:18:48,000 আমরা float, যা আমরা দশমিক সংখ্যা সঞ্চয় ব্যবহার আছে. 308 00:18:48,000 --> 00:18:53,000 উদাহরণস্বরূপ, আপনি যদি 3.14 চয়ন করতে চান, তাহলে আপনাকে একটি float ব্যবহার চলুন 309 00:18:53,000 --> 00:18:55,000 অথবা একটি ডবল যে আরো স্পষ্টতা আছে. 310 00:18:55,000 --> 00:18:57,000 একটি float 4 বাইট আছে. 311 00:18:57,000 --> 00:19:01,000 একটি ডবল 8 বাইট আছে, তাই শুধু পার্থক্য হল স্পষ্টতা. 312 00:19:01,000 --> 00:19:04,000 আমরা একটি দীর্ঘ যে পূর্ণসংখ্যার জন্য ব্যবহৃত হয়, 313 00:19:04,000 --> 00:19:09,000 এবং আপনাকে একটি 32 বিট মেশিনের জন্য কোন int এবং একটি দীর্ঘ একই আকার আছে দেখতে পারেন, 314 00:19:09,000 --> 00:19:13,000 তাই এটি সত্যিই অর্থে দেখা যায় না একটি 32 বিট মেশিনের মধ্যে একটি দীর্ঘ ব্যবহার. 315 00:19:13,000 --> 00:19:17,000 >> কিন্তু আপনি যদি একটি ম্যাক এবং 64 বিট মেশিনের ব্যবহার করছেন, আসলে একটি দীর্ঘ 8 আকার আছে, 316 00:19:17,000 --> 00:19:19,000 তাই এটি সত্যিই আর্কিটেকচারের উপর নির্ভর করে. 317 00:19:19,000 --> 00:19:22,000 32 বিট মেশিনের জন্য এটি সত্যিই একটি দীর্ঘ ব্যবহার করা কোনো অনুভূতি না. 318 00:19:22,000 --> 00:19:25,000 এবং তারপর একটি অন্য হাত লম্বা লম্বা,, 8 বাইট আছে, 319 00:19:25,000 --> 00:19:30,000 তাই এটা খুবই ভাল আর যদি আপনি একটি পূর্ণসংখ্যা করাতে চাই. 320 00:19:30,000 --> 00:19:34,000 এবং পরিশেষে, আমরা স্ট্রিং আছে, যা আসলে একটি গৃহস্থালি *, 321 00:19:34,000 --> 00:19:37,000 যা একটি গৃহস্থালি একটি পয়েন্টার. 322 00:19:37,000 --> 00:19:40,000 এটা খুব সহজ যে স্ট্রিং এর আকারের মত হবে মনে হয় 323 00:19:40,000 --> 00:19:42,000 অক্ষরের সংখ্যা যে আপনি আছে, 324 00:19:42,000 --> 00:19:45,000 কিন্তু আসলে টুকিটাকি কাজ নিজেই * 325 00:19:45,000 --> 00:19:49,000 একটি গৃহস্থালি, যা 4 বাইটের একটি পয়েন্টার মাপ আছে. 326 00:19:49,000 --> 00:19:52,000 একটি গৃহস্থালি * আকার 4 বাইট. 327 00:19:52,000 --> 00:19:56,000 আপনি যদি ছোট একটি শব্দ বা অক্ষর বা কিছু আছে কোন ব্যাপার না. 328 00:19:56,000 --> 00:19:58,000 এটি 4 বাইট হতে যাচ্ছে. 329 00:19:58,000 --> 00:20:01,000 আমরা কাস্টিং সম্পর্কে অল্প শিখেছি, 330 00:20:01,000 --> 00:20:04,000 যাতে আপনি দেখতে পারেন, উদাহরণস্বরূপ, যদি আপনি আছে,, একটি প্রোগ্রাম যা বলছেন 331 00:20:04,000 --> 00:20:08,000 int x = 3 এবং তারপর printf ("% d", x / 2) 332 00:20:08,000 --> 00:20:12,000 আপনি কি না কি এটি পর্দায় মুদ্রণ করা হচ্ছে? 333 00:20:12,000 --> 00:20:14,000 >> কেউ? >> [ছাত্রদের] 2. 334 00:20:14,000 --> 00:20:16,000 1. >> 1, হাঁ. 335 00:20:16,000 --> 00:20:20,000 আপনি যখন 3/2 এটা যাও 1.5 পাওয়া যাচ্ছে, 336 00:20:20,000 --> 00:20:24,000 কিন্তু যেহেতু আমরা একটি পূর্ণসংখ্যা ব্যবহার করছেন তা দশমিক অংশ উপেক্ষা করবে, 337 00:20:24,000 --> 00:20:26,000 এবং আপনি 1 আছে চলুন. 338 00:20:26,000 --> 00:20:29,000 যদি আপনি যে উদাহরণ ঘটতে জন্য কি কি করতে পারবেন, না চান, 339 00:20:29,000 --> 00:20:33,000 একটি float ডিক্লেয়ার y = x. 340 00:20:33,000 --> 00:20:40,000 তারপর এখন x যে যাও 3 ব্যবহৃত হতে যাও y মধ্যে 3,000 হতে যাচ্ছে. 341 00:20:40,000 --> 00:20:44,000 এবং তারপর আপনি y / 2 মুদ্রণ করতে পারেন. 342 00:20:44,000 --> 00:20:50,000 বাস্তবিক, আমি একটি 2 থাকা উচিত. ওখানে. 343 00:20:50,000 --> 00:20:55,000 এটি 3.00/2.00 কি করবে, 344 00:20:55,000 --> 00:20:58,000 এবং আপনি 1.5 পেতে যাচ্ছেন. 345 00:20:58,000 --> 00:21:06,000 এবং আমরা শুধু 2 দশমিক অংশ দশমিক ইউনিট চাইতে এই .2 চ আছে. 346 00:21:06,000 --> 00:21:12,000 আপনি যদি .3 চ আছে তা 1,500 আসলে আছে যাচ্ছে. 347 00:21:12,000 --> 00:21:16,000 যদি এটি 2 তা 1.50 হতে যাচ্ছে. 348 00:21:16,000 --> 00:21:18,000 আমরা এই ক্ষেত্রে এখানে আছে. 349 00:21:18,000 --> 00:21:22,000 আপনি যদি float না x = 3.14 এবং তারপর আপনি printf x 350 00:21:22,000 --> 00:21:24,000 আপনি 3.14 পেতে যাচ্ছেন. 351 00:21:24,000 --> 00:21:29,000 এবং যদি আপনি না x = x এর int, 352 00:21:29,000 --> 00:21:34,000 যা কোন int x হিসাবে বিবেচনা মানে এবং আপনি এক্স এখন মুদ্রণ 353 00:21:34,000 --> 00:21:36,000 আপনি 3.00 আছে চলুন. 354 00:21:36,000 --> 00:21:38,000 কি যে জানার জন্য? 355 00:21:38,000 --> 00:21:41,000 কারণ প্রথমে আপনি একটি পূর্ণসংখ্যা হিসাবে করছেন x এর চিকিত্সা হয়, তাই আপনি দশমিক অংশ উপেক্ষা করছেন, 356 00:21:41,000 --> 00:21:45,000 এবং তারপর আপনি এক্স মুদ্রণ করছি. 357 00:21:45,000 --> 00:21:47,000 এবং পরিশেষে, তাহলে আপনি এটা করতে পারেন, 358 00:21:47,000 --> 00:21:52,000 int x = 65, এবং তারপর আপনি একটি গৃহস্থালি গ = x ঘোষণা, 359 00:21:52,000 --> 00:21:56,000 এবং আপনি যদি সি মুদ্রণ আসলে আপনি পেতে যাচ্ছে করছি 360 00:21:56,000 --> 00:21:59,000 তবে মূলত কি, এখানে আপনি করছেন 361 00:21:59,000 --> 00:22:02,000 হয় অক্ষর মধ্যে পূর্ণসংখ্যা অনুবাদ, 362 00:22:02,000 --> 00:22:05,000 ASCII ছক ঠিক আছে. 363 00:22:05,000 --> 00:22:08,000 আমরা গণিত অপারেটরদের সম্পর্কে বললাম. 364 00:22:08,000 --> 00:22:14,000 এদের অধিকাংশই প্রশংসনীয় সহজবোধ্য, তাই, +, -, *, /, 365 00:22:14,000 --> 00:22:20,000 এবং আমরা mod, যা 2 সংখ্যার একটি বিভাগ বাকি সম্পর্কে বললাম. 366 00:22:20,000 --> 00:22:23,000 আপনি যদি 10 উদাহরণস্বরূপ,% 3, আছে, 367 00:22:23,000 --> 00:22:27,000 এটা মানে 3 10 বিভক্ত করা, এবং কি বাকি? 368 00:22:27,000 --> 00:22:30,000 এটি 1 হতে যাচ্ছে, তাই এটি প্রোগ্রাম অনেক জন্য আসলে খুব দরকারী. 369 00:22:30,000 --> 00:22:38,000 আমি Vigenère এবং সিজার জন্য না চমত্কার নিশ্চিত করুন যে আপনি ছেলেরা সব mod ব্যবহৃত. 370 00:22:38,000 --> 00:22:43,000 গণিত অপারেটরদের আমার, খুব সতর্কতা অবলম্বন করা আবশ্যক যখন * এবং / মিশ্রন. 371 00:22:43,000 --> 00:22:48,000 >> উদাহরণস্বরূপ, যদি আপনি না (3/2) * 2 কি আপনি পেতে যাচ্ছি? 372 00:22:48,000 --> 00:22:50,000 [ছাত্রদের] 2. 373 00:22:50,000 --> 00:22:54,000 হাঁ, 2, কারণ 3/2 1.5 হতে হবে, 374 00:22:54,000 --> 00:22:57,000 কিন্তু আপনি 2 পূর্ণসংখ্যার মধ্যে অপারেশন করছি 375 00:22:57,000 --> 00:22:59,000 আপনি আসলে ঠিক করছি 1 বিবেচনা যাচ্ছে, 376 00:22:59,000 --> 00:23:03,000 এবং তারপর 1 * 2 2 হবে, তাই খুব খুব, সতর্কতা অবলম্বন করা আবশ্যক 377 00:23:03,000 --> 00:23:07,000 যখন ইন্টিজার সঙ্গে পাটিগণিত করছেন কারণ 378 00:23:07,000 --> 00:23:12,000 আপনি যে ক্ষেত্রে যে 2 = 3 পেতে পারে. 379 00:23:12,000 --> 00:23:14,000 এবং এছাড়াও প্রাধান্য সম্পর্কে খুব সতর্কতা অবলম্বন করা আবশ্যক. 380 00:23:14,000 --> 00:23:21,000 আপনি সাধারণতঃ w বন্ধনী ববহার করে নিশ্চিত করুন যে আপনি কি জানেন যে আপনি ব্যবহার করছেন করা উচিত. 381 00:23:21,000 --> 00:23:27,000 অবশ্যই কিছু দরকারী শর্টকাট,, একটি তোমার + বা i + = 1 382 00:23:27,000 --> 00:23:30,000 অথবা ব্যবহার + =. 383 00:23:30,000 --> 00:23:34,000 যা i = i + 1 করছেন হিসাবে একই জিনিস. 384 00:23:34,000 --> 00:23:39,000 আপনি আমি কি করতে পারেন - বা তোমার - = 1, 385 00:23:39,000 --> 00:23:42,000 যা আমি = আমি -1 হিসাবে একই জিনিস, 386 00:23:42,000 --> 00:23:46,000 আপনি কিছু না loops জন্য অনেক ব্যবহার, অন্তত. 387 00:23:46,000 --> 00:23:52,000 এছাড়াও, * জন্য, যদি আপনি ব্যবহার * = এবং যদি আপনি না, উদাহরণস্বরূপ, 388 00:23:52,000 --> 00:23:57,000 তোমার * = 2 = আমি তোমার * 2 বলছে একই জিনিস, 389 00:23:57,000 --> 00:23:59,000 এবং বিভাগ জন্য একই জিনিস. 390 00:23:59,000 --> 00:24:08,000 আপনি যদি না তোমার / 2 = এটা আমি = আমি / 2 হিসাবে একই জিনিস. 391 00:24:08,000 --> 00:24:10,000 >> এখন আমার কর্ম. 392 00:24:10,000 --> 00:24:13,000 আপনি না শিখেছি যে ফাংশন একজন খুব ভাল কৌশল কোড সংরক্ষণ 393 00:24:13,000 --> 00:24:16,000 যখন আপনি প্রোগ্রামিং করছি, তাই যদি আপনি একই কাজ করতে চান 394 00:24:16,000 --> 00:24:20,000 কোড মধ্যে আবার এবং আবার সম্ভবত, আপনি একটি ফাংশন ব্যবহার করতে চান 395 00:24:20,000 --> 00:24:25,000 ঠিক তাই আপনি এবং কপি এবং উপর আবার কোড কপি করে পেস্ট করতে হবে না. 396 00:24:25,000 --> 00:24:28,000 বাস্তবিক, প্রধান একটি ফাংশন, এবং যখন আমি দেখানোর একটি ফাংশন বিন্যাসে আপনি 397 00:24:28,000 --> 00:24:32,000 আপনি যে যে বেশ স্পষ্ট দেখতে চলুন. 398 00:24:32,000 --> 00:24:35,000 আমরা কিছু লাইব্রেরি থেকে ফাংশন ব্যবহার, 399 00:24:35,000 --> 00:24:39,000 উদাহরণস্বরূপ, printf, GetIn, CS50 লাইব্রেরি থেকে যা, 400 00:24:39,000 --> 00:24:43,000 এবং toupper মত অন্যান্য কার্যাবলী. 401 00:24:43,000 --> 00:24:46,000 ঐ সমস্ত কর্ম অন্যান্য লাইব্রেরি প্রকৃতপক্ষে বাস্তবায়িত হয়, 402 00:24:46,000 --> 00:24:49,000 এবং যখন আপনি আপনার প্রোগ্রাম প্রারম্ভে ঐ শিকল ফাইল রাখা 403 00:24:49,000 --> 00:24:53,000 আপনি আপনার সম্পর্কে যারা ফাংশন কোড দিতে পারেন দয়া করে বলছে 404 00:24:53,000 --> 00:24:57,000 তাই আমি নিজেই তাদের বাস্তবায়ন করতে হবে না? 405 00:24:57,000 --> 00:25:00,000 এবং আপনার নিজের ফাংশন, তাই লিখতে পারেন যখন আপনি প্রোগ্রামিং শুরু 406 00:25:00,000 --> 00:25:04,000 আপনি বুঝি যে লাইব্রেরি সকল ফাংশন যে আপনি প্রয়োজন নেই. 407 00:25:04,000 --> 00:25:10,000 উদাহরণস্বরূপ শেষ pset জন্য,, আমরা লিখেছেন একত্র আঁকা,, এবং লুকআপ, 408 00:25:10,000 --> 00:25:13,000 এবং খুব খুব, গুরুত্বপূর্ণ ফাংশন লিখতে সমর্থ 409 00:25:13,000 --> 00:25:17,000 কারণ তাদের দরকারী, এবং আমরা ব্যবহার করি সব সময় তাদের প্রোগ্রামিং, 410 00:25:17,000 --> 00:25:19,000 এবং এটা কোড অনেক সঞ্চয়. 411 00:25:19,000 --> 00:25:21,000 একটি ফাংশন বিন্যাস হল এই এক. 412 00:25:21,000 --> 00:25:24,000 আমরা শুরু থেকেই রিটার্ন টাইপ আছে. রিটার্ন টাইপ কি? 413 00:25:24,000 --> 00:25:27,000 এটি শুধু যখন আপনার ফাংশন ফিরে যাচ্ছে. 414 00:25:27,000 --> 00:25:29,000 আপনি যদি একটি উদাহরণ জন্য ফাংশন,, গৌণিক আছে, 415 00:25:29,000 --> 00:25:31,000 যে কোনো একটি পূর্ণসংখ্যা গৌণিক নিরূপণ করা যাচ্ছে না, 416 00:25:31,000 --> 00:25:34,000 সম্ভবত এটি একটি পূর্ণসংখ্যা ফিরে যাচ্ছে. 417 00:25:34,000 --> 00:25:37,000 তারপর ফিরে যাও int-এ টাইপ করা যাচ্ছে না. 418 00:25:37,000 --> 00:25:41,000 Printf আসলে একটি রিটার্ন টাইপ অকার্যকর হয়েছে 419 00:25:41,000 --> 00:25:43,000 কারণ আপনি কিছু ফিরে করছি না. 420 00:25:43,000 --> 00:25:45,000 শুধুমাত্র আপনার পর্দায় জিনিষ মুদ্রণ 421 00:25:45,000 --> 00:25:48,000 এবং ফাংশন পরে ছেড়ে যাচ্ছেন. 422 00:25:48,000 --> 00:25:51,000 তারপর আপনি যে ফাংশন আপনি চয়ন করতে পারেন এর নাম আছে. 423 00:25:51,000 --> 00:25:55,000 আপনি একটু যুক্তিসঙ্গত হতে পারে, যেমন xyz নামের মত নাম করার জন্য চয়ন করা উচিত নয় 424 00:25:55,000 --> 00:25:58,000 বা ভালো x2f. 425 00:25:58,000 --> 00:26:02,000 একটি নামের যে অর্থে তোলে মেক আপ করার চেষ্টা করুন. 426 00:26:02,000 --> 00:26:04,000 >> উদাহরণস্বরূপ, যদি এটা গৌণিক, বলতে গৌণিক. 427 00:26:04,000 --> 00:26:08,000 যদি এটি একটি ফাংশন যে কিছু আঁকা হবে, এটি নাম আঁকা. 428 00:26:08,000 --> 00:26:11,000 এবং তারপর আমরা পরামিতি, যা নামেও পরিচিত আর্গুমেন্ট আছে, 429 00:26:11,000 --> 00:26:14,000 সম্পদ যে আপনার ফাংশন এর প্রয়োজন মত যা 430 00:26:14,000 --> 00:26:17,000 আপনার কোড থেকে তার টাস্ক সম্পাদনের জন্য. 431 00:26:17,000 --> 00:26:20,000 আপনি যদি একটি সংখ্যা গৌণিক নিরূপণ করতে চান 432 00:26:20,000 --> 00:26:23,000 সম্ভবত আপনি একটি সংখ্যা গৌণিক নিরূপণ করতে হবে. 433 00:26:23,000 --> 00:26:27,000 আর্গুমেন্ট আপনি যে আছে চলুন এক নম্বর হল নিজেকে. 434 00:26:27,000 --> 00:26:31,000 এবং তারপর এটা কিছু না এবং শেষে মান ফিরে যাচ্ছে 435 00:26:31,000 --> 00:26:35,000 যতক্ষণ না এটি একটি অকার্যকর ফাংশন. 436 00:26:35,000 --> 00:26:37,000 যাক এর একটি উদাহরণ দেখুন. 437 00:26:37,000 --> 00:26:40,000 যদি আমি একটা ফাংশন যে পূর্ণসংখ্যার একটি অ্যারের মধ্যে সব সংখ্যার অঙ্কের লিখতে চান, 438 00:26:40,000 --> 00:26:43,000 প্রথম সব, রিটার্ন টাইপ যাও int হবে 439 00:26:43,000 --> 00:26:46,000 কারণ আমি পূর্ণসংখ্যার একটি অ্যারে আছে. 440 00:26:46,000 --> 00:26:51,000 এবং তারপর আমি sumArray ভালো ফাংশন নাম আছে চলেছি, 441 00:26:51,000 --> 00:26:54,000 এবং তারপর এটা অ্যারে নিজেই নিতে int-nums যাচ্ছে, এর, 442 00:26:54,000 --> 00:26:58,000 এবং তারপর অ্যারের তাই আমি জানি কিভাবে আমি অনেক সংখ্যার যোগফল যাও আছে দৈর্ঘ্য. 443 00:26:58,000 --> 00:27:02,000 তারপর আমি একটি পরিবর্তনশীল নামক উদাহরণস্বরূপ সমষ্টি,, 0 আরম্ভ আছে, 444 00:27:02,000 --> 00:27:08,000 এবং প্রত্যেক সময় আমি অ্যারের মধ্যে একটি উপাদান দেখতে আমি এটি সংকলনে, যোগ, তাই উচিত আমি লুপ জন্য একটি কি. 445 00:27:08,000 --> 00:27:15,000 শুধু ভালো Lexi বলেন, আপনি কি int i = 0, তোমার <দৈর্ঘ্য এবং তোমার +. 446 00:27:15,000 --> 00:27:20,000 এবং আমি অ্যারের প্রতিটি উপাদান জন্য কি + = nums [i] সমষ্টি, 447 00:27:20,000 --> 00:27:24,000 এবং তারপর আমি ফিরে সমষ্টি, তাই খুব সহজ, এবং এটা কোড অনেকটা সংরক্ষণ 448 00:27:24,000 --> 00:27:28,000 যদি আপনি অনেক বার এই ফাংশন ব্যবহার করছেন. 449 00:27:28,000 --> 00:27:32,000 তারপর আমরা শর্ত কটাক্ষপাত নেন. 450 00:27:32,000 --> 00:27:38,000 যদি আমাদের সাথে আছে, অন্যথায়, এবং অন্যথায় যদি. 451 00:27:38,000 --> 00:27:42,000 যাক কি হয় তাদের মধ্যে পার্থক্য দেখতে. 452 00:27:42,000 --> 00:27:45,000 এই কোড 2 কটাক্ষপাত করা. তাদের মধ্যে পার্থক্য কি? 453 00:27:45,000 --> 00:27:49,000 প্রথম এক মূলত করেনি কোড আপনি বলতে চান 454 00:27:49,000 --> 00:27:51,000 যদি একটি সংখ্যা হল +, -, বা 0. 455 00:27:51,000 --> 00:27:55,000 প্রথম এক বলেছেন যদি এটা> 0 তারপর এটা ইতিবাচক. 456 00:27:55,000 --> 00:28:00,000 এটি যদি 0 = 0 তখন এটা, এবং যদি এটা <0 তারপর এটি ঋণাত্মক. 457 00:28:00,000 --> 00:28:04,000 >> এবং অন্য এক যদি অন্যথায়, যদি অন্যথায়, করছে. 458 00:28:04,000 --> 00:28:07,000 দুই এর মধ্যে পার্থক্য হচ্ছে এই এক আসলে যাচ্ছে 459 00:28:07,000 --> 00:28:13,000 যদি> 0, <0 = 0 বা তিনবার, চেক 460 00:28:13,000 --> 00:28:17,000 উদাহরণের জন্য, তাই যদি আপনি 2 নম্বর আছে, তা এখানে আসে এবং বলে যাচ্ছে 461 00:28:17,000 --> 00:28:21,000 যদি (x> 0), এবং এটা ইয়েস যাচ্ছে, তাই আমি মুদ্রণ ইতিবাচক. 462 00:28:21,000 --> 00:28:25,000 কিন্তু যদিও আমি জানি যে এটা> 0 এবং এটি যাও 0 বা <0 করা যাচ্ছে না 463 00:28:25,000 --> 00:28:29,000 আমি এখনও করছি করতে যাচ্ছে এটা 0, এটা <0, 464 00:28:29,000 --> 00:28:33,000 তাই আসলে আমি যাচ্ছি ভিতর IFS যে আমি না কি আছে 465 00:28:33,000 --> 00:28:38,000 কারণ ইতিমধ্যে আমি জানি যে এইসব অবস্থার কোনো সন্তুষ্ট করা যাচ্ছে না. 466 00:28:38,000 --> 00:28:41,000 আমি যদি অন্য ব্যবহার, যদি অন্যথায়, বিবৃতি পারেন. 467 00:28:41,000 --> 00:28:45,000 এটি মূলত বলছেন যদি x = 0 আমি ইতিবাচক মুদ্রণ. 468 00:28:45,000 --> 00:28:48,000 যদি এটা না, আমি এই পরীক্ষা করতে যাচ্ছি. 469 00:28:48,000 --> 00:28:51,000 যদি এটি 2 আমি যাচ্ছি না এই কাজ করতে হবে. 470 00:28:51,000 --> 00:28:54,000 মূলত আমি যদি x = 2 ছিল আপনি বলতে হবে 471 00:28:54,000 --> 00:28:57,000 যদি (x> 0), হ্যাঁ, তাই এই মুদ্রণ. 472 00:28:57,000 --> 00:29:00,000 এখন যে আমি জানি যে এটা> 0 এবং এটা যদি সন্তুষ্ট প্রথম 473 00:29:00,000 --> 00:29:02,000 আমি এই কোড রান এমনকি যাচ্ছি না. 474 00:29:02,000 --> 00:29:09,000 কোড রান দ্রুত আসলে,, 3 গুণ দ্রুত আপনি যদি এই ব্যবহার. 475 00:29:09,000 --> 00:29:11,000 আমরা সম্পর্কে এবং এবং বা শিখেছি. 476 00:29:11,000 --> 00:29:15,000 আমি এই মাধ্যমে Lexi কারণ ইতিমধ্যে তাদের সম্বন্ধে কথা বলত যেতে যাচ্ছি না. 477 00:29:15,000 --> 00:29:17,000 এটি শুধু && এবং | | অপারেটর. 478 00:29:17,000 --> 00:29:21,000 >> আমি শুধু বলবো সতর্কতা অবলম্বন করা আবশ্যক হয় যখন আপনি 3 শর্ত আছে. 479 00:29:21,000 --> 00:29:24,000 এব w বন্ধনী ববহার কারণ এটা খুব বিভ্রান্ত ব্যবহার করুন যখন আপনি একটি শর্ত আছে 480 00:29:24,000 --> 00:29:27,000 এবং অন্য এক বা অন্য এক. 481 00:29:27,000 --> 00:29:30,000 এব w বন্ধনী ববহার ঠিক নিশ্চিত করুন যে আপনি শর্ত জানার জন্য ব্যবহার করা 482 00:29:30,000 --> 00:29:34,000 কারণ উদাহরণস্বরূপ, যে ক্ষেত্রে, আপনি কল্পনা করতে পারেন যে 483 00:29:34,000 --> 00:29:38,000 এটা প্রথম অবস্থা এবং এক বা অন্যান্য হতে পারে 484 00:29:38,000 --> 00:29:41,000 অথবা 2 অবস্থার একটি সংমিশ্রণে এবং 485 00:29:41,000 --> 00:29:45,000 বা তৃতীয় এক, তাই ঠিক সতর্কতা অবলম্বন করা আবশ্যক. 486 00:29:45,000 --> 00:29:48,000 এবং পরিশেষে, আমরা সুইচ সম্পর্কে বললাম. 487 00:29:48,000 --> 00:29:53,000 একটি সুইচ খুবই দরকারী যখন আপনি একটি ভেরিয়েবল আছে. 488 00:29:53,000 --> 00:29:55,000 চলুন শুরু করা যাক যে আপনি n মত একটি পরিবর্তনশীল আছে 489 00:29:55,000 --> 00:29:59,000 যে 0, 1, বা 2 হতে পারেন, এবং সেইসব ক্ষেত্রে প্রতিটি 490 00:29:59,000 --> 00:30:01,000 আপনি একটি কাজ চলুন. 491 00:30:01,000 --> 00:30:04,000 আপনি সুইচ পরিবর্তনশীল, এবং এটি নির্দেশ করে যে পারেন 492 00:30:04,000 --> 00:30:08,000 তারপর মান হল VALUE1 মত আমি এই কাজ করতে যাচ্ছি, 493 00:30:08,000 --> 00:30:12,000 এবং তারপর আমি বিরতি, যার অর্থ আমি অন্যান্য ক্ষেত্রে কোনো তাকান যাচ্ছি না 494 00:30:12,000 --> 00:30:15,000 কারণ ইতিমধ্যে আমরা এই ক্ষেত্রে সন্তুষ্ট 495 00:30:15,000 --> 00:30:20,000 এবং এছাড়াও তারপর value2 এবং তাই, এবং আমি একটি ডিফল্ট সুইচ করতে পারেন. 496 00:30:20,000 --> 00:30:24,000 তার মানে যদি এটি ক্ষেত্রে যে আমি তা নিয়ে কোন সন্তুষ্ট না 497 00:30:24,000 --> 00:30:29,000 যে আমি অন্য কিছু করতে যাচ্ছে, কিন্তু করছি যে ঐচ্ছিক. 498 00:30:29,000 --> 00:30:36,000 যে আমার জন্য সব. এখন আসুন টমি আছে. 499 00:30:36,000 --> 00:30:41,000 সমস্ত অধিকার, এই যাও 3 সপ্তাহ পর হতে যাচ্ছে. 500 00:30:41,000 --> 00:30:45,000 এগুলি বিষয় আমরা আচ্ছাদন ক্রিপ্টো, সুযোগ, ইত্যাদি ইত্যাদি অ্যারে, করতে হবে, কিছু কিছু. 501 00:30:45,000 --> 00:30:49,000 শুধু একটি ক্রিপ্টো উপর দ্রুত শব্দ. আমরা এই বাড়িতে হাতুড়ি যাচ্ছেন না. 502 00:30:49,000 --> 00:30:52,000 >> আমরা pset 2 এই করেছিল, কিন্তু ব্যঙ্গ জন্য নিশ্চিত করা যে আপনি পার্থক্য জানেন 503 00:30:52,000 --> 00:30:54,000 মধ্যে সিজার এবং Vigenère গোল্লা গোল্লা, 504 00:30:54,000 --> 00:30:57,000 কিভাবে উভয় যারা সাইফারগুলির কাজ এবং কি এনক্রিপ্ট করার মত 505 00:30:57,000 --> 00:30:59,000 টেক্সট ডিক্রিপ্ট এবং যারা 2 সাইফারগুলির ব্যবহার করে. 506 00:30:59,000 --> 00:31:03,000 মনে রাখবেন, শুধু সিজার সাইফার একই পরিমাণ দ্বারা প্রতিটি অক্ষর rotates, 507 00:31:03,000 --> 00:31:06,000 এমনটা নিশ্চিত আপনি mod দ্বারা বর্ণমালার অক্ষর সংখ্যা. 508 00:31:06,000 --> 00:31:09,000 এবং অন্যদিকে Vigenère সাইফার,, প্রতিটি অক্ষর rotates 509 00:31:09,000 --> 00:31:12,000 দ্বারা একটি ভিন্ন পরিমাণ, তাই বরং বলছে 510 00:31:12,000 --> 00:31:15,000 প্রতি 3 Vigenère অক্ষর যে পরিমাণ ঘোরানো প্রতিটি অক্ষর আবর্তিত হবে 511 00:31:15,000 --> 00:31:17,000 দ্বারা একটি ভিন্ন পরিমাণ কিছু অভিব্যক্তি উপর নির্ভর করে 512 00:31:17,000 --> 00:31:20,000 অভিব্যক্তি যেখানে প্রতিটি অক্ষর কিছু ভিন্ন পরিমাণ উপস্থাপন 513 00:31:20,000 --> 00:31:26,000 যাও দ্বারা স্পষ্ট টেক্সট আবর্তিত. 514 00:31:26,000 --> 00:31:28,000 চলুন শুরু করা যাক পরিবর্তনশীল সুযোগ সম্পর্কে প্রথম আলাপ. 515 00:31:28,000 --> 00:31:30,000 2 ভেরিয়েবল বিভিন্ন ধরনের হয়. 516 00:31:30,000 --> 00:31:33,000 আমরা লোকাল ভেরিয়েবল আছে, এবং এই সংজ্ঞায়িত করা যাচ্ছে 517 00:31:33,000 --> 00:31:36,000 বাইরে প্রধান বা বাইরের কোনো ফাংশন বা ব্লক, 518 00:31:36,000 --> 00:31:39,000 এবং এই প্রোগ্রামে আপনার অ্যাক্সেসযোগ্য কোথাও হতে হবে. 519 00:31:39,000 --> 00:31:41,000 আপনি যদি একটি ফাংশন আছে এবং যে কাজ করতে হয় যখন একটি লুপ 520 00:31:41,000 --> 00:31:44,000 বড় পরিবর্তনশীল বিশ্বের সর্বত্র অ্যাক্সেসযোগ্য হয়. 521 00:31:44,000 --> 00:31:48,000 অন্যদিকে স্থানীয় পরিবর্তনশীল,, হয় scoped জায়গা যেখানে এটি সংজ্ঞায়িত করা হয়. 522 00:31:48,000 --> 00:31:53,000 >> উদাহরণস্বরূপ, আপনি যদি একটি ফাংশন আছে এখানে,, আমরা এই ফাংশন গ্রাম আছে, 523 00:31:53,000 --> 00:31:56,000 এবং এর ভিতরে একটি গ্রাম এখানে পরিবর্তনশীল y বলা আছে, 524 00:31:56,000 --> 00:31:58,000 এবং তার মানে তাদের এই একটি স্থানীয় পরিবর্তনশীল. 525 00:31:58,000 --> 00:32:00,000 যদিও এই পরিবর্তনশীল y বলা হয় 526 00:32:00,000 --> 00:32:03,000 এবং এই পরিবর্তনশীল এই 2 y ফাংশন বলা হয় 527 00:32:03,000 --> 00:32:06,000 কোন ধারণা কি একে অপরের স্থানীয় ভেরিয়েবেলগুলো আছে. 528 00:32:06,000 --> 00:32:10,000 অন্য দিকে, এখানে আমরা বলতে int x = 5, 529 00:32:10,000 --> 00:32:12,000 এবং এই ফাংশনের কোন সুযোগ বাইরে. 530 00:32:12,000 --> 00:32:16,000 এটা প্রধান সুযোগ বাইরে এর, তাই এই একটি বিশ্বব্যাপী পরিবর্তনশীল. 531 00:32:16,000 --> 00:32:20,000 যে এইসব 2 কর্ম যে ভিতর মানে যখন আমি বলতে এক্স - বা x + 532 00:32:20,000 --> 00:32:26,000 আমি একই x এর সাহায্যে এই y এবং এই y বিভিন্ন ভেরিয়েবল করছি অ্যাক্সেস. 533 00:32:26,000 --> 00:32:30,000 এটা বিশ্বব্যাপী একটি পরিবর্তনশীল এবং একটি স্থানীয় পরিবর্তনশীল মধ্যে পার্থক্য. 534 00:32:30,000 --> 00:32:33,000 যতদুর নকশা উদ্বিগ্ন হয় মাঝে মাঝে, এটি সম্ভবত একটি ভাল ধারণা 535 00:32:33,000 --> 00:32:37,000 যাও ভেরিয়েবল স্থানীয় রাখা যখনই সম্ভবত আপনি যা করতে পারেন 536 00:32:37,000 --> 00:32:39,000 যেহেতু গ্লোবাল ভেরিয়েবল হচ্ছে একটি গুচ্ছ সত্যিই বিভ্রান্তিকর পেতে পারেন. 537 00:32:39,000 --> 00:32:42,000 আপনি যদি কর্ম একটি গুচ্ছ আছে সব একই জিনিস পরিবর্তন 538 00:32:42,000 --> 00:32:45,000 আপনি কি যদি ঘটনাক্রমে এই ফাংশন পরিবর্তন বিশ্বব্যাপী এই ভুলবেন না পারে, 539 00:32:45,000 --> 00:32:47,000 এবং এই অন্যান্য ফাংশন এটি সম্পর্কে না জানে, 540 00:32:47,000 --> 00:32:50,000 এবং এটি প্রশংসনীয় বিভ্রান্তিকর পেতে হিসাবে আপনি আরো কোড পাওয়ার জন্য. 541 00:32:50,000 --> 00:32:53,000 পালন ভেরিয়েবল স্থানীয় যখনই সম্ভবত আপনি যা করতে পারেন 542 00:32:53,000 --> 00:32:56,000 শুধু ভাল নকশা. 543 00:32:56,000 --> 00:33:00,000 অ্যারেগুলির মনে রাখবেন, সেগুলো একেবারে একই ধরনের উপাদানের তালিকা. 544 00:33:00,000 --> 00:33:04,000 Ci ভেতরে 1, 2.0 মত একটি তালিকা আছে, হ্যালো করতে পারেন না. 545 00:33:04,000 --> 00:33:06,000 আমরা ঠিক করতে পারবেন না. 546 00:33:06,000 --> 00:33:11,000 >> যখন আমরা সি একটি অ্যারের ডিক্লেয়ার উপাদানের সব একই ধরনের হতে থাকে. 547 00:33:11,000 --> 00:33:14,000 এখানে আমি 3 পূর্ণসংখ্যার একটি অ্যারে আছে. 548 00:33:14,000 --> 00:33:18,000 এখানে আমি অ্যারের দ্বারা আছে, কিন্তু যদি আমি এই বাক্য গঠন করছি মধ্যে এটি প্রকাশক 549 00:33:18,000 --> 00:33:21,000 যেখানে আমি কি উপাদানের সব হয় আমি এই 3 টেকনিক্যালি প্রয়োজন নির্দিষ্ট করে না. 550 00:33:21,000 --> 00:33:25,000 কম্পাইলার হয় স্মার্ট যথেষ্ট চিন্তা কিভাবে অ্যারে বড় হওয়া উচিত. 551 00:33:25,000 --> 00:33:28,000 এখন যখন আমি পেতে বা একটি অ্যারের মান সেট করতে চান 552 00:33:28,000 --> 00:33:30,000 এই বাক্য গঠন করে না. 553 00:33:30,000 --> 00:33:33,000 আসলে এই অ্যারের দ্বিতীয় উপাদান কারণ, মনে রাখবেন সংশোধন করতে হবে, 554 00:33:33,000 --> 00:33:36,000 সংখ্যায়ন 0 আরম্ভ, না 1. 555 00:33:36,000 --> 00:33:42,000 যদি আমি এই মান পড়তে চাই আমি ভালো কিছু বলতে পারে int x = অ্যারের [1]. 556 00:33:42,000 --> 00:33:44,000 অথবা মত যদি আমি এই মান সেট করতে চান, এখানে আমি যা করছি, 557 00:33:44,000 --> 00:33:47,000 আমি [1] অ্যারে বলতে পারে = 4. 558 00:33:47,000 --> 00:33:50,000 যে সময় তাদের সূচী দ্বারা উপাদান অ্যাক্সেস 559 00:33:50,000 --> 00:33:52,000 অথবা তাদের স্থান বা যেখানে তারা অ্যারে আছে, 560 00:33:52,000 --> 00:33:57,000 এবং যে তালিকা 0 আরম্ভ করা হয়. 561 00:33:57,000 --> 00:34:00,000 আমরা অ্যারে শ্রেনীবিন্যাস থাকতে পারে, 562 00:34:00,000 --> 00:34:03,000 এবং এই একটি বহু - মাত্রিক অ্যারে বলা হয়. 563 00:34:03,000 --> 00:34:05,000 যখন আমরা একটি বহু - মাত্রিক অ্যারে আছে 564 00:34:05,000 --> 00:34:07,000 তার মানে আমরা সারি এবং কলাম মত কিছু থাকতে পারে, 565 00:34:07,000 --> 00:34:11,000 এবং এটি শুধুমাত্র এই visualizing বা এটা সম্পর্কে চিন্তা করার একটি পদ্ধতি. 566 00:34:11,000 --> 00:34:14,000 যখন আমি একটি বহু - মাত্রিক অ্যারে আছে মানে আমি প্রয়োজন শুরু চলেছি 567 00:34:14,000 --> 00:34:17,000 1 এর অধিক সূচক কারণ যদি আমি একটি গ্রিড আছে 568 00:34:17,000 --> 00:34:19,000 ঠিক বলছে সারি আপনি আছেন আমাদের একটি নম্বর দেওয়া যাবে না. 569 00:34:19,000 --> 00:34:22,000 যে সত্যিই ঠিক এর আমাদের সংখ্যার একটি তালিকা দিতে যাচ্ছে. 570 00:34:22,000 --> 00:34:25,000 চলুন শুরু করা যাক বলতে আমি এই অ্যারে এখানে আছে. 571 00:34:25,000 --> 00:34:30,000 আমি একটি গ্রিড অ্যারে বলা আছে, এবং আমি এটি এর 2 টি সারি এবং কলাম 3 করছি বলছে, 572 00:34:30,000 --> 00:34:32,000 এবং তাই এই visualizing এটি একটি পদ্ধতি. 573 00:34:32,000 --> 00:34:37,000 যখন আমি বলতে আমি [1] এ উপাদান পেতে চান [2] 574 00:34:37,000 --> 00:34:41,000 তার মানে কারণ এই প্রথম সারি এবং তারপর কলাম 575 00:34:41,000 --> 00:34:44,000 আমি 1 যেহেতু আমি 1 বলেন সারি তিড়িং লাফ যাচ্ছি. 576 00:34:44,000 --> 00:34:49,000 >> তারপর আমি কলাম 2 আসা এখানে উপর যাচ্ছে, এবং করছি আমি 6 মান পাওয়া যাচ্ছে না. 577 00:34:49,000 --> 00:34:51,000 জানার জন্য? 578 00:34:51,000 --> 00:34:55,000 বহু মাত্রিক অ্যারে মনে রাখবেন,, ঠিক আছে টেকনিক্যালি অ্যারে একটা সুবিন্যস্ত. 579 00:34:55,000 --> 00:34:57,000 আমরা অ্যারে শ্রেনীবিন্যাস শ্রেনীবিন্যাস থাকতে পারে. 580 00:34:57,000 --> 00:35:00,000 আমরা যাব যাব, কিন্তু আমার মনে হয় সত্যিই একটি উপায় হতে পারে 581 00:35:00,000 --> 00:35:03,000 কিভাবে এই রোগে আউট হচ্ছে এবং কি করছেন তা ঠাহর করা হয় 582 00:35:03,000 --> 00:35:09,000 এই মত একটি গ্রিড. 583 00:35:09,000 --> 00:35:12,000 যখন আমরা অ্যারে ফাংশান পাস, তারা কেমন আচরণ করে যাচ্ছেন 584 00:35:12,000 --> 00:35:16,000 একটু যখন আমরা ফাংশান নিয়মিত ভেরিয়েবল পাস চেয়ে ভিন্নভাবে বিট 585 00:35:16,000 --> 00:35:18,000 ভালো কোন int অথবা একটি float ক্ষণস্থায়ী. 586 00:35:18,000 --> 00:35:21,000 যখন আমরা কোন int বা গৃহস্থালির কাজ বা এইসব তথ্য অন্য কোনো ধরনের মধ্যে পাস 587 00:35:21,000 --> 00:35:24,000 আমরা যদি শুধু ফাংশন পরিবর্তন কটাক্ষপাত গ্রহণ 588 00:35:24,000 --> 00:35:28,000 যে ভেরিয়েবলের মান পরিবর্তন পর্যন্ত বিস্তার করা যাচ্ছে না 589 00:35:28,000 --> 00:35:32,000 যাও কলিং ফাংশন. 590 00:35:32,000 --> 00:35:35,000 অন্যদিকে একটি অ্যারের সাথে, যে ঘটবে. 591 00:35:35,000 --> 00:35:39,000 যদি আমি একটি অ্যারের মধ্যে পাস কিছু ফাংশন এবং যে ফাংশন উপাদানের কিছু পরিবর্তন, 592 00:35:39,000 --> 00:35:43,000 যখন আমি ফিরে আসা যে ফাংশন বলা যাও 593 00:35:43,000 --> 00:35:47,000 আমার অ্যারের এখন হয় ভিন্ন হবে, এবং যে জন্য শব্দভান্ডার 594 00:35:47,000 --> 00:35:50,000 একটি অ্যারে রেফারেন্স দ্বারা, পাশ হিসাবে পরে আমরা দেখতে পাবেন হয়. 595 00:35:50,000 --> 00:35:53,000 এই পয়েন্টার কিভাবে কাজ করে, যেখানে এই ধরনের মৌলিক তথ্য সংক্রান্ত না, 596 00:35:53,000 --> 00:35:55,000 অন্যদিকে, মান দ্বারা প্রেরণ করা হবে. 597 00:35:55,000 --> 00:35:59,000 >> আমরা যে কিছু ভেরিয়েবলের একটি অনুলিপি এবং তারপর কপি কথা প্রসঙ্গে হিসাবে মনে করতে পারেন. 598 00:35:59,000 --> 00:36:01,000 এটা কি আমরা যে পরিবর্তনশীল সঙ্গে করি না ব্যাপার. 599 00:36:01,000 --> 00:36:06,000 কলিং ফাংশন সতর্ক হন যে এটি পরিবর্তিত হয় না হবে. 600 00:36:06,000 --> 00:36:10,000 অ্যারেগুলির হয় অল্পমাত্র বিট যে বিষয়ে বিভিন্ন. 601 00:36:10,000 --> 00:36:13,000 উদাহরণস্বরূপ, হিসাবে আমরা দেখেছি, প্রধান কেবল একটি ফাংশন 602 00:36:13,000 --> 00:36:15,000 যে 2 আর্গুমেন্ট গ্রহণ করা যেতে পারে. 603 00:36:15,000 --> 00:36:20,000 প্রধান ফাংশন প্রথম যুক্তি হল argc, বা আর্গুমেন্টের সংখ্যা, 604 00:36:20,000 --> 00:36:23,000 এবং দ্বিতীয় যুক্তি argv বলা হয়, 605 00:36:23,000 --> 00:36:27,000 এবং যারা আছে যারা আর্গুমেন্ট প্রকৃত মান. 606 00:36:27,000 --> 00:36:30,000 চলুন শুরু করা যাক বলতে আমি একটি প্রোগ্রাম this.c বলা আছে, 607 00:36:30,000 --> 00:36:34,000 এবং আমি এই করতে, এবং আমি কমান্ড লাইনে এই চালানো যাচ্ছে না. 608 00:36:34,000 --> 00:36:38,000 এখন কিছু আর্গুমেন্ট আমার প্রোগ্রাম সম্পন্ন এই বলা হয়, 609 00:36:38,000 --> 00:36:42,000 আমি এরকম কিছু একটা. বলে / এই cs 50 হতে পারে. 610 00:36:42,000 --> 00:36:45,000 এটা কি আমরা ডেভিড করতে টার্মিনালে কল্পনা প্রতিদিন. 611 00:36:45,000 --> 00:36:48,000 কিন্তু এখন প্রধান যে প্রোগ্রামের ভিতর ফাংশন 612 00:36:48,000 --> 00:36:52,000 এই মান আছে, তাই argc হয় 4. 613 00:36:52,000 --> 00:36:56,000 এটা একটু বিভ্রান্ত, কারণ আমরা শুধুমাত্র 50 cs ভীষণ ক্ষণস্থায়ী হতে পারে. 614 00:36:56,000 --> 00:36:58,000 যে মাত্র 3. 615 00:36:58,000 --> 00:37:02,000 কিন্তু মনে রাখবেন, যে argv প্রথম উপাদান বা প্রথম যুক্তি 616 00:37:02,000 --> 00:37:05,000 হয় ফাংশন নিজেই নাম. 617 00:37:05,000 --> 00:37:07,190 সুতরাং তার মানে আমরা 4 জিনিস আছে এখানে, 618 00:37:07,190 --> 00:37:10,530 এবং প্রথম উপাদান যাও. / এই হবে. 619 00:37:10,530 --> 00:37:12,970 এবং এই একটি পংক্তি হিসাবে প্রতিনিধিত্ব করা হবে. 620 00:37:12,970 --> 00:37:18,590 তারপর অবশিষ্ট উপাদান হল কি আমরা প্রোগ্রামের নামের পরে টাইপ. 621 00:37:18,590 --> 00:37:22,720 সে হিসাবে সরাইয়া একটি, হিসাবে আমরা সম্ভবত pset 2 দেখেছি, 622 00:37:22,720 --> 00:37:28,780 মনে রাখবেন, যে পংক্তিটি 50 পূর্ণসংখ্যা 50 ≠ হয়. 623 00:37:28,780 --> 00:37:32,520 তাই আমরা, ভালো কিছু 'int x = argv 3.' বলতে পারবে না 624 00:37:32,520 --> 00:37:36,470 >> যে শুধুমাত্র এর যাও জানার জন্য, যাচ্ছে না কারণ এই একটি স্ট্রিং, এবং এই একটি পূর্ণসংখ্যা. 625 00:37:36,470 --> 00:37:38,510 তাই আপনি যদি 2 মধ্যে রূপান্তর করতে চান, এবং মনে রাখবেন,, আমরা চলুন 626 00:37:38,510 --> 00:37:40,810 এই ম্যাজিক ফাংশন বলা atoi আছে. 627 00:37:40,810 --> 00:37:46,270 যে একটি পংক্তি প্রদর্শন করা হয় এবং পূর্ণসংখ্যা যে স্ট্রিং ভিতরে প্রতিনিধিত্ব ফেরৎ. 628 00:37:46,270 --> 00:37:48,360 যাতে একটি সহজ ভুল ব্যঙ্গ করতে যাও, 629 00:37:48,360 --> 00:37:51,590 শুধু চিন্তা যে স্বয়ংক্রিয়ভাবে এই সঠিক টাইপ হবে. 630 00:37:51,590 --> 00:37:53,860 তবে জানেন যে সবসময় এই পংক্তি হতে হবে 631 00:37:53,860 --> 00:38:00,920 এমনকি যদি শুধুমাত্র স্ট্রিং পূর্ণসংখ্যা মান অথবা একটি অক্ষর বা একটি float রয়েছে. 632 00:38:00,920 --> 00:38:03,380 সুতরাং এখন কিছু সময় চলমান সম্পর্কে কথা বলুন. 633 00:38:03,380 --> 00:38:06,700 যখন আমরা এই সব আলগোরিদিম যে সকল জিনিষ এই ছবি না, 634 00:38:06,700 --> 00:38:11,580 তা সত্যিই দরকারী প্রশ্ন, জিজ্ঞাসা করুন "কতদিন এরা নিতে?" 635 00:38:11,580 --> 00:38:15,500 আমরা কিছু বলা asymptotic স্বরলিপি যে চিত্রিত করা. 636 00:38:15,500 --> 00:38:18,430 তাই এই এর মানে হল - ভাল, এর বলতে আমরা আমাদের অ্যালগরিদম দিতে দেওয়া 637 00:38:18,430 --> 00:38:20,840 কিছু সত্যিই সত্যিই,, সত্যিই বড় ইনপুট. 638 00:38:20,840 --> 00:38:23,840 আমরা প্রশ্ন জিজ্ঞাসা করতে চান, "কতক্ষণ নিতে যাচ্ছে? 639 00:38:23,840 --> 00:38:26,370 কতগুলি পদক্ষেপ আমাদের এলগরিদম এটি চালানোর জন্য লাগবে 640 00:38:26,370 --> 00:38:29,980 ইনপুট হিসাবে মাপ একটি ফাংশন? " 641 00:38:29,980 --> 00:38:33,080 তাই আমাদের প্রথম চালানোর সময় ধরতে পারে ও বড় হয় 642 00:38:33,080 --> 00:38:35,380 এবং এটি আমাদের সবচেয়ে খারাপ-ক্ষেত্রে চলমান সময়. 643 00:38:35,380 --> 00:38:38,590 তাই আপনি যদি আমরা একটি অ্যারের বাছাই করতে চান, এবং আমরা একটি অ্যারের দিতে আমাদের আলগোরিদিম 644 00:38:38,590 --> 00:38:41,000 যে অনুক্রমে সাজানো আছে যখন এটি ঊর্ধ্বক্রম হতে হবে, 645 00:38:41,000 --> 00:38:43,130 যে লক হতে যাচ্ছে. 646 00:38:43,130 --> 00:38:49,800 এটি আমাদের উপরের সময় আমাদের এলগরিদম নিতে হবে সর্বাধিক দৈর্ঘ্য মধ্যে আবদ্ধ. 647 00:38:49,800 --> 00:38:54,740 অন্য দিকে, এই Ω শ্রেষ্ঠ-ক্ষেত্রে চলমান সময় বর্ণনা করা যাচ্ছে না. 648 00:38:54,740 --> 00:38:58,210 তাই আপনি যদি আমরা একটি বাছাই আলগোরিদিম একটি ইতিমধ্যে সাজানো অ্যারের দিতে, 649 00:38:58,210 --> 00:39:00,940 কতদিন সময় লাগবে তা বাছাই হবে? 650 00:39:00,940 --> 00:39:06,610 এবং এই তারপর, একটি সময় সঞ্চালনকারী নিম্ন বাউন্ড বর্ণনা. 651 00:39:06,610 --> 00:39:10,980 সুতরাং এখানে না কিছু কিছু শব্দ যা কিছু সাধারণ গুণ বর্ণনা চলমান. 652 00:39:10,980 --> 00:39:13,120 এই আদেশ ঊর্ধ্বগামী হয়. 653 00:39:13,120 --> 00:39:16,060 দ্রুততম চলমান সময় আমরা আছে ধ্রুবক বলা হয়. 654 00:39:16,060 --> 00:39:19,800 >> যে কোন ব্যাপার কতগুলি উপাদান আমরা আমাদের অ্যালগরিদম দিতে অর্থ, 655 00:39:19,800 --> 00:39:22,280 কোন ব্যাপার কিভাবে আমাদের বড় অ্যারে হয়, এটি বাছাই 656 00:39:22,280 --> 00:39:26,510 বা কাজ যাই হোক না কেন আমরা অ্যারের করছেন সবসময় সময় একই পরিমাণ গ্রহণ করা হবে. 657 00:39:26,510 --> 00:39:30,270 সুতরাং আমরা একটি মাত্র 1 টি, যা একটি ধ্রুবক সাথে উপস্থাপন করতে পারেন. 658 00:39:30,270 --> 00:39:32,410 আমরা লগারিদমিক চালানোর সময় লাগছিল. 659 00:39:32,410 --> 00:39:34,800 সুতরাং বাইনারি অনুসন্ধান ভালো কিছু লগারিদমিক, 660 00:39:34,800 --> 00:39:37,140 যেখানে আমরা প্রতি অর্ধেক সময় সমস্যা কাটা 661 00:39:37,140 --> 00:39:40,970 এবং তারপরে শুধু জিনিষ আছে, উচ্চ থেকে পেতে. 662 00:39:40,970 --> 00:39:43,580 এবং যদি আপনার কোনো গৌণিক আলগোরিদিম করছি একটি হে লেখা, 663 00:39:43,580 --> 00:39:47,850 আপনি সম্ভবত আপনার দিন এই পেশা হিসাবে বিবেচনা করা উচিত. 664 00:39:47,850 --> 00:39:53,910 যখন আমরা চলমান বার তুলনা এটা মনে রাখা গুরুত্বপূর্ণ এই জিনিষ. 665 00:39:53,910 --> 00:39:57,760 সুতরাং যদি আমি একটি অ্যালগরিদম যে আউটপুট (ঢ), এবং অন্য কেউ আছে 666 00:39:57,760 --> 00:40:03,590 হে করেনি একটি অ্যালগরিদম (2n) এইসব আসলে asymptotically সমতুল্য. 667 00:40:03,590 --> 00:40:06,590 তাই আপনি যদি আমরা একটি eleventy বিলিয়ন মত বড় সংখ্যা N কল্পনা: 668 00:40:06,590 --> 00:40:13,090 তাই যখন আমরা eleventy বিলিয়ন ভালো কিছু + 3 eleventy বিলিয়ন তুলনা করছি, 669 00:40:13,090 --> 00:40:17,640 হঠাৎ যে +3 সত্যিই একটি বড় পার্থক্য দেখা যায় না আর. 670 00:40:17,640 --> 00:40:20,980 এটা কেন আমরা এইসব জিনিস সমতুল্য হতে নাড়াচাড়া শুরু চলুন. 671 00:40:20,980 --> 00:40:24,220 এই জিনিস এখানে ধ্রুবক মতই, 2 x এই আছে, অথবা একটি 3 যোগ করুন, 672 00:40:24,220 --> 00:40:27,180 এইসব ঠিক হয় ধ্রুবক, এবং এই পর্যন্ত ড্রপ যাচ্ছি. 673 00:40:27,180 --> 00:40:32,480 সুতরাং যে কেন এই রান বার সমস্ত 3 হয় বলছে তারা হে (ঢ) একই হিসাবে. 674 00:40:32,480 --> 00:40:37,490 একইভাবে, যদি আমরা অন্যান্য 2 রান বার আছে, এর কথা বলা হে (ঢ + ³ 2n ²), আমরা যোগ করতে পারেন দিন 675 00:40:37,490 --> 00:40:42,070 + N + 7, তারপর আমরা এবং রান টাইম অন্য যে শুধু O (n ³) আছে. 676 00:40:42,070 --> 00:40:46,290 আবার, এই একই জিনিসের কারণ এই - এই একই নয়. 677 00:40:46,290 --> 00:40:49,840 এই একই জিনিষ, দুঃখিত. সুতরাং এই একই কারণ 678 00:40:49,840 --> 00:40:53,090 এই n ³ এই 2n ² আয়ত্তে আনা যাচ্ছে না. 679 00:40:53,090 --> 00:40:59,130 >> কি হয় যদি আমরা O (n ³) এবং O এর মত বার ফেলেছেন একই জিনিস না (n ²) 680 00:40:59,130 --> 00:41:02,820 কারণ এই ³ n হল এই n ² এর চেয়ে অনেক বড়. 681 00:41:02,820 --> 00:41:05,470 তাই আপনি যদি আমরা হঠাৎ বহিঃপ্রকাশ আছে, এই ব্যাপার শুরু হয়, 682 00:41:05,470 --> 00:41:08,280 কিন্তু যখন আমরা শুধুমাত্র কারণের সঙ্গে লেনদেন করছেন হিসাবে আমরা এখানে আপ, 683 00:41:08,280 --> 00:41:12,810 তাহলে যাও, কারণ শুধু তারা ড্রপ আউট হয় যাওয়া কোন ব্যাপার হচ্ছে না. 684 00:41:12,810 --> 00:41:16,760 যাক এর কিছু আলগোরিদিম আমরা এতদূর দেখা করেছি কটাক্ষপাত করা 685 00:41:16,760 --> 00:41:19,260 তাদের রান টাইম সম্পর্কে এবং কথা বলার. 686 00:41:19,260 --> 00:41:23,850 একটি তালিকার মধ্যে একটি নম্বর খুঁজছেন প্রথম উপায়, আমরা দেখেছি যে, ছিল রৈখিক অনুসন্ধান. 687 00:41:23,850 --> 00:41:26,950 রৈখিক এবং অনুসন্ধান বাস্তবায়ন হয় সুপার সহজবোধ্য. 688 00:41:26,950 --> 00:41:30,490 আমরা শুধু একটি তালিকা আছে, এবং আমরা প্রতি একক উপাদান এ তালিকায় চেয়ে চলুন 689 00:41:30,490 --> 00:41:34,260 যতক্ষণ না আমরা নম্বর খুঁজতে আমরা খুঁজছেন. 690 00:41:34,260 --> 00:41:38,370 সুতরাং তার মানে খারাপ ক্ষেত্রে, এই হে (ঢ). 691 00:41:38,370 --> 00:41:40,860 এবং সবচেয়ে খারাপ এখানে কেস যদি হয় উপাদান হতে পারে 692 00:41:40,860 --> 00:41:45,710 সর্বশেষ উপাদান তারপর, রৈখিক সন্ধান ব্যবহার করে আমরা প্রতি একক উপাদান তাকান আছে 693 00:41:45,710 --> 00:41:50,180 শেষ পর্যন্ত এক যাও আমরা যাতে যে এটি তালিকা প্রকৃতপক্ষে ছিল না. 694 00:41:50,180 --> 00:41:52,910 আমরা শুধু ছেড়ে দেওয়া halfway না পারে এবং বলে, "এটা সম্ভবত. নেই" 695 00:41:52,910 --> 00:41:55,980 আমরা গোটা ব্যাপারটাই তাকান রৈখিক অনুসন্ধান সঙ্গে আছে. 696 00:41:55,980 --> 00:41:59,090 অন্যদিকে সর্বোত্তম ক্ষেত্রে চলমান সময়,, একটি ধ্রুবক 697 00:41:59,090 --> 00:42:04,200 কারণ আমরা উপাদান খুঁজছেন সেরা ক্ষেত্রে শুধুমাত্র তালিকায় প্রথম এক. 698 00:42:04,200 --> 00:42:08,930 সুতরাং আমাদের ঠিক 1 ধাপ, সেটা ব্যাপার নয় বড় তালিকা নিতে যাচ্ছে 699 00:42:08,930 --> 00:42:12,140 আমরা যদি প্রথম উপাদান জন্য প্রত্যেক সময় খুঁজছেন. 700 00:42:12,140 --> 00:42:15,390 >> সুতরাং যখন আপনি অনুসন্ধান মনে রাখবেন,, এটা যে আমাদের অনুসারে সাজানো তালিকা করা হবে না প্রয়োজন হয়. 701 00:42:15,390 --> 00:42:19,430 কারণ কেবলমাত্র আমরা প্রতি একক উপাদান উপেক্ষা করছি যাচ্ছে, এবং এটি সত্যিই কোন ব্যাপার নয 702 00:42:19,430 --> 00:42:23,560 কি অর্ডার যারা উপাদান হল ইন 703 00:42:23,560 --> 00:42:28,110 আরো একটি বুদ্ধিমান অনুসন্ধান অ্যালগোরিদম হয় বাইনারি অনুসন্ধান মত. 704 00:42:28,110 --> 00:42:31,500 মনে রাখবেন, বাইনারি অনুসন্ধান বাস্তবায়ন হয় যখন আপনি যাচ্ছেন 705 00:42:31,500 --> 00:42:34,320 মধ্যম তালিকার দিকে তাকিয়ে থাকা. 706 00:42:34,320 --> 00:42:38,000 এবং কারণ আমরা মধ্যম এ খুঁজছেন, আমরা প্রয়োজন যে তালিকা অনুসারে বাছাই করা হয় 707 00:42:38,000 --> 00:42:40,580 বা অন্যথায় আমরা যেখানে মধ্যম হয়, জানি না এবং আমরা উপেক্ষা করা আছে 708 00:42:40,580 --> 00:42:44,480 পুরো তালিকা সেটা খুঁজে পেতে, যে সময়ে এবং তারপর আমরা শুধু সময় নষ্ট করছেন. 709 00:42:44,480 --> 00:42:48,480 তাই আপনি যদি আমরা একটি অনুসারে সাজানো তালিকা আছে এবং আমরা মধ্যম খুঁজে, আমরা মধ্যম তুলনা চলুন 710 00:42:48,480 --> 00:42:51,590 উপাদান আমরা খুঁজছেন. 711 00:42:51,590 --> 00:42:54,640 যদি খুব বেশী, তাহলে আমরা ডান অর্ধেক ভুলে যেতে পারেন 712 00:42:54,640 --> 00:42:57,810 কারণ আমরা জানি যে, যদি আমাদের উপাদান ইতিমধ্যে খুব বেশী 713 00:42:57,810 --> 00:43:01,080 এবং এই উপাদান ডান সব এমনকি উচ্চ, 714 00:43:01,080 --> 00:43:02,760 তারপর আমরা সেখানে আর চেহারা করার প্রয়োজন হবে না. 715 00:43:02,760 --> 00:43:05,430 যেখানে অপরপক্ষে, যদি আমাদের উপাদান অত্যন্ত কম, 716 00:43:05,430 --> 00:43:08,700 আমরা জানি যে উপাদান বাঁদিকে সবকিছু এছাড়াও অত্যন্ত কম, 717 00:43:08,700 --> 00:43:11,390 তাই এটি সত্যিই সেখানে চেহারা অর্থে দেখা যায় না, হয়. 718 00:43:11,390 --> 00:43:15,760 এই পথ, সঙ্গে প্রত্যেক তালিকা মিডপয়েন্ট এ পদক্ষেপে এবং প্রতিটি সময় আমরা চেহারা, 719 00:43:15,760 --> 00:43:19,060 আমরা অর্ধেক আমাদের সমস্যা কেটে যাচ্ছে কারণ হঠাৎ আমরা জানি করছি 720 00:43:19,060 --> 00:43:23,040 একটি সংখ্যা যা খুঁজছেন তা আমরা এক হতে পারে না আভা. 721 00:43:23,040 --> 00:43:26,950 >> Pseudocode এই ভালো কিছু দেখাবে, 722 00:43:26,950 --> 00:43:30,990 এবং কারণ আমরা অর্ধেক প্রতি একক সময় তালিকা করছি কাটা, 723 00:43:30,990 --> 00:43:34,920 আমাদের সবচেয়ে খারাপ-ক্ষেত্রে রৈখিক থেকে রান টাইম জাম্প লগারিদমিক যাও. 724 00:43:34,920 --> 00:43:39,260 তাই হঠাৎ আমরা আছে লগ ইন পদক্ষেপ যাতে একটি তালিকার মধ্যে একটি উপাদান খুঁজে পেতে. 725 00:43:39,260 --> 00:43:42,460 সর্বোত্তম ক্ষেত্রে চলমান সময় যদিও,, এখনও ধ্রুবক 726 00:43:42,460 --> 00:43:45,180 কারণ এখন, এর যাক সেটা যে উপাদান আমরা খুঁজছেন সেটি 727 00:43:45,180 --> 00:43:48,380 সর্বদা মূল তালিকা সঠিক মধ্যম. 728 00:43:48,380 --> 00:43:52,080 সুতরাং আমরা বড় হিসাবে আমরা চাই হিসাবে আমাদের তালিকা, প্রসারণ করা সম্ভব হয়, কিন্তু যদি আমরা উপাদান খুঁজছেন মধ্যম হয়, 729 00:43:52,080 --> 00:43:54,910 তারপর এটা আমাদের 1 পদক্ষেপ নিতে যাচ্ছে. 730 00:43:54,910 --> 00:44:00,920 তাই কেন আমরা O (n log-) এবং Ω (1) বা ধ্রুবক. 731 00:44:00,920 --> 00:44:04,510 চলুন আসলে এই তালিকায় বাইনারি অনুসন্ধান চালানো. 732 00:44:04,510 --> 00:44:08,020 সুতরাং আসুন আমরা যে উপাদান 164 খুঁজছেন বলে. 733 00:44:08,020 --> 00:44:11,650 প্রথম জিনিস আমরা করতে যাচ্ছি এই তালিকার মিডপয়েন্ট খুঁজে. 734 00:44:11,650 --> 00:44:15,060 এটা ঠিক যে মিডপয়েন্ট এইসব মধ্যে 2 নম্বর পড়া যাচ্ছে, 735 00:44:15,060 --> 00:44:18,960 তাই আসুন শুধু ইচ্ছামত বলার, প্রতি সময় মিডপয়েন্ট 2 সংখ্যার মধ্যে পড়ে, 736 00:44:18,960 --> 00:44:21,150 আসুন শুধু ধরপাকড়. 737 00:44:21,150 --> 00:44:24,330 আমরা চাই বিষয়টি আমরা নিশ্চিত ভাবে ধাপে ধাপে এই করা প্রয়োজন. 738 00:44:24,330 --> 00:44:29,040 তাই আমরা ধরপাকড় করা যাচ্ছে, এবং করছি আমরা যে 161 আমাদের তালিকা মধ্যম বলে যাচ্ছেন. 739 00:44:29,040 --> 00:44:34,640 সুতরাং 161 <164, 161 এবং বাম দিকের প্রতি উপাদান 740 00:44:34,640 --> 00:44:39,120 এছাড়াও <164, যাতে আমরা জানতে পারি যে এটি আমাদের এ সব সাহায্য করে যাচ্ছে না 741 00:44:39,120 --> 00:44:42,690 যাও খুঁজছি এখানে শুরু উপাদান কারণ আমরা না হতে পারেন খুঁজছেন. 742 00:44:42,690 --> 00:44:47,060 তাই আমরা যা করতে পারি মনে হয় আমরা ঠিক যে পুরো তালিকার বাম অর্ধেক ভুলে যেতে পারেন, 743 00:44:47,060 --> 00:44:51,700 এবং এখন কেবল 161 অনওয়ার্ড ডান থেকে বিবেচনা. 744 00:44:51,700 --> 00:44:54,050 >> তাই আবার, এই মিডপয়েন্ট; এর ঠিক ধরপাকড় করা যাক. 745 00:44:54,050 --> 00:44:56,260 এখন 175 অত্যন্ত বড়. 746 00:44:56,260 --> 00:44:59,180 যাতে আমরা জানতে পারি এটা আমাদের খুঁজছি এখানে অথবা এখানে সাহায্য করে যাচ্ছে না, 747 00:44:59,180 --> 00:45:06,610 তাই আমরা যে দূরে নিক্ষেপ করা যায়, এবং অবশেষে আমরা 164 আঘাত করব. 748 00:45:06,610 --> 00:45:10,560 বাইনারি অনুসন্ধান উপর কোন প্রশ্ন? 749 00:45:10,560 --> 00:45:14,180 চলুন শুরু করা যাক একটি ইতিমধ্যে-অনুসারে সাজানো তালিকা মাধ্যমে অনুসন্ধান থেকে যান 750 00:45:14,180 --> 00:45:17,660 প্রকৃতপক্ষে কোনো ক্রম সংখ্যার একটি তালিকা গ্রহণ 751 00:45:17,660 --> 00:45:20,960 এবং ক্রম আরোহী যে তালিকা তৈরীর. 752 00:45:20,960 --> 00:45:24,060 প্রথম আলগোরিদিম আমরা দিকে তাকিয়ে বুদ্বুদ সাজানোর বলা ছিল. 753 00:45:24,060 --> 00:45:27,300 এবং এই আলগোরিদিম আমরা দেখেছি এর সহজ হবে. 754 00:45:27,300 --> 00:45:32,970 বুদ্বুদ সাজানোর বলছেন যে যখন কোনো তালিকা ভিতরে 2 উপাদান জায়গা হয়ে গেছে, 755 00:45:32,970 --> 00:45:36,500 অর্থাত একটি নিম্ন সংখ্যা বাম সেখানে একটি উচ্চতর সংখ্যা, 756 00:45:36,500 --> 00:45:40,190 তারপর আমরা তাদের সাথে বিনিময় করা যাচ্ছে, কারণ তার মানে তাদের তালিকা হবে করছি 757 00:45:40,190 --> 00:45:42,860 "আরো সাজানো" তুলনায় এটি আগে ছিল. 758 00:45:42,860 --> 00:45:45,180 এবং আমরা আবার এই প্রক্রিয়া অবিরত করছি যাচ্ছে এবং আবার এবং আবার 759 00:45:45,180 --> 00:45:52,100 অবশেষে পর্যন্ত তাদের সঠিক অবস্থান যাও বুদবুদ উপাদানের ধরনের এবং আমরা একটি অনুসারে সাজানো তালিকা আছে. 760 00:45:52,100 --> 00:45:57,230 >> এই রান টাইম যাও হে হবে (ঢ ²). কেন? 761 00:45:57,230 --> 00:46:00,370 খারাপ ক্ষেত্রে কারণ ভাল,, আমরা প্রতিটি উপাদান নিয়ে, এবং করছি 762 00:46:00,370 --> 00:46:04,570 আমরা এবং শেষ প্রতি তালিকায় অন্যান্য উপাদান যাও তুলনা চলুন. 763 00:46:04,570 --> 00:46:08,030 কিন্তু সেরা ক্ষেত্রে, আমরা ইতিমধ্যে একটি অনুসারে সাজানো তালিকা আছে, বুদ্বুদ সাজানোর এর 764 00:46:08,030 --> 00:46:12,230 করছি একবার দিয়ে যেতে বলে, "না. আমি কোনো অদলবদল হয়নি না, তাই আমি কাজ করছি." 765 00:46:12,230 --> 00:46:17,410 সুতরাং আমরা একটি শ্রেষ্ঠ ক্ষেত্রে Ω (ঢ) চলমান সময় আছে. 766 00:46:17,410 --> 00:46:20,680 যাক এর তালিকায় বুদ্বুদ সাজানোর চালানো. 767 00:46:20,680 --> 00:46:23,560 অথবা প্রথম, কিছু না কিছু কিছু pseudocode সত্যিই দ্রুত চেহারা. 768 00:46:23,560 --> 00:46:28,160 আমরা আমরা লুপ প্রতি পুনরাবৃত্তির সময় নজর রাখা যায়, চাই বলতে চাই, 769 00:46:28,160 --> 00:46:32,190 হবে কি না তা আমরা কোনো উপাদান পরিবর্তন ট্র্যাক রাখা. 770 00:46:32,190 --> 00:46:37,610 যে জন্য কারণ, তাই যখন আমরা কোনো উপাদান অদলবদল না থামাতে চলুন. 771 00:46:37,610 --> 00:46:41,980 সুতরাং আমাদের লুপ শুরু আমরা, আনা কিছু করেননি, তাই আমরা যে মিথ্যা বলবো. 772 00:46:41,980 --> 00:46:47,170 এখন, আমরা তালিকা মাধ্যমে এবং যান উপাদান তোমার উপাদান i + 1 তুলনা চলুন 773 00:46:47,170 --> 00:46:50,310 এবং যদি এটা ক্ষেত্রে যে একটি ছোট সংখ্যা বাম সেখানে একটি বড় সংখ্যা, 774 00:46:50,310 --> 00:46:52,310 তারপর আমরা তাদের অদলবদল করছি যাচ্ছে. 775 00:46:52,310 --> 00:46:54,490 >> এবং তারপর আমরা যে আমরা একটি উপাদান আনা স্মরণ চলুন. 776 00:46:54,490 --> 00:46:58,900 তার মানে যে আমরা তালিকা মাধ্যমে অন্তত 1 আরো সময় যেতে প্রয়োজন 777 00:46:58,900 --> 00:47:02,160 কারণ অবস্থা যা আমরা থামানো হয় যখন ইতিমধ্যে পুরো তালিকা অনুসারে বাছাই করা হয়, 778 00:47:02,160 --> 00:47:04,890 অর্থাত আমরা কোনো অদলবদল করেননি. 779 00:47:04,890 --> 00:47:09,960 সুতরাং যে কেন নিচে আমাদের অবস্থা এখানে 'যখন কিছু উপাদান হয়েছে আনা যায়.' 780 00:47:09,960 --> 00:47:13,720 তাই এখন আমি কি শুধুমাত্র এই একটি তালিকা চলমান তাকান. 781 00:47:13,720 --> 00:47:16,640 আমি তালিকা 5,0,1,6,4 আছে. 782 00:47:16,640 --> 00:47:19,850 বুদ্বুদ সাজানোর যাও বাঁদিকে উপস্থিত সমস্ত উপায় শুরু হচ্ছে, এবং এটি তুলনা করে যাচ্ছে 783 00:47:19,850 --> 00:47:24,700 তোমার উপাদান, তাই 0 যাও আমি + 1 টি, যা উপাদান 1. 784 00:47:24,700 --> 00:47:29,020 এটা ভাল 5> 0 বলে যাচ্ছে, কিন্তু এর ডান 5 এখন বাম হয়, 785 00:47:29,020 --> 00:47:32,500 তাই আমি 5 এবং 0 swap প্রয়োজন. 786 00:47:32,500 --> 00:47:35,470 যখন আমি তাদের অদলবদল হঠাত্, আমি এই বিভিন্ন লিস্ট দেখতে পাবেন. 787 00:47:35,470 --> 00:47:38,260 এখন 5> 1, তাই আমরা তাদের অদলবদল চলুন. 788 00:47:38,260 --> 00:47:42,160 5 না, তাই> 6 না আমরা এখানে কিছু করার প্রয়োজন নেই. 789 00:47:42,160 --> 00:47:46,690 কিন্তু 6> 4, তাই swap প্রয়োজন. 790 00:47:46,690 --> 00:47:49,740 আবার, আমরা পুরো তালিকা ঘটনাক্রমে আবিষ্কার মাধ্যমে চালানোর প্রয়োজন 791 00:47:49,740 --> 00:47:52,330 যে এই আদেশ শেষ হয়ে গেছে; আমরা তাদের swap, 792 00:47:52,330 --> 00:47:57,120 এবং আমরা 1 তালিকা মাধ্যমে আরো সময় চালানোর জন্য এই সময়ে প্রয়োজন 793 00:47:57,120 --> 00:48:05,390 নিশ্চিত করুন যে তার আদেশ সবকিছুই এর, এবং এই বিন্দু বুদ্বুদ সাজানোর সময়ে সম্পন্ন করা. 794 00:48:05,390 --> 00:48:10,720 একটি কিছু উপাদান গ্রহণ এবং তাদের বাছাই করার জন্য বিভিন্ন এলগরিদম হয় নির্বাচন সাজান. 795 00:48:10,720 --> 00:48:15,740 নির্বাচন সাজানোর পিছনে ধারণা হয় যে আমরা একটি তালিকা অনুসারে বাছাই করা অংশ বিল্ড আপ চলুন 796 00:48:15,740 --> 00:48:18,150 একটি সময়ে 1 উপাদান. 797 00:48:18,150 --> 00:48:23,170 >> এবং আমাদের যে কি চলুন নির্মাণের তালিকা বাম সেগমেন্ট আপ হয়. 798 00:48:23,170 --> 00:48:27,510 এবং মূলত, প্রতি - প্রতিটি ধাপ উপর, আমরা যাও ক্ষুদ্রতম উপাদান আমরা চলে নিতে যাচ্ছেন 799 00:48:27,510 --> 00:48:32,310 যে এখনো সাজানো হয়েছে, এবং আমরা যে সাজানো সেগমেন্ট মধ্যে সরিয়ে নেয়া চলুন. 800 00:48:32,310 --> 00:48:35,850 তার মানে আমরা অবিরত সর্বনিম্ন পাঁচমিশালী উপাদান খুঁজে পেতে প্রয়োজন 801 00:48:35,850 --> 00:48:40,720 এবং তারপর যে উপাদান এবং সর্বনিম্ন নিতে যাই হোক না কেন সঙ্গে এটি অদলবদল 802 00:48:40,720 --> 00:48:45,090 বাকি-অধিকাংশ উপাদান যে সাজানো নয়. 803 00:48:45,090 --> 00:48:50,890 এই চালানোর সময় হে হবে (ঢ ²) কারণ লক 804 00:48:50,890 --> 00:48:55,070 আমরা প্রত্যেক অন্যান্য উপাদান প্রতি একক উপাদান তুলনা প্রয়োজন. 805 00:48:55,070 --> 00:48:59,250 কারণ আমরা যে যদি আমরা তালিকা বাম অর্ধেক শুরু, আমরা প্রয়োজন বলছে 806 00:48:59,250 --> 00:49:02,970 সম্পূর্ণ ডান অংশ মাধ্যমে ক্ষুদ্রতম উপাদান খুঁজে পাওয়া যেতে. 807 00:49:02,970 --> 00:49:05,430 এবং তারপর আবার,, আমরা সম্পূর্ণ ডান অংশ যেতে উপর এবং প্রয়োজন 808 00:49:05,430 --> 00:49:08,210 যাচ্ছে এবং বহুবার উপর যে আবার উপর রাখা. 809 00:49:08,210 --> 00:49:11,350 যে এন ² হতে যাচ্ছে. আমরা অন্য লুপ এর জন্য লুপ ভিতরে জন্য প্রয়োজন একটি চলুন 810 00:49:11,350 --> 00:49:13,350 যা n ² এর প্রস্তাব দেওয়া হয়. 811 00:49:13,350 --> 00:49:16,530 সেরা ক্ষেত্রে চিন্তার ইন, আমি কি বলতে আমরা এটি একটি ইতিমধ্যে অনুসারে সাজানো তালিকা প্রদান করা; 812 00:49:16,530 --> 00:49:19,270 আমরা আসলে n ² এর চেয়ে কোন ভাল না. 813 00:49:19,270 --> 00:49:21,730 কারণ নির্বাচন সাজানোর বুদ্ধিমান যে কোন উপায় আছে 814 00:49:21,730 --> 00:49:25,540 সর্বনিম্ন উপাদান শুধুমাত্র এক আমি ঘটতে যাও এ খুঁজছেন করা হবে. 815 00:49:25,540 --> 00:49:28,970 এটা এখনও নিশ্চিত যে এই আসলে সর্বনিম্ন করা প্রয়োজন. 816 00:49:28,970 --> 00:49:31,670 >> এবং একমাত্র উপায় নিশ্চিত যে এটা সর্বনিম্ন করা, এই এলগরিদম ব্যবহার করে, 817 00:49:31,670 --> 00:49:34,640 প্রতি একক উপাদান এ আবার চেহারা হয়. 818 00:49:34,640 --> 00:49:38,420 সত্যিই তাই, যদি আপনি এটি দিন - যদি আপনি কি ইতিমধ্যে অনুসারে সাজানো তালিকা নির্বাচন সাজানোর, 819 00:49:38,420 --> 00:49:42,720 এটি একটি তালিকা প্রদান করে যা এখনও সাজানো হয় না এটা ছাড়া কোনো ভাল যাচ্ছে না. 820 00:49:42,720 --> 00:49:46,320 যাইহোক, যদি এই কেস হবে এরকম কিছু আউটপুট (কিছু) 821 00:49:46,320 --> 00:49:50,640 এবং কিছু ওমেগা, শুধু আমরা বলতে আরো succinctly যে এটা কিছু θ পারেন. 822 00:49:50,640 --> 00:49:52,760 তাই আপনি যদি দেখতে যে আপ কোথাও আসা, যে এর মানে কি ঠিক. 823 00:49:52,760 --> 00:49:57,580 >> যদি কিছু n র থেটা ², এটা উভয় বড় হে (ঢ ²) এবং Ω (ঢ ²). 824 00:49:57,580 --> 00:49:59,790 সেরা ক্ষেত্রে লক সুতরাং, এটি একটি পার্থক্য করা হয় না, 825 00:49:59,790 --> 00:50:04,400 আলগোরিদিম প্রত্যেক সময় কি একই জিনিস হবে. 826 00:50:04,400 --> 00:50:06,610 তাই এই কি নির্বাচন সাজানোর জন্য pseudocode ভালো হত. 827 00:50:06,610 --> 00:50:10,630 আমরা মূলত করছি যে আমি তালিকা পুনরুক্তি উপর চান বলে যাচ্ছে 828 00:50:10,630 --> 00:50:15,180 অধিকার, এবং লুপ প্রতিটি পুনরাবৃত্তির সময়ে বাম থেকে, আমি গৃহ করছি 829 00:50:15,180 --> 00:50:19,780 এই তালিকার মধ্যে সাজানো অংশ সর্বনিম্ন উপাদান. 830 00:50:19,780 --> 00:50:23,260 এবং একবার আমি সেখানে কিছু সরানো, আমি যে উপাদান আবার তার প্রয়োজন হবে না. 831 00:50:23,260 --> 00:50:28,600 কারণ যত তাড়াতাড়ি আমি একটি উপাদান অদলবদল তালিকা বাম অংশ, এটা সাজানো এর 832 00:50:28,600 --> 00:50:32,600 কারণ আমরা নূন্যতম ব্যবহার করে অর্ডার আরোহী সবকিছুই করছি. 833 00:50:32,600 --> 00:50:38,740 সুতরাং আমরা বলেন, ঠিক আছে, আমরা তোমার অবস্থান করেন, এবং আমরা সবাই এ উপাদানের প্রয়োজন 834 00:50:38,740 --> 00:50:42,260 যাও তোমার অধিকার যাতে সর্বনিম্ন খুঁজে. 835 00:50:42,260 --> 00:50:46,150 যাতে আমরা মানে আমি + 1 টি তালিকা থেকে শেষ দেখতে চাই. 836 00:50:46,150 --> 00:50:51,610 এবং এখন, যদি উপাদান যে আমরা বর্তমানে এ করছি আমাদের সর্বনিম্ন কম তাই এখান থেকে দূরে, 837 00:50:51,610 --> 00:50:54,190 যা, মনে রাখবেন, আমরা শুধু সর্বনিম্ন বন্ধ হতে শুরু করছি 838 00:50:54,190 --> 00:50:57,020 যাই হোক না কেন উপাদান আমরা বর্তমানে করছি; আমি যে সর্বনিম্ন অনুমান করব. 839 00:50:57,020 --> 00:51:00,270 যদি আমি একটি উপাদান যে এর থেকে কম পান তাহলে, আমি বলতে যাচ্ছি, ঠিক আছে করছি, 840 00:51:00,270 --> 00:51:02,700 ভাল, আমি একটি নতুন সর্বনিম্ন পাওয়া গিয়েছে. 841 00:51:02,700 --> 00:51:06,080 আমি যেখানে যে সর্বনিম্ন ছিল মনে রাখা যাচ্ছে না. 842 00:51:06,080 --> 00:51:09,560 >> তাই এখন একবার, আমি যে অধিকার পাঁচমিশালী সেগমেন্ট মাধ্যমে সর্বস্বান্ত করেছি, 843 00:51:09,560 --> 00:51:16,690 আমি আমি উপাদান তোমার অবস্থান যে সঙ্গে সর্বনিম্ন উপাদান বিনিময় করা যাচ্ছে না বলতে পারেন. 844 00:51:16,690 --> 00:51:21,100 যে আমার তালিকা বিল্ড আপ করবে, আমার বাঁ দিক থেকে ডানদিকে তালিকা অনুসারে বাছাই করা অংশ, 845 00:51:21,100 --> 00:51:25,190 এবং আমরা একটি উপাদান এ আবার তাকান একবার এটা যে অংশে এর প্রয়োজন কখনও না. 846 00:51:25,190 --> 00:51:27,930 একবার আমরা এটা আনা করেছি. 847 00:51:27,930 --> 00:51:30,260 তাই আসুন এই তালিকায় নির্বাচন সাজানোর চালানো. 848 00:51:30,260 --> 00:51:38,220 এখানে নীল উপাদান যাও তোমার হবে, এবং হয় লাল উপাদান যাও সর্বনিম্ন উপাদান হবে. 849 00:51:38,220 --> 00:51:41,570 তাই তোমার তালিকা বাঁদিকে উপস্থিত সমস্ত উপায় শুরু হয়, তাই এ 5. 850 00:51:41,570 --> 00:51:44,610 এখন আমরা সর্বনিম্ন পাঁচমিশালী উপাদান খুঁজে পাওয়া প্রয়োজন. 851 00:51:44,610 --> 00:51:49,480 সুতরাং আমরা বলতে 0 <5 তাই, 0 আমার নতুন সর্বনিম্ন. 852 00:51:49,480 --> 00:51:53,820 >> কিন্তু আমি কি সেখানে থামাতে, না, কারণ যদিও আমরা যে 0 ক্ষুদ্রতম চিনতে পারেন, 853 00:51:53,820 --> 00:51:59,390 আমরা প্রত্যেক তালিকা নিশ্চিত করা অন্যান্য উপাদান মাধ্যমে চালানোর প্রয়োজন. 854 00:51:59,390 --> 00:52:01,760 সুতরাং 1 হল বড়, 6 হল বড়, 4 বড় হয়. 855 00:52:01,760 --> 00:52:05,850 এটার মানে হল যে এই উপাদানের সমস্ত আমি পরে, আমি 0 ক্ষুদ্রতম নির্ধারণ করেছি. 856 00:52:05,850 --> 00:52:09,800 আমি 5 এবং 0 অদলবদল যাচ্ছি. 857 00:52:09,800 --> 00:52:15,480 একবার আমি যে swap, আমি নতুন একটি তালিকা পেতে যাচ্ছে, এবং করছি আমি জানি আমি যে 0 এ আবার তার প্রয়োজন হবে না 858 00:52:15,480 --> 00:52:19,380 কারণ একবার আমি এটা আনা করেছি, আমি এটা সাজানো করেছি এবং আমরা কাজ সম্পন্ন হয়. 859 00:52:19,380 --> 00:52:22,730 এখন শুধু তাই যে নীল উপাদান আবার হল 5, 860 00:52:22,730 --> 00:52:26,030 এবং আমরা 1 তাকান প্রয়োজন 6 এবং 4, যে 1 নির্ধারণ 861 00:52:26,030 --> 00:52:31,520 একটি ক্ষুদ্রতম সর্বনিম্ন উপাদান, যাতে আমরা 1 এবং 5 অদলবদল করব. 862 00:52:31,520 --> 00:52:36,890 আবার, আমরা তাকান প্রয়োজন - 6 এবং 4 5 তুলনা, 863 00:52:36,890 --> 00:52:39,830 এবং আমরা 4 এবং 5 বিনিময় করা যাচ্ছে, এবং করছি পরিশেষে, তুলনা 864 00:52:39,830 --> 00:52:45,740 যারা 2 নম্বর এবং তাদের যতক্ষণ না আমরা আমাদের অনুসারে সাজানো তালিকা পেতে অদলবদল. 865 00:52:45,740 --> 00:52:49,730 নির্বাচন সাজানোর উপর কোন প্রশ্ন? 866 00:52:49,730 --> 00:52:56,420 ঠিক আছে. সর্বশেষ আলোচ্য বিষয় এখানে এর সরানো যাক, এবং যে recursion. 867 00:52:56,420 --> 00:52:59,810 >> Recursion মনে রাখবেন, এই সত্যিই মেটা জিনিস যেখানে একটি ফাংশন 868 00:52:59,810 --> 00:53:02,740 বারবার কল নিজেই. 869 00:53:02,740 --> 00:53:05,620 সুতরাং এ কিছু বিন্দু, যখন বারবার আমাদের fuction নিজেই হয় কলিং, 870 00:53:05,620 --> 00:53:10,100 প্রয়োজন কিছু বিন্দু যা আমরা থামাতে নিজেদেরকে আহ্বান করা আছে. 871 00:53:10,100 --> 00:53:13,670 কারণ যদি আমরা কি সেটা না করেন তাহলে, আমরা চিরকালের জন্য এই কাজ করছেন অগ্রসর হচ্ছে, 872 00:53:13,670 --> 00:53:16,660 এবং আমাদের প্রোগ্রাম শেষ হতে যাচ্ছে না. 873 00:53:16,660 --> 00:53:19,200 আমরা এটাকে শর্ত বেস কেস. 874 00:53:19,200 --> 00:53:22,570 এবং বেস ক্ষেত্রে বরং একটি ফাংশন আবার কলিং চেয়ে বলছেন,, 875 00:53:22,570 --> 00:53:25,330 আমি শুধু কিছু মূল্য ফেরত যাচ্ছে. 876 00:53:25,330 --> 00:53:28,080 তাই একবার আমরা একটি মান ফিরে করেছি, আমরা নিজেদেরকে কলিং ছেড়ে দিয়েছেন, 877 00:53:28,080 --> 00:53:32,550 এবং এ কল আমরা এতদূর করেছি বাকি ফিরে আসতে পারেন. 878 00:53:32,550 --> 00:53:36,050 বেস ক্ষেত্রে বিপরীত হয় recursive কেস. 879 00:53:36,050 --> 00:53:39,050 এবং এই হল যখন আমরা ফাংশন যে আমরা এখনো সদস্য না হয়ে বর্তমানে আপনি অন্য কল করতে চাই 880 00:53:39,050 --> 00:53:44,690 এবং আমরা সম্ভবত, যদিও সব সময় নয়, বিভিন্ন আর্গুমেন্ট ব্যবহার করতে চান. 881 00:53:44,690 --> 00:53:48,940 >> তাই আপনি যদি আমরা একটি ফাংশন f বলা আছে, এবং মাত্র 1 চ যুক্তি নিতে বলা হয়, 882 00:53:48,940 --> 00:53:52,010 এবং আমরা চ (1), চ (1), চ (1) কলিং রাখা, এবং এটা ঠিক যে 883 00:53:52,010 --> 00:53:56,510 যুক্তি 1 recursive কেস মধ্যে পড়ে, আমরা এখনও বন্ধ করার জন্য সেটি যাচ্ছে না. 884 00:53:56,510 --> 00:54:01,620 এমনকি যদি আমরা একটি বেস কেস আছে, আমরা নিশ্চিত যে, অবশেষে আমরা যে বেস ক্ষেত্রে আঘাত চলুন করা প্রয়োজন. 885 00:54:01,620 --> 00:54:04,250 আমরা এই ক্ষেত্রে recursive থাকা না থাকা ঠিক না. 886 00:54:04,250 --> 00:54:09,870 সাধারনত, যখন আমরা নিজেদেরকে কল, সম্ভবত আমরা প্রতিটি সময় আছে একটি বিভিন্ন যুক্তি করছি যাচ্ছে. 887 00:54:09,870 --> 00:54:12,700 এখানে একটি সত্যিই সহজ recursive ফাংশন. 888 00:54:12,700 --> 00:54:15,090 তাই এই সংখ্যা গণনা করা হবে গৌণিক. 889 00:54:15,090 --> 00:54:17,790 এখানে আমরা আমাদের শীর্ষে বেস কেস আছে. 890 00:54:17,790 --> 00:54:22,330 ইন কেস যে এন ≤ 1, আমরা গৌণিক আবার ফোন যাচ্ছেন না. 891 00:54:22,330 --> 00:54:26,490 আমরা থামাতে চলুন; আমরা ঠিক করছি কিছু মূল্য ফেরত যাচ্ছে. 892 00:54:26,490 --> 00:54:30,170 এই যদি সত্য হয়, তাহলে আমরা আমাদের ক্ষেত্রে recursive আঘাত চলুন. 893 00:54:30,170 --> 00:54:33,550 এখানে উল্লেখ্য যে আমরা আহ্বান করছি গৌণিক (ঢ) না, কারণ যে খুব সহায়ক হবে না. 894 00:54:33,550 --> 00:54:36,810 আমরা অন্য কিছু এর গৌণিক কল চলুন. 895 00:54:36,810 --> 00:54:40,850 >> তাই আপনি, ঘটনাক্রমে যদি আমরা একটি গৌণিক (5) বা কিছু পাস দেখতে পারেন, 896 00:54:40,850 --> 00:54:45,900 আমরা গৌণিক (4) এবং তাই কল যাচ্ছে, এবং সেটি অবশেষে আমরা এই ক্ষেত্রে বেস আঘাত চলুন. 897 00:54:45,900 --> 00:54:51,730 সুতরাং এই ভাল দেখায়. এর কি আসলে যখন আমরা এই চালানো দেখতে দিন. 898 00:54:51,730 --> 00:54:57,840 এই স্ট্যাকের, এবং এর যাক যে প্রধান একটি যুক্তি (4) এই ফাংশন কল করতে যাচ্ছে. 899 00:54:57,840 --> 00:55:02,200 তাই একবার গৌণিক সূচিত এবং = 4, গৌণিক নিজেই কল হবে. 900 00:55:02,200 --> 00:55:05,010 এখন, হঠাৎ করেই আমরা গৌণিক (3) আছে. 901 00:55:05,010 --> 00:55:10,780 সুতরাং এই ফাংশান ক্রমবর্ধমান রাখা পর্যন্ত অবশেষে আমরা আমাদের বেস ক্ষেত্রে আঘাত করতে যাচ্ছি. 902 00:55:10,780 --> 00:55:17,830 এই মুহুর্তে, এই ফেরত মান রিটার্ন (nx এই ফেরত মান), 903 00:55:17,830 --> 00:55:21,290 এই ফেরত মান nx এই ফেরত মান. 904 00:55:21,290 --> 00:55:23,290 অবশেষে আমরা কিছু নম্বর আঘাত প্রয়োজন. 905 00:55:23,290 --> 00:55:26,560 এখানে উপরের, আমরা ফেরত 1 বলে. 906 00:55:26,560 --> 00:55:30,650 এটার মানে হল যে আমরা যে একবার নম্বর ফিরে, আমরা এই স্ট্যাকের বন্ধ পপ পারেন. 907 00:55:30,650 --> 00:55:36,570 তাই এই গৌণিক (1) সম্পন্ন হয়. 908 00:55:36,570 --> 00:55:41,190 যখন আয় 1, এই গৌণিক (1) আয়, 1 এই রিটার্ন. 909 00:55:41,190 --> 00:55:46,910 এই ফেরত মান মনে রাখবেন, এই ছিল nx ফেরত মান. 910 00:55:46,910 --> 00:55:50,720 তাই হঠাৎ, এই লোক জানে না যে আমি 2 ফেরত চান. 911 00:55:50,720 --> 00:55:55,910 >> সুতরাং, মনে রাখবেন এই মান ঠিক nx ফিরতি মূল্য এখানে আপ ফিরে. 912 00:55:55,910 --> 00:56:01,160 তাই এখন আমরা x 2 3 বলে, এবং পরিশেষে এখানে, আমরা বলতে পারেন 913 00:56:01,160 --> 00:56:04,010 এই মাত্র হয় 4 x 3 x 2 হবে. 914 00:56:04,010 --> 00:56:09,570 এবং এই আয় একবার, আমরা একটি একক মুখ্য পূর্ণসংখ্যা ভিতর থেকে নামা. 915 00:56:09,570 --> 00:56:15,460 Recursion উপর কোন প্রশ্ন? 916 00:56:15,460 --> 00:56:17,090 ঠিক আছে. তাই এর শেষে আছে প্রশ্নের জন্য আরো সময়, 917 00:56:17,090 --> 00:56:23,360 কিন্তু এখন জোসেফ আবরণ অবশিষ্ট বিষয়গুলি সম্পর্কে আলোচনা করা হবে. 918 00:56:23,360 --> 00:56:25,590 >> [জোসেফ Ong] ঠিক আছে. তাই এখন যে আমরা recursions স্বপ্ন করেছি, 919 00:56:25,590 --> 00:56:27,840 যাক এর কি একত্রীকরণ সাজানোর বিষয়ে অল্প কথা বলুন. 920 00:56:27,840 --> 00:56:31,740 সাজানোর মার্জ মূলত সংখ্যার একটি তালিকা বাছাই আরেকটি উপায়. 921 00:56:31,740 --> 00:56:36,430 এবং কীভাবে এটি কাজ করে সাজানোর সঙ্গে একত্রীকরণ হয়, আপনি একটি তালিকা আছে, এবং আমরা কি করব তা হল 922 00:56:36,430 --> 00:56:39,120 আমরা বলতে, এর মধ্যে 2 আংশিক এই বিভক্ত করা যাক. 923 00:56:39,120 --> 00:56:42,750 আমরা প্রথম সাজানোর একত্রীকরণ আবার বাম অর্ধেক চালানো হবে, 924 00:56:42,750 --> 00:56:45,040 তারপর আমরা ডান অর্ধেক উপর সাজানোর একত্রীকরণ রান করব, 925 00:56:45,040 --> 00:56:50,240 এবং যে দেয় আমাদের এখন 2 অর্ধ যে অনুসারে বাছাই করা হয়, এবং এখন আমরা একসঙ্গে যারা অর্ধ একত্রিত চলুন. 926 00:56:50,240 --> 00:56:55,010 এটা একটা বিট হার্ড একটি উদাহরণ ছাড়া দেখতে, তাই আমরা ভান করা এবং কি দেখতে যাবেন. 927 00:56:55,010 --> 00:56:59,590 তাহলে আপনি শুরু এই তালিকা সঙ্গে, আমরা 2 আংশিক মধ্যে এটি বিভক্ত. 928 00:56:59,590 --> 00:57:02,300 আমরা বাম অর্ধেক প্রথম সাজানোর মার্জ করুন. 929 00:57:02,300 --> 00:57:06,660 যাতে এর বাম অর্ধেক, এবং এখন আমরা এই তালিকার মাধ্যমে তা পুনরায় চালানোর 930 00:57:06,660 --> 00:57:09,800 যা একত্রীকরণ সাজানোর মধ্যে, তারপর পাশ এবং পরার আমরা আবার তাকান,, 931 00:57:09,800 --> 00:57:13,270 আমরা এর একত্রীকরণ সাজানোর এই তালিকা বামদিকে এ এবং রান. 932 00:57:13,270 --> 00:57:15,880 এখন, আমরা 2 সংখ্যার একটি তালিকা পেতে ডাউন, 933 00:57:15,880 --> 00:57:19,010 এবং এখন বাম অর্ধেক শুধুমাত্র 1 উপাদান দীর্ঘ, এবং আমরা নারা 934 00:57:19,010 --> 00:57:23,380 একটি তালিকা যে অর্ধেক মধ্যে মাত্র 1 উপাদান, বিভক্ত করুন যাতে আমরা শুধু বলতে, একবার আমরা 50 আছে, 935 00:57:23,380 --> 00:57:26,400 যা মাত্র 1 উপাদান, এটি আগে থেকেই সাজানো হচ্ছে. 936 00:57:26,400 --> 00:57:29,860 >> একবার আমরা যে সঙ্গে সম্পন্ন হলে, আমরা যে আমরা করতে পারেন দেখতে পাবেন 937 00:57:29,860 --> 00:57:32,230 এই তালিকার অধিকার অর্ধেক যান, 938 00:57:32,230 --> 00:57:36,480 এবং এছাড়াও 3 সাজানো হয়, এবং তাই এখন যে এই তালিকা উভয় আংশিক সাজানো হয় 939 00:57:36,480 --> 00:57:39,080 আমরা এই সংখ্যার যোগ দিতে ফিরে একসাথে করতে পারেন. 940 00:57:39,080 --> 00:57:45,320 তাই আমরা 50 এবং 3 তাকান; 3 50 র চেয়ে ছোট, তাই এটি প্রথম যায় এবং তারপর 50 আসে অংশে 941 00:57:45,320 --> 00:57:49,340 এখন, যে এর কাজ; আমরা ফিরে যেতে যে তালিকা এবং সাজানোর এটা ঠিক অর্ধেক পর্যন্ত. 942 00:57:49,340 --> 00:57:52,440 42 হল এর নিজস্ব নম্বর, তাই এটি ইতোমধ্যেই সাজানো. 943 00:57:52,440 --> 00:57:57,850 তাই এখন আমরা এইসব 2 এবং 3 হয় 42 তুলনা চেয়ে ছোট, যাতে প্রথম রাখা পরার, 944 00:57:57,850 --> 00:58:02,340 এখন 42 এর মধ্যে রাখুন, এবং 50 ইন করা পরার পরার 945 00:58:02,340 --> 00:58:07,220 এখন, এর অনুসারে সাজানো যে, আমরা সব উপায় ফিরে শীর্ষে, 1337 এবং 15. 946 00:58:07,220 --> 00:58:14,560 ভাল, আমরা এখন এই তালিকার বাম অর্ধেক তাকান; 1337 নিজে যাতে তা 15 দিয়ে সাজানো এবং এর একই. 947 00:58:14,560 --> 00:58:19,020 তাই এখন আমরা যে মূল তালিকা, 15 <1337 2 নম্বর বাছাই এই কার্টেল, 948 00:58:19,020 --> 00:58:23,060 তাই এটি প্রথম যায় তারপর, 1337 যায় ইন 949 00:58:23,060 --> 00:58:26,640 এবং এখন আমরা উপরে মূল তালিকার উভয় আংশিক সাজানো. 950 00:58:26,640 --> 00:58:30,440 এবং সমস্ত আমরা কি এই একত্রিত হয়. 951 00:58:30,440 --> 00:58:36,890 আমরা এই প্রথম তালিকার 2 নম্বর, 3 <15 তাকান, তাই এটি সাজানোর অ্যারের মধ্যে প্রথম যায়. 952 00:58:36,890 --> 00:58:44,460 15 <42, তাই এটি এখনো সদস্য না হয়ে যায় এখন, 42 <1337, যে যায় ইন 953 00:58:44,460 --> 00:58:51,010 50 <1337, তাই এটি এখনো সদস্য না হয়ে যায় যে আমরা গ্রহণ করে এই তালিকার 2 নম্বর বন্ধ বিজ্ঞপ্তি. 954 00:58:51,010 --> 00:58:53,640 তাই আমরা পর্যায়ক্রমে করছেন 2 তালিকার মধ্যে না. 955 00:58:53,640 --> 00:58:56,050 আমরা শুরুতে ঠিক করছি, এবং আমরা উপাদান গ্রহণ করছেন 956 00:58:56,050 --> 00:59:00,270 যে ছোট এবং তারপর আমাদের অ্যারের মধ্যে এটি নির্বাণ. 957 00:59:00,270 --> 00:59:04,080 এখন আমরা সব অর্ধ মার্জ করেছি এবং আমরা কাজ সম্পন্ন হয়. 958 00:59:04,080 --> 00:59:07,780 >> সম্পর্কে কোন প্রশ্ন সাজানোর একত্রীকরণ? হ্যাঁ? 959 00:59:07,780 --> 00:59:14,190 [ছাত্র] যদি এটি বিভিন্ন গ্রুপ এর মধ্যে বিভাজন, ঠিক কেন তা তারা না বিভক্ত একবার 960 00:59:14,190 --> 00:59:19,970 এবং আপনি একটি গ্রুপ এবং 3 2 আছে? [প্রশ্ন অপাচ্য বাকি] 961 00:59:19,970 --> 00:59:24,940 কারণ - তাই প্রশ্ন হল, কেন আমরা যে প্রথম পদক্ষেপ না তাদের পরে আমরা তাদের থাকতে পারে একত্রীকরণ? 962 00:59:24,940 --> 00:59:29,530 কারণ আমরা এটা করতে পারেন উভয় দিকের বাম-অধিকাংশ উপাদান শুরু করুন, 963 00:59:29,530 --> 00:59:33,040 এবং তারপর ছোট এবং নিতে এটি স্থাপন করা হয় যে, আমরা যে এইসব জানা 964 00:59:33,040 --> 00:59:35,290 ব্যক্তিগত অনুসারে সাজানো তালিকা আদেশ হয়. 965 00:59:35,290 --> 00:59:37,290 সুতরাং যদি আমি উভয় আংশিক বাম-অধিকাংশ উপাদান এ খুঁজছি, 966 00:59:37,290 --> 00:59:40,490 আমি জানি তারা ঐ তালিকার ক্ষুদ্রতম উপাদান হতে যাচ্ছেন. 967 00:59:40,490 --> 00:59:43,930 তাই আমি ক্ষুদ্রতম এই বৃহৎ তালিকা উপাদান দাগ সেগুলি লাগাতে পারেন. 968 00:59:43,930 --> 00:59:47,810 অন্য দিকে, যদি ঐ 2 তালিকা সময়ে আমি ওইখানে দ্বিতীয় স্তরের চেহারা, 969 00:59:47,810 --> 00:59:51,640 50, 3, 42, 1337 এবং 15, যারা বাছা হয় না. 970 00:59:51,640 --> 00:59:55,770 সুতরাং যদি আমি 50 এবং 1337 তাকান, আমি আমার তালিকায় প্রথম 50 করা যাচ্ছে না. 971 00:59:55,770 --> 01:00:00,130 কিন্তু যে অর্থে দেখা যায় না, কারণ 3 হয় তাদের সব আউট ক্ষুদ্রতম উপাদান. 972 01:00:00,130 --> 01:00:04,390 তাই একমাত্র কারণ আমরা এই মিশ্রন পদক্ষেপ কি করা যেতে পারে, কারণ ইতিমধ্যে আমাদের তালিকা অনুসারে বাছাই করা হয়. 973 01:00:04,390 --> 01:00:07,010 যা আমরা কেন নীচে পেতে সব উপায় ডাউন আছে 974 01:00:07,010 --> 01:00:09,800 কারণ যখন আমরা কেবলমাত্র একটি নম্বর আছে, আপনি কি জানেন যে একটি একক সংখ্যা 975 01:00:09,800 --> 01:00:14,120 এবং এর মধ্যে নিজেই ইতিমধ্যে একটি অনুসারে সাজানো তালিকা. 976 01:00:14,120 --> 01:00:19,360 >> কোন প্রশ্ন? না? 977 01:00:19,360 --> 01:00:24,260 জটিলতা? হ্যাঁ, আপনি প্রতিটি পদক্ষেপ সময়ে শেষ সংখ্যা আছে দেখতে পারেন, 978 01:00:24,260 --> 01:00:27,590 এবং আমরা অর্ধেক লগ n সময়ে একটি তালিকা বিভক্ত করা যেতে পারে, 979 01:00:27,590 --> 01:00:31,700 যা যেখানে আমরা এই x n log n জটিলতা পেতে. 980 01:00:31,700 --> 01:00:34,940 এবং আপনি একত্রীকরণ সাজানোর জন্য সেরা ক্ষেত্রে n log n, দেখতে এবং তা ঠিক এরকম করব 981 01:00:34,940 --> 01:00:39,340 যে সবচেয়ে খারাপ কেস, বা Ω ওইদিকে, এ এন এন লগ ইন করুন. 982 01:00:39,340 --> 01:00:42,480 কিছু মনে রাখা যাও. 983 01:00:42,480 --> 01:00:45,750 যাওয়ার, যাক এর কিছু সুপার মৌলিক ফাইলটি আমি / O. উপর যান 984 01:00:45,750 --> 01:00:48,830 আপনি যদি একত্র দিকে তাকিয়ে, আমরা আপনার সিস্টেমের কিছু সাজানোর ছিল বিজ্ঞপ্তি পাবেন 985 01:00:48,830 --> 01:00:51,270 যেখানে আপনি একটি লগ ফাইল যদি আপনি কোড মাধ্যমে পড়তে ও লিখতে পারে. 986 01:00:51,270 --> 01:00:53,730 যাক কিভাবে আপনি তা করতে পারে দেখুন. 987 01:00:53,730 --> 01:00:57,450 ভাল, আমরা fprintf আছে, যা আপনি শুধু printf হিসাবে মনে করতে পারেন, 988 01:00:57,450 --> 01:01:01,720 কিন্তু শুধুমাত্র একটি ফাইল প্রিন্ট করার পরিবর্তে, এবং অত: পর শুরুতে চ. 989 01:01:01,720 --> 01:01:07,570 কোড এই সাজানোর আপ এখানে, এটি কী জন্য প্রয়োজন হয়, হিসাবে আপনি একত্র হতে পারে আছে দেখা যায়, 990 01:01:07,570 --> 01:01:12,310 আপনার 2-মাত্রিক অ্যারের মুদ্রণ মাধ্যমে এটি কি সারি সারি সংখ্যা দ্বারা আউট যায়. 991 01:01:12,310 --> 01:01:17,850 এই ক্ষেত্রে printf, আপনার টার্মিনালে ছাপে আউট বা কি আমরা কল অ w স্ট্যান্ডার্ড আউপুট. 992 01:01:17,850 --> 01:01:22,170 >> এবং এখন এই ক্ষেত্রে, আমরা সব করতে হবে তা হচ্ছে fprintf সঙ্গে printf প্রতিস্থাপন, 993 01:01:22,170 --> 01:01:26,770 এটি কি আপনি যে ফাইলটি প্রিন্ট করতে চান তা বলুন, এবং এই ক্ষেত্রে শুধুমাত্র সেটা ছাপে যে ফাইলটি আউট 994 01:01:26,770 --> 01:01:32,230 পরিবর্তে মুদ্রণ এটি আপনার টার্মিনালে আউট. 995 01:01:32,230 --> 01:01:36,500 সেটা, যে প্রশ্ন begs: আমরা কোথা থেকে ফাইল এই সাজানোর, অধিকার পেতে পারি? 996 01:01:36,500 --> 01:01:39,840 আমরা এই fprintf fuction লগ ইন পাস কিন্তু আমরা ধারণা নেই যেখানে এটি থেকে এসেছেন ছিল. 997 01:01:39,840 --> 01:01:43,980 আচ্ছা, প্রথম দিকে কোড, আমরা কি ছিল ছিল এই কোড এখানে বেশী খণ্ড, 998 01:01:43,980 --> 01:01:48,340 যা মূলত: বলছেন যে ফাইল খুলুন কল log.txt. 999 01:01:48,340 --> 01:01:53,220 আমরা কি করব তা পরে যে আমরা নিশ্চিত যে আসলে ফাইল খোলা হয় সফলভাবে করতে হবে. 1000 01:01:53,220 --> 01:01:57,070 আপনি আপনার কম্পিউটারে পর্যাপ্ত স্থান নেই, যেমন; সুতরাং একাধিক কারণে কর্ম বিফল হতে পারে. 1001 01:01:57,070 --> 01:01:59,790 সুতরাং এটা সর্বদাই গুরুত্বপূর্ণ আগে আপনি ফাইলটি সঙ্গে কোন অপারেশন না 1002 01:01:59,790 --> 01:02:03,300 আমরা যে কিনা চেক সফলভাবে যে ফাইল খোলা ছিল. 1003 01:02:03,300 --> 01:02:09,330 তাই যে একটি, যে এর fopen একটি যুক্তি, ভাল, আমরা অনেক উপায়ে একটি ফাইল খুলতে পারে. 1004 01:02:09,330 --> 01:02:13,510 কি হয় আমরা কি করতে পারেন, আমরা w এটি পাস, যা ফাইল অগ্রাহ্য করা মানে যদি এটি ইতিমধ্যে প্রস্থান করতে পারেন, 1005 01:02:13,510 --> 01:02:18,070 আমরা একটি একটি প্রেরণ করতে পারেন যা তারা ফাইলের শেষে যাও লিখবেন পরিবর্তে এটি অগ্রাহ্য করা হবে, 1006 01:02:18,070 --> 01:02:22,730 অথবা আমরা নির্দিষ্ট কিছু, যার অর্থ হতে পারে, এর ফাইল হিসাবে শুধুমাত্র পাঠযোগ্য খুলুন যাক. 1007 01:02:22,730 --> 01:02:24,890 তাই আপনি যদি প্রোগ্রাম ফাইলে কোনো পরিবর্তন করতে চেষ্টা করে, 1008 01:02:24,890 --> 01:02:30,140 তাদের এ তীব্র আর্তনাদ এবং তাদের তা করতে না দেওয়া. 1009 01:02:30,140 --> 01:02:33,320 অবশেষে একবার, আমরা ফাইলটি সঙ্গে, শেষ হয়ে গেছে এটা অপারেশন করছেন, 1010 01:02:33,320 --> 01:02:35,860 আমরা নিশ্চিত যে ফাইল বন্ধ করা প্রয়োজন. 1011 01:02:35,860 --> 01:02:38,830 আপনার প্রোগ্রাম শেষে তাই, আপনি আবার তাদের পাস যাচ্ছি 1012 01:02:38,830 --> 01:02:42,120 এই ফাইলটি যে আপনার খোলা, এবং এটা বন্ধ. 1013 01:02:42,120 --> 01:02:44,650 তাই এটি কোনো গুরুত্বপূর্ণ যে আপনি নিশ্চিত আপনি কি করতে হবে. 1014 01:02:44,650 --> 01:02:47,180 সুতরাং আপনি একটি ফাইল খুলতে পারে মনে রাখবেন, তাহলে আপনি ফাইলে লিখতে পারেন, 1015 01:02:47,180 --> 01:02:51,270 ফাইলের মধ্যে অপারেশন, না কিন্তু তাহলে শেষে ফাইলটি বন্ধ আছে. 1016 01:02:51,270 --> 01:02:53,270 >> মৌলিক ফাইল সম্পর্কে কোন প্রশ্ন, I / O? হ্যাঁ? 1017 01:02:53,270 --> 01:02:58,050 [ছাত্র প্রশ্ন, অপাচ্য] 1018 01:02:58,050 --> 01:03:02,480 এখানে ডান. যেখানে প্রশ্ন করা হয়, এই log.txt ফাইলটি প্রদর্শিত হবে না? 1019 01:03:02,480 --> 01:03:07,890 হ্যাঁ, যদি আপনি এটি log.txt দেবে, এটা এক্সিকিউটেবল হিসাবে একই ডিরেক্টরির মধ্যে এটি নির্মাণ করা হয়. 1020 01:03:07,890 --> 01:03:10,500 তাই আপনি যদি you're - >> [ছাত্র প্রশ্ন, অপাচ্য] 1021 01:03:10,500 --> 01:03:18,830 হ্যাঁ. একই ফোল্ডারে, অথবা একই ডিরেক্টরির, হিসাবে আপনি কল করতে দেয়. 1022 01:03:18,830 --> 01:03:21,400 এখন মেমরি, স্ট্যাক, এবং গাদা. 1023 01:03:21,400 --> 01:03:23,400 সুতরাং কিভাবে মেমরি কম্পিউটার পরিপূর্ণ? 1024 01:03:23,400 --> 01:03:26,270 হ্যাঁ, আপনি এখানে ব্লক এই ধরণের মেমরি হিসাবে কল্পনা করতে পারেন. 1025 01:03:26,270 --> 01:03:30,260 এবং আমরা যা মেমরির মধ্যে আছে কি গাদা ওইদিকে আটকে, এবং স্ট্যাকের যে আছে এর নিচে নামে. 1026 01:03:30,260 --> 01:03:34,480 এবং গাদা বৃদ্ধি নিম্নগামী এবং স্ট্যাকের উর্ধ্বগামী বৃদ্ধি. 1027 01:03:34,480 --> 01:03:38,620 সুতরাং হিসাবে উল্লেখ করেছে টমি - উহু, ভাল, এবং আমরা এইসব অন্যান্য 4 অংশ যা আমি একটা দ্বিতীয় মধ্যে পাবেন আছে - 1028 01:03:38,620 --> 01:03:42,890 টমি হিসাবে তার আগে বলেন, আপনি কি জানেন কিভাবে তার ফাংশন কল নিজেদেরকে এবং অপরকে কল? 1029 01:03:42,890 --> 01:03:44,930 তারা নির্মাণ স্ট্যাকের ফ্রেমের এই সাজানোর আপ. 1030 01:03:44,930 --> 01:03:47,360 ওয়েল, যদি প্রধান কল foo বিন্যাস, foo বিন্যাস স্ট্যাক করা হয়. 1031 01:03:47,360 --> 01:03:52,430 Foo কল বার, বার এর স্ট্যাক করা পেতে, এবং যে স্ট্যাকের উপর পরে করা হয়. 1032 01:03:52,430 --> 01:03:57,040 এবং হিসাবে তারা ফিরে, তারা প্রতিটি স্ট্যাকের নেয়া বন্ধ করতে পারেন. 1033 01:03:57,040 --> 01:04:00,140 কি প্রতিটি এই জায়গাগুলিকে এবং মেমরি রাখা? 1034 01:04:00,140 --> 01:04:03,110 ওয়েল, শীর্ষ, যা টেক্সট সেগমেন্ট, নিজেই প্রোগ্রাম উপস্থিত রয়েছে. 1035 01:04:03,110 --> 01:04:06,390 মেশিন কোড, যাতে আছে একবার, আপনার প্রোগ্রাম কম্পাইল. 1036 01:04:06,390 --> 01:04:08,520 এর পরে, কোনো গ্লোবাল ভেরিয়েবল সক্রিয়া. 1037 01:04:08,520 --> 01:04:12,660 >> সুতরাং আপনি আপনার প্রোগ্রামের গ্লোবাল ভেরিয়েবল আছে, এবং আপনি, ভালো একটি = 5 বলে, 1038 01:04:12,660 --> 01:04:15,260 যে যে সেগমেন্টের মধ্যে রাখতে এবং ডান পরার অধীন যে, 1039 01:04:15,260 --> 01:04:18,990 আপনি কোনো uninitialized বিশ্বব্যাপী তথ্য, যা শুধু একটি int আছে, 1040 01:04:18,990 --> 01:04:20,990 কিন্তু আপনি এটা সমান কিছু না বলে. 1041 01:04:20,990 --> 01:04:23,870 এইসব বুঝতে হয় গ্লোবাল ভেরিয়েবল, যাতে তারা প্রধান বাইরে. 1042 01:04:23,870 --> 01:04:28,560 সুতরাং এই যে কোনো গ্লোবাল ভেরিয়েবল কিন্তু ঘোষিত সক্রিয়া করা না হয় মানে. 1043 01:04:28,560 --> 01:04:32,310 সুতরাং গাদা মধ্যে কি? মেমরি বরাদ্দ malloc, যা আমরা অল্প পাবেন ব্যবহার করে. 1044 01:04:32,310 --> 01:04:35,990 এবং পরিশেষে স্ট্যাকের সঙ্গে, আপনি কোনো স্থানীয় ভেরিয়েবল আছে 1045 01:04:35,990 --> 01:04:39,950 এবং কোনো ফাংশন আপনি তাদের কোনো পরামিতি কল করতে পারে. 1046 01:04:39,950 --> 01:04:43,720 শেষ জিনিস, আপনি কি এনভায়রনমেন্ট ভেরিয়েবলের কি সত্যিই আছে জানি না, 1047 01:04:43,720 --> 01:04:46,700 কিন্তু যখনই আপনি প্রোগ্রাম চালানো, কিছু সংযুক্ত করতে হয়, 1048 01:04:46,700 --> 01:04:49,550 এই ব্যক্তি প্রোগ্রাম দৌড়ে ব্যবহারকারীর নাম. 1049 01:04:49,550 --> 01:04:51,550 এবং যে নীচে সাজান করা যাচ্ছে. 1050 01:04:51,550 --> 01:04:54,540 ইন মেমরি অ্যাড্রেস, যা হেক্সাডেসিমেল মান শর্তাদি, 1051 01:04:54,540 --> 01:04:58,170 0 শীর্ষে শুরু করার মান, এবং তারা যেতে সমস্ত উপায় নীচে. 1052 01:04:58,170 --> 01:05:00,440 এই ক্ষেত্রে, আপনি যদি 32 বিট সিস্টেমে করছি, 1053 01:05:00,440 --> 01:05:05,390 নীচের ঠিকানায় 0x হবে, অনুসরণ Af দ্বারা, কারণ এটা 32 বিট হয়, 1054 01:05:05,390 --> 01:05:10,890 যা 8 বাইট, এবং এই ক্ষেত্রে 8 বাইট 8 হেক্সাডেসিমাল সংখ্যা অনুরূপ. 1055 01:05:10,890 --> 01:05:20,110 তাই এখানে আপনি নিচে যাও, দিন 0xffffff, যাচ্ছে, এবং সেটি আপ সেখানে আপনি 0 আছে চলুন. 1056 01:05:20,110 --> 01:05:23,660 তাই কি পয়েন্টার? আপনি কয়েকটি বিভাগে এই নাও হতে পারেন, আচ্ছাদিত আগে. 1057 01:05:23,660 --> 01:05:26,660 কিন্তু আমরা তার উপর বক্তৃতা যান নি, তাই একটা পয়েন্টার শুধুমাত্র একটি ডাটা টাইপ 1058 01:05:26,660 --> 01:05:34,030 যা সঞ্চয়, পরিবর্তে 50 ভালো মানের কিছু বাছাই করা, এটা মেমরির মধ্যে কিছু অবস্থান ঠিকানা সঞ্চয়. 1059 01:05:34,030 --> 01:05:36,020 ভালো লেগেছে যে মেমরি [অপাচ্য]. 1060 01:05:36,020 --> 01:05:41,120 তাই এই ক্ষেত্রে, আমরা কি আছে, আমরা একটি পূর্ণসংখ্যা বা কোন int * একটি ইশারা আছে, 1061 01:05:41,120 --> 01:05:46,210 এবং এটি এই 0xDEADBEEF হেক্সাডেসিমেল এর ঠিকানা রয়েছে. 1062 01:05:46,210 --> 01:05:50,880 >> তাই আমরা যা আছে এখন,, এই যা মেমরির মধ্যে কিছু স্থানে পয়েন্টার পয়েন্ট, 1063 01:05:50,880 --> 01:05:56,020 এবং যে একটি মাত্র, মান 50 এই মেমরি অবস্থানে এটি উপস্থিত রয়েছে. 1064 01:05:56,020 --> 01:06:01,810 সমস্ত 32 বিট সিস্টেমে কিছু 32 বিট সিস্টেমে,, পয়েন্টার 32 বিট বা 4 বাইট লাগতে. 1065 01:06:01,810 --> 01:06:06,020 উদাহরণস্বরূপ, কিন্তু,, একটি 64 বিট সিস্টেমে, পয়েন্টার হয় 64 বিট. 1066 01:06:06,020 --> 01:06:08,040 সুতরাং যে কোন কিছু যা আপনি মনে রাখা করতে চাইবেন. 1067 01:06:08,040 --> 01:06:12,310 তাই শেষ বিট সিস্টেমের মধ্যে, একটি পয়েন্টার হয় শেষ বিট দীর্ঘ. 1068 01:06:12,310 --> 01:06:17,320 পয়েন্টার হয় অতিরিক্ত জিনিস ছাড়া ধরণের হার্ড যাও হজম, 1069 01:06:17,320 --> 01:06:20,300 তাই আসুন ডাইনামিক মেমরি বরাদ্দকরণের একটি উদাহরণ দিয়ে যান. 1070 01:06:20,300 --> 01:06:25,130 কি ডাইনামিক মেমরি বরাদ্দকরণের জন্য আপনি, বা কি আমরা কল malloc, 1071 01:06:25,130 --> 01:06:29,280 এটি আপনাকে সেট বাইরে কিছু তথ্য সাজানোর বরাদ্দ করা. 1072 01:06:29,280 --> 01:06:31,830 সুতরাং এই তথ্য ধরণের প্রোগ্রামের সময়কাল জন্য আরো স্থায়ী. 1073 01:06:31,830 --> 01:06:36,430 কারণ হিসাবে আপনি কি জানেন, যদি আপনি এক্স একটি ফাংশন এর ভিতরে, এবং যে ফাংশন আয় ঘোষণা, 1074 01:06:36,430 --> 01:06:40,910 আর আপনি যে তথ্য x এর মধ্যে সঞ্চিত ছিল অ্যাক্সেস আছে. 1075 01:06:40,910 --> 01:06:44,420 কি পয়েন্টার আমাদের কাজের জন্য তারা আমাদের মেমরি বা দোকান মান সংরক্ষণ দিন 1076 01:06:44,420 --> 01:06:46,840 একটি মেমরি বিভিন্ন অংশ যেমন, গাদা. 1077 01:06:46,840 --> 01:06:49,340 এখন একবার আমরা ফাংশন আউট ফিরে, যতদিন আমরা একটি পয়েন্টার আছে 1078 01:06:49,340 --> 01:06:54,960 মেমরির মধ্যে যে অবস্থান যাও তাহলে কি আমরা করতে পারি মনে হয় আমরা ঠিক আছে মান তাকান পারেন. 1079 01:06:54,960 --> 01:06:58,020 এর একটি উদাহরণ তাকান যাক: এটি আবার আমাদের স্মৃতিশক্তি বিন্যাস. 1080 01:06:58,020 --> 01:07:00,050 এবং আমরা এই ফাংশন আছে, প্রধান. 1081 01:07:00,050 --> 01:07:06,870 এটি কী জন্য প্রয়োজন হয় - ঠিক আছে, তাই সহজ, ডান -? Int x = 5, যে শুধু স্ট্যাকের দ্বারা একটি প্রধান মধ্যে পরিবর্তনশীল. 1082 01:07:06,870 --> 01:07:12,450 >> অন্যদিকে এখন, আমরা একটি পয়েন্টার যা ফাংশন কল giveMeThreeInts ডিক্লেয়ার. 1083 01:07:12,450 --> 01:07:16,800 এবং এখন তাই এই ফাংশন মধ্যে আমরা যান এবং আমরা একটি নতুন এটি জন্য স্ট্যাকের ফ্রেম তৈরি. 1084 01:07:16,800 --> 01:07:20,440 এই স্ট্যাকের ফ্রেম যাইহোক, আমরা int-* temp ঘোষণা, 1085 01:07:20,440 --> 01:07:23,210 যা আমাদের জন্য mallocs 3 ইন্টিজার. 1086 01:07:23,210 --> 01:07:25,880 সুতরাং int-এ মাপ আমাদের দিতে হবে কত বাইট এই int-হয়, 1087 01:07:25,880 --> 01:07:29,620 এবং malloc আমাদের দেয় যে স্থান অনেক হিপ বাইট. 1088 01:07:29,620 --> 01:07:32,890 তাই এই ক্ষেত্রে, আমরা 3 পূর্ণসংখ্যার জন্য যথেষ্ট জায়গা তৈরি করেছি, 1089 01:07:32,890 --> 01:07:36,830 এবং গাদা হয় আপ উপায় আছে, যা আমি কেন এটা টানা উচ্চতর আপ করেছি. 1090 01:07:36,830 --> 01:07:42,900 একবার আমরা সম্পন্ন হলে, আমরা ফিরে আসা পর্যন্ত, এখানে একমাত্র আপনি প্রয়োজন 3 ints ফিরে, 1091 01:07:42,900 --> 01:07:47,000 এবং এটি ফিরিয়ে এই ক্ষেত্রে যে মেমরি ঠিকানা যেখানে শেষ হয়,. 1092 01:07:47,000 --> 01:07:51,250 এবং আমরা পয়েন্টার = সুইচ সেট, এবং সেখানে আমরা শুধু আরেকটি পয়েন্টার আছে. 1093 01:07:51,250 --> 01:07:54,550 কিন্তু কি যে এখানে ফাংশন আয় স্তুপীকৃত এবং disappears হয়. 1094 01:07:54,550 --> 01:07:59,250 সুতরাং temp disappears, কিন্তু আমরা এখনো যেখানে ঠিকানা বজায় রাখা 1095 01:07:59,250 --> 01:08:01,850 যারা 3 পূর্ণসংখ্যার mains এর ভিতরে আছে. 1096 01:08:01,850 --> 01:08:06,180 তাই এই সেটে, পয়েন্টার হয় স্তুপীকৃত ফ্রেম জন্য স্থানীয়ভাবে scoped, 1097 01:08:06,180 --> 01:08:09,860 কিন্তু মেমরি যা তারা পড়ুন গাদা হয়. 1098 01:08:09,860 --> 01:08:12,190 >> কি যে জানার জন্য? 1099 01:08:12,190 --> 01:08:14,960 [ছাত্র] আপনি কি ওটা আবার বলবেন? >> [জোসেফ] হ্যাঁ. 1100 01:08:14,960 --> 01:08:20,270 সুতরাং যদি আমি ফিরে যেতে অল্পমাত্র বিট, আপনি দেখতে যে temp বরাদ্দ 1101 01:08:20,270 --> 01:08:23,500 সেখানে আপ গাদা কিছু স্মৃতি. 1102 01:08:23,500 --> 01:08:28,680 তাই যখন এই ফাংশন, আয় giveMeThreeInts, এই এখানে স্ট্যাকে অদৃশ্য হয়ে যাচ্ছে. 1103 01:08:28,680 --> 01:08:35,819 এবং সাথে কোনো এই ক্ষেত্রে ভেরিয়েবেল্স,, এই যে পয়েন্টার স্তুপীকৃত ফ্রেমের মধ্যে বরাদ্দ ছিল. 1104 01:08:35,819 --> 01:08:39,649 যে অদৃশ্য হয়ে যাচ্ছে, কিন্তু যেহেতু আমরা ফিরে temp 1105 01:08:39,649 --> 01:08:46,330 এবং আমরা পয়েন্টার সেট = temp, পয়েন্টার এখন এর অবস্থান একই মেমরি হিসাবে temp নির্দেশ ছিল না. 1106 01:08:46,330 --> 01:08:50,370 সুতরাং এখন, যদিও আমরা temp, যে স্থানীয় পয়েন্টার হারান, 1107 01:08:50,370 --> 01:08:59,109 আমরা এখনও কি এটা যে পয়েন্টার পরিবর্তনশীল এর ভিতর থেকে প্রতি নির্দেশ ছিল মেমরির ঠিকানা বজায় রাখা. 1108 01:08:59,109 --> 01:09:03,740 প্রশ্ন? যে একটি বিভ্রান্তিকর ধরনের বিষয়ের উপর যদি আপনি এটি বিভাগে সর্বস্বান্ত করা যাবে না. 1109 01:09:03,740 --> 01:09:09,240 আমরা আপনার TF, করা যাবে স্পষ্টভাবে এটা আবার যান এবং অবশ্যই আমরা প্রশ্নগুলির উত্তর দিতে পারেন 1110 01:09:09,240 --> 01:09:11,500 এ জন্য এই পর্যালোচনার সময় শেষ. 1111 01:09:11,500 --> 01:09:14,220 কিন্তু এই একটি জটিল বিষয় বাছাই করা, এবং আমি আরো উদাহরণ যে দেখাবে যাচ্ছি আছে 1112 01:09:14,220 --> 01:09:18,790 আসলে যে কি পয়েন্টার হয় শোধন সাহায্য করবে. 1113 01:09:18,790 --> 01:09:22,500 >> এই ক্ষেত্রে, পয়েন্টার হয় সমতুল্য অ্যারে যাও, 1114 01:09:22,500 --> 01:09:25,229 তাই আমি ঠিক কোন int অ্যারে হিসাবে একই জিনিস হিসাবে এই পয়েন্টার ব্যবহার করতে পারেন. 1115 01:09:25,229 --> 01:09:29,840 তাই আমি 0 মধ্যে, সূচিবদ্ধ করাকে এবং 1 যাও প্রথম পূর্ণসংখ্যা পরিবর্তন করছি, 1116 01:09:29,840 --> 01:09:39,689 2 দ্বিতীয় পূর্ণসংখ্যা পরিবর্তন, এবং 3 য় পূর্ণসংখ্যা যাও 3. 1117 01:09:39,689 --> 01:09:44,210 পয়েন্টার তাই আরো. ভাল Binky, প্রত্যাহার. 1118 01:09:44,210 --> 01:09:48,319 এই ক্ষেত্রে আমরা একটা পয়েন্টার বরাদ্দ করেছেন, অথবা আমরা একটি পয়েন্টার ঘোষণা, 1119 01:09:48,319 --> 01:09:52,760 কিন্তু প্রথমে, যখন আমি একটি পয়েন্টার ঘোষণা, এটি মেমরি কোথাও যাও ইশারা না. 1120 01:09:52,760 --> 01:09:54,930 শুধু তা ভিতরে আবর্জনা মান. 1121 01:09:54,930 --> 01:09:56,470 তাই আমি তার কোন ধারণা নেই যেখানে এই পয়েন্টার যাও ইশারা আছে. 1122 01:09:56,470 --> 01:10:01,630 এটি একটি ঠিকানা যা এর 0 এবং 1 এর যেখানে প্রথমে এটি ছিল ঘোষিত সঙ্গে ঠিক না ভরাট হয়েছে. 1123 01:10:01,630 --> 01:10:04,810 আমি এই সাথে কিছু না হওয়া পর্যন্ত আমি malloc পোকা বলতে পারেন 1124 01:10:04,810 --> 01:10:08,390 এবং তারপর এটি আপনাকে এক গাদা যেখানে আমি ভিতরে মান বসাতে পারেন উপর সামান্যই স্থান সম্পর্কে. 1125 01:10:08,390 --> 01:10:11,980 তারপর আবার, আমি এই মেমরি ভিতর কি না জানি না. 1126 01:10:11,980 --> 01:10:16,780 তাই সর্বপ্রথম যে জিনিসটি আমি করতে হবে তা হচ্ছে কিনা সিস্টেমে পর্যাপ্ত মেমরি ছিল চেক 1127 01:10:16,780 --> 01:10:20,850 আমার করা প্রথম স্থান, যা আমি কেন এই চেক করছি 1 পূর্ণসংখ্যা ফিরে. 1128 01:10:20,850 --> 01:10:25,020 যদি পয়েন্টার হয় নাল, তার মানে এটা যথেষ্ট স্থান বা অন্য কিছু ত্রুটি ঘটেছে আছে কি না, 1129 01:10:25,020 --> 01:10:26,320 তাই আমি আমার প্রোগ্রাম থেকে প্রস্থান করতে হবে. 1130 01:10:26,320 --> 01:10:29,400  কিন্তু যদি তা সফল এখন, আমি যে পয়েন্টার ব্যবহার করতে পারেন 1131 01:10:29,400 --> 01:10:35,020 এবং কি * পয়েন্টার আছে এটা অনুসরণ করে যেখানে ঠিকানা হয় 1132 01:10:35,020 --> 01:10:38,480 যেখানে যাও যে মান, এবং এটি সেট করে এটি 1 সমান. 1133 01:10:38,480 --> 01:10:41,850 সুতরাং এখানে উপর, আমরা যদি যে মেমরি অস্তিত্ব চেক করছি. 1134 01:10:41,850 --> 01:10:45,380 >> একবার আপনি কি জানেন এটি বিদ্যমান, আপনি তা লাগাতে পারেন 1135 01:10:45,380 --> 01:10:50,460 মান কি আপনি চান এটা পুরা যাও; এই ক্ষেত্রে 1. 1136 01:10:50,460 --> 01:10:53,060 একবার আমরা এটি সঙ্গে সম্পন্ন হলে, আপনি যে পয়েন্টার মুক্ত প্রয়োজন 1137 01:10:53,060 --> 01:10:57,160 কারণ আমরা যে সিস্টেম মেমরি যা আপনাকে প্রথমে জানতে চাওয়া ফিরে পেতে হবে. 1138 01:10:57,160 --> 01:10:59,690 কারণ কম্পিউটার যখন আমরা সঙ্গে সম্পন্ন না জানি. 1139 01:10:59,690 --> 01:11:02,510 এই ক্ষেত্রে আমরা স্পষ্টভাবে এটা করছি বলছে, ঠিক আছে, আমরা যে মেমরি সঙ্গে সম্পন্ন করেছেন. 1140 01:11:02,510 --> 01:11:10,780 যদি অন্য কোনো প্রক্রিয়া দরকার, কিছু অন্যান্য প্রোগ্রাম দরকার, বোধ যাও এগিয়ে যান এবং এটিকে বিনামূল্যে. 1141 01:11:10,780 --> 01:11:15,110 আমরা কি করতে পারি মনে হয় আমরা ঠিক সেট স্থানীয় ভেরিয়েবল এর ঠিকানা পেতে পারেন. 1142 01:11:15,110 --> 01:11:19,080 সুতরাং int x মুখ্য স্তুপীকৃত ফ্রেম ভিতরে হয়. 1143 01:11:19,080 --> 01:11:23,060 এবং যখন আমরা এই ampersand ব্যবহার, এবং এই অপারেটর, এটি কী জন্য প্রয়োজন হয় 1144 01:11:23,060 --> 01:11:27,310 এটি x লাগে, এবং এক্স হয় শুধু মেমরির মধ্যে কিছু তথ্য, কিন্তু এটি একটি ঠিকানা আছে. 1145 01:11:27,310 --> 01:11:33,790 এটা কোথাও এর অবস্থিত. সুতরাং দ্বারা কলিং & x, ও কি এই জন্য এটা দেয় x এর ঠিকানা আমাদের. 1146 01:11:33,790 --> 01:11:38,430 এই করে, আমরা যেখানে মেমরির মধ্যে x হল পয়েন্টার বিন্দু করছেন. 1147 01:11:38,430 --> 01:11:41,710 এখন আমরা শুধু * ভালো কিছু x না, আমরা 5 ফিরে পেতে যাচ্ছেন. 1148 01:11:41,710 --> 01:11:43,820 স্টার dereferencing বলা হয়. 1149 01:11:43,820 --> 01:11:46,640 আপনার ঠিকানা এবং অনুসরণ করতে আপনি এটি মান সঞ্চিত আছে পেতে. 1150 01:11:51,000 --> 01:11:53,310 >> কোন প্রশ্ন? হ্যাঁ? 1151 01:11:53,310 --> 01:11:56,500 [ছাত্র] যদি আপনি 3-সরু জিনিস করবেন না, এটা এখনও আছে কম্পাইল? 1152 01:11:56,500 --> 01:11:59,490 হ্যাঁ. যদি আপনি 3-পয়েন্টার জিনিস করে না, এখনও এটা কম্পাইল হয়ে উঠবে, 1153 01:11:59,490 --> 01:12:02,720 কিন্তু আমি আপনাকে দেখাতে একটি দ্বিতীয় মধ্যে কি, এবং পাবেন ছাড়া যে করছেন, 1154 01:12:02,720 --> 01:12:04,860 তাই আমরা একটি মেমরি লিক. আপনি সিস্টেম প্রদান করছেন না 1155 01:12:04,860 --> 01:12:07,850 এর পরে মেমরির একটি ব্যাক, তাই যখন প্রোগ্রাম স্তূপাকার করা যাচ্ছে না 1156 01:12:07,850 --> 01:12:10,940 মেমরি যে এটি, এবং এর ব্যবহার না কিছুই অন্যথায় এটি ব্যবহার করতে পারেন. 1157 01:12:10,940 --> 01:12:15,750 আপনি যদি কখনও আপনার কম্পিউটারে 1.5 মিলিয়ন কিলোবাইট সঙ্গে দেখা করেছেন ফায়ারফক্স, 1158 01:12:15,750 --> 01:12:17,840 টাস্ক ম্যানেজার, যে কি করছেন. 1159 01:12:17,840 --> 01:12:20,760 আপনার প্রোগ্রাম যে তারা সামলাচ্ছে না করছি একটি মেমরি লিক আছে. 1160 01:12:23,080 --> 01:12:26,240 সুতরাং কিভাবে আছে পয়েন্টার এরিথমেটিক কাজ করে? 1161 01:12:26,240 --> 01:12:29,480 ওয়েল, পয়েন্টার এরিথমেটিক একটি অ্যারের মধ্যে মত ইন্ডেক্স ধরণের. 1162 01:12:29,480 --> 01:12:36,370 এই ক্ষেত্রে, আমি একটি ইশারা আছে, এবং কি আমি না হয় আমি প্রথম উপাদান যাও পয়েন্টার বিন্দু করা 1163 01:12:36,370 --> 01:12:42,100 3 পূর্ণসংখ্যার যে আমি বরাদ্দ করেছি এই অ্যারে. 1164 01:12:42,100 --> 01:12:46,670 তাই এখন আমি কি করব, শুধু তারকা পয়েন্টার তালিকায় প্রথম উপাদান পরিবর্তন করে. 1165 01:12:46,670 --> 01:12:49,140 রাশি পয়েন্টার এখানে উপর +1 টি পয়েন্ট. 1166 01:12:49,140 --> 01:12:53,140 সুতরাং এখানে উপর পয়েন্টার হয়, পয়েন্টার +1 এখানে বেশী, পয়েন্টার +2 হয় এখানে বেশী. 1167 01:12:53,140 --> 01:12:56,610 >> তাই মাত্র 1 যোগ হয় এই অ্যারে বরাবর চলন্ত হিসাবে একই জিনিস. 1168 01:12:56,610 --> 01:12:59,880 আমরা কি করব তা হল, যখন আমরা পয়েন্টার +1 করতে করতে আপনি এখানে উপর ঠিকানা পেতে, 1169 01:12:59,880 --> 01:13:04,180 এবং যাতে এখানে মধ্যে মধ্যে মান পেতে, আপনার কাছ থেকে সম্পূর্ণ প্রকাশের একটি তারকা করা 1170 01:13:04,180 --> 01:13:05,990 এটি dereference. 1171 01:13:05,990 --> 01:13:09,940 এই ক্ষেত্রে, তাই, আমি এই অ্যারের মধ্যে প্রথম অবস্থান সেটিং করছি 1 যাও, 1172 01:13:09,940 --> 01:13:13,970 2 দ্বিতীয় অবস্থান, এবং 3 যাও তৃতীয় অবস্থান. 1173 01:13:13,970 --> 01:13:18,180 তারপর কি আমি ধরে এখানে করছি আমি আমাদের পয়েন্টার +1- মুদ্রণ করছি, 1174 01:13:18,180 --> 01:13:19,970 যা শুধু দেয় 2 সম্পর্কে. 1175 01:13:19,970 --> 01:13:23,650 এখন আমি পয়েন্টার বৃদ্ধিশীল করছি, তাই পয়েন্টার পয়েন্টার +1- সমান, 1176 01:13:23,650 --> 01:13:26,780 তা এগিয়ে চলে. 1177 01:13:26,780 --> 01:13:30,810 তাই এখন যদি আমি মুদ্রণ পয়েন্টার +1- আউট, পয়েন্টার +1- এখন 3, 1178 01:13:30,810 --> 01:13:33,990 এই ক্ষেত্রে যা ছাপে 3 আউট. 1179 01:13:33,990 --> 01:13:36,560 এবং যাতে বিনামূল্যে কিছু, পয়েন্টার যে আমি তা দিতে 1180 01:13:36,560 --> 01:13:40,540 অ্যারে যা আমি malloc থেকে ফিরে পেয়েছেন প্রারম্ভে প্রতি নির্দেশ করা আবশ্যক. 1181 01:13:40,540 --> 01:13:43,430 এই ক্ষেত্রে, তাই, যদি আমি 3 অধিকার এখানে কল ছিল, এই অধিকার হতে পারেন না, 1182 01:13:43,430 --> 01:13:45,070 কারণ এটি অ্যারের মধ্যম আছে. 1183 01:13:45,070 --> 01:13:48,820 আমি আসল অবস্থান পেতে বিয়োগ করা আছে 1184 01:13:48,820 --> 01:13:50,420 প্রাথমিক প্রথম স্পট আগে আমি এটি মুক্ত করতে পারেন. 1185 01:13:56,300 --> 01:13:58,450 সুতরাং, এখানে আরো একটি উদাহরণ জড়িত. 1186 01:13:58,450 --> 01:14:03,360 এই ক্ষেত্রে, আমরা একটি অক্ষর অ্যারের মধ্যে 7 টি অক্ষর বণ্টন করছেন. 1187 01:14:03,360 --> 01:14:06,480 >> আমরা কি করছেন এই ক্ষেত্রে আমরা তাদের প্রথম 6 ওভার looping করছি, 1188 01:14:06,480 --> 01:14:09,900 এবং আমরা জেড তাদের করছি সেটিং 1189 01:14:09,900 --> 01:14:13,350 সুতরাং, তোমার জন্য int = 0, আমি> 6, আমি + + ', 1190 01:14:13,350 --> 01:14:16,220 সুতরাং, শুধু তোমার পয়েন্টার + দিতে আমাদের এই ক্ষেত্রে, হবে, 1191 01:14:16,220 --> 01:14:20,860 পয়েন্টার, পয়েন্টার +1 করুন, পয়েন্টার +2, পয়েন্টার +3, এবং তাই এবং লুপ যাতে ঘোষণা. 1192 01:14:20,860 --> 01:14:24,040 কি এটি করতে যাচ্ছে এটা যে ঠিকানা পায়, এটি dereferences মান পেতে, 1193 01:14:24,040 --> 01:14:27,440 এবং পরিবর্তনের যে একটি জেড মান 1194 01:14:27,440 --> 01:14:30,350 তারপর শেষে এই একটি স্ট্রিং স্মরণ অধিকার,? 1195 01:14:30,350 --> 01:14:33,560 সমস্ত স্ট্রিং নাল সসীম অক্ষর দিয়ে শেষ আছে. 1196 01:14:33,560 --> 01:14:38,620 সুতরাং, আমি কি কাজের জন্য পয়েন্টার 6 আমি ইন নাল টারমিনেটর অক্ষর করা 1197 01:14:38,620 --> 01:14:43,980 এবং এখন কি মূলত আমি যা করছি উপর এখানে একটি পংক্তি জন্য রূপায়ণকারী printf হয় ডান,? 1198 01:14:43,980 --> 01:14:46,190 >> সুতরাং, printf যখন এখন কখন এটি একটি স্ট্রিং এর শেষে পৌঁছে গেছেন? 1199 01:14:46,190 --> 01:14:48,230 যখন এটি সসীম নাল অক্ষর হিট. 1200 01:14:48,230 --> 01:14:52,030 সুতরাং, এই ক্ষেত্রে, আমার আসল এই অ্যারে শুরুতে পয়েন্টার পয়েন্ট. 1201 01:14:52,030 --> 01:14:56,410 আমি প্রথম অক্ষর প্রিন্ট আউট. আমি এক উপর স্থানান্তরিত করেন. 1202 01:14:56,410 --> 01:14:58,420 আমি যে চরিত্র প্রিন্ট আউট. আমি এটি উপর সরানো. 1203 01:14:58,420 --> 01:15:02,180 এবং আমি রাখা এই কাজ আমি শেষ পর্যন্ত পৌঁছাতে পারে. 1204 01:15:02,180 --> 01:15:07,750 এবং এখন শেষ * এই পয়েন্টার এবং নাল সসীম চরিত্র ফিরে পেতে dereference হবে. 1205 01:15:07,750 --> 01:15:11,780 এবং তাই আমার যখন লুপ রান শুধুমাত্র যখন যে মান নাল সসীম চরিত্র নয়. 1206 01:15:11,780 --> 01:15:13,770 সুতরাং এখন, আমি এই লুপ আউট থেকে প্রস্থান করুন. 1207 01:15:18,780 --> 01:15:21,180 এবং তাই, যদি আমি এই পয়েন্টার থেকে 6 বিয়োগ, 1208 01:15:21,180 --> 01:15:22,860 আমি ফিরে যেতে সব শুরুতে উপায়. 1209 01:15:22,860 --> 01:15:27,880 মনে রাখবেন, আমি এই করছি কারণ আমি শুরুতে যাতে এটা মুক্ত যেতে থাকে. 1210 01:15:27,880 --> 01:15:30,270 >> সুতরাং, আমি জানি যে ছিল অনেক. সেখানে কি কোন প্রশ্ন? 1211 01:15:30,270 --> 01:15:31,870 অনুগ্রহপূর্বক, হ্যাঁ? 1212 01:15:31,870 --> 01:15:36,610 [ছাত্র প্রশ্ন অপাচ্য] 1213 01:15:36,610 --> 01:15:38,190 আপনি যে জোরে বলতে পারেন? দুঃখিত. 1214 01:15:38,190 --> 01:15:44,140 [ছাত্র] অন শেষ স্লাইডে ডান আগে আপনি পয়েন্টার মুক্ত, 1215 01:15:44,140 --> 01:15:47,300 যেখানে আপনি আসলে ছিল পয়েন্টার মান পরিবর্তন? 1216 01:15:47,300 --> 01:15:50,370 [জোসেফ] সুতরাং, এখানে ডান. >> [ছাত্র] ওহ, ঠিক আছে. 1217 01:15:50,370 --> 01:15:51,890 [জোসেফ] সুতরাং, আমি একটি পয়েন্টার বিয়োগ বিয়োগ অধিকার আছে,, 1218 01:15:51,890 --> 01:15:54,140 যা এক জিনিস ফেরত চলে আসে, তারপর আমি এবং এটি মুক্ত, 1219 01:15:54,140 --> 01:15:57,000 কারণ এই পয়েন্টার হয়েছে অ্যারে শুরুতে তীক্ষ্ন করা হবে. 1220 01:15:57,000 --> 01:16:00,420 [ছাত্র] কিন্তু প্রয়োজন ছিল যে আপনি যে লাইন পরে থামানো যাবে না. 1221 01:16:00,420 --> 01:16:03,130 [জোসেফ] তাই, যদি আমি এই পরে থামানো যায়, এই বিবেচনা একটি মেমরি লিক হবে, 1222 01:16:03,130 --> 01:16:04,810 কারণ আমি মুক্ত চালানো হয়নি. 1223 01:16:04,810 --> 01:16:11,290 [ছাত্র] আমি [অপাচ্য] পরে প্রথম তিনটি লাইন যেখানে আপনি পয়েন্টার +1- [অপাচ্য] ছিল. 1224 01:16:11,290 --> 01:16:13,140 [জোসেফ] Uh-হাহ. সুতরাং, কি আছে প্রশ্ন? 1225 01:16:13,140 --> 01:16:14,780 দুঃখিত. না, না,. , যান যান, দয়া করে. 1226 01:16:14,780 --> 01:16:16,870 [ছাত্র] সুতরাং, আপনি পয়েন্টার মান পরিবর্তন করছি না. 1227 01:16:16,870 --> 01:16:19,130 আপনি ছিল পয়েন্টার বিয়োগ বিয়োগ না করে থাকতে পারে. 1228 01:16:19,130 --> 01:16:19,730 [জোসেফ] হ্যাঁ, ঠিক. 1229 01:16:19,730 --> 01:16:21,890 সুতরাং, যখন আমি পয়েন্টার +1 +2 পয়েন্টার না, 1230 01:16:21,890 --> 01:16:24,410 আমি পয়েন্টার করছেন না পয়েন্টার +1- সমান. 1231 01:16:24,410 --> 01:16:27,260 সুতরাং, শুধু পয়েন্টার অ্যারের প্রারম্ভে প্রতি নির্দেশ মতেই. 1232 01:16:27,260 --> 01:16:31,460 এটা কেবলমাত্র যখন আমি প্লাস প্লাস যে এটি সেট করে পয়েন্টার ভিতরে ফিরে মান, 1233 01:16:31,460 --> 01:16:33,550 আসলে এটা বরাবর এই চলে আসে. 1234 01:16:36,860 --> 01:16:37,780 ঠিক আছে. 1235 01:16:40,550 --> 01:16:42,030 আরো প্রশ্ন? 1236 01:16:44,680 --> 01:16:47,790 >> আবার, এই যদি হয় অপ্রতিরোধ্য বাছাই করা, এই সময় করা হবে আচ্ছাদিত. 1237 01:16:47,790 --> 01:16:50,710 এটি সম্পর্কে আপনার অধ্যাপনা সহকর্মী, Ask এবং আমরা শেষে প্রশ্নগুলির উত্তর দিতে পারেন. 1238 01:16:53,510 --> 01:16:56,600 এবং সাধারণত আমরা এই বিয়োগ জিনিস না চান. 1239 01:16:56,600 --> 01:16:59,760 এই সম্পর্কে কতটা আমি অ্যারের মধ্যে অফসেট করেছি অবগত থাকার প্রয়োজন রয়েছে. 1240 01:16:59,760 --> 01:17:04,520 সাধারণভাবে তাই,, এটা কিভাবে কাজ করে পয়েন্টার গাণিতিক ব্যাখ্যা. 1241 01:17:04,520 --> 01:17:07,970 তবে কি আমরা সাধারণত যাও না হয় আমরা পয়েন্টার একটি কপি তৈরী করতে চাই, 1242 01:17:07,970 --> 01:17:11,640 এবং তারপর আমরা যে কপি ব্যবহার করার জন্য যখন আমরা স্ট্রিং যাচ্ছেন করছি প্রায় করব. 1243 01:17:11,640 --> 01:17:14,660 এইসব ক্ষেত্রে, তাই আপনি অনুলিপি মুদ্রণ সম্পূর্ণ পংক্তি ব্যবহার, 1244 01:17:14,660 --> 01:17:19,040 কিন্তু আমরা পয়েন্টার বিয়োগ 6 ভালো না বা না কতটা আমরা এই সরে ট্র্যাক রাখতে, 1245 01:17:19,040 --> 01:17:22,700 যেহেতু আমরা জানি যে আমাদের মূল পয়েন্ট এখনও তালিকার শুরুতে নির্দিষ্ট 1246 01:17:22,700 --> 01:17:25,340 এবং আমরা যে সব রদবদল করা ছিল এই কপি. 1247 01:17:25,340 --> 01:17:28,250 সাধারণভাবে তাই,, আপনার মূল কপি পয়েন্টার পরিবর্তন. 1248 01:17:28,250 --> 01:17:32,350 আপনার কি মত অনুসারে বাছাই করার চেষ্টা করবেন না - মূল কপি পরিবর্তন don't. 1249 01:17:32,350 --> 01:17:35,290 আপনার মূল শুধুমাত্র কপি পরিবর্তন করার চেষ্টা করছেন. 1250 01:17:41,540 --> 01:17:44,870 সুতরাং, আপনি বিজ্ঞপ্তি যখন আমরা printf মধ্যে স্ট্রিং পাস 1251 01:17:44,870 --> 01:17:48,990 আপনি এটি সামনে একটি তারকা মত আমরা সমস্ত অন্যান্য dereferences সঙ্গে কি ঠিক করে না, তবে? 1252 01:17:48,990 --> 01:17:54,180 সুতরাং, যদি আপনি প্রিন্ট আউট সম্পূর্ণ পংক্তি% গুলি প্রত্যাবর্তনের একটি ঠিকানা, 1253 01:17:54,180 --> 01:17:57,610 এবং এই ক্ষেত্রে একটি পয়েন্টার বা অক্ষরের একটি অ্যারের মত এই কেস. 1254 01:17:57,610 --> 01:18:00,330 >> অক্ষর, গৃহস্থালির কাজ * গুলি, অ্যারে এবং একই জিনিসের. 1255 01:18:00,330 --> 01:18:03,690 অক্ষর পয়েন্টার হয়, এবং চরিত্র অ্যারে একই জিনিসের. 1256 01:18:03,690 --> 01:18:05,720 এবং তাই, আমরা কি পয়েন্টার পাস হয়. 1257 01:18:05,720 --> 01:18:08,150 আমরা ভালো * পয়েন্টার বা ওই জাতীয় কিছু পাস না. 1258 01:18:13,110 --> 01:18:14,930 সুতরাং, অ্যারে এবং পয়েন্টার একই জিনিসের. 1259 01:18:14,930 --> 01:18:19,160 আপনি যখন x এর মত কিছু করছি উপর এখানে একটি অ্যারের জন্য [y] টিপে, 1260 01:18:19,160 --> 01:18:21,960 এটা কি ফণা অধীন করছে এটা বলছে এর, ঠিক আছে, এটা একটা অক্ষর অ্যারে, 1261 01:18:21,960 --> 01:18:23,690 তাই একটা পয়েন্টার. 1262 01:18:23,690 --> 01:18:26,510 তাই x একই জিনিসের, 1263 01:18:26,510 --> 01:18:28,650 এবং তাই এটি কী জন্য এটা x যাও y যোগ, 1264 01:18:28,650 --> 01:18:31,820 যা মেমরির মধ্যে গতির যে অনেক হিসাবে একই জিনিস. 1265 01:18:31,820 --> 01:18:34,930 এবং এখন x + y দেয় ঠিকানা কিছু সাজানোর আমাদের, 1266 01:18:34,930 --> 01:18:37,570 এবং আমরা ঠিকানা dereference বা তীর অনুসরণ 1267 01:18:37,570 --> 01:18:41,640 যেখানে যাও মেমরির মধ্যে যে অবস্থান হয় এবং আমরা পেতে মেমরির মধ্যে যে অবস্থান মান আউট. 1268 01:18:41,640 --> 01:18:43,720 সুতরাং, তাই এই দুই ঠিক একই জিনিস. 1269 01:18:43,720 --> 01:18:45,840 এটি শুধু একটি অন্বিত চিনি. 1270 01:18:45,840 --> 01:18:48,090 তারা একই জিনিস করে. এগুলি কেবল একে অপরের জন্য বিভিন্ন syntactics. 1271 01:18:51,500 --> 01:18:57,590 >> তাই, পয়েন্টার সাথে গোলমাল হতে পারে? ভালো লেগেছে, অনেক. ঠিক আছে. তাই, খারাপ জিনিষ. 1272 01:18:57,590 --> 01:19:02,410 কিছু খারাপ জিনিষ আপনি করতে পারেন যদি আপনার malloc কল ফেরৎ নাল, ডান যাচাই করছি না? 1273 01:19:02,410 --> 01:19:06,560 এই ক্ষেত্রে, আমি সিস্টেম সম্পর্কে দিতে জিজ্ঞাসা করছি - কি হল যে সংখ্যা? 1274 01:19:06,560 --> 01:19:11,200 ভালো লেগেছে 2 বিলিয়ন বার 4, কারণ একটি পূর্ণসংখ্যা আকার 4 বাইট. 1275 01:19:11,200 --> 01:19:13,810 আমি করছি জন্য 8 বিলিয়ন বাইট মত জিজ্ঞাসা. 1276 01:19:13,810 --> 01:19:17,270 অবশ্য আমার কম্পিউটার যাও যাও সম্পর্কে যে অনেক মেমরি ফেরত দিতে সমর্থ হবে না. 1277 01:19:17,270 --> 01:19:20,960 এবং আমরা যদি এই হয় নাল, না তাই চেক যখন আমরা ওইখানে এটি dereference চেষ্টা - 1278 01:19:20,960 --> 01:19:24,270 যেখানে এটি যাও যাও তীর অনুসরণ করে যাচ্ছে - আমরা যে মেমরি নেই. 1279 01:19:24,270 --> 01:19:27,150 এটা কি আমরা একটি নাল পয়েন্টার dereferencing. 1280 01:19:27,150 --> 01:19:29,710 এবং এই মূলত আপনি segfault যাও জানাবে. 1281 01:19:29,710 --> 01:19:31,790 এই উপায়ে আপনি segfault করতে পারে. 1282 01:19:34,090 --> 01:19:38,090 অন্য খারাপ জিনিষ আপনি করতে পারেন - ওহ ভাল. 1283 01:19:38,090 --> 01:19:40,650 যে একটি নাল পয়েন্টার dereferencing ছিল. ঠিক আছে. 1284 01:19:40,650 --> 01:19:45,160 অন্য খারাপ জিনিস - ভাল, যে শুধু আপনি সেখানে একটি চেক করা ঠিক 1285 01:19:45,160 --> 01:19:46,980 যে কিনা পরীক্ষা করা হয় নাল পয়েন্টার 1286 01:19:46,980 --> 01:19:51,000 এবং আউট প্রোগ্রাম থেকে প্রস্থান যদি এটা যে malloc একটি নাল পয়েন্টার ফেরৎ. 1287 01:19:55,110 --> 01:19:59,850 এটা xkcd কমিক. মানুষ এটা এখন বুঝতে. এর বাছাই করুন. 1288 01:20:06,120 --> 01:20:09,350 >> সুতরাং, মেমরি. এবং আমি এই উপর গিয়েছিলাম. 1289 01:20:09,350 --> 01:20:12,000 আমরা একটি লুপ করছি malloc কলিং, কিন্তু প্রতিটি সময় আমরা কল malloc 1290 01:20:12,000 --> 01:20:14,370 আমরা যেখানে এই পয়েন্টার যাও প্রতি নির্দেশ হয় করছেন ট্র্যাক হারিয়ে, 1291 01:20:14,370 --> 01:20:15,750 কারণ আমরা তা clobbering করছি. 1292 01:20:15,750 --> 01:20:18,410 সুতরাং, malloc প্রারম্ভিক কল দেয় মেমরি সম্পর্কে বেশী এখানে. 1293 01:20:18,410 --> 01:20:19,990 আমার এই পয়েন্টার পয়েন্টার দেয়া হল. 1294 01:20:19,990 --> 01:20:23,020 এখন, আমি মুক্ত না, তাই এখন আমি malloc কল আবার. 1295 01:20:23,020 --> 01:20:26,070 এখন এটি স্থানটিকে এখানে বেশী. এখন আমার মেমরি নিয়ে এখানে প্রতি নির্দেশ করা হয়. 1296 01:20:26,070 --> 01:20:27,640 এখানে প্রতি নির্দেশ উপর. এখানে প্রতি নির্দেশ উপর. 1297 01:20:27,640 --> 01:20:31,820 কিন্তু আমি সব এখানে যে আমি বরাদ্দ উপর মেমরি অ্যাড্রেস ট্র্যাক হারিয়ে ফেলেছি. 1298 01:20:31,820 --> 01:20:35,100 এবং এখন আমি আর থাকে না তাদের কোনো রেফারেন্স না. 1299 01:20:35,100 --> 01:20:37,230 সুতরাং, আমি এই লুপ বাইরে তাদের মুক্ত করতে পারে না. 1300 01:20:37,230 --> 01:20:39,390 তাই যাতে ভালো কিছু করতে, 1301 01:20:39,390 --> 01:20:42,250 যদি আপনি মেমরি মুক্ত ভুলবেন না এবং আপনি এই মেমরি লিকের পেতে, 1302 01:20:42,250 --> 01:20:45,810 আপনি এই লুপ ভিতরে মেমরি একবার আপনি এটা দিয়ে সম্পন্ন মুক্ত আছে. 1303 01:20:45,810 --> 01:20:51,400 ওয়েল, এই কি ঘটবে. আমি জানি আপনি প্রচুর এই ঘৃণা. 1304 01:20:51,400 --> 01:20:55,270 কিন্তু এখন - ইয়ে! আপনি 44.000 কিলোবাইট ভালো পেতে. 1305 01:20:55,270 --> 01:20:57,110 সুতরাং, আপনি লুপের শেষে এটি মুক্ত, 1306 01:20:57,110 --> 01:20:59,770 এবং যেন প্রত্যেক সময় মুক্ত মেমরি যাচ্ছে. 1307 01:20:59,770 --> 01:21:03,620 মূলত, আর আপনার প্রোগ্রাম আছে একটি মেমরি লিক না. 1308 01:21:03,620 --> 01:21:08,150 >> এবং এখন আপনি অন্য কিছু করতে পারেন কিছু স্মৃতি যে আপনি দুইবার জন্য জিজ্ঞাসা করেছি মুক্ত. 1309 01:21:08,150 --> 01:21:11,060 এই ক্ষেত্রে, আপনি malloc কিছু, আপনি এর মান পরিবর্তন. 1310 01:21:11,060 --> 01:21:13,140 আপনি এটি মুক্ত একবার কারণ আপনি বলেছেন আপনি এটা দিয়ে কাজ হয়. 1311 01:21:13,140 --> 01:21:14,940 কিন্তু পরে আমরা তা আবার মুক্ত. 1312 01:21:14,940 --> 01:21:16,730 এইটি এমন কিছু বিষয় যা বেশ খারাপ. 1313 01:21:16,730 --> 01:21:18,820 এটি প্রাথমিকভাবে segfault যাচ্ছে না, 1314 01:21:18,820 --> 01:21:23,350 কিন্তু পরে যখন একটি কি এই জন্য ডবল হয় freeing আপনার গাদা গঠন এই corrupts, 1315 01:21:23,350 --> 01:21:27,200 এবং আপনি এই বিষয়ে জানার একটি সামান্য বিট আরো যদি আপনি CS61 মত একটি ক্লাস নিতে হবে. 1316 01:21:27,200 --> 01:21:30,000 একটি পরে মূলত কিন্তু যখন আপনার কম্পিউটারে বিভ্রান্ত করতে যাচ্ছে 1317 01:21:30,000 --> 01:21:33,010 সম্পর্কে কি মেমরি অবস্থানে আছে এবং যেখানে যেখানে এটি সঞ্চিত - 1318 01:21:33,010 --> 01:21:34,800 যেখানে তথ্য মেমরির মধ্যে সংরক্ষিত হয়. 1319 01:21:34,800 --> 01:21:38,080 তাই একটা পয়েন্টার freeing দুইবার একটি খারাপ জিনিস যে আপনি না চান তাহলে. 1320 01:21:38,080 --> 01:21:41,600 >> অন্য যে ভুল হয়ে যেতে পারে sizeof ব্যবহার করছে না. 1321 01:21:41,600 --> 01:21:44,460 এই ক্ষেত্রে, তাই আপনি 8 বাইট malloc, 1322 01:21:44,460 --> 01:21:46,700 এবং যে দুটি পূর্ণসংখ্যা হিসাবে একই জিনিস ডানে,? 1323 01:21:46,700 --> 01:21:49,580 সুতরাং, এটা পুরোপুরি নিরাপদ, কিন্তু এটা? 1324 01:21:49,580 --> 01:21:52,160 ওয়েল, লুকাস হিসাবে বিভিন্ন আর্কিটেকচারের সম্পর্কে বললাম, 1325 01:21:52,160 --> 01:21:54,220 পূর্ণসংখ্যার বিভিন্ন লেন্থ হয়. 1326 01:21:54,220 --> 01:21:57,970 যে যন্ত্র ব্যবহার করছেন তাই,, ইন্টিজার হয় প্রায় 4 বাইট, 1327 01:21:57,970 --> 01:22:02,370 কিন্তু কিছু অন্যান্য সিস্টেমে তারা 8 বাইট হতে পারে অথবা তারা 16 বাইট হতে পারে. 1328 01:22:02,370 --> 01:22:05,680 তাই, যদি আমি এখানে উপর এই নম্বরটি ব্যবহার, 1329 01:22:05,680 --> 01:22:07,310 এই প্রোগ্রাম যন্ত্র কাজ করতে পারে, 1330 01:22:07,310 --> 01:22:10,360 কিন্তু কিছু অন্যান্য সিস্টেমে পর্যাপ্ত মেমরি বরাদ্দ করা যাচ্ছে না. 1331 01:22:10,360 --> 01:22:14,020 এই ক্ষেত্রে, এই কি sizeof অপারেটর জন্য ব্যবহৃত হয়. 1332 01:22:14,020 --> 01:22:16,880 আমরা যখন কল sizeof (int), কি আছে এই হল 1333 01:22:16,880 --> 01:22:21,910  এটি আপনাকে সিস্টেমের যে প্রোগ্রাম হয় পূর্ণসংখ্যা মাপ আমাদের. 1334 01:22:21,910 --> 01:22:25,490 এই ক্ষেত্রে, তাই, sizeof (int) 4 ফিরে প্রয়োগ মত কিছু করবে, 1335 01:22:25,490 --> 01:22:29,980 এবং এখন এই ইচ্ছা 4 * 2, যা 8, 1336 01:22:29,980 --> 01:22:32,330 যা শুধু স্থান দুটি পূর্ণসংখ্যার জন্য প্রয়োজনীয় পরিমাণ. 1337 01:22:32,330 --> 01:22:36,710 একটি ভিন্ন সিস্টেম, যদি কোন int 16 বাইট বা 8 বাইট ভালো হয়, 1338 01:22:36,710 --> 01:22:39,380 এটা এর যথেষ্ট বাইটের যে পরিমাণ সঞ্চয় ফিরে যাচ্ছে. 1339 01:22:41,830 --> 01:22:45,310 >> এবং পরিশেষে, structs. 1340 01:22:45,310 --> 01:22:48,340 সুতরাং, যদি আপনি যা মেমরির মধ্যে একটি সুডোকু বোর্ড সঞ্চয় চেয়েছিলেন, কিভাবে এই আমরা কি হতে পারে? 1341 01:22:48,340 --> 01:22:51,570 আপনি সর্বপ্রথম যে জিনিসটি জন্য একটি পরিবর্তনশীল মত মনে হতে পারে, 1342 01:22:51,570 --> 01:22:53,820 দ্বিতীয় জিনিস জন্য একটি পরিবর্তনশীল, তৃতীয় জিনিস জন্য একটি পরিবর্তনশীল, 1343 01:22:53,820 --> 01:22:56,420 খারাপ, ডান - চতুর্থ বিষয়ের জন্য একটি পরিবর্তনশীল? 1344 01:22:56,420 --> 01:23:00,750 সুতরাং, একটি উন্নতিসাধনের আপনি এই উপরের করতে পারবে একটি 9 x 9 শ্রেণীবিন্যাস করা হয়. 1345 01:23:00,750 --> 01:23:04,480 যে সূক্ষ্ম, কিন্তু থাকলে কি সুডোকু বোর্ড সহ অন্যান্য বিষয় সংযুক্ত চেয়েছিলেন 1346 01:23:04,480 --> 01:23:06,490 চাই কি বোর্ড অসুবিধা হয়, 1347 01:23:06,490 --> 01:23:11,740 অথবা, উদাহরণস্বরূপ, আপনার স্কোর কি হয়, অথবা কিভাবে অনেক সময় এটি আপনি এই বোর্ড সমাধান নেওয়া হয়ে গেছে? 1348 01:23:11,740 --> 01:23:14,970 আচ্ছা, আপনি কি করতে পারেন আপনার একটি struct তৈরি করতে পারেন. 1349 01:23:14,970 --> 01:23:18,910 আমি কি করছি মূলত বলছে হল আমি এখানে উপর করছি এই কাঠামো নির্ধারণ, 1350 01:23:18,910 --> 01:23:23,230 এবং আমি একটি সুডোকু বোর্ড একটি বোর্ড যা 9 x 9 রয়েছে সংজ্ঞা করছি. 1351 01:23:23,230 --> 01:23:26,650 >> এবং এটি কি আছে এটা পয়েন্টার স্তরের নাম আছে. 1352 01:23:26,650 --> 01:23:30,730 এটি x এবং y, ও যা যেখানে আমি ডান এখন মধ্যে সমন্বয় আছে. 1353 01:23:30,730 --> 01:23:35,980 এছাড়াও সময় [অপাচ্য] করেনি কাটিয়েছি, এবং এটি প্যাচসমূহ আমি এতদূর ইনপুট করেছি মোট নম্বর আছে. 1354 01:23:35,980 --> 01:23:40,010 এই ক্ষেত্রে তাই, আমি একটি তথ্য আভা মাত্র একটি গ্রুপ গঠন করে করতে পারেন 1355 01:23:40,010 --> 01:23:42,790 পরিবর্তে উড়ন্ত বিভিন্ন ভেরিয়েবল ভালো ভালো কাছাকাছি মধ্যে এটি হচ্ছে 1356 01:23:42,790 --> 01:23:44,540 যে আমি সত্যিই ট্র্যাক রাখা নিতে পারেন. 1357 01:23:44,540 --> 01:23:49,720 এবং এই দেয় আমাদের শুধু এই struct ভিতরে বিভিন্ন জিনিষ উল্লেখ ধরণের জন্য চমৎকার বাক্য গঠন আছে. 1358 01:23:49,720 --> 01:23:53,430 আমি board.board, ঠিক এবং আমি সুডোকু বোর্ড ফিরে পেতে পারেন. 1359 01:23:53,430 --> 01:23:56,320 Board.level, আমি কিভাবে পেতে শক্ত হয়. 1360 01:23:56,320 --> 01:24:00,540 Board.x এবং board.y সম্পর্কে যেখানে আমি বোর্ড হতে পারে স্থানাঙ্ক দিতে. 1361 01:24:00,540 --> 01:24:04,730 তাই আমি কি আমরা কল struct ক্ষেত্র অ্যাক্সেস করছি. 1362 01:24:04,730 --> 01:24:08,840 এই sudokuBoard, যা একটি টাইপ যে আমি সংজ্ঞায়িত আছে. 1363 01:24:08,840 --> 01:24:14,800 এবং এখন আমরা এখানে এসেছি. আমি একটি পরিবর্তনশীল নামক "বোর্ড" টাইপ sudokuBoard আছে. 1364 01:24:14,800 --> 01:24:18,820 এবং এখন আমি সব ক্ষেত্র করতে এখানে ধরে এই কাঠামোর আপ অ্যাক্সেস করতে পারেন. 1365 01:24:20,830 --> 01:24:22,450 >> Structs সম্পর্কে কোন প্রশ্ন? হ্যাঁ? 1366 01:24:22,450 --> 01:24:25,890 Int x, y জন্য [ছাত্র], আপনি এক লাইন ঘোষিত উভয়? >> [জোসেফ] Uh-হাহ. 1367 01:24:25,890 --> 01:24:27,400 [ছাত্র] ঠিক তাই, আপনি তাদের সঙ্গে যে সমস্ত যেত না? 1368 01:24:27,400 --> 01:24:31,200 X এর মতো, y কমা বার যে মোট? 1369 01:24:31,200 --> 01:24:34,460 [জোসেফ] হ্যাঁ, আপনি স্পষ্টভাবে যে, না কিন্তু করতে পারি নি কারণ আমি একই লাইনে x এবং y করা - 1370 01:24:34,460 --> 01:24:36,330 এবং প্রশ্ন হল কেন আমরা একই লাইনে এই কি করতে পারি? 1371 01:24:36,330 --> 01:24:38,600 কেন কেবল একই লাইনে আমরা না এই সকল করা 1372 01:24:38,600 --> 01:24:42,090 x এবং y একে অপরের সাথে, 1373 01:24:42,090 --> 01:24:44,780 এবং এই অর্থে ঠিক stylistically আরো সঠিক,, 1374 01:24:44,780 --> 01:24:46,600 কারণ এটি একই লাইনে দুটি জিনিস এর বিন্যাস 1375 01:24:46,600 --> 01:24:49,340 যে মত সাজানোর একই জিনিস সঙ্গে সম্পর্কযুক্ত. 1376 01:24:49,340 --> 01:24:51,440 এবং আমি এই বিভক্ত পৃথক্. শুধু একটি শৈলী জিনিস. 1377 01:24:51,440 --> 01:24:53,720 এই বৈশিষ্ট্যগুলি সবটা কোন পার্থক্য করে তোলে. 1378 01:24:58,150 --> 01:24:59,270 কোন structs উপর অন্য কোন প্রশ্ন? 1379 01:25:03,030 --> 01:25:06,620 আপনি একটি struct সঙ্গে একটি Pokédex নির্ধারণ করতে পারবেন. 1380 01:25:06,620 --> 01:25:11,720 একটি পোকেমন একটি নম্বর আছে এবং এটি একটি চিঠি, মালিক, একটি টাইপ আছে. 1381 01:25:11,720 --> 01:25:16,990 এবং আপনি যদি পোকেমন একটি শ্রেণীবিন্যাস আছে, আপনি একটি Pokédex আপ নেওয়ার অধিকার, করতে পারেন? 1382 01:25:16,990 --> 01:25:20,810 ঠিক আছে, শান্ত. সুতরাং, structs প্রশ্ন. সেগুলো হল সম্পর্কিত structs যাও. 1383 01:25:20,810 --> 01:25:25,270 >> অবশেষে, GDB. কি GDB আপনাকে কি? এটা আপনাকে আপনার প্রোগ্রাম ডিবাগ করা. 1384 01:25:25,270 --> 01:25:27,650 এবং যদি আপনি GDB ব্যবহার না করে থাকেন, আমি ছোট দেখার জন্য সুপারিশ করবে 1385 01:25:27,650 --> 01:25:31,250 এবং কি GDB হয় করছি, কিভাবে আপনি এটি দিয়ে কাজ করে, কিভাবে আপনি এটি ব্যবহার করতে পারে, 1386 01:25:31,250 --> 01:25:32,900 একটি প্রোগ্রাম এবং এটা পরীক্ষা. 1387 01:25:32,900 --> 01:25:37,400 তাই কি GDB আপনাকে কি এটা বিরতি [অপাচ্য] আপ প্রোগ্রাম আপনাকে আপনার 1388 01:25:37,400 --> 01:25:38,920 এবং বাস্তবিক একটি লাইন. 1389 01:25:38,920 --> 01:25:42,600 উদাহরণস্বরূপ, বিরাম যায়নি 'আমি আমার মত প্রোগ্রাম লাইন 3 এ করতে চান, 1390 01:25:42,600 --> 01:25:46,010 এবং যখন আমি লাইন 3 এ আছি আমি সব মান আছে আউট মুদ্রণ করতে পারেন. 1391 01:25:46,010 --> 01:25:49,710 এবং তাই আমরা একটি পংক্তির মত pausing 1392 01:25:49,710 --> 01:25:52,350 হয় আমরা এই যে লাইনে একটি ব্রেকপয়েন্ট নির্বাণ কল 1393 01:25:52,350 --> 01:25:55,920 এবং তারপর আমরা প্রোগ্রাম রাষ্ট্র যে সময়ে ভেরিয়েবল আউট মুদ্রণ করতে পারেন. 1394 01:25:55,920 --> 01:25:58,990 >> আমরা তখন থেকে প্রোগ্রামটি লাইন বাই লাইন মাধ্যমে সিঁড়ির ধাপ আছে. 1395 01:25:58,990 --> 01:26:03,200 এবং তারপর আমরা স্ট্যাকের রাষ্ট্র এ সময় তাকান পারেন. 1396 01:26:03,200 --> 01:26:08,600 তাই যাতে GDB, আমরা কি করব তা হল আমরা সি ফাইল ঝনঝন ফোন ব্যবহার করার জন্য, 1397 01:26:08,600 --> 01:26:11,290 কিন্তু আমরা একে-ggdb পতাকা পাস আছে. 1398 01:26:11,290 --> 01:26:15,850 এবং একবার আমরা যে আমরা ফলে আউটপুট ফাইল চালানোর সময় gdb কাজ সম্পন্ন হয়. 1399 01:26:15,850 --> 01:26:18,810 এবং যাতে আপনি ভালো কিছু লেখার মত ভর পেতে, 1400 01:26:18,810 --> 01:26:21,990 কিন্তু সত্যিই সমস্ত আপনাকে যা করতে হবে কমান্ড প্রারম্ভে এ টাইপ হয়. 1401 01:26:21,990 --> 01:26:24,250 প্রধান বিরতি প্রধান একটি ব্রেকপয়েন্ট রাখে. 1402 01:26:24,250 --> 01:26:28,470 লাইন তালিকা 400 400 কাছাকাছি লাইনের কোড তালিকা. 1403 01:26:28,470 --> 01:26:31,410 এই ক্ষেত্রে এবং যাতে আপনি শুধু চেহারা এবং প্রায় বলতে পারে, ওহ, 1404 01:26:31,410 --> 01:26:34,360 আমি লাইন 397 এ একটি ব্রেকপয়েন্ট, যা এই লাইন সেট করতে চান, 1405 01:26:34,360 --> 01:26:37,170 এবং তারপর আপনার প্রোগ্রাম যে পদক্ষেপ মধ্যে সঞ্চালিত হয় এবং তা ভঙ্গ করা যাচ্ছে. 1406 01:26:37,170 --> 01:26:41,120 এটা বিরতি আছে, যাচ্ছে এবং আপনি যেমন জন্য আউট মুদ্রণ, কম বা উচ্চ মান, করতে পারি. 1407 01:26:41,120 --> 01:26:46,410 এবং তাই কমান্ড আপনাকে জানতে হবে একটি গুচ্ছ আছে, 1408 01:26:46,410 --> 01:26:48,660 এবং এই স্লাইডশো ওয়েবসাইটে যেতে হবে, 1409 01:26:48,660 --> 01:26:54,000 তাই আপনি যদি শুধুমাত্র এইসব উল্লেখ করতে চান বা আপনার পছন্দ Cheat শীট তাদের করা, বিনা দ্বিধায়. 1410 01:26:54,000 --> 01:27:00,650 >> কুল. যে ছিল ক্যুইজ পর্যালোচনা 0, এবং আমরা চারপাশে যদি আপনার কোনো প্রশ্ন থাকে বিদ্ধ করা হবে. 1411 01:27:00,650 --> 01:27:03,850 ঠিক আছে. 1412 01:27:03,850 --> 01:27:09,030 >>  [সাধুবাদ] 1413 01:27:09,030 --> 01:27:13,000 >> [CS50.TV]