1 00:00:00,000 --> 00:00:11,736 2 00:00:11,736 --> 00:00:16,626 >> [VIDEO PLAYBACK] 3 00:00:16,626 --> 00:00:19,410 >> Triumf -A de matematică și calificare mecanic 4 00:00:19,410 --> 00:00:23,270 este acest mare nou automat Calculator de la Universitatea Harvard. 5 00:00:23,270 --> 00:00:27,140 Probleme complicate în matematică pune prin mașina în formă codificată 6 00:00:27,140 --> 00:00:31,710 pe bandă sunt rezolvate cu precizie într-un minute fracțiune din timpul necesar 7 00:00:31,710 --> 00:00:32,819 pentru calculul umane. 8 00:00:32,819 --> 00:00:44,280 9 00:00:44,280 --> 00:00:48,220 Conceput pentru a accelera toate formele de cercetare matematică și științifică, 10 00:00:48,220 --> 00:00:53,840 creierul mecanic gigant va lucra pentru Statele Unite Marinei până la sfârșitul războiului. 11 00:00:53,840 --> 00:01:03,620 12 00:01:03,620 --> 00:01:06,570 >> [END PLAYBACK] 13 00:01:06,570 --> 00:01:08,590 >> David J. MALAN: Acest lucru, este CS50. 14 00:01:08,590 --> 00:01:10,590 Trecut a fost o magic loc, dar dacă ai vreodată 15 00:01:10,590 --> 00:01:13,366 întrebat ce acel dispozitiv este în Harvard Science Center, 16 00:01:13,366 --> 00:01:16,150 este într-adevăr parte a prezentului Harvard Mark I, și este 17 00:01:16,150 --> 00:01:18,710 pe ecran acolo acum pentru ultimii ani mulți. 18 00:01:18,710 --> 00:01:20,590 Și ce veți vedea încorporate în set problemă 19 00:01:20,590 --> 00:01:24,416 unul este un aspect în spatele scenei la ceea ce a făcut acel dispozitiv, și nu, 20 00:01:24,416 --> 00:01:27,540 de la profesorul Harry Lewis, care este în departamentul de informatica aici. 21 00:01:27,540 --> 00:01:29,440 Cu atât mai mult pe faptul că, în doar un pic. 22 00:01:29,440 --> 00:01:33,990 >> Dar astăzi vom începe să tranziție de la saptamana trecuta la acest lucru, 23 00:01:33,990 --> 00:01:37,290 și vom aduce mențiune de o fotografie aici 24 00:01:37,290 --> 00:01:38,630 Asta este de fapt destul de celebru. 25 00:01:38,630 --> 00:01:42,270 Stie cineva ce acest aici este pe ecran? 26 00:01:42,270 --> 00:01:43,880 Cel puțin în funcție de mit. 27 00:01:43,880 --> 00:01:44,837 Da. 28 00:01:44,837 --> 00:01:45,920 Audiența: Primul virus. 29 00:01:45,920 --> 00:01:49,570 David J. MALAN: Deci a fost presupune prima bug real într-un computer. 30 00:01:49,570 --> 00:01:52,490 Acum, în realitate, bug-ul cuvânt, pentru o greșeală într-un program, 31 00:01:52,490 --> 00:01:55,250 a fost cu noi pentru unele timp în lumea fizică, 32 00:01:55,250 --> 00:01:58,190 și acest lucru a fost unul dintre primii ori documentate în care cineva de fapt 33 00:01:58,190 --> 00:02:02,280 smuls o molie mare din Mark Calculator II-lea, a pus in liant, 34 00:02:02,280 --> 00:02:05,006 și apoi a înregistrat ca primul bug cunoscut 35 00:02:05,006 --> 00:02:06,630 a au fost efectiv găsit fizic. 36 00:02:06,630 --> 00:02:10,104 Deci, prin urmare, a fost introdus că în lore astăzi. 37 00:02:10,104 --> 00:02:12,020 Totul, de la ultima săptămână este disponibil online. 38 00:02:12,020 --> 00:02:14,840 În special, resurse care v-ar nu observa neapărat, în special 39 00:02:14,840 --> 00:02:15,881 dacă vin aici în persoană. 40 00:02:15,881 --> 00:02:20,230 Deci, unul dintre semenii didactice fiecare Anul face un set canonic de note, 41 00:02:20,230 --> 00:02:22,010 așa că nu trebuie să țină capul jos, încercând 42 00:02:22,010 --> 00:02:24,410 să transcrie mai nimic care ar putea întâmpla aici, în clasa. 43 00:02:24,410 --> 00:02:25,940 Deci dau seama că cei așa-numitele [? Scribd?] Note 44 00:02:25,940 --> 00:02:29,350 sunt on-line, cu siguranță diapozitivele și codul sursă pe care le folosim în clasă. 45 00:02:29,350 --> 00:02:31,436 Facem transcrieri full text disponibil, de asemenea. 46 00:02:31,436 --> 00:02:34,310 Deci, dacă vă aduceți aminte vag unele termen, și doriți să-l uite un pic 47 00:02:34,310 --> 00:02:37,280 mai ușor, că toate dau seama de care este căutat on-line. 48 00:02:37,280 --> 00:02:38,930 Precum și walkthroughs, de asemenea. 49 00:02:38,930 --> 00:02:42,710 Într-adevăr, astăzi vom începe să se uite la un nivel mai scăzut de programare limbaj, 50 00:02:42,710 --> 00:02:45,290 în curând să fie cunoscut la noi ca C, și este foarte ușor 51 00:02:45,290 --> 00:02:48,820 să se fel de pierdut după doar câteva timp momente, și apoi un fel de mirare 52 00:02:48,820 --> 00:02:52,370 cum de fapt am ajuns la ceva mai mult exemplu complex la cele mai simple. 53 00:02:52,370 --> 00:02:54,975 Și așa ne-am dat seama vom cires alege în timpul clasa unele 54 00:02:54,975 --> 00:02:57,850 dintre exemplele reprezentative, dar dau seama că atât de mult mai mult, de asemenea, 55 00:02:57,850 --> 00:03:01,140 disponibil on-line, astfel încât să puteți lucra prin ea la propriul ritm, 56 00:03:01,140 --> 00:03:02,950 Cu toate acestea ești cel mai confortabil. 57 00:03:02,950 --> 00:03:05,200 >> Dar am rămas cu programe care au fost doar acest. 58 00:03:05,200 --> 00:03:09,690 Asa ca am faceți clic pe steagul verde, și ce acest program face? 59 00:03:09,690 --> 00:03:10,710 Spune, salut, lume. 60 00:03:10,710 --> 00:03:13,180 Aceasta face ca pisica spune salut în mica sa lume 61 00:03:13,180 --> 00:03:15,990 pe partea stanga sus de interfață cu utilizatorul Scratch lui. 62 00:03:15,990 --> 00:03:18,810 Dar am început să introducă unele terminologie săptămâna trecută. 63 00:03:18,810 --> 00:03:23,614 Și astfel, lucruri de genul asta am numit ce? 64 00:03:23,614 --> 00:03:25,280 Care ar putea fi termenul generic pentru asta? 65 00:03:25,280 --> 00:03:26,266 Da. 66 00:03:26,266 --> 00:03:28,210 O metodă sau o declarație. 67 00:03:28,210 --> 00:03:29,280 Sigur, e o acțiune. 68 00:03:29,280 --> 00:03:30,140 Fa asta. 69 00:03:30,140 --> 00:03:32,400 Și totuși, s-au alte forme de zero, 70 00:03:32,400 --> 00:03:35,360 în afară de aceste așa-numite declarație, ei au fost, de asemenea, 71 00:03:35,360 --> 00:03:38,221 lucruri de genul asta, pe care am numit ce? 72 00:03:38,221 --> 00:03:38,720 Da. 73 00:03:38,720 --> 00:03:39,634 Deci, o buclă. 74 00:03:39,634 --> 00:03:42,050 Și în acest caz, acest lucru repetări, evident, de 10 ori. 75 00:03:42,050 --> 00:03:43,040 Există o pentru totdeauna bloc. 76 00:03:43,040 --> 00:03:44,164 Există o serie de alte persoane. 77 00:03:44,164 --> 00:03:48,309 Și astăzi vom vedea cum să traduce aceasta la o lume mai modernă, 78 00:03:48,309 --> 00:03:50,850 dacă vreți, chiar dacă este O să apară la prima vedere 79 00:03:50,850 --> 00:03:52,024 să fie mult mai arcane. 80 00:03:52,024 --> 00:03:53,190 Dar cei erau într-adevăr bucle. 81 00:03:53,190 --> 00:03:56,182 Și apoi ne-am lucruri de genul acest lucru, care a avut această formă, 82 00:03:56,182 --> 00:03:57,515 și, în esență întrebări. 83 00:03:57,515 --> 00:03:58,890 Și ne-am referit la cum ar fi ce? 84 00:03:58,890 --> 00:03:59,762 >> Audiența: expresie booleană. 85 00:03:59,762 --> 00:04:00,320 >> David J. MALAN: Da. 86 00:04:00,320 --> 00:04:01,340 Expresie booleană. 87 00:04:01,340 --> 00:04:04,502 Ceva care este fie adevărat sau false, da sau nu, una sau zero 88 00:04:04,502 --> 00:04:05,960 Cu toate acestea doriți să vizualizați în lume. 89 00:04:05,960 --> 00:04:08,335 Dar am sunat pe cei Boolean expresii, și le-am conectați 90 00:04:08,335 --> 00:04:09,900 în condițiile, sau sucursale. 91 00:04:09,900 --> 00:04:12,170 Și în lumea Zero, totul frumos 92 00:04:12,170 --> 00:04:15,460 blocare în ceea ce privește forma, în cazul în care are sens logic să facă acest lucru, 93 00:04:15,460 --> 00:04:18,490 dar nu trebuie să se oprească la doar face un lucru condiționat, 94 00:04:18,490 --> 00:04:20,450 puteți avea o proverbiala furculiță în drum 95 00:04:20,450 --> 00:04:24,040 și de a face acest lucru, fie sau că, dacă condiția este adevărată sau nu. 96 00:04:24,040 --> 00:04:26,040 Și apoi, după cum veți vedea, dacă nu ați făcut deja, 97 00:04:26,040 --> 00:04:27,480 Puteți chiar cuib aceste blocuri. 98 00:04:27,480 --> 00:04:32,110 Deci, Scratch creste pentru a umple formele că ați putea dori să introduceți în ea, 99 00:04:32,110 --> 00:04:35,330 astfel încât să puteți exprima de fapt cel mai orice logică pe care ați putea dori să facă. 100 00:04:35,330 --> 00:04:38,220 >> Acum câteva cuvinte de anunț pentru atât aici, cât și New Haven. 101 00:04:38,220 --> 00:04:39,370 Deci secționare începe astăzi. 102 00:04:39,370 --> 00:04:42,120 URL-ul pentru acest lucru este pe cursul anilor site-ul, pentru cei nefamiliarizați. 103 00:04:42,120 --> 00:04:43,970 Secțiuni va fi un posibilitatea de a obține împreună 104 00:04:43,970 --> 00:04:46,553 într-un mediu mult mai intim decât [? Sanders?] Permite, 105 00:04:46,553 --> 00:04:50,347 cu 10 la 20 de colegii, cu un predare coleg de la diferite piese, 106 00:04:50,347 --> 00:04:51,930 și ritmuri diferite, daca asa ca alege. 107 00:04:51,930 --> 00:04:54,080 Într-adevăr, ofertele de curs diferite sectiuni 108 00:04:54,080 --> 00:04:57,340 pentru cei mai putin confortabil, mai confortabil, și undeva la mijloc, 109 00:04:57,340 --> 00:04:59,860 și rolul de degetul mare aici, este nu exista nici o definiție formală, 110 00:04:59,860 --> 00:05:04,600 dar daca esti mai putin confortabil, ai un fel de-l cunosc. 111 00:05:04,600 --> 00:05:07,470 Ești un pic Intrepid About Ideea de intensificarea picior, probabil, înapoi 112 00:05:07,470 --> 00:05:10,130 în sala de clasă, sau care prezintă până la o între secțiune. 113 00:05:10,130 --> 00:05:12,770 Dacă ați fost de programare când ați au fost de sase ani, mai confortabil, 114 00:05:12,770 --> 00:05:13,400 Poate pentru tine. 115 00:05:13,400 --> 00:05:16,150 Și dacă e un fel de aruncare-up, asta e exact ceea ce în între 116 00:05:16,150 --> 00:05:17,190 este menit să fie. 117 00:05:17,190 --> 00:05:18,410 >> Acum, în același timp, pentru o clasă această dimensiune, 118 00:05:18,410 --> 00:05:21,326 aceasta ne duce destul de ceva timp pentru a secțiunii toată lumea, așa că am așa-numitele, 119 00:05:21,326 --> 00:05:24,030 Super secțiuni, venind acest week-end și la începutul săptămânii viitoare, 120 00:05:24,030 --> 00:05:26,570 astfel încât să ia o privire la site-ul cursului pentru cei care sunt desigur larg, 121 00:05:26,570 --> 00:05:28,610 și, de asemenea, filmat pentru cei care nu le pot face. 122 00:05:28,610 --> 00:05:33,470 Și secțiuni se vor începe în săptămâna trei CS50 index zero. 123 00:05:33,470 --> 00:05:35,880 Problema set 0 este deja pe site-ul cursului. 124 00:05:35,880 --> 00:05:40,010 Și dau seama că tu ai nouă zile la sfârșitul acestui semestru. 125 00:05:40,010 --> 00:05:43,240 Astfel încât acesta este un upgrade de la ultima an, când am avut cinci zile întârziere. 126 00:05:43,240 --> 00:05:46,210 >> Deci, dacă vă întrebați, avem nouă seturi de probleme. 127 00:05:46,210 --> 00:05:53,200 Aveți nouă zile întârziere, fiecare dintre care puteți petrece doar o pe săptămână. 128 00:05:53,200 --> 00:05:56,089 Asta face în mod eficient toate problema seturi din cauza vineri, 129 00:05:56,089 --> 00:05:58,630 dar scopul este de a pune un pic bit de presiune psihologică 130 00:05:58,630 --> 00:06:01,100 pe tine pentru a încerca să obțineți lucrurile în joi 131 00:06:01,100 --> 00:06:03,960 pentru că așa cum veți descoperi în curând, pentru bine și la rău, cele mai multe 132 00:06:03,960 --> 00:06:07,820 totul în lumea software sfârșește luând mult mai mult decât tine anticipa. 133 00:06:07,820 --> 00:06:10,620 Deci, ia în considerare un fel de oportunitate pentru a ajuta la 134 00:06:10,620 --> 00:06:13,880 te pentru a viza Joi, dar ia confort în faptul că, da, 135 00:06:13,880 --> 00:06:14,950 totul se datorează vineri. 136 00:06:14,950 --> 00:06:17,590 Și dacă le prezintă pe Joi, asta e minunat. 137 00:06:17,590 --> 00:06:21,020 Nu există puncte bonus sau extra credit pentru îndeplinirea acestui termen. 138 00:06:21,020 --> 00:06:23,250 Este menit să fie doar o cârjă. 139 00:06:23,250 --> 00:06:25,810 >> Și ore de birou, atât aici și în New Haven, 140 00:06:25,810 --> 00:06:28,840 în persoană, în cazul în care doriți să întâlni cu oricare dintre cursurile noastre 141 00:06:28,840 --> 00:06:31,060 predare colegii și AC de asistență. 142 00:06:31,060 --> 00:06:31,640 >> In regula. 143 00:06:31,640 --> 00:06:33,110 Deci, acum, hai să facem acest lucru mai adevărat. 144 00:06:33,110 --> 00:06:35,470 Și pentru un moment se va incepe pentru a obține un pic mai mult Arcane, dar foarte 145 00:06:35,470 --> 00:06:37,310 rapid vineri și saptamana viitoare vom fi 146 00:06:37,310 --> 00:06:41,230 capabil să facă mult mai mult decât am putut până acum în Scratch. 147 00:06:41,230 --> 00:06:44,350 Deci, am introdus cod ultima săptămâni, deși pictural. 148 00:06:44,350 --> 00:06:45,620 A fost piese de puzzle. 149 00:06:45,620 --> 00:06:48,800 Și am oficializat că este ceva numit codul sursă, 150 00:06:48,800 --> 00:06:50,330 dar s-ar părea ca? 151 00:06:50,330 --> 00:06:52,550 Ei bine, părea un pic ceva de genul. 152 00:06:52,550 --> 00:06:55,410 Și, de fapt, doar un fel de a șicana unde putem merge cu acest lucru. 153 00:06:55,410 --> 00:06:57,800 Am de gând să merg mai departe și deschide o fereastră aici, 154 00:06:57,800 --> 00:06:59,810 și eu sunt doar de gând să aleagă New File. 155 00:06:59,810 --> 00:07:03,200 Și am de gând pentru a salva acest fișier ca ceva de genul salut punct c. 156 00:07:03,200 --> 00:07:05,700 Mai multe despre această alegere de cuvinte în doar o clipă. 157 00:07:05,700 --> 00:07:08,630 Și acest lucru este modul în care cineva ar putea du-te despre scrierea unui program. 158 00:07:08,630 --> 00:07:13,990 Include I Standard / O puncte h, int main nule, iar apoi deschis bretele buclat, aproape 159 00:07:13,990 --> 00:07:19,430 bretele buclat, printf Salut virgulă lume, backslash n, punct și virgulă, Salvare, făcut. 160 00:07:19,430 --> 00:07:19,930 BINE. 161 00:07:19,930 --> 00:07:21,670 Am scris prima mea Programul, dar o 162 00:07:21,670 --> 00:07:23,878 pentru a fi incredibil de impresioneaza pentru că atunci când am de fapt 163 00:07:23,878 --> 00:07:27,352 rula acest program, desigur, de primul scris face salut, 164 00:07:27,352 --> 00:07:30,310 și apoi dot slash Buna ziua, iar noi vom du-te prin acest lucru în mai multe detalii 165 00:07:30,310 --> 00:07:31,730 într-un moment, asta e tot ce face. 166 00:07:31,730 --> 00:07:33,270 Nu pop deschis orice ferestre. 167 00:07:33,270 --> 00:07:35,070 Ea nu face nimic în special fantezie. 168 00:07:35,070 --> 00:07:38,830 Tot ce face este ceea ce am spus la face, dar cum ajungem la asta? 169 00:07:38,830 --> 00:07:40,560 Și cum putem construi pe asta? 170 00:07:40,560 --> 00:07:43,430 Ei bine, hai să introducă câteva concepte diferite aici. 171 00:07:43,430 --> 00:07:47,170 >> Deci unul, suntem pe cale de a începe folosind un program numit un compilator. 172 00:07:47,170 --> 00:07:51,470 Există un compilator pentru Mac OS, Windows, Linux, orice număr de sisteme de operare, 173 00:07:51,470 --> 00:07:54,540 iar noi vă vom introduce în curând la mediu care va fi folosit, 174 00:07:54,540 --> 00:07:57,410 dar un compilator este doar un general termen de o bucată de software 175 00:07:57,410 --> 00:08:01,940 care ia codul sursă și produce cod obiect din ea. 176 00:08:01,940 --> 00:08:03,940 Cu alte cuvinte, dacă au ca sursa de intrare 177 00:08:03,940 --> 00:08:08,250 cod, ceva de genul ceea ce tocmai am scris, se produce în cele din urmă cod obiect. 178 00:08:08,250 --> 00:08:11,780 Și cod obiect este de fapt doar un mod fantezist de a spune care va fi afișat 179 00:08:11,780 --> 00:08:12,926 lui zero și cuiva. 180 00:08:12,926 --> 00:08:14,800 Cu alte cuvinte, sursa cod, chiar dacă este 181 00:08:14,800 --> 00:08:17,240 O să se uite un pic Arcane, și un pic mai puțin prietenos 182 00:08:17,240 --> 00:08:19,590 decât Scratch la prima vedere, este cel puțin ceva 183 00:08:19,590 --> 00:08:21,120 că noi, oamenii, pot înțelege. 184 00:08:21,120 --> 00:08:24,360 Intr-un fel de arată și sună ca Engleză chiar dacă este foarte succint. 185 00:08:24,360 --> 00:08:28,040 Întrucât programarea în zero, și cuiva, ca predecesorii nostri au avut de a face, 186 00:08:28,040 --> 00:08:30,920 acum câțiva ani, nu a fost o în special distracție provocare. 187 00:08:30,920 --> 00:08:33,710 Și totuși, aceasta este ceea ce calculator încă înțelege. 188 00:08:33,710 --> 00:08:37,010 Deci, compilator ne devine din codul sursă pentru codul obiect. 189 00:08:37,010 --> 00:08:39,860 E ca deschiderea unui fișier cu compilator, și atunci când îl salvați, 190 00:08:39,860 --> 00:08:41,419 te acele zerouri și cele. 191 00:08:41,419 --> 00:08:43,419 Deci, vom vedea cum se face că într-o clipă. 192 00:08:43,419 --> 00:08:47,400 >> Dar să încercați acum să ofere un punte de legătură între săptămâna trecută și acest lucru, 193 00:08:47,400 --> 00:08:50,660 astfel încât chiar ca suntem închis pe lucruri cum ar fi acolade, 194 00:08:50,660 --> 00:08:54,100 și punct și virgulă, și paranteze, și toate acestea interesant intelectual 195 00:08:54,100 --> 00:08:57,620 aspecte ale programării, care foarte înțeles excursie pe oameni de timpuriu, 196 00:08:57,620 --> 00:09:00,930 dau seama că toate ideile astăzi, sunt la fel ca ultima. 197 00:09:00,930 --> 00:09:03,975 Deci trecut, am văzut acest exemplu aici, programul Hello World. 198 00:09:03,975 --> 00:09:07,500 Ei bine, incepand de astazi, daca vrem să pună în aplicare aceeași programul, 199 00:09:07,500 --> 00:09:10,800 se va arata o ceva de genul asta. 200 00:09:10,800 --> 00:09:14,040 Si vom explica înainte de mult timp ceea ce Int, și principala, și gol, și toate astea 201 00:09:14,040 --> 00:09:18,770 este, dar cel puțin eu văd aici deja familiar Hello World. 202 00:09:18,770 --> 00:09:20,860 >> Între timp, lucruri cum ar fi funcție, salut, 203 00:09:20,860 --> 00:09:23,570 este foarte simplu va fi un declarație foarte simplu ca asta. 204 00:09:23,570 --> 00:09:26,930 Printf salut lume, cu unele citează, cu un backslash, 205 00:09:26,930 --> 00:09:29,780 cu un punct și virgulă, dar mai mult pe faptul că de vină. 206 00:09:29,780 --> 00:09:34,066 Loops, între timp, aceasta este o buclă care, Desigur, spune hello world pentru totdeauna, 207 00:09:34,066 --> 00:09:36,690 și aceasta se va arata o puțin ciudat decât în ​​ultima, 208 00:09:36,690 --> 00:09:39,530 dar dacă spun ceva cum ar fi, în timp ce adevărat, 209 00:09:39,530 --> 00:09:44,050 posibilitatea de a imprima apoi pe Bună ziua lume din nou și din nou și din nou și din nou. 210 00:09:44,050 --> 00:09:46,660 Și apoi, după cum puteți fel de a începe pentru a deduce de aici, 211 00:09:46,660 --> 00:09:49,070 această convenție de a folosi acolade este un fel 212 00:09:49,070 --> 00:09:52,050 de ca îmbrățișând alin de cod acolo. 213 00:09:52,050 --> 00:09:55,840 Linia de cod printf mult ca piesa de puzzle galben deasupra. 214 00:09:55,840 --> 00:09:58,740 Deci nu vom să spun pentru totdeauna, vom spune în timp ce adevărat, 215 00:09:58,740 --> 00:10:01,020 dar vom vedea de ce, care este în doar un pic. 216 00:10:01,020 --> 00:10:04,210 >> În același timp, dacă avem o buclă de genul asta, în cazul în care se repetă ceva o finit 217 00:10:04,210 --> 00:10:07,730 ori numărul, aceasta de asemenea este de gând să ia un pic de Noțiuni de bază utilizate 218 00:10:07,730 --> 00:10:12,820 , dar este de gând să spun pentru Int i devine zero i mai puțin de 10, am ++, 219 00:10:12,820 --> 00:10:14,056 și apoi din nou printf. 220 00:10:14,056 --> 00:10:15,430 Dar nu va fi modele. 221 00:10:15,430 --> 00:10:18,434 Iar pentru cei dintre voi familiarizati cu AP Informatică, sau Java, 222 00:10:18,434 --> 00:10:21,100 sau orice număr de alte limbi, aproape toate aceste constructe 223 00:10:21,100 --> 00:10:23,820 până acum ar trebui să arate cea mai mare parte familiar. 224 00:10:23,820 --> 00:10:24,680 >> Deci variabilă. 225 00:10:24,680 --> 00:10:29,270 Deci, aici este un simplu fragment Scratch că stabilește o variabilă numită contra la zero, 226 00:10:29,270 --> 00:10:33,150 și apoi spune totdeauna contra, și atunci se schimbă contra câte unul. 227 00:10:33,150 --> 00:10:37,030 Deci, începe de la zero, și apoi unul, doi, trei. 228 00:10:37,030 --> 00:10:42,560 Ei bine, cum s-ar putea ca, in vom introduce acest nou limbaj puțin la fel de? 229 00:10:42,560 --> 00:10:45,460 Int contra este egal zero,, în timp ce este adevărat, care 230 00:10:45,460 --> 00:10:48,100 este aceeași idee de la înainte de a face ceva pentru totdeauna, 231 00:10:48,100 --> 00:10:49,530 și eu sunt doar de gând să printf. 232 00:10:49,530 --> 00:10:53,310 Și acum e cam ciudat, la sută i, ci mai mult pe faptul că pentru a veni, 233 00:10:53,310 --> 00:10:55,140 dar aceste idei sunt exact la fel. 234 00:10:55,140 --> 00:10:58,820 Doar acum avem de a adera la sintaxa că computerul este 235 00:10:58,820 --> 00:11:00,010 O să ceară de la noi. 236 00:11:00,010 --> 00:11:04,620 >> Expresie booleană, ceva de genul sx mai mic decât y, sau x mai mic decât y, 237 00:11:04,620 --> 00:11:06,354 și y mai mică z. 238 00:11:06,354 --> 00:11:09,270 Se va arata ceva ca aceasta, cu paranteze doar 239 00:11:09,270 --> 00:11:13,020 ca în matematica pentru o bună măsură la doar asigură că ordinea operațiilor 240 00:11:13,020 --> 00:11:14,750 este la fel de ne-am propus. 241 00:11:14,750 --> 00:11:15,600 Și acum, condiții. 242 00:11:15,600 --> 00:11:21,220 Deci, dacă X mai puțin de y, spune x este mai mic decât y, altfel dacă x este mai mare decât y, 243 00:11:21,220 --> 00:11:26,020 spune x este mai mare decât y, în caz contrar logic, X trebuie să fie egal cu y. 244 00:11:26,020 --> 00:11:28,710 Deci s-ar putea să pună în aplicare tu ceva de genul asta in Scratch, 245 00:11:28,710 --> 00:11:31,230 sau s-ar putea să pună în aplicare te o în această sintaxă. 246 00:11:31,230 --> 00:11:35,090 Și din nou, acolade sunt un fel de oferindu-ne aceeași formă ca și puzzle-ului 247 00:11:35,090 --> 00:11:40,750 piese, dar sintaxa, acum, este, probabil, Încep să urmeze unele modele. 248 00:11:40,750 --> 00:11:42,910 >> Deci, ce face acest lucru ne da aici? 249 00:11:42,910 --> 00:11:45,260 Deci ne-am întors apoi la programul nostru principal. 250 00:11:45,260 --> 00:11:47,930 Să fapt, acum, face ceva cu el. 251 00:11:47,930 --> 00:11:50,660 Deci, în acest prima line vedem includ ascuțite, 252 00:11:50,660 --> 00:11:53,160 I Standard / O, punct h, și apoi unele unghi ciudat 253 00:11:53,160 --> 00:11:57,330 paranteze de mai jos care. int main nule, iar apoi printf Salut lume. 254 00:11:57,330 --> 00:11:58,200 Deci, să ia doar un pas. 255 00:11:58,200 --> 00:12:02,440 Cineva care nu a mai programat inainte, cel puțin explica unul dintre aceste linii. 256 00:12:02,440 --> 00:12:04,490 Folosind Poate că unii dintre jargonul săptămâna trecută. 257 00:12:04,490 --> 00:12:06,942 Ce este printf, de exemplu? 258 00:12:06,942 --> 00:12:07,442 Da. 259 00:12:07,442 --> 00:12:08,410 >> Audiența: [inaudibil] 260 00:12:08,410 --> 00:12:08,610 >> David J. MALAN: Da. 261 00:12:08,610 --> 00:12:11,380 Este o funcție, sau o declarație, de la terminologia de săptămâna trecută. 262 00:12:11,380 --> 00:12:13,470 Și este o acțiune care face ceva. 263 00:12:13,470 --> 00:12:15,855 Acum această funcție, sau această declarație, nu 264 00:12:15,855 --> 00:12:17,550 se pare să ia un fel de intrare? 265 00:12:17,550 --> 00:12:20,080 266 00:12:20,080 --> 00:12:24,380 Și în ce sens se face par să ia de intrare, în cazul în care așa? 267 00:12:24,380 --> 00:12:26,180 De intrare, ceea ce vreau să spun cu asta? 268 00:12:26,180 --> 00:12:26,720 Da. 269 00:12:26,720 --> 00:12:27,595 >> Audiența: [inaudibil] 270 00:12:27,595 --> 00:12:30,565 271 00:12:30,565 --> 00:12:31,440 David J. MALAN: Da. 272 00:12:31,440 --> 00:12:34,890 Deci, Scratch de câteva piese de puzzle în cazul în care îl puteți parametrize. 273 00:12:34,890 --> 00:12:37,980 Ai putea spune repeta bloca câte ori să se repete, 274 00:12:37,980 --> 00:12:40,320 astfel că a fost o intrare de soiuri, și la fel ca Scratch 275 00:12:40,320 --> 00:12:43,060 a avut un pic de substituent alb pentru numărul pe care tastați, 276 00:12:43,060 --> 00:12:45,810 tot așa vom folosi în acest paranteze lumea textului 277 00:12:45,810 --> 00:12:49,910 pentru a ne da ca formă circulară în care ne putem conecta de intrare nostru. 278 00:12:49,910 --> 00:12:53,180 La urma urmei, zeci de ani în urmă atunci când această limbă, numit C, 279 00:12:53,180 --> 00:12:55,950 a fost inventat nimeni anticipat este unul dintre noi, 280 00:12:55,950 --> 00:12:59,420 acești câțiva ani mai târziu, ne-ar doresc o functie care spune salut. 281 00:12:59,420 --> 00:12:59,920 Corect? 282 00:12:59,920 --> 00:13:02,880 Ar fi frumos dacă ar exista o piesa de puzzle, sau un Cuvinte cheie, 283 00:13:02,880 --> 00:13:05,502 care se numește salut, că literalmente doar spune salut. 284 00:13:05,502 --> 00:13:06,460 Dar nu avem nevoie de asta. 285 00:13:06,460 --> 00:13:09,320 Putem avea ceva mult mai mic nivel, ca un print generic 286 00:13:09,320 --> 00:13:12,760 comandă, care ia de intrare, și imprimă orice vrem. 287 00:13:12,760 --> 00:13:14,960 Deci observați acum modelul care va începe să apară. 288 00:13:14,960 --> 00:13:19,310 Paren deschide, închide paren is aparent îmbrățișând de intrare, 289 00:13:19,310 --> 00:13:21,770 și apoi văd dublu citate la ambele capete. 290 00:13:21,770 --> 00:13:25,110 Există încă backslash ciudat n, dar sperăm acum te 291 00:13:25,110 --> 00:13:29,900 poate începe pentru a vizualiza cel puțin că printf este de a lua într-o formă de intrare. 292 00:13:29,900 --> 00:13:31,850 Nu la fel de ușor de utilizat ca Zero, dar e doar 293 00:13:31,850 --> 00:13:34,920 ca au conectat într-o valoare acolo. 294 00:13:34,920 --> 00:13:38,306 >> Bine, acum hai fapt face ceva cu asta. 295 00:13:38,306 --> 00:13:40,930 Deci unii dintre voi s-ar putea ști de la având cumpărăturile clasa înainte, 296 00:13:40,930 --> 00:13:42,638 stat de vorbă cu prietenii, care de mai mulți ani 297 00:13:42,638 --> 00:13:44,590 am folosit ceva numit aparatul CS50. 298 00:13:44,590 --> 00:13:49,160 Acest lucru a fost un termen care descrie o tehnologie numit mașina virtuală, care 299 00:13:49,160 --> 00:13:51,870 este o bucată de software care dvs. predecesorii ar descărca de pe 300 00:13:51,870 --> 00:13:53,360 site-ul cursului gratuit. 301 00:13:53,360 --> 00:13:56,550 Ei ar descărca o bucată gratuit de software numit hypervisor, 302 00:13:56,550 --> 00:14:00,590 ceva numit ca VMware, sau VirtualBox, sau orice număr 303 00:14:00,590 --> 00:14:04,450 de alte instrumente, precum și pe Mac sau PC lor sau orice calculator au avut anul trecut 304 00:14:04,450 --> 00:14:06,620 și în ultimii ani, au ar dubla clic pe o pictogramă 305 00:14:06,620 --> 00:14:08,860 pentru a rula acest software numit hypervisor. 306 00:14:08,860 --> 00:14:12,220 Și apoi în interiorul acestui program ei ar deschide aparatul CS50. 307 00:14:12,220 --> 00:14:14,710 Iar efectul a fost că dacă un predecesor de-al tău 308 00:14:14,710 --> 00:14:17,780 a fost care rulează Mac OS sau Ferestre, el sau ea, apoi 309 00:14:17,780 --> 00:14:22,910 a avut ulterior o fereastră nouă pe teritoriul lor ecran rulează mediul CS50 lui. 310 00:14:22,910 --> 00:14:27,370 Deci, o mașină virtuală vă permite să rulați un Sistemul operează în interiorul altuia, 311 00:14:27,370 --> 00:14:28,785 și că este exact ceea ce am făcut. 312 00:14:28,785 --> 00:14:31,410 De-a lungul cea mai mare parte WE curs utilizați un sistem de operare numit 313 00:14:31,410 --> 00:14:34,070 Linux, în mod specific Ubuntu Linux, și acest 314 00:14:34,070 --> 00:14:37,590 este un mod foarte frumos în ultimii ani de asigurându-vă că toată lumea în curs 315 00:14:37,590 --> 00:14:38,840 doar a avut același mediu. 316 00:14:38,840 --> 00:14:41,339 Și vă puteți folosi orice fel de calculator pe care doriți de fapt. 317 00:14:41,339 --> 00:14:43,930 Printre dezavantaje, deși, au fost a fost ca doi gigabytes 318 00:14:43,930 --> 00:14:45,480 pentru a descărca acest lucru. 319 00:14:45,480 --> 00:14:50,310 Ea nu a funcționat în mod necesar super-bine pe oameni ale căror calculatoare care poate doar 320 00:14:50,310 --> 00:14:54,570 a avut un concert sau cam asa ceva de RAM, sau nu prea multe GHz de viteza procesorului, 321 00:14:54,570 --> 00:14:56,750 și așa mai departe în acest an, pentru precum și alte motive, 322 00:14:56,750 --> 00:14:59,140 am fost tranziția la acest mediu. 323 00:14:59,140 --> 00:15:03,730 Așa-numita CS50 IDE, care este bazat pe software open source, 324 00:15:03,730 --> 00:15:07,380 și o platformă de așezare că o companie numita Cloud9 325 00:15:07,380 --> 00:15:11,110 sprijină, în Europa, care ne permite să avem, în esență, 326 00:15:11,110 --> 00:15:15,770 același mediu exact ca în ultimii ani, dar în așa-numitul nor. 327 00:15:15,770 --> 00:15:17,532 >> Deci, ce este norul? 328 00:15:17,532 --> 00:15:20,480 Ați făcut clic, probabil, pictograma pe Mac sau PC. 329 00:15:20,480 --> 00:15:22,210 Ce este norul? 330 00:15:22,210 --> 00:15:22,709 Da? 331 00:15:22,709 --> 00:15:25,880 332 00:15:25,880 --> 00:15:26,780 Un pic mai tare. 333 00:15:26,780 --> 00:15:30,510 334 00:15:30,510 --> 00:15:31,010 Da. 335 00:15:31,010 --> 00:15:33,770 E doar o grămadă de calculatoare altă parte că a stoca date și a alerga 336 00:15:33,770 --> 00:15:34,880 software și altele asemenea. 337 00:15:34,880 --> 00:15:39,390 Deci, este într-adevăr doar la cuvântul DE jure de a descrie [? inchiriabila?] 338 00:15:39,390 --> 00:15:40,930 computere care traiesc in alta parte. 339 00:15:40,930 --> 00:15:42,810 Că tu, le nu dețin neapărat. 340 00:15:42,810 --> 00:15:45,256 Așa că atunci când datele tale, sau dvs. Programele sunt în nor, 341 00:15:45,256 --> 00:15:47,630 doar înseamnă că este pe cineva computere altceva lui în altă parte, 342 00:15:47,630 --> 00:15:50,510 și nu, cel mai probabil, pe dumneavoastră laptop fizic sau desktop. 343 00:15:50,510 --> 00:15:52,990 Și așa mai departe asta CS50 IDE acum este. 344 00:15:52,990 --> 00:15:55,670 >> De acum înainte veți merge la o anumită URL pe care le va introduce 345 00:15:55,670 --> 00:16:00,090 la, în problema set 1, mai târziu în acest săptămâni, care va apoi, la logare, 346 00:16:00,090 --> 00:16:01,480 vă dau acest mediu. 347 00:16:01,480 --> 00:16:03,896 Si mult Scratch ca a avut o câteva panouri diferite implicate, 348 00:16:03,896 --> 00:16:06,030 la fel IDE CS50 au exact acest lucru. 349 00:16:06,030 --> 00:16:09,480 Pe partea de sus partea stanga aici, ești merge pentru a vedea un browser de fișiere familiar. 350 00:16:09,480 --> 00:16:11,930 Deci, oricare dintre fișierele pe care le pus în acest mediu 351 00:16:11,930 --> 00:16:13,346 sunt doar de gând să fie listate acolo. 352 00:16:13,346 --> 00:16:14,350 Fișiere și foldere. 353 00:16:14,350 --> 00:16:16,790 Pe partea de sus chiar aici, ai de gând pentru a vedea un loc 354 00:16:16,790 --> 00:16:18,420 în cazul în care vă puteți scrie de fapt codul. 355 00:16:18,420 --> 00:16:21,860 Inițial în C, mai târziu, în termen în PHP și JavaScript, 356 00:16:21,860 --> 00:16:24,739 și, probabil, pentru finală proiecte, Ruby sau Java sau Python 357 00:16:24,739 --> 00:16:27,280 sau orice număr de limbi sunt sprijinit în acest mediu. 358 00:16:27,280 --> 00:16:30,130 Nu este deloc legat la CS50 specific. 359 00:16:30,130 --> 00:16:33,390 >> Și apoi în colțul de jos aici, mai ales pentru cei mai confortabil, 360 00:16:33,390 --> 00:16:35,590 ai ceva numit-o fereastră terminal. 361 00:16:35,590 --> 00:16:38,770 Și această fereastră terminal permite sa execute orice comanda pe care le 362 00:16:38,770 --> 00:16:40,860 doresc în acest mediu cloud. 363 00:16:40,860 --> 00:16:42,860 Acesta vă permite să instalați nici un software suplimentar 364 00:16:42,860 --> 00:16:46,810 pe care doriți pentru că ai așa-numitele rădăcină, sau de administrator privilegii. 365 00:16:46,810 --> 00:16:49,930 Deci, cu alte cuvinte, chiar dacă această este în cele din urmă a găzduit în nor, 366 00:16:49,930 --> 00:16:52,400 și chiar dacă ne-am simplificat-o anumită măsură 367 00:16:52,400 --> 00:16:57,110 în mod implicit, la propriu introducerea, Datorită Dan Armendariz, și Dino, 368 00:16:57,110 --> 00:17:01,070 și Dan Bradley din echipa CS50 lui peste trecut mai multe luni, un mod mai puțin confortabil 369 00:17:01,070 --> 00:17:05,140 mod care ascunde o mulțime de distrageri inițial confuz. 370 00:17:05,140 --> 00:17:10,119 Totul există la reprezintă un sistem tipic de calculator 371 00:17:10,119 --> 00:17:12,319 pe care le-ar putea utiliza în lumea reală. 372 00:17:12,319 --> 00:17:15,640 >> Deci, ce inseamna toate acestea, și ceea ce putem face de fapt cu ea? 373 00:17:15,640 --> 00:17:19,124 Să aruncăm o privire la de fapt un program de. 374 00:17:19,124 --> 00:17:21,290 Deci, am de gând să deschidă mediu real aici, 375 00:17:21,290 --> 00:17:23,894 care este doar Chrome nostru browser-ul, care ar putea fi Firefox, 376 00:17:23,894 --> 00:17:26,640 ar putea fi Internet Explorer, sau un alt browser, de asemenea. 377 00:17:26,640 --> 00:17:28,400 E plin testati aici pentru moment. 378 00:17:28,400 --> 00:17:31,580 Și vreau să tachineze de fapt în afară ceea ce acest program a fost. 379 00:17:31,580 --> 00:17:36,170 Deci, haideți să aruncăm o privire, prin mărirea până top, la ceea ce am făcut, și cum am ajuns aici. 380 00:17:36,170 --> 00:17:38,315 Deci, aici e exact cei aceleași linii de cod. 381 00:17:38,315 --> 00:17:40,440 Deci aceasta este declarația, așa cum ați menționat mai devreme. 382 00:17:40,440 --> 00:17:42,580 Funcția care spune salut. 383 00:17:42,580 --> 00:17:45,870 Acolade, pe linie cu patru și șase linie, 384 00:17:45,870 --> 00:17:49,290 probabil un fel de plic că linia de asocia 385 00:17:49,290 --> 00:17:50,890 cu esența programul meu. 386 00:17:50,890 --> 00:17:54,890 Deci, într-adevăr, acest cuvânt cheie principal, că e acolo sus pe linia trei, 387 00:17:54,890 --> 00:17:59,450 vă puteți gândi că ca echivalent de că, atunci când pavilion verde apasat, 388 00:17:59,450 --> 00:18:01,080 bloca în Scratch. 389 00:18:01,080 --> 00:18:05,280 Deci, asta e tot ce avem aici, este atunci când pavilion verde apasat, imprimare, sau spun, 390 00:18:05,280 --> 00:18:06,700 Buna, lume. 391 00:18:06,700 --> 00:18:11,210 >> Dar să luăm o presupunere, acum, la ceea ce aceasta prima linie, mai Arcane, este. 392 00:18:11,210 --> 00:18:15,100 Sharp includ, în unghi deschis Suport, I Standard / O dot h, 393 00:18:15,100 --> 00:18:17,320 închide suport unghi. 394 00:18:17,320 --> 00:18:19,850 Ce se poate face ca, mai ales dacă ați programat 395 00:18:19,850 --> 00:18:21,390 înainte într-o altă limbă. 396 00:18:21,390 --> 00:18:21,890 Da? 397 00:18:21,890 --> 00:18:22,765 >> Audiența: [inaudibil] 398 00:18:22,765 --> 00:18:25,095 399 00:18:25,095 --> 00:18:25,970 David J. MALAN: Da. 400 00:18:25,970 --> 00:18:26,470 Exact. 401 00:18:26,470 --> 00:18:29,455 Deci, aceasta este oferindu-vă acces la o bibliotecă, ca să spunem așa, de funcții. 402 00:18:29,455 --> 00:18:31,830 Și o bibliotecă de funcții este funcții care altcineva 403 00:18:31,830 --> 00:18:34,406 a scris, fie recent sau mult timp în urmă, astfel încât să 404 00:18:34,406 --> 00:18:35,780 nu trebuie să reinventeze roata. 405 00:18:35,780 --> 00:18:39,020 De exemplu, noi nu Trebuie să știi, în 2015, 406 00:18:39,020 --> 00:18:42,280 cum să scrie cod care pune un personaj pe ecranul meu. 407 00:18:42,280 --> 00:18:44,820 Altcineva a dat seama că cu funcția printf 408 00:18:44,820 --> 00:18:47,280 astfel încât să pot sorta de abstract departe de asta, sau un strat 409 00:18:47,280 --> 00:18:49,350 pe partea de sus a lui sau a ei cod, iar acum ia doar 410 00:18:49,350 --> 00:18:52,760 de la sine că orice program scriu poate imprima ceva pe ecran. 411 00:18:52,760 --> 00:18:58,150 Deci, această primă linie acolo, în prima etapă include așa-numitul dosar antet 412 00:18:58,150 --> 00:18:59,980 pentru biblioteca standard. 413 00:18:59,980 --> 00:19:02,630 Deci vezi, limba care ne acum de lucru 414 00:19:02,630 --> 00:19:05,010 a avut o biblioteca standard cu o mulțime de funcții. 415 00:19:05,010 --> 00:19:07,240 Printf este unul dintre ele, și că prima linie de cod 416 00:19:07,240 --> 00:19:10,040 înseamnă-mi dea acces la aceste funcții, astfel încât să 417 00:19:10,040 --> 00:19:12,300 Nu trebuie să reinventeze roata. 418 00:19:12,300 --> 00:19:15,940 >> Acum să mergem la fereastra de jos și de a face exact ceea ce am făcut înainte. 419 00:19:15,940 --> 00:19:18,520 Acum o clipă, atunci când am fost vâjâit prin codul, 420 00:19:18,520 --> 00:19:24,540 tastați-l pentru prima dată, Am scris foarte repede, să salut. 421 00:19:24,540 --> 00:19:28,250 Ce-a fost asta vorba ați ghicit? 422 00:19:28,250 --> 00:19:29,150 Ce făceam? 423 00:19:29,150 --> 00:19:29,649 Da? 424 00:19:29,649 --> 00:19:31,810 425 00:19:31,810 --> 00:19:32,310 Nu conteaza. 426 00:19:32,310 --> 00:19:32,970 E bine. 427 00:19:32,970 --> 00:19:33,492 Da. 428 00:19:33,492 --> 00:19:34,450 Audiența: Compilarea ea. 429 00:19:34,450 --> 00:19:34,700 David J. MALAN: Da. 430 00:19:34,700 --> 00:19:35,770 Acesta a fost doar compilarea. 431 00:19:35,770 --> 00:19:36,270 Corect? 432 00:19:36,270 --> 00:19:39,280 Chiar dacă acest lucru este complet necunoscut pentru tine, e destul de limba engleză cum ar fi. 433 00:19:39,280 --> 00:19:41,155 Cu siguranță că nu e zero și cele, așa că încă 434 00:19:41,155 --> 00:19:44,220 trebuie să-l rulați prin care așa-numita Programul, un compilator, care va 435 00:19:44,220 --> 00:19:46,060 să-l ia ca intrare și de ieșire a produce. 436 00:19:46,060 --> 00:19:48,270 Și cel puțin, pentru moment, în acest mediu Linux, 437 00:19:48,270 --> 00:19:51,030 dar acest lucru nu este condiție prealabilă, acest lucru este doar în cazul în care vom începe, 438 00:19:51,030 --> 00:19:53,960 interacționați cu general sisteme informatice, cum ar fi acest 439 00:19:53,960 --> 00:19:55,770 printr-o linie de comandă așa-numitele. 440 00:19:55,770 --> 00:19:57,790 Deci, cu un Clipește prompte și tastatura, 441 00:19:57,790 --> 00:20:01,630 și nu atât de mult mouse-ul, și nu atât de mult ferestre și pictograme și meniuri, 442 00:20:01,630 --> 00:20:02,980 mai degrabă totul este textual. 443 00:20:02,980 --> 00:20:06,180 Și chiar dacă acest lucru se simte, la prima vedere, probabil, ca un pas înapoi, 444 00:20:06,180 --> 00:20:08,437 este de fapt o mult mai mod puternic și expresiv 445 00:20:08,437 --> 00:20:10,270 de a controla un calculator mai ales ca si tine, 446 00:20:10,270 --> 00:20:12,950 le să devină mai confortabil la mai puțin. 447 00:20:12,950 --> 00:20:16,790 O să vă permite să facă o mulțime mai multe lucruri decât doar ce Microsoft 448 00:20:16,790 --> 00:20:20,390 sau Apple vă permite de a face cu sistemul lor de operare grafic. 449 00:20:20,390 --> 00:20:23,270 >> Așa că atunci când am lovit Enter, acum, nu se întâmplă nimic de data asta 450 00:20:23,270 --> 00:20:25,960 deoarece se pare că Programul salut este de până la data de. 451 00:20:25,960 --> 00:20:28,250 Și ceea ce a fost comanda Am fugit după aceea? 452 00:20:28,250 --> 00:20:32,370 Dot slash salut, și salut lume. 453 00:20:32,370 --> 00:20:34,350 Acum, haideți să facem un pas spate pentru o clipă. 454 00:20:34,350 --> 00:20:39,510 Se pare că face salut este doar o mod simplificat de a elabora un program. 455 00:20:39,510 --> 00:20:41,670 Hai să introducă o bucată de jargon, 456 00:20:41,670 --> 00:20:43,470 dar apoi se îndepărtează din ea, deoarece nu este 457 00:20:43,470 --> 00:20:46,640 tot ce interesant în scopuri de astăzi. 458 00:20:46,640 --> 00:20:51,000 Compilatorul vom începe să utilizați este numit zăngănit, pentru limbajul C. 459 00:20:51,000 --> 00:20:54,280 Și aceasta este un program care este a alerga doar cum am făcut la linia de comandă acolo. 460 00:20:54,280 --> 00:20:56,580 Și așa, dacă vreau să compila un program pe care am 461 00:20:56,580 --> 00:21:00,790 au scris într-un fișier numit salut dot C, am literalmente tip doar zăngănit salut C 462 00:21:00,790 --> 00:21:02,100 intra. 463 00:21:02,100 --> 00:21:04,880 >> Lucru amuzant este, din motive istorice, 464 00:21:04,880 --> 00:21:07,750 dacă nu se specifică Numele programului 465 00:21:07,750 --> 00:21:11,690 că vreau să ieșire, dacă nu-mi place specificați un nume de fișier pentru acele zerouri 466 00:21:11,690 --> 00:21:14,990 și cele, un foarte ciudat cu ani în urmă Convenția a fost adoptată 467 00:21:14,990 --> 00:21:17,390 în cazul în care m-am simtit un fel de răspuns bun la momentul respectiv, 468 00:21:17,390 --> 00:21:21,650 bine hai să numesc în mod arbitrar prim program am compila un punct afară. 469 00:21:21,650 --> 00:21:22,900 O este pe primul loc în alfabetul. 470 00:21:22,900 --> 00:21:23,920 Out, e de ieșire. 471 00:21:23,920 --> 00:21:26,210 Deci, vom numi programul în mod implicit un punct afară. 472 00:21:26,210 --> 00:21:29,550 Și asta e bine pentru că dacă vreau să rula programul în acest text pe bază de 473 00:21:29,550 --> 00:21:33,590 mediu, am tip dot slash un punct în a intra. 474 00:21:33,590 --> 00:21:35,250 Și aceasta ar fi exact ca înainte. 475 00:21:35,250 --> 00:21:36,880 Deci, haideți să vedem că foarte repede. 476 00:21:36,880 --> 00:21:40,370 >> Deci, dacă mă întorc pentru a-mi codul sursă în CS50 IDE, 477 00:21:40,370 --> 00:21:47,860 și eu în schimb face acest lucru, zăngănit salut pat c Introduceți, aviz nimic nu pare să se întâmple, 478 00:21:47,860 --> 00:21:49,790 dar aproape întotdeauna în acest mediu Linux, 479 00:21:49,790 --> 00:21:53,310 când nimic nu pare să se întâmple rău, că înseamnă ceva bun sa întâmplat de fapt. 480 00:21:53,310 --> 00:21:56,270 Dacă nu vedeți o eroare mesaj, totul este, probabil, bine. 481 00:21:56,270 --> 00:22:01,930 Și într-adevăr, dacă acum fac dot slash un punct out intra, am alerga aceeași programul meu. 482 00:22:01,930 --> 00:22:04,610 Încă mai am programul salut de la mai devreme pentru că, într-adevăr, e 483 00:22:04,610 --> 00:22:07,430 Va fi atât de mult mai frumos doar tip face în loc de amintindu- 484 00:22:07,430 --> 00:22:10,240 aceste incantații de comenzi, dar să vedem cum putem 485 00:22:10,240 --> 00:22:12,890 s-ar putea îmbunătăți pe asta, cu toate acestea. 486 00:22:12,890 --> 00:22:15,340 >> Deci, aceasta este comanda pentru a compila codul. 487 00:22:15,340 --> 00:22:19,100 Aceasta este comanda pentru a rula codul compilat ulterior. 488 00:22:19,100 --> 00:22:20,546 Cum pot specifica un nume de fișier? 489 00:22:20,546 --> 00:22:22,670 Ei bine, hai sa introducă inca o jargon. 490 00:22:22,670 --> 00:22:24,461 Când ești în această mediu bazat pe text, 491 00:22:24,461 --> 00:22:27,400 ai de gând să doriți să specificați lucruri numite argumente în linia de comandă. 492 00:22:27,400 --> 00:22:31,380 Care este doar un mod de fantezist de a spune, Cu alte cuvinte, la solicitarea care 493 00:22:31,380 --> 00:22:33,860 tweak comportamentul, indiferent de program rulați. 494 00:22:33,860 --> 00:22:37,320 Deci în mod specific programul eu sunt funcționare, prin tastarea zăngănitul numele, 495 00:22:37,320 --> 00:22:38,504 este programul numit zăngănit. 496 00:22:38,504 --> 00:22:40,920 Astfel încât acesta este sau scoala veche echivalent de dublu-click 497 00:22:40,920 --> 00:22:42,860 pe Microsoft Word sau icon unele program. 498 00:22:42,860 --> 00:22:46,360 Eu în schimb doar tastați numele, dar în această versiune a comenzii, 499 00:22:46,360 --> 00:22:51,334 Atunci am cratimă O spațiu salut spațiu salut punct c. 500 00:22:51,334 --> 00:22:53,500 Deci, chiar dacă nu ați mai a jucat în această lume, înainte de, 501 00:22:53,500 --> 00:22:58,160 să ia doar o presupunere ce nu cratimă o salut fac? 502 00:22:58,160 --> 00:23:00,620 Sau ce nu-l spune zăngăni să facă? 503 00:23:00,620 --> 00:23:01,386 Da. 504 00:23:01,386 --> 00:23:02,455 >> Audiența: [inaudibil] 505 00:23:02,455 --> 00:23:03,330 David J. MALAN: Da. 506 00:23:03,330 --> 00:23:08,614 Aceasta stabilește doar ieșire fișierului de a fi salut în loc de sillier un punct afară. 507 00:23:08,614 --> 00:23:09,780 Și, într-adevăr, să încercăm asta. 508 00:23:09,780 --> 00:23:14,250 Deci, dacă acum fac, în primul rând să facem acest lucru, R m salut. 509 00:23:14,250 --> 00:23:15,590 Asta e elimina. 510 00:23:15,590 --> 00:23:18,450 Și se va spune elimina fișier regulat salut, care 511 00:23:18,450 --> 00:23:22,210 este inutil arcane, dar pur si simplu mijloace vrei să ștergeți fișierul, 512 00:23:22,210 --> 00:23:23,230 și I y tip de da. 513 00:23:23,230 --> 00:23:27,340 Și observați, dacă ați fost în partea de sus uite stanga, a disparut de acolo. 514 00:23:27,340 --> 00:23:32,180 Lasă-mă să fac acum zăngănit bord o, și Am de gând să merg mai departe și de a face salut, 515 00:23:32,180 --> 00:23:34,890 în toate capacele, salut punct c. 516 00:23:34,890 --> 00:23:37,775 Acum, dacă fac slash dot Bună ziua, ce v-ați aștepta? 517 00:23:37,775 --> 00:23:41,240 518 00:23:41,240 --> 00:23:42,430 >> Poate e cazul sensibil. 519 00:23:42,430 --> 00:23:43,070 Poate că nu e. 520 00:23:43,070 --> 00:23:44,030 Sa vedem. 521 00:23:44,030 --> 00:23:45,230 Nu există un astfel de fișier sau director. 522 00:23:45,230 --> 00:23:47,438 Și putem fel de ieftin de sa ne uitam la stânga sus. 523 00:23:47,438 --> 00:23:49,630 Ce am făcut, evident, a salva programul ca? 524 00:23:49,630 --> 00:23:51,070 Toate capacele salut. 525 00:23:51,070 --> 00:23:53,020 Deci, într-adevăr, asta se întâmplă pentru a face o diferenta. 526 00:23:53,020 --> 00:23:54,540 Deci, acum Bună ziua lume este din nou. 527 00:23:54,540 --> 00:23:56,969 Acum, acest lucru este tot fin și bun, și foarte mintea-amorteala, 528 00:23:56,969 --> 00:23:59,760 la fel de get împotmolit în aceste detalii, dar a le înțelege 529 00:23:59,760 --> 00:24:00,500 este bun. 530 00:24:00,500 --> 00:24:02,675 >> Tastarea out aceste din ce în ce incantații lungi 531 00:24:02,675 --> 00:24:05,980 nu va fi deosebit de distracție, astfel încât oamenii din lume 532 00:24:05,980 --> 00:24:08,260 a inventat un alt program, acum câțiva ani, numit 533 00:24:08,260 --> 00:24:12,190 face, că pur și simplu vă permite să tastați make, 534 00:24:12,190 --> 00:24:14,530 numele programului doriți să faceți, și să facă 535 00:24:14,530 --> 00:24:18,580 este inteligent în care va arăta în dosarul curent, alias director, 536 00:24:18,580 --> 00:24:21,440 și, dacă aveți un fișier numit salut punct C, 537 00:24:21,440 --> 00:24:25,800 că este fisierului, va compila pentru tine într-un program numit salut. 538 00:24:25,800 --> 00:24:29,950 Deci, este un mod mult mai simplu de a face comenzi mai criptice 539 00:24:29,950 --> 00:24:30,800 că am făcut mai devreme. 540 00:24:30,800 --> 00:24:34,080 Si ne-am pre-configurate CS50 IDE să știe 541 00:24:34,080 --> 00:24:38,560 că ar trebui să facă o liniuță și un număr de alte steaguri, sau argumente în linia de comandă, 542 00:24:38,560 --> 00:24:40,670 că vom vedea în scurt timp. 543 00:24:40,670 --> 00:24:43,700 >> Dar să acum de fapt, nu ceva mai interesant. 544 00:24:43,700 --> 00:24:46,950 Doar tastarea în lume Bună ziua tuturor timpul nu este tot ceea ce convingătoare. 545 00:24:46,950 --> 00:24:52,280 Așa că lasă-mă să merg mai departe și schimbare acest program și spune, salut David. 546 00:24:52,280 --> 00:24:54,120 Acum am de gând să meargă în jos aici. 547 00:24:54,120 --> 00:24:57,360 Am de gând să merg mai departe și de a face să salut. 548 00:24:57,360 --> 00:25:00,652 Și din nou acum ce vezi face este care vă arată mai mult 549 00:25:00,652 --> 00:25:03,360 secvență de comenzi care este face pentru că ne-am pre-configurate 550 00:25:03,360 --> 00:25:05,200 în felul acesta, dar am nevoie nu vă faceți griji pentru acum 551 00:25:05,200 --> 00:25:10,735 cum îi ce faci alte decât este dot compilarea slash salut, salut lume. 552 00:25:10,735 --> 00:25:14,969 553 00:25:14,969 --> 00:25:15,510 Ce s-a întâmplat? 554 00:25:15,510 --> 00:25:16,177 Da. 555 00:25:16,177 --> 00:25:17,370 >> Audiența: [inaudibil] 556 00:25:17,370 --> 00:25:18,203 >> David J. MALAN: Da. 557 00:25:18,203 --> 00:25:19,600 Deci, greșeală Noobie. 558 00:25:19,600 --> 00:25:22,394 Am observat acest lucru este super subtil, dar asterisc aici, în fila, 559 00:25:22,394 --> 00:25:25,060 doar înseamnă că nu l-au salvat, și browsere și alte programe 560 00:25:25,060 --> 00:25:25,930 face acest lucru, uneori. 561 00:25:25,930 --> 00:25:27,939 Deci, de control sau de comandă s s ar trebui să-l salvați. 562 00:25:27,939 --> 00:25:29,730 Acum lasă-mă să merg mai departe și re-rula programul. 563 00:25:29,730 --> 00:25:33,360 564 00:25:33,360 --> 00:25:34,260 Recompilat. 565 00:25:34,260 --> 00:25:36,050 Corect, așa că este un proces cu mai multe etape. 566 00:25:36,050 --> 00:25:39,400 Niciunul dintre care este deosebit de complexă, dar orice moment vom schimba dosar, 567 00:25:39,400 --> 00:25:43,450 avem nevoie pentru a schimba materialului rezultat zero și cele, și slash punct salut. 568 00:25:43,450 --> 00:25:43,950 Wow. 569 00:25:43,950 --> 00:25:46,450 Deci acest lucru este foarte underwhelming că ne-am imprimat acest lucru. 570 00:25:46,450 --> 00:25:48,360 Să facem lucrurile un puțin mai dinamic, acum. 571 00:25:48,360 --> 00:25:52,280 >> Ei bine, se pare, că place Scratch, C suportă variabile. 572 00:25:52,280 --> 00:25:54,790 Și se pare că, dacă vrei pentru a avea o variabilă care stochează, 573 00:25:54,790 --> 00:25:57,300 nu un număr ca și cum am de obicei facut cu Scratch, 574 00:25:57,300 --> 00:26:01,300 dar, ca un cuvânt, sau un fraza, sau un nume, te 575 00:26:01,300 --> 00:26:04,837 poate specifica o variabilă să fie de tip string. 576 00:26:04,837 --> 00:26:06,670 Deci, vom vedea mai mult de acestea într-o clipă, 577 00:26:06,670 --> 00:26:09,090 dar se pare că C, și o mulțime de limbi, cum ar fi ea, 578 00:26:09,090 --> 00:26:11,240 au tipuri foarte specifice de variabile. 579 00:26:11,240 --> 00:26:13,810 Nu e la fel ca algebra, în cazul în care veți obține o X, Y, Z și 580 00:26:13,810 --> 00:26:16,940 și acestea sunt doar întotdeauna numere, într-un limbaj de programare 581 00:26:16,940 --> 00:26:20,030 puteți stoca numere, puteți stoca caractere individuale, 582 00:26:20,030 --> 00:26:24,619 ai putea stoca cuvinte întregi, ai putea stoca imagini întregi, fișiere de sunet întregi, 583 00:26:24,619 --> 00:26:25,160 și altele asemenea. 584 00:26:25,160 --> 00:26:28,362 Deci, avem nevoie pentru a specifica ce tipul variabilei noastre este. 585 00:26:28,362 --> 00:26:31,570 Și prin convenție am de gând să-mi sun s variabile doar pentru că este succintă, 586 00:26:31,570 --> 00:26:33,510 și s reprezintă șir. 587 00:26:33,510 --> 00:26:36,400 >> Și apoi am de gând pentru a stoca în interiorul acestei variabile, 588 00:26:36,400 --> 00:26:39,570 la fel ca cu Scratch atunci când folosesc bloc set, 589 00:26:39,570 --> 00:26:41,950 Am de gând să utilizați operator de atribuire în C, 590 00:26:41,950 --> 00:26:45,290 care destul de frumos este egal semneze, dar semnul egal face acest lucru. 591 00:26:45,290 --> 00:26:53,220 Se mișcă ceva din dreapta în în partea stângă a expresiei. 592 00:26:53,220 --> 00:26:57,170 Deci, ceea ce am făcut, să fie clar în linia cinci, este am declarat o variabilă. 593 00:26:57,170 --> 00:27:01,284 Am spus la calculator, da-mi memorie pentru o variabilă, o numesc s, 594 00:27:01,284 --> 00:27:03,950 și să știe dinainte că am de gând să fi punerea un șir în ea. 595 00:27:03,950 --> 00:27:05,950 Și un șir este doar o secvență de caractere. 596 00:27:05,950 --> 00:27:09,190 E un cuvânt, sau o frază, sau punctul, dar este o secvență de caractere. 597 00:27:09,190 --> 00:27:10,610 Nu e de numere. 598 00:27:10,610 --> 00:27:13,800 Ce string Am de gând să fie punerea în variabila? 599 00:27:13,800 --> 00:27:16,185 Ei bine, se pare că citez încheiat citatul, "Hannah". 600 00:27:16,185 --> 00:27:17,810 Acum observați modelul care este în curs de dezvoltare. 601 00:27:17,810 --> 00:27:19,260 Există o expresie stanga. 602 00:27:19,260 --> 00:27:21,810 Există o expresie dreapta, separate de semnul egal. 603 00:27:21,810 --> 00:27:24,390 Și să ia doar o presupunere, în cazul în care nefamiliare cu toate acestea, 604 00:27:24,390 --> 00:27:27,430 cu ceea ce punct și virgulă face. 605 00:27:27,430 --> 00:27:28,865 Ce o face, probabil, pentru noi? 606 00:27:28,865 --> 00:27:29,365 Da? 607 00:27:29,365 --> 00:27:29,840 >> Audiența: [inaudibil] 608 00:27:29,840 --> 00:27:29,980 >> David J. MALAN: Da. 609 00:27:29,980 --> 00:27:31,170 E doar de încheiere a liniei. 610 00:27:31,170 --> 00:27:31,669 Corect? 611 00:27:31,669 --> 00:27:34,260 Computerele vor să fie fără menajamente a spus, literalmente, ce să fac. 612 00:27:34,260 --> 00:27:36,343 Ca și unt de arahide și jeleu exemplu sandwich, 613 00:27:36,343 --> 00:27:39,360 dacă nu se specifică exact ceea ce intenționați, 614 00:27:39,360 --> 00:27:42,190 aceasta ar putea fi lăsat să judecata sau erori. 615 00:27:42,190 --> 00:27:44,890 Punct și virgulă înseamnă, asta este pentru această comandă. 616 00:27:44,890 --> 00:27:48,310 Este fiind foarte precise, și este un lucru foarte ușor să plece de pe. 617 00:27:48,310 --> 00:27:52,240 Deci, acum acest program nu pare să fi comportă în mod diferit, până când am 618 00:27:52,240 --> 00:27:53,500 face mai dinamic. 619 00:27:53,500 --> 00:27:57,107 Deci, mai degrabă decât de greu ar putea propria mea nume, lasă-mă să pun o valoare substituent. 620 00:27:57,107 --> 00:28:00,190 Și se pare că, și știu că acest lucru de a fi citit documentatia, 621 00:28:00,190 --> 00:28:04,080 și folosit funcția pentru ani, care printf a fost proiectat pentru a fi dinamic. 622 00:28:04,080 --> 00:28:07,510 Nu trebuie să știe în avans ce cuvinte vrei să în ea. 623 00:28:07,510 --> 00:28:11,290 Puteți avea loc o substituent, cum ar fi la suta s, care 624 00:28:11,290 --> 00:28:15,500 este de gând să-i spuneți calculator, a pus un șir de aici. 625 00:28:15,500 --> 00:28:17,740 >> Care string vrem să pus acolo? 626 00:28:17,740 --> 00:28:22,430 Will pare că între aceste paranteze, care amintesc, delimita 627 00:28:22,430 --> 00:28:28,020 de intrare la o funcție, dacă aveți virgulă lista de lucruri separate aici, 628 00:28:28,020 --> 00:28:31,790 am de fapt, trece în mai multe intrări la o funcție. 629 00:28:31,790 --> 00:28:33,901 Deci, la fel ca unele Scratch blocuri, nu s-ar putea 630 00:28:33,901 --> 00:28:36,150 au jucat cu ei pentru proiectele dumneavoastra dar sau la toate, 631 00:28:36,150 --> 00:28:38,250 unele blocuri Scratch au două intrări. 632 00:28:38,250 --> 00:28:41,220 Două cutii albe vă puteți tip numere sau cuvinte în. 633 00:28:41,220 --> 00:28:45,210 Deci, pentru a nu C au funcții cum ar fi printf care poate dura două intrări. 634 00:28:45,210 --> 00:28:48,050 Și din nou, acest virgulă este separându-le. 635 00:28:48,050 --> 00:28:51,070 Deci, în limba engleză, din nou, chiar dacă nu ați programat înainte, 636 00:28:51,070 --> 00:28:55,320 de care printf logica este o funcție, se efectuează în două intrări, dintre care unul 637 00:28:55,320 --> 00:28:58,810 este un substituent, ce s-ar speri printf este de gând să facă cu această intrare? 638 00:28:58,810 --> 00:29:01,470 639 00:29:01,470 --> 00:29:03,220 O să salut Hannah, sperăm. 640 00:29:03,220 --> 00:29:05,274 Deci, pentru a face acest lucru avem nevoie pentru ao salva. 641 00:29:05,274 --> 00:29:06,190 Am de gând pentru a micșora. 642 00:29:06,190 --> 00:29:10,701 Am de gând să mă întorc aici și spune, să salut intra. 643 00:29:10,701 --> 00:29:11,200 Oh. 644 00:29:11,200 --> 00:29:14,830 Ceva nu e în regulă, și de fapt, acest lucru este destul copleșitoare. 645 00:29:14,830 --> 00:29:18,400 Am șase linii de cod și ca 12 linii de erori. 646 00:29:18,400 --> 00:29:22,120 Deci, aștept cu nerăbdare acest lucru. 647 00:29:22,120 --> 00:29:24,260 Deci, ce se întâmplă aici? 648 00:29:24,260 --> 00:29:27,370 Deci cel mai bun Regula aici, mai ales atunci când sunteți la început, 649 00:29:27,370 --> 00:29:29,370 nu te distras de lucrurile în partea de jos. 650 00:29:29,370 --> 00:29:31,220 De fapt, foarte în mod deliberat am doar derulate până 651 00:29:31,220 --> 00:29:33,930 deoarece deseori, un calculator este nu tot ce strălucitoare a unui dispozitiv. 652 00:29:33,930 --> 00:29:35,054 O să obține confuz. 653 00:29:35,054 --> 00:29:37,220 În cazul în care vede un lucru care nu înțelege, 654 00:29:37,220 --> 00:29:40,030 s-ar putea confunda alte linii de cod ca incorecte, 655 00:29:40,030 --> 00:29:41,649 chiar dacă ele sunt foarte bine. 656 00:29:41,649 --> 00:29:43,940 Deci, vrei mereu să lucreze de sus în jos, prin erorile. 657 00:29:43,940 --> 00:29:47,850 Și, desigur, aceasta este super-arcane în acest moment. 658 00:29:47,850 --> 00:29:50,830 >> Eroare, utilizarea nedeclarată șir de identificare. 659 00:29:50,830 --> 00:29:52,130 Ti-am să spun standard? 660 00:29:52,130 --> 00:29:53,720 Nu, am vrut să spun șir. 661 00:29:53,720 --> 00:29:55,830 Și e îndreptat la, poate e un typo. 662 00:29:55,830 --> 00:30:00,570 Un fel de, spell-check-in-o mod foarte geeky, dar motivul aici, 663 00:30:00,570 --> 00:30:02,840 și veți ști acest doar prin practica, este 664 00:30:02,840 --> 00:30:06,390 că se dovedește că șir nu există în C. De fapt, C 665 00:30:06,390 --> 00:30:08,820 este un limbaj deosebit de vechi, și este nivel foarte scăzut, 666 00:30:08,820 --> 00:30:11,361 și nu o mulțime de caracteristici care s-ar putea au crescut 667 00:30:11,361 --> 00:30:14,620 cu dacă aveți, de fapt, programat în Java, cum unii dintre voi au, 668 00:30:14,620 --> 00:30:16,980 dar se poate învăța lucruri noi. 669 00:30:16,980 --> 00:30:20,900 Și într-adevăr, am făcut acest CS50, chiar dacă până la sfârșitul semestrului, 670 00:30:20,900 --> 00:30:23,512 toate aceste roți de formare vor fi fost scoase, 671 00:30:23,512 --> 00:30:25,220 ceea ce facem în aceste primul câteva săptămâni 672 00:30:25,220 --> 00:30:29,830 inițial este, de asemenea, ne-am să includeți CS50 punct h. 673 00:30:29,830 --> 00:30:31,230 Care este un fișier header. 674 00:30:31,230 --> 00:30:32,440 Mai mult pe faptul că, în viitor. 675 00:30:32,440 --> 00:30:36,430 >> Este un fișier care conține funcții care le-am scris pentru tine. 676 00:30:36,430 --> 00:30:39,180 Și printre aceste funcții este funcții pentru a obține de intrare 677 00:30:39,180 --> 00:30:43,520 de la utilizator, cum ar fi siruri de caractere, și numere și numere reale, și mai mult. 678 00:30:43,520 --> 00:30:45,550 Dar ea are, de asemenea, câteva comenzi rapide. 679 00:30:45,550 --> 00:30:48,200 Acesta definește un Boolean ca un tip de date. 680 00:30:48,200 --> 00:30:50,340 C nu are adevărate sau false. 681 00:30:50,340 --> 00:30:53,880 Dar putem da noțiunea de adevărat sau fals, prin această bibliotecă. 682 00:30:53,880 --> 00:30:57,670 Și, de asemenea, nu are un șir construit până când includem această linie. 683 00:30:57,670 --> 00:31:01,090 Deci, această linie de cod spune compilator, hei, zăngănit, uita-te 684 00:31:01,090 --> 00:31:03,570 în acest dosar pentru un întreg grămadă de cod care CS50 685 00:31:03,570 --> 00:31:06,330 a scris astfel încât cineva folosind acest fișier 686 00:31:06,330 --> 00:31:09,330 poate lua pentru au acordat Caracteristici au adăugat. 687 00:31:09,330 --> 00:31:11,220 >> Deci, acum lasă-mă să merg mai departe și a goli ecranul, 688 00:31:11,220 --> 00:31:14,178 și dacă curios Spun doar de control l de fiecare dată pentru a goli ecranul, 689 00:31:14,178 --> 00:31:15,500 sau aveți posibilitatea să tastați clar. 690 00:31:15,500 --> 00:31:19,220 Mă duc să meargă mai departe și acum Tipul face Bună ziua, și totul este bine. 691 00:31:19,220 --> 00:31:22,550 Încă o ieșire arcane, dar nu este un mesaj eronat. 692 00:31:22,550 --> 00:31:28,300 Acum, dacă fac dot slash salut, și ca o deoparte, slash punct este familiar pentru majoritatea. 693 00:31:28,300 --> 00:31:30,430 Aceasta înseamnă doar, mijloace dot directorul curent. 694 00:31:30,430 --> 00:31:33,120 Deci, dacă ați folosit vreodată DOS, sau Linux, Unix sau 695 00:31:33,120 --> 00:31:35,410 s-ar putea să fi făcut ceva cum ar fi CD dot dot, în cazul în care 696 00:31:35,410 --> 00:31:39,220 dot dot înseamnă merge înapoi în timp, du-te înapoi sau, sau mai sus 697 00:31:39,220 --> 00:31:40,370 în directorul. 698 00:31:40,370 --> 00:31:43,090 Dot înseamnă doar uita-te la directorul curent. 699 00:31:43,090 --> 00:31:45,670 Vreau salut, care este chiar aici. 700 00:31:45,670 --> 00:31:47,750 Și într-adevăr, acum se spune salut Hannah. 701 00:31:47,750 --> 00:31:51,120 Și dacă l-am schimba din nou Maria, recompilați 702 00:31:51,120 --> 00:31:55,650 s-ar face salut, slash dot salut, programul continuă schimbare. 703 00:31:55,650 --> 00:31:58,060 >> Dar acest lucru este încă o Programul destul de stupid. 704 00:31:58,060 --> 00:32:00,972 Dacă vreau să navă acest program, sau da la un prieten, 705 00:32:00,972 --> 00:32:03,430 sau da Maria sau Hannah pentru care contează, e în regulă. 706 00:32:03,430 --> 00:32:07,300 Pot să-l personaliza pentru amândoi, dar niciodată nu va fi dinamic. 707 00:32:07,300 --> 00:32:10,870 Ei nu se poate schimba după ce a fost compilat în jos, în aceste zerouri și cele. 708 00:32:10,870 --> 00:32:12,350 Deci, ceea ce am făcut ceva mai inteligent? 709 00:32:12,350 --> 00:32:17,100 Ce se întâmplă dacă, în loc de hard-codare în programul de numele acestei persoane, 710 00:32:17,100 --> 00:32:20,890 Ce se întâmplă dacă ne-am lua șirul la cerere? 711 00:32:20,890 --> 00:32:22,430 >> Deci, cu alte cuvinte, lasă-mă să fac asta. 712 00:32:22,430 --> 00:32:24,030 Am de gând să recompilați acest program. 713 00:32:24,030 --> 00:32:25,710 Și lasă-mă să măriți în partea de jos acum. 714 00:32:25,710 --> 00:32:29,920 Face salut punct slash salut. 715 00:32:29,920 --> 00:32:31,710 Acum nimic nu se întâmplă. 716 00:32:31,710 --> 00:32:35,860 Putem obține un voluntar rapid pentru a face ceva se întâmple? 717 00:32:35,860 --> 00:32:36,360 Haide sus. 718 00:32:36,360 --> 00:32:37,020 Care e numele tău? 719 00:32:37,020 --> 00:32:37,445 >> PANCHO: Pancho. 720 00:32:37,445 --> 00:32:38,361 >> David J. MALAN: Pacho? 721 00:32:38,361 --> 00:32:39,609 Haide sus. 722 00:32:39,609 --> 00:32:42,150 Odată ce ai ajuns aici, aceasta este O să fie foarte underwhelming, 723 00:32:42,150 --> 00:32:44,060 dar este mult mai interesant decât mine tastarea. 724 00:32:44,060 --> 00:32:49,007 Dacă doriți să mergeți mai departe și tastați dvs. numele, am făcut acest program doar pentru tine. 725 00:32:49,007 --> 00:32:49,840 Doar tastați numele tău. 726 00:32:49,840 --> 00:32:52,380 727 00:32:52,380 --> 00:32:53,900 Enter. 728 00:32:53,900 --> 00:32:54,489 Minunat. 729 00:32:54,489 --> 00:32:55,780 Bine, vă mulțumesc foarte mult. 730 00:32:55,780 --> 00:32:56,708 >> PANCHO: Vă mulțumesc foarte mult. 731 00:32:56,708 --> 00:32:57,636 >> David J. MALAN: OK. 732 00:32:57,636 --> 00:32:59,028 >> [Aplauze] 733 00:32:59,028 --> 00:33:00,884 734 00:33:00,884 --> 00:33:01,840 >> Asta a fost foarte drăguț. 735 00:33:01,840 --> 00:33:03,145 Poftim. 736 00:33:03,145 --> 00:33:03,770 Ce am făcut? 737 00:33:03,770 --> 00:33:05,930 Așa că am în cele din urmă, cel puțin, a făcut acest program dinamic. 738 00:33:05,930 --> 00:33:08,400 Acum este încă sigur prin design underwhelming, 739 00:33:08,400 --> 00:33:11,480 dar avem în cele din urmă capacitatea de acum pentru a scrie cod în avans, cu mult 740 00:33:11,480 --> 00:33:13,770 ca autorii printf, și apoi dinamic 741 00:33:13,770 --> 00:33:17,550 adapta bazează pe intrările suntem predat, fie de către programator, 742 00:33:17,550 --> 00:33:20,610 sau de om care de fapt interacționează cu programul. 743 00:33:20,610 --> 00:33:22,990 Deci, haideți să încercați de fapt acum pentru a face alte câteva constructe 744 00:33:22,990 --> 00:33:26,625 și să vedem dacă nu putem face programele se mai sofisticate. 745 00:33:26,625 --> 00:33:29,250 Așa că hai să mergem mai departe și în loc de scris acest lucru o de la zero, 746 00:33:29,250 --> 00:33:31,540 Am de gând să meargă în de astăzi codul sursă, și toate acestea 747 00:33:31,540 --> 00:33:34,290 este disponibil pe cursului site-ul, și aveți posibilitatea să glisați și fixați-l 748 00:33:34,290 --> 00:33:36,590 în propria dvs. mediu vin vineri dată problemă 749 00:33:36,590 --> 00:33:38,506 set 1 vă oferă instrucțiuni, sau ai putea 750 00:33:38,506 --> 00:33:41,200 fac la linia de comandă ca bine, dar mai mult pentru a veni în p set 1. 751 00:33:41,200 --> 00:33:44,940 >> Să vedem ce e în acest program numit aici, vipera punct c. 752 00:33:44,940 --> 00:33:47,970 Acum am comentat deja , dar ce mai e nou? 753 00:33:47,970 --> 00:33:51,230 La prima vedere, ceea ce linie de cod este absolut nou? 754 00:33:51,230 --> 00:33:53,930 755 00:33:53,930 --> 00:33:56,780 Probabil că nu fundamental necunoscut acum. 756 00:33:56,780 --> 00:33:58,417 >> Audiența: [inaudibil] 757 00:33:58,417 --> 00:34:00,250 David J. MALAN: Da, astfel int x este egal cu a lua n. 758 00:34:00,250 --> 00:34:03,760 N-am mai văzut nimic din toate astea înainte, dar este, probabil, int 759 00:34:03,760 --> 00:34:08,179 simbolul pentru ce fel de variabilă, [? din?] un număr întreg. 760 00:34:08,179 --> 00:34:09,040 Deci, int pentru întreg. 761 00:34:09,040 --> 00:34:11,420 E doar a fi mai succint. x este doar arbitrar. 762 00:34:11,420 --> 00:34:13,920 x și y și z sunt încă destul de rezonabil pentru numere, 763 00:34:13,920 --> 00:34:16,790 dar, în general, vom folosi cuvinte o dată Programele noastre de a obține mai complexe. 764 00:34:16,790 --> 00:34:18,940 Obțineți Int, desigur, la fel ca șir get, 765 00:34:18,940 --> 00:34:21,629 este, probabil, mergi la a lua un întreg de la utilizator, 766 00:34:21,629 --> 00:34:23,670 și apoi vom face acelasi lucru cu y. 767 00:34:23,670 --> 00:34:27,610 Și se pare că, chiar dacă acest lucru Ultima linie, 24, pare mai complex, 768 00:34:27,610 --> 00:34:32,679 se va spune suma acestei și că este aceasta altceva. 769 00:34:32,679 --> 00:34:35,840 >> Și Notă sută i Probabil se referă la ceea ce? 770 00:34:35,840 --> 00:34:38,190 Ce rol are la sută Am aparent servi? 771 00:34:38,190 --> 00:34:40,739 772 00:34:40,739 --> 00:34:41,719 E doar substituenți. 773 00:34:41,719 --> 00:34:42,219 Corect? 774 00:34:42,219 --> 00:34:45,149 La sută s fost de coarde, la sută i este pentru întreg. 775 00:34:45,149 --> 00:34:47,690 Nu va fi la sută f pentru plutitoare valoare punct, care 776 00:34:47,690 --> 00:34:49,273 este doar un număr, cu un punct zecimal. 777 00:34:49,273 --> 00:34:50,590 Cu alte cuvinte, un număr real. 778 00:34:50,590 --> 00:34:55,270 Așa că haideți să de fapt, compila acest program real rapid si fac vipera. 779 00:34:55,270 --> 00:34:57,962 Hopa. 780 00:34:57,962 --> 00:34:58,670 Ocazie. 781 00:34:58,670 --> 00:35:02,970 Deci observați aici, în tot acest timp de utilizare meu nume pentru acest cont este jharvard. 782 00:35:02,970 --> 00:35:06,620 Eu sunt în IDE CS50, aka IDE50. 783 00:35:06,620 --> 00:35:11,030 Și acum, în albastru de aici, este o mențiune, dar din mediul înconjurător, de unde sunt. 784 00:35:11,030 --> 00:35:16,050 Și, de fapt, dacă aș zoom până la partea de sus aici, observați că am un IDE50 785 00:35:16,050 --> 00:35:19,490 și văd acest cuvânt, dacă un fel de rândul său, capul într-o parte, spațiul de lucru. 786 00:35:19,490 --> 00:35:23,890 Pe scurt, faptul că Văd spațiu de lucru slash tilda 787 00:35:23,890 --> 00:35:26,910 înseamnă că în acest text mediu de comandă pe bază de, 788 00:35:26,910 --> 00:35:32,300 Eu sunt în echivalentul text al acest grafic dosar aici. 789 00:35:32,300 --> 00:35:35,730 Așa că, atunci când fac slash dot vipera, se spune nici o regula 790 00:35:35,730 --> 00:35:37,372 pentru a face țintă oprire vipera. 791 00:35:37,372 --> 00:35:39,830 Nu știu ce înseamnă asta, dar e rău pentru un motiv oarecare. 792 00:35:39,830 --> 00:35:43,310 Nu există un astfel de fișier sau director este chiar mai clar. 793 00:35:43,310 --> 00:35:45,670 În cazul în care este atunci? 794 00:35:45,670 --> 00:35:47,820 Bazat pe unde am apasat pentru a deschide fișierul anterior. 795 00:35:47,820 --> 00:35:49,442 În cazul în care s-ar putea fi? 796 00:35:49,442 --> 00:35:52,050 >> Este, probabil, în sursă un w, pentru miercuri, 797 00:35:52,050 --> 00:35:53,960 si eu pot vedea, într-adevăr, dacă am deschis asta. 798 00:35:53,960 --> 00:35:57,220 Nu este vipera punct c, dar în acest mediu bazate pe text, 799 00:35:57,220 --> 00:35:59,380 din nou, trebuie să fie foarte explicit. 800 00:35:59,380 --> 00:36:03,950 Dacă vreau să se schimbe în directoare sursa o miercuri, am nevoie să tastați, 801 00:36:03,950 --> 00:36:07,210 cd spațiu sursă unul Miercuri intra și acum 802 00:36:07,210 --> 00:36:09,810 schimbă prompte la da-mi un sfat vizual care 803 00:36:09,810 --> 00:36:12,330 Sunt, într-adevăr, în altă parte în mediul meu, 804 00:36:12,330 --> 00:36:15,710 dar acum pot face vipera, se pare să funcționeze, 805 00:36:15,710 --> 00:36:18,190 dot slash vipera, da-mi un număr întreg. 806 00:36:18,190 --> 00:36:19,080 Unul. 807 00:36:19,080 --> 00:36:20,070 Două. 808 00:36:20,070 --> 00:36:21,630 Suma de una și două este de trei. 809 00:36:21,630 --> 00:36:24,140 Dar dacă nu cooperează, să vedem ce obține Int face. 810 00:36:24,140 --> 00:36:25,200 Dă-mi un număr întreg. 811 00:36:25,200 --> 00:36:26,590 Nu. 812 00:36:26,590 --> 00:36:27,350 Reîncercați. 813 00:36:27,350 --> 00:36:29,060 BINE. 814 00:36:29,060 --> 00:36:30,520 Bine. 815 00:36:30,520 --> 00:36:32,130 50. 816 00:36:32,130 --> 00:36:32,680 50. 817 00:36:32,680 --> 00:36:33,010 In regula. 818 00:36:33,010 --> 00:36:34,055 Deci, în cele din urmă cooperează. 819 00:36:34,055 --> 00:36:36,430 Și asta e o parte din funcționalitatea pe care aceste funcții 820 00:36:36,430 --> 00:36:37,760 poate s-au construit în pentru tine. 821 00:36:37,760 --> 00:36:43,330 >> Deci în interiorul punerea în aplicare de a lua Int, ceea ce de programare 822 00:36:43,330 --> 00:36:47,990 construi din săptămâna trecută este, probabil, în acolo pentru a obliga acest comportament de Retry, 823 00:36:47,990 --> 00:36:49,962 încercați din nou, încercați din nou? 824 00:36:49,962 --> 00:36:51,670 Da, probabil un fel de buclă. 825 00:36:51,670 --> 00:36:54,160 O să se uite sintactic diferit de blocuri Scratch lui, 826 00:36:54,160 --> 00:36:55,880 dar asta e, într-adevăr ceea ce este în interiorul fișierului. 827 00:36:55,880 --> 00:36:58,505 Și într-un timp câteva săptămâni am să de fapt, uita-te la biblioteca CS50 828 00:36:58,505 --> 00:37:02,000 cu privire la ceea ce este în interior, dar nu e o buclă de impunere exact asta. 829 00:37:02,000 --> 00:37:04,840 >> Hai să jucăm un pic prostesc joc aici cu acest fișier. 830 00:37:04,840 --> 00:37:06,550 Condition Zero punct c. 831 00:37:06,550 --> 00:37:08,960 Vom merge la general doar începe numărarea de la zero. 832 00:37:08,960 --> 00:37:11,220 Și am să păstreze defilare trecut unele din lucrurile de la partea de sus. 833 00:37:11,220 --> 00:37:15,390 În albastru aici, delimitată cu toate de aceste stele și slash-uri, 834 00:37:15,390 --> 00:37:17,310 cei dintre voi care programul înainte, ce e asta? 835 00:37:17,310 --> 00:37:18,690 De ce ținem sar peste ea? 836 00:37:18,690 --> 00:37:19,110 Ce? 837 00:37:19,110 --> 00:37:19,490 >> Audiența: E un comentariu. 838 00:37:19,490 --> 00:37:19,800 >> David J. MALAN: Da. 839 00:37:19,800 --> 00:37:20,633 E doar un comentariu. 840 00:37:20,633 --> 00:37:24,160 Acesta este un comentariu pentru oameni pentru a citi, că, în cazul nostru, 841 00:37:24,160 --> 00:37:27,120 ne spune ce numele fișierului este, cine a scris, și ceea ce face, 842 00:37:27,120 --> 00:37:28,610 astfel încât să nu aveți pentru a citi prin codul 843 00:37:28,610 --> 00:37:30,110 să știu ce acest fișier este despre toate. 844 00:37:30,110 --> 00:37:33,110 E doar o prezentare, dar funcțional e irelevant. 845 00:37:33,110 --> 00:37:35,930 Și pot chiar șterge din dosarul meu și nu are nici un impact. 846 00:37:35,930 --> 00:37:38,740 Liniile suculent sunt acestea primele două aici, acum. 847 00:37:38,740 --> 00:37:41,405 void main Int este echivalentul de când nostru steag verde apasat, 848 00:37:41,405 --> 00:37:44,030 așa că o să plece ca să fie pentru ziua de azi, și vom veni înapoi, 849 00:37:44,030 --> 00:37:46,940 în cele din urmă, cu privire la ce Int și gol sunt, dar acum, 850 00:37:46,940 --> 00:37:49,500 observați ce am făcut aici, puteți, de asemenea, 851 00:37:49,500 --> 00:37:51,736 dacă aveți o în conformitate comment, dacă aveți 852 00:37:51,736 --> 00:37:54,670 Un gând doriți să partajați despre un anumit linie de cod, 853 00:37:54,670 --> 00:37:58,910 convenție în C este de a face slash slash, și apoi câteva cuvinte succinte, 854 00:37:58,910 --> 00:38:01,500 nu o propoziție completă, în general, nu un paragraf, 855 00:38:01,500 --> 00:38:05,310 care explică doar pentru tine, sau dvs. TF, sau alți cititori sau colegi, 856 00:38:05,310 --> 00:38:06,990 ceea ce codul este de a face. 857 00:38:06,990 --> 00:38:10,150 Deci, mai degrabă decât trebuie să te uiți la acest lucru și deduce de la liniile 858 00:38:10,150 --> 00:38:12,550 nouă și 10, ceea ce este acest sens, în conformitate opt 859 00:38:12,550 --> 00:38:14,945 Doar dau un comentariu la cere utilizatorului pentru un întreg, 860 00:38:14,945 --> 00:38:17,820 atunci nu trebuie să ne gândim prea mult despre ceea ce linii nouă și 10 sunt. 861 00:38:17,820 --> 00:38:19,720 Știu doar că asta e ceea ce colectiv ce fac. 862 00:38:19,720 --> 00:38:20,460 >> Cum? 863 00:38:20,460 --> 00:38:22,060 Ei bine, aici e prompt. 864 00:38:22,060 --> 00:38:23,610 Aici e obtinerea de Int. 865 00:38:23,610 --> 00:38:25,984 Și pe baza anterioară comportament, se pare ca get Int 866 00:38:25,984 --> 00:38:29,080 este suficient de inteligent pentru a vă asigura că cooperează uman și dă 867 00:38:29,080 --> 00:38:30,090 un număr întreg. 868 00:38:30,090 --> 00:38:32,270 Dar acum vedem aceasta. 869 00:38:32,270 --> 00:38:33,740 Și aceasta este o reminiscență a Scratch. 870 00:38:33,740 --> 00:38:36,140 Sunt susținând că eu sunt analiza de intrare utilizatorului, 871 00:38:36,140 --> 00:38:39,050 dar oarecum inexact. 872 00:38:39,050 --> 00:38:43,200 Și acest lucru se pare că în C este modul ne exprimăm o în cazul în care altcineva, o sucursală, 873 00:38:43,200 --> 00:38:46,320 o furculiță în drum, dar am spune oarecum inexact. 874 00:38:46,320 --> 00:38:50,470 Ce este bug-ul în acest program? 875 00:38:50,470 --> 00:38:51,610 Despre mai în spate? 876 00:38:51,610 --> 00:38:52,223 Da. 877 00:38:52,223 --> 00:38:53,150 >> Audiența: [neauzit] zero. 878 00:38:53,150 --> 00:38:54,025 >> David J. MALAN: Da. 879 00:38:54,025 --> 00:38:57,630 Deci, dacă am de tip în zero să considerăm exact acest caz caz, sau de colț, 880 00:38:57,630 --> 00:38:58,450 dacă vrei. 881 00:38:58,450 --> 00:39:02,790 Deci, dacă am de tip în zero care dintre blocuri este de gând să se pare că a apuca? 882 00:39:02,790 --> 00:39:04,660 IF sau altcineva? 883 00:39:04,660 --> 00:39:07,340 Else, și va spune, ai ales un număr negativ. 884 00:39:07,340 --> 00:39:10,476 Și într-adevăr, zero, nu ar trebui să fie pozitive sau negative, 885 00:39:10,476 --> 00:39:11,850 și astfel încât să fie eronat. 886 00:39:11,850 --> 00:39:12,930 Asta ar fi un bug. 887 00:39:12,930 --> 00:39:14,580 Deci, cum putem rezolva această problemă? 888 00:39:14,580 --> 00:39:16,360 Cineva care nu a programat înainte? 889 00:39:16,360 --> 00:39:16,570 Vrei-- 890 00:39:16,570 --> 00:39:17,480 >> Audiența: [inaudibil] 891 00:39:17,480 --> 00:39:17,990 >> David J. MALAN: Retragerea? 892 00:39:17,990 --> 00:39:18,570 >> Audiența: [inaudibil] 893 00:39:18,570 --> 00:39:18,930 >> David J. MALAN: Oh, ai? 894 00:39:18,930 --> 00:39:20,350 Cineva care nu a programat înainte. 895 00:39:20,350 --> 00:39:21,750 Doriți să încercați să vă parte la Acest lucru, în tricoul roșu? 896 00:39:21,750 --> 00:39:22,600 Haide sus. 897 00:39:22,600 --> 00:39:25,320 Oh, da, haide sus, dacă nu te superi. 898 00:39:25,320 --> 00:39:27,586 Astfel încât să nu au programat înainte, care e numele tău? 899 00:39:27,586 --> 00:39:28,210 LAUREN: Lauren. 900 00:39:28,210 --> 00:39:29,626 David J. MALAN: Lauren, bine. 901 00:39:29,626 --> 00:39:31,150 Deci rezolva această problemă pentru noi. 902 00:39:31,150 --> 00:39:35,070 Nu am mai văzut C, probabil, și, probabil, nici o altă limbă. 903 00:39:35,070 --> 00:39:38,380 Deci, rezolva acest program pentru noi. 904 00:39:38,380 --> 00:39:39,100 Mă bucur să te cunosc. 905 00:39:39,100 --> 00:39:39,615 Nici o presiune. 906 00:39:39,615 --> 00:39:40,156 LAUREN: Da. 907 00:39:40,156 --> 00:39:43,350 908 00:39:43,350 --> 00:39:46,270 >> David J. MALAN: Dar, din nou, în cazul în care acest lucru jocuri de noroc merge conform planului, 909 00:39:46,270 --> 00:39:48,350 MENIUL aici va fi, doar, din nou, pentru a începe 910 00:39:48,350 --> 00:39:51,080 pentru a observa modele și deduce din sintaxa existent 911 00:39:51,080 --> 00:39:55,420 Cum altfel s-ar putea exprima te le nu joc de cuvinte destinate, în scopul de 912 00:39:55,420 --> 00:39:58,410 pentru a captura unele scenariu suplimentare. 913 00:39:58,410 --> 00:39:59,603 Așa că am să spui altceva, dacă. 914 00:39:59,603 --> 00:40:04,040 915 00:40:04,040 --> 00:40:05,230 printf, bine. 916 00:40:05,230 --> 00:40:09,120 Și observați cu CS50 IDE, și IDE frankly-- 917 00:40:09,120 --> 00:40:11,110 standuri pentru integrat Mediu de dezvoltare. 918 00:40:11,110 --> 00:40:14,110 Este doar un mod fantezist de a spune un program care vă ajută să programul. 919 00:40:14,110 --> 00:40:16,779 Face user friendly lucruri cum ar fi atunci când tastați o paranteză, 920 00:40:16,779 --> 00:40:18,320 vă oferă în mod automat de altă parte. 921 00:40:18,320 --> 00:40:20,760 Prezumția fiind că ești în cele din urmă de gând să doriți să tastați că, 922 00:40:20,760 --> 00:40:22,400 și, de asemenea o face cu citate. 923 00:40:22,400 --> 00:40:24,190 >> Deci, îmi place linia 23. 924 00:40:24,190 --> 00:40:26,400 99% din drum acolo. 925 00:40:26,400 --> 00:40:29,920 Cineva vrea să interveni în discuție cu un sfat? 926 00:40:29,920 --> 00:40:31,420 Am auzit virgulă din partea publicului. 927 00:40:31,420 --> 00:40:32,080 Bine. 928 00:40:32,080 --> 00:40:33,260 Astfel încât plasat. 929 00:40:33,260 --> 00:40:37,930 Și acum, am doar un pic consternare cu linia 21. 930 00:40:37,930 --> 00:40:41,370 Cum vrem să-și exprime acest lucru? 931 00:40:41,370 --> 00:40:43,370 Ce întrebare vrem pentru a cere, nu crezi? 932 00:40:43,370 --> 00:40:46,870 933 00:40:46,870 --> 00:40:50,330 Deci, anterior am pus întrebarea, dacă n este mai mare decât zero, a face acest lucru. 934 00:40:50,330 --> 00:40:51,870 Altfel, face asta. 935 00:40:51,870 --> 00:40:54,317 Deci, avem nevoie pentru a alege o întrebare de a cere aici. 936 00:40:54,317 --> 00:40:55,192 Audiența: [inaudibil] 937 00:40:55,192 --> 00:40:56,530 David J. MALAN: Bine. 938 00:40:56,530 --> 00:40:58,290 Deci, dacă n este egal cu zero. 939 00:40:58,290 --> 00:41:01,140 940 00:41:01,140 --> 00:41:02,100 Excelent. 941 00:41:02,100 --> 00:41:03,080 Așa că haideți să ne oprim aici. 942 00:41:03,080 --> 00:41:04,850 Vă mulțumesc foarte mult pentru acest înfruntând. 943 00:41:04,850 --> 00:41:10,890 Permiteți-mi să vă dau un pic de bine-meritata minge de stres, poate acolo. 944 00:41:10,890 --> 00:41:11,900 Deci suntem aproape acolo. 945 00:41:11,900 --> 00:41:14,790 De fapt, Lauren, dacă nu minte, permiteți-mi să fac o tweak aici, 946 00:41:14,790 --> 00:41:17,850 doar pentru a fi în concordanță cu mai ceea ce am văzut în Scratch, ce 947 00:41:17,850 --> 00:41:21,080 nu vreau să fac cu linii 21 și 24, doar pe din nou 948 00:41:21,080 --> 00:41:23,290 de modul în care a făcut acest lucru în Scratch, poate? 949 00:41:23,290 --> 00:41:24,230 >> Audiența: Mutare-l. 950 00:41:24,230 --> 00:41:25,605 >> David J. MALAN: Da, se deplasa în sus. 951 00:41:25,605 --> 00:41:30,260 Deci starea altceva, a treia, sau al patrulea, al cincilea sau, sau sucursale finală, 952 00:41:30,260 --> 00:41:34,100 ar trebui să vină într-adevăr după aceea, Si acesta este doar prin convenție, 953 00:41:34,100 --> 00:41:36,047 doar pentru că dacă vrei. 954 00:41:36,047 --> 00:41:37,380 Deci, am nevoie pentru a face acest tweak. 955 00:41:37,380 --> 00:41:39,660 Și am nevoie pentru a pune meu bretele cret aici. 956 00:41:39,660 --> 00:41:42,700 Și acum, acest program va compila. 957 00:41:42,700 --> 00:41:46,140 Suntem atât de aproape, dar nu e un bug foarte, foarte subtil. 958 00:41:46,140 --> 00:41:47,200 Să vedem ce se întâmplă. 959 00:41:47,200 --> 00:41:49,660 >> În primul rând, permiteți-mi să mergeți mai departe și micșorare. 960 00:41:49,660 --> 00:41:53,405 Am de gând să merg mai departe și tip face Condition Zero. 961 00:41:53,405 --> 00:41:55,070 Oh, am mințit. 962 00:41:55,070 --> 00:41:58,760 Acum compilator este de fapt destul de inteligent. 963 00:41:58,760 --> 00:42:00,950 Și eu nu înțeleg cu adevărat e mesaj de eroare. 964 00:42:00,950 --> 00:42:04,310 Folosind rezultatul unei misiuni ca o condiție fără paranteze, 965 00:42:04,310 --> 00:42:05,740 este aparent rău. 966 00:42:05,740 --> 00:42:07,100 Dar ce înseamnă asta? 967 00:42:07,100 --> 00:42:10,860 >> Ei bine, din nou, în căutarea pentru modele în cod pe care le-am văzut înainte, 968 00:42:10,860 --> 00:42:16,640 ceea ce este de fapt linia 17 face, chiar dacă Lauren destinat ușor 969 00:42:16,640 --> 00:42:18,790 altfel? 970 00:42:18,790 --> 00:42:19,290 Da. 971 00:42:19,290 --> 00:42:21,565 >> Audiența: [inaudibil] 972 00:42:21,565 --> 00:42:22,440 David J. MALAN: Da. 973 00:42:22,440 --> 00:42:26,610 Deci amintesc semnul egal, aparent cum l-am folosit înainte, nu este egal. 974 00:42:26,610 --> 00:42:29,240 A atribuirii, de la dreapta la stânga. 975 00:42:29,240 --> 00:42:33,810 Deci linia 17 în acest moment este o condiție, și este 976 00:42:33,810 --> 00:42:37,890 executarea de cod în interiorul paranteze, dar în momentul în care codul execută, 977 00:42:37,890 --> 00:42:42,140 ceea ce se întâmplă cu valoarea zero? 978 00:42:42,140 --> 00:42:45,250 Ce se întâmplă cu valoarea n? 979 00:42:45,250 --> 00:42:46,810 Devenind zero. 980 00:42:46,810 --> 00:42:50,520 Deci, dacă n devine zero și din nou, ca pe săptămâna trecută, 981 00:42:50,520 --> 00:42:54,690 spunem că, în general, la zero este falsă și una este adevărat, 982 00:42:54,690 --> 00:42:57,410 sau da este una și nu este zero. 983 00:42:57,410 --> 00:42:59,590 Deci, adevărat și fals, una și 0. 984 00:42:59,590 --> 00:43:06,090 Dacă n ca liniei 17 a fost având în vedere valoarea 0, este zero adevărat? 985 00:43:06,090 --> 00:43:06,590 Nu. 986 00:43:06,590 --> 00:43:08,280 Prin definiție, zero, este falsă. 987 00:43:08,280 --> 00:43:10,860 Asta e convenția suntem O să se agațe de mișcare înainte. 988 00:43:10,860 --> 00:43:17,320 Deci, va linii 18, 19, și 20 se aplică vreodată acum, în mod logic? 989 00:43:17,320 --> 00:43:18,320 Ele nu pot. 990 00:43:18,320 --> 00:43:21,640 Așa că am pus întrebarea dar nu destul de precis, 991 00:43:21,640 --> 00:43:25,620 și nu ar ști acest lucru, cu excepția cazului l-ați văzut, soluția în C 992 00:43:25,620 --> 00:43:29,610 este atunci când doriți să-și exprime egalitate, spui egali egal. 993 00:43:29,610 --> 00:43:33,140 Deci, semnul egal a fost deja folosit prin cesiune, de la dreapta la stânga. 994 00:43:33,140 --> 00:43:35,110 Egal egal mijloace egal. 995 00:43:35,110 --> 00:43:37,950 Și dacă vrei cu adevărat mintea ta care urmează să fie îndoit, în JavaScript și PHP, 996 00:43:37,950 --> 00:43:40,490 nu e egal cu egal egali, care Adică totul altceva, 997 00:43:40,490 --> 00:43:41,990 dar vom ajunge la asta, înainte de mult timp. 998 00:43:41,990 --> 00:43:45,760 >> Deci, acest lucru este un fix simplu, dar dau seama super usor de a face această greșeală, 999 00:43:45,760 --> 00:43:48,700 și apoi de mirare și lupta pentru minute, dacă nu o oră, 1000 00:43:48,700 --> 00:43:51,490 de ce este codul meu nu de executare, ca am de gând? 1001 00:43:51,490 --> 00:43:54,140 Este pentru că nu i-ai spus ea exact ceea ce ai vrut să spui. 1002 00:43:54,140 --> 00:43:56,450 Astfel că a fost aproape perfectă, și a fost grozav 1003 00:43:56,450 --> 00:44:00,760 că dat peste aceste două mici lucruri pentru că acum, dacă le repara, 1004 00:44:00,760 --> 00:44:06,240 și fac să Condition Zero dot slash Condition Zero, 1005 00:44:06,240 --> 00:44:07,490 Aș dori un număr întreg, vă rugăm. 1006 00:44:07,490 --> 00:44:08,090 Sa vedem. 1007 00:44:08,090 --> 00:44:09,160 Nu. 1008 00:44:09,160 --> 00:44:10,740 Va să mă forțeze să o fac. 1009 00:44:10,740 --> 00:44:11,990 Deci 42. 1010 00:44:11,990 --> 00:44:13,590 Am luat un număr pozitiv. 1011 00:44:13,590 --> 00:44:16,470 Deci, acum cum am dovedesc acest program corect? 1012 00:44:16,470 --> 00:44:19,990 Dacă ești un matematician, nu poți într-adevăr demonstra acest lucru prin încercare și eroare, 1013 00:44:19,990 --> 00:44:20,490 corect? 1014 00:44:20,490 --> 00:44:23,180 Puteți nu doar o dovadă de exemplu, dar cel puțin 1015 00:44:23,180 --> 00:44:25,494 ca un programator nu suntem O să încerc să dovedească acum 1016 00:44:25,494 --> 00:44:27,660 că aceasta este de fapt corect, dar eu ar fi trebuit probabil 1017 00:44:27,660 --> 00:44:29,470 testa unele cazuri reprezentative. 1018 00:44:29,470 --> 00:44:31,070 >> Am testat 42. 1019 00:44:31,070 --> 00:44:33,030 Am putut testa 43. 1020 00:44:33,030 --> 00:44:34,910 Am putut testa 44. 1021 00:44:34,910 --> 00:44:35,640 Încercare 45. 1022 00:44:35,640 --> 00:44:36,140 Corect? 1023 00:44:36,140 --> 00:44:37,860 Dar am putea face acest lucru mult timp. 1024 00:44:37,860 --> 00:44:39,925 Ceea ce ar fi ceva mai mult cazuri interesante pentru a încerca? 1025 00:44:39,925 --> 00:44:41,050 Audiența: [neauzit] zero. 1026 00:44:41,050 --> 00:44:41,740 David J. MALAN: Deci zero. 1027 00:44:41,740 --> 00:44:42,297 Cu siguranță. 1028 00:44:42,297 --> 00:44:44,880 Si bine, avem de data asta, Vă mulțumim pentru cod nou lui Lauren. 1029 00:44:44,880 --> 00:44:46,213 Ce este un alt caz bine pentru a încerca? 1030 00:44:46,213 --> 00:44:47,320 Audiența: unul negativ. 1031 00:44:47,320 --> 00:44:50,070 >> David J. MALAN: negativ, și Poate ceva un pic mai mare, 1032 00:44:50,070 --> 00:44:52,617 Deci, poate negativ 42, dar, în general, atunci când 1033 00:44:52,617 --> 00:44:54,450 testarea programelor dumneavoastră merge mai departe, esti 1034 00:44:54,450 --> 00:44:56,325 O să vreau să mă gândesc pentru tine, ca ceea ce 1035 00:44:56,325 --> 00:44:58,050 sunt cazurile fundamentale diferite. 1036 00:44:58,050 --> 00:45:01,720 Și îndrăznesc să spun un caz negativ, un caz pozitiv, și un caz de zero 1037 00:45:01,720 --> 00:45:03,365 destul de mult runde astea. 1038 00:45:03,365 --> 00:45:04,990 Să ne uităm la o variantă de acest lucru, deși. 1039 00:45:04,990 --> 00:45:06,930 Condiții unul. 1040 00:45:06,930 --> 00:45:11,224 Aceasta este o soluție corectă aici, astfel încât veți vedea două și on-line, 1041 00:45:11,224 --> 00:45:13,390 dacă te plimbi prin walkthroughs, va în general 1042 00:45:13,390 --> 00:45:18,090 incrementa acestea trepte până când vom obține exact abordarea corectă. 1043 00:45:18,090 --> 00:45:20,070 Ce dacă am vrut să întreb două întrebări în același timp? 1044 00:45:20,070 --> 00:45:22,200 >> Lasă-mă să deschid acest loc. 1045 00:45:22,200 --> 00:45:26,740 Non-comutator, din motive vom vedea un alt timp. 1046 00:45:26,740 --> 00:45:29,610 Ce este nou punct de vedere sintactic aici? 1047 00:45:29,610 --> 00:45:32,760 Mă joc în prezent, un joc în cazul în care computerul este de a spune 1048 00:45:32,760 --> 00:45:35,550 mi, da-mi un număr întreg între unul și 10, 1049 00:45:35,550 --> 00:45:37,180 și apoi eu judec intrare utilizatorului. 1050 00:45:37,180 --> 00:45:39,180 În limba engleză, pe baza codul pe care îl vedeți aici 1051 00:45:39,180 --> 00:45:41,530 în albastru, ceea ce este acest program faci? 1052 00:45:41,530 --> 00:45:44,256 1053 00:45:44,256 --> 00:45:46,380 Audiența: [inaudibil] ales un număr mare sau mic. 1054 00:45:46,380 --> 00:45:46,484 David J. MALAN: Da. 1055 00:45:46,484 --> 00:45:49,450 Este doar pronunța dacă Am luat o mare, sau mediu, 1056 00:45:49,450 --> 00:45:53,900 sau număr mic bazat pe o foarte Definiția arbitrară de mici, mijlocii, 1057 00:45:53,900 --> 00:45:58,510 și mare aici, dar o notificare sintaxa care este nou este aceasta. 1058 00:45:58,510 --> 00:46:02,340 Nu e nici mai puțin de int sau egală cu semna, sau mai mare sau egală de a semna, 1059 00:46:02,340 --> 00:46:05,430 în cazul în care unul este de peste alta, pe care le poate exprima în ca Microsoft Word. 1060 00:46:05,430 --> 00:46:08,180 Deci, într-un limbaj de programare te de obicei, face doar două personaje, 1061 00:46:08,180 --> 00:46:09,450 unul după altul. 1062 00:46:09,450 --> 00:46:12,695 Și ce face acest probabil reprezintă, ampersand ampersand. 1063 00:46:12,695 --> 00:46:13,570 Audiența: [inaudibil] 1064 00:46:13,570 --> 00:46:13,680 David J. MALAN: Da. 1065 00:46:13,680 --> 00:46:16,910 Aceasta înseamnă doar și pentru că dovedește că autorii C 1066 00:46:16,910 --> 00:46:19,120 a folosit un singur ampersand, care s-ar putea gândi 1067 00:46:19,120 --> 00:46:22,430 ar fi perfect pentru a noțiunii de și, este deja folosit, 1068 00:46:22,430 --> 00:46:27,300 ampersand ampersand astfel de fapt surprinde cazul ne doresc de fapt. 1069 00:46:27,300 --> 00:46:30,610 >> Deci, haideți să acum da peste două lucruri. 1070 00:46:30,610 --> 00:46:32,640 Lasă-mă să mergeți mai departe și să se deschidă unul. 1071 00:46:32,640 --> 00:46:36,590 Ceva care este un pic îngrijorător. 1072 00:46:36,590 --> 00:46:37,970 Imprecizie punct c. 1073 00:46:37,970 --> 00:46:40,260 Permiteți-mi să introducă două lucruri aici. 1074 00:46:40,260 --> 00:46:44,720 Unul, observați că putem face matematica, precum la fel ca înainte, atunci când 1075 00:46:44,720 --> 00:46:47,797 am făcut plus de două numere, x și y. 1076 00:46:47,797 --> 00:46:49,380 Ce este acest program aparent faci? 1077 00:46:49,380 --> 00:46:52,140 Nu am o comentat încă, și am introdus la sută f, 1078 00:46:52,140 --> 00:46:55,720 dar i-am spus mai devreme repede sută f înseamnă punctul plutitoare 1079 00:46:55,720 --> 00:46:56,970 valoare, care este numărul real de. 1080 00:46:56,970 --> 00:46:59,520 Ceva cu un zecimal Punct, care nu este un număr întreg. 1081 00:46:59,520 --> 00:47:02,270 Ce crezi că acest program este încercând să-mi arate pe ecran? 1082 00:47:02,270 --> 00:47:05,060 1083 00:47:05,060 --> 00:47:06,050 Da? 1084 00:47:06,050 --> 00:47:07,550 Audiența: Rezultatul unul peste 10. 1085 00:47:07,550 --> 00:47:07,780 David J. MALAN: Da. 1086 00:47:07,780 --> 00:47:09,680 Care este rezultatul unuia împărțit la 10. 1087 00:47:09,680 --> 00:47:12,721 Corect, pentru că voi toți aveți, probabil, crescut știind că unul peste 10 1088 00:47:12,721 --> 00:47:14,502 este ce? 1089 00:47:14,502 --> 00:47:16,220 Da, e doar 1/10 sau 0.1. 1090 00:47:16,220 --> 00:47:16,720 Corect? 1091 00:47:16,720 --> 00:47:19,010 Deci, haideți să vedem ce este de fapt acest lucru. 1092 00:47:19,010 --> 00:47:21,010 Așa că lasă-mă să merg mai departe și de a salva acest lucru. 1093 00:47:21,010 --> 00:47:21,970 Lasă-mă să merg aici. 1094 00:47:21,970 --> 00:47:26,360 Face imprecizie dot slash imprecizie, și preaviz, de asemenea, 1095 00:47:26,360 --> 00:47:29,380 intr-un mediu Linux, nu trebuie trebuie să tastați în imprecizie și să ia 1096 00:47:29,380 --> 00:47:30,010 toată ziua. 1097 00:47:30,010 --> 00:47:32,910 În general, dacă te-a lovit Tab, aceasta va termina gândul tău pentru tine, 1098 00:47:32,910 --> 00:47:36,660 bazate pe cuvintele care sunt disponibil în directorul curent. 1099 00:47:36,660 --> 00:47:37,160 BINE. 1100 00:47:37,160 --> 00:47:37,970 Deci ai avut dreptate. 1101 00:47:37,970 --> 00:47:41,239 Unul împărțit la 10 este, de fapt, 0.1. 1102 00:47:41,239 --> 00:47:42,280 Dar eu sunt un pic curios. 1103 00:47:42,280 --> 00:47:44,196 Și se pare printf sprijină unele caracteristici 1104 00:47:44,196 --> 00:47:48,700 prin care puteți specifica mai mult de numărul implicit de zecimale. 1105 00:47:48,700 --> 00:47:52,140 Deci, dacă vreau să văd 10 zecimal puncte pot face la sută, 1106 00:47:52,140 --> 00:47:55,510 pentru simbolul substituent, dot 10 pentru, da-mi 10 puncte zecimale, 1107 00:47:55,510 --> 00:47:58,140 și apoi încă în virgulă mobilă valoare, și, ca o parte, 1108 00:47:58,140 --> 00:48:01,550 ceea ce este acest backslash n Se pare ca tot ajutorul? 1109 00:48:01,550 --> 00:48:03,450 Se pare că e un Simbol pentru o nouă linie. 1110 00:48:03,450 --> 00:48:05,970 Este modul foarte explicit de a spune la computer, 1111 00:48:05,970 --> 00:48:08,759 muta cursorul la următoarea line după ce ați terminat. 1112 00:48:08,759 --> 00:48:10,800 Și vom vedea ce se întâmplă atunci când nu facem asta. 1113 00:48:10,800 --> 00:48:12,430 >> Lasă-mă să recompilați fac imprecizie. 1114 00:48:12,430 --> 00:48:15,320 1115 00:48:15,320 --> 00:48:18,356 Acum dot slash imprecizie. 1116 00:48:18,356 --> 00:48:18,930 BINE. 1117 00:48:18,930 --> 00:48:19,780 Încă drept. 1118 00:48:19,780 --> 00:48:21,512 Unul împărțit la 10. 1119 00:48:21,512 --> 00:48:23,220 Acum Primesc o pic curios, totuși. 1120 00:48:23,220 --> 00:48:27,599 Ce se întâmplă dacă mă uit 20 zecimal subliniază, recompilați, reluare, 1121 00:48:27,599 --> 00:48:29,390 și, ca o paranteza pentru viteză, puteți utiliza, de asemenea 1122 00:48:29,390 --> 00:48:31,800 sus și jos pentru a parcurge istoricul, 1123 00:48:31,800 --> 00:48:35,476 astfel încât să nu trebuie să țină dactilografiate aceste comenzi, introduceți. 1124 00:48:35,476 --> 00:48:36,910 Huh. 1125 00:48:36,910 --> 00:48:39,220 Nu am învățat că, în școala primară. 1126 00:48:39,220 --> 00:48:43,260 Bine, așa că lasă-mă să vezi ca 29 locuri afară. 1127 00:48:43,260 --> 00:48:44,300 Poate e doar o întâmplare. 1128 00:48:44,300 --> 00:48:46,907 Poate calculatorul meu acționează ciudat. 1129 00:48:46,907 --> 00:48:47,990 Asta nu e un lucru, nu? 1130 00:48:47,990 --> 00:48:50,300 Este face ceva determinist. 1131 00:48:50,300 --> 00:48:53,410 Deci, asigurați-imprecizie. 1132 00:48:53,410 --> 00:48:54,890 OK, care este dat peste cap. 1133 00:48:54,890 --> 00:48:57,620 Deci, ce se întâmplă? 1134 00:48:57,620 --> 00:49:00,160 >> Deci, se pare că dumneavoastră profesor a fost culcat 1135 00:49:00,160 --> 00:49:03,900 să vă tot acest timp pentru motive pe care vom vedea în scurt timp. 1136 00:49:03,900 --> 00:49:05,569 Dar să se termine cu un alt program de. 1137 00:49:05,569 --> 00:49:07,860 Aceasta este un pic de programe cineva a scris acum câțiva ani, 1138 00:49:07,860 --> 00:49:08,990 și este de fapt parte a unui concurs. 1139 00:49:08,990 --> 00:49:11,198 Nimeni nu scrie de fapt cod așa, și dacă faci, 1140 00:49:11,198 --> 00:49:12,880 aceasta este o problemă stilistic. 1141 00:49:12,880 --> 00:49:14,660 Dar oamenii fac asta pentru lauda drepturi. 1142 00:49:14,660 --> 00:49:17,260 Pentru a scrie cele mai confuze Programul cauta că 1143 00:49:17,260 --> 00:49:19,110 face totuși ceva interesant. 1144 00:49:19,110 --> 00:49:23,930 Și nota m-am gândit că vom lăsa pe astăzi, înainte de a ne Colton joaca aici, 1145 00:49:23,930 --> 00:49:27,840 este de a rula acest program, care, chiar și în doar folosind 1146 00:49:27,840 --> 00:49:31,450 C în acest bazate pe text- mediu, ne dă acest. 1147 00:49:31,450 --> 00:49:32,264 La naiba. 1148 00:49:32,264 --> 00:49:34,930 >> [Râsete] 1149 00:49:34,930 --> 00:49:36,800 >> Așteptare. 1150 00:49:36,800 --> 00:49:39,340 [Inaudibil] c bord l m. 1151 00:49:39,340 --> 00:49:42,885 Vei vedea magice incantație care vom vedea în scurt timp. 1152 00:49:42,885 --> 00:49:45,780 [Inaudibil] regulă. 1153 00:49:45,780 --> 00:49:51,592 Iar acum puteți chiar face lucruri de genul asta. 1154 00:49:51,592 --> 00:49:52,340 Asta e. 1155 00:49:52,340 --> 00:49:56,410 Pentru CS50 noi, veți vedea vineri. 1156 00:49:56,410 --> 00:49:58,910 >> [MUSIC JOC] 1157 00:49:58,910 --> 00:52:38,390 1158 00:52:38,390 --> 00:52:41,440 >> [Aplauze] 1159 00:52:41,440 --> 00:52:42,812