1 00:00:00,000 --> 00:00:02,480 >> [MUSIC PLAYING] 2 00:00:02,480 --> 00:00:06,460 3 00:00:06,460 --> 00:00:09,350 >> DOUG LLOYD: Bütün sağ, belə edək command-line dəlilləri haqqında danışmaq. 4 00:00:09,350 --> 00:00:11,800 Belə ki, bu günə qədər əlbəttə olduqca proqramları çox bütün 5 00:00:11,800 --> 00:00:16,360 yəqin ki, başlayıb şeylərdir int əsas boşluq kimi. 6 00:00:16,360 --> 00:00:18,310 Biz toplanması olduğunuz istifadəçi girişi biz bunu lazımdır, əgər 7 00:00:18,310 --> 00:00:21,080 kimi proqramlar da, Mario proqram, məsələn, 8 00:00:21,080 --> 00:00:22,990 in-proqram ister tərəfindən. 9 00:00:22,990 --> 00:00:25,190 Biz dəyişdirmək üçün lazım deyil əsas bəyannamə, 10 00:00:25,190 --> 00:00:30,684 çünki əvəzinə əsas biz daxilində yalnız int almaq üçün zəng edə bilər, deyirlər. 11 00:00:30,684 --> 00:00:32,350 Necə böyük piramida olmaq istəyirsiniz? 12 00:00:32,350 --> 00:00:34,455 Və ya almaq üçün zəng edə bilər nə qədər dəyişiklik float 13 00:00:34,455 --> 00:00:36,400 istifadəçi I çıxış lazımdır? 14 00:00:36,400 --> 00:00:38,630 >> Başqa bir yol olsa da var və biz istifadəçilər istəyirsinizsə 15 00:00:38,630 --> 00:00:40,580 təmin etmək üçün Bizim proqram data 16 00:00:40,580 --> 00:00:43,320 yerinə isə iş zamanı proqram, çalışan 17 00:00:43,320 --> 00:00:45,910 bir incə fərq, lakin bəzən bir çox faydalı bir, 18 00:00:45,910 --> 00:00:48,120 biz əsas elan yeni bir forma lazımdır. 19 00:00:48,120 --> 00:00:53,320 Biz istəyirsinizsə int əsas etibarsız istifadə edə bilməz command-line digər məlumatları toplamaq 20 00:00:53,320 --> 00:00:57,540 istifadəçi proqram çalışır zaman, beləliklə command-line dəlilləri. 21 00:00:57,540 --> 00:00:59,810 >> Bu skript satırı toplamaq istifadəçi dəlilləri, 22 00:00:59,810 --> 00:01:03,140 Sizin bəyannamə dəyişə şeylərdir int kimi baxmaq üçün əsas 23 00:01:03,140 --> 00:01:10,450 əsas, açıq paren, int argc, vergül, string argv, kvadrat mötərizədə, 24 00:01:10,450 --> 00:01:12,670 və sonra buruq brace açın. 25 00:01:12,670 --> 00:01:14,415 Belə ki, artıq nə deməkdir? 26 00:01:14,415 --> 00:01:19,410 Yaxşı, biz iki parametrləri keçən, əsas və ya dəlilləri və ya giriş. 27 00:01:19,410 --> 00:01:23,800 One, bir tam adlı argc və digər nədir? 28 00:01:23,800 --> 00:01:26,430 29 00:01:26,430 --> 00:01:29,640 Bu hüququ, strings bir sıra var? 30 00:01:29,640 --> 00:01:31,140 Biz bu kvadrat mötərizə notation görmək. 31 00:01:31,140 --> 00:01:32,181 Bu strings bir sıra var. 32 00:01:32,181 --> 00:01:35,110 Bu fərdi simli deyil, Bu strings bir sıra var. 33 00:01:35,110 --> 00:01:39,640 Və bu iki dəlilləri, argc və argv, nə data istifadəçi bilmək imkan 34 00:01:39,640 --> 00:01:42,912 command-line təmin edib və necə bir çox şeyi onlar 35 00:01:42,912 --> 00:01:44,120 command-line təmin. 36 00:01:44,120 --> 00:01:46,570 Ilə işləmək üçün olduqca faydalı şeylər. 37 00:01:46,570 --> 00:01:50,310 >> Argc, dəlil sayı tərəfdardır Siz yolu ilə, bilməlidir, 38 00:01:50,310 --> 00:01:52,600 Siz argc zəng edə bilər ki, Siz istədiyiniz hər hansı. 39 00:01:52,600 --> 00:01:54,710 Siz istəyirdi nə argv zəng edə bilərsiniz. 40 00:01:54,710 --> 00:01:58,740 Bu yalnız şərti adları biz Odur arqument sayı üçün istifadə ki, 41 00:01:58,740 --> 00:02:00,907 və biz ikinci görəcəksiniz kimi, dəlil vektor, argv. 42 00:02:00,907 --> 00:02:03,698 Amma onlara zəng yoxdur Siz istəmirsinizsə argc və argv, 43 00:02:03,698 --> 00:02:05,570 lakin şərti ki, biz nə var. 44 00:02:05,570 --> 00:02:07,500 >> Belə ki, hər halda, argc, dəlil count. 45 00:02:07,500 --> 00:02:11,569 Bu tam tipli dəyişən və, belə ki, biz iki şeyi varsa, gözləmək bilər 46 00:02:11,569 --> 00:02:13,860 biz tapmaq olacaq ki, bu tipli nə 47 00:02:13,860 --> 00:02:16,070 və nə qədər stuff istifadəçi tipli, argc var 48 00:02:16,070 --> 00:02:18,559 nə qədər bizə davam çap istifadəçi mövzusu. 49 00:02:18,559 --> 00:02:20,850 Bu bir sıra verir, belə ki, command-line dəlilləri istifadəçi 50 00:02:20,850 --> 00:02:22,470 proqram icra edildiyi yazılmış. 51 00:02:22,470 --> 00:02:25,780 Proqram Belə ki dot görməmiş doğramaq run, 52 00:02:25,780 --> 00:02:28,670 və görməmiş daxilində Sizin əsas funksiyası proqram 53 00:02:28,670 --> 00:02:34,800 bəyannamə int əsas int argc var, string, sonra kvadrat mötərizə argv 54 00:02:34,800 --> 00:02:37,950 bu halda argc biridir. 55 00:02:37,950 --> 00:02:40,200 İndi biz bunu qeyd necə bir çox şeyi saymaq 56 00:02:40,200 --> 00:02:42,590 istifadəçi proqram adına yazılmış. 57 00:02:42,590 --> 00:02:46,710 proqram adı özü sayar bir command-line arqument kimi. 58 00:02:46,710 --> 00:02:51,770 >> Belə ki, görməmiş doğramaq dot bu halda, argc biridir. 59 00:02:51,770 --> 00:02:57,910 Istifadəçi çizgi görməmiş 1024 CS50 tipli əgər bu halda argc command-line, at 60 00:02:57,910 --> 00:02:59,520 üç olardı. 61 00:02:59,520 --> 00:03:03,720 Və biz yol, çünki bu bilirik ki strings arasında bölgüsü 62 00:03:03,720 --> 00:03:06,030 olub aşkar bir yer, və ya nişanı var, 63 00:03:06,030 --> 00:03:08,230 və ya onların arasında kimi bir şey. 64 00:03:08,230 --> 00:03:13,860 Belə ki, ağ kosmik hər hansı məbləği, sözdə, dəyərləri arasındakı command-line tipli 65 00:03:13,860 --> 00:03:15,720 Orada nə qədər çox göstərir. 66 00:03:15,720 --> 00:03:24,040 Belə ki, görməmiş Space 1024 yer doğramaq nöqtə CS50, argc, bu halda, üç edir. 67 00:03:24,040 --> 00:03:26,600 >> Argv dəlil vektor edir. 68 00:03:26,600 --> 00:03:29,240 Vector, yeri gəlmişkən, yalnız bir sıra üçün başqa bir söz, 69 00:03:29,240 --> 00:03:31,510 bu bir sıra edir ki strings saklar. 70 00:03:31,510 --> 00:03:35,540 Element başına bir string, strings ki, istifadəçi həqiqətən 71 00:03:35,540 --> 00:03:39,230 command-line tipli Proqram edam edildi zaman. 72 00:03:39,230 --> 00:03:40,990 İndi kimi belədir Hər hansı bir sıra ilə, əgər 73 00:03:40,990 --> 00:03:44,380 bizim müzakirə geri Diziler, argv ilk element 74 00:03:44,380 --> 00:03:49,150 həmişə əldə etmək niyyətindədir argv kvadrat mötərizə sıfır. 75 00:03:49,150 --> 00:03:51,800 Bu ilk index var argv array. 76 00:03:51,800 --> 00:03:55,720 Belə ki, will-- və əslində, bu iradə həmişə proqramı adı, 77 00:03:55,720 --> 00:03:59,730 həmişə yerləşən olunacaq argv kvadrat mötərizə sıfır. 78 00:03:59,730 --> 00:04:08,590 >> argv son element həmişə görüntülərini argv kvadrat mötərizədə argc minus biri. 79 00:04:08,590 --> 00:04:10,300 Niyə görürsünüz? 80 00:04:10,300 --> 00:04:14,180 Neçə elementləri saxla Bu array var. 81 00:04:14,180 --> 00:04:16,660 Bəli, biz bu that-- bilirik elementlərin argc nömrəsi. 82 00:04:16,660 --> 00:04:21,279 Istifadəçi üç şey tipli əgər command-line, argc üç edir. 83 00:04:21,279 --> 00:04:27,070 Amma c, biz çalışırıq Diziler ilə, serialın hər element, 84 00:04:27,070 --> 00:04:30,190 bir və ya daha çox göstəriciləri array, sıfır da başlanır. 85 00:04:30,190 --> 00:04:34,000 Biz üç elementləri varsa, bizim array, biz argv sıfır bir element var 86 00:04:34,000 --> 00:04:37,930 argv bir bir element, argv iki və element. 87 00:04:37,930 --> 00:04:41,700 Argv heç bir element yoxdur üç, və ölçüsü üç bir sıra. 88 00:04:41,700 --> 00:04:43,990 Belə ki, niyə son var argv element həmişə bilərsiniz 89 00:04:43,990 --> 00:04:49,510 argv meydanında əldə etmək Mötərizədə argc minus biridir. 90 00:04:49,510 --> 00:04:52,420 >> Belə ki, istifadəçi icra edəcəyi güman edək Bu aşağıdakı kimi görməmiş proqram 91 00:04:52,420 --> 00:04:57,970 onlar command-line dot yazın əgər , görməmiş space 1024 space CS50 doğramaq 92 00:04:57,970 --> 00:05:00,720 və hər hansı səbəbdən biz artıq bizim görməmiş proqram hazırlayıb 93 00:05:00,720 --> 00:05:04,050 bilirik və bu ilə işləmək üçün command-line dəlilləri. 94 00:05:04,050 --> 00:05:07,030 Biz işləyərkən biz əvvəllər vermədi görməmiş problem bu, 95 00:05:07,030 --> 00:05:09,660 lakin indi redaktə etdik deyək Bu ki, biz prosesi nə 96 00:05:09,660 --> 00:05:11,480 bir şəkildə command-line dəlilləri. 97 00:05:11,480 --> 00:05:15,720 Bu halda, sıfır argv dot çizgi görməmiş edir. 98 00:05:15,720 --> 00:05:17,042 Argv bir nədir? 99 00:05:17,042 --> 00:05:19,030 Bəli, bu, sağ 1024 var? 100 00:05:19,030 --> 00:05:22,620 Bu 1024, lakin burada bir var həqiqətən əhəmiyyətli distinction-- 101 00:05:22,620 --> 00:05:26,410 Siz argv data növü xatırlayırsınız? 102 00:05:26,410 --> 00:05:31,020 >> Bu doğru, strings mağazalar? 103 00:05:31,020 --> 00:05:34,140 Amma bu 1024 kimi görünür tam dəyəri. 104 00:05:34,140 --> 00:05:36,530 Bu həqiqətən vacibdir fərq, və əslində 105 00:05:36,530 --> 00:05:40,200 bir şey olmaq üçün gedir ki, sonra problemləri qarşılaşa bilər. 106 00:05:40,200 --> 00:05:43,770 Argv hər şey bir string kimi saxlanılır. 107 00:05:43,770 --> 00:05:48,775 Belə argv bir məzmunu var string bir sıfır, iki, dörd, 108 00:05:48,775 --> 00:05:50,275 bu dörd simvol ibarət. 109 00:05:50,275 --> 00:05:53,870 Bu istifadəçi yazdığınız kimi deyil bir sıfır, iki, dörd 110 00:05:53,870 --> 00:05:56,680 fərdi məktublar və ya simvol kimi. 111 00:05:56,680 --> 00:06:00,730 Bu, tam 1024 deyil və siz birbaşa bilməz 112 00:06:00,730 --> 00:06:11,580 int 1000 deyərək bu iş, və ya daha int x argv bir minus 24 bərabərdir. 113 00:06:11,580 --> 00:06:15,550 >> Daxilən, siz ki, hesab bilər OK, yaxşı, bu, 1024 minus 24 var, kimi 114 00:06:15,550 --> 00:06:17,920 belə x 1000 bərabərdir. 115 00:06:17,920 --> 00:06:22,020 Amma əslində, ki, belə deyil argv bir string çünki. 116 00:06:22,020 --> 00:06:23,940 string 1024. 117 00:06:23,940 --> 00:06:28,739 İndi ola bilər ki, bir funksiyası var integers üçün strings çevirmək üçün istifadə olunur. 118 00:06:28,739 --> 00:06:30,780 Mən sizin üçün korlamaq deyil İndi, amma Zamyla əminəm 119 00:06:30,780 --> 00:06:34,380 bu barədə sizə xoşbəxt olacaq gələcək problem üçün gözden geçirmek. 120 00:06:34,380 --> 00:06:36,390 Amma siz də tapa bilərsiniz problemləri like-- bəhanə 121 00:06:36,390 --> 00:06:39,921 Mənə funksiyaları ki, ki, yalnız 50 bunu, 122 00:06:39,921 --> 00:06:42,462 Siz kitabçası getmək əgər Bir funksiyası tapa bilərsiniz ki, 123 00:06:42,462 --> 00:06:43,820 Sizin üçün bu dönüşüm edəcək. 124 00:06:43,820 --> 00:06:45,980 Ancaq yenə də, gözden geçirmek gələcək problem, 125 00:06:45,980 --> 00:06:48,290 Zamyla üçün xoşbəxt olacaq nə funksiyası sizə xəbər 126 00:06:48,290 --> 00:06:53,280 bu çevirmək olacaq tam 1024 string 1024. 127 00:06:53,280 --> 00:06:54,560 >> Bütün hüquqlar, belə hərəkət. 128 00:06:54,560 --> 00:06:56,726 Biz argv sıfır əhatə etdik biz bir argv əhatə etdik. 129 00:06:56,726 --> 00:06:58,000 Nə argv iki var? 130 00:06:58,000 --> 00:06:58,620 CS50. 131 00:06:58,620 --> 00:07:01,350 Ki, bir yəqin olduqca özünü izahlı edir. 132 00:07:01,350 --> 00:07:02,950 Nə argv üç var? 133 00:07:02,950 --> 00:07:04,970 Yaxşı daha, biz həqiqətən bilmirəm, sağ? 134 00:07:04,970 --> 00:07:08,060 Biz, ölçüsü üç bir sıra var ki, neçə elementləri istifadəçi 135 00:07:08,060 --> 00:07:11,610 command-line tipli, belə ki, biz üç argv getmək əgər, 136 00:07:11,610 --> 00:07:14,660 biz indi overstepping edirik bizim serialın həddi. 137 00:07:14,660 --> 00:07:18,570 compiler, bizə bunu bildirin edəcək heç bir intuitiv problem ilə var, 138 00:07:18,570 --> 00:07:22,890 lakin həqiqətən baxımından nə olacaq baş, biz, həqiqətən bilmirəm. 139 00:07:22,890 --> 00:07:25,380 Bu nə asılıdır yaddaş harada yerləşir 140 00:07:25,380 --> 00:07:28,060 argv üç olması gözlənilir. 141 00:07:28,060 --> 00:07:30,716 Və belə ki, biz başa bilər üz qəzasız bəlasız pulsuz əldə. 142 00:07:30,716 --> 00:07:33,840 Daha çox heç-dən, xüsusən də fərqli olaraq argv çalışırıq 143 00:07:33,840 --> 00:07:35,548 hər hansı digər array ki, bizim proqram var 144 00:07:35,548 --> 00:07:38,660 biz yəqin ki, əziyyət olacaq bir seqmentasiya günah. Belə ki, yenə, 145 00:07:38,660 --> 00:07:42,756 həddini aşmasından əmin ola Sizin serialların, xüsusilə argv, 146 00:07:42,756 --> 00:07:47,170 onun yüksək dərəcəsi verilir Sizin proqramları əhəmiyyəti. 147 00:07:47,170 --> 00:07:48,100 >> Mən Doug Lloyd edirəm. 148 00:07:48,100 --> 00:07:50,170 Bu CS50 edir. 149 00:07:50,170 --> 00:07:51,457