1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> David J. MALAN: Deci asta este CS50. 3 00:00:13,800 --> 00:00:18,970 Și acest lucru a fost CS50 propriu Colton Ogden, pentru mai multe de care muzica se poate 4 00:00:18,970 --> 00:00:22,820 descărca de la soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Așa că astăzi ne vom concentra tot mai mult pe arta de programare. 6 00:00:26,690 --> 00:00:28,980 Și luăm de unde am plecat săptămâna trecută, concentrându-se 7 00:00:28,980 --> 00:00:31,660 pe Scratch, care a fost aceasta limbaj de programare grafic. 8 00:00:31,660 --> 00:00:35,490 Și să ia lucrurile la un nivel inferior, folosind o programare mai tradițional 9 00:00:35,490 --> 00:00:38,420 Limba cunoscut sub numele de C. Dar de-a lungul drum, realizând 10 00:00:38,420 --> 00:00:40,730 că aceleași idei noi a vorbit despre vinerea trecută 11 00:00:40,730 --> 00:00:44,390 se va repeta, nu numai în acest limbajul C, dar în cele mai multe o dată la două 12 00:00:44,390 --> 00:00:46,350 că ne uităm la acest semestru. 13 00:00:46,350 --> 00:00:50,247 >> Așa că am numit acest lucru aici ce ultimul timp? 14 00:00:50,247 --> 00:00:51,830 Aceasta este reprezentativ pentru o declarație. 15 00:00:51,830 --> 00:00:53,080 Așa că am numit acest o declarație. 16 00:00:53,080 --> 00:00:54,100 Și face ceva. 17 00:00:54,100 --> 00:00:56,910 Este o instrucțiune care o calculator sau Scratch-ar putea executa. 18 00:00:56,910 --> 00:00:59,910 Și de acum înainte, să înceapă, de asemenea, de asteptare ceva de genul asta o funcție, 19 00:00:59,910 --> 00:01:02,070 pentru motive pe care le vom vedea în curând. 20 00:01:02,070 --> 00:01:03,681 >> Între timp, am văzut lucruri de genul asta. 21 00:01:03,681 --> 00:01:05,680 Și acestea sunt, în general, cunoscut ca ceea ce construim? 22 00:01:05,680 --> 00:01:06,240 >> Audiența: Buclă. 23 00:01:06,240 --> 00:01:06,860 >> David J. MALAN: Deci, o buclă. 24 00:01:06,860 --> 00:01:07,943 Deci, destul de simplu. 25 00:01:07,943 --> 00:01:09,470 Este pur și simplu face ceea ce spune. 26 00:01:09,470 --> 00:01:12,210 Și în Scratch, dacă doriți să ghiftui mai multe piese de puzzle în acolo, 27 00:01:12,210 --> 00:01:13,950 piesa va crește pentru a se potrivi. 28 00:01:13,950 --> 00:01:16,790 Și vom vedea în C, care putem face același lucru. 29 00:01:16,790 --> 00:01:20,000 >> Un alt tip de buclă, deși, în Scratch ar putea fi pentru totdeauna, 30 00:01:20,000 --> 00:01:21,820 sau e vreo număr de alte abordari. 31 00:01:21,820 --> 00:01:24,150 Dar să aruncăm o mai uite generalist, cu o fata 32 00:01:24,150 --> 00:01:27,402 asta e probabil destul de familiar, la bucle mai general. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: O lucru pe care computerele 34 00:01:29,110 --> 00:01:31,860 sunt foarte bun la este repetarea comenzi. 35 00:01:31,860 --> 00:01:33,910 Ca o persoană, te-ar lua într-adevăr plictisit dacă 36 00:01:33,910 --> 00:01:36,730 a trebuit să facă același lucru de multe ori într-un rând. 37 00:01:36,730 --> 00:01:40,530 Dar un calculator poate face același lucru milioane sau chiar miliarde de ori, 38 00:01:40,530 --> 00:01:43,290 și nu se plictisesc, și să fie capabil să efectueze asta foarte bine. 39 00:01:43,290 --> 00:01:45,650 >> Deci, de exemplu, dacă am a vrut să-și dorească toată lumea 40 00:01:45,650 --> 00:01:48,840 pe Facebook o zi de naștere fericită de a le trimite un e-mail, 41 00:01:48,840 --> 00:01:51,550 s-ar putea-mi ia mai mult de o secol pentru a scrie efectiv 42 00:01:51,550 --> 00:01:53,000 toate aceste e-mailuri la toată lumea. 43 00:01:53,000 --> 00:01:57,780 Dar, cu doar câteva linii de cod, pot au un sistem de a trimite un e-mail la toată lumea 44 00:01:57,780 --> 00:01:59,930 pe Facebook care doresc le-o zi de naștere fericită. 45 00:01:59,930 --> 00:02:02,730 Deci, asta e ceea ce buclele sunt și de ce ele sunt valoroase și ceva 46 00:02:02,730 --> 00:02:04,740 care computerele pot face foarte bine. 47 00:02:04,740 --> 00:02:05,630 >> David J. MALAN: Deci, dacă ai fost destinatarul 48 00:02:05,630 --> 00:02:07,820 a unora dintre lui CS50 și Spațiu Dropbox de întârziere, 49 00:02:07,820 --> 00:02:10,590 asta e de fapt exact ceea ce ne-am face, folosind cod destul de genul asta. 50 00:02:10,590 --> 00:02:12,600 În esență, avem o mare foaie de calcul în care 51 00:02:12,600 --> 00:02:15,016 oamenii au fost introducerea lor nume și adrese de e-mail. 52 00:02:15,016 --> 00:02:18,160 Și am scris un pic de cod care poate repeta peste acele adrese 53 00:02:18,160 --> 00:02:21,860 și scuipa adrese unice în cazul în care cineva a prezentat de mai multe ori. 54 00:02:21,860 --> 00:02:25,120 Și după aceea, vom trimite o e-mail automat de la bot CS50 lui, 55 00:02:25,120 --> 00:02:27,190 inclusiv codul de cupon. 56 00:02:27,190 --> 00:02:29,290 >> Acum, ne-am uitat, de asemenea, la acest construi ultima dată. 57 00:02:29,290 --> 00:02:33,100 Și aceasta este o anumită exemplu de ce? 58 00:02:33,100 --> 00:02:35,050 Deci, da, o expresie booleană. 59 00:02:35,050 --> 00:02:37,050 Și forma se înțelege pentru a surprinde la fel de bine. 60 00:02:37,050 --> 00:02:39,966 Toate aceste întrebări din formează adevărate sau false în Scratch 61 00:02:39,966 --> 00:02:41,590 va arata ceva de genul asta. 62 00:02:41,590 --> 00:02:43,200 Și noi numim aceasta o expresie booleană. 63 00:02:43,200 --> 00:02:46,170 Asta e adevărat sau fals, da sau nu. 64 00:02:46,170 --> 00:02:49,150 Este un mod de a răspunde la o întrebare. 65 00:02:49,150 --> 00:02:52,420 >> Și Între timp, puteți utiliza aceste Boolean expresii în interiorul de construcții 66 00:02:52,420 --> 00:02:54,720 ca acestea, care de Desigur sunt condiții 67 00:02:54,720 --> 00:02:57,259 sau sucursale, proverbial furci din drum. 68 00:02:57,259 --> 00:02:59,550 Și ei pot privi nu numai în acest fel, dar ele pot, de asemenea, 69 00:02:59,550 --> 00:03:02,080 au elses asociate cu acestea. 70 00:03:02,080 --> 00:03:05,820 Și tu poți avea de fapt un fel de trei furculiță în drum sau o cale de patru furculiță 71 00:03:05,820 --> 00:03:08,340 în drum, pur și simplu prin cuiburi aceste lucruri, 72 00:03:08,340 --> 00:03:10,510 după cum veți vedea în Scratch dacă nu ați făcut deja. 73 00:03:10,510 --> 00:03:13,550 Și, după cum puteți face în C, de asemenea. 74 00:03:13,550 --> 00:03:16,810 >> Să luăm un alt generalist uita-te la un alumnist, de asemenea, care 75 00:03:16,810 --> 00:03:21,490 s-ar putea prezenta o abordare diferită la aceste lucruri numite condiții. 76 00:03:21,490 --> 00:03:24,060 >> Bill Gates: Oamenii fac decizii în fiecare zi. 77 00:03:24,060 --> 00:03:27,530 De exemplu, înainte de a pleca afară te un fel de au un if care spune, 78 00:03:27,530 --> 00:03:31,480 daca ploua, atunci eu Trebuie să iau haina. 79 00:03:31,480 --> 00:03:36,820 Și calculatoarele sunt uimitoare odată ce decidă acestor tipuri de declarații, 80 00:03:36,820 --> 00:03:42,280 încât să poată executa în mod fiabil aceste lucruri la viteza de necrezut. 81 00:03:42,280 --> 00:03:48,240 Și astfel un program de calculator într-adevăr este un pic de matematică și unele 82 00:03:48,240 --> 00:03:53,050 dacă declarațiile în cazul în care decizia devine făcut. 83 00:03:53,050 --> 00:03:55,020 >> David J. MALAN: Deci, ca cum probabil știți, a fost 84 00:03:55,020 --> 00:03:57,880 oameni buni, cum ar fi Bill Gates, Paul Allen, și alții 85 00:03:57,880 --> 00:04:00,240 că într-adevăr a dat startul așa-numitul calculator personal 86 00:04:00,240 --> 00:04:01,990 revoluție în urmă cu câțiva ani. 87 00:04:01,990 --> 00:04:04,140 M-am gândit, înainte de a se arunca cu capul în unele Administrivia, 88 00:04:04,140 --> 00:04:09,920 ne-ar referi o poveste din Albuquerque, New Mexico Muzeul de Istorie Naturala 89 00:04:09,920 --> 00:04:13,650 și știința cazul în care unele dintre Bill Gates " și primele povestiri Paul Allen 90 00:04:13,650 --> 00:04:17,470 sunt povestit cum avem acum PC-urile de astăzi și Mac-uri și mai mult. 91 00:04:17,470 --> 00:04:22,390 Pentru aceasta, însă, avem nevoie de doi voluntari care au voci foarte bune narațiune 92 00:04:22,390 --> 00:04:23,735 pentru a citi un scenariu cu voce tare. 93 00:04:23,735 --> 00:04:25,530 >> Bine, ce zici de acolo. 94 00:04:25,530 --> 00:04:26,120 Hai sus. 95 00:04:26,120 --> 00:04:27,770 Și cum despre în față aici. 96 00:04:27,770 --> 00:04:28,340 Vino pe jos. 97 00:04:28,340 --> 00:04:29,600 Ocupați-vă locurile de aici. 98 00:04:29,600 --> 00:04:32,444 Ca voi veni, un cuplu de anunțuri administrative. 99 00:04:32,444 --> 00:04:34,360 secționare, procesul de a alege o secțiune, 100 00:04:34,360 --> 00:04:36,068 va începe în acest Miercuri până vineri. 101 00:04:36,068 --> 00:04:38,400 Mai multe despre faptul că această venire Miercuri în curs. 102 00:04:38,400 --> 00:04:41,770 >> Super secțiuni, între timp, sunt ceva pe care le oferim săptămâna viitoare 103 00:04:41,770 --> 00:04:45,310 prin care întreaga clasă este invitat pentru a participa la scară destul de mare 104 00:04:45,310 --> 00:04:47,690 secțiuni, una mai confortabil, unul mai puțin confortabil. 105 00:04:47,690 --> 00:04:51,340 Și vom anunța detaliile de care, de asemenea, mai târziu în această săptămână. 106 00:04:51,340 --> 00:04:53,310 >> Secțiuni Între timp, se, va începe 107 00:04:53,310 --> 00:04:57,241 în săptămâna a treia a cursului, indicele de la zero, ceea ce înseamnă că acestea sunt un cuplu de săptămâni 108 00:04:57,241 --> 00:04:57,740 afară. 109 00:04:57,740 --> 00:04:58,450 Deci, nu vă faceți griji. 110 00:04:58,450 --> 00:05:01,014 Tu încă nu s-au pierdut nimic de-a lungul acestor linii. 111 00:05:01,014 --> 00:05:03,930 Între timp, în același timp, dacă Pentru orice întrebări administrativ, 112 00:05:03,930 --> 00:05:08,120 eu și Devon și Gabe e-mail și Rob la această adresă aici. 113 00:05:08,120 --> 00:05:10,320 >> În cele din urmă, problema stabilit 0 este, desigur, afară. 114 00:05:10,320 --> 00:05:12,320 Este posibil să fi observat pe site-ul cursului. 115 00:05:12,320 --> 00:05:14,840 Ar trebui să vă ofere toate răspunsurile la întrebări 116 00:05:14,840 --> 00:05:18,250 s-ar putea avea de-a lungul drum pentru Noțiuni de bază cu setul de probleme. 117 00:05:18,250 --> 00:05:21,430 Dar, dacă vă aflați care are nevoie de o mână de ajutor, 118 00:05:21,430 --> 00:05:25,020 prin toate mijloacele participe la orele de birou, Luni, Marți, Miercuri, Joi 119 00:05:25,020 --> 00:05:27,290 din această săptămână, în seara în patru săli de mese. 120 00:05:27,290 --> 00:05:31,650 A se vedea că URL-ul acolo pentru informațiile de unde orelor de program trebuie să fie. 121 00:05:31,650 --> 00:05:34,000 >> Acum, să ne întâlnim nostru două persoane astăzi aici. 122 00:05:34,000 --> 00:05:34,740 Care e numele tău? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> David J. MALAN: Jay Paul, mă bucur să te cunosc. 125 00:05:36,880 --> 00:05:37,330 >> HIKARI: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> David J. MALAN: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> HIKARI: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> David J. MALAN: Hikari. 129 00:05:38,810 --> 00:05:39,790 Mă bucur să te cunosc, de asemenea. 130 00:05:39,790 --> 00:05:42,123 Jay Paul și Hikari au în fața lor pe aceste muzică 131 00:05:42,123 --> 00:05:45,100 se află două scripturi pe care le imprimate în această dimineață, de la New Mexico 132 00:05:45,100 --> 00:05:46,692 Muzeul de Istorie Naturală și Științei. 133 00:05:46,692 --> 00:05:48,400 Și ce m-am gândit Mi-ar face pe tavan 134 00:05:48,400 --> 00:05:52,830 se însoțească recitarea ta a scenariului și această istorie 135 00:05:52,830 --> 00:05:54,700 cu unele imagini vizuale, fără surprize. 136 00:05:54,700 --> 00:05:57,512 >> Și ce-am făcut în avans este prehighlight pe script-ul dvs. 137 00:05:57,512 --> 00:05:59,470 ceea ce ar trebui să citiți, și ceea ce ar trebui să citiți. 138 00:05:59,470 --> 00:06:00,920 Și vom esență, punctele doar alternative. 139 00:06:00,920 --> 00:06:03,211 Deci, este mai mult ca s-ar putea s-au făcut în clasa limba engleză. 140 00:06:03,211 --> 00:06:06,875 Asta e într-adevăr obliga publicul să creadă în povestea ta aici. 141 00:06:06,875 --> 00:06:07,600 Se poate? 142 00:06:07,600 --> 00:06:13,272 Deci, povestea este aici, avem un BASIC, și începe în Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: A fost iarnă, 1974, în Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 unde iernile pot fi rece. 145 00:06:20,240 --> 00:06:22,800 Un bărbos, cu părul lung colegiu dropout nume 146 00:06:22,800 --> 00:06:27,280 Paul Allen a fost drudging peste Harvard Square, absorbit în gândurile sale. 147 00:06:27,280 --> 00:06:31,050 Preocuparea sa principală în acele zile a fost cum să obțineți prietenul său, Bill Gates, 148 00:06:31,050 --> 00:06:34,974 să renunțe la școală și du-te în afaceri cu el. 149 00:06:34,974 --> 00:06:37,890 HIKARI: Cei doi au plecat deja printr-o serie de asociații de afaceri 150 00:06:37,890 --> 00:06:40,850 împreună, începând de la Lakeside școală în Seattle, unde 151 00:06:40,850 --> 00:06:45,220 care au fost plătite la timp calculator liber la testa un calculator PDP-10 la o ora locală 152 00:06:45,220 --> 00:06:46,580 Compania de partajare. 153 00:06:46,580 --> 00:06:50,930 Planul cel mai recent a fost să renunțe la școală și să formeze o companie de software. 154 00:06:50,930 --> 00:06:53,440 Allen a plecat de la Washington Universitatea de Stat. 155 00:06:53,440 --> 00:06:58,380 Dar, în ultimul moment, Gates a decis să rămânem cu Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: În acea zi, de trecere de la Harvard Square, Allen reperat ianuarie, 157 00:07:02,080 --> 00:07:07,530 1975 problema de Popular Electronics cu titlul de oprire pământ, 158 00:07:07,530 --> 00:07:11,900 Kit lume primul minicomputere pentru a rivaliza cu modele comerciale. 159 00:07:11,900 --> 00:07:14,430 Sub titlul a fost o imagine de o cutie mica 160 00:07:14,430 --> 00:07:16,160 împodobit cu lumini și switch-uri. 161 00:07:16,160 --> 00:07:19,770 Acesta a fost numit MITS Altair 8800. 162 00:07:19,770 --> 00:07:24,100 Și Allen știut că aceasta a fost ceea ce el a fost în căutarea pentru. 163 00:07:24,100 --> 00:07:26,350 >> HIKARI: zile de discuții au urmat. 164 00:07:26,350 --> 00:07:30,170 Allen și Gates au înțeles semnificație de Altair. 165 00:07:30,170 --> 00:07:32,480 Ei au vorbit de multe ori despre microprocesoare 166 00:07:32,480 --> 00:07:35,250 și așteptau să vadă ce se va face cu ei. 167 00:07:35,250 --> 00:07:39,770 Era un kit minicomputer pe capacul de populare Electronics. 168 00:07:39,770 --> 00:07:42,830 Se pare că a avut încă nici un software. 169 00:07:42,830 --> 00:07:46,830 Ei au imaginat o națiune de programatori descendent pe MITS. 170 00:07:46,830 --> 00:07:49,590 Și așa au numit Ed Roberts, șeful companiei, 171 00:07:49,590 --> 00:07:53,330 care pretind a avea o versiune a Limbaj de programare BASIC aproape gata 172 00:07:53,330 --> 00:07:54,710 pentru Altair. 173 00:07:54,710 --> 00:07:55,570 Ei nu au. 174 00:07:55,570 --> 00:07:58,910 Și Roberts trebuie să fi știut că nu a făcut. 175 00:07:58,910 --> 00:08:03,170 El a fost obtinerea de 10 apeluri pe zi de la oameni care au avut o BASIC aproape gata. 176 00:08:03,170 --> 00:08:05,570 Și răspunsul său stoc a fost, "prima persoana 177 00:08:05,570 --> 00:08:11,090 care apare cu un lucru BASIC devine contractul. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates și Allen văzusem niciodată un Altair. 179 00:08:13,910 --> 00:08:17,600 Ei nu au văzut chiar Intel 8080 microprocesor 180 00:08:17,600 --> 00:08:19,060 în centrul de Altair. 181 00:08:19,060 --> 00:08:21,470 Dar câțiva ani mai devreme Allen a scris un program de 182 00:08:21,470 --> 00:08:25,220 pe un calculator mainframe care emulat funcționarea unui Intel anterioare 183 00:08:25,220 --> 00:08:26,217 microprocesor. 184 00:08:26,217 --> 00:08:28,300 Și de această dată în jurul ei ar face același lucru. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> HIKARI: Cu un procesor Intel 8080 manual de partea lui, 187 00:08:34,380 --> 00:08:37,770 Allen așezat la o Calculator Harvard PDP-10 188 00:08:37,770 --> 00:08:42,010 și a scris emulator și software-ul instrumentele necesare pentru a face programarea. 189 00:08:42,010 --> 00:08:45,820 Între timp, Gates mai dus la cursuri și sa dedicat 190 00:08:45,820 --> 00:08:48,120 la proiectarea de bază, folosind fiecare truc 191 00:08:48,120 --> 00:08:53,130 știa pentru a obține mărimea jos de 4 kilobytes. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAUL: Out in Albuquerque, Ed Roberts a primit un telefon de la Gates 193 00:08:55,870 --> 00:08:59,754 cere detalii cu privire la modul în care Altair manipulate rutine specifice. 194 00:08:59,754 --> 00:09:01,170 Nimeni nu a cerut vreodată că înainte. 195 00:09:01,170 --> 00:09:02,670 Și Roberts a început să se intereseze. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> HIKARI: Odată cu dezvoltarea instrumente și design gata, 198 00:09:07,970 --> 00:09:10,780 Gates și Allen a scris codul de pe PDP-10, 199 00:09:10,780 --> 00:09:16,060 nominalizeze un alt student de la Harvard, Monte Davidoff, pentru a scrie rutine de matematica. 200 00:09:16,060 --> 00:09:19,450 După o noapte de finală programare, Allen luat pe un avion 201 00:09:19,450 --> 00:09:22,970 pentru a oferi BASIC lor la MITS. 202 00:09:22,970 --> 00:09:25,800 El a petrecut avionul plimbare îngrijorătoare. 203 00:09:25,800 --> 00:09:28,490 Și înapoi în Cambridge Gates a fost îngrijorătoare. 204 00:09:28,490 --> 00:09:32,100 Ei au testat BASIC lor și ea a lucrat pe emulator. 205 00:09:32,100 --> 00:09:35,444 Dar ce se întâmplă dacă emulator a fost greșit? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Așa cum avionul abordat Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen a dat seama că lor BASIC, acum îngrijit conținut 208 00:09:40,070 --> 00:09:42,460 pe o mică rolă de perforate bandă de hârtie, s-ar 209 00:09:42,460 --> 00:09:44,970 fi inutil fără o separat Programul, numit un încărcător, care 210 00:09:44,970 --> 00:09:47,550 ar spune Altair cum pentru a citi bandă de hârtie fiind 211 00:09:47,550 --> 00:09:49,620 introduse în mașină telex. 212 00:09:49,620 --> 00:09:52,970 El a scos carnețelul și rapid mâzgălite pe un program de încărcător 213 00:09:52,970 --> 00:09:56,819 în limbaj de asamblare, apoi manual tradus ca in 1 si 0 214 00:09:56,819 --> 00:09:57,985 Altair-ar înțelege. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> HIKARI: Allen se aștepta la o mic, companie curat, de înaltă tehnologie 217 00:10:03,830 --> 00:10:05,470 conduse de bărbați în costume de afaceri. 218 00:10:05,470 --> 00:10:09,210 Deci, el a fost surprins când Roberts sa întâlnit el la aeroport sa arate ca un ranch 219 00:10:09,210 --> 00:10:10,270 mână. 220 00:10:10,270 --> 00:10:12,070 Roberts a fost, de asemenea, surprins. 221 00:10:12,070 --> 00:10:16,340 Când el a renuntat la Harvard programator la un hotel scump, 222 00:10:16,340 --> 00:10:20,790 Allen a trebuit să mărturisesc că el nu a putut permite camerei. 223 00:10:20,790 --> 00:10:24,510 >> JAY PAUL: MITS, în sine, a fost situat într-un mall plin de praf. 224 00:10:24,510 --> 00:10:27,040 În interior pe un aglomerat banc de lucru a fost un Altair 225 00:10:27,040 --> 00:10:30,390 încărcat cu 5 kilobytes de memorie și conectate printr-un cablu 226 00:10:30,390 --> 00:10:32,030 la o mașină telex. 227 00:10:32,030 --> 00:10:37,200 Roberts si inginer sef, Bill Yates, a așteptat așteptând 228 00:10:37,200 --> 00:10:40,660 ca Allen toggled încărcător lui Programul în Altair. 229 00:10:40,660 --> 00:10:44,980 Terminalul la început lucrând ca tras banda de hârtie prin intermediul cititorului de bandă. 230 00:10:44,980 --> 00:10:47,215 A fost nevoie, probabil, 15 minute pentru a încărca programul. 231 00:10:47,215 --> 00:10:52,110 Apoi, terminalul la tipărită brusc o promptă memorie, apoi un prompt gata, 232 00:10:52,110 --> 00:10:55,340 și Allen a început să tastați Comenzile un test de câteva. 233 00:10:55,340 --> 00:10:57,400 Spre uimirea tuturor, software-ul a lucrat. 234 00:10:57,400 --> 00:10:58,525 Au fost bug-uri, desigur. 235 00:10:58,525 --> 00:11:02,070 Dar lucrul cel mai important a fost lucrat. 236 00:11:02,070 --> 00:11:06,570 >> HIKARI: Mai târziu, în drumul lor spre o 3.00 dolari masa la Pancho, o viespe a zburat 237 00:11:06,570 --> 00:11:10,470 în fereastra de pick-up camion și înțepat Allen pe braț. 238 00:11:10,470 --> 00:11:13,070 Dar la acel moment nimic ar putea strica starea de spirit. 239 00:11:13,070 --> 00:11:17,210 Altair avea acum BASIC sale, primul software-ul comercial pentru o casă 240 00:11:17,210 --> 00:11:23,260 calculator, realizat de Paul Allen și Bill Gates, a face afaceri ca Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> David J. MALAN: Multe datorită cei doi cititori. 242 00:11:25,336 --> 00:11:30,690 >> [Aplauze] 243 00:11:30,690 --> 00:11:32,520 >> David J. MALAN: Acum aveți alegerea ta, 244 00:11:32,520 --> 00:11:35,880 înainte de a pleca, de o stralucitoare sau o strălucire în dark-- oh, 245 00:11:35,880 --> 00:11:40,810 aștepta o secundă, Asteapta-- stralucitoare și o strălucire în elefant întuneric 246 00:11:40,810 --> 00:11:42,534 din CS50 propriu Cheng Gong. 247 00:11:42,534 --> 00:11:43,450 HIKARI: Ah, mulțumesc. 248 00:11:43,450 --> 00:11:45,324 David J. MALAN: Toate Bine, vă mulțumesc foarte mult. 249 00:11:45,324 --> 00:11:49,855 [Aplauze] 250 00:11:49,855 --> 00:11:51,105 David J. MALAN: poveste Atât de adevărat. 251 00:11:51,105 --> 00:11:54,380 Acest lucru este de a spune că toate acestea mașini și ușurința cu care ne-am 252 00:11:54,380 --> 00:11:56,270 le folosesc acum și să ia de la sine, într-adevăr 253 00:11:56,270 --> 00:12:00,070 a început aici, la doar câțiva pași din acest teatru real. 254 00:12:00,070 --> 00:12:03,930 Și acum azi, daca nu ai fost, acest lucru este Maxwell Dworkin, computerul 255 00:12:03,930 --> 00:12:05,810 științe clădire, De asemenea, în jurul valorii de colț. 256 00:12:05,810 --> 00:12:09,760 Și la etajul al doilea al acestui clădire nu atârnă de trei pagini 257 00:12:09,760 --> 00:12:12,740 din codul sursă original, care Bill Gates și Paul Allen a scris. 258 00:12:12,740 --> 00:12:14,770 De fapt, dacă utilizarea măriți în puteti vedea nu numai 259 00:12:14,770 --> 00:12:17,350 numele lor în tip original, dar, de asemenea, 260 00:12:17,350 --> 00:12:22,100 semnăturile lor, care au împodobit-o câțiva ani în urmă, atunci când a vizitat ultima. 261 00:12:22,100 --> 00:12:25,800 >> Dar ceea ce a fost deosebit de convingatoare despre acest lucru este ceea ce ei stabilite de a face 262 00:12:25,800 --> 00:12:29,760 a fost de a scrie un program care ar fi permite altor persoane să scrie 263 00:12:29,760 --> 00:12:30,950 propriile programe. 264 00:12:30,950 --> 00:12:34,280 La momentul tot ce era cu această mașină Altair făcut de MITS. 265 00:12:34,280 --> 00:12:40,020 Și tot ce a fost nevoie de un fel de făcându-l ușor pentru pasionati si oameni 266 00:12:40,020 --> 00:12:45,300 ca noi în această cameră de fapt programul de că fără a fi necesar a înțelege 267 00:12:45,300 --> 00:12:49,060 Cod de asamblare, sau mașină cod, sau Doamne ferește, 0 si 1. 268 00:12:49,060 --> 00:12:51,190 Noi programatori, cum ar fi cei din această sală, ne-am 269 00:12:51,190 --> 00:12:54,070 doresc să fie în măsură să-și exprime noi mult mai mult ca cod pseudo 270 00:12:54,070 --> 00:12:57,330 chiar dacă este un pic mai mult nit pretentios decat am vorbit săptămâna trecută. 271 00:12:57,330 --> 00:13:00,970 Noi nu vrem să scrie cod ca aceasta, care Paul Allen și Bill Gates a făcut. 272 00:13:00,970 --> 00:13:04,850 Noi, în schimb, vrea să scrie cod care arata un pic mai ușor de utilizat. 273 00:13:04,850 --> 00:13:07,150 >> Acum, aceasta este o limbă cunoscută sub numele de bază. 274 00:13:07,150 --> 00:13:11,497 Și numerele de linie sunt ceea ce folosi pentru a număra pur și simplu liniile de cod 275 00:13:11,497 --> 00:13:12,330 care scrii. 276 00:13:12,330 --> 00:13:14,038 Noi nu trebuie nici măcar să face ca aceste zile. 277 00:13:14,038 --> 00:13:16,060 Dar puteți vedea aici cum PRINT "Bună ziua, lume" 278 00:13:16,060 --> 00:13:18,660 ar într-adevăr probabil imprima doar asta. 279 00:13:18,660 --> 00:13:22,710 Și astfel ceea ce Bill si Paul au fost permite oamenilor să scrie cod ca aceasta 280 00:13:22,710 --> 00:13:27,240 în schimb de-- dacă aruncăm o privire la informatică wall-- cod de genul asta. 281 00:13:27,240 --> 00:13:29,290 >> De fapt, CS50 recent avut posibilitatea 282 00:13:29,290 --> 00:13:32,540 să se așeze cu profesorul Harry Lewis în Science departamentul de Informatică, care 283 00:13:32,540 --> 00:13:34,640 de fapt, a învățat Bill Gates în urmă cu câțiva ani, 284 00:13:34,640 --> 00:13:38,460 și stă aici în fața cele trei pagini de fragmente. 285 00:13:38,460 --> 00:13:39,560 Să aruncăm o privire. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: Ceea ce avem aici este o lista cu o bucată devreme de software 287 00:13:45,520 --> 00:13:50,240 scris de Bill Gates și Paul Allen, fondatorii Microsoft. 288 00:13:50,240 --> 00:13:52,570 Deci, codul este interesant din două motive. 289 00:13:52,570 --> 00:13:55,480 Mai întâi de toate, a devenit Primul produs Microsoft, 290 00:13:55,480 --> 00:14:01,810 care a fost un interpret de limbajul de programare BASIC. 291 00:14:01,810 --> 00:14:04,940 Și în al doilea rând, aceasta a fost una dintre primele încercări 292 00:14:04,940 --> 00:14:10,580 pentru a crea un interpret așa obișnuit oamenii ar putea folosi calculatoarele personale. 293 00:14:10,580 --> 00:14:12,670 >> Deci, Bill Gates a fost un student la Harvard. 294 00:14:12,670 --> 00:14:14,820 Am început să predea la Harvard în 1974. 295 00:14:14,820 --> 00:14:16,560 Acest lucru a fost făcut în 1975. 296 00:14:16,560 --> 00:14:20,180 Așa a fost la inceputul carierei sale și la începutul carierei mele. 297 00:14:20,180 --> 00:14:23,790 De fapt am învățat Bill în un curs in aceasta perioada. 298 00:14:23,790 --> 00:14:27,130 Paul Allen nu a fost un Harvard elev, dar el 299 00:14:27,130 --> 00:14:31,020 a fost un liceu coleg de clasă de Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Dacă vii si uita-te la listare, veți 301 00:14:33,740 --> 00:14:36,230 de fapt găsi un al treilea nume, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 care a fost coleg de clasa lui Gates aici la Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, deci aici este o comentariu interesant aici. 304 00:14:41,340 --> 00:14:47,150 Ea spune: "În 4K poate șterge rădăcină pătrată dar pentru bucle ar trebui să funcționeze în continuare. " 305 00:14:47,150 --> 00:14:53,080 OK, deci ceea ce înseamnă că este faptul că există au fost două moduri de a compila acest program. 306 00:14:53,080 --> 00:14:57,860 Unul a fost pentru a rula pe o versiune din acest computer Altair 307 00:14:57,860 --> 00:15:04,310 care a avut numai cuvinte de 4K memorie, 4096 de cuvinte de memorie. 308 00:15:04,310 --> 00:15:07,050 Dar versiunea mare a avut 8K. 309 00:15:07,050 --> 00:15:09,770 Și ce acesta spune că este că în versiunea 4K 310 00:15:09,770 --> 00:15:12,770 trebuia să ștergeți unele cod pentru a se potrivi. 311 00:15:12,770 --> 00:15:14,790 Iar unul dintre lucrurile care ar trebui eliminată 312 00:15:14,790 --> 00:15:16,290 ar fi rădăcină pătrată din rutina. 313 00:15:16,290 --> 00:15:20,360 Dar se pare că pentru bucle ar trebui încă 314 00:15:20,360 --> 00:15:26,392 funcționează chiar și atunci când compilarea jos pentru doar versiunea 4K a calculatorului. 315 00:15:26,392 --> 00:15:29,350 David J. MALAN: Deci, una dintre temele, cum vom vedea în informatică, 316 00:15:29,350 --> 00:15:31,430 este această noțiune de stratificare și abstractizare, 317 00:15:31,430 --> 00:15:34,670 și într-adevăr în picioare pe umeri de oameni care au venit înaintea noastră, nu 318 00:15:34,670 --> 00:15:37,890 spre deosebire de unele dintre Bill Gates și Paul Allen narativ aici. 319 00:15:37,890 --> 00:15:40,080 Și ce înseamnă acest lucru este că astăzi putem lua pentru 320 00:15:40,080 --> 00:15:43,490 acordată că lucrurile sunt de fapt mai ușor pentru noi să scrie cod. 321 00:15:43,490 --> 00:15:47,170 Într-adevăr cod, așa cum am spus, vineri, este cunoscut mai multe punct de vedere tehnic sub formă de cod sursă. 322 00:15:47,170 --> 00:15:52,210 Și este acest engleza ca sintaxă care este mai buna si mai bine definit 323 00:15:52,210 --> 00:15:55,480 decât ceva de genul cod pseudo, pentru care nu există o definiție oficială. 324 00:15:55,480 --> 00:15:58,320 >> Și astăzi, ce vom să se concentreze asupra este codul sursă 325 00:15:58,320 --> 00:16:01,010 care arata ca acesta, care desigur, la prima vedere 326 00:16:01,010 --> 00:16:02,690 Pare complet criptic. 327 00:16:02,690 --> 00:16:08,540 Și sincer, e mult mai estetic complex decât programul de bază este. 328 00:16:08,540 --> 00:16:13,300 Toate acest program face, amintesc, este ceea ce am spus? 329 00:16:13,300 --> 00:16:14,990 Pur si simplu afiseaza "Hello World". 330 00:16:14,990 --> 00:16:19,600 Și totuși, uita-te la toate lucrurile care avem nevoie să-și încheie în jurul că fraza foarte simplu. 331 00:16:19,600 --> 00:16:21,750 Dar, înainte de mult timp toate aceste linii și mai multe 332 00:16:21,750 --> 00:16:24,800 va face sens mult mai bine pentru tine. 333 00:16:24,800 --> 00:16:26,940 >> Și în care debitul este după cum urmează. 334 00:16:26,940 --> 00:16:31,220 Ceea ce avem nevoie la dispoziție este de a lua de cod, ca sursă 335 00:16:31,220 --> 00:16:32,340 cod pe care tocmai am văzut. 336 00:16:32,340 --> 00:16:35,060 Și avem nevoie de un nou program de pentru a rula prin intermediul. 337 00:16:35,060 --> 00:16:39,130 Avem nevoie de algoritmi care pot converti codul sursă, cum ar fi aceasta, 338 00:16:39,130 --> 00:16:41,932 în cod, obiect 0 si 1. 339 00:16:41,932 --> 00:16:43,890 Cu alte cuvinte, ce vom învăța astăzi 340 00:16:43,890 --> 00:16:46,620 este modul de a face acest lucru, scrie Codul sursă până sus, 341 00:16:46,620 --> 00:16:49,930 trece-l ca intrare pentru un special Programul cunoscut ca un compilator, 342 00:16:49,930 --> 00:16:52,140 și vom produce cod obiect. 343 00:16:52,140 --> 00:16:54,600 Care este doar un mod fantezist de spunând că va lua ceva 344 00:16:54,600 --> 00:16:58,350 care arata ca aceasta, se trece într-un program numit compilator, 345 00:16:58,350 --> 00:17:01,210 producătoare de cod obiect care arata ca aceasta. 346 00:17:01,210 --> 00:17:04,720 >> Deci, acestea sunt literalmente modelele de 0 si 1 347 00:17:04,720 --> 00:17:08,550 care sunt înțelese de Calculator Intel aceste zile, 348 00:17:08,550 --> 00:17:12,480 că în cazul în care a fost interpretat de CPU, creierul în interiorul unui calculator, 349 00:17:12,480 --> 00:17:16,130 va imprima literalmente afară, pur și simplu, "Hello World". 350 00:17:16,130 --> 00:17:19,670 Acum există cale mai multe 0s și 1s decât tine ar spera ar putea fi necesar pentru asta. 351 00:17:19,670 --> 00:17:22,520 Dar asta pentru că noi construim pe o afacere bună de complexitate 352 00:17:22,520 --> 00:17:24,270 pe care le putem lua de acum înainte de la sine. 353 00:17:24,270 --> 00:17:27,869 Cu alte cuvinte, o mulțime de oameni deștepți ne-au dat o mulțime de instrumente reci 354 00:17:27,869 --> 00:17:32,480 și software-ul puternic, cu care ne-am pot face acum proiecte ale noastre. 355 00:17:32,480 --> 00:17:33,400 >> Deci, să începem. 356 00:17:33,400 --> 00:17:36,640 Întrucât vinerea trecută, și Problema pentru Set 0 în această săptămână, 357 00:17:36,640 --> 00:17:39,000 vei juca într-un lume care arata ca aceasta. 358 00:17:39,000 --> 00:17:42,180 Incepand de astazi si pentru problema Set 1 saptamana viitoare, codul 359 00:17:42,180 --> 00:17:45,410 este de gând să arate un pic mai mult criptic, dar funcțional este 360 00:17:45,410 --> 00:17:46,940 Va fi la fel. 361 00:17:46,940 --> 00:17:50,770 Deci preaviz, de sus este Scratch, Concluzia este C. Sincer Scratch 362 00:17:50,770 --> 00:17:52,780 este mult mai ușor de utilizat prietenos și accesibil. 363 00:17:52,780 --> 00:17:56,890 Dar dacă acum voi compara top vizual pentru a de jos, acolo e un fel de unu la unu 364 00:17:56,890 --> 00:17:59,690 Corespondența dintre piese de puzzle și limba 365 00:17:59,690 --> 00:18:00,870 suntem pe cale să se joace cu. 366 00:18:00,870 --> 00:18:04,420 În special, să zicem, albastru puzzle bucată până sus, 367 00:18:04,420 --> 00:18:08,370 este aparent echivalent cu ceea ce cuvinte cheie sau fraza special în această limbă 368 00:18:08,370 --> 00:18:09,062 numit C? 369 00:18:09,062 --> 00:18:09,770 Audiența: printf. 370 00:18:09,770 --> 00:18:10,728 David J. MALAN: printf. 371 00:18:10,728 --> 00:18:12,140 Asta înseamnă că de imprimare formatat. 372 00:18:12,140 --> 00:18:15,240 Și asta e doar o fantezie fel de a spune printf în C 373 00:18:15,240 --> 00:18:18,615 va fi o declarație sau o funcție care imprimă ceva de pe ecran. 374 00:18:18,615 --> 00:18:19,990 Ce se imprima pe ecran? 375 00:18:19,990 --> 00:18:23,627 Indiferent ce se spune la interior de citate, în interiorul paranteze. 376 00:18:23,627 --> 00:18:25,460 Deci, din nou, desigur, există o mulțime de lucruri 377 00:18:25,460 --> 00:18:27,990 care va trebui să păstreze în minte, paranteze, citate, punct și virgulă, 378 00:18:27,990 --> 00:18:28,656 și toate astea. 379 00:18:28,656 --> 00:18:30,600 Dar toate că este un fel de pe lângă subiect. 380 00:18:30,600 --> 00:18:33,660 Takeaway interesant de acum este că blocul cuvânt de spus în Scratch 381 00:18:33,660 --> 00:18:37,520 este destul de mult echivalent cu declarația printf în C. 382 00:18:37,520 --> 00:18:41,390 >> Între timp, piesa de puzzle galben până sus, atunci când steagul verde clic, 383 00:18:41,390 --> 00:18:44,736 este probabil echivalent la ce cuvinte cheie aici? 384 00:18:44,736 --> 00:18:45,360 Audiența: Main. 385 00:18:45,360 --> 00:18:46,359 David J. MALAN: Deci principal. 386 00:18:46,359 --> 00:18:47,410 Poate int, poate nule. 387 00:18:47,410 --> 00:18:51,280 Dar principalul fel de sunete, cum ar fi este important, și într-adevăr este. 388 00:18:51,280 --> 00:18:54,080 Deci, atunci când steagul verde clic este, din nou, piesa de puzzle 389 00:18:54,080 --> 00:18:56,390 care începe o întregul program de Scratch. 390 00:18:56,390 --> 00:19:02,140 Dar vom începe acum de asteptare că principal, această funcție cunoscut ca principal. 391 00:19:02,140 --> 00:19:06,410 >> Acum, între timp, vom generaliza aceasta astfel. 392 00:19:06,410 --> 00:19:08,780 Am putea numi spune o funcție. 393 00:19:08,780 --> 00:19:10,580 Și s-ar putea uita în mod specific ca aceasta. 394 00:19:10,580 --> 00:19:11,770 Ei bine, ce zici de bucle? 395 00:19:11,770 --> 00:19:16,540 Dacă vrem să pornim de conversie sau traducerea mai mult în Scratch la C, 396 00:19:16,540 --> 00:19:19,400 acest lucru aici aparent doar spune "Hello World" pentru totdeauna. 397 00:19:19,400 --> 00:19:23,060 Deci, dacă vă asociați acestea script-uri, cu o pisică în Scratch, 398 00:19:23,060 --> 00:19:26,560 este doar de gând să tot spun într-un fel de balon de desene animate, 399 00:19:26,560 --> 00:19:29,922 "Hello World, salut lume, salut lume, "ad nauseum, pentru totdeauna. 400 00:19:29,922 --> 00:19:33,130 Dacă vrem să facem ceva asemănător în C, o să se uite un pic criptic. 401 00:19:33,130 --> 00:19:35,463 Dar putem realiza la fel rezultate, așa cum vom în cele din urmă 402 00:19:35,463 --> 00:19:36,861 afla, cu sintaxa de genul asta. 403 00:19:36,861 --> 00:19:39,360 Am de gând să folosească din nou printf, deoarece la sfârșitul zilei 404 00:19:39,360 --> 00:19:42,040 Vreau să imprime "hello world". 405 00:19:42,040 --> 00:19:45,610 Și eu sunt aparent, folosind un cuvinte cheie care nu este pentru totdeauna. 406 00:19:45,610 --> 00:19:47,320 Este în schimb cuvântul în timp ce. 407 00:19:47,320 --> 00:19:49,650 Dar semantic în Engleză, în timp ce fel de 408 00:19:49,650 --> 00:19:52,120 sugerează un fel de buclă sau cu bicicleta. 409 00:19:52,120 --> 00:19:55,070 >> Așa că se întâmplă să fie cuvântul cheie care C foloseste. 410 00:19:55,070 --> 00:20:00,700 Și, în timp ce adevărat, de ce nu în timp ce adevărat înseamnă în mod eficient pentru totdeauna? 411 00:20:00,700 --> 00:20:04,240 Ei bine, în timp ce, așa cum vom curând aprecia cu atât mai mult, 412 00:20:04,240 --> 00:20:08,140 are această paranteză lângă ea unde puteți pune o expresie booleană. 413 00:20:08,140 --> 00:20:11,360 Și, atâta timp cât asta expresie este adevărat, acest cod, 414 00:20:11,360 --> 00:20:14,750 ca notate între aceste două acolade ca o sa-i numim, 415 00:20:14,750 --> 00:20:16,880 va păstra doar să ruleze din nou și din nou. 416 00:20:16,880 --> 00:20:18,410 >> Atât de adevărat este adevărat. 417 00:20:18,410 --> 00:20:20,900 Deci, în timp ce mijloace reale doar a face acest lucru pentru totdeauna. 418 00:20:20,900 --> 00:20:23,480 Este aproape un prost construi pentru a te exprima. 419 00:20:23,480 --> 00:20:26,590 Dar nu exista pentru totdeauna cuvinte cheie în C. Nu a fost timp. 420 00:20:26,590 --> 00:20:29,390 Și acolo a fost un foarte simplu Expresie booleană ca adevărat. 421 00:20:29,390 --> 00:20:32,210 Și astfel aceasta, vom vedea, atinge același rezultat. 422 00:20:32,210 --> 00:20:33,890 >> Cum altfel ar putea să vă pună în aplicare o buclă? 423 00:20:33,890 --> 00:20:36,980 Ei bine, în Scratch-ar putea Codul greu un anumit număr 424 00:20:36,980 --> 00:20:39,430 de iterații în bucla aici. 425 00:20:39,430 --> 00:20:43,210 Si pentru ca este exact ceea ce ne-am s-ar putea face în această versiune de C, 426 00:20:43,210 --> 00:20:46,140 prin care avem o așa-numită de buclă. 427 00:20:46,140 --> 00:20:49,850 Iar pentru buclă de aici se va a repeta, oarecum criptic, 428 00:20:49,850 --> 00:20:54,100 de la valoarea 0 până la a dar mai puțin de 10. 429 00:20:54,100 --> 00:20:55,955 >> Acum variabile în zero. 430 00:20:55,955 --> 00:20:57,830 S-ar putea să nu fi avut prilej de a folosi aceste. 431 00:20:57,830 --> 00:21:02,516 Dar ce rost are, în general, a unei variabile am spus săptămâna trecută? 432 00:21:02,516 --> 00:21:03,015 Ce-i asta? 433 00:21:03,015 --> 00:21:03,780 >> Audiența: puncte. 434 00:21:03,780 --> 00:21:05,200 >> David J. MALAN: La punctul? 435 00:21:05,200 --> 00:21:05,700 Oh, punctele. 436 00:21:05,700 --> 00:21:07,620 OK, urmărirea de puncte, de exemplu, într-un joc. 437 00:21:07,620 --> 00:21:09,510 Sau, mai general face ce cu variabila? 438 00:21:09,510 --> 00:21:10,450 Care este utilitatea lor? 439 00:21:10,450 --> 00:21:10,825 >> Audiența: memorie. 440 00:21:10,825 --> 00:21:11,750 >> David J. MALAN: Da, așa memorie. 441 00:21:11,750 --> 00:21:13,000 Este pentru stocarea ceva. 442 00:21:13,000 --> 00:21:17,336 Și ce fel de prostie am vizual folosit Ultima dată a fost ca acest bol de sticlă. 443 00:21:17,336 --> 00:21:19,710 Și dacă ne-am dorit pentru a stoca ceva în interiorul unei variabile, 444 00:21:19,710 --> 00:21:21,918 de exemplu, chiar acum Valoarea este de sase, deoarece acolo 445 00:21:21,918 --> 00:21:23,450 sunt șase mingi de ping pong în aici. 446 00:21:23,450 --> 00:21:26,158 E doar un fel de depozitare container că sub capota 447 00:21:26,158 --> 00:21:30,030 este implementat cu biți, 0 si 1, cu toate acestea un calculator se întâmplă pentru a face asta. 448 00:21:30,030 --> 00:21:32,900 >> Deci, în Scratch, dacă ne-am doresc să aibă o variabilă, 449 00:21:32,900 --> 00:21:34,840 putem folosi un bloc portocaliu de genul asta. 450 00:21:34,840 --> 00:21:37,050 Vom numi asta contra în acest caz particular. 451 00:21:37,050 --> 00:21:38,890 L-am initializat cu 0. 452 00:21:38,890 --> 00:21:41,080 Și ce să fac atunci? 453 00:21:41,080 --> 00:21:44,780 Pentru totdeauna, spune contra, care în cazul în care te joci cu asta în Scratch, 454 00:21:44,780 --> 00:21:45,780 veți vedea doar Scratch. 455 00:21:45,780 --> 00:21:49,920 Pisica sau orice altceva costum te pun pe el va vorbi numărul în cauză. 456 00:21:49,920 --> 00:21:52,840 >> Schimbare contor de 1 este cum ar fi incrementarea cu 1. 457 00:21:52,840 --> 00:21:56,580 Și astfel, acest lucru se întâmplă pentru conta din ce atât de ce? 458 00:21:56,580 --> 00:21:59,114 De la 0 pana la infinit, sau până pauze de reîncărcare, 459 00:21:59,114 --> 00:22:01,030 sau până când un fel de pierde interesul pentru vizionarea 460 00:22:01,030 --> 00:22:02,650 cât de mare poate conta de fapt. 461 00:22:02,650 --> 00:22:04,800 >> Deci, cum am putea transforma acest lucru C? 462 00:22:04,800 --> 00:22:06,480 O să se uite un pic criptic. 463 00:22:06,480 --> 00:22:08,896 Dar, din nou, dacă te uiți la fiecare din aceste linii individual 464 00:22:08,896 --> 00:22:10,410 ei un fel de linie în general. 465 00:22:10,410 --> 00:22:13,526 Deci, aparent int se va au o semnificație specială în C. 466 00:22:13,526 --> 00:22:14,400 Vom vedea că din nou. 467 00:22:14,400 --> 00:22:15,810 Ca o paranteza înseamnă întreg. 468 00:22:15,810 --> 00:22:16,990 Deci, asta înseamnă doar numărul. 469 00:22:16,990 --> 00:22:18,920 Deci, asta e tipul de sticlă castron vreau, o 470 00:22:18,920 --> 00:22:21,120 care poate stoca numere, Nu ping pong mingi. 471 00:22:21,120 --> 00:22:25,520 Și am de gând să utilizeze semnul egal acolo pentru a atribui o valoare de 0. 472 00:22:25,520 --> 00:22:29,440 Așa că e destul ca set contra la 0, dar în C. 473 00:22:29,440 --> 00:22:32,840 >> Între timp, în timp ce adevărat, că a fost echivalent, desigur, să totdeauna, 474 00:22:32,840 --> 00:22:35,980 chiar dacă este un pic criptic, și apoi în interiorul acolade. 475 00:22:35,980 --> 00:22:39,188 Și vă puteți gândi la aceste acolade, care aveți posibilitatea să tastați pe tastatură, 476 00:22:39,188 --> 00:22:43,110 ca într-adevăr ca fiind curbura în aceste blocuri bucla galbene în zero. 477 00:22:43,110 --> 00:22:45,700 Acesta cuprinde mai multe linii de cod. 478 00:22:45,700 --> 00:22:48,120 >> Printf devine o pic înfricoșător acum pentru că am 479 00:22:48,120 --> 00:22:51,120 vezi citate nu numai în paranteze. 480 00:22:51,120 --> 00:22:55,160 Dar ce mai e nou sintactic în acest exemplu? 481 00:22:55,160 --> 00:22:57,300 Există o suta d. 482 00:22:57,300 --> 00:22:58,551 Și apoi backslash n este acolo. 483 00:22:58,551 --> 00:23:00,883 Noi am văzut că înainte, chiar deși nu l-am mai vorbim. 484 00:23:00,883 --> 00:23:01,886 Apoi, există o virgulă. 485 00:23:01,886 --> 00:23:03,010 Și apoi există un contor. 486 00:23:03,010 --> 00:23:05,010 >> Dar vom vedea în doar un clipă că acest lucru este doar 487 00:23:05,010 --> 00:23:09,080 o modalitate standard de a spune print-un "Număr zecimal," citat, citatul, 488 00:23:09,080 --> 00:23:10,500 un numar zecimal. 489 00:23:10,500 --> 00:23:13,370 Dar am de gând să-ți spun mai târziu ce acest număr zecimal este. 490 00:23:13,370 --> 00:23:16,835 Deci, faptul că există o virgulă în această linie spune printf, 491 00:23:16,835 --> 00:23:18,710 înseamnă mergeți mai departe și de imprimare un numar zecimal. 492 00:23:18,710 --> 00:23:23,110 Oh, și apropo, numărul este indiferent de valoarea acestei variabile este. 493 00:23:23,110 --> 00:23:25,880 Și astfel pentru a face acest lucru mai mult clar, vom vedea un exemplu 494 00:23:25,880 --> 00:23:30,930 înainte de lung implică exact printf în cadrul unor programe reale C. 495 00:23:30,930 --> 00:23:33,472 >> Acum, doar pentru a încheia unele de aceste construcții. 496 00:23:33,472 --> 00:23:36,680 Expresii booleene, nu s-ar putea avea prilej de a utiliza aceste în program 497 00:23:36,680 --> 00:23:39,450 dar s-ar putea foarte bine, mai ales dacă folosind condiții. 498 00:23:39,450 --> 00:23:43,460 Și astfel aceste două exemple din Scratch Adică, dacă x este mai mic decât y, 499 00:23:43,460 --> 00:23:48,770 sau în cazul în care x este mai mic decât y și y este mai mic decât z, cum am putea traduce asta? 500 00:23:48,770 --> 00:23:50,810 >> Ei bine, în C e doar O să arate așa. 501 00:23:50,810 --> 00:23:55,300 Un pic criptic, mai multe paranteze, unele ampersand ciudate, dar fundamental 502 00:23:55,300 --> 00:23:59,160 ideile sunt la fel de simplu ca acestea sunt în lume, piesa de puzzle. 503 00:23:59,160 --> 00:24:02,690 Suntem pur și simplu verifica dacă ceva este mai mică decât altceva. 504 00:24:02,690 --> 00:24:03,910 >> Ce zici de condiții? 505 00:24:03,910 --> 00:24:09,710 Într-un cuvânt în limba engleză, ceea ce face acest lucru bucată de cod Scratch-mi-ai spune? 506 00:24:09,710 --> 00:24:11,050 >> Audiența: Compară două numere. 507 00:24:11,050 --> 00:24:13,760 >> David J. MALAN: compara doua numere, iar dacă x este mai mic decât y 508 00:24:13,760 --> 00:24:14,860 se spune la fel de mult. 509 00:24:14,860 --> 00:24:18,080 Dacă x este mai mare decât y se spune la fel de mult, altfel 510 00:24:18,080 --> 00:24:20,740 dacă x este egal cu y se spune la fel de mult. 511 00:24:20,740 --> 00:24:22,180 Acum, în cazul în care au x și y provin de la? 512 00:24:22,180 --> 00:24:22,680 Cine știe. 513 00:24:22,680 --> 00:24:25,380 Această bucată de Scratch Codul este în afara contextului. 514 00:24:25,380 --> 00:24:29,050 Dar ceea ce vrem să facem acum este traduce aceasta pentru doar un moment pentru a vedea. 515 00:24:29,050 --> 00:24:31,660 >> Deci, cum te confortabil în această săptămână în Problema Set 516 00:24:31,660 --> 00:24:34,190 0 joc în această lume pe partea stângă, realiza 517 00:24:34,190 --> 00:24:36,940 că ideile nu se schimbă în această săptămână sau viitoare sau peste. 518 00:24:36,940 --> 00:24:38,690 Pur și simplu o să începe să scrie lucruri 519 00:24:38,690 --> 00:24:41,240 într-un mod diferit, cu nostru tastatura în loc de mouse-ului nostru. 520 00:24:41,240 --> 00:24:44,577 >> Deci, dacă x este mai mic decât y, și există unele paranteze acolo, 521 00:24:44,577 --> 00:24:47,160 atunci există unele acolade din nou la fel de ea ingloba 522 00:24:47,160 --> 00:24:48,970 la fel ca piesele de puzzle galben face. 523 00:24:48,970 --> 00:24:53,000 Și am de gând să printf x este mai mic decât y și așa mai departe. 524 00:24:53,000 --> 00:24:56,540 >> Ce este frumos despre C, după cum puteți vedea aici, 525 00:24:56,540 --> 00:25:00,480 este că nu ai acest cuiburi, cuiburi, cuibărindu că este neapărat 526 00:25:00,480 --> 00:25:02,220 O să împinge codul de dreapta. 527 00:25:02,220 --> 00:25:04,990 Puteți avea loc tot gama place frumos acest lucru. 528 00:25:04,990 --> 00:25:08,960 Dar asta e doar o estetică detaliu vom vedea din nou, înainte de mult timp. 529 00:25:08,960 --> 00:25:09,660 >> În regulă. 530 00:25:09,660 --> 00:25:13,290 Așa că ne aduce înapoi la acest program caută criptic. 531 00:25:13,290 --> 00:25:15,180 Să scrie de fapt un cod. 532 00:25:15,180 --> 00:25:16,830 Acum, cum te duci despre scrierea de cod? 533 00:25:16,830 --> 00:25:21,310 În toți acești ani pe care le-ați deținut un Mac sau PC, desktop sau laptop, 534 00:25:21,310 --> 00:25:24,520 care le-ați avut de fapt capacitatea de pentru a începe scrierea de cod de programare. 535 00:25:24,520 --> 00:25:27,050 Dar tu, probabil, lipsește un tip special de programe. 536 00:25:27,050 --> 00:25:28,470 Puteți scrie cu siguranță cod. 537 00:25:28,470 --> 00:25:30,740 Dar nu poți neapărat, din cutie, 538 00:25:30,740 --> 00:25:34,210 converti codul sursă în cod obiect, 0 si 1 539 00:25:34,210 --> 00:25:35,619 fără ceea ce pe computer? 540 00:25:35,619 --> 00:25:36,410 Audiența: Compiler. 541 00:25:36,410 --> 00:25:37,630 David J. MALAN: Deci, un compilator, drept. 542 00:25:37,630 --> 00:25:39,730 Acum, cele mai multe dintre voi, probabil, nu detin un compilator, 543 00:25:39,730 --> 00:25:41,259 nu s-au descărcat un compilator. 544 00:25:41,259 --> 00:25:44,300 Dar veți vedea o puteți descărca ca cele mai multe orice altă piesă de software. 545 00:25:44,300 --> 00:25:47,470 În lumea de Mac OS, s-ar putea descărca sau au descărcat deja 546 00:25:47,470 --> 00:25:50,437 ceva numit Xcode sau GCC sau răsune. 547 00:25:50,437 --> 00:25:52,270 În cazul în care provin de la Windows vă mondial s-ar putea 548 00:25:52,270 --> 00:25:56,190 au descarcat Visual Studio, Visual Basic, medii de genul asta. 549 00:25:56,190 --> 00:25:59,200 Există zeci de compilatoare aceste zile pe care le-ar putea folosi. 550 00:25:59,200 --> 00:26:01,940 Dar pe termen scurt, de aici este că ar fi o durere 551 00:26:01,940 --> 00:26:04,480 și, sincer, un tehnologic coșmar pentru sute 552 00:26:04,480 --> 00:26:07,680 din persoanele cu diferite configurații de calculatoare pentru toți 553 00:26:07,680 --> 00:26:09,800 configura mașinile lor în exact același mod 554 00:26:09,800 --> 00:26:11,700 astfel încât să putem fi toți pe aceeași pagină. 555 00:26:11,700 --> 00:26:15,240 >> Deci, ceea ce noi, în schimb, nu în CS50 este ne-am da 556 00:26:15,240 --> 00:26:18,349 un mediu standard de, o Mediu Linux, care este 557 00:26:18,349 --> 00:26:20,140 o sa arate un pic ceva de genul asta. 558 00:26:20,140 --> 00:26:22,980 Veți vedea mai mult de acest lucru în Problema Set 1 caietul de sarcini care 559 00:26:22,980 --> 00:26:25,330 va merge online, in aceasta seara de vineri. 560 00:26:25,330 --> 00:26:28,360 >> Și ce înseamnă acest lucru este că de acum înainte 561 00:26:28,360 --> 00:26:32,060 vor fi în măsură să descărca și instala un program de 562 00:26:32,060 --> 00:26:33,650 numit CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 Și ai de gând să descărcați și să instala un alt program numit 564 00:26:36,275 --> 00:26:40,300 un hypervisor, care este doar un mod elegant de a realiza acest lucru. 565 00:26:40,300 --> 00:26:44,600 Indiferent daca aveti un Mac sau PC sau un Linux calculator sau un calculator Solaris, 566 00:26:44,600 --> 00:26:46,830 sau orice nebun de operare sistem rulați, 567 00:26:46,830 --> 00:26:49,820 ai de gând să descarce un program de numit hypervisor care este 568 00:26:49,820 --> 00:26:53,350 va rula CS50 Aparat pe calculator 569 00:26:53,350 --> 00:26:55,430 indiferent de ceea ce sistemul de operare este. 570 00:26:55,430 --> 00:27:00,640 Un hypervisor cu alte cuvinte convertește lucrurile noastre pentru orice limbă, 571 00:27:00,640 --> 00:27:03,850 indiferent de instrucțiunile dumneavoastră calculator propriu înțelege. 572 00:27:03,850 --> 00:27:04,962 >> Deci, aceasta este o stratificare. 573 00:27:04,962 --> 00:27:06,920 Și din nou, acest lucru este un fel de tematice în calculator 574 00:27:06,920 --> 00:27:08,722 știință, clădirea de pe partea de sus a lucrurilor. 575 00:27:08,722 --> 00:27:09,680 S-ar putea avea pentru Windows. 576 00:27:09,680 --> 00:27:10,710 S-ar putea avea Mac OS. 577 00:27:10,710 --> 00:27:12,960 Dar, începând de săptămâna viitoare ești Va fi descărcate 578 00:27:12,960 --> 00:27:14,980 o bucată de software liber numit hypervisor. 579 00:27:14,980 --> 00:27:17,800 Vei fi descărcat o bucată de software-ul numit CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Asta se întâmplă pentru a rula în hypervisor, care va rula pe computerul dumneavoastră. 581 00:27:21,050 --> 00:27:23,030 Iar rezultatul final este că fiecare dintre noi va fi 582 00:27:23,030 --> 00:27:26,220 au o fereastră de simplu ca acest pe Mac sau PC-ul dvs. 583 00:27:26,220 --> 00:27:30,160 care ne dă iluzia de toate rulează același sistem de operare, 584 00:27:30,160 --> 00:27:32,800 fără nici o altă Impactul pe computer. 585 00:27:32,800 --> 00:27:34,870 Și tu poți ecran complet ea și să se comporte în esență, 586 00:27:34,870 --> 00:27:37,550 ca și cum se execută un sistem de operare numit Linux, 587 00:27:37,550 --> 00:27:40,270 care este ceea ce CS50 Aparatul se bazează pe. 588 00:27:40,270 --> 00:27:42,930 >> Deci, hai să folosim de fapt acest acum să scrie un program. 589 00:27:42,930 --> 00:27:45,450 Puteți scrie un program folosind Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 Puteți scrie un program folosind TextEdit, sau Notepad, 591 00:27:48,160 --> 00:27:51,880 sau WordPad, sau destul de mult orice cuvânt program de procesare ați folosit vreodată. 592 00:27:51,880 --> 00:27:55,174 Dar realitatea este că nu ar trebui să folosi într-adevăr oricare dintre aceste programe. 593 00:27:55,174 --> 00:27:57,840 Tu cu siguranță nu ar trebui să utilizeze ceva de genul Microsoft Word, care 594 00:27:57,840 --> 00:28:01,120 are cu care se confruntă și cu caractere cursive aldine, și fonturi mai mari și fonturi mai mici, 595 00:28:01,120 --> 00:28:03,560 deoarece computerul nu pasă de asta. 596 00:28:03,560 --> 00:28:05,600 Tot ce computerul este O să pese este 597 00:28:05,600 --> 00:28:09,040 Engleză ca instrucțiuni scrise în C. 598 00:28:09,040 --> 00:28:12,050 >> Deci, ce vom face în interiorul aparatului CS50 599 00:28:12,050 --> 00:28:14,290 se folosesc un program de liber disponibil, și este 600 00:28:14,290 --> 00:28:17,360 pre-instalate în această aparat, numit Gedit. 601 00:28:17,360 --> 00:28:22,280 Și Gedit este doar un super-simplu editor de text ca TextEdit Mac OS lui, 602 00:28:22,280 --> 00:28:26,200 cum ar fi Windows Notepad care va uita-te un pic de ceva de genul asta. 603 00:28:26,200 --> 00:28:28,910 >> Deci, nu lasa, de fapt uita-te la slide-uri de acest lucru. 604 00:28:28,910 --> 00:28:32,580 Dar să mergem de fapt în mediul în sine. 605 00:28:32,580 --> 00:28:36,090 Am de gând să merg mai departe și conectați, în acest alt fereastră, 606 00:28:36,090 --> 00:28:40,910 a mea CS50 Appliance, care am pre-instalat pe laptop-ul meu aici. 607 00:28:40,910 --> 00:28:43,771 >> Observați că, cum ar fi Windows și Mac OS, acesta are unele meniuri. 608 00:28:43,771 --> 00:28:45,520 Cum ar fi Windows se pune l acolo în loc 609 00:28:45,520 --> 00:28:47,020 de Mac OS, care îl pune acolo. 610 00:28:47,020 --> 00:28:48,930 Dar realitatea este că e toate tipurile de aceeași. 611 00:28:48,930 --> 00:28:50,770 Și aici este un întreg grămadă de software. 612 00:28:50,770 --> 00:28:51,770 Nu este Dropbox. 613 00:28:51,770 --> 00:28:54,780 Există o grămadă de accesorii, programe grafice pe care le vom 614 00:28:54,780 --> 00:28:56,430 folosi mai târziu în termen de seturi de probleme. 615 00:28:56,430 --> 00:28:59,650 Există un browser web construit în așa că acesta este un calculator cu drepturi depline 616 00:28:59,650 --> 00:29:01,240 în interiorul unui calculator. 617 00:29:01,240 --> 00:29:04,170 >> Dar am de gând să faceți clic pe această stânga pictogramă alb aici, 618 00:29:04,170 --> 00:29:05,890 care este icoana pentru Gedit. 619 00:29:05,890 --> 00:29:09,650 Și se va deschide o fereastră care are trei panouri de ea, 620 00:29:09,650 --> 00:29:12,590 unul stâng, unul superior și unul inferior o. 621 00:29:12,590 --> 00:29:16,071 >> Acum e în asta de top care Am de gând să scrie de fapt un cod. 622 00:29:16,071 --> 00:29:16,820 Deci, hai sa facem acest lucru ,. 623 00:29:16,820 --> 00:29:19,040 Am de gând să mergeți la File, Save. 624 00:29:19,040 --> 00:29:22,100 Și nu s-ar fi văzut vreodată această fereastră special înainte. 625 00:29:22,100 --> 00:29:23,620 Dar acest lucru este ca Mac OS sau Windows. 626 00:29:23,620 --> 00:29:25,490 E doar o fereastră cu toate folderele 627 00:29:25,490 --> 00:29:27,290 că am în interiorul acestui calculator. 628 00:29:27,290 --> 00:29:30,320 >> Și am de gând pentru a salva fișierul ca hello.c. 629 00:29:30,320 --> 00:29:32,690 Și am de gând să merg înainte și faceți clic pe Salvare. 630 00:29:32,690 --> 00:29:36,364 Și acum am observat o filă din stanga sus numit hello.c. 631 00:29:36,364 --> 00:29:38,280 Deci, probabil, destul de familiar, chiar dacă tu nu ai 632 00:29:38,280 --> 00:29:40,240 folosit acest program special înainte. 633 00:29:40,240 --> 00:29:44,890 >> Și acum am de gând să tastați în cele secvență destul de criptic de comenzi 634 00:29:44,890 --> 00:29:46,360 că am văzut în urmă cu o clipă. 635 00:29:46,360 --> 00:29:49,330 Include, am standardul / O.h. 636 00:29:49,330 --> 00:29:50,600 Mai multe despre asta în curând. 637 00:29:50,600 --> 00:29:55,670 Void main Int, buclat deschis bretele, închis acoladă. 638 00:29:55,670 --> 00:30:01,570 Și apoi în interiorul de acolo cred că este unde am avut "Hello World", punct și virgulă. 639 00:30:01,570 --> 00:30:03,100 Și acum salva. 640 00:30:03,100 --> 00:30:08,780 >> Deci, acesta este un program scris în C, scris, prin urmare, în codul sursă. 641 00:30:08,780 --> 00:30:10,720 Dar eu nu pot rula doar acest program. 642 00:30:10,720 --> 00:30:13,390 Am facut un fel de doresc să se dubleze click pe o pictogramă undeva, 643 00:30:13,390 --> 00:30:16,390 dar nu există nici o pictogramă alt decât fișierul de cod sursă. 644 00:30:16,390 --> 00:30:20,359 Ce, din nou, este procesul care acum Am nevoie pentru a rula acest fișier prin intermediul? 645 00:30:20,359 --> 00:30:21,150 Audiența: Compiler. 646 00:30:21,150 --> 00:30:22,399 David J. MALAN: Deci, un compilator. 647 00:30:22,399 --> 00:30:24,890 Deci, în diferite calculatoare tine face acest lucru în moduri diferite. 648 00:30:24,890 --> 00:30:27,480 Dar ceea ce am făcut aici, în Appliance CS50 care este 649 00:30:27,480 --> 00:30:31,260 reprezentant de modul în care s-ar putea face acest lucru pe mai multe sisteme diferite, 650 00:30:31,260 --> 00:30:34,036 este pur și simplu am de gând să executați o comandă numită face. 651 00:30:34,036 --> 00:30:35,660 Și de a face este pur și simplu de gând să faci asta. 652 00:30:35,660 --> 00:30:36,640 Fă-mi un program de. 653 00:30:36,640 --> 00:30:39,060 >> Deci, asigurați-va rula un compilator pentru mine. 654 00:30:39,060 --> 00:30:42,160 Și numele programului Vreau să fac este salut. 655 00:30:42,160 --> 00:30:43,510 Acum face este un program. 656 00:30:43,510 --> 00:30:47,170 Și face este suficient pentru a inteligent dau seama că dacă eu spun să salut, 657 00:30:47,170 --> 00:30:50,980 se va arăta în mod automat pentru un fișier numit hello.c 658 00:30:50,980 --> 00:30:53,420 doar pentru că e mod este configurat. 659 00:30:53,420 --> 00:31:00,300 >> Asa ca atunci cand acum am lovit Introduceți aici, această linie criptic nebun tocmai a fost executat. 660 00:31:00,300 --> 00:31:02,720 Și crede-mă, înainte lung, în termen de doar câteva zile, 661 00:31:02,720 --> 00:31:05,590 veți înțelege ce tot a unor mijloace prostii. 662 00:31:05,590 --> 00:31:11,150 Dar pentru acum, știu doar că fac execuția declanșată de un compilator. 663 00:31:11,150 --> 00:31:13,290 Cu alte cuvinte, găsit un compilator pe computerul meu 664 00:31:13,290 --> 00:31:14,820 care este pre-instalat pe aparat CS50 665 00:31:14,820 --> 00:31:16,560 că ne vom preda la tine în Problema Set 1. 666 00:31:16,560 --> 00:31:20,990 Și apoi a luat hello.c ca intrare, și a produs aparent 667 00:31:20,990 --> 00:31:23,040 0 si 1 ca ieșire. 668 00:31:23,040 --> 00:31:29,410 >> Și, implicit, ceea ce face este o salvează aceste 0s și 1s într-un fișier numit salut. 669 00:31:29,410 --> 00:31:33,180 Și, deși această sintaxă prea s-ar putea fi noi pentru tine, pur și simplu prin a spune dot 670 00:31:33,180 --> 00:31:37,110 slash salut va fi înseamnă prin care am rulat acest program. 671 00:31:37,110 --> 00:31:40,360 >> Pentru acum și pentru cel puțin un cuplu de săptămâni, aproape toate programele 672 00:31:40,360 --> 00:31:44,230 scriem vor fi în ferestre de text alb-negru. 673 00:31:44,230 --> 00:31:47,006 Nu soareci, nu click, nici ferestre, nici icoane. 674 00:31:47,006 --> 00:31:49,630 Vom să-l păstrați simplu și să se concentreze asupra ideilor care stau la baza 675 00:31:49,630 --> 00:31:52,490 inițial, înainte de a ajunge la ceva nivel mai ridicat, de exemplu, 676 00:31:52,490 --> 00:31:56,410 ca izbucni joc despre care am vorbit despre în prima lectură săptămâna trecută. 677 00:31:56,410 --> 00:32:00,820 >> Așa că atunci când am lovit Introduceți aici, e echivalent într-un text numai mediu 678 00:32:00,820 --> 00:32:03,272 să-și dubleze clic pe pictograma numită salut. 679 00:32:03,272 --> 00:32:05,480 Ce te astepti vointa întâmpla atunci când am lovit Enter atunci? 680 00:32:05,480 --> 00:32:07,120 >> Audiența: Va imprima "Hello World". 681 00:32:07,120 --> 00:32:10,000 >> David J. MALAN: Să sperăm că se va imprima "Hello World". 682 00:32:10,000 --> 00:32:11,370 Și într-adevăr a făcut-o. 683 00:32:11,370 --> 00:32:13,690 Acum, acolo a fost ceva sintaxă criptic aici. 684 00:32:13,690 --> 00:32:15,950 Să înapoi pentru doar o clipă și să vedem dacă ne-am 685 00:32:15,950 --> 00:32:19,530 nu poate începe deducere doar prin bricolaj, încercat și a eșuat, 686 00:32:19,530 --> 00:32:21,130 ca la ceea ce se întâmplă aici. 687 00:32:21,130 --> 00:32:23,609 Ce dacă am scăpa de backslash n? 688 00:32:23,609 --> 00:32:25,650 Acum, unii dintre voi care au programat înainte, probabil, 689 00:32:25,650 --> 00:32:27,054 știu imediat ce înseamnă asta. 690 00:32:27,054 --> 00:32:29,220 Dar, pentru cei dintre voi care au nu programat înainte, 691 00:32:29,220 --> 00:32:34,052 cel puțin cred că a te ceea ce se întâmplă pentru a schimba atunci când am rulat acest program? 692 00:32:34,052 --> 00:32:37,010 Așa că am de gând să mă întorc în jos pentru a-mi puțin fereastră alb-negru, care 693 00:32:37,010 --> 00:32:39,290 este fereastra în care Eu pot compila acest lucru. 694 00:32:39,290 --> 00:32:41,130 Am de gând să recompilați salut. 695 00:32:41,130 --> 00:32:43,520 Vom vedea la fel secvență criptic de comenzi. 696 00:32:43,520 --> 00:32:45,719 Și am de gând să fac slash punct salut. 697 00:32:45,719 --> 00:32:48,260 Și acum, cineva, dacă vrei, care nu a mai programat înainte, 698 00:32:48,260 --> 00:32:49,770 ceea ce ar putea fi diferit de data asta? 699 00:32:49,770 --> 00:32:50,020 Da. 700 00:32:50,020 --> 00:32:51,840 >> Audiența: Nu se va opri imprimare "hello world". 701 00:32:51,840 --> 00:32:52,660 >> David J. MALAN: Va sa-- rău? 702 00:32:52,660 --> 00:32:54,210 >> Audiența: Nu se va opri imprimarea ea? 703 00:32:54,210 --> 00:32:55,810 >> David J. MALAN: nu va opri imprimarea "Hello World". 704 00:32:55,810 --> 00:32:56,560 Deci, nu este o idee rea. 705 00:32:56,560 --> 00:32:58,633 Alte idei? 706 00:32:58,633 --> 00:32:59,132 Da. 707 00:32:59,132 --> 00:33:00,060 >> Audiența: Mesaj de eroare? 708 00:33:00,060 --> 00:33:01,750 >> David J. MALAN: Eroare mesaj, OK, ar putea fi. 709 00:33:01,750 --> 00:33:02,250 Ce altceva? 710 00:33:02,250 --> 00:33:05,479 Audiența: S-ar putea imprima Suport cu punct și virgulă, de asemenea? 711 00:33:05,479 --> 00:33:08,270 David J. MALAN: S-ar putea imprima Suport cu punct și virgulă, de asemenea. 712 00:33:08,270 --> 00:33:11,950 Deci, poate că backslash atunci este ceva fel de terminous care e important. 713 00:33:11,950 --> 00:33:14,860 Orice alte gânduri? 714 00:33:14,860 --> 00:33:16,412 >> Idei Deci, toate bune. 715 00:33:16,412 --> 00:33:18,370 Și, de fapt, ea se va să fie un mesaj de eroare. 716 00:33:18,370 --> 00:33:20,400 Asta e, probabil, cel mai probabil, să fie răspunsul, în general, 717 00:33:20,400 --> 00:33:22,420 pentru următoarele câteva săptămâni cum ne-am afla la cod aici. 718 00:33:22,420 --> 00:33:27,680 >> Dar pentru acum amintiți-vă că de calculatoare doar fac ceea ce le spune să facă. 719 00:33:27,680 --> 00:33:30,400 La fel ca aluna ridicol unt și exemplu jeleu. 720 00:33:30,400 --> 00:33:33,860 Computerele noastre umane trebuia doar să facă ceea ce le-ai spus să facă. 721 00:33:33,860 --> 00:33:36,250 Deci, în acest caz, dacă nu spun calculator 722 00:33:36,250 --> 00:33:41,190 pentru a muta cursorul că clipește la linia următoare, el nu o va face. 723 00:33:41,190 --> 00:33:45,390 Așa că atunci când am rula acest program acum, observa diferența. 724 00:33:45,390 --> 00:33:46,900 >> Se pare ca un bug. 725 00:33:46,900 --> 00:33:49,190 Este un bug estetic, poate. 726 00:33:49,190 --> 00:33:53,310 Dar ceea ce este diferit despre acest ieșire versus ultima evident? 727 00:33:53,310 --> 00:33:53,810 Da. 728 00:33:53,810 --> 00:33:54,920 >> Audiența: Aceasta nu a făcut o nouă linie. 729 00:33:54,920 --> 00:33:56,586 >> David J. MALAN: Nu a făcut o nouă linie. 730 00:33:56,586 --> 00:33:58,740 Acum, cei care au pagini web poate realizate 731 00:33:58,740 --> 00:34:01,910 înainte, s-ar putea cunoaște Tag-ul BR sau tag-ul paragraf, 732 00:34:01,910 --> 00:34:03,120 foarte asemănătoare în spirit. 733 00:34:03,120 --> 00:34:06,680 Un browser web va ignora până l-ai spune exact ce să facă. 734 00:34:06,680 --> 00:34:10,020 În mod similar, este un limbaj ca C numai O să faci ceea ce-l spun sa faci. 735 00:34:10,020 --> 00:34:12,730 >> Deci motivul pentru care toate aceste exemple, 736 00:34:12,730 --> 00:34:15,350 până acum, au cam a avut ocazional această backslash 737 00:34:15,350 --> 00:34:18,560 acolo, asta-i mijloacele prin care să vă exprimați 738 00:34:18,560 --> 00:34:21,380 ca un nou personaj linie, ca să spunem așa. 739 00:34:21,380 --> 00:34:26,219 Și puteți fel de aprecia, probabil, că acest lucru ar privi fel de stupid 740 00:34:26,219 --> 00:34:27,070 dacă nimic altceva. 741 00:34:27,070 --> 00:34:29,150 Dacă aș fi vrut o nouă linie, doar apăsarea Enter și apoi un fel 742 00:34:29,150 --> 00:34:32,219 de macelarie codului de genul asta nu ar trebui să vă frecați într-adevăr calea cea dreaptă. 743 00:34:32,219 --> 00:34:33,830 Și chiar dacă nu pasă cu adevărat de la acest punct, 744 00:34:33,830 --> 00:34:35,830 vă veți da seama că acesta nu este un deosebit 745 00:34:35,830 --> 00:34:37,870 bucată arata bine din cod. 746 00:34:37,870 --> 00:34:39,969 >> Și așa cum lumea cu ani în urmă a decis este 747 00:34:39,969 --> 00:34:43,420 că atunci când doriți să puneți cursor explicit pe o linie nouă, 748 00:34:43,420 --> 00:34:46,332 trebuie să spun în mod explicit Noua linie, backslash n. 749 00:34:46,332 --> 00:34:48,040 Și există o altă simboluri de genul asta. 750 00:34:48,040 --> 00:34:50,719 Dar pentru moment, vom doar se concentreze pe backslash n. 751 00:34:50,719 --> 00:34:53,790 >> Acum, hai să facem programul un pic mai interesant. 752 00:34:53,790 --> 00:34:59,200 Am de gând să merg mai departe și de data aceasta deschide un nou fișier. 753 00:34:59,200 --> 00:35:02,520 Am de gând să salveze acest drept salut-1.c. 754 00:35:02,520 --> 00:35:05,540 Și doar pentru lovituri, am de gând să du-te pune-l în folderul Dropbox. 755 00:35:05,540 --> 00:35:09,030 >> După cum veți vedea în CS50 documentație pentru aparatul, 756 00:35:09,030 --> 00:35:11,210 mai târziu în această săptămână pentru problema Set 1, vom încuraja 757 00:35:11,210 --> 00:35:13,230 să utilizați Dropbox sau unii serviciu echivalent, 758 00:35:13,230 --> 00:35:15,430 pentru că atunci toți din codul de O să fie susținute în mod automat. 759 00:35:15,430 --> 00:35:17,830 Și de aceea am intrat în acest dosar aici. 760 00:35:17,830 --> 00:35:20,230 >> Și acum am de gând să scrie o ușor diferită de program. 761 00:35:20,230 --> 00:35:24,740 Include, am standardul / O.h, void main Int. 762 00:35:24,740 --> 00:35:29,660 Și apoi aici printf, salut lume, care este exact la fel ca înainte. 763 00:35:29,660 --> 00:35:32,450 >> Dar acum vreau să imprimați ceva că e un pic diferit. 764 00:35:32,450 --> 00:35:34,800 Vreau să imprime, spune, "Bună, David." 765 00:35:34,800 --> 00:35:37,590 Bine, deci în mod evident, ar trebui sperăm 766 00:35:37,590 --> 00:35:40,360 fi cazul ca, daca am recompilați acest program, acesta rulați din nou, 767 00:35:40,360 --> 00:35:41,840 se va spune "Bună ziua, David." 768 00:35:41,840 --> 00:35:45,160 >> Dar dacă vreau să introducă acest tip de variabile, 769 00:35:45,160 --> 00:35:49,240 noțiunea de un recipient care se întâmplă pentru a stoca D-o-v-i-d și cod nu greu 770 00:35:49,240 --> 00:35:50,600 în programul meu. 771 00:35:50,600 --> 00:35:53,430 Ei bine, ce dacă am începe a face ceva de genul asta? 772 00:35:53,430 --> 00:35:57,120 >> String s, astfel încât aceasta este o variabilă. 773 00:35:57,120 --> 00:36:00,250 Dacă doriți un șir de caractere, a.k.a. un cuvânt sau o frază. 774 00:36:00,250 --> 00:36:03,485 O secvență de caractere este ceea ce noi in programare numim un șir. 775 00:36:03,485 --> 00:36:06,610 Mergem la generic apel e, pentru că e un nume frumos simplu. 776 00:36:06,610 --> 00:36:08,010 Dar am putea spune nimic. 777 00:36:08,010 --> 00:36:12,920 >> Am de gând să spun egali string s , citez, "David," punct și virgulă. 778 00:36:12,920 --> 00:36:18,330 Și acum vreau să inserați D-o-v-am-d în ceea ce am de imprimare. 779 00:36:18,330 --> 00:36:23,720 Și înainte am văzut un teaser pe ecranul de unele sintaxă specială 780 00:36:23,720 --> 00:36:26,050 care ne-a permis să Intră pe o valoare. 781 00:36:26,050 --> 00:36:29,250 Care a fost speciale simbol câteva slide-uri acum? 782 00:36:29,250 --> 00:36:30,040 >> Deci la sută. 783 00:36:30,040 --> 00:36:33,830 La acea vreme, a fost de procente d pentru număr zecimal. 784 00:36:33,830 --> 00:36:35,850 Asta nu prea pare relevant aici. 785 00:36:35,850 --> 00:36:38,650 Se pare că nu există un alt simbol la sută, 786 00:36:38,650 --> 00:36:42,810 care este s la sută, care se afla pentru un substituent pentru un șir. 787 00:36:42,810 --> 00:36:49,350 >> Deci, acum, foarte simplu, eu sunt O să merg să-salut 1, 788 00:36:49,350 --> 00:36:54,210 deoarece acest fișier numit salut-1.c, și apăsați Enter. 789 00:36:54,210 --> 00:36:56,230 Și am dat-on bară. 790 00:36:56,230 --> 00:36:57,394 Ce se întâmplă? 791 00:36:57,394 --> 00:37:00,560 Ei bine, aici e unde trebuie să începem să apreciem că suntem în această comandă 792 00:37:00,560 --> 00:37:02,810 mediu linie, aceasta Numai text mediu. 793 00:37:02,810 --> 00:37:06,114 Nu e nici un click pe icoane cum ar fi dosarele chiar acum. 794 00:37:06,114 --> 00:37:07,280 Și cred că înapoi acum o clipă. 795 00:37:07,280 --> 00:37:10,740 În ceea ce folder-am spus Am fost de economisire codul meu? 796 00:37:10,740 --> 00:37:11,657 Deci, dosarul Dropbox. 797 00:37:11,657 --> 00:37:12,989 Ar fi putut fi numit nimic. 798 00:37:12,989 --> 00:37:14,530 Dar se întâmplă să fie numit Dropbox. 799 00:37:14,530 --> 00:37:18,380 Așa că am nevoie într-un fel să faceți dublu clic pe că dosarul Dropbox, în scopul de a obține 800 00:37:18,380 --> 00:37:21,657 în ea și de a lua de la meu Codul numit salut-1.c. 801 00:37:21,657 --> 00:37:24,490 De fapt, lasă-mă să mergeți mai departe și pentru a minimiza această fereastră pentru doar o clipă. 802 00:37:24,490 --> 00:37:27,560 La fel cum ar fi Windows și Mac OS, există dosare în Linux. 803 00:37:27,560 --> 00:37:29,410 Există dosarele din CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 E doar acum ne limităm ne la acest mediu de text. 805 00:37:32,380 --> 00:37:34,700 >> Dar dacă faceți dublu clic pe pe Dropbox, observa acolo 806 00:37:34,700 --> 00:37:37,210 este fișierul pe care vreau să compileze. 807 00:37:37,210 --> 00:37:41,430 Dar am nevoie de acest alb-negru fereastră terminal, ca să spunem așa. 808 00:37:41,430 --> 00:37:45,750 Dar am nevoie, prin urmare, să se mute în acel folder sau director. 809 00:37:45,750 --> 00:37:48,290 Deci ușor arcane, dar O să te obișnuiești cu asta prea. 810 00:37:48,290 --> 00:37:50,430 >> În lumea de Linux, care din nou este de operare 811 00:37:50,430 --> 00:37:54,860 Sistemul nu mai avem în interiorul CS50 Appliance, există o comanda numita CD. 812 00:37:54,860 --> 00:37:58,310 Ceea ce înseamnă că pot face CD, spațiu, Dropbox. 813 00:37:58,310 --> 00:37:59,900 CD, directorul schimbare. 814 00:37:59,900 --> 00:38:00,400 Corect. 815 00:38:00,400 --> 00:38:02,890 Înapoi în a doua zi, când oamenii au fost inventarea computerelor și de operare 816 00:38:02,890 --> 00:38:05,806 Sistemele de acest gen, au vrut să introduceți mai puține taste posibil. 817 00:38:05,806 --> 00:38:08,760 Deci, cel mai simplu mod de a spune Directorul schimbare a fost CD. 818 00:38:08,760 --> 00:38:13,910 >> Deci, dacă am lovit CD, spațiu Dropbox, observa ce sa schimbat aici. 819 00:38:13,910 --> 00:38:16,480 In interiorul parantezelor aparatul este un fel 820 00:38:16,480 --> 00:38:19,360 a-mi pe plac și amintindu-mi unde sunt. 821 00:38:19,360 --> 00:38:21,480 Deci, dosarul deschis este Dropbox. 822 00:38:21,480 --> 00:38:24,950 Dacă am tip acum ls pentru Lista, din nou succint, 823 00:38:24,950 --> 00:38:27,540 pentru că oamenii nu au vrut să introduceți înapoi în zi l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Așa că au făcut loc să-l ls. 825 00:38:29,300 --> 00:38:30,110 >> Enter. 826 00:38:30,110 --> 00:38:35,740 Observați văd două lucruri, salut-1.c, iar apoi acest lucru criptic, sursa de 1m. 827 00:38:35,740 --> 00:38:38,310 Asta e doar felul meu de a spune Codul sursă pentru saptamana 1 luni. 828 00:38:38,310 --> 00:38:42,020 Asta-i un dosar am descărcat de la Site-ul CS50 că am făcut mai devreme 829 00:38:42,020 --> 00:38:43,990 și pune-l în aparat în avans. 830 00:38:43,990 --> 00:38:47,550 >> Dar pentru acum singurul lucru pe care îl pasă este de a face acest program. 831 00:38:47,550 --> 00:38:50,440 Așa că atunci când am tip face-Bună ziua 1, Enter. 832 00:38:50,440 --> 00:38:51,320 La naiba. 833 00:38:51,320 --> 00:38:53,060 Ceva a mers prost. 834 00:38:53,060 --> 00:38:54,580 Așa că haideți să tachineze acest afară. 835 00:38:54,580 --> 00:38:58,489 Și, din păcate, acest lucru este în cazul în care lucrurile obține un pic stresant la început, 836 00:38:58,489 --> 00:39:00,280 cel puțin dacă ai nu programat înainte. 837 00:39:00,280 --> 00:39:00,980 >> Doamne. 838 00:39:00,980 --> 00:39:04,990 I-am scris un program de două linii și Am patru linii de erori. 839 00:39:04,990 --> 00:39:07,180 Deci, ce se întâmplă aici. 840 00:39:07,180 --> 00:39:11,370 În primul rând derula mereu înapoi în sus și pentru a găsi primul mesaj de eroare, 841 00:39:11,370 --> 00:39:15,730 pentru că de multe ori compilatoarelor doar obține confuz de ceea ce și fac. 842 00:39:15,730 --> 00:39:17,000 Compilatoare sunt destul de prost. 843 00:39:17,000 --> 00:39:18,360 Ei vor face doar ceea ce spune-le să facă. 844 00:39:18,360 --> 00:39:21,484 Și dacă le confunda, sunt doar Va fel de a arunca în sus mâinile lor 845 00:39:21,484 --> 00:39:25,010 și poate arunca mai multe mesaje de eroare decât sunt de fapt relevante. 846 00:39:25,010 --> 00:39:26,380 >> Deci, să ne uităm la prima. 847 00:39:26,380 --> 00:39:27,540 Super criptic la prima. 848 00:39:27,540 --> 00:39:31,050 Dar notificare, aici e numele fișier în care am dat-o, aparent. 849 00:39:31,050 --> 00:39:36,570 Colon 5, colon 5 înseamnă doar pe linia 5 la al cincilea caracter. 850 00:39:36,570 --> 00:39:39,760 Deci, coloana a cincea de caractere, dacă vreți, eroare. 851 00:39:39,760 --> 00:39:41,870 Utilizarea șir identificator nedeclarate. 852 00:39:41,870 --> 00:39:43,120 Ați vrut să spuneți n standard? 853 00:39:43,120 --> 00:39:44,850 >> Nu, am vrut să spun șir. 854 00:39:44,850 --> 00:39:47,640 Și apoi e un fel de copiere și lipire 855 00:39:47,640 --> 00:39:50,700 ceea ce am scris pentru a trage într-adevăr mea atenție la unde am greșit. 856 00:39:50,700 --> 00:39:54,260 Deci, pentru un motiv oarecare C, sau cel puțin compilatorul 857 00:39:54,260 --> 00:39:56,470 nu înțelege șirul de cuvânt. 858 00:39:56,470 --> 00:39:57,890 Și asta pentru că l-am făcut în sus. 859 00:39:57,890 --> 00:40:01,440 Deci șir nu există în C. Ce CS50 face, 860 00:40:01,440 --> 00:40:03,380 pentru primele câteva săptămâni doar a clasei, 861 00:40:03,380 --> 00:40:05,700 Este oferim unele de formare roți, ca să spunem așa. 862 00:40:05,700 --> 00:40:11,160 Și am pus aceste roți de formare în interiorul unui fișier special numit CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Deci, aceasta este a doua de două fișier nume care aparent se termină în dot h. 864 00:40:14,970 --> 00:40:16,300 Să înapoi. 865 00:40:16,300 --> 00:40:19,360 Printf este o declarație sau o funcție care se pare că imprimă ceva 866 00:40:19,360 --> 00:40:20,580 pe ecran. 867 00:40:20,580 --> 00:40:23,470 Dar tu nu m-ai văzut punerea în aplicare printf, chiar. 868 00:40:23,470 --> 00:40:26,360 Cineva de ani în urmă în aplicare printf. 869 00:40:26,360 --> 00:40:30,420 În ceea ce dosar ar fi să pariați el sau a pus în aplicare 870 00:40:30,420 --> 00:40:34,270 pentru printf, codul de printf? 871 00:40:34,270 --> 00:40:36,860 >> Într-un fișier numit standard de I / O.h. 872 00:40:36,860 --> 00:40:39,930 De fapt, este, probabil, în două fișiere, eu standardul / O.h, 873 00:40:39,930 --> 00:40:42,650 care vine de la antet dosar, și eu standardul / O.c, 874 00:40:42,650 --> 00:40:44,060 care vine de la codul sursă C. 875 00:40:44,060 --> 00:40:48,220 Deci, el sau ea cu câțiva ani în urmă plopped codul care au scris în acest fișier 876 00:40:48,220 --> 00:40:51,240 astfel încât oameni ca noi ani mai târziu, poate cuprinde, 877 00:40:51,240 --> 00:40:53,040 ca să spunem așa, în propriile noastre programe. 878 00:40:53,040 --> 00:40:56,320 >> Și într-adevăr, asta e ceea ce semnul lire urmat de cuvântul includ o face. 879 00:40:56,320 --> 00:41:00,250 Se pare pe hard disc, găsește fișierul numit I standardul / O.h, 880 00:41:00,250 --> 00:41:03,840 și apoi în mod eficient și copii lipește-l în interiorul propriului meu dosar. 881 00:41:03,840 --> 00:41:07,210 Deci, acum, programul meu nu știe cum să imprimați de pe ecran. 882 00:41:07,210 --> 00:41:11,120 >> Deci, conform acestei logici, în cazul în care este definit șir? 883 00:41:11,120 --> 00:41:12,260 >> Audiența: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> David J. MALAN: CS50.h. 885 00:41:13,290 --> 00:41:15,540 Și într-adevăr, asta e ceea ce am, personalul de bază, s-au făcut. 886 00:41:15,540 --> 00:41:19,590 Am inventat câteva tipuri de date, ca să spunem așa, ca un șir de caractere, 887 00:41:19,590 --> 00:41:22,370 în plus față de cele pe care le obține gratuit, ca un întreg. 888 00:41:22,370 --> 00:41:26,010 Și vom vedea pe alții ca pe un char pentru un personaj și mai puține. 889 00:41:26,010 --> 00:41:30,670 In interiorul CS50.h aparent este cel puțin o parte mențiune de șir. 890 00:41:30,670 --> 00:41:34,980 >> Deci, acum lasă-mă să merg mai departe și face reluare salut-1. 891 00:41:34,980 --> 00:41:37,100 Voi mări din nou și trece degetele mele. 892 00:41:37,100 --> 00:41:41,370 Acum, prin care a făcut o schimba-am reparat cele mai multe lucruri. 893 00:41:41,370 --> 00:41:42,100 Dar, la naiba. 894 00:41:42,100 --> 00:41:44,290 Mai multe procente decât argumentele date. 895 00:41:44,290 --> 00:41:45,980 Ce am gresit de data asta? 896 00:41:45,980 --> 00:41:47,420 >> Deci, este încă destul de criptic. 897 00:41:47,420 --> 00:41:51,560 Dar această eroare este pe linia 7 și 21 de caractere. 898 00:41:51,560 --> 00:41:53,880 Așa că hai să căutăm aici. 899 00:41:53,880 --> 00:41:55,350 Este un pic mai subtil. 900 00:41:55,350 --> 00:41:59,167 Dar dacă te gândești la ceea ce ideile fundamentale de aici sunt, 901 00:41:59,167 --> 00:42:00,500 poate putem tachineze această separat. 902 00:42:00,500 --> 00:42:02,300 >> Deci, printf este numele funcției. 903 00:42:02,300 --> 00:42:04,960 Parantezele, până în prezent, este la fel ca ceea ce ne-am pus în jurul 904 00:42:04,960 --> 00:42:07,005 chestiile pe care le trece ca date de intrare pentru o funcție. 905 00:42:07,005 --> 00:42:08,921 Bine, doar o convenție umană arbitrar. 906 00:42:08,921 --> 00:42:09,919 Utilizați paranteze. 907 00:42:09,919 --> 00:42:12,460 În interiorul acestor paranteze am fost punerea ghilimele, 908 00:42:12,460 --> 00:42:14,810 și apoi un șir de genul "hello world". 909 00:42:14,810 --> 00:42:18,160 >> Dar, în acest exemplu mai devreme foarte pe scurt a facut privim cu zero. 910 00:42:18,160 --> 00:42:22,590 Și am avut la sută d, ce altceva a fost în interiorul acestor paranteze 911 00:42:22,590 --> 00:42:23,730 că am strigat verbal? 912 00:42:23,730 --> 00:42:24,230 Da. 913 00:42:24,230 --> 00:42:28,166 >> Audiența: Deci, este ceea ce sunteți luați [Inaudibil] din cadrul [inaudibil] 914 00:42:28,166 --> 00:42:30,200 ce acestea [inaudibil]? 915 00:42:30,200 --> 00:42:31,200 David J. MALAN: Exact. 916 00:42:31,200 --> 00:42:32,700 Așa că am avut la sută d. 917 00:42:32,700 --> 00:42:36,620 Dar apoi am avut aproape Citat, virgulă, contra. 918 00:42:36,620 --> 00:42:37,120 Corect. 919 00:42:37,120 --> 00:42:40,680 Am specificat ce vrem pentru a face ca substituent. 920 00:42:40,680 --> 00:42:44,621 Deci, ce am de gând să fac aici este virgulă, ce vrei să pui? 921 00:42:44,621 --> 00:42:45,120 Audiența: S. 922 00:42:45,120 --> 00:42:46,828 David J. MALAN: S, deoarece în acest caz 923 00:42:46,828 --> 00:42:48,700 este numele recipientului de depozitare. 924 00:42:48,700 --> 00:42:50,180 Este numele pe care bol de sticlă. 925 00:42:50,180 --> 00:42:53,610 Întrucât înainte de a fi contra în care simplu exemplu Scratch ne-am uitat la. 926 00:42:53,610 --> 00:42:56,630 Deci, acum, după ce a făcut două modificări, lasă-mă să măriți 927 00:42:56,630 --> 00:42:59,800 și să încerce încă o dată să compila acest program. 928 00:42:59,800 --> 00:43:01,596 >> Acum văd că linia de criptic. 929 00:43:01,596 --> 00:43:03,470 Dar asta e, de fapt, Numele compilatorului. 930 00:43:03,470 --> 00:43:04,886 Zăngănit este numele compilatorului. 931 00:43:04,886 --> 00:43:07,100 A face este doar m-ai salvat dureri de cap de tot 932 00:43:07,100 --> 00:43:09,830 tastând comanda de mult nebunie. 933 00:43:09,830 --> 00:43:14,900 Deci, acum, dacă eu dot reduce salut-1, Eu ar trebui să vedeți "Salut, David." 934 00:43:14,900 --> 00:43:16,450 >> Destul de underwhelming, totuși, nu? 935 00:43:16,450 --> 00:43:18,158 Am fi putut face aceasta mult mai simplu 936 00:43:18,158 --> 00:43:20,940 fără a vorbi despre variabile și CS50.h și tot de ce. 937 00:43:20,940 --> 00:43:23,080 Deci, haideți să fac din el un ceva mai interesant. 938 00:43:23,080 --> 00:43:31,010 >> In plus fata de CS50.h, având lucruri cum ar fi string 939 00:43:31,010 --> 00:43:34,550 a declarat, biblioteca CS50 are, de asemenea, câteva funcții. 940 00:43:34,550 --> 00:43:38,520 Deci, la fel ca în urmă cu ani, cineva a scris printf și pune-l în standard de I / O.h 941 00:43:38,520 --> 00:43:39,530 și un alt fișier. 942 00:43:39,530 --> 00:43:44,010 >> Noi, personalul CS50, a scris o funcție numit getchar, GetDouble, GetFloat, 943 00:43:44,010 --> 00:43:47,610 Getint, GetLongLong, getString, și ne-am pus pe cei într-un fișier 944 00:43:47,610 --> 00:43:49,890 numit CS50.h și CS50.c. 945 00:43:49,890 --> 00:43:51,880 Și le-am pus în interiorul de CS50 aparatului. 946 00:43:51,880 --> 00:43:53,880 Și oamenii pot, de asemenea, le descărcați on-line în cazul în care 947 00:43:53,880 --> 00:43:55,880 doresc să le pună pe lor calculatoarele proprii, de asemenea. 948 00:43:55,880 --> 00:44:00,880 Care este de a spune că ne-am creat Funcțiile care primesc input de la utilizator. 949 00:44:00,880 --> 00:44:02,930 Nu știu ce tot de aceste tipuri de date sunt. 950 00:44:02,930 --> 00:44:06,490 Getint este un fel de simplu, cum ar fi obține un număr întreg într-un fel din partea utilizatorului. 951 00:44:06,490 --> 00:44:09,980 Și getString este probabil ca get un cuvânt sau o propoziție din partea utilizatorului. 952 00:44:09,980 --> 00:44:11,770 >> Așa că haideți să ne concentrăm pe asta. 953 00:44:11,770 --> 00:44:14,710 Și am de gând să mă întorc în aparat și am de gând să merg mai departe 954 00:44:14,710 --> 00:44:20,790 și salvați acest fișier ca, sa-i spunem o salut-2.c ca a doua versiune meu. 955 00:44:20,790 --> 00:44:23,030 Și să facă o pereche de modificări. 956 00:44:23,030 --> 00:44:25,800 >> De data aceasta în loc de greu David codificare, care 957 00:44:25,800 --> 00:44:29,120 face un incredibil de consistent dar programul underwhelming, 958 00:44:29,120 --> 00:44:32,640 Ce se întâmplă dacă am loc fac getString? 959 00:44:32,640 --> 00:44:35,660 Acum observa getString are o paranteză deschisă, 960 00:44:35,660 --> 00:44:38,500 paranteză închisă, deoarece ea nu are nevoie de nici o introducere. 961 00:44:38,500 --> 00:44:40,850 Este doar de gând să-mi iau un șir de la utilizator. 962 00:44:40,850 --> 00:44:42,460 >> Și acum un cuvânt pe altă sintaxă. 963 00:44:42,460 --> 00:44:45,439 Punct și virgulă încheia doar o linie de cod. 964 00:44:45,439 --> 00:44:46,730 Nu ai nevoie de ele peste tot. 965 00:44:46,730 --> 00:44:48,896 Dar asta înseamnă doar că sunt făcut cu această linie de cod. 966 00:44:48,896 --> 00:44:51,080 Permiteți-mi să se mute pe un alt declarație sau funcție. 967 00:44:51,080 --> 00:44:53,010 String declară o variabilă. 968 00:44:53,010 --> 00:44:55,920 String este cum ai spune da-mi un castron, vă rog. 969 00:44:55,920 --> 00:44:57,940 Și lasă-mă să pun un șir în ea. 970 00:44:57,940 --> 00:44:59,430 >> Și acum semnul egal. 971 00:44:59,430 --> 00:45:03,510 Care este semnul egal în esență echivalent cu? 972 00:45:03,510 --> 00:45:04,500 >> Audiența: Atribuirea. 973 00:45:04,500 --> 00:45:06,190 >> David J. MALAN: Da, atribuirea unei valori. 974 00:45:06,190 --> 00:45:09,872 Deci, dacă eu, de exemplu, apel această funcție getString, 975 00:45:09,872 --> 00:45:12,830 și vom vedea într-un moment care este va solicita utilizatorului pentru un șir. 976 00:45:12,830 --> 00:45:17,810 Acest lucru este ca lasa-ma atunci scrie D-o-v-i-d pe o bucată de hârtie. 977 00:45:17,810 --> 00:45:21,060 Și când spun string s este egal cu getString, 978 00:45:21,060 --> 00:45:24,140 egal nu înseamnă într-adevăr egal în programare C. 979 00:45:24,140 --> 00:45:27,880 Aceasta înseamnă aloca din dreapta în partea stângă pe partea stângă. 980 00:45:27,880 --> 00:45:29,510 >> Așa că am ajuns un șir. 981 00:45:29,510 --> 00:45:32,785 Iar semnul egal înseamnă a pus în depozitarea recipient numit uri. 982 00:45:32,785 --> 00:45:36,730 Si apoi trec asta la printf pentru a face de fapt treaba. 983 00:45:36,730 --> 00:45:39,790 >> Deci, rezultatul final, atunci se va să arate un pic diferit. 984 00:45:39,790 --> 00:45:40,840 Să fac-Bună ziua 2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 Fie ar putea lucra. 987 00:45:45,260 --> 00:45:46,450 Ești în urma de-a lungul. 988 00:45:46,450 --> 00:45:47,940 Asigurați-salut 2 a lucrat. 989 00:45:47,940 --> 00:45:52,640 Dot slash salut-2, Enter. 990 00:45:52,640 --> 00:45:54,620 >> Se pare că am un infinit buclă sau ceva. 991 00:45:54,620 --> 00:45:55,453 Nu se întâmplă nimic. 992 00:45:55,453 --> 00:45:56,134 De ce? 993 00:45:56,134 --> 00:45:57,805 >> Audiența: Se face o buclă infinită. 994 00:45:57,805 --> 00:45:59,430 David J. MALAN: Este o buclă infinită. 995 00:45:59,430 --> 00:46:02,710 Este un fel de așteptare pentru mine să de fapt, să-i furnizeze unele de intrare. 996 00:46:02,710 --> 00:46:05,800 Așa că lasă-mă să mergeți mai departe și de tip în David, și apăsați Enter. 997 00:46:05,800 --> 00:46:07,230 Și acum se spune "Bună ziua, David." 998 00:46:07,230 --> 00:46:09,040 Dacă am alerga din nou. 999 00:46:09,040 --> 00:46:11,530 Să tastați Rob, "salut, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Acum, acest lucru este cel mai rău interfață cu utilizatorul vreodată. 1001 00:46:13,900 --> 00:46:16,110 Utilizatorul este aparent ar trebui să știe ce să facă. 1002 00:46:16,110 --> 00:46:17,120 Dar nu contează. 1003 00:46:17,120 --> 00:46:19,570 Folosind aceste aceeași clădire blocuri la fel ca în Scratch, 1004 00:46:19,570 --> 00:46:24,980 putem rezolva această problemă și spun ceva de genul numele dvs., vă rugăm, de colon, 1005 00:46:24,980 --> 00:46:27,820 spațiu, închis citat, aproape paranteze, punct și virgulă. 1006 00:46:27,820 --> 00:46:30,680 Deci, o mulțime de nou imbecilitate cu sintaxa. 1007 00:46:30,680 --> 00:46:34,040 >> Dar observați Tocmai am adăugat o piesă de puzzle de mai sus acesta 1008 00:46:34,040 --> 00:46:35,280 și mai presus de aceasta. 1009 00:46:35,280 --> 00:46:38,870 Deci, acum, dacă am rulat acest lucru, salut-2, Enter. 1010 00:46:38,870 --> 00:46:41,180 Așteaptă un minut. 1011 00:46:41,180 --> 00:46:41,830 Ce sa întâmplat? 1012 00:46:41,830 --> 00:46:43,570 Nu e nici o comportă diferit. 1013 00:46:43,570 --> 00:46:44,200 Da. 1014 00:46:44,200 --> 00:46:46,010 >> Audiența: Nu ai fugit face din nou. 1015 00:46:46,010 --> 00:46:47,968 >> David J. MALAN: Nu am executați face din nou, dreptate. 1016 00:46:47,968 --> 00:46:49,430 Așa că m-am schimbat codul sursă. 1017 00:46:49,430 --> 00:46:50,638 Dar, din nou, nu e asta flux. 1018 00:46:50,638 --> 00:46:54,530 Codul sursă prin intermediul compilatorului dă Ești nou cod obiect, sau 0 si 1. 1019 00:46:54,530 --> 00:47:00,209 Așa că am nevoie de fapt, make reluare salut-2 Enter. 1020 00:47:00,209 --> 00:47:01,750 OK, ceva pare să se fi întâmplat. 1021 00:47:01,750 --> 00:47:04,220 Dot slash salut-2. 1022 00:47:04,220 --> 00:47:05,390 Numele tău te rog. 1023 00:47:05,390 --> 00:47:09,990 Și să fie clar acum, de ce este cursorul pe aceeași linie? 1024 00:47:09,990 --> 00:47:10,490 Exact. 1025 00:47:10,490 --> 00:47:13,020 Nu am pus backslash n aici, în codul meu. 1026 00:47:13,020 --> 00:47:16,110 Așa că acum pot scrie ceva de genul Daven, Enter. 1027 00:47:16,110 --> 00:47:18,710 Eu pot rula din nou și tastați ceva de genul Gabe, Enter, 1028 00:47:18,710 --> 00:47:22,250 și vom obține un alt program din nou și din nou și din nou. 1029 00:47:22,250 --> 00:47:28,940 >> Acum în cele din urmă vom avea nevoie de pentru a utiliza câteva capacități diferite. 1030 00:47:28,940 --> 00:47:32,860 Avem nevoie de a introduce în cele din urmă unele condițiile de a face lucruri condiționat. 1031 00:47:32,860 --> 00:47:35,550 Poate cele mai rapide astfel încât să putem face lucruri din nou și din nou. 1032 00:47:35,550 --> 00:47:38,220 >> Poate că ar fi frumos dacă am ar putea pune în aplicare propriile noastre functii, 1033 00:47:38,220 --> 00:47:41,355 ca și cum am putea să pună în aplicare propria noastră printf sau propria noastră versiune a getString 1034 00:47:41,355 --> 00:47:45,870 și GetFlow, pentru că în cele din urmă chiar folosind acest mediu de linie de comandă 1035 00:47:45,870 --> 00:47:49,780 putem face chiar mai mult vizual interesant de lucruri. 1036 00:47:49,780 --> 00:47:51,950 >> Într-adevăr, în concluzie lasă-mă să fac asta. 1037 00:47:51,950 --> 00:47:54,020 Am de gând să merg mai departe și închide aceste ferestre 1038 00:47:54,020 --> 00:47:57,400 și deschide această pictogramă aici, care este doar o mai mare 1039 00:47:57,400 --> 00:48:00,020 versiune a încorporat fereastră de terminal. 1040 00:48:00,020 --> 00:48:02,329 Deci Gedit nu numai locul de codul meu, 1041 00:48:02,329 --> 00:48:05,620 dar, de asemenea, o construit în fereastră terminal, fereastră în alb și negru, unde pot rula 1042 00:48:05,620 --> 00:48:06,230 comenzi. 1043 00:48:06,230 --> 00:48:08,600 >> Sa intamplat sa deschid o versiune mai mare de acest lucru. 1044 00:48:08,600 --> 00:48:11,170 Și acum am de gând să merg în dosarul pe care am deja 1045 00:48:11,170 --> 00:48:13,150 pune în avans pe site-ul cursului. 1046 00:48:13,150 --> 00:48:16,720 Și am de gând să merg mai departe și deschide un fișier numit thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 care a fost scris de altcineva. 1048 00:48:18,710 --> 00:48:21,220 >> Și dacă ne uităm la acest lucru, acest lucru nu este genul de cod 1049 00:48:21,220 --> 00:48:24,370 vom fi scris de la Scopul acestui cod 1050 00:48:24,370 --> 00:48:28,450 a fost de a scrie cea mai frumoasa Căutați cod care el sau ea ar putea, 1051 00:48:28,450 --> 00:48:31,290 indiferent dacă sunt sau nu o altă ființă umană ar putea vreodată 1052 00:48:31,290 --> 00:48:33,660 înțelege acest cod. 1053 00:48:33,660 --> 00:48:37,050 >> Într-adevăr, în fiecare an, nu e ceea ce-i numit un concurs C mascată, care 1054 00:48:37,050 --> 00:48:39,570 este pentru geeks reale care scriu cod care nimeni altcineva nu poate citi, 1055 00:48:39,570 --> 00:48:42,050 dar care face ceva, fie foarte simplu sau într-adevăr uimitor. 1056 00:48:42,050 --> 00:48:43,890 Și ne-am gândit să încheia cu acest aspect 1057 00:48:43,890 --> 00:48:48,300 la ceva care este destul de uimitor este posibil să fi văzut o dată înainte. 1058 00:48:48,300 --> 00:48:52,650 Dar vom ajunge la această notă, slash punct, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Acest lucru atunci este ceea ce așteaptă. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Asta e pentru CS50. 1062 00:48:58,500 --> 00:48:59,935 Ne vedem miercuri. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [MUSIC JOC] 1065 00:49:10,016 --> 00:53:31,883