1 00:00:00,000 --> 00:00:12,510 2 00:00:12,510 --> 00:00:13,870 >> ROB: În regulă. 3 00:00:13,870 --> 00:00:16,770 Bine ați venit la prima secțiune. 4 00:00:16,770 --> 00:00:17,480 Sunt Rob. 5 00:00:17,480 --> 00:00:18,806 >> JOSEPH: Eu sunt Iosif. 6 00:00:18,806 --> 00:00:21,540 >> ROB: Deci, vom arunca cu capul dreapta inch 7 00:00:21,540 --> 00:00:23,420 Primul lucru pentru a vorbi despre este Appliance. 8 00:00:23,420 --> 00:00:27,150 Deci sperăm că cele mai multe dintre voi au descărcat-o deja. 9 00:00:27,150 --> 00:00:37,180 Dar puteți vedea instrucțiunile la cs50.net/appliance. 10 00:00:37,180 --> 00:00:38,430 Oh, Doamne, acum eu sunt constient de sine. 11 00:00:38,430 --> 00:00:44,590 12 00:00:44,590 --> 00:00:45,430 Am încă o aud. 13 00:00:45,430 --> 00:00:47,232 >> JOSEPH: Wow, se pare ca e dezorientat. 14 00:00:47,232 --> 00:00:52,460 >> ROB: Deci, unii oameni au fost cu probleme cu ea, asa ca nu asteptati pana 15 00:00:52,460 --> 00:00:54,940 în ultimul moment a problemei setat la încercați și de a rezolva aparatul și 16 00:00:54,940 --> 00:00:56,320 afla că nu este de lucru. 17 00:00:56,320 --> 00:00:59,010 >> JOSEPH: Si daca ceva nu merge și aveți nevoie de ajutor, poti sa te duci la 18 00:00:59,010 --> 00:01:03,390 cs50.net/discussion unde am au un forum unde 19 00:01:03,390 --> 00:01:04,110 pot posta întrebările dumneavoastră. 20 00:01:04,110 --> 00:01:06,655 Și vom ajunge la ele în cele din urmă. 21 00:01:06,655 --> 00:01:07,490 >> ROB: În regulă. 22 00:01:07,490 --> 00:01:12,180 Deci, aceasta este ceea ce Appliance arata ca. 23 00:01:12,180 --> 00:01:15,480 Din nou, e doar un complet separat sistem de operare care rulează în 24 00:01:15,480 --> 00:01:19,440 indiferent de sistemul de operare se rulează pe laptop-ul. 25 00:01:19,440 --> 00:01:24,450 Și principalele lucruri pe care va folosi sunt gedit. 26 00:01:24,450 --> 00:01:28,050 Deci sperăm că acest lucru are deja deveni un loc familiar. 27 00:01:28,050 --> 00:01:29,470 Terminalul. 28 00:01:29,470 --> 00:01:31,890 >> Și puteți rula, de asemenea, Chrome în cadrul aparatului. 29 00:01:31,890 --> 00:01:33,860 Au fost un cuplu de oameni care au raportat internet 30 00:01:33,860 --> 00:01:35,390 nu lucrează în aparatul. 31 00:01:35,390 --> 00:01:38,090 Iar unii dintre ei chiar și-au asumat că nu ar trebui să fie 32 00:01:38,090 --> 00:01:39,190 internet în aparat. 33 00:01:39,190 --> 00:01:40,750 Dar, da, acolo se presupune pentru a fi pe internet. 34 00:01:40,750 --> 00:01:44,000 35 00:01:44,000 --> 00:01:46,410 >> Eu voi spune chiar acum, dar ea nu are înseamnă cu adevărat ceva. 36 00:01:46,410 --> 00:01:50,680 În cazul în care internetul nu este de lucru, aceasta este ceea ce aveți tendința de a avea nevoie de 37 00:01:50,680 --> 00:01:52,180 pentru a rula pentru a remedia problema. 38 00:01:52,180 --> 00:01:55,602 Dacă aveți probleme de internet, nu face amintiți-vă că, chiar posta pe 39 00:01:55,602 --> 00:01:57,560 Discutați, și vom spune, că a alerga. 40 00:01:57,560 --> 00:02:00,420 Dar pe internet ar trebui să fie de lucru. 41 00:02:00,420 --> 00:02:06,650 >> Deci, singurul lucru - Da, nimic altceva este cu adevărat relevant. 42 00:02:06,650 --> 00:02:08,979 Dar am vrut doar să subliniez faptul că - 43 00:02:08,979 --> 00:02:13,290 a se vedea în acest colțul dreapta-jos. 44 00:02:13,290 --> 00:02:16,530 Deci, fiecare dintre aparatele dvs. ar trebui să au o adresă IP. 45 00:02:16,530 --> 00:02:22,350 Și mai târziu în semestrul, acest IP adresă va deveni mai relevant atunci când 46 00:02:22,350 --> 00:02:27,230 lucrați pe web p-set, pentru că veți avea posibilitatea de a accesa 47 00:02:27,230 --> 00:02:32,310 site-ul sunteți de lucru pe la dvs. Chrome locale prin utilizarea acestei adrese IP. 48 00:02:32,310 --> 00:02:35,400 >> Dar ce-mi place sa folosesc adresa IP pentru - și tu nu trebuie să faci asta, eu 49 00:02:35,400 --> 00:02:37,460 Vreau doar să-l subliniez - 50 00:02:37,460 --> 00:02:39,540 este aici. 51 00:02:39,540 --> 00:02:42,910 Deci, aceasta este o fereastră de terminal de pe Mac-ul meu, acest lucru nu este în 52 00:02:42,910 --> 00:02:44,580 Aparat la toate. 53 00:02:44,580 --> 00:02:47,190 Si poti sa te uiti la ceea ce această comandă nu. 54 00:02:47,190 --> 00:02:51,855 Dar am de gând să SSH direct la Appliance mea. 55 00:02:51,855 --> 00:02:53,410 Nu știu ce este de anchetă. 56 00:02:53,410 --> 00:02:54,300 >> JOSEPH: 168 - 57 00:02:54,300 --> 00:02:56,080 >> 168.224.1.0. 58 00:02:56,080 --> 00:02:59,950 >> ROB: Deci, odată ce am terminat cu acest lucru, va autentifica 59 00:02:59,950 --> 00:03:05,450 Acum, în esență, aceasta este identică cu o fereastră de terminal în Appliance mea. 60 00:03:05,450 --> 00:03:10,280 Așa că am destul de mult nu a lucrat de fapt, din cadrul Appliance în sine. 61 00:03:10,280 --> 00:03:12,550 Eu doar l întotdeauna de funcționare în fundal minimizat 62 00:03:12,550 --> 00:03:15,890 și SSHed în ea. 63 00:03:15,890 --> 00:03:24,270 >> Problema cu acest lucru este nu vi se întâmplă pentru a putea folosi cu ușurință gedit 64 00:03:24,270 --> 00:03:25,600 direct de la acest lucru. 65 00:03:25,600 --> 00:03:31,500 Dar dacă vrei să fii un adevărat rece hacker, atunci ar trebui sa folosit de o 66 00:03:31,500 --> 00:03:34,220 linie de comandă editor de text, oricum. 67 00:03:34,220 --> 00:03:39,620 Deci, Vim și Emacs și Nano, toate acestea sunt diferite alternative. 68 00:03:39,620 --> 00:03:41,560 Nano tinde să fie cel mai ușor. 69 00:03:41,560 --> 00:03:45,006 Și cred că nu are nici o sintaxă evidențierea. 70 00:03:45,006 --> 00:03:47,620 Oh, nu, totul face. 71 00:03:47,620 --> 00:03:49,870 Astfel, puteți folosi Nano, deoarece că unul e destul de ușor. 72 00:03:49,870 --> 00:03:52,000 >> Veți vedea toate aceste comenzi în partea de jos. 73 00:03:52,000 --> 00:03:54,750 Acest simbol morcov mic. 74 00:03:54,750 --> 00:03:57,620 Dacă nu ați văzut-o înainte, veți probabil se vedea o mulțime acum. 75 00:03:57,620 --> 00:04:02,350 Aceasta înseamnă, în general, morcovul de control, cum ar fi partea de jos-stânga a tastaturii 76 00:04:02,350 --> 00:04:04,130 caracter de control. 77 00:04:04,130 --> 00:04:07,260 Deci, aici îmi spune aici - 78 00:04:07,260 --> 00:04:08,710 oh, nu este tăiat, dacă am zoom inch 79 00:04:08,710 --> 00:04:11,040 Deci control, X este modul Am de gând să ieși. 80 00:04:11,040 --> 00:04:14,710 Și se spune că poate lovi Y pentru Da, de economisire, N pentru Nu. 81 00:04:14,710 --> 00:04:17,190 Deci, asta e Nano. 82 00:04:17,190 --> 00:04:22,860 >> Vim și Emacs tind să fie puțin mai complicată și copleșitoare. 83 00:04:22,860 --> 00:04:28,840 Dar aveți posibilitatea să te obișnuiești cu el, și apoi să-ți placă. 84 00:04:28,840 --> 00:04:30,590 Deci, asta e. 85 00:04:30,590 --> 00:04:31,720 >> JOSEPH: Nu e nevoie să faci asta. 86 00:04:31,720 --> 00:04:31,840 >> ROB: Da. 87 00:04:31,840 --> 00:04:37,510 Sunteți liber să utilizeze gedit pentru restul semestrului. 88 00:04:37,510 --> 00:04:40,630 Astfel încât orice întrebări legate de aparat? 89 00:04:40,630 --> 00:04:42,820 Sau aveți vreo idee cu privire la ce altceva trebuie să fie vorbit despre despre 90 00:04:42,820 --> 00:04:43,610 aparat? 91 00:04:43,610 --> 00:04:43,996 Da. 92 00:04:43,996 --> 00:04:47,720 >> SPEAKER 1: Când SSHed în ta lucru, a fost Crimson parola? 93 00:04:47,720 --> 00:04:48,390 >> ROB: Da. 94 00:04:48,390 --> 00:04:50,170 Parola pentru destul de mult tot ceea ce în aparat se întâmplă 95 00:04:50,170 --> 00:04:52,473 pentru a fi Crimson. 96 00:04:52,473 --> 00:04:56,517 >> SPEAKER 2: Instalarea ca un IDE reală pe aparatul, va funcționa? 97 00:04:56,517 --> 00:04:59,200 98 00:04:59,200 --> 00:05:07,290 >> ROB: Îmi imaginez Eclipse are un Versiune Fedora, caz în care, da, 99 00:05:07,290 --> 00:05:08,420 poți face asta. 100 00:05:08,420 --> 00:05:10,875 Probabil că nu e într-adevăr merită. 101 00:05:10,875 --> 00:05:11,742 >> SPEAKER 2: OK. 102 00:05:11,742 --> 00:05:15,924 Deci, este, probabil, mai ușor dacă am vrut să folosesc Eclipse, trebuie doar să utilizați nativ și 103 00:05:15,924 --> 00:05:17,646 apoi încărcați până la - 104 00:05:17,646 --> 00:05:21,090 >> ROB: Oh, care este, de asemenea, probabil, mai ușor. 105 00:05:21,090 --> 00:05:24,046 Dar puteți să-l de lucru în cadrul aparatului. 106 00:05:24,046 --> 00:05:27,740 >> JOSEPH: Și pentru aparatul de fotografiat, întrebarea a fost, se poate instala un alt 107 00:05:27,740 --> 00:05:29,490 IDE interiorul aparatului? 108 00:05:29,490 --> 00:05:31,520 >> ROB: Eclipse a fi o exemplu de un IDE. 109 00:05:31,520 --> 00:05:34,800 110 00:05:34,800 --> 00:05:36,050 Orice alte întrebări Appliance? 111 00:05:36,050 --> 00:05:38,250 112 00:05:38,250 --> 00:05:38,680 Bine. 113 00:05:38,680 --> 00:05:44,920 >> Deci, vom trece acum la linia de comandă lucruri legate de interfață, așa CLI. 114 00:05:44,920 --> 00:05:47,990 Și din nou, eu sunt doar de gând să lucreze în aici, pentru că aceasta este identică cu 115 00:05:47,990 --> 00:05:52,780 de lucru într-o fereastră terminal în cadrul aparatului. 116 00:05:52,780 --> 00:05:54,160 Cum că font căutați? 117 00:05:54,160 --> 00:05:55,970 Este suficient de mare? 118 00:05:55,970 --> 00:05:57,000 Bine. 119 00:05:57,000 --> 00:06:02,480 >> Deci, există o mulțime de comenzi care tu ar trebui sa destul de folosit pentru 120 00:06:02,480 --> 00:06:04,490 de-a lungul semestrului. 121 00:06:04,490 --> 00:06:09,480 Mare pentru doi navigarea sunt ls, lista fișierele din acest director; și 122 00:06:09,480 --> 00:06:11,380 cd, așa schimba directorul. 123 00:06:11,380 --> 00:06:18,390 Deci, eu pot schimba pe desktop și apoi un model foarte comun este cd la un 124 00:06:18,390 --> 00:06:22,550 director și imediat ls ceea ce este în directorul. 125 00:06:22,550 --> 00:06:25,540 >> Oamenii, de asemenea, uneori, nu-și dau seama că finalizarea Tab este un lucru. 126 00:06:25,540 --> 00:06:28,370 Cd așa cum ar fi, VH, iar apoi m-am lovit Tab. 127 00:06:28,370 --> 00:06:30,790 Aproape niciodată nu am tip de întregul lucru. 128 00:06:30,790 --> 00:06:32,920 Și apoi, dacă am ține lovind Tab din nou, acesta va automat 129 00:06:32,920 --> 00:06:33,670 începe listarea pentru mine. 130 00:06:33,670 --> 00:06:37,000 Deci, eu pot cd vhosts, local host. 131 00:06:37,000 --> 00:06:39,880 Și care este doar de gând să - 132 00:06:39,880 --> 00:06:43,380 în cazul în care nu ați auzit termenul de înainte, directorul este doar un alt cuvânt 133 00:06:43,380 --> 00:06:45,170 pentru dosar. 134 00:06:45,170 --> 00:06:49,930 Deci, acum, dacă vedeți - 135 00:06:49,930 --> 00:06:51,810 Să aducem că în partea de sus. 136 00:06:51,810 --> 00:06:55,380 >> Deci, acum, dacă vedeți în paranteze, te a se vedea mic tilda, slash, vhost, 137 00:06:55,380 --> 00:06:56,810 slash, local host. 138 00:06:56,810 --> 00:07:00,040 Deci tilda, care se referă la directorul meu acasă. 139 00:07:00,040 --> 00:07:03,090 Este un director esti în când SSH inch 140 00:07:03,090 --> 00:07:05,660 Este directorul sunteți în când vă deschideți un terminal. 141 00:07:05,660 --> 00:07:08,650 Este cazul în care începe. 142 00:07:08,650 --> 00:07:13,110 Și așa că eu sunt în interiorul directorul meu home, și eu sunt în interiorul a vhost 143 00:07:13,110 --> 00:07:14,475 director în interiorul directorului casa mea. 144 00:07:14,475 --> 00:07:19,670 Și atunci eu sunt în interiorul de la nivel local gazdă director interiorul asta. 145 00:07:19,670 --> 00:07:23,740 >> Astfel încât alte lucruri utile cu cd - 146 00:07:23,740 --> 00:07:29,220 sau bine, în general, așa dot întotdeauna se referă la directorul curent. 147 00:07:29,220 --> 00:07:31,130 Cd, punct este o comandă destul de lipsit de valoare. 148 00:07:31,130 --> 00:07:35,150 Dar care se schimbă la directorul curent. 149 00:07:35,150 --> 00:07:38,230 O una mai util din punct de vedere cd este punct, punct, care este 150 00:07:38,230 --> 00:07:40,220 du-te în sus un director. 151 00:07:40,220 --> 00:07:43,360 >> Și rețineți că acestea - 152 00:07:43,360 --> 00:07:48,610 Vreau să spun alias-uri, dar acestea simboluri, punct, și dot, dot, cei de muncă 153 00:07:48,610 --> 00:07:51,740 pentru destul de mult orice comanda esti O să fie de gândire de funcționare. 154 00:07:51,740 --> 00:07:55,370 Deci, cum ar fi CD-ul este, probabil, în cazul în care veți fi folosind cele mai multe, dar acestea nu sunt 155 00:07:55,370 --> 00:07:56,780 lucruri pe care doar cd înțelege. 156 00:07:56,780 --> 00:07:59,980 Este destul de mult ceva întregul linie de comandă înțelege. 157 00:07:59,980 --> 00:08:01,932 O mulțime de programe de înțeles punct și dot, dot. 158 00:08:01,932 --> 00:08:04,830 159 00:08:04,830 --> 00:08:09,090 >> Astfel încât celelalte utile - cd, bord. 160 00:08:09,090 --> 00:08:13,460 Astfel că este de gând să-mi aducă la Ultima director care am fost inch 161 00:08:13,460 --> 00:08:15,980 Așa că, uneori, voi face ceva de genul, oh, eu lucrez aici. 162 00:08:15,980 --> 00:08:21,110 Și văd o eroare cu ceva, și Mă duc să-l investigheze de a merge la 163 00:08:21,110 --> 00:08:24,020 unele directorul aleatoriu undeva. 164 00:08:24,020 --> 00:08:25,260 Și nu știu dacă-l voi lasă-mă acolo. 165 00:08:25,260 --> 00:08:25,720 Acesta va. 166 00:08:25,720 --> 00:08:27,615 Deci eu fac ce vreau eu în acest director. 167 00:08:27,615 --> 00:08:28,950 Bla, bla, bla, bla, bla. 168 00:08:28,950 --> 00:08:31,770 Și am fost ca, bine, vreau pentru a merge înapoi de unde am fost. 169 00:08:31,770 --> 00:08:34,490 cd, liniuță, și mă aduce înapoi. 170 00:08:34,490 --> 00:08:39,970 >> Așa că am de gând să arunce o mulțime dintre acestea la tine azi. 171 00:08:39,970 --> 00:08:43,730 Nu mă aștept să memoreze toate. 172 00:08:43,730 --> 00:08:46,170 Este un fel de doar știu că ele există. 173 00:08:46,170 --> 00:08:48,690 Si apoi, mai târziu, pe când esti ca, hmm, vreau să mă întorc la 174 00:08:48,690 --> 00:08:51,870 director care am fost doar la, oh, așteptați, există ceva de genul asta. 175 00:08:51,870 --> 00:08:53,980 Nu trebuie doar să tastați Întreg directorul nou. 176 00:08:53,980 --> 00:08:56,090 >> JOSEPH: Și în cele din urmă va fi doar le folosesc de peste si peste din nou, și 177 00:08:56,090 --> 00:08:57,830 acesta va deveni memorie musculare. 178 00:08:57,830 --> 00:09:00,090 >> ROB: Da. 179 00:09:00,090 --> 00:09:02,930 Deci, cum am spus mai înainte, că tilda este directorul tau de casa. 180 00:09:02,930 --> 00:09:04,820 Deci pot cd, tilda. 181 00:09:04,820 --> 00:09:07,280 Dar eu nici măcar nu trebuie să face că, dacă eu doar - 182 00:09:07,280 --> 00:09:09,760 Voi reveni la directorul astfel nu este un exemplu rost. 183 00:09:09,760 --> 00:09:14,560 Dar dacă am face cd, care este, de asemenea, același ca, du-te la directorul meu acasă. 184 00:09:14,560 --> 00:09:18,380 185 00:09:18,380 --> 00:09:19,880 Eu fac de comandă, K. 186 00:09:19,880 --> 00:09:24,015 >> JOSEPH: Puteți introduce, de asemenea, clar, cuvânt, și ar trebui să-l clar. 187 00:09:24,015 --> 00:09:28,650 >> ROB: Și cred că, de asemenea, de control, L, de asemenea, o face. 188 00:09:28,650 --> 00:09:29,690 Deci, o mulțime de moduri diferite. 189 00:09:29,690 --> 00:09:34,070 Cred că există unele diferențe în cazul în care clar și control, L va fi doar 190 00:09:34,070 --> 00:09:37,280 într-adevăr se împinge în partea de sus și Eu pot derula în continuare înapoi. 191 00:09:37,280 --> 00:09:40,580 Comandă, K distruge literalmente tot, și tu 192 00:09:40,580 --> 00:09:42,960 nu se poate derula în sus. 193 00:09:42,960 --> 00:09:45,530 Cel puțin, asta e cum funcționează în iTerm2. 194 00:09:45,530 --> 00:09:48,690 Nu știu cât de alte lucruri - 195 00:09:48,690 --> 00:09:49,360 oh. 196 00:09:49,360 --> 00:09:55,450 >> Cu SSHing, așa că, dacă sunteți pe Windows, ai de gând să aibă de a descărca PuTTY 197 00:09:55,450 --> 00:10:02,360 în scopul de a SSH, deoarece Windows nu are au ca un instrument de built-in SSH. 198 00:10:02,360 --> 00:10:06,150 De la Mac-uri, puteți doar SSH direct de la o fereastră terminal. 199 00:10:06,150 --> 00:10:08,755 200 00:10:08,755 --> 00:10:09,690 OK. 201 00:10:09,690 --> 00:10:11,840 Întrebări? 202 00:10:11,840 --> 00:10:19,260 >> Cu E, așa ceva pentru a obține utilizate pentru a cu cele mai multe dintre aceste comenzi este - 203 00:10:19,260 --> 00:10:20,060 bine, voi face doar unul. 204 00:10:20,060 --> 00:10:21,310 Ls, linie, l. 205 00:10:21,310 --> 00:10:26,330 Deci linie, l este ceea ce vom pentru a apela un steag pentru ls. 206 00:10:26,330 --> 00:10:30,770 Și o mulțime de aceste comenzi au steaguri pe care le puteți trece la ei. 207 00:10:30,770 --> 00:10:35,020 Deci, în acest caz, linie, l este un steag care se spune să-mi dea un complet 208 00:10:35,020 --> 00:10:37,850 lista cu toate informațiile din aceste fișiere. 209 00:10:37,850 --> 00:10:44,790 >> Asa ca am vedea aici că desktop a fost modificat la 30 iulie, la 12:54. 210 00:10:44,790 --> 00:10:47,160 Download-uri a fost modificat la 06 septembrie. 211 00:10:47,160 --> 00:10:52,350 Acestea sunt dimensiunea actuală și bytes din aceste directoare. 212 00:10:52,350 --> 00:10:54,412 Nu trebuie să înțeleagă toate acestea. 213 00:10:54,412 --> 00:11:00,380 >> Chestia asta pe partea stângă, aceste lui drwx, care vor deveni mult mai relevantă 214 00:11:00,380 --> 00:11:02,290 mai târziu, atunci când aveți de a face cu - 215 00:11:02,290 --> 00:11:05,900 care are de a face cu care are permisiuni să se uite la aceste fișiere. 216 00:11:05,900 --> 00:11:09,880 Și așa că, dacă nu a fost singurul utilizator pe acest computer, v-ar putea să 217 00:11:09,880 --> 00:11:13,345 să zicem, OK, eu ar trebui să fie singurul a permis să se uite la acest fișier sau sunt 218 00:11:13,345 --> 00:11:14,870 va permite toată lumea să se uite la acest dosar. 219 00:11:14,870 --> 00:11:17,710 Deci, cineva de pe computerul meu se pot uita la acest fișier. 220 00:11:17,710 --> 00:11:22,190 221 00:11:22,190 --> 00:11:25,600 Nici măcar nu știu ce acest lucru - ceea ce face acest lucru? 222 00:11:25,600 --> 00:11:26,840 >> JOSEPH: Eu nu sunt destul de sigur, de fapt. 223 00:11:26,840 --> 00:11:27,705 >> ROB: Nu am idee. 224 00:11:27,705 --> 00:11:30,530 >> JOSEPH: Dar dacă nu știți, există o comandă de ajutor pe care le puteți utiliza 225 00:11:30,530 --> 00:11:31,680 să-ți spun ce înseamnă puterea. 226 00:11:31,680 --> 00:11:33,780 Și dacă tastați în om inainte de comanda - 227 00:11:33,780 --> 00:11:35,000 așa M-A-N. ROB: Man. 228 00:11:35,000 --> 00:11:37,690 Deci, omul este un alt unul care este foarte util. 229 00:11:37,690 --> 00:11:39,540 Și om, ls. 230 00:11:39,540 --> 00:11:47,320 Deci, paginile man, ei au atât comenzile pe care ai de gând să fie utilizând 231 00:11:47,320 --> 00:11:50,330 la linia de comandă, și au, de asemenea, funcții care vor fi relevante 232 00:11:50,330 --> 00:11:52,530 cu C. Astfel, puteți omul - 233 00:11:52,530 --> 00:11:53,720 și am ignorat 3. 234 00:11:53,720 --> 00:11:57,410 Dar omul 3 printf va aduce versiunii C de printf. 235 00:11:57,410 --> 00:12:01,030 Dar dacă am face om printf, aceasta este va aduce printf comandă 236 00:12:01,030 --> 00:12:03,540 care se întâmplă de la linia de comandă. 237 00:12:03,540 --> 00:12:05,730 >> Deci omul, ls. 238 00:12:05,730 --> 00:12:09,030 Paginile de manual pot fi destul de copleșitoare. 239 00:12:09,030 --> 00:12:12,770 Aici, deși, veți vedea această listare de toate aceste steaguri care ls 240 00:12:12,770 --> 00:12:14,300 înțelege. 241 00:12:14,300 --> 00:12:17,876 Deci, dacă am merge la bord, l, și - 242 00:12:17,876 --> 00:12:19,300 Mă duc să arunc la tine. 243 00:12:19,300 --> 00:12:23,050 Dar, în scopul de a căuta, vrei a lovit în primul rând la întrebarea 244 00:12:23,050 --> 00:12:24,780 marca sau butonul de slash. 245 00:12:24,780 --> 00:12:26,040 Așa slash. 246 00:12:26,040 --> 00:12:29,000 >> Și atunci pot căuta pentru ce vreau eu. 247 00:12:29,000 --> 00:12:33,780 Așa că am de gând să taie de bord, l. 248 00:12:33,780 --> 00:12:35,110 Și acolo a fost. 249 00:12:35,110 --> 00:12:37,450 Asa ca foloseste un format de listare lung. 250 00:12:37,450 --> 00:12:40,060 Asta nu ajuta-mi dau seama ce coloana special a însemnat, dar am 251 00:12:40,060 --> 00:12:44,480 asuma undeva în aici s-ar explica faptul că. 252 00:12:44,480 --> 00:12:48,740 Deci, utilizarea paginile de manual pentru orice comanda pe care nu le înțelegeți imediat. 253 00:12:48,740 --> 00:12:51,080 >> Sunt destul de sigur că poți chiar om, omule. 254 00:12:51,080 --> 00:12:53,070 O interfață de on-line manuale de referință. 255 00:12:53,070 --> 00:12:57,700 256 00:12:57,700 --> 00:13:03,570 Oh, o ultima care-i poate ușor ls relevante, linie, o. 257 00:13:03,570 --> 00:13:08,490 Deci, observa dacă am face ls, Primesc aceste cinci dosare. 258 00:13:08,490 --> 00:13:11,480 Dacă fac ls, zdrobi, o, eu a obține o mult mai multe fișiere. 259 00:13:11,480 --> 00:13:15,350 Deci, lucrul în comun între toate acestea fișiere noi este punctul în prealabil. 260 00:13:15,350 --> 00:13:21,220 >> Deci, convenția este că un fișier care începe cu un punct este ascuns. 261 00:13:21,220 --> 00:13:25,300 Deci, nu doriți să vedeți că fișier, Nu vreau să-l aibă pui cu 262 00:13:25,300 --> 00:13:26,750 listarea dvs. director. 263 00:13:26,750 --> 00:13:30,020 Este doar atunci când vă întreb în mod explicit, în regulă, ls, linie, o, arată-mi. 264 00:13:30,020 --> 00:13:32,830 A standuri pentru toate fișierele, inclusiv cele ascunse. 265 00:13:32,830 --> 00:13:37,260 266 00:13:37,260 --> 00:13:39,270 Deci, alte comenzi. 267 00:13:39,270 --> 00:13:41,323 Oh, întrebări la acel moment? 268 00:13:41,323 --> 00:13:41,746 Da. 269 00:13:41,746 --> 00:13:45,914 >> SPEAKER 3: Când faci ls, o, ce-i punct, punctul? 270 00:13:45,914 --> 00:13:46,870 >> ROB: Oh. 271 00:13:46,870 --> 00:13:48,780 Deci, asta este ceea ce am vorbit despre. 272 00:13:48,780 --> 00:13:50,890 Este același lucru în cazul în care Pot place cd, punct, punct. 273 00:13:50,890 --> 00:13:56,790 Deci, punct de vedere tehnic, punct și punct, punct sunt fișiere care există în fiecare 274 00:13:56,790 --> 00:14:03,620 directorul unde fișierul punct se referă la directorul curent. 275 00:14:03,620 --> 00:14:06,930 Deci, dacă am cd, punct, eu sunt doar de gând pentru a rămâne în directorul. 276 00:14:06,930 --> 00:14:10,870 Și dot, dot se referă întotdeauna la anterior directorul de un nivel mai sus. 277 00:14:10,870 --> 00:14:18,200 Deci, dacă mă duc în busteni si LS, bord, al, Voi vedea punct, punct. cd la dot, dot 278 00:14:18,200 --> 00:14:20,390 ma aduce la directorul anterior. 279 00:14:20,390 --> 00:14:24,530 280 00:14:24,530 --> 00:14:25,780 Da. 281 00:14:25,780 --> 00:14:27,160 282 00:14:27,160 --> 00:14:28,110 OK. 283 00:14:28,110 --> 00:14:33,070 >> Deci, un alt foarte important comandă este rm. 284 00:14:33,070 --> 00:14:35,650 Deci, asta e ceea ce vom de a utiliza pentru a elimina. 285 00:14:35,650 --> 00:14:38,100 Și lasă-mă de fapt face o altă comandă întâi. 286 00:14:38,100 --> 00:14:39,610 Așa mkdir. 287 00:14:39,610 --> 00:14:42,770 Mkdir este modul în care se poate crea directoare. 288 00:14:42,770 --> 00:14:47,530 Și voi crea un director temporar și du-te în acel director temporar. 289 00:14:47,530 --> 00:14:49,590 Și, cum era de asteptat, e gol. 290 00:14:49,590 --> 00:14:53,680 Dar dacă ls I, linie, o, eu încă mai au dot și dot, dot, deoarece punct se referă la 291 00:14:53,680 --> 00:14:54,480 directorul curent. 292 00:14:54,480 --> 00:14:56,170 Și punct, punct se referă la directorul anterior. 293 00:14:56,170 --> 00:14:58,700 Iar cei care vor exista întotdeauna, indiferent de directorul în care vă aflați 294 00:14:58,700 --> 00:15:01,910 295 00:15:01,910 --> 00:15:09,010 >> Și aceasta este o cu totul inutil comandă, dar atinge. 296 00:15:09,010 --> 00:15:11,880 Eu doar l utilizați, pentru că e o modalitate ușoară de a crea fișiere. 297 00:15:11,880 --> 00:15:16,180 Deci atinge o, atinge b, c atinge este doar va crea trei fișiere numit-o, 298 00:15:16,180 --> 00:15:17,845 b și c, care sunt complet goale. 299 00:15:17,845 --> 00:15:20,450 300 00:15:20,450 --> 00:15:24,980 Astfel încât punctul de a-mi crea cele din Primul loc este doar pentru ca RM este 301 00:15:24,980 --> 00:15:26,250 cum le putem elimina. 302 00:15:26,250 --> 00:15:27,850 Deci rm, o. 303 00:15:27,850 --> 00:15:30,960 O să mă întrebi pe mine, scoateți regulat gol fișier o? 304 00:15:30,960 --> 00:15:33,170 Și apoi voi spune da. 305 00:15:33,170 --> 00:15:39,090 >> Deci, dacă eu știu sigur că vreau să șterge acel fișier, fără a fi nevoie să fie 306 00:15:39,090 --> 00:15:44,500 vi se solicită, scoateți fișier gol regulat?, apoi rm, liniuță, F va fi 307 00:15:44,500 --> 00:15:48,230 steag care spune, forța elimină, fără chiar ma determinat, oh, esti 308 00:15:48,230 --> 00:15:49,710 Sigur doriți să ștergeți fișierul? 309 00:15:49,710 --> 00:15:50,810 Da, sunt sigur. 310 00:15:50,810 --> 00:15:56,050 Deci rm, liniuță, fb vor doar face fără a cere. 311 00:15:56,050 --> 00:15:57,950 >> Deci, haideți să facă unele mai multe directoare. 312 00:15:57,950 --> 00:16:03,670 mkdir, TMP2, CD, TMP2, atinge o, atingeți b. 313 00:16:03,670 --> 00:16:04,300 OK. 314 00:16:04,300 --> 00:16:08,180 Deci, acum vreau să eliminați TMP2 ca un director. 315 00:16:08,180 --> 00:16:10,316 TMP2 așa rm. 316 00:16:10,316 --> 00:16:12,920 Nu se poate elimina TMP2, acesta este un director. 317 00:16:12,920 --> 00:16:21,370 Deci, problema aici este că RM nu are funcționeze imediat pe directoare. 318 00:16:21,370 --> 00:16:26,530 Este menit doar pentru fișiere, cum ar fi fișiere non-director. 319 00:16:26,530 --> 00:16:30,800 >> Și deci ce putem face aici este rm, bord, r.. 320 00:16:30,800 --> 00:16:35,160 Care vine de la recursiv, care ar putea Nu înseamnă nimic pentru tine încă. 321 00:16:35,160 --> 00:16:38,280 Dar atunci când vei ajunge la recursivitate, va spun mai mult. 322 00:16:38,280 --> 00:16:43,540 Deci rm, bord, r, TMP2 se va recursiv intra în acel director. 323 00:16:43,540 --> 00:16:45,540 Astfel coborî în directorul TMP2? 324 00:16:45,540 --> 00:16:47,330 Da, să mergem în asta. 325 00:16:47,330 --> 00:16:49,360 Nu vrem să eliminați TMP2 / a? 326 00:16:49,360 --> 00:16:49,745 Da. 327 00:16:49,745 --> 00:16:51,830 Nu vrem să eliminați TMP2 / b? 328 00:16:51,830 --> 00:16:52,840 Da. 329 00:16:52,840 --> 00:16:55,170 Acum vrem să eliminați TMP2 director? 330 00:16:55,170 --> 00:16:56,040 Da. 331 00:16:56,040 --> 00:16:58,410 Și astfel acum directorul și tot ceea ce în interiorul 332 00:16:58,410 --> 00:16:59,660 din acesta a fost îndepărtat. 333 00:16:59,660 --> 00:17:02,850 334 00:17:02,850 --> 00:17:07,250 >> Există un punct de vedere tehnic rmdir comandă pe care le puteți folosi pentru a elimina 335 00:17:07,250 --> 00:17:11,670 directoare, dar ea funcționează doar pe directoare goale oricum. 336 00:17:11,670 --> 00:17:14,109 Și pentru a vedea că, hai să face din nou mkdir, TMP2. 337 00:17:14,109 --> 00:17:15,940 TMP2, atinge o. 338 00:17:15,940 --> 00:17:16,800 OK. 339 00:17:16,800 --> 00:17:22,770 Deci, dacă am încerca să eliminați dirtmp2, acesta va spune, directorul nu este gol. 340 00:17:22,770 --> 00:17:29,540 Așa că am destul de mult nu folosiți niciodată Eliminare comanda dir oricum, pentru că RM, liniuță, 341 00:17:29,540 --> 00:17:35,140 r va lucra pe directoare goale și directoarele non-goale. 342 00:17:35,140 --> 00:17:37,760 >> Și, de asemenea, dacă nu vreau să aibă de a du-te prin faptul că întregul proces de 343 00:17:37,760 --> 00:17:40,720 descendent în directorul și îndepărtarea fiecare dosar în parte, rm, 344 00:17:40,720 --> 00:17:44,190 bord, rf, TMP2. 345 00:17:44,190 --> 00:17:45,670 Și acum a dispărut. 346 00:17:45,670 --> 00:17:51,220 >> Ceva să fie atenți este despre rm, bord, rf. 347 00:17:51,220 --> 00:17:53,660 Și-l sperie pe mine să-l chiar de tip, pentru că dacă am accidental 348 00:17:53,660 --> 00:17:55,090 lovi Enter sau ceva. 349 00:17:55,090 --> 00:18:02,735 Deci rm, bord, rf, tilda ar fi, fără ma determinat, f nu cere 350 00:18:02,735 --> 00:18:05,670 mă, se va elimina în mod automat întreaga mea directorul home și 351 00:18:05,670 --> 00:18:06,780 totul în ea. 352 00:18:06,780 --> 00:18:11,460 Deci, ați putea crede că este un lucru stupid de a face. 353 00:18:11,460 --> 00:18:12,830 Și bine, este. 354 00:18:12,830 --> 00:18:18,600 >> Dar se poate întâmpla foarte ușor de accident dacă, să zicem, mi-am dorit pentru a elimina 355 00:18:18,600 --> 00:18:21,640 slash mea, director vhost. 356 00:18:21,640 --> 00:18:26,610 Și doar în dactilografiere rapid, Eu fac acest lucru accidental. 357 00:18:26,610 --> 00:18:31,880 Care va elimina recursiv atât meu directorul home și directorul vhost 358 00:18:31,880 --> 00:18:35,450 în acest director special, că doar Nu se întâmplă să existe chiar acum. 359 00:18:35,450 --> 00:18:39,520 Dar acest lucru ar elimina încă mea de director întreg acasă. 360 00:18:39,520 --> 00:18:43,090 Cel puțin de a nu avea un f, mi-ar cere în primul rând. 361 00:18:43,090 --> 00:18:45,670 Și mi-ar fi ca, oh, nu, eu Nu vreau să fac asta. 362 00:18:45,670 --> 00:18:50,570 Dar oamenii, slash, inclusiv mi-au tendința de a intra în 363 00:18:50,570 --> 00:18:53,090 obiceiul de a întotdeauna rf-ing. 364 00:18:53,090 --> 00:18:58,713 Chiar și fișiere obișnuite pe care le pot doar RM, c, am tendința de a doar rm, bord, rf, c. 365 00:18:58,713 --> 00:19:01,330 Trebuie doar să fiți atenți atunci când sunteți rf-ing. 366 00:19:01,330 --> 00:19:03,160 >> SPEAKER 4: Ce face C? 367 00:19:03,160 --> 00:19:11,570 >> ROB: C este Vorbesc despre acel fișier C în acest director, care rm, c. 368 00:19:11,570 --> 00:19:15,730 >> JOSEPH: Și mai periculos, dacă utilizați o stea, se referă la tot ceea ce în 369 00:19:15,730 --> 00:19:16,450 directorul. 370 00:19:16,450 --> 00:19:20,040 Deci, ce am de obicei tendința de a face este de voi du-te într-un director și vreau să 371 00:19:20,040 --> 00:19:21,510 eliminați toate fișierele de acolo. 372 00:19:21,510 --> 00:19:23,640 Deci rm, bord, rf, stele. 373 00:19:23,640 --> 00:19:25,700 >> ROB: Da. 374 00:19:25,700 --> 00:19:26,780 Rm, bord, rf, stele. 375 00:19:26,780 --> 00:19:29,530 >> JOSEPH: Și dacă nu ești atent ceea ce directorul esti in - 376 00:19:29,530 --> 00:19:33,340 Eu nu am fost în temp, dar am fost accidental în directorul meu home, 377 00:19:33,340 --> 00:19:35,450 atunci voi scoate totul în directorul meu acasă. 378 00:19:35,450 --> 00:19:39,095 Și am făcut de fapt că, înainte, și Cred că ați făcut acest lucru înainte de sau 379 00:19:39,095 --> 00:19:40,640 Jay a făcut asta înainte. 380 00:19:40,640 --> 00:19:42,480 >> ROB: Am scos accidental - 381 00:19:42,480 --> 00:19:44,480 astfel ignora faptul că comanda pentru un pic. 382 00:19:44,480 --> 00:19:45,800 >> JOSEPH: Nu este distractiv. 383 00:19:45,800 --> 00:19:52,650 >> ROB: Deci, în directorul bin slash este o grămadă de fișiere binare în cazul în care nu va mai 384 00:19:52,650 --> 00:19:54,840 fi cele familiare, cum ar fi zăngănit. 385 00:19:54,840 --> 00:20:00,740 Ei bine, zăngăni și, practic, toate acestea lucruri pe care eu sunt rulează la comanda 386 00:20:00,740 --> 00:20:02,060 linie sunt în acest director bin slash. 387 00:20:02,060 --> 00:20:03,090 >> JOSEPH: Ca ls este aici. 388 00:20:03,090 --> 00:20:06,285 >> ROB: Deci dot, slash, ls-ar lista acest director. 389 00:20:06,285 --> 00:20:08,120 >> JOSEPH: Rm este, de asemenea, în acest director. 390 00:20:08,120 --> 00:20:12,770 >> ROB: Am rm accidental, rf-ed bin, care a eliminat orice comanda am putut 391 00:20:12,770 --> 00:20:14,380 poate dori vreodată. 392 00:20:14,380 --> 00:20:18,085 Pe care apoi am reinstala un aparat nou la acel moment. 393 00:20:18,085 --> 00:20:20,170 >> JOSEPH: Deci, să fie foarte atenți atunci când utilizați această comandă. 394 00:20:20,170 --> 00:20:21,120 >> Audiența: [inaudibil]? 395 00:20:21,120 --> 00:20:22,640 >> ROB: Da. 396 00:20:22,640 --> 00:20:24,135 Acesta este, de asemenea, un obicei prost de a intra in. 397 00:20:24,135 --> 00:20:27,920 398 00:20:27,920 --> 00:20:30,170 Dacă observați, eu sunt acum - 399 00:20:30,170 --> 00:20:33,580 ei bine, nu se poate observa, dar meu de zoom-in, poate poate. 400 00:20:33,580 --> 00:20:35,360 Deci, eu sunt acum root @ aparat. 401 00:20:35,360 --> 00:20:39,790 Deci, jharvard este utilizatorul vrem să fie întotdeauna folosind. 402 00:20:39,790 --> 00:20:43,820 Root este utilizatorul care are permisiunea de de a face absolut nimic. 403 00:20:43,820 --> 00:20:50,260 >> Așa observa atunci când sunt jharvard, dacă am încerca să cd - 404 00:20:50,260 --> 00:20:52,461 ceea ce este un director care? 405 00:20:52,461 --> 00:20:53,980 Oh, rădăcină este un exemplu bun. 406 00:20:53,980 --> 00:20:54,950 Astfel cd, rădăcină. 407 00:20:54,950 --> 00:20:56,030 Permission denied. 408 00:20:56,030 --> 00:21:00,060 Pentru că dacă ne uităm la această listare - 409 00:21:00,060 --> 00:21:02,410 și din nou, nu trebuie să înțelege în totalitate acest lucru. 410 00:21:02,410 --> 00:21:09,210 Dar aceste trei linii spun care nu lasa nici un alt 411 00:21:09,210 --> 00:21:11,120 utilizator în acest director. 412 00:21:11,120 --> 00:21:14,540 Și directorul se întâmplă la fie deținute de root. 413 00:21:14,540 --> 00:21:20,310 >> Deci, faptul că am jharvard și nu unul care nu este rădăcină este permis în 414 00:21:20,310 --> 00:21:23,490 acest director, ceea ce înseamnă că sunt de gând pentru a obține permisiunea de a negat atunci când am 415 00:21:23,490 --> 00:21:25,160 încercați să cd în el. 416 00:21:25,160 --> 00:21:31,370 Așa că atunci când eu sunt rădăcină, am permisiunea de a face absolut orice, inclusiv 417 00:21:31,370 --> 00:21:34,660 șterge fișiere esențiale aparatului și 418 00:21:34,660 --> 00:21:36,640 distruge întregul lucru. 419 00:21:36,640 --> 00:21:41,240 >> Deci, este un obicei prost de a intra in doar rătăcire în jurul dvs. 420 00:21:41,240 --> 00:21:43,650 sistem de operare ca root. 421 00:21:43,650 --> 00:21:46,520 Eu o fac oricum. 422 00:21:46,520 --> 00:21:48,710 Întrebări? 423 00:21:48,710 --> 00:21:52,230 Și eu voi ieși din rădăcină, rămâne ca jharvard. 424 00:21:52,230 --> 00:21:54,510 OK. 425 00:21:54,510 --> 00:21:55,820 >> Comenzi mai relevante. 426 00:21:55,820 --> 00:22:03,975 Deci, merge înapoi în temp nostru, mv comanda standuri pentru mutare. 427 00:22:03,975 --> 00:22:05,450 Puteți muta o. 428 00:22:05,450 --> 00:22:07,610 Acum vrem să-i spunem b, așa că acum se numește b. 429 00:22:07,610 --> 00:22:10,650 Sau poate ne-o dorim pentru a muta b sus un director. 430 00:22:10,650 --> 00:22:12,730 Deci, acum gol acest director a lui. 431 00:22:12,730 --> 00:22:15,410 Mă voi întoarce la directorul meu acasă, și vom vedea că b este aici, pentru că 432 00:22:15,410 --> 00:22:19,230 directorul acasă a fost un director de la directorul care b au fost inch 433 00:22:19,230 --> 00:22:24,710 434 00:22:24,710 --> 00:22:26,580 >> Există, de asemenea, cp. 435 00:22:26,580 --> 00:22:33,210 Astfel cp este copia secțiune super, punct, text. 436 00:22:33,210 --> 00:22:35,750 Pot să-l sun e, punct, text. 437 00:22:35,750 --> 00:22:39,780 Acum avem amândoi secțiune super, punct, text, și s, punct, text. 438 00:22:39,780 --> 00:22:41,340 Aceasta funcționează, de asemenea, pe directoare. 439 00:22:41,340 --> 00:22:44,040 440 00:22:44,040 --> 00:22:46,560 I RF-ed-un singur fișier. 441 00:22:46,560 --> 00:22:48,200 Așa cp - 442 00:22:48,200 --> 00:22:51,710 bine, în primul rând haideți să încercăm cp, tmp, TMP2. 443 00:22:51,710 --> 00:22:53,220 Deci, omițând directorul tmp. 444 00:22:53,220 --> 00:22:57,440 Atât de asemănătoare cu rm, comportamentul implicit nu este de a lucra pe directoare. 445 00:22:57,440 --> 00:23:01,570 >> Și din nou, similar cu rm, implicit comportament - ei bine, obtinerea-l la locul de muncă 446 00:23:01,570 --> 00:23:04,230 cu directoare este o, linie-r departe. 447 00:23:04,230 --> 00:23:09,240 Astfel încât copia recursiv temperatura director în TMP2. 448 00:23:09,240 --> 00:23:13,700 Și astfel acum avem atât tmp și TMP2, și că nu este util, deoarece tmp 449 00:23:13,700 --> 00:23:16,814 a fost gol, în primul rând. 450 00:23:16,814 --> 00:23:18,660 TMP2. 451 00:23:18,660 --> 00:23:22,680 >> Acum, haideți să copiați tmp în TMP2. 452 00:23:22,680 --> 00:23:27,900 Și vedem că TMP2 are, de asemenea, fișierul o, pentru că directorul și 453 00:23:27,900 --> 00:23:32,220 tot în interiorul de care director a fost copiat. 454 00:23:32,220 --> 00:23:36,000 Și care poate fi oarecum de ajutor dacă, spune lucrați 455 00:23:36,000 --> 00:23:38,860 pe problema set unul - 456 00:23:38,860 --> 00:23:41,320 sau de fapt, seturi de probleme mai târziu sunt chiar mai important, pentru că nu există 457 00:23:41,320 --> 00:23:43,660 va fi o grămadă de fișiere și lucruri. 458 00:23:43,660 --> 00:23:47,010 >> Dar vrei doar să, pentru un split în al doilea rând, tu esti ca, bine, eu sunt 459 00:23:47,010 --> 00:23:50,210 O să încerc ceva diferit. 460 00:23:50,210 --> 00:23:57,860 Permiteți-mi doar să copiați întreaga mea pset1 director în pset1 de rezervă, astfel încât, dacă 461 00:23:57,860 --> 00:24:01,490 Ajung înșurubare lucrurile, eu pot du-te înapoi în directorul meu de rezervă. 462 00:24:01,490 --> 00:24:07,340 Există modalități mai adecvate de versiunilor backup codul dvs., dar 463 00:24:07,340 --> 00:24:10,610 aceasta este întotdeauna o modalitate rapidă de a face doar vă că aveți o copie a ceva 464 00:24:10,610 --> 00:24:11,860 care esti pe cale de a modifica. 465 00:24:11,860 --> 00:24:16,974 466 00:24:16,974 --> 00:24:27,090 >> Deci ecou este, de asemenea, o comandă unică, care fel de sillily va imprima doar la 467 00:24:27,090 --> 00:24:31,540 linie de comandă exact ceea ce ai vrut să ecou. 468 00:24:31,540 --> 00:24:32,680 Așa ecou hi. 469 00:24:32,680 --> 00:24:35,420 Vom imprima doar hi. 470 00:24:35,420 --> 00:24:38,030 Echo salut lume. 471 00:24:38,030 --> 00:24:39,800 Vom imprima Hello World. 472 00:24:39,800 --> 00:24:44,350 Care vine în utilizare atunci când începe combinarea comenzilor. 473 00:24:44,350 --> 00:24:48,300 >> Și din nou, nu mă aștept să complet înțelege acest lucru încă, dar e 474 00:24:48,300 --> 00:24:49,910 ceva pentru a vedea. 475 00:24:49,910 --> 00:24:52,470 Și apoi, dacă sunteți cu Google pentru exemple sau iti dai seama ce vrei să faci 476 00:24:52,470 --> 00:24:55,030 ceva, ea poate fi de ajutor. 477 00:24:55,030 --> 00:24:59,020 Deci, haideți, ca un exemplu, astfel încât ls, linie, l. 478 00:24:59,020 --> 00:25:01,160 Deci, aici am vedea de ieșire de ls, bord, l. 479 00:25:01,160 --> 00:25:06,560 Și eu spun, OK, vreau să stoca că într-un fișier. 480 00:25:06,560 --> 00:25:11,620 Toate din această ieșire de aici, vreau pentru a pune într-un fișier separat. 481 00:25:11,620 --> 00:25:16,080 >> Deci, acest mic mai mare simbol este ceea ce am de gând pentru a apela. 482 00:25:16,080 --> 00:25:18,570 Suntem redirecționarea de ieșire într-un fișier. 483 00:25:18,570 --> 00:25:21,680 Să numim bla fișier, pentru că asta e ceea ce am tendința să-i spun mereu. 484 00:25:21,680 --> 00:25:26,430 Deci, acum vedem că avem o fișier bla chiar aici. 485 00:25:26,430 --> 00:25:30,270 Și dacă am deschide, voi vedea că este exact output-ul comenzii 486 00:25:30,270 --> 00:25:31,990 că doar am fugit. 487 00:25:31,990 --> 00:25:36,020 Și în mod similar, se poate - 488 00:25:36,020 --> 00:25:41,260 dacă acest lucru a fost de ieșire într-un fișier, această se obține de intrare de la un fișier. 489 00:25:41,260 --> 00:25:45,790 490 00:25:45,790 --> 00:25:47,050 Ce este o comandă pe care I - 491 00:25:47,050 --> 00:25:49,620 >> JOSEPH: Cred că puteți utiliza mai puțin sau mai mult, probabil. 492 00:25:49,620 --> 00:25:53,031 >> ROB: Dar cum despre pur și simplu mai puțin bla? 493 00:25:53,031 --> 00:25:53,930 Nu știu. 494 00:25:53,930 --> 00:25:57,870 Dacă veniți în acest scenariu, cum ar fi există psets că este util pentru. 495 00:25:57,870 --> 00:25:59,950 >> JOSEPH: Puteți țeavă-l în ecou. 496 00:25:59,950 --> 00:26:02,920 Țeavă fișierul în ecou să-l văd. 497 00:26:02,920 --> 00:26:04,060 >> ROB: Este țeavă. 498 00:26:04,060 --> 00:26:04,860 >> JOSEPH: Îmi pare rău. 499 00:26:04,860 --> 00:26:06,190 >> ROB: În regulă. 500 00:26:06,190 --> 00:26:12,720 Deci, acest lucru este de ieșire într-un fișier. 501 00:26:12,720 --> 00:26:18,700 Aceasta este a obține textul din fișierul și-l predea la program. 502 00:26:18,700 --> 00:26:20,560 Și veți vedea, de asemenea, acest tip. 503 00:26:20,560 --> 00:26:24,410 Deci, aceasta este un fel de a face ambele simultan. 504 00:26:24,410 --> 00:26:28,310 Și, de fapt, voi introduce două noi comenzi doar pentru a face uz de ea. 505 00:26:28,310 --> 00:26:33,060 >> Istoria este o comandă la îndemână, care este doar va imprima o listă de 506 00:26:33,060 --> 00:26:34,940 nimic din ce-am alerga vreodată o linie de comandă. 507 00:26:34,940 --> 00:26:38,290 Așa că am vedea aici tot ce am fost difuzate tot acest timp. 508 00:26:38,290 --> 00:26:39,540 O mulțime de de ls. 509 00:26:39,540 --> 00:26:41,570 510 00:26:41,570 --> 00:26:48,470 >> Și o altă comandă utilă este grep care scopul său este de a căuta peste 511 00:26:48,470 --> 00:26:52,060 text, în căutarea de modele, ei bine, în căutarea pentru orice 512 00:26:52,060 --> 00:26:53,310 doriți să-l caute. 513 00:26:53,310 --> 00:26:59,770 Și astfel o utilizare la îndemână aici este, să zicem ne-o dorim pentru a apuca istoria. 514 00:26:59,770 --> 00:27:03,860 Și vreau să se uite pentru comenzile unde I - ceea ce este o 515 00:27:03,860 --> 00:27:05,000 un util să se uite pentru? 516 00:27:05,000 --> 00:27:06,898 >> JOSEPH: [inaudibil]? 517 00:27:06,898 --> 00:27:09,710 >> ROB: Sau să ne uităm doar pentru toți atinge, indiferent de motiv. 518 00:27:09,710 --> 00:27:13,850 Deci, asta este ceea ce se va arata. 519 00:27:13,850 --> 00:27:15,560 Și nu trebuie să complet să înțeleagă că. 520 00:27:15,560 --> 00:27:20,570 Dar ideea este aici, istorie dă aceeași ieșire a făcut-o aici 521 00:27:20,570 --> 00:27:25,030 în cazul în care se imprimă pe întregul istorie de tot ceea ce am alerga vreodată. 522 00:27:25,030 --> 00:27:27,030 Ne sunt apoi trece că - 523 00:27:27,030 --> 00:27:30,230 Deci, în loc de imprimare-l pe ecran, ne-o dorim pentru a trece că la 524 00:27:30,230 --> 00:27:34,640 grep comandă care este în căutarea pentru toate cazurile de atingere cuvânt. 525 00:27:34,640 --> 00:27:40,280 >> Și astfel, folosind această combinație a istorie instrumente și grep, eu pot vedea, OK, 526 00:27:40,280 --> 00:27:44,820 aici e toate comenzile am vreodată a alerga, și aici este una oarecum comun. 527 00:27:44,820 --> 00:27:45,510 Suntem în partea de jos. 528 00:27:45,510 --> 00:27:47,930 Și este, de asemenea, să-mi dea comanda Tocmai am fugit care a avut 529 00:27:47,930 --> 00:27:51,240 atingere cuvânt în ea. 530 00:27:51,240 --> 00:27:58,500 Dar conducta este un lucru destul de util pentru combinarea mai multor programe. 531 00:27:58,500 --> 00:28:04,670 Și, de fapt, este o scurtătură pentru lit istorie de ieșire mă la dosar bla, și 532 00:28:04,670 --> 00:28:10,190 permiteți-mi să grep folosind bla fișier ca ceea ce vreau să se uite peste. 533 00:28:10,190 --> 00:28:13,460 Deci, conducta este doar o comandă rapidă pentru cele două comenzi. 534 00:28:13,460 --> 00:28:13,950 Da. 535 00:28:13,950 --> 00:28:15,306 >> SPEAKER 4: [inaudibil]? 536 00:28:15,306 --> 00:28:16,556 >> ROB: Da. 537 00:28:16,556 --> 00:28:20,142 538 00:28:20,142 --> 00:28:21,110 Ce este - 539 00:28:21,110 --> 00:28:21,858 Oh. 540 00:28:21,858 --> 00:28:24,820 Hai să testăm. 541 00:28:24,820 --> 00:28:29,170 Deci pisică, câine, pește. 542 00:28:29,170 --> 00:28:33,770 Deci, vreau să grep. 543 00:28:33,770 --> 00:28:37,680 Dash, r, din nou, va fi recursiv, așa că vreau să coboare în jos 544 00:28:37,680 --> 00:28:38,870 toate directoarele. 545 00:28:38,870 --> 00:28:43,210 Vreau să grep recursiv pentru toate - și lasă-mă să temporar 546 00:28:43,210 --> 00:28:44,460 aceasta din drum. 547 00:28:44,460 --> 00:28:48,650 548 00:28:48,650 --> 00:28:50,740 Ignora-ma. 549 00:28:50,740 --> 00:28:51,360 OK. 550 00:28:51,360 --> 00:28:56,740 >> Deci, vreau să grep temporar pentru toate instanțele de pește cuvânt. 551 00:28:56,740 --> 00:29:00,510 Și așa mai departe aici, ceea ce fac este grepping recursiv pentru pește cuvânt. 552 00:29:00,510 --> 00:29:05,410 Și stele înseamnă peste toate acestea fișierele din acest director. 553 00:29:05,410 --> 00:29:08,930 Și așa mi-a dat o Permission denied, pentru că nu este permis să citesc 554 00:29:08,930 --> 00:29:10,060 anumit fișier. 555 00:29:10,060 --> 00:29:14,040 Dar a găsit pește în dosar, testul. 556 00:29:14,040 --> 00:29:18,450 >> Am putea spune, de asemenea, în mod special, doar am vrea să se uite în bla dosar, în 557 00:29:18,450 --> 00:29:19,580 caz în care nu vor găsi nimic. 558 00:29:19,580 --> 00:29:20,990 Vreau doar să se uite în dosar, testul. 559 00:29:20,990 --> 00:29:22,240 Se va găsi pește. 560 00:29:22,240 --> 00:29:25,980 561 00:29:25,980 --> 00:29:29,260 Că este o comandă destul de util să știe, în general. 562 00:29:29,260 --> 00:29:31,640 Există unele alternative la grep care ar trebui să fie mai mult 563 00:29:31,640 --> 00:29:36,780 programator prietenos, dar eu tind să cadă încă din nou pe grep. 564 00:29:36,780 --> 00:29:38,030 Întrebări? 565 00:29:38,030 --> 00:29:39,965 566 00:29:39,965 --> 00:29:40,919 OK. 567 00:29:40,919 --> 00:29:42,520 >> Există alte comenzi? 568 00:29:42,520 --> 00:29:45,270 Oh. 569 00:29:45,270 --> 00:29:48,370 Doar un one-off una pe care am mereu găsi să fie distractiv este cal. 570 00:29:48,370 --> 00:29:55,610 Așa observa atunci când sunt în acest minunat modul ecran complet, nu am nici top cum ar fi 571 00:29:55,610 --> 00:29:56,720 bara de instrumente sau nimic. 572 00:29:56,720 --> 00:29:59,530 Deci, cal doar dă-mi un pic de frumos calendar care este corect 573 00:29:59,530 --> 00:30:02,380 acum taie, presupun. 574 00:30:02,380 --> 00:30:04,770 Dar puțin comanda frumos. 575 00:30:04,770 --> 00:30:06,540 >> JOSEPH: Este [neauzit]. 576 00:30:06,540 --> 00:30:09,170 Alte comenzi pe care le-ar putea avea văzut includ zăngănit și de a face. 577 00:30:09,170 --> 00:30:11,180 Vom merge peste ei în detaliu mai târziu. 578 00:30:11,180 --> 00:30:13,400 Dar, dacă ați fost de lucru pe PSET, ar trebui să fie 579 00:30:13,400 --> 00:30:15,160 familiarizat cu cele. 580 00:30:15,160 --> 00:30:16,640 >> ROB: În regulă. 581 00:30:16,640 --> 00:30:18,520 Întrebări cu privire la lucrurile linia de comandă? 582 00:30:18,520 --> 00:30:22,450 583 00:30:22,450 --> 00:30:23,260 Bine. 584 00:30:23,260 --> 00:30:27,416 Deci, haideți să trecem la unele Chestii C-legate. 585 00:30:27,416 --> 00:30:28,666 Variabile matematica. 586 00:30:28,666 --> 00:30:39,078 587 00:30:39,078 --> 00:30:40,060 OK. 588 00:30:40,060 --> 00:30:45,230 Deci, doar ca am avut matematică în Scratch, puteți utiliza, de asemenea, matematica in C. 589 00:30:45,230 --> 00:30:49,270 >> Înainte de a ajunge la faptul că în întregime, astfel variabile. 590 00:30:49,270 --> 00:30:53,920 Amintiți-vă că de fiecare dată când declara un variabile cum ar fi int x sau y float, te 591 00:30:53,920 --> 00:30:56,710 trebuie să-i dea de tip înainte numele variabilei. 592 00:30:56,710 --> 00:31:03,020 Deci tipuri le-am văzut până acum sunt int, float, dublu, lung, lung, pe care am 593 00:31:03,020 --> 00:31:06,150 Nu știu de fapt dacă ne-am văzut că până în prezent. 594 00:31:06,150 --> 00:31:07,700 >> Există unele altele. 595 00:31:07,700 --> 00:31:09,990 Ne-am vedea char. 596 00:31:09,990 --> 00:31:13,920 Nu e scurt, care este ca e vizavi de mult timp în cazul în care este 597 00:31:13,920 --> 00:31:16,650 mai mic decât un număr întreg. 598 00:31:16,650 --> 00:31:18,580 Am văzut, de asemenea, șir. 599 00:31:18,580 --> 00:31:23,070 Deci, ce este special despre șir? 600 00:31:23,070 --> 00:31:25,350 De ce aș spune că e nu destul ca int? 601 00:31:25,350 --> 00:31:27,030 >> SPEAKER 4: Nu există cu adevărat. 602 00:31:27,030 --> 00:31:27,990 >> ROB: Da. 603 00:31:27,990 --> 00:31:31,820 Deci, singurul motiv pentru care ne-am string se datorează faptului că atunci când faci 604 00:31:31,820 --> 00:31:33,215 hash, includ cs50.h. 605 00:31:33,215 --> 00:31:36,530 606 00:31:36,530 --> 00:31:42,670 Și vom vedea exemple de mai târziu - oh, că nu se ocupă atât de bine - 607 00:31:42,670 --> 00:31:46,160 unde cs50.h este de a face ceva lungul liniilor de tip 608 00:31:46,160 --> 00:31:49,230 def, stele char, string. 609 00:31:49,230 --> 00:31:53,280 >> Și astfel încât spune că nu avem nici știu ce o stea char este încă. 610 00:31:53,280 --> 00:31:56,770 Dar acest lucru este de a spune ne-o dorim șir. 611 00:31:56,770 --> 00:32:00,250 Orice loc ați fost utilizați șir, te ar fi putut fi utilizați stea char, 612 00:32:00,250 --> 00:32:04,670 care de fapt este un tip care există în limbajul C. 613 00:32:04,670 --> 00:32:06,680 Dar vom ajunge la asta. 614 00:32:06,680 --> 00:32:07,860 Oh, și merge chiar înapoi. 615 00:32:07,860 --> 00:32:10,170 Îngrijite. 616 00:32:10,170 --> 00:32:15,370 >> Deci, același lucru cu bool unde adevărat și fals. 617 00:32:15,370 --> 00:32:22,510 Că nu este într-adevăr un tip built-in în C. În schimb, e doar, are această 618 00:32:22,510 --> 00:32:23,740 zero valoare? 619 00:32:23,740 --> 00:32:26,200 Atunci vom lua în considerare doar se a fi false. 620 00:32:26,200 --> 00:32:27,350 Are aceasta valoare - 621 00:32:27,350 --> 00:32:30,530 bine, acest lucru nici valoare care nu este zero? 622 00:32:30,530 --> 00:32:32,200 Atunci vom considera că este adevărat. 623 00:32:32,200 --> 00:32:35,940 Deci, un lucru este adevărat, doi este adevărat, nimic diferită de zero este adevărat. 624 00:32:35,940 --> 00:32:38,710 625 00:32:38,710 --> 00:32:42,790 Deci, acestea sunt cele. 626 00:32:42,790 --> 00:32:47,624 Întrebări cu privire la variabilele declararea și Tipuri de variabile și tot ce? 627 00:32:47,624 --> 00:32:48,100 Da. 628 00:32:48,100 --> 00:32:52,384 >> SPEAKER 4: De mult timp, în carte, ea a spus că a trebuit să fie long int lung. 629 00:32:52,384 --> 00:32:54,288 Dar va funcționa mult timp? 630 00:32:54,288 --> 00:32:58,210 631 00:32:58,210 --> 00:33:01,470 >> ROB: Deci, aceste modificatori de tip. 632 00:33:01,470 --> 00:33:04,170 Deci, int x. 633 00:33:04,170 --> 00:33:07,710 Deci, putem spune, de asemenea, nesemnate int x. 634 00:33:07,710 --> 00:33:09,640 Putem spune int scurt x. 635 00:33:09,640 --> 00:33:12,570 Putem spune de mult timp int x. 636 00:33:12,570 --> 00:33:17,250 Dar destul de mult oricare dintre aceste lucruri pe care le tocmai a spus, unsigned int, int scurt, 637 00:33:17,250 --> 00:33:21,480 mult timp Int, puteți scăpa de int și se va presupune doar 638 00:33:21,480 --> 00:33:22,510 care te-ai referit Int. 639 00:33:22,510 --> 00:33:26,045 X astfel nesemnate, ceea ce înseamnă doar - 640 00:33:26,045 --> 00:33:29,400 Știi cum în mod normal cu un int, vă pot spune x este egal cu negativ 3? 641 00:33:29,400 --> 00:33:31,636 Cu un int nesemnate, nu poți. 642 00:33:31,636 --> 00:33:34,480 >> JOSEPH: Și, din nou, pentru aparatul de fotografiat, întrebare a fost, ceea ce este diferența 643 00:33:34,480 --> 00:33:37,796 între long int lung și tocmai de mult timp? 644 00:33:37,796 --> 00:33:38,410 >> ROB: Da. 645 00:33:38,410 --> 00:33:42,850 Așa că va fi aproape niciodată Trimite mult long int. 646 00:33:42,850 --> 00:33:44,100 Voi scrie mult timp. 647 00:33:44,100 --> 00:33:47,770 648 00:33:47,770 --> 00:33:50,636 >> JOSEPH: Orice întrebări? 649 00:33:50,636 --> 00:33:51,886 >> ROB: OK. 650 00:33:51,886 --> 00:33:56,180 651 00:33:56,180 --> 00:34:02,390 Memento atât de prost puțin de care este modul în care declarăm o variabilă și inițializa 652 00:34:02,390 --> 00:34:04,450 variabila si declare un alt variabilă și inițializa 653 00:34:04,450 --> 00:34:05,870 totul într-un singur pas. 654 00:34:05,870 --> 00:34:09,370 Deci, declarația de variabile și variabila de inițializare nu au 655 00:34:09,370 --> 00:34:11,120 a dar poate fi pe aceeași linie. 656 00:34:11,120 --> 00:34:15,409 657 00:34:15,409 --> 00:34:20,060 >> Deci avem operatorii de matematica standard de că v-ați obișnuit - 658 00:34:20,060 --> 00:34:22,199 plus, minus, divide, ori. 659 00:34:22,199 --> 00:34:24,389 Există, de asemenea modulo, pe care vom vedea. 660 00:34:24,389 --> 00:34:29,060 Nu este, cel puțin în C, o putere built-in 661 00:34:29,060 --> 00:34:31,765 exponentiala operatorului caret. 662 00:34:31,765 --> 00:34:33,770 Ei bine, există un operator de caret, dar nu este putere. 663 00:34:33,770 --> 00:34:34,239 >> JOSEPH: Dar nu este exponentiala, Da. 664 00:34:34,239 --> 00:34:36,210 >> ROB: Nu utilizați cursorul să se presupună că aceasta înseamnă 665 00:34:36,210 --> 00:34:39,980 cum ar fi pătrat sau orice altceva. 666 00:34:39,980 --> 00:34:42,289 Deci, unele lucruri pentru a păstra în minte cu privire la divizare. 667 00:34:42,289 --> 00:34:46,282 668 00:34:46,282 --> 00:34:48,880 Voi sta. 669 00:34:48,880 --> 00:34:51,315 Deci, a declarat răspuns Initialize. 670 00:34:51,315 --> 00:34:54,670 Deci, noi spunem răspuns float este egal cu 1 împărțit la 10. 671 00:34:54,670 --> 00:34:57,500 Tipărește răspunsul la două zecimale. 672 00:34:57,500 --> 00:35:02,180 >> Și aceasta este genul de lucru pe care am ar omul printf să dau seama că 673 00:35:02,180 --> 00:35:05,110 ce naiba nu%, punct, 2F înseamnă? 674 00:35:05,110 --> 00:35:07,930 Și asta înseamnă doar, ei bine, ignorând 0.2. 675 00:35:07,930 --> 00:35:10,420 Și%, f este ceea ce vom folosi pentru a imprima să plutească. 676 00:35:10,420 --> 00:35:15,370 0.2 se spune, de imprimare plutesc la două zecimale. 677 00:35:15,370 --> 00:35:19,600 Deci, acest program are un bug, și s-ar putea au văzut acest lucru înainte, în unele 678 00:35:19,600 --> 00:35:20,870 înainte de curs CS. 679 00:35:20,870 --> 00:35:22,170 Dar ceea ce este că bug? 680 00:35:22,170 --> 00:35:23,050 >> SPEAKER 5: Zero. 681 00:35:23,050 --> 00:35:24,130 >> ROB: Da. 682 00:35:24,130 --> 00:35:29,630 Asa ca atunci cand spunem, răspunsul este egal 1 împărțit la 10, ne-o dorim 683 00:35:29,630 --> 00:35:31,610 răspunde la 0,1. 684 00:35:31,610 --> 00:35:37,450 Dar 1 împărțit la 10, 1 este un număr întreg, 10 este un număr întreg. 685 00:35:37,450 --> 00:35:41,060 Și astfel, atunci când facem un întreg împărțit de către un întreg, ne vom lua înapoi 686 00:35:41,060 --> 00:35:42,190 un număr întreg. 687 00:35:42,190 --> 00:35:43,660 Deci, 1 împărțit la 10 este de 0,1. 688 00:35:43,660 --> 00:35:46,760 >> Având în vedere că trebuie să ne dea un întreg, este doar de gând să arunce care 689 00:35:46,760 --> 00:35:49,410 zecimală și spune că raspunsul este 0. 690 00:35:49,410 --> 00:35:55,314 Așa că atunci când ne-am imprima răspundem aici, se va imprima 0.00. 691 00:35:55,314 --> 00:35:58,430 >> JOSEPH: Și, la fel ca și o notă, este de fapt aruncă ceea ce este după 692 00:35:58,430 --> 00:35:59,390 punctul zecimal. 693 00:35:59,390 --> 00:36:03,180 Deci, dacă a avut loc 6 împărțit la 10, s-ar putea crede că aceasta s-ar da 694 00:36:03,180 --> 00:36:05,200 0,6 și apoi v-ar rotunji la 1. 695 00:36:05,200 --> 00:36:10,520 Dar, de fapt, ceea ce se întâmplă atunci când introduceți sarcini este că acesta scade ceea ce este 696 00:36:10,520 --> 00:36:11,470 după virgulă. 697 00:36:11,470 --> 00:36:13,020 Deci, 0.6 devine 0. 698 00:36:13,020 --> 00:36:13,370 >> ROB: Da. 699 00:36:13,370 --> 00:36:15,160 Și vom spune trunchia pentru asta. 700 00:36:15,160 --> 00:36:21,760 Deci, ori de câte ori aruncat la un int, zecimal este trunchiat. 701 00:36:21,760 --> 00:36:23,980 Deci, fix pentru că - nu există de fapt două. 702 00:36:23,980 --> 00:36:27,890 Și am de gând să fac asta în al doilea rând, pentru că aceasta este o soluție mult mai ușor. 703 00:36:27,890 --> 00:36:32,670 >> Deci, unul fix este de a utiliza flotoare în divizia. 704 00:36:32,670 --> 00:36:34,720 Și într-adevăr, trebuie doar să face unul dintre ei un flotor. 705 00:36:34,720 --> 00:36:37,400 Dar e oarecum mai clar doar pentru a face ambele pluteste. 706 00:36:37,400 --> 00:36:41,170 Deci, 1,0 împărțit la 10.0 este împărțirea două flotoare. 707 00:36:41,170 --> 00:36:43,970 Deci, răspunsul se va sfârși prin a fi un float, și așa veți 708 00:36:43,970 --> 00:36:48,050 imprima corect 0,10 aici. 709 00:36:48,050 --> 00:36:52,220 >> Ceva care nu funcționează atât de bine despre care este, ei bine, sigur, a fost ușor 710 00:36:52,220 --> 00:36:56,240 suficient pentru a converti 1 la un pluti prin ceea ce face 1.0. 711 00:36:56,240 --> 00:37:02,180 Dar ce se întâmplă dacă în loc am avut două numere întregi cum ar fi int x este egal cu 1 și int y 712 00:37:02,180 --> 00:37:05,660 este egal cu 10, iar apoi ne-am dorit Pentru a face x împărțit la y? 713 00:37:05,660 --> 00:37:10,420 Deci, nu este ușor de doar face X.0 sau ceva. 714 00:37:10,420 --> 00:37:12,790 >> Deci, fix la care se turnare. 715 00:37:12,790 --> 00:37:19,780 Deci turnare este o modalitate de a converti în C de la un tip variabilă la altul. 716 00:37:19,780 --> 00:37:22,320 Deci, aici, o este un număr întreg. 717 00:37:22,320 --> 00:37:27,050 Și de a pune această float în fața ea, suntem turnare 1 la un float. 718 00:37:27,050 --> 00:37:30,350 Și astfel aceasta va converti 1 a unui 1.0. 719 00:37:30,350 --> 00:37:33,380 Și acest lucru va converti 10 la 10,0. 720 00:37:33,380 --> 00:37:36,790 >> Și atunci lucrurile se comportă în mod similar la versiunea anterioară ne-am arătat 721 00:37:36,790 --> 00:37:42,190 unde, cum era de asteptat, avem 0,10 și se va imprima ca. 722 00:37:42,190 --> 00:37:44,120 Și putem face acest lucru cu variabile, de asemenea. 723 00:37:44,120 --> 00:37:47,376 Deci, putem spune, float x împărțit de float y. 724 00:37:47,376 --> 00:37:48,626 >> JOSEPH: Orice întrebări? 725 00:37:48,626 --> 00:37:54,182 726 00:37:54,182 --> 00:38:00,090 >> ROB: Deci, la fel ca și în matematică regulat, avem operator de prioritate. 727 00:38:00,090 --> 00:38:06,960 Deci, în clasa de matematică, ai mai multe sanse să-l numesc ordine de operațiuni. 728 00:38:06,960 --> 00:38:09,890 Aici, termenul oficial este operator de prioritate. 729 00:38:09,890 --> 00:38:15,230 Dar prioritatea operatorului, sau mai mult operatori, este ca și cum ați aștepta. 730 00:38:15,230 --> 00:38:22,660 >> Deci, la fel ca și în matematică, de 2 ori 10 este vor fi grupate mai strâns decât 731 00:38:22,660 --> 00:38:25,410 aceasta 10 împărțit la 2 și apoi 2. 732 00:38:25,410 --> 00:38:29,745 Ordinea operațiilor, se va face 2 ori 10, 10 împărțit la 2, și apoi 733 00:38:29,745 --> 00:38:32,720 se va face 20 plus 5 plus 2. 734 00:38:32,720 --> 00:38:37,020 Deci e cum era de așteptat, și puteți utiliza paranteze pentru expresii de grup. 735 00:38:37,020 --> 00:38:41,063 Nu puteți utiliza paranteze pătrate pentru expresii de grup. 736 00:38:41,063 --> 00:38:41,544 Da? 737 00:38:41,544 --> 00:38:43,468 >> SPEAKER 5: Ai putea de fapt, du-te înapoi cu o secundă? 738 00:38:43,468 --> 00:38:47,316 Poți arunca o int la un șir? 739 00:38:47,316 --> 00:38:53,330 >> ROB: Deci, în C, vă poate arunca nimic pe care doriți să tot ce vrei. 740 00:38:53,330 --> 00:38:55,600 Asta nu înseamnă că e un lucru bun de făcut. 741 00:38:55,600 --> 00:38:59,760 Deci, atunci când aruncat un int a un șir de caractere, ceea ce înseamnă - 742 00:38:59,760 --> 00:39:03,240 și vom obține în acest mult mai bine - 743 00:39:03,240 --> 00:39:03,720 >> JOSEPH: Mult mai târziu. 744 00:39:03,720 --> 00:39:06,840 >> ROB: Nu am vrut să spun mult mai târziu, așa că am încercat să schimbe sentința. 745 00:39:06,840 --> 00:39:13,370 Vom ajunge în ea mult mai bine mai târziu, în cazul în care într-adevăr, atunci când aveți un 746 00:39:13,370 --> 00:39:14,810 variabilă șir - 747 00:39:14,810 --> 00:39:17,160 astfel încât un șir poate fi arbitrar mult timp, nu? 748 00:39:17,160 --> 00:39:21,850 Și ne-am spus că este un int patru bytes și lung lung este de opt 749 00:39:21,850 --> 00:39:23,620 bytes și un float este de patru octeți. 750 00:39:23,620 --> 00:39:29,520 Deci, un șir de caractere, la fel ca un întreg, are doar un anumit număr de octeți pentru ea. 751 00:39:29,520 --> 00:39:31,800 Și care va fi de patru bytes. 752 00:39:31,800 --> 00:39:34,750 >> Dar un șir poate fi destul de arbitrar de mult, corect? 753 00:39:34,750 --> 00:39:40,190 Deci, salut lume deja, în cazul în care este de 10 caractere sau orice altceva, asta e deja 754 00:39:40,190 --> 00:39:42,670 va fi peste 4 octeți Eu pot încăpea într-un șir. 755 00:39:42,670 --> 00:39:51,140 Și așa cum funcționează de fapt siruri de caractere este că acestea sunt în cazul în care în memorie acel șir 756 00:39:51,140 --> 00:39:52,380 se păstrează. 757 00:39:52,380 --> 00:39:57,290 >> Și așa aici, când spun șir x este egal cu lumea salut, în interiorul a x este 758 00:39:57,290 --> 00:40:01,840 doar că, oh, salut lume este stocat în acest loc special în memorie. 759 00:40:01,840 --> 00:40:07,060 Deci, dacă am încerca să arunce un întreg la un șir, apoi încercăm să interpreteze 760 00:40:07,060 --> 00:40:10,500 o parte aleatorie a memoriei ca un șir. 761 00:40:10,500 --> 00:40:14,465 Și care rupe aproape întotdeauna lucruri. 762 00:40:14,465 --> 00:40:17,040 >> JOSEPH: Dar, în cazul în care confundă te, vom fi acoperind o 763 00:40:17,040 --> 00:40:17,550 mai în profunzime mai târziu. 764 00:40:17,550 --> 00:40:17,850 >> ROB: Da. 765 00:40:17,850 --> 00:40:20,540 Acest lucru este în cazul în care ai de gând pentru a intra în indicii. 766 00:40:20,540 --> 00:40:25,485 Și că este o bucată semnificativă de două săptămâni de acest curs. 767 00:40:25,485 --> 00:40:28,275 >> SPEAKER 6: Functioneaza ca obiecte în alte limbi sau nu adevărat? 768 00:40:28,275 --> 00:40:34,050 >> ROB: Deci, în alte limbi, obiecte ar fi reprezentat folosind indicatori. 769 00:40:34,050 --> 00:40:37,070 770 00:40:37,070 --> 00:40:38,793 Nu e același lucru, totuși. 771 00:40:38,793 --> 00:40:42,110 772 00:40:42,110 --> 00:40:42,910 Orice gândurile? 773 00:40:42,910 --> 00:40:43,760 >> JOSEPH: Nu. 774 00:40:43,760 --> 00:40:44,185 Nu sunt gânduri. 775 00:40:44,185 --> 00:40:44,980 >> ROB: OK. 776 00:40:44,980 --> 00:40:46,994 >> JOSEPH: Next. 777 00:40:46,994 --> 00:40:48,255 >> ROB: Du-te cu asta. 778 00:40:48,255 --> 00:40:48,670 Bine. 779 00:40:48,670 --> 00:40:51,120 Așa modulo. 780 00:40:51,120 --> 00:40:53,900 La fel cum ne-am plus, minus, diviza, și să se înmulțească. 781 00:40:53,900 --> 00:40:56,720 Deci, modulo este unul s-ar putea nu s-au văzut înainte. 782 00:40:56,720 --> 00:40:59,540 Și se spune doar, da mi restul. 783 00:40:59,540 --> 00:41:02,850 Deci 55% 10. 784 00:41:02,850 --> 00:41:06,840 Restul face 55 împărțit de 10 ar fi 5. 785 00:41:06,840 --> 00:41:09,630 Deci 55% 10 este 5. 786 00:41:09,630 --> 00:41:12,260 Și 3% 5 ar fi 3. 787 00:41:12,260 --> 00:41:14,180 8% 8 va fi 0. 788 00:41:14,180 --> 00:41:15,903 16% 15 va fi 1. 789 00:41:15,903 --> 00:41:20,670 >> JOSEPH: Un lucru de remarcat cu acest lucru, de asemenea, este că nu ar putea să funcționeze conform așteptărilor 790 00:41:20,670 --> 00:41:22,700 dacă utilizați un număr negativ. 791 00:41:22,700 --> 00:41:26,215 Astfel negativ 5% 4, unii oameni s-ar putea crede că este - 792 00:41:26,215 --> 00:41:28,890 793 00:41:28,890 --> 00:41:33,808 ce crezi negativ 5%, 4 ar fi? 794 00:41:33,808 --> 00:41:34,792 >> SPEAKER 5: One. 795 00:41:34,792 --> 00:41:37,920 >> JOSEPH: Deci, unii oameni spun una, unii oameni spun unul negativ. 796 00:41:37,920 --> 00:41:38,450 Dar ceea ce - 797 00:41:38,450 --> 00:41:40,820 >> ROB: Nici nu ar avea a declarat unul dintre cei. 798 00:41:40,820 --> 00:41:42,370 >> JOSEPH: Doi, îmi pare rău. 799 00:41:42,370 --> 00:41:43,240 Unii oameni spun - 800 00:41:43,240 --> 00:41:43,450 >> ROB: Trei. 801 00:41:43,450 --> 00:41:43,800 >> JOSEPH: Trei? 802 00:41:43,800 --> 00:41:44,890 >> ROB: Negative - 803 00:41:44,890 --> 00:41:45,950 ceea ce a fost - negativ cinci - 804 00:41:45,950 --> 00:41:47,100 >> JOSEPH: Trei, trei, trei. 805 00:41:47,100 --> 00:41:48,450 Scuze. 806 00:41:48,450 --> 00:41:51,910 Deoarece modulo, în general, atunci când ai văzut-o în altă parte, aceasta înseamnă, de obicei, 807 00:41:51,910 --> 00:41:54,000 returna un număr pozitiv, corect? 808 00:41:54,000 --> 00:42:01,160 >> ROB: Deci, atunci când spunem la matematica, 10%, a ele tind să vrea să vă dau - 809 00:42:01,160 --> 00:42:05,980 dacă Mod de 10, atunci ne așteptăm să a obține un număr între 0 și 9. 810 00:42:05,980 --> 00:42:09,860 În aici, că nu este cazul în care vă vor primi numere negative întors. 811 00:42:09,860 --> 00:42:15,898 >> JOSEPH: Deci negativ de 5% 4 ar fi negativ 1. 812 00:42:15,898 --> 00:42:19,325 >> ROB: Dar este rar ca esti mod-ing numere negative pentru a începe cu. 813 00:42:19,325 --> 00:42:25,490 814 00:42:25,490 --> 00:42:25,970 Săriți peste acest lucru. 815 00:42:25,970 --> 00:42:27,314 >> JOSEPH: Da. 816 00:42:27,314 --> 00:42:29,420 >> ROB: Meh. 817 00:42:29,420 --> 00:42:29,990 OK. 818 00:42:29,990 --> 00:42:36,400 Deci, un ultim lucru pentru a sublinia despre flotoare este că este un comportament periculos, 819 00:42:36,400 --> 00:42:39,850 dar flotoare nu sunt un exacte reprezentare. 820 00:42:39,850 --> 00:42:46,190 Deci, merge înapoi la bytes din nou, amintiți-vă ca un întreg este întotdeauna patru octeți și un 821 00:42:46,190 --> 00:42:47,830 float este întotdeauna patru bytes. 822 00:42:47,830 --> 00:42:51,340 Deci, de exemplu, Lucas este destul de bun. 823 00:42:51,340 --> 00:42:55,730 >> Deci, cred că de 1 împărțit la 3. 824 00:42:55,730 --> 00:42:57,800 Așa 0.3333333. 825 00:42:57,800 --> 00:43:03,540 Dacă am doar 32 de biți, cum poate Am stoca 0.33333 exact? 826 00:43:03,540 --> 00:43:07,250 Și poate, indiferent de motiv, vă spun, bine, bine, hai să spunem 827 00:43:07,250 --> 00:43:13,210 că această special 1011001, să spun doar că ar trebui să fie 0.333333. 828 00:43:13,210 --> 00:43:16,960 Ei bine, ai doar un număr finit de aceste biți, așa că este imposibil să 829 00:43:16,960 --> 00:43:22,550 reprezintă fiecare virgulă mobilă Valoarea dat doar 32 de biți. 830 00:43:22,550 --> 00:43:25,580 >> Ei bine, este imposibil să reprezinte orice valoare în virgulă mobilă dat infinit - 831 00:43:25,580 --> 00:43:28,480 bine, având în vedere orice număr finit de biți. 832 00:43:28,480 --> 00:43:38,265 Deci, problema aici este, ei bine, atunci când am folosit pentru a imprima la două zecimale, 833 00:43:38,265 --> 00:43:42,000 ne-am primit în mod corect răspunsul 0.10. 834 00:43:42,000 --> 00:43:47,510 Dar sub capota, e într-adevăr fiind stocate cât mai aproape posibil de 835 00:43:47,510 --> 00:43:51,790 0,10 în care aceste biți poate reprezenta. 836 00:43:51,790 --> 00:43:53,200 Este acest lucru pe slide-ul urmator? 837 00:43:53,200 --> 00:43:53,830 Sau nu-i așa? 838 00:43:53,830 --> 00:43:54,660 >> JOSEPH: Da, e ca. 839 00:43:54,660 --> 00:43:55,750 >> ROB: Blegh, blegh. 840 00:43:55,750 --> 00:43:57,760 >> JOSEPH: Da, puteți doar trage notele un pic. 841 00:43:57,760 --> 00:43:59,700 >> ROB: Mă duc pentru a mări în pe ultimul pe care. 842 00:43:59,700 --> 00:44:00,950 Oh, Doamne, asta e [neauzit]. 843 00:44:00,950 --> 00:44:06,089 844 00:44:06,089 --> 00:44:08,300 Astfel încât numărul. 845 00:44:08,300 --> 00:44:12,300 Asta este ceea ce va fi imprimat dacă vom rula acest program. 846 00:44:12,300 --> 00:44:20,340 Și observați că nu este într-adevăr o afacere mare dacă suntem doar pese ca 847 00:44:20,340 --> 00:44:21,920 doi la trei zecimale. 848 00:44:21,920 --> 00:44:26,700 Ca și cum ne-am doar inițial tipărite 0.10, și de aceea am văzut nimic greșit. 849 00:44:26,700 --> 00:44:31,380 Dar, odată ce vom începe Noțiuni de bază în exactă, numărul exact care este 850 00:44:31,380 --> 00:44:35,660 reprezentând, vom vedea că nu se poate exact reprezintă 0,1. 851 00:44:35,660 --> 00:44:40,900 >> Și o parte a problemei aici este ca, bine, asta e bine, dar, ei bine, 852 00:44:40,900 --> 00:44:46,120 în primul rând, ceea ce în cazul în care am încercat să facem, Răspunsul este egal este egal cu 0.1? 853 00:44:46,120 --> 00:44:49,200 Este că merge să se întoarcă adevărat sau fals? 854 00:44:49,200 --> 00:44:51,850 Și deci este greu de spus. 855 00:44:51,850 --> 00:44:53,330 Cred că de fapt s-ar putea întoarce adevărat. 856 00:44:53,330 --> 00:44:55,265 Mai întâi va fi - 857 00:44:55,265 --> 00:44:56,180 Nu știu. 858 00:44:56,180 --> 00:45:00,090 Răspunsul este dată de a începe a face cu valori în virgulă mobilă, ai destul de 859 00:45:00,090 --> 00:45:05,150 de mult nu ar trebui să fie folosind egalitate din cauza acestei imprecizie. 860 00:45:05,150 --> 00:45:09,470 >> Și pentru tot ce știi, e sutime zecimală că 861 00:45:09,470 --> 00:45:13,670 virgulă mobilă nu a fost în măsură să se ocupe în mod corect. 862 00:45:13,670 --> 00:45:18,180 Și astfel egalitatea nu va reuși doar chiar deși numărul - dacă ai fi fost 863 00:45:18,180 --> 00:45:24,450 folosind numere exacte, numerele ar trebui să au fost exact la fel. 864 00:45:24,450 --> 00:45:27,790 Este de-a lungul ca 50 calcule utilizând aceste plutitoare 865 00:45:27,790 --> 00:45:30,270 Valorile în puncte, eroarea poate construi în sus și în sus și în sus, și 866 00:45:30,270 --> 00:45:31,125 lucrurile devin pur și simplu greșit. 867 00:45:31,125 --> 00:45:33,870 >> JOSEPH: Și au fost într-adevăr exemple celebre de acest lucru se întâmplă. 868 00:45:33,870 --> 00:45:37,190 Ca inginerii de la NASA au ajuns aceasta greșite, rachete provocând la exploda în 869 00:45:37,190 --> 00:45:38,665 aer după ce au fost lansate. 870 00:45:38,665 --> 00:45:41,490 Și o mulțime de probleme de genul asta. 871 00:45:41,490 --> 00:45:41,956 Deci, da. 872 00:45:41,956 --> 00:45:45,218 >> SPEAKER 6: Când spui 0,3 f, nu-l trunchia restul? 873 00:45:45,218 --> 00:45:46,468 Sau nu-l rotunji în plus sau în jos? 874 00:45:46,468 --> 00:45:48,800 875 00:45:48,800 --> 00:45:50,200 >> ROB: Va printf în jurul lui? 876 00:45:50,200 --> 00:45:52,180 >> JOSEPH: Cred trunchieri printf. 877 00:45:52,180 --> 00:45:52,640 >> ROB: OK. 878 00:45:52,640 --> 00:45:59,890 Astfel încât să putem merge în mod similar în opusul direcție de acest lucru în cazul, în acest caz, 879 00:45:59,890 --> 00:46:03,320 cel mai aproape de ea ar putea reprezenta 0.1 a fost cu acest număr. 880 00:46:03,320 --> 00:46:06,820 Cel mai aproape ar putea reprezintă 0,2 este în direcția opusă 881 00:46:06,820 --> 00:46:11,420 direcție, .199999996356 sau ceva. 882 00:46:11,420 --> 00:46:17,480 Deci, dacă ne-am dus în această direcție de lucruri, atunci printf 0.3 f-ar întoarce 883 00:46:17,480 --> 00:46:20,866 1,99 în loc de 2,00. 884 00:46:20,866 --> 00:46:22,960 >> JOSEPH: Și eu nu sunt în totalitate sigur pe asta. 885 00:46:22,960 --> 00:46:25,430 S-ar putea dori să scrie un mic, mic program pentru a verifica doar asta. 886 00:46:25,430 --> 00:46:29,370 >> ROB: Deși, ceea ce sunt sigur este că dacă ați încercat să arunce că la un 887 00:46:29,370 --> 00:46:33,660 Int, și turnare pentru un int este de gând să determina să trunchia zecimale, în cazul în care 888 00:46:33,660 --> 00:46:38,140 ce încerca să arunce 1.9999999 la un int, veți obține 1. 889 00:46:38,140 --> 00:46:41,440 Și așa ar trebui, în general, utilizați Funcția rotund în biblioteca matematica. 890 00:46:41,440 --> 00:46:44,190 891 00:46:44,190 --> 00:46:45,440 Întrebări? 892 00:46:45,440 --> 00:46:47,660 893 00:46:47,660 --> 00:46:48,982 OK. 894 00:46:48,982 --> 00:46:54,000 >> JOSEPH: Deci, de a trece la condițiile de și expresii booleene. 895 00:46:54,000 --> 00:46:58,120 Deci, ați văzut aceste înainte. 896 00:46:58,120 --> 00:47:07,420 Și, de fapt, permiteți-mi să vă meu calculator este în formatul potrivit aici. 897 00:47:07,420 --> 00:47:08,670 Spațiu. 898 00:47:08,670 --> 00:47:10,630 899 00:47:10,630 --> 00:47:13,870 Ne pare rău, vom avea de a face o pic cu cutoff la margini. 900 00:47:13,870 --> 00:47:15,830 >> Dar da, voi ați văzut acest lucru înainte în Scratch. 901 00:47:15,830 --> 00:47:19,930 Deci, asta de aici este o expresie care este folosit în 902 00:47:19,930 --> 00:47:21,250 o declarație condiționată. 903 00:47:21,250 --> 00:47:23,930 Astfel încât să răspundă mai mare decât voința de zero vă spun adevărat sau fals. 904 00:47:23,930 --> 00:47:26,530 Și acestea sunt foarte importante, deoarece ele ne permit să introducă 905 00:47:26,530 --> 00:47:28,670 logică în codul nostru. 906 00:47:28,670 --> 00:47:32,820 >> Deci, de exemplu, acesta este un program scris în Scratch care cere utilizatorului 907 00:47:32,820 --> 00:47:36,980 pentru un întreg și le spune dacă întreg pe care le-au dat a fost o 908 00:47:36,980 --> 00:47:38,690 număr pozitiv sau negativ. 909 00:47:38,690 --> 00:47:42,980 Și conversia aici pentru a vedea este imprimați mai întâi declarația, 910 00:47:42,980 --> 00:47:43,870 da-mi un întreg. 911 00:47:43,870 --> 00:47:45,980 Și apoi le cere pentru un întreg. 912 00:47:45,980 --> 00:47:49,870 >> Și apoi să utilizați logica condiționată peste aici pentru a verifica dacă acest număr 913 00:47:49,870 --> 00:47:52,030 a fost de fapt mai mare decât zero sau nu. 914 00:47:52,030 --> 00:47:58,960 Deci, aici avem o expresie booleană în interiorul unui condiționată Dacă declaratie. 915 00:47:58,960 --> 00:48:00,660 Există întrebări? 916 00:48:00,660 --> 00:48:03,030 Există întrebări despre asta? 917 00:48:03,030 --> 00:48:03,950 OK. 918 00:48:03,950 --> 00:48:06,140 >> Deci, nu e mai mult decât mai mare decât, desigur. 919 00:48:06,140 --> 00:48:10,385 Puteți construi expresii booleene folosind de cele mai multe tipuri de lucruri pe care le 920 00:48:10,385 --> 00:48:11,150 s-ar gândi la matematică. 921 00:48:11,150 --> 00:48:12,370 Deci, mai mare. 922 00:48:12,370 --> 00:48:13,740 Că ar trebui să fie o mai mică decât. 923 00:48:13,740 --> 00:48:14,990 Scuze. 924 00:48:14,990 --> 00:48:18,520 925 00:48:18,520 --> 00:48:19,760 Și spațierea. 926 00:48:19,760 --> 00:48:22,971 >> ROB: Doamne ferește să-l părăsească. 927 00:48:22,971 --> 00:48:23,620 >> JOSEPH: În regulă. 928 00:48:23,620 --> 00:48:25,950 Deci mai mare, mai puțin, mai mare decât, sau egal cu, mai puțin 929 00:48:25,950 --> 00:48:27,070 decât, sau egal cu. 930 00:48:27,070 --> 00:48:31,980 Noi folosim egal duble pentru a verifica egalitate, pentru că singur este egal cu mijloace 931 00:48:31,980 --> 00:48:32,810 cesiune, corect? 932 00:48:32,810 --> 00:48:33,140 Da. 933 00:48:33,140 --> 00:48:37,130 Și apoi putem, de asemenea, nu este egal cu folosind semn de exclamare, este egal. 934 00:48:37,130 --> 00:48:41,530 >> Și acest simbol semn de exclamare poate de asemenea, să fie extins, astfel încât, dacă doriți 935 00:48:41,530 --> 00:48:44,050 pentru a inversa orice fel de booleene expresie, puteți face acest lucru. 936 00:48:44,050 --> 00:48:48,530 Deci, acest lucru se va evalua la adevărata numai în cazul în care răspunsul este mai puțin 937 00:48:48,530 --> 00:48:51,240 mare sau egal cu zero. 938 00:48:51,240 --> 00:48:53,950 Orice întrebări cu privire la asta? 939 00:48:53,950 --> 00:48:55,180 OK. 940 00:48:55,180 --> 00:48:58,840 >> Astfel încât să puteți combina, de asemenea, aceste expresii care utilizează logică și și 941 00:48:58,840 --> 00:48:59,790 logic Or. 942 00:48:59,790 --> 00:49:03,530 Deci, aceasta este doar simbolul Si, care trebuie să fie Shift, 7. 943 00:49:03,530 --> 00:49:07,720 Și aceasta este simbolul conductă, care este nu un caz mai mic L. Este cea 944 00:49:07,720 --> 00:49:09,440 E chiar deasupra cheia Enter. 945 00:49:09,440 --> 00:49:12,870 Astfel încât să utilizați două dintre acestea pentru a simboliza logic Și logică sau. 946 00:49:12,870 --> 00:49:18,180 >> Deci, aceasta va reveni adevărat numai în cazul în care răspunsul unul, doi, trei, sau patru. 947 00:49:18,180 --> 00:49:23,030 Iar acest lucru se va întoarce adevărat numai în cazul în care răspunsul este dincolo de faptul că pe fiecare parte. 948 00:49:23,030 --> 00:49:26,190 Deci, nu e unul, doi, trei, sau patru. 949 00:49:26,190 --> 00:49:28,385 Și modul în care ar trebui să utilizați că într-o expresie - 950 00:49:28,385 --> 00:49:29,990 >> ROB: Sau un zero sau un cinci. 951 00:49:29,990 --> 00:49:32,200 >> JOSEPH: Zero sau un cinci. 952 00:49:32,200 --> 00:49:32,380 Scuze. 953 00:49:32,380 --> 00:49:33,320 Da, da, da. 954 00:49:33,320 --> 00:49:34,180 OK. 955 00:49:34,180 --> 00:49:38,980 Și aici acum, la fel ca tine ar folosi această expresie, o mai mică 956 00:49:38,980 --> 00:49:42,000 partea de exprimare a unui condițională Dacă afirmație, ar trebui să de asemenea, utiliza 957 00:49:42,000 --> 00:49:47,800 același mod de doar punerea în interiorul parantezele de declarația Dacă. 958 00:49:47,800 --> 00:49:54,020 Deci, acest printf va concedia doar în cazul în care răspunsul unul, doi, trei, sau patru. 959 00:49:54,020 --> 00:49:56,002 Orice întrebări cu privire la combinarea expresii? 960 00:49:56,002 --> 00:50:00,450 961 00:50:00,450 --> 00:50:04,240 >> Deci, există un alt condiționată construct numim un Dacă / Altfel. 962 00:50:04,240 --> 00:50:08,120 Deci, practic, acest lucru înseamnă acum, OK, Daca ceva ce am vrut pentru a verifica nu a fost 963 00:50:08,120 --> 00:50:11,600 adevărat, atunci du-te la altceva și efectua că alte acțiuni. 964 00:50:11,600 --> 00:50:15,570 Deci, în acest caz particular, l-am întrebat utilizatorul pentru un număr întreg. 965 00:50:15,570 --> 00:50:17,790 Este numărul întreg mai mare decât zero? 966 00:50:17,790 --> 00:50:18,310 Da? 967 00:50:18,310 --> 00:50:20,100 Ei bine, apoi au captat un număr pozitiv. 968 00:50:20,100 --> 00:50:22,320 Dacă nu, atunci aceasta trebuie să aibă a fost negativ sau zero. 969 00:50:22,320 --> 00:50:27,530 Deci, ai ales un număr negativ sau un zero în acest caz. 970 00:50:27,530 --> 00:50:29,235 Da. 971 00:50:29,235 --> 00:50:30,485 Sau un zero. 972 00:50:30,485 --> 00:50:36,320 973 00:50:36,320 --> 00:50:39,300 >> Și apoi ne-au, de asemenea Dacă / Altfel, Dacă și Else. 974 00:50:39,300 --> 00:50:45,640 Deci, acest lucru ne permite să execute o secvență de lucrurile doar în cazul în care primele nu. 975 00:50:45,640 --> 00:50:49,540 Deci, în acest caz, acum facem ultima alegi zero. 976 00:50:49,540 --> 00:50:53,080 Deci, dacă ei nu a luat-o pozitiv, nici un număr negativ, atunci ei trebuie să 977 00:50:53,080 --> 00:50:53,640 au ales zero. 978 00:50:53,640 --> 00:50:56,720 Deci, doar se duce în jos lanț de genul asta. 979 00:50:56,720 --> 00:50:59,960 >> Deci, un exemplu de modul în care o Dacă este diferit de - 980 00:50:59,960 --> 00:51:02,590 o Dacă / Altfel este diferit de doar o secvență de Ifs. 981 00:51:02,590 --> 00:51:07,680 Și aceasta este o întrebare comună, care oameni cer este, ei bine, dacă aveți ca un 982 00:51:07,680 --> 00:51:11,265 95 în CS50, ce va prezenta Programul vă spun? 983 00:51:11,265 --> 00:51:12,600 >> SPEAKER 5: Ai o A. 984 00:51:12,600 --> 00:51:13,490 >> JOSEPH: Da. 985 00:51:13,490 --> 00:51:14,960 Ai fiecare unul dintre cei drept. 986 00:51:14,960 --> 00:51:17,130 Ai un A, ai un B, te primit un C și un D, ​​nu? 987 00:51:17,130 --> 00:51:19,770 Deci, toate acestea se evaluate în ordine. 988 00:51:19,770 --> 00:51:23,570 Deci, în timp ce o 95 este mai mare de 90, este De asemenea, mai mare de 80, este, de asemenea, 989 00:51:23,570 --> 00:51:25,790 mai mare de 70, și este de asemenea, mai mare de 60. 990 00:51:25,790 --> 00:51:27,620 Deci ai toate aceste clase. 991 00:51:27,620 --> 00:51:31,630 Și eu presupun că ar fi Vreau doar A. 992 00:51:31,630 --> 00:51:34,060 >> Modul de a stabili care este de a înlocui cei cu Else / Dacă-s. 993 00:51:34,060 --> 00:51:37,540 Deci, în acest scenariu, se vede că 95 este mai mare de 90, iar apoi o face 994 00:51:37,540 --> 00:51:38,885 nu evaluează restul a declarațiilor. 995 00:51:38,885 --> 00:51:41,900 996 00:51:41,900 --> 00:51:43,150 Orice întrebări despre asta? 997 00:51:43,150 --> 00:51:48,580 998 00:51:48,580 --> 00:51:52,470 >> Deci, există un alt fel condiționată de structura pe care o avem aici pe care ne-am 999 00:51:52,470 --> 00:51:53,390 numim o declarație comutator. 1000 00:51:53,390 --> 00:51:57,390 Deci, acest lucru vă permite să verificați practic ce valoarea a unui număr de pui 1001 00:51:57,390 --> 00:51:59,000 în declarația de switch este. 1002 00:51:59,000 --> 00:52:03,200 Deci, în acest scenariu, suntem de comutare la n, și noi spunem, oh, în cazul în care n este 1003 00:52:03,200 --> 00:52:04,710 unul, apoi imprimați această afirmație. 1004 00:52:04,710 --> 00:52:07,910 Și apoi rupe, ceea ce înseamnă ieșire din declarația de switch. 1005 00:52:07,910 --> 00:52:12,670 >> În cazul în care nu a fost unul, atunci, ei bine, doar în cele din urmă a verifica toate aceste cazuri. 1006 00:52:12,670 --> 00:52:16,280 Și așa se verifică dacă e una sau două sau trei, și se imprimă în consecință. 1007 00:52:16,280 --> 00:52:19,780 Și ce acest cuvânt cheie implicit aici mijloc este, dacă acestea nu au intrat nici un 1008 00:52:19,780 --> 00:52:21,690 Dintre acestea, atunci spune invalid. 1009 00:52:21,690 --> 00:52:25,910 Deci, haideți să spunem cer n și utilizatorul dă-mi patru. 1010 00:52:25,910 --> 00:52:29,470 Ei bine, se potrivește cu nici unul din aceste cazuri, asa ca va imprima ceea ce este în 1011 00:52:29,470 --> 00:52:30,540 secțiunea implicită. 1012 00:52:30,540 --> 00:52:31,180 Da, întrebarea? 1013 00:52:31,180 --> 00:52:32,614 >> SPEAKER 5: Poti folosi Boolean expresii în loc de 1014 00:52:32,614 --> 00:52:33,570 unul, doi, sau trei? 1015 00:52:33,570 --> 00:52:36,940 >> JOSEPH: Deci, întrebarea este poate să utilizați Expresii booleene în loc de unul, 1016 00:52:36,940 --> 00:52:37,940 doi, trei? 1017 00:52:37,940 --> 00:52:40,520 Și în C, te cred Nu pot face asta. 1018 00:52:40,520 --> 00:52:44,320 Dar în alte limbi, pe care s-ar putea întâlni la sfârșitul 1019 00:52:44,320 --> 00:52:46,460 semestru ca JavaScript, poți. 1020 00:52:46,460 --> 00:52:50,050 Ei bine, va trebui să calculeze întâi ca valoare și apoi l utilizați în 1021 00:52:50,050 --> 00:52:50,650 comuta declarație. 1022 00:52:50,650 --> 00:52:50,930 Da? 1023 00:52:50,930 --> 00:52:54,760 >> ROB: Deci, o parte din beneficiul comutator declarații se gândesc dacă ați făcut acest lucru 1024 00:52:54,760 --> 00:52:58,680 ca un Dacă / Altfel, așa cum ar fi în cazul în care n este egal cu este egal cu una sau orice altceva. 1025 00:52:58,680 --> 00:53:00,300 Else / Daca n este egal este egal cu doi, orice. 1026 00:53:00,300 --> 00:53:01,960 Else / Daca n este egal este egal cu trei. 1027 00:53:01,960 --> 00:53:05,930 Deci, modul în care programul ar fi e ar merge secvențial jos lista 1028 00:53:05,930 --> 00:53:07,500 și a verifica, este N unul? 1029 00:53:07,500 --> 00:53:08,040 Nope. 1030 00:53:08,040 --> 00:53:09,070 Este n doi? 1031 00:53:09,070 --> 00:53:09,490 Nope. 1032 00:53:09,490 --> 00:53:10,940 Este n trei? 1033 00:53:10,940 --> 00:53:11,710 Da. 1034 00:53:11,710 --> 00:53:12,610 Face acest lucru. 1035 00:53:12,610 --> 00:53:15,270 >> Întrucât, cu declarații de comutare, este de fapt, posibilitatea de a compila ca acesta să fie 1036 00:53:15,270 --> 00:53:16,360 foarte repede. 1037 00:53:16,360 --> 00:53:19,550 Și, de îndată ce se spune comutator, acesta spune, în regulă, n este doi, eu sunt 1038 00:53:19,550 --> 00:53:23,060 imediat de gând să sari în cazul în care Eu trebuia să înceapă de executare. 1039 00:53:23,060 --> 00:53:26,080 Eu nu am de gând să verifice în primul rând, n este o, este n doi? 1040 00:53:26,080 --> 00:53:28,860 Se poate începe imediat face ceea ce ar trebui să facă. 1041 00:53:28,860 --> 00:53:33,830 >> Și din acest motiv, nu se poate ia condiții booleene. 1042 00:53:33,830 --> 00:53:36,480 Sau altceva, ar trebui să facă secvențială, cum ar fi, bine, este n 1043 00:53:36,480 --> 00:53:37,820 mai mare decât zero? 1044 00:53:37,820 --> 00:53:41,140 Altceva este n mai mare de 10 sau orice altceva. 1045 00:53:41,140 --> 00:53:44,780 >> JOSEPH: În acest caz, dacă ați folosit Dacă / Altfel, Daca, apoi comutatorul ar fi 1046 00:53:44,780 --> 00:53:47,792 rula aproximativ trei ori mai repede decât Dacă / Altfel, dacă. 1047 00:53:47,792 --> 00:53:53,060 1048 00:53:53,060 --> 00:53:56,040 Putem organiza comutatorul în astfel de un mod care nu ne rupe 1049 00:53:56,040 --> 00:53:57,520 după fiecare din cazuri. 1050 00:53:57,520 --> 00:54:00,960 Deci, în acest caz, eu sunt partiționarea Numerele pe care le alege într-o singură și 1051 00:54:00,960 --> 00:54:04,250 două nu este un număr mare și trei fiind un număr mare. 1052 00:54:04,250 --> 00:54:08,290 >> Deci, în acest caz, dacă n este unu sau doi, ea va lovi cazul și apoi se va 1053 00:54:08,290 --> 00:54:10,640 cad prin, deoarece nu există nici o pauză. 1054 00:54:10,640 --> 00:54:11,610 Și se va termina aici. 1055 00:54:11,610 --> 00:54:15,360 Deci, dacă vom alege unul, se va face printf și apoi rupe, astfel încât nici una dintre 1056 00:54:15,360 --> 00:54:17,610 aceasta este executată. 1057 00:54:17,610 --> 00:54:21,870 Și, bineînțeles, în cazul în care acestea intră în trei sau altceva, atunci se va trece 1058 00:54:21,870 --> 00:54:25,320 cei care nu merg acolo, și-l va executa în schimb 1059 00:54:25,320 --> 00:54:27,490 linie corespunzător. 1060 00:54:27,490 --> 00:54:29,390 Există întrebări despre asta? 1061 00:54:29,390 --> 00:54:29,780 Da? 1062 00:54:29,780 --> 00:54:32,642 >> SPEAKER 4: Vrei primi o eroare dacă a avut o pauză, după caz, un dar 1063 00:54:32,642 --> 00:54:34,550 nu am avut ceva pentru ca acesta să facă? 1064 00:54:34,550 --> 00:54:37,820 >> JOSEPH: Deci, întrebarea este să ai o eroare dacă aveți o pauză după 1065 00:54:37,820 --> 00:54:39,730 cazul în care una dar nu e nimic de făcut? 1066 00:54:39,730 --> 00:54:41,520 Și răspunsul este nu. 1067 00:54:41,520 --> 00:54:43,172 Tu nu va primi de fapt o eroare. 1068 00:54:43,172 --> 00:54:44,590 Da, mm hmm. 1069 00:54:44,590 --> 00:54:54,540 >> Deci, ca un fel de mica schimbare aici, Am de gând să pună o printf aici. 1070 00:54:54,540 --> 00:54:55,790 Hopa. 1071 00:54:55,790 --> 00:55:00,994 1072 00:55:00,994 --> 00:55:04,880 Deci, ce-ar imprima aceasta dacă Am pus-o în la fel de intrare? 1073 00:55:04,880 --> 00:55:07,530 1074 00:55:07,530 --> 00:55:07,770 Da. 1075 00:55:07,770 --> 00:55:10,360 Acesta vă va spune că nu a luat un număr mare de două ori, nu? 1076 00:55:10,360 --> 00:55:13,500 Pentru că ar fi lovit primul caz, nu s-ar rupe, și ar cădea 1077 00:55:13,500 --> 00:55:15,730 până la al doilea caz. 1078 00:55:15,730 --> 00:55:16,950 Orice întrebări despre asta? 1079 00:55:16,950 --> 00:55:18,280 >> ROB: Ai avut o altă întrebare? 1080 00:55:18,280 --> 00:55:20,840 >> JOSEPH: OK, se răcească. 1081 00:55:20,840 --> 00:55:22,400 Bine. 1082 00:55:22,400 --> 00:55:25,780 Deci nu este ceva ce numim un operatorul ternar care este de fapt o 1083 00:55:25,780 --> 00:55:29,010 sintaxa alternativă de a face Dacă și apoi altceva. 1084 00:55:29,010 --> 00:55:30,470 Și vă permite să faceți totul pe o singură linie. 1085 00:55:30,470 --> 00:55:34,110 Deci, în acest program special, Eu cer utilizatorului pentru n. 1086 00:55:34,110 --> 00:55:37,190 Și dacă n este mai mare de 100, am spune le-au luat un număr mare. 1087 00:55:37,190 --> 00:55:39,560 Altfel le spun ei ales un număr mic. 1088 00:55:39,560 --> 00:55:43,030 >> Deci, putem folosi această sintaxă foarte lung, șir, S, iar apoi verificați dacă n este 1089 00:55:43,030 --> 00:55:45,260 mai mare de 100 și atribuie ea în consecință. 1090 00:55:45,260 --> 00:55:49,450 Dar putem face acest lucru mult mai concis folosind această sintaxă operatorul ternar 1091 00:55:49,450 --> 00:55:52,090 care implică o întrebare marca și un colon. 1092 00:55:52,090 --> 00:55:55,070 Deci, semnul de întrebare este, în esență, pune o întrebare, nu? 1093 00:55:55,070 --> 00:55:56,625 >> ROB: Poate mări pe asta. 1094 00:55:56,625 --> 00:55:57,372 >> JOSEPH: Da. 1095 00:55:57,372 --> 00:56:00,210 Bun punct. 1096 00:56:00,210 --> 00:56:02,550 Deci, aceasta este operatorul ternar. 1097 00:56:02,550 --> 00:56:06,100 Eu întreb mai întâi problema, n este mai mare de 100? 1098 00:56:06,100 --> 00:56:09,770 Dacă este, atunci am executa primul parte înainte de colon. 1099 00:56:09,770 --> 00:56:13,360 Dacă nu este, atunci am executa a doua parte după colon. 1100 00:56:13,360 --> 00:56:16,640 Deci, dacă n este mai mare de 100, apoi se ridică înalt și pune 1101 00:56:16,640 --> 00:56:18,360 că în șir s. 1102 00:56:18,360 --> 00:56:22,170 Dacă n este mai mic de 100, se ridică scăzută și apoi pune că în șir s. 1103 00:56:22,170 --> 00:56:30,186 Astfel că va condensa această bucată mare jos în doar că o singură linie. 1104 00:56:30,186 --> 00:56:32,010 >> SPEAKER 5: E popular? 1105 00:56:32,010 --> 00:56:36,070 >> JOSEPH: Da, este destul de popular pentru lucruri în care, în esență, pe care doriți să 1106 00:56:36,070 --> 00:56:38,700 Nu o misiune bazată pe un fel de stare. 1107 00:56:38,700 --> 00:56:43,110 Și în acest caz, am încercat pentru a atribui o valoare de șir s. 1108 00:56:43,110 --> 00:56:44,840 Nu e așa de - 1109 00:56:44,840 --> 00:56:47,670 Cred că nu-mi place cu adevărat în alte cazuri. 1110 00:56:47,670 --> 00:56:49,390 Dar este deosebit de util pentru această misiune. 1111 00:56:49,390 --> 00:56:54,490 >> ROB: Acesta este un model destul de comun în cazul în care aveți unele variabile care 1112 00:56:54,490 --> 00:56:58,200 ai de gând să spui, în cazul în care ceva, setați această variabilă pentru o valoare, altfel, setați 1113 00:56:58,200 --> 00:56:59,810 această variabilă de la o altă valoare. 1114 00:56:59,810 --> 00:57:03,360 Și că este scenariul în cazul în care utilizați un ternar. 1115 00:57:03,360 --> 00:57:05,220 >> JOSEPH: Și tu economisire o mulțime de linii, nu? 1116 00:57:05,220 --> 00:57:08,090 Și-l face doar codul, fără îndoială, un pic mai ușor de citit. 1117 00:57:08,090 --> 00:57:08,635 Da, întrebarea? 1118 00:57:08,635 --> 00:57:12,384 >> SPEAKER 6: Pentru un ternar, ai putea merge, egali șir s s, semn de întrebare? 1119 00:57:12,384 --> 00:57:15,280 Și atunci ai putea avea, să zicem, cinci opțiuni diferite. 1120 00:57:15,280 --> 00:57:18,310 Și în funcție de ce numărul n a fost, ai alege una dintre cele? 1121 00:57:18,310 --> 00:57:22,210 >> JOSEPH: Deci, întrebarea este, există o un fel de sintaxă, unde puteți face șir 1122 00:57:22,210 --> 00:57:25,910 s este egal cu n, iar apoi au mai mult de două Opțiuni după care semn de întrebare? 1123 00:57:25,910 --> 00:57:29,740 Și un răspuns simplu este nu, nu e într-adevăr o modalitate buna de a face acest lucru, cu excepția cazului 1124 00:57:29,740 --> 00:57:33,850 pe care doriți să cuib ternare multiple Operatorii interiorul unul de celălalt. 1125 00:57:33,850 --> 00:57:38,050 >> Ai putea face ca n mai mare de 100, semn de întrebare, și apoi un alt 1126 00:57:38,050 --> 00:57:41,850 operatorul ternar, n mai mare de 50, semn de întrebare, și cuib în felul acesta. 1127 00:57:41,850 --> 00:57:45,240 Dar, în acest scenariu, codul este obtinerea fel de greu de citit și murdar, 1128 00:57:45,240 --> 00:57:47,920 și ar fi mai bine să meargă doar la În cazul în care o declarație / Altele, la acel moment. 1129 00:57:47,920 --> 00:57:54,530 >> ROB: Și, de asemenea, ca o notă separată, PHP pune în aplicare în mod incorect ternar 1130 00:57:54,530 --> 00:57:58,053 Operatorul astfel încât ternaries imbricate chiar nu funcționează așa cum ar trebui. 1131 00:57:58,053 --> 00:57:58,840 >> JOSEPH: Da. 1132 00:57:58,840 --> 00:58:01,170 Deci, devine un pic confuz, mai ales atunci când te duci 1133 00:58:01,170 --> 00:58:02,145 de limbi diferite. 1134 00:58:02,145 --> 00:58:04,810 >> ROB: Este confuz suficient ca limbi sunt în neregulă cu el. 1135 00:58:04,810 --> 00:58:08,030 1136 00:58:08,030 --> 00:58:11,510 >> JOSEPH: Deci, de fapt, doar pentru a clarifica, știe toată lumea ce că 1137 00:58:11,510 --> 00:58:13,900 % S nu pe aici? 1138 00:58:13,900 --> 00:58:15,650 Orice întrebări despre asta? 1139 00:58:15,650 --> 00:58:19,760 Cred că doar pentru aparatul de fotografiat,% s de fapt ne permite să pună un substituent 1140 00:58:19,760 --> 00:58:20,790 pentru un șir. 1141 00:58:20,790 --> 00:58:23,920 Și apoi, la final, vom preciza că variabilă dorim să punem în acest 1142 00:58:23,920 --> 00:58:25,500 loc de titular este s. 1143 00:58:25,500 --> 00:58:27,730 Astfel că are de fapt e și îl pune în aici. 1144 00:58:27,730 --> 00:58:32,130 Și apoi se va imprima, ai ales un mare sau ai ales un număr mic. 1145 00:58:32,130 --> 00:58:33,770 OK. 1146 00:58:33,770 --> 00:58:36,970 >> Astfel încât buclele permite să efectuați lucruri cu mișcări circulare, corect? 1147 00:58:36,970 --> 00:58:40,300 S-ar putea s-au confruntat în acest Zero în formă de totdeauna bucle 1148 00:58:40,300 --> 00:58:45,650 sau Repetare Până sau Repetați o anumită număr de ori. 1149 00:58:45,650 --> 00:58:47,540 Deci, de ce este acest lucru bun pentru noi? 1150 00:58:47,540 --> 00:58:51,500 Ei bine, în C, să spunem că avem această cântec implementat în Scratch care 1151 00:58:51,500 --> 00:58:53,450 cântă, aceasta este piesa care nu se termină niciodată. 1152 00:58:53,450 --> 00:58:55,710 Se merge doar pe și de pe și pe totdeauna și pentru totdeauna. 1153 00:58:55,710 --> 00:58:59,395 Ei bine, nu se poate face cu adevărat un program de care are un număr infinit de printf 1154 00:58:59,395 --> 00:59:00,850 declarații în asta, nu? 1155 00:59:00,850 --> 00:59:04,900 >> Deci, în acest scenariu special, într-un fel care le-ar putea face acest lucru și 1156 00:59:04,900 --> 00:59:09,330 pentru a imprima pentru totdeauna este de a în loc să utilizați o buclă de timp. 1157 00:59:09,330 --> 00:59:13,640 Deci, o buclă în timp ce va executa ceea ce este în organism a celor două acolade care 1158 00:59:13,640 --> 00:59:17,250 îi aparține bazat pe ceea ce conditie este. 1159 00:59:17,250 --> 00:59:21,170 Deci, în acest exemplu particular înainte, dacă ne-o dorim pentru a imprima aceasta pentru totdeauna, ceea ce 1160 00:59:21,170 --> 00:59:23,590 am putea face? 1161 00:59:23,590 --> 00:59:25,190 Ei bine, sigur, corect? 1162 00:59:25,190 --> 00:59:32,290 >> Deci, acest tip de combină ideea unor expresie booleană 1163 00:59:32,290 --> 00:59:33,610 împreună cu o buclă. 1164 00:59:33,610 --> 00:59:35,780 Și am aflat despre Boolean expresii anterioare. 1165 00:59:35,780 --> 00:59:39,650 Deci, ori de câte ori starea de interior că în timp ce rămâne adevărat, această buclă 1166 00:59:39,650 --> 00:59:41,480 se va executa pe și de pe și pe. 1167 00:59:41,480 --> 00:59:44,640 Și în acest caz, dacă ne-am furniza cu adevărat, acest lucru duce la un infinit 1168 00:59:44,640 --> 00:59:49,310 buclă care imprimă piesa de pe și pe și pe așa cum ne-am dorit mai înainte, fără 1169 00:59:49,310 --> 00:59:52,410 având un program care are un infinit numărul de declarații printf, care este 1170 00:59:52,410 --> 00:59:55,220 nu este posibil. 1171 00:59:55,220 --> 00:59:57,810 >> Deci mai convingător, deși, aveți posibilitatea să utilizați acest lucru cu un 1172 00:59:57,810 --> 00:59:59,710 variabilă și o condiție. 1173 00:59:59,710 --> 01:00:04,420 Deci, haideți să spunem că vrem să se repete frază, total de slab, de 10 ori. 1174 01:00:04,420 --> 01:00:08,380 Deci, ce se poate face cu o buclă în timp ce este puteți inițializa în primul rând un contor 1175 01:00:08,380 --> 01:00:10,860 în afara variabilă a În timp ce buclă la 10. 1176 01:00:10,860 --> 01:00:14,360 Și apoi, practic, de fiecare dată când mergeți prin bucla timp, să tipăriți 1177 01:00:14,360 --> 01:00:19,090 declarația și apoi scădea contra variabilă, până la sfârșitul anului, 1178 01:00:19,090 --> 01:00:23,020 la un moment dat, odată ce scade am suficient ori, 1 de la I ori suficiente - 1179 01:00:23,020 --> 01:00:27,290 și doar pentru a clarifica, am minus minus înseamnă că este egal cu I minus 1. 1180 01:00:27,290 --> 01:00:31,280 >> Care va aduce, practic, am jos la punct în care o dată am lovit la zero, aceasta 1181 01:00:31,280 --> 01:00:35,260 condiție nu mai este valabil și deci ce iese din bucla. 1182 01:00:35,260 --> 01:00:37,045 Astfel total de slab imprimă doar de 10 ori. 1183 01:00:37,045 --> 01:00:39,550 1184 01:00:39,550 --> 01:00:41,080 Orice întrebări cu privire la o buclă în timp ce? 1185 01:00:41,080 --> 01:00:44,580 1186 01:00:44,580 --> 01:00:46,790 OK. 1187 01:00:46,790 --> 01:00:50,550 >> Deci, există un fel putem face ceea ce ne-am a făcut într-un mod mult mai concis cu 1188 01:00:50,550 --> 01:00:51,715 ceea ce noi numim o pentru buclă. 1189 01:00:51,715 --> 01:00:55,750 Deci, o buclă Pentru constă dintr-un inițializare, o condiție, și un 1190 01:00:55,750 --> 01:00:58,950 actualizare, așa cum am avut-o înainte în această buclă în timp ce. 1191 01:00:58,950 --> 01:00:59,890 Deci, haideți să aruncăm o privire. 1192 01:00:59,890 --> 01:01:02,900 În această buclă în timp ce, am avut o inițializare, apoi am avut o 1193 01:01:02,900 --> 01:01:04,260 condiție pe care am verificat. 1194 01:01:04,260 --> 01:01:06,450 Și apoi am avut o actualizare pas în partea de sus. 1195 01:01:06,450 --> 01:01:10,060 >> Cu o buclă pentru, aceasta, practic, ia aceste trei lucruri și se condensează 1196 01:01:10,060 --> 01:01:11,370 în jos într-o singură linie. 1197 01:01:11,370 --> 01:01:15,130 Deci, primul lucru pe care-l face în Pentru buclă este inițializarea. 1198 01:01:15,130 --> 01:01:19,090 Și apoi faci o virgulă, și apoi faci starea, care este I 1199 01:01:19,090 --> 01:01:22,200 mai mare decât zero se duce acolo, și apoi etapa de actualizare. 1200 01:01:22,200 --> 01:01:26,470 Deci, acest lucru se face la foarte capăt al corpului buclei. 1201 01:01:26,470 --> 01:01:28,790 Deci, aceste două programe sunt în esență echivalente. 1202 01:01:28,790 --> 01:01:31,960 1203 01:01:31,960 --> 01:01:33,870 >> Orice întrebări? 1204 01:01:33,870 --> 01:01:37,000 Deci, ceea ce este o diferență între aceste două? 1205 01:01:37,000 --> 01:01:38,000 Poate cineva sa-l subliniez? 1206 01:01:38,000 --> 01:01:40,480 Acesta ar putea fi un pic mai subtil. 1207 01:01:40,480 --> 01:01:41,930 Este doar o foarte mică diferență. 1208 01:01:41,930 --> 01:01:42,330 Da? 1209 01:01:42,330 --> 01:01:49,008 >> DIFUZOR 5: N-ar putea folosi variabila eu afara pentru bucla 1210 01:01:49,008 --> 01:01:49,962 [Inaudibil]? 1211 01:01:49,962 --> 01:01:50,900 >> JOSEPH: Exact. 1212 01:01:50,900 --> 01:01:53,550 Deci, acest lucru este ceva vom ajunge la mai târziu numit domeniu de aplicare variabil. 1213 01:01:53,550 --> 01:01:56,610 Dar, în esență, această int i viața în afara de această buclă în timp ce. 1214 01:01:56,610 --> 01:01:59,800 Deci, odată ce această buclă în timp ce se face de executare, voi putea folosi mai târziu am 1215 01:01:59,800 --> 01:02:00,880 pe în program. 1216 01:02:00,880 --> 01:02:05,430 >> Întrucât, cu acest lucru pentru bucla, aceasta int i este luneta interiorul acestei pentru buclă. 1217 01:02:05,430 --> 01:02:10,240 Și pentru că este în interiorul acestei porțiuni buclei Pentru, care începe 1218 01:02:10,240 --> 01:02:13,200 la parantezele și se termină cu bretele buclat acolo. 1219 01:02:13,200 --> 01:02:16,120 Orice lucru care este declarat în interiorul aici nu pot fi utilizate în afara. 1220 01:02:16,120 --> 01:02:20,420 Deci, dacă am încerca să folosesc in afara, acesta va Spune-mi, simbol nedeclarate. 1221 01:02:20,420 --> 01:02:22,420 Și în esență, eu nu ar fi putea să-l utilizeze. 1222 01:02:22,420 --> 01:02:28,460 >> ROB: Și, ei bine, acum 10 ani, în literalmente toate cazurile, acolade sunt 1223 01:02:28,460 --> 01:02:31,140 ceea ce folosit pentru a determina Domeniul unei variabile. 1224 01:02:31,140 --> 01:02:37,240 Deci acolo, int I este egal cu 10 este declarat în interiorul acestui 1225 01:02:37,240 --> 01:02:38,520 set de acolade. 1226 01:02:38,520 --> 01:02:42,530 Și așa, atunci, atâta timp cât încercați să utilizați I înainte de această acoladă, e în regulă. 1227 01:02:42,530 --> 01:02:47,090 1228 01:02:47,090 --> 01:02:51,460 S-ar putea vedea atunci când tastați face, te vezi liniuță, liniuță, std, egal, C99. 1229 01:02:51,460 --> 01:02:57,100 >> Astfel că este o versiune mai recentă de C care GCC a pus în aplicare, care oferă, de asemenea, 1230 01:02:57,100 --> 01:02:58,740 această comandă rapidă. 1231 01:02:58,740 --> 01:03:03,505 Deci, acest lucru folosit pentru a nu fi permisă în C. Și puteți vedea de ce, pentru că acest lucru int 1232 01:03:03,505 --> 01:03:07,600 I este în afara acestui acoladă, dar este încă considerată a fi în 1233 01:03:07,600 --> 01:03:09,750 domeniul de aplicare a acestor acolade. 1234 01:03:09,750 --> 01:03:14,120 Dar acesta este un lucru foarte convenabil, și de aceea este o extensie bun. 1235 01:03:14,120 --> 01:03:15,370 >> JOSEPH: Orice întrebări? 1236 01:03:15,370 --> 01:03:17,550 1237 01:03:17,550 --> 01:03:19,260 OK. 1238 01:03:19,260 --> 01:03:22,820 Deci, ceea ce este mai util este faptul că, uneori, vrei un fel de dinamism în 1239 01:03:22,820 --> 01:03:23,410 bucla, nu? 1240 01:03:23,410 --> 01:03:26,350 Tu nu vrei doar pentru a imprima în mod necesar total de slab tot timpul, te 1241 01:03:26,350 --> 01:03:28,650 Vreau să conta în jos de la 10 sau ceva. 1242 01:03:28,650 --> 01:03:32,010 Și astfel încât să puteți utiliza variabila contor interiorul buclei, de asemenea. 1243 01:03:32,010 --> 01:03:35,530 Și în acest caz, acest program doar contează în jos de la 10 tot drumul în jos. 1244 01:03:35,530 --> 01:03:39,260 Și ceea ce nu imprima? 1245 01:03:39,260 --> 01:03:42,790 Acesta nu se imprimă de zero, dreapta, pentru că atunci când - 1246 01:03:42,790 --> 01:03:45,460 Da, de asemenea, nu se imprimă 11. 1247 01:03:45,460 --> 01:03:49,200 >> Deci, nu se imprimă de zero, pentru că atunci când I este zero, amintiți-vă, aceasta evaluează 1248 01:03:49,200 --> 01:03:52,170 condiție înainte de a intra pe a executa corpul buclei. 1249 01:03:52,170 --> 01:03:56,820 Și când am este zero, acest lucru este fals, așa nu se imprima de numărare în jos 1250 01:03:56,820 --> 01:04:00,200 la zero, doar afiseaza numărare pe 10 tot drumul până la 1. 1251 01:04:00,200 --> 01:04:03,420 Dacă am vrut de fapt o pentru a imprima la zero, atunci ne-ar pune un semn egal 1252 01:04:03,420 --> 01:04:04,750 după această mare de semn. 1253 01:04:04,750 --> 01:04:09,400 1254 01:04:09,400 --> 01:04:10,130 OK. 1255 01:04:10,130 --> 01:04:16,410 >> Deci, un mod de a face validare de intrare, care este atunci când cere utilizatorului să facă 1256 01:04:16,410 --> 01:04:18,620 ceva, doriți să vă asigurați că acestea urmați instrucțiunile dumneavoastră, este de a folosi 1257 01:04:18,620 --> 01:04:19,400 bucla de timp, corect? 1258 01:04:19,400 --> 01:04:22,990 Deci, în acest caz particular, eu cer pentru un număr pozitiv, iar apoi eu sunt 1259 01:04:22,990 --> 01:04:23,810 de așteptare pentru intrarea. 1260 01:04:23,810 --> 01:04:28,210 >> Și apoi am verificat timp de intrare este mai mică decât zero, păstrați cerându-le. 1261 01:04:28,210 --> 01:04:32,100 Atâta timp cât mi-au dat un număr că nu este pozitiv, tot întreb, 1262 01:04:32,100 --> 01:04:33,600 tot întreb, tot întreabă. 1263 01:04:33,600 --> 01:04:35,860 Dar ceea ce este un fel de ciudat despre asta? 1264 01:04:35,860 --> 01:04:38,570 Sau ceea ce nu pare a fi optim de această structură aici? 1265 01:04:38,570 --> 01:04:44,282 1266 01:04:44,282 --> 01:04:44,758 Oricine? 1267 01:04:44,758 --> 01:04:45,234 Da? 1268 01:04:45,234 --> 01:04:47,614 >> SPEAKER 6: Te repetarea instrucțiunea de două ori. 1269 01:04:47,614 --> 01:04:48,100 >> JOSEPH: Corect. 1270 01:04:48,100 --> 01:04:50,090 Deci avem două declarații printf aici, nu? 1271 01:04:50,090 --> 01:04:53,440 Deci, există un fel, am putea obține acest lucru doar până la una care ar face noastre 1272 01:04:53,440 --> 01:04:57,170 codul mai ușor de citit și un pic mai curat. 1273 01:04:57,170 --> 01:05:00,180 Și atunci nu ne-ar trebui să au Ia în de două ori la fel de bine. 1274 01:05:00,180 --> 01:05:03,740 Și într-un fel, puteți face acest lucru este utilizând o buclă Do-timp. 1275 01:05:03,740 --> 01:05:07,670 >> Și o buclă Do-În timp ce este de fapt o diferite forme de o buclă în timp ce în cazul în care 1276 01:05:07,670 --> 01:05:11,460 tot ce este în acolade este executat cel puțin o dată. 1277 01:05:11,460 --> 01:05:14,840 Deci, aici, declar, int de intrare, în afara primul. 1278 01:05:14,840 --> 01:05:18,100 Și apoi eu spun doar, face acest lucru instrucțiuni în timp ce de intrare 1279 01:05:18,100 --> 01:05:19,140 este mai mică decât zero. 1280 01:05:19,140 --> 01:05:20,530 Așa că lovește facem mai întâi. 1281 01:05:20,530 --> 01:05:24,190 Acesta va executa întotdeauna cel puțin o dată, așa că va cere întotdeauna utilizatorului 1282 01:05:24,190 --> 01:05:25,960 de intrare, cel puțin o dată. 1283 01:05:25,960 --> 01:05:29,390 Și apoi se evaluează că de intrare, și merge pe într-un cerc. 1284 01:05:29,390 --> 01:05:30,135 Da, întrebarea? 1285 01:05:30,135 --> 01:05:32,602 >> SPEAKER 6: Există o modalitate de a face acest lucru [Inaudibil] tipuri, cum ar fi dacă ai spune, 1286 01:05:32,602 --> 01:05:34,268 GetString, și cineva [inaudibil] 1287 01:05:34,268 --> 01:05:35,220 există o modalitate de a [inaudibil] 1288 01:05:35,220 --> 01:05:40,060 >> JOSEPH: Deci, întrebarea este, există o modalitate de a face validare de intrare în cazul în care utilizatorul 1289 01:05:40,060 --> 01:05:41,850 nu se pune în dreptul tip de variabile? 1290 01:05:41,850 --> 01:05:44,460 Deci, dacă am cere pentru un int și ei ne da un șir în loc. 1291 01:05:44,460 --> 01:05:49,110 Și în funcțiile pe care le pune în aplicare pentru tine, getint, getString în toate 1292 01:05:49,110 --> 01:05:52,680 aceste funcții, ei de fapt deja face acest tip de intrare tip de bază 1293 01:05:52,680 --> 01:05:54,120 validare sub capota. 1294 01:05:54,120 --> 01:05:57,390 Deci, dacă sunteți folosind funcțiile pe care le ți-a dat, nu trebuie cu adevărat să. 1295 01:05:57,390 --> 01:06:01,380 >> Dar, dacă vrei să te uiți mai mult în modul în care puteți face de fapt pe care, poti sa te uiti 1296 01:06:01,380 --> 01:06:03,360 sub capota la dosar I/O-- 1297 01:06:03,360 --> 01:06:07,990 nu depune, funcțiile standard de I / O ca o lectură de la intrarea standard și 1298 01:06:07,990 --> 01:06:08,580 de ieșire standard. 1299 01:06:08,580 --> 01:06:10,630 Și puteți obține un sentiment mai bun de modul în care s-ar putea face asta. 1300 01:06:10,630 --> 01:06:13,670 >> ROB: O problemă, însă, este în mod special cu exemplul de tine 1301 01:06:13,670 --> 01:06:17,070 a spus, vă așteptați un șir și am introduce un int. 1302 01:06:17,070 --> 01:06:20,110 Cum ar fi să vă spun diferenta între doresc în mod intenționat 1303 01:06:20,110 --> 01:06:23,130 string 123 versus doresc int 123? 1304 01:06:23,130 --> 01:06:29,230 Deci șir, e destul de mult nu există nici o validare, e doar ceea ce ei 1305 01:06:29,230 --> 01:06:31,600 a intrat va interpreta ca un șir. 1306 01:06:31,600 --> 01:06:35,790 >> Int este mai ușor, pentru că indiferent de intrare luați de la utilizator, sunteți 1307 01:06:35,790 --> 01:06:37,470 ținând mereu un șir. 1308 01:06:37,470 --> 01:06:40,650 Și astfel încât șir puteți apoi verifica, sunt toate acestea 1309 01:06:40,650 --> 01:06:44,218 cifre numerice de fapt? 1310 01:06:44,218 --> 01:06:45,170 >> JOSEPH: OK. 1311 01:06:45,170 --> 01:06:46,420 Orice întrebări cu privire la o buclă Do-timp? 1312 01:06:46,420 --> 01:06:49,170 >> ROB: Oh, iar acest lucru este, de asemenea - 1313 01:06:49,170 --> 01:06:55,130 merge înapoi la domeniul de aplicare, o oarecum comun greseala este încercarea de a utiliza unele locale 1314 01:06:55,130 --> 01:06:59,540 variabilă din cadrul acestei Do-timp buclă în interiorul acestei condiții. 1315 01:06:59,540 --> 01:07:02,850 Și, de fapt, dacă ne-am scăpat de acest lucru și a spus, de intrare int egal 1316 01:07:02,850 --> 01:07:06,990 Getint, atunci compilatorul va striga la ne, pentru că de intrare nu există 1317 01:07:06,990 --> 01:07:08,900 în afara domeniului de aplicare al aceste acolade. 1318 01:07:08,900 --> 01:07:10,792 >> JOSEPH: Și de aceea noi nevoie de această linie aici. 1319 01:07:10,792 --> 01:07:13,620 1320 01:07:13,620 --> 01:07:14,630 OK. 1321 01:07:14,630 --> 01:07:17,530 Astfel încât să puteți, de asemenea, rupe dintr-o bucla devreme, dacă doriți să. 1322 01:07:17,530 --> 01:07:21,240 Deci, acesta este un mod diferit de punerea în aplicare a ceea ce ne-am pus în aplicare. 1323 01:07:21,240 --> 01:07:24,340 Și în loc de a folosi condiției în paranteze, suntem folosind o 1324 01:07:24,340 --> 01:07:26,920 If interiorul corpului din bucla Do-timp. 1325 01:07:26,920 --> 01:07:30,000 >> Și, practic, atunci când intrarea este în cele din urmă mai mare decât zero, vom 1326 01:07:30,000 --> 01:07:31,000 iesi din bucla. 1327 01:07:31,000 --> 01:07:33,420 Și astfel vom merge tot drumul până aici. 1328 01:07:33,420 --> 01:07:37,920 Și puteți vedea că acest lucru ar probabil să fie preferată în această 1329 01:07:37,920 --> 01:07:39,870 scenariu, pentru că e un pic bit curat și un pic 1330 01:07:39,870 --> 01:07:41,380 pic mai ușor de citit. 1331 01:07:41,380 --> 01:07:45,210 Întrucât acest lucru, un fel de au linii suplimentare în ea. 1332 01:07:45,210 --> 01:07:47,890 E doar un pic mai urât, Cred că, într-un sens. 1333 01:07:47,890 --> 01:07:48,530 Da, întrebarea? 1334 01:07:48,530 --> 01:07:52,178 >> SPEAKER 4: Va rupe numai obține Ți-ai pierdut un set de aparat dentar? 1335 01:07:52,178 --> 01:07:53,080 >> JOSEPH: Corect. 1336 01:07:53,080 --> 01:07:58,100 Deci, întrebarea este se va rupe doar te scot de o buclă? 1337 01:07:58,100 --> 01:07:59,280 Iar răspunsul este da. 1338 01:07:59,280 --> 01:08:04,290 Deci, dacă ați imbricate Pentru bucle, pentru de exemplu, dacă am Pentru int I este egal cu 0 1339 01:08:04,290 --> 01:08:09,040 până la 10 și apoi pentru int J este egal cu 0 până la 10, dacă am ieși din interior 1340 01:08:09,040 --> 01:08:12,310 buclă, voi merge în continuare la bucla exterioară. 1341 01:08:12,310 --> 01:08:15,760 Asa ca va ține de efectuarea operațiunile de pe exterior. 1342 01:08:15,760 --> 01:08:17,640 Orice întrebări despre asta? 1343 01:08:17,640 --> 01:08:18,000 Da? 1344 01:08:18,000 --> 01:08:21,760 >> SPEAKER 5: Dar rupe numai funcții pentru acolade, nu pentru alte 1345 01:08:21,760 --> 01:08:22,230 declarații? 1346 01:08:22,230 --> 01:08:22,700 [Inaudibil] 1347 01:08:22,700 --> 01:08:27,620 >> JOSEPH: Deci, întrebarea este se va rupe Funcția numai pentru bucle, spre deosebire de 1348 01:08:27,620 --> 01:08:29,014 alte declarații, cum ar fi cazul? 1349 01:08:29,014 --> 01:08:32,950 Și da, că este cazul, pentru că esti de rupere dintr-o buclă, drept, 1350 01:08:32,950 --> 01:08:33,630 într-un sens. 1351 01:08:33,630 --> 01:08:37,215 >> ROB: În marea majoritate a cazurilor, este aceasta este un fel de cazul în care ceva, 1352 01:08:37,215 --> 01:08:37,660 apoi pauza. 1353 01:08:37,660 --> 01:08:41,580 Deci, nu trebuie să rupă să se aplice în cazul în care este împachetat în jurul ei. 1354 01:08:41,580 --> 01:08:45,250 Și, de asemenea, acest lucru nu este de mult o buclă, dar amintiți-vă că switch-uri sunt, de asemenea, 1355 01:08:45,250 --> 01:08:46,340 defalcate din de pauze. 1356 01:08:46,340 --> 01:08:48,390 Am văzut pauze de utilizat cu switch-uri înainte. 1357 01:08:48,390 --> 01:08:52,189 >> JOSEPH: Și puteți, de asemenea, să le utilizeze în bucle de timp și pentru bucle. 1358 01:08:52,189 --> 01:08:54,560 Orice întrebări? 1359 01:08:54,560 --> 01:08:55,830 OK. 1360 01:08:55,830 --> 01:08:57,779 Deci, data viitoare up este funcții. 1361 01:08:57,779 --> 01:09:01,500 Deci, este posibil să fi folosit unul dintre aceste BYOB blocuri în proiect de la zero. 1362 01:09:01,500 --> 01:09:04,569 Iar acest lucru permite, practic, vă pentru a defini un set de 1363 01:09:04,569 --> 01:09:05,680 instrucțiuni care trebuie urmate. 1364 01:09:05,680 --> 01:09:09,569 >> Și ce vreau să spun prin asta este să ne gândim înapoi la matematica, drept, algebra. 1365 01:09:09,569 --> 01:09:13,370 Ai ceea ce noi numim o functie de x, unele variabile, și să spunem acest lucru 1366 01:09:13,370 --> 01:09:16,080 Funcția este f de x este egal cu x plus 5. 1367 01:09:16,080 --> 01:09:20,410 Astfel încât vă puteți gândi de f de x ca acest negru casetă care ia 15 în și apoi 1368 01:09:20,410 --> 01:09:22,590 produce 20. 1369 01:09:22,590 --> 01:09:26,630 >> Cu atât mai mult, în general, o funcție este ceva care are unele intrări și 1370 01:09:26,630 --> 01:09:27,880 apoi produce unele rezultate. 1371 01:09:27,880 --> 01:09:31,920 1372 01:09:31,920 --> 01:09:32,960 Și de ce sunt funcții de bun? 1373 01:09:32,960 --> 01:09:35,189 Sunt bune pentru un număr de motive. 1374 01:09:35,189 --> 01:09:40,470 Deci, poate cineva vrea să ia o lovitură de cuțit la ce organizație înseamnă? 1375 01:09:40,470 --> 01:09:42,630 În ceea ce privește ce funcții sunt de ajutor? 1376 01:09:42,630 --> 01:09:43,090 Da? 1377 01:09:43,090 --> 01:09:44,735 >> SPEAKER 4: Se face dvs. codul mai ușor de citit. 1378 01:09:44,735 --> 01:09:45,399 >> JOSEPH: Corect. 1379 01:09:45,399 --> 01:09:47,670 Deci unul dintre lucrurile se face codul mai ușor de citit, nu? 1380 01:09:47,670 --> 01:09:53,710 În loc de a avea ca int x este egal cu x ori x ori x, pot avea cub de x, 1381 01:09:53,710 --> 01:09:57,190 care este mai ușor de citit și mai mult ușor de înțeles pentru un cititor. 1382 01:09:57,190 --> 01:10:01,150 >> Organizație este, de asemenea, din punct de vedere despart codul de gestionat în 1383 01:10:01,150 --> 01:10:05,610 porțiuni, astfel că, în loc de a încerca să să pună în aplicare toate astea într-o singură secțiune lung 1384 01:10:05,610 --> 01:10:09,070 în principal, puteți fel de ea divizat în ca, OK, hai să scrie o funcție 1385 01:10:09,070 --> 01:10:11,910 la cub ceva, să scrie o funcționeze la pătrat ceva. 1386 01:10:11,910 --> 01:10:15,950 În acest fel, puteți să-l împărți în mici, piese mici pe care le puteți aborda 1387 01:10:15,950 --> 01:10:18,944 spre deosebire de încercarea de a aborda o mare problemă dintr-o dată. 1388 01:10:18,944 --> 01:10:21,806 >> Piese sau chiar mici, mici care: ROB tu și un partener poate aborda. 1389 01:10:21,806 --> 01:10:22,283 >> JOSEPH: Da. 1390 01:10:22,283 --> 01:10:23,855 >> ROB: Deci, în loc de atât de Încerci să implanteze un 1391 01:10:23,855 --> 01:10:27,170 funcționeze în același timp. 1392 01:10:27,170 --> 01:10:28,800 >> JOSEPH: Simplificare. 1393 01:10:28,800 --> 01:10:30,050 Oricine vrea să ia o presupunere? 1394 01:10:30,050 --> 01:10:33,080 1395 01:10:33,080 --> 01:10:33,410 Da? 1396 01:10:33,410 --> 01:10:34,675 >> SPEAKER 5: Mai mult repetiție. 1397 01:10:34,675 --> 01:10:35,260 >> JOSEPH: Corect. 1398 01:10:35,260 --> 01:10:39,210 Deci, un lucru pe care le puteți face cu simplificare este că e un fel de pe 1399 01:10:39,210 --> 01:10:42,520 aceleași linii ca re-utilizare este că o dată ce am scrie o funcție cub, eu pot 1400 01:10:42,520 --> 01:10:45,410 doar folosi acest peste si peste si peste din nou în programul meu în loc de tastare 1401 01:10:45,410 --> 01:10:49,610 x ori x ori x și peste de peste si peste din nou. 1402 01:10:49,610 --> 01:10:52,980 Și simplificarea aici, de asemenea, doar înseamnă că face codul fel dumneavoastră de 1403 01:10:52,980 --> 01:10:55,900 mai ușor pentru a depana o dată ce împărți asta în funcții. 1404 01:10:55,900 --> 01:10:58,250 Pentru că atunci puteți localiza unde problemele tale sunt un fel de. 1405 01:10:58,250 --> 01:11:00,910 1406 01:11:00,910 --> 01:11:02,160 Orice întrebări? 1407 01:11:02,160 --> 01:11:04,200 1408 01:11:04,200 --> 01:11:06,540 >> Deci, o altă idee este de abstractizare, corect? 1409 01:11:06,540 --> 01:11:07,390 Această cutie neagră. 1410 01:11:07,390 --> 01:11:11,360 Ca nu stii ce face getint să primească input de la utilizator? 1411 01:11:11,360 --> 01:11:12,510 Noi nu am cu adevărat ți-a spus, nu? 1412 01:11:12,510 --> 01:11:15,670 Tot ce v-am spus este getint nu exact ceea ce spune că face. 1413 01:11:15,670 --> 01:11:18,440 Deci, chiar dacă noi nu-ți spun cât de funcționează, vei ști. 1414 01:11:18,440 --> 01:11:21,670 >> Deci, în acest caz particular, acest lucru este o funcție de patru ori, care nu 1415 01:11:21,670 --> 01:11:24,520 lucruri diferite pentru o intrare pentru a produce o ieșire. 1416 01:11:24,520 --> 01:11:28,050 Și vă puteți patru ori un număr prin înmulțirea cu patru. 1417 01:11:28,050 --> 01:11:30,790 Sau poti ceea ce noi numim bit o schimbare de două. 1418 01:11:30,790 --> 01:11:32,960 Și vom acoperi acest un pic mai târziu. 1419 01:11:32,960 --> 01:11:36,570 Și nu e nevoie să știe cum acest Funcția de fapt, funcționează atât timp cât 1420 01:11:36,570 --> 01:11:37,640 funcționează după cum se menționează. 1421 01:11:37,640 --> 01:11:40,740 >> Deci, sub capota, am putea fi cum ar fi, reveni ori de intrare 1422 01:11:40,740 --> 01:11:41,690 opt împărțit la doi. 1423 01:11:41,690 --> 01:11:42,510 Și tu nu ar ști, nu? 1424 01:11:42,510 --> 01:11:44,970 Tot ce trebuie să știți este ea face ceea ce spune. 1425 01:11:44,970 --> 01:11:48,070 Deci, asta e un lucru util despre abstractizare. 1426 01:11:48,070 --> 01:11:52,910 >> Și un alt lucru este un fel de această idee de localizarea codul la un 1427 01:11:52,910 --> 01:11:54,280 special secțiune. 1428 01:11:54,280 --> 01:11:57,450 Deci, dacă aveți o problemă, tu nu faci trebuie să te duci peste tot codul încercând 1429 01:11:57,450 --> 01:11:58,730 pentru a rezolva cazul în care problema a fost. 1430 01:11:58,730 --> 01:12:00,990 Deci, în acest caz, am pus în aplicare cub greșit. 1431 01:12:00,990 --> 01:12:02,820 M-am gândit cub fost înmulțirea de trei. 1432 01:12:02,820 --> 01:12:05,760 >> Deci, în acest caz, acesta este un program de care tocmai a înmulțirea cu trei 1433 01:12:05,760 --> 01:12:06,750 peste tot. 1434 01:12:06,750 --> 01:12:10,910 Și există un alt program care are cub factorizata afară într-o funcție. 1435 01:12:10,910 --> 01:12:14,040 Iar acum, dacă vreau să repar greșeala mea aici, trebuie să se stabilească în fiecare linie 1436 01:12:14,040 --> 01:12:15,620 de cod în acest program. 1437 01:12:15,620 --> 01:12:19,190 Întrucât, pe de altă parte, dacă am folosi funcție, am nevoie doar de a schimba 1438 01:12:19,190 --> 01:12:20,650 ceea ce a fost greșit într-un singur loc. 1439 01:12:20,650 --> 01:12:25,330 1440 01:12:25,330 --> 01:12:28,730 >> Deci, în informatică, am apel intrări și ieșiri. 1441 01:12:28,730 --> 01:12:31,640 Intrări sunt numite parametri sau argumente, și ieșirile sunt numite 1442 01:12:31,640 --> 01:12:32,950 Valorile reveni. 1443 01:12:32,950 --> 01:12:39,000 Și vom vedea cum acest lucru ne ajută fel a defini o funcție într-o secundă. 1444 01:12:39,000 --> 01:12:41,430 Deci, aceasta este o definiție funcție pentru cubaj. 1445 01:12:41,430 --> 01:12:45,110 Deci, este nevoie de o intrare, și apoi se întoarce că ori de numere 1446 01:12:45,110 --> 01:12:47,020 sine trei ori. 1447 01:12:47,020 --> 01:12:48,020 Deci, haideți să rupe acest jos. 1448 01:12:48,020 --> 01:12:53,090 >> Deci, avem un antet funcție, care de fapt constă din trei lucruri. 1449 01:12:53,090 --> 01:12:56,050 Deci, avem parametrii, care sunt, așa cum am spus mai înainte, 1450 01:12:56,050 --> 01:12:57,680 intrări în această funcție. 1451 01:12:57,680 --> 01:12:59,300 Și apoi ne-am da functia un nume. 1452 01:12:59,300 --> 01:13:00,740 În acest caz, se numește cub. 1453 01:13:00,740 --> 01:13:03,860 Și apoi am specifica ce tip din valoarea de returnare este. 1454 01:13:03,860 --> 01:13:06,760 >> Deci, în acest caz, funcția mea cub ia într-un număr întreg și este, de asemenea, 1455 01:13:06,760 --> 01:13:07,890 returneaza un întreg. 1456 01:13:07,890 --> 01:13:11,510 Deci, dacă am trece în două, două este un număr întreg, se întoarce opt la mie, care 1457 01:13:11,510 --> 01:13:13,250 este un număr întreg. 1458 01:13:13,250 --> 01:13:15,420 Deci reveni parametrii nume de tip. 1459 01:13:15,420 --> 01:13:16,670 Întrebări despre asta? 1460 01:13:16,670 --> 01:13:19,440 1461 01:13:19,440 --> 01:13:24,230 >> Și apoi valoarea de returnare este de fapt specificată la sfârșitul spunând retur 1462 01:13:24,230 --> 01:13:27,540 și apoi se întoarce, indiferent de conține valoarea de returnare. 1463 01:13:27,540 --> 01:13:30,940 Deci, în acest caz, dacă vom pune totul împreună, o functie are în 1464 01:13:30,940 --> 01:13:35,100 parametri, se numește ceva, și returnează ceva care este tipul 1465 01:13:35,100 --> 01:13:36,350 că ne spune că a fost de gând să fie. 1466 01:13:36,350 --> 01:13:39,830 1467 01:13:39,830 --> 01:13:41,080 Orice întrebări? 1468 01:13:41,080 --> 01:13:43,710 1469 01:13:43,710 --> 01:13:45,080 >> Deci, cum putem folosi o funcție? 1470 01:13:45,080 --> 01:13:49,230 Ei bine, vom scrie o funcție și apoi le folosim în programul nostru, nu? 1471 01:13:49,230 --> 01:13:51,565 Așa că am chemat cub, și atunci eu pot folosi cub. 1472 01:13:51,565 --> 01:13:54,200 >> Dar ceea ce este important de reținut este faptul că problemele de ordine. 1473 01:13:54,200 --> 01:13:58,100 Dacă am cub de mai jos principal, este va rula în cub. 1474 01:13:58,100 --> 01:14:00,360 Și la acest punct, nu e nimic numit cub în program, și este 1475 01:14:00,360 --> 01:14:02,550 doar de gând să fie ca, am nici o idee despre ceea ce este de cub. 1476 01:14:02,550 --> 01:14:05,060 >> Așa că vă va spune, implicit declarație de funcție. 1477 01:14:05,060 --> 01:14:06,690 Asta e eroarea care apare. 1478 01:14:06,690 --> 01:14:10,230 Și astfel, în acest caz, cub este de mai jos principal, așa că nu se va 1479 01:14:10,230 --> 01:14:12,006 să știu despre el. 1480 01:14:12,006 --> 01:14:14,724 >> SPEAKER 5: Deci principal este, de obicei, definit ultima funcție? 1481 01:14:14,724 --> 01:14:17,290 >> JOSEPH: Deci, întrebarea este, este principalul obicei ultima 1482 01:14:17,290 --> 01:14:18,170 lucru pe care te-ai defini? 1483 01:14:18,170 --> 01:14:19,730 Și nr. 1484 01:14:19,730 --> 01:14:22,280 Este pentru că ne place, de obicei, principala să fie în partea de sus, nu? 1485 01:14:22,280 --> 01:14:24,640 Pentru că asta e primul lucru pe care doresc deschiderea programator 1486 01:14:24,640 --> 01:14:25,640 program pentru a vedea. 1487 01:14:25,640 --> 01:14:29,950 Și așa cum putem rezolva această problemă de noi Vreau principal să fie în partea de sus, dar 1488 01:14:29,950 --> 01:14:33,750 Funcțiile pe care le doresc, le vrem să fie sub principala încă putea folosi 1489 01:14:33,750 --> 01:14:34,930 le în interiorul de principal? 1490 01:14:34,930 --> 01:14:36,870 >> Ei bine, vom folosi ceea ce numim un prototip funcție. 1491 01:14:36,870 --> 01:14:40,830 Deci, ce este un prototip funcție, în esență, este este este nevoie în primul rând ceea ce 1492 01:14:40,830 --> 01:14:45,060 semnătura sau antetul funcției de ceea ce vrem să pună în aplicare în jos 1493 01:14:45,060 --> 01:14:47,420 aici, și l-am pus la partea de sus a unui program. 1494 01:14:47,420 --> 01:14:51,400 >> Deci, în acest caz, spunem că, ei bine, mai târziu în programul nostru, vom 1495 01:14:51,400 --> 01:14:55,010 pentru a face o promisiune pentru a implementa acest Funcția numit cub int, care are 1496 01:14:55,010 --> 01:14:56,260 un număr întreg de intrare. 1497 01:14:56,260 --> 01:15:00,870 Deci, acum, pentru că este mai presus de principal, principal, se va spune, oh, bine, 1498 01:15:00,870 --> 01:15:03,910 mai târziu, în cadrul programului, care va fi acolo, așa că am putea referi la ea, așa că am să 1499 01:15:03,910 --> 01:15:05,230 pur și simplu lăsați-l să meargă prin intermediul pentru acum. 1500 01:15:05,230 --> 01:15:07,660 >> Și apoi în partea de jos, vom pune în aplicare cub. 1501 01:15:07,660 --> 01:15:11,180 Și apoi principal va spune doar, bine, se va sorta de legătură 1502 01:15:11,180 --> 01:15:12,250 aceste două simboluri împreună. 1503 01:15:12,250 --> 01:15:14,320 Și vom acoperi ceea ce că înseamnă mai târziu. 1504 01:15:14,320 --> 01:15:17,090 Și astfel se va ști că aceasta este Funcția cub că ar trebui să folosească. 1505 01:15:17,090 --> 01:15:19,630 1506 01:15:19,630 --> 01:15:23,383 >> ROB: [inaudibil] despre care doresc principal în partea de jos sau 1507 01:15:23,383 --> 01:15:24,880 top, l-am văzut atât. 1508 01:15:24,880 --> 01:15:28,630 Există lucruri pe care le place doar să pună principal în partea de jos. 1509 01:15:28,630 --> 01:15:32,520 Dar, odată ce un proiect devine deosebit de mare, de obicei principal este într-o 1510 01:15:32,520 --> 01:15:34,290 fișier propriu. 1511 01:15:34,290 --> 01:15:38,170 Și în acel moment, la fel ca int linie cub ar fi - 1512 01:15:38,170 --> 01:15:42,460 interiorul stdio.h sunt o adunătură de linii la fel ca asta int 1513 01:15:42,460 --> 01:15:44,010 linie de intrare cub Int. 1514 01:15:44,010 --> 01:15:50,170 >> Și astfel aceste prototipuri sunt lucruri pe care le tendința de a pune în fișiere antet, la 1515 01:15:50,170 --> 01:15:52,140 care punct, nu contează. 1516 01:15:52,140 --> 01:15:54,700 Ei bine, nu contează. 1517 01:15:54,700 --> 01:15:56,070 Cei care merg întotdeauna în partea de sus. 1518 01:15:56,070 --> 01:15:59,490 Și dacă principal nu este un fișier propriu, nu trebuie să vă faceți griji cu privire la punerea 1519 01:15:59,490 --> 01:16:02,360 prototipuri funcționale individuale în fișierul. 1520 01:16:02,360 --> 01:16:05,370 >> JOSEPH: Și vom ajunge la asta un pic Puțin mai târziu, când Rob începe să vorbească 1521 01:16:05,370 --> 01:16:06,380 despre compilarea. 1522 01:16:06,380 --> 01:16:09,480 Și deci nu este, de asemenea, o diferență între parametru și argument. 1523 01:16:09,480 --> 01:16:12,500 Și parametru este doar ceea ce noi numim aceste intrări atunci când 1524 01:16:12,500 --> 01:16:13,820 definim funcția. 1525 01:16:13,820 --> 01:16:16,950 Și noi numim un argument, atunci când ne-am de fapt, se trece în funcția. 1526 01:16:16,950 --> 01:16:19,600 >> Deci, în acest caz, acest lucru este un parametru, așa cum am spus mai înainte. 1527 01:16:19,600 --> 01:16:24,130 Și când ne-am folosi de fapt acolo, cub de x, atunci x este în sine 1528 01:16:24,130 --> 01:16:25,910 ceea ce noi numim un argument la cub funcția. 1529 01:16:25,910 --> 01:16:28,150 >> ROB: Deci, argumentele parametrilor sunt - 1530 01:16:28,150 --> 01:16:33,270 există această distincție, foarte confuz interschimbabil. 1531 01:16:33,270 --> 01:16:37,090 În acest moment, pentru mine, e ca unul din aceste cuvinte că, atunci când o văd în 1532 01:16:37,090 --> 01:16:41,190 sălbăticie, eu nu pot ajuta, dar imediat întrebarea dacă acestea sunt folosind-o în 1533 01:16:41,190 --> 01:16:44,120 contextul corect, pentru că Diferența este destul de subtil că doar 1534 01:16:44,120 --> 01:16:45,500 toată lumea tinde - 1535 01:16:45,500 --> 01:16:48,530 Eu spun aproape întotdeauna argument indiferent de ceea ce vreau să spun. 1536 01:16:48,530 --> 01:16:51,230 1537 01:16:51,230 --> 01:16:54,630 >> Iosif și funcții sunt de asemenea utile pentru ceea ce noi numim efecte secundare. 1538 01:16:54,630 --> 01:16:59,230 Deci, o funcție poate lua nici intrări, și se poate produce, de asemenea, nu există rezultate. 1539 01:16:59,230 --> 01:17:03,280 Deci, în acest caz particular, eu sunt definind o subrutină care nu are 1540 01:17:03,280 --> 01:17:03,970 valoare reveni. 1541 01:17:03,970 --> 01:17:07,730 Și în scopul de a preciza că, vom folosi ceea ce noi numim un gol aici. 1542 01:17:07,730 --> 01:17:10,890 Și astfel efectul secundar al acestei funcții este că se imprimă doar lucruri 1543 01:17:10,890 --> 01:17:11,920 de la pagina. 1544 01:17:11,920 --> 01:17:13,840 Aceasta nu ia de fapt, orice intrări, și nu 1545 01:17:13,840 --> 01:17:15,360 produc de fapt orice rezultate. 1546 01:17:15,360 --> 01:17:18,230 >> Dar acest lucru ar putea fi util, în sensul dacă doriți, de exemplu, depanare 1547 01:17:18,230 --> 01:17:21,530 ceva în programul tău, dacă vrei pentru a scrie un pic de subrutină care 1548 01:17:21,530 --> 01:17:25,160 imprimă, să zicem, conținutul de memorie sau ceva. 1549 01:17:25,160 --> 01:17:29,800 Și astfel aceste efecte secundare sunt uneori utilă în afara contextului 1550 01:17:29,800 --> 01:17:33,010 de la fel ca intrări și ieșiri. 1551 01:17:33,010 --> 01:17:34,260 Orice întrebări? 1552 01:17:34,260 --> 01:17:37,270 1553 01:17:37,270 --> 01:17:44,240 >> Și pentru a pune capăt acestui segment special, ceea ce face acest program face? 1554 01:17:44,240 --> 01:17:47,420 Vă voi da voi o pereche de secunde pentru a citi prin ea. 1555 01:17:47,420 --> 01:17:52,720 1556 01:17:52,720 --> 01:17:56,880 La un nivel foarte de bază, ceea ce vrem să spune este că swap-uri x și y, corect? 1557 01:17:56,880 --> 01:18:00,090 >> Deci, câți dintre voi cred de fapt aceasta va schimba x și y? 1558 01:18:00,090 --> 01:18:02,160 Ridică mâna. 1559 01:18:02,160 --> 01:18:02,760 Nici unul. 1560 01:18:02,760 --> 01:18:03,070 OK. 1561 01:18:03,070 --> 01:18:06,720 Cine crede că se va nu schimba x și y? 1562 01:18:06,720 --> 01:18:09,120 Și suma care a fost nu întreaga cameră. 1563 01:18:09,120 --> 01:18:10,440 Deci, unii oameni nu sunt sigur. 1564 01:18:10,440 --> 01:18:10,920 OK. 1565 01:18:10,920 --> 01:18:11,630 Asta e rezonabil. 1566 01:18:11,630 --> 01:18:16,450 >> Deci, haideți să mergem prin ceea ce se întâmplă atunci când Te sun de fapt funcții pentru prima dată în 1567 01:18:16,450 --> 01:18:18,320 Pentru a răspunde la această întrebare. 1568 01:18:18,320 --> 01:18:21,430 Deci, asta este ceea ce de memorie un fel de arata ca. 1569 01:18:21,430 --> 01:18:23,860 Acest lucru este ca un fel de model simplificat de ce memorie arată ca atunci când 1570 01:18:23,860 --> 01:18:24,800 executați un program. 1571 01:18:24,800 --> 01:18:27,270 Deci, există ceva numit stiva de aici și 1572 01:18:27,270 --> 01:18:28,330 ceva numit heap. 1573 01:18:28,330 --> 01:18:30,950 Și acestea să crească față de mijlocul de memorie. 1574 01:18:30,950 --> 01:18:33,860 >> Deci, în acest caz particular, atunci când apela o funcție, ea 1575 01:18:33,860 --> 01:18:35,680 se pune pe stiva. 1576 01:18:35,680 --> 01:18:38,900 Și apoi tot ce este conținută în acea Funcția rămâne în ceea ce noi numim asta 1577 01:18:38,900 --> 01:18:40,550 cadru stivă funcția lui. 1578 01:18:40,550 --> 01:18:44,500 Și așa mai departe pentru a obține o vizualizare frumoasă a acest, hai - de exemplu, am avut 1579 01:18:44,500 --> 01:18:45,960 Programul principal mai devreme. 1580 01:18:45,960 --> 01:18:47,820 Și în interiorul principal, am sunat cub. 1581 01:18:47,820 --> 01:18:50,650 Deci principal ar merge în primul rând pe stivă cadru, pentru că este prima funcție 1582 01:18:50,650 --> 01:18:51,640 care se numește. 1583 01:18:51,640 --> 01:18:55,740 >> Și atunci când cub se numește în interiorul principal, aceasta se pune pe partea de sus de principal 1584 01:18:55,740 --> 01:18:57,790 în interiorul memoriei. 1585 01:18:57,790 --> 01:19:02,090 Deci, ceea ce veți observa aici este că cub are propriile sale parametri și ei 1586 01:19:02,090 --> 01:19:02,950 localnici proprii. 1587 01:19:02,950 --> 01:19:06,720 Deci, atunci când treci de fapt, ceva de o funcție, parametrii care se 1588 01:19:06,720 --> 01:19:09,910 devine sunt copii de ceea ce a fost a trecut de la principal. 1589 01:19:09,910 --> 01:19:14,140 >> Și la fel a explica acest lucru, să mers pe jos printr-un program. 1590 01:19:14,140 --> 01:19:16,960 Deci avem stiva, acest lucru este doar porțiunea stivă. 1591 01:19:16,960 --> 01:19:21,240 Și ceea ce facem este să inițializa primul x și y pentru a unu și doi. 1592 01:19:21,240 --> 01:19:22,400 Deci avem aceste cutii mici. 1593 01:19:22,400 --> 01:19:25,310 Stau în stiva principală de încadra pe stiva. 1594 01:19:25,310 --> 01:19:26,580 Acestea conțin unu și doi. 1595 01:19:26,580 --> 01:19:28,820 >> Acum, noi numim de swap. 1596 01:19:28,820 --> 01:19:33,940 Ce se întâmplă este că trece x și y în swap, și de swap creează propriile sale copii 1597 01:19:33,940 --> 01:19:36,520 de aceste variabile de a utiliza în interiorul a cadrului de stivă. 1598 01:19:36,520 --> 01:19:39,920 Deci, acum, acolo, avem o, care conține valoarea pe care a avut x, și b, 1599 01:19:39,920 --> 01:19:41,620 care conține valoarea pe care a avut y. 1600 01:19:41,620 --> 01:19:42,670 Deci unul, doi. 1601 01:19:42,670 --> 01:19:47,130 >> Și veți observa că acest lucru este separată de x și y în interiorul principal. 1602 01:19:47,130 --> 01:19:51,390 Deci, acum vom crea o temporar variabilă să conțină o. 1603 01:19:51,390 --> 01:19:56,100 Am stabilit un egal cu b, așa că modificări la unu la doi. 1604 01:19:56,100 --> 01:19:59,340 Și apoi ne-am stabilit b egal la temp, care este unul. 1605 01:19:59,340 --> 01:20:01,640 >> Și atunci acum ne-am ieși afară din această funcție. 1606 01:20:01,640 --> 01:20:04,310 1607 01:20:04,310 --> 01:20:07,410 Când ieșiți din funcție, cadru stivă se mi-a venit de pe stivă. 1608 01:20:07,410 --> 01:20:08,270 Noi o numim împinge. 1609 01:20:08,270 --> 01:20:12,750 Vă împinge un cadru de stivă pe stiva și pop, dacă de pe stiva. 1610 01:20:12,750 --> 01:20:16,080 Și astfel ceea ce se întâmplă este tot ceea ce era în care stiva cadru fel de doar 1611 01:20:16,080 --> 01:20:17,280 merge până în flăcări. 1612 01:20:17,280 --> 01:20:19,180 Și astfel încât nu mai există. 1613 01:20:19,180 --> 01:20:20,470 >> Dar ce am observat? 1614 01:20:20,470 --> 01:20:23,690 Noi nu sa schimbat, de fapt, valori ale lui x și y, nu? 1615 01:20:23,690 --> 01:20:26,530 Deci, cei care au rămas în principal locale. 1616 01:20:26,530 --> 01:20:29,900 Și prin trecerea lucruri în schimb, ne-am de fapt, a schimbat niciodată aceste valori. 1617 01:20:29,900 --> 01:20:31,260 Și ce noi numim acest lucru? 1618 01:20:31,260 --> 01:20:33,040 Noi numim această trecere de valoare. 1619 01:20:33,040 --> 01:20:36,860 >> Deci, în C, atunci când trece lucrurile în funcții, le trece de valoare și 1620 01:20:36,860 --> 01:20:40,160 face o copie a acestora pentru funcția de utilizat. 1621 01:20:40,160 --> 01:20:43,980 Și vom învăța despre ceva numit trecând de referință mai târziu, dar asta e 1622 01:20:43,980 --> 01:20:45,390 un fel, puteți rezolva această problemă. 1623 01:20:45,390 --> 01:20:47,080 Dar nu va faceti griji cu privire la care până mai târziu. 1624 01:20:47,080 --> 01:20:52,200 >> ROB: Și, de fapt, că pe termen lung, care trece de referință, deci C nu are nici măcar 1625 01:20:52,200 --> 01:20:54,270 trece prin corelarea. 1626 01:20:54,270 --> 01:20:56,760 C exclusiv de a trece de valoare. 1627 01:20:56,760 --> 01:20:59,630 Indiferent de ceea ce faci, ești mereu trece o copie a ceva. 1628 01:20:59,630 --> 01:21:03,395 E doar faptul că, la fel ca un fel de am menționat că, înainte cu indicii 1629 01:21:03,395 --> 01:21:07,690 și că un șir este de fapt doar patru bytes indicând undeva în memorie. 1630 01:21:07,690 --> 01:21:11,890 >> Ei bine, dacă am avea acest șir și este spunându-mi că este în cazul în care șirul - 1631 01:21:11,890 --> 01:21:15,470 bine, dacă am avea acest pointer la această loc în memorie, atunci eu pot trece o 1632 01:21:15,470 --> 01:21:19,160 copie de care pointer la o funcție, și că funcția de încă știe unde în 1633 01:21:19,160 --> 01:21:19,780 memorie este. 1634 01:21:19,780 --> 01:21:22,950 Deci, ambele aceste indicii sunt orientate în același loc în memorie, și 1635 01:21:22,950 --> 01:21:26,460 care este modul în care vom fi capabili de a modifica lucruri dincolo 1636 01:21:26,460 --> 01:21:29,852 cadru stivă curent. 1637 01:21:29,852 --> 01:21:31,040 >> JOSEPH: Vrei sa faci compilarea? 1638 01:21:31,040 --> 01:21:31,820 >> ROB: Nu, e 5:30. 1639 01:21:31,820 --> 01:21:32,910 >> JOSEPH: OK. 1640 01:21:32,910 --> 01:21:35,040 Este 05:30. 1641 01:21:35,040 --> 01:21:35,360 OK. 1642 01:21:35,360 --> 01:21:39,280 Deci, vom acoperi compilarea Cred că în secțiunea următoare, sau secțiune dvs. 1643 01:21:39,280 --> 01:21:42,795 Leader va la acel moment. 1644 01:21:42,795 --> 01:21:43,272 Și - 1645 01:21:43,272 --> 01:21:44,630 >> ROB: Orice întrebări? 1646 01:21:44,630 --> 01:21:46,760 >> JOSEPH: Orice întrebări? 1647 01:21:46,760 --> 01:21:47,150 Da? 1648 01:21:47,150 --> 01:21:52,469 >> SPEAKER 5: Folosind siruri de caractere de la CS50, orice funcțiile pe care le doriți să le utilizați pentru 1649 01:21:52,469 --> 01:21:53,880 cei, care va fi ca funcții C. 1650 01:21:53,880 --> 01:21:59,050 CS50 nu a mers în și făcut orice suplimentare. 1651 01:21:59,050 --> 01:22:01,850 >> ROB: Corect. 1652 01:22:01,850 --> 01:22:08,155 Oricare din C ca [inaudibil], tu ar folosi cele de pe siruri de caractere noastre. 1653 01:22:08,155 --> 01:22:12,400 >> JOSEPH: Si un ultim lucru pe care vreau să menționat este că avem un ghid de stil 1654 01:22:12,400 --> 01:22:13,130 pentru această clasă. 1655 01:22:13,130 --> 01:22:13,360 >> ROB: Oh, da. 1656 01:22:13,360 --> 01:22:15,270 >> JOSEPH: Deci, dacă ai venit de la un programare fundal înainte, 1657 01:22:15,270 --> 01:22:17,750 ar putea avea anumite convenții, atunci când esti scris cod ca punerea 1658 01:22:17,750 --> 01:22:20,950 bretele de pe aceeași linie sau special modalități de crestarea 1659 01:22:20,950 --> 01:22:22,240 sau numirea variabilele. 1660 01:22:22,240 --> 01:22:26,870 În această clasă, dorim să urmeze o Ghid de stil specific doar pentru că, 1661 01:22:26,870 --> 01:22:31,100 bine, dacă te duci afară și să lucreze în industrie, ai de gând să fi așteptat 1662 01:22:31,100 --> 01:22:34,780 să urmeze ghidul de stil al Compania la care te duci la. 1663 01:22:34,780 --> 01:22:38,040 >> Cum ar fi de exemplu, Facebook cred are un anumit fel de a numi 1664 01:22:38,040 --> 01:22:38,760 convenție. 1665 01:22:38,760 --> 01:22:42,570 Și nu există diferențe între cămilă variabile carcasei și la fel ca 1666 01:22:42,570 --> 01:22:44,610 separându-le cu subliniere. 1667 01:22:44,610 --> 01:22:52,170 Și, de asemenea, cred că cel mai important, cum ar fi de exemplu, indentare, corect? 1668 01:22:52,170 --> 01:22:56,440 >> Noi nu începe acolade unde Condiția este, și ei 1669 01:22:56,440 --> 01:22:57,730 sunt pe linia următoare. 1670 01:22:57,730 --> 01:23:01,230 Și am pus, de asemenea, acolade în chiar dacă este o singură linie. 1671 01:23:01,230 --> 01:23:06,100 Și o mulțime de ori, există modalități de a face aceasta în cazul în care vă puteți lăsa aceste bretele 1672 01:23:06,100 --> 01:23:08,380 off dacă este o singură linie în cazul în care declarația. 1673 01:23:08,380 --> 01:23:12,070 Dar în această clasă, dorim să urmeze o Ghid de stil specific doar astfel încât să obțineți 1674 01:23:12,070 --> 01:23:13,550 utilizate pentru astfel de lucruri. 1675 01:23:13,550 --> 01:23:16,410 >> ROB: Da, și stil de 50 se va pune în aplicare acest ghid de stil, și suntem 1676 01:23:16,410 --> 01:23:18,080 de gând să utilizeze Style 50 la gradul codul. 1677 01:23:18,080 --> 01:23:25,150 Deci, ea face lucrurile mai ușor pentru noi și sperăm că nu ar trebui să facă lucrurile pe care 1678 01:23:25,150 --> 01:23:30,120 mult mai rău pentru tine, având în vedere stil standardizat nu ar trebui să fie faptul că 1679 01:23:30,120 --> 01:23:31,460 nerealiste. 1680 01:23:31,460 --> 01:23:36,000 >> JOSEPH: Și, în sfârșit, pentru a găsi stilul Ghid, du-te la manual.cs50.net/style. 1681 01:23:36,000 --> 01:23:37,725 Și da. 1682 01:23:37,725 --> 01:23:40,575 >> SPEAKER 4: Ai de gând să pună în aplicare orice caractere pe linie? 1683 01:23:40,575 --> 01:23:42,480 >> ROB: Da. 1684 01:23:42,480 --> 01:23:45,405 >> JOSEPH: Îmi pare rău, băieți. 1685 01:23:45,405 --> 01:23:47,680 >> ROB: E ca unul dintre singurii. 1686 01:23:47,680 --> 01:23:50,420 În acest moment, eu sunt OK cu 120. 1687 01:23:50,420 --> 01:23:52,460 Sunt OK cu a spune 120 caractere pe linie. 1688 01:23:52,460 --> 01:23:53,830 Am înțeles că a fi unele limite. 1689 01:23:53,830 --> 01:23:57,130 Cred că 80 este atât de mic, dar suntem o aplicare. 1690 01:23:57,130 --> 01:24:00,260 >> JOSEPH: Personal, cred cu C, 80 de caractere este mai bine. 1691 01:24:00,260 --> 01:24:04,160 Odată ce ați începe obtinerea de alte limbi, cum ar fi JavaScript și PHP, nu 1692 01:24:04,160 --> 01:24:08,860 deci rezonabil să se limiteze doar l la 80 de caractere. 1693 01:24:08,860 --> 01:24:09,260 OK. 1694 01:24:09,260 --> 01:24:12,780 Ei bine, asta a fost secțiunea de super. 1695 01:24:12,780 --> 01:24:14,750 Vrea cineva bomboane? 1696 01:24:14,750 --> 01:24:16,000 >> SPEAKER 4: Da. 1697 01:24:16,000 --> 01:24:18,667