1 00:00:07,830 --> 00:00:12,200 [Powered by Google Translate] DAVID MALAN: Acesta este CS50, iar acest lucru este începutul săptămânii 1. 2 00:00:12,200 --> 00:00:15,520 Ceea ce ne-am gândit facem astăzi este să ia o privire înapoi la 3 00:00:15,520 --> 00:00:18,290 ceva mulți dintre voi ați mers, probabil, pentru unii trecut 4 00:00:18,290 --> 00:00:20,570 Acum si ar putea arata un pic familiar. 5 00:00:20,570 --> 00:00:23,720 Acest lucru aici, asta, desigur, este în - 6 00:00:23,720 --> 00:00:24,155 PUBLICUL: Stiinta. 7 00:00:24,155 --> 00:00:26,030 DAVID MALAN: Science Center. 8 00:00:26,030 --> 00:00:28,940 Deci, aceasta este de fapt una dintre cele mai vechi calculatoare 9 00:00:28,940 --> 00:00:30,220 Inapoi din anii 1940. 10 00:00:30,220 --> 00:00:33,790 Acesta a fost unul dintre primele calculatoare electromecanice 11 00:00:33,790 --> 00:00:35,730 care a fost capabil de deosebit de lungă, 12 00:00:35,730 --> 00:00:38,450 auto-susținute calcule, și a ceea ce vedem, de fapt, în 13 00:00:38,450 --> 00:00:41,580 Centrul știința este doar o bucată mică de acest lucru. 14 00:00:41,580 --> 00:00:44,170 Ceea ce ne-am gândit apoi face este să ia o privire înapoi la un videoclip 15 00:00:44,170 --> 00:00:46,670 care a fost făcut ceva timp în urmă, introducerea acestei 16 00:00:46,670 --> 00:00:47,520 lucru pentru a lumii. 17 00:00:47,520 --> 00:00:50,200 Și veți vedea de la muzica si vocea care într-adevăr cele 18 00:00:50,200 --> 00:00:52,070 au fost vremuri foarte fericite. 19 00:00:54,885 --> 00:00:59,700 >> [PLAYBACK VIDEO] 20 00:00:59,700 --> 00:01:02,490 -Un triumf de calificare matematice și mecanice este aceasta 21 00:01:02,490 --> 00:01:06,340 Calculator de mare nou automată la Universitatea Harvard. 22 00:01:06,340 --> 00:01:08,620 Probleme complicate de matematică, a pus prin 23 00:01:08,620 --> 00:01:12,420 aparatului în formă codificată pe bandă, sunt exact rezolvate într-un 24 00:01:12,420 --> 00:01:15,200 fracțiune de minute timpul necesar pentru consumul uman 25 00:01:15,200 --> 00:01:16,450 calcul. 26 00:01:27,050 --> 00:01:30,600 Conceput pentru a accelera toate formele de matematică și științifică 27 00:01:30,600 --> 00:01:34,610 de cercetare, gigantul creier mecanic va lucra pentru United 28 00:01:34,610 --> 00:01:36,570 Marina Statelor până la sfârșitul războiului. 29 00:01:50,280 --> 00:01:52,980 >> DAVID MALAN: Deci, ceea ce ar putea să nu știți este că a fost, în 30 00:01:52,980 --> 00:01:56,310 acest dispozitiv același care un termen noi toți iau acum destul de mult 31 00:01:56,310 --> 00:01:59,300 ca de la sine a fost inventat, că de un bug. 32 00:01:59,300 --> 00:02:01,140 Deci, unul dintre inginerii care lucrează în acest computer 33 00:02:01,140 --> 00:02:05,280 găsit literalmente o molie mică în mașina care a dus 34 00:02:05,280 --> 00:02:07,580 în unele calcule incorecte. 35 00:02:07,580 --> 00:02:10,410 Și, după cum povestește că molie a fost filmat la acest jurnal 36 00:02:10,410 --> 00:02:14,180 jurnal aici, înapoi din 9 septembrie în 1940, ceva, 37 00:02:14,180 --> 00:02:16,550 și, astfel, sa născut pentru lumea termenul de "bug". 38 00:02:16,550 --> 00:02:19,880 Deci, de acum înainte vom considera bug-uri pentru a fi orice fel de greșeli în 39 00:02:19,880 --> 00:02:23,290 programe, indiferent dacă om sau, în acest caz, insecte. 40 00:02:23,290 --> 00:02:25,030 >> Deci, un anunțuri câteva, așa cum vom proceda. 41 00:02:25,030 --> 00:02:29,160 Deci, CS50 are o tradiție de a oferi prânzuri de felul în 42 00:02:29,160 --> 00:02:31,600 majoritatea vinerea în timpul semestrului, în cazul în care vom lua 30 la 43 00:02:31,600 --> 00:02:34,650 40 de elevi la foc și gheață, în Piața pentru casual 44 00:02:34,650 --> 00:02:36,390 chitchat, vorbesc despre stiinta de calculator, 45 00:02:36,390 --> 00:02:37,420 vorbim despre viitor. 46 00:02:37,420 --> 00:02:40,000 Vă invităm absolventii si prieteni de la industrie la chat-up 47 00:02:40,000 --> 00:02:40,690 studenți, precum și. 48 00:02:40,690 --> 00:02:44,020 Într-adevăr spre un scop de a face ceea ce este o clasa destul de mare 49 00:02:44,020 --> 00:02:46,740 toate mai intim, cel puțin o dată în timp ce pentru 50 00:02:46,740 --> 00:02:47,710 subseturi de studenți. 51 00:02:47,710 --> 00:02:50,940 Deci, dacă doriți să ni se alăture în această vineri, 01:15 PM, du-te la 52 00:02:50,940 --> 00:02:53,340 CS50.net/lunch la RSVP. 53 00:02:53,340 --> 00:02:55,840 Și vom face acest lucru recurringly, nu atât să vă faceți griji dacă nu ești 54 00:02:55,840 --> 00:02:57,930 printre primii 30 sau cam asa ceva în această săptămână. 55 00:02:57,930 --> 00:02:59,070 >> Deci, note Scribe. 56 00:02:59,070 --> 00:03:01,500 Un cuvânt pe resursele care vor începe acum fiind disponibile 57 00:03:01,500 --> 00:03:03,040 elevilor din clasa. 58 00:03:03,040 --> 00:03:05,540 Așa că vă capetele nu trebuie să fie în timpul prelegerilor 59 00:03:05,540 --> 00:03:08,560 zmângăleală jos tot ceea ce spun și așa mai departe, ceea ce facem 60 00:03:08,560 --> 00:03:10,765 în loc să se ofere de la cadrele didactice o 61 00:03:10,765 --> 00:03:11,920 set canonic de note. 62 00:03:11,920 --> 00:03:14,850 Deci, avem unul dintre semenii noștri de predare, Andrew Sellergren, 63 00:03:14,850 --> 00:03:17,830 care se așează în fiecare săptămână, opiniile videoclipuri, și apoi 64 00:03:17,830 --> 00:03:19,730 notează ceea ce noi credem că este o destul de 65 00:03:19,730 --> 00:03:21,840 set de note de autoritate. 66 00:03:21,840 --> 00:03:24,180 Și lui Andrew fond, de asemenea, de a pune note de subsol în snarky 67 00:03:24,180 --> 00:03:24,820 partea de jos. 68 00:03:24,820 --> 00:03:27,300 Deci, vă veți bucura de acestea, sperăm ca o carte de referință pentru 69 00:03:27,300 --> 00:03:30,230 distracție, și, de asemenea, vin test timp, ca o oportunitate de a revizui 70 00:03:30,230 --> 00:03:31,830 ceea ce sa întâmplat în prelegeri individuale. 71 00:03:31,830 --> 00:03:33,580 Deci, cei care sunt legate, pe pagina de prelegeri. 72 00:03:33,580 --> 00:03:35,300 >> Set de probleme 0, între timp, se află în afara. 73 00:03:35,300 --> 00:03:37,470 Și în ceea ce privește resursele disponibile pentru tine - 74 00:03:37,470 --> 00:03:38,020 walkthrough. 75 00:03:38,020 --> 00:03:39,730 Milo a condus prima vineri. 76 00:03:39,730 --> 00:03:41,470 Acesta a fost filmat, pus online de sâmbătă. 77 00:03:41,470 --> 00:03:44,030 Și dau seama deci, dacă nu sunteți sigur de unde să încep, 78 00:03:44,030 --> 00:03:47,280 pentru acest lucru sau viitoare p-seturi, întoarce întotdeauna primul 79 00:03:47,280 --> 00:03:49,300 walkthrough sau cu privire la aceasta videoclipul. 80 00:03:49,300 --> 00:03:52,950 Secționarea este în curs de desfășurare; în cs50.net/section este locul unde vă 81 00:03:52,950 --> 00:03:54,540 ar trebui să prezinte preferințele, dacă nu aveți 82 00:03:54,540 --> 00:03:55,880 deja, de astăzi. 83 00:03:55,880 --> 00:03:58,140 Deoarece secțiuni va începe în această duminică vine, luni, 84 00:03:58,140 --> 00:03:58,760 și marți. 85 00:03:58,760 --> 00:04:02,470 Noi facem aceste secțiuni de trei zile, în fiecare săptămână de 86 00:04:02,470 --> 00:04:03,870 semestru pentru cea mai mare parte. 87 00:04:03,870 --> 00:04:06,600 Și noi, de asemenea, să introducă, din nou, piste diferite. 88 00:04:06,600 --> 00:04:08,270 Deci, veți fi întrebat pe acest formular de secționare, dacă 89 00:04:08,270 --> 00:04:10,350 nu l-am văzut deja, dacă ești printre cei mai puțin 90 00:04:10,350 --> 00:04:12,800 confortabilă, mai confortabil, sau undeva în între. 91 00:04:12,800 --> 00:04:14,960 Și dacă ești un fel de pe gard, în general, undeva în 92 00:04:14,960 --> 00:04:18,160 este ceea ce majoritatea dintre elevii ajung verificare. 93 00:04:18,160 --> 00:04:19,579 Program de lucru începe în seara asta. 94 00:04:19,579 --> 00:04:23,020 >> Deci, Scratch este cheia destul de scăzută, chiar dacă este destul de natural 95 00:04:23,020 --> 00:04:25,300 pentru a rula în diverse bug-uri, sau să fie îndoieli cu privire la modul de a 96 00:04:25,300 --> 00:04:26,550 punerea în aplicare a ceva. 97 00:04:26,550 --> 00:04:28,880 Deci, ne dăm seama că va începe oră de birou în această săptămână. 98 00:04:28,880 --> 00:04:30,500 Vor fi la Annenberg Luni, Marți, Miercuri, 99 00:04:30,500 --> 00:04:34,300 Joi, 8:00 - 11:00 în timpul pauzei de creier. 100 00:04:34,300 --> 00:04:38,160 Classmen superioare pot obține în, și, dacă aveți vreodată probleme cu obtinerea 101 00:04:38,160 --> 00:04:40,720 în ușă, pentru că acestea vor fi trecerea peste ecran, doar vorbim calea ta 102 00:04:40,720 --> 00:04:42,560 in și explică esti cu CS50. 103 00:04:42,560 --> 00:04:45,230 De obicei 20 la 30 din noi privind personalul va fi acolo pentru a ajuta la 104 00:04:45,230 --> 00:04:46,190 tu unu la unu. 105 00:04:46,190 --> 00:04:48,980 >> La sosire ideea este aceasta: vei aduce laptop-ul, 106 00:04:48,980 --> 00:04:51,300 vei avea încărcătorul, vom avea cabluri de alimentare suplimentare, 107 00:04:51,300 --> 00:04:53,320 în special de-a lungul peretelui de sud a Annenberg în cazul în care 108 00:04:53,320 --> 00:04:55,080 există o mulțime de prizele electrice. 109 00:04:55,080 --> 00:04:59,290 Și principalul punct de intrare pana la birou oră Q & A este de a merge la 110 00:04:59,290 --> 00:05:01,690 cs50.net/discuss și pentru a posta 111 00:05:01,690 --> 00:05:02,580 vînzătorului acolo. 112 00:05:02,580 --> 00:05:05,600 Și să-l eticheteze cu PSET 0 sau PSET 1, indiferent de săptămâni 113 00:05:05,600 --> 00:05:06,810 s-ar putea întâmpla să fie. 114 00:05:06,810 --> 00:05:09,240 Și atunci ce vom face este să aibă o masă a semenilor didactice 115 00:05:09,240 --> 00:05:12,040 și asistenți de curs, în general, 8 sau 10 sau cam asa ceva de noi, 116 00:05:12,040 --> 00:05:14,430 prin care trece, ține un ochi vigilent pe bord, și 117 00:05:14,430 --> 00:05:16,810 jumulire pe întrebări cu adevărat cât de repede putem, 118 00:05:16,810 --> 00:05:19,600 referindu-vă la posturile aferente, dacă nu ați găsit cele 119 00:05:19,600 --> 00:05:22,220 vă, referințe online, după caz. 120 00:05:22,220 --> 00:05:24,280 Și apoi, dacă există probleme, deoarece există în mod inevitabil 121 00:05:24,280 --> 00:05:27,190 va fi, sau face doar mai mult sens să se așeze unu la unu, 122 00:05:27,190 --> 00:05:28,660 lucreze prin problemele cu cineva. 123 00:05:28,660 --> 00:05:30,810 >> Sau ai venit doar în orele de birou cu adevărat 124 00:05:30,810 --> 00:05:31,640 nevoie de această stare de spirit. 125 00:05:31,640 --> 00:05:33,400 Tu nu vrei să mergi prin formă electronică, vă 126 00:05:33,400 --> 00:05:34,410 într-adevăr vrea să se întâlnească cu cineva. 127 00:05:34,410 --> 00:05:37,240 Comunică faptul că la noi, și ce se va întâmpla este atunci când dumneavoastră 128 00:05:37,240 --> 00:05:40,620 întrebarea a fost văzut de către un membru al personalului, iar noi 129 00:05:40,620 --> 00:05:43,660 determină, yup, acest lucru ar trebui să fie expediate către unul din 20 sau 130 00:05:43,660 --> 00:05:47,800 30 de membri ai echipei aici pe plan local, veți vedea în partea de sus a lăsat asta 131 00:05:47,800 --> 00:05:51,590 Introduceți putin butonul de coadă începe să lumineze intermitent pe cs50.net / 132 00:05:51,590 --> 00:05:52,165 discuta. 133 00:05:52,165 --> 00:05:55,260 Și acest lucru este vă spun că acum au fost invitați, astfel încât 134 00:05:55,260 --> 00:05:56,880 de a vorbi, pentru a intra coada. 135 00:05:56,880 --> 00:05:59,090 Și făcând clic pe acest buton, numele dumneavoastra va aparea apoi pe 136 00:05:59,090 --> 00:06:02,660 un iPad care Greeter CS50, unul dintre capetele de curs, va 137 00:06:02,660 --> 00:06:05,250 fie deține aproape de intrarea Annenberg, care va fi apoi 138 00:06:05,250 --> 00:06:08,630 văd cum este descris aici, elevii care au întrebări cu privire la 139 00:06:08,630 --> 00:06:11,630 stânga, membrii personalului care sunt prezenți pe dreapta. 140 00:06:11,630 --> 00:06:14,830 Și cu un clic de stânga și dreapta, browser-ul web va 141 00:06:14,830 --> 00:06:18,610 începe să clipească, cât mai curând, de exemplu, profesorul McGonnagal 142 00:06:18,610 --> 00:06:21,460 este gata să te văd la o masă special în Annenberg. 143 00:06:21,460 --> 00:06:23,340 >> Așa că am făcut parte din ultimul an. 144 00:06:23,340 --> 00:06:25,430 Am repornit oră de birou și 145 00:06:25,430 --> 00:06:26,980 re-implementat o mare parte din software-ul. 146 00:06:26,980 --> 00:06:29,940 Deci dau seama că acest lucru va fi încălzi în această săptămână. 147 00:06:29,940 --> 00:06:32,970 Dar, de asemenea, seama de asemenea, în ultimii ani, așa cum s-ar putea să fi auzit 148 00:06:32,970 --> 00:06:35,710 de la prieteni, într-adevăr, oră de birou au avut 50 la 149 00:06:35,710 --> 00:06:37,040 150 de elevi de la o dată. 150 00:06:37,040 --> 00:06:39,300 Și e pur și simplu nu este posibil pentru noi să se ocupe de asta 151 00:06:39,300 --> 00:06:42,060 în mod eficient, unu la unu, de-a lungul seara. 152 00:06:42,060 --> 00:06:44,570 Și astfel ceea ce sunteți cu adevărat de gând să încercați să faceți acest an este 153 00:06:44,570 --> 00:06:46,590 valorifica pe faptul că o mulțime de întrebări sunt 154 00:06:46,590 --> 00:06:49,050 frecvent solicitat și poate fi de multe ori mai bine răspuns 155 00:06:49,050 --> 00:06:50,030 asincron. 156 00:06:50,030 --> 00:06:52,140 Astfel încât să puteți sorta de cred că prin răspunsul personalului, 157 00:06:52,140 --> 00:06:54,360 și ne putem gândi prin codul, fara încălzită 158 00:06:54,360 --> 00:06:57,050 Presiunea de luptă în mod necesar 159 00:06:57,050 --> 00:06:58,210 prin ea cot la cot. 160 00:06:58,210 --> 00:07:00,980 Deci, estimăm că aproximativ o treime sau jumătate din întrebările 161 00:07:00,980 --> 00:07:03,500 vor fi expediate în persoană, și vom încerca să smulgă off ca 162 00:07:03,500 --> 00:07:05,530 mulți ca o jumatate sau mai mult pe cale electronică, 163 00:07:05,530 --> 00:07:06,710 în timpul orelor de serviciu. 164 00:07:06,710 --> 00:07:08,070 Și vom continua să folosească Discutați 165 00:07:08,070 --> 00:07:09,990 pe tot parcursul săptămânii, de asemenea. 166 00:07:09,990 --> 00:07:12,680 >> Și, în fine, seama că acest curs pot fi luate trece / nu. 167 00:07:12,680 --> 00:07:16,230 Deci, dacă sunteți pe gard sau doar crezi că ești cu adevărat 168 00:07:16,230 --> 00:07:18,650 nu sunt sigur dacă acest lucru este lume pentru tine, sau aceasta este într-adevăr 169 00:07:18,650 --> 00:07:21,310 destul de străin de tine, seama că aceasta este o modalitate minunată 170 00:07:21,310 --> 00:07:24,840 de a obține niște probleme cu care să-și intensifice în 171 00:07:24,840 --> 00:07:26,780 clasa, cum am făcut eu sincer, de ani în urmă. 172 00:07:26,780 --> 00:07:28,630 Și apoi au cinci săptămâni pentru a sorta de figura afară pentru 173 00:07:28,630 --> 00:07:30,850 te dacă vrei să stai treci / nu, treceți la o scrisoare 174 00:07:30,850 --> 00:07:31,800 grad, sau similar. 175 00:07:31,800 --> 00:07:34,050 Și de obicei, ceea ce trece / nu are, cred, pentru studenți este 176 00:07:34,050 --> 00:07:36,700 că, în cazul în care ați pus în faptul că 10 ore, 20 oră, orice ar fi 177 00:07:36,700 --> 00:07:38,830 poate fi pe unele probleme, iar tu trage capul 178 00:07:38,830 --> 00:07:39,690 împotriva perete, 179 00:07:39,690 --> 00:07:41,750 și într-adevăr pur și simplu nu se poate urmări ceva în jos, și tu 180 00:07:41,750 --> 00:07:44,230 au atât de multe lucruri de care aveți nevoie pentru a face, sincer, ceea ce am 181 00:07:44,230 --> 00:07:46,070 cred că treci / nu este, este nevoie de marginea de pe 182 00:07:46,070 --> 00:07:47,250 situații ca asta. 183 00:07:47,250 --> 00:07:49,350 În cazul în care ați luat chestia de 90% din drum. 184 00:07:49,350 --> 00:07:50,830 Știi, nu e chiar perfectă. 185 00:07:50,830 --> 00:07:52,950 Dar ai o mulțime de ea, totuși. 186 00:07:52,950 --> 00:07:55,440 Deci, ia în considerare trece / nu ca oferindu-vă că 187 00:07:55,440 --> 00:07:57,590 model mental, probabil. 188 00:07:57,590 --> 00:08:00,680 >> Toată săptămâna dreapta, deci trecută am scufundat în Scratch, și am 189 00:08:00,680 --> 00:08:03,610 a vorbit despre programarea la un nivel destul de ridicat grafic. 190 00:08:03,610 --> 00:08:05,340 Și astăzi vom face tranziția către o limbă 191 00:08:05,340 --> 00:08:08,300 numit C, un limbaj de programare de nivel mai mic pe partea de sus a 192 00:08:08,300 --> 00:08:11,260 care mai multe limbi moderne sunt acum construite, inclusiv unele 193 00:08:11,260 --> 00:08:13,010 din cele pe care le vom folosi spre finalul termenului. 194 00:08:13,010 --> 00:08:15,530 Și punct de vedere sintactic, ceea ce arata ca 195 00:08:15,530 --> 00:08:17,330 este tot destul de asemănătoare. 196 00:08:17,330 --> 00:08:19,080 Așa că hai să începem să facă această tranziție aici. 197 00:08:19,080 --> 00:08:21,730 Deci, asta a fost un program de săptămâna trecută, care a fost mai simplu de 198 00:08:21,730 --> 00:08:22,910 salut programe mondiale. 199 00:08:22,910 --> 00:08:25,560 Este pur și simplu pentru a imprimat lumii ecranul salut, cu un 200 00:08:25,560 --> 00:08:27,650 bule mic discurs iese din pisica. 201 00:08:27,650 --> 00:08:30,590 Ei bine, dacă începem acum să traduce aceasta într-un alt 202 00:08:30,590 --> 00:08:33,419 limbaj, dau seama că ideile de astăzi și miercuri 203 00:08:33,419 --> 00:08:36,450 sunt identice, dar sintaxa începe să se schimbe. 204 00:08:36,450 --> 00:08:39,370 Deci, întrucât săptămâna trecută am avut, când steagul verde clic, spune 205 00:08:39,370 --> 00:08:40,340 salut lume. 206 00:08:40,340 --> 00:08:43,870 Astăzi vom avea int, void main,, printf, 207 00:08:43,870 --> 00:08:46,350 retur, cu unele sintaxa alt acolo, de asemenea. 208 00:08:46,350 --> 00:08:49,200 Acolade, și paranteze, și citate, și fleacuri. 209 00:08:49,200 --> 00:08:54,520 Dar seama că nucleul Ideea aici este de imprimare, 210 00:08:54,520 --> 00:08:58,470 și în cele din urmă faptul că principala este acum va fi 211 00:08:58,470 --> 00:09:00,770 sinonim cu plecare al unui program. 212 00:09:00,770 --> 00:09:04,250 Principal va fi în cazul în care steagul verde începe lucrurile off. 213 00:09:04,250 --> 00:09:06,390 >> Deci, acum sa tachineze pe langa unele dintre pietrele de temelie aici 214 00:09:06,390 --> 00:09:08,650 înainte de a ne scufunda în unele exemple concrete. 215 00:09:08,650 --> 00:09:11,620 Așa că am sunat săptămâna aceasta o declarație trecută, prin care e doar 216 00:09:11,620 --> 00:09:12,470 o instrucțiune. 217 00:09:12,470 --> 00:09:15,660 Face acest lucru - în acest caz, spun Salut lume. 218 00:09:15,660 --> 00:09:18,400 Ei bine, în C, dacă ne uităm la acea linie, acest lucru este modul în care suntem 219 00:09:18,400 --> 00:09:20,920 O să încep exprima această piesă de puzzle special: 220 00:09:20,920 --> 00:09:24,780 printf ("Hello World");. 221 00:09:24,780 --> 00:09:27,330 Și acum vom tachineze acestea în afară mai mult și mai mult în timp, 222 00:09:27,330 --> 00:09:29,330 dar dau seama că există un model aici. 223 00:09:29,330 --> 00:09:31,870 Deci unul, avem acest lucru numit printf, care este 224 00:09:31,870 --> 00:09:34,310 în esență, similară cu cuvântul Say. 225 00:09:34,310 --> 00:09:35,800 Asta e ceea ce va face. 226 00:09:35,800 --> 00:09:37,870 Printf, și f aici înseamnă "formatat". 227 00:09:37,870 --> 00:09:39,270 Deci, doar înseamnă că puteți insera 228 00:09:39,270 --> 00:09:41,600 diverse detalii estetice. 229 00:09:41,600 --> 00:09:43,770 Deci, citatul citat este începutul a ceea ce vom 230 00:09:43,770 --> 00:09:45,340 pentru a începe un șir de asteptare. 231 00:09:45,340 --> 00:09:47,110 Un cuvânt, o frază, o propoziție. 232 00:09:47,110 --> 00:09:50,220 Un șir într-un limbaj de programare este o secvență de zero 233 00:09:50,220 --> 00:09:51,330 sau mai multe caractere. 234 00:09:51,330 --> 00:09:54,390 Deci, h-e-L-L-o, virgulă, și așa mai departe este, 235 00:09:54,390 --> 00:09:56,290 citatul citat, un șir. 236 00:09:56,290 --> 00:09:58,710 Și acum backslash n, un pic ciudat punct de vedere sintactic, dar noi 237 00:09:58,710 --> 00:10:01,780 deja definite ca saptamana trecuta ca însemnând ce? 238 00:10:01,780 --> 00:10:02,630 E doar o linie nouă. 239 00:10:02,630 --> 00:10:05,000 E doar un mod de a transmite la computerul pe care doriți 240 00:10:05,000 --> 00:10:07,700 echivalentul a lovi Enter acolo, dar tu nu faci 241 00:10:07,700 --> 00:10:10,460 vrei sa lovit, de fapt Introduceți și, prin urmare, strica tot 242 00:10:10,460 --> 00:10:12,130 formatarea din programul dvs. real. 243 00:10:12,130 --> 00:10:15,500 Acum paranteze anexați acestui șir, deschis și paren 244 00:10:15,500 --> 00:10:18,130 paren aproape, și în interiorul nostru, care este șir. 245 00:10:18,130 --> 00:10:22,600 Pentru că asta e pentru că, în C, si programare alte 246 00:10:22,600 --> 00:10:27,510 limbi, lucrurile place să ia printf argumente, sau de a lua 247 00:10:27,510 --> 00:10:28,420 parametri. 248 00:10:28,420 --> 00:10:31,490 >> Deci, începem să ne gândim acum de acest bloc Spune violet ca un 249 00:10:31,490 --> 00:10:34,890 funcție, ca o metodă, ca o procedura. 250 00:10:34,890 --> 00:10:36,890 Puteți apela cu adevărat ce vrei tu, pentru moment, dar 251 00:10:36,890 --> 00:10:39,260 E un fel de program de miniatură pe care doar face o 252 00:10:39,260 --> 00:10:41,480 lucru, într-o singură linie, nu mai puțin. 253 00:10:41,480 --> 00:10:43,620 Deci printf este, de asemenea ceea ce am de gând să înceapă o asteptare 254 00:10:43,620 --> 00:10:46,680 funcției, precum și funcțiile de face ceva - în acest caz, 255 00:10:46,680 --> 00:10:49,320 imprimă un șir formatat pe ecran - 256 00:10:49,320 --> 00:10:53,220 dar funcțiile lua, de asemenea argumente sau parametri. 257 00:10:53,220 --> 00:10:55,880 Și prin argumente sau parametri, vă mulțumesc, ne referim 258 00:10:55,880 --> 00:11:01,220 că comportamentul lor poate fi influențată de ceea ce trece în 259 00:11:01,220 --> 00:11:03,420 interiorul parantezelor. 260 00:11:03,420 --> 00:11:06,460 Deci, în acest caz, nevoile printf se spună ce să imprimați, iar noi 261 00:11:06,460 --> 00:11:09,520 doar trec în, în ghilimele duble aici, șirul pe care le 262 00:11:09,520 --> 00:11:11,270 de fapt, doriți să imprimați. 263 00:11:11,270 --> 00:11:14,060 Și virgulă privind sfârșitul acestei linii este doar o 264 00:11:14,060 --> 00:11:18,020 pacoste istorică prin care, la sfârșitul celor mai multe linii de cod, 265 00:11:18,020 --> 00:11:21,170 ai pus o virgulă pentru a face super-clar pentru calculator 266 00:11:21,170 --> 00:11:23,020 faptul că această linie de cod se termină aici. 267 00:11:23,020 --> 00:11:25,600 Acum, acest lucru este bun, deoarece, după cum vom vedea ca programele obține mai mult 268 00:11:25,600 --> 00:11:29,030 complexă, punct și virgulă va face super-om clare pentru noi, 269 00:11:29,030 --> 00:11:32,280 și, de asemenea, calculatorul, în cazul în care liniile de cod început și de sfârșit. 270 00:11:32,280 --> 00:11:34,360 Seama că unele limbi nu au unele 271 00:11:34,360 --> 00:11:35,045 dintre aceste detalii aceleași. 272 00:11:35,045 --> 00:11:37,870 Și, de fapt, în JavaScript, nu aveți nevoie întotdeauna ceva 273 00:11:37,870 --> 00:11:38,670 ca punct și virgulă. 274 00:11:38,670 --> 00:11:40,210 Dar mai multe despre asta să vină. 275 00:11:40,210 --> 00:11:41,170 >> Deci, bucle. 276 00:11:41,170 --> 00:11:43,520 Am avut ceva de genul asta, foarte intuitiv, evident, nu 277 00:11:43,520 --> 00:11:44,860 ceva nou și din nou și din nou. 278 00:11:44,860 --> 00:11:47,720 Vrei punerea pe ciorapi, sau de a spune salut, în acest caz. 279 00:11:47,720 --> 00:11:51,090 Ei bine, incepand de astazi în C, am putea exprima această Scratch 280 00:11:51,090 --> 00:11:54,970 bloca ca in timp ce (adevărat) printf ("Hello World"). 281 00:11:54,970 --> 00:11:57,630 Deci, observați că începi să se bazeze pe literal puzzle 282 00:11:57,630 --> 00:11:58,480 piesa de dinainte. 283 00:11:58,480 --> 00:12:01,310 Avem același bloc violet, dar e în interiorul acestei 284 00:12:01,310 --> 00:12:04,880 paranteze totdeauna bloc, iar cel mai bun mod de a traduce faptul că 285 00:12:04,880 --> 00:12:06,480 la C este după cum urmează. 286 00:12:06,480 --> 00:12:08,130 Nu e nici totdeauna cuvinte cheie. 287 00:12:08,130 --> 00:12:10,940 Nu puteți chiar tip F-o-r-e-v-e-r în C. 288 00:12:10,940 --> 00:12:13,440 Deci, cel mai apropiat analog este timp. 289 00:12:13,440 --> 00:12:17,050 >> Acum, în timp ce (adevărat) pare un pic stupid, deoarece nu valoarea 290 00:12:17,050 --> 00:12:18,700 despre schimbarea vreodată adevărat? 291 00:12:18,700 --> 00:12:19,810 Probabil că nu. 292 00:12:19,810 --> 00:12:22,770 E ca și cum spune în timp ce unul, în timp ce pe, în timp ce adevărata. 293 00:12:22,770 --> 00:12:25,430 Totul e același lucru, adevărată este întotdeauna cazul. 294 00:12:25,430 --> 00:12:29,860 Deci, aceasta bucla se induce, de fapt ce fel de buclă? 295 00:12:29,860 --> 00:12:31,210 Doar o buclă infinită, dreapta. 296 00:12:31,210 --> 00:12:32,930 O bucla Forever sau cum l-am numit săptămâna trecută, 297 00:12:32,930 --> 00:12:33,870 doar o buclă infinită. 298 00:12:33,870 --> 00:12:35,250 Asa ca, uneori asta e de rău. 299 00:12:35,250 --> 00:12:37,060 Uneori, asta e un bug, uneori, de aceea te 300 00:12:37,060 --> 00:12:39,340 minge de plaja filare, sau clepsidra sau similar. 301 00:12:39,340 --> 00:12:41,260 Dar în acest caz, am deliberat, pentru orice 302 00:12:41,260 --> 00:12:43,040 motiv, a vrut să imprime același lucru din nou 303 00:12:43,040 --> 00:12:43,970 și din nou și din nou. 304 00:12:43,970 --> 00:12:45,900 Sau, în cazul în care ca un ceas, vrei să faci 305 00:12:45,900 --> 00:12:47,470 ceva nou și din nou și din nou. 306 00:12:47,470 --> 00:12:49,070 Deci bucle infinite s-ar putea face sens. 307 00:12:49,070 --> 00:12:53,560 Și acest lucru este modul în care, în C am putea traduce totdeauna la cod. 308 00:12:53,560 --> 00:12:55,570 >> Deci, acum, asta e un pic mai specific. 309 00:12:55,570 --> 00:12:58,880 Ne-am repeta de 10 ori următoarea declarație. 310 00:12:58,880 --> 00:13:02,490 Deci, în timp ce (adevărat) nu funcționează destul de acolo, pentru că adevărată este 311 00:13:02,490 --> 00:13:03,590 întotdeauna adevărat. 312 00:13:03,590 --> 00:13:07,060 Deci, dacă ne uităm în schimb, la versiunea C, acum devine o sintaxa 313 00:13:07,060 --> 00:13:08,180 puțin mai criptic. 314 00:13:08,180 --> 00:13:11,380 Dar pentru a fi sincer odată ce începe să vedeți acest lucru, totul devine 315 00:13:11,380 --> 00:13:12,600 destul de familiar de repede. 316 00:13:12,600 --> 00:13:14,370 Deci, asta este ceea ce se numește un pentru buclă. 317 00:13:14,370 --> 00:13:17,210 A pentru buclă este de gând să-i spun computer pentru a face ceva 318 00:13:17,210 --> 00:13:20,710 din nou și din nou și din nou, atât timp cât 319 00:13:20,710 --> 00:13:21,850 aceste lucruri sunt adevărate. 320 00:13:21,850 --> 00:13:23,370 Acum, ce ne spui cu asta? 321 00:13:23,370 --> 00:13:25,470 Ei bine, nu e trei părți la un pentru buclă, și am de gând să 322 00:13:25,470 --> 00:13:28,240 reveni la acest lucru în contextul actual 323 00:13:28,240 --> 00:13:29,100 exemple într-o clipă. 324 00:13:29,100 --> 00:13:31,650 Deci, nu vă faceți griji în cazul în care nu se scufunde destul dintr-o dată. 325 00:13:31,650 --> 00:13:35,400 Dar int i = 0 este, pe scurt, spunând da-mi un 326 00:13:35,400 --> 00:13:38,290 variabilă care este de tip întreg, asa ca acorda-mi un număr de 327 00:13:38,290 --> 00:13:40,890 numit i, și inițializa-l la 0. 328 00:13:40,890 --> 00:13:43,460 Asta e ca și cum mi dea o variabila x algebric și 329 00:13:43,460 --> 00:13:44,580 inițializa-l la 0. 330 00:13:44,580 --> 00:13:46,250 Dar în acest caz, am numit-o eu. 331 00:13:46,250 --> 00:13:49,120 Apoi, în mijloc, se spune că este mai mic de 10. 332 00:13:49,120 --> 00:13:52,150 Asta spune calculatorul nu chestii următorul atât de mult timp 333 00:13:52,150 --> 00:13:53,770 ca i este mai mic de 10. 334 00:13:53,770 --> 00:13:55,370 Și, evident, de a începe mai puțin de 10, deoarece 335 00:13:55,370 --> 00:13:56,550 începe de la 0. 336 00:13:56,550 --> 00:13:59,150 Apoi în sfârșit, puteți ghici, probabil, ceea ce am + + mijloace. 337 00:13:59,150 --> 00:14:02,140 E un pic de sintaxă, care înseamnă doar incrementa i. 338 00:14:02,140 --> 00:14:05,270 Adaugă astfel încât de la 1 la i, din nou și din nou și din nou. 339 00:14:05,270 --> 00:14:09,260 >> Și așa cum vom vedea, aceasta bucla, această sintaxă, mai degrabă, implementeaza 340 00:14:09,260 --> 00:14:12,160 exact același lucru pe care, sincer, în Scratch a fost doar atât de 341 00:14:12,160 --> 00:14:13,250 mult mai ușor să-și exprime. 342 00:14:13,250 --> 00:14:15,170 Repetați 10, și ați terminat. 343 00:14:15,170 --> 00:14:17,690 În C, iar în majoritatea limbajelor de programare, trebuie să fie un 344 00:14:17,690 --> 00:14:20,190 putin mai instructiv pentru calculator și de fapt 345 00:14:20,190 --> 00:14:21,630 specifica ceva de genul asta. 346 00:14:21,630 --> 00:14:23,730 Dar ne vom reveni la acest lucru și sintaxa altele. 347 00:14:23,730 --> 00:14:24,780 >> Ce zici de variabile? 348 00:14:24,780 --> 00:14:26,940 În Scratch am avut ceva de genul aceste blocuri portocalii, 349 00:14:26,940 --> 00:14:28,180 în cazul în care aș putea declara o variabilă. 350 00:14:28,180 --> 00:14:30,000 Să numim arbitrar contra. 351 00:14:30,000 --> 00:14:31,880 Să-l inițializați la 0, și apoi 352 00:14:31,880 --> 00:14:33,240 hai sa facem ceva pentru totdeauna. 353 00:14:33,240 --> 00:14:35,760 În acest caz, în Scratch spun contra, astfel încât 354 00:14:35,760 --> 00:14:38,230 pisica va avea un balon mic discurs care vorbește 355 00:14:38,230 --> 00:14:40,010 numărul care este în această variabilă. 356 00:14:40,010 --> 00:14:42,460 Și apoi avem contra schimbărilor de 1. 357 00:14:42,460 --> 00:14:45,760 Deci, toate acestea sunt înfășurat în interiorul un sistem de blocare pentru totdeauna. 358 00:14:45,760 --> 00:14:48,960 Deci, avem deja acum blocuri în C cu 359 00:14:48,960 --> 00:14:50,040 care să traduce aceasta. 360 00:14:50,040 --> 00:14:51,650 >> O modalitate am putea face asta este aceasta. 361 00:14:51,650 --> 00:14:53,890 Dă-mi un întreg, o numesc contra. 362 00:14:53,890 --> 00:14:55,190 Inițializa-l la 0 363 00:14:55,190 --> 00:14:56,490 în prima linie acolo. 364 00:14:56,490 --> 00:14:59,390 În timp ce (adevărat), așa că eu sunt furat ideea de la doar un moment 365 00:14:59,390 --> 00:15:01,300 Acum, mergeți mai departe și procedați în felul următor. 366 00:15:01,300 --> 00:15:04,880 Imprima contra, iar apoi incrementați contra, 367 00:15:04,880 --> 00:15:06,930 din nou, și din nou, și din nou. 368 00:15:06,930 --> 00:15:09,380 Sau, din nou, + + înseamnă doar adăuga la 1 la ceva. 369 00:15:09,380 --> 00:15:11,030 Dar există o nouă piesă de sintaxă aici. 370 00:15:11,030 --> 00:15:15,730 Ce se sărind ca nu se numără printre exemplele noastre anterioare? 371 00:15:15,730 --> 00:15:17,190 Da, asta d%. 372 00:15:17,190 --> 00:15:19,810 Deci, se poate deduce ce poate face, sincer, pe baza 373 00:15:19,810 --> 00:15:21,410 asupra a ceea ce blocul Scratch este de a face. 374 00:15:21,410 --> 00:15:24,510 Dar, din nou în C, trebuie doar să fie un pic mai special 375 00:15:24,510 --> 00:15:25,990 atunci când vine vorba de a ne exprima. 376 00:15:25,990 --> 00:15:30,560 >> Deci printf ("% d \ n"). 377 00:15:30,560 --> 00:15:32,320 Ei bine, de cele mai multe pe care le putem arunca la fel de familiar. 378 00:15:32,320 --> 00:15:34,910 Cele mai citate înseamnă doar că este un șir de caractere, backslash n 379 00:15:34,910 --> 00:15:35,970 este doar o linie nouă. 380 00:15:35,970 --> 00:15:38,860 Deci, singurul lucru nou pe aici este d%. 381 00:15:38,860 --> 00:15:40,390 Și tot ce este este un substituent. 382 00:15:40,390 --> 00:15:43,510 D% va pentru a desemna un număr zecimal. 383 00:15:43,510 --> 00:15:47,820 Și computer% d mijloace, a pus un număr zecimal aici. 384 00:15:47,820 --> 00:15:49,450 Ei bine, ce număr vrei să afișezi acolo? 385 00:15:49,450 --> 00:15:52,400 Ei bine, după cum se poate deduce, probabil, după virgulă spunem 386 00:15:52,400 --> 00:15:55,480 contra, asta e numele unei variabile pe care le declarată sau 387 00:15:55,480 --> 00:15:57,260 a creat câteva linii mai devreme. 388 00:15:57,260 --> 00:16:02,420 Deci, aceasta este doar felul lui C de conectarea într-o variabilă într-un 389 00:16:02,420 --> 00:16:04,480 șir dinamic. 390 00:16:04,480 --> 00:16:07,350 Pentru că prin contrast, dacă aș fi făcut așa ceva în schimb 391 00:16:07,350 --> 00:16:12,470 acest, printf ("counter"), care ar fi aceasta 392 00:16:12,470 --> 00:16:15,220 Programul face schimb, probabil? 393 00:16:15,220 --> 00:16:17,260 Va imprima literal "contra". 394 00:16:17,260 --> 00:16:18,750 Ceea ce nu este efectul pe care vreau. 395 00:16:18,750 --> 00:16:20,920 Am nevoie să substituie, în unele valoare numerică. 396 00:16:20,920 --> 00:16:24,340 Deci, vom vedea că funcțiile de atunci, la fel ca printf, nu pot lua 397 00:16:24,340 --> 00:16:26,930 doar doar argumente simple, cum ar fi 398 00:16:26,930 --> 00:16:28,150 "Hello World". 399 00:16:28,150 --> 00:16:32,050 Ele pot lua citatul citat virgula, iar apoi unele variabile 400 00:16:32,050 --> 00:16:35,830 care va primi conectate la, după cum vom vedea șirul precedent 401 00:16:35,830 --> 00:16:38,280 prin intermediul acestor substituenți% semn. 402 00:16:38,280 --> 00:16:39,660 >> Ei bine, ce zici de expresii booleene? 403 00:16:39,660 --> 00:16:42,200 Expresii booleene erau aceste valori, adevărate sau false. 404 00:16:42,200 --> 00:16:42,830 Da sau nu. 405 00:16:42,830 --> 00:16:44,020 1 sau 0. 406 00:16:44,020 --> 00:16:45,190 ON sau OFF. 407 00:16:45,190 --> 00:16:47,570 Deci, în Scratch acestea arata ca aceasta, și observați că 408 00:16:47,570 --> 00:16:50,170 Blocul de jos aici este de fapt coroborat 409 00:16:50,170 --> 00:16:51,500 a două blocuri mai mici. 410 00:16:51,500 --> 00:16:53,610 Asa ca am un fel de târât și a scăzut trei bucăți de puzzle 411 00:16:53,610 --> 00:16:56,450 împreună pentru a face această piesă de puzzle mai este acolo, astfel că am 412 00:16:56,450 --> 00:17:00,420 ar putea transmite ideea că vreau x să fie mai puțin decât y și 413 00:17:00,420 --> 00:17:02,540 y pentru a fi mai puțin decât z. 414 00:17:02,540 --> 00:17:05,790 Și așa am putea traduce aceste două linii separate, după cum urmează. 415 00:17:05,790 --> 00:17:08,650 Cel de sus poate fi foarte trivial tradus în C, 416 00:17:08,650 --> 00:17:10,069 doar cu x 00:17:11,990 Poate cu unele paranteze pentru o bună măsură. 418 00:17:11,990 --> 00:17:15,520 Și apoi în C, nu scrie și pentru a desemna 419 00:17:15,520 --> 00:17:16,819 coroborat cu ceva. 420 00:17:16,819 --> 00:17:19,585 Scrii în loc &&. 421 00:17:19,585 --> 00:17:22,849 Și, după cum vom vedea în cele din urmă, un singur ampersand se întâmplă cu 422 00:17:22,849 --> 00:17:23,880 Adică ceva diferit. 423 00:17:23,880 --> 00:17:27,530 Deci && denotă doar ideea de AND. 424 00:17:27,530 --> 00:17:30,040 >> Deci, din nou, chiar dacă acest lucru începe să arate destul de complex, 425 00:17:30,040 --> 00:17:32,560 unul din scopurile de introducere Scratch, în afară de 426 00:17:32,560 --> 00:17:34,810 având doar un fel de distracție pe rampa, unde puteți face 427 00:17:34,810 --> 00:17:36,590 ceva care este foarte grafică, și animat, și 428 00:17:36,590 --> 00:17:39,000 partajabile și cum ar fi, de asemenea, este de a transmite ideea că 429 00:17:39,000 --> 00:17:42,010 toate ideile pe care le încep scufundări în ziua de azi și mai departe 430 00:17:42,010 --> 00:17:44,300 au fost încorporate în chiar atât de simplu 431 00:17:44,300 --> 00:17:46,850 Interfața din prima zi. 432 00:17:46,850 --> 00:17:47,790 Ce zici de asta de aici? 433 00:17:47,790 --> 00:17:48,860 >> Așa condiții. 434 00:17:48,860 --> 00:17:50,590 Deci, bloc Scratch pe stanga arata 435 00:17:50,590 --> 00:17:51,610 un pic mai complex. 436 00:17:51,610 --> 00:17:52,650 Dar e doar o glisare și 437 00:17:52,650 --> 00:17:54,140 scădere de piese de familiare. 438 00:17:54,140 --> 00:17:56,690 Dacă x este mai mic decât y, spune acest lucru. 439 00:17:56,690 --> 00:17:59,900 Altfel daca x este mai mare decât y, spune acest lucru. 440 00:17:59,900 --> 00:18:02,460 Altfel, putem presupune în mod logic se deduce că 441 00:18:02,460 --> 00:18:03,580 acestea trebuie să fie egal. 442 00:18:03,580 --> 00:18:05,220 Deci, spun că ele sunt egale. 443 00:18:05,220 --> 00:18:07,690 Acum in C pe un lucru bun, exact același. 444 00:18:07,690 --> 00:18:09,730 Și observați că acolade vor fi o 445 00:18:09,730 --> 00:18:12,190 caracteristică a C și alte limbi care fac acest tip 446 00:18:12,190 --> 00:18:13,210 de încapsulare. 447 00:18:13,210 --> 00:18:15,470 La fel ca în cazul în care blocul este acest lucru galben, care e un fel de 448 00:18:15,470 --> 00:18:17,770 hapsân bloc violet în interiorul său. 449 00:18:17,770 --> 00:18:19,480 În mod similar sunt aceste bretele - 450 00:18:19,480 --> 00:18:20,870 aceste acolade - 451 00:18:20,870 --> 00:18:24,710 menite a evoca faptul că aceeași idee de a îmbrățișa una sau mai multe 452 00:18:24,710 --> 00:18:27,680 de linii de cod, care sunt indentate interiorul lor. 453 00:18:27,680 --> 00:18:31,270 Deci, pe partea dreaptă aici, dacă x mai mic decât y, printf 454 00:18:31,270 --> 00:18:32,270 ("X este mai mic decât y"). 455 00:18:32,270 --> 00:18:34,980 Altfel daca x este mai mare decât y, imprimați aceeași. 456 00:18:34,980 --> 00:18:38,360 Altele imprima că ele sunt egale. 457 00:18:38,360 --> 00:18:41,750 >> Deci, pe scurt, e destul de o mapare directă sau traducere 458 00:18:41,750 --> 00:18:44,720 a limbii care le-am văzut până acum, inclusiv pentru unii 459 00:18:44,720 --> 00:18:45,940 dintre caracteristicile de mai sofisticate. 460 00:18:45,940 --> 00:18:48,680 Deci, nu ar putea fi folosirea acestui pentru proiectul dumneavoastra, sau s-ar putea să nu 461 00:18:48,680 --> 00:18:51,150 folosi acest proiect pentru dvs. în această săptămână. 462 00:18:51,150 --> 00:18:54,650 Dar am aceste lucruri numite matrice în C. În Scratch, 463 00:18:54,650 --> 00:18:55,680 se numesc liste. 464 00:18:55,680 --> 00:18:59,370 Și am văzut acestea cu RPG Fruitcraft săptămâna trecută. 465 00:18:59,370 --> 00:19:01,320 Micuțul albastru, care a fost de mers pe jos în jurul valorii de, ridicarea 466 00:19:01,320 --> 00:19:03,010 cireșele și portocale și similare. 467 00:19:03,010 --> 00:19:05,110 Ei bine, în Scratch, care a fost pusă în aplicare cu această portocaliu 468 00:19:05,110 --> 00:19:09,000 bloca care conține cuvinte, în acest caz, suntem literalmente 469 00:19:09,000 --> 00:19:10,800 adăugând "portocaliu" într-o 470 00:19:10,800 --> 00:19:12,460 variabilă numită inventar. 471 00:19:12,460 --> 00:19:14,910 Deci, în C, această sintaxă este mergi la a lua un pic mai mult criptic. 472 00:19:14,910 --> 00:19:17,250 Și vom reveni la această săptămâna viitoare și să facă mai mult 473 00:19:17,250 --> 00:19:21,060 lucruri interesante în lumea criptografiei cu ea. 474 00:19:21,060 --> 00:19:23,990 Dar, în partea de jos aici, în esență, aceste două linii 475 00:19:23,990 --> 00:19:27,550 traduce ceea ce facem intr-unul Scratch bloca acolo. 476 00:19:27,550 --> 00:19:30,120 Dar mai multe despre asta să vină. 477 00:19:30,120 --> 00:19:34,120 >> Deci, a pune împreună, aici este un program în C. Deci, haideți să 478 00:19:34,120 --> 00:19:36,590 rapid tachineze pe langa unele dintre piesele de sintaxă aici, dar 479 00:19:36,590 --> 00:19:40,300 apoi să începem de fapt, scris unele cod, familiarizarea 480 00:19:40,300 --> 00:19:42,440 vă cu unele dintre instrumentele vom fi folosind, și să vedem dacă ne 481 00:19:42,440 --> 00:19:45,400 se poate baza pe acum unele dintre aceste blocuri de constructii de baza de la 482 00:19:45,400 --> 00:19:49,150 săptămâna trecută, acum punct de vedere sintactic în C. Deci, la partea de sus aici, această 483 00:19:49,150 --> 00:19:51,380 este, probabil, unul dintre programele cele mai plictisitoare ai putea 484 00:19:51,380 --> 00:19:53,130 scrie în cele mai multe orice limbaj de programare. 485 00:19:53,130 --> 00:19:55,010 Dar e un fel de are o insemnatate speciala pentru că e 486 00:19:55,010 --> 00:19:58,120 Programul canonică că orice om de știință de calculator, scrie atunci când 487 00:19:58,120 --> 00:19:59,620 predarea cineva un limbaj de programare - 488 00:19:59,620 --> 00:20:01,230 un program de salut lume. 489 00:20:01,230 --> 00:20:05,120 >> Deci, la partea de sus foarte, vom vedea această noțiune de # include 490 00:20:05,120 --> 00:20:08,180 și apoi, în paranteze unghiulare, stdio.h. 491 00:20:08,180 --> 00:20:10,580 Vom reveni la asta, dar de fapt ce 492 00:20:10,580 --> 00:20:13,770 înseamnă că există un fișier numit în această lume de iarnă 493 00:20:13,770 --> 00:20:17,670 I / O, stdio punct h, și că e doar un fișier text care 494 00:20:17,670 --> 00:20:19,240 cineva a scris de ani în urmă. 495 00:20:19,240 --> 00:20:22,550 Și în interiorul acelui fișier text sunt o grămadă de 496 00:20:22,550 --> 00:20:25,840 funcții, sau metode, proceduri sau, ca altcineva 497 00:20:25,840 --> 00:20:28,970 a scris că noi suntem beneficiarii, deoarece noi 498 00:20:28,970 --> 00:20:31,420 poate acum folosi codul acelei persoane. 499 00:20:31,420 --> 00:20:33,070 Funcțiile el sau ea a scris. 500 00:20:33,070 --> 00:20:36,320 În acest caz, printf nu este ceva ce am scris, e 501 00:20:36,320 --> 00:20:37,500 nu este ceva care CS50 scris. 502 00:20:37,500 --> 00:20:40,290 E ceva ce cineva a scris de ani în urmă și a pus într-o 503 00:20:40,290 --> 00:20:43,450 fișier numit stdio.h și apoi, ca o parte, a pus 504 00:20:43,450 --> 00:20:45,830 o altă parte a funcției într-un alt dosar. 505 00:20:45,830 --> 00:20:46,940 Dar vom ajunge acolo. 506 00:20:46,940 --> 00:20:50,070 >> Deci, # include este doar modul nostru de a spune, în 507 00:20:50,070 --> 00:20:53,110 C, dă-mi acces la funcții care altcineva a scris. 508 00:20:53,110 --> 00:20:55,490 Și în acest caz, îmi pasă pentru că vreau printf. 509 00:20:55,490 --> 00:20:57,530 Acum avem int main (void). 510 00:20:57,530 --> 00:21:00,160 Deci, acesta este unul dintre aceste lucruri, sincer, că în ziua 0, 511 00:21:00,160 --> 00:21:02,400 destul de mult Am sa cam în zonă, pentru că e doar 512 00:21:02,400 --> 00:21:03,260 nu interesant 513 00:21:03,260 --> 00:21:04,780 intelectual, o parte din sintaxa. 514 00:21:04,780 --> 00:21:07,940 Dar, pentru că acum știu funcții, altfel cunoscut sub numele de 515 00:21:07,940 --> 00:21:11,660 proceduri, sau metode, produc, în general, o anumită valoare. 516 00:21:11,660 --> 00:21:12,520 Ei fac ceva. 517 00:21:12,520 --> 00:21:13,810 Ei vin cu un răspuns. 518 00:21:13,810 --> 00:21:15,020 Ele produc de ieșire. 519 00:21:15,020 --> 00:21:18,780 Deci, int de lângă principal este doar modul nostru de a spune prescurtare 520 00:21:18,780 --> 00:21:21,380 faptul că această funcție, această procedură, în cele din urmă se va 521 00:21:21,380 --> 00:21:22,650 pentru a vă da înapoi un număr. 522 00:21:22,650 --> 00:21:24,370 Și de ce este, ne vom întoarce la. 523 00:21:24,370 --> 00:21:27,810 Principalul este doar lumea standardul implicit pentru implicită 524 00:21:27,810 --> 00:21:30,990 funcție care va fi executat într-un program C atunci când 525 00:21:30,990 --> 00:21:31,860 îl rulați. 526 00:21:31,860 --> 00:21:34,160 Nule înseamnă doar acest lucru, principal, nu ia nici o 527 00:21:34,160 --> 00:21:35,270 argumente, în acest caz. 528 00:21:35,270 --> 00:21:36,400 Deci, eu sunt super-fiind explicită. 529 00:21:36,400 --> 00:21:38,160 Nu e nici o siruri de caractere acolo, nu e nici o virgulă. 530 00:21:38,160 --> 00:21:40,690 Void înseamnă că nu argumente la principal. 531 00:21:40,690 --> 00:21:44,350 >> Acum în sfârșit, din fericire, ultimele două linii sunt familiare. 532 00:21:44,350 --> 00:21:46,160 În interiorul acolade avem o printf 533 00:21:46,160 --> 00:21:47,620 și avem o revenire. 534 00:21:47,620 --> 00:21:50,450 Și retur este un fel de regretabil faptul că trebuie să ne 535 00:21:50,450 --> 00:21:53,510 a pus-o acolo, pentru că în acest caz nu face tot ceea ce 536 00:21:53,510 --> 00:21:54,600 o mare parte din interes. 537 00:21:54,600 --> 00:21:58,790 Dar într-un program de calculator, atunci când o funcție returnează 0, 538 00:21:58,790 --> 00:22:00,610 înseamnă că totul este bine. 539 00:22:00,610 --> 00:22:01,820 Nimic nu a mers prost. 540 00:22:01,820 --> 00:22:06,170 În schimb, în ​​cazul în care o funcție returnează 1, sau negativă 1, sau 541 00:22:06,170 --> 00:22:11,670 negativ 1337, sau a unor numere aleatoare, cum ar fi faptul că, faptul că 542 00:22:11,670 --> 00:22:14,020 în general, înseamnă că o eroare de fapt a avut loc. 543 00:22:14,020 --> 00:22:16,150 Asa ca daca esti pe Mac sau PC-ul, dacă ați văzut vreodată 544 00:22:16,150 --> 00:22:18,590 unele mesaj enervant deoarece computerul dvs. a prăbușit sau 545 00:22:18,590 --> 00:22:20,660 congelate, și nu există un mesaj de eroare criptic, 546 00:22:20,660 --> 00:22:23,320 și apoi un cod, cum ar fi sistemul de coduri 547 00:22:23,320 --> 00:22:25,110 1,2,3,4, unele număr, 548 00:22:25,110 --> 00:22:29,270 că, în general, este un detaliu inutil să-i spun 549 00:22:29,270 --> 00:22:32,110 cele mai multe dintre noi, oamenii, dar asta este ceea ce o funcție sau o 550 00:22:32,110 --> 00:22:34,890 Programul a revenit, de fapt, o valoare non-zero. 551 00:22:34,890 --> 00:22:38,540 Și beneficiul acestui fapt este că 0 înseamnă totul, de asemenea, și 552 00:22:38,540 --> 00:22:40,470 atunci aveți în esență, un număr infinit de lucruri care 553 00:22:40,470 --> 00:22:41,130 poate merge prost. 554 00:22:41,130 --> 00:22:44,700 Care este motivul pentru care a ales 0 pentru bună și o valoare non-zero pentru 555 00:22:44,700 --> 00:22:46,450 rău, după cum vom vedea în curând. 556 00:22:46,450 --> 00:22:47,870 >> Așa că hai să mergem mai departe și să scrie acest lucru. 557 00:22:47,870 --> 00:22:51,610 Deci reamintească faptul că altă zi am folosit Mac-ul meu pentru a deschide o 558 00:22:51,610 --> 00:22:53,970 fereastră de terminal, iar apoi am deschis programul de text, cum ar fi 559 00:22:53,970 --> 00:22:55,900 TextEdit, și am început să scriu un cod. 560 00:22:55,900 --> 00:22:56,580 Ei bine, asta e bine. 561 00:22:56,580 --> 00:22:58,636 Dar experiența dumneavoastră va fi diferit de la un Mac, sau 562 00:22:58,636 --> 00:23:01,220 pe un calculator Solaris, un computer Linux, indiferent de operare 563 00:23:01,220 --> 00:23:02,810 Sistemul se întâmplă să fie folosind. 564 00:23:02,810 --> 00:23:04,970 Și astfel, în cursul, ceea ce în schimb să folosească este ceva 565 00:23:04,970 --> 00:23:07,010 numit Aparatura CS50. 566 00:23:07,010 --> 00:23:10,420 Deci, Aparatura CS50 este o bucată de software descărcabil 567 00:23:10,420 --> 00:23:13,640 care vă permite să rulați un sistem de operare Linux numit, 568 00:23:13,640 --> 00:23:16,810 în special Fedora Linux, pe Mac sau PC-ul dumneavoastră. 569 00:23:16,810 --> 00:23:20,810 Și tu faci acest lucru prin descărcarea ceva numit un hypervisor. 570 00:23:20,810 --> 00:23:23,100 Deci, toate acestea vor fi documentate în set de probleme 1. 571 00:23:23,100 --> 00:23:25,240 Și veți fi ghidat spre ceea ce aveți nevoie pentru a descărca. 572 00:23:25,240 --> 00:23:27,510 Dar rezultatul final, dacă aveți un Mac sau PC-ul, ești tu 573 00:23:27,510 --> 00:23:29,080 descărca unele software-ul gratuit. 574 00:23:29,080 --> 00:23:32,340 Ai apoi descărca Appliance CS50, și vă spun că 575 00:23:32,340 --> 00:23:33,960 software-ul liber - hypervisor - 576 00:23:33,960 --> 00:23:38,080 pentru a rula Appliance CS50 într-o fereastră de pe computer. 577 00:23:38,080 --> 00:23:39,490 Și ce se întâmplă este aceasta. 578 00:23:39,490 --> 00:23:43,660 >> Am acum, observați aici, ceea ce pare a fi un desktop 579 00:23:43,660 --> 00:23:44,130 mediu. 580 00:23:44,130 --> 00:23:46,150 Și lasă-mă să scadă de fapt, această fereastră unică. 581 00:23:46,150 --> 00:23:49,640 Deci, aceasta este acum Mac-ul meu, cu o fereastră mică aici, și în interiorul 582 00:23:49,640 --> 00:23:51,300 din această fereastră se întâmplă să fie un complet 583 00:23:51,300 --> 00:23:52,380 sistem de operare diferit. 584 00:23:52,380 --> 00:23:55,250 Într-adevăr, e un meniu de start aici, amintind de 585 00:23:55,250 --> 00:23:57,990 Windows, care are o gramada de meniuri sub, inclusiv 586 00:23:57,990 --> 00:24:00,720 un link la manualul CS50, Dropbox, și similar. 587 00:24:00,720 --> 00:24:03,480 Și ce acest mediu este acum un standard de mediu 588 00:24:03,480 --> 00:24:06,280 că toți dintre noi poate folosi acum, astfel că indiferent de ceea ce dvs. 589 00:24:06,280 --> 00:24:08,960 calculator este, ceea ce ai instalat pe el, ce versiune 590 00:24:08,960 --> 00:24:11,430 de Mac OS sau Windows rulați, noi toți avem acum 591 00:24:11,430 --> 00:24:12,800 același mediu. 592 00:24:12,800 --> 00:24:15,850 Și acum, în acest mediu, putem începe scrierea unele cod. 593 00:24:15,850 --> 00:24:18,480 >> Așa că am de gând să merg mai departe și să deschidă un program numit gedit. 594 00:24:18,480 --> 00:24:21,500 Acest lucru este comparabil cu notepad.exe, sau 595 00:24:21,500 --> 00:24:22,790 TextEdit pe un Mac. 596 00:24:22,790 --> 00:24:25,390 Și acesta este doar un super program de editare de text simplu 597 00:24:25,390 --> 00:24:27,500 care arata ca acest lucru la prima vedere. 598 00:24:27,500 --> 00:24:30,640 Acum, la foarte de sus, am o paleta alb, în ​​partea de jos am 599 00:24:30,640 --> 00:24:33,860 Trebuie fereastra neagra care spune că aparatul jharvard @. 600 00:24:33,860 --> 00:24:36,440 Și asta pentru că contul de utilizator pe care am creat pre- 601 00:24:36,440 --> 00:24:38,430 pentru toată lumea este numit John Harvard. 602 00:24:38,430 --> 00:24:41,490 El are un dosar în cazul în care toate fișierele sale sunt de gând să meargă, și 603 00:24:41,490 --> 00:24:43,500 aici e în cazul în care putem începe să scriem un cod. 604 00:24:43,500 --> 00:24:45,810 Așa că lasă-mă să merg mai departe aici și mări doar un pic, și eu sunt 605 00:24:45,810 --> 00:24:51,550 de gând să facă # include , int main (void), si 606 00:24:51,550 --> 00:24:57,470 apoi m-am de gând să fac printf ("Hello World") 607 00:24:57,470 --> 00:24:59,490 ; Întoarce 0. 608 00:24:59,490 --> 00:25:01,400 Acum, acest lucru este destul de toată în alb și negru. 609 00:25:01,400 --> 00:25:03,830 >> Lasă-mă să mergeți mai departe și de a face un singur lucru să-i învețe gedit ceea ce am 610 00:25:03,830 --> 00:25:04,510 de fapt, a face. 611 00:25:04,510 --> 00:25:06,140 Lasă-mă să merg la Salvare ca. 612 00:25:06,140 --> 00:25:08,560 Am de gând să aleagă, la partea stângă aici jharvard. 613 00:25:08,560 --> 00:25:11,010 Deci, din nou, chiar dacă nu ați mai folosit înainte de Linux, sincer 614 00:25:11,010 --> 00:25:13,680 aceste zile, toate acestea sunt în esență, descentralizarea în 615 00:25:13,680 --> 00:25:14,590 același tip de interfață - 616 00:25:14,590 --> 00:25:16,030 Mac OS, Windows și Linux. 617 00:25:16,030 --> 00:25:18,680 Asa ca am ales folderul jharvard lui acasă aici. 618 00:25:18,680 --> 00:25:21,120 Și am de gând pentru a salva acest fisier ca hello.c. 619 00:25:21,120 --> 00:25:24,260 Deci, la foarte de sus, am scris hello.c; numirea unui C 620 00:25:24,260 --> 00:25:26,520 program cu extensia. c este 621 00:25:26,520 --> 00:25:27,570 ce e practică comună. 622 00:25:27,570 --> 00:25:28,650 Și l-am lovit pe Salvare. 623 00:25:28,650 --> 00:25:32,510 Și acum ce e frumos este că am învățat în mod eficient gedit, 624 00:25:32,510 --> 00:25:33,690 că acesta este un program de C. 625 00:25:33,690 --> 00:25:36,470 Observați că textul meu alb-negru este acum cod de culoare, sau 626 00:25:36,470 --> 00:25:39,330 sintaxă a subliniat, care atrage atenția mea doar pentru a 627 00:25:39,330 --> 00:25:41,540 diferite părți semantice ale programului. 628 00:25:41,540 --> 00:25:44,260 În partea de sus a plecat de acolo, ca programele mele devin mai complexe, eu sunt 629 00:25:44,260 --> 00:25:47,060 O să aibă un rezumat al tuturor lucrurile pe care le-au scris. 630 00:25:47,060 --> 00:25:48,050 Deci asta e. acolo. 631 00:25:48,050 --> 00:25:52,350 Așa că lasă-mă să micșora acum afară și du-te în jos la această fereastră terminal. 632 00:25:52,350 --> 00:25:54,570 >> Deci, aceasta este, probabil, nouă pentru mulți oameni. 633 00:25:54,570 --> 00:25:57,260 Dacă nu ați utilizat niciodată un mediu de linie de comandă, n-ai mai 634 00:25:57,260 --> 00:26:00,020 utilizate DOS, sau nu ați utilizat niciodată Linux, sau n-ai deschis 635 00:26:00,020 --> 00:26:02,550 Mac OS fereastra terminalului, există o mulțime de lucruri pe care le 636 00:26:02,550 --> 00:26:04,820 ar putea face cu GUI, cum ar fi îndreptat, și făcând clic, și 637 00:26:04,820 --> 00:26:07,080 glisare, și fixarea, precum și cum ar fi, dar în general - 638 00:26:07,080 --> 00:26:09,360 cu siguranță, în lumea informatică - 639 00:26:09,360 --> 00:26:11,580 utilizând o linie de comandă, în cazul în care nu aveți mouse-ul 640 00:26:11,580 --> 00:26:14,220 în general, ai doar tastatura, este de fapt o mulțime 641 00:26:14,220 --> 00:26:17,260 mai puternic decât interfață, odată ce te procedează la aclimatizarea 642 00:26:17,260 --> 00:26:18,580 diverse comenzi. 643 00:26:18,580 --> 00:26:20,940 Și tu fel de liber-te de a avea nevoie de la punctul și faceți clic pe 644 00:26:20,940 --> 00:26:21,690 la toate. 645 00:26:21,690 --> 00:26:23,890 Deci, în gedit vom rezolva de cele mai bune au din ambele lumi. 646 00:26:23,890 --> 00:26:25,600 Noi putem drag and drop de text, putem vedea 647 00:26:25,600 --> 00:26:26,840 frumos și cod de culoare. 648 00:26:26,840 --> 00:26:29,630 Dar când vine vorba de timp pentru a rula programul nostru, vă vom uneori 649 00:26:29,630 --> 00:26:31,750 utilizați această fereastră mică aici. 650 00:26:31,750 --> 00:26:33,460 >> Așa că am de gând să merg mai departe și de a face acest lucru. 651 00:26:33,460 --> 00:26:36,420 În fereastra de jos alb-negru, am de gând să merg mai departe 652 00:26:36,420 --> 00:26:37,890 și de a scrie zăngănit. 653 00:26:37,890 --> 00:26:40,130 Și zăngănit este numele unui compilator. 654 00:26:40,130 --> 00:26:43,310 Este un program care convertește codul meu sursa 655 00:26:43,310 --> 00:26:48,770 în, deci, cod obiect. 656 00:26:48,770 --> 00:26:51,270 0s și 1s, pe care am văzut pe scurt săptămâna trecută. 657 00:26:51,270 --> 00:26:53,700 Recall de săptămâna trecută, am promis că am fost de gând să 658 00:26:53,700 --> 00:26:55,920 du-te la ceva de genul asta - am nevoie pentru a fi 659 00:26:55,920 --> 00:26:57,010 ceva de genul asta - 660 00:26:57,010 --> 00:26:58,700 iar acest lucru cu siguranță nu este ceva care se întâmplă un om 661 00:26:58,700 --> 00:26:59,690 pentru a face manual. 662 00:26:59,690 --> 00:27:01,980 Deci, în loc să mergem să utilizați un program, și că, în programul de 663 00:27:01,980 --> 00:27:03,430 acest caz se numeste zăngănit. 664 00:27:03,430 --> 00:27:06,020 Și numele programului meu este hello.c. 665 00:27:06,020 --> 00:27:09,670 Deci, în scopul de a compila hello.c de la codul sursă în 666 00:27:09,670 --> 00:27:12,930 cod obiect, sau 0s și 1s, acesta trebuie să fie suficiente doar pentru a face 667 00:27:12,930 --> 00:27:14,820 acest lucru și apăsați Enter. 668 00:27:14,820 --> 00:27:16,850 >> Bine, nimic nu pare să se fi întâmplat. 669 00:27:16,850 --> 00:27:20,450 Dar eu știu acum, sau de săptămâna trecută, că numele implicit al 670 00:27:20,450 --> 00:27:24,920 un program, atunci când scrisă în C, se prosteste numit a.out. 671 00:27:24,920 --> 00:27:26,610 Numele cel mai neinteresant ai putea veni cu. 672 00:27:26,610 --> 00:27:28,790 A este prima literă a alfabetului, out este ceea ce a fost 673 00:27:28,790 --> 00:27:29,960 scoase, dar așa să fie. 674 00:27:29,960 --> 00:27:33,570 Acesta este programul meu, iar acum dot slash, așa cum vom vedea, este 675 00:27:33,570 --> 00:27:36,170 de fapt, doar un fel de caracteristica de securitate, deoarece 676 00:27:36,170 --> 00:27:38,250 a.out este un program-am scris. 677 00:27:38,250 --> 00:27:39,650 Ea nu a venit cu calculatorul meu, e 678 00:27:39,650 --> 00:27:40,790 nu în Program Files. 679 00:27:40,790 --> 00:27:42,910 Nu e în dosarul lui Mac OS Aplicații. 680 00:27:42,910 --> 00:27:45,740 Am nevoie să fie explicită super cu calculatorul, și spune 681 00:27:45,740 --> 00:27:49,030 acest program, a.out, este în directorul curent, 682 00:27:49,030 --> 00:27:50,260 directorul curent. 683 00:27:50,260 --> 00:27:53,160 Și modul în care aceasta reprezintă într-un mediu ca asta 684 00:27:53,160 --> 00:27:57,070 este punct reprezintă orice folder vă aflați în prezent inch 685 00:27:57,070 --> 00:27:59,420 Și așa. / Înseamnă doar să rulați a.out 686 00:27:59,420 --> 00:28:00,530 în folderul curent. 687 00:28:00,530 --> 00:28:04,830 Și am alerga aceasta cu Enter, și voila, programul meu foarte primul. 688 00:28:04,830 --> 00:28:05,990 >> Acum, lasă-mă să iau un pas inapoi. 689 00:28:05,990 --> 00:28:08,280 Această fereastră e un pic mic, și să realizeze că în partea de jos 690 00:28:08,280 --> 00:28:10,340 stânga aparatului aici este o altă pictogramă. 691 00:28:10,340 --> 00:28:12,660 Una dintre ele este Chrome, care ar trebui să fie destul de familiar, doar un web 692 00:28:12,660 --> 00:28:14,350 Browser-ul în interiorul aparatului. 693 00:28:14,350 --> 00:28:16,340 Și această pictogramă alb-negru este doar o 694 00:28:16,340 --> 00:28:17,720 mai mare terminal de fereastra. 695 00:28:17,720 --> 00:28:19,830 Deci, în cazul în care acesta devine un pic enervant pentru a sorta de avea doar 696 00:28:19,830 --> 00:28:22,270 această felie micuță de o fereastra cu care să interacționeze 697 00:28:22,270 --> 00:28:24,370 cu programe, ce putem face în schimb acest lucru. 698 00:28:24,370 --> 00:28:26,640 Și acum să-mi să încep să tastați câteva curând 699 00:28:26,640 --> 00:28:27,980 pentru a fi comenzile familiare. 700 00:28:27,980 --> 00:28:28,900 ls. 701 00:28:28,900 --> 00:28:31,410 Deci, ls este comanda pentru listare. 702 00:28:31,410 --> 00:28:33,900 Deci, într-un sistem de operare Mac sau Windows, în general, v-ar dublu-clic pe o 703 00:28:33,900 --> 00:28:36,510 folder și apoi, voila, veți vedea toate fișierele diferitelor 704 00:28:36,510 --> 00:28:37,210 și foldere. 705 00:28:37,210 --> 00:28:39,650 Într-un mediu de comandă linie, în cazul în care aveți posibilitatea să tastați doar 706 00:28:39,650 --> 00:28:42,390 comenzi sau text, ls este echivalent. 707 00:28:42,390 --> 00:28:44,380 Deci, arată-mi ce e în acest director. 708 00:28:44,380 --> 00:28:46,540 >> Acum, există o grămadă de lucruri aici care e atât un pic 709 00:28:46,540 --> 00:28:48,190 familiar și nefamiliar un pic. 710 00:28:48,190 --> 00:28:50,740 Dar observați că la fel ca Windows și Mac OS, jharvard 711 00:28:50,740 --> 00:28:52,190 are un folder pe desktop. 712 00:28:52,190 --> 00:28:54,520 Astfel încât orice pictograme care sunt pe desktop-ul meu se întâmple 713 00:28:54,520 --> 00:28:55,650 să fie în acel folder. 714 00:28:55,650 --> 00:28:57,250 Există un dosar de descărcări, lucruri care 715 00:28:57,250 --> 00:28:58,890 Chrome ar putea pune acolo. 716 00:28:58,890 --> 00:28:59,250 Dropbox. 717 00:28:59,250 --> 00:29:01,820 Deci, aparatul vine cu built-in de sprijin pentru Dropbox 718 00:29:01,820 --> 00:29:04,500 astfel încât, pe semestru, puteți sincroniza cu Dropbox dvs. 719 00:29:04,500 --> 00:29:06,420 considerare, astfel încât toate programele sunt susținute. 720 00:29:06,420 --> 00:29:08,050 Sunt accesibile pe computer altă parte. 721 00:29:08,050 --> 00:29:09,780 Dacă vreodată ceva nu merge bine cu aparatul, puteți 722 00:29:09,780 --> 00:29:11,340 foarte recupera cu ușurință de la Dropbox. 723 00:29:11,340 --> 00:29:12,940 Așa că dosarul e acolo pentru asta. 724 00:29:12,940 --> 00:29:14,660 Există două fișiere pe care le-am făcut - hello.c 725 00:29:14,660 --> 00:29:16,540 și a.out. 726 00:29:16,540 --> 00:29:18,530 Și apoi la dreapta există câteva alte dosare pe care le vom 727 00:29:18,530 --> 00:29:20,710 spre a ajunge la sfârșitul semestrului, cu web 728 00:29:20,710 --> 00:29:21,540 de programare. 729 00:29:21,540 --> 00:29:26,160 Asa ca atunci cand fac /,. A.out, Enter, care spune du-te 730 00:29:26,160 --> 00:29:29,460 în directorul Sunt, directorul curent, și rulați 731 00:29:29,460 --> 00:29:32,465 Programul numit a.out chiar acolo. 732 00:29:32,465 --> 00:29:35,810 >> În regulă, așa că e frumos și bun, dar nu e tot ceea ce 733 00:29:35,810 --> 00:29:38,550 obligarea de a scrie un program numit a.out de ajutor. 734 00:29:38,550 --> 00:29:40,790 Astfel încât să putem face de fapt acest lucru un pic diferit. 735 00:29:40,790 --> 00:29:43,980 Deci, în loc de doar zăngănit de rulare, hello.c, să adăugați 736 00:29:43,980 --> 00:29:46,850 ceea ce se numește un argument de linie de comandă. 737 00:29:46,850 --> 00:29:50,730 Deci, un argument de linie de comandă, sau un comutator în acest caz, este doar 738 00:29:50,730 --> 00:29:54,930 un alt cuvânt sau o frază care să tastați într-un prompt după 739 00:29:54,930 --> 00:29:56,290 programul pe care doriți să o executați. 740 00:29:56,290 --> 00:29:59,970 Deci, în acest caz, zăngănit este programul Vreau să rulez,-o 741 00:29:59,970 --> 00:30:03,480 de ieșire înseamnă un fișier care nu mai este numit a.out. 742 00:30:03,480 --> 00:30:07,510 Ieșire un fișier numit salut, și de a face acest lucru prin compilarea 743 00:30:07,510 --> 00:30:10,200 ultimul cuvânt în linie, hello.c. 744 00:30:10,200 --> 00:30:13,200 Deci, pe scurt, aceasta este o îmbunătățire foarte marginală, prin care 745 00:30:13,200 --> 00:30:15,850 în loc de a avea acest fisier a.out stupid numit, 746 00:30:15,850 --> 00:30:21,430 Eu pot face acum zăngănit-o salut, apoi hello.c, și 747 00:30:21,430 --> 00:30:22,530 a lovit apoi Enter. 748 00:30:22,530 --> 00:30:25,510 Nimic nu pare să se întâmple, dar, din nou mult mai dori cu 0 - atunci când 749 00:30:25,510 --> 00:30:28,510 nimic nu pare să se întâmple asta nu înseamnă nimic rău sa întâmplat - 750 00:30:28,510 --> 00:30:31,460 așa că hai să facem ls acum, Enter, și într-adevăr am acum 751 00:30:31,460 --> 00:30:32,780 au un program de salut. 752 00:30:32,780 --> 00:30:38,510 Deci, dacă tip I salut acum, nu a găsit comanda. 753 00:30:38,510 --> 00:30:39,440 OK, /.. 754 00:30:39,440 --> 00:30:40,220 Deci, exact dreapta. 755 00:30:40,220 --> 00:30:43,170 Deci, pentru ca acest program am scris, si nu a venit cu 756 00:30:43,170 --> 00:30:45,810 calculator, / Buna ziua., Enter, înseamnă 757 00:30:45,810 --> 00:30:47,350 Eu conduc acum salut. 758 00:30:47,350 --> 00:30:48,440 >> Deci asta e tot acolo. 759 00:30:48,440 --> 00:30:51,070 Acum, ce vom ajunge în cele din urmă la linia de comandă mai mult 760 00:30:51,070 --> 00:30:54,110 argumente care ne permit să facem mai mult, dar doar pentru cei pentru 761 00:30:54,110 --> 00:30:57,760 care acest lucru ar putea fi pălărie veche, lasă-mă să merg de fapt, într-o 762 00:30:57,760 --> 00:31:01,910 Culegere de aici și doar vă dau un teaser de cum altfel am 763 00:31:01,910 --> 00:31:05,770 ar putea merge despre punerea în aplicare a Salut lume. 764 00:31:05,770 --> 00:31:10,730 Lasă-mă să intru în aici, și am de gând să-l deschidă. 765 00:31:10,730 --> 00:31:13,090 Deci, de fapt, am de gând să explic ceea ce fac, așa 766 00:31:13,090 --> 00:31:15,610 acest lucru este util. 767 00:31:15,610 --> 00:31:17,410 Lasă-mă înapoi în sus. 768 00:31:17,410 --> 00:31:19,620 >> Așa că am făcut asta de mult timp. 769 00:31:19,620 --> 00:31:23,030 Deci, observați peste pe dreapta, există o serie de 770 00:31:23,030 --> 00:31:26,940 directoarele care sunt denumite ciudat source1m și source1w. 771 00:31:26,940 --> 00:31:28,830 Aceasta este doar o prostie convenție vom folosi. 772 00:31:28,830 --> 00:31:31,825 Sursa înseamnă doar codul sursa, 1 înseamnă acest lucru este de o saptamana, si 773 00:31:31,825 --> 00:31:34,000 m înseamnă că este luni, și w înseamnă că e miercuri. 774 00:31:34,000 --> 00:31:34,900 Deci, criptic acolo nimic. 775 00:31:34,900 --> 00:31:37,830 E doar notația prescurtată. 776 00:31:37,830 --> 00:31:39,860 Aceste lucruri sunt albastre foldere, altfel cunoscut sub numele de 777 00:31:39,860 --> 00:31:40,630 directoare. 778 00:31:40,630 --> 00:31:43,870 Vreau să merg în acel dosar acum, și pe un calculator normal 779 00:31:43,870 --> 00:31:45,710 Aș putea doar dublu-clic pe o pictogramă de folder și 780 00:31:45,710 --> 00:31:46,810 există toate fișierele mele. 781 00:31:46,810 --> 00:31:49,270 Dar, într-un mediu linia de comandă, eu nu pot face destul de 782 00:31:49,270 --> 00:31:52,640 că, astfel încât în ​​loc, că trebuie să schimbe directoare manual. 783 00:31:52,640 --> 00:31:57,900 Deci, dacă am introduce CD-uri și apoi source1m, Enter, observăm că 784 00:31:57,900 --> 00:32:01,180 promptă mea, lucrul în alb la stânga, tocmai sa schimbat. 785 00:32:01,180 --> 00:32:03,690 Și astfel, într-adevăr, atunci când a spus doar paranteze și apoi 786 00:32:03,690 --> 00:32:06,450 squiggle puțin, simbolul tilda, care tocmai a însemnat am fost 787 00:32:06,450 --> 00:32:08,800 în directorul Ioan Harvard acasă, lui Documentele mele, 788 00:32:08,800 --> 00:32:10,390 sale fișierele personale. 789 00:32:10,390 --> 00:32:14,000 Dar acum, în paranteze se spune ~ / source1m. 790 00:32:14,000 --> 00:32:17,090 Acest lucru înseamnă doar că sunt într-un folder denumit source1m 791 00:32:17,090 --> 00:32:19,160 care este în directorul Ioan de la Harvard. 792 00:32:19,160 --> 00:32:22,030 Deci, dacă am doresc acum pentru a lista fișierele în acest dosar, ușor 793 00:32:22,030 --> 00:32:25,300 întrebare, am doar tastați ls. 794 00:32:25,300 --> 00:32:28,860 Și acum văd toate fișierele pe care am creat-pre pentru astăzi 795 00:32:28,860 --> 00:32:31,020 prelegere, toate din care, de cele mai multe ori, care, se întâmplă 796 00:32:31,020 --> 00:32:32,740 să se încheie în. c.. 797 00:32:32,740 --> 00:32:36,210 >> Așa că lasă-mă să mergeți mai departe și a alerga acum gedit de un program numit 798 00:32:36,210 --> 00:32:39,140 holloway.c, care este scris de unele hacker aleatoare 799 00:32:39,140 --> 00:32:42,920 pe internet, care arată un pic ca asta. 800 00:32:42,920 --> 00:32:44,880 Și noi nu sunt de gând să treacă prin asta, în orice 801 00:32:44,880 --> 00:32:48,530 detalii, dar pentru cei mai confortabil, în special, în cazul în care 802 00:32:48,530 --> 00:32:50,935 doriți să luați o presupunere cu privire la ceea ce face acest program aici. 803 00:32:57,950 --> 00:32:59,990 Vă asigurăm, dacă ești mai puțin sau mai confortabil, 804 00:32:59,990 --> 00:33:01,655 nu ne ajunge chiar la acest fel de lucru până la sfârșitul anului 805 00:33:01,655 --> 00:33:02,160 acest semestru. 806 00:33:02,160 --> 00:33:05,390 Aceasta este ceea ce este un exemplu de un concurs imaginar C, care 807 00:33:05,390 --> 00:33:08,390 înseamnă a scrie programul cel mai criptic cautati tu, eventual, 808 00:33:08,390 --> 00:33:10,820 poate să întreacă alte persoane inteligente, care sunt la fel de 809 00:33:10,820 --> 00:33:13,010 încercarea de a scrie lucruri și scoate în evidență faptul că aceștia pot scrie 810 00:33:13,010 --> 00:33:14,280 mai multe lucruri criptice decât tine. 811 00:33:14,280 --> 00:33:17,290 Deci, acest lucru nu este un exemplu de un program bine-scris de la 812 00:33:17,290 --> 00:33:21,260 perspectiva de stil, acesta este un exemplu de program care 813 00:33:21,260 --> 00:33:22,860 câștigă un concurs, pentru oameni care încearcă să 814 00:33:22,860 --> 00:33:24,090 să fie vag și abstract. 815 00:33:24,090 --> 00:33:27,670 >> Deci, dacă vom rula acest lucru, permiteți-mi să intru în fereastra terminalul meu, 816 00:33:27,670 --> 00:33:28,110 ca să spunem așa. 817 00:33:28,110 --> 00:33:29,650 Deci, acest mediu alb-negru este numit 818 00:33:29,650 --> 00:33:31,160 fereastră de terminal în general. 819 00:33:31,160 --> 00:33:32,600 Lasă-mă să mergeți mai departe și compilați-l. 820 00:33:32,600 --> 00:33:34,440 Eu nu am de gând să utilizați zăngănit, pentru că acest program este o 821 00:33:34,440 --> 00:33:36,340 puțin criptic și are nevoie de un alt 822 00:33:36,340 --> 00:33:38,190 compilator, unul numit GCC. 823 00:33:38,190 --> 00:33:39,200 Dar nu acelasi lucru. 824 00:33:39,200 --> 00:33:41,130 Este nevoie de codul sursă în cod obiect. 825 00:33:41,130 --> 00:33:43,940 Și acum, dacă am alerga a.out, că programul pe care îl 826 00:33:43,940 --> 00:33:46,065 Tocmai am văzut face acest lucru. 827 00:33:49,220 --> 00:33:51,170 Așa că colegul acel an a câștigat acel concurs. 828 00:33:51,170 --> 00:33:54,020 Oricum, noi nu mergem în acea direcție, per se. 829 00:33:54,020 --> 00:33:57,400 >> Deci, haideți să încercăm de fapt să tachineze acum în afară ceea ce putem face 830 00:33:57,400 --> 00:33:59,540 cu aceste blocuri de construcție de bază pentru a face mai mult și mai mult 831 00:33:59,540 --> 00:34:00,590 programe interesante. 832 00:34:00,590 --> 00:34:02,800 Deci, am scris un program, am rula un program. 833 00:34:02,800 --> 00:34:05,780 Acum putem simplifica de fapt, și nu mai trebuie să scrie 834 00:34:05,780 --> 00:34:07,210 zăngănit cuvânt la prompt. 835 00:34:07,210 --> 00:34:10,710 Se pare ca programele noastre devin mai criptic, putem, sau 836 00:34:10,710 --> 00:34:14,699 mai complex, mai degrabă, putem rula de fapt, această comandă. 837 00:34:14,699 --> 00:34:17,610 Așa că lasă-mă să mă întorc la directorul casa mea, ca să spunem așa, lasă-mă să 838 00:34:17,610 --> 00:34:20,750 eliminarea - RM este comanda remove - Mă duc pentru a elimina 839 00:34:20,750 --> 00:34:23,060 fișier numit a.out și salut. 840 00:34:23,060 --> 00:34:25,489 Și observați acum într-un mediu de linie de comandă, la fel ca în 841 00:34:25,489 --> 00:34:27,800 o interfață grafică, te solicită. Eu nu pot clic pe un buton, deși, am 842 00:34:27,800 --> 00:34:31,040 Trebuie sa tip Y pentru da, y pentru da. 843 00:34:31,040 --> 00:34:33,460 Și acum, dacă tip I ls din nou, observați că cele verzi 844 00:34:33,460 --> 00:34:35,469 - programe a.out și Hello - 845 00:34:35,469 --> 00:34:35,734 au dispărut. 846 00:34:35,734 --> 00:34:37,340 Feriți-vă rm. 847 00:34:37,340 --> 00:34:39,739 Se poate face lucruri rele, la fel ca tine poate de tragere 848 00:34:39,739 --> 00:34:40,810 lucruri la gunoi dumneavoastră. 849 00:34:40,810 --> 00:34:43,989 >> Deci, acum să mergem mai departe - si am putut face acest lucru - zăngănit-o 850 00:34:43,989 --> 00:34:45,139 salut, salut - 851 00:34:45,139 --> 00:34:46,884 Sunt deja plictisit tastarea această comandă. 852 00:34:46,884 --> 00:34:48,080 Chiar dacă am tastat un pic mai repede. 853 00:34:48,080 --> 00:34:51,870 Astfel încât să putem face schimb face salut. 854 00:34:51,870 --> 00:34:53,880 Deci, asigurați-nu este un compilator. 855 00:34:53,880 --> 00:34:57,720 E doar un program de prietenos, care vine cu Linux, în acest 856 00:34:57,720 --> 00:34:59,070 cazul - sistem de operare - 857 00:34:59,070 --> 00:35:02,480 care automatizează procesul de compilare a programelor. 858 00:35:02,480 --> 00:35:05,555 Deci, în loc de a ne aminti zăngănit-o nume de fișier și 859 00:35:05,555 --> 00:35:08,190 atunci așa mai departe, mai ales odată ce aceste linii să mai și 860 00:35:08,190 --> 00:35:10,110 mai mult, eu pot scrie doar face. 861 00:35:10,110 --> 00:35:12,030 Și acest lucru este de gând să scuipe o grămadă de lucruri care 862 00:35:12,030 --> 00:35:13,940 vom vedea în cele din urmă acest semestru. 863 00:35:13,940 --> 00:35:17,500 Dar acum, dacă observați I ls tip, salut este din nou în directorul meu. 864 00:35:17,500 --> 00:35:19,850 Și într-adevăr, pot rula cu / salut.. 865 00:35:19,850 --> 00:35:23,330 Deci, asigurați-automatizează procesul doar de a rula ceea ce a fost, 866 00:35:23,330 --> 00:35:26,910 în acest caz, o mult mai mare, mai complex comanda. 867 00:35:26,910 --> 00:35:29,060 Deci, vom începe să utilizați marca, doar pentru că e mult 868 00:35:29,060 --> 00:35:30,530 mai ușor de utilizat. 869 00:35:30,530 --> 00:35:32,770 >> Dar acum să facem un program mai interesant 870 00:35:32,770 --> 00:35:34,650 decât, să spunem doar salut. 871 00:35:34,650 --> 00:35:38,680 Deci, în programele pe care le-am scris până acum nu e principal. 872 00:35:38,680 --> 00:35:40,890 Asta e doar lucru implicit care începe totul oprit. 873 00:35:40,890 --> 00:35:43,340 Dar există și alte funcții, precum și acolo, și 874 00:35:43,340 --> 00:35:45,890 stdio.h este lucru pe care am văzut-o la partea de sus a noastră 875 00:35:45,890 --> 00:35:48,480 fișierul înainte, și asta e ceea ce este cunoscut ca biblioteca standard. 876 00:35:48,480 --> 00:35:51,300 In interiorul bibliotecii standard este o grămadă de funcții 877 00:35:51,300 --> 00:35:53,850 că altcineva a scris, și putem începe să utilizați aceste 878 00:35:53,850 --> 00:35:55,050 Funcțiile de a scrie mai mult 879 00:35:55,050 --> 00:35:56,760 programe interesante pe noi înșine. 880 00:35:56,760 --> 00:35:58,370 >> Așa că lasă-mă să mă întorc la aparat. 881 00:35:58,370 --> 00:35:59,820 Am de gând să închidă fereastra terminal. 882 00:35:59,820 --> 00:36:02,630 Am de gând să închidă lucrurile pe care le-a scris mai devreme, și du-te 883 00:36:02,630 --> 00:36:07,350 în hello.c, și observați acum pot face următoarele. 884 00:36:07,350 --> 00:36:09,730 Bună ziua lume nu este tot ceea ce interesant, aș dori să 885 00:36:09,730 --> 00:36:11,770 personaliza acest program pentru mine. 886 00:36:11,770 --> 00:36:13,440 Deci, în loc de a spune lumii, am de gând să 887 00:36:13,440 --> 00:36:14,830 mergeți mai departe și să spunem - 888 00:36:14,830 --> 00:36:16,880 Aș putea scrie David -, dar aceasta este cu adevărat un fel de 889 00:36:16,880 --> 00:36:18,050 fundamental aceeași. 890 00:36:18,050 --> 00:36:19,970 Dar hai să încercați această idee substituent. 891 00:36:19,970 --> 00:36:24,460 Reamintim că, în C, mai degrabă în printf, am avut aceste 892 00:36:24,460 --> 00:36:28,110 substituenți, și de acolo sunt mai mult de% d doar. 893 00:36:28,110 --> 00:36:31,150 Deci, a fost% d, verificare rapidă bun-simț. 894 00:36:31,150 --> 00:36:32,310 Bine, număr zecimal, asta e tot. 895 00:36:32,310 --> 00:36:33,860 Cifre zecimale, asta e tot. 896 00:36:33,860 --> 00:36:37,755 Deci C%, așa cum vom întâlni, va fi un personaj. 897 00:36:37,755 --> 00:36:40,530 Pune un personaj aici, o scrisoare de la A la Z, 898 00:36:40,530 --> 00:36:41,600 sau semne de punctuație simbol. 899 00:36:41,600 --> 00:36:45,590 Un singur caracter, f%, știe cineva de la alte limbi? 900 00:36:45,590 --> 00:36:47,020 Deci, o valoare în virgulă mobilă. 901 00:36:47,020 --> 00:36:47,880 Un număr real. 902 00:36:47,880 --> 00:36:51,550 Deci, nu este un număr zecimal - aceasta este de fapt un număr real cu 903 00:36:51,550 --> 00:36:54,130 un punct zecimal, iar unele numărul de cifre la stânga 904 00:36:54,130 --> 00:36:55,520 și dreptul de ea. 905 00:36:55,520 --> 00:36:58,060 % S, sfori. 906 00:36:58,060 --> 00:36:59,530 Că o vom vedea destul de des. 907 00:36:59,530 --> 00:37:02,140 Un șir, din nou, este doar un cuvânt, o frază, o secvență de 908 00:37:02,140 --> 00:37:03,330 caractere individuale. 909 00:37:03,330 --> 00:37:06,730 Și, în fine, LLD? 910 00:37:06,730 --> 00:37:08,210 Deci, aceasta este mai mult de un caz colț. 911 00:37:08,210 --> 00:37:09,850 Lung, lung zecimal. 912 00:37:09,850 --> 00:37:12,035 Deci, dacă nu vrei doar un număr care este atât de mare, vă 913 00:37:12,035 --> 00:37:14,160 doresc un numar mai mare, ai de gând să trebuie să specificați la 914 00:37:14,160 --> 00:37:16,400 computer care este de o anumită dimensiune. 915 00:37:16,400 --> 00:37:17,610 >> Așa că hai să tweak acest bit un pic. 916 00:37:17,610 --> 00:37:20,610 Mai degrabă decât doar codul de greu în David, lasă-mă să ușor 917 00:37:20,610 --> 00:37:22,460 spune dinamic% s. 918 00:37:22,460 --> 00:37:25,790 Deci, pune aici% s, care este un substituent pentru un șir. 919 00:37:25,790 --> 00:37:30,500 Atunci lasă-mă să fac virgulă, iar apoi "David" pe aici. 920 00:37:30,500 --> 00:37:32,770 Acum, acest lucru nu este tot ceea ce intelectual interesant, 921 00:37:32,770 --> 00:37:35,060 pentru că tot ce am făcut acum este să creați într-adevăr mai mult de lucru pentru 922 00:37:35,060 --> 00:37:35,790 calculator. 923 00:37:35,790 --> 00:37:39,660 , Mai degrabă decât spune calculatorul face acest lucru dintr-o dată, eu sunt acum 924 00:37:39,660 --> 00:37:43,760 spunând face acest lucru și introduceți un șir de aici în cele din urmă, virgulă, 925 00:37:43,760 --> 00:37:44,950 aici este faptul că șirul. 926 00:37:44,950 --> 00:37:47,220 Deci, acest lucru nu este o îmbunătățire mai bună, dar e cel puțin 927 00:37:47,220 --> 00:37:49,010 un pas spre un program mai interesant. 928 00:37:49,010 --> 00:37:51,240 Pentru că acum, lasă-mă să mergeți mai departe și să facă această fereastră un pic 929 00:37:51,240 --> 00:37:56,850 mai mare, lasă-mă să mergeți mai departe și să rulați make salut. 930 00:37:56,850 --> 00:38:01,340 Și acum, / a.out., Nu este de lucru, de ce? 931 00:38:03,880 --> 00:38:05,570 În regulă, acum se numește salut. 932 00:38:05,570 --> 00:38:09,400 Deci, din nou face, și, de asemenea, cu un zăngănit O-, redenumit 933 00:38:09,400 --> 00:38:11,120 Programul să fie ceva mult mai interesant. 934 00:38:11,120 --> 00:38:13,060 Și voila: acum se spune Hello David. 935 00:38:13,060 --> 00:38:14,590 >> În regulă, încă un program de prost. 936 00:38:14,590 --> 00:38:18,070 Deci, acum să mergem de fapt, înapoi aici și să introducă noțiunea 937 00:38:18,070 --> 00:38:18,810 a unei variabile. 938 00:38:18,810 --> 00:38:21,600 Nu ar fi frumos dacă am putea declara o variabilă 939 00:38:21,600 --> 00:38:23,150 al cărui tip este string? 940 00:38:23,150 --> 00:38:26,720 Și valoarea variabilei de fapt vine de la utilizatorul 941 00:38:26,720 --> 00:38:27,810 el sau ea. 942 00:38:27,810 --> 00:38:30,240 Deci arbitrar, am de gând să sun mi-e variabilă, care este 943 00:38:30,240 --> 00:38:32,410 doar o convenție comun atunci când aveți o singură variabilă numită 944 00:38:32,410 --> 00:38:33,250 șir. 945 00:38:33,250 --> 00:38:35,670 Am de gând să fac semnul egal, iar apoi voi apela un 946 00:38:35,670 --> 00:38:38,030 funcție numită getString. 947 00:38:38,030 --> 00:38:40,830 Deci getString nu este ceva care vine construit în C. Este 948 00:38:40,830 --> 00:38:43,330 o funcție care personalul CS50 a scris, într-adevăr doar pentru 949 00:38:43,330 --> 00:38:45,670 Acestea primul cuplu de săptămâni, pentru a simplifica procesul de 950 00:38:45,670 --> 00:38:49,450 obtinerea introduse de utilizator și de a obține datele introduse de utilizator în formularul de 951 00:38:49,450 --> 00:38:51,960 de siruri de caractere, sau numere, și astfel. 952 00:38:51,960 --> 00:38:55,520 Deci getString este ca printf, dar, evident, mai degrabă decât 953 00:38:55,520 --> 00:38:58,700 imprima o să facă ceea ce spune numele său, pentru a primi un șir. 954 00:38:58,700 --> 00:39:00,970 Dar pentru a utiliza getString, vom avea de a face o schimbare 955 00:39:00,970 --> 00:39:03,180 aici, dincolo de asta. 956 00:39:03,180 --> 00:39:07,170 Deci intuitiv, acest program, sperăm, se va cumva 957 00:39:07,170 --> 00:39:09,700 obține un șir de utilizator, și apoi ce se va face 958 00:39:09,700 --> 00:39:11,460 cu acel sir, numit e? 959 00:39:15,060 --> 00:39:16,470 Este doar o să-l imprimați, corect? 960 00:39:16,470 --> 00:39:18,870 Încă nu este un program de stimulare, deoarece tot ce se întâmplă 961 00:39:18,870 --> 00:39:22,160 să faceți este să conectați această valoare în cazul în care s% 962 00:39:22,160 --> 00:39:23,750 spune că ar trebui să meargă. 963 00:39:23,750 --> 00:39:25,290 >> Așa că, cel puțin vedea acest lucru în acțiune. 964 00:39:25,290 --> 00:39:27,040 Lasă-mă să salvați și zoom out. 965 00:39:27,040 --> 00:39:30,280 Acum in fereastra mea terminale aici jos, felie mica de un an, 966 00:39:30,280 --> 00:39:32,760 permiteți-mi să fac din nou fac salut. 967 00:39:32,760 --> 00:39:35,160 Bine, și ah, la naiba, am o grămadă de erori. 968 00:39:35,160 --> 00:39:38,020 Lasă-mă să derulați în sus, și vom vedea primul nostru - 969 00:39:38,020 --> 00:39:40,430 așa că hai să facem de fapt, aceasta într-o fereastră mai mare, astfel încât să 970 00:39:40,430 --> 00:39:42,110 se poate vedea cât de rău am stricat - 971 00:39:42,110 --> 00:39:44,460 asa ca salut. 972 00:39:44,460 --> 00:39:46,540 Bine, asta e un dezastru, nu? 973 00:39:46,540 --> 00:39:48,740 Am scris trei linii de cod, și 974 00:39:48,740 --> 00:39:50,070 aceasta mi-a dat 12 erori. 975 00:39:50,070 --> 00:39:51,980 Deci, de ce este asta? 976 00:39:51,980 --> 00:39:55,720 Deci, din fericire, de multe ori, când veți vedea erori multe, multe 977 00:39:55,720 --> 00:39:57,730 scuipa o dată, este într-adevăr doar pentru că ați 978 00:39:57,730 --> 00:39:59,760 confundat de calculator, până aici. 979 00:39:59,760 --> 00:40:02,330 Și rămâne confuz de momentul în care ajunge aici. 980 00:40:02,330 --> 00:40:04,400 Și așa începe doar declanșare, și poticnire, și 981 00:40:04,400 --> 00:40:07,310 scuipa mai multe lucruri infricosatoare decat se aplică efectiv. 982 00:40:07,310 --> 00:40:10,120 Deci, în general, începe întotdeauna cu cea de sus. 983 00:40:10,120 --> 00:40:13,320 >> Deci, cea mai mare instanță foarte de sus de rosu, 984 00:40:13,320 --> 00:40:14,740 mesaj de eroare este aceasta. 985 00:40:14,740 --> 00:40:17,750 Utilizarea șir de identificare nedeclarate, am 986 00:40:17,750 --> 00:40:19,160 Adică standard în? 987 00:40:19,160 --> 00:40:19,900 Nu am. 988 00:40:19,900 --> 00:40:24,180 Am vrut șir, dar acest lucru se datorează faptului că, de asemenea, șirul cuvântul 989 00:40:24,180 --> 00:40:26,020 că am păstra folosind verbal de fapt, 990 00:40:26,020 --> 00:40:27,240 nu există în nici C. 991 00:40:27,240 --> 00:40:29,470 E ceva ce vom folosi doar pentru prima săptămână sau două 992 00:40:29,470 --> 00:40:34,500 aici, dar ea există într-un fișier denumit cs50.h. 993 00:40:34,500 --> 00:40:37,110 Deci, pentru moment, știu că există această bibliotecă de altă natură care 994 00:40:37,110 --> 00:40:39,330 Personalul a scris, asa ca a fost scris mai mult de recent, 995 00:40:39,330 --> 00:40:40,510 stdio.h. 996 00:40:40,510 --> 00:40:45,020 Dar înăuntrul cs50.h este o definiție, un sinonim al 997 00:40:45,020 --> 00:40:48,310 felul, care creează acest șir cuvânt. 998 00:40:48,310 --> 00:40:50,890 >> Deci, acum să mă întorc la fereastra terminalul meu. 999 00:40:50,890 --> 00:40:53,200 Am de gând să îndepărteze toată mizeria asta prin Ctrl-L. Vom doar 1000 00:40:53,200 --> 00:40:55,700 ștergeți totul curat, și am de gând să merg mai departe și să facă 1001 00:40:55,700 --> 00:40:57,860 salut din nou, Enter. 1002 00:40:57,860 --> 00:40:59,440 Deci, ce sa întâmplat acum? 1003 00:40:59,440 --> 00:41:01,150 Acum, toate aceste erori plecat. 1004 00:41:01,150 --> 00:41:02,230 Deci, ceea ce am făcut cu adevărat? 1005 00:41:02,230 --> 00:41:05,920 Am învățat doar șirul de calculator ce există, și e 1006 00:41:05,920 --> 00:41:07,890 în acel fișier numit cs50.h. 1007 00:41:07,890 --> 00:41:10,930 Deci nu se mai plângă, pentru că acum știi unde să găsească 1008 00:41:10,930 --> 00:41:13,220 declarația că funcția lui ca să spunem așa. 1009 00:41:13,220 --> 00:41:15,200 În cazul în care există în lume. 1010 00:41:15,200 --> 00:41:18,820 >> Deci, acum am de gând să merg mai departe și a alerga salut. 1011 00:41:18,820 --> 00:41:22,300 Am par a avea o buclă infinită, se întâmplă nimic lui. 1012 00:41:25,530 --> 00:41:26,870 Așa că am nevoie să tastați ceva aici, nu. 1013 00:41:26,870 --> 00:41:29,650 Prima linie de cod în programul meu a fost getString. 1014 00:41:29,650 --> 00:41:31,750 Deci, este literalmente mă așteaptă pentru a obține un șir. 1015 00:41:31,750 --> 00:41:33,680 Deci, în acest sens da, aceasta este o buclă infinită. 1016 00:41:33,680 --> 00:41:36,520 Se pare că în getString este comportamentul implicit că noi 1017 00:41:36,520 --> 00:41:37,510 scris - personalul - 1018 00:41:37,510 --> 00:41:39,550 ca doar spune, așteptați și așteptați și așteptați și așteptați și așteptați, 1019 00:41:39,550 --> 00:41:42,550 până când utilizatorul vă oferă un șir prin tastarea ceva inch 1020 00:41:42,550 --> 00:41:46,000 Așa că lasă-mă să mergeți mai departe și de tip într-un D-v-- i-d, Enter. 1021 00:41:46,000 --> 00:41:47,420 Și acolo este, salut David. 1022 00:41:47,420 --> 00:41:50,430 >> Acum, se pare ca acest este doar un act? 1023 00:41:50,430 --> 00:41:52,810 Lasă-mă să mergeți mai departe și tastați Tommy. 1024 00:41:52,810 --> 00:41:54,740 Introduceți, bine, pare a fi de lucru. 1025 00:41:54,740 --> 00:41:59,130 Lucrări pentru Rob, lucrari pentru Zamyla, lucreaza pentru - bine. 1026 00:41:59,130 --> 00:42:01,000 Deci, se va merge, cel mai probabil. 1027 00:42:01,000 --> 00:42:05,030 Deci, ar trebui să imprimați tot ceea ce ne da de fapt, 1028 00:42:05,030 --> 00:42:07,830 și putem fi un pic dificil aici. 1029 00:42:07,830 --> 00:42:12,130 Să vedem dacă putem face ceva de genul salut. 1030 00:42:12,130 --> 00:42:18,000 Poate trece peste aici, să vedem, copiere, lipire. 1031 00:42:18,000 --> 00:42:19,950 Eu nu am de gând să fie în măsură să lipiți ca de multe ori aici. 1032 00:42:19,950 --> 00:42:24,410 Pastă, bine, Shift + Ctrl + V. Deci, ceea ce ar putea 1033 00:42:24,410 --> 00:42:26,970 întâmpla ca e rau aici? 1034 00:42:26,970 --> 00:42:27,770 >> Ok, deci, segfaults. 1035 00:42:27,770 --> 00:42:29,710 Deci, unii dintre voi, cu medii anterioare vor ști că 1036 00:42:29,710 --> 00:42:32,710 în general, oferind o mulțime de calculatoare intrări atunci când acestea sunt 1037 00:42:32,710 --> 00:42:36,140 probabil nu sunt menite să primească nume lungi de acest gen - rele 1038 00:42:36,140 --> 00:42:36,740 lucrurile sa se intample. 1039 00:42:36,740 --> 00:42:39,230 Într-adevăr, în lumea de web, de asemenea, acest lucru se întâmplă destul de un pic, 1040 00:42:39,230 --> 00:42:41,000 prin care atunci când sunteți proiectarea unui site web, atunci când sunteți 1041 00:42:41,000 --> 00:42:43,850 proiectare Facebook, va trebui să ia decizii arbitrare până 1042 00:42:43,850 --> 00:42:45,370 față, ca și cum cineva va lungă 1043 00:42:45,370 --> 00:42:46,360 Facebook numele de utilizator să fie? 1044 00:42:46,360 --> 00:42:48,050 Sau cat timp va numele cuiva prima să fie? 1045 00:42:48,050 --> 00:42:50,110 Cât timp va numărul de telefon cuiva să fie și place. 1046 00:42:50,110 --> 00:42:53,580 Și dacă programatori face presupuneri proaste, programe de rupe 1047 00:42:53,580 --> 00:42:56,640 pentru că încercați să oferindu-le mai mult de ieșire, de intrare mai 1048 00:42:56,640 --> 00:42:58,330 mai degrabă, decât au memorie. 1049 00:42:58,330 --> 00:43:01,860 Sau memorie RAM alocată pentru ea, și deci, dacă acum l-am lovit Enter, 1050 00:43:01,860 --> 00:43:04,640 că programul efectiv lucrate, pentru că am fost la bibliotecă 1051 00:43:04,640 --> 00:43:06,790 și am anticipat de fapt, acest caz particular. 1052 00:43:06,790 --> 00:43:10,900 Dar, fără îndoială, acest semestru, va scrie cel puțin o 1053 00:43:10,900 --> 00:43:13,280 program care va spune aceste cuvinte. 1054 00:43:13,280 --> 00:43:16,520 Amintiți-vă acest săptămâni de acum, poate două zile de la acum. 1055 00:43:16,520 --> 00:43:18,760 Segmentation fault este un lucru rău. 1056 00:43:18,760 --> 00:43:21,920 Acesta se va referi la ceva care face dvs. de calculator 1057 00:43:21,920 --> 00:43:23,310 nu a anticipat. 1058 00:43:23,310 --> 00:43:25,810 Și în acest caz, tu, programator, nu am anticipat. 1059 00:43:25,810 --> 00:43:27,720 La fel ca ceea ce acest morman de șosete, au existat diverse 1060 00:43:27,720 --> 00:43:29,520 cazuri de colt am fi putut întâlnit. 1061 00:43:29,520 --> 00:43:32,340 În mod similar, în programele, dacă nu anticipa cât timp este 1062 00:43:32,340 --> 00:43:33,310 numele cuiva va fi. 1063 00:43:33,310 --> 00:43:35,890 Sau ce se întâmplă dacă am un utilizator rău intenționat, și numele lui sau a ei este 1064 00:43:35,890 --> 00:43:37,230 de fapt, destul de scurt, dar sunt doar încercarea de 1065 00:43:37,230 --> 00:43:37,960 să te pui cu mine? 1066 00:43:37,960 --> 00:43:40,490 Ce se va fi comportamentul de programul meu? 1067 00:43:40,490 --> 00:43:43,930 Ei bine, în acest caz, s-ar putea prăbuși ceva, de fapt. 1068 00:43:43,930 --> 00:43:44,750 >> Deci, hai sa facem asta. 1069 00:43:44,750 --> 00:43:46,860 În 90 de minute, acesta este un moment îngrozitor de lungă 1070 00:43:46,860 --> 00:43:47,780 de a face stiinta de calculator. 1071 00:43:47,780 --> 00:43:49,550 De ce nu intrăm noi în obiceiul de a lua o cinci minute 1072 00:43:49,550 --> 00:43:51,520 rupe aici, și când ne întoarcem, ne vom scufunda în unele 1073 00:43:51,520 --> 00:43:53,430 programe mai complexe și mai convingătoare? 1074 00:43:53,430 --> 00:43:54,680 Cinci minute. 1075 00:43:56,910 --> 00:43:58,160 >> Bine. 1076 00:44:01,138 --> 00:44:02,780 Deci, un rapid comentariu. 1077 00:44:02,780 --> 00:44:05,590 Mi sa spus că, deși acest lucru a fost pe ecran înainte, ceea ce 1078 00:44:05,590 --> 00:44:08,880 a ieșit din gura mea a fost cs50.net/rsvp. 1079 00:44:08,880 --> 00:44:11,670 Acest lucru este corect. cs50.net/lunch. 1080 00:44:11,670 --> 00:44:16,030 Deci, acum puteți încerca să RSVPing pentru acest lucru la / masa de prânz. 1081 00:44:16,030 --> 00:44:16,980 Dar hai să facem acest lucru acum. 1082 00:44:16,980 --> 00:44:20,150 Deci, acest lucru a fost super rapid, super-nou pentru o mulțime de oameni. 1083 00:44:20,150 --> 00:44:21,560 Pălărie vechi pentru unii oameni. 1084 00:44:21,560 --> 00:44:24,930 Deci, haideți să înapoi doar pentru o clipă, și să vedem cum am ajuns sa 1085 00:44:24,930 --> 00:44:29,350 această ieșire Bună ziua lume doar un moment în urmă. 1086 00:44:29,350 --> 00:44:31,780 >> Deci în primul rând, nu e asta Aparatura CS50. 1087 00:44:31,780 --> 00:44:34,270 Din nou, bucată de software, problema stabilit data de 1 se va spune 1088 00:44:34,270 --> 00:44:36,610 ai cum să-l descărcați, în cazul în care să-l descărcați, ce să faceți clic pe 1089 00:44:36,610 --> 00:44:37,430 și așa mai departe. 1090 00:44:37,430 --> 00:44:39,670 Și apoi, odată ce urmați aceste instrucțiuni, veți putea 1091 00:44:39,670 --> 00:44:42,840 pentru a maximiza fereastra, și Mac sau PC-ul va arata o 1092 00:44:42,840 --> 00:44:43,910 ceva de genul asta. 1093 00:44:43,910 --> 00:44:47,170 Un fundal negru, un dosar acasa, la partea de sus în cazul în care toate 1094 00:44:47,170 --> 00:44:49,850 fișierele du-te, un coș de gunoi în partea stângă sus, 1095 00:44:49,850 --> 00:44:51,130 un meniu în partea de jos. 1096 00:44:51,130 --> 00:44:54,010 Deci, din nou, destul de similare în spirit la Mac OS sau Windows, 1097 00:44:54,010 --> 00:44:56,040 chiar dacă se întâmplă să fie Linux. 1098 00:44:56,040 --> 00:44:58,120 Deci, ceea ce am făcut următoarea? 1099 00:44:58,120 --> 00:44:59,580 Ei bine, am început să scriu programe. 1100 00:44:59,580 --> 00:45:02,260 Și amintească de săptămâna trecută că tot ce trebuie pentru a scrie un 1101 00:45:02,260 --> 00:45:04,970 Programul este un editor de text simplu, 1102 00:45:04,970 --> 00:45:06,550 cum ar fi Notepad sau TextEdit. 1103 00:45:06,550 --> 00:45:08,360 Sincer, tu chiar posibilitatea să utilizați Microsoft Word. 1104 00:45:08,360 --> 00:45:11,170 Dar lucrurile rele se va întâmpla în cele din urmă, pentru că e un foarte 1105 00:45:11,170 --> 00:45:13,930 hand-mână soluție pentru a scrie un program, plus o să 1106 00:45:13,930 --> 00:45:15,400 salvați-l în formatul de fișier greșit. 1107 00:45:15,400 --> 00:45:18,150 Dar e doar un editor de text, un procesor de text, este tot ceea ce e 1108 00:45:18,150 --> 00:45:19,390 necesare pentru a scrie un program. 1109 00:45:19,390 --> 00:45:23,420 >> Deci, în Appliance CS50, putem face acest lucru într-un mod simplu. 1110 00:45:23,420 --> 00:45:25,580 Noi putem doar să faceți clic pe această pictogramă în stânga jos. 1111 00:45:25,580 --> 00:45:28,790 Și din nou, problema stabilit data de 1 vă va sfătui cu privire la acest lucru, și voila - 1112 00:45:28,790 --> 00:45:31,210 veți obține această interfață în alb și negru în cazul în care putem începe 1113 00:45:31,210 --> 00:45:32,160 scrierea de cod. 1114 00:45:32,160 --> 00:45:34,960 Așa că hai să începem scrierea unui program super-simplu din nou. 1115 00:45:34,960 --> 00:45:38,890 Am de gând să merg până la File, Save, și am de gând să sun 1116 00:45:38,890 --> 00:45:42,870 acest lucru, să spunem, hello2.c. 1117 00:45:42,870 --> 00:45:45,410 Și eu doar spun, făcând clic pe jharvard, pune-l 1118 00:45:45,410 --> 00:45:46,750 în directorul său, nu-mi pasă cu adevărat 1119 00:45:46,750 --> 00:45:47,980 în cazul în care aceasta merge. 1120 00:45:47,980 --> 00:45:49,090 Și apoi Salvare. 1121 00:45:49,090 --> 00:45:50,880 Și acum pot începe să scriu programul meu. 1122 00:45:50,880 --> 00:45:53,560 Și îmi aduc aminte de mai devreme că trebuie să scriu int 1123 00:45:53,560 --> 00:45:55,400 main (void). 1124 00:45:55,400 --> 00:45:57,000 Zoom in pe stânga sus. 1125 00:45:57,000 --> 00:46:02,670 Și apoi vreau să spun printf, ia două. 1126 00:46:02,670 --> 00:46:05,690 Și acum o linie noua oferta, aproape, aproape 1127 00:46:05,690 --> 00:46:07,820 paranteze, punct și virgulă. 1128 00:46:07,820 --> 00:46:10,560 Și apoi mă duc aici la fereastră terminal meu că e 1129 00:46:10,560 --> 00:46:12,840 inglobate in gedit, doar pentru comoditate. 1130 00:46:12,840 --> 00:46:15,200 Și am de gând să merg mai departe și de a scrie face salut, dar nu 1131 00:46:15,200 --> 00:46:17,500 Bună ziua singur, hello2. 1132 00:46:17,500 --> 00:46:20,490 >> Deci, dosarul meu se numește hello2.c. Prin urmare, dosarul meu 1133 00:46:20,490 --> 00:46:23,510 ar trebui să fie numit hello2, în acest caz. 1134 00:46:23,510 --> 00:46:26,490 La naiba, ce am gresit? 1135 00:46:26,490 --> 00:46:29,490 În regulă, așa că am omis în mod clar o linie, dacă vă amintiți ceea ce 1136 00:46:29,490 --> 00:46:31,020 programele anterioare arata ca. 1137 00:46:31,020 --> 00:46:32,480 Dar hai să vedem dacă nu putem tachina acest afară. 1138 00:46:32,480 --> 00:46:35,310 Din păcate, cei mai mulți oameni care scriu programe cu care 1139 00:46:35,310 --> 00:46:38,820 vom scrie programe nu simplifica lucrurile prea bine. 1140 00:46:38,820 --> 00:46:41,520 Deci, avem un fel de a trece în zbor peste ceea ce nu face destul 1141 00:46:41,520 --> 00:46:44,050 Simt aici și să vedem dacă ne putem da seama ce e în neregulă. 1142 00:46:44,050 --> 00:46:46,700 Linie foarte primul acolo spune declararea implicit C 1143 00:46:46,700 --> 00:46:49,310 printf cu funcția de tip int bibliotecă. 1144 00:46:49,310 --> 00:46:51,210 OK, am înțeles o parte din asta. 1145 00:46:51,210 --> 00:46:54,570 Dar se pare a fi făcând aluzie la faptul că am folosit printf 1146 00:46:54,570 --> 00:46:55,700 greșit, cumva. 1147 00:46:55,700 --> 00:46:56,930 Și ce sens este greșit? 1148 00:46:56,930 --> 00:46:59,970 Nu am învăța de calculator ce este într-un fișier 1149 00:46:59,970 --> 00:47:01,420 numit stdio.h. 1150 00:47:01,420 --> 00:47:04,120 Acum am doar să memoreze doar acum că este printf 1151 00:47:04,120 --> 00:47:06,540 în stdio.h, și într-adevăr nu va mai fi alte 1152 00:47:06,540 --> 00:47:08,900 funcțiile în care au acelasi fisier pe care vom fi utilizate pentru. 1153 00:47:08,900 --> 00:47:12,490 >> Asa ca lasa-ma acum mergeți mai departe și a lovit Ctrl-L pentru a șterge doar că 1154 00:47:12,490 --> 00:47:16,050 la distanță, rulați din nou face hello2, și voila. 1155 00:47:16,050 --> 00:47:19,490 Și această comandă din nou, mai complex decât vom explica pentru 1156 00:47:19,490 --> 00:47:20,520 astăzi scopuri. 1157 00:47:20,520 --> 00:47:23,570 Dar a alerga zăngănit, și zăngănit ia codul sursă și 1158 00:47:23,570 --> 00:47:24,870 scuipa 0s și 1s. 1159 00:47:24,870 --> 00:47:28,610 Iar cei 0s și 1s, în acest caz, sunt numite ce? 1160 00:47:28,610 --> 00:47:29,470 Bine, codul obiect. 1161 00:47:29,470 --> 00:47:32,210 Și fișierul în care se află este numit, astfel, 1162 00:47:32,210 --> 00:47:33,820 hello2, în acest caz. 1163 00:47:33,820 --> 00:47:37,040 Pentru ca dosarul meu a fost de text hello2.c, Enter. 1164 00:47:37,040 --> 00:47:39,820 Și acum am lua două semn de exclamare, exclamație 1165 00:47:39,820 --> 00:47:41,880 punctul, semnul exclamării. 1166 00:47:41,880 --> 00:47:45,430 În regulă, deci acum avem capacitatea de a obține siruri de caractere, 1167 00:47:45,430 --> 00:47:46,280 aparent. 1168 00:47:46,280 --> 00:47:48,190 Ei bine, ce altceva putem obține de la utilizatori? 1169 00:47:48,190 --> 00:47:51,010 >> Ei bine, în biblioteca CS50, există și alte funcții care 1170 00:47:51,010 --> 00:47:53,300 sunt de gând să simplifice viața noastră în aceste primele câteva zile. 1171 00:47:53,300 --> 00:47:56,350 Getchar, GetDouble, GetFloat, GetInt, 1172 00:47:56,350 --> 00:47:57,290 GetLongLong, getString. 1173 00:47:57,290 --> 00:47:59,550 Ei bine, hai să smulgă de pe cel mai ușor de aceste primul. 1174 00:47:59,550 --> 00:48:01,430 GetString face literalmente asta. 1175 00:48:01,430 --> 00:48:04,210 Ea doar stă acolo, așteptând utilizatorul să tastați ceva în, 1176 00:48:04,210 --> 00:48:07,170 și de îndată ce tastez ceva în și apăsați Enter, aceasta 1177 00:48:07,170 --> 00:48:08,860 face ceva cu acea valoare. 1178 00:48:08,860 --> 00:48:11,700 Așa că hai să ne întoarcem la exemplul pentru a vedea exact ce 1179 00:48:11,700 --> 00:48:12,950 GetString făcea. 1180 00:48:12,950 --> 00:48:17,445 Lasă-mă să mergeți mai departe și să deschidă în gedit, hello.c, și amintesc 1181 00:48:17,445 --> 00:48:20,590 că chiar înainte de pauză, acest lucru este în cazul în care am rămas. 1182 00:48:20,590 --> 00:48:23,240 >> Așa că hai să tachineze acum acest lucru în afară într-un detaliu pic mai mult. 1183 00:48:23,240 --> 00:48:27,190 Deci, pe linia 6, există două lucruri 1184 00:48:27,190 --> 00:48:28,450 se întâmplă în acest moment. 1185 00:48:28,450 --> 00:48:32,630 Semnul egal se separă și prima jumătate a doua jumătate. 1186 00:48:32,630 --> 00:48:34,670 Deci, pe partea stângă a semnului egal, suntem 1187 00:48:34,670 --> 00:48:35,580 spunând șir uri. 1188 00:48:35,580 --> 00:48:37,580 Și apoi, doar condițiile de nespecialist, ceea ce este sirul s 1189 00:48:37,580 --> 00:48:41,040 faci, crezi? 1190 00:48:41,040 --> 00:48:42,990 E crearea unui ce? 1191 00:48:42,990 --> 00:48:44,930 Deci, se creează un șir numit uri. 1192 00:48:44,930 --> 00:48:46,370 Acum, ce înseamnă asta cu adevărat? 1193 00:48:46,370 --> 00:48:51,540 Ei bine, e rezervarea spațiu pentru un șir numit uri. 1194 00:48:51,540 --> 00:48:52,490 Asta nu e destul de bine. 1195 00:48:52,490 --> 00:48:53,120 Ce este aceasta face? 1196 00:48:53,120 --> 00:48:55,400 Ei bine, calculatoare cum știți, au hard disk-uri, că e în cazul în care 1197 00:48:55,400 --> 00:48:56,300 fișierele sunt stocate. 1198 00:48:56,300 --> 00:48:59,100 Computere au RAM, și asta e în cazul în care programele sunt încărcate 1199 00:48:59,100 --> 00:49:00,240 în timp ce se execută. 1200 00:49:00,240 --> 00:49:02,470 Deci, atunci când faceți dublu-clic pe o pictogramă și Microsoft Word deschide 1201 00:49:02,470 --> 00:49:06,380 sus, Microsoft Word se execută, ca să spunem așa, în memoria RAM, care este 1202 00:49:06,380 --> 00:49:08,160 partea electronică a calculatorului. 1203 00:49:08,160 --> 00:49:10,660 Nu este partea fizică, mecanică, care se roteste, în cazul în care 1204 00:49:10,660 --> 00:49:12,640 Datele sunt stocate, în general, pe termen lung. 1205 00:49:12,640 --> 00:49:15,810 Deci sirul s este destul de mult spune-mi dea de calculator 1206 00:49:15,810 --> 00:49:18,150 destul RAM pentru a se potrivi un șir. 1207 00:49:18,150 --> 00:49:20,450 Acum, că e un pic de o simplificare, deoarece 1208 00:49:20,450 --> 00:49:22,300 Cât de mare este șirul va fi? 1209 00:49:22,300 --> 00:49:24,410 Ei bine, de fapt, noi nu știm încă, astfel încât în ​​următoarele săptămâni pentru a veni 1210 00:49:24,410 --> 00:49:27,290 vom trage înapoi, de fapt stratul care este șir și 1211 00:49:27,290 --> 00:49:28,510 vă vom spune ce este cu adevărat. 1212 00:49:28,510 --> 00:49:31,050 Șir, de acum, este doar o simplificare frumos al lumii noastre. 1213 00:49:31,050 --> 00:49:35,700 Dar sirul s declară un șir numit e, pentru moment. 1214 00:49:35,700 --> 00:49:36,520 Declară un șir. 1215 00:49:36,520 --> 00:49:39,310 Aceasta își rezervă un spațiu în memoria RAM pentru șirul utilizatorul este 1216 00:49:39,310 --> 00:49:40,150 pe cale de a scrie. 1217 00:49:40,150 --> 00:49:41,840 >> Acum, să ne uităm în dreapta semnului egal. 1218 00:49:41,840 --> 00:49:44,110 Deci, se spune getString (). 1219 00:49:44,110 --> 00:49:45,070 Și un pic de bun-simț verifica. 1220 00:49:45,070 --> 00:49:47,940 Faptul că nu există nimic în interiorul parantezelor 1221 00:49:47,940 --> 00:49:50,810 presupune ce despre getString? 1222 00:49:50,810 --> 00:49:52,180 Este nevoie de nici un argument. 1223 00:49:52,180 --> 00:49:55,290 Asta este, nu poate influența comportamentul acesteia în nici un fel. 1224 00:49:55,290 --> 00:49:58,940 De fiecare dată când îl folosiți, acesta va primi un șir și asta e tot. 1225 00:49:58,940 --> 00:50:02,210 Prin contrast, printf, sperăm, comportamentul său nu 1226 00:50:02,210 --> 00:50:03,010 se schimba de fiecare data. 1227 00:50:03,010 --> 00:50:05,230 În caz contrar, este o funcție de imprimare destul de inutil, dacă 1228 00:50:05,230 --> 00:50:06,480 face acelasi lucru. 1229 00:50:06,480 --> 00:50:07,970 Dacă se imprimă întotdeauna David sau ceva 1230 00:50:07,970 --> 00:50:09,500 arbitrară tot timpul. 1231 00:50:09,500 --> 00:50:11,540 Deci are sens printf să aibă un argument. 1232 00:50:11,540 --> 00:50:14,240 GetString nu are nevoie de un argument, pentru că am vrut 1233 00:50:14,240 --> 00:50:16,700 pentru a obține un șir de utilizator și e utilizatorul care se întâmplă 1234 00:50:16,700 --> 00:50:19,580 să furnizeze dinamismul prin dactilografiere, în litere diferite 1235 00:50:19,580 --> 00:50:20,850 de fiecare dată la tastatura. 1236 00:50:20,850 --> 00:50:23,140 >> Deci, ce nu fac getString în cele din urmă? 1237 00:50:23,140 --> 00:50:25,080 Ganditi-va ca această casetă neagră mică. 1238 00:50:25,080 --> 00:50:29,340 Și această cutie neagră nu ia nici o intrare, dar când te-bang-ului pe 1239 00:50:29,340 --> 00:50:33,240 ea, scuipa un șir care utilizatorul a tastat inch 1240 00:50:33,240 --> 00:50:36,660 Și faptul că există un semn egal acolo înseamnă să ia 1241 00:50:36,660 --> 00:50:39,890 ceea ce se scuipă pe dreapta și păstrați-l în interiorul 1242 00:50:39,890 --> 00:50:41,390 ce e pe stânga. 1243 00:50:41,390 --> 00:50:43,470 Deci semnul egal aici, de fapt, nu înseamnă 1244 00:50:43,470 --> 00:50:46,490 egalității, mai degrabă tehnic înseamnă cesiune. 1245 00:50:46,490 --> 00:50:49,330 Ia valoarea pe dreapta, și puneți-l în 1246 00:50:49,330 --> 00:50:51,050 variabilă pe partea stângă. 1247 00:50:51,050 --> 00:50:52,820 Deci, asta e tot ce se întâmplă acolo. 1248 00:50:52,820 --> 00:50:55,640 >> Acum in linia 7, suntem de asteptare printf. 1249 00:50:55,640 --> 00:50:58,170 Deci, sperăm printf devine un pic plictisitor până acum. 1250 00:50:58,170 --> 00:50:59,530 Deci, imprima un șir formatat. 1251 00:50:59,530 --> 00:51:00,440 Ce șir? 1252 00:51:00,440 --> 00:51:05,460 Imprima, "h-e-L-L-o,% s 1253 00:51:05,460 --> 00:51:07,840 \ N ". 1254 00:51:07,840 --> 00:51:10,470 În regulă, deci ce vreau să plug-in pentru% s? 1255 00:51:10,470 --> 00:51:12,960 Literalmente, tot ceea ce este stocat în s.. 1256 00:51:12,960 --> 00:51:15,570 Deci, în acest caz, verificați bun-simț, puțin câte argumente nu 1257 00:51:15,570 --> 00:51:16,820 printf ia? 1258 00:51:19,860 --> 00:51:21,110 Bine, am auzit una. 1259 00:51:23,840 --> 00:51:26,330 Am auzit o din nou. 1260 00:51:26,330 --> 00:51:27,730 Doi, am auzit două. 1261 00:51:27,730 --> 00:51:29,920 Și cum despre trei? 1262 00:51:29,920 --> 00:51:30,450 Bine, trei? 1263 00:51:30,450 --> 00:51:30,930 Excelent. 1264 00:51:30,930 --> 00:51:33,170 Trei răspunsuri posibile, doar una dintre ele este corectă. 1265 00:51:33,170 --> 00:51:36,390 Deci, din nou, argumentele influențează comportamentul unei funcții. 1266 00:51:36,390 --> 00:51:39,380 În trecut, printf a luat doar un singur argument. 1267 00:51:39,380 --> 00:51:42,260 "Hello World" a fost un singur argument. 1268 00:51:42,260 --> 00:51:45,190 Cu toate acestea, acum, observați în cazul în care aceasta este virgula. 1269 00:51:45,190 --> 00:51:49,600 Aceasta virgula este în afara citat / citatul, ceea ce înseamnă 1270 00:51:49,600 --> 00:51:52,170 hei printf, vine aici un al doilea argument. 1271 00:51:52,170 --> 00:51:54,240 >> Deci, virgule în majoritatea limbajelor de programare 1272 00:51:54,240 --> 00:51:57,300 separate de mai multe argumente. 1273 00:51:57,300 --> 00:51:59,600 Deci, răspunsul aici nu este cu siguranta una, pentru că 1274 00:51:59,600 --> 00:52:00,390 nu există acest virgula. 1275 00:52:00,390 --> 00:52:03,680 Deci minim, printf ia aparent două 1276 00:52:03,680 --> 00:52:04,940 Argumentele de data asta. 1277 00:52:04,940 --> 00:52:07,050 Dar oportunitatea pentru o întrebare capcană aici este ceea ce 1278 00:52:07,050 --> 00:52:07,990 despre această virgulă? 1279 00:52:07,990 --> 00:52:11,260 Asta înseamnă că există de fapt trei argumente? 1280 00:52:11,260 --> 00:52:13,820 Acest lucru, aceasta, iar acest lucru. 1281 00:52:13,820 --> 00:52:18,820 Deci, nu, pentru că virgula este interiorul citate, care 1282 00:52:18,820 --> 00:52:20,890 înseamnă că este într-adevăr doar o estetică a limbii engleze. 1283 00:52:20,890 --> 00:52:23,180 Ea nu are nimic de-a face cu numărul de 1284 00:52:23,180 --> 00:52:24,890 argumente în acest program. 1285 00:52:24,890 --> 00:52:27,670 Deci, acest virgulă este în afara ghilimele duble. 1286 00:52:27,670 --> 00:52:28,850 Și atunci intoarce 0. 1287 00:52:28,850 --> 00:52:30,980 Pentru moment hai să ia acest fel de credință pentru unul pe 1288 00:52:30,980 --> 00:52:34,460 astăzi, și știu doar că atunci când funcțiile sunt efectuate de executare 1289 00:52:34,460 --> 00:52:37,950 de linii de cod, acestea ar trebui să se întoarcă în general, o anumită valoare. 1290 00:52:37,950 --> 00:52:42,010 În acest caz, doar pentru că trebuie să se întoarcă principal de un int, 1291 00:52:42,010 --> 00:52:44,320 asta e doar modul în care limbajul C funcționează. 1292 00:52:44,320 --> 00:52:47,040 >> Deci, pentru că nimic nu a mers bine, se simte ca acest program de 1293 00:52:47,040 --> 00:52:49,960 bine, am doar greu codificate în schimb 0. 1294 00:52:49,960 --> 00:52:52,980 Dar, în schimb, și am de gând să scriu acest cod în pseudo 1295 00:52:52,980 --> 00:52:55,020 acum, la fel ca Iosif a făcut atunci când am făcut șosete 1296 00:52:55,020 --> 00:52:56,220 exemplu săptămâna trecută. 1297 00:52:56,220 --> 00:53:00,440 Dacă ceva a mers prost - acest lucru nu este codul actual, - a fost 1298 00:53:00,440 --> 00:53:06,570 greșit, atunci intoarce, sa zicem, 1. 1299 00:53:06,570 --> 00:53:08,770 A reveni altceva 0. 1300 00:53:08,770 --> 00:53:10,070 Deci, acest lucru este în cazul în care vom merge cu asta. 1301 00:53:10,070 --> 00:53:12,090 Acest lucru nu este real codul C, doar pseudocod. 1302 00:53:12,090 --> 00:53:14,010 Dar acest lucru este modul în care s-ar putea întoarce 1303 00:53:14,010 --> 00:53:15,580 diferite valori posibile. 1304 00:53:15,580 --> 00:53:19,520 Dar pentru moment am doar de gând să mergeți mai departe și să se întoarcă 0. 1305 00:53:19,520 --> 00:53:24,410 În regulă, orice întrebări până în prezent pe sintaxa, funcționalitate, 1306 00:53:24,410 --> 00:53:25,000 sau place? 1307 00:53:25,000 --> 00:53:26,280 Da, în spate. 1308 00:53:26,280 --> 00:53:27,530 >> PUBLICUL: [inaudibil] 1309 00:53:30,510 --> 00:53:32,210 DAVID MALAN: Poți vorbi un pic mai tare? 1310 00:53:32,210 --> 00:53:34,325 De ce a făcut acest program return 0, și? 1311 00:53:34,325 --> 00:53:35,575 PUBLICUL: [inaudibil] 1312 00:53:39,910 --> 00:53:43,450 DAVID MALAN: Oh, asta e pentru că am leneș, îmi pare rău. 1313 00:53:43,450 --> 00:53:48,290 Nici un răspuns bun academice, întoarce 0. 1314 00:53:48,290 --> 00:53:52,690 Pot salva un fel de acest lucru, spunând punct de vedere tehnic C, în cazul în care principalul 1315 00:53:52,690 --> 00:53:55,900 nu returnează în mod explicit o valoare, 0 vor fi returnate 1316 00:53:55,900 --> 00:53:57,730 automat pentru tine. 1317 00:53:57,730 --> 00:54:00,290 Ceea ce este adevărat, eu nu sunt doar acoperă până. 1318 00:54:00,290 --> 00:54:03,270 Dar, eu ar fi trebuit făcut în acest fel. 1319 00:54:03,270 --> 00:54:05,250 Nu la pachet interesant decât faptul că, altele decât greșeala mea. 1320 00:54:05,250 --> 00:54:06,170 Da? 1321 00:54:06,170 --> 00:54:08,470 >> PUBLICUL: De obicei, atunci când tastați în vid, înseamnă că 1322 00:54:08,470 --> 00:54:10,770 nu se mai întorc ceva. 1323 00:54:10,770 --> 00:54:11,420 DAVID MALAN: Corect. 1324 00:54:11,420 --> 00:54:15,800 Dacă, în schimb, să specificați înainte de numele unei funcții, pentru 1325 00:54:15,800 --> 00:54:18,590 exemplu aici, anulate, atunci funcția 1326 00:54:18,590 --> 00:54:20,480 nu se întoarce nimic. 1327 00:54:20,480 --> 00:54:25,210 Și, prin urmare, aș spune doar, de întoarcere sau nimic, la toate, 1328 00:54:25,210 --> 00:54:26,730 și că ar fi în concordanță. 1329 00:54:26,730 --> 00:54:27,750 Și vom reveni la asta. 1330 00:54:27,750 --> 00:54:31,030 Și doar FYI, una dintre cele mai capturilor cu dificultăți de învățare 1331 00:54:31,030 --> 00:54:33,450 programarea într-o lume care are sute de cărți și 1332 00:54:33,450 --> 00:54:36,180 sute de site-uri acolo este o vei face invariabil 1333 00:54:36,180 --> 00:54:38,220 vezi sintaxa diferită în cărți diferite 1334 00:54:38,220 --> 00:54:40,220 de persoane diferite. 1335 00:54:40,220 --> 00:54:42,100 Realizati vom face cele mai bune noastre în secțiuni și prelegeri de a fi 1336 00:54:42,100 --> 00:54:42,960 consecventă. 1337 00:54:42,960 --> 00:54:46,660 Dar, uneori, veți vedea sintaxa contradictorii. 1338 00:54:46,660 --> 00:54:48,540 Deci, ori de câte ori aveți dubii, solicitați doar. 1339 00:54:48,540 --> 00:54:51,100 Și, în general, vom avea grijă în prelegeri și secțiuni pentru a 1340 00:54:51,100 --> 00:54:53,710 aproape întotdeauna îl prezintă în mod corect. 1341 00:54:53,710 --> 00:54:56,070 Și eu spun, aproape întotdeauna, deoarece cazul de la punctul. 1342 00:54:56,070 --> 00:54:56,860 Alte întrebări? 1343 00:54:56,860 --> 00:55:01,590 >> PUBLICUL: Are% s exista în afara aparatului? 1344 00:55:01,590 --> 00:55:03,710 DAVID MALAN: Are% s existe în afara aparatului? 1345 00:55:03,710 --> 00:55:04,180 Da. 1346 00:55:04,180 --> 00:55:07,760 Deci% s are de a face cu C. Faptul ca suntem o folosesc în 1347 00:55:07,760 --> 00:55:10,290 aparatul nu are nimic de-a face în mod fundamental cu 1348 00:55:10,290 --> 00:55:12,080 caracteristici ale limbajului ne folosind. 1349 00:55:12,080 --> 00:55:15,990 Într-adevăr, săptămâna trecută, când am folosit Mac-ul meu, am scris 1350 00:55:15,990 --> 00:55:17,160 Codul C pe Mac-ul meu. 1351 00:55:17,160 --> 00:55:20,020 Am fi putut folosi% s pe Mac-ul meu, și ai putea folosi pe 1352 00:55:20,020 --> 00:55:22,400 Windows computer, dacă vă instalați un compilator, cum ar fi 1353 00:55:22,400 --> 00:55:24,070 Visual Studio de la Microsoft. 1354 00:55:24,070 --> 00:55:24,990 Deci% s. 1355 00:55:24,990 --> 00:55:27,860 Tot ceea ce facem in interiorul fereastra astăzi trebuie să 1356 00:55:27,860 --> 00:55:31,140 face cu nimic C. Și fundamental de a face cu 1357 00:55:31,140 --> 00:55:33,450 sistemul de operare în cauză. 1358 00:55:33,450 --> 00:55:35,900 În schimb, fereastra terminalului alb-negru - atunci când 1359 00:55:35,900 --> 00:55:40,160 Sunt lucruri cum ar fi tastarea ls, și RM, și CD - 1360 00:55:40,160 --> 00:55:42,020 care are de a face cu sistemul de operare și 1361 00:55:42,020 --> 00:55:43,562 navigarea în jurul valorii de. 1362 00:55:43,562 --> 00:55:44,546 Da. 1363 00:55:44,546 --> 00:55:46,520 PUBLICUL: Am vrut biblioteca, biblioteca CS50. 1364 00:55:46,520 --> 00:55:49,960 DAVID MALAN: Ok, deci, dacă vrei să spui șir de cuvinte cheie, care 1365 00:55:49,960 --> 00:55:52,460 există numai în bibliotecă CS50, corectă. 1366 00:55:52,460 --> 00:55:55,350 Care nu există în sine C, și într-adevăr, într-un cuplu 1367 00:55:55,350 --> 00:55:58,220 de săptămâni, vom arunca bibliotecă și să înceapă CS50 1368 00:55:58,220 --> 00:56:02,290 a face lucrurile de la zero noi înșine, ca să spunem așa. 1369 00:56:02,290 --> 00:56:02,940 Alte întrebări? 1370 00:56:02,940 --> 00:56:04,577 Da. 1371 00:56:04,577 --> 00:56:05,827 >> PUBLICUL: [inaudibil] 1372 00:56:09,470 --> 00:56:10,160 DAVID MALAN: Bună întrebare. 1373 00:56:10,160 --> 00:56:11,720 Sunt cazul comenzilor sensibil? 1374 00:56:11,720 --> 00:56:13,710 Și permiteți-mi să fac o distincție aici. 1375 00:56:13,710 --> 00:56:15,840 Deci, comenzile sunt, în general, lucrurile pe care le vom scrie la 1376 00:56:15,840 --> 00:56:17,940 partea de jos a ferestrei, în fereastra de terminal. 1377 00:56:17,940 --> 00:56:21,770 Orice până aici, ar fi declarații sau cod C. 1378 00:56:21,770 --> 00:56:24,490 Dar, în ambele cazuri, răspunsul este același, da. 1379 00:56:24,490 --> 00:56:27,800 Ambele aceste medii, codul C la partea de sus și 1380 00:56:27,800 --> 00:56:29,910 de operare de linie de comandă de sistem la 1381 00:56:29,910 --> 00:56:31,440 partea de jos, sunt sensibile la majuscule. 1382 00:56:31,440 --> 00:56:33,830 Așa că trebuie să valorifice getString cu capital G, 1383 00:56:33,830 --> 00:56:37,050 capitalul S. Trebuie să scrieți printf în toate litere mici. 1384 00:56:37,050 --> 00:56:39,520 Trebuie să tastați ls în toate litere mici. 1385 00:56:39,520 --> 00:56:43,260 Deci, în aproape orice situație acest semestru, caz va fi, în 1386 00:56:43,260 --> 00:56:44,820 fapt, problema. 1387 00:56:44,820 --> 00:56:46,148 Da. 1388 00:56:46,148 --> 00:56:47,398 >> PUBLICUL: [inaudibil] 1389 00:56:54,770 --> 00:56:56,480 DAVID MALAN: Ah, deci bine, ce dacă am avut un fisier 1390 00:56:56,480 --> 00:56:57,840 numit hello.d. 1391 00:56:57,840 --> 00:57:00,090 Deci, se dovedește D este un limbaj de programare. 1392 00:57:00,090 --> 00:57:02,790 Și astfel, în unele cazuri, am putea scrie de fapt un program în 1393 00:57:02,790 --> 00:57:06,190 acel fișier și l-au compilat în moda. 1394 00:57:06,190 --> 00:57:09,090 Putem, și, de fapt, răspunsul scurt este, nu știu. 1395 00:57:09,090 --> 00:57:10,440 Deci, vom face acest lucru. 1396 00:57:10,440 --> 00:57:13,040 Lasă-mă să mergeți mai departe și de a crea un fișier nou. 1397 00:57:13,040 --> 00:57:15,580 Și de spin aici, sincer, în general, ori de câte ori este nici o îndoială 1398 00:57:15,580 --> 00:57:18,130 acest semestru, și aveți aparatul sau calculatorul 1399 00:57:18,130 --> 00:57:20,030 deschide, mergeți mai departe și să încerce ceva. 1400 00:57:20,030 --> 00:57:23,740 Așa că am de gând să salvați un fișier numit hello.d. 1401 00:57:23,740 --> 00:57:25,010 Salvați acest lucru. 1402 00:57:25,010 --> 00:57:29,070 Și am de gând să rulați make salut Enter. 1403 00:57:29,070 --> 00:57:31,660 Se părea că pentru a deduce c era mult mai probabil 1404 00:57:31,660 --> 00:57:35,920 decât d, în acest caz. 1405 00:57:35,920 --> 00:57:38,046 Alte întrebări. 1406 00:57:38,046 --> 00:57:40,456 Da. 1407 00:57:40,456 --> 00:57:41,706 >> PUBLICUL: [inaudibil] 1408 00:57:48,170 --> 00:57:49,837 DAVID MALAN: Bine, spun asta încă o dată. 1409 00:57:49,837 --> 00:57:51,087 PUBLICUL: [inaudibil] 1410 00:58:04,250 --> 00:58:05,780 DAVID MALAN: Cum ti-ar merge despre diagnosticarea sau 1411 00:58:05,780 --> 00:58:06,380 depanare asta? 1412 00:58:06,380 --> 00:58:08,800 Deci cel mai probabil, pentru că sunt diferite limbi, 1413 00:58:08,800 --> 00:58:10,280 cel mai probabil vei fi complet 1414 00:58:10,280 --> 00:58:11,580 alt program emise. 1415 00:58:11,580 --> 00:58:14,140 V-ar primi mesaje complet diferite de eroare. 1416 00:58:14,140 --> 00:58:16,750 Și, de asemenea, doar în termeni de design, ar fi, fără îndoială, o 1417 00:58:16,750 --> 00:58:19,140 Decizia de design săraci să fi scris două tipuri diferite de 1418 00:58:19,140 --> 00:58:21,510 limbi străine cu fișiere aproape identic numit, în 1419 00:58:21,510 --> 00:58:23,000 director exact același, folosind un 1420 00:58:23,000 --> 00:58:24,550 automată a sculei ca face. 1421 00:58:24,550 --> 00:58:27,750 Deci, eu pot, de asemenea, împinge înapoi și să spună în 15 ani de a face acest lucru, 1422 00:58:27,750 --> 00:58:29,190 Nu a făcut această greșeală. 1423 00:58:29,190 --> 00:58:30,030 Ar putea întâmpla. 1424 00:58:30,030 --> 00:58:31,190 Dar nu e doar diverse, cred, 1425 00:58:31,190 --> 00:58:33,180 apărare logistice în loc. 1426 00:58:33,180 --> 00:58:35,440 Plus mesajele de eroare care ar rezulta de aici, care ar 1427 00:58:35,440 --> 00:58:37,260 în cele din urmă dezvăluie ceea ce este problema. 1428 00:58:37,260 --> 00:58:39,120 Dar un caz colț posibil. 1429 00:58:39,120 --> 00:58:41,730 >> În regulă, așa că hai să introducă doar o pereche de altă 1430 00:58:41,730 --> 00:58:45,600 caracteristici aici, acum, astfel încât să putem începe construirea în sus, în mai mult 1431 00:58:45,600 --> 00:58:47,140 și mai complex program. 1432 00:58:47,140 --> 00:58:49,000 Deci, în primul rând, matematica. 1433 00:58:49,000 --> 00:58:51,520 Deci, exemple de matematica sunt doar un fel de ușor în prima săptămână. 1434 00:58:51,520 --> 00:58:53,560 Acest lucru nu este să spun că toate programele este de aproximativ 1435 00:58:53,560 --> 00:58:54,390 matematica. 1436 00:58:54,390 --> 00:58:57,890 Desigur, înțelegerea diferite caracteristici ale 1437 00:58:57,890 --> 00:58:59,610 matematică, algebră, în special, este 1438 00:58:59,610 --> 00:59:00,330 destul de relevant aici. 1439 00:59:00,330 --> 00:59:03,010 În clasele de nivel superior CS, algebra liniară, 1440 00:59:03,010 --> 00:59:03,920 calcul, și similar. 1441 00:59:03,920 --> 00:59:06,500 Dar de cele mai multe dau seama ce vom face în acest semestru nu se reduce 1442 00:59:06,500 --> 00:59:09,230 la matematică, și cu siguranță nu la aritmetică, în sine, dar într-adevăr 1443 00:59:09,230 --> 00:59:11,570 la doar logica și gândirea atentă. 1444 00:59:11,570 --> 00:59:14,310 Și astfel, această legătură pe care știința calculatoarelor a avut mult timp, 1445 00:59:14,310 --> 00:59:16,570 în special la nivel de liceu, cu matematica, este o 1446 00:59:16,570 --> 00:59:17,370 puțin înșelătoare. 1447 00:59:17,370 --> 00:59:20,090 Deoarece cele mai multe dintre programele pe care le vom scrie, într-adevăr, sunt 1448 00:59:20,090 --> 00:59:23,290 un fel de nivel superior și să se concentreze pe rezolvarea problemelor pe care, 1449 00:59:23,290 --> 00:59:26,410 Sigur, s-ar putea folosi unele adunare, scădere, și diverse 1450 00:59:26,410 --> 00:59:28,650 formule matematice sau similare, 1451 00:59:28,650 --> 00:59:30,860 dar la sfarsitul zilei, este vorba despre gândire și nu 1452 00:59:30,860 --> 00:59:33,240 doar punerea în aplicare a ceea ce ai fi putut face pe ca un TI 1453 00:59:33,240 --> 00:59:35,050 Calculatorul din liceu. 1454 00:59:35,050 --> 00:59:38,410 >> Deci, cu care a spus, hai sa facem ceva acum cu aceste 1455 00:59:38,410 --> 00:59:40,980 operatori matematici care nu există, astfel încât să putem unic 1456 00:59:40,980 --> 00:59:43,950 asupra unora dintre aspectele de bază ale programării, sau în 1457 00:59:43,950 --> 00:59:48,930 acest caz, C. Deci, există, după cum a sugerat biblioteca CS50, 1458 00:59:48,930 --> 00:59:51,520 iar astăzi suntem folosind doar getString - și într-o clipă 1459 00:59:51,520 --> 00:59:52,940 probabil, una alte funcții - 1460 00:59:52,940 --> 00:59:55,380 dar există diferite tipuri de date într-un calculator. 1461 00:59:55,380 --> 00:59:58,550 La sfârșitul zilei, calculatoarele stiu doar 0s și 1s. 1462 00:59:58,550 --> 01:00:01,880 Dar amintesc că săptămâna trecută am vorbit despre sistemul binar 1463 01:00:01,880 --> 01:00:05,000 în reprezentarea numerelor, cum ar fi numărul 0, și 1 și 2, 1464 01:00:05,000 --> 01:00:07,480 tot drumul pe până la 8, la fel ca în filme lui Nate. 1465 01:00:07,480 --> 01:00:08,840 Și apoi putem conta mult mai mare ca noi 1466 01:00:08,840 --> 01:00:10,000 a făcut pe scenă aici. 1467 01:00:10,000 --> 01:00:15,660 Dar dacă vrei să reprezinte nu doar numere, ci litere, 1468 01:00:15,660 --> 01:00:18,240 noi, oamenii, trebuie să vii cu ceva arbitrar 1469 01:00:18,240 --> 01:00:21,180 convenții, prin care, dacă la sfârșitul zilei tot calculatorul 1470 01:00:21,180 --> 01:00:24,260 a este abilitatea de a exprima 0 si 1, ei bine am face bine 1471 01:00:24,260 --> 01:00:27,990 începe standardizarea modelelor de 0s și 1s care reprezintă 1472 01:00:27,990 --> 01:00:28,800 lucruri diferite. 1473 01:00:28,800 --> 01:00:32,370 Un model de 0s și 1s care reprezintă o literă. 1474 01:00:32,370 --> 01:00:34,840 Modele de 0s și 1s care reprezintă litera Z. 1475 01:00:34,840 --> 01:00:37,600 Modele de 0s și 1s care reprezintă culoarea albastru, sau 1476 01:00:37,600 --> 01:00:38,600 roșu, sau similar. 1477 01:00:38,600 --> 01:00:42,360 Avem nevoie de a utiliza toate aceste 0s și 1s de a ne exprima în 1478 01:00:42,360 --> 01:00:45,140 contexte diferite, în moduri diferite, care nu sunt 1479 01:00:45,140 --> 01:00:46,470 neapărat numerică. 1480 01:00:46,470 --> 01:00:51,150 >> Deci, în ceea ce privește reprezentarea, C are tipuri diferite de date, 1481 01:00:51,150 --> 01:00:52,550 și am văzut una din astea până acum. 1482 01:00:52,550 --> 01:00:54,940 Am văzut int, iar anunțul de ce nu e pe ecran 1483 01:00:54,940 --> 01:00:56,140 acum este șir. 1484 01:00:56,140 --> 01:00:58,550 String nu, de fapt, există în C. Din nou, aceasta este o 1485 01:00:58,550 --> 01:01:00,610 simplificare vom prezenta pentru prima 1486 01:01:00,610 --> 01:01:01,570 câteva săptămâni. 1487 01:01:01,570 --> 01:01:03,770 Un caracter este un caracter individual. 1488 01:01:03,770 --> 01:01:07,050 Un float este un număr real, cu un punct zecimal și numere 1489 01:01:07,050 --> 01:01:09,066 stânga și dreapta a acestuia. 1490 01:01:09,066 --> 01:01:16,040 Un dublu este ceea ce, pentru cei cu fundal înapoi înainte? 1491 01:01:16,040 --> 01:01:19,720 Deci, o dublă este de două ori ceva. 1492 01:01:19,720 --> 01:01:21,240 Adaugă de două ori mai mult ca precizie. 1493 01:01:21,240 --> 01:01:22,440 Deci, ce înseamnă? 1494 01:01:22,440 --> 01:01:26,090 Deci, în fiecare din aceste cazuri, lumea are un fel de standardizate 1495 01:01:26,090 --> 01:01:27,960 câți biți sunt utilizate pentru a reprezenta 1496 01:01:27,960 --> 01:01:29,160 fiecare dintre aceste lucruri. 1497 01:01:29,160 --> 01:01:31,590 Deci, dacă ați vizionat filme ASCII lui Nate deja pentru o parte 1498 01:01:31,590 --> 01:01:36,170 de PSET 0, sau mai târziu în această săptămână va, veți ști, probabil, 1499 01:01:36,170 --> 01:01:37,450 că ASCII - 1500 01:01:37,450 --> 01:01:38,610 reprezentări de caractere - 1501 01:01:38,610 --> 01:01:40,670 utilizați câte biți? 1502 01:01:40,670 --> 01:01:43,410 Și s-ar putea aminti chiar de la demo-ul nostru săptămâna trecută a modului în care 1503 01:01:43,410 --> 01:01:45,500 mulți oameni au fost pe scenă. 1504 01:01:45,500 --> 01:01:46,840 Deci, 7 sau 8, de obicei. 1505 01:01:46,840 --> 01:01:49,230 Deci, în general, 8, și există ceva numit ca prelungită 1506 01:01:49,230 --> 01:01:51,240 ASCII care folosește toate cele 8 biți, în loc de 7. 1507 01:01:51,240 --> 01:01:54,710 Dar, în general, vorbim în puterile lui 2, astfel încât în ​​acest caz, 8. 1508 01:01:54,710 --> 01:01:58,900 Deci, un char într-un limbaj de programare este de obicei 8 biți. 1509 01:01:58,900 --> 01:02:02,550 Deci, un int este, în general, 32 de biți. 1510 01:02:02,550 --> 01:02:04,810 Un float este, în general, 32 de biți. 1511 01:02:04,810 --> 01:02:08,060 Un dublu este, în general, de 64 de biți. 1512 01:02:08,060 --> 01:02:08,870 Și ce înseamnă asta? 1513 01:02:08,870 --> 01:02:11,500 Aceasta înseamnă că puteți reprezenta numere mai mari, sau, în cazul 1514 01:02:11,500 --> 01:02:15,490 de numere reale, poti avea mult mai multe numere, după 1515 01:02:15,490 --> 01:02:16,240 zecimală. 1516 01:02:16,240 --> 01:02:18,980 O precizie mult mai mult, în acest caz. 1517 01:02:18,980 --> 01:02:21,780 Acum, o lungă lung este, din păcate, pe nume. 1518 01:02:21,780 --> 01:02:24,340 Deci nu e un int care este de 32 de biți. 1519 01:02:24,340 --> 01:02:29,800 Există o lungă, care este, nope, 32 biți. 1520 01:02:29,800 --> 01:02:32,610 Și o lungă lungă, care este de 64 de biți. 1521 01:02:32,610 --> 01:02:34,830 Cu toate acestea unele dintre acestea sunt sensibile la context, ea depinde de 1522 01:02:34,830 --> 01:02:36,190 ce fel de calculator ai. 1523 01:02:36,190 --> 01:02:40,510 Deci, în general, vom specifica intr-un temele sau într-un test atunci când 1524 01:02:40,510 --> 01:02:41,180 de fapt contează. 1525 01:02:41,180 --> 01:02:43,080 Dar ideea este că e toate aceste diferite 1526 01:02:43,080 --> 01:02:44,250 reprezentări aici. 1527 01:02:44,250 --> 01:02:45,950 >> Așa că haideți să se arunca cu capul de fapt, într-un program. 1528 01:02:45,950 --> 01:02:48,300 Mai degrabă decât a scrie aceasta de la zero, lasă-mă să merg mai departe 1529 01:02:48,300 --> 01:02:50,940 și să se deschidă de la codul sursă de astăzi - toate, care este 1530 01:02:50,940 --> 01:02:54,980 on-line - dacă doriți să drege în jurul valorii de on-line, sau rentabilitatea 1531 01:02:54,980 --> 01:02:57,120 Miercuri, cu aparatul pe computer, instrucțiuni 1532 01:02:57,120 --> 01:02:59,160 pentru care se va lega pe pagina cursului. 1533 01:02:59,160 --> 01:03:00,830 Iată un program super-simplu. 1534 01:03:00,830 --> 01:03:02,520 Dar are un ceva nou în partea de sus, care 1535 01:03:02,520 --> 01:03:03,650 nu am avut înainte. 1536 01:03:03,650 --> 01:03:05,800 O mulțime de linii albastre de text. 1537 01:03:05,800 --> 01:03:08,410 Deci, aceste linii albastre reprezintă comentarii. 1538 01:03:08,410 --> 01:03:10,620 Deci e destul de util într-un program pentru a putea scrie 1539 01:03:10,620 --> 01:03:13,160 unele comentarii la tine, sau la colegi, prieteni sau, sau 1540 01:03:13,160 --> 01:03:15,700 colegii de predare, ca un fel de descriu ceea ce se întâmplă în 1541 01:03:15,700 --> 01:03:18,500 acest fișier, dar nu au nimic de-a face cu cod C în sine. 1542 01:03:18,500 --> 01:03:20,860 Nimic de-a face cu programul funcțional, e doar 1543 01:03:20,860 --> 01:03:21,760 estetica. 1544 01:03:21,760 --> 01:03:24,580 Deci, modul în care face acest lucru în C este, în general, de a începe să dvs. 1545 01:03:24,580 --> 01:03:29,860 despre / *, iar tu termina cu comentariile dvs. 1546 01:03:29,860 --> 01:03:31,270 * /. 1547 01:03:31,270 --> 01:03:34,140 Și dacă sunteți cu adevărat anal și ca să atragă un fel de imagini, 1548 01:03:34,140 --> 01:03:35,870 atunci ai pus o mulțime de stele, vei face o 1549 01:03:35,870 --> 01:03:36,970 cutiuța ca asta. 1550 01:03:36,970 --> 01:03:37,990 Dar nici unul din această materie. 1551 01:03:37,990 --> 01:03:40,230 Singurul lucru care contează este foarte primul 1552 01:03:40,230 --> 01:03:41,620 și. ultimul 1553 01:03:41,620 --> 01:03:43,820 Aceasta este ceea ce se numește un comentariu pe mai multe linii. 1554 01:03:43,820 --> 01:03:46,610 Și e doar convenție umană de a face de multe ori la stele și cutie 1555 01:03:46,610 --> 01:03:48,420 lucrurile în așa dacă aveți o mulțime de timp liber. 1556 01:03:48,420 --> 01:03:51,550 >> Deci, după ce v-ați scris în unele comentarii, în general, vin 1557 01:03:51,550 --> 01:03:53,160 curajul reale ale programului. 1558 01:03:53,160 --> 01:03:55,630 Aici e familiar noastre includ # . 1559 01:03:55,630 --> 01:04:00,410 Și tocmai rapid, acest lucru este necesar sau nu este necesar? 1560 01:04:00,410 --> 01:04:02,860 PUBLICUL: necesara. 1561 01:04:02,860 --> 01:04:04,390 DAVID MALAN: Deci, nu e de fapt necesar. 1562 01:04:04,390 --> 01:04:07,070 Deci, de ce, totuși, nu este necesar? 1563 01:04:07,070 --> 01:04:08,170 Deci nu e nici o printf. 1564 01:04:08,170 --> 01:04:08,510 Într-adevăr. 1565 01:04:08,510 --> 01:04:10,470 Tot ce facem în acest program este matematica. 1566 01:04:10,470 --> 01:04:11,640 Deci, eu pot șterge de fapt asta. 1567 01:04:11,640 --> 01:04:14,330 Deci, nu trebuie întotdeauna să includă nimic 1568 01:04:14,330 --> 01:04:15,420 partea de sus a unui program. 1569 01:04:15,420 --> 01:04:17,020 >> Deci, haideți să simplifica acest bit o. 1570 01:04:17,020 --> 01:04:18,650 Și observați acum ce face acest program. 1571 01:04:18,650 --> 01:04:19,920 Nu de mult interes. 1572 01:04:19,920 --> 01:04:21,410 int x = 1. 1573 01:04:21,410 --> 01:04:22,550 Ei bine, ce e asta faci? 1574 01:04:22,550 --> 01:04:25,130 Ei bine, cred că înapoi la model mental de dinainte. 1575 01:04:25,130 --> 01:04:27,500 Partea stângă a acestei expresii ce face? 1576 01:04:31,440 --> 01:04:32,830 Creați spațiu pentru un număr întreg. 1577 01:04:32,830 --> 01:04:33,930 Deci, cât de mult spațiu? 1578 01:04:33,930 --> 01:04:36,980 Ei bine, se întâmplă să știm acum că e 32 de biți. 1579 01:04:36,980 --> 01:04:40,070 Anterior, un șir de 32 de biți a fost punct de vedere tehnic, dar mai 1580 01:04:40,070 --> 01:04:40,950 pe faptul că, în viitor. 1581 01:04:40,950 --> 01:04:42,240 Dar un int este de 32 de biți. 1582 01:04:42,240 --> 01:04:45,590 Deci, această expresie pe stânga aici, int x spune doar hey 1583 01:04:45,590 --> 01:04:48,490 sistemul de operare, dă-mi 32 de biți de memorie RAM - 1584 01:04:48,490 --> 01:04:50,450 altfel cunoscut sub numele de 4 bytes de RAM - 1585 01:04:50,450 --> 01:04:53,930 astfel încât să pot pune un întreg în acel spațiu. 1586 01:04:53,930 --> 01:04:55,330 Ce număr întreg ai vrut să pun? 1587 01:04:55,330 --> 01:04:56,640 Ei bine, doar numărul 1. 1588 01:04:56,640 --> 01:04:59,530 int y primește 2, face exact același lucru, chiar dacă 1589 01:04:59,530 --> 01:05:02,160 numărul este mai mare, în termeni de volum sale. 1590 01:05:02,160 --> 01:05:04,790 Numărul în sine este încă la doar 32 de biți. 1591 01:05:04,790 --> 01:05:06,520 E doar modelul de biti este diferită de a 1592 01:05:06,520 --> 01:05:08,260 reprezintă 1 comparativ cu 2. 1593 01:05:08,260 --> 01:05:11,980 int z acum spune-mi dea un alt biți 32, o numesc Z, și a pus 1594 01:05:11,980 --> 01:05:14,210 însumarea de 1 și 2 acolo. 1595 01:05:14,210 --> 01:05:18,050 , Astfel că acum z este stocarea probabil valoarea 3, 1596 01:05:18,050 --> 01:05:19,360 și a reveni apoi 0. 1597 01:05:19,360 --> 01:05:23,020 >> Acum acest program, nu se face nimic de interes? 1598 01:05:23,020 --> 01:05:26,170 Deci, de fapt, nu face nimic interesant, în orice 1599 01:05:26,170 --> 01:05:28,450 sens, pentru că de ce? Se face ceva matematica. 1600 01:05:28,450 --> 01:05:30,590 Dar nu e returnarea raspunsul, corect. 1601 01:05:30,590 --> 01:05:31,790 E întoarce 0. 1602 01:05:31,790 --> 01:05:33,440 Nu e imprimarea răspunsul. 1603 01:05:33,440 --> 01:05:35,760 Deci, acest program este în mod fundamental lipsit de valoare, așa cum 1604 01:05:35,760 --> 01:05:36,350 Standuri acum. 1605 01:05:36,350 --> 01:05:37,220 Se face ceva de lucru. 1606 01:05:37,220 --> 01:05:39,530 Se va lua un numar de secunde, sau microsecunde, pentru a 1607 01:05:39,530 --> 01:05:41,510 fugi, dar nu face de fapt nimic 1608 01:05:41,510 --> 01:05:42,770 util pentru om. 1609 01:05:42,770 --> 01:05:46,810 >> Deci, de fapt, să deschidă acum math2, în cazul în care acum sunt de fapt 1610 01:05:46,810 --> 01:05:48,250 imprimarea rezultatul. 1611 01:05:48,250 --> 01:05:51,260 Deci, aceasta poate fi dedusă din exemplele noastre anterioare. 1612 01:05:51,260 --> 01:05:54,320 Dacă vreau să fac niște matematica simple, int x = 1, y 1613 01:05:54,320 --> 01:05:56,820 = 2. z este 1 plus 2 acum. 1614 01:05:56,820 --> 01:05:59,240 Ce se întâmplă acest pentru a imprima în mod evident? 1615 01:05:59,240 --> 01:06:00,120 Doar 3. 1616 01:06:00,120 --> 01:06:01,590 Deci, bun-simț verificare rapidă. 1617 01:06:01,590 --> 01:06:03,830 Lasă-mă să se mute în acest director. 1618 01:06:03,830 --> 01:06:06,480 Deci, cd source1m. 1619 01:06:06,480 --> 01:06:09,370 Lasă-mă să mergeți mai departe și tastați face math2. 1620 01:06:09,370 --> 01:06:11,510 Nu există mesaje de eroare a ieșit, asa ca lasa-ma alerga - 1621 01:06:11,510 --> 01:06:14,800 Nu-a.out-lasa-ma sa math2. Enter. 1622 01:06:14,800 --> 01:06:16,750 Și într-adevăr, acesta imprimate 3. 1623 01:06:16,750 --> 01:06:18,460 Ei bine, haideți să aruncăm o privire la o variantă a acestui. 1624 01:06:18,460 --> 01:06:23,870 În math3.c, acum avem acest exemplu aici. 1625 01:06:23,870 --> 01:06:26,540 >> Deci, asta e un fel de interesantă. 1626 01:06:26,540 --> 01:06:32,000 Deci, în acest cel de aici, răspunsul este de gând să obțineți 1 împărțit la 10, 1627 01:06:32,000 --> 01:06:33,910 și observați am declarat-o ca un flotor. 1628 01:06:33,910 --> 01:06:35,200 De ce vreau să fie un flotor? 1629 01:06:35,200 --> 01:06:36,110 Ei bine, e o fracție. 1630 01:06:36,110 --> 01:06:37,140 O să fie un număr real. 1631 01:06:37,140 --> 01:06:40,970 Deci, o să fie de 0.1, sper - 10%, în acest caz. 1632 01:06:40,970 --> 01:06:42,610 Și ce îmi apoi doriți să imprimați? 1633 01:06:42,610 --> 01:06:43,440 Ei bine, acest răspuns. 1634 01:06:43,440 --> 01:06:44,760 Ei bine, hai să tachineze acestea în afară întâi. 1635 01:06:44,760 --> 01:06:47,020 Deci, pe partea stângă, declara o 1636 01:06:47,020 --> 01:06:49,410 plutesc, numesc răspunde. 1637 01:06:49,410 --> 01:06:52,280 Pe partea dreapta, nu 1 împărțit la 10 și pui 1638 01:06:52,280 --> 01:06:54,370 answer interiorul variabila. 1639 01:06:54,370 --> 01:06:56,410 Acum, această linie pare un pic mai mult criptic. 1640 01:06:56,410 --> 01:06:59,440 Dar observați unele caracteristici familiare. % Înseamnă aici vine o 1641 01:06:59,440 --> 01:07:00,490 substituent. 1642 01:07:00,490 --> 01:07:03,230 f înseamnă aici este o valoare în virgulă mobilă, doar o reală 1643 01:07:03,230 --> 01:07:05,490 număr, ceva cu un punct zecimal. 1644 01:07:05,490 --> 01:07:07,330 0.2 ce înseamnă? 1645 01:07:07,330 --> 01:07:10,740 Oricine știe din experiență anterioară? 1646 01:07:10,740 --> 01:07:12,010 Două zecimale. 1647 01:07:12,010 --> 01:07:14,050 Deci, noi nu am văzut acest lucru înainte, dar e doar un mod de a 1648 01:07:14,050 --> 01:07:16,360 exercită un control asupra printf pic mai mult și 1649 01:07:16,360 --> 01:07:20,840 zicală, nu-mi da 30 de puncte după punctul zecimal, 1650 01:07:20,840 --> 01:07:22,490 în loc să-mi dea doar 2. 1651 01:07:22,490 --> 01:07:23,960 >> Și atunci să mergem mai departe și să rulați acest lucru. 1652 01:07:23,960 --> 01:07:30,160 Deci, a face matematica 3, și acum lasă-mă să ruleze matematica 3, Enter. 1653 01:07:30,160 --> 01:07:34,630 Și asta nu este corect. 1654 01:07:34,630 --> 01:07:37,390 Se pare că ne-am întâlnit prima noastra bug autentice. 1655 01:07:37,390 --> 01:07:39,400 Ei bine, poate că eu nu doar în căutarea destul de aproape. 1656 01:07:39,400 --> 01:07:41,960 Așa că lasă-mă să merg aici, și lasă-mă să pun 20 zecimală 1657 01:07:41,960 --> 01:07:43,300 locuri de puncte de acolo. 1658 01:07:43,300 --> 01:07:47,950 Și lasă-mă să compila acest lucru, asigurați math3, fugi. 1659 01:07:47,950 --> 01:07:50,960 Destul de sigur 1 împărțit la 10 nu este 0. 1660 01:07:50,960 --> 01:07:54,270 Deci, ce se întâmplă? 1661 01:07:54,270 --> 01:07:56,740 Păi bine, deci de fapt nu are de a face cu asta. 1662 01:07:56,740 --> 01:07:57,600 Asta e un gand bun. 1663 01:07:57,600 --> 01:07:59,140 Aceasta este de fapt doar o coincidență 1664 01:07:59,140 --> 01:08:00,220 că facem asta. 1665 01:08:00,220 --> 01:08:02,010 Dar, doar pentru a demonstra că acest lucru nu este, voi 1666 01:08:02,010 --> 01:08:03,160 a reveni ceva aleatoriu. 1667 01:08:03,160 --> 01:08:05,160 Nu face acest lucru la domiciliu, pentru că e doar greșit. 1668 01:08:05,160 --> 01:08:08,000 Dar, asigurați-math3, lasă-mă să-l rulați. 1669 01:08:08,000 --> 01:08:10,690 Nu are nimic de-a face în așa fel cu ceea ce am întorc, doar are de a face 1670 01:08:10,690 --> 01:08:11,940 cu ceea ce am de imprimare. 1671 01:08:11,940 --> 01:08:14,150 Dar l-am auzit aici. 1672 01:08:14,150 --> 01:08:15,270 Ce? 1673 01:08:15,270 --> 01:08:17,524 PUBLICUL: Deci, avem nevoie pentru a scrie numerele în 1674 01:08:17,524 --> 01:08:19,680 divizare, - 1675 01:08:19,680 --> 01:08:20,319 >> DAVID MALAN: Bine bine. 1676 01:08:20,319 --> 01:08:22,810 Deci, avem nevoie pentru a scrie numerele care participă la 1677 01:08:22,810 --> 01:08:25,979 diviziune aici ca punct de flotant ei înșiși valori. 1678 01:08:25,979 --> 01:08:29,359 Deci, problema aici este ca mai înainte: C, ca și cu o mulțime de 1679 01:08:29,359 --> 01:08:31,819 limbi, are diferite tipuri de date. 1680 01:08:31,819 --> 01:08:34,600 Și aceste tipuri de date, de exemplu, sunt acestea aici. 1681 01:08:34,600 --> 01:08:37,430 Și tipurile de date în cauză aici, atunci când am tip 1 și apoi mi-am 1682 01:08:37,430 --> 01:08:40,870 tip 10, sunt, probabil, tipurile de date? 1683 01:08:40,870 --> 01:08:42,170 Deci, este, probabil, un int, nu? 1684 01:08:42,170 --> 01:08:44,149 E cu siguranta nu un fond de trezorerie, deoarece nu exista nici o zecimală 1685 01:08:44,149 --> 01:08:45,460 punctul sau ceva de genul asta. 1686 01:08:45,460 --> 01:08:48,270 Deci într-adevăr, am o int împărțit de către un int. 1687 01:08:48,270 --> 01:08:52,160 >> Deci lucrul interesant despre matematica si un computer este că 1688 01:08:52,160 --> 01:08:54,840 dacă faci diviziuni folosind numere întregi - 1689 01:08:54,840 --> 01:08:57,310 1 împărțit la 10, da este de 0,1. 1690 01:08:57,310 --> 01:09:01,420 Cu toate acestea, atunci când un întreg împărțirea de către un număr întreg, 1691 01:09:01,420 --> 01:09:06,859 Răspunsul trebuie să fie, de asemenea, un întreg doar pentru ca, pentru moment. 1692 01:09:06,859 --> 01:09:08,630 Și ceea ce este implicarea, atunci? 1693 01:09:08,630 --> 01:09:13,640 Ei bine, în cazul în care răspunsul este 1 împărțit la 10 este egal cu 0,1, ceea ce 1694 01:09:13,640 --> 01:09:15,680 computerul este de gând să faceți este să nu am nici o idee cum să 1695 01:09:15,680 --> 01:09:19,270 0.1 reprezintă, pentru că e un punct de valoare variabilă, nu un 1696 01:09:19,270 --> 01:09:21,910 număr întreg; se va taie tot după 1697 01:09:21,910 --> 01:09:27,470 punctul zecimal și doar vă arată 0 la început. 1698 01:09:27,470 --> 01:09:29,540 Și faptul că imprimarea este ca un punct de flotant 1699 01:09:29,540 --> 01:09:31,200 valoare, e doar un lucru estetic. 1700 01:09:31,200 --> 01:09:34,279 Asta pentru că eu sunt forțând computer pentru a imprima acest lucru ca pe un 1701 01:09:34,279 --> 01:09:35,229 plutind valoarea punctului. 1702 01:09:35,229 --> 01:09:37,720 Și într-adevăr, eu am declarat ca un flotor, dar matematica este 1703 01:09:37,720 --> 01:09:39,010 se întâmplă aici. 1704 01:09:39,010 --> 01:09:41,859 >> Așa că lasă-mă să stabilească de fapt, aceasta într-un fel destul de ușor. 1705 01:09:41,859 --> 01:09:45,250 De ce nu am face doar 10.0 și 1.0, cu toate că 1706 01:09:45,250 --> 01:09:47,609 punct de vedere tehnic am putea scapa cu doar face unul dintre cele. 1707 01:09:47,609 --> 01:09:50,630 Acum, lasă-mă să mergeți mai departe și să facă math3. 1708 01:09:50,630 --> 01:09:56,350 Lasă-mă să mergeți mai departe și a alerga acum math3, Enter. 1709 01:09:56,350 --> 01:09:57,500 Și acum, oh, băiete. 1710 01:09:57,500 --> 01:10:00,050 Acum avem o problemă cu totul nouă. 1711 01:10:00,050 --> 01:10:05,600 Deci, mai bine, la dreapta; suntem mai aproape de 0,1, dar ceea ce în mod clar este 1712 01:10:05,600 --> 01:10:06,240 gresit aici? 1713 01:10:06,240 --> 01:10:08,260 Dacă nu ne-am mințit pentru tine de ani de zile, nu? 1714 01:10:08,260 --> 01:10:13,660 1 împărțit la 10 este, de fapt, nu destul de 0,1, astfel încât ceea ce este 1715 01:10:13,660 --> 01:10:14,700 într-adevăr se întâmplă aici? 1716 01:10:14,700 --> 01:10:16,420 Ei bine, poți fel de motiv prin acest punct de vedere logic. 1717 01:10:16,420 --> 01:10:19,200 În cazul în care un calculator are doar o cantitate finită de memorie RAM pentru a începe 1718 01:10:19,200 --> 01:10:23,530 cu, și într-adevăr un computer este utilizarea numai 32 de biți pentru o 1719 01:10:23,530 --> 01:10:26,200 plutitoare valoare punct, este evident motivul pentru care, cu o 1720 01:10:26,200 --> 01:10:29,870 număr finit de biți, 32, în acest caz, da, puteți 1721 01:10:29,870 --> 01:10:31,050 reprezintă o mulțime de lucruri. 1722 01:10:31,050 --> 01:10:33,220 Acesta este de fapt patru miliarde valori diferite pot fi 1723 01:10:33,220 --> 01:10:38,040 reprezentată cu 32 de biți, de la 2 la 32, dar este încă finită. 1724 01:10:38,040 --> 01:10:40,730 Deci, problema este că există un număr infinit de reale 1725 01:10:40,730 --> 01:10:41,370 numere, dreapta. 1726 01:10:41,370 --> 01:10:43,560 Dacă-mi dai un număr real, pot găsi întotdeauna tu unul 1727 01:10:43,560 --> 01:10:46,080 ușor mai mare, ceva mai puțin, doar prin tweaking 1728 01:10:46,080 --> 01:10:47,970 Numerele care sunt, după punctul zecimal. 1729 01:10:47,970 --> 01:10:50,870 Deci, dacă nu dispune de un număr infinit de biți, vă 1730 01:10:50,870 --> 01:10:52,940 nu se poate reprezenta, eventual, un infinit 1731 01:10:52,940 --> 01:10:54,800 Numărul de numere reale. 1732 01:10:54,800 --> 01:10:58,090 >> Deci, există această imprecizie inerent în computere, și 1733 01:10:58,090 --> 01:11:00,930 acest lucru devine tot împiedicat de timp, chiar și în cea mai simplă de 1734 01:11:00,930 --> 01:11:02,260 Programele de acest gen. 1735 01:11:02,260 --> 01:11:05,640 Dar, de asemenea, în unele probleme foarte reale, precum și. 1736 01:11:05,640 --> 01:11:07,790 De fapt, hai să ia un moment pentru a lua doar o privire la 1737 01:11:07,790 --> 01:11:09,530 ceva ce sa întâmplat de fapt în realitate. 1738 01:11:09,530 --> 01:11:11,620 Vom viziona doar primele doua minute, si apoi 1739 01:11:11,620 --> 01:11:13,270 vom posta link-ul on-line. 1740 01:11:13,270 --> 01:11:16,700 Dar aceasta este o dovadă a doar ceea ce poate merge prost, destul de 1741 01:11:16,700 --> 01:11:19,680 sincer, într-un mod foarte tragic atunci când aceste lucruri nu sunt 1742 01:11:19,680 --> 01:11:23,870 apreciate sau doar noi, oamenii, fac greșeli atunci când vine vorba de 1743 01:11:23,870 --> 01:11:26,792 aceste tipuri de detaliile de implementare ale computerelor moderne. 1744 01:11:26,792 --> 01:11:27,284 >> [VIDEO jucat] 1745 01:11:27,284 --> 01:11:30,730 -Ne întoarcem acum la dezastre de inginerie privind minunile moderne. 1746 01:11:30,730 --> 01:11:32,200 Calculatoare. 1747 01:11:32,200 --> 01:11:34,920 Am venit să accepte problemele adesea frustrant 1748 01:11:34,920 --> 01:11:36,750 că du-te cu ei. 1749 01:11:36,750 --> 01:11:40,690 Bug-uri, virusi, si defectele software sunt tarife mici la 1750 01:11:40,690 --> 01:11:42,550 plătească pentru confort. 1751 01:11:42,550 --> 01:11:45,170 Dar, în militare de mare viteză și de înaltă tehnologie și spațiu 1752 01:11:45,170 --> 01:11:48,450 aplicații de program, cea mai mică problemă poate fi 1753 01:11:48,450 --> 01:11:52,220 amplificat în caz de dezastru. 1754 01:11:52,220 --> 01:11:56,780 La 4 iunie 1996, oamenii de stiinta pregătit să lanseze o fără pilot 1755 01:11:56,780 --> 01:11:58,430 Racheta Ariane 5. 1756 01:11:58,430 --> 01:12:00,750 Acesta a fost transportă sateliți științifice destinate să 1757 01:12:00,750 --> 01:12:03,580 stabilească exact cum câmpul magnetic terestru 1758 01:12:03,580 --> 01:12:06,900 interacționează cu vânturile solare. 1759 01:12:06,900 --> 01:12:10,330 Racheta a fost construit pentru Agenția Spațială Europeană și 1760 01:12:10,330 --> 01:12:13,450 decolat de la instalația pe coasta Guyana Franceză. 1761 01:12:13,450 --> 01:12:16,970 >> -La aproximativ aproximativ 37 de secunde în zbor, au prima 1762 01:12:16,970 --> 01:12:19,700 ceva observat a fost de gând greșit, faptul că duzele au fost 1763 01:12:19,700 --> 01:12:21,590 rotire într-un mod în care într-adevăr nu ar trebui. 1764 01:12:21,590 --> 01:12:25,020 Aproximativ 40 de secunde în zbor, în mod clar de vehicule 1765 01:12:25,020 --> 01:12:27,340 era în necaz, și asta atunci când au luat decizia de a 1766 01:12:27,340 --> 01:12:28,136 distruge-o. 1767 01:12:28,136 --> 01:12:31,450 Un ofițer de securitate gama cu curaj extraordinar apăsat 1768 01:12:31,450 --> 01:12:34,160 buton, racheta a explodat înainte de a putea deveni un 1769 01:12:34,160 --> 01:12:37,470 pericol pentru siguranța publică. 1770 01:12:37,470 --> 01:12:40,750 >> -Aceasta a fost călătoria inaugurală a Ariane 5, și ei 1771 01:12:40,750 --> 01:12:43,990 distrugerea a avut loc din cauza unui defect încorporat în 1772 01:12:43,990 --> 01:12:45,480 rachetă de software. 1773 01:12:45,480 --> 01:12:47,660 >> -Problema pe Ariane a fost că a existat un număr care 1774 01:12:47,660 --> 01:12:51,245 necesită 64 de biți pentru a exprima și au vrut să-l transforme 1775 01:12:51,245 --> 01:12:53,010 la un număr de 16 biți. 1776 01:12:53,010 --> 01:12:54,900 Ei au presupus că numărul nu a fost niciodată 1777 01:12:54,900 --> 01:12:56,280 O să fie foarte mare, 1778 01:12:56,280 --> 01:12:59,920 faptul că cele mai multe dintre aceste cifre în numărul de biți 64 au fost 0s. 1779 01:12:59,920 --> 01:13:01,860 Ei au greșit. 1780 01:13:01,860 --> 01:13:04,550 >> -Incapacitatea de program software cuiva sa accepte 1781 01:13:04,550 --> 01:13:07,730 un fel de număr generat de un alt fost la rădăcina 1782 01:13:07,730 --> 01:13:08,930 eșec. 1783 01:13:08,930 --> 01:13:11,490 Software-ul de dezvoltare a devenit o parte foarte costisitoare din 1784 01:13:11,490 --> 01:13:13,280 noua tehnologie. 1785 01:13:13,280 --> 01:13:16,530 Ariane 4 racheta a fost foarte mare succes. 1786 01:13:16,530 --> 01:13:19,100 Atât de mult a software-ului creat pentru aceasta a fost, de asemenea, utilizat 1787 01:13:19,100 --> 01:13:21,050 în Ariane 5. 1788 01:13:21,050 --> 01:13:25,530 >> -Problema de bază a fost că Ariane 5 a fost mai rapid, 1789 01:13:25,530 --> 01:13:27,280 accelerat mai rapid. 1790 01:13:27,280 --> 01:13:30,590 Și software-ul nu a reprezentat pentru asta. 1791 01:13:30,590 --> 01:13:33,060 >> -Distrugerea rachetei a fost un imens financiar 1792 01:13:33,060 --> 01:13:37,670 dezastru, tot din cauza unei erori de software de minute. 1793 01:13:37,670 --> 01:13:40,750 Dar acest lucru nu a fost prima dată când a datelor probleme de conversie a avut 1794 01:13:40,750 --> 01:13:43,680 chinuit de tehnologie modernă rachetă. 1795 01:13:43,680 --> 01:13:44,390 >> DAVID MALAN: Ne vom pleca la asta. 1796 01:13:44,390 --> 01:13:46,870 Dar aceasta este o dovadă a cât de aplicabilă chiar și unii dintre 1797 01:13:46,870 --> 01:13:48,750 aceste mici detalii de nivel pe care le-am început să 1798 01:13:48,750 --> 01:13:50,040 explora astăzi sunt. 1799 01:13:50,040 --> 01:13:52,510 Deci, chiar ca ai un pic distras, probabil, de unele dintre 1800 01:13:52,510 --> 01:13:55,240 sintaxa și arcaneness aici, dăm seama că peste 1801 01:13:55,240 --> 01:13:57,690 Termenul vom fi axat doar pe modul în care se aplică acest lucru este de a 1802 01:13:57,690 --> 01:13:59,530 lumi cu mult dincolo de CS. 1803 01:13:59,530 --> 01:14:00,780 Vă vom vedea miercuri.