1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] DAVID J. Malan: Bone, ĉi tiu estas CS50 kaj ĉi tiu estas la 2 00:00:09,920 --> 00:00:15,250 fino de semajno 1, do studado kartoj estas en kaj la tuta nombro de 3 00:00:15,250 --> 00:00:18,640 kompanoj ke vi havas ĉi tiu jaro estas 745. 4 00:00:18,640 --> 00:00:20,920 Kaj ni tiel emociita havi tiom multaj el vi en la kurso 5 00:00:20,920 --> 00:00:23,680 ĉi semestro, sed kvankam ĉi tiu kurso estas tiel granda, 6 00:00:23,680 --> 00:00:26,090 rimarkas ke estas tiuj aĵoj kiel vendredo lunĉoj, kiel 7 00:00:26,090 --> 00:00:29,020 oficejo horoj, 15-persono sekcioj, ktp ke 8 00:00:29,020 --> 00:00:30,590 vere intencis krei ĉi pli intima 9 00:00:30,590 --> 00:00:31,140 medio. 10 00:00:31,140 --> 00:00:34,070 Do kvankam ni povas kolekti unu aŭ du fojoj semajne, tie en 11 00:00:34,070 --> 00:00:36,420 Sanders, scias, ke multe de via sperto en ĉi tiu kurso 12 00:00:36,420 --> 00:00:39,330 estos tre multe esti manoj-on sur la flanko de via samklasanoj 13 00:00:39,330 --> 00:00:40,730 kaj la instruistaro. 14 00:00:40,730 --> 00:00:43,960 >> Do jen ni iros, Fall 2012. 15 00:00:43,960 --> 00:00:47,530 Do rememori ke lastfoje ni finis la noto de 16 00:00:47,530 --> 00:00:50,460 imprecision, parolante pri la reprezentado de nombroj. 17 00:00:50,460 --> 00:00:52,950 Kaj ni rigardis unu de la fiaskoj kiuj okazis, en la 18 00:00:52,950 --> 00:00:54,920 reala mondo, kiam venis al miskompreno 19 00:00:54,920 --> 00:00:55,890 kiom komputiloj funkcias. 20 00:00:55,890 --> 00:00:58,590 Nu, hodiaŭ ni reviziti alia de tiuj ideoj kiel 21 00:00:58,590 --> 00:01:01,410 krom daŭrigi nian diskuton pri la CS50 kliento 22 00:01:01,410 --> 00:01:04,090 kaj C kaj kion ĝi signifas vere programo. 23 00:01:04,090 --> 00:01:06,430 Sed unue, nur paro de ventego anoncoj. 24 00:01:06,430 --> 00:01:08,930 >> Sekcioj komenci tiun dimanĉon, kaj la unua semajno estas ĉiam 25 00:01:08,930 --> 00:01:11,030 iom de rapida komenco, ĉar ni ĵus alvenis en 26 00:01:11,030 --> 00:01:12,620 Via sekcio formoj. 27 00:01:12,620 --> 00:01:14,450 Ni faras la sama, nun, kun la instruado uloj, nun 28 00:01:14,450 --> 00:01:16,410 ke ili konas lian horarojn, do ni celas, per 29 00:01:16,410 --> 00:01:19,380 Sabato matene, sekvi kun vi kun via sekcio 30 00:01:19,380 --> 00:01:20,760 farita kaj TF. 31 00:01:20,760 --> 00:01:22,770 Rimarkas ke ili devos komenci la sekvanta tago, dimanĉo 32 00:01:22,770 --> 00:01:24,510 aŭ lundo aŭ mardo. 33 00:01:24,510 --> 00:01:27,730 Kaj poste ni akomodi sekcio ŝanĝojn dum ili ekesti 34 00:01:27,730 --> 00:01:28,690 en la tempo venonta. 35 00:01:28,690 --> 00:01:31,590 Oficejo horoj, dume, estas, denove, ĉi tiu nokto, 8 am al 11, en 36 00:01:31,590 --> 00:01:33,740 Annenberg, tiel kiel morgaŭ nokte. 37 00:01:33,740 --> 00:01:36,150 Kvankam la problemo aroj estas ĝenerale pro la ĵaŭdo 38 00:01:36,150 --> 00:01:39,020 tagmeze, realigi vi havas ĝis kvin malfrue tagoj por pasigi, 39 00:01:39,020 --> 00:01:42,430 tie la havebleco de oficejo horoj sur ĵaŭdo se 40 00:01:42,430 --> 00:01:45,930 vi kontanta en unu el tiuj malfrue tagoj kaj, per tio, submetiĝi 41 00:01:45,930 --> 00:01:47,070 io en vendredo. 42 00:01:47,070 --> 00:01:50,850 Lasu min sugesti ke Scratch estas inter la plej amuza, inter la 43 00:01:50,850 --> 00:01:52,390 pli malalta klavo problemo aroj. 44 00:01:52,390 --> 00:01:55,160 Kaj mi pendas sur tiuj malfrue tagoj, strategie, ĝuste 45 00:01:55,160 --> 00:01:57,380 por poste en la semestro kiam vivo komenciĝas por akiri en la vojo 46 00:01:57,380 --> 00:01:59,470 kun midterms kaj aliaj klasoj. 47 00:01:59,470 --> 00:02:01,580 Problemo Serio 1, dume, estus eldonita en la kurso de 48 00:02:01,580 --> 00:02:06,080 afiŝinto ĉi vendredo, kiel estos al la kurso de promenado 49 00:02:06,080 --> 00:02:08,789 tra video, kiu estos filmado je 2:30 am vendrede 50 00:02:08,789 --> 00:02:11,890 kaj poste posted linio de la sekvanta tago. 51 00:02:11,890 --> 00:02:13,880 >> Do ni finiĝis lundon. 52 00:02:13,880 --> 00:02:15,450 Mi volas - fakte, unu noti ĉi tie. 53 00:02:15,450 --> 00:02:18,870 Ĉar la klasojn - ĉar Sanders ne ekzakte prunti 54 00:02:18,870 --> 00:02:22,220 al hazardaj Q & A tien kaj reen terure bone, ni estas 55 00:02:22,220 --> 00:02:24,030 tuj provos ion iom novan tiu jaro, per kiu 56 00:02:24,030 --> 00:02:26,160 se vi ne estas komforta levante via mano aŭ vi simple 57 00:02:26,160 --> 00:02:28,800 preferus ne levi vian manon en ĉambro kiel ĉi tiu, 58 00:02:28,800 --> 00:02:30,710 ni havos kelkajn el la instruado uloj kaj CAS 59 00:02:30,710 --> 00:02:33,260 tripulando cs50.net/discuss dum prelego. 60 00:02:33,260 --> 00:02:35,440 Do se vi havas demandon, ĉar mi estis tute 61 00:02:35,440 --> 00:02:37,510 certe pri io aŭ vi estas scivola pri iuj 62 00:02:37,510 --> 00:02:39,640 temon, provu posting ŝin tie. 63 00:02:39,640 --> 00:02:42,670 Tag ĝin kun etiketo de prelego, kaj ni faros nian eblon 64 00:02:42,670 --> 00:02:45,430 hodiaŭ kaj proksima semajno - we'll provi tion eksteren - al kampa ĝi 65 00:02:45,430 --> 00:02:47,990 ĉu elektronike, online, aŭ se ĝi sentas, ke ni devus 66 00:02:47,990 --> 00:02:50,430 vere trakti ĝin amase, unu el la instruado uloj aŭ 67 00:02:50,430 --> 00:02:52,080 CAS levos sian manon kaj petas 68 00:02:52,080 --> 00:02:53,480 anonime en via nomo. 69 00:02:53,480 --> 00:02:55,650 Do ni donos ĉi oni provu kaj vidi kiel bone ĉi verkoj. 70 00:02:55,650 --> 00:02:58,540 Sed, por supozita, daŭrigu levi manojn, kiel vi ŝatus. 71 00:02:58,540 --> 00:03:11,420 >> Do lastan fojon ni malkaŝis ke la 10% aŭ unu-deka ne estas, en 72 00:03:11,420 --> 00:03:13,840 Fakte, 0.1, kiel vi estas instruitaj multaj jaroj. 73 00:03:13,840 --> 00:03:15,390 Estas fakte, valoro kiel ĉi tio. 74 00:03:15,390 --> 00:03:16,970 Sed tio ne estas tute vera, ĉu ne? 75 00:03:16,970 --> 00:03:19,585 Ni nur havas ĉi limigo en komputiloj per, se vi 76 00:03:19,585 --> 00:03:22,450 nur havi finia kvanto de memoro, memoro RAM, aŭ pli 77 00:03:22,450 --> 00:03:25,220 specife bitoj, nu, tie estas nur finia nombro 78 00:03:25,220 --> 00:03:26,980 de aĵoj vi povas reprezenti. 79 00:03:26,980 --> 00:03:29,780 Ekzemple, se ni havas la nombro nulo, kaj ni volas 80 00:03:29,780 --> 00:03:32,790 reprezenti en duuma, uzante ok bitoj, kie iom, 81 00:03:32,790 --> 00:03:34,710 denove, estas nulo aŭ unu, ni povus 82 00:03:34,710 --> 00:03:39,240 reprezenti ĝin kiel 00000000. 83 00:03:39,240 --> 00:03:41,160 Kaj tio estas iom nenecese abundajn. 84 00:03:41,160 --> 00:03:43,700 Ĝuste kiel en la dekuma sistemo en la reala mondo, 85 00:03:43,700 --> 00:03:47,040 ĝenerale, se vi volas skribi la numeron 123, ni 86 00:03:47,040 --> 00:03:52,240 homoj probable ne skribas 00000123 kvankam, 87 00:03:52,240 --> 00:03:53,940 funkcie, tiu estas la ĝusta sama nombro. 88 00:03:53,940 --> 00:03:56,580 Ni nur faligi kondukante nuloj, por tiel diri. 89 00:03:56,580 --> 00:03:58,270 >> En duuma, ni povas fari same. 90 00:03:58,270 --> 00:04:01,440 Duuma kaj nulo, nulo kaj binara estas nur nulo. 91 00:04:01,440 --> 00:04:02,870 Vi nur bezonas unu bito. 92 00:04:02,870 --> 00:04:05,020 Sed denove, la plej komuna unuo de mezuro en la mondo 93 00:04:05,020 --> 00:04:07,820 de komputado estas bitokoj, ok bitoj. 94 00:04:07,820 --> 00:04:09,720 Nur ĉar oni iom, bela netaŭga. 95 00:04:09,720 --> 00:04:12,020 Ok bitoj, ne terure utila, sed almenaŭ estas pli 96 00:04:12,020 --> 00:04:14,280 utila ol sola unuo de mezuro. 97 00:04:14,280 --> 00:04:17,100 Do kun ok bitoj, ni tipe reprezenti duuma. 98 00:04:17,100 --> 00:04:20,459 Do jen ni havas la numerojn nulo, unu, du, kaj tiam, kiam 99 00:04:20,459 --> 00:04:24,200 Nate faris en nia video lasta merkredo, ni povas daŭrigi 100 00:04:24,200 --> 00:04:25,940 rakonti ĝis sep, ok. 101 00:04:25,940 --> 00:04:27,860 Kaj tiam se ni uzas pli kaj pli bitoj, ni 102 00:04:27,860 --> 00:04:29,880 povas rakonti ĝis infinito. 103 00:04:29,880 --> 00:04:32,800 Sed se vi nur havas finia nombro de tiuj bitoj, kiel estas 104 00:04:32,800 --> 00:04:35,030 la kazo en ajna komputila sistemo, aŭ eĉ misilon 105 00:04:35,030 --> 00:04:36,670 sistemo, nu, efektive vi nur havas 106 00:04:36,670 --> 00:04:37,900 finia kvanto de precizeco. 107 00:04:37,900 --> 00:04:41,290 Do se vi volas prezenti la nombron kiel 0,1, nu, la 108 00:04:41,290 --> 00:04:43,410 komputilo devas elekti kaj elekti. 109 00:04:43,410 --> 00:04:45,970 Kaj se ĝi nur havas finia nombro de nombroj ĝi povas 110 00:04:45,970 --> 00:04:50,490 reprezentas, ĝi povas veni proksime al 0,1 por vi, sed ne povas 111 00:04:50,490 --> 00:04:53,730 nepre donas al vi precize la valoro kiun vi volas. 112 00:04:53,730 --> 00:04:55,660 Kaj tiu estas nur unu el la defioj de komputiloj, 113 00:04:55,660 --> 00:04:57,090 sub la kapuĉo, dankeme. 114 00:04:57,090 --> 00:04:59,110 >> Kiel ni moviĝu en la semestro, tiuj malsupera nivelo 115 00:04:59,110 --> 00:05:02,310 detaloj fariĝis multe malpli interesa, sed certe la 116 00:05:02,310 --> 00:05:05,700 apliko de tiuj ideoj povas havi iu tre reala mondo 117 00:05:05,700 --> 00:05:06,760 ramificaciones. 118 00:05:06,760 --> 00:05:08,190 Unu estas iom amuza. 119 00:05:08,190 --> 00:05:12,150 Kiel multaj el vi jam vidis la miriga filmo Office Space? 120 00:05:12,150 --> 00:05:13,620 Se vi ne havas, tiu estas via neoficialaj 121 00:05:13,620 --> 00:05:14,370 hejmtaskoj por la semajno. 122 00:05:14,370 --> 00:05:16,730 Sed en Office Space, la uloj en tiu filmo preni 123 00:05:16,730 --> 00:05:19,900 avantaĝo de precize tiu ideo, sed fakte sxtelis 124 00:05:19,900 --> 00:05:21,270 ĝin de alia filmo por ke vi havu 125 00:05:21,270 --> 00:05:22,760 vidis, eĉ jaroj antaŭ. 126 00:05:22,760 --> 00:05:24,920 Do mi donos al vi kelkajn sekundojn de ĉi trailer de 127 00:05:24,920 --> 00:05:27,470 ĉi mirinda filmo kaj tio estas tre 128 00:05:27,470 --> 00:05:28,340 akademie grava. 129 00:05:28,340 --> 00:05:30,310 >> [Teatraĵoj KINO] 130 00:05:30,310 --> 00:05:32,240 Fakte mi esti promociita. 131 00:05:32,240 --> 00:05:33,360 Mi povas plani viruso kiu ŝiri ke 132 00:05:33,360 --> 00:05:34,460 meti sur granda tempo. 133 00:05:34,460 --> 00:05:35,770 Nu, kiel ĝi funkcias? 134 00:05:35,770 --> 00:05:37,836 Ĉiufoje estas banko transakcio kies intereso estas 135 00:05:37,836 --> 00:05:40,154 komputis, estas miloj tagon, la komputilo finas 136 00:05:40,154 --> 00:05:41,040 kun tiuj frakcioj de cendo. 137 00:05:41,040 --> 00:05:43,050 Sed mi ne volas fari ion neleĝa. 138 00:05:43,050 --> 00:05:46,730 Kontraŭleĝa? Samir, jen Ameriko. 139 00:05:46,730 --> 00:05:48,010 Vi devas ĵuri al Dio. 140 00:05:48,010 --> 00:05:51,870 Se neniu scias pri ĉi tiu sed ni, en ordo? Neniu familianoj, neniu 141 00:05:51,870 --> 00:05:52,490 fianĉinoj, neniu. 142 00:05:52,490 --> 00:05:53,882 [Inaudible]. 143 00:05:53,882 --> 00:05:57,594 Ne zorgu, homo, mi ne diros al neniu ĉu. 144 00:05:57,594 --> 00:05:59,680 [Filmo finas] 145 00:05:59,680 --> 00:06:01,900 >> Bone, do eble mi trovis ĉi tiun filmon bona ol plej 146 00:06:01,900 --> 00:06:05,530 homoj tie, sed en ĉiu kazo, la viruso, ke ili 147 00:06:05,530 --> 00:06:06,400 provante krei - 148 00:06:06,400 --> 00:06:08,410 kaj en la kino, anytime ili volas nomi ion virus, 149 00:06:08,410 --> 00:06:09,770 ĝi estas ĝenerale ne reale viruso. 150 00:06:09,770 --> 00:06:11,600 Estas nur programo ke iu skribis ion fari. 151 00:06:11,600 --> 00:06:13,800 Kaj en ĉi tiu kazo, la infanoj provis skribi programon 152 00:06:13,800 --> 00:06:16,610 kiu utiligis lian kompanion nomata Innotech la 153 00:06:16,610 --> 00:06:19,740 komputado sistemo, per kiu komputiloj, ankaŭ, eĉ kiam ĝi 154 00:06:19,740 --> 00:06:21,350 venas al mono, ĉu ne nepre 155 00:06:21,350 --> 00:06:23,490 reprezenti mono precize. 156 00:06:23,490 --> 00:06:27,630 Do eĉ se vi povus havi $ 0,10 en via bankokonto, 157 00:06:27,630 --> 00:06:31,060 0.10, nu, la komputilo povis fakte opinias, ke vi havas 158 00:06:31,060 --> 00:06:33,560 ĉi tio multaj cendoj en via bankokonto. 159 00:06:33,560 --> 00:06:35,750 Kaj tiel kion tiuj infanoj estis aspirante fari - kaj ili 160 00:06:35,750 --> 00:06:38,240 ŝtelis la ideon, rezultas el Superman III, kie 161 00:06:38,240 --> 00:06:41,210 Richard Pryor faris la samon - ili estis esence 162 00:06:41,210 --> 00:06:44,880 skribi programojn kiuj aspiras preni ĉiujn trenante 163 00:06:44,880 --> 00:06:46,930 nombroj, ĉiu el la etaj, eta, eta frakcioj de 164 00:06:46,930 --> 00:06:50,160 cendoj, kaj siphoning tiuj ekstere tiel ke la homoj ĝuste 165 00:06:50,160 --> 00:06:52,620 penso, oh, estas nur $ 0,10 tie, sed ĉiuj el tiuj 166 00:06:52,620 --> 00:06:54,410 trenante nombroj eventuale aldoni supren. 167 00:06:54,410 --> 00:06:57,490 Do mirinda ideo kaj ĝi backfired hilariously en tiu 168 00:06:57,490 --> 00:06:58,250 aparta filmo. 169 00:06:58,250 --> 00:07:01,800 >> Sed en la reala mondo, ankaŭ, estas multe pli pri 170 00:07:01,800 --> 00:07:03,190 konsekvencojn de tiuj specoj de aferoj. 171 00:07:03,190 --> 00:07:05,450 Kaj unu el la kialoj por plonĝi en la kampo de komputado 172 00:07:05,450 --> 00:07:07,620 scienco estas, denove, lia aplicabilidad ne al la 173 00:07:07,620 --> 00:07:09,740 inĝenierio sciencoj sola, sed nur por 174 00:07:09,740 --> 00:07:10,650 aliaj kampoj kiel bone. 175 00:07:10,650 --> 00:07:14,760 Do ĉi tiu estas malpli lighthearted rigardu kion povas iri malbone, sed 176 00:07:14,760 --> 00:07:17,630 ĝi estas ankaŭ sufiĉe okulo malfermo, mi pensas, kiam temas pri 177 00:07:17,630 --> 00:07:20,760 kompreni ĝuste kiel omnipresente teknologioj kiel 178 00:07:20,760 --> 00:07:22,870 komputiloj kaj programado aŭ tiuj tagoj, 179 00:07:22,870 --> 00:07:23,930 en formo de programaro. 180 00:07:23,930 --> 00:07:26,500 Do tiu sekva klipo estas nur ĉirkaŭ ses minutoj, daŭre 181 00:07:26,500 --> 00:07:30,320 kie ni cxesis lasta fojo, sed permesas ke ni vidu iom 182 00:07:30,320 --> 00:07:33,370 pli en profundo je unu tian el tiuj aferoj. 183 00:07:33,370 --> 00:07:35,270 Lasu min salti antaŭen al kie ni lasis, 184 00:07:35,270 --> 00:07:37,780 agadis bone tie. 185 00:07:37,780 --> 00:07:41,580 Kaj ni havas parton du de du, cxar ĉirkaŭ ses minutojn tie. 186 00:07:41,580 --> 00:07:41,980 >> [LUDU KINO] 187 00:07:41,980 --> 00:07:45,430 Plagado moderna raketo teknologio. 188 00:07:45,430 --> 00:07:49,280 En 1991, kun la komenco de la unua milito de la Golfo, la Patriota 189 00:07:49,280 --> 00:07:51,350 misilon spertis similan ia 190 00:07:51,350 --> 00:07:52,645 numeron konvertiĝo problemo. 191 00:07:52,645 --> 00:07:57,460 Kaj kiel rezulto, 20 personoj, 20 usonaj soldatoj, estis mortigita 192 00:07:57,460 --> 00:08:01,130 kaj ĉirkaŭ 100 aliaj vunditaj kiam la Patriot, kiu estis supozita 193 00:08:01,130 --> 00:08:03,400 protekti kontraŭ venonta scuds, 194 00:08:03,400 --> 00:08:06,020 malsukcesis pafi misilo. 195 00:08:06,020 --> 00:08:09,350 >> Kiam Irako invadis Kuvajton kaj Usono lanĉis Dezerto 196 00:08:09,350 --> 00:08:13,530 Ŝtormo en frua 1991, Patriot misilon piloj estis 197 00:08:13,530 --> 00:08:16,970 deplojitaj por protekti Saŭda Arabio kaj Israelo de irakaj 198 00:08:16,970 --> 00:08:19,810 Scud misilon atakoj. 199 00:08:19,810 --> 00:08:23,740 The Patriot estas usona duona atingo surfaco-sistemo de aero, 200 00:08:23,740 --> 00:08:26,370 fabrikita de la Raytheon kompanio. 201 00:08:26,370 --> 00:08:30,860 La grandeco de la Patriot interceptor mem, temas pri 202 00:08:30,860 --> 00:08:35,650 proksimume 20 metrojn longa kaj ĝi pezas ĉirkaŭ 2.000 pundoj. 203 00:08:35,650 --> 00:08:38,809 Kaj portas kapon de ĉirkaŭ - Mi kredas ke estas krude 204 00:08:38,809 --> 00:08:40,169 150 funtoj. 205 00:08:40,169 --> 00:08:45,820 Kaj la kapo sin estas alta eksploda kiu havas 206 00:08:45,820 --> 00:08:48,120 fragmentoj ĉirkaŭ ĝi. 207 00:08:48,120 --> 00:08:51,870 La carcasa de la kapo estas desegnita por agi kiel Buckshot. 208 00:08:51,870 --> 00:08:54,920 La misiloj estas portitaj kvar po ujo kaj estas 209 00:08:54,920 --> 00:08:57,850 transportitaj per duone trailer. 210 00:08:57,850 --> 00:09:02,940 >> The Patriot antimisil sistemo superas almenaŭ 211 00:09:02,940 --> 00:09:05,530 20 jaroj nun. 212 00:09:05,530 --> 00:09:09,150 Ĝi estis originale desegnita kiel aero defendo misilon al 213 00:09:09,150 --> 00:09:12,920 malkonstrui aviadiloj malamikoj, en la unua milito de la Golfo. 214 00:09:12,920 --> 00:09:17,700 Kiam tiu milito venis kune, la Armeo volis uzi ĝin por pafi 215 00:09:17,700 --> 00:09:19,880 malsupren scuds, ne aviadiloj. 216 00:09:19,880 --> 00:09:24,860 La Aera Forto estis iraka ne tiom de problemo, sed la Armeo 217 00:09:24,860 --> 00:09:27,260 estis maltrankviligita scuds. 218 00:09:27,260 --> 00:09:30,810 Kaj tiel ili provis ĝisdatigi la Patriot. 219 00:09:30,810 --> 00:09:33,770 Interkapti malamiko misilon vojaĝante al Mach 5 tuj 220 00:09:33,770 --> 00:09:35,790 esti defiante sufiĉas. 221 00:09:35,790 --> 00:09:39,460 Sed kiam la Patriot estis enkuris servo, la Armeo 222 00:09:39,460 --> 00:09:43,730 ne estis konscia de iraka modifo kiun faris lia 223 00:09:43,730 --> 00:09:46,510 Scuds preskaŭ neeble batis. 224 00:09:46,510 --> 00:09:50,040 >> Kio okazis estas la scuds kiuj estis 225 00:09:50,040 --> 00:09:51,360 venon estis malstabila. 226 00:09:51,360 --> 00:09:52,266 Ili estis wobbling. 227 00:09:52,266 --> 00:09:56,300 La kialo de ĉi tiu estis la irakanoj, kun la celo akiri 600 228 00:09:56,300 --> 00:10:00,650 kilometroj el 300 kilometro gamo misilo, prenis 229 00:10:00,650 --> 00:10:02,423 pezo el la antaŭa kapo kaj 230 00:10:02,423 --> 00:10:03,990 faris la kapo pli malpeza. 231 00:10:03,990 --> 00:10:08,700 Do nun la Patriot'S provi veni en la Scud, kaj la plimulto de 232 00:10:08,700 --> 00:10:11,192 la tempo, la grandega plimulto de la tempo, ĝi estus 233 00:10:11,192 --> 00:10:13,450 nur flugas per la Scud. 234 00:10:13,450 --> 00:10:16,300 Iam la Patriot sistemo operatoroj realigi la Patriot 235 00:10:16,300 --> 00:10:20,160 missed lia celo, ili detonado la Patriot kapo. 236 00:10:20,160 --> 00:10:22,760 Por eviti eblajn viktimojn, ĝi permesis 237 00:10:22,760 --> 00:10:25,100 fali sur la teron. 238 00:10:25,100 --> 00:10:29,400 Tio estis kion multaj homoj vidis, kiel granda buloj de fajro en la ĉielo, 239 00:10:29,400 --> 00:10:34,930 kaj miskomprenita kiel interkaptas de Scud kapoj. 240 00:10:34,930 --> 00:10:37,490 >> Kvankam, en la nokta ĉielo, Patriotoj ŝajnis esti 241 00:10:37,490 --> 00:10:41,570 sukcese detruas scuds, ĉe Dhahran, ne povas ekzisti 242 00:10:41,570 --> 00:10:43,730 eraro pri ĝia agado. 243 00:10:43,730 --> 00:10:46,370 Tie, la Patriota la radaro sistemo miskalkulis la 244 00:10:46,370 --> 00:10:50,090 venonta Scud kaj neniam ĵetis pro 245 00:10:50,090 --> 00:10:51,340 al programaro difekto. 246 00:10:54,030 --> 00:10:57,050 Estis la israelanoj kiuj unue malkovris ke la pli longa 247 00:10:57,050 --> 00:11:02,000 la sistemo estis, des pli granda la tempo diferenco igis, 248 00:11:02,000 --> 00:11:05,530 pro horloĝo enigita en la sistemo de komputilo. 249 00:11:05,530 --> 00:11:09,060 Ĉirkaŭ du semajnoj antaŭ la tragedio en Dhahran, la 250 00:11:09,060 --> 00:11:11,730 Israelanoj raportis al la Ministerio ke la 251 00:11:11,730 --> 00:11:13,250 sistemo perdis tempon. 252 00:11:13,250 --> 00:11:15,610 Post ĉirkaŭ ok horoj de kuri, ili rimarkis, ke la 253 00:11:15,610 --> 00:11:18,330 sistemo igi rimarkinde malpli precizaj. 254 00:11:18,330 --> 00:11:20,910 La Ministerio respondis dirante ĉiuj 255 00:11:20,910 --> 00:11:23,710 la Patriot pilojn por ne lasi la sistemoj 256 00:11:23,710 --> 00:11:25,450 on por longa tempo. 257 00:11:25,450 --> 00:11:28,010 Ili neniam diris kio longe estis - 8 horoj, 10 258 00:11:28,010 --> 00:11:29,690 horoj, 1.000 horojn. 259 00:11:29,690 --> 00:11:31,940 Neniu sciis. 260 00:11:31,940 --> 00:11:35,020 >> The Patriot pilo postenigitaj ĉe la kazernoj en Dhahran 261 00:11:35,020 --> 00:11:39,030 kaj lia misa interna horloĝo estis sur pli ol 100 horojn en 262 00:11:39,030 --> 00:11:42,240 La nokto de februaro 25a. 263 00:11:42,240 --> 00:11:46,580 Ĝi spuris tempo al precizeco de ĉirkaŭ dekono de sekundo. 264 00:11:46,580 --> 00:11:48,830 Nun dekono de la dua estas interesa nombro ĉar 265 00:11:48,830 --> 00:11:52,660 ĝi ne povas esti esprimita en duuma, precize, kion signifas 266 00:11:52,660 --> 00:11:54,940 ĝi ne povas esti esprimita akurate en ajna 267 00:11:54,940 --> 00:11:57,330 moderna cifereca komputilo. 268 00:11:57,330 --> 00:11:59,130 Estas malfacile kredi. 269 00:11:59,130 --> 00:12:01,720 Sed uzi tion kiel ekzemplon. 270 00:12:01,720 --> 00:12:04,090 >> Ni prenu la nombron unu triono. 271 00:12:04,090 --> 00:12:07,950 Tria ne povas esti esprimita en dekuma, precize. 272 00:12:07,950 --> 00:12:12,710 Tria estas 0,333 okazas por malfinio. 273 00:12:12,710 --> 00:12:17,050 Ne maniero fari tion kun absoluta precizeco en dekuma. 274 00:12:17,050 --> 00:12:19,340 Tio estas ĝuste la sama tipo de problemo kiu okazis en 275 00:12:19,340 --> 00:12:20,190 la Patriot. 276 00:12:20,190 --> 00:12:24,680 Ju pli longe la sistemo kuris, la plej malbona la tempo eraro fariĝis. 277 00:12:24,680 --> 00:12:28,640 Post 100 horoj de funkciado, la eraro en tiu epoko estis nur 278 00:12:28,640 --> 00:12:29,870 proksimume unu triono de sekundo. 279 00:12:29,870 --> 00:12:34,790 Sed en terminoj de celado misilon vojaĝante al Mach 5, 280 00:12:34,790 --> 00:12:39,140 ĝi rezultis en sekvado eraro de super 600 metroj. 281 00:12:39,140 --> 00:12:42,510 Estus fatala eraro por la soldatoj ĉe Dhahran. 282 00:12:42,510 --> 00:12:48,680 >> Kio okazis estas Scud ĵeto estis detektita de frua averto 283 00:12:48,680 --> 00:12:52,440 satelitoj kaj ili sciis ke la Scud venis en lian 284 00:12:52,440 --> 00:12:53,350 ĝenerala direkto. 285 00:12:53,350 --> 00:12:55,470 Ili ne scias, kie ĝi venas. 286 00:12:55,470 --> 00:12:58,210 Nun estis ĝis la radaro komponanto de la Patriot 287 00:12:58,210 --> 00:13:01,920 sistemo, protektante Dhahran, por loki kaj konservi trako de la 288 00:13:01,920 --> 00:13:03,700 venonta malamiko misilo. 289 00:13:03,700 --> 00:13:05,390 La radaro estis tre inteligenta. 290 00:13:05,390 --> 00:13:07,570 Vi fakte spuri la pozicio de la Scud kaj poste 291 00:13:07,570 --> 00:13:10,340 antaŭdiri kie probable estus la proksima tempo la 292 00:13:10,340 --> 00:13:12,040 radaro sendis premas eksteren. 293 00:13:12,040 --> 00:13:13,730 Kiu nomis la gamo pordego. 294 00:13:13,730 --> 00:13:18,820 Tiam, tuj la Patriot decidas sufiĉan tempon pasis iri 295 00:13:18,820 --> 00:13:22,600 apogi kaj kontroli la venonta loko por ĉi detektis 296 00:13:22,600 --> 00:13:24,190 objekto, superas. 297 00:13:24,190 --> 00:13:27,940 Do kiam reiris al la malĝusta loko, tiam ne vidas 298 00:13:27,940 --> 00:13:31,000 kontestas, kaj decidas, ke ne trovigxas objekto. 299 00:13:31,000 --> 00:13:34,370 Ĝi estis falsa detekto kaj delasas la spuro. 300 00:13:34,370 --> 00:13:37,630 >> La venonta Scud malaperis de la radaro ekrano. 301 00:13:37,630 --> 00:13:41,300 Kaj sekundoj poste, ĝi frapis en la kazernoj. La Scud 302 00:13:41,300 --> 00:13:44,730 mortigis 28 kaj estis la lasta pafis dum 303 00:13:44,730 --> 00:13:46,450 la unua milito de la Golfo. 304 00:13:46,450 --> 00:13:50,570 Tragike, la ĝisdatigita programaro alvenis al Dhahran 305 00:13:50,570 --> 00:13:52,060 la sekva tago. 306 00:13:52,060 --> 00:13:56,210 Kaj la programaro difekto estis riparita, fermante unu ĉapitro en 307 00:13:56,210 --> 00:13:58,370 la tumulta historio de la Patriot misilo. 308 00:14:01,790 --> 00:14:04,990 PATRIOT estas fakte akronimo por "forigita array kameraoj 309 00:14:04,990 --> 00:14:08,516 Interkapti de Celo ". 310 00:14:08,516 --> 00:14:13,390 >> Bone, do multe pli malgxoja rezulto de ne sufiĉe 311 00:14:13,390 --> 00:14:14,430 kompreni ĉi tiu mondo. 312 00:14:14,430 --> 00:14:18,180 Kaj la takeaway, vere, de la filmo estas ke la solvo 313 00:14:18,180 --> 00:14:20,790 tie estis restartu vian kontraŭmisila sistemo 314 00:14:20,790 --> 00:14:21,770 ĉiun fojon en iom da tempo. 315 00:14:21,770 --> 00:14:24,280 Kaj tiel denove, unu el la celoj de ĉi tiu kurso, certe 316 00:14:24,280 --> 00:14:26,900 sur pli humila skalo ol tiuj aplikoj, ĝi estas 317 00:14:26,900 --> 00:14:30,710 vere malferma ĉies okulojn ĝuste kiel vi ĉirkaŭiras 318 00:14:30,710 --> 00:14:34,380 fari maŝinoj faras kion vi volas ilin fari kaj kiel vi iru 319 00:14:34,380 --> 00:14:37,180 pri fari tion korekte, dum la vojo fari ĝin 320 00:14:37,180 --> 00:14:38,810 bone, elegante, kaj tiel plu. 321 00:14:38,810 --> 00:14:41,680 Kaj tiel hodiaŭ, ni pikita en iom pli da ĉi tiu, sed 322 00:14:41,680 --> 00:14:44,210 por ke ni ne iru tro rapida, aparte por tiuj malpli 323 00:14:44,210 --> 00:14:46,590 komforta, sed ankaŭ por ke ni povu konservi la intereson de 324 00:14:46,590 --> 00:14:49,390 tiuj pli komforta, ni nur rapide komenci kun iom 325 00:14:49,390 --> 00:14:50,970 de recap de iuj de ĉi tiuj ideoj. 326 00:14:50,970 --> 00:14:53,710 Kaj ankaux demandi sin, ambaŭ en persono aŭ linio, se vi havas 327 00:14:53,710 --> 00:14:56,320 demandojn por ke ni povu konservi ĉiuj en la sama paĝo. 328 00:14:56,320 --> 00:14:58,820 >> Do la CS50 Appliance, rapida retropaŝo, estas 329 00:14:58,820 --> 00:15:02,360 kio, en viaj propraj vortoj? 330 00:15:02,360 --> 00:15:06,454 Estas bone se vi ne havas ideon kion tiuj vortoj estu ankoraŭ. 331 00:15:06,454 --> 00:15:07,830 [Inaudible] 332 00:15:07,830 --> 00:15:10,950 Konsentite, tiel universala interfaco por - 333 00:15:10,950 --> 00:15:11,900 ke ni povas ĉiuj dividi. 334 00:15:11,900 --> 00:15:12,470 Tute ne. 335 00:15:12,470 --> 00:15:14,840 Do ni povus, ekzemple, diri al vi iri al kelkaj 336 00:15:14,840 --> 00:15:16,910 TTT-ejo, elŝuti ĉi programaro por Mac OS. 337 00:15:16,910 --> 00:15:19,140 Elŝutu ĉi programaro por Vindozo, agordi en 338 00:15:19,140 --> 00:15:20,100 tien kaj. 339 00:15:20,100 --> 00:15:22,370 Sed la realo estas tiam ni kolizias sennombraj teknika 340 00:15:22,370 --> 00:15:23,200 subteni temoj. 341 00:15:23,200 --> 00:15:26,630 Kaj ankaŭ tiujn tagojn, multe de kio faras servilo flanko, 342 00:15:26,630 --> 00:15:28,490 en la mondo de komputado, precipe kiam temas pri 343 00:15:28,490 --> 00:15:31,460 retejo disvolviĝo kaj ttt bazita aplikoj, estas fakte 344 00:15:31,460 --> 00:15:35,110 tre ofte farita sur Unikso aŭ Linukso komputiloj, kontraste al 345 00:15:35,110 --> 00:15:36,800 Macs aŭ Windows-komputiloj. 346 00:15:36,800 --> 00:15:39,240 >> Do inter la upsides, tiam, de uzanta cxi tiu afero nomata 347 00:15:39,240 --> 00:15:41,500 CS50 Appliance estas ni ĉiuj havas la saman medion. 348 00:15:41,500 --> 00:15:43,670 Do ĉiuj estas en la sama paĝo ne gravas aparataro vi 349 00:15:43,670 --> 00:15:46,650 venis al kampuso kun sed ankaŭ estos dabbling en akurate 350 00:15:46,650 --> 00:15:48,230 la sama medio kiu vi estos uzanta cele 351 00:15:48,230 --> 00:15:51,080 semestro la fino tiel por ttt evoluo, tiel kiel en la 352 00:15:51,080 --> 00:15:53,580 estontecon por reala mondo aplikoj largxo. 353 00:15:53,580 --> 00:15:56,350 Do pli konkrete, la CS50 Appliance estas libera peco de 354 00:15:56,350 --> 00:15:59,400 programaro kiu ebligas al vi kuri alia mastruma sistemo, 355 00:15:59,400 --> 00:16:02,670 Linukso, en ĉi tiu kazo, en via propra komputilo, en fenestro. 356 00:16:02,670 --> 00:16:04,750 Nun ne eblas simple elŝuti la aparaton. 357 00:16:04,750 --> 00:16:08,170 Vi bezonas programon per kiu eblas ludi aŭ ruli la aparaton. 358 00:16:08,170 --> 00:16:11,220 Kaj tiu peco de programaro estas ĝenerale konata kiel 359 00:16:11,220 --> 00:16:11,520 hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hypervisors veni en formo de produktoj kiel VMware, 361 00:16:14,050 --> 00:16:15,820 Virtuala Skatolo, Paralelaj. 362 00:16:15,820 --> 00:16:18,390 Ĉiaj firmaoj fari programaron, liberaj kaj 363 00:16:18,390 --> 00:16:19,310 komerca, egala. 364 00:16:19,310 --> 00:16:21,480 Kion vi vidas en Problemo Serio 1 estas instrukcioj pri kiel 365 00:16:21,480 --> 00:16:23,440 akiri libera programaro kun kiu 366 00:16:23,440 --> 00:16:25,000 kuras la CS50 Appliance. 367 00:16:25,000 --> 00:16:28,060 Kaj iam vi, vi havas, en fenestro sur via Mac aŭ PC, 368 00:16:28,060 --> 00:16:30,710 labortabla medio kiu aspektas tute kiel ĉi tiu, kie 369 00:16:30,710 --> 00:16:33,100 ĝi havas Komenco menuo-simila afero en la 370 00:16:33,100 --> 00:16:34,510 malsupro maldekstra angulo. 371 00:16:34,510 --> 00:16:38,030 Ĝi havas Ĉefpaĝo dosierujo, aŭ Hejmo dosierujo, en la supra maldekstra 372 00:16:38,030 --> 00:16:40,280 tie, rubo povas, kaj tiel plu. 373 00:16:40,280 --> 00:16:43,450 Do ni tease krom la necesa detaloj kiel ni iru. 374 00:16:43,450 --> 00:16:46,430 >> Sed nun ni komencu bucear en C. 375 00:16:46,430 --> 00:16:49,200 Do C estas ĉi programlingvo, simila en spirito 376 00:16:49,200 --> 00:16:52,390 Nulo, sed multe malpli grafika, sed ironie, for 377 00:16:52,390 --> 00:16:54,730 pli potenca fojo vi ricevas savvy kun ĝi. 378 00:16:54,730 --> 00:16:58,970 Do en C, ni skribi programojn per skribanta kodo fonto, kiu estas 379 00:16:58,970 --> 00:17:01,640 tiu angla-kiel sintakso, simila al la ŝtrumpetoj 380 00:17:01,640 --> 00:17:05,609 pruvo ke ni faris lastan fojon ke vi permesas 381 00:17:05,609 --> 00:17:07,910 esprimi sin sufiĉe detale, se 382 00:17:07,910 --> 00:17:09,760 arcanely, al la komputilo. 383 00:17:09,760 --> 00:17:11,960 >> Do kia produkto programaro vi vere bezonas 384 00:17:11,960 --> 00:17:15,520 skribi programojn en lingvo kiel C, bazita sur nia 385 00:17:15,520 --> 00:17:17,492 konversacio lundon? 386 00:17:17,492 --> 00:17:19,650 [Inaudible] 387 00:17:19,650 --> 00:17:21,079 OK, vi simple bezonas tekstoredaktilo. 388 00:17:21,079 --> 00:17:22,890 Vi ne bezonas neniun specialan programaron 389 00:17:22,890 --> 00:17:24,460 per si mem skribi programojn. 390 00:17:24,460 --> 00:17:27,220 Vi nur bezonas tekstoredaktilo kiel Notepad, en Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit en Mac, aŭ iu nomita gedit, en la mondo de 392 00:17:30,450 --> 00:17:32,020 Linukso, kiun ni uzos ĉi tie. 393 00:17:32,020 --> 00:17:33,750 Kaj tio estas ĝi, por skribi la programojn. 394 00:17:33,750 --> 00:17:35,480 >> Sed skribo estas nur duono de la ekvacio. 395 00:17:35,480 --> 00:17:36,630 Vi do devas kuri ilin. 396 00:17:36,630 --> 00:17:38,320 Sed por kuri programoj - 397 00:17:38,320 --> 00:17:39,600 vi ne povas kuri fontkodo. 398 00:17:39,600 --> 00:17:41,500 Vi anstataŭe devas fari kion ĝi unue? 399 00:17:41,500 --> 00:17:41,900 Yeah. 400 00:17:41,900 --> 00:17:43,200 DAVID J. Malan: Vi devas 401 00:17:43,200 --> 00:17:44,130 kompili ĝin. 402 00:17:44,130 --> 00:17:49,010 Kaj, iu alia, kompilante la fontkodon signifas - 403 00:17:49,010 --> 00:17:50,260 [Inaudible] 404 00:17:52,300 --> 00:17:52,700 DAVID J. Malan: Ĝuste. 405 00:17:52,700 --> 00:17:54,430 Traduki ĝin al nuloj kaj aĵoj. 406 00:17:54,430 --> 00:17:57,150 Ĉar ĉiuj el ni, ĉi tiuj tagoj, havas komputilojn kiuj havas CPUs, 407 00:17:57,150 --> 00:18:00,350 preskaŭ ĉiuj el kiuj estas faritaj por kompanio nomita Intel, kaj 408 00:18:00,350 --> 00:18:03,320 Intel Ene, signifas tie estas tio cerbo ene de via 409 00:18:03,320 --> 00:18:04,990 komputilo, konata kiel la CPU. 410 00:18:04,990 --> 00:18:07,570 Kaj unu el la aferoj ke tiu cerbo faras estas, scias 411 00:18:07,570 --> 00:18:10,390 kiel kompreni ŝablonoj de nuloj kaj aĵoj. 412 00:18:10,390 --> 00:18:13,240 Ĝi scias kion mastro de bitoj reprezentas krome, kion 413 00:18:13,240 --> 00:18:15,500 mastro reprezentas subtrahoj, kion mastro de 414 00:18:15,500 --> 00:18:18,890 bitoj reprezentas presi, kaj kreante aŭdeblan sonon. 415 00:18:18,890 --> 00:18:22,450 >> Do mallonge, la CPU, kuplita kun la mastruma sistemo, 416 00:18:22,450 --> 00:18:25,230 kiu estas peco de programaro kiu kuras sur la CPU, 417 00:18:25,230 --> 00:18:26,050 por tiel diri. 418 00:18:26,050 --> 00:18:29,850 Kune, tiuj du pecoj scias kuri programoj kiuj 419 00:18:29,850 --> 00:18:31,070 ni homoj skribi. 420 00:18:31,070 --> 00:18:34,040 >> Do, se mi iros en la CS50 Appliance tie, mi bezonas por malfermi 421 00:18:34,040 --> 00:18:35,660 supren tekstoredaktilo kaj mi povas aliri tiun 422 00:18:35,660 --> 00:18:36,560 en kelkaj manieroj. 423 00:18:36,560 --> 00:18:39,060 Mi povas aŭ iri al menuo, Programado, 424 00:18:39,060 --> 00:18:40,230 kaj poste mi povas elekti - 425 00:18:40,230 --> 00:18:40,810 nope, ne ke menuo. 426 00:18:40,810 --> 00:18:43,860 Mi povas iri al Akcesoraĵoj / gedit tie por malfermi 427 00:18:43,860 --> 00:18:45,090 mia eta tekstoredaktilo. 428 00:18:45,090 --> 00:18:48,030 Aŭ pli simple, mi povas alklaki ĉi tiu malgranda ikono en la fundo 429 00:18:48,030 --> 00:18:48,970 maldekstra angulo. 430 00:18:48,970 --> 00:18:50,430 Kaj nun mi alvenas ĉi medio tie. 431 00:18:50,430 --> 00:18:52,590 Estas bela memoras simpla tekstoredaktilo, kun nur 432 00:18:52,590 --> 00:18:53,820 unu aŭ du diferencoj. 433 00:18:53,820 --> 00:18:56,420 En la pinto, kie la kursoro estas palpebrumante nun, tiu estas kie 434 00:18:56,420 --> 00:18:57,900 Mi povas komenci skribi mia kodo. 435 00:18:57,900 --> 00:19:00,415 En la fundo estas tiu afero nomata la fina stacio fenestro. 436 00:19:00,415 --> 00:19:03,400 Kaj kion specoj de aferoj mi povas fari en tiu ĉi 437 00:19:03,400 --> 00:19:04,960 tn fina fenestro? 438 00:19:04,960 --> 00:19:06,680 [Inaudible] 439 00:19:06,680 --> 00:19:07,890 >> Konsentite, do mi kuros ordonojn. 440 00:19:07,890 --> 00:19:10,300 Kaj iuj el la komandojn ni kuris lundon estis iom 441 00:19:10,300 --> 00:19:15,070 kamufla en komenco, sed ls por listo, cd por ŝanĝo dosierujo, 442 00:19:15,070 --> 00:19:16,540 rm, por forpreni. 443 00:19:16,540 --> 00:19:19,680 Do ĝi estas speco de malnova lernejo vojo de navigi vian 444 00:19:19,680 --> 00:19:22,310 komputilo, uzante nur vian klavaron kaj tekstajn komandojn, 445 00:19:22,310 --> 00:19:24,130 kaj ne, ĝenerale, uzante muso. 446 00:19:24,130 --> 00:19:25,960 Sed ni vidos, antaŭ longe, ĉi vere donas al ni 447 00:19:25,960 --> 00:19:28,520 iom pli da povo kaj iom pli precizeco kun kiu 448 00:19:28,520 --> 00:19:29,600 esprimi nin. 449 00:19:29,600 --> 00:19:31,330 Kaj tiam super tie en la maldekstra, ni nur tuj vidos, 450 00:19:31,330 --> 00:19:34,360 kiel ni komencu skribi programaron, iom resumo de la 451 00:19:34,360 --> 00:19:36,350 Programo kiu ni skribis en supre maldekstre. 452 00:19:36,350 --> 00:19:38,360 Sed ni vidos, ke denove antaŭ longe. 453 00:19:38,360 --> 00:19:40,050 >> Do ni faru ion sufiĉe simpla tie. 454 00:19:40,050 --> 00:19:43,440 Permesu al mi unue iri antaŭen kaj iru al dosiero, Save, kaj mi estas nur 455 00:19:43,440 --> 00:19:45,970 tuj alklaku jharvard tie, super maldekstre, kaj 456 00:19:45,970 --> 00:19:48,930 jharvard estas, denove, la nomo por mia hejmo dosierujo, mia 457 00:19:48,930 --> 00:19:52,110 personaj dosieroj, mi nun esti John Harvard, kiel vi ĉiuj 458 00:19:52,110 --> 00:19:54,230 baldaŭ estos John Harvard en tiu medio. 459 00:19:54,230 --> 00:19:57,360 Li havas ĉi Ĉefpaĝo dosierujo, Mia Dokumentoj kaj tiel plu, 460 00:19:57,360 --> 00:19:58,900 ke mi volas konservi, nun, ĉi tiu dosiero in 461 00:19:58,900 --> 00:20:01,520 Do mi iros nomi ĝin hello.c. Tiam mi tuj iros 462 00:20:01,520 --> 00:20:05,770 antaŭeniris kaj alklakos Save, kaj nun kion mi havas ĉi tie estas langeto 463 00:20:05,770 --> 00:20:09,440 vokis hello.c, tiel kiel alia tipo de redaktanto. 464 00:20:09,440 --> 00:20:11,760 >> Do nun mi antaŭeniri kaj komenci skribi programon. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 Kaj tiam mi simple faris lasta fojo, printf, por presita formatita, 467 00:20:18,150 --> 00:20:22,120 ("Saluton, mondo!" 468 00:20:22,120 --> 00:20:24,500 );. 469 00:20:24,500 --> 00:20:25,630 Preskaŭ kompletigi. 470 00:20:25,630 --> 00:20:27,130 Sed mi mankas kelkaj detaloj. 471 00:20:27,130 --> 00:20:30,210 Kio mankas en tiu programo, kiun mi vere bezonas por 472 00:20:30,210 --> 00:20:31,890 ĝin reale kompili? 473 00:20:31,890 --> 00:20:32,130 Yeah. 474 00:20:32,130 --> 00:20:33,980 [Inaudible]? 475 00:20:33,980 --> 00:20:35,770 >> DAVID J. Malan: Jes, do mi bezonas inkluzivi la normo 476 00:20:35,770 --> 00:20:36,700 / S biblioteko. 477 00:20:36,700 --> 00:20:39,470 Do ĉi devas iri super ĉefa, do mi simple tuj 478 00:20:39,470 --> 00:20:40,790 fari iujn loko por ĝin tie. 479 00:20:40,790 --> 00:20:44,420 Kaj mi tuj faros # include . 480 00:20:44,420 --> 00:20:46,570 Kaj rimarki la angled krampoj tie. 481 00:20:46,570 --> 00:20:49,410 Kaj kiel flanken, gedit estas eta uzanto amika, se 482 00:20:49,410 --> 00:20:52,420 kelkfoje iom malklara, ĉar ĝi klopodas helpi vian 483 00:20:52,420 --> 00:20:54,770 okulojn rimarki kion regiono kun kio. 484 00:20:54,770 --> 00:20:57,760 Do la fakto ke mia kursoro estas dekstra flanko de ĉi tiu angled 485 00:20:57,760 --> 00:21:00,600 krampo, rimarki kiel ĝi estas reliefigi la alia angled 486 00:21:00,600 --> 00:21:01,920 krampo plus ĉi tiu. 487 00:21:01,920 --> 00:21:03,770 Kaj tio estas nur por desegni mian atenton al la fakto, ke mi 488 00:21:03,770 --> 00:21:04,460 havas simetrio. 489 00:21:04,460 --> 00:21:07,010 Kaj simetrio en programado estas ĝenerale bona afero. 490 00:21:07,010 --> 00:21:10,270 Simile, se mi movi mian kursoron al la fino, rimarkos kiel la 491 00:21:10,270 --> 00:21:13,630 frizita krampoj linio ĝis montri ke, jes, mi havas malfermitan unu 492 00:21:13,630 --> 00:21:15,160 kaj fermita, tiel paroli. 493 00:21:15,160 --> 00:21:16,640 >> Bone, kaj mi povas fari unu alia aĵo. 494 00:21:16,640 --> 00:21:20,090 Ne nepre necesas, sed bona praktiko, por diri 495 00:21:20,090 --> 00:21:21,250 revenu 0. 496 00:21:21,250 --> 00:21:24,140 Kaj reveno 0 faras kion por ni ĉi tie? 497 00:21:24,140 --> 00:21:25,584 Aŭ signifas kion? 498 00:21:25,584 --> 00:21:27,480 [Inaudible] 499 00:21:27,480 --> 00:21:28,300 DAVID J. Malan: Sed nenio estas erara. 500 00:21:28,300 --> 00:21:30,280 Kaj sincere estas malfacile por multe iri malbone en 501 00:21:30,280 --> 00:21:31,250 plani ĉi mallonga. 502 00:21:31,250 --> 00:21:33,930 Do mi simple estante super eksplicita ke cxio estas bone. 503 00:21:33,930 --> 00:21:36,740 Mi, la homo, kiam mi kuros ĉi programo, volo probable neniam 504 00:21:36,740 --> 00:21:38,150 vidi ke 0. 505 00:21:38,150 --> 00:21:41,070 Ĝenerale, tiuj nombroj kiuj estas reveninta de ĉefa 506 00:21:41,070 --> 00:21:43,540 nur ariergardo iliaj kapoj al la homoj kiam 507 00:21:43,540 --> 00:21:44,360 iu iras malbone. 508 00:21:44,360 --> 00:21:46,640 Kaj vi mem iom popo supren dirante sistemo eraro, oni, 509 00:21:46,640 --> 00:21:48,760 du, tri, aŭ kion ajn la numero estis tiu 510 00:21:48,760 --> 00:21:50,100 Estis vere revenis. 511 00:21:50,100 --> 00:21:52,870 Do io alia malbona tio? 512 00:21:52,870 --> 00:21:55,300 [Inaudible] 513 00:21:55,300 --> 00:21:58,100 >> DAVID J. Malan: Do tiu estas ne tiom funkcia eraron 514 00:21:58,100 --> 00:21:59,240 sed estetika unu. 515 00:21:59,240 --> 00:22:02,340 Mi devus probable metis en linion karaktero tie ĉe la 516 00:22:02,340 --> 00:22:05,240 fino de tiu ĉeno por ke ni efektive movi la kursoron al 517 00:22:05,240 --> 00:22:08,340 la sekvanta linio, kaj la programo nur aspektas iom pli bela. 518 00:22:08,340 --> 00:22:10,340 >> Do nun mi iros al mia fina fenestro 519 00:22:10,340 --> 00:22:11,490 kaj zoom reen in 520 00:22:11,490 --> 00:22:13,390 Kaj tion ĉi tie, ĝi estas nomata la prompto. 521 00:22:13,390 --> 00:22:16,760 Ĝi simple memorigis min, kiu mi estas, jharvard @ aparaton, kie 522 00:22:16,760 --> 00:22:18,850 aparaton estas la nomo de la komputilo mi plu. 523 00:22:18,850 --> 00:22:22,380 En krampoj estas ĉi supersigno, la squiggle simbolo, kiu 524 00:22:22,380 --> 00:22:24,160 reprezentas kio? 525 00:22:24,160 --> 00:22:25,590 Spektantaro: Hejmo dosierujo. 526 00:22:25,590 --> 00:22:26,350 DAVID J. Malan: Hejmo dosierujo. 527 00:22:26,350 --> 00:22:29,350 Por ke estas nur stenografio skribmaniero por diri ke vi estas 528 00:22:29,350 --> 00:22:32,780 Via persona dosierujo kie ĉiuj de viaj dosieroj iri defaŭlte. 529 00:22:32,780 --> 00:22:36,080 Do nun, en ĉi tie, mi povas tajpi ls por listo. 530 00:22:36,080 --> 00:22:40,020 Kaj la sola afero, kiun mi vidas ĉi tie nuntempe estas hello.c. 531 00:22:40,020 --> 00:22:41,770 Kaj tio estas bona ĉar mi ĵus skribis ĉi. 532 00:22:41,770 --> 00:22:44,380 >> Do lasu min antaŭeniri kaj ne faras saluton. 533 00:22:44,380 --> 00:22:46,830 Kaj rimarki ke mi ne tajpas fari hello.c. 534 00:22:46,830 --> 00:22:50,300 Anstataŭe, mi nur tajpas la bazo nomo de la dosiero, saluton. 535 00:22:50,300 --> 00:22:53,690 Kaj faru, kiel ni vidis en lundo, estos nur konkludi, ke mi volas 536 00:22:53,690 --> 00:22:54,920 la. c dosiero. 537 00:22:54,920 --> 00:22:56,820 Do nun mi tajpis fari saluton. 538 00:22:56,820 --> 00:22:59,280 Nun mi vidas ĉi sufiĉe longa komando kaj daŭrigos 539 00:22:59,280 --> 00:23:00,480 vidante tiun denove kaj denove. 540 00:23:00,480 --> 00:23:03,620 Sed esti klaraj, clang, la vorto, kiu ĵus aperis, 541 00:23:03,620 --> 00:23:05,340 tio estas la reala tradukilo. 542 00:23:05,340 --> 00:23:08,200 Faru estas nur build utileco. 543 00:23:08,200 --> 00:23:11,900 Estas nur pli uzanto amika programo kiu savas min, en la 544 00:23:11,900 --> 00:23:15,310 longa, de devi tajpi el nekredeble teda longa 545 00:23:15,310 --> 00:23:17,020 komandojn kiel tiu. 546 00:23:17,020 --> 00:23:18,950 Do vi povus ruli Clang permane. 547 00:23:18,950 --> 00:23:20,530 Vi povus tajpi ĉiuj de tiu manlibro. 548 00:23:20,530 --> 00:23:21,580 Nur ricevas tre teda. 549 00:23:21,580 --> 00:23:24,720 Kaj tiel fari estas simple programo kiu simpligas nian vivon kaj 550 00:23:24,720 --> 00:23:27,120 kuras pli kompleksaj ordonoj por ni. 551 00:23:27,120 --> 00:23:29,410 >> Bone, do nun, kion dosiero mi devas 552 00:23:29,410 --> 00:23:31,540 en mia aktuala dosierujo? 553 00:23:31,540 --> 00:23:36,310 Ne nur hello.c, sed ankaŭ saluton. 554 00:23:36,310 --> 00:23:39,710 Do se mi volas kuri saluton, memorigu, ke mi diras dot oblikvo, 555 00:23:39,710 --> 00:23:42,220 kie pentras per iru en la nuna dosierujo, kien ajn vi 556 00:23:42,220 --> 00:23:46,060 estas, kaj poste ekzekuti la programo nomata saluton, kaj efektive, nun, 557 00:23:46,060 --> 00:23:48,080 Mi havas saluton mondo. 558 00:23:48,080 --> 00:23:51,640 Bone, demandojn en la laborfluo aŭ la sintakso de 559 00:23:51,640 --> 00:23:52,890 kion ni ĵus faris? 560 00:23:55,380 --> 00:23:57,040 >> Bone, do ni preni aĵojn supren muesca denove. 561 00:23:57,040 --> 00:24:00,430 Do tiu estis underwhelming justaj skribi programon kiu nur 562 00:24:00,430 --> 00:24:01,790 iam diras saluton, mondo. 563 00:24:01,790 --> 00:24:03,920 Do ni ŝanĝis ĝin, lundon, diri: saluton, David. 564 00:24:03,920 --> 00:24:06,560 Ĝi estas iom pli persona, sed gxuste tiel malmola kodita kiel la 565 00:24:06,560 --> 00:24:07,410 unua versio. 566 00:24:07,410 --> 00:24:08,780 Do ne cxio, kio konvinkaj. 567 00:24:08,780 --> 00:24:13,120 Sed tie ekzistas, en C, funkcioj certe krom 568 00:24:13,120 --> 00:24:15,700 print, funkcioj kiuj permesas vin akiri uzanto enigo. 569 00:24:15,700 --> 00:24:17,990 Kaj la vojon ni faris tion, la alia tago, estis kiel sekvas. 570 00:24:17,990 --> 00:24:21,440 Antaŭ ol mi reale presi ion, mi unue atingis 571 00:24:21,440 --> 00:24:22,410 ion de la uzanto. 572 00:24:22,410 --> 00:24:23,370 Do lasu min fari tion denove. 573 00:24:23,370 --> 00:24:26,580 >> String s, kie s estas nur arbitra nomo, tie, por 574 00:24:26,580 --> 00:24:30,600 ĉeno, egalas GetString. 575 00:24:30,600 --> 00:24:32,070 Do kio GetString? 576 00:24:32,070 --> 00:24:34,630 Ĝi evidente ricevas ĉeno, bazita en lia nomo. 577 00:24:34,630 --> 00:24:37,560 Sed kio estas tio, pli teknike? 578 00:24:37,560 --> 00:24:38,440 Ĝi estas funkcio. 579 00:24:38,440 --> 00:24:41,790 Do ĝi estas funkcio kiu ne venas kun C per si mem. 580 00:24:41,790 --> 00:24:43,660 CS50 bastonon skribis ĉi. 581 00:24:43,660 --> 00:24:46,940 Kaj tiel uzi tiun, vi ne povas ĝuste inkluzivi stdio.h, 582 00:24:46,940 --> 00:24:49,630 Vi ankaŭ bezonos inkluzivas kio? 583 00:24:49,630 --> 00:24:50,060 Yeah. 584 00:24:50,060 --> 00:24:54,210 Do cs50.h, kiu estas nur arkivo ni skribis antaŭ kelkaj jaroj. 585 00:24:54,210 --> 00:24:57,130 Ni instalis ĝin sur la aparaton por vi kune 586 00:24:57,130 --> 00:24:58,490 ĉiuj de la norma dosierojn. 587 00:24:58,490 --> 00:25:00,500 Kaj tiel en tiuj unuaj semajnoj de la klaso, ni uzos 588 00:25:00,500 --> 00:25:02,820 ĉi nur por faciligi la procezo de fari tre baza 589 00:25:02,820 --> 00:25:04,600 aĵoj kiel atingi uzanto enigo. 590 00:25:04,600 --> 00:25:07,370 Ĉar kiel ni vidos post kelkaj semajnoj, atingante uzanto enigo en 591 00:25:07,370 --> 00:25:10,180 lingvo kiel C estas vere mirige kompleksa, 592 00:25:10,180 --> 00:25:14,360 aparte ĉar vi ne scias anticipe, kutime, kiel 593 00:25:14,360 --> 00:25:17,030 multe stuff la uzanto tuj tajpi in 594 00:25:17,030 --> 00:25:20,340 Kaj kiam vi ne scias kiom da datumoj atendas, vi ne 595 00:25:20,340 --> 00:25:22,380 scias kiom memoro destini. 596 00:25:22,380 --> 00:25:25,480 Kaj se vi vere havas adversarial uzanto kiu estas klopodi 597 00:25:25,480 --> 00:25:28,180 pirati en vian sistemon, frakasi vian komputilon, nu, 598 00:25:28,180 --> 00:25:31,600 ĝenerale la unua metodo de atako estas, same kiel mi faris en 599 00:25:31,600 --> 00:25:34,950 Lundo, tajpu tuta longa vico de hazarda karakteroj, 600 00:25:34,950 --> 00:25:37,020 batis Eniru, kaj rigardu kion rompas. 601 00:25:37,020 --> 00:25:40,800 Ĉar ĝenerale, se programo rompas, ke aludoj ĉe 602 00:25:40,800 --> 00:25:42,650 de sekureco difekto, potenciale. 603 00:25:42,650 --> 00:25:45,250 Certe aludoj ĉe vi, la programisto, farinte 604 00:25:45,250 --> 00:25:49,050 eraro, sed pli danĝere, vi povus esti farinta 605 00:25:49,050 --> 00:25:52,430 sekureco-rilatajn eraro, kaj ĝenerale ni vidos ke 606 00:25:52,430 --> 00:25:54,840 tiel estas kiel maŝinoj estas kompromitita la nuna tago, tiel 607 00:25:54,840 --> 00:25:56,620 en la mondo de la retejo kaj programoj en la 608 00:25:56,620 --> 00:25:58,070 komanda linio, kiel ĉi tio. 609 00:25:58,070 --> 00:25:58,350 >> Bone. 610 00:25:58,350 --> 00:26:00,460 Do string s egalas GetString. 611 00:26:00,460 --> 00:26:03,380 Do pli konkrete nun, kion signifas linio 6 faras ĉi tie? 612 00:26:03,380 --> 00:26:05,640 Do la funkcio sur la dekstra gets kordoj, 613 00:26:05,640 --> 00:26:06,890 prenas kiom argumentoj? 614 00:26:09,458 --> 00:26:09,900 Okay. 615 00:26:09,900 --> 00:26:10,400 Do neniu. 616 00:26:10,400 --> 00:26:11,360 Iom prudento kontroli. 617 00:26:11,360 --> 00:26:15,380 Argumenton, denove, estas nur eniro al funkcio ŝanĝi 618 00:26:15,380 --> 00:26:17,250 lia defaŭlta konduto de iu maniero. 619 00:26:17,250 --> 00:26:19,540 Sed en ĉi tiu kazo, mi ne volas ŝanĝi 620 00:26:19,540 --> 00:26:20,650 la konduto de GetString. 621 00:26:20,650 --> 00:26:22,430 Mi nur volis akiri de ŝnuro. 622 00:26:22,430 --> 00:26:25,190 Do mi metis nenio en la krampoj, kaj tiam mi metos 623 00:26:25,190 --> 00:26:27,550 punktokomo demarking la fino de la linio de kodo. 624 00:26:27,550 --> 00:26:29,840 Nun, la egala signo ne signifas egala, per si mem. 625 00:26:29,840 --> 00:26:32,690 Ĝi signifas farita, kio signifas meti ajn ricevas 626 00:26:32,690 --> 00:26:36,060 outputted dekstre ene de kio ajn maldekstre. 627 00:26:36,060 --> 00:26:39,400 >> Do maldekstre, ni diras, ke ni deklaris 628 00:26:39,400 --> 00:26:41,630 ŝnuro nomita s. 629 00:26:41,630 --> 00:26:44,240 Kaj pli specife, ni destinis memoro ene de 630 00:26:44,240 --> 00:26:46,340 kiuj ni metos la bitoj kiu reprezentas vico de 631 00:26:46,340 --> 00:26:46,850 karakteroj. 632 00:26:46,850 --> 00:26:49,400 Sed por hodiaŭ, ni asignitaj 633 00:26:49,400 --> 00:26:51,450 aŭ deklaris ĉenon. 634 00:26:51,450 --> 00:26:51,790 Bone. 635 00:26:51,790 --> 00:26:54,760 Do nun unufoje Mi faris tion, mi volas ŝtopi en la valoro de 636 00:26:54,760 --> 00:26:56,535 s, ne la valoron de David. 637 00:26:56,535 --> 00:27:00,200 Do ĉi tiu estas malĝusta kial? 638 00:27:03,060 --> 00:27:04,870 Do ĉi tiu estas nur laŭvorte la malmola-kodita s. 639 00:27:04,870 --> 00:27:06,870 Estas diri "saluton, s," kiu ne estas kion mi volas. 640 00:27:06,870 --> 00:27:07,790 Do mi povas fari ĉi tion. 641 00:27:07,790 --> 00:27:10,330 La procentsigno estas lokokupilo, sed nun mi bezonas 642 00:27:10,330 --> 00:27:12,520 pasi al presi duan argumenton. 643 00:27:12,520 --> 00:27:15,160 Rememoru, ke argumentojn al funkcioj estas apartigitaj per 644 00:27:15,160 --> 00:27:20,300 komoj, do la venonta komo tie mi metos post tio la literon j. 645 00:27:20,300 --> 00:27:23,740 Kaj en ĉi tiu kunteksto nun, s estas la variablo, kaj printf, 646 00:27:23,740 --> 00:27:25,550 sur ricevi tiujn du eniroj - 647 00:27:25,550 --> 00:27:29,440 la kordo sur la maldekstra kaj la variablo nomo s sur la dekstra - 648 00:27:29,440 --> 00:27:32,750 ĝi konektas la lasta en la iama por ni, kaj 649 00:27:32,750 --> 00:27:34,600 nur presi belan bela kordoj enhavas 650 00:27:34,600 --> 00:27:36,770 kion ajn ĝi estas, ke ni tajpis in 651 00:27:36,770 --> 00:27:37,560 >> Do ni provu tion. 652 00:27:37,560 --> 00:27:38,860 Tuj iros antaŭen kaj malzomi, dorso 653 00:27:38,860 --> 00:27:40,250 al mia fina fenestro. 654 00:27:40,250 --> 00:27:41,840 Zomi malsupre tie. 655 00:27:41,840 --> 00:27:44,070 Retype fari saluton. 656 00:27:44,070 --> 00:27:45,870 Clang ŝajnas esti rerun. 657 00:27:45,870 --> 00:27:49,280 Mi iros por tajpi. / Saluton, Enter. 658 00:27:49,280 --> 00:27:52,145 Nenio ŝajnas esti pasante ankoraŭ, sed ĝi estas en ĉi prompto 659 00:27:52,145 --> 00:27:55,700 ke mi povas tajpi iun kiel Nate, Enter, kaj nun ni havas 660 00:27:55,700 --> 00:27:56,380 Saluton, Nate. 661 00:27:56,380 --> 00:27:59,600 Kaj mi povas fari ĝin denove kun Rob, kaj tiel plu. 662 00:27:59,600 --> 00:28:03,410 Do espereble nun ĉi programo kondutas kiel mi intencas. 663 00:28:03,410 --> 00:28:05,720 >> Nun, ne ĉiuj, ke uzanto amikojn. 664 00:28:05,720 --> 00:28:07,930 Mi havas neniun ideon kio esti atendis de mi. 665 00:28:07,930 --> 00:28:09,620 Do ni povas certe purigi ĉi supren iomete. 666 00:28:09,620 --> 00:28:13,270 Lasu min reiri tien, kaj anstataŭ ĝuste subnaĝado en kaj 667 00:28:13,270 --> 00:28:16,480 demandante la uzanton por kordoj, lasu min eksplicite diri la 668 00:28:16,480 --> 00:28:17,750 uzanto kion mi atendis. 669 00:28:17,750 --> 00:28:21,610 Do printf ("Enter ĉenon:« 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Do neniu variabloj tie. 672 00:28:25,510 --> 00:28:26,750 Neniu procentoj signoj. 673 00:28:26,750 --> 00:28:28,550 Nur la simpla angla frazo. 674 00:28:28,550 --> 00:28:34,030 Permesu al mi iri al la fundo tie kaj rerun mia programo. 675 00:28:34,030 --> 00:28:35,380 Sed nenio ŝajnas esti ŝanĝita. 676 00:28:35,380 --> 00:28:37,350 Kial? 677 00:28:37,350 --> 00:28:38,380 Mi devas recompilar ĝin. 678 00:28:38,380 --> 00:28:39,570 Tiel facila eraro fari. 679 00:28:39,570 --> 00:28:41,700 Sed vi devas ne nur konservi la dosieron sed 680 00:28:41,700 --> 00:28:43,260 recompilar la programo. 681 00:28:43,260 --> 00:28:46,640 Kaj tial, se mi re-ruli fari saluton, nun Clang kuras. 682 00:28:46,640 --> 00:28:51,800 Nun mi povas kuri. / Saluton. Kaj nun mi vidas "Enter cxeno:". 683 00:28:51,800 --> 00:28:52,050 Okay. 684 00:28:52,050 --> 00:28:53,440 Nun ĝi estas iom pli uzantamika. 685 00:28:53,440 --> 00:28:55,850 Nate, Enter, saluton, Nate. 686 00:28:55,850 --> 00:28:57,310 >> Nu, ni provu ĉi denove kaj komenci pensi 687 00:28:57,310 --> 00:28:58,080 pri angulo kazoj. 688 00:28:58,080 --> 00:29:00,520 Do ĝuste kiel en Scratch, vi kuraĝigis aŭ estas esti 689 00:29:00,520 --> 00:29:03,180 kuraĝigis en la specifon al ia pripensi kion povis iri 690 00:29:03,180 --> 00:29:06,610 erara, se vi ne anticipi ĉio la uzanto povus fari. 691 00:29:06,610 --> 00:29:08,050 Cimojn, do, povus ensue. 692 00:29:08,050 --> 00:29:09,710 Do eniri ĉenon - 693 00:29:09,710 --> 00:29:11,130 kio estas angulo kazo ĉi tie? 694 00:29:11,130 --> 00:29:13,320 Kio estas scenejo, ke Mi, la programisto, povus ne havi 695 00:29:13,320 --> 00:29:16,070 anticipis? 696 00:29:16,070 --> 00:29:17,600 Yeah. 697 00:29:17,600 --> 00:29:17,920 Okay. 698 00:29:17,920 --> 00:29:22,060 Do kio se mi tajpas en nombro tiel? 699 00:29:22,060 --> 00:29:22,500 Bone. 700 00:29:22,500 --> 00:29:24,490 Do ankoraŭ funkcias. 701 00:29:24,490 --> 00:29:25,880 Gramatically ne havas senson. 702 00:29:25,880 --> 00:29:27,180 Sed almenaŭ la programo funkcias. 703 00:29:27,180 --> 00:29:28,650 >> Kio estas alia angulo kazo? 704 00:29:28,650 --> 00:29:29,610 Io Mi ne atendis. 705 00:29:29,610 --> 00:29:31,590 Yeah? 706 00:29:31,590 --> 00:29:31,940 Okay. 707 00:29:31,940 --> 00:29:34,950 Do ni povus fari ion kiel vere, vere granda nombro. 708 00:29:34,950 --> 00:29:37,270 Do ni faru ĉi tie. 709 00:29:37,270 --> 00:29:40,880 Lasu min malzomi dum sekundo, lasu min reliefigi. 710 00:29:40,880 --> 00:29:42,250 Ne povas kopii kaj almeti cxi tie. 711 00:29:42,250 --> 00:29:42,470 Bone. 712 00:29:42,470 --> 00:29:44,440 Do mi ne povas kopii kaj almeti en ĉi terminala fenestro, do ni 713 00:29:44,440 --> 00:29:46,950 nur simuli ĝin. 714 00:29:46,950 --> 00:29:51,340 Lasu min malzomi, tuj envolver. 715 00:29:51,340 --> 00:29:52,700 Mi ne faros tion por tro longaj, ĉar ĝi ne faros 716 00:29:52,700 --> 00:29:54,440 fakte rompi en tiu programo. 717 00:29:54,440 --> 00:29:55,260 Sed ĝi povis. 718 00:29:55,260 --> 00:29:55,830 Eniri. 719 00:29:55,830 --> 00:29:56,580 Sed ne. 720 00:29:56,580 --> 00:29:57,050 Bone. 721 00:29:57,050 --> 00:29:58,440 Sed estas vera angulo kazo. 722 00:29:58,440 --> 00:30:01,610 Kaj la sola kialo ke kondutis ĝuste, tiel 723 00:30:01,610 --> 00:30:05,820 paroli, estas ĉar la CS50 funkcio GetString estas fakte 724 00:30:05,820 --> 00:30:08,040 desegnita sub la kapuĉo, kiel ni vidos post kelkaj semajnoj, 725 00:30:08,040 --> 00:30:11,570 por aŭtomate destini pli kaj pli RAM, pli kaj pli 726 00:30:11,570 --> 00:30:14,330 memoro de la mastruma sistemo, kiam rimarkas, wow, 727 00:30:14,330 --> 00:30:16,670 vi vere tajpita en iu sufiĉe longa. 728 00:30:16,670 --> 00:30:18,500 Nun, ĉi tiu estas peco de blanka mensogo. 729 00:30:18,500 --> 00:30:22,020 Se ni efektive paŭzis sufiĉe tempon kaj mi tajpis en 730 00:30:22,020 --> 00:30:24,640 iu kiel 5 miliardoj karakteroj en la klavaro 731 00:30:24,640 --> 00:30:28,060 ĉi tie, aŭ vere batis kopio-paston sufiĉe, ni tre eble 732 00:30:28,060 --> 00:30:29,730 povis kaŭzi la programo por frakasi. 733 00:30:29,730 --> 00:30:32,130 Nur iom pli malfacile simuli ke kun finia 734 00:30:32,130 --> 00:30:33,740 kvanto de tempo. 735 00:30:33,740 --> 00:30:37,320 >> Kio estas alia angulo kazo ni povus provi? 736 00:30:37,320 --> 00:30:38,730 Yeah? 737 00:30:38,730 --> 00:30:39,020 Yeah. 738 00:30:39,020 --> 00:30:40,360 Do kial ni ne respondos nenion? 739 00:30:40,360 --> 00:30:43,130 Do ni vere devas preni iun agon, ĉar alie 740 00:30:43,130 --> 00:30:45,060 la programo tuj sidas tie palpebrumante tuta tago. 741 00:30:45,060 --> 00:30:46,860 Sed se mi ĝuste batis Entajpu - 742 00:30:46,860 --> 00:30:48,780 OK, nun, ankoraŭ aspektas erara. 743 00:30:48,780 --> 00:30:51,670 Ne frakasi, sed eble ekzistas nun ŝancon al 744 00:30:51,670 --> 00:30:54,190 komenci apliki pli striktan programon 745 00:30:54,190 --> 00:30:55,290 ke efektive kontrolas. 746 00:30:55,290 --> 00:30:57,640 Kaj se la kordoj, la frazo, la vorto, kiun mi 747 00:30:57,640 --> 00:31:00,890 tajpita en havas longitudon 0, nu, eble mi devus krias al la 748 00:31:00,890 --> 00:31:03,770 uzanto, aŭ diri al li aŭ ŝi eniri ĉenon denove, por ke 749 00:31:03,770 --> 00:31:06,560 ni reale preni kion similas ĝentila konduto kaj ne 750 00:31:06,560 --> 00:31:08,570 nur kompletaj neglektas de mia flanko. 751 00:31:08,570 --> 00:31:11,130 >> Demando en reen? 752 00:31:11,130 --> 00:31:11,970 Dekuma nombro. 753 00:31:11,970 --> 00:31:13,120 Do ni povus provi tion, ankaŭ. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Similas ke tuj ĝuste funkcias reale okay. 756 00:31:19,470 --> 00:31:21,160 Kaj tio vere atendas. 757 00:31:21,160 --> 00:31:24,550 Eĉ kvankam ni povis esti tajpita tiu numero tie, aŭ 758 00:31:24,550 --> 00:31:28,200 granda nombro antaŭe, rimarkas ke kiam ni tajpas uzanto 759 00:31:28,200 --> 00:31:31,070 enigo kaj ni uzas la GetString funkcio, ne 760 00:31:31,070 --> 00:31:34,380 aferon, se kion mi tajpas aspektas kiel nombro. 761 00:31:34,380 --> 00:31:36,720 Rememoru, ke laŭ ASCII, ĉiu sur vian 762 00:31:36,720 --> 00:31:39,920 klavaro havas nombran valoron, kiu povas esti mapita al 763 00:31:39,920 --> 00:31:41,480 karakteron, char. 764 00:31:41,480 --> 00:31:44,490 Do ĉi-kaze, eĉ se mi povus tajpi numeron, la 765 00:31:44,490 --> 00:31:48,190 komputilo tuj pensas pri tio, por tiel diri, kiel linio - 766 00:31:48,190 --> 00:31:49,870 iu kiu aspektas kiel nombro, sed estas 767 00:31:49,870 --> 00:31:51,090 fakte ne numero. 768 00:31:51,090 --> 00:31:53,450 Sed tio estas vere perfektan segue, ĉar nun ni povas 769 00:31:53,450 --> 00:31:55,450 fakte transiro al skribi programojn kiuj 770 00:31:55,450 --> 00:31:56,730 uzi aliajn datumtipojn. 771 00:31:56,730 --> 00:32:01,840 >> Do krom uzi signoj, aŭ pli ĝuste, krom uzi kordoj, 772 00:32:01,840 --> 00:32:04,510 realigi ke ni havos aliajn datumtipoj en C same kiel en 773 00:32:04,510 --> 00:32:05,230 aliaj lingvoj. 774 00:32:05,230 --> 00:32:08,480 A char, kiel la nomo sugestas, estas nur unu signo. 775 00:32:08,480 --> 00:32:12,150 Al kaleŝego estas glitpunktaj valoron, kaj tio estas nur fantazio 776 00:32:12,150 --> 00:32:14,470 maniero diri reela nombro - iu kiu havas dekuman 777 00:32:14,470 --> 00:32:17,410 punkto en ĝi kun iuj nombroj al la maldekstra kaj / aŭ dekstren. 778 00:32:17,410 --> 00:32:21,370 An int estas entjero, kiu estas nur numero kiel 123. 779 00:32:21,370 --> 00:32:24,170 Kaj nun pli interese estas aĵoj kiel duobla. 780 00:32:24,170 --> 00:32:28,540 Kion ni diras duobla estis lastfoje? 781 00:32:28,540 --> 00:32:30,050 Estas 64, dekstre. 782 00:32:30,050 --> 00:32:33,560 Do dum tipe kaleŝego estas 32-bita - 783 00:32:33,560 --> 00:32:37,340 tial ĝi estas tio longe en memoro, ĝi uzas 32 nuloj kaj al 784 00:32:37,340 --> 00:32:40,530 reprezenti valorojn - duobla estas laŭvorte dufoje ke, kiu 785 00:32:40,530 --> 00:32:43,810 signifas ke vi povas aŭ prezenti pli grandan nombroj, aŭ 786 00:32:43,810 --> 00:32:45,810 vi povas reprezenti pli precizaj nombroj. 787 00:32:45,810 --> 00:32:48,690 Do vi povas havi pli numeroj post la dekuma punkto, sed 788 00:32:48,690 --> 00:32:51,520 kiel la ulo diris en la video, eĉ iu simpla 789 00:32:51,520 --> 00:32:55,360 koncepte kiel 1/3 ne povas esti prezentita precize per 790 00:32:55,360 --> 00:32:58,330 komputilo, ĉar eventuale vi elĉerpas de bitoj, kaj 791 00:32:58,330 --> 00:33:02,510 do vi nur povas fari .33333333 tiom da fojoj, je 792 00:33:02,510 --> 00:33:05,050 kiu punkto oni nur devas diri ke mi estas el prezento 793 00:33:05,050 --> 00:33:08,120 spaco, mi devas simple nomas ĝin tage kaj reprezenti ĝin 794 00:33:08,120 --> 00:33:10,200 iom imprecisely like that. 795 00:33:10,200 --> 00:33:11,110 Kaj longa longa - 796 00:33:11,110 --> 00:33:13,880 stulta nomo, sed estas ĉar tie estas datumtipo konata kiel 797 00:33:13,880 --> 00:33:19,350 longe en C kiu hazarde estas ofte 32 bitoj, ĝuste kiel 798 00:33:19,350 --> 00:33:21,670 int estas 32 bitoj, sed longa longa estas 799 00:33:21,670 --> 00:33:23,560 ĝenerale 64 bitoj. 800 00:33:23,560 --> 00:33:25,740 Do simple signifas ke vi povas reprezenti pli granda 801 00:33:25,740 --> 00:33:26,990 nombroj ol ĉi tiu. 802 00:33:26,990 --> 00:33:27,410 >> Bone. 803 00:33:27,410 --> 00:33:29,390 Do, se ni vere volas komenci reprezentas aferojn, ni 804 00:33:29,390 --> 00:33:31,030 eble bezonos pli kompleksa tipoj, kaj 805 00:33:31,030 --> 00:33:32,340 jen kial ni havas ĉenon. 806 00:33:32,340 --> 00:33:36,450 Do, en la CS50 biblioteko, ke dosiero nomata cs50.h, ni 807 00:33:36,450 --> 00:33:41,110 efektive deklaris datumtipo, por tiel diri, nomita kordoj, 808 00:33:41,110 --> 00:33:42,710 sed ŝnuro ne reale ekzistas. 809 00:33:42,710 --> 00:33:44,780 Jen, denove, unu el tiuj tavoloj nin tuj senŝeligi 810 00:33:44,780 --> 00:33:47,490 reen en semajno aŭ du kaj ĵeti ĝin for, kaj vere 811 00:33:47,490 --> 00:33:49,640 rigardas sub la kapuĉo je kioma linio fakte estas, kaj 812 00:33:49,640 --> 00:33:50,840 kiel ĝi estas reprezentitaj. 813 00:33:50,840 --> 00:33:53,520 Ni ankaŭ iras por rigardi Bulea valoroj. 814 00:33:53,520 --> 00:33:56,040 >> Do kio estis bool en la kunteksto de Scratch? 815 00:33:59,154 --> 00:34:00,300 Estas vera aŭ malvera. 816 00:34:00,300 --> 00:34:03,900 Do estas nur valoro kiu estas vera aŭ falsa, sur aŭ for, 1 aŭ 817 00:34:03,900 --> 00:34:06,140 0, tamen vi volas vidi la mondon. 818 00:34:06,140 --> 00:34:09,739 Do en C, danke al la CS50 biblioteko, kiu laŭvice 819 00:34:09,739 --> 00:34:12,179 inkludas alian biblioteko sub la kapuĉo, ni havas 820 00:34:12,179 --> 00:34:14,909 aliro al datumtipo ke nomas bool, kiu volas 821 00:34:14,909 --> 00:34:18,730 laŭvorte nin permesas atribui la valoroj vera aŭ falsa al 822 00:34:18,730 --> 00:34:20,219 aĵoj en programo. 823 00:34:20,219 --> 00:34:23,880 >> Do ni iru antaŭen tie kaj skribu iom programo kiu 824 00:34:23,880 --> 00:34:26,330 faras ion engaĝante nombroj anstataŭe. 825 00:34:26,330 --> 00:34:29,840 Do lasu min iri reen al la CS50 Appliance, lasu min antaŭeniri kaj 826 00:34:29,840 --> 00:34:32,770 krei novan dosieron ĉi tie nomis - 827 00:34:32,770 --> 00:34:35,460 ni simple diri ion simplan, kiel math.c. 828 00:34:38,270 --> 00:34:38,710 Bone. 829 00:34:38,710 --> 00:34:41,600 Kaj nun iru al la supro de mia programo, mi estas 830 00:34:41,600 --> 00:34:42,510 faros la kutima - 831 00:34:42,510 --> 00:34:44,780 # Include , tiel ke mi povas uzi 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 ni revenos al, eventuale, kion int signifas 834 00:34:49,270 --> 00:34:52,389 ĉi tie, kion void signifas ĉi tie, sed nuntempe, nur scias, ke 835 00:34:52,389 --> 00:34:54,270 vi devas komenci programojn kiel ĉi tio. 836 00:34:54,270 --> 00:34:56,280 Nun mi tuj iros antaŭen kaj diru ion iom 837 00:34:56,280 --> 00:35:02,110 malsamaj - printf ("Donu al mi nombro:" 838 00:35:02,110 --> 00:35:03,570 );. 839 00:35:03,570 --> 00:35:09,220 Tiam Mi faros int n = GetInt, ĉar ĝi 840 00:35:09,220 --> 00:35:12,770 rezultas GetInt estas alia funkcio en la CS50 biblioteko 841 00:35:12,770 --> 00:35:14,060 krom GetString. 842 00:35:14,060 --> 00:35:17,340 Kaj nun mi faros ion stulta, kiel "danke 843 00:35:17,340 --> 00:35:25,760 por la% d, "ĉar dekuma entjero, kaj tiam komo n, kaj 844 00:35:25,760 --> 00:35:26,620 tiam revenu 0. 845 00:35:26,620 --> 00:35:28,940 Do denove, revenu 0 havas nenion komunan kun la numero mi estas 846 00:35:28,940 --> 00:35:30,080 demandante la uzanton por. 847 00:35:30,080 --> 00:35:33,620 Nur signifas fine ke ĉiuj, supozeble, estas bone. 848 00:35:33,620 --> 00:35:36,290 >> Do mi iros al mia fina fenestro tie. 849 00:35:36,290 --> 00:35:39,590 Lasu min tajpi fari math, eniru. 850 00:35:39,590 --> 00:35:41,360 Kaj io estas malĝusta. 851 00:35:41,360 --> 00:35:44,620 Faru math ne funkciis. 852 00:35:44,620 --> 00:35:46,170 Jen la unua el niaj eraro mesaĝoj. 853 00:35:46,170 --> 00:35:46,570 Kial? 854 00:35:46,570 --> 00:35:49,720 Iom críptico, sed - 855 00:35:49,720 --> 00:35:50,060 Yeah. 856 00:35:50,060 --> 00:35:51,240 Do cs50.h. 857 00:35:51,240 --> 00:35:53,900 Do denove, speciale frue, vi skribu vian unuan 858 00:35:53,900 --> 00:35:56,590 programo por pset 1 en sekciojn, en oficejo horoj, kaj 859 00:35:56,590 --> 00:35:59,050 sincere, ĝi estos blindiga kelkfoje kion tio 860 00:35:59,050 --> 00:36:00,000 fakte diras. 861 00:36:00,000 --> 00:36:01,890 Sed vi rimarkas tre rapide komencas fali 862 00:36:01,890 --> 00:36:06,120 en siteloj per ĉi tiu signifas ke vi jam cxesis unu 863 00:36:06,120 --> 00:36:08,290 de la # inkludas sur la supro de la dosiero. 864 00:36:08,290 --> 00:36:10,960 Kaj Clang, la tradukilo, estas informi vin pri ĉi tiu per 865 00:36:10,960 --> 00:36:14,090 dirante prefere fancifully, implica deklaro de 866 00:36:14,090 --> 00:36:15,990 funkcio GetInt estas nevalida. 867 00:36:15,990 --> 00:36:16,310 >> Bone. 868 00:36:16,310 --> 00:36:17,520 Do kion tio signifas? 869 00:36:17,520 --> 00:36:22,080 Ĝi simple signifas ke vi implicite deklaris GetInt en 870 00:36:22,080 --> 00:36:24,850 la senco ke vi ne eksplicite deklaris ĝin. 871 00:36:24,850 --> 00:36:27,300 Eksplicite deklari int, vi devas instrui 872 00:36:27,300 --> 00:36:28,740 Clang ke ĝi ekzistas. 873 00:36:28,740 --> 00:36:32,020 Kaj la tre simpla solvo por tio estas instrui ĝin 874 00:36:32,020 --> 00:36:34,780 inkludante tiun aliaj dosiero, cs50.h, ĉe 875 00:36:34,780 --> 00:36:35,850 la supro de via dosiero. 876 00:36:35,850 --> 00:36:40,380 Ĉar laŭvorte, kio # include ne estas rakontas Clang 877 00:36:40,380 --> 00:36:44,030 preskaux iri trovi la dosieron nomata cs50.h, kopio, 878 00:36:44,030 --> 00:36:48,150 algluu ĝin aŭtomate sur la supron de mia programo por mi, 879 00:36:48,150 --> 00:36:50,850 kaj tiam konverti la fontan kodon al nuloj kaj aĵoj. 880 00:36:50,850 --> 00:36:52,850 Sed tio estus evidente estus tre tede se ni homoj havis 881 00:36:52,850 --> 00:36:55,370 iri kopii kaj bati tiuj grandaj dosieroj tuta tempo, 882 00:36:55,370 --> 00:36:58,540 do # include nur faras ĉiu kiu aŭtomate sen 883 00:36:58,540 --> 00:37:01,550 muddying mia kodo kun iu alia biblioteko. 884 00:37:01,550 --> 00:37:06,370 Kaj biblioteko estas nur alia dosiero kiu enhavas funkciojn, kaj 885 00:37:06,370 --> 00:37:08,340 aliajn aĵojn kiuj iu alia skribis, ke ni estas 886 00:37:08,340 --> 00:37:10,270 utiligante nian mem. 887 00:37:10,270 --> 00:37:10,580 >> Bone. 888 00:37:10,580 --> 00:37:11,200 Ni provu denove. 889 00:37:11,200 --> 00:37:12,250 Faru math. 890 00:37:12,250 --> 00:37:13,120 Eniri. 891 00:37:13,120 --> 00:37:13,530 Bona. 892 00:37:13,530 --> 00:37:14,880 Por ke ŝajnas esti laborinta. 893 00:37:14,880 --> 00:37:18,330 Do mi nun kuros math;. / Math. 894 00:37:18,330 --> 00:37:21,100 Entajpu donas al mi numeron, 123. 895 00:37:21,100 --> 00:37:22,620 Dankon pro la 123. 896 00:37:22,620 --> 00:37:24,490 Nun ni provu alian angulon kazo. 897 00:37:24,490 --> 00:37:26,530 Kordo estas sufiĉe malavara, ĉar 898 00:37:26,530 --> 00:37:27,620 kordoj povas esti nenio. 899 00:37:27,620 --> 00:37:28,910 Povas aspekti kiel nombroj, aspektas 900 00:37:28,910 --> 00:37:30,600 karakterojn, aspektas kiel vortoj. 901 00:37:30,600 --> 00:37:31,900 Sed int estas int. 902 00:37:31,900 --> 00:37:34,370 Do nun se mi estas la malfacila uzanto, kaj ĝi estas dirante "Donu al mi 903 00:37:34,370 --> 00:37:38,730 numeron, "kion se mi provas fari ion kiel 0,1? 904 00:37:38,730 --> 00:37:41,510 Nu, tio estas nombro, kaj ĝi estas konsekvenca kun la 905 00:37:41,510 --> 00:37:44,180 gramatiko mi uzas tie, sed sub la kapuĉo, mi estas de 906 00:37:44,180 --> 00:37:45,610 Kompreneble uzante la funkcion GetInt. 907 00:37:45,610 --> 00:37:46,610 >> Do ni vidu kio okazas. 908 00:37:46,610 --> 00:37:48,250 Enter, reprovi. 909 00:37:48,250 --> 00:37:48,560 Bone. 910 00:37:48,560 --> 00:37:50,570 Lasu min esti malfacila kaj nur batis Entajpu denove. 911 00:37:50,570 --> 00:37:51,700 Eniri, Enter. 912 00:37:51,700 --> 00:37:53,890 Do nun ŝajnas ke GetInt estas iom pli 913 00:37:53,890 --> 00:37:55,240 potenca ol GetString. 914 00:37:55,240 --> 00:37:58,540 Ni, la dungitaro, implementado tiel ke se ni rimarkos 915 00:37:58,540 --> 00:38:02,100 Vi ne donis al ni int - kaj int estas dekuma nombro 916 00:38:02,100 --> 00:38:04,785 enhavanta nuloj, bonaj, duope, triope, kvarpiede, Fives, Sixes, 917 00:38:04,785 --> 00:38:05,540 po sep paroj, eights, aŭ _nines_. 918 00:38:05,540 --> 00:38:06,310 Kaj tio estas ĝi. 919 00:38:06,310 --> 00:38:08,810 Neniu dekuma punktoj, neniu signoj, neniu interpunkcio. 920 00:38:08,810 --> 00:38:10,390 Ŝajnas ke ni devas kunlabori. 921 00:38:10,390 --> 00:38:13,680 Do mi provos kvar, kvin, ses, kaj kiu alvenas al mi tra. 922 00:38:13,680 --> 00:38:16,760 Do vere, esti anal tie, mi probable dirus "donu al mi 923 00:38:16,760 --> 00:38:20,310 entjero "por transdoni al la uzanto 924 00:38:20,310 --> 00:38:22,620 precize kion mi intencas. 925 00:38:22,620 --> 00:38:24,090 >> Nun ni pensas sub la kapuĉo. 926 00:38:24,090 --> 00:38:27,930 Ni ne intencas rigardi kiel cs50.h estas implementado hodiaŭ, 927 00:38:27,930 --> 00:38:29,080 tiu biblioteko. 928 00:38:29,080 --> 00:38:33,600 Sed se ĝi daŭre diras reprovi, reprovi, reprovi, kion programado 929 00:38:33,600 --> 00:38:36,970 konstrui mi supozeble uzas sub la kapuĉo por 930 00:38:36,970 --> 00:38:39,000 planas akcepti? 931 00:38:39,000 --> 00:38:39,980 Do nur buklo, ĉu ne? 932 00:38:39,980 --> 00:38:41,930 Unu el la plej simplaj ideoj, kiun ni vidis en Scratch. 933 00:38:41,930 --> 00:38:45,050 La Forever konstrui, la Ripetu konstrui. 934 00:38:45,050 --> 00:38:47,320 Supozeble, en tiu programo, sub la kapuĉo, eĉ 935 00:38:47,320 --> 00:38:49,470 kvankam ĝi estas skribita en C kaj ne nulo, ĝi estas fari 936 00:38:49,470 --> 00:38:54,300 iu nomita ekvivalento forever se la uzanto ne havas 937 00:38:54,300 --> 00:38:58,710 tajpita en entjero, diru reprovi, reprovi, reprovi, reprovi, tiel 938 00:38:58,710 --> 00:39:01,220 tiam fine kiam ni ricevas entjero, tiam vi 939 00:39:01,220 --> 00:39:02,970 rompi el tiu ciklo. 940 00:39:02,970 --> 00:39:05,610 >> Do kion aliaj funkcioj povas ni uzi tie en CS50 la biblioteko? 941 00:39:05,610 --> 00:39:07,880 Nu, ia la evidentaj, almenaŭ bazita sur la 942 00:39:07,880 --> 00:39:09,570 datumtipoj, ke ni nun scias ekzisti. 943 00:39:09,570 --> 00:39:12,900 Ni implementado GetString, GetInt, sed tra la tuta 944 00:39:12,900 --> 00:39:15,680 unuaj semajnoj de la termino, vi povas uzi ankaŭ GetFloat kaj 945 00:39:15,680 --> 00:39:18,870 GetDouble kaj GetLongLong por atingi precize la 946 00:39:18,870 --> 00:39:20,030 datumtipoj, ke vi deziras. 947 00:39:20,030 --> 00:39:24,030 Ĉar la ŝlosilo detalo estas, ke kontraste iuj lingvoj, 948 00:39:24,030 --> 00:39:26,630 kiel Python kaj Ruby, kie vi ne nepre devas 949 00:39:26,630 --> 00:39:29,730 deklari la datumtipo de variablo - 950 00:39:29,730 --> 00:39:32,390 vi ne devas diri al la komputilo, kian de aĵoj 951 00:39:32,390 --> 00:39:34,000 vi tuj metis en la variablo - 952 00:39:34,000 --> 00:39:36,640 en C, oni devas esti ever do preciza. 953 00:39:36,640 --> 00:39:40,060 Do se vi volas variablo nomis n, eron de stokado 954 00:39:40,060 --> 00:39:42,900 ke en ĉi tiu kazo okazas al esti 32 bitoj per konvencio, vi 955 00:39:42,900 --> 00:39:45,660 devas diri la komputilo ke tiuj bitoj estas 956 00:39:45,660 --> 00:39:47,840 tuj stoki nombro - 957 00:39:47,840 --> 00:39:50,630 ne estas karaktero, ne ĉenon, ne flosas. 958 00:39:50,630 --> 00:39:52,620 Kaj tion traktas la temon ni efektive 959 00:39:52,620 --> 00:39:53,760 enkuris en lasta semajno. 960 00:39:53,760 --> 00:39:57,050 Se ni uzas nuloj kaj nombroj por reprezenti ne nur 961 00:39:57,050 --> 00:40:00,770 nombroj sed Kiel kaj Bs kaj C, kiom en la mondo estas 962 00:40:00,770 --> 00:40:03,460 komputilo tuj scias, ke ĉi tiu ŝablono de bitoj vere 963 00:40:03,460 --> 00:40:07,650 reprezentas la numeron 65, kontraste reprezentantaj la 964 00:40:07,650 --> 00:40:09,860 litero A, kiu hazarde, laŭ 965 00:40:09,860 --> 00:40:13,440 ASCII, memoras, estis ekvivalenta al 65? 966 00:40:13,440 --> 00:40:16,550 >> Do tiuj datumtipoj provizi kuntekston por la komputilo, do 967 00:40:16,550 --> 00:40:18,810 kiu konas se tiuj bitoj devus esti interpretita kiel 968 00:40:18,810 --> 00:40:23,660 int aŭ kiel linio. 969 00:40:23,660 --> 00:40:26,500 Demandojn, tiam, sur tiu ĉi? 970 00:40:26,500 --> 00:40:28,149 Yeah? 971 00:40:34,780 --> 00:40:35,270 DAVID J. Malan: Bona demando. 972 00:40:35,270 --> 00:40:39,140 Se ni prenas el stdio.h, ni konservu la dosieron - 973 00:40:39,140 --> 00:40:44,360 lasu min iri al la terminala fenestro kaj kuri fari math, zoom 974 00:40:44,360 --> 00:40:45,530 en kaj eniri - 975 00:40:45,530 --> 00:40:47,700 nun mi ricevas malsaman eraro, ĉar mi estas implice 976 00:40:47,700 --> 00:40:49,650 deklari kio funkcii nun? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Do nun mi kreis novan problemon, kies solvo estas 979 00:40:52,970 --> 00:40:53,890 esence la sama. 980 00:40:53,890 --> 00:40:55,365 Mi bezonas meti tiun dorso. 981 00:40:55,365 --> 00:40:56,615 Spektantaro: [inaudible] 982 00:41:03,534 --> 00:41:04,030 DAVID J. Malan: Ho. 983 00:41:04,030 --> 00:41:04,850 Do se mi forprenu - 984 00:41:04,850 --> 00:41:05,360 Konsentite, yeah. 985 00:41:05,360 --> 00:41:08,960 Do se mi forigi la normo / S biblioteko inclusion supren 986 00:41:08,960 --> 00:41:12,020 ĉi tie, kaj tiam vi jene, se mi forigi printf, get 987 00:41:12,020 --> 00:41:13,450 liveri de printf? 988 00:41:13,450 --> 00:41:13,810 Jes. 989 00:41:13,810 --> 00:41:18,450 Tiu devus labori, ĉar mi estas ne plu uzi ajnan - whoops. 990 00:41:18,450 --> 00:41:20,110 Ĉu mi ĝuste kuŝas? 991 00:41:20,110 --> 00:41:21,650 Ho, bone. 992 00:41:21,650 --> 00:41:25,640 Tio ne funkcios pro nova eraro ni ĵus prezentita. 993 00:41:25,640 --> 00:41:28,390 Kaj ĉi tiu estas iom pli mem-klarigan. 994 00:41:28,390 --> 00:41:29,440 >> Kio estas la problemo? 995 00:41:29,440 --> 00:41:30,680 Neuzataj variablo n. 996 00:41:30,680 --> 00:41:34,040 Do tiu eraro estas la rezulto de nia esti agordita la 997 00:41:34,040 --> 00:41:36,640 aparaton esti aparte pedanta, por vere krias al 998 00:41:36,640 --> 00:41:39,060 vi por cxiu ebla eraro, eĉ se ĝi estas speco de 999 00:41:39,060 --> 00:41:41,950 ne-fatala eraro kiel ĉi - estas vere tiom granda 1000 00:41:41,950 --> 00:41:44,820 trakti ke mi atribuis al int, metu nombro en ĝi kaj poste 1001 00:41:44,820 --> 00:41:46,030 nur faris nenion per ĝi? 1002 00:41:46,030 --> 00:41:47,020 Do funkcie, ne. 1003 00:41:47,020 --> 00:41:50,410 Tio ne tuj rompos la programo. 1004 00:41:50,410 --> 00:41:51,490 Estas nur ia stulta, ĉu ne? 1005 00:41:51,490 --> 00:41:54,220 Ne estas valoro al li petis tiun numeron, stokitaj 1006 00:41:54,220 --> 00:41:56,370 ĝin en variablon, se vi neniam faros ion 1007 00:41:56,370 --> 00:41:58,000 kun ĝi, ĉu presi ĝin aŭ savi ĝin. 1008 00:41:58,000 --> 00:42:00,270 Do ĉi-kaze, Clang estas agnosko tiel, kaj 1009 00:42:00,270 --> 00:42:02,010 ĝi estas jene neuzitaj variablo n. 1010 00:42:02,010 --> 00:42:05,380 >> Do ni povas fiksi tion ĉi se ni vere volas. 1011 00:42:05,380 --> 00:42:07,250 Sed denove, tio ne estas bona programado nun. 1012 00:42:07,250 --> 00:42:09,310 Do mi povis nur fari tion - 1013 00:42:09,310 --> 00:42:12,060 subiros tie, lasu min liberigi la ekrano, fari math. 1014 00:42:12,060 --> 00:42:13,090 Kiu funkcias. 1015 00:42:13,090 --> 00:42:18,110 Nun mi povas kuri mia math programo, prenas enigo - 1016 00:42:18,110 --> 00:42:18,700 bone, tio estis malbona. 1017 00:42:18,700 --> 00:42:23,450 Prenas enigo, kaj tio estas ĉio faras, en ĉi tiu kazo. 1018 00:42:23,450 --> 00:42:25,220 >> Do efektive, ni provu unu alia angulo kazo ke ni 1019 00:42:25,220 --> 00:42:26,300 ne pensis antaŭe. 1020 00:42:26,300 --> 00:42:28,220 En ĉi tiu kazo - ĉi tie, ni reiru al kiu estas 1021 00:42:28,220 --> 00:42:29,500 iom pli uzantamika. 1022 00:42:29,500 --> 00:42:32,580 Lasu min reiri tien kaj kuri fari math denove. 1023 00:42:32,580 --> 00:42:34,190 Whoops, kion mi faras malbone? 1024 00:42:34,190 --> 00:42:35,400 Alvenis al ruliĝi reen plu. 1025 00:42:35,400 --> 00:42:36,390 Okay. 1026 00:42:36,390 --> 00:42:38,490 Nun ni estas tie en la originala stato, kie ĉiuj 1027 00:42:38,490 --> 00:42:39,990 Estas espereble bone. 1028 00:42:39,990 --> 00:42:43,360 Kaj nun se mi kuros math, 123 ŝajnas funkcii. 1029 00:42:43,360 --> 00:42:46,010 Sed ĉi tio ne estas vere efika pruvo, je justaj diri 1030 00:42:46,010 --> 00:42:47,930 estas bone, ke funkcias. 1031 00:42:47,930 --> 00:42:49,120 789, kiu funkcias. 1032 00:42:49,120 --> 00:42:50,100 Tempo por submeti. 1033 00:42:50,100 --> 00:42:51,870 Ĉar ekzistas alia angulo kazoj tie. 1034 00:42:51,870 --> 00:42:55,040 Kordo ne vere donas al ni multe da ĝeno tajpante en 1035 00:42:55,040 --> 00:42:56,510 tuta multajn signojn. 1036 00:42:56,510 --> 00:42:59,580 Sed kion se mi tajpas en tio? 1037 00:42:59,580 --> 00:43:04,850 Bati la numero 1 en aro multe, tutaj multe tie - 1038 00:43:04,850 --> 00:43:06,300 gravas, ĝi estas ricevas iom enuiga, do mi tuj 1039 00:43:06,300 --> 00:43:10,040 halti ĉi tie kaj mi iros por bati Eniru. 1040 00:43:10,040 --> 00:43:11,290 >> Kio diable ĵus okazis? 1041 00:43:14,110 --> 00:43:17,680 Do tio povas reale esti klarigita. 1042 00:43:17,680 --> 00:43:18,920 Do ĉu ĝi prenas ĝin kiel duuma? 1043 00:43:18,920 --> 00:43:21,130 Bona penso, sed ne, ĝi estas ne la fakto, ke ĝi portis ŝin 1044 00:43:21,130 --> 00:43:22,815 kiel duuma, ĉar ja, kiu estis nur speco de 1045 00:43:22,815 --> 00:43:23,080 koincido. 1046 00:43:23,080 --> 00:43:23,930 Ni povas fari ĉi denove. 1047 00:43:23,930 --> 00:43:26,530 Do ne estas 2 en la duuma sistemo, jen 1048 00:43:26,530 --> 00:43:27,420 Probable sufiĉas iel. 1049 00:43:27,420 --> 00:43:28,780 Eniri. 1050 00:43:28,780 --> 00:43:30,140 Por ke ne estis la problemo. 1051 00:43:30,140 --> 00:43:31,390 Kion alian? 1052 00:43:34,650 --> 00:43:35,400 Ekzakte. 1053 00:43:35,400 --> 00:43:37,830 >> Do pensas reen al kia int reale estas. 1054 00:43:37,830 --> 00:43:40,970 Estas 32 bitoj kiu kolektive estas interpretitaj 1055 00:43:40,970 --> 00:43:42,090 kiel nombro. 1056 00:43:42,090 --> 00:43:44,730 Se vi havas 32 bitoj, kiu signifas ĉiu de la bitoj povas esti 1057 00:43:44,730 --> 00:43:46,690 a 0 aŭ 1, 0 aux 1. 1058 00:43:46,690 --> 00:43:49,090 Do tio signifas ke estas du ebloj por tiu bito, 1059 00:43:49,090 --> 00:43:51,140 du eblecoj por tio, du ebloj por tiu 1060 00:43:51,140 --> 00:43:52,570 iom - tiel ke estas 2 horoj 2 fojoj - 1061 00:43:52,570 --> 00:43:55,480 tial jen 2 al la 32 povo estas la tuteca nombro de 1062 00:43:55,480 --> 00:43:58,960 permutoj de nuloj kaj se vi havas 32 1063 00:43:58,960 --> 00:44:01,400 anstataŭiloj, nuloj aŭ aĵoj, fronte de vi. 1064 00:44:01,400 --> 00:44:04,250 Do, se mi havas 2 al la 32, matematike, jen kio? 1065 00:44:07,080 --> 00:44:07,840 Do ĝi estas tre. 1066 00:44:07,840 --> 00:44:09,910 Estas 4 milionoj, donu aŭ preni. 1067 00:44:09,910 --> 00:44:13,510 Kaj 4 miliardoj ne ŝajnas esti kio estis presita cxi tie. 1068 00:44:13,510 --> 00:44:16,290 Fakte, ĉi aspektas pli proksimaj al 2 miliardoj. 1069 00:44:16,290 --> 00:44:17,970 Sed tio ne estas hazardo. 1070 00:44:17,970 --> 00:44:21,590 La fakto ke la komputilo malinterpretado mia grandega nombro, 1071 00:44:21,590 --> 00:44:24,260 mia grandega vico de karaj kaj tiam mia grandega vico de duope, 1072 00:44:24,260 --> 00:44:26,880 kiel krude 2 miliardoj, klarigas kiel? 1073 00:44:30,250 --> 00:44:32,180 Jen ĉapo sur la int. 1074 00:44:32,180 --> 00:44:34,970 Jen certe maksimuman valoron, kiun vi povas reprezenti. 1075 00:44:34,970 --> 00:44:36,370 Sed estas kutime 4 miliardoj, ĉu ne? 1076 00:44:36,370 --> 00:44:39,100 Se 2 al la 32 estas proksimume 4 milionoj, tio similas 1077 00:44:39,100 --> 00:44:40,350 tio estas la plej granda nombro. 1078 00:44:42,420 --> 00:44:45,240 Do ne restaĵo, sed bona penso. 1079 00:44:45,240 --> 00:44:46,340 Negativaj nombroj. 1080 00:44:46,340 --> 00:44:49,570 Do se vi havas 4 miliardoj eblaj aĵoj vi povas 1081 00:44:49,570 --> 00:44:52,970 reprezenti kun tiuj diversaj permutoj de 32 _0s_ kaj 1082 00:44:52,970 --> 00:44:55,600 1s, nu, ĝi staras rezoni, ke ni homoj povus voli 1083 00:44:55,600 --> 00:44:57,110 reprezentas ne nur pozitivaj entjeroj 1084 00:44:57,110 --> 00:44:58,240 sed negativaj entjeroj. 1085 00:44:58,240 --> 00:45:00,410 Kaj efektive, jen la supozo, ke C faras. 1086 00:45:00,410 --> 00:45:03,550 Do kun 32 bitoj, vi povas reprezenti proksimume negativa 2 1087 00:45:03,550 --> 00:45:06,630 miliardo tuta vojo ĝis pozitiva 2 miliardoj. 1088 00:45:06,630 --> 00:45:08,750 Kaj tiel en tiu ĉi kazo, kion ni vere vidas, ĝuste 1089 00:45:08,750 --> 00:45:13,600 la randon de la kapablo de nia entjero, kaj ni havas, tiel 1090 00:45:13,600 --> 00:45:15,860 paroli, superfluis entjero. 1091 00:45:15,860 --> 00:45:19,180 Ni provis Cram pli bitojn en ĝin ol povas fakte persvadi. 1092 00:45:19,180 --> 00:45:22,960 Do la fina rezulto estas ni esence havas ĉiuj 1 bitoj. 1093 00:45:22,960 --> 00:45:25,280 Ni spegulita ĉiuj niaj bitoj, ni provis reprezenti 1094 00:45:25,280 --> 00:45:27,630 la plej granda nombro eblas, sed estas klare ne preskaux 1095 00:45:27,630 --> 00:45:30,960 sufiĉe granda por reprezenti la du aferojn Mi ĵus tajpis in 1096 00:45:30,960 --> 00:45:31,730 Yeah? 1097 00:45:31,730 --> 00:45:32,980 Spektantaro: [inaudible] 1098 00:45:37,230 --> 00:45:37,830 >> DAVID J. Malan: Bona demando. 1099 00:45:37,830 --> 00:45:40,080 Kial ni ne simple reprezenti ke negativa 1100 00:45:40,080 --> 00:45:41,500 subskribi kiel nur karaktero? 1101 00:45:41,500 --> 00:45:44,200 Do ni absolute povis, kaj ni povis tiam savi 1102 00:45:44,200 --> 00:45:45,470 plia iom. 1103 00:45:45,470 --> 00:45:49,100 Sed vi ankoraux havos por reprezenti ke streko, kaj 1104 00:45:49,100 --> 00:45:50,700 ke tuj kostis vi almenaŭ ion, 1105 00:45:50,700 --> 00:45:52,220 supozeble iom. 1106 00:45:52,220 --> 00:45:55,610 Do jes, ni povus havi 32 bitoj uzas por nia nombro, sed nun 1107 00:45:55,610 --> 00:45:57,610 ni bezonas alian iom uzata por nia haltostreko 1108 00:45:57,610 --> 00:45:58,810 simbolo, la minuso. 1109 00:45:58,810 --> 00:46:01,470 Do nun ni havas 33 bitoj valoroj, kiujn ni povus fari, sed estas 1110 00:46:01,470 --> 00:46:02,570 nur ne tiu vojo ĝi estas farita. 1111 00:46:02,570 --> 00:46:05,140 Ni faris juĝon alvoko jaroj, 32 bitoj estas varo de la 1112 00:46:05,140 --> 00:46:06,170 unuo de mezuro tie. 1113 00:46:06,170 --> 00:46:08,120 Do ni tuj uzi unu el tiuj bitoj efektive por 1114 00:46:08,120 --> 00:46:12,950 reprezenti negatividad, kaj 31 bitoj por reprezenti la nombro. 1115 00:46:12,950 --> 00:46:15,550 Aliaj demandoj? 1116 00:46:15,550 --> 00:46:15,670 Bone. 1117 00:46:15,670 --> 00:46:16,030 Tio estas tre. 1118 00:46:16,030 --> 00:46:17,930 Kial ni ne iru antaŭen kaj prenu nian kvin minutoj ripozon ĉi tie? 1119 00:46:23,580 --> 00:46:24,270 >> Bone. 1120 00:46:24,270 --> 00:46:31,250 Do denove, ne overemphasize la matematika aplikoj 1121 00:46:31,250 --> 00:46:33,840 de programado, estu la ĵus deŝiri sur tiu ekzemplo 1122 00:46:33,840 --> 00:46:36,590 antaŭ ol ni movos en aliajn konstruas, nur ĉar ĝi 1123 00:46:36,590 --> 00:46:39,430 estos ilustri kelkajn komunajn allogilon punktoj sur kelkaj el 1124 00:46:39,430 --> 00:46:41,520 la fundamentojn, kiam temas pri skribo programoj. 1125 00:46:41,520 --> 00:46:44,360 En ĉi tiu kazo, farante aritmetiko esprimoj, kiuj havas iujn 1126 00:46:44,360 --> 00:46:48,010 interesa gravecon al la sintakso. 1127 00:46:48,010 --> 00:46:50,430 >> Do tiu estas nur formulo, per kiu ni povas konverti 1128 00:46:50,430 --> 00:46:52,690 temperaturoj de Fahrenheit al Celsius. 1129 00:46:52,690 --> 00:46:54,600 Se vi ne memoras, tio estas nur la formulon. 1130 00:46:54,600 --> 00:46:58,870 Do, se ni konektas en Fahrenheit valoro de 32 gradoj, kiu estas 1131 00:46:58,870 --> 00:47:02,850 congelación, ke tuj estos 32 minus 32 estas 0, kaj ja, 1132 00:47:02,850 --> 00:47:05,130 0 en C estas ankaŭ congelación. 1133 00:47:05,130 --> 00:47:08,210 Tiom rapidis prudento kontrolu tie - tio estas la familiara formulo. 1134 00:47:08,210 --> 00:47:10,880 Mi volas transiri al la aparaton, tamen, kaj komenci 1135 00:47:10,880 --> 00:47:13,920 skribi programon nomata, kiel, f2c; "Fahrenheit al 1136 00:47:13,920 --> 00:47:15,920 Celsius dot c ". 1137 00:47:15,920 --> 00:47:18,930 Kaj ĉe la supro tie, mi tuj dividi kun # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, kaj mi faros int main (void), kaj 1139 00:47:22,190 --> 00:47:24,680 denove, ni revenos en la estonteco kiel al kio int signifas 1140 00:47:24,680 --> 00:47:26,820 tie kaj kion void signifas tie. 1141 00:47:26,820 --> 00:47:28,770 Kaj nun lasu min iri antaŭen kaj efektivigu programo kiu 1142 00:47:28,770 --> 00:47:31,170 esence faras ĉi konvertiĝo por ni. 1143 00:47:31,170 --> 00:47:36,830 >> Do printf, diru, temperaturo en Fahrenheit. 1144 00:47:36,830 --> 00:47:40,140 Kaj poste mi iros antaŭen kaj akiri la valoron de la uzanto. 1145 00:47:40,140 --> 00:47:43,120 Kian valoron mi preni de la uzanto, se mi volas 1146 00:47:43,120 --> 00:47:45,620 ili donis al mi temperaturo en Fahrenheit? 1147 00:47:45,620 --> 00:47:48,090 Yeah? 1148 00:47:48,090 --> 00:47:50,090 Kion vi proponas? 1149 00:47:50,090 --> 00:47:50,410 Yeah. 1150 00:47:50,410 --> 00:47:51,960 Do kaleŝego sentas bela racia. 1151 00:47:51,960 --> 00:47:53,950 Ni havas, denove, nur malmultaj ebloj kiuj 1152 00:47:53,950 --> 00:47:55,310 ni vidis ĝis nun. 1153 00:47:55,310 --> 00:48:00,100 Ni havas aĵojn kiel char, duobla, kaleŝego, int, longe longa, 1154 00:48:00,100 --> 00:48:01,150 bool, kordoj. 1155 00:48:01,150 --> 00:48:03,510 Do de tiuj, kaleŝego sentas bela racia. 1156 00:48:03,510 --> 00:48:06,340 Ni povus uzi duoblan, rajto, ĉar se ni vere volas 1157 00:48:06,340 --> 00:48:07,580 reprezenti homan la temperaturo - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 ni povus uzi 64 bitojn por fari tion, sed sentas 1160 00:48:12,990 --> 00:48:14,200 overkill por la temperaturo. 1161 00:48:14,200 --> 00:48:16,380 Do ni nur iri kun kaleŝego. 1162 00:48:16,380 --> 00:48:18,100 Nun mi bezonas variablo. 1163 00:48:18,100 --> 00:48:20,500 Nur por gardi aferojn simplajn, mi tuj nomas ĝin f, sed mi 1164 00:48:20,500 --> 00:48:23,370 povus same ĝuste nomi temperaturo, 1165 00:48:23,370 --> 00:48:24,600 sed ĉu estas fajna. 1166 00:48:24,600 --> 00:48:27,610 Do flosi f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Kiam mi nun decidis uzi GetFloat, kvankam, mi 1168 00:48:30,220 --> 00:48:33,340 bezonas fari unu korekto. 1169 00:48:33,340 --> 00:48:33,720 Yeah. 1170 00:48:33,720 --> 00:48:37,460 Do ni bezonas # include , alie la tradukilo estas 1171 00:48:37,460 --> 00:48:39,000 tuj krias al ni. 1172 00:48:39,000 --> 00:48:41,720 Nun ke mi havas kaleŝego, lasu min antaŭeniri kaj faru la 1173 00:48:41,720 --> 00:48:42,460 konvertiĝo. 1174 00:48:42,460 --> 00:48:44,980 >> Do unue, lasu min ankaux eniri la kutimo tie de 1175 00:48:44,980 --> 00:48:46,310 dirante mia kodo. 1176 00:48:46,310 --> 00:48:49,820 Do denove, al komento estas nur skribmaniero al la homa tio estas 1177 00:48:49,820 --> 00:48:52,600 ne estas parto de la programo per, sed unu, helpas vin 1178 00:48:52,600 --> 00:48:55,010 kompreni kion vi faris al la sekva mateno, aŭ la venonta 1179 00:48:55,010 --> 00:48:57,570 monato, ĝi helpas via instruado ulo kompreni kion vi faris 1180 00:48:57,570 --> 00:48:59,230 aux kion vi intencas fari, do estas 1181 00:48:59,230 --> 00:49:00,950 ĝenerale tre bona praktiko. 1182 00:49:00,950 --> 00:49:02,940 Ĉiu malmultaj linioj de kodo, skribu komenton al 1183 00:49:02,940 --> 00:49:04,490 mem aŭ via kolego. 1184 00:49:04,490 --> 00:49:08,460 Do jen, mi intencis diri, "Petu uzanto por temperaturo." 1185 00:49:08,460 --> 00:49:10,890 Ne devas esti kompleta kondamni, malmulta frazo. 1186 00:49:10,890 --> 00:49:14,270 Sed la ideo malantaŭ dirante en C estas ke ĉiu el viaj 1187 00:49:14,270 --> 00:49:17,980 komentoj devus plifortigi vin - aŭ, ekzemple, TF aŭ kolego - 1188 00:49:17,980 --> 00:49:21,290 al skim vian programon kaj scias precize kion ĝi faras, por ne 1189 00:49:21,290 --> 00:49:24,650 tiel legi la kodon, sed per legi la komentojn, kiuj 1190 00:49:24,650 --> 00:49:26,220 estu konciza kaj klara. 1191 00:49:26,220 --> 00:49:29,030 Bone, do nun mi iras antaŭen, kaj diros: "Convert 1192 00:49:29,030 --> 00:49:32,660 Fahrenheit al Celsius. "Do mi tuj faru, 1193 00:49:32,660 --> 00:49:34,340 diru, flosi c. 1194 00:49:34,340 --> 00:49:36,610 Ni observu Celsius kiel glitpunktaj valoro. 1195 00:49:36,610 --> 00:49:37,630 >> Kaj lasu min preni ponardopiko ĉe ĉi. 1196 00:49:37,630 --> 00:49:40,350 La formulo estas, denove, ĝis ĉi tie. 1197 00:49:40,350 --> 00:49:45,510 Kiel 5/9 fojoj F minus 32. 1198 00:49:45,510 --> 00:49:46,360 Do ni faru ĉi. 1199 00:49:46,360 --> 00:49:50,450 Do 5 dividite per 9, minus - 1200 00:49:50,450 --> 00:49:52,330 whoops, mi paneas ĝin jam. 1201 00:49:52,330 --> 00:49:53,070 Fojoj. 1202 00:49:53,070 --> 00:49:56,550 Do 5/9 fojoj F minus 32. 1203 00:49:56,550 --> 00:49:59,650 Do F minus 32, punktokomo. 1204 00:49:59,650 --> 00:50:02,000 Kaj nun, cxi tie, mi tuj iros antaŭen 1205 00:50:02,000 --> 00:50:03,220 kaj diru: presi rezulto. 1206 00:50:03,220 --> 00:50:05,160 Kaj ĉi tiu parto estas facila. Printf. 1207 00:50:05,160 --> 00:50:07,980 Kiel mi iros sur presi ĉi? 1208 00:50:07,980 --> 00:50:16,890 Nu, mi povus diri "Tiu nombro en Celsius estas% f \ n", 1209 00:50:16,890 --> 00:50:18,060 nur por iuj estetiko. 1210 00:50:18,060 --> 00:50:20,450 Kaj poste kio valoro mi volas ŝtopi en tie kiel printf la 1211 00:50:20,450 --> 00:50:21,360 dua argumento? 1212 00:50:21,360 --> 00:50:21,650 Okay. 1213 00:50:21,650 --> 00:50:22,540 Do nur c. 1214 00:50:22,540 --> 00:50:24,760 Do ni komencu per tiu kaj tiam ĵus revenas 0. 1215 00:50:24,760 --> 00:50:25,960 Denove, ĝi havas nenion komunan kun la math. 1216 00:50:25,960 --> 00:50:27,610 Ĝi simple signifas ĉio estas bone. 1217 00:50:27,610 --> 00:50:31,210 >> Nun, estas ĉi ĝentila, ĉi tiu programo? 1218 00:50:31,210 --> 00:50:31,520 Bone. 1219 00:50:31,520 --> 00:50:33,630 Do mi faris iujn erarojn. 1220 00:50:33,630 --> 00:50:35,980 Eĉ se vi ne havas ideon kion programado estas, vi povas ordigi 1221 00:50:35,980 --> 00:50:37,120 de inferir reen al grado lernejo kion la 1222 00:50:37,120 --> 00:50:38,740 eraroj tie estas. 1223 00:50:38,740 --> 00:50:40,050 Kio estas unu el la unuaj? 1224 00:50:40,050 --> 00:50:41,256 Spektantaro: [inaudible] 1225 00:50:41,256 --> 00:50:41,660 DAVID J. Malan: Yeah. 1226 00:50:41,660 --> 00:50:42,940 Do ni mankas krampoj. 1227 00:50:42,940 --> 00:50:45,420 Estis diskutita ke mi faris krampoj en la keynote 1228 00:50:45,420 --> 00:50:48,130 gliti tien, ĉar fakte tiu nocio de ordo 1229 00:50:48,130 --> 00:50:51,590 de operacioj, aŭ prioritaton, per kiu iuj operacioj - 1230 00:50:51,590 --> 00:50:52,890 multipliko - 1231 00:50:52,890 --> 00:50:56,000 havi plej devigaj, ili havas pli alta prioritato, ol aĵoj 1232 00:50:56,000 --> 00:50:58,050 kiel aldono aŭ subtraho. 1233 00:50:58,050 --> 00:51:00,550 Do ni jam faris tion por jarojn nur por klarigi ekzakte 1234 00:51:00,550 --> 00:51:02,840 kio matematika operacio devas esti farita unue. 1235 00:51:02,840 --> 00:51:05,010 Do mi devus probable imitas ĝuste ĉi. 1236 00:51:05,010 --> 00:51:08,990 Alie, la komputilo estas supozeble tuj provos fari 1237 00:51:08,990 --> 00:51:13,090 iu kiel dividi 5 de 9, tiam multipliki F, tiam subtrahi 1238 00:51:13,090 --> 00:51:14,850 32 el la tuta afero. 1239 00:51:14,850 --> 00:51:16,480 Kio ne estas, fakte, kion ni volas fari. 1240 00:51:16,480 --> 00:51:17,340 Do ni parenthesize. 1241 00:51:17,340 --> 00:51:20,860 Ni aldonu mian krampoj tie, parantezoj tie. 1242 00:51:20,860 --> 00:51:22,670 Ni metis ĉi tien. 1243 00:51:22,670 --> 00:51:25,130 Ĉi tie, mi nur rimarkis alian eraron mi faris dum la vojo. 1244 00:51:25,130 --> 00:51:25,680 Yeah? 1245 00:51:25,680 --> 00:51:26,930 Spektantaro: [inaudible] 1246 00:51:29,632 --> 00:51:30,130 >> DAVID J. Malan: Ah. 1247 00:51:30,130 --> 00:51:30,470 Bona. 1248 00:51:30,470 --> 00:51:32,400 Do ni vere havas la saman entjero 1249 00:51:32,400 --> 00:51:34,020 divido temo de antaux. 1250 00:51:34,020 --> 00:51:35,800 Mi korektos tion, ni vidu kion la simptomo estas. 1251 00:51:35,800 --> 00:51:36,990 Sed ni tuj devas korekti unu 1252 00:51:36,990 --> 00:51:37,680 aliaj eraro ĉi tie. 1253 00:51:37,680 --> 00:51:38,015 Yeah? 1254 00:51:38,015 --> 00:51:39,540 Spektantaro: [inaudible] 1255 00:51:39,540 --> 00:51:40,070 DAVID J. Malan: Jes. 1256 00:51:40,070 --> 00:51:43,130 Do, stulta eraro kiun mi faris, sed nekredeble grava. 1257 00:51:43,130 --> 00:51:45,870 La komputilo ne tuj ĝuste turnu la okulojn kaj estu 1258 00:51:45,870 --> 00:51:48,770 mi uzas ĉefurbo F, kiam mi efektive deklaris la variablo 1259 00:51:48,770 --> 00:51:51,360 kiel minuskla f tie, en la linio 8. 1260 00:51:51,360 --> 00:51:54,470 Do mi bezonas korekti en linio 11 miaj majuskloj, kiun 1261 00:51:54,470 --> 00:51:56,820 antaŭ momento estis ĉefurbo F por eraro. 1262 00:51:56,820 --> 00:51:57,610 Kio pri ĉi tie? 1263 00:51:57,610 --> 00:51:59,980 Se cxi tiu minuskle tiel? 1264 00:51:59,980 --> 00:52:02,260 Ĝi devus esti, sed tio estas koincido. 1265 00:52:02,260 --> 00:52:05,070 Ke% f havas nenion komunan kun la variablo. 1266 00:52:05,070 --> 00:52:07,980 Do nur esti super klara tie, lasu min antaŭeniri kaj 1267 00:52:07,980 --> 00:52:10,710 renomi ĉi, mallonge, "temperaturo". Lasu min renomi 1268 00:52:10,710 --> 00:52:15,050 tiu "temperaturo". Ne lasu min renomi ĉi. 1269 00:52:15,050 --> 00:52:18,180 Ĉar, denove,% f sume signifas, "glitpunktaj valoro." 1270 00:52:18,180 --> 00:52:19,950 Havas nenion por fari kun mia variablo. 1271 00:52:19,950 --> 00:52:23,080 Sed "temperaturo" tra la tuta loko estas nur iom wordy, 1272 00:52:23,080 --> 00:52:25,370 do mi tuj reiri al mia minuskla "f" s. 1273 00:52:25,370 --> 00:52:27,890 >> Nun, lasu min iri antaŭen malsupren al mia fenestro tie. 1274 00:52:27,890 --> 00:52:29,190 Faru f2c - 1275 00:52:29,190 --> 00:52:31,200 kio estis, denove, la arbitra nomo mi 1276 00:52:31,200 --> 00:52:32,590 donis al ĉi tiu dosiero. 1277 00:52:32,590 --> 00:52:33,690 Ŝajnas esti kompilita. 1278 00:52:33,690 --> 00:52:35,080 Mi kuros f2c. 1279 00:52:35,080 --> 00:52:35,780 Eniri. 1280 00:52:35,780 --> 00:52:37,786 Temperaturo en Fahrenheit - ni faru facila unu. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, korekti. 1283 00:52:40,910 --> 00:52:45,910 Sed, se mi nun faras 212 por bolado - 1284 00:52:45,910 --> 00:52:46,630 malbenita. 1285 00:52:46,630 --> 00:52:47,030 Bone. 1286 00:52:47,030 --> 00:52:50,780 Do, certe ne estas prava, se via TF provas 1287 00:52:50,780 --> 00:52:51,800 almenaŭ du valoroj. 1288 00:52:51,800 --> 00:52:53,340 Do kio estas la problemo ĉi tie? 1289 00:52:53,340 --> 00:52:55,970 Nu, vi jam metis fingron sur kion la demando estas. 1290 00:52:55,970 --> 00:52:57,600 Sed kial estas ke la kazo? 1291 00:52:57,600 --> 00:53:00,630 Ĝis ĉi tie, kiam mi faras la math de 5 dividite per 9. 1292 00:53:00,630 --> 00:53:02,190 Do koncepte, jen perfekte ĝustaj. 1293 00:53:02,190 --> 00:53:03,690 Plene kohera kun la formulo. 1294 00:53:03,690 --> 00:53:05,940 Sed komputiloj nur fari precize kion vi 1295 00:53:05,940 --> 00:53:06,760 diru al ili fari. 1296 00:53:06,760 --> 00:53:08,940 Kaj kion ni efektive diras la komputilo jen 1297 00:53:08,940 --> 00:53:12,320 dividu la entjera 5 por la entjera 9 1298 00:53:12,320 --> 00:53:13,670 kaj donu al mi la rezulton. 1299 00:53:13,670 --> 00:53:16,230 La problemo estas, tamen, kiam vi divido uzante datumoj 1300 00:53:16,230 --> 00:53:20,220 tipoj, la eligo estas la sama datumtipo kiel la enigoj. 1301 00:53:20,220 --> 00:53:23,670 Kaj do se la du eniroj estas ambaŭ ints, la eligo estas tuj 1302 00:53:23,670 --> 00:53:25,110 esti int. 1303 00:53:25,110 --> 00:53:28,770 Kaj tial 5 dividitaj de 9 estas punkto ion. 1304 00:53:28,770 --> 00:53:32,320 Sed kio estas la plej proksima entjero noti ion? 1305 00:53:32,320 --> 00:53:33,630 Do, ĝi estas vere 0. 1306 00:53:33,630 --> 00:53:36,620 Do kiel ni diskutis lunde, ĉio post la dekuma 1307 00:53:36,620 --> 00:53:37,940 punkto gets detranĉita. 1308 00:53:37,940 --> 00:53:39,495 Simple gets forĵetis. 1309 00:53:39,495 --> 00:53:42,760 Do tiu estas kompleta eraro, ĉar mi povus tiel simple 1310 00:53:42,760 --> 00:53:44,700 multipliki ĉio per 0 tie. 1311 00:53:44,700 --> 00:53:46,550 >> Nun, mi povas ripari tion en kelkaj manieroj. 1312 00:53:46,550 --> 00:53:48,080 Mi povus fari tion. 1313 00:53:48,080 --> 00:53:50,490 5.0 dividita de 9,0. 1314 00:53:50,490 --> 00:53:52,110 Teknike, mi eĉ ne bezonas fari tion. 1315 00:53:52,110 --> 00:53:55,780 Ĝi faras sufiĉas por simple unu el la nombroj a float - 1316 00:53:55,780 --> 00:53:58,290 aŭ duobla - metante la dekuma punkto ĉi tie. 1317 00:53:58,290 --> 00:54:01,740 Ĉar kio okazas nun estas kiam vi dividas entjeron per 1318 00:54:01,740 --> 00:54:04,670 kaleŝego, aŭ duobla, la komputilo tuj rimarki 1319 00:54:04,670 --> 00:54:06,830 oh, unu el tiuj estas pli preciza. 1320 00:54:06,830 --> 00:54:09,420 Lasu min erari sur la flanko de doni al vi pli precize ol 1321 00:54:09,420 --> 00:54:10,310 vi intencis. 1322 00:54:10,310 --> 00:54:12,700 Do ĝi konverti la rezulton - 1323 00:54:12,700 --> 00:54:16,240 ĝi revenos la rezulton kiel glitpunktaj valoro ankaŭ. 1324 00:54:16,240 --> 00:54:17,330 Por ke ĝi funkcius. 1325 00:54:17,330 --> 00:54:18,060 Ĉi tio funkcios. 1326 00:54:18,060 --> 00:54:20,010 Kaj estas unu alia mekanismo, ke ni vidos en 1327 00:54:20,010 --> 00:54:21,390 pli detale proksima semajno. 1328 00:54:21,390 --> 00:54:24,690 Vi povas fakte, kiel la programisto, diru al la komputilo 1329 00:54:24,690 --> 00:54:27,930 por fakte trakti unu datumtipo kiel 1330 00:54:27,930 --> 00:54:29,260 kvazaŭ ĝi estus alia. 1331 00:54:29,260 --> 00:54:30,990 >> Do mi povis efektive fari ĉi tion. 1332 00:54:30,990 --> 00:54:35,280 En krampoj, mi povas diri ion kiel (float), malfermita 1333 00:54:35,280 --> 00:54:36,350 paren, proksime paren. 1334 00:54:36,350 --> 00:54:39,050 Kaj jen estas tio, kio nomas "casting." Denove, pli 1335 00:54:39,050 --> 00:54:39,940 en ĉi tiu proksima semajno. 1336 00:54:39,940 --> 00:54:42,280 Sed tio estas ĝuste la programita maniero de diri 1337 00:54:42,280 --> 00:54:45,910 la komputilo, jes mi scias 9 estas entjero aŭ longa. 1338 00:54:45,910 --> 00:54:47,700 Mi scias ĝi ne estas glitpunktaj valoro. 1339 00:54:47,700 --> 00:54:49,420 Sed trakti ĝin kiel tia ĉiuokaze. 1340 00:54:49,420 --> 00:54:52,000 Do por jxeti datumtipo signifas igi 1341 00:54:52,000 --> 00:54:53,310 de unu al la alia. 1342 00:54:53,310 --> 00:54:55,790 Sincere, ĉi tiu estas nur iom malbela, do mi proponas ke ni iru 1343 00:54:55,790 --> 00:54:58,830 dorso al la originala sugesto de nur konverti 1344 00:54:58,830 --> 00:55:00,770 tion al glitpunktaj valoroj permane. 1345 00:55:00,770 --> 00:55:02,890 Ĉar nun estas nur super certe kio okazas, kaj 1346 00:55:02,890 --> 00:55:04,280 ĝi ne estas ĉio, kion distri. 1347 00:55:04,280 --> 00:55:06,710 >> Do ni nun revenas al mia fina fenestro. 1348 00:55:06,710 --> 00:55:07,990 Faru f2c. 1349 00:55:07,990 --> 00:55:09,430 Lasu min kaj kuras ĉi. 1350 00:55:09,430 --> 00:55:12,340 Kaj, kiel flanken, vi enuiĝos tajpi tiujn komandojn 1351 00:55:12,340 --> 00:55:14,910 denove kaj denove, rimarkas ke komputiloj, kiel Linukso tie, 1352 00:55:14,910 --> 00:55:16,010 inklinas esti tre saĝa. 1353 00:55:16,010 --> 00:55:18,890 Kaj se mi batis Ĝis, ni povas iri tra mia tuta historio de 1354 00:55:18,890 --> 00:55:20,380 ordonojn, supren kaj malsupren. 1355 00:55:20,380 --> 00:55:23,840 Do en ĉi tiu kazo tie, mi povas nur iri Ĝis kuri fari f2c. 1356 00:55:23,840 --> 00:55:25,830 Mi estante kriis al, ĉar mi ĵus faris tion duan antaŭe. 1357 00:55:25,830 --> 00:55:27,030 Estas jam ĝis nun. 1358 00:55:27,030 --> 00:55:30,720 Do nun mi povas kuri f2c denove. 1359 00:55:30,720 --> 00:55:33,260 Ni provu 32 Fahrenheit. 1360 00:55:33,260 --> 00:55:36,720 Nun ni provu 212 Fahrenheit. 1361 00:55:36,720 --> 00:55:37,250 >> Phew. 1362 00:55:37,250 --> 00:55:38,250 Ŝajnas funkcii. 1363 00:55:38,250 --> 00:55:41,760 Nun, ĉi tiu estas bona, sed sentas iom arbitra, ke 1364 00:55:41,760 --> 00:55:44,890 Mi montrante ses numeroj post la dekuma punktoj. 1365 00:55:44,890 --> 00:55:45,070 Ĝuste? 1366 00:55:45,070 --> 00:55:47,830 Se vi estas la vetero persono en TV, vi estas afabla de doofus 1367 00:55:47,830 --> 00:55:49,150 se vi legas la temperaturo al 1368 00:55:49,150 --> 00:55:50,070 ĉi tiu grado de precizeco. 1369 00:55:50,070 --> 00:55:51,270 Do ni simpligi ĉi. 1370 00:55:51,270 --> 00:55:53,880 Do ni vere iru tien, al mia printf. 1371 00:55:53,880 --> 00:55:55,490 Kaj jes, mi volas flosi. 1372 00:55:55,490 --> 00:55:57,570 Sed mi volas nun specifi la precizeco. 1373 00:55:57,570 --> 00:55:59,070 Kaj mi tuj estos iom konciza. 1374 00:55:59,070 --> 00:56:03,090 Mi intencis diri, donu al mi unu punkto post la dekuma loko. 1375 00:56:03,090 --> 00:56:07,590 Do anstataŭ diri% f, mi intencis diri% .1 f. 1376 00:56:07,590 --> 00:56:09,760 Kaj jen ĝuste signifas doni al mi unu pozicio 1377 00:56:09,760 --> 00:56:11,410 post la dekuma punkto. 1378 00:56:11,410 --> 00:56:11,700 Bone. 1379 00:56:11,700 --> 00:56:12,570 Ni provu ĉi denove. 1380 00:56:12,570 --> 00:56:15,590 Lasu min re-ruli ĝin post kompili. 1381 00:56:15,590 --> 00:56:18,160 Kaj nun mi tajpas en 32, kaj mi reiros al 1382 00:56:18,160 --> 00:56:19,310 pli konciza valoro. 1383 00:56:19,310 --> 00:56:22,480 Kaj mi povas tajpi en, nun, 212, kaj reiros pli konciza 1384 00:56:22,480 --> 00:56:23,260 valoro ankaŭ. 1385 00:56:23,260 --> 00:56:25,190 Kaj estas aliaj aferoj, kiujn vi povas fari kun printf. 1386 00:56:25,190 --> 00:56:27,950 Vi povas fakte specifi kiom larĝa la nombro devus esti. 1387 00:56:27,950 --> 00:56:30,900 Se vi volas havi Plenigado sur ĝi, do vi povas dekstre-align aŭ 1388 00:56:30,900 --> 00:56:32,360 maldekstra-align ĉiuj viaj nombroj aŭ 1389 00:56:32,360 --> 00:56:33,400 provi centro aĵoj. 1390 00:56:33,400 --> 00:56:35,340 Do realigi estas iom lertaĵoj vi povas fari tie. 1391 00:56:35,340 --> 00:56:38,420 Sed ili nur boli malsupren al formato kodoj, 1392 00:56:38,420 --> 00:56:39,600 kiel ni havas tie. 1393 00:56:39,600 --> 00:56:41,090 >> Do en terminoj de ĉi tiu temo de prioritaton. 1394 00:56:41,090 --> 00:56:43,820 Ĉi tiu estas tre enuiga tablo iri tra metode. 1395 00:56:43,820 --> 00:56:46,780 Sed rimarkas ke la aŭtoroj de C venis supren kun la 1396 00:56:46,780 --> 00:56:50,190 reguloj kiuj specifas kiun operatoroj havas pli alta 1397 00:56:50,190 --> 00:56:53,680 prioritaton, pli deviga forto, ol aliaj. 1398 00:56:53,680 --> 00:56:55,890 Do dum en grado lernejo, ni ĝenerale sciis ke estis 1399 00:56:55,890 --> 00:56:58,930 multipliko kaj divido, tiam adicio kaj subtraho, 1400 00:56:58,930 --> 00:56:59,950 tiam iu alia materialo. 1401 00:56:59,950 --> 00:57:01,720 En mondo de programado, ekzistas multe 1402 00:57:01,720 --> 00:57:03,360 plu listo de aĵoj. 1403 00:57:03,360 --> 00:57:05,150 Kaj ĉi tio ne estas io valoras parkeri nun. 1404 00:57:05,150 --> 00:57:07,310 Vi get ambientadas al ĝi post nelonge. 1405 00:57:07,310 --> 00:57:10,690 Sed ĝuste kiel en grado lernejo, parantezoj ĝenerale solvi 1406 00:57:10,690 --> 00:57:12,990 la temoj de prioritaton, farante super klara al la 1407 00:57:12,990 --> 00:57:15,620 komputilo kaj homa egale kion celas. 1408 00:57:15,620 --> 00:57:17,770 Do konsideru ĉi nur iom cheat folio tie. 1409 00:57:17,770 --> 00:57:21,690 Sed plimulto de tiuj detaloj ni ne atingos por iu tempo. 1410 00:57:21,690 --> 00:57:21,900 >> Bone. 1411 00:57:21,900 --> 00:57:24,120 Nun, ni konstruos kaj movi sin de tiuj stultaj iom 1412 00:57:24,120 --> 00:57:25,460 matematika ekzemploj. 1413 00:57:25,460 --> 00:57:27,500 Ankoraŭ uzas la saman fundamentojn, sed komenci 1414 00:57:27,500 --> 00:57:29,960 esprimi sin iom pli kiel Scratch. 1415 00:57:29,960 --> 00:57:31,660 Do en Scratch, ni havis tiujn Bulea esprimoj. 1416 00:57:31,660 --> 00:57:34,890 Kaj en la angla, Bulea esprimo estas kio? 1417 00:57:34,890 --> 00:57:35,580 Vera aŭ malvera. 1418 00:57:35,580 --> 00:57:38,300 Estas iu kiu taksas al vera aŭ malvera. 1419 00:57:38,300 --> 00:57:39,060 1 aŭ 0. 1420 00:57:39,060 --> 00:57:39,870 Sur aŭ for. 1421 00:57:39,870 --> 00:57:41,000 Kion ajn vi volas nomi ĝin. 1422 00:57:41,000 --> 00:57:43,210 Nun en Scratch, la puzlo pecoj aspektis kiel ĉi tio. 1423 00:57:43,210 --> 00:57:45,850 Kaj tio estas la ĉifro, sur la fundo tie, de tri 1424 00:57:45,850 --> 00:57:47,980 enigmo pecojn. 1425 00:57:47,980 --> 00:57:48,980 Unu konjunkcio - 1426 00:57:48,980 --> 00:57:51,710 iu kiu havas malplenan kaj celo. 1427 00:57:51,710 --> 00:57:53,970 Kaj tiam du Buleaj esprimoj ene de ĝi. 1428 00:57:53,970 --> 00:57:56,460 Do vi povas nesto Bulea esprimoj por akiri pli 1429 00:57:56,460 --> 00:57:59,360 komplika Bulea esprimoj. 1430 00:57:59,360 --> 00:58:03,930 Ekzemple, se ĝi estas sabato, kaj tio estas agrabla 1431 00:58:03,930 --> 00:58:06,180 vetero, tiam iru eksteren. 1432 00:58:06,180 --> 00:58:07,500 Aŭ iu arbitra kiel tiu. 1433 00:58:07,500 --> 00:58:10,090 Do vi povas aliĝi Bulea esprimoj veni supren kun 1434 00:58:10,090 --> 00:58:12,780 granda vero valoro, kies respondo estas bazita 1435 00:58:12,780 --> 00:58:13,800 en la pli malgrandaj. 1436 00:58:13,800 --> 00:58:15,770 >> Nun, en C, dankeme, ĉi surĵeto estas 1437 00:58:15,770 --> 00:58:16,720 vere bela simpla. 1438 00:58:16,720 --> 00:58:18,820 Parentezoj helpi fari tion certe tie. 1439 00:58:18,820 --> 00:58:21,700 && Estas kion signifas "kaj." Do jen kiel 1440 00:58:21,700 --> 00:58:24,700 nin tuj konverti tiujn blokojn de Scratch al C. 1441 00:58:24,700 --> 00:58:27,590 Kaj sur la kondiĉoj ni vidis en Scratch, maldekstre 1442 00:58:27,590 --> 00:58:31,150 flanko, mi povas pilo ili simile en C. Se x estas malpli 1443 00:58:31,150 --> 00:58:32,970 ol y, tiam faru tion. 1444 00:58:32,970 --> 00:58:35,100 Else if x estas pli granda ol y, tiam faru tion. 1445 00:58:35,100 --> 00:58:38,030 Else logike devas esti egalaj, do diri 1446 00:58:38,030 --> 00:58:39,140 ke ili estas egalaj. 1447 00:58:39,140 --> 00:58:41,210 Do ni povas nun komenci konstrui tiujn aĵojn. 1448 00:58:41,210 --> 00:58:42,170 >> Do ni faru ekzemplon. 1449 00:58:42,170 --> 00:58:45,550 Lasu min malfermi dosieron kiu estas sur la kurson de afiŝinto ke 1450 00:58:45,550 --> 00:58:47,270 Mi skribis anticipe. 1451 00:58:47,270 --> 00:58:50,540 Tio estas nomata nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 Kaj ni vidos kial en nur momento. 1453 00:58:52,270 --> 00:58:54,770 Do en tiu dosiero - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 unua rimarkas ke ekzistas tuta amaso de 1455 00:58:56,830 --> 00:58:58,460 komentoj ĉe la supro. 1456 00:58:58,460 --> 00:59:00,110 Tio simple klarigi la nomon de la dosiero, kio 1457 00:59:00,110 --> 00:59:01,260 faras, ktp. 1458 00:59:01,260 --> 00:59:04,390 Kaj ŝajne pruvas la uzo de Bulea KAJ-ing - 1459 00:59:04,390 --> 00:59:06,220 conjoining du esprimoj. 1460 00:59:06,220 --> 00:59:07,670 >> Do ni vidas, ke tiu programo funkcias. 1461 00:59:07,670 --> 00:59:10,840 Mi inkluzivas miaj du dosierojn, cs50.h kaj stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Se mi rulumu malsupren, nun, al la programo, ĝi estas iom pli longa 1463 00:59:13,180 --> 00:59:15,730 ol ni skribis antaŭe, sed bela legebla. 1464 00:59:15,730 --> 00:59:18,360 Do mi unue presi al la uzanto, sur linio 18, 1465 00:59:18,360 --> 00:59:20,460 "Donu al mi entjero inter 1 kaj 10." Do 1466 00:59:20,460 --> 00:59:21,530 ke pravas tie. 1467 00:59:21,530 --> 00:59:23,410 Nun mi ricevas la entjera. 1468 00:59:23,410 --> 00:59:25,380 Sed rimarkas ke GetInt - bela simpla. 1469 00:59:25,380 --> 00:59:26,510 Ĝi simple tuj ricevas int. 1470 00:59:26,510 --> 00:59:28,830 Ĝi okazas por certigi ke ĝi ricevas int kaj ne 1471 00:59:28,830 --> 00:59:30,060 ŝnuro aŭ kaleŝego. 1472 00:59:30,060 --> 00:59:32,390 Sed gxi ne faros ian limon kontrolanta. 1473 00:59:32,390 --> 00:59:34,750 Ĝi ne iras por filtri la numeroj esti inter 1474 00:59:34,750 --> 00:59:35,630 iuj gamo. 1475 00:59:35,630 --> 00:59:37,730 Do ni devas apliki ke ni mem. 1476 00:59:37,730 --> 00:59:40,680 Do ĝuste kiel en Scratch, kie mi povus fari konjunkcio de 1477 00:59:40,680 --> 00:59:43,560 du esprimoj, mi povas fari tion en C kiel sekvas. 1478 00:59:43,560 --> 00:59:48,660 Se n estas pli granda ol aŭ egala al 1, kaj n estas malpli ol kaj 1479 00:59:48,660 --> 00:59:52,220 aŭ egala al 3, mi iras al tre arbitre dekreti ke 1480 00:59:52,220 --> 00:59:53,830 numeron por esti malgranda nombro. 1481 00:59:53,830 --> 00:59:56,730 Ĝuste pro komunikaĵo. 1482 00:59:56,730 --> 01:00:00,210 Else if n estas inter 4 kaj 6, print "Vi prenis duona 1483 01:00:00,210 --> 01:00:03,440 nombro. "Else se n estas inter 7 kaj 10-print" vi plukis 1484 01:00:03,440 --> 01:00:06,390 granda nombro. "Else presi" Vi elektu nevalidan numeron. " 1485 01:00:06,390 --> 01:00:07,900 Ĉar logike, kiu sekvas se ni 1486 01:00:07,900 --> 01:00:09,230 elĉerpita nia atingo. 1487 01:00:09,230 --> 01:00:12,400 >> Do realigi ĉi tio ne estas sufiĉe kiel ni skribas pli granda ol aŭ 1488 01:00:12,400 --> 01:00:15,000 egala al en math klaso. 1489 01:00:15,000 --> 01:00:15,160 Ĝuste? 1490 01:00:15,160 --> 01:00:17,430 Vi kutime desegni ĝin kiel tiun, kun la linio sub ĝi. 1491 01:00:17,430 --> 01:00:19,250 Sed ne ekzistas tia klavo sur mia klavaro. 1492 01:00:19,250 --> 01:00:22,390 Do la simbolo en C por esprimi pli granda ol aŭ 1493 01:00:22,390 --> 01:00:25,770 egala al estas du karakterojn, kaj la simbolo por malpli ol 1494 01:00:25,770 --> 01:00:29,100 aŭ egala al estas du karakterojn tiel. 1495 01:00:29,100 --> 01:00:29,330 Bone. 1496 01:00:29,330 --> 01:00:31,910 Do se mi kuros ĉi programo, oni povas eble diveni kio estas 1497 01:00:31,910 --> 01:00:32,650 tuj faros. 1498 01:00:32,650 --> 01:00:36,180 Se mi iras antaŭen kaj fari nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 Kaj poste ekzekuti nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Donu al mi numeron inter 1 kaj 10. 1501 01:00:39,530 --> 01:00:40,870 Mi ĝin donacos 11. 1502 01:00:40,870 --> 01:00:42,280 Mi plukis nevalidan numeron. 1503 01:00:42,280 --> 01:00:44,090 Lasu min provi la numero 3. 1504 01:00:44,090 --> 01:00:45,990 Mi prenis malgrandan nombron. 1505 01:00:45,990 --> 01:00:48,360 Do sufiĉe simpla tie. 1506 01:00:48,360 --> 01:00:52,230 >> Kio se mi volas ŝanĝi la konduton de tiu programo kaj 1507 01:00:52,230 --> 01:00:54,250 fari ion iom malsama loko? 1508 01:00:54,250 --> 01:00:57,620 Lasu min kaj diri tion. 1509 01:00:57,620 --> 01:00:59,480 Lasu min forigi tiun tutan. 1510 01:00:59,480 --> 01:01:03,780 Kaj mi diru, se (n == 42). 1511 01:01:03,780 --> 01:01:08,730 Kaj poste mi iros por antaŭeniri kaj diru print "Vi elektis la 1512 01:01:08,730 --> 01:01:16,340 dekstra respondon. "Else nin tuj iru antaŭen kaj diru: 1513 01:01:16,340 --> 01:01:18,460 printf ("Vi elektis la 1514 01:01:18,460 --> 01:01:21,170 malĝusta respondo. "); Okay. 1515 01:01:21,170 --> 01:01:22,040 Nur ĉar. 1516 01:01:22,040 --> 01:01:23,890 >> Nun, kelkaj punktoj ni povas fari tie. 1517 01:01:23,890 --> 01:01:26,570 Unu, mi ne tajpi la simbolon, ke vi pensas estas la 1518 01:01:26,570 --> 01:01:27,390 plej racia. 1519 01:01:27,390 --> 01:01:30,110 Kiam mi volas kontroli egaleco, rezultas vi ne uzas la 1520 01:01:30,110 --> 01:01:30,910 egala signo. 1521 01:01:30,910 --> 01:01:34,000 Vi anstataŭe uzi la egalaj egalsigno. 1522 01:01:34,000 --> 01:01:36,440 Kaj kial povus esti ke, ĝuste intuicie? 1523 01:01:36,440 --> 01:01:37,030 Yeah. 1524 01:01:37,030 --> 01:01:39,330 Spektantaro: [inaudible] 1525 01:01:39,330 --> 01:01:39,615 DAVID J. Malan: Correct. 1526 01:01:39,615 --> 01:01:41,630 La egala signo estas jam uzita por farita. 1527 01:01:41,630 --> 01:01:43,020 Iu ne vere kredas ke tiu tra. 1528 01:01:43,020 --> 01:01:45,820 Kaj tial nun, kiam temas pri egaleco testado, ni devas 1529 01:01:45,820 --> 01:01:48,850 esti pli eksplicitaj, kaj diru egalas egalas. 1530 01:01:48,850 --> 01:01:52,110 Tre komuna eraro estas fari tion. 1531 01:01:52,110 --> 01:01:54,800 Kaj, se en oficejo horoj aŭ iam venontsemajne aŭ en la 1532 01:01:54,800 --> 01:01:58,340 venontaj du semajnoj vi faras ion kiel ĉi tiu kaj tiam 1533 01:01:58,340 --> 01:02:00,920 barakti kun ĝi dum 10, 20 minutoj por provi elkompreni 1534 01:02:00,920 --> 01:02:03,330 kion la malbenita cimo estas, kompreni ke vi estas unu el tiuj 1535 01:02:03,330 --> 01:02:04,470 homoj kiuj faris ĉi tiun eraron. 1536 01:02:04,470 --> 01:02:06,030 Do, Super facile fari. 1537 01:02:06,030 --> 01:02:08,240 Sed la celo nun estas malproksimigi ĉi eraro. 1538 01:02:08,240 --> 01:02:11,840 Tio povus taksi, ĉar kio estas ĉi vere diras? 1539 01:02:11,840 --> 01:02:15,010 Se n ricevas 42. 1540 01:02:15,010 --> 01:02:18,250 Do la verbo oni uzas, parole, por esprimi la 1541 01:02:18,250 --> 01:02:21,800 nocio de asigno estas "ricevas". Do se n ricevas 42. 1542 01:02:21,800 --> 01:02:24,060 Do tio signifas asigni 42 al n. 1543 01:02:24,060 --> 01:02:26,250 Nun mi havas Bulea esprimo en krampoj, 1544 01:02:26,250 --> 01:02:30,230 ene de ĉi tiu kondiĉo, la valoro de kiu estas 42. 1545 01:02:30,230 --> 01:02:30,390 Ĝuste? 1546 01:02:30,390 --> 01:02:32,690 Ĉar se vi taksas ĝin de interne eksteren, la tuta 1547 01:02:32,690 --> 01:02:34,100 respondo, nun, estas 42. 1548 01:02:34,100 --> 01:02:37,360 >> Do, se mi demandis al vi la demandon, "se (42)," kio estas 1549 01:02:37,360 --> 01:02:38,410 kiu vere diras? 1550 01:02:38,410 --> 01:02:40,990 Nu, Bulea esprimoj povas nur esti vera aŭ malvera. 1551 01:02:40,990 --> 01:02:42,010 1 aŭ 0. 1552 01:02:42,010 --> 01:02:43,010 Sur aŭ for. 1553 01:02:43,010 --> 01:02:45,240 Do ni ŝajnas havi angulon kazo tie, per kiu ĉiuj de 1554 01:02:45,240 --> 01:02:50,060 subita, mi diris "se (42)". Tio ne estas Bulea valoro. 1555 01:02:50,060 --> 01:02:54,500 Do kion fari komputiloj, tamen, estas esence egalas 1556 01:02:54,500 --> 01:02:58,620 io, kio estas ne 0 interpretas esti vera. 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 Ili estas ĉiuj funkcie ekvivalentaj. 1560 01:03:01,510 --> 01:03:05,070 Nur la valoron 0, aŭ la ŝlosilvorto falsa, kiel ni instruos vin 1561 01:03:05,070 --> 01:03:07,860 eventuale vidas, estas vere falsaj. 1562 01:03:07,860 --> 01:03:15,040 Do "se (42)" estus vere esti vera, ĉar ĝi estas ne-nulo. 1563 01:03:15,040 --> 01:03:18,620 Do por esti pli preciza cxi tie, Bulea valoro estas vere ne tiel 1564 01:03:18,620 --> 01:03:20,680 multe vera aŭ falsa, sed por tiu ĉi 1565 01:03:20,680 --> 01:03:24,650 kazo, se estas 0 aŭ ne-nulo. 1566 01:03:24,650 --> 01:03:26,330 Do falsa aŭ ne falsaj. 1567 01:03:26,330 --> 01:03:28,640 Kaj kiu nin permesas ĉirkaŭpreni la tutan pli 1568 01:03:28,640 --> 01:03:30,980 eblojn en la parenthetical esprimo. 1569 01:03:30,980 --> 01:03:33,840 Do ni bezonas, iam tiel zorge, tion diras - 1570 01:03:33,840 --> 01:03:35,620 se (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Simple ĉar ni bezonas specifi provo de egaleco, 1572 01:03:39,100 --> 01:03:40,930 ne estas asigno de valoro. 1573 01:03:40,930 --> 01:03:42,830 >> Kion alian valoras notanta tie? 1574 01:03:42,830 --> 01:03:46,030 Tiuj frizita krampoj estas reale ne necesa. 1575 01:03:46,030 --> 01:03:48,650 Mi estis farante ilin nur por esti nit-picky tie. 1576 01:03:48,650 --> 01:03:51,350 Sed kiam vi havas kondiĉo kiu nur havas unu linion de 1577 01:03:51,350 --> 01:03:55,100 kodo, kiel oportuneco, programistoj ne bezonas uzi 1578 01:03:55,100 --> 01:03:56,030 la frizita krampoj. 1579 01:03:56,030 --> 01:03:59,370 Sufiĉas nur indent, por estetikaj kialoj, kaj 1580 01:03:59,370 --> 01:04:01,050 tiam skribi vian linio de kodo. 1581 01:04:01,050 --> 01:04:04,160 Nur kiam vi volas skribi du linioj de kodo - por 1582 01:04:04,160 --> 01:04:08,230 Ekzemple, alie printf ("Bye!"). Se vi volas fari 1583 01:04:08,230 --> 01:04:09,540 ke, tiu estas rompita. 1584 01:04:09,540 --> 01:04:11,700 Vi povas indent ĉiuj vi volas, sed la fakto, ke vi havas 1585 01:04:11,700 --> 01:04:14,600 tajpis du linioj de kodo sen uzi frizita krampoj 1586 01:04:14,600 --> 01:04:16,860 signifas ke ĉi tiu programo ne funkcias korekte aŭ forto 1587 01:04:16,860 --> 01:04:18,530 eĉ kompili ĝuste. 1588 01:04:18,530 --> 01:04:21,040 Do nuntempe, esti honesta, mi kredas ke la plej bona kutimo estas nur 1589 01:04:21,040 --> 01:04:24,460 uzi la frizita krampoj, kaj vi trovos, ke ili faras 1590 01:04:24,460 --> 01:04:25,750 super klara kio okazas. 1591 01:04:25,750 --> 01:04:29,410 >> Ankaŭ, kiel flanken - precipe se vi estas inter tiuj kiuj uzas 1592 01:04:29,410 --> 01:04:31,700 la rekomendita libroj aŭ rimedoj linio - 1593 01:04:31,700 --> 01:04:33,480 rimarkas ke ekzistas tiu nocio de stilo en 1594 01:04:33,480 --> 01:04:34,130 programado. 1595 01:04:34,130 --> 01:04:37,280 Kaj iuj homoj efektive preferas meti la frizita streĉa 1596 01:04:37,280 --> 01:04:38,720 super tie sur linio. 1597 01:04:38,720 --> 01:04:41,520 Kelkaj homoj preferas fari ridindaj aferoj, 1598 01:04:41,520 --> 01:04:43,830 kiel meti ilin tie. 1599 01:04:43,830 --> 01:04:45,140 Ne malĝusta respondo kiam temas pri 1600 01:04:45,140 --> 01:04:46,710 stilo, sed ĉi tiu estas erara. 1601 01:04:46,710 --> 01:04:47,700 Sed kelkaj homoj faras. 1602 01:04:47,700 --> 01:04:49,160 [Ridado] 1603 01:04:49,160 --> 01:04:51,760 DAVID J. Malan: Do mi mencias ĉi nun, simple ĉar kiel 1604 01:04:51,760 --> 01:04:54,400 vi legis sur aĵoj en libroj aŭ Interreto, vi ricevos 1605 01:04:54,400 --> 01:04:55,990 malsamaj mesaĝojn el diversaj instruistoj kaj 1606 01:04:55,990 --> 01:04:56,730 malsamaj aŭtoroj. 1607 01:04:56,730 --> 01:04:58,640 Kaj ĝuste rimarkas ke, funkcie, ili estas 1608 01:04:58,640 --> 01:05:00,740 ĝenerale ekvivalentaj, sed esti konsekvenca. 1609 01:05:00,740 --> 01:05:02,850 Do en ĉi tiu kazo, ni normigi la frizita 1610 01:05:02,850 --> 01:05:04,650 krampoj vicatendis ĝis tie maldekstre. 1611 01:05:04,650 --> 01:05:04,910 >> Bone. 1612 01:05:04,910 --> 01:05:07,040 Do ni iru antaŭen kaj nun kuras ĉi, kaj vidu kio okazas 1613 01:05:07,040 --> 01:05:07,780 kun tiu programo. 1614 01:05:07,780 --> 01:05:09,970 Faru nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Tiam kuris nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Donu al mi entjero inter 0 kaj - tiel ke ne estas adekvataj 1617 01:05:13,900 --> 01:05:16,480 plu, sed mi simple tuj arbitre diras 42. 1618 01:05:16,480 --> 01:05:17,850 Kaj mi prenis la rajton respondo. 1619 01:05:17,850 --> 01:05:20,430 Nu nun, ni reale preni ĉi en alia direkto. 1620 01:05:20,430 --> 01:05:22,070 Ĝi rezultas ekzistas iu alia sintakso ni 1621 01:05:22,070 --> 01:05:23,480 povas uzi en programo. 1622 01:05:23,480 --> 01:05:27,310 Jen nova peco de sintakso ke estas funkcie la samaj, 1623 01:05:27,310 --> 01:05:30,680 sed gxuste enkondukas alian manieron esprimi nin. 1624 01:05:30,680 --> 01:05:32,830 Do ĉi tiu estas kion nomas "switch deklaron." Kaj 1625 01:05:32,830 --> 01:05:34,820 ŝaltilo deklaro operacias kiel sekvas. 1626 01:05:34,820 --> 01:05:37,580 Ĝi prenas, en krampoj, valoro, ke vi volas 1627 01:05:37,580 --> 01:05:38,860 "Switch" on. 1628 01:05:38,860 --> 01:05:41,490 Vi volas konduti malsame bazita sur ĝia valoro. 1629 01:05:41,490 --> 01:05:44,360 Do tio signifas ŝaltilo sur la valoro de n. 1630 01:05:44,360 --> 01:05:45,480 Kaj kion tio signifas? 1631 01:05:45,480 --> 01:05:50,530 Nu, se n estas 1 aŭ 2 aŭ 3, iru antaŭen kaj presi "Vi 1632 01:05:50,530 --> 01:05:52,680 prenis grandan numeron "kaj tiam rompu. 1633 01:05:52,680 --> 01:05:55,720 La kialo de la rompo estas ke la vojo C funkcias estas kiel 1634 01:05:55,720 --> 01:05:59,790 Tuj kiam ĝi trovas kazo kiu kongruas, ĝi komencas ekzekutante 1635 01:05:59,790 --> 01:06:01,610 ĉiuj kodon ĝin. 1636 01:06:01,610 --> 01:06:04,580 Do, se mi havas unu linion de kodo, kiel mi ĉi tie sur linio 27, ĝi 1637 01:06:04,580 --> 01:06:05,360 gets ekzekutita. 1638 01:06:05,360 --> 01:06:07,520 Se mi aldonas alian linion tie, ĝi prenas ekzekutita. 1639 01:06:07,520 --> 01:06:09,350 Alia linio tie, ĝi prenas ekzekutita. 1640 01:06:09,350 --> 01:06:12,460 La programo nur detenas ekzekuti kio estas sub la 1641 01:06:12,460 --> 01:06:14,680 aplikebla kazo deklaro kiam mi eksplicite 1642 01:06:14,680 --> 01:06:17,210 diri "rompi". Do malbone. 1643 01:06:17,210 --> 01:06:19,220 Ĝuste, en ĉi tiu kazo, kiel rezulto. 1644 01:06:19,220 --> 01:06:22,130 Kazo 4 aŭ 5 aŭ 6, simile, tuj 1645 01:06:22,130 --> 01:06:23,160 presi mesaĝon. 1646 01:06:23,160 --> 01:06:24,410 En ĉi tiu kazo, meza nombro. 1647 01:06:24,410 --> 01:06:25,200 Rompi. 1648 01:06:25,200 --> 01:06:28,160 Kazo 7, 8, 9, 10, ĝi tuj presi "Vi prenis grandan 1649 01:06:28,160 --> 01:06:28,950 nombro. "Break. 1650 01:06:28,950 --> 01:06:31,290 Kaj tiam tie estas laŭvorte ŝlosilvorto nomita "default" 1651 01:06:31,290 --> 01:06:34,090 jen efektive kiel la "cetera" konstrui. 1652 01:06:34,090 --> 01:06:36,010 Do nova sintakso, sed intelekte, 1653 01:06:36,010 --> 01:06:37,060 nenio nova tie. 1654 01:06:37,060 --> 01:06:38,280 Estas nur kiel la Scratch. 1655 01:06:38,280 --> 01:06:41,040 Se, alie se, alie se, ia bloko. 1656 01:06:41,040 --> 01:06:44,560 >> Do tio estas la ŝanĝita versio de tiu programo. 1657 01:06:44,560 --> 01:06:46,280 Sed rimarki ke ni faris tion kun la numeroj tie. 1658 01:06:46,280 --> 01:06:49,040 Lasu min malfermi duan version, nur por montri 1659 01:06:49,040 --> 01:06:50,670 iu iom pli konkreta. 1660 01:06:50,670 --> 01:06:52,840 Do jen ni havas kvalifikojn anstataŭe. 1661 01:06:52,840 --> 01:06:55,540 Rezultas vi povas uzi ŝaltiloj ne nur sur entjeroj, sed sur 1662 01:06:55,540 --> 01:06:56,340 karakteroj. 1663 01:06:56,340 --> 01:06:58,930 Ne en ĉiuj tipoj de datumoj, sed almenaŭ en gravuloj. 1664 01:06:58,930 --> 01:07:02,670 Do jen, ni povus fari ion kiel se la valoro de C kiu 1665 01:07:02,670 --> 01:07:06,230 la uzanto tajpas en, en linio 19, uzante la GetChar funkcio, 1666 01:07:06,230 --> 01:07:09,410 estas ĉefurbo A aŭ minuskla a, ni interpretas ĝin kiel grado, 1667 01:07:09,410 --> 01:07:11,340 kaj diru ili rimarkis bonega grado. 1668 01:07:11,340 --> 01:07:14,690 Kaj malsupren laux la ŝaltilo deklaro, ni havas aliajn 1669 01:07:14,690 --> 01:07:17,950 kazoj por "B" s kaj "C" s, ktp. 1670 01:07:17,950 --> 01:07:19,780 Sed ni nun ĉirkaŭprenis el unu alia afero. 1671 01:07:19,780 --> 01:07:21,130 Kaj ankaux tiaj promenadoj tra 1672 01:07:21,130 --> 01:07:22,200 kelkaj el tiuj ekzemploj. 1673 01:07:22,200 --> 01:07:26,990 Sed estas vere tiel ke ni povu apliki ilin, nun - 1674 01:07:26,990 --> 01:07:28,880 aŭ vere, nur traduki ilin nun - 1675 01:07:28,880 --> 01:07:32,220 al C. 1676 01:07:32,220 --> 01:07:33,310 >> Do mi faru tion. 1677 01:07:33,310 --> 01:07:34,830 Mi tuj malfermi novan dosieron. 1678 01:07:34,830 --> 01:07:39,430 Kaj mi tuj faros inkluzivas . 1679 01:07:39,430 --> 01:07:42,770 Kaj poste mi iros fari int main (void). 1680 01:07:42,770 --> 01:07:46,390 Lasu min savi ĉi tiun dosieron kiel loop.c. 1681 01:07:46,390 --> 01:07:48,280 Nur kiel ekzemplo. 1682 01:07:48,280 --> 01:07:49,910 Kaj mi tuj faru la sekvajn. 1683 01:07:49,910 --> 01:07:54,180 Mi volas skribi tre teda programo. 1684 01:07:54,180 --> 01:07:56,170 Do 10. 1685 01:07:56,170 --> 01:07:58,862 Ni faras tion. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 Bone. 1688 01:08:00,360 --> 01:08:02,120 Tuj kiam oni komencas fari tion en programado, vi estas 1689 01:08:02,120 --> 01:08:03,490 probable faras ion malbonan. 1690 01:08:03,490 --> 01:08:04,950 Sed ni komencu tie ĉiuokaze. 1691 01:08:04,950 --> 01:08:05,430 Oops. 1692 01:08:05,430 --> 01:08:06,950 Tio estas vere malbone. 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 Nenio okazos kiam ni atingos 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 Okay. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Forigu. 1704 01:08:18,689 --> 01:08:19,029 >> Bone. 1705 01:08:19,029 --> 01:08:20,029 Do reveni 0. 1706 01:08:20,029 --> 01:08:22,010 Do tiu programo evidente faros kio tre 1707 01:08:22,010 --> 01:08:23,310 tediously diras tuj faros. 1708 01:08:23,310 --> 01:08:24,060 Ĝi tuj presi ĉiuj el tiuj 1709 01:08:24,060 --> 01:08:25,290 valoroj, de supre ĝis malsupre. 1710 01:08:25,290 --> 01:08:27,140 Do mi faru fari banton. 1711 01:08:27,140 --> 01:08:28,640 Kaj poste - whoops. 1712 01:08:28,640 --> 01:08:29,700 Faru buklo. 1713 01:08:29,700 --> 01:08:31,479 Mi estis en la malĝusta dosierujo. 1714 01:08:31,479 --> 01:08:33,300 Kaj nun mi kuros buklo. 1715 01:08:33,300 --> 01:08:34,140 Eniri. 1716 01:08:34,140 --> 01:08:34,620 Woohoo. 1717 01:08:34,620 --> 01:08:35,270 Tre bela. 1718 01:08:35,270 --> 01:08:36,279 Bela, longa programo. 1719 01:08:36,279 --> 01:08:38,109 >> Bone, sed nun ni faros ĉi pli bone. 1720 01:08:38,109 --> 01:08:40,810 Ĝuste kiel en Scratch, kiam vi komencis uzi looping 1721 01:08:40,810 --> 01:08:43,149 konstrui, anstataux simple kopii kaj bati ĉiuj 1722 01:08:43,149 --> 01:08:45,580 enigmo pecoj, lasu min enkonduki tiun aferon. 1723 01:08:45,580 --> 01:08:48,609 Do en C, estas diversaj looping konstruas, 1724 01:08:48,609 --> 01:08:50,540 unu el kiuj aspektas kiel ĉi tio. 1725 01:08:50,540 --> 01:08:55,069 Al "por" loop havas tri aĵoj, apartigita per du punktokomojn. 1726 01:08:55,069 --> 01:08:57,770 Kaj poste, ene de la korpo de la ciklo, tiel diri - la 1727 01:08:57,770 --> 01:08:59,390 stuff ene de la frizita krampoj - 1728 01:08:59,390 --> 01:09:01,010 ni povas fari ion denove kaj denove. 1729 01:09:01,010 --> 01:09:02,310 Do kion mi havas tie en la ekrano, ĉi tiu estas 1730 01:09:02,310 --> 01:09:03,300 laŭvorte nur komento. 1731 01:09:03,300 --> 01:09:05,380 La / / signifas tie venas komenton. 1732 01:09:05,380 --> 01:09:06,180 Ĉi tio ne kodon. 1733 01:09:06,180 --> 01:09:08,890 Tiu estas ĝuste la angla priskribo, por mi, la homa. 1734 01:09:08,890 --> 01:09:11,300 >> Do initializations, kondiĉoj, kaj ĝisdatigoj. 1735 01:09:11,300 --> 01:09:12,770 Nu, ni vidos kiel tio funkcias. 1736 01:09:12,770 --> 01:09:15,520 Ĉi tiu permesas al mi reverki ĉi tiu programo jene. 1737 01:09:15,520 --> 01:09:16,399 Por - 1738 01:09:16,399 --> 01:09:18,029 do jen mia loop - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 jen variablo nomata "i" - 1741 01:09:21,330 --> 01:09:23,140 gets inicializado al 10. 1742 01:09:23,140 --> 01:09:25,260 Do tie estas mia inicialización. 1743 01:09:25,260 --> 01:09:29,450 Mi volas fari ĉi buklo tiel longa kiel "i" estas pli granda ol aŭ 1744 01:09:29,450 --> 01:09:30,899 egala al 0. 1745 01:09:30,899 --> 01:09:32,880 Kaj en ĉiu ripeto de ĉi maŝo, mi volas 1746 01:09:32,880 --> 01:09:34,979 fari i -. 1747 01:09:34,979 --> 01:09:36,310 Do ni vidis + + lundon. 1748 01:09:36,310 --> 01:09:37,660 - Estas la malo. 1749 01:09:37,660 --> 01:09:39,410 Ĝi dekrementojn la valoron de 1. 1750 01:09:39,410 --> 01:09:43,319 Ene de ĉi maŝo, mi volas vere ion fari. 1751 01:09:43,319 --> 01:09:46,390 Do mi intencis diri ion kiel printf. 1752 01:09:46,390 --> 01:09:48,939 Mi ne volas diri 10 nun, ĉar ĉi evidente estas nur 1753 01:09:48,939 --> 01:09:50,000 tuj presi la saman valoron. 1754 01:09:50,000 --> 01:09:52,246 Kion mi volas presi anstataŭ, verŝajne? 1755 01:09:52,246 --> 01:09:52,590 Yeah. 1756 01:09:52,590 --> 01:09:55,270 Do "mi." Do% d, i. 1757 01:09:55,270 --> 01:09:57,340 >> Do mi iros por ŝteli unu el tiuj ideoj de antaŭaj - 1758 01:09:57,340 --> 01:09:59,640 ĉi anstataŭo por formato kodoj - 1759 01:09:59,640 --> 01:10:01,620 kaj tiam ĉi tie, ĉe la malsupro, mi revenos 0, nur 1760 01:10:01,620 --> 01:10:02,710 por bono mezuro. 1761 01:10:02,710 --> 01:10:04,740 Sed nun, mi havas pli konciza programo. 1762 01:10:04,740 --> 01:10:07,490 Estas nur malmultaj linioj, kaj ne iuj 10 aŭ 11 linioj. 1763 01:10:07,490 --> 01:10:09,440 Lasu min iri al mia prompto cxi tie. 1764 01:10:09,440 --> 01:10:10,630 Remake buklo. 1765 01:10:10,630 --> 01:10:12,140 Rerun buklo. 1766 01:10:12,140 --> 01:10:13,570 Kaj aperas esti la sama. 1767 01:10:13,570 --> 01:10:15,550 Nun, la programo ne estas pli interesa. 1768 01:10:15,550 --> 01:10:17,180 Sed nun mi povas tajpi iun kiel ĉi tio. 1769 01:10:17,180 --> 01:10:18,970 Mi povas ŝanĝi ĉi tion al 100. 1770 01:10:18,970 --> 01:10:21,400 Mi povas do recompilar mia programo. 1771 01:10:21,400 --> 01:10:23,360 Kaj tiam mi povos re-ruli mian programon. 1772 01:10:23,360 --> 01:10:26,390 Kaj nun ĝi iras super-rapida sur la hodiaŭa komputiloj. 1773 01:10:26,390 --> 01:10:27,820 Sed mi havas - 1774 01:10:27,820 --> 01:10:29,620 kaj fakte, mia scrollback buffer ne 1775 01:10:29,620 --> 01:10:30,890 eĉ iru nun. 1776 01:10:30,890 --> 01:10:31,680 Tie ni iru. 1777 01:10:31,680 --> 01:10:34,090 Do ni havas ĉiujn 100. 1778 01:10:34,090 --> 01:10:35,880 Sed estas facile fari erarojn tie ĉi. 1779 01:10:35,880 --> 01:10:37,920 Kio okazas al esti la atendata konduto, se mi 1780 01:10:37,920 --> 01:10:41,150 hazarde fari tion? 1781 01:10:41,150 --> 01:10:42,550 Do li sentas kiel senfina. 1782 01:10:42,550 --> 01:10:44,670 Do ni vidu se la komputilo kondutas. 1783 01:10:44,670 --> 01:10:47,020 >> Do lasu min antaŭeniri kaj fari banton. 1784 01:10:47,020 --> 01:10:48,355 Kaj mi kuros buklo. 1785 01:10:53,590 --> 01:10:55,210 Do ni revenu al tiu en nur momento. 1786 01:10:55,210 --> 01:10:56,720 Ni lasu kiuj kuras. 1787 01:10:56,720 --> 01:10:59,520 Ĉar kion ni kalkulu ĝis, minimume? 1788 01:10:59,520 --> 01:11:02,200 Probable almenaŭ 2 miliardoj, se ni havas ke multaj bitoj, kaj 1789 01:11:02,200 --> 01:11:03,660 ni uzas pozitivajn valorojn. 1790 01:11:03,660 --> 01:11:04,890 Do ni saltas reveni ĉi tien. 1791 01:11:04,890 --> 01:11:07,810 Krom tiuj specoj de cikloj, ni havas la tiel nomataj dum 1792 01:11:07,810 --> 01:11:09,430 maŝojn. Do, ĝuste kiel en Scratch, vi havis Forever 1793 01:11:09,430 --> 01:11:11,240 blokoj, kaj vi havis Ripetu blokoj. 1794 01:11:11,240 --> 01:11:13,270 Simile, en C, vi simple havas aliajn manierojn 1795 01:11:13,270 --> 01:11:14,260 esprimi mem. 1796 01:11:14,260 --> 01:11:17,110 Do vi havas ĉi nocio de tempo buklo kiun vi permesas 1797 01:11:17,110 --> 01:11:18,860 esprimi sin iom malsame. 1798 01:11:18,860 --> 01:11:21,490 Kaj tiam vi havas ion nomita do-dum ciklo, 1799 01:11:21,490 --> 01:11:24,200 kiu funkcias iomete malsame kiel bone. 1800 01:11:24,200 --> 01:11:25,320 Kaj ni tease tiuj aparte kun la tempo. 1801 01:11:25,320 --> 01:11:28,630 >> Sed ni rigardu ĉi lasta tie. 1802 01:11:28,630 --> 01:11:30,160 Se ni iras en - 1803 01:11:30,160 --> 01:11:31,466 ankoraŭ kurante. 1804 01:11:31,466 --> 01:11:32,770 Estas bela malfinio. 1805 01:11:32,770 --> 01:11:36,870 Do lasu min iri en pozitiva, kaj montri kiom ni povas reale 1806 01:11:36,870 --> 01:11:39,410 regi uzanto enigo iom pli efike. 1807 01:11:39,410 --> 01:11:40,910 Ĝi estas bela mallonga programo. 1808 01:11:40,910 --> 01:11:43,730 Kaj ĉi tie ni havas, ĉefa, la int n deklaro. 1809 01:11:43,730 --> 01:11:46,570 Do donu al mi variablo nomis n. Nun, mi laŭvorte diras 1810 01:11:46,570 --> 01:11:48,340 "Fari." Kaj tiam mi havas malferma frizita 1811 01:11:48,340 --> 01:11:49,630 streĉa, proksime frizita streĉa. 1812 01:11:49,630 --> 01:11:52,000 Kaj poste rimarki, ĝuste post tio, diras dum n 1813 01:11:52,000 --> 01:11:53,790 estas malpli ol 1. 1814 01:11:53,790 --> 01:11:55,300 Do rimarki, ke tiuj linioj - 1815 01:11:55,300 --> 01:11:56,740 19 al 24 - 1816 01:11:56,740 --> 01:11:59,450 formi kolektive a do-dum ciklo. 1817 01:11:59,450 --> 01:12:01,280 Kaj denove, nova sintakso, ne estas nova ideo. 1818 01:12:01,280 --> 01:12:03,740 Estas nur alia maniero de looping, sintakse. 1819 01:12:03,740 --> 01:12:04,890 Do kion signifas ĉi fari? 1820 01:12:04,890 --> 01:12:08,000 Ĉu la sekva dum n estas malpli ol 1. 1821 01:12:08,000 --> 01:12:09,080 Do kion mi volas fari? 1822 01:12:09,080 --> 01:12:11,390 Mi postulas ke vi donu al mi pozitiva entjero. 1823 01:12:11,390 --> 01:12:14,110 Tiam mi vere provos atingi entjero de la uzanto. 1824 01:12:14,110 --> 01:12:16,740 Sed en terminoj de la ordo de operacioj tie, ĉar la 1825 01:12:16,740 --> 01:12:21,850 dum kondiĉo estas cxi tie, mi tiam tuj kontroli, estas n 1826 01:12:21,850 --> 01:12:23,100 malpli ol 1? 1827 01:12:23,100 --> 01:12:24,600 Do supozu, ke la uzanto - 1828 01:12:24,600 --> 01:12:26,450 post postulis tiamaniere - 1829 01:12:26,450 --> 01:12:29,190 tipoj en la valoron 0. 1830 01:12:29,190 --> 01:12:34,510 Ĉi tiu kondiĉo tuj estos vera aŭ falsa? 1831 01:12:34,510 --> 01:12:35,820 Nu, ĝi estas vere tuj esti vera. 1832 01:12:35,820 --> 01:12:38,700 Ĉar n estas 0, kaj 0 estas malpli ol 1. 1833 01:12:38,700 --> 01:12:40,140 Do kion signifas, ke implicas? 1834 01:12:40,140 --> 01:12:41,160 Faru ĝin denove. 1835 01:12:41,160 --> 01:12:41,990 Faru ĝin denove. 1836 01:12:41,990 --> 01:12:42,640 Faru ĝin denove. 1837 01:12:42,640 --> 01:12:46,080 Nur unufoje tiu kondiĉo taksas al False. 1838 01:12:46,080 --> 01:12:47,510 Se mi tajpas en la 42. 1839 01:12:47,510 --> 01:12:49,690 Nu ne, 42 ne estas malpli ol 1. 1840 01:12:49,690 --> 01:12:52,320 Sekve ĉi tiu buklo estas farita ekzekuti. 1841 01:12:52,320 --> 01:12:54,650 Kaj tiel en tiu punkto, la programo diros, gracias por 1842 01:12:54,650 --> 01:12:57,530 la 42, en ĉi tiu kazo. 1843 01:12:57,530 --> 01:13:00,320 Nun kion vi havas ĉi maniero de esprimi vin mem - 1844 01:13:00,320 --> 01:13:02,360 Ni ne devus atendi ĉi fini. 1845 01:13:02,360 --> 01:13:03,620 Ĝi tuj prenu iom da tempo. 1846 01:13:03,620 --> 01:13:04,990 Daŭrigi venontfoje, eble. 1847 01:13:04,990 --> 01:13:08,050 >> Sed nun, vi havas la kapablon espereble kompreni 1848 01:13:08,050 --> 01:13:09,060 iom de geek humuro. 1849 01:13:09,060 --> 01:13:11,560 Apologies. 1850 01:13:11,560 --> 01:13:13,620 Tio ne estas reprezentanto de la humuro en la komputiko 1851 01:13:13,620 --> 01:13:14,870 mondo, sed estas bela. 1852 01:13:21,020 --> 01:13:23,890 [Rie] Let fino de tiu noto. 1853 01:13:23,890 --> 01:13:25,750 Kaj ni vidos vin lunde. 1854 01:13:25,750 --> 01:13:31,629 [Aplaŭdo]