1 00:00:00,000 --> 00:00:02,270 >> [نقد و بررسی: امتحان 1] 2 00:00:02,270 --> 00:00:04,620 [علی نهم در Oreoluwa Barbarinsa، لوکاس فریتاس، راب Bowden] [دانشگاه هاروارد] 3 00:00:04,620 --> 00:00:07,660 [این CS50 است.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [لوکاس فریتاس] خوش آمدید همه. این بررسی برای مسابقه 1 است. 5 00:00:11,610 --> 00:00:15,040 فقط به عنوان یک محدوده ی مسئولیت ها، این است که - منظورم این است که، ما قصد داریم به تلاش برای پوشش 6 00:00:15,040 --> 00:00:17,770 مواد به عنوان آنجا که ممکن است، اما این بدان معنا نیست که 7 00:00:17,770 --> 00:00:20,780 ما قصد داریم به پوشش تمام چیزهایی است که می تواند در مسابقه 1 باشد. 8 00:00:20,780 --> 00:00:25,270 بنابراین مطمئن شوید که شما نیز نگاهی به سخنرانی ها، بخش ها، همه چیز را که شما می توانید باشد. 9 00:00:25,270 --> 00:00:28,240 مسابقه 1 است رفتن به در چهارشنبه، چهارشنبه آینده باشد. 10 00:00:28,240 --> 00:00:33,800 بنابراین مطمئن شوید که برای مطالعه باشد. این خواهد بود، تا حد زیادی، مانند مسابقه اول 11 00:00:33,800 --> 00:00:36,390 در مورد فرمت آن، اما آن را احتمالا خواهد بسیار سخت تر. 12 00:00:36,390 --> 00:00:39,600 دست کم، در سال گذشته زمانی که من در زمان 50، من فکر کردم آن بسیار سخت بود. 13 00:00:39,600 --> 00:00:42,410 بنابراین مطالعه زیادی. 14 00:00:42,410 --> 00:00:45,190 >> من قصد دارم برای پوشش ساختمان داده ها و کدگذاری هافمن. 15 00:00:45,190 --> 00:00:47,910 این چیزی است که بسیاری از مردم فکر می کنم پیچیده است، 16 00:00:47,910 --> 00:00:51,930 اما من قصد دارم سعی می کنید آن را به عنوان آسان که ممکن است. 17 00:00:51,930 --> 00:00:56,330 اول از همه، آنچه ما می خواهیم به شما بچه ها برای مسابقه 1 می دانیم این است که به 18 00:00:56,330 --> 00:01:00,970 درک توصیف مفهومی از هر یک از ساختمان داده است که من قصد دارم به ارائه. 19 00:01:00,970 --> 00:01:03,960 این بدان معنی است که شما لازم نیست که در واقع 20 00:01:03,960 --> 00:01:07,020 پیاده سازی یک جدول هش در مسابقه خود را 1. 21 00:01:07,020 --> 00:01:10,250 ما نمی خواهیم شما را به پیاده سازی یک جدول هش کل، شاید ما تلاش خواهیم کرد 22 00:01:10,250 --> 00:01:13,090 به برخی از توابع به شما پیاده سازی، 23 00:01:13,090 --> 00:01:16,940 عملیات رایج ترین، اما ما قصد داریم تا شما همه چیز را اجرا می کنند. 24 00:01:16,940 --> 00:01:21,010 بنابراین این مهم است که شما را در درک مفهوم پشت هر یک از ساختار داده 25 00:01:21,010 --> 00:01:23,510 و همچنین است که شما قادر به کد در C، 26 00:01:23,510 --> 00:01:27,880 فقط عملیات رایج ترین آنها را برای هر یک از ساختار داده ها. 27 00:01:27,880 --> 00:01:30,090 و همچنین قادر به بررسی اشاره گر و ساختارها است، 28 00:01:30,090 --> 00:01:33,470 چرا که آنها در این ساختمان داده به نظر می رسد بسیاری. 29 00:01:33,470 --> 00:01:37,380 >> اول، لیست های پیوندی. لیست های پیوندی در واقع بسیار شبیه به آرایه ها، 30 00:01:37,380 --> 00:01:39,930 اما تفاوت بین یک لیست پیوندی و آرایه، 31 00:01:39,930 --> 00:01:45,160 اول از همه، این است که یک لیست پیوندی تا به اندازه بسیار انعطاف پذیر، 32 00:01:45,160 --> 00:01:50,060 در حالی که در آرایه شما باید هر دو را انتخاب کنید با اندازه های بسیار بزرگ برای آرایه، 33 00:01:50,060 --> 00:01:53,710 بنابراین شما می دانید که شما در حال رفتن به قادر به ذخیره تمام اطلاعات خود را در آن آرایه، 34 00:01:53,710 --> 00:01:59,370 و یا شما مجبور به استفاده از malloc به طول انعطاف پذیر از آرایه. 35 00:01:59,370 --> 00:02:03,680 در لیست های پیوندی آن را بسیار آسان فقط به گرفتن عناصر بیشتر، 36 00:02:03,680 --> 00:02:07,210 در لیست پیوندی قرار داده عناصر بیشتر و یا حذف عناصر. 37 00:02:07,210 --> 00:02:09,370 و در واقع، اگر شما نمی خواهید در لیست مربوط به طبقه بندی شده اند می شود، 38 00:02:09,370 --> 00:02:13,950 شما می توانید جستجو و حذف عناصر در زمان ثابت، 39 00:02:13,950 --> 00:02:16,800 بنابراین O (1) زمان، پس از آن بسیار راحت است. 40 00:02:16,800 --> 00:02:20,660 شما فقط باید گره مراقب باشید که همیشه به یاد داشته باشید به malloc و رایگان، 41 00:02:20,660 --> 00:02:25,510 فقط به خاطر اینکه اگر اینکار را نکنید، شما نشت حافظه داشته باشد. 42 00:02:25,510 --> 00:02:31,480 لیست بنابراین مرتبط - تعریف یک گره درست مثل آنچه که ما را سمت راست وجود دارد. 43 00:02:31,480 --> 00:02:35,110 من قرار هوشمند N، اما شما می توانید هر گونه اطلاعات شما می خواهید ذخیره کنید. 44 00:02:35,110 --> 00:02:37,280 بنابراین اگر شما می خواهید برای ذخیره یک رشته، آن را خوب است. 45 00:02:37,280 --> 00:02:41,690 اگر شما می خواهید برای ذخیره یک ساختار، آن را خوب، دو، هر آنچه که شما می خواهید. 46 00:02:41,690 --> 00:02:44,630 من فقط با قرار دادن اعضای هیات N برای مثال در اینجا. 47 00:02:44,630 --> 00:02:46,800 و شما باید یک اشاره گر به گره بعدی. 48 00:02:46,800 --> 00:02:51,940 بنابراین، اساسا، یک لیست پیوندی تا به برخی از داده ها، و سپس آن را به گره بعدی اشاره می کند. 49 00:02:51,940 --> 00:02:56,710 اگر آن را به آخرین عنصر در لیست پیوندی است، آن را به نقطه را به NULL. 50 00:02:56,710 --> 00:02:59,060 بنابراین این یک نمونه از یک لیست پیوندی است. 51 00:02:59,250 --> 00:03:05,960 >> خوب، تا حالا بیایید ببینید که چه کاری باید انجام دهیم اگر من می خواهم برای وارد کردن یک عنصر در یک لیست پیوندی. 52 00:03:05,960 --> 00:03:08,810 اول، قرار دادن تابع از نوع درجه اعتبار ساقط است 53 00:03:08,810 --> 00:03:11,350 چرا که من نمی خواهم به بازگشت هر چیزی. 54 00:03:11,350 --> 00:03:14,200 و من قصد دارم به یک int به عنوان آرگومان، 55 00:03:14,200 --> 00:03:17,090 چون من می خواهم به دانستن آنچه که من می خواهم را وارد کنید. 56 00:03:17,090 --> 00:03:21,840 پس چه اولین چیزی که من باید انجام دهید؟ خوب، من باید در newnode malloc، 57 00:03:21,840 --> 00:03:24,240 به طوری که خط اول است. 58 00:03:24,240 --> 00:03:27,580 من فقط ایجاد یک گره در یک لیست پیوندی قرار داده است. 59 00:03:27,580 --> 00:03:32,360 پس چه می توانم انجام دهم؟ خب، ما می دانیم که در پیاده سازی های ما از لیست های پیوندی 60 00:03:32,360 --> 00:03:38,180 در کلاس، ما همیشه سر به عنوان یک متغیر جهانی قرار داده است. 61 00:03:38,180 --> 00:03:41,800 بنابراین آنچه ما می توانیم انجام دهیم این است تغییر سر. 62 00:03:41,800 --> 00:03:44,300 من می توانم به این گره جدید است رئیس جدید، 63 00:03:44,300 --> 00:03:46,670 و آن را به نقطه را به سر قبلی. 64 00:03:46,670 --> 00:03:50,390 چگونه می توان از انجام این کار؟ اولین چیزی که من باید انجام دهید 65 00:03:50,390 --> 00:03:54,770 است تغییر 'نفر' در گره جدید به ارزش، 66 00:03:54,770 --> 00:03:57,530 که به تابع منتقل شد. 67 00:03:57,530 --> 00:04:01,050 سپس بعد newnode است برای رفتن به سر. 68 00:04:01,050 --> 00:04:05,800 سر در حال رفتن به newnode شود. پس از آن خیلی ساده است. 69 00:04:05,800 --> 00:04:10,090 برای حذف یک گره، ما می توانیم آن را مانند انجام - 70 00:04:10,090 --> 00:04:14,790 یکی از راه های ما می تواند که انجام دهید این است که می گویند، 71 00:04:14,790 --> 00:04:18,160 خوب، اگر من می خواستم را حذف کنید، به عنوان مثال، 3، 72 00:04:18,160 --> 00:04:24,850 آنچه که من می تواند انجام است درست نقطه گره قبلی 73 00:04:24,850 --> 00:04:27,580 به گره بعدی از 3. 74 00:04:27,580 --> 00:04:29,400 بنابراین من فقط می خواهم انجام چیزی شبیه به آن. 75 00:04:29,400 --> 00:04:33,400 اما آنچه مشکل با انجام این کار است؟ 76 00:04:33,400 --> 00:04:37,400 من یک نشت حافظه، بنابراین من دسترسی به تعداد 3 دیگر ندارد. 77 00:04:37,400 --> 00:04:42,480 مشکل با آن این است که من قصد ندارم که قادر به آزاد است که گره. 78 00:04:42,480 --> 00:04:45,360 من قصد دارم به نشت حافظه و (نامفهوم) به من از آنها بدم میاید. 79 00:04:45,360 --> 00:04:49,370 بنابراین به جای انجام این کار، من احتمالا باید یک اشاره گر به طور موقت داشته باشد. 80 00:04:49,370 --> 00:04:53,210 بنابراین من قرار داده دما. این است که رفتن به نقطه را به گره که من می خواهم را حذف کنید. 81 00:04:53,210 --> 00:04:58,170 و پس از آن من می تواند گره های قبلی به نقطه به گره بعدی حرکت می کند 82 00:04:58,170 --> 00:05:00,390 گره که من می خواهم را حذف کنید. 83 00:05:00,390 --> 00:05:02,730 و در نهایت، من می توانم اشاره گر را آزاد کند. 84 00:05:02,730 --> 00:05:07,480 آیا باید آزاد اشاره گر که من ایجاد حق وجود دارد؟ 85 00:05:07,480 --> 00:05:09,560 من به، فقط به خاطر ندارد - 86 00:05:09,560 --> 00:05:13,430 تفاوت این است که این گره با استفاده از malloc ایجاد شده بود، 87 00:05:13,430 --> 00:05:17,280 پس از آن در پشته است، در حالی که این یکی فقط به عنوان یک سوئیچ NULL در پشته اعلام شد. 88 00:05:17,280 --> 00:05:20,000 بنابراین من لازم نیست که آن را آزاد کند. 89 00:05:20,000 --> 00:05:22,030 >> باشه. بنابراین در حال حاضر اجازه دهید در مورد پشته صحبت کنید. 90 00:05:22,030 --> 00:05:24,680 پشته خیلی سر راست است. 91 00:05:24,680 --> 00:05:29,540 ما پشته و صف در کلاس بود تنها با استفاده از آرایه ها، 92 00:05:29,540 --> 00:05:32,820 اما شما باید آشنا باشد - فقط آگاه باشید 93 00:05:32,820 --> 00:05:40,740 که شما نیز می توانید پشته انجام در صف با استفاده از لیست های پیوندی نیز هست. 94 00:05:40,740 --> 00:05:44,460 بنابراین اگر شما یک آرایه، چه خواهد بود پشته؟ 95 00:05:44,460 --> 00:05:46,810 پشته، اول، باید به یک اندازه. 96 00:05:46,810 --> 00:05:49,950 شما باید برای ذخیره چه اندازه پشته است که شما در حال حاضر داشته است. 97 00:05:49,950 --> 00:05:52,980 و همچنین شما می توانید یک آرایه را داشته باشد، در این مورد از اعداد، 98 00:05:52,980 --> 00:05:55,120 اما اگر شما می خواهید، می توان آن را یک آرایه 99 00:05:55,120 --> 00:06:00,380 از رشته ها، آرایه ای از ساختار، هر چیزی را که می خواهید برای ذخیره. 100 00:06:00,380 --> 00:06:03,240 درباره پشته: تفاوت بین پشته و لیست پیوندی 101 00:06:03,240 --> 00:06:08,590 این است که در پشته شما تنها دسترسی به آخرین عنصری که در پشته قرار داده شده است. 102 00:06:08,590 --> 00:06:11,770 آن را به نام آخرین در، اولین از. 103 00:06:11,770 --> 00:06:15,090 درست مثل شما یک پشته از سینی، 104 00:06:15,090 --> 00:06:17,670 اگر شما یک سینی در بالای پشته، 105 00:06:17,670 --> 00:06:22,670 شما باید برای حذف که سینی برای اولین بار دسترسی به سینی دیگر را داشته باشد. 106 00:06:22,670 --> 00:06:26,310 این همان چیزی که با پشته است. 107 00:06:26,310 --> 00:06:31,220 پس اگر من می خواهم به، به عنوان مثال، اضافه کردن یک عنصر به یک پشته، چه باید بکنم؟ 108 00:06:31,220 --> 00:06:34,070 آن را به نام فشار، و آن را بسیار سر راست است. 109 00:06:34,070 --> 00:06:37,130 اولین چیزی که شما باید انجام دهید این چک است اگر به اندازه پشته 110 00:06:37,130 --> 00:06:40,150 است بیشتر و یا به ظرفیت پشته برابر نیست. 111 00:06:40,150 --> 00:06:45,810 چرا که اگر شما در حال حاضر در ظرفیت کامل، شما می توانید هر چیزی دیگری را اضافه کنید. 112 00:06:45,810 --> 00:06:51,140 و پس از آن اگر نه، شما فقط باید برای اضافه کردن عنصر به پشته. 113 00:06:51,140 --> 00:06:54,530 و در نهایت، افزایش اندازه. پس از آن بسیار سر راست است. 114 00:06:54,530 --> 00:06:57,140 بنابراین من فقط عدد 2 را اضافه کنید. 115 00:06:57,140 --> 00:07:00,350 و اگر من می خواهم به موسیقی پاپ، که بدان معنی است که من می خواهم به حذف 116 00:07:00,350 --> 00:07:03,870 آخرین عنصری است که بازگشت به ارزش عنصر اضافه شد و، 117 00:07:03,870 --> 00:07:09,180 اولین چیزی که من باید برای بررسی این است که پشته خالی نیست. 118 00:07:09,180 --> 00:07:11,510 از آنجا که اگر آن خالی است، من می توانم هر چیزی گشت. 119 00:07:11,510 --> 00:07:14,820 در آن صورت، من از بازگشت -1. 120 00:07:14,820 --> 00:07:18,960 در غیر این صورت، من قصد دارم واحد کم میکنیم به اندازه تنظیمات، 121 00:07:18,960 --> 00:07:22,510 و شماره (s.size) بازگشت. 122 00:07:22,510 --> 00:07:27,230 چرا من واحد کم میکنیم به اندازه و سپس بازگشت s.size؟ 123 00:07:27,230 --> 00:07:30,930 این به این دلیل، در این مورد، تنظیمات تا به اندازه 4، 124 00:07:30,930 --> 00:07:33,810 و من می خواهم برای بازگشت به چهارمین عنصر، درست است؟ 125 00:07:33,810 --> 00:07:36,030 اما شاخص در عنصر چهارم است؟ سه. 126 00:07:36,030 --> 00:07:44,510 از آنجا که من اندازه - در حال رفتن به 3، من فقط می تواند بازگشت s.numbers (s.size) 127 00:07:44,510 --> 00:07:48,410 به خاطر آن 3. بنابراین آن را فقط به شاخص. 128 00:07:48,410 --> 00:07:50,380 >> در حال حاضر صف. صف ها تقریبا همان چیزی. 129 00:07:50,380 --> 00:07:54,950 تنها تفاوت این است که به جای داشتن آخرین در، اولین بار، 130 00:07:54,950 --> 00:07:57,480 شما باید برای اولین بار در، اولین از. 131 00:07:57,480 --> 00:07:59,460 احتمالا اگر شما در حال انتظار برای رفتن به یک کنسرت، 132 00:07:59,460 --> 00:08:04,260 شما نمی خوشحال می شود اگر شما یک پشته به جای یک صف بود. 133 00:08:04,260 --> 00:08:07,730 به عنوان آخرین فرد آمده است را اولین کسی باشید که برای ورود به کنسرت. 134 00:08:07,730 --> 00:08:09,760 شما احتمالا نمی خواهد که شاد باشد. 135 00:08:09,760 --> 00:08:15,020 در صف، اولین کسی که برای دریافت در اولین کسی به خارج است. 136 00:08:15,020 --> 00:08:18,720 بنابراین در تعریف یک صف، علاوه بر داشتن اندازه در آرایه، 137 00:08:18,720 --> 00:08:23,360 شما همچنین باید به سر، که شاخص به سر از پشته. 138 00:08:23,360 --> 00:08:29,000 بنابراین عنصر اول در حال حاضر. 139 00:08:29,000 --> 00:08:32,710 در نوبت قراردادن همان چیزی که به عنوان فشار آمدن است. 140 00:08:32,710 --> 00:08:34,980 اگر شما خیلی ساده و بی تکلف بود، شما فقط می گفت، 141 00:08:34,980 --> 00:08:39,289 خوب، من فقط می تواند انجام دهد دقیقا همان چیزی که به عنوان I برای فشار انجام داد. 142 00:08:39,289 --> 00:08:44,030 من فقط می توانید بررسی کنید که آیا آن را فراتر از ظرفیت نیست. 143 00:08:44,030 --> 00:08:48,760 اگر این است، من بازگشت کاذب، در غیر این صورت من فقط می تواند صادرات مقدار جدید 144 00:08:48,760 --> 00:08:50,630 و پس از آن اندازه افزایش. 145 00:08:50,630 --> 00:08:52,750 اما چرا این اشتباه است؟ 146 00:08:52,750 --> 00:08:55,010 اجازه دهید این مثال را ببینید. 147 00:08:55,010 --> 00:08:57,020 من در تلاش برای در نوبت قراردادن یک دسته از مسائل، 148 00:08:57,020 --> 00:08:58,390 و سپس من قصد دارم به dequeue و در نوبت قراردادن. 149 00:08:58,390 --> 00:09:00,550 در بسیاری از دستورات وجود دارد، اما بسیار ساده است. 150 00:09:00,550 --> 00:09:04,790 من قصد دارم در نوبت قراردادن 5، پس از اضافه کردن 5 و سپس 7، 151 00:09:04,790 --> 00:09:09,310 1، 4، 6، و پس از آن من می خواهم به dequeue چیزی، 152 00:09:09,310 --> 00:09:12,000 که بدان معنی است که من قصد دارم به حذف عنصر اول است. 153 00:09:12,000 --> 00:09:14,640 من می خواهم به حذف شماره 3، درست است؟ 154 00:09:14,640 --> 00:09:17,320 عنصر اول است. خوب. 155 00:09:17,320 --> 00:09:21,450 حال اگر من سعی می کنم در نوبت قراردادن چیز دیگری، چیزی است که اتفاق خواهد افتاد؟ 156 00:09:21,450 --> 00:09:24,290 با توجه به اجرای من، 157 00:09:24,290 --> 00:09:31,040 من که قرار بود برای قرار دادن عدد در q.size شاخص. 158 00:09:31,040 --> 00:09:35,140 در این مورد، به اندازه 8 است، 159 00:09:35,140 --> 00:09:38,640 به طوری که شاخص 8 در موقعیت و زمان آخرین در اینجا. 160 00:09:38,640 --> 00:09:43,900 اگر من سعی می کنم در نوبت قراردادن 1 در اینجا، من باید جای نوشتن موقعیت گذشته 161 00:09:43,900 --> 00:09:45,870 به تعداد 1 است که به طور کامل اشتباه است. 162 00:09:45,870 --> 00:09:49,870 چه من می خواهم به انجام آن بسته بندی کردن اطراف و به مقام اول. 163 00:09:49,870 --> 00:09:52,870 شاید شما فقط می گویند، خوب، من فقط باید به بررسی 164 00:09:52,870 --> 00:09:55,600 اگر من در واقع می تواند چیزی قرار داده است. 165 00:09:55,600 --> 00:09:58,560 اگر نه، من فقط می گویند، آه، ظرفیت جدید کامل 166 00:09:58,560 --> 00:10:02,010 در واقع ظرفیت - 1، و شما می توانید یک عنصر قرار داده نشده است. 167 00:10:02,010 --> 00:10:06,150 اما آنچه مشکل است؟ مشکل این است که اگر من فقط dequeue همه چیز در اینجا 168 00:10:06,150 --> 00:10:08,240 و سپس من سعی می کنم به اضافه کردن چیز دیگری، آن را فقط می گویند، 169 00:10:08,240 --> 00:10:11,210 خوب، شما در ظرفیت کامل، که 0 بود. 170 00:10:11,210 --> 00:10:13,620 بنابراین صف خود را از دست رفته است. 171 00:10:13,620 --> 00:10:16,990 شما باید به بسته بندی کردن در اطراف، و راهی برای بسته بندی در سراسر 172 00:10:16,990 --> 00:10:22,040 که شما بچه ها یاد گرفته در رویایی و دیگر psets شد با استفاده از وزارت دفاع. 173 00:10:22,040 --> 00:10:29,090 شما می توانید آن را در خانه سعی کنید بفهمید چرا شما می q.size + q.head انجام 174 00:10:29,090 --> 00:10:31,080 ظرفیت وزارت دفاع، اما اگر حق را اینجا ببینید، 175 00:10:31,080 --> 00:10:34,760 ما می توانید ببینید که در آن کار می کند. 176 00:10:34,760 --> 00:10:37,760 بنابراین در آخرین مثال، 8 q.size 177 00:10:37,760 --> 00:10:47,590 و سر 1 بود، دلیل آن را این موقعیت در اینجا از آرایه بود. 178 00:10:47,590 --> 00:10:51,970 پس از آن خواهد شد 8 + 1، 9. ظرفیت وزارت دفاع 9 خواهد بود 0. 179 00:10:51,970 --> 00:10:56,640 این امر به شاخص 0 بروید. ما در سمت راست باشد. 180 00:10:56,640 --> 00:10:59,750 و سپس سعی کنید به صف در خانه. 181 00:10:59,750 --> 00:11:04,950 بعضی چیز ها مهم: سعی کنید به درک تفاوت بین یک پشته و صف. 182 00:11:04,950 --> 00:11:11,620 در خانه، سعی کنید بسیار آشنا با اجرای نوبت قراردادن، dequeue، فشار و پاپ. 183 00:11:11,620 --> 00:11:16,560 و همچنین درک زمانی که شما می توانید هر یک از آنها استفاده کنید. 184 00:11:16,560 --> 00:11:22,830 >> بنابراین اجازه دهید به مدت 10 ثانیه با یک دسته از Pokemons شل کنید. 185 00:11:22,830 --> 00:11:26,080 و در حال حاضر اجازه بازگشت به ساختمان داده. 186 00:11:26,080 --> 00:11:29,770 جداول هش. بسیاری از مردم ترس از جداول هش بود. 187 00:11:29,770 --> 00:11:33,650 در مجموعه مسائل 6، غلط یاب املایی. 188 00:11:33,650 --> 00:11:35,980 جداول مخلوط و تلاش می کند، بسیاری از مردم ترس از آنها. 189 00:11:35,980 --> 00:11:38,540 آنها فکر می کنند که بسیار سخت است درک کنید. آره؟ 190 00:11:38,540 --> 00:11:41,490 [راب Bowden] مجموعه مسائل 5. >> مجموعه مسائل 5، آره. تشکر راب. 191 00:11:41,490 --> 00:11:43,370 آره. شش قهر کردن N 'پف، آره بود. 192 00:11:43,370 --> 00:11:49,340 مجموعه مسائل 5 املا شد جستجوگر، و شما مجبور به استفاده از هر یک از جدول هش یا امتحان کنید. 193 00:11:49,340 --> 00:11:55,360 بسیاری از مردم فکر می کردند که آنها فوق العاده سخت است درک بود، اما در واقع آنها هستند خیلی ساده است. 194 00:11:55,360 --> 00:12:01,290 یک جدول هش چیست، اساسا؟ یک جدول هش از آرایه ای از لیست های پیوندی می باشد. 195 00:12:01,290 --> 00:12:06,730 تنها تفاوت بین یک آرایه و یک جدول هش 196 00:12:06,730 --> 00:12:09,730 این است که در جدول هش شما چیزی به نام یک تابع هش. 197 00:12:09,730 --> 00:12:12,080 یک تابع هش چیست؟ 198 00:12:12,080 --> 00:12:13,970 من نمی دانم اگر شما بچه ها می توانید در اینجا بخوانید. 199 00:12:13,970 --> 00:12:16,090 این یک نمونه از جدول hash است. 200 00:12:16,090 --> 00:12:19,220 بنابراین شما می توانید ببینید که شما یک آرایه با 31 عناصر. 201 00:12:19,220 --> 00:12:22,440 و چیزی که ما در یک جدول هش انجام دهید این است که یک تابع هش 202 00:12:22,440 --> 00:12:26,660 است که رفتن به ترجمه یک کلید، هر یک از اعضای هیات به یک شاخص. 203 00:12:26,660 --> 00:12:31,740 اگر، برای مثال، اگر من می خواهم برای B. هریسون را انتخاب کنید، 204 00:12:31,740 --> 00:12:34,190 من می B. هریسون در توابع هش من قرار داده است، 205 00:12:34,190 --> 00:12:36,960 و تابع هش را 24 بازگشت. 206 00:12:36,960 --> 00:12:40,930 بنابراین من می دانم که من می خواهم برای ذخیره B. هریسون در 24. 207 00:12:40,930 --> 00:12:46,580 به طوری که تفاوت بین تنها با داشتن یک آرایه و داشتن یک جدول هش است. 208 00:12:46,580 --> 00:12:48,740 در جدول هش شما یک تابع است که رفتن به شما بگویم اند 209 00:12:48,740 --> 00:12:54,740 که در آن برای ذخیره داده هایی را که می خواهید برای ذخیره. 210 00:12:54,740 --> 00:12:57,040 برای تابع هش، شما می خواهید برای یک تابع هش نگاه 211 00:12:57,040 --> 00:13:00,600 که قطعی و به خوبی توزیع شده است. 212 00:13:00,600 --> 00:13:07,810 همانطور که می توانید در اینجا مشاهده کنید، می بینید که مقدار زیادی از داده هایی را که من به فروشگاه می خواست در واقع 19 213 00:13:07,810 --> 00:13:12,470 به جای استفاده از 31 و 30 و 29، که همه بودند. 214 00:13:12,470 --> 00:13:16,920 بنابراین تابع هش که من استفاده می شود به خوبی توزیع نشده اند. 215 00:13:16,920 --> 00:13:20,710 هنگامی که ما می گویند به خوبی توزیع شده، به این معنی که ما می خواهیم به، 216 00:13:20,710 --> 00:13:26,520 تقریبا، حداقل 1 یا 2 برای هر یک از - 217 00:13:26,520 --> 00:13:32,190 مانند، تفاوت از 1 یا 2 برای هر یک از شاخص ها در آرایه. 218 00:13:32,190 --> 00:13:43,950 شما می خواهید به، تقریبا، به همان تعداد از عناصر در هر یک از لیست پیوندی در آرایه. 219 00:13:43,950 --> 00:13:48,600 و از آن آسان است برای بررسی اگر آن را معتبر در جدول هش، مشاهده و به عنوان جداول هش. 220 00:13:48,600 --> 00:13:51,770 >> سپس درختان. این یک درخت است. 221 00:13:51,770 --> 00:13:56,400 درختان در علوم کامپیوتر وارونه است برای برخی از دلیل. 222 00:13:56,400 --> 00:14:00,150 بنابراین در اینجا شما را به ریشه درخت و سپس برگ. 223 00:14:00,150 --> 00:14:05,630 شما فقط باید بدانید که نامگذاری برای پدر و مادر و کودک. 224 00:14:05,630 --> 00:14:12,880 هر گره دارای فرزندان خود را، که از گره که در زیر پدر و مادر هستند. 225 00:14:12,880 --> 00:14:19,660 بنابراین، برای مثال، 2 است برای رفتن به پدر و مادر برای 3 و برای کودکان دیگر حق وجود دارد، 226 00:14:19,660 --> 00:14:25,290 در حالی که 3 است برای رفتن به پدر و مادر برای 1 و بچه های دیگر که وجود دارد. 227 00:14:25,290 --> 00:14:29,990 و 1 است برای رفتن به کودک 3، و غیره. 228 00:14:29,990 --> 00:14:34,610 ما چیزی بسیار جالب تر، به نام یک درخت جستجوی دودویی، 229 00:14:34,610 --> 00:14:39,040 که در آن تمام مقادیر در سمت راست یک گره 230 00:14:39,040 --> 00:14:41,660 در حال رفتن به سمت راست باشد، حق در اینجا - در سمت راست، 231 00:14:41,660 --> 00:14:46,780 رفتن به بیشتر از این عنصر در ریشه. 232 00:14:46,780 --> 00:14:49,780 بنابراین اگر من تعداد 5 حق در اینجا، تمام عناصر در سمت راست 233 00:14:49,780 --> 00:14:51,940 رفتن به بیشتر از 5 و در سمت چپ 234 00:14:51,940 --> 00:14:56,770 تمام عناصر در حال رفتن به کمتر از 5. 235 00:14:56,770 --> 00:14:58,780 چرا این مفید است؟ 236 00:14:58,780 --> 00:15:01,660 خوب، اگر من می خواهم به بررسی در صورتی که شماره 7 است، به عنوان مثال، 237 00:15:01,660 --> 00:15:05,960 من فقط تا 5 به اولین و من قصد دارم برای دیدن است، 7 بیشتر یا کمتر از 5؟ 238 00:15:05,960 --> 00:15:09,540 این بیشتر، بنابراین من می دانم آن را به به سمت راست درخت باشد. 239 00:15:09,540 --> 00:15:13,980 بنابراین من چیزهای بسیار کمتر به در نگاه کنید. 240 00:15:13,980 --> 00:15:19,520 در پیاده سازی درخت جستجوی دودویی، گره، من فقط رفتن به به داده ها، 241 00:15:19,520 --> 00:15:21,750 بنابراین اعضای هیات N، شما همچنین می تواند یک رشته دارند 242 00:15:21,750 --> 00:15:23,630 و یا هر چیزی که می خواستم. 243 00:15:23,630 --> 00:15:28,100 شما فقط باید به دقت در تعریف بیشتر است، آنچه کمتر است. 244 00:15:28,100 --> 00:15:30,390 بنابراین اگر شما سیم داشتند، به عنوان مثال، شما می توانید تعریف 245 00:15:30,390 --> 00:15:34,690 که همه آن چیزهایی که در سمت راست می رویم به طول بزرگتر، 246 00:15:34,690 --> 00:15:40,940 سمت چپ می رویم به طول های پایین تر، پس از آن واقعا به شما. 247 00:15:40,940 --> 00:15:44,930 >> چگونه می توانم اجرا پیدا کردن برای BST؟ 248 00:15:44,930 --> 00:15:47,840 اولین چیزی که ما باید انجام دهیم این است بررسی کنید که آیا ریشه NULL است. 249 00:15:47,840 --> 00:15:50,920 اگر آن را NULL، به این معنی که چیزی که وجود ندارد 250 00:15:50,920 --> 00:15:53,330 به خاطر تو حتی یک درخت، درست است؟ 251 00:15:53,330 --> 00:15:55,790 بنابراین من بازگشت کاذب. 252 00:15:55,790 --> 00:15:58,740 در غیر این صورت، من قصد دارم به بررسی در صورتی که تعداد بیشتری است 253 00:15:58,740 --> 00:16:01,720 از مقدار در ریشه. 254 00:16:01,720 --> 00:16:04,250 من قصد دارم به تلاش برای پیدا کردن عنصر در سمت راست 255 00:16:04,250 --> 00:16:08,590 درخت. 256 00:16:08,590 --> 00:16:11,310 شما می بینید که من با استفاده از بازگشتی در اینجا. 257 00:16:11,310 --> 00:16:14,150 و پس از آن اگر آن را کمتر، من قصد دارم در سمت چپ نگاه کنید. 258 00:16:14,150 --> 00:16:18,330 و در نهایت، در غیر این صورت، اگر آن را به کمتر یا بیشتر نباشد، 259 00:16:18,330 --> 00:16:20,660 به این معنی که این ارزش خود را. 260 00:16:20,660 --> 00:16:23,010 بنابراین من فقط به راست. 261 00:16:23,010 --> 00:16:26,360 شما می توانید در اینجا مشاهده کنید که من اگر، اگر، اگر استفاده می شود. 262 00:16:26,360 --> 00:16:30,820 و به یاد داشته باشید، در مسابقه 0، ما یک مشکل است که اگر، اگر، اگر بود، 263 00:16:30,820 --> 00:16:32,780 و شما قرار بود برای پیدا کردن بی کفایتی، 264 00:16:32,780 --> 00:16:35,180 و ناکارآمدی بود که شما اگر استفاده می شود. 265 00:16:35,180 --> 00:16:39,060 شما باید اگر، دیگری اگر در صورت استفاده، دیگری، و دیگری. 266 00:16:39,060 --> 00:16:44,240 بنابراین، باید استفاده کنم اگر دیگری و دیگری اگر و دیگری در اینجا؟ 267 00:16:44,240 --> 00:16:46,200 آیا کسی - آره؟ 268 00:16:46,200 --> 00:16:51,140 [زبان دانشجو، نامفهوم] 269 00:16:51,140 --> 00:16:53,480 عالی است. بنابراین او گفت که مهم نیست، 270 00:16:53,480 --> 00:16:55,930 فقط به خاطر اینکه ناکارآمدی است که ما تا به حال قبل 271 00:16:55,930 --> 00:16:59,550 این بود که به دلیل، شاید اگر برخی از شرایط راضی بود، 272 00:16:59,550 --> 00:17:03,570 بنابراین شما یک عمل انجام شده است، اما بعد از آن شما قرار بود برای بررسی تمام شرایط دیگر. 273 00:17:03,570 --> 00:17:06,319 اما در این مورد، آن را بازگردانده حق دور، بنابراین مهم نیست. 274 00:17:06,319 --> 00:17:09,220 بنابراین شما مجبور به استفاده از دیگر اگر. 275 00:17:09,220 --> 00:17:11,740 >> و در نهایت، اجازه دهید در مورد تلاش می کند صحبت می کنید، 276 00:17:11,740 --> 00:17:13,800 که مورد علاقه همه است. 277 00:17:13,800 --> 00:17:15,980 سعی کنید یک درخت از آرایه ها است. 278 00:17:15,980 --> 00:17:20,369 این برنامه بسیار سریع برای نگاه کردن به ارزش ها، اما با استفاده از مقدار زیادی از حافظه. 279 00:17:20,369 --> 00:17:22,530 و این معمولا برای فیلتر کردن کلمات، تا زمانی که شما 280 00:17:22,530 --> 00:17:27,920 می خواهید برای پیاده سازی، به عنوان مثال، من نمی دانم، مثل یک دفترچه تلفن در گوشی شما 281 00:17:27,920 --> 00:17:30,440 و شما می خواهید می شود قادر به نوع B 282 00:17:30,440 --> 00:17:32,510 و فقط باید نام افرادی که B. 283 00:17:32,510 --> 00:17:37,960 این بسیار آسان به پیاده سازی است که با استفاده از یک امتحان کنید، به عنوان مثال. 284 00:17:37,960 --> 00:17:39,820 چگونه یک گره تعریف شما در یک امتحان کنید؟ 285 00:17:39,820 --> 00:17:43,910 شما فقط باید به یک بولی است که رفتن به is_word شود. 286 00:17:43,910 --> 00:17:48,660 است که نشان دهنده است که با استفاده از تمام کاراکتر قبل از آن گره، 287 00:17:48,660 --> 00:17:51,920 شما قادر خواهید بود به فرم یک کلمه بود، 288 00:17:51,920 --> 00:17:57,230 و سپس شما آرایه ای از اشاره گر به گره داشته باشد. 289 00:17:57,230 --> 00:18:03,120 آیا می توانید ببینید که ما باید مجموعه ای از گره پدر و مادر، پس از گره * آرایه؟ آره؟ 290 00:18:03,120 --> 00:18:06,050 بنابراین اجازه دهید که چگونه است که کار می کنند. برای بررسی املا، 291 00:18:06,050 --> 00:18:08,230 ما مجموعه ای از 27 عناصر، 292 00:18:08,230 --> 00:18:12,150 چرا که ما تمام نامه ها به علاوه آپوستروف. 293 00:18:12,150 --> 00:18:17,800 قبل از اینکه در اینجا من فقط رفتن به استفاده از 2 چون من می خواهم که قادر به در هیئت مدیره ارسال. 294 00:18:17,800 --> 00:18:20,230 خوب. بنابراین این یک مثال از یک امتحان کنید. 295 00:18:20,230 --> 00:18:25,600 اگر من فقط تعریف گره اول، من مجموعه ای از 2 عناصر 296 00:18:25,600 --> 00:18:29,290 که 2 اشاره گر به NULL، بنابراین من فقط با قرار دادن 'A' و 'B'. 297 00:18:29,290 --> 00:18:32,430 و من قصد دارم به یک بولی که می گوید is_word. 298 00:18:32,430 --> 00:18:34,420 آن را به نادرست برای یکی از اولین، 299 00:18:34,420 --> 00:18:37,370 فقط به خاطر اینکه، قبل از آن شما هیچ کدام از شخصیت ندارد. 300 00:18:37,370 --> 00:18:40,900 بنابراین یک کلمه خالی است یک کلمه نیست. پس از آن نادرست است. 301 00:18:40,900 --> 00:18:46,320 اگر من می خواهم برای اضافه کردن 'A' در این فرهنگ لغت، آنچه را که من باید انجام دهید؟ 302 00:18:46,320 --> 00:18:49,760 من فقط می خواهم که به malloc یک گره جدید برای 'A'، 303 00:18:49,760 --> 00:18:54,630 و پس از آن کلمه خود را به درست کردن. 304 00:18:54,630 --> 00:19:00,180 بنابراین آن را فقط نشان دهنده است که پس از 'A' است که درست باشد. را حس؟ 305 00:19:00,180 --> 00:19:04,120 پس اگر من می خواهم برای اضافه کردن 'باء، من به malloc 1 برای' ب 'را داشته باشد، 306 00:19:04,120 --> 00:19:07,550 و سپس من قصد دارم به راه اندازی توانید از عملگرهای منطقی را به نادرست، 307 00:19:07,550 --> 00:19:10,160 به دلیل 'ب' به خودی خود یک کلمه نیست. 308 00:19:10,160 --> 00:19:13,010 سپس من قصد دارم به malloc دیگری برای 'A'، بنابراین 'باء، 309 00:19:13,010 --> 00:19:16,290 و سپس من قصد دارم به راه اندازی یک کلمه درست است. 310 00:19:16,290 --> 00:19:18,950 از آنجا که "تو" یک کلمه است. 311 00:19:18,950 --> 00:19:21,910 و پس از آن اگر من می خواهم برای دیدن اگر 'B' است در این فرهنگ، 312 00:19:21,910 --> 00:19:26,730 من فقط می تواند به یکی از اولین، 'B' بروید. من به پایین، و من در کلمه است نگاه کنید، و آن را می گوید نادرست است. 313 00:19:26,730 --> 00:19:30,110 پس از آن یک کلمه نیست. اگر من می خواهم برای بررسی 'باء، 314 00:19:30,110 --> 00:19:38,010 من به یکی از اولین، 'B'، و پس از آن به 'A'، و من می بینم درست است، پس از آن یک کلمه است. را حس؟ 315 00:19:38,010 --> 00:19:41,950 بسیاری از مردم توسط تلاش می کند اشتباه گرفته شود. هیچ؟ 316 00:19:41,950 --> 00:19:44,740 >> در نهایت، کدینگ هافمن. برنامه نویسی هافمن بسیار مفید است 317 00:19:44,740 --> 00:19:47,550 برای صرفه جویی در حافظه و فشرده سازی فایل های متن، 318 00:19:47,550 --> 00:19:52,270 فقط به خاطر اینکه بسیاری از اوقات شما با استفاده از 'A' و 'e' را، برای مثال، 319 00:19:52,270 --> 00:19:57,710 در اسناد خود را، اما من نمی دانم اگر شما بچه ها استفاده از 'Q' یا 'Z' به اندازه. 320 00:19:57,710 --> 00:20:02,040 داشتن فقط 1 بایت برای هر کاراکتر، 321 00:20:02,040 --> 00:20:08,520 هر تنها - 256 کاراکتر است که ما در جدول ASCII را بسیار مطلوب نیست، 322 00:20:08,520 --> 00:20:11,410 فقط به خاطر اینکه برخی از شخصیت های که استفاده می کنید خیلی بیشتر وجود دارد، 323 00:20:11,410 --> 00:20:15,180 بنابراین شما احتمالا باید برای کسانی که استفاده از حافظه کمتر است. 324 00:20:15,180 --> 00:20:17,560 چگونه می توانم استفاده کنم کدگذاری هافمن؟ 325 00:20:17,560 --> 00:20:20,010 ما را مجبور به انجام یک درخت هافمن. 326 00:20:20,010 --> 00:20:23,370  یک درخت هافمن تا گره 327 00:20:23,370 --> 00:20:27,760 است که دارای یک نماد است که رفتن به مثل، 'A'، 'B'، 'C'، نامه است، 328 00:20:27,760 --> 00:20:32,990 هر نامه شما، فرکانس است که فرکانس که کلمه در متن به نظر می رسد، 329 00:20:32,990 --> 00:20:36,280 که شما ایجاد شد درخت هافمن برای، 330 00:20:36,280 --> 00:20:41,800 و سپس یک گره است که رفتن به نقطه را به سمت چپ درخت هافمن 331 00:20:41,800 --> 00:20:47,210 و گره دیگر است که رفتن به نقطه را به سمت راست. پس فقط می خواهم یک درخت. 332 00:20:47,210 --> 00:20:49,440 چگونه می توانم شما را برای ساخت یک درخت هافمن؟ 333 00:20:49,440 --> 00:20:54,020 شما در حال رفتن به انتخاب 2 گره های که دارای پایین ترین فرکانس. 334 00:20:54,020 --> 00:20:56,490 اگر شما یک کراوات شما به انتخاب 2 گره 335 00:20:56,490 --> 00:20:59,870 که پایین ترین ارزش های ASCII نیز هست. 336 00:20:59,870 --> 00:21:02,420 سپس شما به ایجاد یک شاخه جدید از کسانی که 2 گره 337 00:21:02,420 --> 00:21:08,030 است که رفتن به فراوانی در ترکیب در گره پدر و مادر. 338 00:21:08,030 --> 00:21:13,240 و پس از آن شما به حذف 2 فرزند از جنگل 339 00:21:13,240 --> 00:21:15,570 و جایگزین کردن آنها با پدر و مادر. 340 00:21:15,570 --> 00:21:18,930 و شما به تکرار است که تا زمانی که شما فقط 1 درخت در جنگل را داشته باشد. 341 00:21:18,930 --> 00:21:23,840 پس بیایید ببینید که چگونه شما می توانید یک درخت هافمن برای ZAMYLA انجام دهد. 342 00:21:23,840 --> 00:21:29,220 شما می توانید در اینجا مشاهده کنید که همه حروف باید فرکانس 1 به جز 'A'، که دارای فرکانس 2. 343 00:21:29,220 --> 00:21:34,090 بنابراین من گره برای همه حروف I به منظور ارزش ASCII و فرکانس قرار داده ایجاد شده است. 344 00:21:34,090 --> 00:21:40,090 پس اگر من می خواهم برای ایجاد درخت اول، آن را با "L" و "M" باشد. 345 00:21:40,090 --> 00:21:43,100 پس آن را در اینجا. فراوانی این جفت ارز خواهد بود 2 346 00:21:43,100 --> 00:21:49,470 دلیل آن را 1 + 1، پس از آن 2 بعدی با پایین ترین فرکانس ها 'Y' و 'Z'. 347 00:21:49,470 --> 00:21:53,180 و پس از آن من از همه آنها - دارای یک فرکانس از 2. 348 00:21:53,180 --> 00:22:00,470 بنابراین آنهایی که آنهایی که کمترین مقدار ASCII برای یک بعدی هستند؟ 349 00:22:00,470 --> 00:22:04,830 'A' و 'L'. بنابراین من ایجاد گره های جدید، 350 00:22:04,830 --> 00:22:09,930 و در نهایت، آن را به 4 و 2، SO 2 در حال رفتن به سمت چپ باشد. 351 00:22:09,930 --> 00:22:12,430 و این درخت هافمن می باشد. 352 00:22:12,430 --> 00:22:16,060 پس اگر من می خواهم به ارسال متن، 353 00:22:16,060 --> 00:22:24,440 مانند باینری برای تبدیل به متن، با استفاده از درخت هافمن بسیار آسان است. 354 00:22:24,440 --> 00:22:30,220 برای مثال، اگر من می گویم که در حال حرکت به سمت چپ 0 و در حال حرکت به سمت راست است 1، 355 00:22:30,220 --> 00:22:32,410 چه شده است که رفتن به نمایندگی؟ 356 00:22:32,410 --> 00:22:35,530 پس مثل 1، 1، تا راست، راست، 357 00:22:35,530 --> 00:22:40,370 و پس از آن 0 است، بنابراین به سمت چپ خواهد بود L و سپس 1، 0، 0. 358 00:22:40,370 --> 00:22:43,950 بنابراین 1، 0، بنابراین فقط 1، 0، 'A'. 359 00:22:43,950 --> 00:22:47,540 و پس از 0، 1، تا 'Z'. 360 00:22:47,540 --> 00:22:52,170 و پس از 1، 0، 0 - هیچ. 361 00:22:52,170 --> 00:22:56,780 0، 0 خواهد بود 'Y'، خیلی تنبلی. 362 00:22:56,780 --> 00:23:06,060 به طوری که همه برای من، راب رفتن به سر می برد. 363 00:23:06,060 --> 00:23:08,400 >> [راب Bowden] بنابراین، هفته 7 مسائل. 364 00:23:08,400 --> 00:23:11,390 ما زیادی رو به بیش از واقعا سریع است. 365 00:23:11,390 --> 00:23:13,430 اپراتورهای بیتی، سرریز بافر، 366 00:23:13,430 --> 00:23:16,760 کتابخانه CS50، پس از آن HTML، HTTP، CSS. 367 00:23:16,760 --> 00:23:20,990 همه در مثل 15 تا 20 دقیقه. 368 00:23:20,990 --> 00:23:24,330 اپراتورهای بیتی. 6 از آن است که شما نیاز به دانستن وجود دارد. 369 00:23:24,330 --> 00:23:31,200 بیتی و، بیتی یا، XOR، شیفت به چپ، شیفت سمت راست، و نیست. 370 00:23:31,200 --> 00:23:35,420 راست تغییر و نه شما به سختی در سخنرانی ندیدند. 371 00:23:35,420 --> 00:23:40,480 ما بیش از آن را به سرعت در اینجا، اما خوب است بدانید که این ها 6 که وجود داشته باشد. 372 00:23:40,480 --> 00:23:45,070 به یاد داشته باشید که اپراتورهای بیتی مانند وقتی که شما انجام 3 + 4 می باشد. 373 00:23:45,070 --> 00:23:49,420 شما با خرید و فروش صفر و 3 و 4 است. 374 00:23:49,420 --> 00:23:56,550 با اپراتورهای بیتی شما در واقع با بیت های فردی از شماره های 3 و 4 خرید و فروش. 375 00:23:56,550 --> 00:23:59,120 >> بنابراین یکی از اولین که ما می گویم بیتی است، 376 00:23:59,120 --> 00:24:02,340 و همه آن کند است تلنگر تمام بیت. 377 00:24:02,340 --> 00:24:05,500 بنابراین در اینجا، اگر شما در حال نوشتن این در C، شما آن را ارسال نمی کند 378 00:24:05,500 --> 00:24:09,380 به عنوان ~ 11،011 یا هر چیز دیگری، شما می توانید ارسال آن را دوست دارم ~ 4، 379 00:24:09,380 --> 00:24:12,970 و سپس آن را نمایش دودویی 4 تلنگر. 380 00:24:12,970 --> 00:24:24,800 بنابراین در اینجا، ~ برخی از عدد دودویی 1101101 در حال رفتن به دقیقا تلنگر همه 1 به 0 و همه 0 به 1 است. 381 00:24:24,800 --> 00:24:27,600 همانطور که می گویند وجود دارد، استفاده مکرر از این، 382 00:24:27,600 --> 00:24:30,830 و ما آن را در یک بیت را مشاهده کنید، مثل این است که ما می خواهیم آمد تا با برخی از تعداد 383 00:24:30,830 --> 00:24:35,460 که در آن همه از بیت ها 1، به جز یکی از آنها. 384 00:24:35,460 --> 00:24:38,560 پس از آن معمولا ساده تر برای بیان تعداد 385 00:24:38,560 --> 00:24:40,630 که در آن فقط این است که بیت تنظیم شده باشد، 386 00:24:40,630 --> 00:24:44,650 و پس از آن ~ از آن، بنابراین هر بیت دیگر به جز است که یک مجموعه را. 387 00:24:44,650 --> 00:24:50,300 بنابراین این چیزی است که ما قصد استفاده بیشتر در کمی. 388 00:24:50,300 --> 00:24:58,220 >> بیتی و یا. در اینجا 2 اعداد دودویی، و این 2 عدد می باشد 389 00:24:58,220 --> 00:25:00,780 خیلی نماینده، از آنجایی که آنها نشان دهنده هر ممکن 390 00:25:00,780 --> 00:25:07,290 ترکیبی از بیت شما می توانید نیاز به کار در. 391 00:25:07,290 --> 00:25:13,540 در اینجا، وقتی که من هر بیت or'd، ما فقط رفتن به مقایسه راست پایین. 392 00:25:13,540 --> 00:25:15,410 بنابراین در سمت چپ ما یک 1 و 1. 393 00:25:15,410 --> 00:25:20,510 وقتی که من بیتی | آن، چه هستم من برای به دست آوردن؟ یکی. 394 00:25:20,510 --> 00:25:25,320 سپس بیتی | 0 و 1 است که رفتن به من بدهید؟ یکی. 395 00:25:25,320 --> 00:25:27,840 بیتی 1 و 0 است برای رفتن به همین، یک. 396 00:25:27,840 --> 00:25:31,880 بیتی 0 | 0 به من 0 دهد. 397 00:25:31,880 --> 00:25:37,300 بنابراین تنها مورد که در آن من 0 در 0 | 0 مورد. 398 00:25:37,300 --> 00:25:40,020 و شما می توانید از آن درست مثل ORS منطقی شما فکر می کنم. 399 00:25:40,020 --> 00:25:44,830 بنابراین اگر شما از 1 به عنوان درست و 0 را نادرست فکر می کنم، چیزی که همین امر در اینجا. 400 00:25:44,830 --> 00:25:50,040 بنابراین درست است یا درست درست است، درست است یا غلط درست است. 401 00:25:50,040 --> 00:25:57,150 غلط یا درست درست است، نادرست یا نادرست تنها چیزی است که در واقع غلط است. 402 00:25:57,150 --> 00:26:00,100 در اینجا به عنوان مثال که شما باید بدانید این 403 00:26:00,100 --> 00:26:05,160 به عنوان یک مثال بسیار خوب از زمانی که اپراتورهای بیتی استفاده می شود. 404 00:26:05,160 --> 00:26:08,660 در اینجا اگر ما و یا سرمایه 'A' با Ox20، 405 00:26:08,660 --> 00:26:11,830 و ما در این در یک ثانیه نگاه کنید، ما چیزی. 406 00:26:11,830 --> 00:26:16,020 و اگر ما و یا حروف کوچک 'A' با Ox20، ما چیزی. 407 00:26:16,020 --> 00:26:26,750 بنابراین اجازه دهید بالا بکشد جدول ASCII. 408 00:26:26,750 --> 00:26:34,000 خوب. در اینجا ما می بینیم که 'A' است - 409 00:26:34,000 --> 00:26:36,920 در اینجا ما باید 'A' اعشاری 65 است. 410 00:26:36,920 --> 00:26:45,120 اما من با مبنای شانزده است که Ox41 بروید. 411 00:26:45,120 --> 00:26:48,280 کاملا مطمئنم که ما آن را در کلاس دیدم. من فکر می کنم ما آن را در کلاس دیدم 412 00:26:48,280 --> 00:26:52,730 که این بسیار آسان است برای تبدیل از مبنای شانزده به دودویی. 413 00:26:52,730 --> 00:26:55,280 بنابراین در اینجا، اگر من می خواهم برای قرار دادن 4 به دودویی، 414 00:26:55,280 --> 00:26:59,550 که فقط برای رفتن به 0100. 415 00:26:59,550 --> 00:27:03,620 این مکان 1، مکان 2، مکان 4 است، پس این 4. 416 00:27:03,620 --> 00:27:08,550 سپس من می توانم به دودویی، که برای رفتن به 0001 تقسیم 1. 417 00:27:08,550 --> 00:27:14,280 و به این ترتیب این است که رفتن به نمایندگی از 'A' در دودویی. 418 00:27:14,280 --> 00:27:22,720 با توجه به حروف کوچک 'A'، در حال حاضر برای رفتن به Ox61، 419 00:27:22,720 --> 00:27:27,050 که در آن، تقسیم این را به باینری آن، تا 6 - 420 00:27:27,050 --> 00:27:37,830 اجازه دهید در واقع آن را انجام دهید - هیچ پاک کن وجود دارد؟ پاک کن. 421 00:27:37,830 --> 00:27:48,220 Ox61. بنابراین تقسیم 6 به دودویی است برای رفتن به 0 + 4 + 2 + 0. 422 00:27:48,220 --> 00:27:54,610 و تقسیم 1 است برای رفتن به 0001. 423 00:27:54,610 --> 00:27:56,520 نگاهی به تفاوت بین این 2، 424 00:27:56,520 --> 00:28:04,250 ما می بینیم که تنها تفاوت بین حروف کوچک و سرمایه 'A' این بیت است. 425 00:28:04,250 --> 00:28:11,810 پس از بازگشت به اینجا - درست است. 426 00:28:11,810 --> 00:28:15,920 بازگشت به اینجا، اگر ما آنچه را که کمی Ox20 است نگاه کنید، 427 00:28:15,920 --> 00:28:22,210 بنابراین تقسیم Ox20 به دودویی آن، 428 00:28:22,210 --> 00:28:27,310 0010، 0000 است. 429 00:28:27,310 --> 00:28:33,470 Ox20، تنها بیتی است که قرار است این بیت که ما با نگران است، 430 00:28:33,470 --> 00:28:38,210 با سوئیچینگ بین سرمایه و حروف کوچک 'A'. 431 00:28:38,210 --> 00:28:47,610 اگر من و یا 'A'، که این یکی، 'A'، 432 00:28:47,610 --> 00:28:50,580 اگر من و یا 'A' با Ox20، 433 00:28:50,580 --> 00:28:53,490 چه هستم من برای به دست آوردن؟ 434 00:28:53,490 --> 00:28:58,960 [دانشجو، نامفهوم] >> حروف کوچک ''، به دلیل آن را به تلنگر این بیت به 1. 435 00:28:58,960 --> 00:29:04,170 و اگر من و یا 'A' با Ox20، چه هستم من برای به دست آوردن؟ 436 00:29:04,170 --> 00:29:08,780 حروف کوچک، چرا که فقط اورینگ 'A' با Ox20، 437 00:29:08,780 --> 00:29:14,580 من فقط رفتن به اورینگ این بیت به 1 است، در واقع در حال حاضر 1 است، بنابراین مهم نیست. 438 00:29:14,580 --> 00:29:17,960 بنابراین ما 'A' و 'A'. 439 00:29:17,960 --> 00:29:24,820 >> بیتی و. باز هم، ما می توانیم از این به عنوان همتای منطقی و ما فکر می کنم. 440 00:29:24,820 --> 00:29:28,180 در سمت چپ ما درست است و درست است. 441 00:29:28,180 --> 00:29:31,160 این خبر درست باشد، و برای همه موارد، 442 00:29:31,160 --> 00:29:36,270 غلط و درست است یا درست و نادرست، و یا نادرست و غلط، 443 00:29:36,270 --> 00:29:38,550 هیچ یک از کسانی که همه چیز درست است. 444 00:29:38,550 --> 00:29:44,170 بنابراین آنچه که ما تا پایان گرفتن 1000 است. 445 00:29:44,170 --> 00:29:48,830 بنابراین در حال حاضر، در اینجا، در اینجا است که من بیتی قابل اعتماد استفاده می شود نیست، 446 00:29:48,830 --> 00:29:52,230 که در آن ما Ox20 بود. 447 00:29:52,230 --> 00:29:54,350 بنابراین این Ox20 است. 448 00:29:54,350 --> 00:29:59,570 در حال حاضر آنچه من می خواهم به، بیتی ~ از Ox20. 449 00:29:59,570 --> 00:30:03,600 که در حال رفتن به تلنگر تمام بیت. 450 00:30:03,600 --> 00:30:09,330 بنابراین من 1101، 1111. 451 00:30:09,330 --> 00:30:18,940 و به این ترتیب 'A' anded با ~ Ox20 به من چه به من بدهید؟ 452 00:30:18,940 --> 00:30:22,430 تنها کمی ما واقعا نیاز به فکر کردن در مورد این یکی است، 453 00:30:22,430 --> 00:30:26,020 از آن زمان، اگر همه از این بیت به 1 تنظیم شده باشد، 454 00:30:26,020 --> 00:30:29,000 پس از آن ما قصد گرفتن دقیقا همان چیزی است 'A' بود، 455 00:30:29,000 --> 00:30:31,260 به جز، احتمالا، این بیت است. 456 00:30:31,260 --> 00:30:34,460 از آنجا که اگر آن را به 1 بود، در حال حاضر آن را به 0 تعیین می کنند، 457 00:30:34,460 --> 00:30:39,810 به دلیل آن چه که هست، با این حال رفتن به 0 anded. 458 00:30:39,810 --> 00:30:43,280 پس چه 'A' است و ~ Ox20 به من بدهید؟ 459 00:30:43,280 --> 00:30:48,200 [دانش آموزان پاسخ، نامفهوم] >> و چه و است - آن را 'A'. 460 00:30:48,200 --> 00:30:52,170 و آنچه که 'A' و ~ Ox20 به من بدهید؟ 461 00:30:52,170 --> 00:30:56,720 'A.' از آنجا که این در حال حاضر 1. 462 00:30:56,720 --> 00:30:59,570 Anding با این 0 است که آن را به 0، 463 00:30:59,570 --> 00:31:02,530 و در حال حاضر ما در حال رفتن به دریافت 'A'. 464 00:31:02,530 --> 00:31:06,600 >> هر دو "A، و آخرین اما نه کم از این نوع، 465 00:31:06,600 --> 00:31:10,830 ما XOR. این بسیار شبیه و یا، 466 00:31:10,830 --> 00:31:14,400 به جز این معنی است که به طور انحصاری و یا. 467 00:31:14,400 --> 00:31:18,420 این شبیه چیزی است که شما معمولا از عنوان و یا در دنیای واقعی فکر می کنم. 468 00:31:18,420 --> 00:31:23,190 بنابراین شما یا 'X' و 'Y'، اما نه هر دو. 469 00:31:23,190 --> 00:31:28,700 در اینجا 1 ^ 1 است برای رفتن به 0. 470 00:31:28,700 --> 00:31:33,650 از آنجا که درست است، این است که - آن کار نمی کند و همچنین با درست منطقی و نادرست 471 00:31:33,650 --> 00:31:37,150 به عنوان بیتی و و یا کار، 472 00:31:37,150 --> 00:31:40,100 اما درست ^ درست نادرست است. 473 00:31:40,100 --> 00:31:44,810 از آنجا که ما فقط می خواهید برای بازگرداندن true اگر فقط یکی از آنها درست است. 474 00:31:44,810 --> 00:31:50,950 بنابراین 1 ^ 1 0 است. چه در مورد 0 ^ 1؟ 475 00:31:50,950 --> 00:31:56,010 آیا 1. 1 ^ 0 1 است، 0 ^ 0 است 0. 476 00:31:56,010 --> 00:32:03,890 بنابراین در هر شرایطی، 0 بیتی چیزی 0 است برای رفتن به 0. 477 00:32:03,890 --> 00:32:10,270 1 بیتی چیزی 0 یا 0 بیتی 1، 478 00:32:10,270 --> 00:32:14,660 اگر آن را | یا ^، آن خواهید بود یک 1، و اگر آن را و آن خواهید بود 0. 479 00:32:14,660 --> 00:32:20,850 و تنها مورد که در آن 1 بیتی 1 است 1 نمی باشد. با منحصر به فرد و یا. 480 00:32:20,850 --> 00:32:24,580 این 0110 است. 481 00:32:24,580 --> 00:32:36,520 بنابراین در اینجا در حال حاضر، با استفاده از XOR - تا ما به 20 است. 482 00:32:36,520 --> 00:32:43,480 'A' ^ Ox20 این 2 بیت ما در حال مقایسه است. 483 00:32:43,480 --> 00:32:50,020 پس 1 ^ 0 به من چه به من بدهید؟ یک. 484 00:32:50,020 --> 00:32:58,430 'A' ^ Ox20 به من بدهید؟ کوچک. 485 00:32:58,430 --> 00:33:04,010 'A' ^ Ox20 به من بدهید؟ سرمایه A. 486 00:33:04,010 --> 00:33:09,310 از آنجا که هر چه این در حال انجام است، این XORing با Ox20 487 00:33:09,310 --> 00:33:15,380 به طور موثر کوه در می رم هر چه این بیت است. 488 00:33:15,380 --> 00:33:21,240 اگر این 0 است، در حال حاضر رفتن به تبدیل شدن به یک 1. 489 00:33:21,240 --> 00:33:26,160 از آنجایی که این 1 است، 1 ^ 1 0 است. 490 00:33:26,160 --> 00:33:33,280 بنابراین ما یک "تبدیل شده است 'A' و 'A' ما تبدیل شده است". 491 00:33:33,280 --> 00:33:36,910 بنابراین XOR یک راه بسیار راحت فقط کوه در می رم مورد است. 492 00:33:36,910 --> 00:33:39,960 شما فقط می خواهم به تکرار بیش از یک رشته از حروف 493 00:33:39,960 --> 00:33:44,330 و متناوب مورد هر شخصیت تنها، 494 00:33:44,330 --> 00:33:50,680 شما فقط همه چیز را XOR با Ox20. 495 00:33:50,680 --> 00:33:55,220 >> در حال حاضر ما تغییر نکرده اند. شیفت به چپ فقط رفتن به، اساسا، 496 00:33:55,220 --> 00:34:01,250 فشار تمام اعداد را، و یا به سمت چپ، و قرار دادن 0 در پشت سر آنها. 497 00:34:01,250 --> 00:34:05,550 بنابراین در اینجا ما 00001101. 498 00:34:05,550 --> 00:34:08,560 ما قصد داریم به فشار 3 در 0 را از سمت راست، 499 00:34:08,560 --> 00:34:13,580 و ما 01101000. 500 00:34:13,580 --> 00:34:16,380 در شرایط nonbinary، 501 00:34:16,380 --> 00:34:24,699 ما می بینیم که که واقعا خرید و فروش 13 سمت چپ منتقل شده با 3، که به ما می دهد 104. 502 00:34:24,699 --> 00:34:32,530 تغییر پس سمت چپ، ما در اینجا ببینید، x << Y است که اساسا X * 2 ^ y است. 503 00:34:32,530 --> 00:34:40,139 13 * 2 ^ 3، 2 ^ 3 8 تا 13 * 8 104 است. 504 00:34:40,139 --> 00:34:45,679 اگر شما فقط در مورد باینری به طور کلی، چگونه هر رقم، فکر می کنم 505 00:34:45,679 --> 00:34:49,530 اگر ما از سمت راست شروع می کنید، آن را به محل 1، و سپس محل 2، پس از آن محل 4 است. 506 00:34:49,530 --> 00:34:51,330 پس با فشار دادن در 0 را از سمت راست، 507 00:34:51,330 --> 00:34:55,080 ما فقط هل دادن چیزهایی است که به جای 4 به جای 8 بود، 508 00:34:55,080 --> 00:34:57,920 و چیزهایی که به جای 8 به جای 16 بود. 509 00:34:57,920 --> 00:35:01,280 هر تغییر و فقط با 2 ضرب. آره؟ 510 00:35:01,280 --> 00:35:05,210 [دانشجو] اگر شما توسط 5 منتقل چه اتفاقی می افتد؟ 511 00:35:05,210 --> 00:35:10,790 [Bowden] اگر توسط 5 منتقل شده که فقط از دست دادن ارقام. 512 00:35:10,790 --> 00:35:15,410 به ناچار، به آن همان چیزی است. مانند، اعداد صحیح، تنها 32 بیت هستند، 513 00:35:15,410 --> 00:35:20,750 بنابراین اگر شما اضافه 2 عدد صحیح واقعا بزرگ است، آن را فقط در یک عدد صحیح متناسب نیست. 514 00:35:20,750 --> 00:35:23,660 پس از آن همان چیزی که در اینجا. اگر شما توسط 5 منتقل شده، 515 00:35:23,660 --> 00:35:25,650 ما فقط از دست آن یکی. 516 00:35:25,650 --> 00:35:28,820 و این نوع از آنچه منظور من است "تقریبا" 517 00:35:28,820 --> 00:35:37,470 که اگر شما تغییر بیش از حد، شما بیت از دست بدهند. 518 00:35:37,470 --> 00:35:39,830 >> Shift سمت راست است که رفتن به مخالف، 519 00:35:39,830 --> 00:35:43,090 که در آن ما قصد داریم به پرتاب 0 خاموش در پایان، 520 00:35:43,090 --> 00:35:48,400 و برای اهداف ما، پر در 0 که از سمت چپ. 521 00:35:48,400 --> 00:35:52,910 بنابراین انجام این کار، ما اساسا معکوس چیزی است که ما در حال حاضر انجام داده بود. 522 00:35:52,910 --> 00:35:57,780 و ما می بینیم که سه 0 را در سمت راست فقط افتاده خاموش، 523 00:35:57,780 --> 00:36:02,020 و ما 1101 تمام راه را به سمت راست فشار. 524 00:36:02,020 --> 00:36:08,380 این در حال انجام است 104 >> 3، است که، به طور موثر، X / ^ 2 y است. 525 00:36:08,380 --> 00:36:11,200 بنابراین در حال حاضر، در اینجا، آن را یک ایده مشابه است. 526 00:36:11,200 --> 00:36:18,720 چرا آن را فقط در حدود X / ^ 2 y و در واقع X / ^ 2 Y؟ 527 00:36:18,720 --> 00:36:22,240 چرا که اگر من با 4 تغییر یافته بود، من از دست داده اند 1. 528 00:36:22,240 --> 00:36:25,950 در واقع، آنچه شما فکر می کنم، فقط از تقسیم عدد صحیح به طور کلی فکر می کنم. 529 00:36:25,950 --> 00:36:31,070 بنابراین، مانند 5/2 2 است. این 2.5 نیست. 530 00:36:31,070 --> 00:36:35,000 این همان ایده در اینجا. هنگامی که ما در 2 تقسیم می شوند، 531 00:36:35,000 --> 00:36:39,910 ما می توانیم بیت های عجیب و غریب در طول راه از دست بدهند. 532 00:36:39,910 --> 00:36:43,870 بنابراین در حال حاضر - که آن را برای بیتی. که همه شما نیاز به دانستن است. 533 00:36:43,870 --> 00:36:46,340 به یاد داشته باشید موارد استفاده ما در کلاس را دیدم، 534 00:36:46,340 --> 00:36:49,340 مانند یک ماسک بیتی برای اپراتورهای بیتی مفید است، 535 00:36:49,340 --> 00:36:53,220 و یا شما از آنها استفاده برای ماسک بیت. 536 00:36:53,220 --> 00:36:58,620 حروف بزرگ و حروف کوچک، تبدیل یک مثال بسیار اولیه است. 537 00:36:58,620 --> 00:37:01,640 >> خوب، پس بافر حملات سرریز. 538 00:37:01,640 --> 00:37:05,110 هر کس به یاد داشته باشید که چه چیزی اشتباه است با این تابع بود؟ 539 00:37:05,110 --> 00:37:10,140 توجه داشته باشید که ما یک آرایه از 12 بایت، 12 کاراکتر، اعلام کرد 540 00:37:10,140 --> 00:37:18,510 و پس از آن ما را به بافر ما از 12 کاراکتر تمام نوار رشته را کپی کنید. 541 00:37:18,510 --> 00:37:25,080 خب حالا مشکل اینجا؟ 542 00:37:25,080 --> 00:37:32,270 تعداد سحر و جادو 12 باید تقریبا فورا پاپ به عنوان - چرا 12؟ 543 00:37:32,270 --> 00:37:35,050 اگر بار اتفاق می افتد که بیش از 12 کاراکتر؟ 544 00:37:35,050 --> 00:37:41,200 اگر نوار میلیون ها نفر از شخصیت است؟ 545 00:37:41,200 --> 00:37:46,010 در اینجا مسئله memcpy است. اگر نوار به اندازه کافی بلند، 546 00:37:46,010 --> 00:37:50,330 آن را فقط به طور کامل - 'ج'، 'ج' مراقبت می کند که تنها 12 حرف بود. 547 00:37:50,330 --> 00:37:53,280 'ج' مراقبت می کند که می تواند جا که بسیاری از بایت نیست. 548 00:37:53,280 --> 00:37:58,250 این فقط به طور کامل کاراکتر بازنویسی، 12 بایت ما برای آن اختصاص داده ام، 549 00:37:58,250 --> 00:38:01,830 و همه چیز گذشته آن را در حافظه است که در واقع به آن بافر تعلق ندارد 550 00:38:01,830 --> 00:38:06,520 با هر نوار رشته است. 551 00:38:06,520 --> 00:38:09,780 بنابراین در این تصویر ما در کلاس بود 552 00:38:09,780 --> 00:38:12,220 که در آن ما پشته ما در حال رشد است. 553 00:38:12,220 --> 00:38:16,040 شما باید به این تصاویر استفاده می شود و یا با آنها آشنا است. 554 00:38:16,040 --> 00:38:21,260 ما پشته ما در حال رشد، آدرس های حافظه در 0 شروع در بالای صفحه 555 00:38:21,260 --> 00:38:26,270 و رشد کردن به دوست 4 میلیارد در پایین. 556 00:38:26,270 --> 00:38:28,820 ما آرایه ما 'ج' جایی در حافظه، 557 00:38:28,820 --> 00:38:32,260 پس ما باید اشاره گر ما به نوار سمت راست در زیر آن، 558 00:38:32,260 --> 00:38:38,720 و پس از آن ما باید این اشاره گر قاب ذخیره شده در آدرس برگشت و پشته معمول پدر و مادر ما است. 559 00:38:38,720 --> 00:38:40,800 به یاد داشته باشید آنچه که آدرس برگشت است؟ 560 00:38:40,800 --> 00:38:45,360 این وقتی که اصلی را یک تابع تولی، خواستار نوار تابع، 561 00:38:45,360 --> 00:38:48,100 به ناچار، بار برمی گردد. 562 00:38:48,100 --> 00:38:52,610 بنابراین، هنگامی که بازده نوار، آنها باید بدانند که آن را برگشت به تولی که آن را به نام. 563 00:38:52,610 --> 00:39:01,360 بنابراین آدرس برگشت آدرس تابع است که آن را به بازگشت به زمانی که تابع است. 564 00:39:01,360 --> 00:39:05,830 به این دلیل که برای حملات سرریز بافر مهم است زیرا، به راحتی، 565 00:39:05,830 --> 00:39:09,580 هکرها می خواهم به تغییر آدرس برگشت. 566 00:39:09,580 --> 00:39:14,950 به جای رفتن به تولی، من قصد دارم برای رفتن به هر جا که هکر می خواهد من برای رفتن به. 567 00:39:14,950 --> 00:39:17,760 و، به راحتی، که در آن هکر اغلب می خواهد به بازگشت به 568 00:39:17,760 --> 00:39:22,400 از آغاز بافر است که ما در اصل در حال است. 569 00:39:22,400 --> 00:39:26,170 بنابراین متوجه، دوباره، کوچک هند است. 570 00:39:26,170 --> 00:39:28,490 این ابزار به عنوان مثال از یک سیستم کوچک هند است، 571 00:39:28,490 --> 00:39:34,140 به طوری که یک عدد صحیح و یا یک اشاره گر است که با بایت معکوس ذخیره می شود. 572 00:39:34,140 --> 00:39:38,980 بنابراین در اینجا ما می بینیم - این است؟ آره. 573 00:39:38,980 --> 00:39:45,660 ما Ox80، OxC0، Ox35، OxO8 را ببینید. 574 00:39:45,660 --> 00:39:48,250 به یاد داشته باشید رقم تولید کنید؟ 575 00:39:48,250 --> 00:39:50,640 ما رقم تولید در کوچک هند معکوس، 576 00:39:50,640 --> 00:39:56,110 چرا که 2 رقم شانزده شانزدهی یک بایت را تشکیل می دهند، و ما به بایت معکوس می باشد. 577 00:39:56,110 --> 00:40:00,300 به همین دلیل است که ما ذخیره، مانند، 80530CO8. 578 00:40:00,300 --> 00:40:07,520 ما ذخیره، به جای آن، هر جفت از 2 رقم، با شروع از سمت راست. 579 00:40:07,520 --> 00:40:10,880 این آدرس اشاره به آدرس شروع 580 00:40:10,880 --> 00:40:15,190 از بافر ما است که ما در واقع می خواستم برای کپی کردن را در وهله اول. 581 00:40:15,190 --> 00:40:19,230 به این دلیل که بسیار مفید است زیرا، اگر مهاجم 582 00:40:19,230 --> 00:40:24,100 اتفاق افتاد به، به جای داشتن یک رشته که تنها بود 583 00:40:24,100 --> 00:40:27,060 یک رشته بی ضرر مانند، نام و یا چیزی خود، 584 00:40:27,060 --> 00:40:33,900 چه می شود اگر، به جای آن، که رشته ای فقط بعضی از کد های دلخواه بود 585 00:40:33,900 --> 00:40:38,610 که بود هر آنچه که آنها می خواستند آن را انجام دهید؟ 586 00:40:38,610 --> 00:40:45,630 به طوری که آنها می تواند - من نمی توانم از هر کد سرد فکر می کنم. 587 00:40:45,630 --> 00:40:47,780 این می تواند هر چیزی باشد، هر چند. هر کد به نمایش گذاشت. 588 00:40:47,780 --> 00:40:51,440 اگر آنها می خواستند، آنها فقط می تواند کاری را انجام دهد در گسل SEG، اما این بی معنی خواهد بود. 589 00:40:51,440 --> 00:40:54,950 آنها معمولا آن را انجام دهد به هک سیستم شما. 590 00:40:54,950 --> 00:40:59,930 >> باشه. کتابخانه CS50. 591 00:40:59,930 --> 00:41:04,800 این است که، اساسا، getInt، getString، تمام آن دسته از توابع که ما برای شما فراهم شده است. 592 00:41:04,800 --> 00:41:10,630 بنابراین ما باید * رشته کاراکتر، و انتزاع که ما را قورت است 593 00:41:10,630 --> 00:41:12,450 در برخی از نقطه در طول ترم. 594 00:41:12,450 --> 00:41:18,220 به یاد داشته باشید که یک رشته فقط آرایه ای از کاراکتر ها است. 595 00:41:18,220 --> 00:41:23,240 بنابراین در اینجا ما نسخه خلاصه از getString را ببینید. 596 00:41:23,240 --> 00:41:25,920 شما باید به آن نگاه دوباره به یاد داشته باشید که چگونه از آن در واقع اجرا شده است. 597 00:41:25,920 --> 00:41:30,950 جزئیات کلیدی هستند، متوجه ما در یک شخصیت در یک زمان دریافت 598 00:41:30,950 --> 00:41:34,570 از استاندارد در، که درست مانند ما در صفحه کلید تایپ کردن. 599 00:41:34,570 --> 00:41:37,890 بنابراین یک شخصیت در یک زمان، و اگر ما بیش از حد بسیاری از شخصیت های، 600 00:41:37,890 --> 00:41:40,580 بنابراین اگر n + 1 بیشتر از ظرفیت است، 601 00:41:40,580 --> 00:41:44,140 پس ما نیاز به افزایش ظرفیت بافر است. 602 00:41:44,140 --> 00:41:47,780 بنابراین در اینجا ما در حال دو برابر شدن اندازه بافر است. 603 00:41:47,780 --> 00:41:51,840 و آن را نگه می دارد رفتن، ما وارد کردن کاراکتر به بافر ما 604 00:41:51,840 --> 00:41:56,220 تا زمانی که ما یک خط جدید و یا انتهای فایل یا هر چیز دیگری دریافت خواهید کرد، 605 00:41:56,220 --> 00:41:59,380 که در این صورت، ما با این رشته و پس از آن getString واقعی انجام می شود 606 00:41:59,380 --> 00:42:05,120 کاهش حافظه، مانند اگر ما بیش از حد حافظه اختصاص داده آن را به عقب می روم و کوچک کردن کمی. 607 00:42:05,120 --> 00:42:08,830 بنابراین ما نشان نمی دهد که، اما ایده اصلی این است 608 00:42:08,830 --> 00:42:11,960 آن را به عنوان خوانده شده در یک شخصیت واحد در یک زمان. 609 00:42:11,960 --> 00:42:17,140 این را نمی توان فقط در یک چیز همه به عنوان خوانده شده در یک بار، 610 00:42:17,140 --> 00:42:19,550 چون بافر خود را تنها از یک اندازه خاص است. 611 00:42:19,550 --> 00:42:26,590 بنابراین اگر رشته که تلاش می کند برای وارد کردن به بافر بیش از حد بزرگ است، سپس آن را سرریز. 612 00:42:26,590 --> 00:42:28,940 بنابراین در اینجا ما جلوگیری است که تنها در یک شخصیت واحد خواندن 613 00:42:28,940 --> 00:42:33,750 در یک زمان و در حال رشد هر زمان که ما به نیاز. 614 00:42:33,750 --> 00:42:40,270 بنابراین getInt و دیگر توابع کتابخانه CS50 تمایل به استفاده از getString 615 00:42:40,270 --> 00:42:42,310 در پیاده سازی آنها. 616 00:42:42,310 --> 00:42:45,370 بنابراین من بر چیزهای مهم در اینجا. 617 00:42:45,370 --> 00:42:49,460 این getString را به یک رشته است. 618 00:42:49,460 --> 00:42:51,710 اگر getString موفق به بازگشت حافظه، 619 00:42:51,710 --> 00:42:54,270 به یاد داشته باشید که getString mallocs چیزی، بنابراین هر زمان که شما getString تماس بگیرید 620 00:42:54,270 --> 00:42:57,820 شما باید نه (نامفهوم) رایگان است که رشته ای است که به شما کردم. 621 00:42:57,820 --> 00:43:02,870 بنابراین در اینجا، اگر از آن موفق به malloc چیزی، ما بازگشت INT_MAX فقط به عنوان یک پرچم است که، 622 00:43:02,870 --> 00:43:05,650 با سلام، ما قادر به گرفتن یک عدد صحیح در واقع نیست. 623 00:43:05,650 --> 00:43:10,830 شما باید چشم پوشی از هر آنچه من به شما بازگشت، و یا 624 00:43:10,830 --> 00:43:15,540 شما باید این را به عنوان یک ورودی معتبر درمان نیست. 625 00:43:15,540 --> 00:43:21,360 در نهایت، فرض کنید که موفق بود، ما از sscanf با پرچم خاص، 626 00:43:21,360 --> 00:43:23,820 که بدان معنی است، اول یک عدد صحیح مطابقت، 627 00:43:23,820 --> 00:43:26,770 سپس بعد از آن عدد صحیح مطابقت با هر کاراکتر. 628 00:43:26,770 --> 00:43:29,070 بنابراین متوجه ما می خواهیم آن را برابر 1. 629 00:43:29,070 --> 00:43:32,940 بازده پس sscanf که چگونه بسیاری از موارد مشابه اگر با موفقیت ساخته شده است؟ 630 00:43:32,940 --> 00:43:37,010 این باز خواهد گشت 1 اگر آن را با موفقیت یک عدد صحیح همسان، 631 00:43:37,010 --> 00:43:40,890 آن را به 0 بازگشت اگر آن را به یک عدد صحیح مطابقت ندارد، و از آن باز خواهد گشت 2 632 00:43:40,890 --> 00:43:45,920 اگر آن را همسان یک عدد صحیح به دنبال برخی از شخصیت. 633 00:43:45,920 --> 00:43:49,780 بنابراین متوجه ما سعی مجدد اگر ما هیچ چیز به جز 1 بازی. 634 00:43:49,780 --> 00:43:55,230 بنابراین اگر ما وارد 1، 2، 3، C، و یا 1، 2، 3، X، 635 00:43:55,230 --> 00:43:57,400 پس از آن 1، 2، 3 می توانید در عدد صحیح ذخیره شده، 636 00:43:57,400 --> 00:43:59,620 X می توانید در شخصیت های ذخیره شده، 637 00:43:59,620 --> 00:44:06,410 sscanf را بازگشت 2، و ما را دوباره امتحان کنید، چرا که ما فقط می خواهید یک عدد صحیح. 638 00:44:06,410 --> 00:44:09,810 >> به سرعت از طریق HTML، HTTP، CSS وزد. 639 00:44:09,810 --> 00:44:15,340 زبان نشانه گذاری ابرمتن ساختار و معناشناسی وب است. 640 00:44:15,340 --> 00:44:19,960 در اینجا به عنوان مثال از سخنرانی که در آن ما از تگ های HTML است. 641 00:44:19,960 --> 00:44:22,110 ما باید تگ سر، برچسب ها بدن، 642 00:44:22,110 --> 00:44:27,770 ما نمونه هایی از برچسب خالی که در آن ما در واقع شروع و برچسب بستن ندارد، 643 00:44:27,770 --> 00:44:30,820 ما فقط لینک و تصویر داشته باشد. 644 00:44:30,820 --> 00:44:38,480 هیچ برچسب تصویر بسته شدن وجود دارد، فقط یک برچسب واحد است که همه چیز را برچسب نیاز به انجام انجام وجود دارد. 645 00:44:38,480 --> 00:44:41,950 لینک به عنوان مثال است. خواهیم دید که چگونه شما به CSS پیوند دارند، 646 00:44:41,950 --> 00:44:45,910 اسکریپت یک نمونه از اینکه چگونه به یک جاوا اسکریپت خارجی پیوند است. 647 00:44:45,910 --> 00:44:53,100 این بسیار سر راست است، و به یاد داشته باشید، HTML یک زبان برنامه نویسی نیست. 648 00:44:53,100 --> 00:44:58,250 در اینجا، به یاد داشته باشید که چگونه شما می توانید یک فرم و یا حداقل تعریف این کار را انجام؟ 649 00:44:58,250 --> 00:45:01,740 این یک فرم یک عمل و روش. 650 00:45:01,740 --> 00:45:06,210 روش شما تنها مشاهده می کنید، GET و POST. 651 00:45:06,210 --> 00:45:09,040 پس از دریافت نسخه که در آن چیزی می شود در URL قرار داده است. 652 00:45:09,040 --> 00:45:11,680 POST می باشد که در آن است در URL قرار داده است. 653 00:45:11,680 --> 00:45:18,520 در عوض، هر گونه داده ها از فرم در درخواست HTTP پنهان تر وارد می شود. 654 00:45:18,520 --> 00:45:22,390 بنابراین در اینجا، عمل تعریف می کند که در آن درخواست HTTP می رود. 655 00:45:22,390 --> 00:45:27,490 از کجا آن را به google.com / جستجو می باشد. 656 00:45:27,490 --> 00:45:32,890 روش. به یاد داشته باشید تفاوت بین GET و POST، 657 00:45:32,890 --> 00:45:37,200 و فقط به عنوان مثال می گویند، اگر شما به نشانه چیزی می خواهم. 658 00:45:37,200 --> 00:45:40,660 شما هرگز قادر به نشانه URL POST خواهد بود 659 00:45:40,660 --> 00:45:44,970 چرا که داده ها در URL گنجانده نشده است. 660 00:45:44,970 --> 00:45:49,790 >> HTTP، در حال حاضر، پروتکل انتقال ابرمتن است. 661 00:45:49,790 --> 00:45:54,080 پروتکل انتقال ابرمتن، شما انتظار می رود آن را به انتقال 662 00:45:54,080 --> 00:45:57,710 نشانه گذاری ابرمتن زبان، و آن را انجام می دهد. 663 00:45:57,710 --> 00:46:00,170 اما آن را نیز انتقال تصاویر شما را در وب پیدا کنید، 664 00:46:00,170 --> 00:46:05,400 هر هفته شما را شروع به عنوان یک درخواست HTTP. 665 00:46:05,400 --> 00:46:10,350 بنابراین HTTP زبان از شبکه جهانی وب است تنها. 666 00:46:10,350 --> 00:46:15,610 و در اینجا شما نیاز به تشخیص این نوع از یک درخواست HTTP. 667 00:46:15,610 --> 00:46:19,300 در اینجا HTTP/1.1 در سمت فقط می گوید که نسخه است 668 00:46:19,300 --> 00:46:21,570 از پروتکل من با استفاده از. 669 00:46:21,570 --> 00:46:25,770 این تقریبا همیشه برای رفتن به HTTP/1.1، به عنوان شما آن را ببینید. 670 00:46:25,770 --> 00:46:30,110 سپس ما می بینیم که این GET بود، جایگزین بودن POST، که شما ممکن است ببینید. 671 00:46:30,110 --> 00:46:40,790 و URL که من در تلاش بود برای دیدار بود www.google.com/search؟q =، اه، اه، اه. 672 00:46:40,790 --> 00:46:44,240 بنابراین به یاد داشته باشید که این، علامت سوال Q =، اه، اه، اه، 673 00:46:44,240 --> 00:46:49,040 مرتب کردن بر اساس مواد است که توسط یک فرم ارسال می شود. 674 00:46:49,040 --> 00:46:51,830 پاسخ ممکن است به من بازگشت را چیزی شبیه به این. 675 00:46:51,830 --> 00:46:54,050 باز هم، با شروع با پروتکل است که برای رفتن به آن، 676 00:46:54,050 --> 00:46:59,190 به دنبال کد وضعیت. در اینجا از آن 200 OK است. 677 00:46:59,190 --> 00:47:05,060 و در نهایت، صفحه وب که در واقع من برای خواسته دنبال خواهد شد. 678 00:47:05,060 --> 00:47:08,210 کد وضعیت ممکن است شما ممکن است مشاهده کنید، و شما باید چند تا از آنها را می دانیم. 679 00:47:08,210 --> 00:47:12,770 200 OK شما احتمالا قبل از دیده می شود. 680 00:47:12,770 --> 00:47:17,830 403 ممنوعه، 404 یافت نشد، خطا 500 سرور داخلی 681 00:47:17,830 --> 00:47:22,140 معمولا اگر شما به یک وب سایت بروید و چیزی را خراب و یا سقوط کد PHP خود را، 682 00:47:22,140 --> 00:47:24,930 در حالی که در دستگاه ما که جعبه نارنجی رنگ بزرگ 683 00:47:24,930 --> 00:47:27,830 که می آید و می گوید، مانند، چیزی اشتباه است، این کد کار نمی کند 684 00:47:27,830 --> 00:47:30,380 و یا این عملکرد بد است. 685 00:47:30,380 --> 00:47:33,230 معمولا وب سایت ها نمی خواهند شما دانستن اینکه چه چیزی توابع در واقع بد، 686 00:47:33,230 --> 00:47:37,880 بنابراین به جای آنها فقط شما 500 خطاهای داخلی سرور را. 687 00:47:37,880 --> 00:47:43,050 >> TCP / IP 1 لایه تحت HTTP است. 688 00:47:43,050 --> 00:47:47,550 به یاد داشته باشید که اینترنت در خارج از شبکه جهانی وب وجود دارد. 689 00:47:47,550 --> 00:47:52,270 مثل این می مونه که شما بازی بازی های آنلاین است که به این طریق HTTP رفتن نیست، 690 00:47:52,270 --> 00:47:55,740 آن را از طریق های مختلف - آن را هنوز هم با استفاده از اینترنت، 691 00:47:55,740 --> 00:47:58,900 اما آن را نشانی از HTTP استفاده کنید. 692 00:47:58,900 --> 00:48:02,470 HTTP تنها یک نمونه از پروتکل ساخته شده بر روی TCP / IP است. 693 00:48:02,470 --> 00:48:07,820 IP به معنای واقعی کلمه پروتکل اینترنت به این معنی است. 694 00:48:07,820 --> 00:48:11,500 هر کامپیوتر دارای یک آدرس IP، آنها آن چیزهایی 4 رقمی است 695 00:48:11,500 --> 00:48:16,510 مانند 192.168.2.1، یا هر چیز دیگری، که گرایش به یک محلی است. 696 00:48:16,510 --> 00:48:23,390 اما این الگو از یک آدرس IP است. 697 00:48:23,390 --> 00:48:29,060 بنابراین DNS، نام خدمات ثبت دامنه، 698 00:48:29,060 --> 00:48:33,410 که چیزهایی مانند google.com آنچه که ترجمه را به یک آدرس IP واقعی. 699 00:48:33,410 --> 00:48:37,700 بنابراین اگر شما تایپ می کنید که آدرس IP به یک URL، 700 00:48:37,700 --> 00:48:40,850 که شما را به گوگل را، اما شما تمایل به یاد داشته باشید کسانی که همه چیز نیست. 701 00:48:40,850 --> 00:48:45,470 شما تمایل دارند به جای google.com به یاد داشته باشید. 702 00:48:45,470 --> 00:48:51,560 آخرین چیزی که ما باید بنادر، که در آن این قسمت TCP از IP است. 703 00:48:51,560 --> 00:48:54,880 TCP می کند بیشتر است. در مورد فکر می کنم، می خواهم، شما باید مرورگر خود را در حال اجرا. 704 00:48:54,880 --> 00:48:58,670 شاید شما برخی از برنامه های ایمیل در حال اجرا. 705 00:48:58,670 --> 00:49:02,150 شاید شما برخی از برنامه های دیگر که با استفاده از اینترنت در حال اجرا. 706 00:49:02,150 --> 00:49:05,090 همه آنها نیاز به دسترسی به اینترنت، 707 00:49:05,090 --> 00:49:08,100 اما کامپیوتر شما فقط 1 کارت بی سیم و یا هر چیز دیگری. 708 00:49:08,100 --> 00:49:10,780 بنابراین پورت ها در راه است که ما قادر به تقسیم کردن است 709 00:49:10,780 --> 00:49:13,550 چگونه این برنامه قادر به استفاده از اینترنت می باشد. 710 00:49:13,550 --> 00:49:17,230 هر برنامه می شود 1 پورت خاص است که آن را می توانید گوش در، 711 00:49:17,230 --> 00:49:19,670 و به طور پیش فرض، HTTP از پورت 80 استفاده. 712 00:49:19,670 --> 00:49:22,410 برخی از خدمات ایمیل استفاده کنید 25. 713 00:49:22,410 --> 00:49:24,490 آنهایی که کم شماره تمایل به سایت متعلق به. 714 00:49:24,490 --> 00:49:29,270 شما معمولا قادر به گرفتن آنهایی که بالاتر شماره برای خودتان. 715 00:49:29,270 --> 00:49:32,010 >> CSS، شیوه نامه آبشاری. 716 00:49:32,010 --> 00:49:36,030 ما به سبک صفحات وب با CSS، نه با HTML. 717 00:49:36,030 --> 00:49:38,440 3 مکان شما می توانید CSS خود قرار داده است. 718 00:49:38,440 --> 00:49:46,300 می توان آن را درون خطی، بین تگ های سبک، و یا در یک فایل کاملا از هم جدا و سپس مرتبط شوید 719 00:49:46,300 --> 00:49:48,470 و در اینجا فقط برای مثال از CSS است. 720 00:49:48,470 --> 00:49:50,450 شما باید از این الگوی تشخیص، 721 00:49:50,450 --> 00:49:54,310 که در آن به عنوان مثال برای اولین بار است که ما در حال تطبیق تگ body، 722 00:49:54,310 --> 00:49:56,680 و در اینجا ما در حال متمرکز تگ body. 723 00:49:56,680 --> 00:50:00,420 مثال دوم، ما در حال تطبیق چیز 724 00:50:00,420 --> 00:50:04,740 با بالا و پایین صفحه ID، و ما در حال استفاده از برخی از سبک های به آن. 725 00:50:04,740 --> 00:50:07,310 توجه کنید که ID بالا و پایین صفحه متن راستا به سمت چپ، 726 00:50:07,310 --> 00:50:09,840 در حالی که مرکز بدن متن راستا. 727 00:50:09,840 --> 00:50:13,180 پاورقی است در داخل بدن است. 728 00:50:13,180 --> 00:50:16,470 آن خواهد شد، به جای آن، تراز متن را در سمت چپ، حتی اگر بدن می گوید مرکز تراز متن. 729 00:50:16,470 --> 00:50:18,880 این کل قسمت آبشار آن است. 730 00:50:18,880 --> 00:50:22,110 شما می توانید - شما می توانید سبک برای بدن مشخص، 731 00:50:22,110 --> 00:50:25,320 و پس از آن چیز در بدن شما می توانید سبک های مشخص تر مشخص، 732 00:50:25,320 --> 00:50:28,160 و همه چیز کار می کنند که انتظار می رود. 733 00:50:28,160 --> 00:50:34,420 specifiers CSS های خاص را مقدم. 734 00:50:34,420 --> 00:50:46,140 من فکر می کنم که این. 735 00:50:46,140 --> 00:50:49,260 >> [علی نهم] سلام به همگی. اگر من فقط می تواند توجه شما را دریافت کنید. 736 00:50:49,260 --> 00:50:53,990 من علی هستم و من قصد دارم از طریق PHP و SQL به واقعا سریع است. 737 00:50:53,990 --> 00:51:00,310 بنابراین ما می توانیم آغاز خواهد شد. PHP برای PHP کوتاه است: پیش پردازنده مافوق متن. 738 00:51:00,310 --> 00:51:03,730 و همانطور که همه شما باید بدانید، آن است که یک زبان برنامه نویسی سمت سرور است، 739 00:51:03,730 --> 00:51:06,800 و ما استفاده از آن را برای پایان دادن به عقب از وب سایت ها، 740 00:51:06,800 --> 00:51:12,540 و چگونه آن را انجام می دهد بسیاری از محاسبات، در بخش پشت صحنه. 741 00:51:12,540 --> 00:51:17,510 نحو. این C، تعجب، تعجب را دوست ندارد. 742 00:51:17,510 --> 00:51:22,060 همیشه به با، اگر شما مشاهده می کنید، شروع - من نمی توانم جلوتر حرکت می کند. 743 00:51:22,060 --> 00:51:31,340 شما می توانید ببینید شما نیاز به نوع جدیدی از پرانتز و سپس شما نیز باید پی اچ پی؟ 744 00:51:31,340 --> 00:51:35,780 که همیشه چگونه شما به فریم متن PHP شما، کد PHP خود را. 745 00:51:35,780 --> 00:51:39,180 پس از آن می توانید درست مانند C، که در آن شما نوع آن را در اولین باشد. 746 00:51:39,180 --> 00:51:42,290 شما باید همیشه آن را احاطه کرده. 747 00:51:42,290 --> 00:51:47,610 و در حال حاضر، به نحو عمده این است که همه متغیرها را باید با $ شخصیت شروع می شود. 748 00:51:47,610 --> 00:51:49,490 شما نیاز به آن را انجام دهد زمانی که شما آنها را تعریف شود، شما نیاز به آن را انجام دهید 749 00:51:49,490 --> 00:51:51,860 زمانی که شما با اشاره به آنها را به بعد. 750 00:51:51,860 --> 00:51:56,510 شما همیشه نیاز که $. این تقریبا بهترین دوست جدید خود را. 751 00:51:56,510 --> 00:52:01,690 شما نمی - بر خلاف C، شما لازم نیست برای قرار دادن چه نوع از نوع متغیر در آن است. 752 00:52:01,690 --> 00:52:04,940 بنابراین در حالی که شما نیاز به دلار، شما لازم نیست برای قرار دادن، مانند، 753 00:52:04,940 --> 00:52:09,470 دانشنامه هوشمند ایکس و یا رشته ای Y، و غیره، و غیره. 754 00:52:09,470 --> 00:52:11,490 بنابراین تفاوت اندکی. 755 00:52:11,490 --> 00:52:15,590 به عنوان یک نتیجه از این، به این معنی است که PHP یک نوع ضعیف است. 756 00:52:15,590 --> 00:52:19,310 PHP یک زبان نوع ضعیف است، و آن را تا ضعیف متغیر تایپ. 757 00:52:19,310 --> 00:52:24,020 به عبارت دیگر، که بدان معنی است که شما می توانید از بین انواع مختلف انواع متغیر تغییر دهید. 758 00:52:24,020 --> 00:52:27,230 شما می توانید شماره خود را 1 به عنوان یک int ذخیره، 759 00:52:27,230 --> 00:52:29,650 شما می توانید آن را به عنوان یک رشته ذخیره، و شما می توانید آن را به عنوان شناور ذخیره، 760 00:52:29,650 --> 00:52:33,550 و آن را به همه این باشد که شماره 1. 761 00:52:33,550 --> 00:52:36,080 حتی اگر شما آن را ذخیره سازی در اشکال مختلف، 762 00:52:36,080 --> 00:52:39,120 هنوز هم - انواع متغیر ها هنوز هم در پایان برگزاری. 763 00:52:39,120 --> 00:52:41,540 بنابراین اگر شما در اینجا نگاه کنید، اگر شما از pset 7 به یاد داشته باشید، 764 00:52:41,540 --> 00:52:43,500 بسیاری از شما احتمالا مسائل با این حال. 765 00:52:43,500 --> 00:52:47,280 دو علامت مساوی، 3 نشانه مساوی، 4 نشانه های برابر است. 766 00:52:47,280 --> 00:52:49,990 خوب، هیچ 4 نشانه مساوی وجود دارد، اما 2 و 3 وجود دارد. 767 00:52:49,990 --> 00:52:53,320 شما با استفاده از 2 نشانه مساوی برای بررسی ارزش. 768 00:52:53,320 --> 00:52:55,830 این می تواند در میان انواع تیک بزنید. 769 00:52:55,830 --> 00:52:58,770 بنابراین اگر شما می توانید در اولین مثال را ببینید، 770 00:52:58,770 --> 00:53:02,210 من num_string == num_int. 771 00:53:02,210 --> 00:53:06,710 بنابراین اعضای هیات خود و رشته خود را هر دو می باشد، از لحاظ فنی، 1، 772 00:53:06,710 --> 00:53:10,790 اما آنها از انواع مختلف هستند. اما برای برابر دو، آن را هنوز هم شما منتقل می کند. 773 00:53:10,790 --> 00:53:15,510 با این حال، برای برابر سه گانه، آن را چک ارزش و همچنین انواع مختلف. 774 00:53:15,510 --> 00:53:18,760 این بدان معنی است که آن را به تصویب در که مورد دوم در اینجا، 775 00:53:18,760 --> 00:53:22,350 که در آن شما با استفاده از 3 نشانه مساوی به جای. 776 00:53:22,350 --> 00:53:26,590 به طوری که تفاوت عمده ای است که شما باید همه در حال حاضر نشان داده اند است. 777 00:53:26,590 --> 00:53:31,570 >> الحاق رشته دیگر چیزی قدرتمند شما می توانید در PHP استفاده کنید. 778 00:53:31,570 --> 00:53:34,080 این اساسا فقط این نماد نقطه دستی، 779 00:53:34,080 --> 00:53:36,230 و این که شما چگونه می توانید رشته ها را به هم پیوند. 780 00:53:36,230 --> 00:53:40,800 بنابراین اگر شما گربه و شما سگ، و شما می خواهید برای قرار دادن 2 رشته با هم، 781 00:53:40,800 --> 00:53:44,080 شما می توانید دوره استفاده کنید، و این نوع از چگونه کار می کند است. 782 00:53:44,080 --> 00:53:46,660 شما همچنین می توانید فقط آنها را در کنار یکدیگر، 783 00:53:46,660 --> 00:53:49,030 که شما می توانید در اینجا در مثال پایین را ببینید، 784 00:53:49,030 --> 00:53:51,610 که در آن I رشته 1، فضای رشته 2 اکو است. 785 00:53:51,610 --> 00:53:56,930 PHP می دانید به جای آنها به عنوان چون. 786 00:53:56,930 --> 00:53:59,780 آرایه ها. در حال حاضر، در PHP، 2 انواع آرایه ها وجود دارد. 787 00:53:59,780 --> 00:54:03,180 شما می توانید آرایه های منظم داشته باشد، و شما همچنین می توانید آرایه های انجمنی داشته باشد، 788 00:54:03,180 --> 00:54:06,040 و ما قصد داریم از طریق آنها در حال حاضر. 789 00:54:06,040 --> 00:54:08,280 آرایه های منظم فقط این در C، 790 00:54:08,280 --> 00:54:11,240 و بنابراین شما باید شاخص که به شماره افتاده است. 791 00:54:11,240 --> 00:54:13,160 در حال حاضر ما فقط رفتن برای ایجاد یک قرار داده و - 792 00:54:13,160 --> 00:54:15,500 پس این است که چگونه ما ایجاد یک آرایه خالی، پس از آن ما قصد داریم به 793 00:54:15,500 --> 00:54:17,310 قرار داده و به تعداد شاخص 0. 794 00:54:17,310 --> 00:54:19,200 ما قصد داریم برای قرار دادن عدد 6، ارزش 6. 795 00:54:19,200 --> 00:54:21,500 شما می توانید آن را در پایین مشاهده کنید. 796 00:54:21,500 --> 00:54:24,240 Where's - در عدد شاخص 1 ما قصد داریم برای قرار دادن تعداد ارزش 4، 797 00:54:24,240 --> 00:54:26,720 و بنابراین شما می توانید یک 6 وجود دارد، یک 4 وجود دارد، 798 00:54:26,720 --> 00:54:29,160 و پس از آن که ما در حال چاپ همه چیز، 799 00:54:29,160 --> 00:54:33,550 زمانی که ما سعی می کنیم و چاپ ارزش ذخیره شده در صفحه اول شماره 0، 800 00:54:33,550 --> 00:54:36,900 پس از آن خواهیم ارزش 6 در حال چاپ کردن را ببینید. دانلود؟ 801 00:54:36,900 --> 00:54:40,160 به طوری که آرایه به طور منظم برای شما است. 802 00:54:40,160 --> 00:54:42,750 راه دیگر شما همچنین می توانید همه چیز را به آرایه ها به طور منظم در حال حاضر است 803 00:54:42,750 --> 00:54:44,780 است شما فقط می توانید آنها را در پایان اضافه. 804 00:54:44,780 --> 00:54:47,240 این بدان معنی است که شما لازم نیست که برای مشخص کردن شاخص های خاص. 805 00:54:47,240 --> 00:54:51,000 شما می توانید تعداد مشاهده کنید، و سپس در براکت هیچ شاخص مشخص شده وجود دارد. 806 00:54:51,000 --> 00:54:56,270 و آن را می دانم - PHP می دانید به آن را فقط به انتهای لیست، نقطه آزاد بعدی اضافه کنید. 807 00:54:56,270 --> 00:54:59,190 بنابراین شما می توانید 1 سمت راست وجود دارد که در آن 0 نقطه، 808 00:54:59,190 --> 00:55:02,690 در نقطه اول 2 رفت سمت راست وجود دارد. 809 00:55:02,690 --> 00:55:04,690 3 می رود - وجود دارد اضافه شده است نیز هست. 810 00:55:04,690 --> 00:55:06,720 به طوری که نوع را حس می کند. شما فقط به طور مداوم در آن با اضافه کردن، 811 00:55:06,720 --> 00:55:09,360 و پس از آن زمانی که ما در حال تکرار شاخص شماره 1، 812 00:55:09,360 --> 00:55:13,080 آن را به نسخه قابل چاپ کردن ارزش 2. 813 00:55:13,080 --> 00:55:16,800 >> سپس ما را آرایه که آرایه های انجمنی می باشد. 814 00:55:16,800 --> 00:55:19,370 آرایه های انجمنی، به جای داشتن شاخص های عددی، 815 00:55:19,370 --> 00:55:23,630 آنچه انجام می دهند، آنها شاخص های که توسط رشته می باشد. 816 00:55:23,630 --> 00:55:25,670 شما می توانید ببینید، به جای - من از تمام کسانی که شاخص تعداد شر، 817 00:55:25,670 --> 00:55:32,140 و در حال حاضر آن را key1، key2، key3، و آنها را در نقل از دو برابر است به معنی که آنها تمام رشته ها است. 818 00:55:32,140 --> 00:55:34,470 بنابراین ما می توانیم به عنوان مثال از این داشته باشد. 819 00:55:34,470 --> 00:55:38,790 به عنوان مثال از این است که ما باید TF، و است که به نام شاخص است. 820 00:55:38,790 --> 00:55:42,030 ما قصد داریم برای قرار دادن "علی" را به عنوان نام، در صفحه اول، کالری خورده، 821 00:55:42,030 --> 00:55:47,640 ما می توانیم یک int این بار به جای یک رشته قرار داده است، 822 00:55:47,640 --> 00:55:52,240 و پس از آن در دوست داشتن شاخص، ما می توانیم کل آرایه ای داخل آن قرار داده است. 823 00:55:52,240 --> 00:55:55,490 بنابراین این نوع از - آن است که یک مفهوم شبیه به ما تا به حال در 824 00:55:55,490 --> 00:55:58,930 شاخص با شماره، اما در حال حاضر ما می توانیم شاخص های اطراف را تغییر دهید 825 00:55:58,930 --> 00:56:03,890 به جای آن به آنها را به عنوان رشته. 826 00:56:03,890 --> 00:56:06,070 شما همچنین می توانید این کار، علاوه بر این فقط آن را انجام می دهند به صورت جداگانه، 827 00:56:06,070 --> 00:56:09,400 شما می توانید آن را همه در یک تکه انجام دهد. بنابراین شما می توانید که TF از این آرایه را مشاهده کنید، 828 00:56:09,400 --> 00:56:13,350 و پس از آن ما همه آنها را در یک غول مربع مجموعه ای براکت تنظیم شده است. 829 00:56:13,350 --> 00:56:15,220 به طوری که می تواند کارها را تا سرعت. 830 00:56:15,220 --> 00:56:19,730 این بیشتر از یک انتخاب سبک از نیست. 831 00:56:19,730 --> 00:56:21,550 ما همچنین حلقه داشته باشد. 832 00:56:21,550 --> 00:56:26,020 در C ما باید حلقه که شبیه به این کار می کنند. 833 00:56:26,020 --> 00:56:29,690 ما آرایه ما به حال، و ما از شاخص 0 به انتهای لیست رفته، 834 00:56:29,690 --> 00:56:31,740 و ما آن را تمام چاپ، درست است؟ 835 00:56:31,740 --> 00:56:33,880 به جز مشکل است، برای آرایه های انجمنی، 836 00:56:33,880 --> 00:56:36,610 ما لزوما نمی دانم کسانی که شاخص های عددی 837 00:56:36,610 --> 00:56:39,610 چون در حال حاضر ما شاخص رشته. 838 00:56:39,610 --> 00:56:44,800 در حال حاضر ما استفاده از حلقه حلقه foreach، که، باز هم، شما امیدوارم در pset 7 استفاده می شود. 839 00:56:44,800 --> 00:56:48,930 حلقه حلقه foreach فقط می دانم که از تک تک این فهرست است. 840 00:56:48,930 --> 00:56:52,450 و آن را لازم نیست بدانید که دقیقا شاخص عددی است که شما داشته باشد. 841 00:56:52,450 --> 00:56:56,490 بنابراین شما باید به نحو حلقه foreach، پس از آن حلقه foreach، شما را در آرایه. 842 00:56:56,490 --> 00:57:00,430 بنابراین آرایه من است که به نام pset، و پس از آن به عنوان، کلمه به عنوان، 843 00:57:00,430 --> 00:57:04,530 و سپس شما را به این متغیر موقت محلی است که شما قصد استفاده قرار 844 00:57:04,530 --> 00:57:10,690 فقط برای چیزی خاص که رفتن به نگهداری خاص - 845 00:57:10,690 --> 00:57:14,770 یک نمونه و یا یک بخش از آرایه. 846 00:57:14,770 --> 00:57:18,350 تعداد Pset برگزار می 1، و پس از آن شاید آن را به تعداد 6 نگه دارید، 847 00:57:18,350 --> 00:57:20,410 و سپس آن را به عدد 2 را نگه دارد. 848 00:57:20,410 --> 00:57:26,630 اما این تضمین را از طریق هر ارزش واحد که در آرایه بروید. 849 00:57:26,630 --> 00:57:30,530 توابع مفید است که شما باید در PHP می دانیم که نیاز به، 850 00:57:30,530 --> 00:57:35,880 به طوری که اطمینان حاصل می کند که شما از جمله فایل های خاص، اکو، خروج، خالی است. 851 00:57:35,880 --> 00:57:40,490 من به شدت توصیه شما در pset 7 در نگاه و در آن دسته از توابع نگاه کنید. 852 00:57:40,490 --> 00:57:42,810 شما ممکن است به دانستن آن، 853 00:57:42,810 --> 00:57:47,060 بنابراین من قطعا می دانم چه، دقیقا، کسانی که همه انجام می دهند. 854 00:57:47,060 --> 00:57:50,080 >> و در حال حاضر ما در حال رفتن به از طریق دامنه به واقعا به سرعت. 855 00:57:50,080 --> 00:57:53,490 در دامنه، PHP نوع از چیزی بد بو است، بر خلاف C، 856 00:57:53,490 --> 00:57:56,170 و بدین ترتیب ما فقط رفتن را از طریق آن به سرعت. 857 00:57:56,170 --> 00:57:58,930 بنابراین اجازه دهید می گویند که ما در آن فلش که در حال حاضر وجود دارد شروع می شود. 858 00:57:58,930 --> 00:58:02,900 و ما قصد داریم تا با $ شروع کنم. پس مقدار متغیر "من" است برای رفتن به 0، 859 00:58:02,900 --> 00:58:06,730 و ما فقط به حفظ و چاپ آن را در آن جعبه بزرگ سفید بیش از وجود دارد. 860 00:58:06,730 --> 00:58:09,220 ما قصد داریم تا با I0 شروع، و پس از آن ما قصد داریم به آن اکو. 861 00:58:09,220 --> 00:58:12,670 پس 0 وجود دارد. 862 00:58:12,670 --> 00:58:15,210 و پس از آن ما در حال رفتن به آن را افزایش توسط حلقه for، 863 00:58:15,210 --> 00:58:17,810 و سپس آن را به ارزش 1. 864 00:58:17,810 --> 00:58:20,070 یکی کمتر از 3 است، بنابراین آن را به از طریق آن عبور برای حلقه، 865 00:58:20,070 --> 00:58:23,230 و پس از آن ما در حال رفتن به آن را دوباره چاپ شده است. 866 00:58:23,230 --> 00:58:25,520 ما در حال رفتن به آن افزایش دوباره تا 2، 867 00:58:25,520 --> 00:58:29,860 و 2 کمتر از 3 است، بنابراین آن را برای حلقه عبور، و آن را چاپ 2. 868 00:58:29,860 --> 00:58:35,100 سپس شما باید توجه داشته باشید که 3 کمتر از 3 نیست، بنابراین ما از حلقه for شکستن. 869 00:58:35,100 --> 00:58:40,050 بنابراین در حال حاضر ما خارج شده، و پس از آن ما قصد داریم برای رفتن به aFunction. 870 00:58:40,050 --> 00:58:45,010 خوب. بنابراین شما باید توجه داشته باشید که این متغیر است که ما ایجاد کرده اید، 871 00:58:45,010 --> 00:58:48,270 به "من" متغیر، در محل مورد نظر نیست. 872 00:58:48,270 --> 00:58:50,280 این بدان معنی است که این محلی برای حلقه نیست، 873 00:58:50,280 --> 00:58:58,060 و که متغیر ما هنوز هم می توانید دسترسی و تغییر پس از آن، و آن را هنوز هم موثر خواهد بود. 874 00:58:58,060 --> 00:59:02,160 بنابراین اگر شما در حال حاضر به تابع، شما خواهید دید که ما نیز به "من" متغیر استفاده کنید، 875 00:59:02,160 --> 00:59:05,320 و ما قصد داریم به افزایش "من" + +. 876 00:59:05,320 --> 00:59:09,410 شما که فکر می کنم، در ابتدا، بر اساس C، که یک کپی از "من" متغیر است. 877 00:59:09,410 --> 00:59:12,830 این یک چیزی کاملا متفاوت را، که درست است. 878 00:59:12,830 --> 00:59:16,560 بنابراین، هنگامی که ما آن را چاپ، ما قصد داریم تا در آن چاپ "من" + +، است که رفتن به نسخه قابل چاپ کردن که 4، 879 00:59:16,560 --> 00:59:19,640 و پس از آن ما قصد داریم - متاسفم. 880 00:59:19,640 --> 00:59:22,030 سپس ما می خواهیم برای پایان دادن به از آن تابع، 881 00:59:22,030 --> 00:59:24,820 و ما در حال رفتن به جایی که فلش می باشد در حال حاضر. 882 00:59:24,820 --> 00:59:29,190 این بدان معنی است که پس از آن، با این حال، اگر چه تابع تغییر ارزش «من»، 883 00:59:29,190 --> 00:59:32,620 آن را در خارج از تابع تغییر نمی کند، 884 00:59:32,620 --> 00:59:35,060 از آنجا که تابع دارای یک دامنه جداگانه. 885 00:59:35,060 --> 00:59:38,960 این بدان معنی است که هنگامی که ما اکو "من"، آن را در دامنه تابع تغییر نکرده است، 886 00:59:38,960 --> 00:59:43,660 و به همین ترتیب پس از آن ما قصد داریم تا در آن چاپ 3 دوباره. 887 00:59:43,660 --> 00:59:47,520 چیز های مختلف در مورد دامنه در PHP از C. 888 00:59:47,520 --> 00:59:51,130 >> در حال حاضر در PHP و HTML. 889 00:59:51,130 --> 00:59:53,510 PHP استفاده شده است تا صفحات وب پویا. 890 00:59:53,510 --> 00:59:58,660 این نوع باعث می شود همه چیز متفاوت است. 891 00:59:58,660 --> 01:00:02,090 ما آن را از HTML متفاوت است. 892 01:00:02,090 --> 01:00:05,230 با HTML، ما همیشه فقط باید همان چیزی که شخص، مثل نحوه راب نشان داد، 893 01:00:05,230 --> 01:00:09,370 در حالی که PHP، شما می توانید همه چیز را بر اساس که کاربر را تغییر دهید. 894 01:00:09,370 --> 01:00:11,830 پس اگر من این است، من، "شما با نام کاربری -" و سپس نام، 895 01:00:11,830 --> 01:00:14,420 و من می توانم نام را تغییر دهید. بنابراین در حال حاضر به نام جوزف است، 896 01:00:14,420 --> 01:00:18,880 و از آن است که "درباره من"، اما پس از آن من نیز می تواند به تغییر نام به تامی. 897 01:00:18,880 --> 01:00:21,700 و این می تواند یک چیز متفاوت است. 898 01:00:21,700 --> 01:00:23,840 پس ما نیز می تواند چیزهای مختلفی در مورد او را تغییر دهید، 899 01:00:23,840 --> 01:00:27,070 و آن را به مطالب مختلف را بر اساس نام نشان می دهد. 900 01:00:27,070 --> 01:00:31,430 بنابراین PHP نوع می تواند تغییر کند چه خبر است در وب سایت شما. 901 01:00:31,430 --> 01:00:33,540 در اینجا همان. با این حال، توجه داشته باشید که آنها مطالب مختلف، 902 01:00:33,540 --> 01:00:38,870 حتی اگر از لحاظ فنی هنوز هم دسترسی به آن صفحه وب در همان سطح. 903 01:00:38,870 --> 01:00:43,450 تولید HTML. 2 راه های مختلف که شما می توانید این کار وجود دارد. 904 01:00:43,450 --> 01:00:48,980 پس ما از آن در حال حاضر. راه اول این است، شما باید - بله، ببخشید. 905 01:00:48,980 --> 01:00:51,150 بنابراین شما فقط باید به طور منظم خود را برای حلقه در PHP، 906 01:00:51,150 --> 01:00:56,270 و سپس شما را در PHP اکو و شما اکو از HTML. 907 01:00:56,270 --> 01:00:58,720 با استفاده از آنچه راب شما از اسکریپت HTML نشان داد 908 01:00:58,720 --> 01:01:04,030 و سپس با استفاده از PHP نسخه قابل چاپ به فقط آن را چاپ کنید به صفحه وب. 909 01:01:04,030 --> 01:01:09,520 راه جایگزین این است که آن را به عنوان اگر شما جدا از PHP و HTML. 910 01:01:09,520 --> 01:01:11,940 بنابراین شما می توانید یک خط از PHP که برای حلقه شروع می شود داشته باشد، 911 01:01:11,940 --> 01:01:16,020 سپس شما می توانید خط از HTML در یک چیز جداگانه داشته باشد، 912 01:01:16,020 --> 01:01:19,700 و پس از آن پایان دادن به این حلقه، دوباره، با PHP. 913 01:01:19,700 --> 01:01:21,800 پس این نوع از جدا کردن آن را. 914 01:01:21,800 --> 01:01:24,020 در سمت چپ، شما می توانید که شما به همه - 915 01:01:24,020 --> 01:01:26,360 آن را فقط 1 تکه از PHP است. 916 01:01:26,360 --> 01:01:28,510 در سمت راست مشاهده می کنید که شما یک خط از PHP، 917 01:01:28,510 --> 01:01:32,540 شما یک خط از HTML، و شما باید یک خط از PHP دوباره. 918 01:01:32,540 --> 01:01:36,870 بنابراین جدا کردن آن را به آنچه که آنها انجام. 919 01:01:36,870 --> 01:01:39,330 و شما توجه داشته باشید که در هر صورت، برای هر کدام از آنها، 920 01:01:39,330 --> 01:01:41,980 آنها هنوز هم از چاپ تصویر، تصویر، تصویر، 921 01:01:41,980 --> 01:01:44,540 به طوری که HTML هنوز هم به همان شیوه چاپ شده است. 922 01:01:44,540 --> 01:01:49,870 و پس از آن شما هنوز هم می بینید که 3 تصویر نشان می دهد تا در وب سایت شما. 923 01:01:49,870 --> 01:01:52,820 پس از آن 2 راه مختلف انجام همین کار است. 924 01:01:52,820 --> 01:01:55,060 >> در حال حاضر ما فرم ها و درخواست ها. همانطور که راب به شما نشان داد، 925 01:01:55,060 --> 01:01:59,400 اشکال از HTML وجود دارد، و ما فقط از طریق این نسیم. 926 01:01:59,400 --> 01:02:02,040 شما باید یک عمل و به شما یک روش، و عمل خود را 927 01:02:02,040 --> 01:02:04,350 نوع شما که در آن شما در حال رفتن به ارسال آن نشان می دهد، و از روش این است که آیا 928 01:02:04,350 --> 01:02:06,960 آن را برای رفتن به یک GET یا POST. 929 01:02:06,960 --> 01:02:11,220 و یک درخواست GET، به عنوان راب گفت، بدان معنی است که شما در حال رفتن به آن را در یک فرم 930 01:02:11,220 --> 01:02:15,760 و شما آن را به عنوان یک URL را مشاهده کنید، در حالی که یک درخواست POST شما نمی خواهد در یک URL را ببینید. 931 01:02:15,760 --> 01:02:17,840 بنابراین تفاوت اندکی. 932 01:02:17,840 --> 01:02:19,950 با این حال، یک چیز است که یک چیز مشابه است 933 01:02:19,950 --> 01:02:22,560 این است که POST و GET به همان اندازه نا امن. 934 01:02:22,560 --> 01:02:26,430 بنابراین شما ممکن است فکر می کنم که فقط به خاطر اینکه شما آن را در URL مشاهده کنید، 935 01:02:26,430 --> 01:02:28,790 این بدان معناست که POST امن تر است، 936 01:02:28,790 --> 01:02:34,420 اما شما هنوز هم می توانید آن را در کوکی های خود را در اطلاعاتی که شما در حال ارسال. 937 01:02:34,420 --> 01:02:38,260 بنابراین فکر نمی کنم که در مورد یکی یا دیگری. 938 01:02:38,260 --> 01:02:42,160 یکی دیگر از چیزهایی که توجه داشته باشید این است که شما نیز متغیرهای بخش داشته باشد. 939 01:02:42,160 --> 01:02:45,850 شما بچه ها این در pset 7 استفاده می شود برای دریافت اطلاعات ID کاربر خود را. 940 01:02:45,850 --> 01:02:48,550 چه اتفاقی افتاده بود که شما می توانید این آرایه انجمنی استفاده، 941 01:02:48,550 --> 01:02:53,310 $ _SESSION، و پس از آن شما قادر به دسترسی به چیز متفاوت هستند 942 01:02:53,310 --> 01:02:57,720 و ذخیره چیزهای مختلف در سراسر صفحات. 943 01:02:57,720 --> 01:03:00,750 >> آخرین چیزی است که ما باید SQL، ساختار زبان پرس و جو، 944 01:03:00,750 --> 01:03:04,360 و این یک زبان برنامه نویسی برای مدیریت پایگاه داده است. 945 01:03:04,360 --> 01:03:08,220 چه، دقیقا، پایگاه داده می باشد؟ آنها مجموعه ای از جداول هستند، 946 01:03:08,220 --> 01:03:10,630 و هر جدول می تواند انواع مشابه از اشیاء را داشته باشد. 947 01:03:10,630 --> 01:03:14,990 بنابراین ما یک جدول از کاربران در pset امور مالی خود را به حال. 948 01:03:14,990 --> 01:03:20,610 و چرا آنها مفید است؟ از آنجا که آن راه به طور دائم ذخیره سازی اطلاعات است. 949 01:03:20,610 --> 01:03:22,840 این یک راه ردیابی چیز و مدیریت چیزهایی است 950 01:03:22,840 --> 01:03:25,890 و در واقع از دیدن آن در صفحات مختلف و آهنگ های نگهداری. 951 01:03:25,890 --> 01:03:29,930 در حالی که اگر شما فقط آن را ذخیره در یک لحظه که فوری 952 01:03:29,930 --> 01:03:33,720 و سپس آن را بعد از آن استفاده کنید، شما قادر نخواهد بود برای دسترسی به هر چیزی که شما ذخیره کرده ایم. 953 01:03:33,720 --> 01:03:37,660 در حال حاضر 4 چیز مهم است که ما برای دستورات SQL استفاده کنید. 954 01:03:37,660 --> 01:03:40,190 ما را انتخاب کنید، درج، حذف و به روز رسانی. 955 01:03:40,190 --> 01:03:42,880 این واقعا مهم است برای شما بچه ها برای مسابقه خود بدانید. 956 01:03:42,880 --> 01:03:45,990 >> ما به سرعت می روم بر سر انتخاب در حال حاضر. 957 01:03:45,990 --> 01:03:48,540 در واقع، شما انتخاب سطر از پایگاه داده باشد. 958 01:03:48,540 --> 01:03:52,400 بنابراین اگر شما، حق در اینجا - 959 01:03:52,400 --> 01:03:56,740 ما باید این 2 چیز متفاوت است، و ما می خواهیم از جدول کلاس ها را انتخاب کنید 960 01:03:56,740 --> 01:04:01,480 که در آن عالی - که در آن در ستون عالی مقدار 1 است. 961 01:04:01,480 --> 01:04:04,460 بنابراین شما می توانید در اینجا ببینید، ما باید این 2 چیز از نام کلاس، 962 01:04:04,460 --> 01:04:08,490 CS50 و Stat110، و ما باید شناسه کلاس و شعار. 963 01:04:08,490 --> 01:04:13,150 بنابراین ما خواهید را انتخاب کنید تمام آن اطلاعات. 964 01:04:13,150 --> 01:04:17,480 سپس شما می توانید ببینید در اینجا است که این نوع از برداشت از آن ستون عالی، 965 01:04:17,480 --> 01:04:25,170 که در آن همه چیز است 1، و سپس از آن است که ID کلاس، نام کلاس و شعار است که آن را می توانید انتخاب کردن. 966 01:04:25,170 --> 01:04:28,100 دقیقا چگونه شما این کار را در کد؟ شما مجبور به استفاده از PHP. 967 01:04:28,100 --> 01:04:33,830 پس این نوع از چگونه PHP و SQL به یکدیگر مرتبط است. 968 01:04:33,830 --> 01:04:38,130 در حال حاضر ما کد ما، و ما قصد استفاده از تابع پرس و جو ما 969 01:04:38,130 --> 01:04:41,370 همانطور که ما در pset 7 انجام داد، و ما در حال رفتن پرس و جوی SQL را اجرا کنند. 970 01:04:41,370 --> 01:04:43,870 سپس ما در حال رفتن به - 971 01:04:43,870 --> 01:04:46,280 ما همیشه اگر ردیف را سه برابر در صورت نادرست به تیک بزنید. 972 01:04:46,280 --> 01:04:49,010 پس باز هم، شما می خواهید برای بررسی نوع و مقدار، 973 01:04:49,010 --> 01:04:53,880 و پس از آن اگر آن کار نمی کند، پس از آن شما می خواهید برای معذرت خواهی، به طور معمول، همانطور که ما در pset 7 بود. 974 01:04:53,880 --> 01:04:55,870 در غیر این صورت، شما را به حلقه می خواهید از همه چیز با کسانی که دستی 975 01:04:55,870 --> 01:04:59,410 حلقه foreach حلقه است که ما بیش از رفت. 976 01:04:59,410 --> 01:05:01,280 حالا که ما حلقه از طریق و ما آن را در گذشته ساخته شده است، 977 01:05:01,280 --> 01:05:05,080 اجازه دهید فرض کنیم که پرس و جو ما به تصویب رسید، در حال حاضر ما حلقه foreach ما. 978 01:05:05,080 --> 01:05:11,050 و سطر اول آن است، بنابراین در اینجا ردیف است، حق در اینجا، آن را بسته بندی. 979 01:05:11,050 --> 01:05:14,010 آن را به نسخه قابل چاپ کردن تمام اطلاعاتی که آن را بدست. 980 01:05:14,010 --> 01:05:18,070 بنابراین آن را برای چاپ کردن در پایین "می خواهم بدانید HTML؟" 981 01:05:18,070 --> 01:05:23,370 سپس آن را برای رفتن به سطر بعدی، به دلیل آن را به اتمام اولین حلقه، 982 01:05:23,370 --> 01:05:26,510 و تا بعد آن را برای چاپ کردن خط دوم از آن، 983 01:05:26,510 --> 01:05:32,120 است که برای رفتن به STAT110، یافتن تمام لحظات. 984 01:05:32,120 --> 01:05:34,290 >> یکی از آخرین چیز در SQL آسیب پذیری است. 985 01:05:34,290 --> 01:05:37,300 من می دانم که دیوید را لمس کرد در این کمی در سخنرانی. 986 01:05:37,300 --> 01:05:40,730 شما می توانید از این بعد به عنوان خوانده شده. این واقعا خنده دار است. 987 01:05:40,730 --> 01:05:45,320 تزریق SQL یک نوع از چیزی که روی حیله و تزویر است. 988 01:05:45,320 --> 01:05:49,890 اجازه دهید بگویم که شما فقط چوب آن متغیر سمت راست به درخواست شما، 989 01:05:49,890 --> 01:05:52,290 که شما می توانید در آن خط اول را ببینید. 990 01:05:52,290 --> 01:05:54,520 بنابراین به نظر می رسد خوب، درست است؟ شما فقط با قرار دادن در نام کاربر 991 01:05:54,520 --> 01:05:58,820 و رمز عبور در پرس و جو SQL خود را، و شما می خواهید به آن کشتی خاموش کنید و هر آنچه در جدول داده های خود را. 992 01:05:58,820 --> 01:06:01,450 که به نظر می رسد خیلی ساده است. پس اجازه می دهد می گویند کسی قرار می دهد در، 993 01:06:01,450 --> 01:06:04,910 برای رمز عبور، به این OR متن را در اینجا - 994 01:06:04,910 --> 01:06:06,780 باید در واقع در جعبه قرمز می شود. 995 01:06:06,780 --> 01:06:11,920 بنابراین اجازه دهید می گویند که آنها که رمز عبور را قرار داده است - این چیزی است که آنها را وارد کنید. 996 01:06:11,920 --> 01:06:16,520 به طوری که آنها در حال قرار دادن OR "1" = 1. 997 01:06:16,520 --> 01:06:20,880 نوع رمز عبور احمقانه به. 998 01:06:20,880 --> 01:06:25,070 حالا اجازه دهید فقط آن را جایگزین در، و شما توجه داشته باشید که در آن پرس و جو SQL در حال حاضر، 999 01:06:25,070 --> 01:06:29,090 آن را به همیشه درست ارزیابی، چرا که شما باید توجه داشته باشید که 1000 01:06:29,090 --> 01:06:32,240 شما می توانید پرس و جو SQL را انتخاب کنید همه این اطلاعات 1001 01:06:32,240 --> 01:06:35,420 یا شما فقط می توانید 1 = 1. 1002 01:06:35,420 --> 01:06:41,030 به طوری که همیشه به ارزیابی درست. 1003 01:06:41,030 --> 01:06:46,610 رفتن که نه واقعا کار کند، چرا که بدان معنی است که هکر می تواند به سیستم خود را شکستن. 1004 01:06:46,610 --> 01:06:49,300 راه حل این است که شما مجبور به استفاده از سیستم PDO، 1005 01:06:49,300 --> 01:06:51,360 که بدان معنی است که شما مجبور به استفاده از علامت سوال، 1006 01:06:51,360 --> 01:06:53,350 همان چیزی که شما بچه ها استفاده در pset 7، 1007 01:06:53,350 --> 01:06:57,620 جایی که شما قصد استفاده از یک علامت سوال به جای که در آن شما می خواهید برای قرار دادن چیزی، 1008 01:06:57,620 --> 01:07:01,430 و پس از آن شما به یک کاما از هم، و سپس شما بعد از آن داشته باشد، 1009 01:07:01,430 --> 01:07:07,610 پس از رشته خود را، متغیرهای مختلف است که شما می خواهید به جای به علامت سوال خود را. 1010 01:07:07,610 --> 01:07:10,330 بنابراین شما در اینجا توجه داشته باشید که در حال حاضر من این علامت سوال قرمز. 1011 01:07:10,330 --> 01:07:15,420 سپس من از متغیرهای بعد از رشته من قرار داده تا من می دانم که به جای آنها به ترتیب پس از آن. 1012 01:07:15,420 --> 01:07:18,470 است که مطمئن شوید که اگر کسی آن را مانند این، 1013 01:07:18,470 --> 01:07:24,050 و آنها را به یا 1 = 1 شرایط، که مطمئن شوید، 1014 01:07:24,050 --> 01:07:30,490 در پایان به عقب، مطمئن شوید که آن را نمی خواهد در واقع پرس و جو SQL شکستن. 1015 01:07:30,490 --> 01:07:33,660 خوب، پس که تقریبا آن، یک گردباد از PHP و SQL. 1016 01:07:33,660 --> 01:07:41,520 بهترین شانس را به همه شما، و در حال حاضر به اورگون 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] همه باشه. زمان به بیش از برخی جاوا اسکریپت 1018 01:07:44,270 --> 01:07:48,840 و برخی چیزهای دیگر را به سرعت تا ما شما را تا امشب برگزار نشد. 1019 01:07:48,840 --> 01:07:56,930 جاوا اسکریپت. بله. جاوا اسکریپت نوع از چیزی که خنک است، ظاهرا. 1020 01:07:56,930 --> 01:07:59,090 چیزهایی که شما واقعا نیاز به مورد جاوا اسکریپت می دانید، آن را به نوعی مانند 1021 01:07:59,090 --> 01:08:03,810 پایان های سمت سرویس گیرنده از آنچه برنامه وب خود را در حال رفتن به انجام این کار می شود. 1022 01:08:03,810 --> 01:08:08,280 در برخی از چیزهایی که شما فقط نمی خواهم که به مراقبت از تمام وقت در سمت سرور وجود دارد. 1023 01:08:08,280 --> 01:08:12,880 تمام فعل و انفعالات کمی، برجسته سازی یک چیز، و چیزی ناپدید می شوند. 1024 01:08:12,880 --> 01:08:15,340 شما واقعا نمی خواهید به صحبت به سرور شما همه زمان برای آن است. 1025 01:08:15,340 --> 01:08:18,069 و بعضی از آن است که حتی ممکن نیست که در سمت سرور انجام دهد. 1026 01:08:18,069 --> 01:08:21,899 این است که چرا ما نیاز به چیزی شبیه به جاوا اسکریپت. 1027 01:08:21,899 --> 01:08:24,359 چیز جالب در مورد جاوا اسکریپت: این است که به صورت پویا نوع دار شده. 1028 01:08:24,359 --> 01:08:27,149 این بدان معنی است که برنامه شما نیازی به دانستن 1029 01:08:27,149 --> 01:08:30,970 چه، دقیقا، متغیرهای زمانی که شما آن را ارسال کنید. 1030 01:08:30,970 --> 01:08:34,510 این فقط نوع آن را کشف کردن آن را به عنوان در حال اجرا. 1031 01:08:34,510 --> 01:08:37,520 چیز دیگری که جالب در مورد آن: این یک زبان آکولاد است، 1032 01:08:37,520 --> 01:08:41,359 که به معنی به نحو شبیه به C و PHP است. 1033 01:08:41,359 --> 01:08:47,050 شما لازم نیست برای انجام این کار دوباره کاری بسیار زمانی که شما جاوا اسکریپت یادگیری. 1034 01:08:47,050 --> 01:08:49,180 در اینجا ما کمی از جاوا اسکریپت. 1035 01:08:49,180 --> 01:08:52,560 نکته جالب در اینجا این است که، اگر شما به آن نگاه کنید، 1036 01:08:52,560 --> 01:08:56,330 ما باید کمی از جاوا اسکریپت سمت راست وجود دارد در تگ head. 1037 01:08:56,330 --> 01:08:59,479 چه می کند این است که اساسا فقط شامل یک فایل جاوا اسکریپت. 1038 01:08:59,479 --> 01:09:02,260 این یکی از راه های که شما می توانید جاوا اسکریپت را در برنامه خود را شامل است. 1039 01:09:02,260 --> 01:09:06,910 سپس کمی دوم است که در واقع برخی از درون خطی جاوا اسکریپت، 1040 01:09:06,910 --> 01:09:10,790 بسیار شبیه به سبک های درون خطی با CSS، 1041 01:09:10,790 --> 01:09:16,180 و شما فقط به نوشتن مقداری کد به سرعت وجود دارد. 1042 01:09:16,180 --> 01:09:18,120 جاوااسکریپت دارای آرایه. 1043 01:09:18,120 --> 01:09:20,850 یک راه دیگر برای حفظ داده ها در اطراف، بسیار مفید است. 1044 01:09:20,850 --> 01:09:25,180 خیلی خوب و آسان گرامر. 1045 01:09:25,180 --> 01:09:29,870 شما با استفاده از براکت برای دسترسی به همه چیز و همه چیز را با هم نگه دارید. 1046 01:09:29,870 --> 01:09:35,020 هیچ چیز بیش از حد پیچیده است. 1047 01:09:35,020 --> 01:09:38,630 نکته جالب در مورد جاوا اسکریپت و زبان های اسکریپت نویسی به طور کلی 1048 01:09:38,630 --> 01:09:40,920 این است که شما لازم نیست که در مورد اندازه آرایه نگران باشید. 1049 01:09:40,920 --> 01:09:43,880 شما فقط می توانید استفاده کنید array.length و پیگیری آن، 1050 01:09:43,880 --> 01:09:46,960 و نیز آرایه می تواند رشد کند و یا کوچک کردن که شما باید آن را به. 1051 01:09:46,960 --> 01:09:49,279 بنابراین شما حتی نمی باید در مورد هر نوع نگرانی، 1052 01:09:49,279 --> 01:09:57,050 آه، نه، نیاز به تخصیص چیز بیشتر، و یا چیزی شبیه به آن. 1053 01:09:57,050 --> 01:10:00,090 >> نکته جالب این است که جاوا اسکریپت چیزی به نام اشیاء. 1054 01:10:00,090 --> 01:10:04,800 این یک زبان شی گرا است، بنابراین آنچه در آن است، در اصل، 1055 01:10:04,800 --> 01:10:10,100 راه را برای شما به داده های گروه با هم، تا حدودی شبیه به یک ساختار، 1056 01:10:10,100 --> 01:10:17,280 اما شما می توانید آن را مانند یک ساختار و یا در نحو آرایه انجمنی دسترسی پیدا کنید. 1057 01:10:17,280 --> 01:10:22,520 خیلی ساده است و شما می توانید با انجام این کار داده های گروه با هم 1058 01:10:22,520 --> 01:10:24,810 اگر شما یک دسته از داده هایی را که مربوط. 1059 01:10:24,810 --> 01:10:26,850 آنجا که آن را همه چیز شما نیاز به توصیف یک ماشین، 1060 01:10:26,850 --> 01:10:29,050 شما لازم نیست به آن را در یک دسته از مکان های مختلف. 1061 01:10:29,050 --> 01:10:35,300 شما فقط می توانید آن را به چوب به 1 شی در جاوا اسکریپت. 1062 01:10:35,300 --> 01:10:39,090 همانطور که شما احتمالا می دانید، تکرار یکی از آن کارهای خسته کننده است. 1063 01:10:39,090 --> 01:10:43,810 شما فقط آن را انجام دهید را دوباره و دوباره. شما نیاز به صحبت کردن هر شی در ماشین، 1064 01:10:43,810 --> 01:10:47,340 یا شما باید از طریق هر مورد به در یک لیست و یا چیزی شبیه به آن. 1065 01:10:47,340 --> 01:10:51,770 بنابراین جاوا اسکریپت است، شبیه به PHP، نحو حلقه foreach. 1066 01:10:51,770 --> 01:10:54,590 در این مورد، آن را در حلقه. 1067 01:10:54,590 --> 01:10:57,300 شما می خواهید به استفاده از این فقط بر روی اشیاء. 1068 01:10:57,300 --> 01:11:01,030 برخی از مشکلاتی که رخ می دهد اگر شما این استفاده در آرایه وجود دارد. 1069 01:11:01,030 --> 01:11:03,750 به طور کلی یکی از آن چیزهایی است، هر چند که بسیار مفید است، 1070 01:11:03,750 --> 01:11:06,590 دلیل این که شما از بین بردن بسیاری از سربار 1071 01:11:06,590 --> 01:11:10,270 دلیل این که شما لازم نیست به جلو و همه چیز را در جسم خود را توسط خودتان. 1072 01:11:10,270 --> 01:11:12,300 شما لازم نیست به خاطر داشته باشید تمام نام های کلیدی است. 1073 01:11:12,300 --> 01:11:18,270 شما فقط نوع آنها را در این نحو. 1074 01:11:18,270 --> 01:11:21,500 در این، با، برای، شما فقط می خواهم به یاد داشته باشید 1075 01:11:21,500 --> 01:11:27,180 که شما در حال گرفتن به عقب تمام کلید ها، در یک راه بسیار شبیه به هش جدول. 1076 01:11:27,180 --> 01:11:30,880 اگر شما از آن به یاد داشته باشید، زمانی که شما را در یک رشته قرار داده و شما می توانید چیزی را دریافت کنید 1077 01:11:30,880 --> 01:11:33,840 که یک مقدار وجود داشته باشد. 1078 01:11:33,840 --> 01:11:36,360 چه شما می توانید با انجام این کار شما می توانید می گویند، همه حق است، 1079 01:11:36,360 --> 01:11:42,120 من در یک ماشین قرار داده، و من آن را به نام فراری. 1080 01:11:42,120 --> 01:11:45,290 بنابراین شما می توانید در رشته فراری بعدا دوباره قرار داده است، و شما می توانید از دریافت کنید. 1081 01:11:45,290 --> 01:11:50,000 و شما می توانید انجام دهید که در یک حلقه، با در حلقه. 1082 01:11:50,000 --> 01:11:53,320 پس فقط بیشتر در مورد اشیاء. نکته های کلیدی از این شما نیاز به یاد داشته باشید 1083 01:11:53,320 --> 01:12:00,340 است که شما می توانید ساختار شی مانند نحو هر زمان که شما با این می خواهید استفاده کنید، 1084 01:12:00,340 --> 01:12:04,590 مگر اینکه چیزی است خود را به عنوان یک رشته استفاده از یک نام متغیر معتبر نیست. 1085 01:12:04,590 --> 01:12:07,650 بنابراین اگر شما در آن وجود دارد نگاه کنید، ما باید کلید با فاصله است. 1086 01:12:07,650 --> 01:12:12,500 خوب، اگر شما برای قرار دادن object.key، فضا، با، فضا، فضای، 1087 01:12:12,500 --> 01:12:15,320 که فقط معنی نیست نحوی. 1088 01:12:15,320 --> 01:12:22,730 بنابراین شما فقط می توانید که با این نوع نحو پایه انجام دهد. 1089 01:12:22,730 --> 01:12:26,520 >> همچنین، جاوا اسکریپت بسیار دامنه عاقلانه به PHP است. 1090 01:12:26,520 --> 01:12:29,050 شما 2 راه های مقابله با دامنه. 1091 01:12:29,050 --> 01:12:31,960 شما می توانید ور در مقابل یک متغیر ندارد، 1092 01:12:31,960 --> 01:12:34,060 و این فقط به معنی این جهانی است. 1093 01:12:34,060 --> 01:12:37,050 شما می توانید آن را از هر نقطه را ببینید. حتی اگر شما برای قرار دادن این در صورتی که یک بیانیه، 1094 01:12:37,050 --> 01:12:42,430 هر جای دیگر در کد خود را پس از آن نقطه شما می توانید از متغیر ها را ببینید. 1095 01:12:42,430 --> 01:12:46,730 یکی دیگر از چیزی، هر چند، با ور، آن را محدود به هر تابع شما هنوز وارد کنید 1096 01:12:46,730 --> 01:12:48,870 اگر شما در یک تابع نیست، خوب، آن جهانی است. 1097 01:12:48,870 --> 01:12:53,900 اما اگر شما در یک تابع است آن را تنها در آن تابع قابل مشاهده است. 1098 01:12:53,900 --> 01:12:56,420 من یک مثال را نداشته باشند، اما، آره. این یکی از کارهایی است که در آن 1099 01:12:56,420 --> 01:12:59,900 شما می توانید مدیریت چه متغیر می خواهید به جهانی، 1100 01:12:59,900 --> 01:13:03,810 چه متغیر می خواهید به محلی است، اما شما باید مراقب باشید در مورد این، 1101 01:13:03,810 --> 01:13:06,890 چرا که شما به نوع کنترل دانه ریز شما در C انجام ندارد، 1102 01:13:06,890 --> 01:13:15,820 که اگر چیزی است که در یک حلقه اعلام کرد، آن را به در که بماند برای حلقه. 1103 01:13:15,820 --> 01:13:18,790 چیزی که ما در واقع در مورد استفاده از جاوا اسکریپت برای مراقبت از دستکاری صفحات وب، درست است؟ 1104 01:13:18,790 --> 01:13:21,800 منظورم این است که به همین دلیل است که ما در حال انجام این کار. 1105 01:13:21,800 --> 01:13:23,840 >> برای انجام این کار، ما از چیزی به نام DOM. 1106 01:13:23,840 --> 01:13:25,850 مدل شیء سند. 1107 01:13:25,850 --> 01:13:29,430 در واقع، آنچه در آن می کند این است که طول می کشد تمام HTML شما 1108 01:13:29,430 --> 01:13:34,110 و مدل آن را به یک دسته از اشیاء که در داخل هر یک از دیگر تو در تو. 1109 01:13:34,110 --> 01:13:37,080 شما شروع با چیزی شبیه به این. 1110 01:13:37,080 --> 01:13:44,770 شما، در سمت راست برای من، یک دسته از کد وجود دارد که نوعی - 1111 01:13:44,770 --> 01:13:46,640 شما فکر می کنم که می شود، بسیار سخت به دستکاری، 1112 01:13:46,640 --> 01:13:48,700 به خاطر شما می شود از طریق یک دسته از متن تجزیه 1113 01:13:48,700 --> 01:13:52,080 و نیاز به قطعه از هم جدا چیز. و اگر آن را به درستی فرمت شده؟ 1114 01:13:52,080 --> 01:13:54,880 چیز بد اتفاق می افتد. 1115 01:13:54,880 --> 01:13:58,140 بنابراین جاوا اسکریپت طول می کشد مراقبت از این برای شما، و شما یک ساختار داده ها زیبا، 1116 01:13:58,140 --> 01:14:01,390 مانند یک در سمت چپ من، که در آن شما فقط یک سند داشته باشد، 1117 01:14:01,390 --> 01:14:03,530 و در داخل است که شما چیزی به نام HTML، 1118 01:14:03,530 --> 01:14:05,600 و در داخل که شما یک سر و بدن، 1119 01:14:05,600 --> 01:14:08,420 و در داخل که سر شما باید یک عنوان، و غیره، و غیره، و غیره. 1120 01:14:08,420 --> 01:14:11,810 این ساده دستکاری یک صفحه وب به طوری که آن را فقط، 1121 01:14:11,810 --> 01:14:14,190 آه، من فقط می خواهم به بحث به این مورد. 1122 01:14:14,190 --> 01:14:21,340 مرتب سازی بر یک راه بسیار مشابه شما می توانید به یکی دیگر از جسم شما به خودتان ساخته شده است صحبت کنید. 1123 01:14:21,340 --> 01:14:25,980 من می خواهم گفت، همه DOM در شیء سند است. 1124 01:14:25,980 --> 01:14:29,290 در هر دو صورت آن را فقط به یک محل و سپس شما می توانید در آن برای پیدا کردن چیزهایی، 1125 01:14:29,290 --> 01:14:33,880 و شما می توانید آن را انجام دهد - این سبک قدیمی از انجام آن، تا وجود دارد، 1126 01:14:33,880 --> 01:14:38,130 که شما document.getElementById، و پس از آن به نام، 1127 01:14:38,130 --> 01:14:42,420 و همانطور که شما احتمالا می توانم بگویم، این می شود بسیار سنگین بعد از مدتی. 1128 01:14:42,420 --> 01:14:44,480 بنابراین شما احتمالا نمی خواهید به انجام این کار. به همین دلیل ما 1129 01:14:44,480 --> 01:14:48,760 چیزی که بعد از ما در حال رفتن به بحث در مورد بعد از این. 1130 01:14:48,760 --> 01:14:52,510 نکته کلیدی در اینجا این است که، همه حق است، شما باید تمام این عناصر، درست است؟ 1131 01:14:52,510 --> 01:14:56,400 پس شاید من می توانید رنگ چیزی که بار صفحه را تغییر دهید. 1132 01:14:56,400 --> 01:14:58,380 پس چه؟ اگر کاربر من چیزی کلیک؟ 1133 01:14:58,380 --> 01:15:00,540 من می خواهم آن را به انجام کاری جالب زمانی که آنها چیزی را کلیک کنید. 1134 01:15:00,540 --> 01:15:02,600 به همین دلیل ما باید وقایع. 1135 01:15:02,600 --> 01:15:05,330 شما می توانید، در واقع، پیدا کردن هر عنصر در DOM خود را، 1136 01:15:05,330 --> 01:15:08,560 و پس از آن می گویند، هی. هنگامی که این بارهای یا کسی که آن کلیک، 1137 01:15:08,560 --> 01:15:11,410 و یا وقتی که موس روی آن، کاری با آن است. 1138 01:15:11,410 --> 01:15:15,330 و چه چیزی شما را داشته باشد، شما باید توابع است که این کار را برای شما. 1139 01:15:15,330 --> 01:15:17,980 این توابع گرداننده رویداد می باشد. 1140 01:15:17,980 --> 01:15:20,440 چه سازند - این فقط یک راه فانتزی گفتن است، 1141 01:15:20,440 --> 01:15:23,500 این تابع فقط زمانی اعدام این رویداد اتفاق می افتد. 1142 01:15:23,500 --> 01:15:28,070 پس از آن دسته صورتی که رخ می دهد. 1143 01:15:28,070 --> 01:15:30,810 این است که چگونه شما می توانید روی سطح پخش کردن یک event handler. 1144 01:15:30,810 --> 01:15:34,750 من برخی را فشار دهید، و زمانی که شما آن را کلیک کنید، آن را منفجر. 1145 01:15:34,750 --> 01:15:40,560 پس بر روی دکمه کلیک کنید. 1146 01:15:40,560 --> 01:15:42,910 این یکی از راه های نزدیک شدن به آن است، درست است؟ 1147 01:15:42,910 --> 01:15:46,430 شما باید یک تگ دکمه استفاده کنید و در کلیک شما یک رشته ای که می گوید، 1148 01:15:46,430 --> 01:15:50,460 آه، به هر حال، من این چیزی که انفجار برای من. 1149 01:15:50,460 --> 01:15:53,990 در غیر این صورت، آن را فقط مانند یک دکمه به طور منظم شما فقط ساخته شده است. 1150 01:15:53,990 --> 01:15:56,550 شما همچنین می توانید این کار دیگر، 1151 01:15:56,550 --> 01:16:02,770 گرفتن عنصر DOM، اما ما را نجات دهد که بعد از ما در مورد جی کوئری صحبت کنید. 1152 01:16:02,770 --> 01:16:07,580 >> جی کوئری: این یک کتابخانه است که متقابل مرورگر است. 1153 01:16:07,580 --> 01:16:09,580 شما می توانید آن را در تقریبا هر چیزی استفاده کنید. 1154 01:16:09,580 --> 01:16:12,090 و آن را فقط به شما می دهد بسیاری از ابزار برای کار با. 1155 01:16:12,090 --> 01:16:15,850 از آنجا که جاوا اسکریپت، در حالی که قدرتمند، از تمام ابزار شما نیاز ندارد 1156 01:16:15,850 --> 01:16:20,550 از جعبه یک برنامه وب را واقعا مقابله با شما ممکن است بخواهید برای انجام این کار. 1157 01:16:20,550 --> 01:16:24,650 بنابراین آن را ساده بسیاری از مسائل را، به شما می دهد بسیاری از توابع 1158 01:16:24,650 --> 01:16:28,760 از جعبه است که شما به طور معمول باید به خودتان ارسال، بارها و بارها و بارها. 1159 01:16:28,760 --> 01:16:31,600 و فقط باعث می شود همه چیز خیلی ساده است. 1160 01:16:31,600 --> 01:16:35,780 شما همچنین انتخاب، که به شما اجازه گرفتن از تمام کسانی که عناصر 1161 01:16:35,780 --> 01:16:42,800 از DOM شما را به سادگی، به جای داشتن برای استفاده از این توابع بسیار طولانی است. 1162 01:16:42,800 --> 01:16:46,630 بیشتر در این انتخاب. شما باید، وجود دارد شما، اجازه دهید بگویم 1163 01:16:46,630 --> 01:16:49,800 من می خواهم به یک عنصر با ID "سنگ است." 1164 01:16:49,800 --> 01:16:56,450 خوب، در jQuery، آن را فقط به دلار و پس از آن یک رشته است که یک پوند، و پس از آن "سنگ است." 1165 01:16:56,450 --> 01:17:01,960 این بسیار ساده است و خیلی سریع تر از روش های سنتی جاوا اسکریپت را از مقابله با این مشکل است. 1166 01:17:01,960 --> 01:17:06,120 و شما باید چیزهای مشابه برای کلاس ها و انواع عناصر. 1167 01:17:06,120 --> 01:17:08,140 jQuery است - یکی از ویژگی های جالب این است که شما به نوعی می تواند فشرده سازی 1168 01:17:08,140 --> 01:17:14,350 پایین نمایش داده شد خود را در DOM خود را بسیار بسیار سریع می باشد. 1169 01:17:14,350 --> 01:17:18,980 در حال حاضر ما بازگشت به حمل رویداد هستید، و این است که چگونه شما می توانید یک رویداد در jQuery را اداره کند. 1170 01:17:18,980 --> 01:17:23,090 بنابراین آنچه که ما قصد داریم در اینجا این است که ما در حال گفت، همه حق است. من یک برچسب اسکریپت، درست است؟ 1171 01:17:23,090 --> 01:17:25,400 بنابراین من این خطی جاوا اسکریپت. 1172 01:17:25,400 --> 01:17:27,750 چه ما می خواهیم انجام دهیم این است که ما در حال رفتن به می گویند، همه حق است. 1173 01:17:27,750 --> 01:17:30,860 هنگامی که سند آماده، که به معنی سند پر شده است، می باشد 1174 01:17:30,860 --> 01:17:34,660 ما می رویم به در به آن تابع، و ما در حال رفتن به می گویند، همه حق است، 1175 01:17:34,660 --> 01:17:37,060 این تابع در واقع کاری را انجام دیگر. 1176 01:17:37,060 --> 01:17:42,320 این اساسا گفت، همه حق است، من عنصر با ID دریافت "myid." 1177 01:17:42,320 --> 01:17:47,960 و سپس این را کنترل تابعی که اجرا زمانی که شما آن را کلیک کنید. 1178 01:17:47,960 --> 01:17:49,820 در واقع چه می کند این است، آن را می گوید، همه حق است. 1179 01:17:49,820 --> 01:17:52,630 صفحه لود شده است، بنابراین من قصد دارم به در، پیدا کردن این عنصر، 1180 01:17:52,630 --> 01:17:56,420 در این برنامه کنترل رویدادها را، و آن را اساسا مجموعه تا صفحه شما برای شما. 1181 01:17:56,420 --> 01:18:00,520 و این است که چگونه می خواهید در مورد دست زدن به رویداد فکر می کنم. 1182 01:18:00,520 --> 01:18:06,310 شما فقط می خواهم در مورد فکر می کنم، همه حق است، زمانی که چیزی رخ می دهد، چه من می خواهم به اتفاق می افتد؟ 1183 01:18:06,310 --> 01:18:10,520 شما نمی خواهید در مورد فکر می کنم، باشه، من باید مطمئن شوید که مذاکرات این چیز به این چیز، 1184 01:18:10,520 --> 01:18:14,660 این چیز، اه، اه، اه، چرا که شما فقط می خواهم به صحبت چیزی که از نظر حوادث. 1185 01:18:14,660 --> 01:18:17,650 هنگامی که این اتفاق می افتد، این اتفاق می افتد. هنگامی که این اتفاق می افتد، که اتفاق می افتد. 1186 01:18:17,650 --> 01:18:20,240 و اگر چیز باعث چیزهای دیگر، فوق العاده است. 1187 01:18:20,240 --> 01:18:22,150 اما شما نمی خواهید به انجام کد پیچیده 1188 01:18:22,150 --> 01:18:24,130 که در آن شما در حال راه اندازی کارهای مختلف در همان زمان، 1189 01:18:24,130 --> 01:18:28,860 چون شما فقط به خودتان سردرد. 1190 01:18:28,860 --> 01:18:32,340 >> خوب. در حال حاضر ما می توانید صفحه ما که مسئولیت رسیدگی به حوادث، 1191 01:18:32,340 --> 01:18:35,640 اما اجازه دهید بگویم کاربر من کلیک یک دکمه. 1192 01:18:35,640 --> 01:18:38,040 اگر می خواهید برای ارسال این درخواست به سرور، 1193 01:18:38,040 --> 01:18:41,100 اما من نمی خواهم به بارگذاری مجدد صفحه، به دلیل نیاز به بارگذاری مجدد صفحه جدید 1194 01:18:41,100 --> 01:18:44,390 در هر زمان تنها می شود نوع از خسته کننده، و به همین دلیل نیاز دارم 1195 01:18:44,390 --> 01:18:47,430 به جلو و پایین هدر دوباره، و بالا و پایین صفحه دوباره، 1196 01:18:47,430 --> 01:18:49,670 و تمام عناصر دوباره صفحه 1197 01:18:49,670 --> 01:18:53,180 فقط به روز کردن تبریک و یا زمان؟ 1198 01:18:53,180 --> 01:18:55,290 به همین دلیل ما باید چیزی شبیه به آژاکس. 1199 01:18:55,290 --> 01:18:59,150 آنچه ما در اینجا می توانید با آژاکس انجام شده است می توان گفت، همه حق است، 1200 01:18:59,150 --> 01:19:01,290 من می خواهم به ارسال برخی از داده ها به سرور، 1201 01:19:01,290 --> 01:19:04,010 و من می خواهم برای دریافت پاسخ به طوری که من می تواند صفحه من به روز رسانی، 1202 01:19:04,010 --> 01:19:12,120 و یا شاید فقط به انجام برخی از محاسبات الگوریتمی است که لزوما نشان نمی دهد هر چیزی را به کاربر. 1203 01:19:12,120 --> 01:19:15,500 چه شما نیاز به انجام این کار؟ خوب، شما نیاز به یک URL شما نیاز به صحبت کردن. 1204 01:19:15,500 --> 01:19:18,650 سرور شما می تواند نه تنها به طرزی جادویی در از هیچ جا گوش دهید. 1205 01:19:18,650 --> 01:19:21,960 شما نیاز به یک محل خاص شما از ارسال این داده ها به. 1206 01:19:21,960 --> 01:19:26,240 و شما همچنین برخی از داده ها نیاز به ارسال، و یا شاید آن را به یک پرس و جو dataless است. 1207 01:19:26,240 --> 01:19:31,380 شما فقط می خواهم به پینگ به سرور و می گویند، هی، من زنده، و یا چیزی شبیه به آن هستم. 1208 01:19:31,380 --> 01:19:35,150 و پس از آن شما می خواهید یک تابع است که اساسا با موفقیت انجام می دهد. 1209 01:19:35,150 --> 01:19:38,250 بیایید می گویند شما برخی از اطلاعات را از سرور خود، 1210 01:19:38,250 --> 01:19:42,960 و شما می خواهید به تغییر عنوان کاربر در صفحه خود. 1211 01:19:42,960 --> 01:19:44,930 بنابراین شما می توانید اطلاعات را به عقب بر گردیم، 1212 01:19:44,930 --> 01:19:48,860 و شما می توانید به صفحه فشار که. 1213 01:19:48,860 --> 01:19:51,170 چه اتفاقی می افتد، زمانی که صفحه آماده است، 1214 01:19:51,170 --> 01:19:56,500 شما در تابع روی ایجاد کلیک کنید این دکمه به نام greeter. 1215 01:19:56,500 --> 01:19:58,810 این چیست پس از آن انجام می دهد، وقتی که دکمه تحت فشار قرار دادند، 1216 01:19:58,810 --> 01:20:03,700 شما صحبت greetings.php، شما را به یک درخواست POST، 1217 01:20:03,700 --> 01:20:07,290 و به شما می گویند، هی، من چیزی را از صفحه خود را دریافت کنید. 1218 01:20:07,290 --> 01:20:09,890 ما واقعا نیاز به توصیف آن، اما greetings.php، 1219 01:20:09,890 --> 01:20:12,480 اجازه دهید فقط می گویند، می گرداند "سلام جهان است." 1220 01:20:12,480 --> 01:20:15,650 بنابراین ما به عقب بر گردیم به این "سلام جهان"، و در موفقیت این، 1221 01:20:15,650 --> 01:20:20,730 فرض کنید هیچ چیزی را اشتباه می رود، پس ما فقط به این محل مورد نظر بروید 1222 01:20:20,730 --> 01:20:25,720 که ما مشخص شده و ما فقط چوب پاسخ در آن وجود دارد. 1223 01:20:25,720 --> 01:20:31,560 و این یک راه بسیار ساده راه اندازی پرس و جو آژاکس است. 1224 01:20:31,560 --> 01:20:34,340 >> خیلی به سرعت، راب نوع از این اشاره شد در حال حاضر، 1225 01:20:34,340 --> 01:20:37,170 همه چیز می تواند به اشتباه، همه چیز بد اتفاق می افتد، 1226 01:20:37,170 --> 01:20:42,660 بنابراین شما می خواهید خود را آشنا با این کد پاسخ HTTP. 1227 01:20:42,660 --> 01:20:46,030 چه این ها فقط هستند، مانند، 200، همه چیز خوب پیش رفت. 1228 01:20:46,030 --> 01:20:48,670 چیز دیگری، همه چیز بد اتفاق افتاده است. 1229 01:20:48,670 --> 01:20:50,790 به طور کلی چیزی که شما می خواهید به خاطر داشته باشید. 1230 01:20:50,790 --> 01:20:53,440 اما آن را به خوبی می دانم که همه از این. 1231 01:20:53,440 --> 01:20:55,970 و در نهایت، زمانی که ما از طریق همه که رفته، 1232 01:20:55,970 --> 01:20:58,680 ما نیاز به بحث به سرعت در مورد طراحی، 1233 01:20:58,680 --> 01:21:00,620 و پس از آن ما می توانید اجازه دهید همه شما را ترک کنند. 1234 01:21:00,620 --> 01:21:03,410 طراحی. چیزهایی که شما می خواهید به خاطر داشته باشید. 1235 01:21:03,410 --> 01:21:06,950 از خود بپرسید این پرسش: چه کسی خواهید بود با استفاده از این؟ 1236 01:21:06,950 --> 01:21:09,580 چه خواهد شد که استفاده از آن برای؟ چه کاربران من در مورد مراقبت؟ 1237 01:21:09,580 --> 01:21:11,750 چه چیزی نیست که آنها در مورد مراقبت؟ 1238 01:21:11,750 --> 01:21:14,500 شما فقط نمی خواهید را به برنامه و اجازه دهید آن را فقط به رشد 1239 01:21:14,500 --> 01:21:18,270 و تبدیل این غول، همه گیر چیزی که شما حتی نمی تواند به پایان برساند. 1240 01:21:18,270 --> 01:21:23,900 شما می خواهید به اهداف گسسته و برنامه ها و چیزهایی که می خواهید به آدرس. 1241 01:21:23,900 --> 01:21:29,000 آن را گردیده. همه از این می گوید، اساسا، 1242 01:21:29,000 --> 01:21:34,950 آن را آسان برای کاربر به استفاده از آن، آن را قطره های غول پیکر از متن مثل این اسلاید را ندارد، در واقع. 1243 01:21:34,950 --> 01:21:38,020 شما فقط می خواهید آن را به چیزی که آن را بسیار آسان برای کسی به در 1244 01:21:38,020 --> 01:21:40,800 و آنچه می خواهند انجام دهند. 1245 01:21:40,800 --> 01:21:42,920 شما نمی خواهید آنها را به به حرکت در 5 صفحه 1246 01:21:42,920 --> 01:21:45,460 برای رسیدن به عملکرد نخست خود را از سایت شما. 1247 01:21:45,460 --> 01:21:49,290 اگر گوگل 5 صفحه قبل به حال شما حتی می تواند چیزی را جستجو کنید، 1248 01:21:49,290 --> 01:21:53,080 هیچ کس از آن استفاده کنید. 1249 01:21:53,080 --> 01:21:55,890 و در آخر، نمونه مقاله، گروه تمرکز می کنند. 1250 01:21:55,890 --> 01:21:59,220 دارای طراحی خوب و شیوه های تست. 1251 01:21:59,220 --> 01:22:00,730 فقط به خاطر شما فکر می کنم آن را برای شما کار می کند، 1252 01:22:00,730 --> 01:22:04,860 به این معنا نیست هر کس دیگری فکر می کند کار می کند. 1253 01:22:04,860 --> 01:22:14,490 اما آره، که این. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]