1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] David J. Malan V redu, to je CS50 in to je 2 00:00:09,920 --> 00:00:15,250 konec tedna 1, tako da so v študijskih kartice in skupno število 3 00:00:15,250 --> 00:00:18,640 sošolci, ki jih imate v letošnjem letu je 745. 4 00:00:18,640 --> 00:00:20,920 In smo tako navdušeni, da so tako mnogi od vas v okviru 5 00:00:20,920 --> 00:00:23,680 ta semester, pa čeprav je to seveda ni tako velika, 6 00:00:23,680 --> 00:00:26,090 Zavedajo se, da je te stvari, kot so kosila petek, kot je 7 00:00:26,090 --> 00:00:29,020 Uradne ure, 15-oseba, profili, in tako naprej, da 8 00:00:29,020 --> 00:00:30,590 je res mišljeno, da ustvarite to bolj intimno 9 00:00:30,590 --> 00:00:31,140 okolje. 10 00:00:31,140 --> 00:00:34,070 Torej, čeprav smo se enkrat ali dvakrat na teden, tukaj v 11 00:00:34,070 --> 00:00:36,420 Sanders, vem, da je velik del svoje izkušnje v tem letu 12 00:00:36,420 --> 00:00:39,330 bo v veliki meri je hands-on na poleg svojih sošolcev 13 00:00:39,330 --> 00:00:40,730 in učitelji. 14 00:00:40,730 --> 00:00:43,960 >> Torej, gremo, jesen 2012. 15 00:00:43,960 --> 00:00:47,530 Tako opozarjajo, da je zadnji čas, da smo se na noto 16 00:00:47,530 --> 00:00:50,460 nenatančnost, ki govori o zastopanju številk. 17 00:00:50,460 --> 00:00:52,950 In smo si ogledali eno od napak, ki se je zgodilo v 18 00:00:52,950 --> 00:00:54,920 realni svet, ko je prišlo do nesporazuma 19 00:00:54,920 --> 00:00:55,890 kako računalniki delujejo. 20 00:00:55,890 --> 00:00:58,590 No, danes bomo ponovno še enega od teh idej 21 00:00:58,590 --> 00:01:01,410 ter nadaljevali razpravo o CS50 stranke 22 00:01:01,410 --> 00:01:04,090 in C, in kaj to pomeni res do programa. 23 00:01:04,090 --> 00:01:06,430 Najprej pa le nekaj objav vihar. 24 00:01:06,430 --> 00:01:08,930 >> Skupine začne v nedeljo, in prvi teden je vedno 25 00:01:08,930 --> 00:01:11,030 Malo hiter začetek, saj smo dobili v 26 00:01:11,030 --> 00:01:12,620 sekcije oblike. 27 00:01:12,620 --> 00:01:14,450 Delamo enako, zdaj, z učnimi štipendistov, zdaj 28 00:01:14,450 --> 00:01:16,410 da poznajo svoje urnike, tako da smo cilj, ki ga 29 00:01:16,410 --> 00:01:19,380 V soboto zjutraj, za nadaljnje ukrepanje pri vas s svojim oddelkom 30 00:01:19,380 --> 00:01:20,760 Prirejanje in TF. 31 00:01:20,760 --> 00:01:22,770 Zavedaj se, da se bodo začeli naslednji dan, v nedeljo 32 00:01:22,770 --> 00:01:24,510 ali ponedeljek ali torek. 33 00:01:24,510 --> 00:01:27,730 In potem bomo prilagoditi razdelek spremembe, ko se pojavijo 34 00:01:27,730 --> 00:01:28,690 V dneh, ki prihajajo. 35 00:01:28,690 --> 00:01:31,590 Uradne ure, medtem, so spet nocoj, 08:00 do 11, v 36 00:01:31,590 --> 00:01:33,740 Annenberg, kot tudi jutri zvečer. 37 00:01:33,740 --> 00:01:36,150 Čeprav problem seti so na splošno posledica ob četrtkih 38 00:01:36,150 --> 00:01:39,020 Opoldne zavedaš, imate do pet dni prepozno, da preživijo, 39 00:01:39,020 --> 00:01:42,430 zato razpoložljivost uradnih ur ob četrtkih, če 40 00:01:42,430 --> 00:01:45,930 si denar v eno od teh poznih dneh in s tem predloži 41 00:01:45,930 --> 00:01:47,070 Nekaj ​​v petek. 42 00:01:47,070 --> 00:01:50,850 Naj kažejo, da Scratch je med več zabave, med 43 00:01:50,850 --> 00:01:52,390 Več nizki ključni problem množice. 44 00:01:52,390 --> 00:01:55,160 In jaz bi viseti na teh poznih dni, strateško, samo 45 00:01:55,160 --> 00:01:57,380 za pozneje v polletju, ko je življenje začne v napoto 46 00:01:57,380 --> 00:01:59,470 z vmesni izpit in drugih razredov. 47 00:01:59,470 --> 00:02:01,580 Problem Set 1, bi medtem, objavljene na tečaj je 48 00:02:01,580 --> 00:02:06,080 Spletna stran je ta petek, bo, kot je na sprehod v teku 49 00:02:06,080 --> 00:02:08,789 skozi video bo, kar bo posnet na 02:30 v petek 50 00:02:08,789 --> 00:02:11,890 in nato objavljene na spletu, ki jih naslednji dan. 51 00:02:11,890 --> 00:02:13,880 >> Tako smo se znašli v ponedeljek. 52 00:02:13,880 --> 00:02:15,450 Želim - pravzaprav omeniti tukaj. 53 00:02:15,450 --> 00:02:18,870 Ker so razredi - ker Sanders ni ravno posojajo 54 00:02:18,870 --> 00:02:22,220 sama občasno Q & A sem ter tja strašno dobro, da smo 55 00:02:22,220 --> 00:02:24,030 bo poskusil nekaj malo novih letos, pri čemer 56 00:02:24,030 --> 00:02:26,160 Če niste zadovoljni dvigne roko ali pa samo 57 00:02:26,160 --> 00:02:28,800 Raje ne bi dvignil roko v prostoru, kot je ta, 58 00:02:28,800 --> 00:02:30,710 da bomo imeli nekaj učnih fantov in CAS 59 00:02:30,710 --> 00:02:33,260 vozniki cs50.net/discuss med predavanjem. 60 00:02:33,260 --> 00:02:35,440 Torej, če imate kakšno vprašanje, ker sem bil popolnoma 61 00:02:35,440 --> 00:02:37,510 jasno, o čem ali vas zanima o nekaterih 62 00:02:37,510 --> 00:02:39,640 temo, jo poskusite objavljate tukaj. 63 00:02:39,640 --> 00:02:42,670 Ga označi z oznako Predavanje, mi pa se bomo potrudili, 64 00:02:42,670 --> 00:02:45,430 danes in naslednji teden - bova poskusiti to jasno - na področju IT 65 00:02:45,430 --> 00:02:47,990 bodisi v elektronski obliki, na spletu, ali če se počuti, kot bi se morali 66 00:02:47,990 --> 00:02:50,430 Res je obravnavala množično, eno od učnih štipendistov ali 67 00:02:50,430 --> 00:02:52,080 CA bo dvignil roko in vprašal 68 00:02:52,080 --> 00:02:53,480 anonimno v vašem imenu. 69 00:02:53,480 --> 00:02:55,650 Torej bomo dal to poskusiti in videli, kako dobro to deluje. 70 00:02:55,650 --> 00:02:58,540 Ampak, z vsemi sredstvi, še naprej opozarjala na roke, kot bi želeli. 71 00:02:58,540 --> 00:03:11,420 >> Torej, zadnjič, ko smo pokazali, da 10% ali ena desetina pa ni v 72 00:03:11,420 --> 00:03:13,840 Dejstvo, 0,1, tako kot so vas naučili že pred mnogimi leti. 73 00:03:13,840 --> 00:03:15,390 To je v bistvu vrednost, kot je ta. 74 00:03:15,390 --> 00:03:16,970 Toda to ni povsem res, kajne? 75 00:03:16,970 --> 00:03:19,585 Pravkar smo imeli to omejitev na računalnikih, s katerim v primeru, da 76 00:03:19,585 --> 00:03:22,450 le končno količino pomnilnika, RAM ali več 77 00:03:22,450 --> 00:03:25,220 posebej bitov, no, tam je le končno število 78 00:03:25,220 --> 00:03:26,980 stvari lahko predstavljajo. 79 00:03:26,980 --> 00:03:29,780 Na primer, če imamo številko nič, in želimo, da 80 00:03:29,780 --> 00:03:32,790 predstavlja binarno, z uporabo 8 bitov, kjer je malo, 81 00:03:32,790 --> 00:03:34,710 Ponovno je nič ali ena, morda smo 82 00:03:34,710 --> 00:03:39,240 jo predstavljajo kot 00000000. 83 00:03:39,240 --> 00:03:41,160 In to je malo po nepotrebnem verbose. 84 00:03:41,160 --> 00:03:43,700 Tako kot v decimalni sistem v realnem svetu, 85 00:03:43,700 --> 00:03:47,040 na splošno, če želite, da napišete številko 123, se 86 00:03:47,040 --> 00:03:52,240 ljudje verjetno ne pisati 00000123, čeprav 87 00:03:52,240 --> 00:03:53,940 funkcionalno, to je točno isto številko. 88 00:03:53,940 --> 00:03:56,580 Samo spusti vodilne ničle, tako rekoč. 89 00:03:56,580 --> 00:03:58,270 >> V binarne, lahko naredimo enako. 90 00:03:58,270 --> 00:04:01,440 Binary in nič, nič in je le binarna nič. 91 00:04:01,440 --> 00:04:02,870 Potrebujete samo en bit. 92 00:04:02,870 --> 00:04:05,020 Ampak še enkrat, najbolj pogosti merska enota na svetu 93 00:04:05,020 --> 00:04:07,820 računalništva je bajta, 8 bitov. 94 00:04:07,820 --> 00:04:09,720 Samo zato, ker en bit, precej neuporabna. 95 00:04:09,720 --> 00:04:12,020 Osem bitov, ni strašno koristen, vendar vsaj, da je bolj 96 00:04:12,020 --> 00:04:14,280 uporaben kot eno mersko enoto. 97 00:04:14,280 --> 00:04:17,100 Torej, z 8 bitov, bomo običajno predstavlja binarno. 98 00:04:17,100 --> 00:04:20,459 Torej, tukaj imamo številke nič, ena, dva, nato pa, kot je 99 00:04:20,459 --> 00:04:24,200 Nate si v našem video prejšnjo sredo, bomo lahko še naprej 100 00:04:24,200 --> 00:04:25,940 štetje do 7, na osem. 101 00:04:25,940 --> 00:04:27,860 In potem, če jih uporabljamo več in več bitov, smo 102 00:04:27,860 --> 00:04:29,880 Lahko računate do neskončnosti. 103 00:04:29,880 --> 00:04:32,800 Ampak, če ste le končno število teh bitov, kot je 104 00:04:32,800 --> 00:04:35,030 velja v vsakem računalniškem sistemu, ali celo raketa 105 00:04:35,030 --> 00:04:36,670 sistem, dobro, res imate samo 106 00:04:36,670 --> 00:04:37,900 končna količina natančnosti. 107 00:04:37,900 --> 00:04:41,290 Torej, če želite prikazati število kot 0,1, je dobro, 108 00:04:41,290 --> 00:04:43,410 Računalnik mora izbirati. 109 00:04:43,410 --> 00:04:45,970 In če ima le končno število številk je v njeni moči 110 00:04:45,970 --> 00:04:50,490 predstavljajo, lahko pride blizu 0,1 za vas, vendar ne more 111 00:04:50,490 --> 00:04:53,730 nujno, da vam točno vrednost, ki jo želite. 112 00:04:53,730 --> 00:04:55,660 In to je le eden od izzivov, računalnikov, 113 00:04:55,660 --> 00:04:57,090 Pod pokrovom motorja na srečo. 114 00:04:57,090 --> 00:04:59,110 >> Kot smo korak naprej v semestru, ti nižji ravni 115 00:04:59,110 --> 00:05:02,310 Podrobnosti postal veliko manj zanimiva, vsekakor pa 116 00:05:02,310 --> 00:05:05,700 Uporaba teh idej lahko nekaj zelo resničnega sveta 117 00:05:05,700 --> 00:05:06,760 posledice. 118 00:05:06,760 --> 00:05:08,190 Ena je malo zabave. 119 00:05:08,190 --> 00:05:12,150 Koliko vas je videti neverjetno prostor Pisarna film? 120 00:05:12,150 --> 00:05:13,620 Če še niste, to je tvoj neuradno 121 00:05:13,620 --> 00:05:14,370 domače naloge za teden dni. 122 00:05:14,370 --> 00:05:16,730 Toda v Office Space, so fantje v tem filmu bo 123 00:05:16,730 --> 00:05:19,900 Prednost ravno to idejo, ampak so dejansko ukradli 124 00:05:19,900 --> 00:05:21,270 je iz drugega filma, ki jih lahko imajo 125 00:05:21,270 --> 00:05:22,760 videl, celo leta prej. 126 00:05:22,760 --> 00:05:24,920 Torej, naj ti dam nekaj sekund te prikolico od 127 00:05:24,920 --> 00:05:27,470 to neverjetno film in to je zelo veliko 128 00:05:27,470 --> 00:05:28,340 akademsko pomembno. 129 00:05:28,340 --> 00:05:30,310 >> [IGRA MOVIE] 130 00:05:30,310 --> 00:05:32,240 Pravzaprav sem se oglašuje. 131 00:05:32,240 --> 00:05:33,360 Jaz lahko program virus, ki bo zajel da 132 00:05:33,360 --> 00:05:34,460 postavite off velik časa. 133 00:05:34,460 --> 00:05:35,770 Torej, kako deluje? 134 00:05:35,770 --> 00:05:37,836 Vsakič, ko je plačilni posel, kjer je interes 135 00:05:37,836 --> 00:05:40,154 Izračunana je na tisoče dan, računalnik konča 136 00:05:40,154 --> 00:05:41,040 s temi frakcijami centa. 137 00:05:41,040 --> 00:05:43,050 Ampak jaz ne bom naredil nič nezakonitega. 138 00:05:43,050 --> 00:05:46,730 Nezakonito? Samir, to je Amerika. 139 00:05:46,730 --> 00:05:48,010 Moraš prisežem pri Bogu. 140 00:05:48,010 --> 00:05:51,870 Če nihče ne ve o tem, vendar nas, v redu? Brez družinskih članov, ne 141 00:05:51,870 --> 00:05:52,490 prijateljice, nihče. 142 00:05:52,490 --> 00:05:53,882 [Neslišno]. 143 00:05:53,882 --> 00:05:57,594 Ne skrbi, človek, ne bom nikomur ne. 144 00:05:57,594 --> 00:05:59,680 [MOVIE KONEC] 145 00:05:59,680 --> 00:06:01,900 >> V redu, mogoče sem našla ta film boljši od večine 146 00:06:01,900 --> 00:06:05,530 Ljudje tukaj, ampak v vsakem primeru je virus, ki so bili 147 00:06:05,530 --> 00:06:06,400 poskušajo ustvariti - 148 00:06:06,400 --> 00:06:08,410 in v filmih, kadarkoli bi rečejo nekaj, virus, 149 00:06:08,410 --> 00:06:09,770 je na splošno niso dejansko virus. 150 00:06:09,770 --> 00:06:11,600 To je samo program, ki je nekdo napisal nekaj storiti. 151 00:06:11,600 --> 00:06:13,800 In v tem primeru, fantje so poskušali napisati program 152 00:06:13,800 --> 00:06:16,610 da je prednost njihovega podjetja pozval Innotech je 153 00:06:16,610 --> 00:06:19,740 računalniški sistem, s katerim računalniki, preveč, tudi če je 154 00:06:19,740 --> 00:06:21,350 gre za denar, ne more nujno 155 00:06:21,350 --> 00:06:23,490 predstavljajo denar natančno. 156 00:06:23,490 --> 00:06:27,630 Torej, čeprav je morda 0,10 $ na vaš bančni račun, 157 00:06:27,630 --> 00:06:31,060 0,10, dobro, lahko računalnik dejansko mislite, da imate 158 00:06:31,060 --> 00:06:33,560 to je veliko centov na vašem bančnem računu. 159 00:06:33,560 --> 00:06:35,750 In kaj so ti ljudje so bili v upanju, da ne - in jih 160 00:06:35,750 --> 00:06:38,240 ukradel idejo, se je izkazalo iz Superman III, kjer je 161 00:06:38,240 --> 00:06:41,210 Richard Pryor storil isto stvar - so bili v glavnem 162 00:06:41,210 --> 00:06:44,880 pisanje programov, ki si prizadevajo, da bi vse zaključnimi 163 00:06:44,880 --> 00:06:46,930 številke, vse od drobnih, majhnih, drobnih frakcij 164 00:06:46,930 --> 00:06:50,160 penijev, in tistimi, nedovoljeno off, tako da se ljudje le 165 00:06:50,160 --> 00:06:52,620 misel, oh, to je samo 0,10 $, toda vse tiste, 166 00:06:52,620 --> 00:06:54,410 sledilni številke na koncu seštejejo. 167 00:06:54,410 --> 00:06:57,490 Tako čudovito idejo in je izjalovilo veselo v tem, da 168 00:06:57,490 --> 00:06:58,250 Zlasti film. 169 00:06:58,250 --> 00:07:01,800 >> Toda v resničnem svetu, tudi tu so veliko bolj v zvezi z 170 00:07:01,800 --> 00:07:03,190 Posledice teh mogočih stvareh. 171 00:07:03,190 --> 00:07:05,450 In eden od razlogov, da se potopite v področju računalniške 172 00:07:05,450 --> 00:07:07,620 Znanost je, še enkrat, njegova uporaba pa ne na 173 00:07:07,620 --> 00:07:09,740 inženiring znanosti same, ampak le 174 00:07:09,740 --> 00:07:10,650 drugih področjih, kot dobro. 175 00:07:10,650 --> 00:07:14,760 Torej, to je manj Vesel pogledati, kaj lahko gre narobe, ampak 176 00:07:14,760 --> 00:07:17,630 je tudi precej oko odprtju mislim, da ko gre za 177 00:07:17,630 --> 00:07:20,760 razumevanje, kako točno vseprisotna tehnologij, kot so 178 00:07:20,760 --> 00:07:22,870 računalnikov in programske ali v teh dneh, 179 00:07:22,870 --> 00:07:23,930 v obliki programske opreme. 180 00:07:23,930 --> 00:07:26,500 Torej, to naslednji posnetek je skoraj šest minut, je še 181 00:07:26,500 --> 00:07:30,320 kjer smo končali zadnji čas, vendar nam omogoča, da si malo 182 00:07:30,320 --> 00:07:33,370 bolj v globino na enem takem teh vprašanj. 183 00:07:33,370 --> 00:07:35,270 Naj preskočite naprej do točke, kjer smo končali, 184 00:07:35,270 --> 00:07:37,780 ki je bil prav tukaj. 185 00:07:37,780 --> 00:07:41,580 In imamo drugega dela 2, na približno šestih minutah tukaj. 186 00:07:41,580 --> 00:07:41,980 >> [PLAY MOVIE] 187 00:07:41,980 --> 00:07:45,430 Pestijo sodobnega raketno tehnologijo. 188 00:07:45,430 --> 00:07:49,280 Leta 1991 je z začetkom prve zalivske vojne, Patriot 189 00:07:49,280 --> 00:07:51,350 raketa doživela podobno vrsto 190 00:07:51,350 --> 00:07:52,645 število preusmeritev problem. 191 00:07:52,645 --> 00:07:57,460 In kot rezultat, je bilo ubitih 20 ljudi, 20 ameriških vojakov, 192 00:07:57,460 --> 00:08:01,130 in približno 100 ranjenih drugi, ko Patriot, ki se je moral 193 00:08:01,130 --> 00:08:03,400 za zaščito pred dohodnih Scuds, 194 00:08:03,400 --> 00:08:06,020 ni ogenj izstrelkov. 195 00:08:06,020 --> 00:08:09,350 >> Ko je Irak napadel Kuvajt in Amerika začela Desert 196 00:08:09,350 --> 00:08:13,530 Neurje v začetku leta 1991, Patriot raketne baterije so 197 00:08:13,530 --> 00:08:16,970 uporabljena za zaščito Saudska Arabija in Izrael iz Iraka 198 00:08:16,970 --> 00:08:19,810 Oblaki raketnimi napadi. 199 00:08:19,810 --> 00:08:23,740 Patriot je ameriški srednjega dosega zemlja-zrak, 200 00:08:23,740 --> 00:08:26,370 proizvaja podjetje Raytheon. 201 00:08:26,370 --> 00:08:30,860 Velikost Patriot Interceptor sam, gre 202 00:08:30,860 --> 00:08:35,650 približno 20 metrov dolga in tehta okoli 2.000 kilogramov. 203 00:08:35,650 --> 00:08:38,809 In nosi bojno glavo približno - mislim, da je približno 204 00:08:38,809 --> 00:08:40,169 150 £. 205 00:08:40,169 --> 00:08:45,820 In bojno glavo sam je zelo eksploziven, ki ima 206 00:08:45,820 --> 00:08:48,120 delci okoli njega. 207 00:08:48,120 --> 00:08:51,870 Ohišje za bojno konico je zasnovan tako, da delujejo kot buckshot. 208 00:08:51,870 --> 00:08:54,920 Rakete so se izvajajo na 4 posode in so 209 00:08:54,920 --> 00:08:57,850 prevaža polpriklopnik. 210 00:08:57,850 --> 00:09:02,940 >> Patriot protiraketni sistem, sega vsaj do 211 00:09:02,940 --> 00:09:05,530 20 let. 212 00:09:05,530 --> 00:09:09,150 To je bil prvotno zasnovan kot protiraketni obrambi letalskem 213 00:09:09,150 --> 00:09:12,920 ustreli določitvi sovražnik letal, v prvi zalivski vojni. 214 00:09:12,920 --> 00:09:17,700 Ko se je vojna prišla je vojska želela, da jo uporabljajo za snemanje 215 00:09:17,700 --> 00:09:19,880 določitvi Scuds, ne letala. 216 00:09:19,880 --> 00:09:24,860 Air Force Iraški ni bilo tako veliko težav, vendar pa je vojska 217 00:09:24,860 --> 00:09:27,260 Skrbelo me je Scuds. 218 00:09:27,260 --> 00:09:30,810 In tako so poskušali nadgraditi Patriot. 219 00:09:30,810 --> 00:09:33,770 Prestrezanje sovražnik izstrelkov potuje Mach 5 je dogajalo 220 00:09:33,770 --> 00:09:35,790 , dovolj velik izziv. 221 00:09:35,790 --> 00:09:39,460 Toda, ko je bil Patriot planila v službi, vojska 222 00:09:39,460 --> 00:09:43,730 ni bil seznanjen z iraško spremembe, ki so izrazili svoja 223 00:09:43,730 --> 00:09:46,510 Scuds skoraj nemogoče zadeti. 224 00:09:46,510 --> 00:09:50,040 >> Kaj se je zgodilo, je Scuds, ki so bile 225 00:09:50,040 --> 00:09:51,360 prihajajo bila nestabilna. 226 00:09:51,360 --> 00:09:52,266 Bili so premikanja. 227 00:09:52,266 --> 00:09:56,300 Razlog za to je bil Iračanov, da bi dobili 600 228 00:09:56,300 --> 00:10:00,650 kilometrov izven 300-kilometrskega projektil območju, je 229 00:10:00,650 --> 00:10:02,423 teže iz sprednjega in bojne glave 230 00:10:02,423 --> 00:10:03,990 podana bojno glavo vžigalnik. 231 00:10:03,990 --> 00:10:08,700 Torej, zdaj Patriot poskuša priti na Scud, in večina 232 00:10:08,700 --> 00:10:11,192 čas, velika večina časa, bi bilo 233 00:10:11,192 --> 00:10:13,450 Samo letenje, ki jih Scud. 234 00:10:13,450 --> 00:10:16,300 Ko upravljavci Patriot spoznal Patriot 235 00:10:16,300 --> 00:10:20,160 zgrešil svoj cilj, jih je sprožil The Patriot bojno konico. 236 00:10:20,160 --> 00:10:22,760 Da bi se izognili morebitnim žrtev, je bilo dovoljeno, da 237 00:10:22,760 --> 00:10:25,100 pade na tla. 238 00:10:25,100 --> 00:10:29,400 To je tisto, kar večina ljudi videli kot velike ognjene krogle na nebu, 239 00:10:29,400 --> 00:10:34,930 in narobe, kot prestreza z bojnimi glavami Scud. 240 00:10:34,930 --> 00:10:37,490 >> Čeprav je na nočnem nebu, Patriots se je izkazalo 241 00:10:37,490 --> 00:10:41,570 Uspešno uničenih Scuds na Dhahran bi smelo biti 242 00:10:41,570 --> 00:10:43,730 pomote o njeni uspešnosti. 243 00:10:43,730 --> 00:10:46,370 Tam je Patriot radarski sistem izgubil občutek za 244 00:10:46,370 --> 00:10:50,090 Prihodnje Scud in nikoli začel zaradi 245 00:10:50,090 --> 00:10:51,340 programski pomanjkljivost. 246 00:10:54,030 --> 00:10:57,050 To je bil Izraelci, ki je prvi odkril, da več 247 00:10:57,050 --> 00:11:02,000 Sistem je bil na, večja je razlika, ko je postal, 248 00:11:02,000 --> 00:11:05,530 Zaradi ura vgrajena v računalnik sistema. 249 00:11:05,530 --> 00:11:09,060 Približno dva tedna pred tragedijo v Dhahran, na 250 00:11:09,060 --> 00:11:11,730 Izraelci poročajo, da je obrambno ministrstvo 251 00:11:11,730 --> 00:11:13,250 Sistem je izgubljal časa. 252 00:11:13,250 --> 00:11:15,610 Po približno osmih urah obratovanja, so opazili, da je 253 00:11:15,610 --> 00:11:18,330 Sistem je bil vedno občutno manj natančna. 254 00:11:18,330 --> 00:11:20,910 The Defense Department odzvala povedal vse 255 00:11:20,910 --> 00:11:23,710 Patriot baterije ne pustite sistemov 256 00:11:23,710 --> 00:11:25,450 na za dolgo časa. 257 00:11:25,450 --> 00:11:28,010 Nikoli rekel, kar je bilo dolgo časa - 8 ur, 10 258 00:11:28,010 --> 00:11:29,690 ur in 1.000 ur. 259 00:11:29,690 --> 00:11:31,940 Nihče ni vedel. 260 00:11:31,940 --> 00:11:35,020 >> Patriot baterije nameščene v vojašnici v Dhahran 261 00:11:35,020 --> 00:11:39,030 in je njegovo neustrezno notranja ura že na več kot 100 ur na 262 00:11:39,030 --> 00:11:42,240 v noči 25. februar. 263 00:11:42,240 --> 00:11:46,580 To sledil čas za natančno približno desetino sekunde. 264 00:11:46,580 --> 00:11:48,830 Zdaj desetina drugi je zanimiv zato, ker število 265 00:11:48,830 --> 00:11:52,660 ne more biti izraženo v binarni, točno, kar pomeni, 266 00:11:52,660 --> 00:11:54,940 ni mogoče natančno izražena v katerikoli 267 00:11:54,940 --> 00:11:57,330 sodoben digitalni računalnik. 268 00:11:57,330 --> 00:11:59,130 To je težko verjeti. 269 00:11:59,130 --> 00:12:01,720 Ampak to uporabijo kot primer. 270 00:12:01,720 --> 00:12:04,090 >> Oglejmo Številko eno tretjino. 271 00:12:04,090 --> 00:12:07,950 Ena tretjina ne more biti izraženo v decimalni, točno. 272 00:12:07,950 --> 00:12:12,710 Ena tretjina je 0,333 dogaja v neskončnost. 273 00:12:12,710 --> 00:12:17,050 Ni šans, da to storite z absolutno natančnostjo decimalko. 274 00:12:17,050 --> 00:12:19,340 To je točno isto vrsto problema, ki se je zgodilo v 275 00:12:19,340 --> 00:12:20,190 Patriot. 276 00:12:20,190 --> 00:12:24,680 Dlje sistem vodil, slabša je čas, prišlo je postal. 277 00:12:24,680 --> 00:12:28,640 Po 100 urah delovanja, je prišlo v času, le 278 00:12:28,640 --> 00:12:29,870 približno ena tretjina sekunde. 279 00:12:29,870 --> 00:12:34,790 Ampak v smislu ciljnih izstrelek potuje Mach 5, 280 00:12:34,790 --> 00:12:39,140 je prišlo do napake pri sledenju več kot 600 metrov. 281 00:12:39,140 --> 00:12:42,510 To bi bilo usodno napako za vojake na Dhahran. 282 00:12:42,510 --> 00:12:48,680 >> Kaj se je zgodilo, je začela Scud je bila odkrita z zgodnjim opozarjanjem 283 00:12:48,680 --> 00:12:52,440 sateliti in so vedeli, da je Scud prihaja v njihovem 284 00:12:52,440 --> 00:12:53,350 splošna usmeritev. 285 00:12:53,350 --> 00:12:55,470 Niso vedeli, kje je bil prišel. 286 00:12:55,470 --> 00:12:58,210 To je bil do sedaj radarske komponente Patriot 287 00:12:58,210 --> 00:13:01,920 Sistem, ki brani Dhahran, da poiščete in spremljate od 288 00:13:01,920 --> 00:13:03,700 Prihodnje sovražnik izstrelkov. 289 00:13:03,700 --> 00:13:05,390 Radar je bil zelo pameten. 290 00:13:05,390 --> 00:13:07,570 Ti bi dejansko slediti stališču Scud in nato 291 00:13:07,570 --> 00:13:10,340 napovedati, kje bi bilo verjetno naslednjič, ko 292 00:13:10,340 --> 00:13:12,040 Radarska poslala pulz ven. 293 00:13:12,040 --> 00:13:13,730 To je bil imenovan obseg vrata. 294 00:13:13,730 --> 00:13:18,820 Potem, ko se odloči, Patriot, dovolj časa je minilo, da gredo 295 00:13:18,820 --> 00:13:22,600 nazaj in preverite naslednjo lokacijo za to ugotovi 296 00:13:22,600 --> 00:13:24,190 predmet, gre nazaj. 297 00:13:24,190 --> 00:13:27,940 Torej, ko se je vrnil na napačnem mestu, potem ne vidi 298 00:13:27,940 --> 00:13:31,000 nasprotuje, in sklene, da ni bilo nobenega objekta. 299 00:13:31,000 --> 00:13:34,370 To je napačno zaznavanje in spusti skladbo. 300 00:13:34,370 --> 00:13:37,630 >> Prihodnje Scud izginilo iz radarskega zaslona. 301 00:13:37,630 --> 00:13:41,300 In sekund kasneje pa je treščilo v vojašnice. The Scud 302 00:13:41,300 --> 00:13:44,730 ubil 28 in je bil zadnji streljal med 303 00:13:44,730 --> 00:13:46,450 prvi zalivski vojni. 304 00:13:46,450 --> 00:13:50,570 Tragično je posodobitev programske opreme prišel Dhahran 305 00:13:50,570 --> 00:13:52,060 naslednji dan. 306 00:13:52,060 --> 00:13:56,210 In je bila programska napaka določi, zapiranje eno poglavje v 307 00:13:56,210 --> 00:13:58,370 zmedena Zgodovina Patriot raket. 308 00:14:01,790 --> 00:14:04,990 PATRIOT je pravzaprav kratica za "postopoma sledenje Array 309 00:14:04,990 --> 00:14:08,516 Prestreči TARGET. " 310 00:14:08,516 --> 00:14:13,390 >> V redu, torej veliko bolj žalosten izid ni povsem 311 00:14:13,390 --> 00:14:14,430 razumevanju tega sveta. 312 00:14:14,430 --> 00:14:18,180 In hrana za s seboj, res iz filma je, da je rešitev 313 00:14:18,180 --> 00:14:20,790 je bil ponovno zagnati sistem raketne obrambe 314 00:14:20,790 --> 00:14:21,770 vsake toliko časa. 315 00:14:21,770 --> 00:14:24,280 In tako spet eden izmed ciljev tega seveda, vsekakor 316 00:14:24,280 --> 00:14:26,900 na bolj skromnem obsegu kot teh vlog, je 317 00:14:26,900 --> 00:14:30,710 Oči zelo odprti za vsakogar točno, kako si šel o 318 00:14:30,710 --> 00:14:34,380 Stroji za izdelavo, kaj želite od njih in kako greste 319 00:14:34,380 --> 00:14:37,180 O tem, da je pravilno, medtem ko so na poti početje 320 00:14:37,180 --> 00:14:38,810 dobro, elegantno, in tako naprej. 321 00:14:38,810 --> 00:14:41,680 In tako je danes, kaj je potopite v malo več, vendar 322 00:14:41,680 --> 00:14:44,210 tako da ne bomo prehitro, še posebej za tiste manj 323 00:14:44,210 --> 00:14:46,590 udoben, ampak tudi zato, da bomo lahko ohrani interes 324 00:14:46,590 --> 00:14:49,390 tisti bolj udobno, kaj je samo hitro začeti z malo 325 00:14:49,390 --> 00:14:50,970 Rekapitulacija o nekaterih od teh idej. 326 00:14:50,970 --> 00:14:53,710 In še enkrat, se posvetujte stran, tako osebno ali na spletu, če imate 327 00:14:53,710 --> 00:14:56,320 vprašanja, tako da lahko vodijo vsi na isti strani. 328 00:14:56,320 --> 00:14:58,820 >> Torej CS50 Appliance, hiter korak nazaj, je 329 00:14:58,820 --> 00:15:02,360 kaj, s svojimi besedami? 330 00:15:02,360 --> 00:15:06,454 To je v redu, če nimate pojma, kaj se lahko te besede biti še. 331 00:15:06,454 --> 00:15:07,830 [Neslišno] 332 00:15:07,830 --> 00:15:10,950 Ok, tako univerzalen vmesnik za - 333 00:15:10,950 --> 00:15:11,900 da bomo lahko vsi delijo. 334 00:15:11,900 --> 00:15:12,470 Absolutno. 335 00:15:12,470 --> 00:15:14,840 Tako bi lahko, na primer, ti povem, da gre za nekaj 336 00:15:14,840 --> 00:15:16,910 spletni strani, prenesete programsko opremo za Mac OS. 337 00:15:16,910 --> 00:15:19,140 Prenesete programsko opremo za Windows, nastavite na 338 00:15:19,140 --> 00:15:20,100 na ta način in to. 339 00:15:20,100 --> 00:15:22,370 Ampak dejstvo je, potem smo naleteli na nešteto tehničnih 340 00:15:22,370 --> 00:15:23,200 podporo vprašanj. 341 00:15:23,200 --> 00:15:26,630 In prav te dni, veliko tega, kar se je naredil strani strežnika, 342 00:15:26,630 --> 00:15:28,490 V svetu računalništva, še posebej, ko gre za 343 00:15:28,490 --> 00:15:31,460 izdelava spletnih strani in spletnih aplikacij, je dejansko 344 00:15:31,460 --> 00:15:35,110 pogosto poteka na Unix ali Linux računalnikov, v nasprotju z 345 00:15:35,110 --> 00:15:36,800 Mac ali Windows računalniki. 346 00:15:36,800 --> 00:15:39,240 >> Torej med upsides, nato pa, da se uporabi to stvar, imenovano 347 00:15:39,240 --> 00:15:41,500 CS50 Appliance je, da bomo vsi imeli isto okolje. 348 00:15:41,500 --> 00:15:43,670 Torej, vsi smo na isti strani, ni važno, kaj strojne opreme, 349 00:15:43,670 --> 00:15:46,650 prišel na kampusu z ampak bo dabbling v točno 350 00:15:46,650 --> 00:15:48,230 isto okolje, ki ga boste uporabljali proti 351 00:15:48,230 --> 00:15:51,080 semester konec tudi za spletni razvoj, kot tudi v 352 00:15:51,080 --> 00:15:53,580 Prihodnost realnih svetovnih njih. 353 00:15:53,580 --> 00:15:56,350 Torej, bolj konkretno, CS50 Appliance je brezplačna kos 354 00:15:56,350 --> 00:15:59,400 programsko opremo, ki omogoča izvajanje drug operacijski sistem, 355 00:15:59,400 --> 00:16:02,670 Linux, v tem primeru na svojem računalniku v oknu. 356 00:16:02,670 --> 00:16:04,750 Zdaj pa ne moreš prenesti na napravi. 357 00:16:04,750 --> 00:16:08,170 Potrebuješ program, s katerim lahko igrajo ali zagon naprave. 358 00:16:08,170 --> 00:16:11,220 In ta kos programske opreme, na splošno znani kot 359 00:16:11,220 --> 00:16:11,520 hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hypervisors prišel v obliki izdelkov, kot so VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, Vzporednice. 362 00:16:15,820 --> 00:16:18,390 Vse vrste podjetij, da programsko opremo, tako prost in 363 00:16:18,390 --> 00:16:19,310 komercialne, podobni. 364 00:16:19,310 --> 00:16:21,480 Kaj boste videli Problem Set 1 so navodila o tem, kako 365 00:16:21,480 --> 00:16:23,440 dobiti brezplačno programsko opremo, s katero bi 366 00:16:23,440 --> 00:16:25,000 teči CS50 aparata. 367 00:16:25,000 --> 00:16:28,060 In ko boste to storili, boste imeli v oknu na vaš PC ali Mac, 368 00:16:28,060 --> 00:16:30,710 namizno okolje, ki je videti zelo všeč to, kje 369 00:16:30,710 --> 00:16:33,100 ima meniju Start podobno stvar v 370 00:16:33,100 --> 00:16:34,510 spodnjem levem kotu. 371 00:16:34,510 --> 00:16:38,030 Ima Home mapo ali domači imenik, v zgornjem levem 372 00:16:38,030 --> 00:16:40,280 tam, lahko smeti, in tako naprej. 373 00:16:40,280 --> 00:16:43,450 Torej bomo draži narazen potrebne podrobnosti, kot smo. 374 00:16:43,450 --> 00:16:46,430 >> Toda zdaj, začnimo se potopite v C. 375 00:16:46,430 --> 00:16:49,200 Torej je to C programski jezik, podoben duh 376 00:16:49,200 --> 00:16:52,390 Scratch, vendar veliko manj grafična, a ironično, če 377 00:16:52,390 --> 00:16:54,730 močnejša, ko boste dobili zdrava pamet z njim. 378 00:16:54,730 --> 00:16:58,970 Torej v C, pišemo programe za pisanje izvorne kode, ki je 379 00:16:58,970 --> 00:17:01,640 To Angleški podobno skladnjo, podobno kot nogavice 380 00:17:01,640 --> 00:17:05,609 dokaz, da smo naredili zadnji čas, da vam omogoča, da 381 00:17:05,609 --> 00:17:07,910 izraziti sebe dokaj natančno, če 382 00:17:07,910 --> 00:17:09,760 arcanely, na računalnik. 383 00:17:09,760 --> 00:17:11,960 >> Torej, kakšno programsko opremo izdelka vam dejansko potrebujejo 384 00:17:11,960 --> 00:17:15,520 pisati programe v jeziku, kot je C, ki temelji na našem 385 00:17:15,520 --> 00:17:17,492 pogovor v ponedeljek? 386 00:17:17,492 --> 00:17:19,650 [Neslišno] 387 00:17:19,650 --> 00:17:21,079 OK, morate samo urejevalnik besedil. 388 00:17:21,079 --> 00:17:22,890 Vi ne potrebujete nobene posebne programske opreme 389 00:17:22,890 --> 00:17:24,460 per pisati programe. 390 00:17:24,460 --> 00:17:27,220 Potrebuješ samo urejevalnik besedila, kot Beležnica, v operacijskem sistemu Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit na Mac ali nekaj, kar ti gedit v svetu 392 00:17:30,450 --> 00:17:32,020 Linux, ki jih bomo uporabili tukaj. 393 00:17:32,020 --> 00:17:33,750 In to je to, da napišete programe. 394 00:17:33,750 --> 00:17:35,480 >> Toda pisanje je le polovica enačbe. 395 00:17:35,480 --> 00:17:36,630 Nato jih moramo teči. 396 00:17:36,630 --> 00:17:38,320 Ampak, da za izvajanje programov - 397 00:17:38,320 --> 00:17:39,600 ne morete zagnati izvorno kodo. 398 00:17:39,600 --> 00:17:41,500 Če namesto tega narediti kaj z njim najprej? 399 00:17:41,500 --> 00:17:41,900 Ja. 400 00:17:41,900 --> 00:17:43,200 David J. Malan: Moraš se 401 00:17:43,200 --> 00:17:44,130 njihovo zbiranje. 402 00:17:44,130 --> 00:17:49,010 In nekdo, zbiranje izvorne kode pomeni - 403 00:17:49,010 --> 00:17:50,260 [Neslišno] 404 00:17:52,300 --> 00:17:52,700 David J. Malan: Točno tako. 405 00:17:52,700 --> 00:17:54,430 Prevedli v ničel in enic. 406 00:17:54,430 --> 00:17:57,150 Zaradi vseh nas, v teh dneh, so računalniki, ki imajo procesorje, 407 00:17:57,150 --> 00:18:00,350 so skoraj vsi, ki so jih podjetje, imenovano Intel, in 408 00:18:00,350 --> 00:18:03,320 Intel Inside, pomeni, da je to beg v notranjosti vašega 409 00:18:03,320 --> 00:18:04,990 Računalnik, znan kot CPU. 410 00:18:04,990 --> 00:18:07,570 In ena od stvari, ki da možgani počne je, da ve, 411 00:18:07,570 --> 00:18:10,390 kako razumeti vzorce ničel in enic. 412 00:18:10,390 --> 00:18:13,240 Ve, kaj se vzorec bitov predstavlja dodatek, kaj 413 00:18:13,240 --> 00:18:15,500 vzorec predstavlja odštevanja, kaj vzorec 414 00:18:15,500 --> 00:18:18,890 bitov predstavljajo tiskanje in ustvarjanje zvočno zvok. 415 00:18:18,890 --> 00:18:22,450 >> Torej na kratko, CPU, skupaj z operacijskim sistemom, 416 00:18:22,450 --> 00:18:25,230 , ki je del programske opreme, ki teče na vrhu CPU, 417 00:18:25,230 --> 00:18:26,050 tako rekoč. 418 00:18:26,050 --> 00:18:29,850 Skupaj ta dva kosa vem, kako delujejo programi, da 419 00:18:29,850 --> 00:18:31,070 mi ljudje pišejo. 420 00:18:31,070 --> 00:18:34,040 >> Torej, če sem šel v CS50 Appliance tukaj, moram odpreti 421 00:18:34,040 --> 00:18:35,660 se urejevalnik besedila, in sem lahko dostop do teh 422 00:18:35,660 --> 00:18:36,560 V nekaj načinov. 423 00:18:36,560 --> 00:18:39,060 Lahko bodisi pojdite v Meni, programiranje, 424 00:18:39,060 --> 00:18:40,230 in potem sem lahko izberite - 425 00:18:40,230 --> 00:18:40,810 nope, ne da meni. 426 00:18:40,810 --> 00:18:43,860 Lahko grem oprema / gedit tukaj, da odprete 427 00:18:43,860 --> 00:18:45,090 moj mali urejevalnik besedila. 428 00:18:45,090 --> 00:18:48,030 Ali bolj preprosto, lahko kliknete to malo ikono na dnu 429 00:18:48,030 --> 00:18:48,970 levi ovinek. 430 00:18:48,970 --> 00:18:50,430 In zdaj sem dobil to okolje tukaj. 431 00:18:50,430 --> 00:18:52,590 To je precej spominja na navadno urejevalnik besedila, s samo 432 00:18:52,590 --> 00:18:53,820 eno ali dve razlike. 433 00:18:53,820 --> 00:18:56,420 Na vrhu, kjer je kazalec utripa zdaj, to je, če 434 00:18:56,420 --> 00:18:57,900 Lahko začnete pisati svojo kodo. 435 00:18:57,900 --> 00:19:00,415 Na dnu je ta stvar imenovano terminala okno. 436 00:19:00,415 --> 00:19:03,400 In kakšne stvari lahko storim v tem 437 00:19:03,400 --> 00:19:04,960 ti terminalsko okno? 438 00:19:04,960 --> 00:19:06,680 [Neslišno] 439 00:19:06,680 --> 00:19:07,890 >> Ok, bom pognal ukaze. 440 00:19:07,890 --> 00:19:10,300 In nekateri ukazi smo zagnali v ponedeljek, so malo 441 00:19:10,300 --> 00:19:15,070 Cryptic na prvi, ampak ls za seznam, cd imenik za spremembe, 442 00:19:15,070 --> 00:19:16,540 rm za odstranitev. 443 00:19:16,540 --> 00:19:19,680 Torej, to je neke vrste old-school način Krmarjenje 444 00:19:19,680 --> 00:19:22,310 Računalnik, ki uporablja le tipkovnice in tekstovnih ukazov, 445 00:19:22,310 --> 00:19:24,130 in ne, na splošno, z miško. 446 00:19:24,130 --> 00:19:25,960 Ampak bomo videli, prej ali slej, to je dejansko nam 447 00:19:25,960 --> 00:19:28,520 malo več moči in malo bolj natančno, s katerimi se 448 00:19:28,520 --> 00:19:29,600 izraziti sebe. 449 00:19:29,600 --> 00:19:31,330 In potem sem na levi strani, smo le, da bo videl, 450 00:19:31,330 --> 00:19:34,360 kot smo začeli pisanje programske opreme, malo povzetek od 451 00:19:34,360 --> 00:19:36,350 Program, ki smo jih napisal v zgornjem levem kotu. 452 00:19:36,350 --> 00:19:38,360 Ampak bomo videli, da spet kmalu. 453 00:19:38,360 --> 00:19:40,050 >> Torej, kaj je naredil nekaj precej enostavno tukaj. 454 00:19:40,050 --> 00:19:43,440 Naj najprej gredo naprej in pojdite na File, Save, in sem samo 455 00:19:43,440 --> 00:19:45,970 dogaja, da kliknete na jharvard tukaj, pa na levi, 456 00:19:45,970 --> 00:19:48,930 jharvard je spet ime za mojo domačo mapo, joj 457 00:19:48,930 --> 00:19:52,110 osebne mape, meni, zdaj pa John Harvard, kot vsi vi 458 00:19:52,110 --> 00:19:54,230 Kmalu bo John Harvard v tem okolju. 459 00:19:54,230 --> 00:19:57,360 Ima to Domači imenik Moji dokumenti in tako naprej, 460 00:19:57,360 --> 00:19:58,900 , ki ga želim rešiti, zdaj pa to sliko noter 461 00:19:58,900 --> 00:20:01,520 Torej bom, da ga pokličete hello.c. Potem sem šel 462 00:20:01,520 --> 00:20:05,770 naprej in kliknite Shrani in kaj zdaj imam tukaj je kartica 463 00:20:05,770 --> 00:20:09,440 imenovano hello.c, toliko kot druge vrste urednik. 464 00:20:09,440 --> 00:20:11,760 >> Torej, zdaj pa grem naprej in začnite pisati program. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 In potem sem naredil zadnjič, printf za tisk oblikovana, 467 00:20:18,150 --> 00:20:22,120 ("Pozdravljen svet!" 468 00:20:22,120 --> 00:20:24,500 ). 469 00:20:24,500 --> 00:20:25,630 Skoraj končana. 470 00:20:25,630 --> 00:20:27,130 Ampak mi manjka še nekaj podrobnosti. 471 00:20:27,130 --> 00:20:30,210 Kaj manjka v tem programu, ki sem jo zares potrebujejo za 472 00:20:30,210 --> 00:20:31,890 je dejansko prevedite? 473 00:20:31,890 --> 00:20:32,130 Ja. 474 00:20:32,130 --> 00:20:33,980 [Neslišno]? 475 00:20:33,980 --> 00:20:35,770 >> David J. Malan: Ja, tako da moram tudi standard 476 00:20:35,770 --> 00:20:36,700 I / O knjižnici. 477 00:20:36,700 --> 00:20:39,470 Torej, to pa je treba iti nad glavno, tako da sem le, da bo 478 00:20:39,470 --> 00:20:40,790 naredite nekaj prostora za njo tam. 479 00:20:40,790 --> 00:20:44,420 In jaz bom storil # include . 480 00:20:44,420 --> 00:20:46,570 In opazil kotne oklepaje tam. 481 00:20:46,570 --> 00:20:49,410 In kot prahi, gedit je malo prijazen do uporabnika, če 482 00:20:49,410 --> 00:20:52,420 včasih malo zmedeno, v tem, da poskuša pomagati vaš 483 00:20:52,420 --> 00:20:54,770 Oči opažati linije z kakšnimi. 484 00:20:54,770 --> 00:20:57,760 Zato je dejstvo, da je moj kazalec zraven tega kotno 485 00:20:57,760 --> 00:21:00,600 nosilec, opazili, kako se je poudariti drugo kotno 486 00:21:00,600 --> 00:21:01,920 Nosilec plus tega. 487 00:21:01,920 --> 00:21:03,770 In to je samo, naj svojo pozornost na dejstvo, da sem 488 00:21:03,770 --> 00:21:04,460 ima simetrijo. 489 00:21:04,460 --> 00:21:07,010 In simetrije pri programiranju je na splošno dobra stvar. 490 00:21:07,010 --> 00:21:10,270 Podobno je, če sem premakniti svoj kazalec na koncu ugotovi, kako 491 00:21:10,270 --> 00:21:13,630 Zaviti oklepaji line up dokazati, da, da, imam odprt 1 492 00:21:13,630 --> 00:21:15,160 in zaprta 1, če se tako izrazim. 493 00:21:15,160 --> 00:21:16,640 >> V redu, in sem lahko naredil še eno stvar. 494 00:21:16,640 --> 00:21:20,090 To ni nujno potrebno, ampak dobra praksa, in sicer 495 00:21:20,090 --> 00:21:21,250 0 vrne. 496 00:21:21,250 --> 00:21:24,140 In return 0 počne kaj za nas? 497 00:21:24,140 --> 00:21:25,584 Ali pomeni kaj? 498 00:21:25,584 --> 00:21:27,480 [Neslišno] 499 00:21:27,480 --> 00:21:28,300 David J. Malan: Ampak ni nič narobe. 500 00:21:28,300 --> 00:21:30,280 In odkrito povedano, da je težko za veliko iti narobe 501 00:21:30,280 --> 00:21:31,250 Program Ta kratek. 502 00:21:31,250 --> 00:21:33,930 Torej, jaz sem samo da zelo jasno, da je vse v redu. 503 00:21:33,930 --> 00:21:36,740 Jaz, človek, ko sem teči ta program, bo verjetno nikoli 504 00:21:36,740 --> 00:21:38,150 glej, da se 0. 505 00:21:38,150 --> 00:21:41,070 Na splošno so te številke, da se vrne iz glavnega 506 00:21:41,070 --> 00:21:43,540 Samo vzredijo svoje glave za ljudi, kadar 507 00:21:43,540 --> 00:21:44,360 gre kaj narobe. 508 00:21:44,360 --> 00:21:46,640 In dobiš malo pop up rekel sistemske napake, 1, 509 00:21:46,640 --> 00:21:48,760 2, 3, ali ne glede na število, ki je bila 510 00:21:48,760 --> 00:21:50,100 je dejansko vrnil. 511 00:21:50,100 --> 00:21:52,870 Torej, kaj je narobe s tem? 512 00:21:52,870 --> 00:21:55,300 [Neslišno] 513 00:21:55,300 --> 00:21:58,100 >> David J. Malan: To ni toliko funkcionalna napaka 514 00:21:58,100 --> 00:21:59,240 vendar estetsko. 515 00:21:59,240 --> 00:22:02,340 Verjetno bi dal v znak za novo vrstico tam na 516 00:22:02,340 --> 00:22:05,240 Ob koncu tega niza, tako da smo dejansko premaknete kazalec 517 00:22:05,240 --> 00:22:08,340 naslednja vrstica, program pa samo izgleda malo lepši. 518 00:22:08,340 --> 00:22:10,340 >> Torej, zdaj pa grem na moj terminalsko okno 519 00:22:10,340 --> 00:22:11,490 in zoom nazaj noter 520 00:22:11,490 --> 00:22:13,390 In ta stvar tukaj, se imenuje poziv. 521 00:22:13,390 --> 00:22:16,760 To me spominja, kdo sem, jharvard @ aparata, kjer je 522 00:22:16,760 --> 00:22:18,850 Aparat je ime računalnika, sem na. 523 00:22:18,850 --> 00:22:22,380 V oklepaju je to Tilda je squiggle simbol, ki 524 00:22:22,380 --> 00:22:24,160 pomeni kaj? 525 00:22:24,160 --> 00:22:25,590 OBČINSTVO: domačega imenika. 526 00:22:25,590 --> 00:22:26,350 David J. Malan: domačega imenika. 527 00:22:26,350 --> 00:22:29,350 Torej, to je samo okrajšava za zapis pravi, da ste v 528 00:22:29,350 --> 00:22:32,780 vaša osebna mapa, v kateri vse datoteke kraju privzeto. 529 00:22:32,780 --> 00:22:36,080 Torej, zdaj, tukaj, lahko vnesete ls za seznam. 530 00:22:36,080 --> 00:22:40,020 In edina stvar, ki sem videl tukaj, v tem trenutku je hello.c. 531 00:22:40,020 --> 00:22:41,770 In to je dobro, ker sem to napisal. 532 00:22:41,770 --> 00:22:44,380 >> Torej, naj gredo naprej in ne bo pozdravil. 533 00:22:44,380 --> 00:22:46,830 In opazil sem, da ne tipkate hello.c. 534 00:22:46,830 --> 00:22:50,300 Namesto tega sem samo tipkanje osnovno ime datoteke, prosim. 535 00:22:50,300 --> 00:22:53,690 In da, kot smo videli v ponedeljek, bo le sklepamo, da želim 536 00:22:53,690 --> 00:22:54,920 c datoteko.. 537 00:22:54,920 --> 00:22:56,820 Torej, zdaj sem tipkal, da zdravo. 538 00:22:56,820 --> 00:22:59,280 Zdaj vidim to precej dolgo ukaz in bo še naprej 539 00:22:59,280 --> 00:23:00,480 vidite to znova in znova. 540 00:23:00,480 --> 00:23:03,620 Vendar mora biti jasno, Jek, je beseda, ki jo pravkar pojavil, 541 00:23:03,620 --> 00:23:05,340 To je dejansko prevajalnik. 542 00:23:05,340 --> 00:23:08,200 Znamka je le pripomoček graditi. 543 00:23:08,200 --> 00:23:11,900 To je samo bolj uporabniku prijazen program, ki me reši v 544 00:23:11,900 --> 00:23:15,310 Dolgoročno, ki imajo za vrsto iz neverjetno dolgočasno dolgo 545 00:23:15,310 --> 00:23:17,020 Ukazi, kot je ta. 546 00:23:17,020 --> 00:23:18,950 Torej, lahko zaženete ročno Jek. 547 00:23:18,950 --> 00:23:20,530 Lahko vnesete vse to ročno. 548 00:23:20,530 --> 00:23:21,580 Tako postane zelo dolgočasno. 549 00:23:21,580 --> 00:23:24,720 In tako se je le program, ki poenostavlja naše življenje in 550 00:23:24,720 --> 00:23:27,120 poteka bolj zapletenih ukazov za nas. 551 00:23:27,120 --> 00:23:29,410 >> V redu, kaj pa zdaj datoteko moram imeti 552 00:23:29,410 --> 00:23:31,540 v mojem trenutnem imeniku? 553 00:23:31,540 --> 00:23:36,310 Ne samo hello.c, temveč tudi zdravo. 554 00:23:36,310 --> 00:23:39,710 Torej, če želim teči zdravo, opozarjajo, da sem rekel dot poševnice, 555 00:23:39,710 --> 00:23:42,220 če dot sredstva gredo v trenutni mapi, kjerkoli že ste 556 00:23:42,220 --> 00:23:46,060 so, in nato zaženite program, imenovan zdravo, in res, zdaj, 557 00:23:46,060 --> 00:23:48,080 Imam zdravo svet. 558 00:23:48,080 --> 00:23:51,640 V redu, na vsa vprašanja o poteku ali sintaksa 559 00:23:51,640 --> 00:23:52,890 kaj smo pravkar naredil? 560 00:23:55,380 --> 00:23:57,040 >> V redu, tako da je lahko stvari zarezo znova. 561 00:23:57,040 --> 00:24:00,430 Torej, to je underwhelming, da samo napisati program, ki samo 562 00:24:00,430 --> 00:24:01,790 ne reče zdravo, svet. 563 00:24:01,790 --> 00:24:03,920 Zato smo jo spremenili v ponedeljek povedal, halo, David. 564 00:24:03,920 --> 00:24:06,560 To je malo bolj osebno, ampak ravno tako težko šifre 565 00:24:06,560 --> 00:24:07,410 Prva različica. 566 00:24:07,410 --> 00:24:08,780 Torej sploh ni tako prepričljiv. 567 00:24:08,780 --> 00:24:13,120 Toda obstaja v C funkcije zagotovo poleg 568 00:24:13,120 --> 00:24:15,700 tiskanje funkcije, ki vam omogočajo, da se vnos uporabnika. 569 00:24:15,700 --> 00:24:17,990 In kako bomo to naredili, drugi dan, je bil naslednji. 570 00:24:17,990 --> 00:24:21,440 Preden sem dejansko natisniti nekaj, sem prvič dobil 571 00:24:21,440 --> 00:24:22,410 Nekaj ​​od uporabnika. 572 00:24:22,410 --> 00:24:23,370 Torej, kaj mi to še enkrat. 573 00:24:23,370 --> 00:24:26,580 >> String s, kjer je le poljubno ime, tukaj, na 574 00:24:26,580 --> 00:24:30,600 string, enako GetString. 575 00:24:30,600 --> 00:24:32,070 Torej, kaj je GetString? 576 00:24:32,070 --> 00:24:34,630 Očitno dobi niz, ki temelji na njeno ime. 577 00:24:34,630 --> 00:24:37,560 Ampak kaj je bolj tehnično? 578 00:24:37,560 --> 00:24:38,440 To funkcijo. 579 00:24:38,440 --> 00:24:41,790 Torej je funkcija, ki ne prihaja z C po sebi. 580 00:24:41,790 --> 00:24:43,660 CS50 osebje to napisal. 581 00:24:43,660 --> 00:24:46,940 In tako, da brez tega, ne moreš kar vključuje stdio.h, 582 00:24:46,940 --> 00:24:49,630 Prav tako je treba tudi kaj? 583 00:24:49,630 --> 00:24:50,060 Ja. 584 00:24:50,060 --> 00:24:54,210 Torej cs50.h, ki je le datoteka smo pisali pred nekaj leti. 585 00:24:54,210 --> 00:24:57,130 Mi ga namestili na napravi za vas poleg 586 00:24:57,130 --> 00:24:58,490 vse standardne datoteke. 587 00:24:58,490 --> 00:25:00,500 In tako se v teh prvih nekaj tednih po razredu, bomo uporabili 588 00:25:00,500 --> 00:25:02,820 samo, da bi poenostavili proces gre zelo osnovni 589 00:25:02,820 --> 00:25:04,600 stvari, kot so dobili navodilo za vnos. 590 00:25:04,600 --> 00:25:07,370 Ker, kot bomo videli v nekaj tednih dobili navodilo za vnos v 591 00:25:07,370 --> 00:25:10,180 jezik C, kot je pravzaprav presenetljivo zapletena, 592 00:25:10,180 --> 00:25:14,360 zlasti zato, ker ne veš vnaprej, običajno, kako 593 00:25:14,360 --> 00:25:17,030 veliko stvari si bo tip noter 594 00:25:17,030 --> 00:25:20,340 In če ne veš, koliko podatkov lahko pričakujem, da ne 595 00:25:20,340 --> 00:25:22,380 vedeti, koliko pomnilnika za dodelitev. 596 00:25:22,380 --> 00:25:25,480 In če imate celo kontradiktornost, ki si je poskušal 597 00:25:25,480 --> 00:25:28,180 vdreti v sistem, crash računalnik, no, 598 00:25:28,180 --> 00:25:31,600 na splošno je prvi način napada je, kot sem storil, o 599 00:25:31,600 --> 00:25:34,950 Ponedeljek, vnesite celotno dolgo zaporedje naključnih znakov, 600 00:25:34,950 --> 00:25:37,020 pritisnite tipko Enter, in videti, kaj zlomi. 601 00:25:37,020 --> 00:25:40,800 Ker na splošno, če je program olajšav, ki namiguje na 602 00:25:40,800 --> 00:25:42,650 varnostna pomanjkljivost, kar lahko. 603 00:25:42,650 --> 00:25:45,250 Prav gotovo namiguje na vas, programer, potem ko je 604 00:25:45,250 --> 00:25:49,050 napaka, ampak bolj nevarno, morda so se 605 00:25:49,050 --> 00:25:52,430 povezanih z varnostjo napaka, in na splošno bomo videli, da 606 00:25:52,430 --> 00:25:54,840 to je, kako so stroji ogrožena na ta dan, tako 607 00:25:54,840 --> 00:25:56,620 v svetu spleta in programe na 608 00:25:56,620 --> 00:25:58,070 ukazni vrstici, kot je ta. 609 00:25:58,070 --> 00:25:58,350 >> V redu. 610 00:25:58,350 --> 00:26:00,460 Torej niz je enak GetString. 611 00:26:00,460 --> 00:26:03,380 Torej, bolj konkretno zdaj, kaj linija 6 tukaj? 612 00:26:03,380 --> 00:26:05,640 Torej je funkcija na desni dobi niz, 613 00:26:05,640 --> 00:26:06,890 meni, koliko argumentov? 614 00:26:09,458 --> 00:26:09,900 Ok. 615 00:26:09,900 --> 00:26:10,400 Torej nič. 616 00:26:10,400 --> 00:26:11,360 Malo Razum preveriti. 617 00:26:11,360 --> 00:26:15,380 Trditev, spet je le vhod na funkcijo za spreminjanje 618 00:26:15,380 --> 00:26:17,250 njeno privzeto vedenje na nek način. 619 00:26:17,250 --> 00:26:19,540 Ampak v tem primeru, ne želim spremeniti 620 00:26:19,540 --> 00:26:20,650 obnašanje GetString. 621 00:26:20,650 --> 00:26:22,430 Želel sem, da bi dobili niz. 622 00:26:22,430 --> 00:26:25,190 Zato sem dal ničesar v oklepaju, potem pa sem dal 623 00:26:25,190 --> 00:26:27,550 podpičje demarking konec vrstice kode. 624 00:26:27,550 --> 00:26:29,840 Zdaj, enačaj ne pomeni enako, samo po sebi. 625 00:26:29,840 --> 00:26:32,690 To pomeni odstop, kar pomeni, da naj kar pride 626 00:26:32,690 --> 00:26:36,060 izhodne na desni notranji strani, kar je na levi strani. 627 00:26:36,060 --> 00:26:39,400 >> Torej, na levi strani, smo rekli, da smo prijavljeni 628 00:26:39,400 --> 00:26:41,630 Niz se imenuje i. 629 00:26:41,630 --> 00:26:44,240 In še posebej, smo dodeljen spomin znotraj 630 00:26:44,240 --> 00:26:46,340 ki jih bomo dal bitov, ki predstavlja zaporedje 631 00:26:46,340 --> 00:26:46,850 znake. 632 00:26:46,850 --> 00:26:49,400 Ampak danes smo dodeljena 633 00:26:49,400 --> 00:26:51,450 ali razglasijo za niz. 634 00:26:51,450 --> 00:26:51,790 V redu. 635 00:26:51,790 --> 00:26:54,760 Torej, zdaj, ko sem to naredil, bi rad, da bi zapolnili vrednosti 636 00:26:54,760 --> 00:26:56,535 i, ne pa vrednost Davida. 637 00:26:56,535 --> 00:27:00,200 Torej, to je narobe, zakaj? 638 00:27:03,060 --> 00:27:04,870 Torej, to je samo dobesedno težko kodirane s. 639 00:27:04,870 --> 00:27:06,870 To je rekel "zdravo, s", ki ni tisto, kar si želim. 640 00:27:06,870 --> 00:27:07,790 Torej, lahko to storim. 641 00:27:07,790 --> 00:27:10,330 Odstotek znak ograda, zdaj pa moram 642 00:27:10,330 --> 00:27:12,520 prehaja v natisniti drugo trditvijo. 643 00:27:12,520 --> 00:27:15,160 Spomnimo se, da so argumenti, ločeni s funkcijami 644 00:27:15,160 --> 00:27:20,300 vejice, tako da naslednjič, vejica tukaj sem dal po tem črko s. 645 00:27:20,300 --> 00:27:23,740 In v tem kontekstu zdaj, je je spremenljivka, in printf, 646 00:27:23,740 --> 00:27:25,550 po prejemu teh dveh vhodov - 647 00:27:25,550 --> 00:27:29,440 niz na levi in ​​spremenljive ime je na desno - 648 00:27:29,440 --> 00:27:32,750 da bo zapolnila slednji v nekdanji za nas, 649 00:27:32,750 --> 00:27:34,600 Samo izpisal lep lep niz, ki vsebuje 650 00:27:34,600 --> 00:27:36,770 karkoli že je, da vtipka 651 00:27:36,770 --> 00:27:37,560 >> Torej, kaj je poskusiti. 652 00:27:37,560 --> 00:27:38,860 Going, da gredo naprej in pomanjšanje nazaj 653 00:27:38,860 --> 00:27:40,250 po mojem terminalskem oknu. 654 00:27:40,250 --> 00:27:41,840 Povečajte na dnu tukaj. 655 00:27:41,840 --> 00:27:44,070 Znova vnesite bo pozdravil. 656 00:27:44,070 --> 00:27:45,870 Zvoka se zdi, da so bila ponovljena. 657 00:27:45,870 --> 00:27:49,280 Grem na vrsto. / Zdravo, Enter. 658 00:27:49,280 --> 00:27:52,145 Nič se zdi, da se še dogaja, vendar je na ta poziv 659 00:27:52,145 --> 00:27:55,700 da sem lahko vnesete nekaj podobnega Nate, Enter in sedaj imamo 660 00:27:55,700 --> 00:27:56,380 Zdravo, Nate. 661 00:27:56,380 --> 00:27:59,600 In lahko to storite še enkrat z roba, in tako naprej. 662 00:27:59,600 --> 00:28:03,410 Torej, upam, da zdaj ta program obnaša kot nameravam. 663 00:28:03,410 --> 00:28:05,720 >> No, ne vsi, da je prijazen do uporabnika. 664 00:28:05,720 --> 00:28:07,930 Pojma nimam, kaj se je se pričakuje od mene. 665 00:28:07,930 --> 00:28:09,620 Tako bomo lahko zagotovo očistiti to gor malo. 666 00:28:09,620 --> 00:28:13,270 Naj grem nazaj gor, in namesto le potapljanje in 667 00:28:13,270 --> 00:28:16,480 prosi uporabnika za vrvico, naj jasno povedati 668 00:28:16,480 --> 00:28:17,750 si tisto, kar sem pričakoval. 669 00:28:17,750 --> 00:28:21,610 Torej printf ("Vnesi niz:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Torej ne spremenljivke tukaj. 672 00:28:25,510 --> 00:28:26,750 Ni znaki za odstotek. 673 00:28:26,750 --> 00:28:28,550 Tako enostavno Angleški izraz. 674 00:28:28,550 --> 00:28:34,030 Naj zdaj iti na dno tukaj in znova moj program. 675 00:28:34,030 --> 00:28:35,380 Ampak nič ne zdi, da so se spremenile. 676 00:28:35,380 --> 00:28:37,350 Zakaj? 677 00:28:37,350 --> 00:28:38,380 Moram ga prevedem. 678 00:28:38,380 --> 00:28:39,570 Tako enostavno narediti napako. 679 00:28:39,570 --> 00:28:41,700 Ampak moraš ne samo shranite, vendar 680 00:28:41,700 --> 00:28:43,260 prevesti programa. 681 00:28:43,260 --> 00:28:46,640 In tako, če sem ponovno zagnati, da zdravo, zdaj teče Jek. 682 00:28:46,640 --> 00:28:51,800 Sedaj lahko tečem. / Zdravo. In sedaj vidim "Vpišite niz:". 683 00:28:51,800 --> 00:28:52,050 Ok. 684 00:28:52,050 --> 00:28:53,440 Zdaj je malo bolj uporabniku prijazen. 685 00:28:53,440 --> 00:28:55,850 Nate, vnesite Zdravo, Nate. 686 00:28:55,850 --> 00:28:57,310 >> No, poskusimo še enkrat in začeti razmišljati 687 00:28:57,310 --> 00:28:58,080 O kotiček primerih. 688 00:28:58,080 --> 00:29:00,520 Torej, tako kot v Scratch, vas spodbuja ali pa 689 00:29:00,520 --> 00:29:03,180 spodbujati spec za neke vrste razmišljati o tem, kaj bi lahko šla 690 00:29:03,180 --> 00:29:06,610 narobe, če ne pričakujemo vse, kar si lahko storijo. 691 00:29:06,610 --> 00:29:08,050 Bugs, zato bi lahko nastale. 692 00:29:08,050 --> 00:29:09,710 Torej vpišite niz - 693 00:29:09,710 --> 00:29:11,130 Kaj je kotiček tem primeru? 694 00:29:11,130 --> 00:29:13,320 Kaj je scenarij, da sem programer, ne bi imeli 695 00:29:13,320 --> 00:29:16,070 pričakujemo? 696 00:29:16,070 --> 00:29:17,600 Ja. 697 00:29:17,600 --> 00:29:17,920 Ok. 698 00:29:17,920 --> 00:29:22,060 Pa kaj, če sem tipa v vrsti, kot je ta? 699 00:29:22,060 --> 00:29:22,500 V redu. 700 00:29:22,500 --> 00:29:24,490 Torej, še vedno deluje. 701 00:29:24,490 --> 00:29:25,880 Gramatically nima smisla. 702 00:29:25,880 --> 00:29:27,180 Ampak vsaj program deluje. 703 00:29:27,180 --> 00:29:28,650 >> Kaj je še en kotiček primer? 704 00:29:28,650 --> 00:29:29,610 Nekaj ​​nisem pričakoval. 705 00:29:29,610 --> 00:29:31,590 Ja? 706 00:29:31,590 --> 00:29:31,940 Ok. 707 00:29:31,940 --> 00:29:34,950 Tako bi lahko storil kaj takega res, res veliko število. 708 00:29:34,950 --> 00:29:37,270 Torej, kaj je to tukaj. 709 00:29:37,270 --> 00:29:40,880 Naj pomanjšati za 2. Naj izpostaviti. 710 00:29:40,880 --> 00:29:42,250 Ne morem kopirati in prilepiti tukaj. 711 00:29:42,250 --> 00:29:42,470 V redu. 712 00:29:42,470 --> 00:29:44,440 Torej, ne morem kopirati in prilepiti v tem terminalskem oknu, zato bom 713 00:29:44,440 --> 00:29:46,950 samo simulirajo. 714 00:29:46,950 --> 00:29:51,340 Naj pomanjšati, gre za zavijanje. 715 00:29:51,340 --> 00:29:52,700 Jaz ne grem v to predolgo, saj ne bo 716 00:29:52,700 --> 00:29:54,440 dejansko prekinil v tem programu. 717 00:29:54,440 --> 00:29:55,260 Vendar pa lahko. 718 00:29:55,260 --> 00:29:55,830 Enter. 719 00:29:55,830 --> 00:29:56,580 Ampak to ni. 720 00:29:56,580 --> 00:29:57,050 V redu. 721 00:29:57,050 --> 00:29:58,440 Ampak to je pravi kotiček primer. 722 00:29:58,440 --> 00:30:01,610 In edini razlog, da je ravnala pravilno, tako da 723 00:30:01,610 --> 00:30:05,820 govoriti, je zato, ker CS50 funkcija GetString je dejansko 724 00:30:05,820 --> 00:30:08,040 oblikovana pod pokrovom motorja, kot bomo videli v nekaj tednih, 725 00:30:08,040 --> 00:30:11,570 samodejno dodeli več in več RAM, vse več 726 00:30:11,570 --> 00:30:14,330 pomnilnik operacijskega sistema, ko je opazila, wow, 727 00:30:14,330 --> 00:30:16,670 ste res vnesli nekaj precej dolgo. 728 00:30:16,670 --> 00:30:18,500 No, to je malo belo laž. 729 00:30:18,500 --> 00:30:22,020 Če smo dejansko zaustavljena že kar nekaj časa in sem tipkal v 730 00:30:22,020 --> 00:30:24,640 nekaj podobnega 5000000000 znakov na tipkovnici 731 00:30:24,640 --> 00:30:28,060 tukaj, ali res hit copy-paste zelo malo, smo zelo verjetno 732 00:30:28,060 --> 00:30:29,730 lahko povzroči, da program sesuje. 733 00:30:29,730 --> 00:30:32,130 Samo malo težje, da simulira, da je s končno 734 00:30:32,130 --> 00:30:33,740 časa. 735 00:30:33,740 --> 00:30:37,320 >> Kaj drugega kota tako, da bi lahko poskusil? 736 00:30:37,320 --> 00:30:38,730 Ja? 737 00:30:38,730 --> 00:30:39,020 Ja. 738 00:30:39,020 --> 00:30:40,360 Torej, zakaj ne bomo odgovorili nič? 739 00:30:40,360 --> 00:30:43,130 Tako smo dejansko morali sprejeti nekaj ukrepov, saj bi v nasprotnem 740 00:30:43,130 --> 00:30:45,060 Program se bo tam sedel utripa ves dan. 741 00:30:45,060 --> 00:30:46,860 Ampak, če sem Enter - 742 00:30:46,860 --> 00:30:48,780 V redu, zdaj pa še vedno izgleda narobe. 743 00:30:48,780 --> 00:30:51,670 Ni crash, ampak morda je zdaj priložnost, da se 744 00:30:51,670 --> 00:30:54,190 začeti izvajati bolj strog program 745 00:30:54,190 --> 00:30:55,290 ki dejansko preveri. 746 00:30:55,290 --> 00:30:57,640 In če je niz, stavek, beseda, ki sem 747 00:30:57,640 --> 00:31:00,890 vnesli v ima dolžino 0, no, mogoče bi moral kričati hotelu 748 00:31:00,890 --> 00:31:03,770 uporabnik, ali mu povedati, ali ji vnesti niz še enkrat, tako da je 749 00:31:03,770 --> 00:31:06,560 smo dejansko dobili tisto, kar izgleda pravilno obnašanje in ne 750 00:31:06,560 --> 00:31:08,570 Samo popoln nadzor na moji strani. 751 00:31:08,570 --> 00:31:11,130 >> Vprašanje v hrbet? 752 00:31:11,130 --> 00:31:11,970 Decimalno število. 753 00:31:11,970 --> 00:31:13,120 Tako naj bi poskušali tudi to. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Izgleda, da se bo to dejansko samo delam prav. 756 00:31:19,470 --> 00:31:21,160 In to je pravzaprav pričakovano. 757 00:31:21,160 --> 00:31:24,550 Čeprav morda smo vnesli to številko tam, ali 758 00:31:24,550 --> 00:31:28,200 večje število prej, ko smo ugotovili, da tipkate uporabnika 759 00:31:28,200 --> 00:31:31,070 vhod in smo z uporabo GetString funkcijo, ne 760 00:31:31,070 --> 00:31:34,380 glede na to, kaj sem tipkanje zgleda kot število. 761 00:31:34,380 --> 00:31:36,720 Spomnimo, da je v skladu z ASCII, vse, kar je na vašem 762 00:31:36,720 --> 00:31:39,920 Tipkovnica ima številčno vrednost, ki se lahko preslikan 763 00:31:39,920 --> 00:31:41,480 znak, znak. 764 00:31:41,480 --> 00:31:44,490 Torej v tem primeru, čeprav bi jaz vnesite številko, 765 00:31:44,490 --> 00:31:48,190 Računalnik se bo spomnil, da se tako izrazim, kot niz - 766 00:31:48,190 --> 00:31:49,870 nekaj, kar izgleda kot nekaj, vendar je 767 00:31:49,870 --> 00:31:51,090 dejansko ni več. 768 00:31:51,090 --> 00:31:53,450 Ampak to je pravzaprav popoln segue, ker zdaj smo lahko 769 00:31:53,450 --> 00:31:55,450 dejansko prehod za pisanje programov, ki 770 00:31:55,450 --> 00:31:56,730 uporabljajo druge vrste podatkov. 771 00:31:56,730 --> 00:32:01,840 >> Torej, poleg uporabo znakov, ali bolje, poleg uporabo nizov, 772 00:32:01,840 --> 00:32:04,510 zavedati, da imamo druge vrste podatkov v C kot tudi v 773 00:32:04,510 --> 00:32:05,230 drugih jezikih. 774 00:32:05,230 --> 00:32:08,480 Char, kot že ime pove, je le en sam znak. 775 00:32:08,480 --> 00:32:12,150 Plovec je plavajoča vrednost točke, in da je samo fancy 776 00:32:12,150 --> 00:32:14,470 besedami realno število - kar je decimalno vejico 777 00:32:14,470 --> 00:32:17,410 točka v njej z nekaj številkami, levo in / ali desno. 778 00:32:17,410 --> 00:32:21,370 Int je celo število, ki je prav tako kot število 123. 779 00:32:21,370 --> 00:32:24,170 In zdaj bolj zanimivo, so stvari, kot so dvojno. 780 00:32:24,170 --> 00:32:28,540 Kaj smo rekli dvakrat je bil nazadnje? 781 00:32:28,540 --> 00:32:30,050 To je 64, kajne. 782 00:32:30,050 --> 00:32:33,560 Torej, ker ponavadi Plovec je 32-bitni - 783 00:32:33,560 --> 00:32:37,340 zato je tako dolgo v spominu, ki jih uporablja 32 ničel in enic, da 784 00:32:37,340 --> 00:32:40,530 predstavljajo vrednote - zakonska je dobesedno dvakrat, kar 785 00:32:40,530 --> 00:32:43,810 pomeni, da se lahko bodisi zastopajo večje številke, ali 786 00:32:43,810 --> 00:32:45,810 lahko predstavljajo bolj natančne številke. 787 00:32:45,810 --> 00:32:48,690 Tako imate lahko več številk za decimalno vejico, vendar 788 00:32:48,690 --> 00:32:51,520 kot je kolega povedal v videu, celo nekaj preprostega 789 00:32:51,520 --> 00:32:55,360 konceptualno kot 1/3, ni mogoče natančno zastopa 790 00:32:55,360 --> 00:32:58,330 računalnik, ker na koncu zmanjka bitov, in 791 00:32:58,330 --> 00:33:02,510 Zato lahko le to .33333333 toliko krat, na 792 00:33:02,510 --> 00:33:05,050 kateri točki boste morali povedati, da sem ven za zastopanje 793 00:33:05,050 --> 00:33:08,120 prostor, moram samo call it dan in jo zastopa 794 00:33:08,120 --> 00:33:10,200 nekoliko nenatančno všeč. 795 00:33:10,200 --> 00:33:11,110 In dolgo dolgo - 796 00:33:11,110 --> 00:33:13,880 neumno ime, ampak to je zato, ker je podatkovni tip znan kot 797 00:33:13,880 --> 00:33:19,350 dolgo v C, ki je pogosto po naključju 32 bitov, tako kot 798 00:33:19,350 --> 00:33:21,670 int je 32 bitov, ampak dolgo časa je 799 00:33:21,670 --> 00:33:23,560 64 bitov na splošno. 800 00:33:23,560 --> 00:33:25,740 Torej, to samo pomeni, da lahko predstavlja večji 801 00:33:25,740 --> 00:33:26,990 številke, kot to. 802 00:33:26,990 --> 00:33:27,410 >> V redu. 803 00:33:27,410 --> 00:33:29,390 Torej, če bi dejansko želeli začeti predstavlja stvari, smo 804 00:33:29,390 --> 00:33:31,030 morda potrebujejo bolj zapletene vrste, in 805 00:33:31,030 --> 00:33:32,340 zato imamo niz. 806 00:33:32,340 --> 00:33:36,450 Torej, v knjižnici CS50, da datoteka z imenom cs50.h, smo 807 00:33:36,450 --> 00:33:41,110 dejansko razglašena za vrsto podatkov, če se tako izrazim, ki se imenuje niz 808 00:33:41,110 --> 00:33:42,710 vendar niz dejansko ne obstaja. 809 00:33:42,710 --> 00:33:44,780 To je spet ena od teh plasti bomo lupine 810 00:33:44,780 --> 00:33:47,490 nazaj v tednu ali dveh, in ga vrgel stran, in dejansko 811 00:33:47,490 --> 00:33:49,640 poglej pod pokrov motorja, kaj dejansko je niz, in 812 00:33:49,640 --> 00:33:50,840 kako je to predstavljal. 813 00:33:50,840 --> 00:33:53,520 Mi smo tudi bo pogled na logičnih vrednosti. 814 00:33:53,520 --> 00:33:56,040 >> Torej, kaj je bool v okviru Scratch? 815 00:33:59,154 --> 00:34:00,300 To je resnična ali neresnična. 816 00:34:00,300 --> 00:34:03,900 Torej, to je samo vrednost, ki je resničen ali neresničen, vklopiti ali izklopiti, 1 ali 817 00:34:03,900 --> 00:34:06,140 0, vendar si želite ogledati svet. 818 00:34:06,140 --> 00:34:09,739 Torej v C, zahvaljujoč CS50 knjižnice, kar 819 00:34:09,739 --> 00:34:12,179 vključuje novo knjižnico, ki je pod pokrovom, smo 820 00:34:12,179 --> 00:34:14,909 dostop do vrste podatkov, ki se imenuje bool, ki bo 821 00:34:14,909 --> 00:34:18,730 Dobesedno nam omogoča, da določite vrednosti true ali false 822 00:34:18,730 --> 00:34:20,219 stvari v programu. 823 00:34:20,219 --> 00:34:23,880 >> Torej, gremo naprej tu in napišite majhen program, ki 824 00:34:23,880 --> 00:34:26,330 naredi nekaj številk, ki vključuje namesto tega. 825 00:34:26,330 --> 00:34:29,840 Naj se vrnem k CS50 napravo, naj gredo naprej in 826 00:34:29,840 --> 00:34:32,770 ustvarite novo datoteko z imenom tu - 827 00:34:32,770 --> 00:34:35,460 recimo, nekaj preprostega, kot math.c. 828 00:34:38,270 --> 00:34:38,710 V redu. 829 00:34:38,710 --> 00:34:41,600 In zdaj gredo do vrha mojem programu sem 830 00:34:41,600 --> 00:34:42,510 storili ponavadi - 831 00:34:42,510 --> 00:34:44,780 # Vključujejo , tako da sem lahko uporabite 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 bomo prišli nazaj, na koncu, kar pomeni, int 834 00:34:49,270 --> 00:34:52,389 tukaj, kaj pomeni nična tukaj, ampak za zdaj samo vem, da 835 00:34:52,389 --> 00:34:54,270 boste morali začeti programe, kot je ta. 836 00:34:54,270 --> 00:34:56,280 Zdaj bom, da gredo naprej in rekli nekaj malega 837 00:34:56,280 --> 00:35:02,110 drugačna - printf ("Daj mi številko:" 838 00:35:02,110 --> 00:35:03,570 ). 839 00:35:03,570 --> 00:35:09,220 Potem bom naredil int n = GetInt, saj 840 00:35:09,220 --> 00:35:12,770 Izkazalo se je, GetInt je še ena funkcija v knjižnici CS50 841 00:35:12,770 --> 00:35:14,060 poleg GetString. 842 00:35:14,060 --> 00:35:17,340 In zdaj bom naredil nekaj tako neumnega, kot je "zahvaljujoč 843 00:35:17,340 --> 00:35:25,760 za% d "za desetiško celo število, nato vejico n, 844 00:35:25,760 --> 00:35:26,620 nato vrne 0. 845 00:35:26,620 --> 00:35:28,940 Torej, še enkrat, vrne 0 nima nič opraviti s številko sem 846 00:35:28,940 --> 00:35:30,080 prosi za uporabnika. 847 00:35:30,080 --> 00:35:33,620 Samo pomeni, da na koncu koncev, verjetno, je dobro. 848 00:35:33,620 --> 00:35:36,290 >> Torej, pusti me na moj terminalsko okno tukaj. 849 00:35:36,290 --> 00:35:39,590 Naj napišete make matematiko, vnesite. 850 00:35:39,590 --> 00:35:41,360 In kaj je narobe. 851 00:35:41,360 --> 00:35:44,620 Naredite matematika ne deluje. 852 00:35:44,620 --> 00:35:46,170 Tukaj je prvi od naših sporočil o napakah. 853 00:35:46,170 --> 00:35:46,570 Zakaj? 854 00:35:46,570 --> 00:35:49,720 Malo skrivnosten, ampak - 855 00:35:49,720 --> 00:35:50,060 Ja. 856 00:35:50,060 --> 00:35:51,240 Torej cs50.h. 857 00:35:51,240 --> 00:35:53,900 Torej, še enkrat, še posebej zgodaj, boste napisali svoj prvi 858 00:35:53,900 --> 00:35:56,590 Program za pset 1 v oddelkih, v uradnih ur, in 859 00:35:56,590 --> 00:35:59,050 odkrito rečeno, bo to velika včasih kaj te stvari 860 00:35:59,050 --> 00:36:00,000 so dejansko rekel. 861 00:36:00,000 --> 00:36:01,890 Vendar boste spoznali zelo hitro začnejo padati 862 00:36:01,890 --> 00:36:06,120 na segmente, s katerim ta pomeni, da ste končali 1 863 00:36:06,120 --> 00:36:08,290 od # vključuje na vrhu datoteke. 864 00:36:08,290 --> 00:36:10,960 In Jek, prevajalnik, ki vas obvešča o tem s 865 00:36:10,960 --> 00:36:14,090 pravi, ne fancifully, implicitno izjavo 866 00:36:14,090 --> 00:36:15,990 Funkcija GetInt je neveljavna. 867 00:36:15,990 --> 00:36:16,310 >> V redu. 868 00:36:16,310 --> 00:36:17,520 Torej, kaj to pomeni? 869 00:36:17,520 --> 00:36:22,080 To samo pomeni, da si implicitno prijavljeni v GetInt 870 00:36:22,080 --> 00:36:24,850 Občutek, da niste izrecno navesti. 871 00:36:24,850 --> 00:36:27,300 Na izrecno izjavi, int, se morate naučiti 872 00:36:27,300 --> 00:36:28,740 Jek, da obstaja. 873 00:36:28,740 --> 00:36:32,020 In zelo preprosta rešitev za to je, da se učiti 874 00:36:32,020 --> 00:36:34,780 vključno s to drugo datoteko, cs50.h, na 875 00:36:34,780 --> 00:36:35,850 na vrh datoteko. 876 00:36:35,850 --> 00:36:40,380 Ker dobesedno, kar # include ne pove, ali je Jek 877 00:36:40,380 --> 00:36:44,030 precej, da bi našel datoteko z imenom cs50.h, kopiranje, 878 00:36:44,030 --> 00:36:48,150 ga prilepite samodejno na vrhu mojega programa za mene, 879 00:36:48,150 --> 00:36:50,850 in potem pretvarjanja izvorno kodo ničel in enic. 880 00:36:50,850 --> 00:36:52,850 Ampak to bi seveda bilo zelo dolgočasno, če smo ljudje imeli 881 00:36:52,850 --> 00:36:55,370 iti kopiranje in lepljenje teh velikih datotek ves čas, 882 00:36:55,370 --> 00:36:58,540 # vključujejo tako preprosto pa vse, ki se samodejno, brez 883 00:36:58,540 --> 00:37:01,550 muddying svoj zbornik z nekoga drugega knjižnici. 884 00:37:01,550 --> 00:37:06,370 In Knjižnica je samo še ena datoteka, ki vsebuje naloge in 885 00:37:06,370 --> 00:37:08,340 druge stvari, ki je nekdo drug napisan, da smo 886 00:37:08,340 --> 00:37:10,270 vplivno zaradi nas samih. 887 00:37:10,270 --> 00:37:10,580 >> V redu. 888 00:37:10,580 --> 00:37:11,200 Poskusimo še enkrat. 889 00:37:11,200 --> 00:37:12,250 Naredi matematiko. 890 00:37:12,250 --> 00:37:13,120 Enter. 891 00:37:13,120 --> 00:37:13,530 Dobro. 892 00:37:13,530 --> 00:37:14,880 Tako se zdi, da so delali. 893 00:37:14,880 --> 00:37:18,330 Torej, kaj mi zdaj prost matematika;. / Math. 894 00:37:18,330 --> 00:37:21,100 Vpišite mi daje številko 123. 895 00:37:21,100 --> 00:37:22,620 Hvala za 123. 896 00:37:22,620 --> 00:37:24,490 Zdaj pa poskusimo še kotu primer. 897 00:37:24,490 --> 00:37:26,530 Niz je zelo radodarna, saj 898 00:37:26,530 --> 00:37:27,620 Niz je lahko karkoli. 899 00:37:27,620 --> 00:37:28,910 Lahko videti številke, izgleda 900 00:37:28,910 --> 00:37:30,600 znaki, izgledajo kot besede. 901 00:37:30,600 --> 00:37:31,900 Ampak int je int. 902 00:37:31,900 --> 00:37:34,370 Torej, zdaj, če sem si težko, in je rekel: »Daj mi 903 00:37:34,370 --> 00:37:38,730 številka, "kaj pa če sem poskusil narediti nekaj podobnega 0,1? 904 00:37:38,730 --> 00:37:41,510 No, to je številka, in to v skladu z 905 00:37:41,510 --> 00:37:44,180 slovnica sem tukaj, ampak pod pokrovom motorja, jaz sem 906 00:37:44,180 --> 00:37:45,610 Tečaj uporabo funkcije GetInt. 907 00:37:45,610 --> 00:37:46,610 >> Torej, poglejmo, kaj se bo zgodilo. 908 00:37:46,610 --> 00:37:48,250 Vstopi, poskusite znova. 909 00:37:48,250 --> 00:37:48,560 V redu. 910 00:37:48,560 --> 00:37:50,570 Naj bo težko in šele zadeti nastopiti še enkrat. 911 00:37:50,570 --> 00:37:51,700 Enter, Enter. 912 00:37:51,700 --> 00:37:53,890 Torej, zdaj se zdi, da GetInt je malo več 913 00:37:53,890 --> 00:37:55,240 močnejša od GetString. 914 00:37:55,240 --> 00:37:58,540 Mi, osebje, ki se izvaja na tak način, da če opazimo 915 00:37:58,540 --> 00:38:02,100 ste nam ni dal int - in int je decimalno število 916 00:38:02,100 --> 00:38:04,785 vsebujejo ničle, tisti, dvojke, trojke, štiric, petke, šestic, 917 00:38:04,785 --> 00:38:05,540 sedmice, osmice, ali devetke. 918 00:38:05,540 --> 00:38:06,310 In to je to. 919 00:38:06,310 --> 00:38:08,810 Ni decimalki, brez znakov, brez ločila. 920 00:38:08,810 --> 00:38:10,390 Zdi se, da moramo sodelovati. 921 00:38:10,390 --> 00:38:13,680 Torej, naj poskusim 4, 5, 6, in da mi pride skozi. 922 00:38:13,680 --> 00:38:16,760 Torej res, da je analni tukaj, bi najbrž rekel: »Daj mi 923 00:38:16,760 --> 00:38:20,310 celo "za posredovanje uporabniku 924 00:38:20,310 --> 00:38:22,620 točno to, kar nameravam. 925 00:38:22,620 --> 00:38:24,090 >> Zdaj pa pomislite pod pokrovom. 926 00:38:24,090 --> 00:38:27,930 Ne bomo gledati, kako se izvaja cs50.h danes, 927 00:38:27,930 --> 00:38:29,080 da knjižnico. 928 00:38:29,080 --> 00:38:33,600 Ampak, če ga ohranja rek retry, retry, retry, kaj programiranje 929 00:38:33,600 --> 00:38:36,970 zgraditi sem čemer bi pod pokrovom na 930 00:38:36,970 --> 00:38:39,000 izvajajo to? 931 00:38:39,000 --> 00:38:39,980 Torej samo zanka, kajne? 932 00:38:39,980 --> 00:38:41,930 Eden od najpreprostejših idej, ki smo videli na Scratch. 933 00:38:41,930 --> 00:38:45,050 The Forever konstrukt, je konstrukt ponovitev. 934 00:38:45,050 --> 00:38:47,320 Domnevam, da v tem programu, pod pokrovom motorja, čeprav 935 00:38:47,320 --> 00:38:49,470 čeprav je bilo napisano v C in ne vrag, da to počne 936 00:38:49,470 --> 00:38:54,300 nekaj, kar ti ustreza večno, če se uporabnik ne 937 00:38:54,300 --> 00:38:58,710 vnesli v celo število, torej retry, retry, retry, retry, tako 938 00:38:58,710 --> 00:39:01,220 nato pa na koncu, ko bomo dobili celo število, potem 939 00:39:01,220 --> 00:39:02,970 premakniti iz te zanke. 940 00:39:02,970 --> 00:39:05,610 >> Tako lahko kaj druge funkcije, ki jih uporabljamo tukaj v knjižnici CS50 je? 941 00:39:05,610 --> 00:39:07,880 No, nekako očitnih tiste, temelji vsaj na 942 00:39:07,880 --> 00:39:09,570 tipi podatkov, da zdaj vemo, obstajajo. 943 00:39:09,570 --> 00:39:12,900 Izvedli smo GetString, GetInt, ampak po vsej 944 00:39:12,900 --> 00:39:15,680 v prvih tednih mandat, lahko uporabite tudi GetFloat in 945 00:39:15,680 --> 00:39:18,870 GetDouble in GetLongLong, da bi dobili ravno 946 00:39:18,870 --> 00:39:20,030 vrste podatkov, ki jih želite. 947 00:39:20,030 --> 00:39:24,030 Ker je ključna podrobnost v tem, da za razliko od nekaterih jezikih 948 00:39:24,030 --> 00:39:26,630 kot Python in Ruby, če vam ni nujno, da 949 00:39:26,630 --> 00:39:29,730 ugotovi podatkovni tip spremenljivke - 950 00:39:29,730 --> 00:39:32,390 nimaš kaj povedati, računalnik, kakšne stvari 951 00:39:32,390 --> 00:39:34,000 boš dal v spremenljivko - 952 00:39:34,000 --> 00:39:36,640 v C, da moraš biti vedno tako natančno. 953 00:39:36,640 --> 00:39:40,060 Torej, če želite spremenljivko z imenom n, kos shranjevanje 954 00:39:40,060 --> 00:39:42,900 da se v tem primeru zgodi, da je 32 bitov z dogovorom, da 955 00:39:42,900 --> 00:39:45,660 moram povedati, da ti računalnik bitov 956 00:39:45,660 --> 00:39:47,840 bo shranite številko - 957 00:39:47,840 --> 00:39:50,630 ne narave ni niz, ne plavajo. 958 00:39:50,630 --> 00:39:52,620 In ta obravnava vprašanja smo uspešno 959 00:39:52,620 --> 00:39:53,760 zašel v zadnjem tednu. 960 00:39:53,760 --> 00:39:57,050 Če smo z ničle in tiste številke, ki zastopa, ne samo 961 00:39:57,050 --> 00:40:00,770 številke pa AS in BS in Cs, kako v svetu 962 00:40:00,770 --> 00:40:03,460 Računalnik bo vedel, da je ta vzorec bitov dejansko 963 00:40:03,460 --> 00:40:07,650 predstavlja številko 65, v nasprotju z zastopa 964 00:40:07,650 --> 00:40:09,860 Pismo, ki je po naključju, v skladu s 965 00:40:09,860 --> 00:40:13,440 ASCII, spomnim, je bila enaka 65? 966 00:40:13,440 --> 00:40:16,550 >> Torej te vrste podatkov zagotoviti kontekst na računalnik, tako da 967 00:40:16,550 --> 00:40:18,810 da se ve, če je treba razlagati tako, da ti bitov 968 00:40:18,810 --> 00:40:23,660 int ali kot niz. 969 00:40:23,660 --> 00:40:26,500 Vsa vprašanja, nato pa na to? 970 00:40:26,500 --> 00:40:28,149 Ja? 971 00:40:34,780 --> 00:40:35,270 David J. Malan: Dobro vprašanje. 972 00:40:35,270 --> 00:40:39,140 Če vzamemo ven stdio.h, da shranite - 973 00:40:39,140 --> 00:40:44,360 Naj gredo dol v terminalsko okno in zaženite da matematiko, zoom 974 00:40:44,360 --> 00:40:45,530 in vnesite - 975 00:40:45,530 --> 00:40:47,700 Zdaj sem dobil drugačno napako, ker sem implicitno 976 00:40:47,700 --> 00:40:49,650 razglasi, kaj deluje zdaj? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Torej, zdaj sem ustvaril nov problem, katerega rešitev 979 00:40:52,970 --> 00:40:53,890 v bistvu enaki. 980 00:40:53,890 --> 00:40:55,365 Moram dati nazaj. 981 00:40:55,365 --> 00:40:56,615 OBČINSTVO: [neslišno] 982 00:41:03,534 --> 00:41:04,030 David J. Malan: Oh. 983 00:41:04,030 --> 00:41:04,850 Torej, če vzamem ven - 984 00:41:04,850 --> 00:41:05,360 Prav, ja. 985 00:41:05,360 --> 00:41:08,960 Torej, če sem odstraniti vključitev standard I / O knjižnice navzgor 986 00:41:08,960 --> 00:41:12,020 tukaj, in potem praviš, da če se znebim printf, se 987 00:41:12,020 --> 00:41:13,450 printf znebiti? 988 00:41:13,450 --> 00:41:13,810 Da. 989 00:41:13,810 --> 00:41:18,450 To bi moralo delati, ker nisem več s katerokoli - Ops. 990 00:41:18,450 --> 00:41:20,110 Sem samo ležati? 991 00:41:20,110 --> 00:41:21,650 Oh, v redu. 992 00:41:21,650 --> 00:41:25,640 To ne bo delovalo, ker nove napake smo pravkar uvedla. 993 00:41:25,640 --> 00:41:28,390 In ta je malo bolj samoumevno. 994 00:41:28,390 --> 00:41:29,440 >> V čem je težava? 995 00:41:29,440 --> 00:41:30,680 Neizkoriščene spremenljivka n. 996 00:41:30,680 --> 00:41:34,040 Torej je ta napaka posledica naše ko nastavljen 997 00:41:34,040 --> 00:41:36,640 aparat še posebej pedanten, da res nadrl 998 00:41:36,640 --> 00:41:39,060 da za vse možne napake, čeprav je kar nekako 999 00:41:39,060 --> 00:41:41,950 ni usodna napaka, kot je ta - ali je res tako velika 1000 00:41:41,950 --> 00:41:44,820 ravnati, da sem dodelil int, dal nekaj v njem, nato pa 1001 00:41:44,820 --> 00:41:46,030 Samo ni storil nič s tem? 1002 00:41:46,030 --> 00:41:47,020 Torej, funkcionalno, št. 1003 00:41:47,020 --> 00:41:50,410 To se ne bo prekinil program. 1004 00:41:50,410 --> 00:41:51,490 To je samo malo butast, kajne? 1005 00:41:51,490 --> 00:41:54,220 Ni vrednosti, ki je zaprosil za to številko, shranjeno 1006 00:41:54,220 --> 00:41:56,370 je v spremenljivko, če si ne bo nikoli ničesar 1007 00:41:56,370 --> 00:41:58,000 z njim, ali ga natisnete ali shranite. 1008 00:41:58,000 --> 00:42:00,270 Torej, v tem primeru Jek je priznalo veliko, in 1009 00:42:00,270 --> 00:42:02,010 to je rekel neuporabljenih spremenljivk n. 1010 00:42:02,010 --> 00:42:05,380 >> Tako bomo lahko to popravimo, če res želimo. 1011 00:42:05,380 --> 00:42:07,250 Ampak spet, to ni dobro načrtovanje zdaj. 1012 00:42:07,250 --> 00:42:09,310 Zato sem lahko naredil to - 1013 00:42:09,310 --> 00:42:12,060 pojdi dol, mi počistiti zaslon, da matematiko. 1014 00:42:12,060 --> 00:42:13,090 To deluje. 1015 00:42:13,090 --> 00:42:18,110 Sedaj lahko vodim svojo matematiko program, se prispevek - 1016 00:42:18,110 --> 00:42:18,700 dobro, da je to slabo. 1017 00:42:18,700 --> 00:42:23,450 Meni vnosa in da je vse, kar počne, v tej zadevi. 1018 00:42:23,450 --> 00:42:25,220 >> Torej, dejansko, poskusimo še en primer, ki ga kotiček 1019 00:42:25,220 --> 00:42:26,300 ne mislim prej. 1020 00:42:26,300 --> 00:42:28,220 V tem primeru - tukaj, pojdimo nazaj k tistemu, ki je 1021 00:42:28,220 --> 00:42:29,500 malo bolj uporabniku prijazen. 1022 00:42:29,500 --> 00:42:32,580 Naj grem nazaj in da deluje matematiko znova. 1023 00:42:32,580 --> 00:42:34,190 Joj, kaj sem naredil narobe? 1024 00:42:34,190 --> 00:42:35,400 Moram nazaj roll naprej. 1025 00:42:35,400 --> 00:42:36,390 Ok. 1026 00:42:36,390 --> 00:42:38,490 Zdaj smo spet v prvotnem stanju, kjer je vse 1027 00:42:38,490 --> 00:42:39,990 upam, da je dobro. 1028 00:42:39,990 --> 00:42:43,360 In zdaj, če sem teči matematike, 123 zdi, da dela. 1029 00:42:43,360 --> 00:42:46,010 Ampak to ni res učinkovit dokaz, da samo reči 1030 00:42:46,010 --> 00:42:47,930 OK, to deluje. 1031 00:42:47,930 --> 00:42:49,120 789, ki deluje. 1032 00:42:49,120 --> 00:42:50,100 Čas za oddajo. 1033 00:42:50,100 --> 00:42:51,870 Zato, ker je v drugih primerih kotiček tukaj. 1034 00:42:51,870 --> 00:42:55,040 Niz ni res, da nam veliko težav z vpisom 1035 00:42:55,040 --> 00:42:56,510 cel kup znakov. 1036 00:42:56,510 --> 00:42:59,580 Kaj pa, če sem tip v to? 1037 00:42:59,580 --> 00:43:04,850 S pritiskom na številko 1 cel kup, cel kup tukaj - 1038 00:43:04,850 --> 00:43:06,300 V redu, to je že malo dolgočasno, zato bom 1039 00:43:06,300 --> 00:43:10,040 ustavi tukaj in bom pritisnite tipko Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Kaj za vraga se je zgodilo? 1041 00:43:14,110 --> 00:43:17,680 Torej je to dejansko mogoče pojasniti. 1042 00:43:17,680 --> 00:43:18,920 Torej si jo vzeti kot binarna? 1043 00:43:18,920 --> 00:43:21,130 Dobra misel, ampak ne, to ni dejstvo, da jo je 1044 00:43:21,130 --> 00:43:22,815 kot binarna, ker je res, da je bilo kar nekako 1045 00:43:22,815 --> 00:43:23,080 naključje. 1046 00:43:23,080 --> 00:43:23,930 To lahko naredimo še enkrat. 1047 00:43:23,930 --> 00:43:26,530 Torej ni 2 v binarnem sistemu, ki je 1048 00:43:26,530 --> 00:43:27,420 verjetno dovolj anyway. 1049 00:43:27,420 --> 00:43:28,780 Enter. 1050 00:43:28,780 --> 00:43:30,140 Tako, da ni bil problem. 1051 00:43:30,140 --> 00:43:31,390 Kaj še? 1052 00:43:34,650 --> 00:43:35,400 Točno tako. 1053 00:43:35,400 --> 00:43:37,830 >> Torej, mislim nazaj na to, kar je dejansko int. 1054 00:43:37,830 --> 00:43:40,970 To je 32 bitov, ki so skupaj razlagati 1055 00:43:40,970 --> 00:43:42,090 kot število. 1056 00:43:42,090 --> 00:43:44,730 Če imate 32 bitov, kar pomeni, da vsak bitov lahko 1057 00:43:44,730 --> 00:43:46,690 0 ali 1, 0 ali 1. 1058 00:43:46,690 --> 00:43:49,090 Torej to pomeni, da je dve možnosti za to bit, 1059 00:43:49,090 --> 00:43:51,140 dve možnosti za to, dve možnosti za to 1060 00:43:51,140 --> 00:43:52,570 malo - tako, da je 2-krat 2-krat - 1061 00:43:52,570 --> 00:43:55,480 tako da je 2 na 32 oblasti, je skupno število 1062 00:43:55,480 --> 00:43:58,960 permutacije iz ničel in enic, če imate 32 1063 00:43:58,960 --> 00:44:01,400 ograd, ničle in enice, ki je pred vami. 1064 00:44:01,400 --> 00:44:04,250 Torej, če imam 2 do 32, matematično, ki je kaj? 1065 00:44:07,080 --> 00:44:07,840 Torej je veliko. 1066 00:44:07,840 --> 00:44:09,910 To je 4 milijarde EUR, gor ali dol. 1067 00:44:09,910 --> 00:44:13,510 In 4000000000 ne zdi, da je tisto, kar je bila natisnjena tukaj. 1068 00:44:13,510 --> 00:44:16,290 V bistvu je to videti bližje 2000000000. 1069 00:44:16,290 --> 00:44:17,970 Ampak to ni naključje. 1070 00:44:17,970 --> 00:44:21,590 Dejstvo, da je računalnik napačno razlagal svojo ogromno število, 1071 00:44:21,590 --> 00:44:24,260 moja velika zaporedje enic in potem mi veliko zaporedje parih, 1072 00:44:24,260 --> 00:44:26,880 kot približno 2 milijard, je pojasnil, kako? 1073 00:44:30,250 --> 00:44:32,180 Tam je omejitev na notr. 1074 00:44:32,180 --> 00:44:34,970 Tam je zagotovo največja vrednost, ki jo lahko predstavlja. 1075 00:44:34,970 --> 00:44:36,370 Ampak to je ponavadi 4 milijarde EUR, kajne? 1076 00:44:36,370 --> 00:44:39,100 Če 2 do 32, je približno 4 milijarde EUR, da se zdi, kot 1077 00:44:39,100 --> 00:44:40,350 To je največje število. 1078 00:44:42,420 --> 00:44:45,240 Torej ni ostanek, ampak dobra misel. 1079 00:44:45,240 --> 00:44:46,340 Negativne številke. 1080 00:44:46,340 --> 00:44:49,570 Torej, če imate 4000000000 možne stvari, ki jih lahko 1081 00:44:49,570 --> 00:44:52,970 zastopa v teh različnih permutacij 32 0s in 1082 00:44:52,970 --> 00:44:55,600 1s, no, lahko sklepamo, da bi mi ljudje radi 1083 00:44:55,600 --> 00:44:57,110 predstavlja ne le pozitivnih celih 1084 00:44:57,110 --> 00:44:58,240 vendar negativni cela števila. 1085 00:44:58,240 --> 00:45:00,410 In res, da je predpostavka, da je C naredi. 1086 00:45:00,410 --> 00:45:03,550 Torej s 32-bitno, lahko predstavljajo približno 2 negativni 1087 00:45:03,550 --> 00:45:06,630 milijarde vso pot do pozitivnega 2000000000. 1088 00:45:06,630 --> 00:45:08,750 In tako v tem primeru, kaj smo res videli le 1089 00:45:08,750 --> 00:45:13,600 robu zmogljivosti našega celo število, in smo tako 1090 00:45:13,600 --> 00:45:15,860 govoriti, prekoračil celo število. 1091 00:45:15,860 --> 00:45:19,180 Poskušali smo Strpati več bitov v njem, kot si lahko dejansko ustreza. 1092 00:45:19,180 --> 00:45:22,960 Torej končni rezultat je, da smo v bistvu vse 1 bitov. 1093 00:45:22,960 --> 00:45:25,280 Smo zrcaljeno vse naše bitov na smo poskušali predstavljati 1094 00:45:25,280 --> 00:45:27,630 največje število možnosti, vendar je očitno še zdaleč ni 1095 00:45:27,630 --> 00:45:30,960 dovolj velika, da predstavlja dve stvari, ki sem jih pravkar vtipka 1096 00:45:30,960 --> 00:45:31,730 Ja? 1097 00:45:31,730 --> 00:45:32,980 OBČINSTVO: [neslišno] 1098 00:45:37,230 --> 00:45:37,830 >> David J. Malan: Dobro vprašanje. 1099 00:45:37,830 --> 00:45:40,080 Zakaj ne moreva predstavljati, da se negativni 1100 00:45:40,080 --> 00:45:41,500 prijavite kot le znak? 1101 00:45:41,500 --> 00:45:44,200 Tako smo lahko absolutno in še bi lahko shranite 1102 00:45:44,200 --> 00:45:45,470 Dodatna bit. 1103 00:45:45,470 --> 00:45:49,100 Ampak ste še vedno dogaja, da imajo, ki bi predstavljal pomišljaj in 1104 00:45:49,100 --> 00:45:50,700 da se bo to stalo vsaj nekaj, 1105 00:45:50,700 --> 00:45:52,220 verjetno malo. 1106 00:45:52,220 --> 00:45:55,610 Torej, ja, lahko imamo 32 bitov, ki se uporabljajo za našo številko, zdaj pa 1107 00:45:55,610 --> 00:45:57,610 Potrebujemo še nekaj, ki se uporablja za naše pomišljajem 1108 00:45:57,610 --> 00:45:58,810 simbol, znak minus. 1109 00:45:58,810 --> 00:46:01,470 Torej, zdaj imamo 33 bitne vrednosti, kar lahko storimo, je pa 1110 00:46:01,470 --> 00:46:02,570 samo ne tako se to dela. 1111 00:46:02,570 --> 00:46:05,140 Naredili smo sodbo klic leti, 32 bitov je nekako 1112 00:46:05,140 --> 00:46:06,170 merska enota tukaj. 1113 00:46:06,170 --> 00:46:08,120 Tako se bomo, da uporabite eno od teh bitov učinkovito 1114 00:46:08,120 --> 00:46:12,950 predstavljajo negativnosti in 31 bitov za zastopanje številko. 1115 00:46:12,950 --> 00:46:15,550 Druga vprašanja? 1116 00:46:15,550 --> 00:46:15,670 V redu. 1117 00:46:15,670 --> 00:46:16,030 To je veliko. 1118 00:46:16,030 --> 00:46:17,930 Zakaj ne gremo naprej in vzamemo 5-minutni odmor tukaj? 1119 00:46:23,580 --> 00:46:24,270 >> V redu. 1120 00:46:24,270 --> 00:46:31,250 Torej, še enkrat, da ne bo overemphasize matematične aplikacije 1121 00:46:31,250 --> 00:46:33,840 programiranja, kaj je samo drobovja off to en primer 1122 00:46:33,840 --> 00:46:36,590 preden gremo v drugih konstruktih, samo zato, ker 1123 00:46:36,590 --> 00:46:39,430 bo ponazorjena nekaj skupnih točk spotike za nekatere 1124 00:46:39,430 --> 00:46:41,520 Osnove, ko gre za pisanje programov. 1125 00:46:41,520 --> 00:46:44,360 V tem primeru gre aritmetične izraze, ki so del 1126 00:46:44,360 --> 00:46:48,010 Zanimivo pomen za sintakso. 1127 00:46:48,010 --> 00:46:50,430 >> Torej, to je samo formula, s katero bomo lahko pretvorite 1128 00:46:50,430 --> 00:46:52,690 temperature od Fahrenheit v stopinjah Celzija. 1129 00:46:52,690 --> 00:46:54,600 Če se ne spomnite, to je samo formula. 1130 00:46:54,600 --> 00:46:58,870 Torej, če priključite Fahrenheit vrednosti 32 stopinj, kar je 1131 00:46:58,870 --> 00:47:02,850 zamrzovanje, da se dogaja, da je 32 minus 32 je 0, in sicer, 1132 00:47:02,850 --> 00:47:05,130 0 v stopinjah Celzija, je tudi zamrznitev. 1133 00:47:05,130 --> 00:47:08,210 Tako hitro sanity preverite, ali je - to je znano formulo. 1134 00:47:08,210 --> 00:47:10,880 Naj iti čez na aparatu, čeprav, in začnite 1135 00:47:10,880 --> 00:47:13,920 pisati program, imenovan, kot, f2c, "Fahrenheit za 1136 00:47:13,920 --> 00:47:15,920 Celzija dot c ". 1137 00:47:15,920 --> 00:47:18,930 In na vrhu tukaj, bom začnete z # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, in jaz bom naredil int main (void) in 1139 00:47:22,190 --> 00:47:24,680 spet vrnemo v prihodnosti, kar pomeni, int 1140 00:47:24,680 --> 00:47:26,820 tam in kaj pomeni, da je ničen. 1141 00:47:26,820 --> 00:47:28,770 In sedaj mi daj in izvaja program, da 1142 00:47:28,770 --> 00:47:31,170 v bistvu pa je to konverzijo za nas. 1143 00:47:31,170 --> 00:47:36,830 >> Torej printf, recimo, temperature v Fahrenheit. 1144 00:47:36,830 --> 00:47:40,140 In potem mi gredo naprej in dobili vrednost od uporabnika. 1145 00:47:40,140 --> 00:47:43,120 Kakšno vrednost naj dobim od uporabnika, če hočem 1146 00:47:43,120 --> 00:47:45,620 jim, da mi temperaturo v Fahrenheit? 1147 00:47:45,620 --> 00:47:48,090 Ja? 1148 00:47:48,090 --> 00:47:50,090 Kaj bi predlagali? 1149 00:47:50,090 --> 00:47:50,410 Ja. 1150 00:47:50,410 --> 00:47:51,960 Torej plovec počuti precej razumne. 1151 00:47:51,960 --> 00:47:53,950 Imamo spet le nekaj možnosti, da se 1152 00:47:53,950 --> 00:47:55,310 smo videli doslej. 1153 00:47:55,310 --> 00:48:00,100 Imamo stvari, kot char, double, float, int, dolgo časa, 1154 00:48:00,100 --> 00:48:01,150 int, string. 1155 00:48:01,150 --> 00:48:03,510 Torej od teh, float zdi zelo razumna. 1156 00:48:03,510 --> 00:48:06,340 Mi lahko uporabite dvojnega, pravico, ker če res želimo 1157 00:48:06,340 --> 00:48:07,580 predstavljajo človekova na temperaturo - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 da bi nam 64 bitov za to, vendar je občutek 1160 00:48:12,990 --> 00:48:14,200 pretiravanje pri temperaturi. 1161 00:48:14,200 --> 00:48:16,380 Torej, pojdiva s plovcem. 1162 00:48:16,380 --> 00:48:18,100 Zdaj moram spremenljivke. 1163 00:48:18,100 --> 00:48:20,500 Samo ohraniti stvari preproste, grem, da ga pokličete f, but I 1164 00:48:20,500 --> 00:48:23,370 bi prav tako pravilno imenujejo temperatura, 1165 00:48:23,370 --> 00:48:24,600 ampak ali je vse v redu. 1166 00:48:24,600 --> 00:48:27,610 Torej float f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Takoj, ko sem se odločila za uporabo GetFloat, čeprav sem 1168 00:48:30,220 --> 00:48:33,340 morali narediti eno korekcijo. 1169 00:48:33,340 --> 00:48:33,720 Ja. 1170 00:48:33,720 --> 00:48:37,460 Zato moramo # include , sicer prevajalnik je 1171 00:48:37,460 --> 00:48:39,000 bom kričati na nas. 1172 00:48:39,000 --> 00:48:41,720 Zdaj, ko imam plovec, naj gredo naprej in 1173 00:48:41,720 --> 00:48:42,460 pretvorbe. 1174 00:48:42,460 --> 00:48:44,980 >> Torej, najprej, mi tudi priti v navado tukaj za 1175 00:48:44,980 --> 00:48:46,310 komentirajo mojo kodo. 1176 00:48:46,310 --> 00:48:49,820 Torej, še enkrat, komentar je le zapis za človeka, ki je 1177 00:48:49,820 --> 00:48:52,600 ni del programa sama po sebi, ampak je ena, vam pomaga 1178 00:48:52,600 --> 00:48:55,010 razumem, kaj si storil naslednje jutro ali naslednji 1179 00:48:55,010 --> 00:48:57,570 mesec, pomaga tvoj fant poučevanje razumem, kaj si naredil 1180 00:48:57,570 --> 00:48:59,230 ali kaj naj bi storili, tako da je 1181 00:48:59,230 --> 00:49:00,950 na splošno zelo dobra praksa. 1182 00:49:00,950 --> 00:49:02,940 Vsakih nekaj vrstic kode, napišite komentar 1183 00:49:02,940 --> 00:49:04,490 sami ali vaš kolega. 1184 00:49:04,490 --> 00:49:08,460 Torej, tukaj bom rekel, "Vprašaj uporabnika za temperaturo." 1185 00:49:08,460 --> 00:49:10,890 Ni nujno, da je celoten stavek, le kratek stavek. 1186 00:49:10,890 --> 00:49:14,270 Toda ideja komentirati C je, da vsak od vaših 1187 00:49:14,270 --> 00:49:17,980 Pripombe bi ti pooblaščajo - ali, recimo, TF ali sodelavca - 1188 00:49:17,980 --> 00:49:21,290 prelistati svoj program in natančno vedeli, kaj počne, ko ni 1189 00:49:21,290 --> 00:49:24,650 Toliko branje kodo, vendar z branjem pripombe, ki 1190 00:49:24,650 --> 00:49:26,220 mora biti kratko in jasno. 1191 00:49:26,220 --> 00:49:29,030 V redu, zdaj pa grem naprej in reči, "spremeniti 1192 00:49:29,030 --> 00:49:32,660 Fahrenheit v stopinjah Celzija. "Torej bom, da gredo naprej in ne, 1193 00:49:32,660 --> 00:49:34,340 recimo, float c. 1194 00:49:34,340 --> 00:49:36,610 Še naprej si bomo Celzija kot plavajoča vrednosti točke. 1195 00:49:36,610 --> 00:49:37,630 >> In naj bo zabodel to. 1196 00:49:37,630 --> 00:49:40,350 Formula je spet tu. 1197 00:49:40,350 --> 00:49:45,510 Kot 5/9 krat F minus 32. 1198 00:49:45,510 --> 00:49:46,360 Torej, kaj je to. 1199 00:49:46,360 --> 00:49:50,450 Torej 5 deljeno z 9, minus - 1200 00:49:50,450 --> 00:49:52,330 Ups, sem zamočil že. 1201 00:49:52,330 --> 00:49:53,070 Times. 1202 00:49:53,070 --> 00:49:56,550 Torej 5/9 krat F minus 32. 1203 00:49:56,550 --> 00:49:59,650 Torej F minus 32, podpičje. 1204 00:49:59,650 --> 00:50:02,000 In zdaj, tukaj, grem, da gredo naprej 1205 00:50:02,000 --> 00:50:03,220 in pravijo, tiskanje rezultat. 1206 00:50:03,220 --> 00:50:05,160 In ta del je enostavno. Printf. 1207 00:50:05,160 --> 00:50:07,980 Kako naj grem o tiskanju to? 1208 00:50:07,980 --> 00:50:16,890 No, lahko bi rekel "To število v stopinjah Celzija je% f \ n" 1209 00:50:16,890 --> 00:50:18,060 Samo za nekaj estetike. 1210 00:50:18,060 --> 00:50:20,450 In kaj potem vrednost ne želim, da priključite tukaj je printf 1211 00:50:20,450 --> 00:50:21,360 Drugi argument? 1212 00:50:21,360 --> 00:50:21,650 Ok. 1213 00:50:21,650 --> 00:50:22,540 Torej samo c. 1214 00:50:22,540 --> 00:50:24,760 Torej bomo začeli s tem in potem samo vrne 0. 1215 00:50:24,760 --> 00:50:25,960 Še enkrat, to nima nič opraviti z matematiko. 1216 00:50:25,960 --> 00:50:27,610 To samo pomeni, da je vse v redu. 1217 00:50:27,610 --> 00:50:31,210 >> Zdaj je to res, je ta program? 1218 00:50:31,210 --> 00:50:31,520 V redu. 1219 00:50:31,520 --> 00:50:33,630 Tako sem naredil nekaj napak. 1220 00:50:33,630 --> 00:50:35,980 Tudi če nimate pojma, kaj je programiranje lahko razvrstite 1221 00:50:35,980 --> 00:50:37,120 hrbta sklepata na osnovni šoli, kar 1222 00:50:37,120 --> 00:50:38,740 Napake tukaj lahko. 1223 00:50:38,740 --> 00:50:40,050 Kaj je ena izmed prvi? 1224 00:50:40,050 --> 00:50:41,256 OBČINSTVO: [neslišno] 1225 00:50:41,256 --> 00:50:41,660 David J. Malan: Ja. 1226 00:50:41,660 --> 00:50:42,940 Torej nam manjka oklepaje. 1227 00:50:42,940 --> 00:50:45,420 To je bilo namerno, da sem v oklepaje keynote 1228 00:50:45,420 --> 00:50:48,130 potisnite tukaj, ker je pravzaprav ta pojem, da 1229 00:50:48,130 --> 00:50:51,590 poslovanja ali vrstni red, po katerem nekatere operacije - 1230 00:50:51,590 --> 00:50:52,890 razmnoževanje - 1231 00:50:52,890 --> 00:50:56,000 imajo višjo zavezujoča, imajo večjo prednost, kot stvari 1232 00:50:56,000 --> 00:50:58,050 kot dodajanjem ali odvzemanjem. 1233 00:50:58,050 --> 00:51:00,550 Tako smo naredili ta leta samo zato, da bi natančno jasno 1234 00:51:00,550 --> 00:51:02,840 kaj matematične operacije je treba najprej storiti. 1235 00:51:02,840 --> 00:51:05,010 Torej bi se verjetno posnema točno to. 1236 00:51:05,010 --> 00:51:08,990 V nasprotnem primeru se računalnik verjetno bo poskusil narediti 1237 00:51:08,990 --> 00:51:13,090 nekaj takega razkoraka 5 do 9, nato pomnoži F, nato odštevanje 1238 00:51:13,090 --> 00:51:14,850 32 iz vso stvar. 1239 00:51:14,850 --> 00:51:16,480 Ki ni v resnici, kaj želimo narediti. 1240 00:51:16,480 --> 00:51:17,340 Torej parenthesize. 1241 00:51:17,340 --> 00:51:20,860 Naj dodam svoje oklepaje, tukaj, tukaj oklepaje. 1242 00:51:20,860 --> 00:51:22,670 Dajmo to tukaj. 1243 00:51:22,670 --> 00:51:25,130 Tukaj sem opazil še eno napako, ki sem ga na tej poti. 1244 00:51:25,130 --> 00:51:25,680 Ja? 1245 00:51:25,680 --> 00:51:26,930 OBČINSTVO: [neslišno] 1246 00:51:29,632 --> 00:51:30,130 >> David J. Malan: Ah. 1247 00:51:30,130 --> 00:51:30,470 Dobro. 1248 00:51:30,470 --> 00:51:32,400 Torej smo dejansko imajo enako stevilo 1249 00:51:32,400 --> 00:51:34,020 Delitev vprašanje od prej. 1250 00:51:34,020 --> 00:51:35,800 I popraviti, da vidimo, kaj se je simptom je. 1251 00:51:35,800 --> 00:51:36,990 Vendar pa bomo morali popraviti 1 1252 00:51:36,990 --> 00:51:37,680 druga napaka. 1253 00:51:37,680 --> 00:51:38,015 Ja? 1254 00:51:38,015 --> 00:51:39,540 OBČINSTVO: [neslišno] 1255 00:51:39,540 --> 00:51:40,070 David J. Malan: Da. 1256 00:51:40,070 --> 00:51:43,130 Torej, neumna napaka sem se, vendar zelo pomembna. 1257 00:51:43,130 --> 00:51:45,870 Računalnik se ne bo kar zatiska oči in pustite 1258 00:51:45,870 --> 00:51:48,770 jaz uporabljati kapitalsko F, ​​ko sem dejansko spremenljivka deklarirana 1259 00:51:48,770 --> 00:51:51,360 kot male f tukaj, v skladu 8. 1260 00:51:51,360 --> 00:51:54,470 Torej moram popraviti v vrstici 11 mojih kapitalizacijo, ki 1261 00:51:54,470 --> 00:51:56,820 Malo prej je bil kapital F po pomoti. 1262 00:51:56,820 --> 00:51:57,610 Kaj pa tukaj? 1263 00:51:57,610 --> 00:51:59,980 Če bi se to lahko male, kot tudi? 1264 00:51:59,980 --> 00:52:02,260 To bi moralo biti, ampak to je naključje. 1265 00:52:02,260 --> 00:52:05,070 To je% f nima nič opraviti s spremenljivko. 1266 00:52:05,070 --> 00:52:07,980 Torej, samo, da je zelo jasno, tukaj, naj gredo naprej in 1267 00:52:07,980 --> 00:52:10,710 preimenovati, na kratko, "temperaturo." Naj preimenovati 1268 00:52:10,710 --> 00:52:15,050 Ta "temperatura". Naj ne preimenujete to. 1269 00:52:15,050 --> 00:52:18,180 Ker je spet% f globalno pomeni, "plava vrednost točke." 1270 00:52:18,180 --> 00:52:19,950 Nima nobene veze z mojim spremenljivke. 1271 00:52:19,950 --> 00:52:23,080 Toda "temperatura" Povsod je le malo Razvučen, 1272 00:52:23,080 --> 00:52:25,370 tako da bom šel nazaj v mojo malimi črkami "f" s. 1273 00:52:25,370 --> 00:52:27,890 >> Zdaj pa mi daj dol z mojega okna tukaj. 1274 00:52:27,890 --> 00:52:29,190 Naredite f2c - 1275 00:52:29,190 --> 00:52:31,200 ki je bila spet poljubno ime, sem 1276 00:52:31,200 --> 00:52:32,590 je s to sliko. 1277 00:52:32,590 --> 00:52:33,690 Zdi se, da so pripravljeni. 1278 00:52:33,690 --> 00:52:35,080 Naj teče f2c. 1279 00:52:35,080 --> 00:52:35,780 Enter. 1280 00:52:35,780 --> 00:52:37,786 Temperatura v Fahrenheit - naredimo preprost 1. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, pravilni. 1283 00:52:40,910 --> 00:52:45,910 Ampak, če bom zdaj naredil 212 za temperaturo - 1284 00:52:45,910 --> 00:52:46,630 Prekleto. 1285 00:52:46,630 --> 00:52:47,030 V redu. 1286 00:52:47,030 --> 00:52:50,780 Torej, očitno ne popravi, če je vaš TF poskuša 1287 00:52:50,780 --> 00:52:51,800 vsaj dve vrednosti. 1288 00:52:51,800 --> 00:52:53,340 Torej, kaj je problem tukaj? 1289 00:52:53,340 --> 00:52:55,970 No, ti že dal prst na to, kaj je težava. 1290 00:52:55,970 --> 00:52:57,600 Toda zakaj je tako? 1291 00:52:57,600 --> 00:53:00,630 Do tu, ko delam math 5 deljeno z 9. 1292 00:53:00,630 --> 00:53:02,190 Torej konceptualno, to je popolnoma pravilna. 1293 00:53:02,190 --> 00:53:03,690 Popolnoma v skladu s formulo. 1294 00:53:03,690 --> 00:53:05,940 Toda računalniki samo to tisto, kar si 1295 00:53:05,940 --> 00:53:06,760 jim povedal, da ne. 1296 00:53:06,760 --> 00:53:08,940 In kaj smo dejansko povedal računalnik tukaj 1297 00:53:08,940 --> 00:53:12,320 razdeliti celo število 5 jih celo 9 1298 00:53:12,320 --> 00:53:13,670 in mi rezultat. 1299 00:53:13,670 --> 00:53:16,230 Problem je, čeprav, ko vam delitev na podlagi podatkov 1300 00:53:16,230 --> 00:53:20,220 tipi, proizvodnja je enako vrsto podatkov kot surovine. 1301 00:53:20,220 --> 00:53:23,670 In tako, če sta oba vhoda ints, proizvodnja bo 1302 00:53:23,670 --> 00:53:25,110 za int. 1303 00:53:25,110 --> 00:53:28,770 In tako 5 deljeno z 9, je točka nekaj. 1304 00:53:28,770 --> 00:53:32,320 Toda kaj je najbližje celo točko kaj? 1305 00:53:32,320 --> 00:53:33,630 Torej, to je dejansko 0. 1306 00:53:33,630 --> 00:53:36,620 Tako kot smo razpravljali v ponedeljek, vse po decimalko 1307 00:53:36,620 --> 00:53:37,940 točka postane okrnjena. 1308 00:53:37,940 --> 00:53:39,495 To postane le vrgli proč. 1309 00:53:39,495 --> 00:53:42,760 Torej, to je popolna napaka, ker sem morda tudi samo 1310 00:53:42,760 --> 00:53:44,700 pomnožimo vse po 0 tukaj. 1311 00:53:44,700 --> 00:53:46,550 >> Zdaj lahko to popravimo na več načinov. 1312 00:53:46,550 --> 00:53:48,080 Jaz bi to storil. 1313 00:53:48,080 --> 00:53:50,490 5,0 deljeno z 9,0. 1314 00:53:50,490 --> 00:53:52,110 Tehnično, jaz sploh ne potrebujete, da to storim. 1315 00:53:52,110 --> 00:53:55,780 To pa zadostuje, da samo, da eno od številk float - 1316 00:53:55,780 --> 00:53:58,290 ali dvojno - s tem da decimalno vejico tukaj. 1317 00:53:58,290 --> 00:54:01,740 Ker to, kar se dogaja zdaj, ko si delimo celo število s 1318 00:54:01,740 --> 00:54:04,670 float ali dvakrat, računalnik bo za uresničitev 1319 00:54:04,670 --> 00:54:06,830 oh, eden od teh je bolj natančen. 1320 00:54:06,830 --> 00:54:09,420 Naj napačno na strani, ki vam daje večjo natančnost, kot 1321 00:54:09,420 --> 00:54:10,310 ste nameravali. 1322 00:54:10,310 --> 00:54:12,700 Tako bo pretvoril rezultat - 1323 00:54:12,700 --> 00:54:16,240 se bo vrnil rezultat kot plavajoča vrednosti točke kot tudi. 1324 00:54:16,240 --> 00:54:17,330 Torej bi to delovalo. 1325 00:54:17,330 --> 00:54:18,060 To bi delovalo. 1326 00:54:18,060 --> 00:54:20,010 In tu je še en mehanizem, ki ga bomo videli v 1327 00:54:20,010 --> 00:54:21,390 podrobneje naslednji teden. 1328 00:54:21,390 --> 00:54:24,690 Lahko dejansko, kot programer, povej računalniku 1329 00:54:24,690 --> 00:54:27,930 dejansko zdravljenje enega vrsto podatkov, kot 1330 00:54:27,930 --> 00:54:29,260 da bi bili drugi. 1331 00:54:29,260 --> 00:54:30,990 >> Tako sem lahko dejansko narediti. 1332 00:54:30,990 --> 00:54:35,280 V oklepaju, lahko rečem, nekaj podobnega (float), odprt 1333 00:54:35,280 --> 00:54:36,350 paren, blizu paren. 1334 00:54:36,350 --> 00:54:39,050 In to je tisto, kar se imenuje "casting". Spet več 1335 00:54:39,050 --> 00:54:39,940 o tem naslednji teden. 1336 00:54:39,940 --> 00:54:42,280 Ampak to je samo programsko način pripovedovanja 1337 00:54:42,280 --> 00:54:45,910 Računalnik, ja vem, 9 je celo število ali dolgo. 1338 00:54:45,910 --> 00:54:47,700 Vem, da to ni plavajočo vejico vrednost. 1339 00:54:47,700 --> 00:54:49,420 Toda zdravljenje je kot tako nekako. 1340 00:54:49,420 --> 00:54:52,000 Torej, da odda vrsto podatkov pomeni pretvorbo 1341 00:54:52,000 --> 00:54:53,310 od enega do drugega. 1342 00:54:53,310 --> 00:54:55,790 Odkrito povedano, je to le malo grd, zato bi predlagal, gremo 1343 00:54:55,790 --> 00:54:58,830 nazaj na prvotni predlog, da preprosto pretvorbo 1344 00:54:58,830 --> 00:55:00,770 te stvari plavajočo vejico vrednosti ročno. 1345 00:55:00,770 --> 00:55:02,890 Ker zdaj je samo zelo jasno, kaj se dogaja, in 1346 00:55:02,890 --> 00:55:04,280 to ni vse, kar moteča. 1347 00:55:04,280 --> 00:55:06,710 >> Torej, kaj je zdaj iti nazaj v svojo terminalsko okno. 1348 00:55:06,710 --> 00:55:07,990 Naredite f2c. 1349 00:55:07,990 --> 00:55:09,430 Naj gredo naprej in prost dostop to. 1350 00:55:09,430 --> 00:55:12,340 In, kot stran, boste dobili dolgčas tipkanje ukazov 1351 00:55:12,340 --> 00:55:14,910 spet in spet, se zavedaš, da računalnike, kot je Linux tukaj, 1352 00:55:14,910 --> 00:55:16,010 ponavadi zelo pameten. 1353 00:55:16,010 --> 00:55:18,890 In če sem udaril gor, gremo lahko skozi mojo celotno zgodovino 1354 00:55:18,890 --> 00:55:20,380 ukazi, gor in dol. 1355 00:55:20,380 --> 00:55:23,840 Torej v tem primeru tukaj, sem lahko šel gor za zagon, da f2c. 1356 00:55:23,840 --> 00:55:25,830 Jaz sem pa kričala, ker sem to storila pred sekundo. 1357 00:55:25,830 --> 00:55:27,030 To je že do datuma. 1358 00:55:27,030 --> 00:55:30,720 Sedaj lahko tečem f2c znova. 1359 00:55:30,720 --> 00:55:33,260 Poskusimo 32 Fahrenheit. 1360 00:55:33,260 --> 00:55:36,720 Zdaj pa poskusimo 212 Fahrenheit. 1361 00:55:36,720 --> 00:55:37,250 >> Fuj. 1362 00:55:37,250 --> 00:55:38,250 Zdi se, da delo. 1363 00:55:38,250 --> 00:55:41,760 No, to je dobro, vendar se mu zdi nekoliko samovoljna, da 1364 00:55:41,760 --> 00:55:44,890 Jaz prikazuje šest številk po pikami. 1365 00:55:44,890 --> 00:55:45,070 Imam prav? 1366 00:55:45,070 --> 00:55:47,830 Če ste oseba, ki je vreme na televiziji, si nekako doofus 1367 00:55:47,830 --> 00:55:49,150 Če berete temperaturo 1368 00:55:49,150 --> 00:55:50,070 Ta stopnja natančnosti. 1369 00:55:50,070 --> 00:55:51,270 Torej, kaj je to poenostavitev. 1370 00:55:51,270 --> 00:55:53,880 Torej, kaj je dejansko šel gor, da mi printf. 1371 00:55:53,880 --> 00:55:55,490 In ja, želim plavati. 1372 00:55:55,490 --> 00:55:57,570 Ampak jaz želim zdaj določiti natančnost. 1373 00:55:57,570 --> 00:55:59,070 In jaz bom se malo kratko. 1374 00:55:59,070 --> 00:56:03,090 Jaz bom rekel, da mi eno točko po decimalki. 1375 00:56:03,090 --> 00:56:07,590 Torej, namesto da pravijo% f, bom povedal% .1 f. 1376 00:56:07,590 --> 00:56:09,760 In to samo pomeni, da mi eno mesto 1377 00:56:09,760 --> 00:56:11,410 decimalno vejico. 1378 00:56:11,410 --> 00:56:11,700 V redu. 1379 00:56:11,700 --> 00:56:12,570 Poskusimo še enkrat. 1380 00:56:12,570 --> 00:56:15,590 Naj ponovno zagnati ga po pripravi. 1381 00:56:15,590 --> 00:56:18,160 In zdaj sem tip pri 32, in sem dobil nazaj 1382 00:56:18,160 --> 00:56:19,310 bolj jedrnat vrednost. 1383 00:56:19,310 --> 00:56:22,480 In lahko sem tipa, zdaj, 212, in dobili nazaj več kratka 1384 00:56:22,480 --> 00:56:23,260 vrednost, kot dobro. 1385 00:56:23,260 --> 00:56:25,190 In tu je drugih stvari, ki jih lahko storite s printf. 1386 00:56:25,190 --> 00:56:27,950 Lahko dejansko določa, kako široka mora biti številka. 1387 00:56:27,950 --> 00:56:30,900 Če želite, da oblazinjenje na to, da lahko z desno poravnati ali 1388 00:56:30,900 --> 00:56:32,360 levo poravnati vse vaše številk ali 1389 00:56:32,360 --> 00:56:33,400 poskusite središče stvari. 1390 00:56:33,400 --> 00:56:35,340 Torej zavedaš, da so majhni triki lahko storite tukaj. 1391 00:56:35,340 --> 00:56:38,420 Ampak samo omejijo na formatne kode, 1392 00:56:38,420 --> 00:56:39,600 kot da imamo tam. 1393 00:56:39,600 --> 00:56:41,090 >> Torej, glede tega vprašanja po prednostnem. 1394 00:56:41,090 --> 00:56:43,820 To je zelo dolgočasno miza šel skozi metodično. 1395 00:56:43,820 --> 00:56:46,780 Toda zavedati, da so avtorji v C prišli do 1396 00:56:46,780 --> 00:56:50,190 pravila, ki določajo, katere imajo operaterji višje 1397 00:56:50,190 --> 00:56:53,680 vrstni red, bolj zavezujoča moč, kot drugi. 1398 00:56:53,680 --> 00:56:55,890 Torej, medtem ko je v osnovni šoli, smo na splošno vedel, da je bila 1399 00:56:55,890 --> 00:56:58,930 množenje in deljenje, nato seštevanje in odštevanje, 1400 00:56:58,930 --> 00:56:59,950 še nekaj drugih stvari. 1401 00:56:59,950 --> 00:57:01,720 V svetu programiranja, tam je veliko 1402 00:57:01,720 --> 00:57:03,360 daljši seznam stvari. 1403 00:57:03,360 --> 00:57:05,150 In to ni nekaj, kar je vredno zapomniti zdaj. 1404 00:57:05,150 --> 00:57:07,310 Boste dobili aklimatizirajo, preden dolgo. 1405 00:57:07,310 --> 00:57:10,690 Toda tako kot v osnovni šoli, oklepaje splošno rešitev 1406 00:57:10,690 --> 00:57:12,990 so vprašanja, s tem da prednostne super jasno, na 1407 00:57:12,990 --> 00:57:15,620 Računalnik in podobni človeški, kar je bilo predvideno. 1408 00:57:15,620 --> 00:57:17,770 Tako da to le malo list goljufija tam. 1409 00:57:17,770 --> 00:57:21,690 Vendar je večina teh informacij ne bomo prišli do kar nekaj časa. 1410 00:57:21,690 --> 00:57:21,900 >> V redu. 1411 00:57:21,900 --> 00:57:24,120 Zdaj pa hitro in se oddaljiti od teh neumnih 1412 00:57:24,120 --> 00:57:25,460 Matematični primeri. 1413 00:57:25,460 --> 00:57:27,500 Še vedno uporabljajo iste osnove, ampak začetek 1414 00:57:27,500 --> 00:57:29,960 izražanje sebe malo več kot Scratch. 1415 00:57:29,960 --> 00:57:31,660 Torej v nič, smo imeli teh logičnih izrazov. 1416 00:57:31,660 --> 00:57:34,890 In v angleščini Logični izraz je kaj? 1417 00:57:34,890 --> 00:57:35,580 Drži ali ne drži. 1418 00:57:35,580 --> 00:57:38,300 To je nekaj, kar je ovrednoten kot resničen ali neresničen. 1419 00:57:38,300 --> 00:57:39,060 1 ali 0. 1420 00:57:39,060 --> 00:57:39,870 Vklop in izklop. 1421 00:57:39,870 --> 00:57:41,000 Karkoli želite, da ga pokličete. 1422 00:57:41,000 --> 00:57:43,210 Zdaj v Scratch, koščke sestavljanke videti takole. 1423 00:57:43,210 --> 00:57:45,850 In to je kombinacija, na dnu tam, od 3 1424 00:57:45,850 --> 00:57:47,980 puzzle kosov. 1425 00:57:47,980 --> 00:57:48,980 Ena povezavi - 1426 00:57:48,980 --> 00:57:51,710 nekaj, kar je prazno in prazna. 1427 00:57:51,710 --> 00:57:53,970 In še dve logični izrazi znotraj nje. 1428 00:57:53,970 --> 00:57:56,460 Torej lahko gnezdo logični izrazi, da bi dobili več 1429 00:57:56,460 --> 00:57:59,360 zapleteno logičnih izrazov. 1430 00:57:59,360 --> 00:58:03,930 Na primer, če je to soboto, in je lepo 1431 00:58:03,930 --> 00:58:06,180 vreme, potem pa gredo ven. 1432 00:58:06,180 --> 00:58:07,500 Ali nekaj takega samovoljno. 1433 00:58:07,500 --> 00:58:10,090 Tako se lahko pridružite logičnih izrazov, naj pripravi 1434 00:58:10,090 --> 00:58:12,780 Večja resnica vrednost, ki temelji odgovor 1435 00:58:12,780 --> 00:58:13,800 na manjših. 1436 00:58:13,800 --> 00:58:15,770 >> Zdaj, v C, na srečo, to je preslikava 1437 00:58:15,770 --> 00:58:16,720 pravzaprav zelo preprost. 1438 00:58:16,720 --> 00:58:18,820 Oklepaji pomagajo, da se stvari jasno tukaj. 1439 00:58:18,820 --> 00:58:21,700 && Je tisto, kar pomeni "in". Torej, to je, kako 1440 00:58:21,700 --> 00:58:24,700 bomo spremeniti te bloke od začetka do C. 1441 00:58:24,700 --> 00:58:27,590 In pod pogoji, smo videli v Scratch, na levi strani 1442 00:58:27,590 --> 00:58:31,150 strani pa, da jih bom lahko kup podobno v C. Če je x manjši 1443 00:58:31,150 --> 00:58:32,970 od y, potem pa to. 1444 00:58:32,970 --> 00:58:35,100 Sicer če je x večji od y, potem to. 1445 00:58:35,100 --> 00:58:38,030 Sicer je logično, da morajo biti enaka, tako pravijo, 1446 00:58:38,030 --> 00:58:39,140 da so enaki. 1447 00:58:39,140 --> 00:58:41,210 Tako smo lahko zdaj začnete graditi te stvari. 1448 00:58:41,210 --> 00:58:42,170 >> Torej, kaj je to primer. 1449 00:58:42,170 --> 00:58:45,550 Naj odpre datoteko, ki je na spletni strani seveda je to 1450 00:58:45,550 --> 00:58:47,270 Napisal sem vnaprej. 1451 00:58:47,270 --> 00:58:50,540 To se imenuje nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 In bomo videli, zakaj v trenutku. 1453 00:58:52,270 --> 00:58:54,770 Torej, v tem spisu - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 najprej zavedati, da obstaja cel kup 1455 00:58:56,830 --> 00:58:58,460 Komentarji na vrhu. 1456 00:58:58,460 --> 00:59:00,110 To je samo razložiti ime datoteke, kar je 1457 00:59:00,110 --> 00:59:01,260 ne, in tako naprej. 1458 00:59:01,260 --> 00:59:04,390 In to očitno kaže na uporabo logičnim IN-ing - 1459 00:59:04,390 --> 00:59:06,220 conjoining 2 izraze. 1460 00:59:06,220 --> 00:59:07,670 >> Torej, da vidimo, kako ta program deluje. 1461 00:59:07,670 --> 00:59:10,840 Jaz tudi moji dve datoteki, cs50.h in stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Če bi se pomaknite navzdol, zdaj pa s programom, je malo dlje 1463 00:59:13,180 --> 00:59:15,730 kot smo napisal prej, ampak lepo berljivo. 1464 00:59:15,730 --> 00:59:18,360 Zato sem najprej natisniti na uporabnika, na liniji 18, 1465 00:59:18,360 --> 00:59:20,460 "Daj mi celo število med 1 in 10". Tako 1466 00:59:20,460 --> 00:59:21,530 da je tam. 1467 00:59:21,530 --> 00:59:23,410 Zdaj sem dobil celo število. 1468 00:59:23,410 --> 00:59:25,380 Toda zavedati, da GetInt - zelo preprosta. 1469 00:59:25,380 --> 00:59:26,510 To je le, da bo dobil int. 1470 00:59:26,510 --> 00:59:28,830 To se dogaja, da se zagotovi, da ne dobite int in ne 1471 00:59:28,830 --> 00:59:30,060 niz ali float. 1472 00:59:30,060 --> 00:59:32,390 Ampak to se ne bo naredil kakršnokoli preverjanje meje. 1473 00:59:32,390 --> 00:59:34,750 To se ne bo izločiti številke, da je med 1474 00:59:34,750 --> 00:59:35,630 določenega obsega. 1475 00:59:35,630 --> 00:59:37,730 Zato moramo izvesti, da nas. 1476 00:59:37,730 --> 00:59:40,680 Torej, tako kot v Scratch, kjer sem lahko naredil zvezo 1477 00:59:40,680 --> 00:59:43,560 dva izraza, lahko storim to v C, kot sledi. 1478 00:59:43,560 --> 00:59:48,660 Če je n večji ali enak 1, n pa je manj kot in 1479 00:59:48,660 --> 00:59:52,220 ali enaka 3, bom zelo samovoljno odloka, ki 1480 00:59:52,220 --> 00:59:53,830 Številka za majhno število. 1481 00:59:53,830 --> 00:59:56,730 Samo zaradi izjave. 1482 00:59:56,730 --> 01:00:00,210 If n je med 4 in 6, print "Izbral si medij 1483 01:00:00,210 --> 01:00:03,440 številko. "Else če je n med 7 in 10, print" Izbral 1484 01:00:03,440 --> 01:00:06,390 Veliko število. "else print" Če izberete neveljavno številko. " 1485 01:00:06,390 --> 01:00:07,900 Ker je logično, da se sledi, če smo se 1486 01:00:07,900 --> 01:00:09,230 izčrpala našo ponudbo. 1487 01:00:09,230 --> 01:00:12,400 >> Torej zavedaš, da to ni prav, kako pišemo več ali 1488 01:00:12,400 --> 01:00:15,000 enako v matematičnem razredu. 1489 01:00:15,000 --> 01:00:15,160 Imam prav? 1490 01:00:15,160 --> 01:00:17,430 Ti ponavadi pripravijo tako, s črto pod njo. 1491 01:00:17,430 --> 01:00:19,250 Ampak ni tako ključnega pomena na moji tipkovnici. 1492 01:00:19,250 --> 01:00:22,390 Torej, simbol v C za izražanje večje ali 1493 01:00:22,390 --> 01:00:25,770 enako je dva znaka in simbol za manj kot 1494 01:00:25,770 --> 01:00:29,100 enako ali je dva znaka, kot dobro. 1495 01:00:29,100 --> 01:00:29,330 V redu. 1496 01:00:29,330 --> 01:00:31,910 Torej, če sem teči ta program, boste verjetno lahko uganiti, kaj je to 1497 01:00:31,910 --> 01:00:32,650 naredili. 1498 01:00:32,650 --> 01:00:36,180 Če grem naprej in da nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 In potem teče nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Daj mi številko med 1 in 10. 1501 01:00:39,530 --> 01:00:40,870 Jaz grem, da ga 11. 1502 01:00:40,870 --> 01:00:42,280 Izbral sem napačen številko. 1503 01:00:42,280 --> 01:00:44,090 Naj poskusim s številko 3. 1504 01:00:44,090 --> 01:00:45,990 Izbral sem manjše število. 1505 01:00:45,990 --> 01:00:48,360 Zato je dokaj enostavna. 1506 01:00:48,360 --> 01:00:52,230 >> Kaj, če želim spremeniti obnašanje tega programa in 1507 01:00:52,230 --> 01:00:54,250 narediti nekaj drugačnega namesto tega? 1508 01:00:54,250 --> 01:00:57,620 Naj gredo naprej in to povem. 1509 01:00:57,620 --> 01:00:59,480 Naj se znebite vsega tega. 1510 01:00:59,480 --> 01:01:03,780 In naj povem, če (n == 42). 1511 01:01:03,780 --> 01:01:08,730 In potem se bom, da gredo naprej in rekli print "Izbral si 1512 01:01:08,730 --> 01:01:16,340 Pravi odgovor. "Sicer se bomo, da gredo naprej in reči, 1513 01:01:16,340 --> 01:01:18,460 printf ("Izbral 1514 01:01:18,460 --> 01:01:21,170 napačen odgovor ");. redu. 1515 01:01:21,170 --> 01:01:22,040 Samo zato, ker. 1516 01:01:22,040 --> 01:01:23,890 >> Zdaj pa lahko nekaj točk naredimo tukaj. 1517 01:01:23,890 --> 01:01:26,570 Ena, nisem tip simbol, ki bi mislite, da je 1518 01:01:26,570 --> 01:01:27,390 Najbolj razumna. 1519 01:01:27,390 --> 01:01:30,110 Ko sem želel preveriti enakost, se izkaže, da ne uporabljate 1520 01:01:30,110 --> 01:01:30,910 enačaj. 1521 01:01:30,910 --> 01:01:34,000 Če namesto tega uporabite enako enačaj. 1522 01:01:34,000 --> 01:01:36,440 In zakaj bi naj bila, samo intuitivno? 1523 01:01:36,440 --> 01:01:37,030 Ja. 1524 01:01:37,030 --> 01:01:39,330 OBČINSTVO: [neslišno] 1525 01:01:39,330 --> 01:01:39,615 David J. Malan: Pravilno. 1526 01:01:39,615 --> 01:01:41,630 Enačaj se že uporablja za dodelitev. 1527 01:01:41,630 --> 01:01:43,020 Nekdo ni res, da to skozi. 1528 01:01:43,020 --> 01:01:45,820 In zdaj, ko gre za testiranje enakosti, moramo 1529 01:01:45,820 --> 01:01:48,850 bolj jasna, in pravijo, enako enako. 1530 01:01:48,850 --> 01:01:52,110 Zelo pogosta napaka je, da to storijo. 1531 01:01:52,110 --> 01:01:54,800 In, če bi v uradnih ur ali enkrat v naslednjem tednu ali 1532 01:01:54,800 --> 01:01:58,340 Naslednja dva tedna, naredite kaj takega, nato pa 1533 01:01:58,340 --> 01:02:00,920 borijo z njim za 10, 20 minut, poskuša ugotoviti, 1534 01:02:00,920 --> 01:02:03,330 Kaj prekleto bug je vedeti, da ste eden izmed tistih, 1535 01:02:03,330 --> 01:02:04,470 osebe, ki so to napako. 1536 01:02:04,470 --> 01:02:06,030 Torej, zelo enostavno narediti. 1537 01:02:06,030 --> 01:02:08,240 Toda zdaj je cilj, da se ubranijo pred to napako. 1538 01:02:08,240 --> 01:02:11,840 To bi lahko ocenila, ker je to res tisto, kar pravi? 1539 01:02:11,840 --> 01:02:15,010 Če n dobi 42. 1540 01:02:15,010 --> 01:02:18,250 Torej glagol ljudje uporabljajo, verbalno, da izražajo 1541 01:02:18,250 --> 01:02:21,800 Pojem naloge je "dobil". Torej, če dobi 42 n. 1542 01:02:21,800 --> 01:02:24,060 Torej to pomeni, da dodelijo 42 n. 1543 01:02:24,060 --> 01:02:26,250 Zdaj imam logični izraz v oklepaju, 1544 01:02:26,250 --> 01:02:30,230 znotraj tega pogoja, katerega vrednost je 42. 1545 01:02:30,230 --> 01:02:30,390 Imam prav? 1546 01:02:30,390 --> 01:02:32,690 Ker če ga oceni od znotraj navzven, skupne 1547 01:02:32,690 --> 01:02:34,100 odgovor, zdaj pa je 42. 1548 01:02:34,100 --> 01:02:37,360 >> Torej, če sem vas vprašal vprašanje, "če je (42)," kaj je 1549 01:02:37,360 --> 01:02:38,410 da je res rekel? 1550 01:02:38,410 --> 01:02:40,990 No, lahko logični izrazi samo resnična ali neresnična. 1551 01:02:40,990 --> 01:02:42,010 1 ali 0. 1552 01:02:42,010 --> 01:02:43,010 Vklop in izklop. 1553 01:02:43,010 --> 01:02:45,240 Tako se zdi, da imajo kotiček primer tukaj, pri čemer vsi 1554 01:02:45,240 --> 01:02:50,060 Nenadoma sem rekel, "če (42)". To ni logično vrednost. 1555 01:02:50,060 --> 01:02:54,500 Torej, kaj storiti, računalniki, čeprav je v bistvu enaka 1556 01:02:54,500 --> 01:02:58,620 vse to ni 0, je razlaga, da je res. 1557 01:02:58,620 --> 01:02:59,340 1. 1558 01:02:59,340 --> 01:02:59,690 On. 1559 01:02:59,690 --> 01:03:01,510 Vsi so funkcionalno enakovreden. 1560 01:03:01,510 --> 01:03:05,070 Samo vrednost 0, ali je ključna beseda napačna, saj bomo 1561 01:03:05,070 --> 01:03:07,860 nazadnje videli, je dejansko napačen. 1562 01:03:07,860 --> 01:03:15,040 Torej, "če je (42)" bi dejansko res, saj ni nič. 1563 01:03:15,040 --> 01:03:18,620 Torej, natančneje tukaj, Boolova vrednost res ni tako 1564 01:03:18,620 --> 01:03:20,680 zelo resnična ali neresnična, toda za to 1565 01:03:20,680 --> 01:03:24,650 primeru, če je 0 ali ni nič. 1566 01:03:24,650 --> 01:03:26,330 Torej, lažne ali napačne. 1567 01:03:26,330 --> 01:03:28,640 In to nam omogoča, da zajame vse bolj 1568 01:03:28,640 --> 01:03:30,980 možnosti v parenthetical izražanja. 1569 01:03:30,980 --> 01:03:33,840 Zato moramo, kdaj tako natančno, reči - 1570 01:03:33,840 --> 01:03:35,620 if (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Preprosto zato, ker smo morali določiti preizkus enakosti, 1572 01:03:39,100 --> 01:03:40,930 Ne dodelitev vrednosti. 1573 01:03:40,930 --> 01:03:42,830 >> Kaj je še treba omeniti tukaj? 1574 01:03:42,830 --> 01:03:46,030 Te zavitih oklepajih so pravzaprav ni potrebno. 1575 01:03:46,030 --> 01:03:48,650 Jaz sem jih delal samo, da je nit-izbirčen tukaj. 1576 01:03:48,650 --> 01:03:51,350 Toda, če imate bolezen, ki ima le eno vrstico 1577 01:03:51,350 --> 01:03:55,100 kodo, zgolj zaradi priročnosti, programerji, ni treba uporabljati 1578 01:03:55,100 --> 01:03:56,030 Zaviti oklepaji. 1579 01:03:56,030 --> 01:03:59,370 Dovolj je, da samo alinee, zaradi estetskih razlogov, 1580 01:03:59,370 --> 01:04:01,050 napišite kode. 1581 01:04:01,050 --> 01:04:04,160 Šele, ko želite napisati 2 vrstic kode - za 1582 01:04:04,160 --> 01:04:08,230 Na primer, drugega printf ("Adijo!"). Če želite narediti 1583 01:04:08,230 --> 01:04:09,540 da je pokvarjen to. 1584 01:04:09,540 --> 01:04:11,700 Lahko alinea vse, kar želite, vendar je dejstvo, da imate 1585 01:04:11,700 --> 01:04:14,600 tipkal 2 vrstic kode brez uporabe zavite oklepaje 1586 01:04:14,600 --> 01:04:16,860 pomeni, da ta program ne bi potekal pravilno ali bi lahko 1587 01:04:16,860 --> 01:04:18,530 sploh ne pripravijo pravilno. 1588 01:04:18,530 --> 01:04:21,040 Torej za zdaj, če sem iskren, mislim, da je najbolje, navada je le 1589 01:04:21,040 --> 01:04:24,460 uporabite zavitih oklepajih, in boste ugotovili, da so ti 1590 01:04:24,460 --> 01:04:25,750 super jasno, kaj se dogaja. 1591 01:04:25,750 --> 01:04:29,410 >> Prav tako, kot prahi - še posebej, če ste med tistimi, ki uporabljajo 1592 01:04:29,410 --> 01:04:31,700 priporočene knjige ali spletne vire - 1593 01:04:31,700 --> 01:04:33,480 zavedati, da je ta pojem v stilu 1594 01:04:33,480 --> 01:04:34,130 programiranje. 1595 01:04:34,130 --> 01:04:37,280 In nekateri ljudje dejansko raje dal kodraste brace 1596 01:04:37,280 --> 01:04:38,720 sem na progi. 1597 01:04:38,720 --> 01:04:41,520 Nekateri ljudje raje naredil neumnosti, 1598 01:04:41,520 --> 01:04:43,830 kot jih je dala tukaj. 1599 01:04:43,830 --> 01:04:45,140 Ni napačen odgovor, ko gre za 1600 01:04:45,140 --> 01:04:46,710 stil, vendar je to narobe. 1601 01:04:46,710 --> 01:04:47,700 Toda nekateri ljudje to. 1602 01:04:47,700 --> 01:04:49,160 [Smeh] 1603 01:04:49,160 --> 01:04:51,760 David J. Malan: Torej, sem omenil to zdaj, preprosto zato, ker so 1604 01:04:51,760 --> 01:04:54,400 si preberite na stvari v knjigah ali na spletu, boste dobili 1605 01:04:54,400 --> 01:04:55,990 različna sporočila iz različnih učiteljev in 1606 01:04:55,990 --> 01:04:56,730 različni avtorji. 1607 01:04:56,730 --> 01:04:58,640 In samo zavedati, da je funkcionalno, oni 1608 01:04:58,640 --> 01:05:00,740 na splošno enakovredni, vendar je treba dosledno. 1609 01:05:00,740 --> 01:05:02,850 Torej, v tem primeru bomo standardizirali na kodrasta 1610 01:05:02,850 --> 01:05:04,650 naramnice obloge gor na levi strani. 1611 01:05:04,650 --> 01:05:04,910 >> V redu. 1612 01:05:04,910 --> 01:05:07,040 Torej, gremo naprej in zdaj vodijo to in videli, kaj se bo zgodilo 1613 01:05:07,040 --> 01:05:07,780 s tem programom. 1614 01:05:07,780 --> 01:05:09,970 Naredite nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Potem teči nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Daj mi celo število med 0 in - tako, da ni pomembno 1617 01:05:13,900 --> 01:05:16,480 več, ampak bom samo rekel, da samovoljno 42. 1618 01:05:16,480 --> 01:05:17,850 In jaz sem izbral pravi odgovor. 1619 01:05:17,850 --> 01:05:20,430 No, kaj je dejansko si to v drugo smer. 1620 01:05:20,430 --> 01:05:22,070 Izkazalo se je, da je nekaj drugega sintaksa smo 1621 01:05:22,070 --> 01:05:23,480 lahko uporabite v programu. 1622 01:05:23,480 --> 01:05:27,310 Tukaj je nov del sintakse, ki je funkcionalno enaka, 1623 01:05:27,310 --> 01:05:30,680 ampak predstavlja še en način izražanja sebe. 1624 01:05:30,680 --> 01:05:32,830 Torej, to je tisto, kar se imenuje "switch". In 1625 01:05:32,830 --> 01:05:34,820 switch deluje na naslednji način. 1626 01:05:34,820 --> 01:05:37,580 To traja, v oklepaju, je vrednost, ki jo želite 1627 01:05:37,580 --> 01:05:38,860 "Stikalo" naprej. 1628 01:05:38,860 --> 01:05:41,490 Hočeš, da ravna drugače na podlagi njegove vrednosti. 1629 01:05:41,490 --> 01:05:44,360 Torej to pomeni, da stikalo na vrednost n. 1630 01:05:44,360 --> 01:05:45,480 In kaj to pomeni? 1631 01:05:45,480 --> 01:05:50,530 No, če je n 1, 2 ali 3, pojdi naprej in izpisal "You 1632 01:05:50,530 --> 01:05:52,680 pobral veliko število ", nato pa prekinil. 1633 01:05:52,680 --> 01:05:55,720 Razlog za odmor, da tako deluje klimatizacija, kot je 1634 01:05:55,720 --> 01:05:59,790 Takoj ko ugotovi zadevo, ki se ujema, se začne izvršilni 1635 01:05:59,790 --> 01:06:01,610 vse kode pod njo. 1636 01:06:01,610 --> 01:06:04,580 Torej, če imam eno vrstico kode, kot jaz sem na liniji 27, 1637 01:06:04,580 --> 01:06:05,360 dobi usmrčen. 1638 01:06:05,360 --> 01:06:07,520 Če dodam še eno vrstico tukaj, dobi izvršena. 1639 01:06:07,520 --> 01:06:09,350 Druga linija tu dobi izvršena. 1640 01:06:09,350 --> 01:06:12,460 Program le ustavi izvršitve, kar je pod 1641 01:06:12,460 --> 01:06:14,680 veljavne sodne izjavo, ko sem nedvoumno izraža 1642 01:06:14,680 --> 01:06:17,210 pravijo "break". Torej narobe. 1643 01:06:17,210 --> 01:06:19,220 Seveda, v tem primeru, kot rezultat. 1644 01:06:19,220 --> 01:06:22,130 Primer 4 ali 5 ali 6, podobno pa se dogaja 1645 01:06:22,130 --> 01:06:23,160 natisniti sporočilo. 1646 01:06:23,160 --> 01:06:24,410 V tem primeru je srednje število. 1647 01:06:24,410 --> 01:06:25,200 Break. 1648 01:06:25,200 --> 01:06:28,160 Primer 7, 8, 9, 10, da se bo izpisal "Izbral si velik 1649 01:06:28,160 --> 01:06:28,950 številka. "Break. 1650 01:06:28,950 --> 01:06:31,290 In potem je tukaj dobesedno ključno besedo imenujemo "default" 1651 01:06:31,290 --> 01:06:34,090 To je dejansko tako kot "drug" konstrukt. 1652 01:06:34,090 --> 01:06:36,010 Torej novo sintakso, ampak intelektualno, 1653 01:06:36,010 --> 01:06:37,060 nič novega tukaj. 1654 01:06:37,060 --> 01:06:38,280 To je tako kot nič. 1655 01:06:38,280 --> 01:06:41,040 Če pa če pa če nekako bloku. 1656 01:06:41,040 --> 01:06:44,560 >> Tako da je vklopljen različica tega programa. 1657 01:06:44,560 --> 01:06:46,280 Ampak opazili, da nam je uspelo s številkami tukaj. 1658 01:06:46,280 --> 01:06:49,040 Naj odprejo drugo različico, samo za prikaz 1659 01:06:49,040 --> 01:06:50,670 Nekaj ​​malo bolj konkretna. 1660 01:06:50,670 --> 01:06:52,840 Torej, tukaj imamo namesto ocene. 1661 01:06:52,840 --> 01:06:55,540 Izkazalo se je, lahko uporabite stikala ne samo na cela števila, ampak na 1662 01:06:55,540 --> 01:06:56,340 znake. 1663 01:06:56,340 --> 01:06:58,930 Ne v vseh vrst podatkov, vendar pa vsaj znakov. 1664 01:06:58,930 --> 01:07:02,670 Torej, tukaj, bi lahko storili kaj takega, če je vrednost C, 1665 01:07:02,670 --> 01:07:06,230 uporabnik vnesli v vrstici 19, s pomočjo GetChar funkcijo, 1666 01:07:06,230 --> 01:07:09,410 kapitalsko ali male črke, kaj je to razlagajo kot razred, 1667 01:07:09,410 --> 01:07:11,340 in pravijo, da so izbrali odlično oceno. 1668 01:07:11,340 --> 01:07:14,690 In navzdol po switch stavku, ali imamo druge 1669 01:07:14,690 --> 01:07:17,950 primerih za "B" in s "C" s, in tako naprej. 1670 01:07:17,950 --> 01:07:19,780 Ampak kaj je sedaj zaokrožujejo še eno stvar. 1671 01:07:19,780 --> 01:07:21,130 In spet nekako plujejo skozi 1672 01:07:21,130 --> 01:07:22,200 nekatere od teh primerov. 1673 01:07:22,200 --> 01:07:26,990 Ampak je res tako, da jih lahko uporabljajo zdaj - 1674 01:07:26,990 --> 01:07:28,880 ali res, samo jih prevesti zdaj - 1675 01:07:28,880 --> 01:07:32,220 do C. 1676 01:07:32,220 --> 01:07:33,310 >> Torej, naj gredo naprej in to je to. 1677 01:07:33,310 --> 01:07:34,830 Jaz bom odprl novo datoteko. 1678 01:07:34,830 --> 01:07:39,430 In jaz bom storil tudi . 1679 01:07:39,430 --> 01:07:42,770 In potem bom naredil int main (void). 1680 01:07:42,770 --> 01:07:46,390 Naj shranite datoteko kot loop.c. 1681 01:07:46,390 --> 01:07:48,280 Samo kot primer. 1682 01:07:48,280 --> 01:07:49,910 In jaz bom, da gredo naprej in ne za naslednje. 1683 01:07:49,910 --> 01:07:54,180 Želim, da napišete zelo dolgočasno program. 1684 01:07:54,180 --> 01:07:56,170 Torej 10. 1685 01:07:56,170 --> 01:07:58,862 Naredimo to. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 V redu. 1688 01:08:00,360 --> 01:08:02,120 Takoj, ko s tem začnemo pri načrtovanju, si 1689 01:08:02,120 --> 01:08:03,490 Verjetno delaš nekaj narobe. 1690 01:08:03,490 --> 01:08:04,950 Ampak bomo začeli tam nekako. 1691 01:08:04,950 --> 01:08:05,430 Ups. 1692 01:08:05,430 --> 01:08:06,950 To je pravzaprav narobe. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Nič se ne bo zgodilo, ko bomo prišli do 0. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 1. 1701 01:08:15,630 --> 01:08:16,020 Ok. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Izbriši. 1704 01:08:18,689 --> 01:08:19,029 >> V redu. 1705 01:08:19,029 --> 01:08:20,029 Torej vrne 0. 1706 01:08:20,029 --> 01:08:22,010 Torej, ta program je očitno bo to, kar je zelo 1707 01:08:22,010 --> 01:08:23,310 tediously pravi, da bo naredil. 1708 01:08:23,310 --> 01:08:24,060 To bo tiskanje vseh tistih 1709 01:08:24,060 --> 01:08:25,290 vrednosti, od vrha do dna. 1710 01:08:25,290 --> 01:08:27,140 Torej mi ne bi zanko. 1711 01:08:27,140 --> 01:08:28,640 In potem - Ops. 1712 01:08:28,640 --> 01:08:29,700 Naredite zanko. 1713 01:08:29,700 --> 01:08:31,479 Bil sem v napačnem imeniku. 1714 01:08:31,479 --> 01:08:33,300 In sedaj mi deluje zanko. 1715 01:08:33,300 --> 01:08:34,140 Enter. 1716 01:08:34,140 --> 01:08:34,620 Woohoo. 1717 01:08:34,620 --> 01:08:35,270 Zelo lepo. 1718 01:08:35,270 --> 01:08:36,279 Lep, dolg program. 1719 01:08:36,279 --> 01:08:38,109 >> V redu, sedaj pa dajmo to narediti bolje. 1720 01:08:38,109 --> 01:08:40,810 Tako kot v nič, ko ste začeli uporabljati zanka 1721 01:08:40,810 --> 01:08:43,149 gradnjo, namesto le kopiranjem in lepljenjem vse 1722 01:08:43,149 --> 01:08:45,580 puzzle kosov, naj vam predstavim to stvar. 1723 01:08:45,580 --> 01:08:48,609 Torej, v C pa obstajajo različni looping konstrukti, 1724 01:08:48,609 --> 01:08:50,540 1, ki je videti takole. 1725 01:08:50,540 --> 01:08:55,069 "Za" zanka ima tri stvari, ločene s podpičji 2. 1726 01:08:55,069 --> 01:08:57,770 In potem, notranjost telesa zanke, če se tako izrazim - 1727 01:08:57,770 --> 01:08:59,390 stvari v notranjosti so zavite oklepaje - 1728 01:08:59,390 --> 01:09:01,010 lahko storimo nekaj, kar znova in znova. 1729 01:09:01,010 --> 01:09:02,310 Torej, kaj imam tukaj na zaslonu, to je 1730 01:09:02,310 --> 01:09:03,300 dobesedno samo komentar. 1731 01:09:03,300 --> 01:09:05,380 The / / pomeni, prihaja komentarja. 1732 01:09:05,380 --> 01:09:06,180 To ni številka. 1733 01:09:06,180 --> 01:09:08,890 To je samo Angleški opis, mene, človek. 1734 01:09:08,890 --> 01:09:11,300 >> Torej initializations, pogoji in posodobitve. 1735 01:09:11,300 --> 01:09:12,770 No, pa poglejmo, kako to deluje. 1736 01:09:12,770 --> 01:09:15,520 To mi omogoča, da znova ta program, kot sledi. 1737 01:09:15,520 --> 01:09:16,399 Za - 1738 01:09:16,399 --> 01:09:18,029 tako da tukaj je moj zanko - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 Prihaja spremenljivka se imenuje "i" - 1741 01:09:21,330 --> 01:09:23,140 dobi initialized do 10. 1742 01:09:23,140 --> 01:09:25,260 Torej je moja inicializacija. 1743 01:09:25,260 --> 01:09:29,450 Rad bi naredil to zanko, tako dolgo, kot "i" je večja ali 1744 01:09:29,450 --> 01:09:30,899 enak 0. 1745 01:09:30,899 --> 01:09:32,880 In na vsaki ponovitvi te zanke, želim 1746 01:09:32,880 --> 01:09:34,979 da jaz -. 1747 01:09:34,979 --> 01:09:36,310 Tako smo videli + + v ponedeljek. 1748 01:09:36,310 --> 01:09:37,660 - Prav nasprotno. 1749 01:09:37,660 --> 01:09:39,410 To postopno znižanje vrednosti do 1. 1750 01:09:39,410 --> 01:09:43,319 Znotraj te zanke, želim, da dejansko nekaj storiti. 1751 01:09:43,319 --> 01:09:46,390 Tako bom rekel nekaj podobnega printf. 1752 01:09:46,390 --> 01:09:48,939 Nočem reči, zdaj 10, ker je to očitno le 1753 01:09:48,939 --> 01:09:50,000 tiskanjem enako vrednost. 1754 01:09:50,000 --> 01:09:52,246 Kaj hočem natisniti namesto, verjetno? 1755 01:09:52,246 --> 01:09:52,590 Ja. 1756 01:09:52,590 --> 01:09:55,270 Tako "i". Torej% d, i. 1757 01:09:55,270 --> 01:09:57,340 >> Torej, jaz bom ukradel eno od teh idej od prej - 1758 01:09:57,340 --> 01:09:59,640 To nadomestilo za formatne kode - 1759 01:09:59,640 --> 01:10:01,620 in potem sem dol, na dnu, se bom vrnil 0, samo 1760 01:10:01,620 --> 01:10:02,710 za dobro mero. 1761 01:10:02,710 --> 01:10:04,740 Ampak zdaj imam bolj zgoščen program. 1762 01:10:04,740 --> 01:10:07,490 To je le nekaj vrstic, ne pa okrog 10 ali 11 vrstic. 1763 01:10:07,490 --> 01:10:09,440 Pusti me, da moj poziv tukaj. 1764 01:10:09,440 --> 01:10:10,630 Remake zanka. 1765 01:10:10,630 --> 01:10:12,140 Ponovitev zanke. 1766 01:10:12,140 --> 01:10:13,570 In zdi se, da je enako. 1767 01:10:13,570 --> 01:10:15,550 Zdaj, program ni več zanimiv. 1768 01:10:15,550 --> 01:10:17,180 Ampak zdaj sem lahko vnesete nekaj takega. 1769 01:10:17,180 --> 01:10:18,970 Lahko spremenite na 100. 1770 01:10:18,970 --> 01:10:21,400 Lahko pa prevedem program. 1771 01:10:21,400 --> 01:10:23,360 In potem bom lahko ponovno zagnati svoj program. 1772 01:10:23,360 --> 01:10:26,390 In zdaj gre super hitro na današnjih računalnikih. 1773 01:10:26,390 --> 01:10:27,820 Vendar pa moram - 1774 01:10:27,820 --> 01:10:29,620 in dejansko moj notesnik buffer ne 1775 01:10:29,620 --> 01:10:30,890 gredo celo tako daleč. 1776 01:10:30,890 --> 01:10:31,680 Takole. 1777 01:10:31,680 --> 01:10:34,090 Torej imamo vse 100. 1778 01:10:34,090 --> 01:10:35,880 Ampak to je enostavno narediti napake tukaj. 1779 01:10:35,880 --> 01:10:37,920 Kaj se dogaja, da je pričakovano vedenje, če bi 1780 01:10:37,920 --> 01:10:41,150 nehote naredil? 1781 01:10:41,150 --> 01:10:42,550 Tako se zdi, kot neskončno. 1782 01:10:42,550 --> 01:10:44,670 Torej, da vidimo, če je računalnik obnaša. 1783 01:10:44,670 --> 01:10:47,020 >> Torej, naj gredo naprej in da zanko. 1784 01:10:47,020 --> 01:10:48,355 In mi deluje zanko. 1785 01:10:53,590 --> 01:10:55,210 Torej, kaj je prišel nazaj, da je v trenutku. 1786 01:10:55,210 --> 01:10:56,720 Pustili bomo, da teče. 1787 01:10:56,720 --> 01:10:59,520 Ker kaj naj bi štel do, minimalno? 1788 01:10:59,520 --> 01:11:02,200 Verjetno vsaj 2 milijard EUR, če želimo imeti, da je veliko bitov, in 1789 01:11:02,200 --> 01:11:03,660 smo z uporabo pozitivnih vrednot. 1790 01:11:03,660 --> 01:11:04,890 Torej, kaj je skok nazaj. 1791 01:11:04,890 --> 01:11:07,810 Poleg teh vrst zank, imamo tisto, kar imenujemo medtem 1792 01:11:07,810 --> 01:11:09,430 zanke. Torej, tako kot v nič, si imel vedno 1793 01:11:09,430 --> 01:11:11,240 bloki, ti pa ponovite blokov. 1794 01:11:11,240 --> 01:11:13,270 Podobno je v C, boste morali druge načine 1795 01:11:13,270 --> 01:11:14,260 za izražanje sebe. 1796 01:11:14,260 --> 01:11:17,110 Torej imate ta pojem while zanke, ki omogoča 1797 01:11:17,110 --> 01:11:18,860 predstavljajo si malo drugače. 1798 01:11:18,860 --> 01:11:21,490 In potem imaš nekaj, kar ti ne počne while zanko, 1799 01:11:21,490 --> 01:11:24,200 ki deluje nekoliko drugače kot dobro. 1800 01:11:24,200 --> 01:11:25,320 In bomo to draži narazen daljšem časovnem obdobju. 1801 01:11:25,320 --> 01:11:28,630 >> No, pa si oglejte na tej zadnjega tukaj. 1802 01:11:28,630 --> 01:11:30,160 Če bomo šli v - 1803 01:11:30,160 --> 01:11:31,466 še vedno teče. 1804 01:11:31,466 --> 01:11:32,770 To je zelo neskončno. 1805 01:11:32,770 --> 01:11:36,870 Torej, naj gredo v pozitivno, in pokazati, kako lahko dejansko 1806 01:11:36,870 --> 01:11:39,410 urejajo vnos uporabnika nekoliko bolj učinkovito. 1807 01:11:39,410 --> 01:11:40,910 To je zelo kratek program. 1808 01:11:40,910 --> 01:11:43,730 In tukaj imamo v main, int n deklaracije. 1809 01:11:43,730 --> 01:11:46,570 Daj mi spremenljivko, imenovano n. Zdaj sem dobesedno pomeni 1810 01:11:46,570 --> 01:11:48,340 "Ne". In potem imam odprt kodrasti 1811 01:11:48,340 --> 01:11:49,630 naramnicami, blizu kodrasti naramnicami. 1812 01:11:49,630 --> 01:11:52,000 In potem opazil, takoj po tem, ko pravi, n 1813 01:11:52,000 --> 01:11:53,790 je manj kot 1. 1814 01:11:53,790 --> 01:11:55,300 Torej, opazil, da te vrstice - 1815 01:11:55,300 --> 01:11:56,740 19-24 - 1816 01:11:56,740 --> 01:11:59,450 sestavljajo kolektivno ne počne while zanko. 1817 01:11:59,450 --> 01:12:01,280 In spet, novo sintaksa, ni nova ideja. 1818 01:12:01,280 --> 01:12:03,740 To je samo še en način zanka, sintaktično. 1819 01:12:03,740 --> 01:12:04,890 Torej, kaj to storiti? 1820 01:12:04,890 --> 01:12:08,000 Naredite, medtem ko je n manj kot 1. 1821 01:12:08,000 --> 01:12:09,080 Torej, kaj bi rad naredil? 1822 01:12:09,080 --> 01:12:11,390 Zahtevam, da mi daš pozitivno celo število. 1823 01:12:11,390 --> 01:12:14,110 Potem sem dejansko poskušal priti celo število od uporabnika. 1824 01:12:14,110 --> 01:12:16,740 Ampak glede na vrstni red operacij tukaj, ker 1825 01:12:16,740 --> 01:12:21,850 medtem ko je stanje tukaj, jaz pa bom preveril, je n 1826 01:12:21,850 --> 01:12:23,100 manj kot 1? 1827 01:12:23,100 --> 01:12:24,600 Torej, predvidevam, da si - 1828 01:12:24,600 --> 01:12:26,450 potem ko je zahteval na ta način - 1829 01:12:26,450 --> 01:12:29,190 vrste v vrednosti 0. 1830 01:12:29,190 --> 01:12:34,510 Ta pogoj se bo drži ali ne? 1831 01:12:34,510 --> 01:12:35,820 No, to je dejansko dogaja, da bi bilo res. 1832 01:12:35,820 --> 01:12:38,700 Ker je n 0, 0 je manj kot 1. 1833 01:12:38,700 --> 01:12:40,140 Kaj to pomeni? 1834 01:12:40,140 --> 01:12:41,160 Daj še enkrat. 1835 01:12:41,160 --> 01:12:41,990 Daj še enkrat. 1836 01:12:41,990 --> 01:12:42,640 Daj še enkrat. 1837 01:12:42,640 --> 01:12:46,080 Šele ko je ta pogoj ovrednoten kot neresničen. 1838 01:12:46,080 --> 01:12:47,510 Če vpišem v 42. 1839 01:12:47,510 --> 01:12:49,690 Pa ne, 42 ni manjša od 1. 1840 01:12:49,690 --> 01:12:52,320 Zato je ta krog narediti izvršitve. 1841 01:12:52,320 --> 01:12:54,650 In tako se na tej točki, bo program rekli, hvala za 1842 01:12:54,650 --> 01:12:57,530 42, v tej zadevi. 1843 01:12:57,530 --> 01:13:00,320 Sedaj, ko imate tak način izražanja sebe - 1844 01:13:00,320 --> 01:13:02,360 Ne smemo čakati, da se to konča. 1845 01:13:02,360 --> 01:13:03,620 To bo trajalo nekaj časa. 1846 01:13:03,620 --> 01:13:04,990 Se nadaljuje naslednjič, mogoče. 1847 01:13:04,990 --> 01:13:08,050 >> Toda zdaj, imate možnost, da upajmo, da bi razumeli 1848 01:13:08,050 --> 01:13:09,060 malo geek humor. 1849 01:13:09,060 --> 01:13:11,560 Opravičilo. 1850 01:13:11,560 --> 01:13:13,620 To ni reprezentativen za humor v računalniški znanosti 1851 01:13:13,620 --> 01:13:14,870 svet, vendar je srčkan. 1852 01:13:21,020 --> 01:13:23,890 [Smeh] Gremo na koncu tega zapisa. 1853 01:13:23,890 --> 01:13:25,750 In se vidimo v ponedeljek. 1854 01:13:25,750 --> 01:13:31,629 [APLAVZ]