1 00:00:00,000 --> 00:00:01,500 >> [MUSIC JOC] 2 00:00:01,500 --> 00:00:11,000 3 00:00:11,000 --> 00:00:16,110 >> DAVID MALAN: Bine este CS50 iar acesta este sfârșitul de săptămână o. 4 00:00:16,110 --> 00:00:20,760 Așa că mi-ar plăcea să introducă fostul meu advisee, Andel Duff, care face nu numai 5 00:00:20,760 --> 00:00:25,460 iPhone 5 se află, precum și acest lucru pupitru, el face, de asemenea masini. 6 00:00:25,460 --> 00:00:27,927 7 00:00:27,927 --> 00:00:29,510 Ansel DUFF: Cum merge, toată lumea? 8 00:00:29,510 --> 00:00:31,980 Vreau doar să vă spun un pic bit despre Formula SAE, de care am 9 00:00:31,980 --> 00:00:32,604 Sunt căpitanul. 10 00:00:32,604 --> 00:00:33,437 Este o echipă MIT. 11 00:00:33,437 --> 00:00:35,520 Vreau doar să-ți spun baieti un pic despre asta 12 00:00:35,520 --> 00:00:37,520 și sperăm genera un oarecare interes. 13 00:00:37,520 --> 00:00:41,590 >> Deci, permiteți-mi să treacă printr-o câteva lucruri despre echipa noastră. 14 00:00:41,590 --> 00:00:43,640 Deci suntem complet alerga elev, în care toate 15 00:00:43,640 --> 00:00:47,300 de proiectare membri, simula, de testare, și producător un subsistem 16 00:00:47,300 --> 00:00:48,090 a masinii. 17 00:00:48,090 --> 00:00:51,240 Avem propriile noastre magazin mașină și garaje, și N52-- sau rău, 18 00:00:51,240 --> 00:00:54,140 N51-- care este în aceeași clădire ca Muzeul de Știință MIT. 19 00:00:54,140 --> 00:00:55,990 Și noi suntem oameni care conduce masina. 20 00:00:55,990 --> 00:00:58,340 Există o competiție națională la începutul verii, 21 00:00:58,340 --> 00:01:01,215 și apoi există un schimb de focuri mici concursuri pe tot parcursul anului. 22 00:01:01,215 --> 00:01:04,400 Și apoi vom face instruirea conducătorilor auto zile pentru a obține noi membri cunoștință. 23 00:01:04,400 --> 00:01:08,280 >> Zilele noastre sunt construi pe Sâmbăta de la ora 11 la 20. 24 00:01:08,280 --> 00:01:11,060 Masa de prânz și cina sunt grija de, de la a Bertucci și Beantown 25 00:01:11,060 --> 00:01:12,130 respectiv. 26 00:01:12,130 --> 00:01:15,260 Avem o întâlnire săptămânală și seminar, care este de credit curs. 27 00:01:15,260 --> 00:01:18,560 Ceea ce este nou ca din acest semestru, și ea va fi, de asemenea, pentru semestrul următor, 28 00:01:18,560 --> 00:01:19,940 astfel încât să puteți trece-reg pentru asta. 29 00:01:19,940 --> 00:01:22,960 Și apoi ne-am proiectarea, magazin, și zile de CAD în timpul săptămânii, 30 00:01:22,960 --> 00:01:26,870 în timp ce membrii voința în mod independent Piese CAD, pentru stoc et cetera. 31 00:01:26,870 --> 00:01:29,200 >> Deci, pentru electric inginerie la echipa 32 00:01:29,200 --> 00:01:31,110 avem de tracțiune noastre, sistem de înaltă tensiune, 33 00:01:31,110 --> 00:01:33,390 care se desfășoară la un nominal 300 volți, care include 34 00:01:33,390 --> 00:01:35,360 motoare, controlorii de motoare, și baterii. 35 00:01:35,360 --> 00:01:37,235 Apoi, avem un mic sistem de tensiune, care se desfășoară 36 00:01:37,235 --> 00:01:40,180 la 12 volți, care include controale, CAN noduri, creierul 37 00:01:40,180 --> 00:01:41,570 box, și tabloul de bord. 38 00:01:41,570 --> 00:01:43,890 În ceea ce CS merge, ce facem au întreținere site-ul 39 00:01:43,890 --> 00:01:47,940 că avem nevoie de facut pentru evenimente, calitatea de membru modificări, noi imagini și materiale de PR. 40 00:01:47,940 --> 00:01:51,540 Și apoi ne-am cod care controlează masina de nostru de control al tractiunii, lansare 41 00:01:51,540 --> 00:01:55,750 control, control bord, Vectorizare cuplu, și sisteme de frânare regenerative, care 42 00:01:55,750 --> 00:01:59,170 rula în mod obișnuit în MATLAB, Simulink, LabView și. 43 00:01:59,170 --> 00:02:00,910 >> Spune-i tu un pic despre masina. 44 00:02:00,910 --> 00:02:02,470 Deci, este de aproximativ 500 de lire sterline. 45 00:02:02,470 --> 00:02:04,285 Este reguli limitate la 85 de kilowați. 46 00:02:04,285 --> 00:02:08,310 Acesta are 2 EMRAX 207 motoare în înapoi, unul pentru fiecare roata din spate. 47 00:02:08,310 --> 00:02:11,880 Ea are pachete de baterii construit la comandă de la celule A123 husă prismatice, 48 00:02:11,880 --> 00:02:14,780 în valoare totală de 300 de volți și 5,6 ore de kilowati. 49 00:02:14,780 --> 00:02:17,950 Și e acționare directă cu un raport de 2.64-1 unitate. 50 00:02:17,950 --> 00:02:20,970 Iată câteva imagini noi a luat de el la concurs. 51 00:02:20,970 --> 00:02:25,820 Iată conul spate, nas, și aici sunt motoarele, 52 00:02:25,820 --> 00:02:29,682 aceste discuri mari negre sub et mens manus. 53 00:02:29,682 --> 00:02:32,140 Iată un diapozitiv pe care am tras din schema noastră concurență. 54 00:02:32,140 --> 00:02:35,389 Și aceasta este doar compararea masina noastra la un două mașini disponibile în comerț, 55 00:02:35,389 --> 00:02:38,380 ca KTM XBOW, Ariel Atom, iar Caterha M 7-280. 56 00:02:38,380 --> 00:02:42,110 Dacă sunteți familiarizat cu preț, putere trage greutate, de dolari per cai putere, 57 00:02:42,110 --> 00:02:44,930 de dolari pe cuplu, și mașina noastră le suflă afară din apă. 58 00:02:44,930 --> 00:02:47,520 Dacă aveți întrebări, noteze această adresă de e-mail. 59 00:02:47,520 --> 00:02:50,800 Trage-ne un e-mail la fsae@mit.edu. 60 00:02:50,800 --> 00:02:53,350 >> Suntem fericiți să vorbească despre ceva ce ai vrea. 61 00:02:53,350 --> 00:02:55,600 Studenții de la Harvard sunt un fel a minorității în echipă. 62 00:02:55,600 --> 00:02:58,350 Dacă aveți întrebări cu privire la care vă rugăm să trage-ne un e-mail, 63 00:02:58,350 --> 00:03:00,810 fericit să vorbesc, și am de gând să se întoarcă pe la David. 64 00:03:00,810 --> 00:03:01,550 Multumesc. 65 00:03:01,550 --> 00:03:02,466 Apreciez, băieți. 66 00:03:02,466 --> 00:03:03,615 [Aplauze] 67 00:03:03,615 --> 00:03:07,080 68 00:03:07,080 --> 00:03:10,980 >> DAVID MALAN: Ansel a petrecut vara de lucru cu noi aici, în campus, în CS50 69 00:03:10,980 --> 00:03:11,480 în această vară. 70 00:03:11,480 --> 00:03:13,505 Și, în plus față de lucru pe lucruri cum ar fi becurile binare, 71 00:03:13,505 --> 00:03:16,090 de fapt, el într-adevăr a deschis noastră eyes-- și a mea în particular-- 72 00:03:16,090 --> 00:03:20,535 la ceea ce într-adevăr intersecția nu de hardware și software-ul poate fi. 73 00:03:20,535 --> 00:03:23,410 De fapt, o mulțime de lucruri pe care le doar turneu ce prin sunt în cele din urmă 74 00:03:23,410 --> 00:03:26,030 a creat pentru prima dată în software-ul, și apoi în cele din urmă fabricate 75 00:03:26,030 --> 00:03:27,299 în lumea reală în hardware. 76 00:03:27,299 --> 00:03:29,590 Deci, dacă sunteți interesat în explorarea că intersecție, 77 00:03:29,590 --> 00:03:31,430 poate dura până acest grup. 78 00:03:31,430 --> 00:03:34,140 >> Acum între timp, cei care sunt fani ai tehnologiei, 79 00:03:34,140 --> 00:03:36,140 și produse Apple din special știți că există 80 00:03:36,140 --> 00:03:37,860 fost câteva anunțuri ieri. 81 00:03:37,860 --> 00:03:39,776 Dar ne-am gândit să arate tu unul care a venit din 82 00:03:39,776 --> 00:03:43,590 câteva zile înainte ca nu s-ar fi văzut. 83 00:03:43,590 --> 00:03:46,150 >> JORGEN EGHAMMER: Stii, o dată în ceva vreme 84 00:03:46,150 --> 00:03:49,540 vine de-a lungul care schimbă modul în care trăim. 85 00:03:49,540 --> 00:03:53,479 Un dispozitiv atât de simplu și intuitiv folosindu-l simte aproape familiar. 86 00:03:53,479 --> 00:03:59,710 87 00:03:59,710 --> 00:04:04,138 Introducerea 2015 catalog IKEA. 88 00:04:04,138 --> 00:04:10,420 Nu este o carte digitală sau un e-book, este o carte-carte. 89 00:04:10,420 --> 00:04:14,440 >> Primul lucru de remarcat este nici o cabluri, nu chiar un cablu de alimentare. 90 00:04:14,440 --> 00:04:18,519 2015 Catalogul IKEA este complet încărcat, 91 00:04:18,519 --> 00:04:20,550 și de viață a bateriei este veșnică. 92 00:04:20,550 --> 00:04:27,300 Interfața este de 7,5 de 8 inch, dar se poate extinde la 15 de 8 inch. 93 00:04:27,300 --> 00:04:32,410 Navigarea se bazeaza pe simtul tactil Tehnologia pe care o puteți simți de fapt. 94 00:04:32,410 --> 00:04:37,120 >> Conținutul vine pre-instalat prin 328 de pagini de înaltă definiție 95 00:04:37,120 --> 00:04:40,180 de a inspira idei de mobilier acasă. 96 00:04:40,180 --> 00:04:43,740 Pentru a începe navigarea, pur și simplu atingeți și trageți. 97 00:04:43,740 --> 00:04:50,870 La dreapta la stânga pentru a merge mai departe, la stânga la dreapta pentru a muta înapoi. 98 00:04:50,870 --> 00:04:52,770 >> Observați altceva? 99 00:04:52,770 --> 00:04:53,780 Asta-i drept. 100 00:04:53,780 --> 00:04:55,190 Nu lag. 101 00:04:55,190 --> 00:04:58,400 Fiecare pagină de cristal sarcini instantaneu, 102 00:04:58,400 --> 00:05:00,586 indiferent de cât de repede va derula. 103 00:05:00,586 --> 00:05:03,710 Dacă doriți să obțineți o privire de ansamblu, doar țineți-l în palma ta, 104 00:05:03,710 --> 00:05:06,816 și folosind doar degetul mare, Viteza parcurge conținutul. 105 00:05:06,816 --> 00:05:10,930 >> Dacă ați găsit ceva pe care doriți să salvați pentru mai târziu, puteți pur și simplu un semn de carte. 106 00:05:10,930 --> 00:05:17,620 Și chiar dacă închideți aplicația, puteți găsi cu ușurință marcajul din nou. 107 00:05:17,620 --> 00:05:18,490 Amazing. 108 00:05:18,490 --> 00:05:20,434 >> [Râsete] 109 00:05:20,434 --> 00:05:21,406 [Aplauze] 110 00:05:21,406 --> 00:05:26,760 111 00:05:26,760 --> 00:05:29,870 Așa că ne aduce la la sfârșitul săptămânii unul. 112 00:05:29,870 --> 00:05:31,760 Câteva anunțuri acum. 113 00:05:31,760 --> 00:05:33,440 Deci, de secționare este acum în curs de desfășurare. 114 00:05:33,440 --> 00:05:36,860 Du-te la acest URL aici cândva între acum și vineri la prânz 115 00:05:36,860 --> 00:05:39,960 pentru a specifica de fapt, dacă sunteți printre cei mai puțin confortabil, mai mult 116 00:05:39,960 --> 00:05:41,690 confortabil, sau undeva în între. 117 00:05:41,690 --> 00:05:44,511 >> Aceasta este de obicei una dintre cele lucruri pe care le doar un fel de știu. 118 00:05:44,511 --> 00:05:47,510 Și, de fapt, cei care sunt mai puțin confortabil, probabil, știți la fel de mult, 119 00:05:47,510 --> 00:05:49,634 aceia dintre voi care sunt mai mult confortabil știu la fel de mult, 120 00:05:49,634 --> 00:05:54,960 și din nou, dacă nu sunteți destul de sigur care din aceste cupe se încadrează în esti 121 00:05:54,960 --> 00:05:56,210 probabil undeva la mijloc. 122 00:05:56,210 --> 00:05:59,810 Dar fiți siguri, puteți schimba după câteva săptămâni dacă va fi nevoie. 123 00:05:59,810 --> 00:06:02,620 >> Între timp, pentru săptămâna viitoare nu începem secțiuni per se, 124 00:06:02,620 --> 00:06:04,760 dar super-secțiuni, care sunt deschise pentru toți studenții. 125 00:06:04,760 --> 00:06:08,220 Acest lucru vine duminică la o locație la fi anunțate pe site-ul curs 126 00:06:08,220 --> 00:06:10,190 vom avea unul pentru cei mai puțin confortabil, 127 00:06:10,190 --> 00:06:12,470 precum și unul pentru cei mai confortabil. 128 00:06:12,470 --> 00:06:15,460 Iar cei undeva în între Puteți alege care dintre cei doi, 129 00:06:15,460 --> 00:06:17,360 sau ambele, dacă doriți, să stea în pe. 130 00:06:17,360 --> 00:06:19,630 Iar accentul de cele va fi în cele din urmă pe C, 131 00:06:19,630 --> 00:06:22,440 care vom continua nostru conversație de azi. 132 00:06:22,440 --> 00:06:25,070 >> Problema stabilit între timp este 0 sperăm că în mâinile tale. 133 00:06:25,070 --> 00:06:27,500 Oficial până mâine, Joi, la prânz. 134 00:06:27,500 --> 00:06:29,490 Dacă nu bani într-o singură de dvs. de 5 zile de întârziere, 135 00:06:29,490 --> 00:06:31,780 care ar aduce până vineri la prânz. 136 00:06:31,780 --> 00:06:34,420 Problema set 1 între timp va fi postate pe site-ul cursului. 137 00:06:34,420 --> 00:06:37,381 Și acest lucru va fi primul nostru incursiune ca o clasă în C. 138 00:06:37,381 --> 00:06:40,630 Și că spec problema setat va umbla printr-o mulțime de mecanicii de ce 139 00:06:40,630 --> 00:06:43,960 Am început să vorbim despre luni, și vom continua vorbim despre ziua de azi. 140 00:06:43,960 --> 00:06:46,770 C, Linux, CS50 aparat, toate acestea 141 00:06:46,770 --> 00:06:48,990 va va astepta in caietul de sarcini. 142 00:06:48,990 --> 00:06:52,840 >> Orele de lucru între timp sunt în curs de desfășurare, în sala de mese de licență. 143 00:06:52,840 --> 00:06:56,240 Mergeți la această adresă URL aici pentru a vedea programa pentru seara asta și mâine, 144 00:06:56,240 --> 00:06:57,930 dacă doriți să se împărtășească. 145 00:06:57,930 --> 00:07:01,920 Întrebări Intre timp, astfel încât să au posibilitatea de a pune întrebări 146 00:07:01,920 --> 00:07:05,860 asincron, 24/7, dai seama că ești nu se limitează la secțiuni și birou 147 00:07:05,860 --> 00:07:09,530 ore, ci mai degrabă acest instrument aici, CS50 Discutați la care URL 148 00:07:09,530 --> 00:07:12,150 va fi cursului on-line software-ul de bord buletin, prin care 149 00:07:12,150 --> 00:07:15,030 puteți pune întrebări de colegii de clasă și, de asemenea, personal. 150 00:07:15,030 --> 00:07:18,492 Deci, ține cont de faptul că a resurselor, precum. 151 00:07:18,492 --> 00:07:20,200 Între timp, o tradiție începe această vineri. 152 00:07:20,200 --> 00:07:23,200 Așa cum poate ați zărit de la video de teaser de miercurea trecută, 153 00:07:23,200 --> 00:07:25,510 avem o tradiție mai în fiecare vineri în timpul mandatului 154 00:07:25,510 --> 00:07:28,750 de a lua aproximativ 50 de elevi și personal la un restaurant local, numit 155 00:07:28,750 --> 00:07:31,510 Foc și gheață, la care suntem de obicei, sa alăturat de către unii absolventi 156 00:07:31,510 --> 00:07:33,850 sau prieteni din industrie la general aspire 157 00:07:33,850 --> 00:07:35,780 pentru a face o mare clasă simt mai mic. 158 00:07:35,780 --> 00:07:37,560 Deci, este un prânz complet casual. 159 00:07:37,560 --> 00:07:40,160 O grămadă de noi, personalul mai ales, va juca scaune muzicale 160 00:07:40,160 --> 00:07:43,360 și chat-ul cu elevii despre 50, viata in afara de 50, 161 00:07:43,360 --> 00:07:46,510 viață în viitor, în lumea reală, Vorbesc despre oportunitățile de angajare 162 00:07:46,510 --> 00:07:47,680 cu prietenii din industrie. 163 00:07:47,680 --> 00:07:51,110 >> Deci, dacă doriți să vă alăturați nouă vineri, cap la acest URL aici. 164 00:07:51,110 --> 00:07:54,180 Spațiul este limitat, dar vom face acest lucru recurringly pe întreaga durată. 165 00:07:54,180 --> 00:07:57,380 Mergeți acolo pentru cs50.harvard.edu/rsvp. 166 00:07:57,380 --> 00:07:59,380 Și dacă nu te în de data aceasta, pentru a nu vă faceți griji. 167 00:07:59,380 --> 00:08:02,390 Vom face acest lucru din nou în săptămânile următoare, de asemenea. 168 00:08:02,390 --> 00:08:05,434 >> Deci, aceasta este imaginea am pictat săptămâna trecută, 169 00:08:05,434 --> 00:08:07,350 și tu ai fost, probabil, a abuza de până acum. 170 00:08:07,350 --> 00:08:10,360 Dar să încercați să vă conectați acest lucru acum la ceea ce vom face azi 171 00:08:10,360 --> 00:08:11,440 și mai departe. 172 00:08:11,440 --> 00:08:14,760 Aș putea avea un voluntar? 173 00:08:14,760 --> 00:08:16,000 În regulă, sau mai multe. 174 00:08:16,000 --> 00:08:18,460 Ce zici de aici cu privire la sfârșit, în tricoul albastru. 175 00:08:18,460 --> 00:08:20,329 Hai sus, care e numele tău? 176 00:08:20,329 --> 00:08:20,870 ALANA: Alana. 177 00:08:20,870 --> 00:08:21,661 DAVID MALAN: Alana. 178 00:08:21,661 --> 00:08:25,100 Deci, Alana, pentru doar un moment-- nice to meet tu-- 179 00:08:25,100 --> 00:08:28,260 este de gând să joace rolul din această funcție aici. 180 00:08:28,260 --> 00:08:31,290 Blocul violet care le-am numit până acum o funcție. 181 00:08:31,290 --> 00:08:34,830 Deci, ce am de gând să merg înainte aici și de a oferi Alana 182 00:08:34,830 --> 00:08:38,380 este un ecuson mic, pentru a face clar ce rol joci. 183 00:08:38,380 --> 00:08:39,753 >> Deci, va fi blocul zicem. 184 00:08:39,753 --> 00:08:41,419 Dacă doriți să mergeți mai departe și a pus asta pe. 185 00:08:41,419 --> 00:08:43,169 Și vom păstra această super-simplu. 186 00:08:43,169 --> 00:08:46,180 În cazul în care obiectivul la îndemână este pur și simplu acum să pună în aplicare cu Alana, 187 00:08:46,180 --> 00:08:49,710 acest așa-numitele spun bloc, aici e cum o să funcționeze. 188 00:08:49,710 --> 00:08:52,574 Am avem-- să-i zicem un argument sau parametru, 189 00:08:52,574 --> 00:08:54,240 este într-adevăr doar o foaie albă de hârtie. 190 00:08:54,240 --> 00:08:57,239 Și e alb la fel de fi o reminiscență din caseta de alb, în ​​care vă 191 00:08:57,239 --> 00:08:58,080 pot scrie cuvinte. 192 00:08:58,080 --> 00:09:00,660 >> Între timp, am de gând să merg aici. 193 00:09:00,660 --> 00:09:06,560 Am de gând să merg mai departe și scrie H-E-L-L-O virgulă lume. 194 00:09:06,560 --> 00:09:09,972 Și acum, după cum spun programator, nu face de fapt, știu cum să spun ceva. 195 00:09:09,972 --> 00:09:12,180 Pot veni cu cuvintele, dar eu nu fac neapărat 196 00:09:12,180 --> 00:09:15,220 știu cum să mă exprim verbal sau de pe ecran. 197 00:09:15,220 --> 00:09:17,280 Și așa cum am de gând să faceți este să luați această piesă 198 00:09:17,280 --> 00:09:21,157 de funcționalitate, a căror input-- sau argument, așa cum o vom numi, 199 00:09:21,157 --> 00:09:23,990 Am scris pe această bucată de paper-- și am de gând să-l externalizeze. 200 00:09:23,990 --> 00:09:26,831 >> Și într-adevăr, asta e rolul pe care funcționează într-un limbaj de programare 201 00:09:26,831 --> 00:09:27,330 poate juca. 202 00:09:27,330 --> 00:09:29,246 Ceva de genul cuvânt bloc pot fi externalizate 203 00:09:29,246 --> 00:09:32,074 pentru cineva care stie cu adevarat ceea ce ea sau el este vorba. 204 00:09:32,074 --> 00:09:33,990 Deci, dacă vei trece peste aici pentru o clipă, 205 00:09:33,990 --> 00:09:40,092 Am de gând să treacă această intrare pentru Alana, și vă rugăm să spun acest lucru de intrare. 206 00:09:40,092 --> 00:09:41,202 >> ALANA: Buna ziua, lume. 207 00:09:41,202 --> 00:09:42,160 DAVID MALAN: Asta este. 208 00:09:42,160 --> 00:09:43,326 Astfel încât să existe o funcție. 209 00:09:43,326 --> 00:09:46,556 Acum putem lua un pic mai mult, putem face un pas înainte aici. 210 00:09:46,556 --> 00:09:48,180 Pentru că a fost în mod clar underwhelming. 211 00:09:48,180 --> 00:09:51,670 Deci, hai sa acum converti acest lucru ceva un pic mai sofisticat. 212 00:09:51,670 --> 00:09:53,630 >> Deci, aceasta este, desigur, versiunea C. 213 00:09:53,630 --> 00:09:56,760 Deci, acum, dacă doriți să luați că un off, care eticheta cu numele off, 214 00:09:56,760 --> 00:09:58,530 și hai să te pun pe un nume nou. 215 00:09:58,530 --> 00:10:00,850 Dar fundamental esti joacă același rol, 216 00:10:00,850 --> 00:10:03,400 doar așa se întâmplă la fi numit printf acum. 217 00:10:03,400 --> 00:10:06,930 >> Povestea este, desigur, O să fi-- probabil 218 00:10:06,930 --> 00:10:09,317 la fel cum este underwhelming-- Va fi următoarele. 219 00:10:09,317 --> 00:10:10,650 Acum sunteți funcția printf. 220 00:10:10,650 --> 00:10:13,300 Eu sunt apelantului, sau programator, care vrea 221 00:10:13,300 --> 00:10:15,745 a sta pe umerii oameni în trecut ca tine, 222 00:10:15,745 --> 00:10:18,670 care au dat deja seama cum a de fapt scrie ceva jos. 223 00:10:18,670 --> 00:10:20,650 Și astfel această dată, mai degrabă decât spun că sa 224 00:10:20,650 --> 00:10:22,255 folosi de fapt ecran nostru aici. 225 00:10:22,255 --> 00:10:24,130 Deci, dacă doriți să-și intensifice pe aici, am de gând 226 00:10:24,130 --> 00:10:27,196 pentru a trece din nou acest drept de intrare la prietenul meu printf. 227 00:10:27,196 --> 00:10:29,320 Daca ai putea merge mai departe și imprima că pe ecran, 228 00:10:29,320 --> 00:10:31,611 pur și simplu prin tragere cu dumneavoastră degetul pe ecran negru. 229 00:10:31,611 --> 00:10:43,680 230 00:10:43,680 --> 00:10:44,180 Excelent. 231 00:10:44,180 --> 00:10:47,350 Bine, deci o mulțime de suspans pentru cum că a fost de gând să se joace afară. 232 00:10:47,350 --> 00:10:51,390 >> Deci, acum, să luăm lucrurile unul notch finală, dacă am putea, după cum urmează. 233 00:10:51,390 --> 00:10:53,980 Deci, acesta este un program C așa cum am spus și data trecută. 234 00:10:53,980 --> 00:10:57,460 Și aceasta doar face ceea ce ai făcut, l afiseaza la ecran, salut, lume. 235 00:10:57,460 --> 00:11:00,290 Chiar dacă există în mod clar o mult de lucruri distrag atenția acolo. 236 00:11:00,290 --> 00:11:03,630 Dar să luăm lucrurile la un alt nivel și introduce această versiune, care amintesc 237 00:11:03,630 --> 00:11:06,160 a fost a treia versiune care am ajuns cu ultima dată. 238 00:11:06,160 --> 00:11:09,120 >> Și acum nu e clar două utilizări ale printf. 239 00:11:09,120 --> 00:11:12,280 Există două apeluri la Alana în acest caz pentru printf, 240 00:11:12,280 --> 00:11:14,740 dar există, de asemenea, un apel la o altă funcție. 241 00:11:14,740 --> 00:11:17,150 Ce este această funcție în mod clar? 242 00:11:17,150 --> 00:11:17,650 GetString. 243 00:11:17,650 --> 00:11:18,980 >> Putem obține mai mult de un voluntar? 244 00:11:18,980 --> 00:11:20,980 OK, hai sus. 245 00:11:20,980 --> 00:11:21,805 Care e numele tău? 246 00:11:21,805 --> 00:11:22,990 >> JAVIER: Javier. 247 00:11:22,990 --> 00:11:24,750 >> DAVID MALAN: Javier, haide sus. 248 00:11:24,750 --> 00:11:27,270 Deci, rolul lui Javier este pe această bucată de hârtie. 249 00:11:27,270 --> 00:11:28,860 Ceea ce am de gând pentru a apela generic uri. 250 00:11:28,860 --> 00:11:32,250 Acum, aceasta este o variabilă, este de tip șir, așa cum rezultă 251 00:11:32,250 --> 00:11:34,290 prin care a doua linie în mijloc acolo. 252 00:11:34,290 --> 00:11:36,540 Și aș vrea să te duci adu-mi un șir. 253 00:11:36,540 --> 00:11:40,120 În mod specific capul în jos pentru orchestra secțiune și adu-mi numele cuiva, 254 00:11:40,120 --> 00:11:43,142 și reveni cu o variabilă care conține această valoare. 255 00:11:43,142 --> 00:11:44,225 Acesta poate fi oricine vrei. 256 00:11:44,225 --> 00:11:47,590 257 00:11:47,590 --> 00:11:48,520 >> Aici vom merge. 258 00:11:48,520 --> 00:11:53,620 259 00:11:53,620 --> 00:11:55,960 În regulă, Javier este scriind numele. 260 00:11:55,960 --> 00:12:02,210 261 00:12:02,210 --> 00:12:03,280 În regulă. 262 00:12:03,280 --> 00:12:05,740 Putem ghici, probabil, tot cum acest lucru se întâmplă pentru a juca. 263 00:12:05,740 --> 00:12:07,489 Poate că te belaboring punctul de ceea ce 264 00:12:07,489 --> 00:12:10,320 o funcție este de a face, dar cu toate acestea, vă mulțumesc foarte mult. 265 00:12:10,320 --> 00:12:13,890 >> Deci, Javier a revenit acest șir aici, care, nu se poate vedea destul, 266 00:12:13,890 --> 00:12:15,800 Jonathan este șirul pe care le-am primit. 267 00:12:15,800 --> 00:12:18,330 Deci, acum ce am de fapt de gând pentru a oferi la Alana, deși 268 00:12:18,330 --> 00:12:20,150 este ceva un pic diferit. 269 00:12:20,150 --> 00:12:23,800 Pentru că în această versiune a Programul, primul e precizați numele tău. 270 00:12:23,800 --> 00:12:26,160 Deci, primul argument Am nevoie pentru a oferi Alana 271 00:12:26,160 --> 00:12:33,030 cu va fi literalmente de stat numele. 272 00:12:33,030 --> 00:12:35,280 În regulă, atât de simplu ca și Mi-ar preda asta. 273 00:12:35,280 --> 00:12:36,730 Și, după cum am scrie în sus argument următor, dacă 274 00:12:36,730 --> 00:12:39,230 vreau să merg mai departe și de a scrie acest pe placa, să mergem mai departe 275 00:12:39,230 --> 00:12:42,659 și de a face exemplul finală aici pentru a face clar ce în cele din urmă trebuie să se întâmple. 276 00:12:42,659 --> 00:12:44,450 Deci spuneti numele tău, scrie-l spre partea de sus 277 00:12:44,450 --> 00:12:47,220 dacă nu te superi, doar pentru ca Avem loc pentru o linie secundă. 278 00:12:47,220 --> 00:12:52,890 Pentru ca ultimul lucru pe care am de gând pentru a vă oferi acum cu nu este una, 279 00:12:52,890 --> 00:12:57,220 dar două bucăți de hârtie. 280 00:12:57,220 --> 00:12:58,074 >> În regulă. 281 00:12:58,074 --> 00:13:01,920 H-E-L-L-O virgulă și apoi o linie goală. 282 00:13:01,920 --> 00:13:04,780 Deci, ceea ce am la îndemână Alana acum este ceva un pic diferit. 283 00:13:04,780 --> 00:13:08,600 Nu numai ca este ea obtinerea acest lucru, în cazul în care completați în gol reprezintă 284 00:13:08,600 --> 00:13:12,050 că percent-- ceea ce a fost înlocuitor ne-am folosit? 285 00:13:12,050 --> 00:13:13,890 Da, așa e la sută. 286 00:13:13,890 --> 00:13:16,530 Între timp, am de gând să treacă ei într-un al doilea argument, care 287 00:13:16,530 --> 00:13:19,290 este exact ceea ce Javier recuperate de la Jonathan. 288 00:13:19,290 --> 00:13:20,534 >> Deci, permiteți-mi să vă dau aceste două. 289 00:13:20,534 --> 00:13:22,575 Dacă doriți să, merge mai departe și de imprimare în acest sens. 290 00:13:22,575 --> 00:13:25,660 291 00:13:25,660 --> 00:13:28,130 Ce se întâmplă în cele din urmă acum este, Alana din nou 292 00:13:28,130 --> 00:13:29,410 joacă rolul de printf. 293 00:13:29,410 --> 00:13:32,160 Javier se juca rolul getString. 294 00:13:32,160 --> 00:13:34,700 Așa că va fi suvenir dumneavoastră. 295 00:13:34,700 --> 00:13:39,910 Și în cele din urmă ce se întâmplă, în ciuda acest hello-- merge Da mai departe și virgulă. 296 00:13:39,910 --> 00:13:41,410 ALANA: am primit acest dar sau nu? 297 00:13:41,410 --> 00:13:43,451 DAVID MALAN: Da, tu amândoi au primit-o dată. 298 00:13:43,451 --> 00:13:45,740 Deci, ideea este că poate răsturna acum pagina 299 00:13:45,740 --> 00:13:50,000 să se ocupe de-al doilea de cele două intrări. 300 00:13:50,000 --> 00:13:53,280 Deci, aceasta este doar pentru ciocan acasă punctul că în timp ce Alana executat 301 00:13:53,280 --> 00:13:55,830 această linie verde aici, și apoi Javier a făcut asta pentru noi 302 00:13:55,830 --> 00:13:57,820 și să se întoarcă la mine ceva vom suna s, dar a fost într-adevăr 303 00:13:57,820 --> 00:13:59,520 doar că bucată de hârtie de propriul său. 304 00:13:59,520 --> 00:14:02,320 Iar acum Alana a făcut această a treia linie. 305 00:14:02,320 --> 00:14:06,010 >> Și chiar dacă toate acestea arată atât de incredibil de criptic, probabil, 306 00:14:06,010 --> 00:14:08,870 la prima vedere, într-adevăr este la fel de simplu ca asta. 307 00:14:08,870 --> 00:14:11,390 Trecerea intrări în jurul, obtinerea rezultatelor, fie 308 00:14:11,390 --> 00:14:14,560 fiind predat fizic înapoi ceva, sau de a vedea un efect secundar ca asta. 309 00:14:14,560 --> 00:14:17,170 Ceva vizual scris pe ecran. 310 00:14:17,170 --> 00:14:19,990 Deci, să mergem mai departe și mulțumesc Alana și Javier, 311 00:14:19,990 --> 00:14:25,012 care a fost aici, pentru alături de noi aici. 312 00:14:25,012 --> 00:14:25,934 >> [Aplauze] 313 00:14:25,934 --> 00:14:29,360 314 00:14:29,360 --> 00:14:33,480 >> Deci, acum, să luăm de la sine cat de directă toate acestea ar putea fi. 315 00:14:33,480 --> 00:14:36,775 Și să procedeze la realitate face ceva în codul actual. 316 00:14:36,775 --> 00:14:40,620 Deci, pe ecran aici este un screenshot de așa-numitul aparat CS50. 317 00:14:40,620 --> 00:14:43,980 Și dacă ar fi să la, ca o 02:00, miercuri după-amiază, 318 00:14:43,980 --> 00:14:46,602 explica într-o oarecare prieten ce aparatul este CS50, 319 00:14:46,602 --> 00:14:48,185 cum l-ai defini într-o propoziție? 320 00:14:48,185 --> 00:14:52,160 321 00:14:52,160 --> 00:14:53,240 Orice propoziție? 322 00:14:53,240 --> 00:14:54,876 Da? 323 00:14:54,876 --> 00:14:57,334 STUDENT: E ca un program de care face calculator toată lumea 324 00:14:57,334 --> 00:14:58,460 rula cu același sistem. 325 00:14:58,460 --> 00:14:59,210 DAVID MALAN: Buna! 326 00:14:59,210 --> 00:15:02,810 Este un program care permite tuturor calculator pentru a rula cu același sistem. 327 00:15:02,810 --> 00:15:04,920 Este un fel de ta copie a unei funcționare 328 00:15:04,920 --> 00:15:07,540 sistem ce se întâmplă la fi numit Ubuntu Linux. 329 00:15:07,540 --> 00:15:11,070 Și ruleaza în mod eficient în interiorul o fereastră pe cont propriu Mac sau PC, 330 00:15:11,070 --> 00:15:15,080 astfel încât în ​​acest fel drept din poarta în săptămâna 1, toată lumea aici, în clasa 331 00:15:15,080 --> 00:15:17,590 are acces la aceleași instrumente, aceeași configurație, 332 00:15:17,590 --> 00:15:21,250 și nu există nici un specific curbă de învățare la un Mac sau un PC, în special. 333 00:15:21,250 --> 00:15:25,620 >> Acum ne-am deschis, în interiorul CS50 aparat, luni, acest program aici. 334 00:15:25,620 --> 00:15:27,040 Se întâmplă să fie numit gedit. 335 00:15:27,040 --> 00:15:29,050 Dar asta e de fapt doar un editor grafic. 336 00:15:29,050 --> 00:15:33,170 E ceva de genul Notepad sau Text Editează pe Windows sau Mac OS, respectiv. 337 00:15:33,170 --> 00:15:36,720 Și mi-am propus că au existat într-adevăr trei părți importante la acest ecran. 338 00:15:36,720 --> 00:15:39,560 Partea de sus este în cazul în care ar scrie codul. 339 00:15:39,560 --> 00:15:44,080 Și asta e în cazul în care ne-am petrecut o mare parte din nostru trei exemple în curs de luni. 340 00:15:44,080 --> 00:15:47,650 Partea de jos am numit ceea ce, această fereastră negru, da? 341 00:15:47,650 --> 00:15:48,640 >> STUDENT: Compiler? 342 00:15:48,640 --> 00:15:51,500 >> DAVID MALAN: Compiler noi accesat prin fereastra. 343 00:15:51,500 --> 00:15:53,040 Dar, în general. 344 00:15:53,040 --> 00:15:54,540 Da, a fost doar o fereastră de terminal. 345 00:15:54,540 --> 00:15:57,780 Acesta este un termen limită de vârstă care doar descrie, în esență, o clipire 346 00:15:57,780 --> 00:16:01,910 prompte, care ani în urmă folosit pentru a fi pe unul dintre aceste monitoare mari de stil CRT. 347 00:16:01,910 --> 00:16:04,300 Dar în zilele noastre e un fel de virtuale în software-ul. 348 00:16:04,300 --> 00:16:06,710 Și Windows Terminal să-i ne scrieți comenzi. 349 00:16:06,710 --> 00:16:11,750 Este un fel de versiune simplificată a interfeței cu utilizatorul sau interfața cu utilizatorul. 350 00:16:11,750 --> 00:16:14,060 Nu este un grafic interfață de utilizator sau GUI, 351 00:16:14,060 --> 00:16:17,250 este o interfață bazată pe text sau o interfață linie de comandă. 352 00:16:17,250 --> 00:16:20,770 >> Și într-adevăr acolo în cele din urmă Am fost în stare să scrie un cod. 353 00:16:20,770 --> 00:16:24,200 După ce am scris un cod, deși, amintesc că am folosit această comandă. 354 00:16:24,200 --> 00:16:26,210 Și, după cum se nume cam sugerează, această 355 00:16:26,210 --> 00:16:29,860 mi permite să fac o program numit Buna ziua. 356 00:16:29,860 --> 00:16:33,400 Dar ceea ce a fost el de fapt face? 357 00:16:33,400 --> 00:16:36,180 Ei bine, make fost de a lua meu de intrare, codul sursa mea, 358 00:16:36,180 --> 00:16:39,380 și convertirea la ce, în cele din urmă? 359 00:16:39,380 --> 00:16:40,060 >> Cod obiect. 360 00:16:40,060 --> 00:16:42,790 Și cod obiect este doar o fantezie fel de a spune zero si unu. 361 00:16:42,790 --> 00:16:46,420 Și apoi, o dată mi-am dorit pentru a rula acest cod obiect, 362 00:16:46,420 --> 00:16:50,940 o dată am vrut să treacă drept de intrare pe cei zero si unu in a mea calculator 363 00:16:50,940 --> 00:16:54,430 creier, așa-numitul CPU sau unități centrale de procesare, 364 00:16:54,430 --> 00:16:55,730 Am avut de a rula programul. 365 00:16:55,730 --> 00:16:59,042 Dar nu a fost destul de simplu pe luni ca doar dublu clic pe pictograma ceva. 366 00:16:59,042 --> 00:17:01,375 Ce loc aveam să face în scopul de a rula un program? 367 00:17:01,375 --> 00:17:04,130 368 00:17:04,130 --> 00:17:07,890 >> Ce a fost asta doilea comanda? 369 00:17:07,890 --> 00:17:09,619 Am auzit un pic slash-uri? 370 00:17:09,619 --> 00:17:10,544 Da, da? 371 00:17:10,544 --> 00:17:12,474 >> STUDENT: Dot slash și numele programului. 372 00:17:12,474 --> 00:17:13,349 DAVID MALAN: Exact. 373 00:17:13,349 --> 00:17:15,030 Dot slash și numele programului. 374 00:17:15,030 --> 00:17:16,210 Acum, ce a vrut să spună asta? 375 00:17:16,210 --> 00:17:19,470 Ei bine, punct este doar un mod arcane de a spune directorul curent. 376 00:17:19,470 --> 00:17:23,440 Orice dosar sunteți în este menționate ca, este reprezentată ca punct. 377 00:17:23,440 --> 00:17:26,680 Slash este doar ceea ce ai văzut în Mac OS și Windows de ani, 378 00:17:26,680 --> 00:17:30,329 este un separator între un director sau dosar și restul de un nume. 379 00:17:30,329 --> 00:17:32,620 În Windows se întâmplă să meargă înapoi, în Linux și Mac 380 00:17:32,620 --> 00:17:34,210 OS se întâmplă să mergi înainte. 381 00:17:34,210 --> 00:17:37,560 Dar e doar separatorul, asa ca este doar un detaliu sintactic neinteresant. 382 00:17:37,560 --> 00:17:40,440 >> Partea suculent este, desigur, numele programului, Buna, ziua. 383 00:17:40,440 --> 00:17:42,650 Și asta e ceea ce fac creat pentru noi. 384 00:17:42,650 --> 00:17:44,910 Este scoasă acest fișier pentru noi. 385 00:17:44,910 --> 00:17:46,700 Dar cum am ajuns la acest punct? 386 00:17:46,700 --> 00:17:48,870 Să acum ask întrebare, ceea ce a fost într-adevăr 387 00:17:48,870 --> 00:17:52,470 întâmplă pe aici, cel puțin cu privire la unele dintre sintaxa? 388 00:17:52,470 --> 00:17:57,000 >> Deci, într-o propoziție sau așa, cum ne-am explica 389 00:17:57,000 --> 00:17:59,020 aceasta prima linie care este evidențiate în verde? 390 00:17:59,020 --> 00:18:02,998 Care a fost prima linie a face, cu privire la programul meu? 391 00:18:02,998 --> 00:18:03,974 Da? 392 00:18:03,974 --> 00:18:05,067 >> STUDENT: [inaudibil]. 393 00:18:05,067 --> 00:18:06,150 DAVID MALAN: Spune-o din nou? 394 00:18:06,150 --> 00:18:08,734 STUDENT: Inclusiv și descărcarea Funcții anterioare [neauzit]. 395 00:18:08,734 --> 00:18:09,483 DAVID MALAN: Bine. 396 00:18:09,483 --> 00:18:11,900 Inclusiv, nu voi spune descărcarea, dar sa zicem 397 00:18:11,900 --> 00:18:15,500 inclusiv funcțiile pe care oamenii s-au scris în trecut. 398 00:18:15,500 --> 00:18:18,260 Și aceste funcții sunt puse în aplicare undeva în computerul meu. 399 00:18:18,260 --> 00:18:20,470 Cineva a scris un fișier cu ani în urmă, și care fișier 400 00:18:20,470 --> 00:18:23,490 este undeva în interiorul CS50 aparat, sau pe hard-disk 401 00:18:23,490 --> 00:18:24,480 mai general. 402 00:18:24,480 --> 00:18:27,810 Și astfel, această linie este în esență spune, du-te găsi acel fișier, I / O standard dot 403 00:18:27,810 --> 00:18:31,740 h, iar copia și lipiți conținutul său chiar aici, pe partea de sus a dosarul meu 404 00:18:31,740 --> 00:18:33,860 așa că nu trebuie să face acest lucru manual eu. 405 00:18:33,860 --> 00:18:40,970 >> Iar printre juiciest piese din interiorul acel fișier am pretins a fost ce funcție? 406 00:18:40,970 --> 00:18:45,740 Ce funcție am spus a fost declarată sau menționat în I / O standard dot h 407 00:18:45,740 --> 00:18:47,120 cel mai probabil? 408 00:18:47,120 --> 00:18:47,900 Printf, nu? 409 00:18:47,900 --> 00:18:50,797 Noi nu a scris printf pe Luni, el doar a existat. 410 00:18:50,797 --> 00:18:52,880 La fel ca Alana venit pe scenă și ea doar 411 00:18:52,880 --> 00:18:55,540 a existat și a știut cum să atragă ceva pe ecran, 412 00:18:55,540 --> 00:18:58,660 deci nu există printf pentru mulți ani. 413 00:18:58,660 --> 00:19:00,240 Și astfel încât acesta este modul în care am acces. 414 00:19:00,240 --> 00:19:03,280 Acum, dacă ne mișcăm pe aici, principal a fost ne-analog 415 00:19:03,280 --> 00:19:06,620 a declarat la piesa de puzzle numit când flag verde clic 416 00:19:06,620 --> 00:19:07,620 în lumea de Scratch. 417 00:19:07,620 --> 00:19:10,130 Este un fel doar a Numele implicit că oamenii 418 00:19:10,130 --> 00:19:13,340 a decis ar reprezenta implicit punct de intrare pentru un program. 419 00:19:13,340 --> 00:19:16,540 Bucată de cod de programare care este executat primul. 420 00:19:16,540 --> 00:19:19,700 >> Între timp, aceste acolade sunt un fel de forma curbată 421 00:19:19,700 --> 00:19:21,410 de o mulțime de aceste piese de reîncărcare galben. 422 00:19:21,410 --> 00:19:24,860 Ei au un fel de a îngloba un întreg grămadă de instrucțiuni împreună. 423 00:19:24,860 --> 00:19:28,350 Deci, doar un fel de se leagă împreună a putea funcționa aferente. 424 00:19:28,350 --> 00:19:33,750 printf, desigur, este o funcție care imprimă pe ecran, așa cum ne-am făcut-o. 425 00:19:33,750 --> 00:19:35,190 >> Ce despre aceste paranteze? 426 00:19:35,190 --> 00:19:38,770 Cum te-ai define-- chiar dacă ai nu programat înainte, dar numai pe bază de 427 00:19:38,770 --> 00:19:41,320 acum pe o creștere sperăm intuiție, ceea ce 428 00:19:41,320 --> 00:19:43,290 sunt paranteze fac pentru noi aici? 429 00:19:43,290 --> 00:19:45,450 Sau ceea ce sunt ei din jur? 430 00:19:45,450 --> 00:19:46,360 Da? 431 00:19:46,360 --> 00:19:49,360 >> STUDENT: Spun ceea ce ai de gând să imprimați cu printf. 432 00:19:49,360 --> 00:19:52,401 >> DAVID MALAN: Da, ei spun ceea ce ai de gând să imprimați cu printf. 433 00:19:52,401 --> 00:19:56,260 Sau, mai general, ele sunt înconjurător intrările la funcția. 434 00:19:56,260 --> 00:19:58,530 Deci, vă puteți gândi aproape dintre aceste paranteze 435 00:19:58,530 --> 00:20:01,620 ca fiind ca metalul clip pe acest clipboard. 436 00:20:01,620 --> 00:20:05,940 Este ceea ce ține, e ceea ce-i vor fi folosite pentru a oferi argumente 437 00:20:05,940 --> 00:20:08,500 în funcție, care, în acest caz se numește printf. 438 00:20:08,500 --> 00:20:12,390 >> Deci, în general, aproape orice timp ce numim o funcție, 439 00:20:12,390 --> 00:20:14,280 vom vedea o pereche de paranteze. 440 00:20:14,280 --> 00:20:17,000 Poate cu ceva în ea, ca acum, poate că nimic din ea. 441 00:20:17,000 --> 00:20:19,770 Dar asta e în cazul în care v-ar pune intrările sau așa-numitele argumente 442 00:20:19,770 --> 00:20:20,680 la o funcție. 443 00:20:20,680 --> 00:20:22,470 >> Iată un astfel de argument. 444 00:20:22,470 --> 00:20:24,467 Am subliniat totul între ghilimele, 445 00:20:24,467 --> 00:20:26,300 pentru că se pare că în acest limbaj numit 446 00:20:26,300 --> 00:20:29,950 C, atunci când doriți să reprezinte o string-- că este un cuvânt sau o expresie 447 00:20:29,950 --> 00:20:33,470 sau chiar un paragraph-- trebuie să înconjoară-o cu ghilimele duble. 448 00:20:33,470 --> 00:20:35,420 Citate Nu simple, ghilimele duble. 449 00:20:35,420 --> 00:20:37,460 Și asta este exact ceea ce am făcut aici. 450 00:20:37,460 --> 00:20:39,900 >> În același timp există un funky, Simbolul spre sfârșitul acolo. 451 00:20:39,900 --> 00:20:41,600 Backslash n. 452 00:20:41,600 --> 00:20:43,460 Ce am spus că a reprezentat? 453 00:20:43,460 --> 00:20:44,093 Da? 454 00:20:44,093 --> 00:20:44,980 >> STUDENT: O nouă linie. 455 00:20:44,980 --> 00:20:45,896 >> DAVID MALAN: linie nouă. 456 00:20:45,896 --> 00:20:47,910 Corect, tu nu faci în general lovi Enter când 457 00:20:47,910 --> 00:20:50,430 Dacă doriți ca programul să scuipe o nouă linie. 458 00:20:50,430 --> 00:20:54,210 Mai degrabă l-ai spune în mod explicit cu această piesă, desigur, arcane 459 00:20:54,210 --> 00:20:58,770 de sintaxă, backslash n, care Vrei o noua linie pentru a merge acolo. 460 00:20:58,770 --> 00:20:59,810 În cele din urmă punct și virgulă. 461 00:20:59,810 --> 00:21:01,560 Noi nu am vorbit într-adevăr prea mult despre acest lucru, 462 00:21:01,560 --> 00:21:04,893 și, de departe, acest lucru va fi otrava de unele de existență pentru prima problema 463 00:21:04,893 --> 00:21:07,990 set, atunci când doar nu a reușit să realizeze ai uitat ceva la fel de prost 464 00:21:07,990 --> 00:21:08,614 ca un punct și virgulă. 465 00:21:08,614 --> 00:21:11,600 Și, în general, se pune nu va rezolva această problemă. 466 00:21:11,600 --> 00:21:13,511 Dar ceea ce o face pentru noi, ați spune? 467 00:21:13,511 --> 00:21:15,670 >> STUDENT: [inaudibil]. 468 00:21:15,670 --> 00:21:17,484 >> DAVID MALAN: Imi pare rau? 469 00:21:17,484 --> 00:21:18,532 >> STUDENT: [inaudibil]. 470 00:21:18,532 --> 00:21:19,990 DAVID MALAN: finisaj o declarație. 471 00:21:19,990 --> 00:21:22,770 Este un fel de perioada de la la sfârșitul anului o propoziție limba engleză, 472 00:21:22,770 --> 00:21:25,790 întrucât, în acest limbă C se încheie o declarație. 473 00:21:25,790 --> 00:21:29,250 O instrucțiune de programare cod pe care doriți doar să spun, 474 00:21:29,250 --> 00:21:30,500 Am terminat cu asta. 475 00:21:30,500 --> 00:21:32,240 Acum, observați că e singurul de aici. 476 00:21:32,240 --> 00:21:34,614 Deci, nu doriți să obțineți în un obicei de punct și virgulă punerea 477 00:21:34,614 --> 00:21:36,190 după fiecare paranteză închisă. 478 00:21:36,190 --> 00:21:38,610 De exemplu, nu e nici unul următor de a anula, și vom 479 00:21:38,610 --> 00:21:40,430 reveni în viitor a ceea ce înseamnă nule. 480 00:21:40,430 --> 00:21:44,080 Dar, în acest caz printf este o funcție, sau o declarație a fi utilizate, 481 00:21:44,080 --> 00:21:47,420 și așa vrem să avem că terminal la sfârșitul de ea. 482 00:21:47,420 --> 00:21:50,980 >> Și eu iau în mod intenționat pe C. Și sincer o mulțime de limbi, cum ar fi C, C ++, 483 00:21:50,980 --> 00:21:55,000 Java, JavaScript, și orice număr de alte limbi au o mulțime de acestea 484 00:21:55,000 --> 00:21:56,730 un fel de detalii sintactice. 485 00:21:56,730 --> 00:22:00,120 Asta cu siguranță dacă sunteți nou la programare puteți excursie cu adevărat în sus. 486 00:22:00,120 --> 00:22:02,307 Și va, marca mea cuvinte, unii dintre voi va 487 00:22:02,307 --> 00:22:04,140 au această experiență în ore de birou sau cu întârziere 488 00:22:04,140 --> 00:22:07,554 pe timp de noapte de lucru la unele p-set, în cazul în care programul naibii doar nu compila, 489 00:22:07,554 --> 00:22:09,470 ea nu se execută, aveți nici o idee despre ceea ce sa întâmplat, 490 00:22:09,470 --> 00:22:11,513 se pare complet logic corect pentru tine. 491 00:22:11,513 --> 00:22:13,596 Și pentru că ai uitat ceva de genul lovind 492 00:22:13,596 --> 00:22:15,250 punct și virgulă la sfârșitul unele linii. 493 00:22:15,250 --> 00:22:17,590 >> Dar acestea sunt tipurile de lucruri pe care le de gând să învețe imediat pentru a vedea. 494 00:22:17,590 --> 00:22:20,048 Și într-adevăr, acestea sunt lucrurile pe care le că și TF lui CA au 495 00:22:20,048 --> 00:22:23,210 a fost un fel de instruiți pentru a vedea mult mai repede decât tine. 496 00:22:23,210 --> 00:22:26,610 Și astfel aceasta este doar de a spune, în timp ce se arunca cu capul în problema set 1 mai ales, 497 00:22:26,610 --> 00:22:28,217 Nu te frustrat de chestia asta. 498 00:22:28,217 --> 00:22:30,050 După ce fel de aclimatiza a lumii, tu 499 00:22:30,050 --> 00:22:35,130 începe să vadă lucruri pe care nu s-ar putea a se vedea la prima vedere aceasta prima saptamana. 500 00:22:35,130 --> 00:22:37,440 >> Deci, codul sursă este ceva de genul asta. 501 00:22:37,440 --> 00:22:40,370 Vrem să-l treacă în așa-numitul compilator. 502 00:22:40,370 --> 00:22:42,850 Și compilator ca am spus oferă ieșire 503 00:22:42,850 --> 00:22:45,660 cunoscut sub numele de cod obiect, așa-numitele zero si unu. 504 00:22:45,660 --> 00:22:47,747 Dar de acolo, ce ne da? 505 00:22:47,747 --> 00:22:49,080 Ei bine, ne dă aceste modele. 506 00:22:49,080 --> 00:22:52,020 Și din nou computerul, Intel în interiorul, 507 00:22:52,020 --> 00:22:54,350 înțelege aceste modele de zero si unu. 508 00:22:54,350 --> 00:22:57,300 Și, uneori, modelul reprezintă un număr zecimal real 509 00:22:57,300 --> 00:22:59,770 așa cum am văzut săptămâna trecută, uneori ea reprezintă o scrisoare 510 00:22:59,770 --> 00:23:02,730 cum am văzut săptămâna trecută, uneori reprezintă o instrucțiune, 511 00:23:02,730 --> 00:23:05,460 cum ar fi imprimarea ceva pe ecran. 512 00:23:05,460 --> 00:23:08,782 >> Deci, printf pentru instance-- ci, mai degrabă, lasă-mă înapoi. 513 00:23:08,782 --> 00:23:11,240 Ne-am luat de la sine că acele zerouri și cele care sunt 514 00:23:11,240 --> 00:23:14,200 produse de acest make comanda. 515 00:23:14,200 --> 00:23:16,050 Dar face nu este un compilator. 516 00:23:16,050 --> 00:23:19,370 Asigurați nu este un lucru la mijloc care este producătoare de zerouri și cele. 517 00:23:19,370 --> 00:23:23,780 Mai degrabă face este doar un foarte convenabil program numit al căror scop în viață 518 00:23:23,780 --> 00:23:27,267 este, în esență, să ne dăm seama cum de a compila programul. 519 00:23:27,267 --> 00:23:29,350 Și l-am folosi în aceste Primele săptămâni, pentru că doar 520 00:23:29,350 --> 00:23:30,910 ne salvează o mulțime de probleme. 521 00:23:30,910 --> 00:23:34,080 >> Dar ceea ce face este cu adevărat face atunci când compilați salut, 522 00:23:34,080 --> 00:23:36,690 este, așa cum am spus și data trecută, este cauta pe hard disk 523 00:23:36,690 --> 00:23:40,620 sau în dosarul curent, pentru fișier numit ceea ce, aparent? 524 00:23:40,620 --> 00:23:41,815 Hello.c, corect? 525 00:23:41,815 --> 00:23:43,190 Asta e doar un fel de convenție. 526 00:23:43,190 --> 00:23:45,620 Este arbitrar, ci că așa stau lucrurile. 527 00:23:45,620 --> 00:23:48,620 A face, dacă specificați doar numele de un program care nu există încă, 528 00:23:48,620 --> 00:23:52,200 o să se uite la codul sursă într-un fișier, în mod implicit înseamnă hello.c. 529 00:23:52,200 --> 00:23:53,530 Și în cazul în care se constată, mare. 530 00:23:53,530 --> 00:23:56,650 Se va converti sursa cod în cod obiect pentru tine. 531 00:23:56,650 --> 00:23:59,670 >> Dar de fiecare dată m-am lovit Enter după rularea face salut, 532 00:23:59,670 --> 00:24:03,560 Îți amintești văzut ultima dată un destul de mult timp și secvență criptic 533 00:24:03,560 --> 00:24:06,430 de alte litere albe și caracterele de pe ecran? 534 00:24:06,430 --> 00:24:11,220 Ei bine, asta a fost comanda real, compilator real, care a fost difuzate. 535 00:24:11,220 --> 00:24:15,500 Deci, compilatorul actual vom folosi de cele mai multe semestru este ceva numit zăngănit. 536 00:24:15,500 --> 00:24:19,280 Unii dintre voi s-ar putea s-au folosit Visual Studio înainte, sau GCC, 537 00:24:19,280 --> 00:24:21,340 sau orice număr de alte compilatoare. 538 00:24:21,340 --> 00:24:22,620 Vom folosi zăngănit. 539 00:24:22,620 --> 00:24:26,950 >> Și zăngănit ne permite de a converti de fapt că codul sursă de codul obiect. 540 00:24:26,950 --> 00:24:29,430 Ce face de fapt acest lucru înseamnă în practică? 541 00:24:29,430 --> 00:24:33,390 Ei bine, lasă-mă să merg într-unul din Dosarele mele din ultimul timp. 542 00:24:33,390 --> 00:24:35,760 În interiorul aparatului CS50. 543 00:24:35,760 --> 00:24:42,080 Și lasă-mă să mergeți mai departe și de a crea această același fișier, includ standard de I / O dot h. 544 00:24:42,080 --> 00:24:42,875 Void main Int. 545 00:24:42,875 --> 00:24:46,000 Și ne vom întoarce în viitor la ce int mijloace și ce înseamnă nule. 546 00:24:46,000 --> 00:24:49,130 Dar pentru acum hai sa facem salut backslash lume n, 547 00:24:49,130 --> 00:24:50,500 doar ca am facut pe bord. 548 00:24:50,500 --> 00:24:53,930 >> Lasă-mă să salvați acest fișier numit hello.c. 549 00:24:53,930 --> 00:24:58,280 Și acum, dacă vreau să compileze acest Am putea-- să-mi mări alerga in-- 550 00:24:58,280 --> 00:25:00,450 face salut intra. 551 00:25:00,450 --> 00:25:02,645 Și acest lucru a fost din nou care linie foarte criptic. 552 00:25:02,645 --> 00:25:05,120 Dar acum, cel puțin un cuvânt probabil sare la tine. 553 00:25:05,120 --> 00:25:07,087 Zăngănit este acea linie am văzut înainte. 554 00:25:07,087 --> 00:25:10,420 Acum, există o mulțime de alte lucruri sincer că ne vom flutura mâinile noastre la ziua de azi. 555 00:25:10,420 --> 00:25:14,020 Dar există câteva subgrupuri, câteva personaje din aici 556 00:25:14,020 --> 00:25:14,907 care sunt de interes. 557 00:25:14,907 --> 00:25:16,490 Dar am de gând să mergeți mai departe și de a face acest lucru. 558 00:25:16,490 --> 00:25:18,281 Mă duc la primul termen salut, doar pentru a dovedi 559 00:25:18,281 --> 00:25:20,320 că acest lucru este de lucru așa cum a fost luni. 560 00:25:20,320 --> 00:25:22,330 Dar acum am de gând pentru a șterge programul. 561 00:25:22,330 --> 00:25:25,870 Și la fel ca am avut aceste nume scurte ultimul timp, 562 00:25:25,870 --> 00:25:29,787 comanda pentru îndepărtarea ceva este rm, elimina, introduceți. 563 00:25:29,787 --> 00:25:31,870 Vei obține unele întrebări destul de criptic. 564 00:25:31,870 --> 00:25:35,210 Greu de crezut că se poate face chiar această întrebare greu de înțeles. 565 00:25:35,210 --> 00:25:38,100 Dar îndepărta salut fisier obisnuit doar mijloace nu doriți să ștergeți salut. 566 00:25:38,100 --> 00:25:42,650 >> Și eu pot merge mai departe și de tip y pentru da, Enter, iar acum a dispărut. 567 00:25:42,650 --> 00:25:45,130 Ce înseamnă acest lucru acum, dacă am șterge ecranul, 568 00:25:45,130 --> 00:25:47,301 este că în loc de face face hello-- tine 569 00:25:47,301 --> 00:25:48,800 Știi ce, mă pricepi la asta. 570 00:25:48,800 --> 00:25:50,690 Am de gând să ruleze compilatorului eu. 571 00:25:50,690 --> 00:25:53,330 Nu am nevoie de ceva program pentru a dau seama ce dosarul meu se numește. 572 00:25:53,330 --> 00:25:55,370 I-am scris hello.c, am Știi ce se numește, 573 00:25:55,370 --> 00:25:57,640 Sunt clar capabil de dactilografiere care. 574 00:25:57,640 --> 00:26:02,620 Așa că am de gând să merg mai departe și nu zăngăni hello.c Enter. 575 00:26:02,620 --> 00:26:03,264 >> Pare să funcționeze. 576 00:26:03,264 --> 00:26:05,930 Și nu există nici o ieșire suplimentară, deoarece zăngănit este compilator. 577 00:26:05,930 --> 00:26:08,590 Este ceea ce conversia Codul sursă pentru zero si unu. 578 00:26:08,590 --> 00:26:12,870 Deci, dacă eu fac acum dot slash salut Enter, hm. 579 00:26:12,870 --> 00:26:14,630 Noul mesaj de eroare de astăzi. 580 00:26:14,630 --> 00:26:17,610 Deci, bash este doar numele de clipește prompte pe care le utilizați. 581 00:26:17,610 --> 00:26:20,360 Aceasta este o simplificare brut, dar de acum asta e tot ce este, 582 00:26:20,360 --> 00:26:21,401 este prompt clipește. 583 00:26:21,401 --> 00:26:22,880 Și de aceea e tipa la noi. 584 00:26:22,880 --> 00:26:25,690 >> Nu există un astfel de fișier sau director este un pic mai simplu. 585 00:26:25,690 --> 00:26:28,190 Dar cu siguranță am făcut asta de cod obiect. 586 00:26:28,190 --> 00:26:30,930 Dar captura este, că dacă tastați comanda 587 00:26:30,930 --> 00:26:34,650 pentru a lista conținutul acestui director, care este ceea ce? 588 00:26:34,650 --> 00:26:36,210 E pentru listă. 589 00:26:36,210 --> 00:26:39,332 Există o grămadă de lucruri în aici, unele dintre care a venit cu aparatul, 590 00:26:39,332 --> 00:26:42,040 ca dosarul meu Desktop, Descărcări dosar, dosarul Dropbox, și toate 591 00:26:42,040 --> 00:26:42,850 chestia asta. 592 00:26:42,850 --> 00:26:45,410 Dar ceea ce este interesant este hello.c, care 593 00:26:45,410 --> 00:26:47,286 Am creat un moment în urmă cu gedit. 594 00:26:47,286 --> 00:26:49,160 Și ceea ce este cel mai ciudat caută nume aici, 595 00:26:49,160 --> 00:26:53,110 Poate că nu am făcut-o a se vedea ultimul timp, la toate? 596 00:26:53,110 --> 00:26:54,710 >> a.out, corect? 597 00:26:54,710 --> 00:26:56,920 Deci, înapoi în a doua zi, ea că a fost doar atunci când a decis 598 00:26:56,920 --> 00:26:58,760 compilați un program pentru prima dată, 599 00:26:58,760 --> 00:27:02,360 și nu se specifică numele a unui fișier, hai să o numim. 600 00:27:02,360 --> 00:27:05,800 Și a.out înseamnă doar acest lucru a fost ieșirea compilatorului. 601 00:27:05,800 --> 00:27:07,790 Deci e un nume oribil pentru un program. 602 00:27:07,790 --> 00:27:12,820 Dar, prin faptul că logica, dot slash pentru directorul curent, slash a.out, 603 00:27:12,820 --> 00:27:16,102 ar trebui să însemne că este, de fapt, mi salut program de lume. 604 00:27:16,102 --> 00:27:17,560 Acum, un pic de warm up exercițiu, de asemenea. 605 00:27:17,560 --> 00:27:20,420 Dacă vreau să redenumi acest fișier, se dovedește că 606 00:27:20,420 --> 00:27:23,000 muta un fișier de la un nume la altul. 607 00:27:23,000 --> 00:27:28,750 A.out Deci mv, și apoi am poate numi salut Enter. 608 00:27:28,750 --> 00:27:30,940 Deci, aceasta este o comandă Linux. 609 00:27:30,940 --> 00:27:34,370 DOS a avut cu ani în urmă, Windows are o fereastră de terminal 610 00:27:34,370 --> 00:27:36,460 de un anumit fel, care arată în acest fel, Linux și Mac 611 00:27:36,460 --> 00:27:38,140 computere au acest prompt să clipească. 612 00:27:38,140 --> 00:27:41,490 Chiar dacă cele mai multe dintre noi, probabil, foarte rar, dacă vreodată, utilizați-l. 613 00:27:41,490 --> 00:27:44,590 >> Dar ceea ce am făcut este rulat un Programul, al cărui nume este mv, 614 00:27:44,590 --> 00:27:47,900 și l-am prevăzut cu două argumente, ca să spunem așa. 615 00:27:47,900 --> 00:27:48,630 Două intrări. 616 00:27:48,630 --> 00:27:50,260 a.out este numele original. 617 00:27:50,260 --> 00:27:51,630 Bună ziua este noul nume. 618 00:27:51,630 --> 00:27:55,670 Deci, dacă eu fac acum slash punct Salut, Enter, care există. 619 00:27:55,670 --> 00:28:00,770 Și dacă eu fac dot a.out slash, la ce te astepti eu ar trebui să vedeți? 620 00:28:00,770 --> 00:28:02,250 >> Bash, nu un astfel de fișier sau director. 621 00:28:02,250 --> 00:28:03,350 Pentru că tocmai am redenumit. 622 00:28:03,350 --> 00:28:04,975 Deci, acest lucru are un pic de Noțiuni de bază utilizate pentru. 623 00:28:04,975 --> 00:28:06,977 Dar problema set 1 caietul de sarcini va fi cu adevărat 624 00:28:06,977 --> 00:28:08,810 țin de mână prin o parte din această minutae. 625 00:28:08,810 --> 00:28:11,050 Deoarece aceasta este o complet distragere a atenției intelectuală 626 00:28:11,050 --> 00:28:12,966 de la cele mai interesante idei de la mână, care 627 00:28:12,966 --> 00:28:15,310 este de fapt crearea ceva din cod. 628 00:28:15,310 --> 00:28:18,830 Dar hai sa facem o modificare acum la acest program. 629 00:28:18,830 --> 00:28:23,150 >> Reamintim că ultima dată când am făcut ceva în acest fel, afirma printf numele. 630 00:28:23,150 --> 00:28:25,790 Și într-adevăr, tocmai am făcut acest pe marele ecran de acolo. 631 00:28:25,790 --> 00:28:30,640 Și apoi am făcut șir s se GetString Paranteză deschisă, aproape paren. 632 00:28:30,640 --> 00:28:33,430 Și paren doar stenografie notație pentru paranteză. 633 00:28:33,430 --> 00:28:36,460 Deci, nu getString ia nici un argument? 634 00:28:36,460 --> 00:28:38,440 Nu intrări Nu, dar are nevoie de paranteze, 635 00:28:38,440 --> 00:28:41,830 pentru că asta e ceea ce delimitează chemarea de o funcție. 636 00:28:41,830 --> 00:28:46,440 >> Așa că am de gând să mergeți mai departe și să încerce să rula compilatorul pe acest program acum. 637 00:28:46,440 --> 00:28:50,774 Zăngănit hello.c, pentru că eu nu s-au schimbat numele său de acum. 638 00:28:50,774 --> 00:28:51,940 Și am o grămadă de erori. 639 00:28:51,940 --> 00:28:53,570 Să micșora aici. 640 00:28:53,570 --> 00:28:55,420 Dacă aș defila din nou, cum am spus data trecută, 641 00:28:55,420 --> 00:28:58,420 la primul aceeași eroare, că am luat ultima dată. 642 00:28:58,420 --> 00:29:04,210 Pe linia 6 din hello.c am avut o șir identificator nedeclarate, 643 00:29:04,210 --> 00:29:05,590 am să spun standard? 644 00:29:05,590 --> 00:29:06,750 Nu am făcut. 645 00:29:06,750 --> 00:29:10,050 Pentru că ceea ce greșeală au făcut eu în acest programul, dacă vă amintiți de la ultima dată? 646 00:29:10,050 --> 00:29:13,219 647 00:29:13,219 --> 00:29:15,010 Da, avem nevoie de așa-numita formare roți 648 00:29:15,010 --> 00:29:16,510 că vom folosi doar pentru câteva săptămâni. 649 00:29:16,510 --> 00:29:19,480 Dar am nevoie să se precizeze că, de asemenea, undeva în interiorul aparatului, 650 00:29:19,480 --> 00:29:22,720 este un fișier care am scris doar câțiva ani în urmă. 651 00:29:22,720 --> 00:29:26,500 In interiorul care sunt funcții ca aparent getString. 652 00:29:26,500 --> 00:29:35,160 Deci, acum, dacă mă întorc aici, zoom in, și re-rula zăngănit hello.c. 653 00:29:35,160 --> 00:29:36,500 La naiba, o altă eroare. 654 00:29:36,500 --> 00:29:38,590 Dar noi nu am mai văzut asta înainte. 655 00:29:38,590 --> 00:29:41,900 >> Asta e un pic mai mult ezoteric să dau seama. 656 00:29:41,900 --> 00:29:46,910 Dar acest lucru este în mod deliberat pe ecran, pentru că am vrut să spun această poveste. 657 00:29:46,910 --> 00:29:51,280 Când compilați hello.c, la fel ca imaginea de la înainte de a sugerat, 658 00:29:51,280 --> 00:29:54,650 sunteți de conversie numai că Codul sursă pentru zero si unu. 659 00:29:54,650 --> 00:30:00,340 Acum, personal CS50 în urmă cu câțiva ani a scris CS50.h, și un fișier corespunzător, 660 00:30:00,340 --> 00:30:01,640 CS50.c. 661 00:30:01,640 --> 00:30:04,490 Și noi, în urmă cu câțiva ani, compilat aceste fișiere 662 00:30:04,490 --> 00:30:07,290 într-un fișier care se întâmplă să fie numit CS50.o. 663 00:30:07,290 --> 00:30:09,180 >> Sau poate fi redenumit-o câteva lucruri diferite. 664 00:30:09,180 --> 00:30:11,054 Dar asta e un mod simplu de gândire despre el. 665 00:30:11,054 --> 00:30:14,960 Așa că ne-am compilat de CS50 bibliotecă în zero si unu. 666 00:30:14,960 --> 00:30:20,340 Dar nicăieri am specificat care doresc să combine zerouri mele 667 00:30:20,340 --> 00:30:24,030 și cele pentru lumea mea salut program cu zerouri și cele 668 00:30:24,030 --> 00:30:29,760 că personalul CS50 creat de câțiva ani în urmă într-un singur program complet. 669 00:30:29,760 --> 00:30:34,100 Tot ce am specificat de scris hello.c zăngănit este compila hello.c. 670 00:30:34,100 --> 00:30:38,380 >> Eu nu am spus zăngănit de link-ul în zerouri și cele 671 00:30:38,380 --> 00:30:41,650 că personalul CS50 creat pentru tine ceva timp în urmă. 672 00:30:41,650 --> 00:30:48,280 Deci, este un fix simplu, lovești l pentru link-ul, CS50. 673 00:30:48,280 --> 00:30:52,600 Și vom vedea din nou acest Înainte de mult timp din nou și din nou. 674 00:30:52,600 --> 00:30:54,420 Dar observați acum nu a existat nici o plângere. 675 00:30:54,420 --> 00:30:59,770 Deci, acum, dacă am alerga slash dot salut, acum e de lucru. 676 00:30:59,770 --> 00:31:03,840 Cu toate că este un pic înșelătoare din moment ce am recreat ce dosar? 677 00:31:03,840 --> 00:31:05,880 a.out. 678 00:31:05,880 --> 00:31:07,930 >> Așa că lasă-mă înapoi pentru o clipă. 679 00:31:07,930 --> 00:31:10,900 Programul ne-am compilat are trei linii de cod. 680 00:31:10,900 --> 00:31:14,710 Când am fugit salut lume, salut o clipă acum, eu nu am văzut de stat numele. 681 00:31:14,710 --> 00:31:17,080 Și asta pentru că am fugit versiune veche a programului. 682 00:31:17,080 --> 00:31:22,700 Dar dacă se execută într-adevăr punct a.out slash Introduceți, precizați numele tău, Rob, salut, 683 00:31:22,700 --> 00:31:23,370 lume. 684 00:31:23,370 --> 00:31:23,870 Hm. 685 00:31:23,870 --> 00:31:26,110 Asta e un fel de bug. 686 00:31:26,110 --> 00:31:28,560 Probabil a vrut să spună Rob, nu? 687 00:31:28,560 --> 00:31:30,997 Deci, care este fix aici în cod. 688 00:31:30,997 --> 00:31:31,872 STUDENT: [inaudibil]. 689 00:31:31,872 --> 00:31:38,415 690 00:31:38,415 --> 00:31:39,290 DAVID MALAN: Exact. 691 00:31:39,290 --> 00:31:43,160 Asa ca am nevoie doar pentru a face ca tweak finală așa că am trece la un substituent, 692 00:31:43,160 --> 00:31:45,690 ca o completați în gol, cum am facut-o acum o clipă. 693 00:31:45,690 --> 00:31:47,870 Dar la sută s este acum că completați în gol. 694 00:31:47,870 --> 00:31:52,100 Deci, în cele din urmă să dezvăluie ultima detaliu, astfel încât nu există nici o magie. 695 00:31:52,100 --> 00:31:54,090 Am de gând să merg mai departe și de a scăpa de Hellow. 696 00:31:54,090 --> 00:31:56,070 Am de gând să merg mai departe și de a scăpa de a.out. 697 00:31:56,070 --> 00:31:58,410 Deci, acum nu am nici programe, doar codul sursă. 698 00:31:58,410 --> 00:32:01,100 Și am de gând să ruleze un comandă ceva mai lung, zăngănit 699 00:32:01,100 --> 00:32:05,650 lovești o salut hello.c bord LCS50. 700 00:32:05,650 --> 00:32:08,700 >> Acum, acest lucru este incepand de la un fel de a merge într-o ureche și a ieșit pe cealaltă, probabil. 701 00:32:08,700 --> 00:32:10,366 Dar tachineze pe langa ce acest este de a face. 702 00:32:10,366 --> 00:32:14,910 Zăngănit este compilator, linie LCS50 în mod deliberat la sfârșitul 703 00:32:14,910 --> 00:32:18,330 face ceea ce într-o propoziție? 704 00:32:18,330 --> 00:32:19,607 Link-uri către biblioteca CS50. 705 00:32:19,607 --> 00:32:21,440 Apucă zerouri și cei care personalul făcute 706 00:32:21,440 --> 00:32:23,310 și le crams în propriul meu program de. 707 00:32:23,310 --> 00:32:27,040 Deci, ultima întrebare la îndemână este, ceea ce este o liniuță salut, probabil, 708 00:32:27,040 --> 00:32:30,530 face, chiar dacă nu ați mai văzut această sintaxă înainte? 709 00:32:30,530 --> 00:32:34,920 >> Scoate un program care este nu numit implicit a.out. 710 00:32:34,920 --> 00:32:37,330 Mai degrabă este numit salut. 711 00:32:37,330 --> 00:32:39,460 Deci, acum nu există nici a.out. 712 00:32:39,460 --> 00:32:42,660 Nu există un astfel de fișier sau director, pentru că i-am spus în mod explicit 713 00:32:42,660 --> 00:32:46,720 numesc acest program de salut, astfel încât Acum am posibilitatea să tastați un nume de genul asta 714 00:32:46,720 --> 00:32:47,790 și l-au comporte. 715 00:32:47,790 --> 00:32:50,180 >> Acum sincer, băiat este că neinteresant pentru a avea 716 00:32:50,180 --> 00:32:52,170 să-și amintească toate că mic punct caracteristic, corect? 717 00:32:52,170 --> 00:32:54,180 Deci, să mergem mai departe și scăpa de salut din nou. 718 00:32:54,180 --> 00:32:57,880 Și să se întoarcă acum la o lume în care este suficient să spun face salut. 719 00:32:57,880 --> 00:33:00,410 Dar asta e magia care face este de a face pentru tine, 720 00:33:00,410 --> 00:33:02,320 asta e plictiseala asta se face pentru tine. 721 00:33:02,320 --> 00:33:04,630 Și, ca programele noastre și problemele devin mai complexe, 722 00:33:04,630 --> 00:33:06,142 face va fi cu adevărat prietenul tău. 723 00:33:06,142 --> 00:33:07,850 Pentru că nu prea mult timp de acum ne vom 724 00:33:07,850 --> 00:33:11,150 de a avea programe care sunt scrise nu cu un fișier, dar mai multe fișiere, 725 00:33:11,150 --> 00:33:16,310 și să va automatiza procesul de compilarea toate acestea pentru noi împreună. 726 00:33:16,310 --> 00:33:20,620 >> Deci, acum a imprima. 727 00:33:20,620 --> 00:33:24,960 printf este în interiorul acestui fișier, standard, I / O dot h, pe care le-am văzut înainte, 728 00:33:24,960 --> 00:33:26,980 dar e mai mult decât atât printf. 729 00:33:26,980 --> 00:33:30,482 Există n backslash, dar există, de asemenea, o grămadă de alte secvențe escape. 730 00:33:30,482 --> 00:33:32,940 Și secvență de evadare este doar un mod fantezist de a spune ceva 731 00:33:32,940 --> 00:33:35,990 care începe cu un backslash, nu o bară oblică, un backslash, 732 00:33:35,990 --> 00:33:37,920 și face ceva special. 733 00:33:37,920 --> 00:33:43,770 Și nu vom insista pe cele mai multe dintre acestea, dar de ce este acolo backslash citat dublu, 734 00:33:43,770 --> 00:33:44,830 crezi? 735 00:33:44,830 --> 00:33:48,010 De ce există această secvență ciudat de caractere, citat dublu backslash, 736 00:33:48,010 --> 00:33:50,505 de ce s-ar putea ca fi util? 737 00:33:50,505 --> 00:33:51,380 STUDENT: [inaudibil]. 738 00:33:51,380 --> 00:33:56,594 739 00:33:56,594 --> 00:33:57,760 DAVID MALAN: Exact, corect? 740 00:33:57,760 --> 00:34:01,830 Gandeste-te la programul nostru hello world pe care le-am văzut de câteva ori acum, 741 00:34:01,830 --> 00:34:05,880 de fiecare dată când am văzut că hello world Programul care le-am avut ghilimele în interiorul 742 00:34:05,880 --> 00:34:08,210 de care este salut virgulă backslash lume n. 743 00:34:08,210 --> 00:34:10,070 Dar gandeste-te la tine, Ce se întâmplă dacă de fapt 744 00:34:10,070 --> 00:34:12,520 a vrut să imprime un ghilimele? 745 00:34:12,520 --> 00:34:16,100 Primul instinct ar fi, eu nu fac știu de ce s-ar putea dori să facut-- aici, 746 00:34:16,100 --> 00:34:18,780 putem fi un pic pasiv agresiv, salut prietene. 747 00:34:18,780 --> 00:34:21,350 S-ar putea dori să facă așa ceva. 748 00:34:21,350 --> 00:34:25,230 >> Dar de ce este acest lucru acum problematic? 749 00:34:25,230 --> 00:34:28,730 Ignorarea citatele buclat deoparte ca keynote făcut pentru noi în mod automat. 750 00:34:28,730 --> 00:34:29,730 De ce este aceasta o problemă? 751 00:34:29,730 --> 00:34:36,719 752 00:34:36,719 --> 00:34:37,270 >> Exact. 753 00:34:37,270 --> 00:34:39,022 Pentru ca avem ca 4 ghilimele. 754 00:34:39,022 --> 00:34:41,230 Ei bine primul probabil merge cu al doilea strat, 755 00:34:41,230 --> 00:34:43,271 și, poate, al patrulea merge cu al treilea, 756 00:34:43,271 --> 00:34:46,170 sau, vreau să spun că nu sunt chiar sigur, nici nu este computerul va fi. 757 00:34:46,170 --> 00:34:48,352 Calculatoare din nou, compilatoare din nou, sunt destul de prost. 758 00:34:48,352 --> 00:34:50,060 Ei vor face doar ceea ce spune-le să facă. 759 00:34:50,060 --> 00:34:54,270 Și dacă nu ești lipsit de ambiguitate ei sunt, probabil, va arunca o eroare. 760 00:34:54,270 --> 00:34:57,700 >> Dacă nu ești lipsit de ambiguitate cu privire la modul de face un sandwich cu unt de arahide si jeleu 761 00:34:57,700 --> 00:34:59,510 lucruri ciudate s-ar putea ajunge. 762 00:34:59,510 --> 00:35:00,580 Este aceeași idee. 763 00:35:00,580 --> 00:35:03,100 Acum este suficient să spunem că este alte secvențe escape, 764 00:35:03,100 --> 00:35:04,820 dar vom veni cu cele înainte de mult timp. 765 00:35:04,820 --> 00:35:07,410 În esență, acestea evadare secvențe reprezintă ceva 766 00:35:07,410 --> 00:35:10,480 care s-ar putea să nu fie în măsură prea ușor de la tastatura, 767 00:35:10,480 --> 00:35:12,010 fără a confunda calculator. 768 00:35:12,010 --> 00:35:15,733 >> Acum, între timp ne-am substituenți în printf. 769 00:35:15,733 --> 00:35:19,630 Procent d, care poate fi de asemenea scrisă în aproape toate cazurile, ca la sută i, 770 00:35:19,630 --> 00:35:21,610 este un substituent pentru ce tip de date? 771 00:35:21,610 --> 00:35:23,920 Ce tip de valoare? 772 00:35:23,920 --> 00:35:24,920 Un număr zecimal. 773 00:35:24,920 --> 00:35:27,234 Deci, de fapt, vom începe folosind procente i că este 774 00:35:27,234 --> 00:35:28,650 mai simplu, ca un întreg. 775 00:35:28,650 --> 00:35:29,550 I la sută. 776 00:35:29,550 --> 00:35:31,320 Un întreg care se întâmplă să fie zecimal. 777 00:35:31,320 --> 00:35:35,690 >> La sută s-am spus deja a fost un substituent pentru un șir. 778 00:35:35,690 --> 00:35:38,630 Ceea ce este doar un cuvânt, o frază, un paragraf, un eseu, indiferent de. 779 00:35:38,630 --> 00:35:40,830 Este o secvență de caractere de unele lungime. 780 00:35:40,830 --> 00:35:42,820 Și vom vedea în scurt timp unele dintre aceste altora. 781 00:35:42,820 --> 00:35:45,950 Dar la sută c este pentru un singur caracter. 782 00:35:45,950 --> 00:35:48,500 Procentul f este o plutitoare număr punct, 783 00:35:48,500 --> 00:35:50,860 ca un număr real care are un punct zecimal în ea, care 784 00:35:50,860 --> 00:35:52,550 este, desigur, nu un întreg. 785 00:35:52,550 --> 00:35:54,670 Și există un întreg grămadă de alții, de asemenea. 786 00:35:54,670 --> 00:35:56,990 >> Intre timp în C, și într-o mulțime de limbi, 787 00:35:56,990 --> 00:35:58,650 Avem diverse tipuri de date. 788 00:35:58,650 --> 00:36:00,650 Diferite tipuri de sticlă boluri dacă vrei. 789 00:36:00,650 --> 00:36:03,830 Bolul am folosit ultima dată a fost de mingi de ping-pong, 790 00:36:03,830 --> 00:36:06,990 dar putem stoca, de asemenea, diferite valori, cum ar fi caractere și șiruri 791 00:36:06,990 --> 00:36:10,820 și numere întregi într-un recipient, ca o variabilă, iar C are acestea. 792 00:36:10,820 --> 00:36:14,020 Char este tipul de date, tipul de variabile, 793 00:36:14,020 --> 00:36:15,700 în care puteți stoca un caracter. 794 00:36:15,700 --> 00:36:19,560 Float este un tip de variabilă în care se pot stoca un număr real. 795 00:36:19,560 --> 00:36:21,220 >> Int este, desigur, pentru un int. 796 00:36:21,220 --> 00:36:23,760 Și destul de ridicol numit un lung lung 797 00:36:23,760 --> 00:36:26,830 este locul unde se pot stoca în esență, un număr foarte lung, cu mai 798 00:36:26,830 --> 00:36:29,930 mai multe cifre apoi un tipic poate stoca int. 799 00:36:29,930 --> 00:36:32,420 Dar vom reveni la asta înainte de mult timp. 800 00:36:32,420 --> 00:36:35,520 >> În CS50 dot h între timp cealaltă fișierul header 801 00:36:35,520 --> 00:36:37,630 că am văzut un cuplu ori în utilizare, există 802 00:36:37,630 --> 00:36:41,350 alte două tipuri de date care nu există în C tipic. 803 00:36:41,350 --> 00:36:45,000 Una dintre ele este șir, și vom vedea în câteva săptămâni ce sfori într-adevăr 804 00:36:45,000 --> 00:36:46,610 sunt sub capota. 805 00:36:46,610 --> 00:36:47,950 Și una este bool. 806 00:36:47,950 --> 00:36:51,650 Și o bool este o variabilă care poate lua doar pe anumite valori. 807 00:36:51,650 --> 00:36:54,370 Și doar pe baza de săptămâna trecută explicație de Scratch, 808 00:36:54,370 --> 00:36:56,680 și, mai recent, C, ce-ai ghici 809 00:36:56,680 --> 00:37:01,770 sunt cele două valori posibile pentru unii container care este de tip bool? 810 00:37:01,770 --> 00:37:02,860 >> Da și nu. 811 00:37:02,860 --> 00:37:03,870 Unul și zero. 812 00:37:03,870 --> 00:37:04,502 Adevărat sau fals. 813 00:37:04,502 --> 00:37:07,460 Și într-adevăr, este ultimul care tinde a fi convențional într-o programare 814 00:37:07,460 --> 00:37:10,030 limbă, spune ceva cum ar fi adevărat sau fals. 815 00:37:10,030 --> 00:37:13,160 >> Între timp, biblioteca CS50 vine cu un buchet de funcționalitate 816 00:37:13,160 --> 00:37:16,640 că personalul a scris pentru tine, în afară de doar obtinerea unui șir. 817 00:37:16,640 --> 00:37:20,910 Am scris în funcții de avans care poate obține un număr întreg de la utilizator, 818 00:37:20,910 --> 00:37:22,990 obține un singur caracter, obține un flotor, care 819 00:37:22,990 --> 00:37:25,160 este doar un număr cu virgulă. 820 00:37:25,160 --> 00:37:28,290 Ia un lung lung, un adevărat valoare mare din partea utilizatorului. 821 00:37:28,290 --> 00:37:30,930 Așa că ne-am văzut doar acest lucru în acțiune sub formă de getString. 822 00:37:30,930 --> 00:37:33,230 Dar prin aceste funcții va fi în curând posibilitatea de a scrie 823 00:37:33,230 --> 00:37:36,070 programe care primesc input de la utilizator. 824 00:37:36,070 --> 00:37:39,230 >> Între timp, ia în considerare acest Programul, și ia în considerare 825 00:37:39,230 --> 00:37:42,600 cum am putea începe acum pentru a adăuga a acesteia cu noi constructe. 826 00:37:42,600 --> 00:37:44,530 Un tur rapid vârtej de vânt si apoi ne vom uita 827 00:37:44,530 --> 00:37:47,340 la un scris ceva programe de manual noi înșine. 828 00:37:47,340 --> 00:37:49,700 De acum înainte, dacă vrem să pună în aplicare o condiție, 829 00:37:49,700 --> 00:37:52,790 ea nu va arăta ca o drăguț piesa de puzzle frumos. 830 00:37:52,790 --> 00:37:54,460 O să arate un pic mai mult arcane. 831 00:37:54,460 --> 00:37:57,620 Dar acest lucru este canonice Structura unei afecțiuni în C. 832 00:37:57,620 --> 00:38:00,380 >> Cuvântul dacă, două paranteze, în interiorul căreia 833 00:38:00,380 --> 00:38:02,590 Va fi un fel de expresie booleană. 834 00:38:02,590 --> 00:38:04,999 Acum slash slash la mijloc, aceasta este 835 00:38:04,999 --> 00:38:07,290 la momentul fel de cod pseudocod înlocuitor. 836 00:38:07,290 --> 00:38:11,576 Dar, mai corect, orice linie de cod în C, care începe cu slash slash 837 00:38:11,576 --> 00:38:12,850 este un comentariu. 838 00:38:12,850 --> 00:38:15,920 >> E ca o notă de lipicios pe care le-ar putea pune pe un eseu, tipărită pe hârtie. 839 00:38:15,920 --> 00:38:17,290 Este o notă de tine. 840 00:38:17,290 --> 00:38:20,100 Nu are funcțională impact asupra programului. 841 00:38:20,100 --> 00:38:23,580 Este un fel de memento, e propriul tău documentație cu privire la ceea ce se întâmplă. 842 00:38:23,580 --> 00:38:25,720 Deci, face acest lucru în acest moment este un fel de înlocuitor 843 00:38:25,720 --> 00:38:27,560 pentru orice e înăuntru din aceste acolade 844 00:38:27,560 --> 00:38:29,810 în cele din urmă este de gând să facă ceva. 845 00:38:29,810 --> 00:38:35,160 >> Între timp, aveți două furculițe în rutier, o dacă mai construi asa. 846 00:38:35,160 --> 00:38:37,024 Poți dacă, elseif, altfel. 847 00:38:37,024 --> 00:38:39,690 Acum e demn de remarcat, mai ales dacă ați căutat pe Google în jurul 848 00:38:39,690 --> 00:38:42,480 on-line pentru resurse din curiozitate, sau dacă te iau 849 00:38:42,480 --> 00:38:44,575 una dintre cursului carti recomandate pe C, 850 00:38:44,575 --> 00:38:48,430 veți vedea că oamenii au o mulțime preferințele de diferite de modul în care 851 00:38:48,430 --> 00:38:50,510 de a se exprima în cod. 852 00:38:50,510 --> 00:38:53,800 Unii oameni le place să pună acolade cum am făcut aici. 853 00:38:53,800 --> 00:38:57,760 Unii oameni le place să pună cret se pregătește de exemplu aici. 854 00:38:57,760 --> 00:39:01,700 >> Unii oameni le place să pună elses aici și apoi aceasta pe aici. 855 00:39:01,700 --> 00:39:05,120 Există un număr de moduri de a Codul de scriere, și nici unul dintre ei 856 00:39:05,120 --> 00:39:06,566 au dreptate în sine. 857 00:39:06,566 --> 00:39:08,440 Deși există câteva care sunt destul de greșit. 858 00:39:08,440 --> 00:39:11,315 Dar există nu-- dacă acest lucru este în cele din urmă o dezbatere foarte religios. 859 00:39:11,315 --> 00:39:13,940 De fapt, una dintre cele mai enervante lucruri despre informatica 860 00:39:13,940 --> 00:39:16,310 este modul dogmatic oamenii de stiinta de calculator poate fi. 861 00:39:16,310 --> 00:39:19,880 Și veți găsi în timp ce chiar voi dezvolta preferințele personale 862 00:39:19,880 --> 00:39:22,130 ca la cum ar trebui să arate codul. 863 00:39:22,130 --> 00:39:27,162 >> Nu doar se comporta, nu creează doar ieșire, dar cum ar trebui să arate estetic. 864 00:39:27,162 --> 00:39:30,120 Deci, ce vom face este a vă ghida de-a lungul drumul spre, cel puțin pentru moment, 865 00:39:30,120 --> 00:39:34,825 un stil CS50 standard care cel puțin păstrează lucrurile uniform și ușor de citit. 866 00:39:34,825 --> 00:39:37,330 Dar mai mult pe cei distincții înainte de mult timp. 867 00:39:37,330 --> 00:39:41,830 >> O expresie booleană în C, dacă a vrut să spună dacă această condiție este adevărată 868 00:39:41,830 --> 00:39:44,650 și această altă condiție este adevărat, nu scrie cuvântul 869 00:39:44,650 --> 00:39:46,610 și, așa cum ați face în limba engleză. 870 00:39:46,610 --> 00:39:50,580 Utilizați în schimb ampersand ampersand, pentru motive pe care le vom întoarce la. 871 00:39:50,580 --> 00:39:54,520 Dacă vrei să spui sau să utilizați două bare verticale, care pe o tastatură US 872 00:39:54,520 --> 00:39:57,650 este în general mai sus Enter lângă cheie la backslash. 873 00:39:57,650 --> 00:40:03,080 Iar acest lucru înseamnă doar dacă această condiție sau această altă condiție este adevărat acest lucru. 874 00:40:03,080 --> 00:40:05,210 >> În același timp există această nebunie, care 875 00:40:05,210 --> 00:40:07,760 veți avea ocazia de a folosi din cand in cand. 876 00:40:07,760 --> 00:40:10,390 Dar este doar o alternativă modalitate de a te exprima. 877 00:40:10,390 --> 00:40:12,400 Acest lucru, de acum, să stipulează, că e doar 878 00:40:12,400 --> 00:40:16,880 un alt mod de a exprima funky, în cazul în care, elseif, elseif, elseif, elseif. 879 00:40:16,880 --> 00:40:19,720 E doar formatat din punct de vedere din cazuri, în cazul în care pur și simplu 880 00:40:19,720 --> 00:40:23,420 enumera valorile care ar putea să doriți să verificați. 881 00:40:23,420 --> 00:40:24,410 >> Între timp, bucle. 882 00:40:24,410 --> 00:40:26,842 Am văzut o comparație a Scratch cu o buclă. 883 00:40:26,842 --> 00:40:29,550 Și am de gând să facă cu mâna mea la ceea ce înseamnă că fiecare din aceste lucruri. 884 00:40:29,550 --> 00:40:33,520 Dar observați că o buclă va foarte de multe ori începe cu cuvântul cheie pentru. 885 00:40:33,520 --> 00:40:36,350 Sau se va începe cu acest timp de cuvinte cheie. 886 00:40:36,350 --> 00:40:41,360 Sau se va începe cu cuvântul cheie face, și se încheie cu acest timp de cuvinte cheie. 887 00:40:41,360 --> 00:40:43,920 >> Dar ceea ce suntem pe cale de a vedea este mai multe lucruri de genul asta. 888 00:40:43,920 --> 00:40:47,950 Aici este, în general, în C, cum s-ar putea declara o variabilă și da o valoare. 889 00:40:47,950 --> 00:40:50,610 În C nu este suficientă, cum ar fi în Scratch, tu doar 890 00:40:50,610 --> 00:40:52,810 spune-mi o variabilă numită ceva. 891 00:40:52,810 --> 00:40:55,960 Trebuie să-i spun C, și spune- compilator ta, mai precis, 892 00:40:55,960 --> 00:40:58,680 ce tip de valoare nu voi doresc să pună în castron de sticlă. 893 00:40:58,680 --> 00:40:59,610 >> Este un întreg? 894 00:40:59,610 --> 00:41:02,210 Dacă este așa, va trebui să spune literal int și apoi 895 00:41:02,210 --> 00:41:04,220 numele variabilei, apoi un punct și virgulă. 896 00:41:04,220 --> 00:41:08,050 Dacă ați fi dorit în loc de coarde și numit ea e ca am facut codul meu aici, astăzi, 897 00:41:08,050 --> 00:41:10,920 v-ar spune și virgulă șir uri. 898 00:41:10,920 --> 00:41:14,200 Dacă doriți să-i dea o valoare puteți utiliza apoi semnul egal, 899 00:41:14,200 --> 00:41:16,211 altfel cunoscut sub numele de operator de atribuire. 900 00:41:16,211 --> 00:41:17,960 Și observați cum fiecare din aceste linii de cod 901 00:41:17,960 --> 00:41:20,650 are virgulă la sfârșitul acesteia. 902 00:41:20,650 --> 00:41:22,550 >> Dar sincer acest lucru doar arată un pic urât. 903 00:41:22,550 --> 00:41:26,580 De ce nu pot să spun la calculator, da mi-o variabilă și inițializa-l la zero. 904 00:41:26,580 --> 00:41:28,380 Asta este, da-mi un castron de sticlă gol. 905 00:41:28,380 --> 00:41:28,980 În timp ce puteți. 906 00:41:28,980 --> 00:41:32,250 Și astfel unul din hotărârea va cheama sa trebuie să facă stilistic în timp 907 00:41:32,250 --> 00:41:36,290 este, scrii codul ca aceasta, sau ai un fel de-l curețe și impresiona 908 00:41:36,290 --> 00:41:39,040 oameni de scris două linii ca doar unul. 909 00:41:39,040 --> 00:41:41,830 Și acest lucru ar fi considerat în general, un mod mai elegant 910 00:41:41,830 --> 00:41:43,870 de a scrie codul stilistic. 911 00:41:43,870 --> 00:41:45,200 >> Funcții noi suntem desigur văzut. 912 00:41:45,200 --> 00:41:46,340 Ei au de gând să ia acest format. 913 00:41:46,340 --> 00:41:48,881 Numele unei funcții, unele paranteze, iar apoi poate că unele 914 00:41:48,881 --> 00:41:49,910 chestii interior. 915 00:41:49,910 --> 00:41:52,540 Sau s-ar putea vedea utilizări ale lateral funcții multiple 916 00:41:52,540 --> 00:41:55,980 by-side, cum ar fi ceva de genul asta. 917 00:41:55,980 --> 00:41:59,390 Acum, ca o tangentă, nu această glumă face acum sens? 918 00:41:59,390 --> 00:42:03,566 919 00:42:03,566 --> 00:42:04,960 >> [Râsete] 920 00:42:04,960 --> 00:42:09,360 Asta nu înseamnă că e amuzant, dar ea poate are un sens mai puțin. 921 00:42:09,360 --> 00:42:12,140 Deci, acum, să mergem în Aparat CS50 pentru o clipă. 922 00:42:12,140 --> 00:42:14,640 Și lasă-mă să deschid un teaser aici. 923 00:42:14,640 --> 00:42:17,470 >> Și într-adevăr, unul din motivele pentru introducerea catalog IKEA 924 00:42:17,470 --> 00:42:20,080 și clipește imaginea de iPhone un pic în urmă 925 00:42:20,080 --> 00:42:24,700 a fost de a lega de fapt împreună fapt care în urmă cu doar câțiva ani, în 2007, 926 00:42:24,700 --> 00:42:26,540 această bucată de cod a fost eliberat, care a fost 927 00:42:26,540 --> 00:42:29,820 una dintre prima implementare de o bucată de software 928 00:42:29,820 --> 00:42:31,494 care face ceea ce se numește jailbreaking. 929 00:42:31,494 --> 00:42:34,410 Pentru cei nefamiliarizati, jailbreaking ceva de genul un telefon sau un iPhone 930 00:42:34,410 --> 00:42:37,680 înseamnă, în esență, imaginind cum să facă lucruri 931 00:42:37,680 --> 00:42:39,864 cu ea că societatea care a făcut-o nu a intenționat. 932 00:42:39,864 --> 00:42:42,780 Ca doriți să instalați anumite software-ul care nu este în App Store, 933 00:42:42,780 --> 00:42:45,405 jailbreaking telefon care faci lucruri de genul asta si mai mult. 934 00:42:45,405 --> 00:42:47,447 Dar ceea ce a fost distractiv în 2007-- și acolo a fost 935 00:42:47,447 --> 00:42:49,780 zeci de versiuni diferite de aceste lucruri de atunci, 936 00:42:49,780 --> 00:42:53,540 în tot felul de languages-- este că acest program de aici, numit iUnlock, 937 00:42:53,540 --> 00:42:57,036 a fost scris de fapt în C. Și așa am tras în sus codul sursă pentru acest lucru, 938 00:42:57,036 --> 00:42:59,910 doar la fel de a vă arăta o parte din similitudinile cu construcțiile 939 00:42:59,910 --> 00:43:01,450 am discutat până acum. 940 00:43:01,450 --> 00:43:05,150 Acum e mult mai complexitate aici decât am văzut deja în clasă. 941 00:43:05,150 --> 00:43:07,160 Lasă-mă să derulați în sus doar un pic aici. 942 00:43:07,160 --> 00:43:11,520 >> Dar observați these-- bine observăm câteva lucruri-- dar observați aceste rânduri aici, 943 00:43:11,520 --> 00:43:14,090 inclusiv standard de I / O dot h. 944 00:43:14,090 --> 00:43:17,660 Și all-- linia 24, te rog observa I / O standard 945 00:43:17,660 --> 00:43:21,380 dot h și o grămadă de alte Fișierele care se pare că alte persoane 946 00:43:21,380 --> 00:43:22,160 s-au scris. 947 00:43:22,160 --> 00:43:24,850 Și dacă ne-am defila în jos, prin acest, mic arbitrar, 948 00:43:24,850 --> 00:43:27,910 observa eu ​​nu știu cum să scrie toate acestea eu neapărat încă, 949 00:43:27,910 --> 00:43:28,880 dar nu e cazul. 950 00:43:28,880 --> 00:43:30,400 Deci, se pare că aceasta are o sucursală. 951 00:43:30,400 --> 00:43:33,210 >> Și dacă am defila în jos un pic în continuare există un alt dacă. 952 00:43:33,210 --> 00:43:38,210 Dacă am derulați în sus, cred în jurul linia 100 am vazut pentru. 953 00:43:38,210 --> 00:43:40,020 Deci, eu nu sunt destul de sigur cum funcționează încă, 954 00:43:40,020 --> 00:43:43,180 dar aceasta este o buclă pentru care se va lasă-mă repeta un numar de ori. 955 00:43:43,180 --> 00:43:45,230 Și dacă am derula toate drumul spre partea de jos 956 00:43:45,230 --> 00:43:51,020 Văd că există o funcționa aici numit 957 00:43:51,020 --> 00:43:54,570 principal, iar unele credite suplimentare pentru plăcerea dvs. de lectură. 958 00:43:54,570 --> 00:43:57,830 >> Deci, aceasta este doar pentru spun-- și vom pune acest online, printre sursă cursului 959 00:43:57,830 --> 00:44:01,480 cod astazi-- că chiar unii dintre aceștia Dispozitivele pe care le iau pentru a acordat, 960 00:44:01,480 --> 00:44:05,130 la sfârșitul zilei ești încă utilizarea acestor constructe de bază pe care le-am 961 00:44:05,130 --> 00:44:07,430 fost introducerea deja până acum. 962 00:44:07,430 --> 00:44:08,620 Asta e destul de asta. 963 00:44:08,620 --> 00:44:11,480 Bine, deci acum hai construi ceva. 964 00:44:11,480 --> 00:44:15,640 >> Să mergem dincolo de așa ceva hello.c, și să deschidă acest lucru, 965 00:44:15,640 --> 00:44:17,170 să scrie acest program aici. 966 00:44:17,170 --> 00:44:19,850 Am de gând să merg mai departe și Trimite un program numit adder.c, 967 00:44:19,850 --> 00:44:23,310 al cărui scop în viață va fi ca primul meu calculator super-simplu 968 00:44:23,310 --> 00:44:24,840 care adaugă doar o pereche de numere. 969 00:44:24,840 --> 00:44:27,050 Nu pentru că este un greu problemă, dar pentru că 970 00:44:27,050 --> 00:44:29,390 mi permite de a lega acum împreună o serie de lucruri. 971 00:44:29,390 --> 00:44:33,100 Așa că am de gând să merg mai departe și să includă I / O standard dot h și CS50 punct de ore. 972 00:44:33,100 --> 00:44:34,670 Am de gând să spun void main int. 973 00:44:34,670 --> 00:44:36,545 Și, din nou în viitor vom reveni la ea 974 00:44:36,545 --> 00:44:38,560 în acest context și în mijloace nule. 975 00:44:38,560 --> 00:44:43,340 >> Și acum am de gând să spun ceva ca printf, da-mi un întreg. 976 00:44:43,340 --> 00:44:47,610 Și acum pe a doua linie mea, cum pot exprima eu astfel de 977 00:44:47,610 --> 00:44:50,980 că vreau să declare o variabila care va stoca un int? 978 00:44:50,980 --> 00:44:55,470 Literalmente ce tip I dacă vreau să crea o variabilă care păstrează un int 979 00:44:55,470 --> 00:44:58,270 ai spune? 980 00:44:58,270 --> 00:44:59,650 int un egal getint. 981 00:44:59,650 --> 00:45:00,485 Sigur, astfel încât funcționează. 982 00:45:00,485 --> 00:45:02,360 Și doar pentru consistență cu codul veți 983 00:45:02,360 --> 00:45:04,485 a se vedea on-line, lasă-mă să schimbare aceasta a x, doar pentru că x 984 00:45:04,485 --> 00:45:06,830 este un nume de variabilă comună de a utiliza, cel puțin în algebra. 985 00:45:06,830 --> 00:45:08,720 Acum, lasă-mă să merg mai departe și nu printf din nou. 986 00:45:08,720 --> 00:45:10,692 Dă-mi un alt număr întreg. 987 00:45:10,692 --> 00:45:12,900 Și acum am de gând să fel a învăța de la acel model, 988 00:45:12,900 --> 00:45:14,490 Am de gând să spun int y ajunge la getint. 989 00:45:14,490 --> 00:45:16,340 >> Iar noi nu am folosit Getint înainte, dar doar 990 00:45:16,340 --> 00:45:19,860 ca getString merge și devine un șir, ca Javier făcut de public, 991 00:45:19,860 --> 00:45:22,780 nu la fel de getint începe să clipească prompt. 992 00:45:22,780 --> 00:45:26,750 Și în mod eficient de așteptare pentru utilizator să-i dea un întreg, prin tastarea în 993 00:45:26,750 --> 00:45:27,900 și apăsarea Enter. 994 00:45:27,900 --> 00:45:30,850 Acum, în cele din urmă am de gând să fac aceasta, printf suma de-- 995 00:45:30,850 --> 00:45:36,080 și lasă-mă să acum-- de lux sută la sută și i i este prezent 996 00:45:36,080 --> 00:45:39,270 i exclamare punct backslash n. 997 00:45:39,270 --> 00:45:42,750 Și ce crezi că am de gând să pune în prezent ca intrări suplimentare 998 00:45:42,750 --> 00:45:44,620 la printf? 999 00:45:44,620 --> 00:45:47,380 >> Nu vreau să spun literalmente citez x încheiat citatul. 1000 00:45:47,380 --> 00:45:52,210 Vreau sa clasă în x și atunci, iar acum sa trecem de lux 1001 00:45:52,210 --> 00:45:54,420 și hai să presupunem putem face ceea ce ne dorim. 1002 00:45:54,420 --> 00:45:56,330 Ce vrei să spui mai departe? 1003 00:45:56,330 --> 00:45:57,070 x plus y. 1004 00:45:57,070 --> 00:45:58,520 Și într-adevăr, care va lucra. 1005 00:45:58,520 --> 00:46:01,760 Este limbajele de programare minim nu înțeleg aritmetică de bază, 1006 00:46:01,760 --> 00:46:03,500 și astfel aceasta ar trebui, de fapt, locul de muncă. 1007 00:46:03,500 --> 00:46:06,730 >> Așa că lasă-mă să merg mai departe și fac vipera în fereastra mea alb-negru 1008 00:46:06,730 --> 00:46:08,090 aici, Enter. 1009 00:46:08,090 --> 00:46:10,830 Linie Cryptic dar nici o eroare mesaj, așa că e bine. 1010 00:46:10,830 --> 00:46:14,410 Dot slash vipera, da-mi un număr întreg, 1. 1011 00:46:14,410 --> 00:46:16,230 Dă-mi un alt număr întreg, 2. 1012 00:46:16,230 --> 00:46:18,770 Suma de 1 și 2 este 3. 1013 00:46:18,770 --> 00:46:21,730 >> Bine, deci o destul de banal Programul, dar ceea ce a facut-o? 1014 00:46:21,730 --> 00:46:25,680 Mi-a permis să folosească o funcție numesc aici, suna o altă funcție aici, 1015 00:46:25,680 --> 00:46:29,260 două apeluri la getint, o al treilea apel la printf, 1016 00:46:29,260 --> 00:46:30,720 și apoi utilizarea acestor substituenți. 1017 00:46:30,720 --> 00:46:33,160 Deci, e un pic mai mult sofisticat decât data trecută. 1018 00:46:33,160 --> 00:46:35,260 Dar dacă vreau să a obține un pic crescator? 1019 00:46:35,260 --> 00:46:38,900 >> Lasă-mă să mergeți mai departe și acum face acest lucru. 1020 00:46:38,900 --> 00:46:42,890 Lasă-mă să mergeți mai departe și de a crea o nou fisier numit condițiile de la zero. 1021 00:46:42,890 --> 00:46:44,890 Și am de gând pentru a salva de ceva timp, de dragul clase 1022 00:46:44,890 --> 00:46:48,260 și doar lipiți în care cod ca punct de plecare. 1023 00:46:48,260 --> 00:46:51,510 Și acum eu sunt doar de gând să pună ceva nou aici, în mijloc. 1024 00:46:51,510 --> 00:46:55,889 Deci, printf Aș dori un întreg vă rog. 1025 00:46:55,889 --> 00:46:58,180 Și tot acest cod este disponibil pe site-ul cursului, 1026 00:46:58,180 --> 00:47:00,556 nu ai nevoie de toate de tip afară în clasă, dacă nu ar fi mai degrabă. 1027 00:47:00,556 --> 00:47:02,638 int, iar acum am de gând să folosi, în loc de x și y, 1028 00:47:02,638 --> 00:47:05,270 Am de gând să utilizeze n, care este probabil cel mai comun nume 1029 00:47:05,270 --> 00:47:09,220 pentru un întreg într-un program de calculator. 1030 00:47:09,220 --> 00:47:12,060 Și acum vreau să fac o mic judecata aici. 1031 00:47:12,060 --> 00:47:15,460 Mă duc să văd dacă n este mai mare decât 0, atunci 1032 00:47:15,460 --> 00:47:23,670 Am de gând să spun Hopa printf--, printf-- ai ales un număr pozitiv, 1033 00:47:23,670 --> 00:47:25,370 exclamare punct backslash n. 1034 00:47:25,370 --> 00:47:26,460 Închide asta. 1035 00:47:26,460 --> 00:47:33,150 Altfel am de gând să imprima printf ai ales un număr negativ. 1036 00:47:33,150 --> 00:47:35,377 >> Acum, înainte de a țipa la mine, Să rula acest program. 1037 00:47:35,377 --> 00:47:36,210 Lasă-mă să plec de aici. 1038 00:47:36,210 --> 00:47:40,730 Și cum pot compila un program de denumit condiții liniuță 0? 1039 00:47:40,730 --> 00:47:42,300 Asigurați condiții de bord 0. 1040 00:47:42,300 --> 00:47:45,560 Un fel de nume stupid, dar-- la naiba. 1041 00:47:45,560 --> 00:47:47,560 OK, clipă de predare bine. 1042 00:47:47,560 --> 00:47:48,410 De ce a rupt asta? 1043 00:47:48,410 --> 00:47:51,360 1044 00:47:51,360 --> 00:47:54,710 >> Ce am numi accidental acest dosar? 1045 00:47:54,710 --> 00:47:56,876 Puteți fel de deduce din fila aici. 1046 00:47:56,876 --> 00:47:58,750 Deci, nu e rău că am a făcut acest lucru, deoarece aceasta 1047 00:47:58,750 --> 00:48:00,208 se va întâmpla, probabil, pentru unii dintre voi. 1048 00:48:00,208 --> 00:48:03,880 Așa că am numit accidental meu Codul sursă stare 0. 1049 00:48:03,880 --> 00:48:09,950 Dar codul sursă de convenție ar trebui fie într-un fișier numit condiție 0 liniuță c, 1050 00:48:09,950 --> 00:48:11,720 sau orice punct c. 1051 00:48:11,720 --> 00:48:12,610 >> Așa că lasă-mă să repar asta. 1052 00:48:12,610 --> 00:48:16,880 La fel ca Microsoft Word pot merge în sus la Salvare ca și condiție face 0 puncte c. 1053 00:48:16,880 --> 00:48:20,100 Acum, doar pentru a fi îngrijit eu sunt O să mergeți mai departe și scoate 1054 00:48:20,100 --> 00:48:23,020 stare 0, care era vechiul meu versiune. 1055 00:48:23,020 --> 00:48:26,550 Și acum să facem stare 0, Enter. 1056 00:48:26,550 --> 00:48:27,870 OK, se pare bun. 1057 00:48:27,870 --> 00:48:29,510 >> Stare 0, Enter. 1058 00:48:29,510 --> 00:48:33,530 Aș dori un întreg vă rog, 50, ai ales un număr pozitiv. 1059 00:48:33,530 --> 00:48:35,390 Acum, ce zici de negativ 50? 1060 00:48:35,390 --> 00:48:37,660 Ai ales un număr negativ. 1061 00:48:37,660 --> 00:48:39,605 Dar acum, 0. 1062 00:48:39,605 --> 00:48:42,250 1063 00:48:42,250 --> 00:48:45,350 Destul de sigur 0 nu e negativ. 1064 00:48:45,350 --> 00:48:47,780 >> Deci, aceasta este un fel de eroare logică. 1065 00:48:47,780 --> 00:48:50,680 Cum pot remedia acest lucru? 1066 00:48:50,680 --> 00:48:57,260 Altfel, dacă n este mai mic decât 0, face acest lucru, altfel putem avea o filială trei căi aici, 1067 00:48:57,260 --> 00:49:01,740 printf ai ales 0. 1068 00:49:01,740 --> 00:49:06,150 Deci, acum, dacă am rulați din nou acest Programul, după compilarea ea 1069 00:49:06,150 --> 00:49:10,790 din nou cu marca, iar acum rulați din nou stare 0, ceea ce voi vedea aici 1070 00:49:10,790 --> 00:49:14,570 este 0 îmi dă ca ieșire. 1071 00:49:14,570 --> 00:49:16,280 Deci, unde mergem cu asta? 1072 00:49:16,280 --> 00:49:18,930 >> Ei bine, e foarte ușor să piardă din vedere din pădurea de copaci. 1073 00:49:18,930 --> 00:49:23,590 Și astfel ne permit să încheie cu acest video 2 și jumătate minut 1074 00:49:23,590 --> 00:49:25,710 care în cele din urmă este un pic de un anunț de la Google, 1075 00:49:25,710 --> 00:49:28,850 dar că este într-adevăr o dovadă a ceea ce chiar folosind aceste clădire de bază 1076 00:49:28,850 --> 00:49:33,020 Blocuri care le putem face în cele din urmă dată avem un pic de programare 1077 00:49:33,020 --> 00:49:34,463 savvy sub centurile noastre. 1078 00:49:34,463 --> 00:49:35,150 >> [MUSIC JOC] 1079 00:49:35,150 --> 00:49:38,370 1080 00:49:38,370 --> 00:49:40,540 >> SAROO Brierley (voce): A fost acum 26 de ani, 1081 00:49:40,540 --> 00:49:42,470 și am fost doar pe cale de a transforma 5. 1082 00:49:42,470 --> 00:49:45,465 Am ajuns la gară și ne-am urcat trenul nostru împreună. 1083 00:49:45,465 --> 00:49:48,010 Fratele meu tocmai a spus că voi stai aici, și mă voi întoarce. 1084 00:49:48,010 --> 00:49:51,140 Și m-am gândit, bine știți, Am putea la fel de bine du-te la culcare 1085 00:49:51,140 --> 00:49:52,690 și el va trezi doar mă. 1086 00:49:52,690 --> 00:49:55,145 Și când m-am trezit următoare zi, întreaga transportul 1087 00:49:55,145 --> 00:49:59,125 era gol pe un tren fugar, o fantomă tren-mi iau nu stiu unde. 1088 00:49:59,125 --> 00:50:01,980 1089 00:50:01,980 --> 00:50:06,280 >> Am fost adoptat la Australia, la o familie australian. 1090 00:50:06,280 --> 00:50:09,710 Și mama a decorat mea cameră cu harta de India, 1091 00:50:09,710 --> 00:50:11,950 care și-a pus lângă patul meu. 1092 00:50:11,950 --> 00:50:15,830 M-am trezit în fiecare dimineață văzând că harta, și, prin urmare, 1093 00:50:15,830 --> 00:50:18,530 Într-un fel păstrat amintirile în viață. 1094 00:50:18,530 --> 00:50:20,530 Oamenii ar spune, tu ești încercarea de a găsi un ac 1095 00:50:20,530 --> 00:50:23,560 in carul cu fan, Saroo nu vei găsi. 1096 00:50:23,560 --> 00:50:28,540 >> Aș fi străfulgerat de locurile pe care le folosit pentru a merge, se aprinde intermitent de familia mea 1097 00:50:28,540 --> 00:50:29,890 se confruntă. 1098 00:50:29,890 --> 00:50:34,060 Nu a fost imaginea mamei mele, a sta jos cu picioarele încrucișate, 1099 00:50:34,060 --> 00:50:35,740 uitam doar să plângă. 1100 00:50:35,740 --> 00:50:38,160 Viața este atât de greu. 1101 00:50:38,160 --> 00:50:41,237 Asta a fost comoara mea. 1102 00:50:41,237 --> 00:50:44,320 Și mă uitam la harta Google și dat seama că este Google Earth, de asemenea. 1103 00:50:44,320 --> 00:50:48,140 Într-o lume în care te-ar putea mări în, Am început să avem toate aceste gânduri 1104 00:50:48,140 --> 00:50:51,500 și ce posibilități că acest lucru ar putea face pentru mine. 1105 00:50:51,500 --> 00:50:54,890 Mi-am spus, știi, ai Are toate aceste amintiri fotografice 1106 00:50:54,890 --> 00:50:58,590 și repere de unde ești, și Știi ce orasul arata. 1107 00:50:58,590 --> 00:51:03,060 Acest lucru ar putea fi o aplicație care puteți folosi pentru a găsi drumul înapoi. 1108 00:51:03,060 --> 00:51:06,720 >> M-am gândit, bine voi pune un punct pe stație tren Calcuta, 1109 00:51:06,720 --> 00:51:10,890 și o linie de rază, tu știi, că tu Trebuie căutarea în jurul acestei zone. 1110 00:51:10,890 --> 00:51:13,750 Am un fel de dat peste aceste piese de tren. 1111 00:51:13,750 --> 00:51:18,160 Și am început ca urmare, și Am venit la o stație de tren care 1112 00:51:18,160 --> 00:51:22,228 reflectat aceeași imagine care a fost în amintirile mele. 1113 00:51:22,228 --> 00:51:23,707 Totul potrivit. 1114 00:51:23,707 --> 00:51:27,950 M-am gândit Da, am știu unde mă duc. 1115 00:51:27,950 --> 00:51:30,116 Mă duc să lase Harta pe care o am în cap 1116 00:51:30,116 --> 00:51:33,080 mă duc și să mă ia înapoi la orașul meu natal. 1117 00:51:33,080 --> 00:51:36,420 >> Am ajuns la pragul de casa în care m-am născut. 1118 00:51:36,420 --> 00:51:39,140 Și am plimbat aproximativ 15 de metri în jurul valorii de colț, 1119 00:51:39,140 --> 00:51:42,980 exista trei femei în picioare exterior, adiacente. 1120 00:51:42,980 --> 00:51:47,830 Și cea de mijloc a pășit în față, și M-am gândit, aceasta este mama ta. 1121 00:51:47,830 --> 00:51:53,450 A venit înainte, ea ma îmbrățișat, și noi am fost acolo pentru aproximativ cinci minute. 1122 00:51:53,450 --> 00:51:56,530 1123 00:51:56,530 --> 00:51:59,000 >> Ea a luat mâna și ea ma dus la casa 1124 00:51:59,000 --> 00:52:02,450 și a luat la telefon, în cazul în care ea sunat sora mea și fratele meu 1125 00:52:02,450 --> 00:52:05,600 să spun că, știți, fratele tău are doar 1126 00:52:05,600 --> 00:52:09,340 toate dintr-o dată a apărut ca o fantomă. 1127 00:52:09,340 --> 00:52:12,440 Și apoi familia sa reunit din nou. 1128 00:52:12,440 --> 00:52:15,110 Totul e bine, I-am ajutat pe mama, 1129 00:52:15,110 --> 00:52:17,110 ea nu trebuie să fie sclavii. 1130 00:52:17,110 --> 00:52:19,555 Ea poate trăi restul de viața ei în pace. 1131 00:52:19,555 --> 00:52:23,460 >> A fost un ac in carul cu fan, dar acul a fost acolo. 1132 00:52:23,460 --> 00:52:24,400 Totul e acolo. 1133 00:52:24,400 --> 00:52:28,260 Tot ceea ce avem în lume este de la robinet a unui buton. 1134 00:52:28,260 --> 00:52:32,010 Dar trebuie să aibă voința și determinarea de a-l doresc. 1135 00:52:32,010 --> 00:52:32,950 >> [MUSIC JOC] 1136 00:52:32,950 --> 00:52:36,420 1137 00:52:36,420 --> 00:52:38,170 DAVID MALAN: Minunat recomandare dulce 1138 00:52:38,170 --> 00:52:40,540 la doar ceea ce se poate acum face cu tehnologia. 1139 00:52:40,540 --> 00:52:43,390 Ne vedem săptămâna viitoare. 1140 00:52:43,390 --> 00:52:44,374