1 00:00:00,000 --> 00:00:12,410 >> [Speel van musiek] 2 00:00:12,410 --> 00:00:12,830 >> David Malan: Alle reg. 3 00:00:12,830 --> 00:00:13,370 Welkom terug. 4 00:00:13,370 --> 00:00:16,510 Dit is CS50, en dit is Een week, het voortgegaan. 5 00:00:16,510 --> 00:00:20,050 So een van die redes waarom ons al verby om tegnologie soos 6 00:00:20,050 --> 00:00:24,120 Google Glass is dat hulle kom met iets wat bekend staan ​​as 'n API, 'n 7 00:00:24,120 --> 00:00:25,980 Aansoek Programming Interface. 8 00:00:25,980 --> 00:00:28,830 En wat dit beteken, is dat met die reg lêers en met die regte 9 00:00:28,830 --> 00:00:32,850 dokumentasie, kan jy eintlik skryf sagteware vir selfs toestelle soos hierdie. 10 00:00:32,850 --> 00:00:36,200 >> En ja, wat ons in gedagte het na semesters einde is, as 'n projek 11 00:00:36,200 --> 00:00:39,310 wat, sê, Google Glass kan appèl, sal ons sien wat ons kan doen in 12 00:00:39,310 --> 00:00:42,220 terme van die haak jy met 'n paar loaner hardeware sowel as die 13 00:00:42,220 --> 00:00:46,500 die publiek toeganklike API sodat jy kan eintlik begin met die skep sagteware 14 00:00:46,500 --> 00:00:48,630 wat loop op dieselfde Google Glass. 15 00:00:48,630 --> 00:00:51,710 >> Nog 'n toestel wat ons het al speel met van die laat wat ons gedink het sou wees 16 00:00:51,710 --> 00:00:53,910 pret by semester se einde is hierdie klein ding hier. 17 00:00:53,910 --> 00:00:56,860 Dit is bekend sprong Motion, en wat is jy om te sien, is tegnies 'n 18 00:00:56,860 --> 00:01:00,280 advertensie vir die toestel, maar dit praat nie van wat hierdie spesifieke 19 00:01:00,280 --> 00:01:01,240 toestel in staat is. 20 00:01:01,240 --> 00:01:05,550 En dit ook, kom met 'n API via wat jy kan skryf sagteware 21 00:01:05,550 --> 00:01:10,545 beheer van jou eie rekenaar op 'n wyse hou van hierdie een-minuut-film hier. 22 00:01:10,545 --> 00:01:12,070 >> [Video speel] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [Einde video-vertoning] 25 00:02:08,590 --> 00:02:11,190 >> So nou, hierdie toestel gebeur geïmplementeer word as 'n klein USB 26 00:02:11,190 --> 00:02:14,290 stuk wat jy kan aansluit in jou rekenaar, maar ek sou nie verbaas wees 27 00:02:14,290 --> 00:02:17,930 indien daar voor lank het ons hierdie soort tegnologie in die volgende groep van rekenaars 28 00:02:17,930 --> 00:02:20,510 en Macs sodat jy kan inderdaad interaksie met dit in 29 00:02:20,510 --> 00:02:21,650 'n wyse soos dit. 30 00:02:21,650 --> 00:02:24,250 In werklikheid, wat ek gedink ek wil doen, ook, is Ek trek 'n bietjie demonstrasie 31 00:02:24,250 --> 00:02:25,860 program wat kom met hierdie sagteware. 32 00:02:25,860 --> 00:02:28,700 So ek het die klein sensor in die voorkant van my laptop. 33 00:02:28,700 --> 00:02:32,420 >> En soos jy kan sien, is dit besef reeds dat my hand is daar 34 00:02:32,420 --> 00:02:33,400 om dit te beheer. 35 00:02:33,400 --> 00:02:37,900 En al hierdie aansoek doen, word dakje min dinge soos hierdie. 36 00:02:37,900 --> 00:02:41,080 Maar jy kan sien dat, wel, Ek het vyf vingers daar. 37 00:02:41,080 --> 00:02:44,270 As ons dit kan kry al 10 te doen, jy kan dink 'n netjiese klavier 38 00:02:44,270 --> 00:02:45,390 aansoek of die wil. 39 00:02:45,390 --> 00:02:47,820 So as jy wil om te kom na die klas vandag en speel met wat as 40 00:02:47,820 --> 00:02:49,720 Wel, is jy welkom om te. 41 00:02:49,720 --> 00:02:52,930 So meer op wat in die rigting van semester se einde. 42 00:02:52,930 --> 00:02:54,420 >> So 'n paar van die administratiewe aankondigings. 43 00:02:54,420 --> 00:02:58,690 Een, doen artikel deur hierdie Vrydag op die middag by cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 Dit URL is op die kursus se tuisblad as well. 45 00:03:01,260 --> 00:03:04,010 In die tussentyd, al is, supersections sal debuut hierdie Sondag. 46 00:03:04,010 --> 00:03:07,800 Supersections is 'n een-time ding, want dit neem ons 'n tyd om te werk 47 00:03:07,800 --> 00:03:09,470 uit wie is in watter afdeling en waar. 48 00:03:09,470 --> 00:03:12,280 >> So eerskomende Sondag, sal daar 'n artikel vir diegene wat minder gemaklik, 49 00:03:12,280 --> 00:03:14,040 een artikel vir diegene meer gemaklik. 50 00:03:14,040 --> 00:03:16,110 En dié van julle êrens in tussen is welkom om te gaan na 51 00:03:16,110 --> 00:03:17,850 een of albei of nie. 52 00:03:17,850 --> 00:03:19,150 Beide van hierdie sal verfilm word. 53 00:03:19,150 --> 00:03:22,740 Hulle sal in 'n groter ouditorium as 'n artikel normaalweg sou wees in 54 00:03:22,740 --> 00:03:26,110 Maar die doel hier is om jou toe te rus met 'n troos met die probleem wat een, 55 00:03:26,110 --> 00:03:29,910 met C, met die CS50 toestel, hierdie naweek, nog voor jy vind uit jou 56 00:03:29,910 --> 00:03:31,050 formele artikel opdrag. 57 00:03:31,050 --> 00:03:34,700 So jy sal voldoen aan jou TF en jou kleiner groep sectionmates in oor 58 00:03:34,700 --> 00:03:36,350 'n week se tyd. 59 00:03:36,350 --> 00:03:38,200 >> Kantoorure, intussen, is aan die gang. 60 00:03:38,200 --> 00:03:41,020 Doen neem voordeel van hulle vanaand of môreaand as jy wil. 61 00:03:41,020 --> 00:03:43,460 Gestelde probleem 0 is as gevolg op Vrydag. 62 00:03:43,460 --> 00:03:46,680 Dit is 'n dag later as die gereeld-geskeduleer Donderdag. 63 00:03:46,680 --> 00:03:50,410 Maar met die probleem set 1, sien jy dat dit sluit 'n paar warm-up 64 00:03:50,410 --> 00:03:52,770 oefeninge waarmee jy jouself kan verleng jou 65 00:03:52,770 --> 00:03:54,660 Donderdag sperdatum tot Vrydag. 66 00:03:54,660 --> 00:03:58,410 Probleem set 1, intussen, sal debuut op die kursus se webblad die komende 67 00:03:58,410 --> 00:04:02,000 Vrydag, as jy wil om te krul met dit soos ek gedoen het eens op 'n tyd laat 68 00:04:02,000 --> 00:04:04,370 Vrydag nag in jou kamer. 69 00:04:04,370 --> 00:04:07,660 >> So cs50.net/appliance is die plek waar kan jy die CS50 toestel 70 00:04:07,660 --> 00:04:09,040 dat ons begin gebruik op Maandag. 71 00:04:09,040 --> 00:04:10,140 Ons sal dit gebruik om 'n bietjie meer vandag. 72 00:04:10,140 --> 00:04:14,040 Maar wees verseker dat die probleem stel 1 spesifikasie sal loop jy deur 73 00:04:14,040 --> 00:04:16,490 presies die stappe wat jy nodig het dat om op te staan ​​en loop. 74 00:04:16,490 --> 00:04:22,120 So moenie bekommerd wees oor dit te doen voordat Pset 1 As jy liewer nie. 75 00:04:22,120 --> 00:04:22,660 >> Alle regte. 76 00:04:22,660 --> 00:04:27,180 So het ons gekyk op Maandag by die bron-kode, maar in die konteks van 'n nuwe 77 00:04:27,180 --> 00:04:30,895 programmeertaal, naamlik C. en C, Anders nuuts af, is nie grafiese. 78 00:04:30,895 --> 00:04:32,270 Dit is nie die stukke van die legkaart. 79 00:04:32,270 --> 00:04:34,450 Dit is meer Engels-agtige sintaksis. 80 00:04:34,450 --> 00:04:37,140 En daar is 'n paar van die stappe wat betrokke is in werklikheid skryf en die bestuur van 'n 81 00:04:37,140 --> 00:04:41,650 program in C, want behalwe bron kode soos hierdie, moet jy iets 82 00:04:41,650 --> 00:04:42,890 bekend as 'n samesteller. 83 00:04:42,890 --> 00:04:46,682 En in leketaal, wat nie 'n vertaler vir ons kan doen? 84 00:04:46,682 --> 00:04:47,650 Ja. 85 00:04:47,650 --> 00:04:51,040 >> STUDENT: Dit vat die kode dat jy skryf aan 0e en 1e. 86 00:04:51,040 --> 00:04:51,151 >> David Malan: Goed. 87 00:04:51,151 --> 00:04:53,580 So dit vat die kode wat ons skryf aan 0e en 1e. 88 00:04:53,580 --> 00:04:57,730 Dit vat sogenaamde bron-kode te voorwerp-kode, die laaste wat lyk 89 00:04:57,730 --> 00:04:59,140 'n bietjie iets soos hierdie. 90 00:04:59,140 --> 00:05:02,860 En dit is jou CPU, die brein binnekant van jou rekenaar, wat as gevolg van die 91 00:05:02,860 --> 00:05:06,280 mense wat die rekenaars geskep, weet wat die rye 92 00:05:06,280 --> 00:05:07,460 van 0'e en 1'e gemiddelde. 93 00:05:07,460 --> 00:05:08,640 >> Miskien is dit beteken druk. 94 00:05:08,640 --> 00:05:10,265 Miskien is dit beteken byvoeging. 95 00:05:10,265 --> 00:05:11,610 Miskien is dit beteken aftrek. 96 00:05:11,610 --> 00:05:13,350 Miskien beteken dit vertoon 'n grafiese. 97 00:05:13,350 --> 00:05:16,870 Daar is vooraf patrone van stukkies dat die wêreld het besluit beteken 98 00:05:16,870 --> 00:05:17,700 sekere dinge. 99 00:05:17,700 --> 00:05:20,760 Maar vir die grootste deel in hierdie kursus, ons sal werk op 'n hoër vlak, en 100 00:05:20,760 --> 00:05:24,180 sal ons as vanselfsprekend aanvaar dat daar bestaan dinge soos opstellers wat kan 101 00:05:24,180 --> 00:05:27,670 maak ons ​​bron-kode funksie in die manier waarop ons plan. 102 00:05:27,670 --> 00:05:31,660 >> So het die program het ons geskryf eerste is, laaste week en dan begin om na die hawe, so te 103 00:05:31,660 --> 00:05:33,920 spreek, tot C afgelope Maandag, was hierdie. 104 00:05:33,920 --> 00:05:35,700 Wanneer groen vlag gebruik het, sê hallo. 105 00:05:35,700 --> 00:05:37,430 Dit was, natuurlik, geskryf in nuuts af. 106 00:05:37,430 --> 00:05:40,710 En ek het beweer dat die ekwivalent program in C het 'n bietjie 107 00:05:40,710 --> 00:05:41,520 iets soos hierdie. 108 00:05:41,520 --> 00:05:45,050 >> So, wat ek gedink ons ​​wil doen op die eerste is, laat se terg mekaar wat lyk, op die eerste 109 00:05:45,050 --> 00:05:48,790 oogopslag, weliswaar, soos billik arcane sintaksis, maar jy sal begin om op te let 110 00:05:48,790 --> 00:05:50,160 patrone baie vinnig. 111 00:05:50,160 --> 00:05:53,770 Wat sal ons doen ook vandag verskaf jy met 'n geestelike model vir 'n paar 112 00:05:53,770 --> 00:05:57,280 kanoniese, 'n paar standaard konstrukte in ontwikkeling. 113 00:05:57,280 --> 00:06:00,420 En dan sal ons werklik ons ​​hande vuil met 'n paar voorbeelde as well. 114 00:06:00,420 --> 00:06:04,140 >> So vir die van julle meer gemaklik, besef dat hierdie week en dan volgende 115 00:06:04,140 --> 00:06:05,940 week kan baie goed wees om 'n bietjie van die hersiening. 116 00:06:05,940 --> 00:06:08,810 Maar veral wanneer die hacker uitgawe van die probleem stel 1 loop uit op die 117 00:06:08,810 --> 00:06:12,330 Natuurlik se webwerf op Vrydag, dink ek jy sal vind dat selfs as jy vul 118 00:06:12,330 --> 00:06:15,390 sommige spasies oor die volgende week of twee, jy sal begin al hoe meer te kry 119 00:06:15,390 --> 00:06:18,410 uitgedaag en ontmoeting nuwe en nuwe dinge. 120 00:06:18,410 --> 00:06:21,310 >> So laat terg hierdie program uitmekaar 'n paar lyne op 'n slag. 121 00:06:21,310 --> 00:06:24,140 Op die heel boonste, ons het wat is tegnies bekend as 'n 122 00:06:24,140 --> 00:06:25,950 preprocessor richtlijn. 123 00:06:25,950 --> 00:06:30,510 Dit is net 'n reël van die kode wat sê die inhoud van 'n lêer in te sluit, 124 00:06:30,510 --> 00:06:35,080 genoem standaard I / N, standaard insette - of, jammer, standaard I / O, standaard 125 00:06:35,080 --> 00:06:38,670 toevoer / afvoer,. h, binne van my eie program. 126 00:06:38,670 --> 00:06:41,670 >> So met ander woorde, as ek dit geskryf het program met 'n eenvoudige teks editor soos 127 00:06:41,670 --> 00:06:45,260 gedit, die eenvoudiger ekwivalent van iets soos Microsoft Word, wat 128 00:06:45,260 --> 00:06:50,970 onderrig, # sluit stdio.h, is net gaan die vertaler te vertel, gryp die 129 00:06:50,970 --> 00:06:56,080 inhoud van daardie ander lêer, stdio.h, en plak hulle hier. 130 00:06:56,080 --> 00:06:57,090 >> Nou, hoekom ek omgee? 131 00:06:57,090 --> 00:07:01,850 Wat het ons beweer is binnekant van hierdie lêer genoem stdio.h, wat gestoor word 132 00:07:01,850 --> 00:07:05,490 iewers op my hardeskyf, of in hierdie geval, iewers in die CS50 toestel? 133 00:07:05,490 --> 00:07:06,635 Iemand anders het dit daar vir my. 134 00:07:06,635 --> 00:07:09,910 Maar wat is in dit? 135 00:07:09,910 --> 00:07:13,020 >> Ja, so dit is 'n verklaring van 'n funksie genoem printf. 136 00:07:13,020 --> 00:07:17,400 So printf herinner aan die funksie wat uitstallings woorde en karakters en 137 00:07:17,400 --> 00:07:20,160 nommers op die skerm op my bied. 138 00:07:20,160 --> 00:07:21,220 Maar ek het nie skryf dit. 139 00:07:21,220 --> 00:07:22,230 CS50 het nie skryf nie. 140 00:07:22,230 --> 00:07:26,990 Iemand jaar gelede geskryf het, en hulle wese het ons die resep vir dit 141 00:07:26,990 --> 00:07:29,110 in 'n lêer genaamd stdio.h. 142 00:07:29,110 --> 00:07:33,240 Sodat die eerste lyn gee my net toegang om funksies wat iemand anders 143 00:07:33,240 --> 00:07:36,500 jare gelede geskryf het, onder wat printf. 144 00:07:36,500 --> 00:07:39,450 >> Nou, die volgende lyn Ek gaan my te waai hand op, ten minste tot volgende week. 145 00:07:39,450 --> 00:07:43,620 Maar vir nou, weet dat int main (void) is wese die ekwivalent van hierdie 146 00:07:43,620 --> 00:07:46,310 geel legkaart stuk toe groen vlag gebruik. 147 00:07:46,310 --> 00:07:49,510 Die wêreld, jaar gelede, het besluit dat indien jy skryf 'n program in die 148 00:07:49,510 --> 00:07:53,150 taal, die sogenaamde C, jy begin jou program met 'n lyn 149 00:07:53,150 --> 00:07:54,410 wat lyk soos dit. 150 00:07:54,410 --> 00:07:57,650 In net oor 'n week se tyd, sal dit maak sin wat int is, wat leeg is. 151 00:07:57,650 --> 00:08:00,840 Maar vir nou, dink net aan dit as dit geel legkaart stuk. 152 00:08:00,840 --> 00:08:04,550 >> Nou volgende, ons het 'n krullerige stut gevolg deur 'n ander naby krullerige stut, 153 00:08:04,550 --> 00:08:05,240 om so te praat. 154 00:08:05,240 --> 00:08:07,430 En ons sal sien hierdie hele programme in C, sowel as 155 00:08:07,430 --> 00:08:08,930 JavaScript en PHP. 156 00:08:08,930 --> 00:08:11,345 En dit is net omsluit verwante reëls van die kode. 157 00:08:11,345 --> 00:08:14,600 Die oop krullerige stut wese sê, hier kom 'n kode. 158 00:08:14,600 --> 00:08:17,590 En die geslote krullerige stut, wat hoek in die ander rigting, net 159 00:08:17,590 --> 00:08:19,920 beteken, dit is dit vir die relevante kode. 160 00:08:19,920 --> 00:08:22,970 >> So het die sappige lyn in die eerste program is die laaste, printf, 161 00:08:22,970 --> 00:08:25,080 quote-unquote, hallo wêreld. 162 00:08:25,080 --> 00:08:30,670 En ek het die ding tussen aanhalings wat die vorige keer? 163 00:08:30,670 --> 00:08:31,285 So dit is 'n string. 164 00:08:31,285 --> 00:08:35,309 En 'n string is net die techie term vir 'n reeks 165 00:08:35,309 --> 00:08:37,169 karakters, 'n woord, 'n frase. 166 00:08:37,169 --> 00:08:39,380 Selfs 'n enkele brief kon word dubbel aangehaal. 167 00:08:39,380 --> 00:08:41,840 Maar dit is 'n reeks van nul of meer karakters. 168 00:08:41,840 --> 00:08:43,650 >> Agteroorskuisstreep-n, al is, lyk 'n bietjie vreemd. 169 00:08:43,650 --> 00:08:46,290 Maar dit net iets beteken eenvoudige na die rekenaar. 170 00:08:46,290 --> 00:08:48,060 Wat is agteroorskuisstreep-n? 171 00:08:48,060 --> 00:08:48,570 Nuwe lyn. 172 00:08:48,570 --> 00:08:52,490 So dit is net die spesiale reeks karakters wat die wêreld het besluit 173 00:08:52,490 --> 00:08:56,880 middel sit 'n lyn breek net daar, omdat die samesteller sal kry eintlik 174 00:08:56,880 --> 00:09:02,280 verward, gewoonlik, as jy, baie verstaanbaar, maar verkeerd, net 175 00:09:02,280 --> 00:09:04,570 begin slaan Tik te sit nuwe reëls in jou kode. 176 00:09:04,570 --> 00:09:07,150 Jy moet 'n bietjie meer eksplisiete met agteroorskuisstreep-n. 177 00:09:07,150 --> 00:09:10,540 >> En ons sal sien daar is 'n paar ander sulke patrone vir spesiale karakters. 178 00:09:10,540 --> 00:09:14,340 Byvoorbeeld, om as jy wou laat jou gedagtes dwaal na 'n hoek geval, 179 00:09:14,340 --> 00:09:18,080 veronderstel dat ek wou 'n te druk dubbel kwotasie op die skerm vir 180 00:09:18,080 --> 00:09:21,840 watter rede ook al, sou dit lyk asof 'n bietjie problematies, reg? 181 00:09:21,840 --> 00:09:24,990 Want as ek 'n dubbele quote in die middel van "hallo, wêreld," vir alles wat 182 00:09:24,990 --> 00:09:30,120 rede is waarom dit lyk asof potensieel problematies? 183 00:09:30,120 --> 00:09:32,180 Dit breek die tou. 184 00:09:32,180 --> 00:09:34,700 >> Die samesteller is net 'n program. 185 00:09:34,700 --> 00:09:37,210 'N program soos 'n vertaler is net gaan jou kode top te lees na onder, 186 00:09:37,210 --> 00:09:37,990 links na regs. 187 00:09:37,990 --> 00:09:41,850 En as daar drie dubbele aanhalingstekens plaas van twee, is dit nie gaan om te weet 188 00:09:41,850 --> 00:09:45,210 as jy bedoel dat die ding aan die linkerkant moet die string, of die ding te wees 189 00:09:45,210 --> 00:09:46,570 die reg of die hele ding. 190 00:09:46,570 --> 00:09:50,560 Dit is dubbelsinnig, en so wat 'n tipiese samesteller sou doen, is net freak uit, 191 00:09:50,560 --> 00:09:53,710 en gee jou 'n fout boodskap, en maak dat jy gaan met die probleem. 192 00:09:53,710 --> 00:09:58,120 >> So gegee dat agteroorskuisstreep-n 'n nuwe lyn, wat sal jou instink nou 193 00:09:58,120 --> 00:10:02,610 begin om te wees as jy wil in te sluit iets onreëlmatige soos 'n dubbele 194 00:10:02,610 --> 00:10:06,210 haal die binnekant van hierdie andersins aangehaal string? 195 00:10:06,210 --> 00:10:07,640 Agteroorskuisstreep-dubbel kwotasie. 196 00:10:07,640 --> 00:10:09,630 En so sal ons sien hierdie soort patroon ook. 197 00:10:09,630 --> 00:10:12,490 >> As jy iets 'n bietjie te doen vreemd, sal jy vind dat die 198 00:10:12,490 --> 00:10:15,060 oplossings dikwels 'n patroon, en die agteroorskuisstreep 199 00:10:15,060 --> 00:10:17,150 dui op 'n ontsnapping ry. 200 00:10:17,150 --> 00:10:20,320 En dit beteken net iets spesiaals dat ons nodig het om te verteenwoordig in 'n 201 00:10:20,320 --> 00:10:21,060 ander manier. 202 00:10:21,060 --> 00:10:23,830 Soos vir hoe jy verteenwoordig 'n agteroorskuisstreep, Wel, ons sal 203 00:10:23,830 --> 00:10:24,550 kom terug na daardie. 204 00:10:24,550 --> 00:10:26,930 Maar die antwoord nie, ook, is eintlik 'n bietjie voor die hand liggend. 205 00:10:26,930 --> 00:10:31,080 >> So laat ons nou stel 'n ander programmering konstrukte 206 00:10:31,080 --> 00:10:31,915 wat jy gesien het in nuuts af. 207 00:10:31,915 --> 00:10:34,790 Jy het waarskynlik as vanselfsprekend aanvaar reeds as jy reeds duik in 208 00:10:34,790 --> 00:10:36,060 probleem gestel 0. 209 00:10:36,060 --> 00:10:40,950 Maar laat ons nou die sintaksis in C vir hierdie andersins redelik intuïtief 210 00:10:40,950 --> 00:10:42,300 idees, ten minste sommige van hulle. 211 00:10:42,300 --> 00:10:45,570 >> So hierdie idee van 'n toestand of 'n tak, terwyl voorheen ons 212 00:10:45,570 --> 00:10:49,330 verteenwoordig dit met 'n kode wat lyk soos hierdie aan die linkerkant in Scratch - 213 00:10:49,330 --> 00:10:52,200 As x is minder as y, dan is dit te sê - 214 00:10:52,200 --> 00:10:56,760 plaas nou in C - laat my slyp in die eenvoudigste geval - 215 00:10:56,760 --> 00:11:01,235 ons net gaan om te sê, as, oop hakies, iets waar is - 'n 216 00:11:01,235 --> 00:11:04,190 Boole-uitdrukking gaan om te gaan waar ek het gesê toestand - 217 00:11:04,190 --> 00:11:08,170 naby hakies, doen dan wat is binnekant van die krulhakies. 218 00:11:08,170 --> 00:11:11,020 >> So ook hier die krulhakies is soort van soos Scratch se 219 00:11:11,020 --> 00:11:12,460 U-vormige stukke van die legkaart. 220 00:11:12,460 --> 00:11:14,890 Weet wat is binne-in hierdie krullerige draadjies. 221 00:11:14,890 --> 00:11:16,790 In hierdie geval, streep streep. 222 00:11:16,790 --> 00:11:19,720 En sien dit is 'n vorentoe streep, nie 'n agteroorskuisstreep. 223 00:11:19,720 --> 00:11:21,440 Slash, slash, Vir diegene wat nog geprogrammeer 224 00:11:21,440 --> 00:11:23,370 voor, beteken net - 225 00:11:23,370 --> 00:11:24,190 dit is net 'n kommentaar. 226 00:11:24,190 --> 00:11:26,630 'N comment is nie 'n lyn van die kode, per se. 227 00:11:26,630 --> 00:11:30,200 Dit is 'n reël van die Engelse dat jy, die menslike, geskryf het om jouself te 228 00:11:30,200 --> 00:11:33,540 miskien herinner om iets te doen, te verduidelik aan jouself, te verduidelik 229 00:11:33,540 --> 00:11:35,260 iemand anders, wat jou kode doen. 230 00:11:35,260 --> 00:11:37,050 Dit is net 'n beskrywende kommentaar. 231 00:11:37,050 --> 00:11:40,880 >> Nou, natuurlik, kan ons 'n twee-rigting Vurk in die pad net deur dit te doen, 'n 232 00:11:40,880 --> 00:11:43,930 drie-pad vurk in die pad deur te doen hierdie, en as jy aanhou om hierdie 233 00:11:43,930 --> 00:11:47,570 patroon, kan jy vier-pad, Vyf-pad, ses-pad vurk in die pad as 234 00:11:47,570 --> 00:11:50,150 wat jy nodig het om te hanteer, inderdaad, dat baie voorwaardes. 235 00:11:50,150 --> 00:11:52,010 En dan sien die parallel hier - 236 00:11:52,010 --> 00:11:55,070 if (toestand), anders as (toestand), en die enigste een wat 'n bietjie 237 00:11:55,070 --> 00:11:58,010 vreemd is, is die laaste, wat is net dat anders. 238 00:11:58,010 --> 00:12:01,170 Maar weereens, dit is identies, konseptueel, na wat ons gedoen het, 239 00:12:01,170 --> 00:12:04,690 reeds, selfs al is die sintaksis sal neem 'n bietjie gewoond raak aan. 240 00:12:04,690 --> 00:12:07,730 >> Nou, in hierdie voorbeeld, is daar 'n ander vreemde sintaksis. 241 00:12:07,730 --> 00:12:11,220 Ons sien printf weer oop hakies, en naby hakies. 242 00:12:11,220 --> 00:12:13,190 En binnekant van daar 'n string aangehaal. 243 00:12:13,190 --> 00:12:17,060 Die hakies, in die konteks van printf, gaan aan die linkerkant 244 00:12:17,060 --> 00:12:18,160 en regs van wat? 245 00:12:18,160 --> 00:12:22,190 Wat beskryf ons wat aangehaal string as meer algemeen? 246 00:12:22,190 --> 00:12:23,320 >> So dit is 'n argument. 247 00:12:23,320 --> 00:12:26,620 Enige tyd wat jy het 'n funksie, soos printf, en dan 'n oop hakie en 'n 248 00:12:26,620 --> 00:12:30,330 naby hakie en iets binne dit, of is dit 'n string, of 'n 249 00:12:30,330 --> 00:12:34,420 integer, of enigiets anders, die ding in tussen die hakies genoem 250 00:12:34,420 --> 00:12:35,110 'n argument. 251 00:12:35,110 --> 00:12:37,910 >> En 'n argument beïnvloed net die funksie se gedrag. 252 00:12:37,910 --> 00:12:39,990 In hierdie geval, dit is redelik duidelik hoe. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 En printf gaan druk presies dit. 255 00:12:47,720 --> 00:12:51,590 Want sekerlik, die persoon jaar gelede wat geïmplementeer printf het geen idee gehad 256 00:12:51,590 --> 00:12:55,000 wat ons menslike opvolgers gaan printf gebruik. 257 00:12:55,000 --> 00:12:58,610 So dit is waarom argumente bestaan, te gedrag beïnvloed na 'n funksie se 258 00:12:58,610 --> 00:12:59,450 geskryf is. 259 00:12:59,450 --> 00:13:00,780 >> Nou, Boole-uitdrukking. 260 00:13:00,780 --> 00:13:02,470 Ons het gesien dat hierdie voor in nuuts af. 261 00:13:02,470 --> 00:13:06,680 Dit blyk in C kan u ook "of" hulle saam, om so te praat. 262 00:13:06,680 --> 00:13:10,930 Twee vertikale bars beteken dat hierdie blok van die kode, dit doen, sal 263 00:13:10,930 --> 00:13:15,350 voer as die eerste voorwaarde is waar of die tweede voorwaarde is waar. 264 00:13:15,350 --> 00:13:17,710 En selfs al sou jy nie gedoen het nie hierdie in nuuts af, jy kan inderdaad 265 00:13:17,710 --> 00:13:20,580 doen dit in nuuts af, en jy kan ook druk jouself anders - 266 00:13:20,580 --> 00:13:25,300 As die eerste toestand en die tweede toestand waar is, dan weet wat is 267 00:13:25,300 --> 00:13:27,160 binnekant van die krulhakies. 268 00:13:27,160 --> 00:13:31,210 >> En net as 'n eenkant, die rede waarom dit 'n dubbel-teken en 'n dubbele 269 00:13:31,210 --> 00:13:34,610 vertikale bar, sal ons uiteindelik sien dat 'n enkele vertikale bar en 'n 270 00:13:34,610 --> 00:13:38,710 enkele ampersand eintlik het verskillende betekenis in C. So vir nou, 271 00:13:38,710 --> 00:13:41,840 dat duplisering van simbole is opsetlike. 272 00:13:41,840 --> 00:13:45,070 >> So laat stel, kortliks, hierdie ander bietjie van die sintaks. 273 00:13:45,070 --> 00:13:48,940 Dit beteken nie heeltemal oorgedra word na Nuuts af, maar ek beweer dat ek kan 274 00:13:48,940 --> 00:13:55,190 implementeer om die idee van 'n as anders, as anders, indien anders as anders verklaring gebruik 275 00:13:55,190 --> 00:13:56,760 iets genaamd 'n skakelaar verklaring. 276 00:13:56,760 --> 00:14:00,820 En die enigste rede waarom dit werklik bestaan is om net te gee jou, die programmeerder, 'n 277 00:14:00,820 --> 00:14:05,470 effens ander manier van die oplossing van 'n probleem, selfs al is dit logies 278 00:14:05,470 --> 00:14:07,340 gee jou nie 'n nuwe vermoëns. 279 00:14:07,340 --> 00:14:08,530 >> Deur wat ek bedoel nie. 280 00:14:08,530 --> 00:14:13,330 Wanneer jy sê skakelaar, en dan 'n spasie, en dan 'n paar van die hakies, binne 281 00:14:13,330 --> 00:14:14,570 van wat gaan 'n uitdrukking - 282 00:14:14,570 --> 00:14:18,010 en dit is dalk 'n bietjie nie-ooglopende op die eerste, maar dit is nie 'n argument, 283 00:14:18,010 --> 00:14:20,680 tegnies, want skakelaar is nie 'n funksie. 284 00:14:20,680 --> 00:14:24,230 So vir nou, net aanvaar dat ons gebruik hakies in verskillende plekke 285 00:14:24,230 --> 00:14:25,250 vir verskillende redes. 286 00:14:25,250 --> 00:14:29,310 >> So skakel uitdrukking beteken ek kan sit 'n veranderlike binnekant van diegene 287 00:14:29,310 --> 00:14:31,350 hakies waar dit sê uitdrukking. 288 00:14:31,350 --> 00:14:33,090 En dan as dit veranderlike - 289 00:14:33,090 --> 00:14:35,400 dink dit is genoem x, en dit is net 'n heelgetal - 290 00:14:35,400 --> 00:14:38,900 Ek kan dan opsom in my gly Hier is iets soos hierdie. 291 00:14:38,900 --> 00:14:41,690 As x is my veranderlike, en ek wil om iets te doen as x 292 00:14:41,690 --> 00:14:43,480 gelyk aan 1, kan ek dit doen. 293 00:14:43,480 --> 00:14:46,660 >> As ek in plaas wil om iets te doen indien x 2, ek kan dit doen. 294 00:14:46,660 --> 00:14:50,390 Anders, as ek wil iets anders om te doen geheel en al, kan ek 'n standaard geval het in 295 00:14:50,390 --> 00:14:52,750 welke geval ek dit doen ander ding. 296 00:14:52,750 --> 00:14:58,730 So in daardie sin, dit is gelykstaande aan 'n as x gelyk is gelyk aan 1, anders as ander, 297 00:14:58,730 --> 00:15:01,150 maar ek noem dit nou net omdat ons sal sien dit weer. 298 00:15:01,150 --> 00:15:03,720 Maar vir nou, net weet dat dit bestaan. 299 00:15:03,720 --> 00:15:04,220 >> Alle regte. 300 00:15:04,220 --> 00:15:07,660 So het hierdie laaste paar is 'n bietjie meer kompleks met die eerste oogopslag, maar hulle doen 301 00:15:07,660 --> 00:15:09,385 iets redelik eenvoudig. 302 00:15:09,385 --> 00:15:14,410 'N lus vir in C is 'n stuk van die kode wat net iets weer en 303 00:15:14,410 --> 00:15:15,330 weer en weer. 304 00:15:15,330 --> 00:15:17,590 En die enigste irriterende ding oor dit is dit is dat dit 'n bietjie kripties 305 00:15:17,590 --> 00:15:21,380 jouself uit te druk in hierdie sikliese patroon, maar die wêreld gestandaardiseerde op 306 00:15:21,380 --> 00:15:22,450 die volgende manier. 307 00:15:22,450 --> 00:15:25,760 >> Wanneer jy 'n lus vir die, het jy 'n paar van die hakies weer. 308 00:15:25,760 --> 00:15:27,570 En kennis van die twee kommapunte daar in. 309 00:15:27,570 --> 00:15:34,380 Dié twee kommapunte skei drie verskillende uitdrukkings binnekant van die 310 00:15:34,380 --> 00:15:35,020 hakies. 311 00:15:35,020 --> 00:15:37,170 Een daarvan is die sogenaamde initializations. 312 00:15:37,170 --> 00:15:38,830 Een daarvan is die sogenaamde toestand. 313 00:15:38,830 --> 00:15:40,210 En die een is die sogenaamde updates. 314 00:15:40,210 --> 00:15:43,240 >> Gekyk in die abstrakte, dit is heeltemal nie voor die hand liggend, so laat ons kyk 315 00:15:43,240 --> 00:15:44,630 op 'n konkrete voorbeeld. 316 00:15:44,630 --> 00:15:46,720 In Scratch het ons 'n herhaling blok. 317 00:15:46,720 --> 00:15:50,670 En die blok het herhaal 10 keer, sê "Hello, World." Laat my eis vir 318 00:15:50,670 --> 00:15:53,810 nou, en ons sal terug te kom na hierdie, en hierdie, te, sal jy meer vertroud te 319 00:15:53,810 --> 00:15:57,345 jy kort voor lank, die ekwivalent C kode kan gesê word dat dit - 320 00:15:57,345 --> 00:16:02,320 'n verklaring vir en 'n ruimte, 'n paar hakies, kennis van die kommapunte in 321 00:16:02,320 --> 00:16:05,730 daar, wat skei drie afsonderlike dinge, die inisialisering, die 322 00:16:05,730 --> 00:16:07,320 toestand, en die werk. 323 00:16:07,320 --> 00:16:08,840 >> En neem 'n raai wat die eerste is om te doen. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 In rowwe leketaal, wat wat vir ons doen, waarskynlik? 326 00:16:15,120 --> 00:16:15,590 So ja. 327 00:16:15,590 --> 00:16:19,630 Dit is waarby 'n veranderlike genaamd i, en dit is om dit wat waarde? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 So dit is die skep van 'n veranderlike genoem Ek, die stoor van die waarde 0 in dit. 330 00:16:24,280 --> 00:16:26,420 Dit is die sogenaamde inisialisering. 331 00:16:26,420 --> 00:16:29,360 >> Alle reg, nou is ek geëis voordat dat die Midde-ding, het ek 332 00:16:29,360 --> 00:16:31,760 <10, is die toestand. 333 00:16:31,760 --> 00:16:32,730 So, wat doen? 334 00:16:32,730 --> 00:16:36,560 Wel, wat die lus vir doen wanneer 'n program met 'n lus vir hardloop, is 335 00:16:36,560 --> 00:16:41,050 elke keer as die rekenaar loop deur hierdie lus, bo na onder, bo na 336 00:16:41,050 --> 00:16:43,740 bodem, net soos julle gedoen het toe toe julle en sit 337 00:16:43,740 --> 00:16:47,090 weer en weer en weer, die rekenaar gaan 338 00:16:47,090 --> 00:16:48,560 daardie toestand te keur. 339 00:16:48,560 --> 00:16:51,140 En as ek is minder as 10, dit sal dit weer doen. 340 00:16:51,140 --> 00:16:53,100 As ek is minder as 10, dit sal dit weer doen. 341 00:16:53,100 --> 00:16:55,030 As ek minder as tien, dit sal dit weer doen. 342 00:16:55,030 --> 00:16:57,330 So dit blyk dat voor te stel hopelik kan ek verander. 343 00:16:57,330 --> 00:16:59,010 Anders, sou ons 'n oneindige lus. 344 00:16:59,010 --> 00:17:02,590 En inderdaad, is ek verander, omdat die laaste ding wat na die kommapunt daar 345 00:17:02,590 --> 00:17:05,569 is die ietwat kriptiese sintaksis van i + +. 346 00:17:05,569 --> 00:17:07,630 Maar dié van julle wat dit gedoen het voor, wat beteken dat net 347 00:17:07,630 --> 00:17:08,609 eenvoudig wat? 348 00:17:08,609 --> 00:17:09,730 >> STUDENTE: [INTERPOSING Voices]. 349 00:17:09,730 --> 00:17:10,740 >> David Malan: Voeg 1 i. 350 00:17:10,740 --> 00:17:11,819 Inkrementeer i. 351 00:17:11,819 --> 00:17:13,910 So het ons 'n Krap legkaart stuk vir wat, eintlik. 352 00:17:13,910 --> 00:17:18,230 Dit lyk nie asof ek + +, maar dat net beteken, heel eenvoudig, inkrementeer die 353 00:17:18,230 --> 00:17:24,040 waarde wat ek met 1 elke keer as jy dit doen. 354 00:17:24,040 --> 00:17:26,910 So letterlik, jy begin deur initializing i tot 0. 355 00:17:26,910 --> 00:17:29,520 Jy gaan dan jou toestand. 356 00:17:29,520 --> 00:17:31,070 0 is minder as 10? 357 00:17:31,070 --> 00:17:31,730 Ja. 358 00:17:31,730 --> 00:17:32,910 Ons gaan deur die loop. 359 00:17:32,910 --> 00:17:35,150 >> Die volgende ding wat ek aanspraak maak op die rekenaar gaan doen, is dit gaan 360 00:17:35,150 --> 00:17:35,910 i te inkrementeer. 361 00:17:35,910 --> 00:17:37,080 So ek is nou 1. 362 00:17:37,080 --> 00:17:37,940 Dit gaan die toestand. 363 00:17:37,940 --> 00:17:39,290 Is 1 minder as 10? 364 00:17:39,290 --> 00:17:39,930 Van die kursus. 365 00:17:39,930 --> 00:17:41,030 So doen dit weer. 366 00:17:41,030 --> 00:17:43,580 Dan is dit inkremente i + + tot 2. 367 00:17:43,580 --> 00:17:44,610 Is 2 minder as 10? 368 00:17:44,610 --> 00:17:45,230 Ja. 369 00:17:45,230 --> 00:17:46,670 En weer en weer en weer. 370 00:17:46,670 --> 00:17:50,070 En uiteindelik, as gevolg van die plus-plussing, ons kry om i gelyk aan 10. 371 00:17:50,070 --> 00:17:51,675 Is 10 minder as 10? 372 00:17:51,675 --> 00:17:52,990 Wel, natuurlik nie. 373 00:17:52,990 --> 00:17:55,320 En dit is die punt waar die for-lus stop net. 374 00:17:55,320 --> 00:17:58,320 En as jy meer kode op die skerm onder, die rekenaar 375 00:17:58,320 --> 00:18:01,620 opbrengs wat die kode te plaas loop. 376 00:18:01,620 --> 00:18:05,380 >> So weer, selfs al is dit gaan lyk en voel 'n bietjie vreemd op 377 00:18:05,380 --> 00:18:07,830 eerste, beslis vir dié van julle wat het nog nooit geprogrammeer voor, is dit 378 00:18:07,830 --> 00:18:11,640 letterlik verminder konseptueel na wat andersins 'n baie 379 00:18:11,640 --> 00:18:14,330 eenvoudige legkaart stuk in nuuts af. 380 00:18:14,330 --> 00:18:19,130 >> Alle reg, ek het belowe dat daar sal wees ander analoë in nuuts af. 381 00:18:19,130 --> 00:18:20,060 Daar is hierdie een ook. 382 00:18:20,060 --> 00:18:21,700 En ons het dit gesien kortliks laaste tyd. 383 00:18:21,700 --> 00:18:23,530 Maar onthou die ewig sluit in Scratch? 384 00:18:23,530 --> 00:18:25,490 Dit is nie net iets wat vir ewig? 385 00:18:25,490 --> 00:18:27,470 Ek beweer dat jy kan implementeer dit in hierdie manier. 386 00:18:27,470 --> 00:18:29,740 En jy kan eintlik die uitvoering van hierdie in 'n klomp verskillende maniere. 387 00:18:29,740 --> 00:18:34,260 >> Maar die lus is net 'n ander manier in C van die uitdrukking van jouself. 388 00:18:34,260 --> 00:18:37,080 Aan die einde van die dag is, kan jy dit nie doen nie enigiets met 'n lus dat jy 389 00:18:37,080 --> 00:18:38,360 kan nie met 'n lus vir. 390 00:18:38,360 --> 00:18:41,430 Sodat hulle aan die einde van die dag funksioneel dieselfde. 391 00:18:41,430 --> 00:18:43,840 Maar dit kan jy jouself uit te druk 'n bietjie anders in 392 00:18:43,840 --> 00:18:44,850 die volgende manier. 393 00:18:44,850 --> 00:18:49,720 >> Met die lus, dit is wat in hakies dit is weer nagegaan en 394 00:18:49,720 --> 00:18:51,050 weer en weer. 395 00:18:51,050 --> 00:18:55,100 En so gou as wat uitdrukking vals is, dan sal die lus stop uitvoering, 396 00:18:55,100 --> 00:18:57,890 en die rekenaar opbrengs te hardloop enige ander kode wat jy 397 00:18:57,890 --> 00:18:59,230 het in jou lêer. 398 00:18:59,230 --> 00:19:02,180 >> Maar wat interessant is, is hier dat ek letterlik getik waar. 399 00:19:02,180 --> 00:19:06,680 En waar is, is 'n tipe van Boolese waarde, 'n ware of vals waarde. 400 00:19:06,680 --> 00:19:09,750 So kon ooit waar geword valse As ek letterlik 401 00:19:09,750 --> 00:19:11,970 hard-gekodeerde dit in my program? 402 00:19:11,970 --> 00:19:12,470 So nie. 403 00:19:12,470 --> 00:19:13,730 Dit is 'n bietjie vreemd dat ek dit gedoen het. 404 00:19:13,730 --> 00:19:15,190 Maar waar is, is waar. 405 00:19:15,190 --> 00:19:16,320 Daar is geen plus-plussing. 406 00:19:16,320 --> 00:19:17,820 Daar is geen gebruik van veranderlikes in hier. 407 00:19:17,820 --> 00:19:22,740 So omdat ek hard-gekodeerde terwyl ware, hierdie lus is altyd iets om te evalueer 408 00:19:22,740 --> 00:19:24,090 weer en weer en weer. 409 00:19:24,090 --> 00:19:27,660 >> So hoeveel keer is Hello World gaan druk op die skerm? 410 00:19:27,660 --> 00:19:28,170 Vir ewig. 411 00:19:28,170 --> 00:19:31,980 'N oneindige aantal kere wat tot die battery sterf of 'n ander eksterne 412 00:19:31,980 --> 00:19:32,730 gebeurtenis. 413 00:19:32,730 --> 00:19:35,880 So dit is waarskynlik nie die beste program om te skryf, want as die gebruiker 414 00:19:35,880 --> 00:19:38,660 kan nooit ophou om jou program, is dit waarskynlik nie wat jy bedoel. 415 00:19:38,660 --> 00:19:41,070 >> Maar soms, programme moet het 'n oneindige lus. 416 00:19:41,070 --> 00:19:44,050 Byvoorbeeld, as jou rekenaar het 'n horlosie op dit, is dit seker sou wees 417 00:19:44,050 --> 00:19:48,130 lekker as jou horlosie dit hou opdatering homself vir ewig, al is dit een keer 'n 418 00:19:48,130 --> 00:19:50,500 tweede of een keer 'n minuut of iets soos dit. 419 00:19:50,500 --> 00:19:53,690 So selfs oneindige lusse doen het hul plek. 420 00:19:53,690 --> 00:19:54,360 >> Alle regte. 421 00:19:54,360 --> 00:19:55,190 Laastens, hierdie een. 422 00:19:55,190 --> 00:19:57,770 En hierdie een is 'n bietjie anders funksioneel, en ons sal terug te kom na 423 00:19:57,770 --> 00:19:59,460 dit waarskynlik in Pset 1. 424 00:19:59,460 --> 00:20:02,370 Maar daar is 'n ander soort van lus bekend as 'n doen terwyl loop. 425 00:20:02,370 --> 00:20:07,100 En die enigste verskil hier tussen 'n doen terwyl lus en, sê, 'n lus, 426 00:20:07,100 --> 00:20:11,120 is dat die toestand is gekontroleer nie voordat jy voer die kode nie, maar na 427 00:20:11,120 --> 00:20:12,080 voer jy die kode. 428 00:20:12,080 --> 00:20:15,380 So op die top vir die terwyl loop, terwyl die doen terwyl 429 00:20:15,380 --> 00:20:16,560 tjeks dit aan die onderkant. 430 00:20:16,560 --> 00:20:21,370 >> En dit beteken net dat die while lus sal tipies voer meer keer 431 00:20:21,370 --> 00:20:24,630 of minder kere as 'n rukkie loop? 432 00:20:24,630 --> 00:20:30,810 Potensieel meer keer, want 'n doen while lus is duidelik sê dit doen, 433 00:20:30,810 --> 00:20:34,600 slegs nadat wat wys jy kyk Indien die toestand binnekant van die 434 00:20:34,600 --> 00:20:35,980 hakies is waar. 435 00:20:35,980 --> 00:20:37,940 >> So ons sal sien dit weer waarskynlik in Pset 1. 436 00:20:37,940 --> 00:20:41,150 As jy ooit wil om iets te doen aan minste een keer en dan miskien 'n bietjie meer 437 00:20:41,150 --> 00:20:43,350 keer, is dit 'n goeie bou om te gebruik. 438 00:20:43,350 --> 00:20:46,970 Maar 'n rukkie loop, daarenteen, sal check die toestand eerste. 439 00:20:46,970 --> 00:20:50,660 En dit is dit vir sirkelroetes in C, moenie terwyl, terwyl, en vir loops. 440 00:20:50,660 --> 00:20:54,700 En weer, hulle kaart redelik goed terug te krap, behalwe hierdie een nie 441 00:20:54,700 --> 00:20:57,350 heeltemal dieselfde analoog in nuuts af. 442 00:20:57,350 --> 00:20:58,880 >> Wel, hoe oor die, nou, veranderlikes? 443 00:20:58,880 --> 00:21:02,600 So dit is hoe ek verklaar 'n veranderlike sintakties die ander dag. 444 00:21:02,600 --> 00:21:06,440 Ek het 'n int, wat ek beweer 'n heelgetal is. 445 00:21:06,440 --> 00:21:09,690 Ek het toe 'n veranderlike genoem toonbank, en dan 'n kommapunt. 446 00:21:09,690 --> 00:21:11,070 So wat is hierdie reël van die kode te doen? 447 00:21:11,070 --> 00:21:14,540 Dit is eenvoudig, verklaar 'n veranderlike - 448 00:21:14,540 --> 00:21:17,940 dit is, vra die rekenaar, gee my sommige geheue, gee my 'n paar stukkies - in 449 00:21:17,940 --> 00:21:19,450 wat ek kan stoor wat? 450 00:21:19,450 --> 00:21:20,300 'N int. 451 00:21:20,300 --> 00:21:23,570 En die kommapunt beteken net einde van die lyn van die kode. 452 00:21:23,570 --> 00:21:25,500 >> Nou, die tweede reël is waarskynlik mooi raaibare. 453 00:21:25,500 --> 00:21:29,710 Wat is counter = 0; doen? 454 00:21:29,710 --> 00:21:31,690 Dit is die toeken 0 teen te werk. 455 00:21:31,690 --> 00:21:33,470 En so het dit is die ander ding dit is 'n klein irriterende 456 00:21:33,470 --> 00:21:34,540 versus, sê, algebra. 457 00:21:34,540 --> 00:21:39,110 Terwyl dit in algebra, die gelyke teken beteken gelykes, hier in C, die gelyke 458 00:21:39,110 --> 00:21:40,470 teken beteken opdrag. 459 00:21:40,470 --> 00:21:45,380 So dit beteken sit wat op die regte in wat op die linkerkant. 460 00:21:45,380 --> 00:21:49,030 En ons sal nog 'n simbool sien, is gelyk aan gelyk, wanneer ons wil eintlik toets 461 00:21:49,030 --> 00:21:50,570 vir gehalte, 'n bietjie lastig. 462 00:21:50,570 --> 00:21:52,590 >> Maar dit is 'n bietjie ondoeltreffend. 463 00:21:52,590 --> 00:21:55,090 Dit is soort van irriterende dat ek 'n veranderlike te verklaar en 464 00:21:55,090 --> 00:21:56,110 dan gee dit 'n waarde. 465 00:21:56,110 --> 00:21:59,380 So C kan eintlik ons ​​vereenvoudig hierdie en doen dit net alles op een slag. 466 00:21:59,380 --> 00:22:01,330 Jy kan verklaar dat die veranderlike aan die linkerkant. 467 00:22:01,330 --> 00:22:04,590 Jy kan nog steeds nie die opdrag op die reg deur om die gelyke teken in 468 00:22:04,590 --> 00:22:05,030 die middel. 469 00:22:05,030 --> 00:22:08,740 So aan die einde van die dag, hierdie twee is ekwivalent, maar hierdie een, eerlik, 470 00:22:08,740 --> 00:22:11,840 waarskynlik 'n beter gewoonte in net omdat dit is 'n bietjie minder 471 00:22:11,840 --> 00:22:15,040 kode, dit is 'n bietjie makliker om te lees, en dit strenger net tot 472 00:22:15,040 --> 00:22:17,470 jou kode, om so te spreek. 473 00:22:17,470 --> 00:22:22,120 >> Enige vrae wat tot dusver op die loops, op veranderlikes, op die voorwaardes, op 474 00:22:22,120 --> 00:22:27,001 Boolse, hetsy tegnies of konseptueel? 475 00:22:27,001 --> 00:22:28,010 Alle regte. 476 00:22:28,010 --> 00:22:30,690 So nou is dit langs 'n mens kry 'n bietjie meer interessant. 477 00:22:30,690 --> 00:22:34,790 En dit is die voorbeeld wat ek opgesit laaste tyd wat net 'n skrapie soorte kaarte 478 00:22:34,790 --> 00:22:35,820 aan C. 479 00:22:35,820 --> 00:22:36,580 >> So 'n funksie. 480 00:22:36,580 --> 00:22:38,110 In leketaal, wat is 'n funksie? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Het om te wees vetter met jou antwoord. 483 00:22:44,350 --> 00:22:45,020 Wat is 'n funksie? 484 00:22:45,020 --> 00:22:46,320 >> STUDENT: Is iets. 485 00:22:46,320 --> 00:22:46,780 >> David Malan: Wat is dit? 486 00:22:46,780 --> 00:22:48,000 >> STUDENT: Is iets. 487 00:22:48,000 --> 00:22:48,710 >> David Malan: Is iets. 488 00:22:48,710 --> 00:22:49,000 OK. 489 00:22:49,000 --> 00:22:49,590 Ons sal daar begin. 490 00:22:49,590 --> 00:22:51,270 So 'n funksie doen iets. 491 00:22:51,270 --> 00:22:55,160 So dit is 'n stukkie van die kode wat wese geïmplementeer elders, wat 492 00:22:55,160 --> 00:22:56,620 wel iets doen. 493 00:22:56,620 --> 00:23:00,180 Nou, wat is interessant is oor 'n funksie is dat dit insette kan neem, 494 00:23:00,180 --> 00:23:02,710 En dit kan produseer uitset. 495 00:23:02,710 --> 00:23:05,090 En laat ons werklik te neem 'n blik op hierdie. 496 00:23:05,090 --> 00:23:09,030 >> So het die man agter die gordyn was opsetlik 'n oomblik gelede. 497 00:23:09,030 --> 00:23:10,320 Hier het ons 'n tafel. 498 00:23:10,320 --> 00:23:13,010 Maar veronderstel dat dit eintlik verteenwoordig 'n groot boks. 499 00:23:13,010 --> 00:23:14,940 So dit is 'n sogenaamde swart boks. 500 00:23:14,940 --> 00:23:19,800 En in die algemeen, in die ontwerp, in die rekenaar wetenskap, black boxes net verwys na 501 00:23:19,800 --> 00:23:22,510 stukke van die funksies wat iemand geïmplementeer het, en jy dit nie doen nie 502 00:23:22,510 --> 00:23:26,140 noodwendig weet of omgee hoe dit is geïmplementeer onder die kap. 503 00:23:26,140 --> 00:23:28,960 Jy moet net sorg dat hierdie swart boks, wat sal ons nou begin bel 'n 504 00:23:28,960 --> 00:23:30,730 funksie, doen iets. 505 00:23:30,730 --> 00:23:34,710 >> So, byvoorbeeld, as dit swart boks op die stadium hier verteenwoordig printf, 'n 506 00:23:34,710 --> 00:23:38,040 funksie, ek weet uit vorige voorbeelde wat neem printf een of meer 507 00:23:38,040 --> 00:23:40,910 argumente, en die eerste van dié argumente moet 'n string wees, soos 508 00:23:40,910 --> 00:23:44,780 "Hello, World." Wel, as ek die persoon die skryf van die program, en ek wil 509 00:23:44,780 --> 00:23:50,460 te gebruik printf, ek, byvoorbeeld, die Neem 'n stuk skoon papier hier en 'n 510 00:23:50,460 --> 00:23:55,060 swart merker en skryf oor dit - 511 00:23:55,060 --> 00:23:56,580 Ek gespel "wêreld" - 512 00:23:56,580 --> 00:23:59,560 H-E-L-L-O. 513 00:23:59,560 --> 00:24:04,220 >> So ek sal my swart merker neem en ek sal skryf, so groot en leesbaar as wat ek kan op 514 00:24:04,220 --> 00:24:07,260 hierdie stuk papier, "hallo, wêreld," En nou het ek beweer dat dit is my argument. 515 00:24:07,260 --> 00:24:09,740 Dit is 'n string verteenwoordig met 'n stuk wit papier. 516 00:24:09,740 --> 00:24:13,030 En my insette nou aan die funksie printf gaan wees nie. 517 00:24:13,030 --> 00:24:18,250 So ek printf roep, verby dat die argument as insette om dit te. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> En nou, ek weet nie hoe die persoon wat geskryf printf het dit jare gelede, maar 520 00:24:26,740 --> 00:24:31,110 Ek weet nie van sy dokumentasie wat sy doel in die lewe is om te druk wat ek 521 00:24:31,110 --> 00:24:34,410 verskaf aan dit as insette. 522 00:24:34,410 --> 00:24:40,630 En so, selfs al is die implementering van hierdie is buite my 523 00:24:40,630 --> 00:24:44,170 onder die kap, nou Ek sien, o, dit gedoen word. 524 00:24:44,170 --> 00:24:45,740 Dit is gedruk iets op die skerm. 525 00:24:45,740 --> 00:24:49,070 En nou die beheer van die program, indien daar was meer reëls van die kode, sou 526 00:24:49,070 --> 00:24:51,070 nou het julle teruggekeer na my. 527 00:24:51,070 --> 00:24:52,290 En so is die feit dat Colton - 528 00:24:52,290 --> 00:24:55,370 seën sy hart, wat hier wegkruip onder 'n tafel in die voorkant van almal van julle - 529 00:24:55,370 --> 00:24:59,530 is doelbewuste in dat ek nie weet nie en ek gee nie om hoe printf is 530 00:24:59,530 --> 00:25:00,100 geïmplementeer word. 531 00:25:00,100 --> 00:25:03,390 Ek weet net, weer, uit sy dokumentasie, wat dit beteken en hoe ek 532 00:25:03,390 --> 00:25:05,040 is veronderstel om dit te gebruik. 533 00:25:05,040 --> 00:25:09,140 >> Nou, onthou dat printf kon kry 'n bietjie meer gesofistikeerd. 534 00:25:09,140 --> 00:25:12,220 Weereens, ons is net te praat oor die ekwivalent van nuuts sê blok. 535 00:25:12,220 --> 00:25:14,230 Maar ek het dit ook die laaste keer. 536 00:25:14,230 --> 00:25:17,270 Ek wou my hallo program om 'n bietjie meer dinamiese en nie net hard 537 00:25:17,270 --> 00:25:19,740 kode wat iets soos "wêreld," en beslis nie moeilik om iets kode 538 00:25:19,740 --> 00:25:22,520 arbitrêre soos D-A-V-ek-D in die program. 539 00:25:22,520 --> 00:25:27,510 Ek wou die gebruiker vir sy of haar te vra naam, en dan iets te doen met 540 00:25:27,510 --> 00:25:29,720 dat string wat hulle verskaf. 541 00:25:29,720 --> 00:25:32,690 >> So daar is iets wat 'n bietjie anders hier. printf, 'n oomblik gelede 542 00:25:32,690 --> 00:25:35,860 het, inderdaad, iets te doen, maar dit het nie weer iets vir my. 543 00:25:35,860 --> 00:25:36,020 Reg? 544 00:25:36,020 --> 00:25:38,910 Colton het nie oorhandig my niks terug, geen stuk papier. 545 00:25:38,910 --> 00:25:40,320 Daar was net 'n newe-effek. 546 00:25:40,320 --> 00:25:44,510 My verskaffing van "Hello, World" as 'n argument te Colton het gelei tot die 547 00:25:44,510 --> 00:25:48,420 newe-effek van 'n woord, 'n paar woorde, verskyn op die skerm. 548 00:25:48,420 --> 00:25:51,350 >> getstring, al is, is 'n bietjie anders. getstring is ook 'n 549 00:25:51,350 --> 00:25:54,590 funksioneer, maar dit gee 'n bietjie waarde. 550 00:25:54,590 --> 00:25:56,370 Dit is nie net 'n estetiese newe-effek. 551 00:25:56,370 --> 00:26:00,230 Dit gee eintlik my, die persoon roep of die gebruik van die funksie, 552 00:26:00,230 --> 00:26:01,320 iets terug. 553 00:26:01,320 --> 00:26:05,740 So in hierdie geval, is getstring genoem met getstring oop 554 00:26:05,740 --> 00:26:07,510 paren, naby hakie. 555 00:26:07,510 --> 00:26:11,370 Maak getstring, dus neem enige argumente of insette? 556 00:26:11,370 --> 00:26:12,340 Nee, dit lyk nie. 557 00:26:12,340 --> 00:26:14,460 Sy doel in die lewe is net 'n string te kry. 558 00:26:14,460 --> 00:26:16,910 Dit moet nie meer detail as dit. 559 00:26:16,910 --> 00:26:20,430 So laat my gaan voort en voor te gee dat, weer, hierdie swart boks is nie printf, 560 00:26:20,430 --> 00:26:25,160 maar getstring, en laat my die persoon skryf van hierdie program, bel of gebruik 561 00:26:25,160 --> 00:26:29,720 getstring deur net skryf G-E-T-S-T-R-ek-N-G, oop paren, naby 562 00:26:29,720 --> 00:26:32,170 paren, getstring. 563 00:26:32,170 --> 00:26:36,920 >> Nou, ek het geen idee hoe die CS50 personeel geïmplementeer getstring, maar ek weet dat 564 00:26:36,920 --> 00:26:41,240 As ek lank genoeg wag, sal dit doen om sy ding onder die enjinkap, miskien met behulp 565 00:26:41,240 --> 00:26:44,940 sommige veranderlikes, miskien met behulp van 'n paar voorwaardes, miskien met behulp van 'n paar loops, 566 00:26:44,940 --> 00:26:48,170 miskien met behulp van 'n paar funksies, Miskien gebruik - 567 00:26:48,170 --> 00:26:52,290 net probeer om stalletjie - miskien gebruik 'n ander ontwikkeling funksies. 568 00:26:52,290 --> 00:26:55,350 Maar as ek lank genoeg wag - in werklikheid, in die rekenaar, dit gebeur 569 00:26:55,350 --> 00:26:56,270 super vinnig - 570 00:26:56,270 --> 00:26:59,910 As ek lank genoeg wag, hierdie funksie getstring gaan 'n string te kry 571 00:26:59,910 --> 00:27:04,060 van die gebruiker, wat vermoedelik tik dit op hul klawerbord, en 572 00:27:04,060 --> 00:27:08,090 Dan, wanneer jy getstring word gedoen om die karakters van die gebruiker 573 00:27:08,090 --> 00:27:14,080 en stoor dit in 'n string, wat funksie, getstring, gaan te hê 574 00:27:14,080 --> 00:27:17,990 gereed is vir my 'n uitset wat ek gaan haal by wyse van die 575 00:27:17,990 --> 00:27:19,470 opdrag operateur. 576 00:27:19,470 --> 00:27:25,390 >> En as Ek gegaan, inderdaad, in die uitset hier, Obosi het mildelik 577 00:27:25,390 --> 00:27:29,900 deelgeneem het, sonder om te weet dit in bevorder, deur die skryf van sy naam op hierdie 578 00:27:29,900 --> 00:27:33,100 veranderlike, wat verteenwoordig 'n string. 579 00:27:33,100 --> 00:27:35,640 Nou, die opdrag operateur beteken, selfs al sou voel 'n bietjie 580 00:27:35,640 --> 00:27:38,790 oorbodig, het ek eintlik nie nodig my eie kopie van hierdie te maak. 581 00:27:38,790 --> 00:27:40,700 Want op die linkerhand kant - Oeps! - 582 00:27:40,700 --> 00:27:45,760 sien dat ek eintlik het string naam op die linkerkant. 583 00:27:45,760 --> 00:27:48,280 So ek gaan ook te maak my eie kopie van hierdie. 584 00:27:48,280 --> 00:27:50,990 En dit is 'n bietjie van 'n wit leuen, want ons sal sien in 'n week of twee se 585 00:27:50,990 --> 00:27:54,100 tyd dat die snare nie eintlik wat hulle blyk te wees. 586 00:27:54,100 --> 00:27:56,700 >> Maar vir nou, hier is die terugkeer waarde. 587 00:27:56,700 --> 00:28:00,160 Hier is my eie kopie van dit na gebruik van die opdrag operateur. 588 00:28:00,160 --> 00:28:01,790 En nou, doen wat ek wil om volgende te doen? 589 00:28:01,790 --> 00:28:04,080 Ons het nou die tweede twee reëls van die kode. 590 00:28:04,080 --> 00:28:05,640 So ek wil nou printf noem. 591 00:28:05,640 --> 00:28:08,500 Kom ons maak nou dat die swart boks is weer terug na om 592 00:28:08,500 --> 00:28:10,210 printf en nie getstring. 593 00:28:10,210 --> 00:28:12,200 >> Printf hierdie tyd gaan neem hoeveel argumente? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 So kyk, dit is soos twee. 596 00:28:16,770 --> 00:28:18,860 Daar is twee kommas in daar, maar een van daardie kommas, is dit 597 00:28:18,860 --> 00:28:20,220 binnekant van die aanhalings. 598 00:28:20,220 --> 00:28:23,190 So het die eerste argument is letterlik gaan wees nie. 599 00:28:23,190 --> 00:28:31,850 H-E-L-L-O, komma, persent s, agteroorskuisstreep-n. 600 00:28:31,850 --> 00:28:36,560 En nou is ek die verskaffing van nie een argument, maar twee argumente te printf. 601 00:28:36,560 --> 00:28:39,530 >> En wat printf veronderstel is om te doen met hierdie twee insette nadat ek verby hulle in 602 00:28:39,530 --> 00:28:42,050 as argumente? 603 00:28:42,050 --> 00:28:45,360 Dit is veronderstel om die tweede te neem hulle, wat ek genoem naam, so die 604 00:28:45,360 --> 00:28:48,660 tweede stuk papier wat ek geskryf het uit 'n oomblik gelede genoem naam. 605 00:28:48,660 --> 00:28:53,550 Dit gaan prop van die waarde in van daardie veranderlike in die plekhouer, 606 00:28:53,550 --> 00:28:58,310 % S, sodat, weer, in 'n oomblik se tyd, sal ons sien 'n newe-effek van 607 00:28:58,310 --> 00:29:04,180 Toe roep printf, waardeur ons nou sien nie "hallo, wêreld," maar "hallo, 608 00:29:04,180 --> 00:29:04,710 Obosi. " 609 00:29:04,710 --> 00:29:08,730 >> So 'n groot applous aan beide ons vrywilligers, slegs een van wie het geweet 610 00:29:08,730 --> 00:29:12,010 dit sou gebeur. 611 00:29:12,010 --> 00:29:12,990 Alle regte. 612 00:29:12,990 --> 00:29:16,480 So, miskien, eenvoudig soos dit was, seker, as jy reeds vertroud 613 00:29:16,480 --> 00:29:20,190 met sulke, en hopelik sal jy nooit vergeet dat veral visuele van hoe 614 00:29:20,190 --> 00:29:21,220 funksies werk. 615 00:29:21,220 --> 00:29:23,000 >> So is daar meer as net getstring. 616 00:29:23,000 --> 00:29:26,020 Binnekant van die CS50 biblioteek, daar is 'n hele klomp van die funksies, wat almal 617 00:29:26,020 --> 00:29:29,510 word gekapitaliseer net om duidelik te maak dat ons het hierdie funksies. 618 00:29:29,510 --> 00:29:33,610 Tipies, in C, feitlik elke ander funksie wat jy sal gebruik, is onderkas. 619 00:29:33,610 --> 00:29:36,190 Maar ons doelbewus gebruik hoofletters net om duidelik te maak dat hierdie 620 00:29:36,190 --> 00:29:39,880 is opleiding wiele van die spesies wat ons sal gebruik vir 'n paar weke wat 621 00:29:39,880 --> 00:29:42,890 vereenvoudig die proses om toevoer van die gebruiker. 622 00:29:42,890 --> 00:29:46,740 >> Die CS50 biblioteek doen niks dat julle kan dit nie doen deur 623 00:29:46,740 --> 00:29:50,230 net die gebruik van C-kode van 'n oldschool handboek. 624 00:29:50,230 --> 00:29:53,310 Maar, weer, ons gebruik dit as opleiding wiele van soorte vir net 'n paar 625 00:29:53,310 --> 00:29:57,250 weke, sodat ons kan ontslae te raak van die kompleksiteit wat jy binnekort sal verstaan 626 00:29:57,250 --> 00:30:00,460 jouself om iets te doen as relatief maklik as om 627 00:30:00,460 --> 00:30:02,080 insette van 'n gebruiker. 628 00:30:02,080 --> 00:30:05,540 >> So weet dat jy toegang sal hê te getChar, GetDouble - 629 00:30:05,540 --> 00:30:06,050 verdubbel. 630 00:30:06,050 --> 00:30:07,050 What's - en dan GetFloat. 631 00:30:07,050 --> 00:30:07,600 Wat is 'n float? 632 00:30:07,600 --> 00:30:09,382 Kom ons begin daar. 633 00:30:09,382 --> 00:30:10,600 >> STUDENT: [onhoorbaar]. 634 00:30:10,600 --> 00:30:10,790 >> David Malan: Ja. 635 00:30:10,790 --> 00:30:12,120 Dit is 'n getal met 'n desimale punt. 636 00:30:12,120 --> 00:30:15,930 So terwyl 'int 'n heelgetal is, wat is net 'n nommer met 0 tot 9, 637 00:30:15,930 --> 00:30:18,940 'n aantal herhalings daarvan, 'n float is iets 638 00:30:18,940 --> 00:30:20,100 met 'n desimale punt. 639 00:30:20,100 --> 00:30:26,090 En 'n dubbel, intussen, is ook 'n getal met 'n desimale punt nie, maar meer 640 00:30:26,090 --> 00:30:28,160 getalle na die desimale punt, moontlik. 641 00:30:28,160 --> 00:30:30,040 >> So ons sal terug te kry om dit voor lank. 642 00:30:30,040 --> 00:30:34,560 Maar tipies, elk van hierdie tipes data, elk van hierdie tipes veranderlikes 643 00:30:34,560 --> 00:30:39,380 dat 'n biblioteek, net soos ons s'n kan terugkeer na jy, die gebruik van verskillende getalle stukkies 644 00:30:39,380 --> 00:30:40,290 stoor inligting. 645 00:30:40,290 --> 00:30:43,910 Tipies, 'n Char, wat beteken net een karakter, gebruik 8 stukkies. 646 00:30:43,910 --> 00:30:47,490 En dit is eintlik in ooreenstemming met ons byte van vrywilligers laaste week wat 647 00:30:47,490 --> 00:30:50,410 vorendag gekom en verteenwoordig een ASCII karakter op 'n tyd. 648 00:30:50,410 --> 00:30:51,850 So 'n Char is 8 stukkies. 649 00:30:51,850 --> 00:30:54,430 >> 'N float gebeur om te wees 32 stukkies, tipies. 650 00:30:54,430 --> 00:30:59,230 En 'n dubbel, as jy kan raai, is eintlik 64 stukkies, wat net meer, 651 00:30:59,230 --> 00:31:01,360 wat beteken dat jy kan 'n groter getalle of meer presisie. 652 00:31:01,360 --> 00:31:03,000 Maar weereens, meer op dat 'n ander tyd. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, intussen, al is dom genoem word, is regtig net 'n 654 00:31:06,550 --> 00:31:10,770 integer dit is twee keer so groot, twee keer so lank, moontlik, as 'n gereelde 655 00:31:10,770 --> 00:31:12,940 integer, 64 stukkies in plaas van 32. 656 00:31:12,940 --> 00:31:14,560 En GetString ons het al met behulp van. 657 00:31:14,560 --> 00:31:18,870 >> Maar dit blyk, in die CS50 biblioteek, wat geïmplementeer word, soos ons sal sien, in 658 00:31:18,870 --> 00:31:23,560 die vorm van die twee lêers, een van die wat genoem cs50.h, het twee ander 659 00:31:23,560 --> 00:31:24,770 datatipes in dit. 660 00:31:24,770 --> 00:31:29,700 Boolse bestaan ​​nie in C. Jy kan boots hulle deur net die gebruik van 0'e en 1'e 661 00:31:29,700 --> 00:31:30,850 in jou programme. 662 00:31:30,850 --> 00:31:35,500 Maar ons in die CS50 biblioteek geskep die simbole "ware" en "valse" 663 00:31:35,500 --> 00:31:38,580 1 en 0 te stel, sodat jy dit nie doen nie hard kode wat iets 664 00:31:38,580 --> 00:31:39,810 letterlik soos 1 en 0. 665 00:31:39,810 --> 00:31:40,980 Maar ons sal sien die weer. 666 00:31:40,980 --> 00:31:42,330 >> String, ook nie bestaan ​​nie. 667 00:31:42,330 --> 00:31:44,520 En dit is hoekom ek genoem het is dit 'n bietjie van 'n wit leuen vir nou. 668 00:31:44,520 --> 00:31:46,660 Maar ons sal terug skil wat laag voor lank. 669 00:31:46,660 --> 00:31:49,540 Maar vir nou, 'n string is 'n volgorde van die karakters. 670 00:31:49,540 --> 00:31:51,790 >> Intussen, in C, het jy inderdaad verskillende data tipes. 671 00:31:51,790 --> 00:31:53,200 Let op dit is klein. 672 00:31:53,200 --> 00:31:56,960 So het die funksies wat jy sien 'n oomblik gelede funksies is geskryf deur CS50 wat 673 00:31:56,960 --> 00:32:02,310 sal terugkeer na jou 'n waarde wat val in een van hierdie kategorieë. 674 00:32:02,310 --> 00:32:06,730 >> 'N Paar oneerlik velle net te plant die saad hier. printf nie net 675 00:32:06,730 --> 00:32:08,600 neem% s as plekhouers. 676 00:32:08,600 --> 00:32:13,490 Dit neem% d vir desimale heelgetalle, of% i sal so goed werk. 677 00:32:13,490 --> 00:32:19,450 % F dryf punt waardes. % C is vir 'n kar, as jy wil net nóg 678 00:32:19,450 --> 00:32:23,510 karakter in 'n vooraf opgemaakte string soos wat ons doen, kan jy gebruik% c. 679 00:32:23,510 --> 00:32:28,490 >> En dan, 'n bietjie lastig,% LLD is vir 'n lang, lang desimale getal, 680 00:32:28,490 --> 00:32:31,050 Dit beteken net as jy werklik 'n groot getal en jy gebruik om iets 681 00:32:31,050 --> 00:32:35,450 bekend as 'n lang lang, wat ons sal kom terug in 'n pset, kan jy% LLD gebruik om te 682 00:32:35,450 --> 00:32:40,700 vertel printf, plug in 'n baie groot integer hier deur middel van sy tweede of 683 00:32:40,700 --> 00:32:41,830 'n ander argument. 684 00:32:41,830 --> 00:32:45,700 >> En laastens, ek het belowe dat daar is 'n paar ander ontsnap 685 00:32:45,700 --> 00:32:47,670 rye wat printf ondersteun. 686 00:32:47,670 --> 00:32:49,160 Ons het gesien hoe agteroorskuisstreep-n. 687 00:32:49,160 --> 00:32:50,510 Agteroorskuisstreep-r jy kan sien. 688 00:32:50,510 --> 00:32:51,780 Dit is soort van 'n ou-skool ding. 689 00:32:51,780 --> 00:32:55,920 As jy al ooit 'n ware tikmasjien jaar gelede en jy getrek op die crank 690 00:32:55,920 --> 00:32:59,810 wat nie net gedraai om die wiel te beweeg die besetting, het dit ook verskuif die 691 00:32:59,810 --> 00:33:03,730 hele ding al die pad terug na links, wel, agteroorskuisstreep-r net 692 00:33:03,730 --> 00:33:06,480 wese beweeg jou wyser terug aan die begin van die lyn 693 00:33:06,480 --> 00:33:07,830 sonder om te beweeg dit af. 694 00:33:07,830 --> 00:33:09,780 Maar weereens, meer op daardie, miskien, in die toekoms. 695 00:33:09,780 --> 00:33:13,670 >> Agteroorskuisstreep-quote, agteroorskuisstreep-dubbele quote, agteroorskuisstreep-agteroorskuisstreep is die 696 00:33:13,670 --> 00:33:16,600 oplossing vir die klein bietjie raaisel Ek verwys na vroeër. 697 00:33:16,600 --> 00:33:18,920 En agteroorskuisstreep-0 is eintlik baie interessant. 698 00:33:18,920 --> 00:33:21,470 Maar ons sal terug te kom na wat kort voor lank. 699 00:33:21,470 --> 00:33:25,640 >> So laat my gaan, nou, die CS50 apparaat, en laat ons eintlik 'n 700 00:33:25,640 --> 00:33:28,930 vinnige opwarm met een van die voorbeelde ons het al, en dan beweeg op na 701 00:33:28,930 --> 00:33:31,160 iets wat 'n bietjie meer ingewikkeld. 702 00:33:31,160 --> 00:33:34,980 So as ek open my program genoem gedit - 703 00:33:34,980 --> 00:33:36,840 dit is my grafiese redakteur. 704 00:33:36,840 --> 00:33:38,460 En ek kan dit doen - 705 00:33:38,460 --> 00:33:39,820 Laat my naby die venster is daar - 706 00:33:39,820 --> 00:33:42,720 deur middel van die ikoon hier, gedit, in die onderste linker 707 00:33:42,720 --> 00:33:44,170 hoek langs die spyskaart. 708 00:33:44,170 --> 00:33:48,670 >> Ek gaan om voort te gaan en te bevorder, en behalwe hierdie voorbeeld in, sê, John 709 00:33:48,670 --> 00:33:49,660 Harvard se gids. 710 00:33:49,660 --> 00:33:52,690 John Harvard se gids is net sy huis gids waar al sy lêers lewe 711 00:33:52,690 --> 00:33:53,340 by verstek. 712 00:33:53,340 --> 00:33:58,410 En ek gaan om dit te red 'n lêer genaamd hallo-0.C. 713 00:33:58,410 --> 00:34:01,260 En ek het gekies om hierdie naam net so is dit in lyn met die monster kode op die 714 00:34:01,260 --> 00:34:04,210 Natuurlik se webwerf en in die YouTube video's aanlyn. 715 00:34:04,210 --> 00:34:06,320 >> So nou gaan ek begin om te skryf my eerste program. 716 00:34:06,320 --> 00:34:08,469 Laat my zoom in vir leesbaarheid. 717 00:34:08,469 --> 00:34:12,760 En ek gaan om voort te gaan en te sê int belangrikste leemte, wat net soos wat 718 00:34:12,760 --> 00:34:14,900 geel legkaart stuk wat begin 'n program. 719 00:34:14,900 --> 00:34:18,290 Ek het gekry in die gewoonte om oor die jaar van die opening van my krullerige stut, dan 720 00:34:18,290 --> 00:34:22,000 ook te sluit en dan terug te gaan na waar ek wil my kode te sit, net 721 00:34:22,000 --> 00:34:24,630 want dit help my om alles gebalanseerde, veral as my 722 00:34:24,630 --> 00:34:25,880 program kry lank. 723 00:34:25,880 --> 00:34:29,239 >> En nou, hier, ek gaan om voort te gaan en sê: printf, haal unquote, 724 00:34:29,239 --> 00:34:34,330 Hello World, agteroorskuisstreep-n, naby quote, naby hakies, kommapunt. 725 00:34:34,330 --> 00:34:38,100 Dus is ek net herhaal alles wat ons het is die neem as vanselfsprekend tot dusver. 726 00:34:38,100 --> 00:34:39,270 Nou gaan ek om te vergroot. 727 00:34:39,270 --> 00:34:43,030 >> En dit terminale venster af hier, wat Ek is toegelaat om te doen in hierdie swart 728 00:34:43,030 --> 00:34:44,389 en wit venster? 729 00:34:44,389 --> 00:34:46,977 Wat kan ek nog doen? 730 00:34:46,977 --> 00:34:49,770 So dit is waar ek loop opdragte en waar ek kan saamstel dinge. 731 00:34:49,770 --> 00:34:50,620 En ek gaan om dit eenvoudig te hou. 732 00:34:50,620 --> 00:34:52,780 Ek gaan 'n program om te gebruik Maak genoem, wat nie 733 00:34:52,780 --> 00:34:54,020 tegnies 'n vertaler. 734 00:34:54,020 --> 00:34:56,360 Die samesteller se naam klang, maar Ons kom terug na wat in 'n 735 00:34:56,360 --> 00:34:57,190 week of twee se tyd. 736 00:34:57,190 --> 00:35:03,410 >> Vir nou, is ek net gaan om te tik maak hallo-0, maar dié van julle wat 737 00:35:03,410 --> 00:35:07,050 vergelyk in jou gedagtes wat ek nou net getik wat ek moet getik het nie, kan 738 00:35:07,050 --> 00:35:10,180 reeds weet wat ek gedoen het iets verkeerd hier. 739 00:35:10,180 --> 00:35:12,160 Nou, daar is duidelik 'n paar foute. 740 00:35:12,160 --> 00:35:16,742 Voordat ek nog kyk na wat hulle is, enige gedagtes oor wat ek verkeerd gedoen het nie? 741 00:35:16,742 --> 00:35:18,590 >> STUDENTE: [INTERPOSING Voices]. 742 00:35:18,590 --> 00:35:18,840 >> David Malan: Ja. 743 00:35:18,840 --> 00:35:20,640 Ek mis die biblioteek se kop lêer. 744 00:35:20,640 --> 00:35:24,240 Enige van hierdie h lêers. Genoem kop lêers, en hulle het gesamentlik 745 00:35:24,240 --> 00:35:25,680 behoort aan dinge genoem biblioteke. 746 00:35:25,680 --> 00:35:28,030 Biblioteke is net stukke van die kode wat ander mense geskryf het. 747 00:35:28,030 --> 00:35:32,140 So het die standaard [? i] biblioteek? is 'n versameling van lêers met kode 748 00:35:32,140 --> 00:35:33,330 wat ander mense geskryf het. 749 00:35:33,330 --> 00:35:34,820 >> So ek mis dit. 750 00:35:34,820 --> 00:35:36,520 So hoekom kry ek 'n fout? 751 00:35:36,520 --> 00:35:40,840 Wel, laat my blaai terug tot in die my terminale venster hier. 752 00:35:40,840 --> 00:35:44,310 En ongelukkig, in C, as in 'n baie programmeertale, veral 753 00:35:44,310 --> 00:35:47,830 As dit is alles nuut vir jou, die fout boodskappe is presies nie, maar dit is ook 754 00:35:47,830 --> 00:35:48,620 baie kripties. 755 00:35:48,620 --> 00:35:51,720 En die fout hier, in rooi, is "Onvoorwaardelik verklaar biblioteek funksie 756 00:35:51,720 --> 00:35:57,660 printf met tipe, "en dan is dit boekrolle na die volgende lyn, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "Dit het net 'n oorweldigende vinnig. 758 00:36:00,220 --> 00:36:04,420 >> Maar wat jy moet begin om dit te doen, indien weer nuwe aan al hierdie, is net te 759 00:36:04,420 --> 00:36:06,010 begin om te kyk vir sleutelwoorde. 760 00:36:06,010 --> 00:36:08,770 Dit is duidelik dat, kan ek nie verstaan ​​nie die helfte van die woorde wat ek net nog nie sien nie. 761 00:36:08,770 --> 00:36:10,140 Jy sal, al is, in 'n week se tyd. 762 00:36:10,140 --> 00:36:11,230 Maar ek sien printf. 763 00:36:11,230 --> 00:36:14,310 En dit moet begin, voor lank, te draf jou geheue, alles reg, printf. 764 00:36:14,310 --> 00:36:15,210 Iets is verkeerd met printf. 765 00:36:15,210 --> 00:36:16,580 Het ek spel dit verkeerd? 766 00:36:16,580 --> 00:36:18,130 Nee, beteken dit nie lyk soos - oh. 767 00:36:18,130 --> 00:36:21,350 Ek kan dit nie gebruik nie, tensy ek leer die samesteller dat dit bestaan. 768 00:36:21,350 --> 00:36:25,220 En so, weer, gaan saam met jou instink, selfs as jy nie eintlik nie verstaan 769 00:36:25,220 --> 00:36:26,510 die werklike fout boodskappe. 770 00:36:26,510 --> 00:36:30,240 >> En inderdaad, die oplossing hier is om net sluit dit aan die bokant van die lêer 771 00:36:30,240 --> 00:36:34,340 soos daardie, resaving my lêer met Control-S of die File menu. 772 00:36:34,340 --> 00:36:36,730 En as ek nou terug gaan hier, Ek gaan om dit te verwyder. 773 00:36:36,730 --> 00:36:39,150 Control-L is net 'n mooi manier die skerm skoon te maak. 774 00:36:39,150 --> 00:36:44,870 En dan gaan ek te tik "maak hallo 0 "Gee, en nou is ek steeds 'n 775 00:36:44,870 --> 00:36:47,710 kriptiese volgorde van simbole, maar Ons kom terug na daardie. 776 00:36:47,710 --> 00:36:49,230 Dit is wat maak vir jou doen. 777 00:36:49,230 --> 00:36:52,590 Dit is die outomatisering van die proses van die neem 'n redelik irriterende opdrag wat 778 00:36:52,590 --> 00:36:54,050 Klang, die werklike samesteller. 779 00:36:54,050 --> 00:36:57,460 Maar die feit dat ek het geen foute beteken dat hierdie ding moet werk. 780 00:36:57,460 --> 00:37:00,630 >> Dus is ek nou gaan doen - laat my zoom in weer - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 Gee, en inderdaad, ek sien "Hello, World." So laat ons nou verbeter 782 00:37:07,070 --> 00:37:12,105 dit ooit so effens net na te boots die stappe wat ons bedoel is. 783 00:37:12,105 --> 00:37:15,370 Ek gaan om dit te hernoem met Save As om hello1.c. 784 00:37:15,370 --> 00:37:20,300 En nou gaan ek 'n veranderlike te verklaar genoem naam, so string naam, 785 00:37:20,300 --> 00:37:23,420 en ek gaan om te sit in dit die waarde van quote-unquote 786 00:37:23,420 --> 00:37:27,030 D-'n-V-ek-D close-quote kommapunt. 787 00:37:27,030 --> 00:37:31,150 En nou gaan ek "wêreld" te vervang met wat plekhouer vir 'n string? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> En nou, hoeveel argumente behoort printf neem hierdie tyd? 790 00:37:35,040 --> 00:37:35,700 So twee. 791 00:37:35,700 --> 00:37:37,090 So ek gaan buite die aanhalingstekens. 792 00:37:37,090 --> 00:37:39,330 Ek tik "naam" na 'n komma. 793 00:37:39,330 --> 00:37:41,550 Maar ek het iets gedoen anders fout hierdie tyd. 794 00:37:41,550 --> 00:37:43,940 Maar laat ons veronderstel dat ek nie besef dat nog. 795 00:37:43,940 --> 00:37:44,910 Laat my gaan hier. 796 00:37:44,910 --> 00:37:48,850 >> En kennis, ook, ek kry 'n bietjie verveeld tik al die "hallo 0 maak" 797 00:37:48,850 --> 00:37:50,180 tyd, "maak" en al hierdie dinge. 798 00:37:50,180 --> 00:37:53,270 So, dit blyk, in Linus jy kan dikwels druk op die pyl op jou 799 00:37:53,270 --> 00:37:56,850 klawerbord, en jy kan eintlik blaai deur al die gebooie wat ek 800 00:37:56,850 --> 00:37:58,830 uitgevoer vorige net nou. 801 00:37:58,830 --> 00:38:02,040 So as ek dit doen, Up, Up, daar is maak hallo 0. 802 00:38:02,040 --> 00:38:02,610 Ek wil nie hê dat. 803 00:38:02,610 --> 00:38:05,450 Ek wil net dat om te verander na hallo 1 hierdie tyd, Tik. 804 00:38:05,450 --> 00:38:07,620 Uiteindelik, wat sal red jy 'n geruime tyd. 805 00:38:07,620 --> 00:38:08,150 >> Alle regte. 806 00:38:08,150 --> 00:38:09,520 Ongelukkig is daar 'n fout is. 807 00:38:09,520 --> 00:38:10,980 So laat my blaai up. 808 00:38:10,980 --> 00:38:13,120 Dit lyk asof ek werklik afgeslag hierdie program. 809 00:38:13,120 --> 00:38:16,530 Ek bedoel, my God, dit is twee reëls van die kode, 10 en sy lyne van foute. 810 00:38:16,530 --> 00:38:18,800 Maar kyk na die top een eerste. 811 00:38:18,800 --> 00:38:21,640 Gebruik van swart identifikasie string. 812 00:38:21,640 --> 00:38:23,270 Het ek bedoel standaard i n? 813 00:38:23,270 --> 00:38:23,930 Nee, ek het nie. 814 00:38:23,930 --> 00:38:24,940 Ek bedoel string. 815 00:38:24,940 --> 00:38:29,390 >> Maar waar is die string veranderlike tipe verklaar, DD en ons sê? 816 00:38:29,390 --> 00:38:30,730 So is dit in die CS50 die biblioteek. 817 00:38:30,730 --> 00:38:33,740 Daarom is dit nie voldoende wees, in hierdie eerste paar weke, net om te gebruik 818 00:38:33,740 --> 00:38:34,860 wat C vir ons gee. 819 00:38:34,860 --> 00:38:38,120 Ek gaan ook om te gaan op hierheen, en Ek kon sit dit bo of onder, maar ek sal 820 00:38:38,120 --> 00:38:40,340 hou dit net alfabetiese om te hou dinge ordelik. 821 00:38:40,340 --> 00:38:43,470 Ek gaan cs50.h te sluit, wat vooraf geïnstalleer vir 822 00:38:43,470 --> 00:38:44,900 jy op die CS50 toestel. 823 00:38:44,900 --> 00:38:47,640 En dit is open source, so selfs mense op die internet kan gebruik om dit op hul 824 00:38:47,640 --> 00:38:48,450 eie rekenaars. 825 00:38:48,450 --> 00:38:50,700 Maar dit kom met die CS50 toestel. 826 00:38:50,700 --> 00:38:55,320 >> So nou laat my terug te gaan en heropstel dit met hallo 1 maak. 827 00:38:55,320 --> 00:38:55,710 Damn dit. 828 00:38:55,710 --> 00:38:57,240 Nog 'n fout. 829 00:38:57,240 --> 00:38:59,370 Laat my blaai tot by die eerste, al is. 830 00:38:59,370 --> 00:39:00,630 Hierdie een is 'n bietjie kompleks. 831 00:39:00,630 --> 00:39:03,830 Multi-karakter karakter konstant. 832 00:39:03,830 --> 00:39:04,890 Dit is nie om my te help. 833 00:39:04,890 --> 00:39:08,220 Maar kennisgewing, klang is ten minste 'n bietjie bietjie ordentlike, waardeur met 'n bietjie 834 00:39:08,220 --> 00:39:11,890 groen pyltjie simbool is, is dit gesê hier is waar ek geskroef. 835 00:39:11,890 --> 00:39:16,160 Hoekom is dit wys, met daardie klein groen pyl, na die enkele aanhaling volgende 836 00:39:16,160 --> 00:39:18,290 om my naam? 837 00:39:18,290 --> 00:39:20,880 >> So dit is een van die dinge wat jy net gewoond te raak, veral as jy het al 838 00:39:20,880 --> 00:39:23,980 programmering in Python, of JavaScript, of ander tale waar hierdie detail 839 00:39:23,980 --> 00:39:24,560 maak nie saak nie. 840 00:39:24,560 --> 00:39:25,740 In C, dit maak nie saak. 841 00:39:25,740 --> 00:39:29,520 As jy waarby 'n string, wat 'n reeks van 0 of meer karakters, 842 00:39:29,520 --> 00:39:32,280 jy eintlik moet gebruik dubbel aanhalingstekens. 843 00:39:32,280 --> 00:39:36,670 So het ek werklik nodig het om dit terug te verander kwotasie te maak, sluit kwotasie, met 844 00:39:36,670 --> 00:39:37,800 dubbele aanhalingstekens. 845 00:39:37,800 --> 00:39:41,610 Aanhalingstekens doen het hul plek, maar slegs wanneer jy die gebruik van individuele 846 00:39:41,610 --> 00:39:44,100 karakters, maar meer oor dit 'n ander tyd. 847 00:39:44,100 --> 00:39:46,550 Vir nou, die dubbele aanhalingstekens nodig is. 848 00:39:46,550 --> 00:39:50,460 >> So nou, laat my terug te gaan na my terminale venster, hallo 1 maak. 849 00:39:50,460 --> 00:39:51,450 En wie se vertroue? 850 00:39:51,450 --> 00:39:53,800 Is hierdie program gaan nou reg te stel? 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 So drie van ons dink nie. 854 00:39:59,780 --> 00:40:00,280 Alle regte. 855 00:40:00,280 --> 00:40:01,190 Betree. 856 00:40:01,190 --> 00:40:02,440 En dit eintlik gedoen het. 857 00:40:02,440 --> 00:40:05,130 Dus is daar geen foute hierdie keer, selfs alhoewel hierdie program gekry is 'n bietjie 858 00:40:05,130 --> 00:40:05,840 meer kompleks. 859 00:40:05,840 --> 00:40:10,110 As ek nou dot streep hallo 1 doen, Tik, dit gaan om te sê "hallo, David." 860 00:40:10,110 --> 00:40:11,750 >> Maar laat ons nie die derde iterasie van hierdie, waar die 861 00:40:11,750 --> 00:40:13,380 program is werklik dinamiese. 862 00:40:13,380 --> 00:40:16,770 Laat my gaan voort en verander nie die lêer naam, net vir konsekwentheid met die 863 00:40:16,770 --> 00:40:20,410 lêers wat jy beskikbaar aan u daarna aanlyn. 864 00:40:20,410 --> 00:40:21,620 Betree. 865 00:40:21,620 --> 00:40:25,510 En nou is ek gaan in en gaan nie stoor "David" hard gekodeer hier. 866 00:40:25,510 --> 00:40:28,826 Wat kan ek doen om baie eenvoudig verbeter hierdie program? 867 00:40:28,826 --> 00:40:30,520 >> Ek kon noem getstring. 868 00:40:30,520 --> 00:40:33,240 Dit mag dalk 'n bietjie nie-duidelik wat is om te gebeur, so ek gaan 869 00:40:33,240 --> 00:40:38,470 om werklik te voeg 'n ander lyn, printf, en sê naam, kolon, naby quote, net 870 00:40:38,470 --> 00:40:40,790 gee die gebruiker 'n vinnige op die skerm. 871 00:40:40,790 --> 00:40:42,980 En nou gaan ek hier gaan, en ek is gaan my kortpad te gebruik. 872 00:40:42,980 --> 00:40:47,680 Ek gaan om te gaan op, op, en wysig hallo hallo 1 tot 2, Tik. 873 00:40:47,680 --> 00:40:49,260 En gelukkig, ek maak vordering. 874 00:40:49,260 --> 00:40:52,720 >> En nou gaan ek om te gaan dot streep hallo en 875 00:40:52,720 --> 00:40:54,690 verander tot 2, Tik. 876 00:40:54,690 --> 00:40:55,650 En nou is my program - 877 00:40:55,650 --> 00:40:57,700 Ek sal vergroot - is om 'n bietjie mooier. 878 00:40:57,700 --> 00:41:02,190 Naam gaan wees, kom ons sê Rob hierdie tyd, Tik, hallo, Rob. 879 00:41:02,190 --> 00:41:03,260 Ons kan dit weer doen. 880 00:41:03,260 --> 00:41:05,360 Naam, Lauren, Tik. 881 00:41:05,360 --> 00:41:07,820 Naam, Joseph, Tik. 882 00:41:07,820 --> 00:41:11,596 Naam, laat ons probeer om te wees moeilik, Tik. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 Dit is nie regtig 'n fout. 885 00:41:14,680 --> 00:41:16,090 So dit is net 'n bietjie lelik. 886 00:41:16,090 --> 00:41:18,640 So miskien kan ons los hierdie in die toekoms, nie nou nie. 887 00:41:18,640 --> 00:41:20,840 >> Maar hoe sou jy instinktief gaan aanspreek 888 00:41:20,840 --> 00:41:21,990 daardie besondere uitdaging? 889 00:41:21,990 --> 00:41:23,710 Dit lyk net dom. 890 00:41:23,710 --> 00:41:27,320 Hoe vermy jy dinge soek dom? 891 00:41:27,320 --> 00:41:29,890 So ons kon doen nie, OK, ek het 'n paar van die dinge wat 'n voorwaarde en 'n lus. 892 00:41:29,890 --> 00:41:33,340 Ons kan gebruik, een, 'n toestand is, om seker te maak Wat is die lengte van die string 893 00:41:33,340 --> 00:41:34,190 die gebruiker aan ons gegee het? 894 00:41:34,190 --> 00:41:37,100 En as dit is 0, dit is net quote unquote, hulle het net druk Enter, dan 895 00:41:37,100 --> 00:41:38,930 miskien moet ek gil op hulle en gevra hulle weer. 896 00:41:38,930 --> 00:41:39,970 Maar hoe vinnig 'n moet hulle weer? 897 00:41:39,970 --> 00:41:44,230 Wel, ek het ook gehoor lus, en ek kon doen dit weer en weer en weer 898 00:41:44,230 --> 00:41:47,010 waarna die gebruiker vir dieselfde ding. 899 00:41:47,010 --> 00:41:48,880 >> Wel, laat ons doen een ander voorbeeld met behulp van 'n ander 900 00:41:48,880 --> 00:41:50,620 funksie in die CS50 biblioteek. 901 00:41:50,620 --> 00:41:52,330 Laat my naby hierdie lêer. 902 00:41:52,330 --> 00:41:53,510 Laat my 'n nuwe een. 903 00:41:53,510 --> 00:41:58,510 En ek sal dit noem adder.c, net omdat dit is maklik om 'n eenvoudige rekenkunde te doen, 904 00:41:58,510 --> 00:42:00,890 Selfs al is dit heeltemal sal wees underwhelming met wat jy kan doen 905 00:42:00,890 --> 00:42:02,250 met 'n moderne rekenaar. 906 00:42:02,250 --> 00:42:03,750 >> Maar laat my gaan voort en nou - 907 00:42:03,750 --> 00:42:10,680 Ek het my les geleer laaste keer - sluit cs50.h, sluit stdio.h, int 908 00:42:10,680 --> 00:42:14,170 belangrikste leemte wat, vir nou, ek sal net neem op 'n blinde geloof nie, maar ons sal aanneem 909 00:42:14,170 --> 00:42:16,380 wat sal verstaan ​​wat wat beteken dat kort voor lank. 910 00:42:16,380 --> 00:42:21,030 En ek gaan om iets te sê soos "gee my 'n int." 911 00:42:21,030 --> 00:42:22,140 >> En nou, hoe kry ek 'n int? 912 00:42:22,140 --> 00:42:26,820 Ek wil uiteindelik verklaar 'n veranderlike genoem x van tipe int en 913 00:42:26,820 --> 00:42:29,240 stoor in dit 'n heelgetal van die gebruiker. 914 00:42:29,240 --> 00:42:29,970 So dit was 'n mondvol. 915 00:42:29,970 --> 00:42:35,680 Maar as iemand wil hê om voor te stel hoe verklaar ek 'n heelgetal genoem x? 916 00:42:35,680 --> 00:42:36,310 Int x. 917 00:42:36,310 --> 00:42:37,430 >> So dit is regtig so eenvoudig nie. 918 00:42:37,430 --> 00:42:38,240 Gee my 'n int. 919 00:42:38,240 --> 00:42:39,070 Noem dit x. 920 00:42:39,070 --> 00:42:40,580 Nou gebruik ek die opdrag operateur. 921 00:42:40,580 --> 00:42:43,400 En hoe slaan ek uit die het 'n waarde van die gebruiker? 922 00:42:43,400 --> 00:42:47,310 Ek wil nie getstring te roep, natuurlik, maar eerder getint. 923 00:42:47,310 --> 00:42:49,060 Enige argumente? 924 00:42:49,060 --> 00:42:49,350 No 925 00:42:49,350 --> 00:42:51,870 So dit is oop paren, naby hakie onmiddellik, en dan 'n 926 00:42:51,870 --> 00:42:53,440 kommapunt eindig die lyn. 927 00:42:53,440 --> 00:42:54,930 >> Nou kan ek dit weer doen. 928 00:42:54,930 --> 00:42:57,070 Gee my 'n ander int. 929 00:42:57,070 --> 00:43:01,850 Hierdie keer het ek sal doen int, laat noem dit y, is gelyk aan getint. 930 00:43:01,850 --> 00:43:05,060 En nou, laat my iets super-eenvoudige soos 'n paar wiskunde. 931 00:43:05,060 --> 00:43:14,340 So printf, die som van% d is die plekhouer vir 'n int. 932 00:43:14,340 --> 00:43:20,030 En% d, tydperk, agteroorskuisstreep-n. 933 00:43:20,030 --> 00:43:20,360 >> Alle regte. 934 00:43:20,360 --> 00:43:21,670 So dis nie eintlik wiskunde. 935 00:43:21,670 --> 00:43:25,500 Maar as ek wil hê dat die bedrag van hierdie om te sê waarde plus hierdie waarde gelyk aan hierdie 936 00:43:25,500 --> 00:43:29,320 ander waarde, hoeveel argumente in totaal moet ek printf word om te gee, 937 00:43:29,320 --> 00:43:30,520 uiteindelik? 938 00:43:30,520 --> 00:43:31,420 So vier, reg? 939 00:43:31,420 --> 00:43:33,790 Dit string en dan die drie waardes. 940 00:43:33,790 --> 00:43:37,560 So x is die eerste wat ek wil wees ingeprop in die eerste tot die% d. 941 00:43:37,560 --> 00:43:39,270 y gaan wees die volgende. 942 00:43:39,270 --> 00:43:42,030 >> En nou het ek soort wil sê Z, maar Z bestaan ​​nie. 943 00:43:42,030 --> 00:43:43,190 Maar dit is nie 'n groot deal. 944 00:43:43,190 --> 00:43:45,440 Want wat sou jy instinktief doen, veral as jy 'n 945 00:43:45,440 --> 00:43:47,820 grafiese sakrekenaar, doen wat jy tik? 946 00:43:47,820 --> 00:43:48,760 Hoe oor die x plus y? 947 00:43:48,760 --> 00:43:50,200 Dit is dus nie 'n werklike veranderlike. 948 00:43:50,200 --> 00:43:51,820 Dis net die som van twee ander veranderlikes. 949 00:43:51,820 --> 00:43:53,170 En dit is heeltemal wettig is. 950 00:43:53,170 --> 00:43:56,630 C verstaan ​​beslis eenvoudige rekenkundige soos hierdie. 951 00:43:56,630 --> 00:43:58,450 >> Kommapunt, red. 952 00:43:58,450 --> 00:44:02,080 Nou laat my gaan hier en tik maak adder, Tik. 953 00:44:02,080 --> 00:44:04,100 Geen fout, so dit is vordering te. 954 00:44:04,100 --> 00:44:04,890 Tik basilisk. 955 00:44:04,890 --> 00:44:07,100 En 'n ander kortpad, As jy begin om te verveeld 956 00:44:07,100 --> 00:44:08,760 met al die instruksies - 957 00:44:08,760 --> 00:44:12,650 As jy begin tik 'n bevel, soos dot streep advertensie, en dit is waar jou 958 00:44:12,650 --> 00:44:16,020 verveling skop in, wat jy gewoonlik kan getref Blad om die rekenaar klaar is met die 959 00:44:16,020 --> 00:44:20,510 die res van die uitdrukking vir jou as dit is nie dubbelsinnige wat moet kom na die advertensie. 960 00:44:20,510 --> 00:44:23,950 >> So laat my voort te gaan nou en jy kliek Enter. 961 00:44:23,950 --> 00:44:27,490 Gee my 'n int, 1, 2, en Gelukkig, dit is 3. 962 00:44:27,490 --> 00:44:29,900 Maar soos altyd, toets programme moet nie verminder 963 00:44:29,900 --> 00:44:30,820 net probeer om dit een keer. 964 00:44:30,820 --> 00:44:35,560 Laat my probeer om 'n hoek geval, soos negatiewe 1, gee my 1, en dat 'n mens 965 00:44:35,560 --> 00:44:36,210 tjeks uit as well. 966 00:44:36,210 --> 00:44:38,870 En ek sal waarskynlik wil 'n paar meer te doen streng toets, maar ek is redelik 967 00:44:38,870 --> 00:44:40,630 gemaklik met waar dit is op. 968 00:44:40,630 --> 00:44:43,110 >> Wel, nou, laat ons probeer om 'n ander program dat hierdie tyd gebruik van 'n 969 00:44:43,110 --> 00:44:44,620 bietjie van die ander sintaksis. 970 00:44:44,620 --> 00:44:46,100 Laat my 'n nuwe lêer. 971 00:44:46,100 --> 00:44:51,050 Ek sal hierdie conditions0.c bel om te reël met 'n paar voorbeeld kode aanlyn. 972 00:44:51,050 --> 00:44:55,550 En laat my gaan voort en doen sluit cs50.h, sluit 973 00:44:55,550 --> 00:45:00,320 stdio.h, in die belangrikste leemte - 974 00:45:00,320 --> 00:45:01,030 OK. 975 00:45:01,030 --> 00:45:01,850 Daar gaan ons. 976 00:45:01,850 --> 00:45:03,010 Ons het ons standaard boiler. 977 00:45:03,010 --> 00:45:08,170 >> En hierdie keer het ek gaan printf sê, "Ek wil graag 'n int, asseblief," net om te 978 00:45:08,170 --> 00:45:10,030 maak die vinnige 'n bietjie meer vriendelik. 979 00:45:10,030 --> 00:45:11,620 En nou wil ek 'n te kry int van die gebruiker. 980 00:45:11,620 --> 00:45:15,010 Ek gaan dit n hierdie tyd om te bel, net omdat n klink soos nommer. 981 00:45:15,010 --> 00:45:18,140 getint, en nou, wat doen Ek wil om te doen met dit? 982 00:45:18,140 --> 00:45:21,640 Wel, as n - en ek sal vergroot - 983 00:45:21,640 --> 00:45:25,930 As n groter as 0, wil ek die volgende te doen - 984 00:45:25,930 --> 00:45:36,060 printf "Jy pluk 'n positiewe getal." Anders, ek gaan om te printf tik "Jy 985 00:45:36,060 --> 00:45:37,870 pluk 'n negatiewe 986 00:45:37,870 --> 00:45:39,650 getal "Alles reg.. 987 00:45:39,650 --> 00:45:44,410 So hierdie program, selfs al het ek het dit vinnig, dit lyk reg sintakties. 988 00:45:44,410 --> 00:45:45,010 Kom ek probeer dit. 989 00:45:45,010 --> 00:45:46,890 Maak toestand 0. 990 00:45:46,890 --> 00:45:47,710 Blyk uit te voer. 991 00:45:47,710 --> 00:45:49,230 Staat 0, betree. 992 00:45:49,230 --> 00:45:51,910 Kom ons gee dit 'n int van 50. 993 00:45:51,910 --> 00:45:53,160 Ek pluk 'n positiewe getal. 994 00:45:53,160 --> 00:45:54,230 Kom ons probeer dit weer. 995 00:45:54,230 --> 00:45:54,930 Staat 0. 996 00:45:54,930 --> 00:45:56,260 Negatiewe 50. 997 00:45:56,260 --> 00:45:57,290 Ek pluk 'n negatiewe getal. 998 00:45:57,290 --> 00:46:00,350 >> Maar nou, laat my kies wat ons sal aanhou roep 'n hoek geval, wat meer 999 00:46:00,350 --> 00:46:04,702 'n interessante geval wat jy dink kan jy 'n paar probleme, 0. 1000 00:46:04,702 --> 00:46:07,940 Nou, ek is redelik seker dit is een van die hoek gevalle waar nul is 1001 00:46:07,940 --> 00:46:12,330 of positief en negatief, so my program, maar in sintakties 1002 00:46:12,330 --> 00:46:15,440 korrek nie - dit stel, dit loop - is nie logies korrek is. 1003 00:46:15,440 --> 00:46:21,050 So, wat is die eenvoudige fix hier as ek wil op te spoor, as ek wil n te hanteer 1004 00:46:21,050 --> 00:46:23,840 gelyk aan 0 is apart? 1005 00:46:23,840 --> 00:46:32,980 >> So as n gelyk aan 0, dan wil ek sê iets soos printf "Jy opgetel 0." 1006 00:46:32,980 --> 00:46:33,990 Kom ek probeer dit nou. 1007 00:46:33,990 --> 00:46:38,320 Laat my terug hier, duidelik my venster en heropstel. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Een fout genereer. 1010 00:46:39,770 --> 00:46:41,630 Maar ek dink jy wil om te kyk As n gelyk aan 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> So weer, nog 'n dom ding om gewoond te raak, gelyk teken is 1013 00:46:47,720 --> 00:46:48,910 die opdrag operateur. 1014 00:46:48,910 --> 00:46:52,240 So dit is eintlik fout in dat, tegnies, selfs al is die samesteller 1015 00:46:52,240 --> 00:46:56,450 beskerm my van myself, ons wil tegnies kopiëring 0 in n, wat 1016 00:46:56,450 --> 00:46:57,590 is nie wat ek wil hê. 1017 00:46:57,590 --> 00:47:00,950 Ek wil om te toets vir gelykheid met gelykes gelyk. 1018 00:47:00,950 --> 00:47:03,390 En so dat dit nou kan wees my beter oplossing. 1019 00:47:03,390 --> 00:47:07,810 >> Laat my eintlik weer stoor dit as, sê, conditions1 te wees, nuwe en verbeterde. 1020 00:47:07,810 --> 00:47:10,480 So as ek nou heropstel hierdie, dit maak voorwaardes - 1021 00:47:10,480 --> 00:47:16,960 Oeps - maak conditions1 dot streep conditions1, betree, "Ek wil 'n int hou, 1022 00:47:16,960 --> 00:47:18,760 please. "Ek is gaan om te gaan voor en tik 50. 1023 00:47:18,760 --> 00:47:19,660 Dit is nog steeds goed. 1024 00:47:19,660 --> 00:47:21,200 Negatiewe 50, nog steeds goed. 1025 00:47:21,200 --> 00:47:24,920 0, en dit inderdaad, opgespoor dat ek opgetel 0. 1026 00:47:24,920 --> 00:47:28,200 >> So, wat meer kan ek nou doen met dit? 1027 00:47:28,200 --> 00:47:32,280 Wel, ons kan beslis meer doen komplekse dinge. 1028 00:47:32,280 --> 00:47:37,240 Maar wat ek wil voorstel is dat ons uiteindelik op hierdie nota hier. 1029 00:47:37,240 --> 00:47:41,680 As ons trek hierdie, sien jy, miskien, 'n gunsteling spotprent van jou 1030 00:47:41,680 --> 00:47:43,326 Tot vandag toe jy dalk nooit verstaan ​​het. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 En dit is oor die gehalte van die lag jy moet kry met CS grappies. 1033 00:47:49,520 --> 00:47:51,060 So dit is oor die reg. 1034 00:47:51,060 --> 00:47:54,900 >> Maar meer dwingend, ek het gedink ek wil gee ons 'n bietjie teaser vir Maandag. 1035 00:47:54,900 --> 00:47:56,430 So het ons begin met behulp van heelgetalle. 1036 00:47:56,430 --> 00:47:57,510 Ons het verwys na dryf. 1037 00:47:57,510 --> 00:48:00,120 Ons het selfs verwys na dubbelspel, wat, weer, gee jou nommers 1038 00:48:00,120 --> 00:48:01,390 nadat desimale punte. 1039 00:48:01,390 --> 00:48:04,230 >> Maar dit blyk dat dryf en dubbelspel, en regtig, rekenaars, 1040 00:48:04,230 --> 00:48:08,470 fundamenteel, kan nie druk sommige waardes presies. 1041 00:48:08,470 --> 00:48:12,840 Ons weet van wiskunde klasse wat jy kan het 'n aantal van syfers na die 1042 00:48:12,840 --> 00:48:13,510 desimale punt. 1043 00:48:13,510 --> 00:48:16,460 En jy kan selfs 'n vertikale bar om te sê hierdie gaan vir ewig. 1044 00:48:16,460 --> 00:48:18,810 >> Ongelukkig, jy kan nie regtig doen wat in 'n rekenaar. 1045 00:48:18,810 --> 00:48:20,400 En so hoek gevalle ontstaan. 1046 00:48:20,400 --> 00:48:23,120 Byvoorbeeld, veronderstel jy is om iets te doen finansiële. 1047 00:48:23,120 --> 00:48:25,700 Jy doen wiskunde met persentasies, en 1048 00:48:25,700 --> 00:48:27,030 met dollar en sent. 1049 00:48:27,030 --> 00:48:29,230 En dié sent nie noodwendig line-up. 1050 00:48:29,230 --> 00:48:34,120 Wel, dit blyk dat die breuke van sente kan begin by te voeg wanneer 1051 00:48:34,120 --> 00:48:37,250 gemodelleer met 'n rekenaarstelsel in so 'n manier dat slim 1052 00:48:37,250 --> 00:48:39,100 mense kan voordeel trek. 1053 00:48:39,100 --> 00:48:42,650 >> En dié van julle wat nie gesien het nie, ek wil graag vir jou 'n 30-tweede teaser van 1054 00:48:42,650 --> 00:48:48,290 'n wonderlike film bekend as kantoorruimte, wat verf 'n prentjie van 'n 1055 00:48:48,290 --> 00:48:51,205 probleem wat ons moet aanpak eerste ding op Maandag. 1056 00:48:51,205 --> 00:48:53,960 As ons kan verhoog die volume 'n bietjie, ek gee jou 30 1057 00:48:53,960 --> 00:48:55,495 sekondes van kantoorruimte. 1058 00:48:55,495 --> 00:48:55,770 >> [Video speel] 1059 00:48:55,770 --> 00:48:59,000 >> -Ek bedoel, jy het, het jy nie besig is om en jy jou werk te hou. 1060 00:48:59,000 --> 00:49:00,620 >> -Eintlik, ek bevorder is nie. 1061 00:49:00,620 --> 00:49:03,240 >> -Ek kan die program 'n virus wat wil rip daardie plek af groot tyd. 1062 00:49:03,240 --> 00:49:04,430 >> -Wel, hoe dit werk? 1063 00:49:04,430 --> 00:49:06,782 >> -Elke keer as daar 'n bank transaksie waar rente bereken word, en daar 1064 00:49:06,782 --> 00:49:10,160 is duisende 'n dag, die rekenaar eindig met hierdie breuke van 'n sent. 1065 00:49:10,160 --> 00:49:12,030 >> -Maar ek is nie van plan om enigiets doen onwettig. 1066 00:49:12,030 --> 00:49:12,660 >> -Onwettige? 1067 00:49:12,660 --> 00:49:15,075 Samir, dit is Amerika. 1068 00:49:15,075 --> 00:49:16,570 >> -Ons het om te sweer by God. 1069 00:49:16,570 --> 00:49:19,070 >> -As niemand weet oor hierdie maar ons, al reg? 1070 00:49:19,070 --> 00:49:21,920 Geen familie, geen vriendinne, niemand nie. 1071 00:49:21,920 --> 00:49:22,700 >> -Van die kursus. 1072 00:49:22,700 --> 00:49:23,320 >> Ooreengekom. 1073 00:49:23,320 --> 00:49:24,280 >> Moenie bekommerd wees nie, man. 1074 00:49:24,280 --> 00:49:25,640 Ek sal nie vir enigiemand vertel nie. 1075 00:49:25,640 --> 00:49:26,504 >> [Einde video-vertoning] 1076 00:49:26,504 --> 00:49:30,030 >> David Malan: So dit is dan CS50, dit was kantoorruimte, en dit alles sal 1077 00:49:30,030 --> 00:49:31,465 sin maak op Maandag. 1078 00:49:31,465 --> 00:49:33,940 Sien jy dan. 1079 00:49:33,940 --> 00:49:37,880 >> NARRATOR: By die volgende CS50, Rob pas die feit dat van die 1080 00:49:37,880 --> 00:49:39,130 Harvard maaltyd plan. 1081 00:49:39,130 --> 00:49:56,160