1 00:00:00,000 --> 00:00:12,410 >> [Redarea muzicii] 2 00:00:12,410 --> 00:00:12,830 >> DAVID MALAN: În regulă. 3 00:00:12,830 --> 00:00:13,370 Bine ai venit înapoi. 4 00:00:13,370 --> 00:00:16,510 Aceasta este CS50, iar acest lucru este O saptamana, a continuat. 5 00:00:16,510 --> 00:00:20,050 Deci, unul dintre motivele pentru care am fost trece în jurul tehnologii, cum ar fi 6 00:00:20,050 --> 00:00:24,120 Google Glass este că ei vin cu ceva cunoscut ca un API, un 7 00:00:24,120 --> 00:00:25,980 Application Programming Interface. 8 00:00:25,980 --> 00:00:28,830 Și ce înseamnă acest lucru este că, odată cu fișierele potrivite și cu dreptul 9 00:00:28,830 --> 00:00:32,850 documentație, puteți scrie de fapt, software pentru dispozitive chiar ca acestea. 10 00:00:32,850 --> 00:00:36,200 >> Și ce avem în minte față de semestre final este, în cazul în care un proiect 11 00:00:36,200 --> 00:00:39,310 care implică, spune, Google Glass s-ar putea apel, vom vedea ce putem face în 12 00:00:39,310 --> 00:00:42,220 Termeni de prindere vă cu unele înlocuitor hardware precum 13 00:00:42,220 --> 00:00:46,500 API accesibil publicului, astfel încât să puteți începe de fapt, crearea de software 14 00:00:46,500 --> 00:00:48,630 care ruleaza pe acelasi Google Glass. 15 00:00:48,630 --> 00:00:51,710 >> Un alt dispozitiv care ne-am jucat cu întârziere de care ne-am gandit ar putea fi 16 00:00:51,710 --> 00:00:53,910 distracție, la sfârșitul semestru este acest lucru mic aici. 17 00:00:53,910 --> 00:00:56,860 Se numește Leap Motion, si ce esti pe cale de a vedea este punct de vedere tehnic o 18 00:00:56,860 --> 00:01:00,280 publicitate pentru dispozitiv, dar vorbește la ceea ce particular acest 19 00:01:00,280 --> 00:01:01,240 Dispozitivul este capabil. 20 00:01:01,240 --> 00:01:05,550 Și, de asemenea, vine cu un API prin intermediul pe care le puteți scrie software-ul pentru a 21 00:01:05,550 --> 00:01:10,545 controla propriul computer într-o manieră destul ca acest film de un minut aici. 22 00:01:10,545 --> 00:01:12,070 >> [Redare video] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [END redare video] 25 00:02:08,590 --> 00:02:11,190 >> Deci, chiar acum, acest dispozitiv se întâmplă să fi implementat ca un pic USB 26 00:02:11,190 --> 00:02:14,290 conector pe care le puteți conecta la dvs. calculator, dar nu aș fi surprins 27 00:02:14,290 --> 00:02:17,930 dacă înainte de mult timp avem aceste tipuri de tehnologii în următorul lot de PC-uri 28 00:02:17,930 --> 00:02:20,510 și Mac-uri, astfel încât să puteți, într-adevăr, interacționează cu acesta în 29 00:02:20,510 --> 00:02:21,650 un mod de genul asta. 30 00:02:21,650 --> 00:02:24,250 De fapt, ceea ce am crezut că mi-ar face, de asemenea, este Am tras o mică demonstrație 31 00:02:24,250 --> 00:02:25,860 program care vine cu acest software. 32 00:02:25,860 --> 00:02:28,700 Așa că am pus senzor mic în fața laptop-ul meu. 33 00:02:28,700 --> 00:02:32,420 >> Și, după cum puteți vedea, ea își dă seama deja că mâna mea este acolo 34 00:02:32,420 --> 00:02:33,400 ao controla. 35 00:02:33,400 --> 00:02:37,900 Și tot această cerere nu este roate lucruri mici, cum ar fi acest lucru. 36 00:02:37,900 --> 00:02:41,080 Dar puteți vedea că, într-adevăr, Eu am cinci degete acolo. 37 00:02:41,080 --> 00:02:44,270 Dacă putem ajunge să facă tot 10, vă puteți imagina un pian elegant 38 00:02:44,270 --> 00:02:45,390 aplicarea sau similar. 39 00:02:45,390 --> 00:02:47,820 Deci, dacă doriți să vină după clasa azi și să se joace cu care ca 40 00:02:47,820 --> 00:02:49,720 Ei bine, sunteți bineveniți să. 41 00:02:49,720 --> 00:02:52,930 Deci, mai multe pe care spre sfârșitul semestru. 42 00:02:52,930 --> 00:02:54,420 >> Deci, un cuplu de administrative anunțuri. 43 00:02:54,420 --> 00:02:58,690 Unul, face secțiunea de vineri la prânz la cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 Că URL-ul este în curs de pagina de pornire, de asemenea. 45 00:03:01,260 --> 00:03:04,010 În același timp, deși, supersections va debuta în această duminică. 46 00:03:04,010 --> 00:03:07,800 Supersections sunt un lucru o singură dată, pentru că ne ia ceva timp pentru a lucra 47 00:03:07,800 --> 00:03:09,470 cine e în care secțiune și unde. 48 00:03:09,470 --> 00:03:12,280 >> Deci, acest lucru vine duminică, nu va fi unul Secțiunea pentru cei mai puțin confortabil, 49 00:03:12,280 --> 00:03:14,040 o secțiune pentru cei mai confortabil. 50 00:03:14,040 --> 00:03:16,110 Iar cei dintre voi undeva în între sunt binevenite pentru a merge la 51 00:03:16,110 --> 00:03:17,850 una sau ambele sau nici una. 52 00:03:17,850 --> 00:03:19,150 Ambele vor fi filmat. 53 00:03:19,150 --> 00:03:22,740 Vor fi într-o sală mai mare decât o secțiune în mod normal ar fi inch 54 00:03:22,740 --> 00:03:26,110 Dar scopul aici este de a vă dota cu un pic de confort cu probleme stabilit o, 55 00:03:26,110 --> 00:03:29,910 cu C, cu CS50 aparat, această week-end, chiar înainte de a afla dvs. 56 00:03:29,910 --> 00:03:31,050 misiune oficială secțiune. 57 00:03:31,050 --> 00:03:34,700 Deci, veți întâlni TF și mai mici dvs. grup de sectionmates în aproximativ 58 00:03:34,700 --> 00:03:36,350 timp de o săptămână. 59 00:03:36,350 --> 00:03:38,200 >> Orelor de lucru, între timp, au fost întâmplă. 60 00:03:38,200 --> 00:03:41,020 Face să profite de ele in seara asta sau mâine seară, dacă doriți. 61 00:03:41,020 --> 00:03:43,460 Set de probleme a 0 se datorează vineri. 62 00:03:43,460 --> 00:03:46,680 Aceasta este o zi mai târziu decât regulat-programată joi. 63 00:03:46,680 --> 00:03:50,410 Dar, cu set de probleme 1, veți vedea care include unele warm-up 64 00:03:50,410 --> 00:03:52,770 exerciții cu care te poate extinde dvs. 65 00:03:52,770 --> 00:03:54,660 Joi termen limită până vineri. 66 00:03:54,660 --> 00:03:58,410 Set de probleme 1, între timp, va debuta pe site-ul cursului aceasta vine 67 00:03:58,410 --> 00:04:02,000 Vineri, dacă doriți să mă ghemuiesc cu ea așa cum am făcut-o o dată la un moment târziu 68 00:04:02,000 --> 00:04:04,370 Vineri seara, în camera ta. 69 00:04:04,370 --> 00:04:07,660 >> Deci, cs50.net/appliance este locul unde puteți obține aparatul CS50 70 00:04:07,660 --> 00:04:09,040 că am început cu luni. 71 00:04:09,040 --> 00:04:10,140 Vom folosi o pic mai mult astăzi. 72 00:04:10,140 --> 00:04:14,040 Dar fiți siguri că problema set 1 caietul de sarcini vă va plimba prin 73 00:04:14,040 --> 00:04:16,490 exact pașii pe care trebuie pentru a obține că până și să fie difuzate. 74 00:04:16,490 --> 00:04:22,120 Deci, nu vă faceți griji despre a face că, înainte de PSET 1, dacă nu ar fi mai degrabă. 75 00:04:22,120 --> 00:04:22,660 >> Bine. 76 00:04:22,660 --> 00:04:27,180 Deci, ne-am uitat, luni, la codul sursă, dar în contextul unei noi 77 00:04:27,180 --> 00:04:30,895 limbaj de programare, și anume C și C, spre deosebire de Scratch, nu este grafic. 78 00:04:30,895 --> 00:04:32,270 Nu e puzzle piese. 79 00:04:32,270 --> 00:04:34,450 Este sintaxa mai mult limba engleză-ca. 80 00:04:34,450 --> 00:04:37,140 Și există o serie de etape implicate în fapt, scris și rulează un 81 00:04:37,140 --> 00:04:41,650 Programul în C, deoarece, pe lângă sursa cod ca aceasta, ai nevoie de ceva 82 00:04:41,650 --> 00:04:42,890 numit un compilator. 83 00:04:42,890 --> 00:04:46,682 Și în termeni de nespecialist, ceea ce face un compilator pentru noi? 84 00:04:46,682 --> 00:04:47,650 Da. 85 00:04:47,650 --> 00:04:51,040 >> STUDENT: Acesta convertește codul care scrie la 0 si 1. 86 00:04:51,040 --> 00:04:51,151 >> DAVID MALAN: Bine. 87 00:04:51,151 --> 00:04:53,580 Deci, se convertește codul care ne scrie la 0 si 1. 88 00:04:53,580 --> 00:04:57,730 Acesta convertește așa-numitul cod sursă pentru cod obiect, din care acesta din urmă arată 89 00:04:57,730 --> 00:04:59,140 ceva ca asta. 90 00:04:59,140 --> 00:05:02,860 Și e CPU, creierul din interiorul computer, că, din cauza 91 00:05:02,860 --> 00:05:06,280 persoanele care au creat aceste computere, știu ce aceste secvente 92 00:05:06,280 --> 00:05:07,460 de medie 0 si 1. 93 00:05:07,460 --> 00:05:08,640 >> Poate că aceasta înseamnă de imprimare. 94 00:05:08,640 --> 00:05:10,265 Poate că aceasta înseamnă plus. 95 00:05:10,265 --> 00:05:11,610 Poate că aceasta înseamnă scădere. 96 00:05:11,610 --> 00:05:13,350 Poate că aceasta înseamnă afișa un grafic. 97 00:05:13,350 --> 00:05:16,870 Există modele predefinite de biți că lumea a decis înseamnă 98 00:05:16,870 --> 00:05:17,700 anumite lucruri. 99 00:05:17,700 --> 00:05:20,760 Dar pentru cea mai mare parte din acest curs, vom lucra la un nivel superior, și 100 00:05:20,760 --> 00:05:24,180 vom lua de la sine că există lucruri cum ar fi compilatoare, care poate 101 00:05:24,180 --> 00:05:27,670 face funcția noastră codul sursă în modul în care ne-am propus. 102 00:05:27,670 --> 00:05:31,660 >> Astfel încât programul am scris prima săptămâna trecută și apoi a început să port, așa să 103 00:05:31,660 --> 00:05:33,920 vorbesc, să C această trecut Luni, a fost aceasta. 104 00:05:33,920 --> 00:05:35,700 Când steagul verde clic, salut. 105 00:05:35,700 --> 00:05:37,430 Acest lucru a fost, desigur, scris în Scratch. 106 00:05:37,430 --> 00:05:40,710 Și am pretins că echivalentul Programul în C uitat un pic 107 00:05:40,710 --> 00:05:41,520 ceva de genul asta. 108 00:05:41,520 --> 00:05:45,050 >> Deci, ce-am gândit să facem la prima este, hai sa tachineze pe langa ceea ce pare, la prima 109 00:05:45,050 --> 00:05:48,790 vedere, desigur, ca destul de arcane sintaxa, dar veți începe să observați 110 00:05:48,790 --> 00:05:50,160 modele destul de repede. 111 00:05:50,160 --> 00:05:53,770 Ce vom face, de asemenea, astăzi este de a oferi te cu un model mental pentru unele 112 00:05:53,770 --> 00:05:57,280 canonic, unele construcții standard de în programare. 113 00:05:57,280 --> 00:06:00,420 Și apoi vom obține de fapt, mâinile noastre murdare cu unele exemple. 114 00:06:00,420 --> 00:06:04,140 >> Deci, pentru cei dintre voi mai confortabil, dau seama că în această săptămână și apoi viitoare 115 00:06:04,140 --> 00:06:05,940 săptămână poate fi foarte bine un pic de revizuire. 116 00:06:05,940 --> 00:06:08,810 Dar mai ales atunci când ediție hacker a problemei set 1 iese pe 117 00:06:08,810 --> 00:06:12,330 site-ul curs, vineri, eu nu cred veți găsi că, chiar în timp ce completați 118 00:06:12,330 --> 00:06:15,390 unele spații în următorii săptămână sau două, veți începe să obțineți mai mult 119 00:06:15,390 --> 00:06:18,410 contestat și se confruntă lucruri noi și mai noi. 120 00:06:18,410 --> 00:06:21,310 >> Așa că haideți să tachineze acest program în afară câteva linii la un moment dat. 121 00:06:21,310 --> 00:06:24,140 La foarte de sus, avem ceea ce-i numit punct de vedere tehnic 122 00:06:24,140 --> 00:06:25,950 Directiva preprocesor. 123 00:06:25,950 --> 00:06:30,510 Aceasta este doar o linie de cod care spune pentru a include conținutul unui fișier, 124 00:06:30,510 --> 00:06:35,080 numitul standard I / N, standard de intrare - sau, îmi pare rău, I / O standard, standard, 125 00:06:35,080 --> 00:06:38,670 intrare / ieșire,. h, în interiorul de propriul meu program. 126 00:06:38,670 --> 00:06:41,670 >> Deci, cu alte cuvinte, în cazul în care am scris acest program cu un editor de text simplu, cum ar fi 127 00:06:41,670 --> 00:06:45,260 gedit, echivalentul simplu de ceva de genul Microsoft Word, care 128 00:06:45,260 --> 00:06:50,970 instruire, # include stdio.h, este doar să-i spun compilator, apuca 129 00:06:50,970 --> 00:06:56,080 Conținutul de celălalt dosar, stdio.h, și lipiți-le chiar aici. 130 00:06:56,080 --> 00:06:57,090 >> Acum, ce-mi pasă? 131 00:06:57,090 --> 00:07:01,850 Ce am pretinde în interiorul acestui fișier numit stdio.h, care este stocat 132 00:07:01,850 --> 00:07:05,490 undeva pe hard-disk, sau în acest caz, undeva în CS50 aparat? 133 00:07:05,490 --> 00:07:06,635 Cineva la pus acolo pentru mine. 134 00:07:06,635 --> 00:07:09,910 Dar ce e în ea? 135 00:07:09,910 --> 00:07:13,020 >> Da, așa că este o declarație de o funcție numită printf. 136 00:07:13,020 --> 00:07:17,400 Amintește astfel printf funcția pe care afișează cuvinte și caractere și 137 00:07:17,400 --> 00:07:20,160 Numerele de pe ecran de la licitare mea. 138 00:07:20,160 --> 00:07:21,220 Dar eu nu l-am scris. 139 00:07:21,220 --> 00:07:22,230 CS50 nu-l scrie. 140 00:07:22,230 --> 00:07:26,990 Ani în urmă cineva a scris-o, și ei în esență, ne-a dat reteta pentru ea 141 00:07:26,990 --> 00:07:29,110 într-un fișier numit stdio.h. 142 00:07:29,110 --> 00:07:33,240 Astfel că prima linie doar dă-mi acces a funcțiilor că altcineva 143 00:07:33,240 --> 00:07:36,500 a scris cu ani în urmă, printre care sunt printf. 144 00:07:36,500 --> 00:07:39,450 >> Acum, linia următoare am de gând să val meu parte la, cel puțin până săptămâna viitoare. 145 00:07:39,450 --> 00:07:43,620 Dar pentru acum, știu că int main (void) este în esență, echivalentul acestei 146 00:07:43,620 --> 00:07:46,310 piesa de puzzle galben când steagul verde clic. 147 00:07:46,310 --> 00:07:49,510 Lumea, cu ani în urmă, a decis că în cazul în care ai scris un program în 148 00:07:49,510 --> 00:07:53,150 limbaj numit C, de a începe programul cu o linie 149 00:07:53,150 --> 00:07:54,410 care arata ca asta. 150 00:07:54,410 --> 00:07:57,650 În doar aproximativ o săptămână, se va face sens ceea ce Int este, ceea ce este nul. 151 00:07:57,650 --> 00:08:00,840 Dar pentru acum, cred că doar de ea ca această piesă de puzzle galben. 152 00:08:00,840 --> 00:08:04,550 >> Acum viitoare, avem o proteză cret urmat de către un alt aproape bretele cret, 153 00:08:04,550 --> 00:08:05,240 ca să spunem așa. 154 00:08:05,240 --> 00:08:07,430 Și vom vedea acestea de-a lungul programe în C, precum și 155 00:08:07,430 --> 00:08:08,930 JavaScript și PHP. 156 00:08:08,930 --> 00:08:11,345 Și acestea incapsuleaza doar linii legate de cod. 157 00:08:11,345 --> 00:08:14,600 Deschis bretele buclat în esență, spune, aici vine un cod. 158 00:08:14,600 --> 00:08:17,590 Și bretele buclat închis, care este în unghi, în cealaltă direcție, doar 159 00:08:17,590 --> 00:08:19,920 înseamnă, că e pentru codul relevant. 160 00:08:19,920 --> 00:08:22,970 >> Deci, linia de suculent în această primă Programul este ultimul, printf, 161 00:08:22,970 --> 00:08:25,080 citez, salut lume. 162 00:08:25,080 --> 00:08:30,670 Și am sunat la lucru între citate ce ultima oară? 163 00:08:30,670 --> 00:08:31,285 Deci, este un șir. 164 00:08:31,285 --> 00:08:35,309 Și un șir este doar tehnician Termenul pentru o secvență de 165 00:08:35,309 --> 00:08:37,169 caractere, un cuvânt, o frază. 166 00:08:37,169 --> 00:08:39,380 Chiar și o singură literă ar putea fie dublu citat. 167 00:08:39,380 --> 00:08:41,840 Dar este o secvență de zero, sau mai multe caractere. 168 00:08:41,840 --> 00:08:43,650 >> Backslash-n, deși, pare un pic ciudat. 169 00:08:43,650 --> 00:08:46,290 Dar însemna pur și simplu ceva simplu la calculator. 170 00:08:46,290 --> 00:08:48,060 Ce-i backslash-n? 171 00:08:48,060 --> 00:08:48,570 Linie nouă. 172 00:08:48,570 --> 00:08:52,490 Deci, asta e doar secvență specială de caractere că lumea a decis 173 00:08:52,490 --> 00:08:56,880 înseamnă a pune un sfârșit de linie chiar acolo, deoarece compilatorul va primi de fapt, 174 00:08:56,880 --> 00:09:02,280 confuz, de obicei, în cazul în care aveți, foarte de înțeles, dar incorect, doar 175 00:09:02,280 --> 00:09:04,570 începe apăsarea Enter pentru a pune noi linii de cod. 176 00:09:04,570 --> 00:09:07,150 Aveți nevoie pentru a fi un pic mai mult explicite cu backslash-n. 177 00:09:07,150 --> 00:09:10,540 >> Și vom vedea acolo este un alt astfel de câteva modelelor de caractere speciale. 178 00:09:10,540 --> 00:09:14,340 De exemplu, dacă ai vrut să vă lăsați minte umbla la un caz colț, 179 00:09:14,340 --> 00:09:18,080 presupunem că am vrut să imprima o Citat dublu de pe ecran pentru 180 00:09:18,080 --> 00:09:21,840 indiferent de motiv, care ar părea să fi un pic problematic, nu? 181 00:09:21,840 --> 00:09:24,990 Pentru că dacă am pus un citat dublu în mijlocul de "Bună ziua, lume," pentru orice 182 00:09:24,990 --> 00:09:30,120 motiv, de ce se pare că potențial problematice? 183 00:09:30,120 --> 00:09:32,180 Se rupe șirul. 184 00:09:32,180 --> 00:09:34,700 >> Compilator este doar un program. 185 00:09:34,700 --> 00:09:37,210 Un program ca un compilator este doar de gând pentru a citi de sus codul de fund, 186 00:09:37,210 --> 00:09:37,990 la stânga la dreapta. 187 00:09:37,990 --> 00:09:41,850 Și dacă vede trei ghilimele în loc a doua, ea nu va sti 188 00:09:41,850 --> 00:09:45,210 dacă vrei să spui că ceea ce la stânga ar trebui să fie șir, sau de lucru pentru a 189 00:09:45,210 --> 00:09:46,570 dreapta, sau totul. 190 00:09:46,570 --> 00:09:50,560 Este ambiguu, și deci ceea ce un tipic compilator ar face este doar speria, 191 00:09:50,560 --> 00:09:53,710 și vă va oferi un mesaj de eroare, și te fac să se ocupe de problema. 192 00:09:53,710 --> 00:09:58,120 >> Deci dat fiind că backslash-n înseamnă o nouă linie, ceea ce ar fi instinctele tale acum 193 00:09:58,120 --> 00:10:02,610 începe să fie, dacă ai vrut să includă ceva anormal ca un dublu 194 00:10:02,610 --> 00:10:06,210 cita în interiorul acestei altfel citat șir? 195 00:10:06,210 --> 00:10:07,640 Backslash-ghilimele. 196 00:10:07,640 --> 00:10:09,630 Și astfel vom vedea acest lucru un fel de model prea. 197 00:10:09,630 --> 00:10:12,490 >> Dacă vrei să faci ceva un pic ciudat, veți găsi că 198 00:10:12,490 --> 00:10:15,060 Soluții de multe ori urmeaza un tipar, și backslash 199 00:10:15,060 --> 00:10:17,150 denotă o secvență de evadare. 200 00:10:17,150 --> 00:10:20,320 Și aceasta înseamnă doar ceva special care trebuie să reprezinte într-un 201 00:10:20,320 --> 00:10:21,060 mod diferit. 202 00:10:21,060 --> 00:10:23,830 În ceea ce privește modul în care te reprezinta o bară oblică inversă, ei bine, vom 203 00:10:23,830 --> 00:10:24,550 reveni la asta. 204 00:10:24,550 --> 00:10:26,930 Dar răspunsul, de asemenea, este de fapt un pic evident. 205 00:10:26,930 --> 00:10:31,080 >> Așa că haideți să introducă acum o altă constructe de programare 206 00:10:31,080 --> 00:10:31,915 că ai văzut în Scratch. 207 00:10:31,915 --> 00:10:34,790 Probabil le-ați luat pentru a acordat deja, dacă ai deja scufundat în 208 00:10:34,790 --> 00:10:36,060 Problema stabilit 0. 209 00:10:36,060 --> 00:10:40,950 Dar hai să introducă acum sintaxa din C pentru acestea altfel destul de intuitiv 210 00:10:40,950 --> 00:10:42,300 idei, cel puțin unele dintre ele. 211 00:10:42,300 --> 00:10:45,570 >> Deci, această noțiune de o condiție sau o filială, în timp ce anterior am 212 00:10:45,570 --> 00:10:49,330 a reprezentat-o ​​cu cod care arata ca asta de pe partea stângă în Scratch - 213 00:10:49,330 --> 00:10:52,200 dacă x este mai mic decât y, atunci spune asa - 214 00:10:52,200 --> 00:10:56,760 în schimb acum în C - lasă-mă perfecționa în cazul cel mai simplu pe - 215 00:10:56,760 --> 00:11:01,235 suntem pur și simplu să spun, dacă, deschideți paranteze, ceva este adevărat - un 216 00:11:01,235 --> 00:11:04,190 Expresie booleană este de gând să meargă unde am spus stare - 217 00:11:04,190 --> 00:11:08,170 paranteze de aproape, apoi face ceea ce-i în interiorul acestor acolade. 218 00:11:08,170 --> 00:11:11,020 >> Deci, aici, de asemenea, acolade sunt un fel de a Scratch 219 00:11:11,020 --> 00:11:12,460 Piese de puzzle în formă de U. 220 00:11:12,460 --> 00:11:14,890 Nu ceea ce este în interiorul acestor acolade. 221 00:11:14,890 --> 00:11:16,790 În acest caz, slash slash. 222 00:11:16,790 --> 00:11:19,720 Și că acest lucru este un atacant slash, nu o bară oblică inversă. 223 00:11:19,720 --> 00:11:21,440 Slash, slash, pentru cei care au programat 224 00:11:21,440 --> 00:11:23,370 înainte, înseamnă doar - 225 00:11:23,370 --> 00:11:24,190 e doar un comentariu. 226 00:11:24,190 --> 00:11:26,630 Un comentariu nu este o linie de cod, per se. 227 00:11:26,630 --> 00:11:30,200 Este o linie de limba engleză care, umană, s-au scris la tine pentru a 228 00:11:30,200 --> 00:11:33,540 poate vă reamintesc să faci ceva, să explica pentru tine, pentru a explica 229 00:11:33,540 --> 00:11:35,260 altcineva, ceea ce codul dvs. este de a face. 230 00:11:35,260 --> 00:11:37,050 E doar un comentariu descriptiv. 231 00:11:37,050 --> 00:11:40,880 >> Acum, desigur, putem avea un mod de două- furculiță în drum doar de a face acest lucru, o 232 00:11:40,880 --> 00:11:43,930 trei căi furculiță în drum de a face acest lucru, iar dacă veți continua acest 233 00:11:43,930 --> 00:11:47,570 model, puteți avea patru căi, cinci-way, șase cai furci din drum, dacă 234 00:11:47,570 --> 00:11:50,150 trebuie să se ocupe, într-adevăr, că multe condiții. 235 00:11:50,150 --> 00:11:52,010 Și apoi observați paralelismul aici - 236 00:11:52,010 --> 00:11:55,070 în cazul în care (condiție), else if (conditie), și singurul care e un pic 237 00:11:55,070 --> 00:11:58,010 ciudat este ultimul, care este doar că altcineva. 238 00:11:58,010 --> 00:12:01,170 Dar, din nou, acest lucru este identic, conceptual, pentru ceea ce am făcut 239 00:12:01,170 --> 00:12:04,690 deja, deși sintaxa va ia un pic sa va obisnuiti. 240 00:12:04,690 --> 00:12:07,730 >> Acum, în acest exemplu, există o altă sintaxă ciudat. 241 00:12:07,730 --> 00:12:11,220 Vedem printf din nou, paranteză deschisă, și Paranteză închisă. 242 00:12:11,220 --> 00:12:13,190 Și interioară nu există un șir citat. 243 00:12:13,190 --> 00:12:17,060 Paranteze, în contextul de printf, du-te la stânga 244 00:12:17,060 --> 00:12:18,160 și dreptul de ce? 245 00:12:18,160 --> 00:12:22,190 Ce vom descrie că citat șir ca fiind mai general? 246 00:12:22,190 --> 00:12:23,320 >> Deci, este un argument. 247 00:12:23,320 --> 00:12:26,620 Oricând aveți o funcție, cum ar fi printf, iar apoi o paren deschis și un 248 00:12:26,620 --> 00:12:30,330 paren aproape și ceva în interiorul ea, indiferent dacă este un șir, sau o 249 00:12:30,330 --> 00:12:34,420 întreg, sau orice altceva, lucru în între aceste paranteze se numește 250 00:12:34,420 --> 00:12:35,110 un argument. 251 00:12:35,110 --> 00:12:37,910 >> Și un argument doar influențează Comportamentul funcția lui. 252 00:12:37,910 --> 00:12:39,990 În acest caz, e destul de clar cum. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 Și printf se va imprima exact care. 255 00:12:47,720 --> 00:12:51,590 Deoarece cu siguranță, în anii persoana în urmă care a implementat printf avut nici o idee 256 00:12:51,590 --> 00:12:55,000 ceea ce am succesorii umane au fost va folosi printf pentru. 257 00:12:55,000 --> 00:12:58,610 Deci, de aceea exista argumente, pentru a influența comportamentul după o funcție de 258 00:12:58,610 --> 00:12:59,450 a fost scris. 259 00:12:59,450 --> 00:13:00,780 >> Acum, expresie booleană. 260 00:13:00,780 --> 00:13:02,470 Am văzut aceste înainte în Scratch. 261 00:13:02,470 --> 00:13:06,680 Se pare în C Puteți, de asemenea, "sau" le împreună, ca să spunem așa. 262 00:13:06,680 --> 00:13:10,930 Două bare verticale înseamnă că acest bloc din cod, această face acest lucru, va 263 00:13:10,930 --> 00:13:15,350 executa dacă prima condiție este adevărată sau a doua condiție este adevărată. 264 00:13:15,350 --> 00:13:17,710 Și, chiar dacă nu s-ar fi făcut acest lucru în Scratch, ai putea într-adevăr 265 00:13:17,710 --> 00:13:20,580 face acest lucru în Scratch, și puteți, de asemenea, te exprimi altfel - 266 00:13:20,580 --> 00:13:25,300 dacă prima condiție, iar al doilea condiție sunt adevărate, atunci nu ceea ce-i 267 00:13:25,300 --> 00:13:27,160 interiorul acolade. 268 00:13:27,160 --> 00:13:31,210 >> Și, la fel ca și o parte, motivul pentru care este un ampersand dublu și un dublu 269 00:13:31,210 --> 00:13:34,610 bara verticală, vom vedea în cele din urmă că o singură bară verticală și o 270 00:13:34,610 --> 00:13:38,710 ampersand unic de fapt diferite adică în C. Deci, de acum, 271 00:13:38,710 --> 00:13:41,840 că dublarea simbolurilor este intenționată. 272 00:13:41,840 --> 00:13:45,070 >> Așa că haideți să introducă, pe scurt, acest alt pic de sintaxă. 273 00:13:45,070 --> 00:13:48,940 Acest lucru nu este destul de reportare a Zero, dar eu pretind că pot 274 00:13:48,940 --> 00:13:55,190 pună în aplicare noțiunea de cazul în care altcineva, în cazul în care altfel, în cazul în care altcineva, în cazul în care declarația altceva folosind 275 00:13:55,190 --> 00:13:56,760 ceva numit un switch. 276 00:13:56,760 --> 00:14:00,820 Și singurul motiv pentru aceasta există cu adevărat este să vă dau doar, programator, un 277 00:14:00,820 --> 00:14:05,470 ușor mod diferit de rezolvare a unor Problema, deși logic aceasta 278 00:14:05,470 --> 00:14:07,340 nu da nici noi capabilități. 279 00:14:07,340 --> 00:14:08,530 >> Prin asta vreau sa spun acest lucru. 280 00:14:08,530 --> 00:14:13,330 Când spui comutator, și apoi un spațiu, și apoi o pereche de paranteze, în interiorul 281 00:14:13,330 --> 00:14:14,570 din care se duce o expresie - 282 00:14:14,570 --> 00:14:18,010 și acest lucru ar putea fi un pic neevidenta la prima, dar acest lucru nu este un argument, 283 00:14:18,010 --> 00:14:20,680 punct de vedere tehnic, deoarece comutator nu este o funcție. 284 00:14:20,680 --> 00:14:24,230 Deci, pentru moment, doar presupunem că suntem folosind paranteze în diferite locuri 285 00:14:24,230 --> 00:14:25,250 pentru diferite motive. 286 00:14:25,250 --> 00:14:29,310 >> Deci, porniți expresie înseamnă că pot a pus-o în interiorul variabil de cei 287 00:14:29,310 --> 00:14:31,350 paranteze unde se spune exprimare. 288 00:14:31,350 --> 00:14:33,090 Și apoi dacă variabila - 289 00:14:33,090 --> 00:14:35,400 Presupun că e numit x, și E doar un întreg - 290 00:14:35,400 --> 00:14:38,900 Eu pot enumera apoi în diapozitiv mea aici, ceva de genul asta. 291 00:14:38,900 --> 00:14:41,690 Dacă x este variabila mea, și eu vrei sa faci ceva, dacă x 292 00:14:41,690 --> 00:14:43,480 este egal cu 1, eu pot face asta. 293 00:14:43,480 --> 00:14:46,660 >> Dacă am în schimb vrea să facă ceva dacă x este 2, pot face asta. 294 00:14:46,660 --> 00:14:50,390 Altfel, dacă vreau să fac altceva în întregime, pot avea un caz implicit în 295 00:14:50,390 --> 00:14:52,750 caz în care fac acest alt lucru. 296 00:14:52,750 --> 00:14:58,730 Deci, în acest sens, este echivalent cu un dacă X este egal cu 1, altfel dacă altcineva, 297 00:14:58,730 --> 00:15:01,150 dar am spus asta acum doar pentru că vom vedea din nou. 298 00:15:01,150 --> 00:15:03,720 Dar pentru acum, știu doar că ea există. 299 00:15:03,720 --> 00:15:04,220 >> Bine. 300 00:15:04,220 --> 00:15:07,660 Deci, in aceste ultime doua sunt un pic mai mult complexe la prima vedere, dar ei nu 301 00:15:07,660 --> 00:15:09,385 ceva destul de simplu. 302 00:15:09,385 --> 00:15:14,410 O buclă în C este o bucată de cod care doar face ceva nou și 303 00:15:14,410 --> 00:15:15,330 din nou și din nou. 304 00:15:15,330 --> 00:15:17,590 Și singurul lucru enervant despre ea este că este că este un pic criptic 305 00:15:17,590 --> 00:15:21,380 să te exprimi în acest ciclic model, dar lumea standardizate pe 306 00:15:21,380 --> 00:15:22,450 modul următor. 307 00:15:22,450 --> 00:15:25,760 >> Când utilizați un pentru buclă, ai o pereche de paranteze din nou. 308 00:15:25,760 --> 00:15:27,570 Și observați cele două punct și virgulă acolo. 309 00:15:27,570 --> 00:15:34,380 Aceste două semne punct și virgulă separate de trei diferite expresii interiorul 310 00:15:34,380 --> 00:15:35,020 paranteze. 311 00:15:35,020 --> 00:15:37,170 Una dintre ele este așa-numitele initializare. 312 00:15:37,170 --> 00:15:38,830 Unul este așa-numita condiție. 313 00:15:38,830 --> 00:15:40,210 Și unul este așa-numitele actualizări. 314 00:15:40,210 --> 00:15:43,240 >> Privit puțin în abstract, acest lucru este complet non-evident, deci haideți să ne uităm 315 00:15:43,240 --> 00:15:44,630 la un exemplu concret. 316 00:15:44,630 --> 00:15:46,720 În Scratch am avut un bloc de repetare. 317 00:15:46,720 --> 00:15:50,670 Și acest bloc spus repeta de 10 ori, spune "Bună ziua, lume." Lasă-mă să revendice 318 00:15:50,670 --> 00:15:53,810 acum, și vom reveni la aceasta, și acest lucru, de asemenea, va primi mai familiar 319 00:15:53,810 --> 00:15:57,345 te înainte de mult timp, echivalentul C cod ar putea fi spus să fie acest lucru - 320 00:15:57,345 --> 00:16:02,320 o pentru declarația și un spațiu, o pereche de paranteze, observați punct și virgulă în 321 00:16:02,320 --> 00:16:05,730 acolo, care separă trei distincte lucruri, de inițializare, 322 00:16:05,730 --> 00:16:07,320 condiție, și actualizarea. 323 00:16:07,320 --> 00:16:08,840 >> Și să ia o ghici ce prima este de a face. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 În termeni simpli dur lui, ceea ce este care face pentru noi, probabil? 326 00:16:15,120 --> 00:16:15,590 Deci, da. 327 00:16:15,590 --> 00:16:19,630 Se declară o variabilă numită I, și dă-l ce valoare? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Deci, se creează o variabilă numită Eu, stocarea 0 valoarea în ea. 330 00:16:24,280 --> 00:16:26,420 Aceasta este așa-numitul inițializare. 331 00:16:26,420 --> 00:16:29,360 >> Bine, acum am susținut în fața că chestia de la mijloc, i 332 00:16:29,360 --> 00:16:31,760 <10, este condiție. 333 00:16:31,760 --> 00:16:32,730 Deci, ce face? 334 00:16:32,730 --> 00:16:36,560 Ei bine, ceea ce face pentru buclă atunci când o program cu o buclă este rulat, este 335 00:16:36,560 --> 00:16:41,050 de fiecare dată când calculatorul trece prin această buclă, de sus în jos, partea de sus a 336 00:16:41,050 --> 00:16:43,740 partea de jos, la fel ca voi făcut atunci când numărare-vă și stând jos, 337 00:16:43,740 --> 00:16:47,090 din nou și din nou și din nou, calculatorul se întâmplă 338 00:16:47,090 --> 00:16:48,560 pentru a verifica această condiție. 339 00:16:48,560 --> 00:16:51,140 Și dacă este mai mic de 10, o va face din nou. 340 00:16:51,140 --> 00:16:53,100 Dacă i este mai mic de 10, o va face din nou. 341 00:16:53,100 --> 00:16:55,030 Dacă i este mai mic de zece, o va face din nou. 342 00:16:55,030 --> 00:16:57,330 Așa că pare să sugereze că Sperăm că se schimbă. 343 00:16:57,330 --> 00:16:59,010 În caz contrar, vom avea o buclă infinită. 344 00:16:59,010 --> 00:17:02,590 Și într-adevăr, eu se schimbă, deoarece Ultimul lucru pe care, după virgulă acolo 345 00:17:02,590 --> 00:17:05,569 este sintaxa oarecum criptic de i + +. 346 00:17:05,569 --> 00:17:07,630 Dar cei dintre voi care au făcut acest înainte, asta înseamnă doar 347 00:17:07,630 --> 00:17:08,609 pur și simplu ce? 348 00:17:08,609 --> 00:17:09,730 >> STUDENȚI: [interpunerea VOCI]. 349 00:17:09,730 --> 00:17:10,740 >> DAVID MALAN: Adauga 1 la i. 350 00:17:10,740 --> 00:17:11,819 Incrementa i. 351 00:17:11,819 --> 00:17:13,910 Așa că am văzut un puzzle Scratch piesă pentru că, de fapt. 352 00:17:13,910 --> 00:17:18,230 Ea nu arata ca i + +, dar că doar înseamnă, pur și simplu, incrementa 353 00:17:18,230 --> 00:17:24,040 valoarea I cu 1 de fiecare dată când face acest lucru. 354 00:17:24,040 --> 00:17:26,910 Deci, literalmente, voi începe prin a inițializarea I la 0. 355 00:17:26,910 --> 00:17:29,520 Atunci ai verifica starea dumneavoastră. 356 00:17:29,520 --> 00:17:31,070 Este 0 mai puțin de 10? 357 00:17:31,070 --> 00:17:31,730 Da. 358 00:17:31,730 --> 00:17:32,910 Trecem prin bucla. 359 00:17:32,910 --> 00:17:35,150 >> Următorul lucru pe care pretind a computerului de gând să faci este sa mergi 360 00:17:35,150 --> 00:17:35,910 de i incrementa. 361 00:17:35,910 --> 00:17:37,080 Deci, eu acum 1. 362 00:17:37,080 --> 00:17:37,940 Acesta verifică starea. 363 00:17:37,940 --> 00:17:39,290 Este mai mică de 1 10? 364 00:17:39,290 --> 00:17:39,930 Desigur. 365 00:17:39,930 --> 00:17:41,030 Deci, face din nou. 366 00:17:41,030 --> 00:17:43,580 Atunci acesta trepte i + + la 2. 367 00:17:43,580 --> 00:17:44,610 Este 2 mai mic de 10? 368 00:17:44,610 --> 00:17:45,230 Da. 369 00:17:45,230 --> 00:17:46,670 Și, din nou și din nou și din nou. 370 00:17:46,670 --> 00:17:50,070 Și în cele din urmă, din cauza plus-plussing, vom ajunge să i este egal cu 10. 371 00:17:50,070 --> 00:17:51,675 Este mai mică de 10 10? 372 00:17:51,675 --> 00:17:52,990 Ei bine, evident că nu. 373 00:17:52,990 --> 00:17:55,320 Și asta e punctul în care pentru bucla doar se oprește. 374 00:17:55,320 --> 00:17:58,320 Și dacă aveți codul de mai mult de Ecranul jos, calculatorul 375 00:17:58,320 --> 00:18:01,620 veniturile pentru a rula acest cod în loc. 376 00:18:01,620 --> 00:18:05,380 >> Deci, din nou, chiar dacă acest lucru se va arata si se simt un pic ciudat la 377 00:18:05,380 --> 00:18:07,830 în primul rând, desigur, pentru cei dintre voi care nu s-au programat înainte, 378 00:18:07,830 --> 00:18:11,640 literalmente reduce conceptual a ceea ce este de altfel un foarte 379 00:18:11,640 --> 00:18:14,330 puzzle simplu piesă în Scratch. 380 00:18:14,330 --> 00:18:19,130 >> Bine, i-am promis că nu ar fie alte analogii în Scratch. 381 00:18:19,130 --> 00:18:20,060 Nu e unul prea. 382 00:18:20,060 --> 00:18:21,700 Și am văzut ultima scurt timp. 383 00:18:21,700 --> 00:18:23,530 Dar tine minte pentru totdeauna bloca în Scratch? 384 00:18:23,530 --> 00:18:25,490 Ea doar face ceva pentru totdeauna? 385 00:18:25,490 --> 00:18:27,470 Am pretins că ai putea pune în aplicare aceasta în acest fel. 386 00:18:27,470 --> 00:18:29,740 Și vă pot pune în aplicare, de fapt acest într-o grămadă de moduri diferite. 387 00:18:29,740 --> 00:18:34,260 >> Dar buclă în timp ce este doar un alt modul în C de a te exprima. 388 00:18:34,260 --> 00:18:37,080 La sfârșitul zilei, nu se poate face ceva cu o buclă în timp ce vă 389 00:18:37,080 --> 00:18:38,360 Nu se poate cu un pentru buclă. 390 00:18:38,360 --> 00:18:41,430 Deci, acestea sunt la sfârșitul zi funcțional aceeași. 391 00:18:41,430 --> 00:18:43,840 Dar vă permite să te exprimi un pic diferit în 392 00:18:43,840 --> 00:18:44,850 modul următor. 393 00:18:44,850 --> 00:18:49,720 >> Cu bucla în timp ce, e ceea ce este în paranteze care este verificată din nou și 394 00:18:49,720 --> 00:18:51,050 din nou și din nou. 395 00:18:51,050 --> 00:18:55,100 Și, de îndată ce expresie este fals, apoi bucla se oprește de executare, 396 00:18:55,100 --> 00:18:57,890 și computerul trece la rula orice alt cod ce 397 00:18:57,890 --> 00:18:59,230 au în fișierul. 398 00:18:59,230 --> 00:19:02,180 >> Dar ceea ce este interesant aici este că am scris literalmente adevărat. 399 00:19:02,180 --> 00:19:06,680 Și adevărat este un tip de valoare Boolean, o valoare adevărat sau fals. 400 00:19:06,680 --> 00:19:09,750 Atât de adevărat ar putea deveni vreodată fals dacă am literalmente 401 00:19:09,750 --> 00:19:11,970 este greu codificate în programul meu? 402 00:19:11,970 --> 00:19:12,470 Deci, nu. 403 00:19:12,470 --> 00:19:13,730 E un pic ciudat că am făcut asta. 404 00:19:13,730 --> 00:19:15,190 Dar adevărat este adevărat. 405 00:19:15,190 --> 00:19:16,320 Nu e nici o plus-plussing. 406 00:19:16,320 --> 00:19:17,820 Nu are nici un rost de variabile în aici. 407 00:19:17,820 --> 00:19:22,740 Așa că am greu codificate în timp ce adevărat, acest lucru bucla este întotdeauna o să evalueze 408 00:19:22,740 --> 00:19:24,090 din nou și din nou și din nou. 409 00:19:24,090 --> 00:19:27,660 >> Deci, cum de multe ori este Hello world merge pentru a imprima de pe ecran? 410 00:19:27,660 --> 00:19:28,170 Pentru totdeauna. 411 00:19:28,170 --> 00:19:31,980 Un număr infinit de ori, până când moare baterii sau alte externe 412 00:19:31,980 --> 00:19:32,730 Evenimentul se întâmplă. 413 00:19:32,730 --> 00:19:35,880 Deci, acest lucru nu este, probabil, cel mai bun program de a scrie, pentru că în cazul în care utilizatorul 414 00:19:35,880 --> 00:19:38,660 nu poate renunta programul dvs., este probabil, nu ceea ce ați intenționat. 415 00:19:38,660 --> 00:19:41,070 >> Dar, uneori, programele ar trebui au o buclă infinită. 416 00:19:41,070 --> 00:19:44,050 De exemplu, în cazul în care computerul are o ceas pe ea, cu siguranță că ar fi 417 00:19:44,050 --> 00:19:48,130 frumos dacă ceasul acesta se păstra actualizarea în sine pentru totdeauna, deși o dată 418 00:19:48,130 --> 00:19:50,500 al doilea sau o dată pe minut sau ceva de genul asta. 419 00:19:50,500 --> 00:19:53,690 Bucle astfel încât, chiar infinite nu au locul lor. 420 00:19:53,690 --> 00:19:54,360 >> Bine. 421 00:19:54,360 --> 00:19:55,190 În sfârșit, aceasta. 422 00:19:55,190 --> 00:19:57,770 Și acesta este un pic diferit funcțional, și ne vom întoarce la 423 00:19:57,770 --> 00:19:59,460 acest lucru, probabil, în PSET 1. 424 00:19:59,460 --> 00:20:02,370 Dar există un alt tip de buclă numit o face în timp ce buclă. 425 00:20:02,370 --> 00:20:07,100 Și singura diferență aici între un face în timp ce buclă și, să zicem, o buclă în timp ce, 426 00:20:07,100 --> 00:20:11,120 este că condiție nu este verificată înainte de a executa codul, dar după 427 00:20:11,120 --> 00:20:12,080 te execute codul. 428 00:20:12,080 --> 00:20:15,380 Deci, la partea de sus pentru timp buclă, în timp ce face în timp 429 00:20:15,380 --> 00:20:16,560 verifică-l în partea de jos. 430 00:20:16,560 --> 00:20:21,370 >> Iar acest lucru înseamnă doar că bucla în timp ce va executa de obicei de mai multe ori 431 00:20:21,370 --> 00:20:24,630 sau mai puține ori decât o buclă în timp ce? 432 00:20:24,630 --> 00:20:30,810 Potențial de mai multe ori, pentru că o face în timp ce bucla se spune clar acest lucru, 433 00:20:30,810 --> 00:20:34,600 numai după care vă verificați dacă starea interiorul 434 00:20:34,600 --> 00:20:35,980 paranteze este adevărat. 435 00:20:35,980 --> 00:20:37,940 >> Deci, vom vedea acest lucru din nou probabil în PSET 1. 436 00:20:37,940 --> 00:20:41,150 Dacă vrei vreodată să facă ceva la cel puțin o dată și apoi poate ceva mai mult 437 00:20:41,150 --> 00:20:43,350 ori, acesta este un bun construirea a utiliza. 438 00:20:43,350 --> 00:20:46,970 Dar, o buclă în timp ce, prin contrast, se va verifica starea sa de primul. 439 00:20:46,970 --> 00:20:50,660 Și că este de bucle în C, nu în timp ce, în timp, și pentru bucle. 440 00:20:50,660 --> 00:20:54,700 Și din nou, ei mapa destul de frumos înapoi la zero, cu excepția acesta nu 441 00:20:54,700 --> 00:20:57,350 chiar au același analogice în Scratch. 442 00:20:57,350 --> 00:20:58,880 >> Ei bine, ce zici, acum, variabile? 443 00:20:58,880 --> 00:21:02,600 Deci, acesta este modul în care am declarat-o variabilă sintactic de altă zi. 444 00:21:02,600 --> 00:21:06,440 Am avut un int, pe care am susținut este un număr întreg. 445 00:21:06,440 --> 00:21:09,690 Apoi am avut o variabilă numită contor, și apoi un punct și virgulă. 446 00:21:09,690 --> 00:21:11,070 Deci, ce este această linie de cod face? 447 00:21:11,070 --> 00:21:14,540 Acest lucru este, pur și simplu, declarând o variabilă - 448 00:21:14,540 --> 00:21:17,940 că este, cere calculatorul, da-mi unele de memorie, da-mi niste biti - în 449 00:21:17,940 --> 00:21:19,450 care pot stoca ce? 450 00:21:19,450 --> 00:21:20,300 Un int. 451 00:21:20,300 --> 00:21:23,570 Și virgulă înseamnă doar sfârșitul de linie de cod. 452 00:21:23,570 --> 00:21:25,500 >> Acum, a doua linie este, probabil, destul de guessable. 453 00:21:25,500 --> 00:21:29,710 Ce este contor = 0; face? 454 00:21:29,710 --> 00:21:31,690 Este atribuirea 0 pentru a contracara. 455 00:21:31,690 --> 00:21:33,470 Și astfel încât acesta este un alt lucru că este un pic enervant 456 00:21:33,470 --> 00:21:34,540 comparativ cu, să zicem, algebra. 457 00:21:34,540 --> 00:21:39,110 Întrucât, în algebră, semnul egal înseamnă egal, aici în C, egal 458 00:21:39,110 --> 00:21:40,470 semn înseamnă misiune. 459 00:21:40,470 --> 00:21:45,380 Deci, aceasta înseamnă a pune ceea ce e pe dreapta în ceea ce-i de pe partea stângă. 460 00:21:45,380 --> 00:21:49,030 Și vom vedea un alt simbol, este egal este egal, atunci când vrem pentru a testa de fapt 461 00:21:49,030 --> 00:21:50,570 de calitate, oarecum enervant. 462 00:21:50,570 --> 00:21:52,590 >> Dar acest lucru este un pic ineficient. 463 00:21:52,590 --> 00:21:55,090 Este un fel de enervant ca am pentru a declara o variabilă și 464 00:21:55,090 --> 00:21:56,110 apoi da o valoare. 465 00:21:56,110 --> 00:21:59,380 Deci, C, de fapt ne permite să simplifice această și doar face totul dintr-o dată. 466 00:21:59,380 --> 00:22:01,330 Puteți declara variabila pe stânga. 467 00:22:01,330 --> 00:22:04,590 Puteți face în continuare alocarea pe dreptul de a pune semnul egal în 468 00:22:04,590 --> 00:22:05,030 la mijloc. 469 00:22:05,030 --> 00:22:08,740 Deci, la sfârșitul zilei, aceste două sunt echivalent, dar asta, sincer, 470 00:22:08,740 --> 00:22:11,840 este, probabil, mai bine obiceiul de a intra în doar pentru că este un pic mai puțin 471 00:22:11,840 --> 00:22:15,040 cod, este un pic mai ușor de citit, și doar înăsprește 472 00:22:15,040 --> 00:22:17,470 codul, ca să spunem așa. 473 00:22:17,470 --> 00:22:22,120 >> Orice întrebări, astfel, până în prezent pe bucle, pe variabile, în condiții, pe 474 00:22:22,120 --> 00:22:27,001 Booleans, fie punct de vedere tehnic sau conceptual? 475 00:22:27,001 --> 00:22:28,010 Bine. 476 00:22:28,010 --> 00:22:30,690 Deci, acum acesta viitor devine o pic mai interesant. 477 00:22:30,690 --> 00:22:34,790 Și acesta este un exemplu am pus ultimul timp ce doar Maps exemplu Scratch 478 00:22:34,790 --> 00:22:35,820 pe la C. 479 00:22:35,820 --> 00:22:36,580 >> Deci, o funcție. 480 00:22:36,580 --> 00:22:38,110 În termeni de nespecialist, ceea ce este o funcție? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Trebuie să fie mai îndrăzneț cu raspunsul tau. 483 00:22:44,350 --> 00:22:45,020 Ce este o funcție? 484 00:22:45,020 --> 00:22:46,320 >> STUDENT: Are ceva. 485 00:22:46,320 --> 00:22:46,780 >> DAVID MALAN: Ce-i asta? 486 00:22:46,780 --> 00:22:48,000 >> STUDENT: Are ceva. 487 00:22:48,000 --> 00:22:48,710 >> DAVID MALAN: Are ceva. 488 00:22:48,710 --> 00:22:49,000 OK. 489 00:22:49,000 --> 00:22:49,590 Vom începe acolo. 490 00:22:49,590 --> 00:22:51,270 Deci, o funcție face ceva. 491 00:22:51,270 --> 00:22:55,160 Deci, este o bucata de cod care este în esență, implementat în altă parte că 492 00:22:55,160 --> 00:22:56,620 într-adevăr face ceva. 493 00:22:56,620 --> 00:23:00,180 Acum, ceea ce este interesant despre o funcție este că poate dura de intrare, 494 00:23:00,180 --> 00:23:02,710 și se poate produce rezultate. 495 00:23:02,710 --> 00:23:05,090 Și să luăm de fapt o privire la acest lucru. 496 00:23:05,090 --> 00:23:09,030 >> Deci, omul din spatele cortinei a fost în mod deliberat în urmă cu o clipă. 497 00:23:09,030 --> 00:23:10,320 Aici avem o masă. 498 00:23:10,320 --> 00:23:13,010 Dar să presupunem că acest fapt reprezintă o cutie mare. 499 00:23:13,010 --> 00:23:14,940 Deci, aceasta este o așa-numită cutie neagră. 500 00:23:14,940 --> 00:23:19,800 Și, în general, în proiectare, în calculator știință, cutii negre doar se referă la 501 00:23:19,800 --> 00:23:22,510 piese de funcționalitate care cineva a implementat, iar tu nu faci 502 00:23:22,510 --> 00:23:26,140 știu neapărat sau pasa cum este implementat sub capota. 503 00:23:26,140 --> 00:23:28,960 Ai doar grijă ca această cutie neagră, pe care vom începe acum de asteptare o 504 00:23:28,960 --> 00:23:30,730 funcție, face ceva. 505 00:23:30,730 --> 00:23:34,710 >> Astfel, de exemplu, în cazul în care această cutie neagră pe etapa de aici reprezintă printf, o 506 00:23:34,710 --> 00:23:38,040 funcția, eu știu de la exemplele anterioare care să ia printf una sau mai multe 507 00:23:38,040 --> 00:23:40,910 argumente, și prima dintre aceste Argumentele ar trebui să fie un șir, cum ar fi 508 00:23:40,910 --> 00:23:44,780 "Bună ziua, lume." Ei bine, dacă eu sunt persoana scrierea programului, și vreau 509 00:23:44,780 --> 00:23:50,460 pentru a utiliza printf, I, de exemplu, s-ar putea să ia o bucată de hârtie goală aici și o 510 00:23:50,460 --> 00:23:55,060 marker negru și scrie pe ea - 511 00:23:55,060 --> 00:23:56,580 Am scris greșit "lume" - 512 00:23:56,580 --> 00:23:59,560 H-E-L-L-O. 513 00:23:59,560 --> 00:24:04,220 >> Deci, voi lua markerul negru și voi scrie, la fel de mare și lizibil ca pot pe 514 00:24:04,220 --> 00:24:07,260 această bucată de hârtie, "Bună ziua, lume," Și acum eu susțin acest lucru este argumentul meu. 515 00:24:07,260 --> 00:24:09,740 Acesta este un șir reprezentat cu o bucată de hârtie albă. 516 00:24:09,740 --> 00:24:13,030 Și de intrare mea acum la funcția printf va fi aceasta. 517 00:24:13,030 --> 00:24:18,250 Deci, eu sun printf, trecând ca argument ca intrare la ea. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> Și acum, eu nu știu modul în care persoana care a scris printf a făcut-o cu ani în urmă, dar 520 00:24:26,740 --> 00:24:31,110 Eu știu de la documentația de care scopul său în viață este de a imprima ceea ce am 521 00:24:31,110 --> 00:24:34,410 oferi să-l ca intrare. 522 00:24:34,410 --> 00:24:40,630 Și astfel, chiar dacă această punere în aplicare Este fără știrea mine 523 00:24:40,630 --> 00:24:44,170 sub capota, acum Eu văd, oh, aceasta se face. 524 00:24:44,170 --> 00:24:45,740 Ea a imprimat ceva de pe ecran. 525 00:24:45,740 --> 00:24:49,070 Și acum control al programului, în cazul în care există au fost mai multe linii de cod, ar 526 00:24:49,070 --> 00:24:51,070 s-au întors la mine. 527 00:24:51,070 --> 00:24:52,290 Și astfel faptul că Colton - 528 00:24:52,290 --> 00:24:55,370 binecuvânta inima lui, se ascunde aici sub un tabel în fața tuturor de tine - 529 00:24:55,370 --> 00:24:59,530 este deliberată în care eu nu știu și nu-mi pasă cât de printf este 530 00:24:59,530 --> 00:25:00,100 implementat. 531 00:25:00,100 --> 00:25:03,390 Știu, din nou, de la ei documentație, ceea ce face și cum am 532 00:25:03,390 --> 00:25:05,040 eu ar trebui să-l folosească. 533 00:25:05,040 --> 00:25:09,140 >> Acum, amintim că printf ar putea obține un pic mai sofisticat. 534 00:25:09,140 --> 00:25:12,220 Din nou, doar vorbim despre echivalentul a blocului Spune Scratch lui. 535 00:25:12,220 --> 00:25:14,230 Dar am, de asemenea, ultima dată. 536 00:25:14,230 --> 00:25:17,270 Am vrut să fac programul meu salut o puțin mai dinamic și nu doar greu 537 00:25:17,270 --> 00:25:19,740 ceva de cod ca "lumea," și cu siguranta nu ceva greu codul 538 00:25:19,740 --> 00:25:22,520 arbitrar ca D-A-V-I-D în program. 539 00:25:22,520 --> 00:25:27,510 Am vrut să întreb de utilizator pentru lui sau a ei nume, și apoi face ceva cu 540 00:25:27,510 --> 00:25:29,720 că șir pe care le oferă. 541 00:25:29,720 --> 00:25:32,690 >> Deci, există ceva un pic diferit aici. printf, un moment în urmă, 542 00:25:32,690 --> 00:25:35,860 a, într-adevăr, face ceva, dar nu sa întors nimic pentru mine. 543 00:25:35,860 --> 00:25:36,020 Dreapta? 544 00:25:36,020 --> 00:25:38,910 Colton nu-mi dai nimic înapoi, nu bucată de hârtie. 545 00:25:38,910 --> 00:25:40,320 Nu a fost doar un efect secundar. 546 00:25:40,320 --> 00:25:44,510 My furnizarea de "Bună ziua, lume", ca o argument a condus în Colton 547 00:25:44,510 --> 00:25:48,420 efect secundar al unui cuvânt, unele cuvinte, apare pe ecran. 548 00:25:48,420 --> 00:25:51,350 >> getstring, însă, este un pic diferit. getstring este, de asemenea, un 549 00:25:51,350 --> 00:25:54,590 funcționa, dar returnează o anumită valoare. 550 00:25:54,590 --> 00:25:56,370 Ea nu are doar un efect secundar estetic. 551 00:25:56,370 --> 00:26:00,230 Este de fapt, dă-mi, persoana apel sau folosind funcția, 552 00:26:00,230 --> 00:26:01,320 ceva înapoi. 553 00:26:01,320 --> 00:26:05,740 Deci, în acest caz, este getstring numit cu getstring deschis 554 00:26:05,740 --> 00:26:07,510 paren, paren aproape. 555 00:26:07,510 --> 00:26:11,370 Are getstring, prin urmare, să ia orice argumente sau de intrare? 556 00:26:11,370 --> 00:26:12,340 Nu, se pare că nu. 557 00:26:12,340 --> 00:26:14,460 Scopul său în viață este doar pentru a obține un șir. 558 00:26:14,460 --> 00:26:16,910 Ea nu are nevoie de mai multe detalii decât atât. 559 00:26:16,910 --> 00:26:20,430 Așa că lasă-mă să merg mai departe și pretinde că, din nou, această cutie neagră nu este printf, 560 00:26:20,430 --> 00:26:25,160 dar getstring, și lasă-mă, persoana scris acest program, apel sau de a folosi 561 00:26:25,160 --> 00:26:29,720 getstring doar prin scris G-E-T-S-T-R-I-N-G, deschis paren, aproape 562 00:26:29,720 --> 00:26:32,170 paren, getstring. 563 00:26:32,170 --> 00:26:36,920 >> Acum, nu am nici o idee despre modul în care personalul CS50 implementat getstring, dar eu știu că 564 00:26:36,920 --> 00:26:41,240 dacă aștept destul de mult, se va face acesteia lucru sub capota, poate cu ajutorul 565 00:26:41,240 --> 00:26:44,940 unele variabile, poate cu unele condiții, poate cu ajutorul unor bucle, 566 00:26:44,940 --> 00:26:48,170 Poate că utilizarea unor funcții, Poate folosind - 567 00:26:48,170 --> 00:26:52,290 doar încearcă să stagneze - poate prin câteva alte caracteristici de programare. 568 00:26:52,290 --> 00:26:55,350 Dar dacă am așteptat destul de mult - în realitate, în calculator, acest lucru se întâmplă 569 00:26:55,350 --> 00:26:56,270 super-rapid - 570 00:26:56,270 --> 00:26:59,910 dacă aștept destul de mult, această funcție getstring este mergi la a lua un șir 571 00:26:59,910 --> 00:27:04,060 de utilizator, care este probabil să tastați l pe tastatură lor, și 572 00:27:04,060 --> 00:27:08,090 Apoi, când getstring se face obtinerea acele caractere de la utilizator 573 00:27:08,090 --> 00:27:14,080 și stocarea lor într-un șir, care funcția, getstring, va avea 574 00:27:14,080 --> 00:27:17,990 gata pentru mine ceva de ieșire, care sunt va prelua cu titlu de 575 00:27:17,990 --> 00:27:19,470 operator de atribuire. 576 00:27:19,470 --> 00:27:25,390 >> Și dacă mă duc, într-adevăr, în producția aici, Obosi are cu generozitate 577 00:27:25,390 --> 00:27:29,900 a participat, fără să știe acest lucru în avansa, prin scris numele său pe această 578 00:27:29,900 --> 00:27:33,100 variabilă, care reprezintă un șir. 579 00:27:33,100 --> 00:27:35,640 Acum, operatorul de atribuire înseamnă, chiar deși acest lucru s-ar putea simți un pic 580 00:27:35,640 --> 00:27:38,790 redundante, de fapt, am nevoie de pentru a face propria mea copie a acestui. 581 00:27:38,790 --> 00:27:40,700 Deoarece pe stânga lateral - Hopa! - 582 00:27:40,700 --> 00:27:45,760 Observați că în esență au string Numele de pe partea stângă. 583 00:27:45,760 --> 00:27:48,280 Deci, eu sunt, de asemenea, de gând să facă propria mea copie a acestui. 584 00:27:48,280 --> 00:27:50,990 Și acest lucru este un pic de o minciună albă, pentru că vom vedea într-o săptămână sau două de 585 00:27:50,990 --> 00:27:54,100 timp că șirurile nu sunt de fapt ceea ce par a fi. 586 00:27:54,100 --> 00:27:56,700 >> Dar pentru acum, aici, este valoarea returnată. 587 00:27:56,700 --> 00:28:00,160 Aici este propria mea copie după folosind operatorul de atribuire. 588 00:28:00,160 --> 00:28:01,790 Și acum, ce vreau să fac în continuare? 589 00:28:01,790 --> 00:28:04,080 Avem acum de-a doua a două linii de cod. 590 00:28:04,080 --> 00:28:05,640 Așa că acum vreau pentru a apela printf. 591 00:28:05,640 --> 00:28:08,500 Să presupunem acum ca negru casetă este din nou pentru a fi 592 00:28:08,500 --> 00:28:10,210 printf și nu getstring. 593 00:28:10,210 --> 00:28:12,200 >> Printf acest timp se va ia cât de multe argumente? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Deci, uite, e ca si cum doi. 596 00:28:16,770 --> 00:28:18,860 Există două virgule acolo, dar unul dintre aceste virgule, e 597 00:28:18,860 --> 00:28:20,220 interiorul citate. 598 00:28:20,220 --> 00:28:23,190 Deci, primul argument este literalmente Va fi aceasta. 599 00:28:23,190 --> 00:28:31,850 H-E-L-L-O, virgulă, sut s, backslash-n. 600 00:28:31,850 --> 00:28:36,560 Și acum oferind nu un argument, dar două argumente pentru printf. 601 00:28:36,560 --> 00:28:39,530 >> Și ce ar trebui printf-a face cu aceste două intrări după ce le trece în 602 00:28:39,530 --> 00:28:42,050 ca argumente? 603 00:28:42,050 --> 00:28:45,360 Ar trebui să aibă de-a doua de ei, pe care am chemat numele, astfel încât 604 00:28:45,360 --> 00:28:48,660 a doua bucată de hârtie am scris un moment în urmă se numește nume. 605 00:28:48,660 --> 00:28:53,550 O să conectați din valoarea interior din care variabile în substituent, 606 00:28:53,550 --> 00:28:58,310 % S, astfel încât, din nou, în doar un moment de timp, vom vedea un efect secundar al 607 00:28:58,310 --> 00:29:04,180 a chemat printf, prin care acum ne vezi nu "Bună ziua, lume," dar "Bună ziua, 608 00:29:04,180 --> 00:29:04,710 Obosi. " 609 00:29:04,710 --> 00:29:08,730 >> Deci, o mare rundă de aplauze atât de voluntarii nostri, dintre care doar unul cunoscut 610 00:29:08,730 --> 00:29:12,010 acest lucru s-ar fi întâmplat. 611 00:29:12,010 --> 00:29:12,990 Bine. 612 00:29:12,990 --> 00:29:16,480 Deci, probabil, de simplu ca asta a fost, Desigur, dacă sunteți deja familiarizați 613 00:29:16,480 --> 00:29:20,190 cu astfel, sperăm că nu va uita ca vizuală special de modul în care 614 00:29:20,190 --> 00:29:21,220 Funcțiile de lucru. 615 00:29:21,220 --> 00:29:23,000 >> Deci, nu e mai mult decât getstring. 616 00:29:23,000 --> 00:29:26,020 In interiorul CS50 bibliotecii, există un grămadă de funcții, toate din care 617 00:29:26,020 --> 00:29:29,510 sunt capitalizate doar pentru a face clar că am scris aceste funcții. 618 00:29:29,510 --> 00:29:33,610 De obicei, în C, aproape fiecare Funcția vei folosi este litere mici. 619 00:29:33,610 --> 00:29:36,190 Dar am folosit în mod deliberat cu majuscule doar pentru a face clar faptul că acestea 620 00:29:36,190 --> 00:29:39,880 sunt roți de formare de felul care ne vom folosi pentru doar câteva săptămâni că 621 00:29:39,880 --> 00:29:42,890 simplifica procesul de a obține intrare de la utilizator. 622 00:29:42,890 --> 00:29:46,740 >> Biblioteca CS50 nu face nimic că voi înșivă nu putea face de către 623 00:29:46,740 --> 00:29:50,230 folosind doar cod C de la o manual Oldschool. 624 00:29:50,230 --> 00:29:53,310 Dar, din nou, le folosim ca formare roți de soiuri de doar o pereche de 625 00:29:53,310 --> 00:29:57,250 săptămâni, astfel încât să putem scăpa de complexitate că veți înțelege în curând 626 00:29:57,250 --> 00:30:00,460 te de a face ceva la fel de relativ simplu ca obtinerea 627 00:30:00,460 --> 00:30:02,080 intrare de la un utilizator. 628 00:30:02,080 --> 00:30:05,540 >> Deci, știți că veți avea acces la getchar, GetDouble - 629 00:30:05,540 --> 00:30:06,050 dublu. 630 00:30:06,050 --> 00:30:07,050 What's - și apoi GetFloat. 631 00:30:07,050 --> 00:30:07,600 Ce este un flotor? 632 00:30:07,600 --> 00:30:09,382 Să începem de acolo. 633 00:30:09,382 --> 00:30:10,600 >> STUDENT: [inaudibil]. 634 00:30:10,600 --> 00:30:10,790 >> DAVID MALAN: Da. 635 00:30:10,790 --> 00:30:12,120 Este un număr cu o zecimală. 636 00:30:12,120 --> 00:30:15,930 Deci întrucât un int este un număr întreg, care este doar un număr de la 0 la 9, 637 00:30:15,930 --> 00:30:18,940 un numar de repetari ale acestora, un float este ceva 638 00:30:18,940 --> 00:30:20,100 cu un punct zecimal. 639 00:30:20,100 --> 00:30:26,090 Și un dublu, între timp, este, de asemenea, un număr cu o zecimală, dar mai mult 640 00:30:26,090 --> 00:30:28,160 Numerele după zecimală punct, potențial. 641 00:30:28,160 --> 00:30:30,040 >> Asa ca vom lua înapoi la acest lucru înainte de timp. 642 00:30:30,040 --> 00:30:34,560 Dar de obicei, fiecare dintre aceste tipuri de date, fiecare dintre aceste tipuri de variabile 643 00:30:34,560 --> 00:30:39,380 că o biblioteca ca a noastră poate reveni la te, folosesc diferite numere de biți la 644 00:30:39,380 --> 00:30:40,290 stoca informații. 645 00:30:40,290 --> 00:30:43,910 De obicei, un Char, ceea ce înseamnă doar un personaj, folosește 8 biți. 646 00:30:43,910 --> 00:30:47,490 Și că, de fapt, în concordanță cu nostru octet de voluntari săptămâna trecută, care 647 00:30:47,490 --> 00:30:50,410 a venit și a reprezentat una Caractere ASCII la un moment dat. 648 00:30:50,410 --> 00:30:51,850 Deci, un Char este de 8 biți. 649 00:30:51,850 --> 00:30:54,430 >> Un float se întâmplă să fie 32 biți, de obicei. 650 00:30:54,430 --> 00:30:59,230 Și un dublu, așa cum s-ar putea ghici, este de fapt 64 de biți, care este doar mai mult, 651 00:30:59,230 --> 00:31:01,360 ceea ce înseamnă că puteți avea mai mare numere sau mai multe precizie. 652 00:31:01,360 --> 00:31:03,000 Dar, din nou, mai mult pe altă dată. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, între timp, deși stupid numit, este de fapt doar o 654 00:31:06,550 --> 00:31:10,770 întreg, care este de două ori mai mare, de două ori mai lung, eventual, ca o regulat 655 00:31:10,770 --> 00:31:12,940 număr întreg, 64 de biți în loc de 32. 656 00:31:12,940 --> 00:31:14,560 Și getstring am fost folosind. 657 00:31:14,560 --> 00:31:18,870 >> Dar se pare că, în CS50 bibliotecă, care este pusă în aplicare, așa cum vom vedea, în 658 00:31:18,870 --> 00:31:23,560 forma a două fișiere, unul dintre care se numește cs50.h, are două alte 659 00:31:23,560 --> 00:31:24,770 Tipuri de date în ea. 660 00:31:24,770 --> 00:31:29,700 Booleans nu există în C. Puteți le simula folosind doar 0 si 1 661 00:31:29,700 --> 00:31:30,850 de-a lungul programele. 662 00:31:30,850 --> 00:31:35,500 Dar noi, în CS50 biblioteca au creat simbolurile "adevărat" și "fals" 663 00:31:35,500 --> 00:31:38,580 pentru a reprezenta 1 și 0, astfel încât să nu Trebuie să ceva cod greu 664 00:31:38,580 --> 00:31:39,810 literalmente ca 1 si 0. 665 00:31:39,810 --> 00:31:40,980 Dar vom vedea pe cei din nou. 666 00:31:40,980 --> 00:31:42,330 >> Șir, de asemenea, nu există. 667 00:31:42,330 --> 00:31:44,520 Și de aceea am menționat că e un pic de o minciună albă pentru acum. 668 00:31:44,520 --> 00:31:46,660 Dar vom coaja de spate, care strat înainte de lung. 669 00:31:46,660 --> 00:31:49,540 Dar pentru acum, un șir este o secvență de caractere. 670 00:31:49,540 --> 00:31:51,790 >> Între timp, în C, tu într-adevăr au diferite tipuri de date. 671 00:31:51,790 --> 00:31:53,200 Observați acestea sunt mici. 672 00:31:53,200 --> 00:31:56,960 Astfel încât funcțiile-ai văzut acum o clipă sunt funcții scrise de CS50 care 673 00:31:56,960 --> 00:32:02,310 va reveni la tine o valoare care se încadrează într-una din aceste categorii. 674 00:32:02,310 --> 00:32:06,730 >> Câteva foi de ieftin doar pentru a planta semințele aici. printf nu doar 675 00:32:06,730 --> 00:32:08,600 ia% s ca substituenți. 676 00:32:08,600 --> 00:32:13,490 Este nevoie de% d pentru numere întregi zecimale, sau% i-ar funcționa la fel de bine. 677 00:32:13,490 --> 00:32:19,450 % F pluteste valori în virgulă. % C este pentru un caracter, dacă doriți să conectați doar un singur 678 00:32:19,450 --> 00:32:23,510 caracter într-un șir preformatate ca și cum ne-am făcut, puteți folosi% C. 679 00:32:23,510 --> 00:32:28,490 >> Și apoi, oarecum enervant,% LLD este pentru o lungă, intreg zecimal lung, 680 00:32:28,490 --> 00:32:31,050 ceea ce înseamnă doar dacă aveți nevoie de un adevărat Numărul mare și utilizați ceva 681 00:32:31,050 --> 00:32:35,450 numit un timp lung, pe care vom veni înapoi la un PSET, puteți folosi% LLD la 682 00:32:35,450 --> 00:32:40,700 spune printf, conectați într-o foarte mare întreg aici prin intermediul a doua sau 683 00:32:40,700 --> 00:32:41,830 un alt argument. 684 00:32:41,830 --> 00:32:45,700 >> Și, în fine, i-am promis că există o altă scăpare câteva 685 00:32:45,700 --> 00:32:47,670 secvențe care sprijină printf. 686 00:32:47,670 --> 00:32:49,160 Am văzut backslash-n. 687 00:32:49,160 --> 00:32:50,510 Backslash-r-ar putea vedea. 688 00:32:50,510 --> 00:32:51,780 Este un fel de lucru vechi-școală. 689 00:32:51,780 --> 00:32:55,920 Dacă ați folosit vreodată un adevărat ani mașină de scris Acum și tu tras de pe pârghia 690 00:32:55,920 --> 00:32:59,810 care rotit nu numai roata care muta gama, de asemenea, sa mutat 691 00:32:59,810 --> 00:33:03,730 Toată chestia tot drumul înapoi pe la stânga, bine, backslash-R doar 692 00:33:03,730 --> 00:33:06,480 se mută în esență spate cursorului la începutul liniei 693 00:33:06,480 --> 00:33:07,830 fără a se deplasează în jos. 694 00:33:07,830 --> 00:33:09,780 Dar, din nou, mai mult pe faptul că, probabil, în viitor. 695 00:33:09,780 --> 00:33:13,670 >> Backslash-Citat, citat backslash-dublu, backslash-backslash este 696 00:33:13,670 --> 00:33:16,600 Soluția la ghicitoare micuță Am făcut aluzie la mai devreme. 697 00:33:16,600 --> 00:33:18,920 Și backslash-0 este de fapt destul de interesant. 698 00:33:18,920 --> 00:33:21,470 Dar să ne întoarcem la că înainte de mult timp. 699 00:33:21,470 --> 00:33:25,640 >> Așa că lasă-mă să merg în, acum, CS50 aparat, și să facem de fapt o 700 00:33:25,640 --> 00:33:28,930 rapid încălzească cu unul dintre exemplele am făcut deja și apoi trece la 701 00:33:28,930 --> 00:33:31,160 ceva un pic mai complex. 702 00:33:31,160 --> 00:33:34,980 Deci, dacă am deschide programul meu numit gedit - 703 00:33:34,980 --> 00:33:36,840 aceasta este editorul meu grafic. 704 00:33:36,840 --> 00:33:38,460 Și eu pot face asta - 705 00:33:38,460 --> 00:33:39,820 permiteți-mi închide fereastra aia acolo - 706 00:33:39,820 --> 00:33:42,720 prin această icoană aici, gedit, în stânga-jos 707 00:33:42,720 --> 00:33:44,170 colț de lângă meniul. 708 00:33:44,170 --> 00:33:48,670 >> Am de gând să merg mai departe și să avanseze, și a salva acest exemplu în, să zicem, John 709 00:33:48,670 --> 00:33:49,660 Director la Harvard. 710 00:33:49,660 --> 00:33:52,690 Dosar John Harvard este doar casa lui directorul în care trăiesc toate fișierele sale 711 00:33:52,690 --> 00:33:53,340 în mod implicit. 712 00:33:53,340 --> 00:33:58,410 Și am de gând să salveze acest drept un fișier numit salut-0.c. 713 00:33:58,410 --> 00:34:01,260 Și am ales acest nume doar așa aliniază cu mostre de cod pe 714 00:34:01,260 --> 00:34:04,210 site-ul cursului și în YouTube videoclipuri online. 715 00:34:04,210 --> 00:34:06,320 >> Așa că acum am de gând să înceapă să scrie primul meu program. 716 00:34:06,320 --> 00:34:08,469 Permiteți-mi mări pentru lizibilitate. 717 00:34:08,469 --> 00:34:12,760 Și am de gând să merg mai departe și spune Int void main, care este la fel ca asta 718 00:34:12,760 --> 00:34:14,900 piesa de puzzle galben care începe un program. 719 00:34:14,900 --> 00:34:18,290 Am ajuns în obiceiul de peste de ani de la deschiderea bretele meu cret, apoi 720 00:34:18,290 --> 00:34:22,000 De asemenea, închiderea și apoi merge înapoi la unde vreau să pun codul meu, doar 721 00:34:22,000 --> 00:34:24,630 pentru că mă ajută să păstrați totul echilibrată, mai ales ca-mi 722 00:34:24,630 --> 00:34:25,880 Programul devine mult. 723 00:34:25,880 --> 00:34:29,239 >> Și acum, aici, am de gând să merg mai departe și spune, printf, citat citatul, 724 00:34:29,239 --> 00:34:34,330 Bună ziua lume, backslash-n, citat de aproape, paranteze de aproape, punct și virgulă. 725 00:34:34,330 --> 00:34:38,100 Deci, eu sunt doar repet tot ceea ce am fost luați pentru a acordat până în prezent. 726 00:34:38,100 --> 00:34:39,270 Acum am de gând pentru a micșora. 727 00:34:39,270 --> 00:34:43,030 >> Și această fereastră terminal aici, ceea ce am voie să fac în acest negru 728 00:34:43,030 --> 00:34:44,389 și fereastra de alb? 729 00:34:44,389 --> 00:34:46,977 Ce pot sa-l folosesc pentru? 730 00:34:46,977 --> 00:34:49,770 Deci, acest lucru este în cazul în care I a alerga comenzi și unde pot compila lucruri. 731 00:34:49,770 --> 00:34:50,620 Și am de gând să-l păstrați simplu. 732 00:34:50,620 --> 00:34:52,780 Am de gând să utilizeze un program de numita face, care nu este 733 00:34:52,780 --> 00:34:54,020 punct de vedere tehnic un compilator. 734 00:34:54,020 --> 00:34:56,360 Compilatorul numit zăngănit, dar vom reveni la faptul că într-o 735 00:34:56,360 --> 00:34:57,190 săptămână sau de două lui. 736 00:34:57,190 --> 00:35:03,410 >> Pentru moment, eu sunt doar de gând să tastați face Bună ziua-0, dar cei dintre voi care au fost 737 00:35:03,410 --> 00:35:07,050 compararea în mințile voastre ce am tastat la ceea ce ar fi trebuit sa scris poate 738 00:35:07,050 --> 00:35:10,180 deja știu că am făcut ceva în neregulă aici. 739 00:35:10,180 --> 00:35:12,160 Acum, există în mod clar unele erori. 740 00:35:12,160 --> 00:35:16,742 Înainte de a mă uita la ceea ce sunt, orice gânduri cu privire la ceea ce am făcut greșit? 741 00:35:16,742 --> 00:35:18,590 >> STUDENȚI: [interpunerea VOCI]. 742 00:35:18,590 --> 00:35:18,840 >> DAVID MALAN: Da. 743 00:35:18,840 --> 00:35:20,640 Îmi lipsește fișierul header al bibliotecii. 744 00:35:20,640 --> 00:35:24,240 Oricare dintre aceste fișiere. H sunt numite în afara fișiere, și ei colectiv 745 00:35:24,240 --> 00:35:25,680 fac parte din lucrurile numite biblioteci. 746 00:35:25,680 --> 00:35:28,030 Bibliotecile sunt doar bucăți de cod că alte persoane au scris. 747 00:35:28,030 --> 00:35:32,140 Deci, [Standard? i] bibliotecă? este un colecție de fișiere care conțin cod 748 00:35:32,140 --> 00:35:33,330 că alte persoane au scris. 749 00:35:33,330 --> 00:35:34,820 >> Așa că îmi lipsește asta. 750 00:35:34,820 --> 00:35:36,520 Deci, de ce primesc o eroare? 751 00:35:36,520 --> 00:35:40,840 Ei bine, lasă-mă să derulați înapoi în fereastra mea terminalul aici. 752 00:35:40,840 --> 00:35:44,310 Și, din păcate, în C, ca într-o mulțime de limbaje de programare, în special 753 00:35:44,310 --> 00:35:47,830 în cazul în care totul este nou pentru tine, eroarea Mesajele sunt precise, dar sunt, de asemenea, 754 00:35:47,830 --> 00:35:48,620 destul de criptic. 755 00:35:48,620 --> 00:35:51,720 Și eroarea aici, în roșu, este "Funcția de bibliotecă, implicit, declararea 756 00:35:51,720 --> 00:35:57,660 printf cu tipul, "și apoi aceasta se va derula la următoarea linie, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "Este doar devine foarte copleșitoare rapid. 758 00:36:00,220 --> 00:36:04,420 >> Dar ceea ce ar trebui să înceapă să facă, în cazul în care, din nou, noi la toate acestea, este doar de a 759 00:36:04,420 --> 00:36:06,010 începe să caute cuvinte cheie. 760 00:36:06,010 --> 00:36:08,770 În mod evident, nu s-ar putea înțelege jumătate din cuvintele pe care le-am văzut încă. 761 00:36:08,770 --> 00:36:10,140 O vei face, deși, într-o săptămână. 762 00:36:10,140 --> 00:36:11,230 Dar eu văd printf. 763 00:36:11,230 --> 00:36:14,310 Și că ar trebui să înceapă, înainte de mult timp, pentru a împrospăta memoria dumneavoastră, în regulă, printf. 764 00:36:14,310 --> 00:36:15,210 Ceva e în neregulă cu printf. 765 00:36:15,210 --> 00:36:16,580 Ti-am scrie greșit? 766 00:36:16,580 --> 00:36:18,130 Nu, nu arata ca - oh. 767 00:36:18,130 --> 00:36:21,350 Eu nu pot folosi decât dacă predau compilatorul că ea există. 768 00:36:21,350 --> 00:36:25,220 Și astfel, din nou, du-te cu instinctele tale, chiar dacă nu înțeleg de fapt 769 00:36:25,220 --> 00:36:26,510 real mesajele scrise de eroare. 770 00:36:26,510 --> 00:36:30,240 >> Și într-adevăr, soluția aici este de a doar o includă în partea de sus a fișierului 771 00:36:30,240 --> 00:36:34,340 cum ar fi că, resaving dosarul meu cu Control-S sau din meniul File. 772 00:36:34,340 --> 00:36:36,730 Și dacă acum mă întorc aici, Am de gând să clar acest lucru. 773 00:36:36,730 --> 00:36:39,150 De control-L este doar un mod frumos pentru a goli ecranul. 774 00:36:39,150 --> 00:36:44,870 Și apoi am de gând să tastați "face salut 0 "Enter, și acum văd încă o 775 00:36:44,870 --> 00:36:47,710 secvență criptică de simboluri, dar vom reveni la asta. 776 00:36:47,710 --> 00:36:49,230 Asta e ceea ce face este de a face pentru tine. 777 00:36:49,230 --> 00:36:52,590 Este automatizarea procesului de luare o comandă destul de enervant care implică 778 00:36:52,590 --> 00:36:54,050 Clang, compilatorul actual. 779 00:36:54,050 --> 00:36:57,460 Dar faptul că am primit nici o eroare înseamnă că acest lucru ar trebui să funcționeze. 780 00:36:57,460 --> 00:37:00,630 >> Deci, eu sunt acum de gând să facă - permiteți-mi mări din nou - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 Enter, și într-adevăr, eu văd "Bună ziua, lume." Deci, haideți să sporească acum 782 00:37:07,070 --> 00:37:12,105 acest vreodată atât de ușor doar pentru a reproduce pașii ne-am propus. 783 00:37:12,105 --> 00:37:15,370 Am de gând să redenumi acest lucru cu Salvare ca pentru a hello1.c. 784 00:37:15,370 --> 00:37:20,300 Și acum am de gând să declare o variabilă numit nume, astfel încât numele șir, 785 00:37:20,300 --> 00:37:23,420 și am de gând să pun în ea Valoarea citez, 786 00:37:23,420 --> 00:37:27,030 D-A-V-I-D virgulă Close-citat. 787 00:37:27,030 --> 00:37:31,150 Și acum am de gând să înlocuiască "lume" cu ceea ce substituent pentru un șir? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> Și acum, cât de multe argumente ar trebui ia printf acest timp? 790 00:37:35,040 --> 00:37:35,700 Deci doi. 791 00:37:35,700 --> 00:37:37,090 Așa că mă duc afară de citate. 792 00:37:37,090 --> 00:37:39,330 I tip "nume" după o virgulă. 793 00:37:39,330 --> 00:37:41,550 Dar am făcut ceva mai greșit de data asta. 794 00:37:41,550 --> 00:37:43,940 Dar să presupunem că nu am făcut- seama că încă. 795 00:37:43,940 --> 00:37:44,910 Lasă-mă să plec de aici. 796 00:37:44,910 --> 00:37:48,850 >> Și observați, de asemenea, Primesc un pic plictisit de dactilografiere "face salut 0" toate 797 00:37:48,850 --> 00:37:50,180 timp, "a face", și toate astea. 798 00:37:50,180 --> 00:37:53,270 Deci, se pare, în Linus puteți de multe ori lovit săgeata în sus dvs. 799 00:37:53,270 --> 00:37:56,850 tastatură, și puteți derula de fapt, prin toate comenzile pe care le-am 800 00:37:56,850 --> 00:37:58,830 executate anterior la doar acum. 801 00:37:58,830 --> 00:38:02,040 Deci, dacă am face asta, sus, sus, nu e să salut 0. 802 00:38:02,040 --> 00:38:02,610 Eu nu vreau asta. 803 00:38:02,610 --> 00:38:05,450 Vreau doar să schimbe că la Bună ziua 1 de această dată, Enter. 804 00:38:05,450 --> 00:38:07,620 În cele din urmă, care va economisi ceva timp. 805 00:38:07,620 --> 00:38:08,150 >> Bine. 806 00:38:08,150 --> 00:38:09,520 Din păcate, nu este o eroare. 807 00:38:09,520 --> 00:38:10,980 Deci, lasă-mă să derulați în sus. 808 00:38:10,980 --> 00:38:13,120 Acest lucru arata ca chiar măcelărit acest program. 809 00:38:13,120 --> 00:38:16,530 Adică, Doamne, e două linii de cod, și cele 10 linii de erori. 810 00:38:16,530 --> 00:38:18,800 Dar uita-te la partea de sus o primul. 811 00:38:18,800 --> 00:38:21,640 Utilizarea șir de identificare nedeclarate. 812 00:38:21,640 --> 00:38:23,270 Am Adică standard de I n? 813 00:38:23,270 --> 00:38:23,930 Nu, nu am făcut-o. 814 00:38:23,930 --> 00:38:24,940 Am vrut șir. 815 00:38:24,940 --> 00:38:29,390 >> Dar unde este variabilă șir tip a declarat, DD spunem? 816 00:38:29,390 --> 00:38:30,730 Deci, este în CS50 biblioteca. 817 00:38:30,730 --> 00:38:33,740 Deci, nu este suficient, în aceste primul cateva saptamani, doar pentru a utiliza 818 00:38:33,740 --> 00:38:34,860 Ce C ne dă. 819 00:38:34,860 --> 00:38:38,120 Am, de asemenea, de gând să meargă aici, și eu ar putea pune mai sus sau mai jos, dar voi 820 00:38:38,120 --> 00:38:40,340 doar păstrați-l alfabetică pentru a menține lucrurile ordonat. 821 00:38:40,340 --> 00:38:43,470 Am de gând să includă cs50.h, care este pre-instalat pentru 822 00:38:43,470 --> 00:38:44,900 te pe CS50 aparat. 823 00:38:44,900 --> 00:38:47,640 Și este open source, astfel încât, chiar oameni pe internet se poate folosi pe teritoriul lor 824 00:38:47,640 --> 00:38:48,450 calculatoarele proprii. 825 00:38:48,450 --> 00:38:50,700 Dar vine cu CS50 aparat. 826 00:38:50,700 --> 00:38:55,320 >> Deci, acum lasă-mă să mă întorc și recompilați acest lucru cu a face salut 1. 827 00:38:55,320 --> 00:38:55,710 La naiba. 828 00:38:55,710 --> 00:38:57,240 Încă o altă eroare. 829 00:38:57,240 --> 00:38:59,370 Lasă-mă să derulați până la primul, totuși. 830 00:38:59,370 --> 00:39:00,630 Asta e un pic mai complex. 831 00:39:00,630 --> 00:39:03,830 Multi-caracter caracter constant. 832 00:39:03,830 --> 00:39:04,890 Asta nu mă ajută. 833 00:39:04,890 --> 00:39:08,220 Dar observați, zăngănit este de cel puțin un pic bit decent, prin care, cu un pic de 834 00:39:08,220 --> 00:39:11,890 verde caret simbol, se spune aici este locul unde am greșit. 835 00:39:11,890 --> 00:39:16,160 De ce este îndreptat, cu puțin săgeata verde, la citat urmatorul single 836 00:39:16,160 --> 00:39:18,290 pentru numele meu? 837 00:39:18,290 --> 00:39:20,880 >> Deci, acesta este unul dintre lucrurile pe care le doar te obișnuiești, mai ales dacă ați fost 838 00:39:20,880 --> 00:39:23,980 programarea în Python, sau JavaScript, sau alte limbi în care acest detaliu 839 00:39:23,980 --> 00:39:24,560 nu conteaza. 840 00:39:24,560 --> 00:39:25,740 În C, nu contează. 841 00:39:25,740 --> 00:39:29,520 Dacă se declară un string, care este o secvență de 0 sau mai multe caractere, 842 00:39:29,520 --> 00:39:32,280 tu de fapt trebuie să utilizați ghilimele. 843 00:39:32,280 --> 00:39:36,670 Deci, de fapt, am nevoie pentru a schimba această înapoi pentru a deschide Citat, citat de aproape, cu 844 00:39:36,670 --> 00:39:37,800 ghilimele duble. 845 00:39:37,800 --> 00:39:41,610 Ghilimele simple nu au locul lor, dar numai atunci când utilizați individuală 846 00:39:41,610 --> 00:39:44,100 caractere, dar mai mult pe altă dată. 847 00:39:44,100 --> 00:39:46,550 Pentru moment, ghilimele duble sunt necesare. 848 00:39:46,550 --> 00:39:50,460 >> Deci, acum, lasă-mă să mă întorc la terminalul meu fereastră, să salut 1. 849 00:39:50,460 --> 00:39:51,450 Și cine e sigur? 850 00:39:51,450 --> 00:39:53,800 Este acest program acum merge pentru a compila corect? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 OK. 853 00:39:58,540 --> 00:39:59,780 Deci, trei dintre noi cred că acest lucru. 854 00:39:59,780 --> 00:40:00,280 Bine. 855 00:40:00,280 --> 00:40:01,190 Enter. 856 00:40:01,190 --> 00:40:02,440 Și a făcut-o de fapt. 857 00:40:02,440 --> 00:40:05,130 Deci, nu există nici o eroare de această dată, chiar deși acest program a devenit un pic 858 00:40:05,130 --> 00:40:05,840 mai complexă. 859 00:40:05,840 --> 00:40:10,110 Dacă am face punct slash Bună ziua 1, Enter, se va spune "Bună, David." 860 00:40:10,110 --> 00:40:11,750 >> Dar hai să facem de-a treia iterație de acest lucru, în cazul în care 861 00:40:11,750 --> 00:40:13,380 Programul este cu adevărat dinamic. 862 00:40:13,380 --> 00:40:16,770 Lasă-mă să merg mai departe și să modificați fișierul nume, doar pentru coerența cu 863 00:40:16,770 --> 00:40:20,410 fișierele pe care le veți avea la dispoziție pentru a vă după aceea on-line. 864 00:40:20,410 --> 00:40:21,620 Enter. 865 00:40:21,620 --> 00:40:25,510 Și acum am de gând să merg în și nu stoca "David" greu codificate aici. 866 00:40:25,510 --> 00:40:28,826 Ce aș putea face pentru foarte simplu îmbunătăți acest program? 867 00:40:28,826 --> 00:40:30,520 >> Am putea numi getstring. 868 00:40:30,520 --> 00:40:33,240 Acesta ar putea fi un pic de ceea ce ne-evident este să se întâmple, așa că am de gând 869 00:40:33,240 --> 00:40:38,470 pentru a adăuga de fapt, o altă linie, printf, și spune numele, colon, citat de aproape, doar 870 00:40:38,470 --> 00:40:40,790 pentru a oferi utilizatorului un prompt de pe ecran. 871 00:40:40,790 --> 00:40:42,980 Și acum am de gând să merg aici, și eu sunt va folosi shortcut-mi tastatură. 872 00:40:42,980 --> 00:40:47,680 Am de gând să meargă în sus, sus, și de a schimba salut 1 la salut 2, Enter. 873 00:40:47,680 --> 00:40:49,260 Și din fericire, eu fac progrese. 874 00:40:49,260 --> 00:40:52,720 >> Și acum am de gând să meargă în sus la punct slash salut și 875 00:40:52,720 --> 00:40:54,690 schimba asta la 2, Enter. 876 00:40:54,690 --> 00:40:55,650 Și acum programul meu - 877 00:40:55,650 --> 00:40:57,700 Voi mări - este obținerea un pic mai frumoasa. 878 00:40:57,700 --> 00:41:02,190 Nume va fi, să zicem Rob acest timp, Enter, salut, Rob. 879 00:41:02,190 --> 00:41:03,260 O putem face din nou. 880 00:41:03,260 --> 00:41:05,360 Numele, Lauren, Enter. 881 00:41:05,360 --> 00:41:07,820 Numele, Iosif, Enter. 882 00:41:07,820 --> 00:41:11,596 Numele, haideți să încercăm să fie dificilă, Enter. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 Nu e chiar un bug. 885 00:41:14,680 --> 00:41:16,090 Deci, e doar un pic urât. 886 00:41:16,090 --> 00:41:18,640 Așa că poate am putea rezolva această în viitor, nu acum. 887 00:41:18,640 --> 00:41:20,840 >> Dar cum să te instinctiv du-te cu privire la abordarea 888 00:41:20,840 --> 00:41:21,990 ca provocare deosebită? 889 00:41:21,990 --> 00:41:23,710 Este doar pare stupid. 890 00:41:23,710 --> 00:41:27,320 Cum puteți evita lucruri căutarea prost? 891 00:41:27,320 --> 00:41:29,890 Deci, am putea face, OK, am auzit un cuplu de lucruri, o condiție și o buclă. 892 00:41:29,890 --> 00:41:33,340 Am putea folosi, unul, o condiție, pentru a verifica ceea ce este lungimea șirului 893 00:41:33,340 --> 00:41:34,190 utilizator ne-a dat? 894 00:41:34,190 --> 00:41:37,100 Și dacă e 0, e cita doar încheiat citatul, ei doar a lovi Enter, apoi 895 00:41:37,100 --> 00:41:38,930 Poate că ar trebui să țip la ei și le cere din nou. 896 00:41:38,930 --> 00:41:39,970 Dar cum o le solicita din nou? 897 00:41:39,970 --> 00:41:44,230 Ei bine, am auzit, de asemenea, buclă, și am putut face acest lucru din nou și din nou și din nou 898 00:41:44,230 --> 00:41:47,010 fapt care ia determinat de utilizator pentru același lucru. 899 00:41:47,010 --> 00:41:48,880 >> Ei bine, hai sa facem un alt exemplu folosind un alt 900 00:41:48,880 --> 00:41:50,620 Funcția în CS50 biblioteca. 901 00:41:50,620 --> 00:41:52,330 Permiteți-mi să închidă acest dosar. 902 00:41:52,330 --> 00:41:53,510 Permiteți-mi să creeze unul nou. 903 00:41:53,510 --> 00:41:58,510 Și eu numesc adder.c, doar pentru că este ușor să faci aritmetică simplă, 904 00:41:58,510 --> 00:42:00,890 chiar dacă acest lucru va fi complet underwhelming cu ceea ce ai putea face 905 00:42:00,890 --> 00:42:02,250 cu orice computer modern. 906 00:42:02,250 --> 00:42:03,750 >> Dar lasă-mă să merg mai departe acum și - 907 00:42:03,750 --> 00:42:10,680 Am învățat lecția ultima dată - includ cs50.h, includ stdio.h, int 908 00:42:10,680 --> 00:42:14,170 void main, care, de acum, eu doar ia pe credinta oarba, dar vom presupune 909 00:42:14,170 --> 00:42:16,380 care va înțelege ceea ce înseamnă că înainte de mult timp. 910 00:42:16,380 --> 00:42:21,030 Și am de gând să spun ceva ca "da-mi un întreg." 911 00:42:21,030 --> 00:42:22,140 >> Și acum, cum pot obține un int? 912 00:42:22,140 --> 00:42:26,820 Vreau să declar în cele din urmă o variabilă numit x de tip int și 913 00:42:26,820 --> 00:42:29,240 stocați în ea un număr întreg de la utilizator. 914 00:42:29,240 --> 00:42:29,970 Astfel că a fost o îmbucătură. 915 00:42:29,970 --> 00:42:35,680 Dar dacă cineva vrea să propună, cum mă declar un întreg numit x? 916 00:42:35,680 --> 00:42:36,310 X Int. 917 00:42:36,310 --> 00:42:37,430 >> Deci, este adevărat că este simplu. 918 00:42:37,430 --> 00:42:38,240 Dă-mi un int. 919 00:42:38,240 --> 00:42:39,070 Spune-i x. 920 00:42:39,070 --> 00:42:40,580 Acum, am folosi operatorul de atribuire. 921 00:42:40,580 --> 00:42:43,400 Și cum pot stoca de la lăsat o valoare de utilizare? 922 00:42:43,400 --> 00:42:47,310 Nu vreau să numesc getstring, evident, ci mai degrabă getint. 923 00:42:47,310 --> 00:42:49,060 Orice argumente? 924 00:42:49,060 --> 00:42:49,350 Nu. 925 00:42:49,350 --> 00:42:51,870 Deci, este deschis paranteza, aproape paren imediat, și apoi o 926 00:42:51,870 --> 00:42:53,440 punct și virgulă se termină linia. 927 00:42:53,440 --> 00:42:54,930 >> Acum, lasă-mă să fac asta din nou. 928 00:42:54,930 --> 00:42:57,070 Dă-mi un alt Int. 929 00:42:57,070 --> 00:43:01,850 De data asta voi face Int, să numim y, egal getint. 930 00:43:01,850 --> 00:43:05,060 Si acum lasa-ma sa fac ceva super-simplu ca unele matematica. 931 00:43:05,060 --> 00:43:14,340 Deci printf, suma de% d este substituent pentru un int. 932 00:43:14,340 --> 00:43:20,030 Și% d, perioada, backslash-n. 933 00:43:20,030 --> 00:43:20,360 >> Bine. 934 00:43:20,360 --> 00:43:21,670 Astfel că nu este de fapt matematica. 935 00:43:21,670 --> 00:43:25,500 Dar dacă vreau să spun suma acestei plus de valoare această valoare este egală cu aceasta 936 00:43:25,500 --> 00:43:29,320 altă valoare, cât de multe argumente în totală ar trebui să fie dau printf, 937 00:43:29,320 --> 00:43:30,520 în cele din urmă? 938 00:43:30,520 --> 00:43:31,420 Deci patru, nu? 939 00:43:31,420 --> 00:43:33,790 Acest șir și apoi cele trei valori. 940 00:43:33,790 --> 00:43:37,560 Deci, x este primul vreau să fie conectat la prima d%. 941 00:43:37,560 --> 00:43:39,270 Y va fi următoarea. 942 00:43:39,270 --> 00:43:42,030 >> Și acum am un fel de vreau să spun z, dar z nu există. 943 00:43:42,030 --> 00:43:43,190 Dar asta nu e mare lucru. 944 00:43:43,190 --> 00:43:45,440 Pentru că ceea ce ai face instinctiv, mai ales dacă ați avut o 945 00:43:45,440 --> 00:43:47,820 Graphing Calculator, ce tip? 946 00:43:47,820 --> 00:43:48,760 Ce zici de x plus y? 947 00:43:48,760 --> 00:43:50,200 Deci, nu este o variabilă reală. 948 00:43:50,200 --> 00:43:51,820 E doar suma de două alte variabile. 949 00:43:51,820 --> 00:43:53,170 Și asta e perfect legitim. 950 00:43:53,170 --> 00:43:56,630 C cu siguranță înțelege simplu aritmetică ca aceasta. 951 00:43:56,630 --> 00:43:58,450 >> Punct și virgulă, cu excepția. 952 00:43:58,450 --> 00:44:02,080 Acum, lasă-mă să merg aici și tastați face vipera, Enter. 953 00:44:02,080 --> 00:44:04,100 Nici o eroare, așa că e progres prea. 954 00:44:04,100 --> 00:44:04,890 Introduceți vipera. 955 00:44:04,890 --> 00:44:07,100 Și o altă tastatură de comenzi rapide, dacă începi să te plictisești 956 00:44:07,100 --> 00:44:08,760 cu toate comenzile - 957 00:44:08,760 --> 00:44:12,650 dacă începeți să tastați o comandă, ca punct slash anunț, și că este în cazul în care dvs. 958 00:44:12,650 --> 00:44:16,020 plictiseala lovituri, se poate lovi de obicei, Tab pentru a avea calculator termina 959 00:44:16,020 --> 00:44:20,510 Restul fraza pentru tine, dacă nu este ambiguu ceea ce ar trebui să vină după anunț. 960 00:44:20,510 --> 00:44:23,950 >> Așa că lasă-mă să merg mai departe acum și faceți clic pe Enter. 961 00:44:23,950 --> 00:44:27,490 Dă-mi un int, 1, 2, și Din fericire, e 3. 962 00:44:27,490 --> 00:44:29,900 Dar, ca întotdeauna, de testare de programe nu ar trebui să reducă la 963 00:44:29,900 --> 00:44:30,820 doar încearcă o dată. 964 00:44:30,820 --> 00:44:35,560 Lasă-mă să încerc un caz colț, cum ar fi negativ 1, dă-mi o, și că o 965 00:44:35,560 --> 00:44:36,210 se verifică de asemenea. 966 00:44:36,210 --> 00:44:38,870 Și probabil că vreau să fac ceva mai mult teste riguroase, dar eu sunt destul de 967 00:44:38,870 --> 00:44:40,630 confortabile, cu care e la. 968 00:44:40,630 --> 00:44:43,110 >> Ei bine, acum hai sa incercam un alt program că această dată folosește o 969 00:44:43,110 --> 00:44:44,620 bit de altă sintaxă. 970 00:44:44,620 --> 00:44:46,100 Permiteți-mi crea un nou fișier. 971 00:44:46,100 --> 00:44:51,050 Voi numi acest conditions0.c să se alinieze cu un cod on-line eșantion. 972 00:44:51,050 --> 00:44:55,550 Și lasă-mă să merg mai departe și face includ cs50.h, includ 973 00:44:55,550 --> 00:45:00,320 stdio.h, în main - 974 00:45:00,320 --> 00:45:01,030 OK. 975 00:45:01,030 --> 00:45:01,850 Acolo mergem. 976 00:45:01,850 --> 00:45:03,010 Avem șabloane nostru standard. 977 00:45:03,010 --> 00:45:08,170 >> Și de data asta am de gând să spun printf, "Aș dori un int, vă rugăm," doar pentru a 978 00:45:08,170 --> 00:45:10,030 face prompt un pic mai prietenos. 979 00:45:10,030 --> 00:45:11,620 Și acum vreau să obțineți un int de la utilizator. 980 00:45:11,620 --> 00:45:15,010 Am de gând să-l n acest moment apel, doar pentru că n sună ca număr. 981 00:45:15,010 --> 00:45:18,140 getint, și acum, ce facem Vreau să fac cu ea? 982 00:45:18,140 --> 00:45:21,640 Ei bine, dacă n este - și voi mări - 983 00:45:21,640 --> 00:45:25,930 dacă n este mai mare decât 0, vreau pentru a face următoarele - 984 00:45:25,930 --> 00:45:36,060 printf "Ai ales un număr pozitiv." Altfel, am de gând să scrie printf "Tu 985 00:45:36,060 --> 00:45:37,870 ales un negativ 986 00:45:37,870 --> 00:45:39,650 număr. "În regulă. 987 00:45:39,650 --> 00:45:44,410 Deci acest program, chiar dacă am făcut-o rapid, arata bine punct de vedere sintactic. 988 00:45:44,410 --> 00:45:45,010 Lasă-mă să încerc asta. 989 00:45:45,010 --> 00:45:46,890 Face condiție 0. 990 00:45:46,890 --> 00:45:47,710 Se pare că pentru a rula. 991 00:45:47,710 --> 00:45:49,230 Stare 0, intra. 992 00:45:49,230 --> 00:45:51,910 Să-i dăm o int de 50. 993 00:45:51,910 --> 00:45:53,160 Am ales un număr pozitiv. 994 00:45:53,160 --> 00:45:54,230 Să încercăm din nou. 995 00:45:54,230 --> 00:45:54,930 Stare 0. 996 00:45:54,930 --> 00:45:56,260 Negativă 50. 997 00:45:56,260 --> 00:45:57,290 Am ales un număr negativ. 998 00:45:57,290 --> 00:46:00,350 >> Dar acum, lasă-mă să aleg ce vom păstra apelarea unui caz colț, care este mai mult 999 00:46:00,350 --> 00:46:04,702 un caz interesant care credeți că s-ar putea să vă dau unele probleme, 0. 1000 00:46:04,702 --> 00:46:07,940 Acum, eu sunt destul de sigur că aceasta este una dintre acele cazuri în colțul în care zero 1001 00:46:07,940 --> 00:46:12,330 nici pozitiv, nici negativ, așa mea Programul, deși în vedere sintactic 1002 00:46:12,330 --> 00:46:15,440 corecta - se compilează, se execută - nu este logic corect. 1003 00:46:15,440 --> 00:46:21,050 Deci, ce este remediu simplu aici dacă vreau pentru a detecta, dacă vreau să se ocupe de n 1004 00:46:21,050 --> 00:46:23,840 este egal cu 0 separat? 1005 00:46:23,840 --> 00:46:32,980 >> Deci, dacă n este egal cu 0, atunci vreau să spun ceva de genul printf "Tu ai ales 0." 1006 00:46:32,980 --> 00:46:33,990 Lasă-mă să încerc asta acum. 1007 00:46:33,990 --> 00:46:38,320 Lasă-mă să mă întorc aici, clar fereastra mea, și recompilare. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Genera o eroare. 1010 00:46:39,770 --> 00:46:41,630 Dar eu nu vă doriți să verificați dacă n este egal cu 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Deci, din nou, un alt lucru stupid să se obișnuiască, semnul egal este 1013 00:46:47,720 --> 00:46:48,910 operatorului de atribuire. 1014 00:46:48,910 --> 00:46:52,240 Deci, aceasta este de fapt greseala in care, punct de vedere tehnic, chiar dacă compilator 1015 00:46:52,240 --> 00:46:56,450 ma protejat de mine, ne-am punct de vedere tehnic se copierea 0 în n, care 1016 00:46:56,450 --> 00:46:57,590 nu este ceea ce vreau. 1017 00:46:57,590 --> 00:47:00,950 Vreau să testeze pentru egalitate cu egal egal. 1018 00:47:00,950 --> 00:47:03,390 Și așa că acum ar putea fi Soluția mea mai bine. 1019 00:47:03,390 --> 00:47:07,810 >> Permiteți-mi să resalvați de fapt acest lucru ca, spune, conditions1, să fie noi și îmbunătățite. 1020 00:47:07,810 --> 00:47:10,480 Deci, acum, dacă am recompilați acest lucru, s-ar face condiții - 1021 00:47:10,480 --> 00:47:16,960 Hopa - face conditions1 punct slash conditions1, Enter, "Aș vrea un int, 1022 00:47:16,960 --> 00:47:18,760 te rog. "Am de gând să meargă înainte și tastați 50. 1023 00:47:18,760 --> 00:47:19,660 Este încă bine. 1024 00:47:19,660 --> 00:47:21,200 Negativ 50, încă bine. 1025 00:47:21,200 --> 00:47:24,920 0, și aceasta, într-adevăr, detectat că am ales 0. 1026 00:47:24,920 --> 00:47:28,200 >> Deci, ce mai pot face acum cu asta? 1027 00:47:28,200 --> 00:47:32,280 Ei bine, putem face cu siguranță din ce în ce lucruri complexe. 1028 00:47:32,280 --> 00:47:37,240 Dar ceea ce aș vrea să propun este pe care le încheie în această notă aici. 1029 00:47:37,240 --> 00:47:41,680 Dacă ne trage în sus acest lucru, veți vedea, probabil, un desen animat preferat al tau 1030 00:47:41,680 --> 00:47:43,326 până în prezent s-ar putea Nu am înțeles niciodată. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 Și că e vorba de calitatea de râs ar trebui să te cu glume CS. 1033 00:47:49,520 --> 00:47:51,060 Așa că e vorba de dreptate. 1034 00:47:51,060 --> 00:47:54,900 >> Dar mai convingător, m-am gândit să ne dea un pic de teaser pentru luni. 1035 00:47:54,900 --> 00:47:56,430 Așa că am început cu numere întregi. 1036 00:47:56,430 --> 00:47:57,510 Am menționat flotoare. 1037 00:47:57,510 --> 00:48:00,120 Chiar am menționat duble, care, din nou, vă dau numerele 1038 00:48:00,120 --> 00:48:01,390 după zecimale. 1039 00:48:01,390 --> 00:48:04,230 >> Dar se pare că plutește și duble, și, într-adevăr, calculatoare, 1040 00:48:04,230 --> 00:48:08,470 fundamental, nu se poate exprima unele valori exact. 1041 00:48:08,470 --> 00:48:12,840 Știm de la clase de matematica pe care le puteți avea orice număr de numere după 1042 00:48:12,840 --> 00:48:13,510 zecimale. 1043 00:48:13,510 --> 00:48:16,460 Și puteți chiar pune o bară verticală să spun aceste merge pe totdeauna. 1044 00:48:16,460 --> 00:48:18,810 >> Din păcate, nu se poate într-adevăr face acest lucru într-un calculator. 1045 00:48:18,810 --> 00:48:20,400 Și astfel de cazuri colț apar. 1046 00:48:20,400 --> 00:48:23,120 De exemplu, să presupunem că ești a face ceva financiare. 1047 00:48:23,120 --> 00:48:25,700 Tu faci matematica cu procente, iar 1048 00:48:25,700 --> 00:48:27,030 cu dolari și cenți. 1049 00:48:27,030 --> 00:48:29,230 Și aceste cenți nu neapărat linia de sus. 1050 00:48:29,230 --> 00:48:34,120 Ei bine, se pare că fracțiuni de mărunțiș poate începe să adăugați până când 1051 00:48:34,120 --> 00:48:37,250 modelat cu un sistem informatic în așa fel încât inteligent 1052 00:48:37,250 --> 00:48:39,100 oamenii pot profita. 1053 00:48:39,100 --> 00:48:42,650 >> Iar cei dintre voi care nu au văzut, mi-ar ca să vă dau un 30-al doilea teaser al 1054 00:48:42,650 --> 00:48:48,290 un film minunat cunoscut ca spatiu de birouri, care va picta o imagine a unui 1055 00:48:48,290 --> 00:48:51,205 Problema vom aborda Primul lucru pe luni. 1056 00:48:51,205 --> 00:48:53,960 Dacă am putea ridica volumul un pic, vă dau 30 1057 00:48:53,960 --> 00:48:55,495 secunde de spatii de birouri. 1058 00:48:55,495 --> 00:48:55,770 >> [Redare video] 1059 00:48:55,770 --> 00:48:59,000 >> -Adică, tu, tu nu au fost afișate și veți obține pentru a păstra locul de muncă. 1060 00:48:59,000 --> 00:49:00,620 >> -De fapt, am fost promovat. 1061 00:49:00,620 --> 00:49:03,240 >> -Aș putea programa un virus care ar rip acel loc mare de timp. 1062 00:49:03,240 --> 00:49:04,430 >> -Ei bine, cum funcționează? 1063 00:49:04,430 --> 00:49:06,782 >> -De fiecare dată când există o tranzacție bancară în cazul în care dobânda este calculată, și acolo 1064 00:49:06,782 --> 00:49:10,160 sunt mii de o zi, computerul se termină cu aceste fracțiuni de un cent. 1065 00:49:10,160 --> 00:49:12,030 >> -Dar eu nu am de gând să fac nimic ilegal. 1066 00:49:12,030 --> 00:49:12,660 >> -Ilegal? 1067 00:49:12,660 --> 00:49:15,075 Samir, asta e America. 1068 00:49:15,075 --> 00:49:16,570 >> -Trebuie să jur pe Dumnezeu. 1069 00:49:16,570 --> 00:49:19,070 >> -În cazul în care nimeni nu știe despre acest dar noi, bine? 1070 00:49:19,070 --> 00:49:21,920 Nici membrii familiei, nu prietene, nimeni. 1071 00:49:21,920 --> 00:49:22,700 >> -Desigur. 1072 00:49:22,700 --> 00:49:23,320 >> -De acord. 1073 00:49:23,320 --> 00:49:24,280 >> -Nu vă faceți griji, omule. 1074 00:49:24,280 --> 00:49:25,640 Nu voi spune nimănui, fie. 1075 00:49:25,640 --> 00:49:26,504 >> [END redare video] 1076 00:49:26,504 --> 00:49:30,030 >> DAVID MALAN: Deci, atunci, este CS50, care era Office Space, și se va tot 1077 00:49:30,030 --> 00:49:31,465 sens luni. 1078 00:49:31,465 --> 00:49:33,940 Ne vedem atunci. 1079 00:49:33,940 --> 00:49:37,880 >> NARATOR: La CS50 următoare, Rob ajustează pentru a fi pe 1080 00:49:37,880 --> 00:49:39,130 Plan de masă Harvard. 1081 00:49:39,130 --> 00:49:56,160