1 00:00:00,000 --> 00:00:03,353 >> [REPRODUCCIÓ DE MÚSICA] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Hola a tots. 4 00:00:06,050 --> 00:00:07,777 Això és supersección de CS50. 5 00:00:07,777 --> 00:00:09,860 Seccions assignats no ho farà començar una altra setmana. 6 00:00:09,860 --> 00:00:11,580 I per això avui, sóc aquí con-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: --to realitat fer una ullada a un problema 9 00:00:14,163 --> 00:00:16,110 establir un, el curs de primeres setmanes de material, 10 00:00:16,110 --> 00:00:19,780 aconseguir-orientat amb IDE CS50, una mica de Linux, el sistema operatiu que és 11 00:00:19,780 --> 00:00:22,290 que s'executa en IDE, així com veure algunes de la transició 12 00:00:22,290 --> 00:00:25,730 des de zero en C líder fins a un problema establir un. 13 00:00:25,730 --> 00:00:28,340 >> Així que sense més preàmbuls, al problema d'establir un, 14 00:00:28,340 --> 00:00:30,520 vostè va a ser presentin a CS50 IDE, que 15 00:00:30,520 --> 00:00:33,230 és aquesta programació basada en la web entorn que utilitzem per tal 16 00:00:33,230 --> 00:00:34,280 escriure programes. 17 00:00:34,280 --> 00:00:37,280 Ha estat dissenyat per semblar molt reminiscència d'un ordinador típic 18 00:00:37,280 --> 00:00:39,430 sistema que executa una operació sistema anomenat Linux. 19 00:00:39,430 --> 00:00:42,440 Però és en l'anomenat núvol, el que significa que tots en la classe 20 00:00:42,440 --> 00:00:45,100 en realitat pot tenir el seu propi compte i usar-lo, també. 21 00:00:45,100 --> 00:00:48,950 >> Així que la majoria de vostès probablement mai han utilitzat un entorn Linux abans o potser 22 00:00:48,950 --> 00:00:50,447 fins i tot un entorn de línia d'ordres. 23 00:00:50,447 --> 00:00:52,280 I una línia d'ordres medi ambient és diferent. 24 00:00:52,280 --> 00:00:53,200 Tot és textual. 25 00:00:53,200 --> 00:00:54,730 És tots els comandaments de teclat. 26 00:00:54,730 --> 00:00:59,480 I no és passar el ratolí, no hi ha icones, sense finestres de diàleg, no hi ha menús. 27 00:00:59,480 --> 00:01:00,212 És purament text. 28 00:01:00,212 --> 00:01:01,920 Així que en un primer moment, que tipus de se sent com un pas 29 00:01:01,920 --> 00:01:04,434 cap enrere en termes de sofisticació. 30 00:01:04,434 --> 00:01:06,600 Però acaba sent molt més potent, sens dubte, 31 00:01:06,600 --> 00:01:08,510 per a un científic de la computació, en última instància. 32 00:01:08,510 --> 00:01:09,540 >> Així que anem a fer una ullada. 33 00:01:09,540 --> 00:01:13,850 Aquí estic en CS50.io, a través del qual podeu entrar a IDE CS50. 34 00:01:13,850 --> 00:01:17,414 I igual que en Scratch, hi ha tres àrees principals a aquesta pantalla. 35 00:01:17,414 --> 00:01:20,080 Així que en el costat de l'esquerra, tenim quin serà l'explorador d'arxius. 36 00:01:20,080 --> 00:01:22,413 I hi ha aquesta carpeta en superior, que és ara buit 37 00:01:22,413 --> 00:01:24,690 des que em vaig desfer de tot el meu arxius abans supersección. 38 00:01:24,690 --> 00:01:27,599 I aquí és on anem guardar arxius de C que escrivim. 39 00:01:27,599 --> 00:01:30,890 A la part superior dreta, tenim un lloc on tot el nostre codi posarà per escrit. 40 00:01:30,890 --> 00:01:34,610 I de fet, si faig clic a aquest plus, aquesta es deixarà que em trio Nou arxiu. 41 00:01:34,610 --> 00:01:38,310 I jo que puc començar a escriure codi C o, Realment, qualsevol nombre d'altres idiomes. 42 00:01:38,310 --> 00:01:42,670 >> I després a la part inferior on es diu jharvard @ ide50-- i la teva serà 43 00:01:42,670 --> 00:01:45,080 dir alguna cosa una mica diferent-- el que es diu això? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Finestra de Terminal. 46 00:01:49,310 --> 00:01:49,570 Sí. 47 00:01:49,570 --> 00:01:51,810 Per tant la finestra de terminal és la crida de línia d'ordres 48 00:01:51,810 --> 00:01:55,540 interfície a través de la qual es pot interactuar amb el sistema operatiu subjacent. 49 00:01:55,540 --> 00:01:58,220 I per ara, anem a fer molt poc ús de esto-- 50 00:01:58,220 --> 00:02:01,170 acaba de compilar, mirar missatges d'error que veiem, 51 00:02:01,170 --> 00:02:02,347 i per executar els nostres programes. 52 00:02:02,347 --> 00:02:04,680 Però en última instància, anem fer molt més, també. 53 00:02:04,680 --> 00:02:07,490 I fins i tot es pot instal·lar el programari i administrar el seu espai de treball 54 00:02:07,490 --> 00:02:09,066 dins CS50 IDE, també. 55 00:02:09,066 --> 00:02:10,440 Però més sobre això en un altre moment. 56 00:02:10,440 --> 00:02:12,689 >> Així que seguirem endavant i escriure un programa molt senzill només 57 00:02:12,689 --> 00:02:15,064 de passar per un escalfament de hello.c, que és potser 58 00:02:15,064 --> 00:02:16,480 el programa més simple podem escriure. 59 00:02:16,480 --> 00:02:18,330 Jo ja he obert una nova pestanya. 60 00:02:18,330 --> 00:02:24,310 Vaig a seguir endavant i dir incloure io.h. estàndard 61 00:02:24,310 --> 00:02:25,325 Llavors int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 I llavors printf ("hola, món" barra invertida n, prop de cotització, 64 00:02:35,200 --> 00:02:39,480 tancar parèntesi i punt i coma. 65 00:02:39,480 --> 00:02:39,990 >> Tot bé. 66 00:02:39,990 --> 00:02:41,700 Així que ara es va adonar de la meva finestra no té títol. 67 00:02:41,700 --> 00:02:44,840 Així que vaig molt ràpid pujar a Arxiu, Guardar. 68 00:02:44,840 --> 00:02:46,910 I és important que Em dic no aquesta "hola". 69 00:02:46,910 --> 00:02:49,243 Així que un error molt comú, especialment en un problema conjunt un, 70 00:02:49,243 --> 00:02:52,530 és accidentalment acaba de trucar a la seva programa d '"aigua" o "cobdiciosos" o "Mario" 71 00:02:52,530 --> 00:02:53,890 o "crèdit" o similars. 72 00:02:53,890 --> 00:02:55,970 Però en realitat es vol fer Segur que té l'extensió d'arxiu 73 00:02:55,970 --> 00:02:58,928 perquè aquesta és l'única manera que el compilador i també l'editor de codi 74 00:02:58,928 --> 00:03:00,710 sap que ets realment escriure codi C. 75 00:03:00,710 --> 00:03:02,280 Així que permetin-me anar endavant i feu clic a Desa. 76 00:03:02,280 --> 00:03:05,710 >> I ara, també, el que CS50 IDE ha fet per nosaltres és que és també 77 00:03:05,710 --> 00:03:07,120 sintaxi ressaltat tot. 78 00:03:07,120 --> 00:03:08,822 Així que ha fet tot molt colorit. 79 00:03:08,822 --> 00:03:10,780 I tot el propòsit de que no és funcional. 80 00:03:10,780 --> 00:03:14,290 És només per dibuixar els ulls a la conceptualment diferents peces 81 00:03:14,290 --> 00:03:15,310 d'aquest programa. 82 00:03:15,310 --> 00:03:17,570 Així que seguirem endavant i compilar això. 83 00:03:17,570 --> 00:03:19,490 I puc compilar aquest en un parell de maneres. 84 00:03:19,490 --> 00:03:22,010 I en la setmana un, el manera de la vella escola que vam fer 85 00:03:22,010 --> 00:03:26,250 estava literalment al "hello.c so metàl·lic." comanda line-- 86 00:03:26,250 --> 00:03:27,596 I llavors em va colpejar Retorn. 87 00:03:27,596 --> 00:03:29,720 I res sembla succeir a la finestra de terminal. 88 00:03:29,720 --> 00:03:32,654 Però el que va fer el canvi en l'IDE? 89 00:03:32,654 --> 00:03:35,320 Quan, un cop més, l'IDE només significa Entorn de desenvolupament integrat. 90 00:03:35,320 --> 00:03:38,360 És una forma elegant de dir aquest desenvolupament integrat 91 00:03:38,360 --> 00:03:40,620 medi ambient per al desenvolupament de programari. 92 00:03:40,620 --> 00:03:42,477 Llavors, què va canviar en la interfície d'usuari? 93 00:03:42,477 --> 00:03:44,310 Què vas notar això és diferent, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: Em vaig adonar d'una cosa sota la IDE50 carpeta aquí. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Sí. 96 00:03:47,850 --> 00:03:50,230 Així que aquí, no només ¿Tenim "hello.c." 97 00:03:50,230 --> 00:03:53,120 També tenim "a.out", que és classe de nom ximple per a un programa. 98 00:03:53,120 --> 00:03:56,430 Però de fet, és el nom per defecte per a un programa quan vostè acaba de compilar el codi 99 00:03:56,430 --> 00:03:59,110 i no dir-li al compilador un arxiu de sortida. 100 00:03:59,110 --> 00:04:01,790 Així que si vull córrer això, necessitar dir-li al compiler-- 101 00:04:01,790 --> 00:04:05,340 o més aviat, necessito dir-li a l'espai de treball que 102 00:04:05,340 --> 00:04:09,780 desitgi executar el programa anomenat "a.out". 103 00:04:09,780 --> 00:04:10,550 Retorn. 104 00:04:10,550 --> 00:04:12,474 I hi ha "hola, món. "Ara el" ./ ". 105 00:04:12,474 --> 00:04:13,390 és realment important. 106 00:04:13,390 --> 00:04:16,050 Tot i que normalment només escriure els noms d'ordres, 107 00:04:16,050 --> 00:04:19,060 quan és un programa que tens per escrit, vostè vol dir "./" 108 00:04:19,060 --> 00:04:22,460 perquè això diu explícitament Linux que desitja executar un programa anomenat 109 00:04:22,460 --> 00:04:26,930 "a.out" que està en això, en quin punt significa aquest directori que estic actualment 110 00:04:26,930 --> 00:04:31,600 en, que passa a ser anomenat espai de treball, "a.out. 111 00:04:31,600 --> 00:04:35,410 Perquè si simplement li vaig dir "a.out" Enter, Jo vaig a aconseguir "a.out comanda no 112 00:04:35,410 --> 00:04:38,035 trobat "perquè el computer-- perquè jo vaig inventar "a.out"; 113 00:04:38,035 --> 00:04:40,910 que no va venir amb la computer-- no sap on buscar-ho, 114 00:04:40,910 --> 00:04:43,590 tot i que és el correcte sota el meu nas, per així dir-ho. 115 00:04:43,590 --> 00:04:44,090 D'ACORD. 116 00:04:44,090 --> 00:04:49,910 Així que podem canviar això a ser "Clang -o hola hello.c." 117 00:04:49,910 --> 00:04:53,030 I si prem enter, quin programa ¿Això va a la sortida per a mi? 118 00:04:53,030 --> 00:04:55,710 Quin és el nom del fitxer? 119 00:04:55,710 --> 00:04:57,500 Sí, a la part posterior. 120 00:04:57,500 --> 00:04:58,479 Això és correcte. "Hola." 121 00:04:58,479 --> 00:05:00,520 Així que "hola" serà el nom del programa 122 00:05:00,520 --> 00:05:04,610 perquè nosaltres hem utilitzat la trucada d'un argument de la línia d'ordres, que és just 123 00:05:04,610 --> 00:05:08,120 una forma de canviar el comportament de el compilador realitat de sortida 124 00:05:08,120 --> 00:05:09,450 un nom de fitxer específic. 125 00:05:09,450 --> 00:05:12,400 I de fet, si el zoom i mirar cap amunt aquí, 126 00:05:12,400 --> 00:05:17,430 ara tinc no només "a.out" i "hello.c", sinó també "hola", també. 127 00:05:17,430 --> 00:05:22,410 Així que ara que puc fer "./hola," Enter. 128 00:05:22,410 --> 00:05:23,640 I hi ha "hola, món". 129 00:05:23,640 --> 00:05:25,640 Però lastly-- i això ara serà la convenció 130 00:05:25,640 --> 00:05:27,590 fem servir tot el semestre, typically-- 131 00:05:27,590 --> 00:05:30,070 és que també pot simplement dir "fer hola." 132 00:05:30,070 --> 00:05:33,370 I, en efecte, està dient que és fins fins a la data perquè ja existeix. 133 00:05:33,370 --> 00:05:37,860 Déjame anar per davant i treure, amb la comanda rm, tant "a.out" - 134 00:05:37,860 --> 00:05:39,644 i dir "treure a.out fitxer normal?" 135 00:05:39,644 --> 00:05:41,810 Això només vol dir, oi Segur que ho voleu suprimir? 136 00:05:41,810 --> 00:05:42,880 Vaig a dir que si. 137 00:05:42,880 --> 00:05:46,690 I després em vaig a treure "hola", però no "hello.c." 138 00:05:46,690 --> 00:05:49,920 Vaig a dir "sí" de manera explícita, però "i" és suficient, també. 139 00:05:49,920 --> 00:05:52,140 >> I ara si em compte escrigui ls-- que, recordo, 140 00:05:52,140 --> 00:05:55,540 significa pel·lícules-- que enumera tots dels arxius en la carpeta. 141 00:05:55,540 --> 00:05:57,850 I de fet, si el zoom i mira a dalt a l'esquerra, 142 00:05:57,850 --> 00:05:59,730 confirma que el que cal en aquesta carpeta, fins i tot 143 00:05:59,730 --> 00:06:04,990 encara que ha etiquetat com IDE50 aquí i no de l'àrea de treball, és només "hello.c." 144 00:06:04,990 --> 00:06:09,152 Així que ara aquí, si jo no "fer hola," Enter, 145 00:06:09,152 --> 00:06:12,360 ara veig una ordre molt més temps, sinó una més sofisticat de comandaments que està passant 146 00:06:12,360 --> 00:06:13,940 per ser útil en les setmanes vinents. 147 00:06:13,940 --> 00:06:16,720 I ara el que puc dir "./hola." 148 00:06:16,720 --> 00:06:19,257 >> Així que donem un ràpid recorregut ordres d'alguna altra Linux. 149 00:06:19,257 --> 00:06:21,840 Llavors, per què no donar un pas enrere i realment es veuen en C més 150 00:06:21,840 --> 00:06:25,020 en general, la transició des de zero a C, i després concloure amb una mirada 151 00:06:25,020 --> 00:06:27,305 en el primer problema establert en C. D'acord. 152 00:06:27,305 --> 00:06:30,430 Així que vaig a seguir endavant i només neteja el meu espai de treball amb Control-L només 153 00:06:30,430 --> 00:06:31,429 per mantenir la pantalla neta. 154 00:06:31,429 --> 00:06:33,520 Però això no té cap funcional impactar d'una altra manera. 155 00:06:33,520 --> 00:06:35,820 >> Recordem que hem vist alguns comandaments ara. 156 00:06:35,820 --> 00:06:39,900 Així que hem vist so metàl·lic, que en general vostè no haurà d'executar manualment més. 157 00:06:39,900 --> 00:06:41,650 Lloc Farem servir maquillatge. 158 00:06:41,650 --> 00:06:45,290 Però també vam veure ls, que mostra una llista dels arxius en el meu directori. 159 00:06:45,290 --> 00:06:48,750 I ara per què és allà- N'hi ha de dos arxius ara, "hola" i "hello.c." 160 00:06:48,750 --> 00:06:52,240 Per què hi ha una estrella o un asterisc després de "hola"? 161 00:06:52,240 --> 00:06:54,900 Què significa això, sobre la base en el que vam veure en la primera setmana? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Què penses? 164 00:07:00,400 --> 00:07:02,742 Què significa l'estrella? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: para-- el programa "hola"? 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Hola *". 167 00:07:05,530 --> 00:07:06,330 Sí. 168 00:07:06,330 --> 00:07:07,760 Ah, sí? 169 00:07:07,760 --> 00:07:08,639 Oh, executable. 170 00:07:08,639 --> 00:07:09,180 Això és correcte. 171 00:07:09,180 --> 00:07:10,890 Així que això significa que "hola" és executable. 172 00:07:10,890 --> 00:07:13,430 Així que de fet, és per això Que puc fer "./hola." 173 00:07:13,430 --> 00:07:13,930 Tot bé. 174 00:07:13,930 --> 00:07:15,179 Llavors, què més puc fer aquí? 175 00:07:15,179 --> 00:07:17,290 Bé, resulta que el que pugui També crear directoris. 176 00:07:17,290 --> 00:07:20,924 Així que permetin-me seguir endavant i crear, per exemple, un directori "pset1". 177 00:07:20,924 --> 00:07:23,590 I l'especificació conjunt de problemes haurà de fer exactament això, 178 00:07:23,590 --> 00:07:25,260 pel que no ha de recordar avui. 179 00:07:25,260 --> 00:07:27,340 Però "pset1 mkdir" sembla no tenir cap impacte. 180 00:07:27,340 --> 00:07:30,540 Però, de nou, cap missatge d'error en general és una bona cosa. 181 00:07:30,540 --> 00:07:34,060 Així que si escric "ls" ara-- ah, ara Tinc un arxiu executable anomenat 182 00:07:34,060 --> 00:07:36,570 "hola", un arxiu C diu "hello.c." 183 00:07:36,570 --> 00:07:40,860 I llavors la barra final, de manera que parlar, vol dir que aquest és un directori. 184 00:07:40,860 --> 00:07:42,510 >> Així que de fet, ara vull obrir-lo. 185 00:07:42,510 --> 00:07:45,730 I no em doble clic sobre ella com en una interfície gràfica d'usuari, un entorn gràfic. 186 00:07:45,730 --> 00:07:48,550 Jo en canvi dic "pset1 cd." 187 00:07:48,550 --> 00:07:49,640 Retorn. 188 00:07:49,640 --> 00:07:53,100 Res interessant sembla tenir passat, excepte el meu petit símbol 189 00:07:53,100 --> 00:07:57,300 aquí-- aquesta és la manera de recordar de Linux amb mi on jo estic, així que què carpeta està oberta. 190 00:07:57,300 --> 00:08:00,080 És només que em diu de manera explícita en contraposició a gràficament. 191 00:08:00,080 --> 00:08:05,100 I si escric "ls", perquè he vist que una altra prompt immediatament, pensa vostè, 192 00:08:05,100 --> 00:08:07,269 quan enumero els continguts de pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Probablement no ho fa tenir alguna cosa allà. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Sí. 195 00:08:09,630 --> 00:08:11,510 Així que no ho hem fet, òbviament, creat alguna cosa allà 196 00:08:11,510 --> 00:08:13,150 perquè m'acabo de crear el directori. 197 00:08:13,150 --> 00:08:17,690 Ara, si jo volia crear un file-- per exemple, podria crear un nou arxiu. 198 00:08:17,690 --> 00:08:20,190 I llavors jo podria anar a Guardar i guardar com, 199 00:08:20,190 --> 00:08:23,090 com, "mario.c" si està fent l'edició estàndard del conjunt de processadors un. 200 00:08:23,090 --> 00:08:27,610 I després, com qualsevol Mac o PC, simplement triar la carpeta "pset1, Desa. 201 00:08:27,610 --> 00:08:28,740 I ara l'arxiu està buit. 202 00:08:28,740 --> 00:08:31,160 Però anem a apropar de nou per un segon. 203 00:08:31,160 --> 00:08:32,470 Farem ls aquí. 204 00:08:32,470 --> 00:08:34,470 Ara veiem "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Així que hi ha alguns altres comandaments que val la pena tenint en compte més d'temps-- 206 00:08:37,850 --> 00:08:41,200 clar, o Control-L és el que tinc estat colpejant; mkdir que hem vist; 207 00:08:41,200 --> 00:08:45,240 rm que hem vist, també, que és per eliminar o esborrar un arxiu. 208 00:08:45,240 --> 00:08:49,310 Cura pots també- i si et fixes a tutorials en línia, podràs rm -rf 209 00:08:49,310 --> 00:08:52,630 és una forma molt comuna de dir suprimir una carpeta que té coses a ell. 210 00:08:52,630 --> 00:08:54,280 Tot just sigui super, super cura. 211 00:08:54,280 --> 00:08:58,780 -rf significa recursivament eliminar el que sigui 212 00:08:58,780 --> 00:09:01,150 vostè està tractant d'eliminar i per la força eliminar-lo. 213 00:09:01,150 --> 00:09:04,630 Així mitjans recursiu si es tracta d'una carpeta amb una carpeta amb una carpeta amb una carpeta, 214 00:09:04,630 --> 00:09:05,690 eliminar tots ells. 215 00:09:05,690 --> 00:09:08,680 I la força vol dir ni tan sols em pregunta si o no, estic segur? 216 00:09:08,680 --> 00:09:11,960 Així que és una manera estupenda de perillós la supressió d'un munt de coses ràpidament. 217 00:09:11,960 --> 00:09:17,210 Però beware-- massa sovint fa un intrèpid estudiant esborrar accidentalment, per exemple, conjunt de processadors 218 00:09:17,210 --> 00:09:18,000 un, per exemple. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: I si només fer -r, van 220 00:09:19,833 --> 00:09:21,870 per preguntar-los sobre cada arxiu. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: Què és moderadament molest. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Sí. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Així que per això molts de nosaltres, i un mateix, 224 00:09:25,813 --> 00:09:27,070 estic en l'hàbit d'usar -rf. 225 00:09:27,070 --> 00:09:27,861 Però és perillós. 226 00:09:27,861 --> 00:09:29,010 Així que el comprador tingui cura. 227 00:09:29,010 --> 00:09:31,050 I després mv és una espècie de Curiosament anomenat. 228 00:09:31,050 --> 00:09:33,600 Així que aquest és l'ordre de moviment, que se sent una mica estrany 229 00:09:33,600 --> 00:09:37,260 perquè de fet es pot utilitzar per moure arxius d'un lloc a un altre. 230 00:09:37,260 --> 00:09:39,970 Per exemple, suposem que vaig ficar la pota. 231 00:09:39,970 --> 00:09:43,660 Suposem que he creat un nou arxiu per al conjunt de processadors. 232 00:09:43,660 --> 00:09:46,320 I jo vaig guardar com "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Però suposem que accidentalment guardar- en IDE50-- així que en el meu propi espai de treball 234 00:09:49,970 --> 00:09:51,580 i no en pset1. 235 00:09:51,580 --> 00:09:53,960 >> Vostè pot veure tant en la part superior esquerra. 236 00:09:53,960 --> 00:09:55,284 Hi ha "greedy.c." 237 00:09:55,284 --> 00:09:56,450 I hi ha algunes solucions. 238 00:09:56,450 --> 00:09:58,324 Així que un, puc utilitzar el manera fàcil d'usar súper 239 00:09:58,324 --> 00:09:59,740 de tan sols arrossegar i deixar anar. 240 00:09:59,740 --> 00:10:01,910 I això faria realitat solucionar aquest problema. 241 00:10:01,910 --> 00:10:04,967 Però avui, que estem tractant de mirar les formes més arcans però poderoses 242 00:10:04,967 --> 00:10:05,550 de fer això. 243 00:10:05,550 --> 00:10:07,880 Així que vull aprofitar "ls" a pset1. 244 00:10:07,880 --> 00:10:09,690 I jo només veig "mario.c." 245 00:10:09,690 --> 00:10:13,450 Déjame anar endavant i fer-ho "cd ..". 246 00:10:13,450 --> 00:10:15,320 Així CD de nou és canviar directori. 247 00:10:15,320 --> 00:10:18,130 ".." Significa el que, però? 248 00:10:18,130 --> 00:10:21,100 L'última vegada que vaig dir "cd pset1 "per entrar a pset1. 249 00:10:21,100 --> 00:10:24,360 Així que quan dic "cd ..", què estic fent? 250 00:10:24,360 --> 00:10:24,910 Al revés. 251 00:10:24,910 --> 00:10:25,150 Sí. 252 00:10:25,150 --> 00:10:26,750 >> Així que va a la crida dels pares. 253 00:10:26,750 --> 00:10:29,730 Anar a un nivell superior, igual que sortir d'una carpeta. 254 00:10:29,730 --> 00:10:30,500 Així Retorn. 255 00:10:30,500 --> 00:10:31,900 I de fet, mira el que va fer. 256 00:10:31,900 --> 00:10:37,070 Em va commoure només en àrea de treball en el seu lloc d'en pset1, que està en espai de treball. 257 00:10:37,070 --> 00:10:39,710 I ara si escric "ls", hi ha un munt de coses. 258 00:10:39,710 --> 00:10:41,650 En hi ha "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Així que ara em deixa utilitzar mv per, literalment, moure "greedy.c" a pset1. 260 00:10:48,720 --> 00:10:51,120 I pel que una gran quantitat d'ordres de Linux treballar exactament com aquesta. 261 00:10:51,120 --> 00:10:54,470 Prenen sense arguments o prendre una argument o prenen dues línies d'ordres 262 00:10:54,470 --> 00:10:55,449 arguments i així successivament. 263 00:10:55,449 --> 00:10:57,240 I en aquest cas, és fent literalment el 264 00:10:57,240 --> 00:11:01,670 que diu, encara que succinctly-- moure greedy.c en pset1. 265 00:11:01,670 --> 00:11:02,310 Retorn. 266 00:11:02,310 --> 00:11:03,310 Res sembla succeir. 267 00:11:03,310 --> 00:11:06,180 Però si faig un ls de nou, cobdiciosos s'ha anat. 268 00:11:06,180 --> 00:11:12,437 I si ho faig "pset1 cd", Enter, i després ls nou, ara que està en el lloc correcte. 269 00:11:12,437 --> 00:11:14,270 Com acotació al marge, si per alguns reason-- especialment 270 00:11:14,270 --> 00:11:16,194 si vostè té intermitent connexió de xarxes 271 00:11:16,194 --> 00:11:18,360 o vostè està caminant al voltant campus amb la seva tapa del portàtil 272 00:11:18,360 --> 00:11:20,180 tancat i després obrir-lo de nou i el seu espai de treball 273 00:11:20,180 --> 00:11:21,730 sembla una mica fora de sincronització, no és gran cosa. 274 00:11:21,730 --> 00:11:23,646 Només recarregar el vostre navegador finestra, i el que hauria 275 00:11:23,646 --> 00:11:26,339 resync de manera que la mà esquerra explorador d'arxius es veu exactament 276 00:11:26,339 --> 00:11:27,380 de la mateixa manera que la finestra de terminal. 277 00:11:27,380 --> 00:11:27,921 No cal preocupar-se. 278 00:11:27,921 --> 00:11:31,460 En cas de dubte, torneu a carregar la pàgina, de manera que sempre que hi hagi guardat els arxius ja. 279 00:11:31,460 --> 00:11:31,960 D'ACORD. 280 00:11:31,960 --> 00:11:34,710 Així mv també es pot utilitzar per canviar el nom dels fitxers. 281 00:11:34,710 --> 00:11:36,760 I anem a fer una ullada a aquesta comanda final aquí. 282 00:11:36,760 --> 00:11:39,950 Així suppose-- i això és molt comú, també, des del principi. 283 00:11:39,950 --> 00:11:46,400 Alguns estudiants de tant en tant creen un arxiu crida, anem a dir-- el que és un altre? 284 00:11:46,400 --> 00:11:47,730 Igual que "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Així que vaig a cridar, per cap raó, en majúscules. 286 00:11:51,080 --> 00:11:53,190 Però aquest no és el nom correcte per a l'arxiu 287 00:11:53,190 --> 00:11:56,660 si més no perquè el nostre problema ajustat especificació no t'ho va dir 288 00:11:56,660 --> 00:11:59,430 per guardar l'arxiu com totes les tapes "WATER.C." 289 00:11:59,430 --> 00:12:01,320 En el seu lloc, esperem "water.c" en minúscules. 290 00:12:01,320 --> 00:12:03,140 I, de fet, aquest és problemàtic perquè check50, 291 00:12:03,140 --> 00:12:04,370 un programa que vas per reunir-se en un problema 292 00:12:04,370 --> 00:12:07,350 establir un que prova de forma automàtica l'exactitud del seu codi 293 00:12:07,350 --> 00:12:11,615 va a cridar a vostè si no pot trobar "water.c" en minúscules. 294 00:12:11,615 --> 00:12:12,712 >> Així que he de arreglar això. 295 00:12:12,712 --> 00:12:14,920 Així que moltes maneres diferents a això, la primera d'elles 296 00:12:14,920 --> 00:12:18,330 seria la de Control i feu clic o feu clic el nom del fitxer i només canvia a Canvia el nom. 297 00:12:18,330 --> 00:12:19,740 Totalment bé per fer-ho. 298 00:12:19,740 --> 00:12:21,820 Però, de nou, avui, anem a ho fa una mica més de luxe. 299 00:12:21,820 --> 00:12:26,680 Farem servir mv canviar "WATER.C" a "water.c." 300 00:12:26,680 --> 00:12:30,690 Així que vostè pot també utilitzar el primer argument per canviar el seu nom al segon argument 301 00:12:30,690 --> 00:12:34,455 si el segon argument no, està en De fet, una carpeta o un nom de directori. 302 00:12:34,455 --> 00:12:35,120 >> Tot bé. 303 00:12:35,120 --> 00:12:39,560 I, finalment, una mica trick-- així que estic en el meu directori d'espai de treball en el moment. 304 00:12:39,560 --> 00:12:43,660 Si jo vull entrar en pset un, Certament puc escriure "pset1 cd." 305 00:12:43,660 --> 00:12:47,260 Però és tan tediós per escriure "pset1" o i als noms d'arxius o noms de directori 306 00:12:47,260 --> 00:12:47,980 encara. 307 00:12:47,980 --> 00:12:51,960 Així que molt sovint en Linux, el que vostè pot fer és començar a escriure "pse" 308 00:12:51,960 --> 00:12:56,100 i simplement s'avorreixen, premeu Tab, i deixar la figura de l'ordinador cap a fora per a vostè. 309 00:12:56,100 --> 00:12:58,190 Súper útil per entrar en aquest hàbit. 310 00:12:58,190 --> 00:13:01,079 L'únic inconvenient és que si tens diversos arxius o carpetes que comencen 311 00:13:01,079 --> 00:13:02,870 amb la lletra "p" o "ps", és possible que tingui 312 00:13:02,870 --> 00:13:05,525 per escriure una mica més abans que el ordinador sap què fer. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Ens agraden les dreceres. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: Aquesta voluntat li estalviarà molt de temps. 315 00:13:08,695 --> 00:13:11,930 I també, com hem dit en la conferència, que pot desplaçar-se cap amunt a la història, de dalt a baix, 316 00:13:11,930 --> 00:13:15,461 trobar recentment executada ordres, també. 317 00:13:15,461 --> 00:13:15,960 Tot bé. 318 00:13:15,960 --> 00:13:20,904 Així que ara, centrarem la nostra atenció de nou a un programa simple, hola món. 319 00:13:20,904 --> 00:13:22,195 Així que hem recopilat això exactament. 320 00:13:22,195 --> 00:13:24,050 I ara per què no prenem un cop d'ull als tipus de dades 321 00:13:24,050 --> 00:13:26,776 i després la transició d'alguns blocs d'Scratch corresponent a C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Awesome. 323 00:13:27,400 --> 00:13:30,031 Així que ara que vostè ha començat escriure programes en C, 324 00:13:30,031 --> 00:13:32,530 començarem a parlar sobre els tipus de dades i variables. 325 00:13:32,530 --> 00:13:37,570 Així que alguns tipus de dades que voldria saber a partir d'ara 326 00:13:37,570 --> 00:13:39,400 són els que estan ressaltat en blau. 327 00:13:39,400 --> 00:13:42,420 Així que tenim int primer, que significa sencer. 328 00:13:42,420 --> 00:13:46,075 I això val sencers, com vostè podria tenir guessed-- de manera 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 i qualssevol altres nombres enters que vostè es pugui imaginar. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: I també negatiu. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: I també els negatius, sí. 332 00:13:50,220 --> 00:13:51,450 I 0. 333 00:13:51,450 --> 00:13:54,250 Llavors tenim carrosses, que són nombres de punt flotant. 334 00:13:54,250 --> 00:13:58,360 Així que això és tots els nombres reals que tenen punts decimals. 335 00:13:58,360 --> 00:14:03,960 Així 5,0, 5,2, i encara més dígits després del punt decimal, 336 00:14:03,960 --> 00:14:05,620 com bé, i també els negatius. 337 00:14:05,620 --> 00:14:07,530 Llavors tenim carbó, que és un personatge. 338 00:14:07,530 --> 00:14:10,240 Així que crec que parlem això en la conferència d'avui. 339 00:14:10,240 --> 00:14:15,682 Però tenim lletres, per exemple-- A, B, C-- que es pot emmagatzemar com un char. 340 00:14:15,682 --> 00:14:18,390 Però llavors tenim molt més símbols que poden emmagatzemar-se com un char. 341 00:14:18,390 --> 00:14:22,380 I els que s'emmagatzemen en ASCII. 342 00:14:22,380 --> 00:14:25,280 >> I després tenim bool, que són booleans. 343 00:14:25,280 --> 00:14:29,067 I els avaluen com True o Fals o 1 i 0, respectivament. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: I recordem que bool prové de la biblioteca CS50. 345 00:14:31,650 --> 00:14:33,300 Així que no és incorporat en C, però és super útil 346 00:14:33,300 --> 00:14:34,850 tenir la noció de vertader i fals. 347 00:14:34,850 --> 00:14:36,990 I tot i que podria think-- fet de la diversió. 348 00:14:36,990 --> 00:14:43,700 Un bool tècnicament necessita la quantitat de bits, veritablement, per representar Veritable contra Falsa? 349 00:14:43,700 --> 00:14:47,910 Quants bits creus el que es necessita, com a màxim? 350 00:14:47,910 --> 00:14:48,790 Sí, només un. 351 00:14:48,790 --> 00:14:52,077 Així que resulta que C no li poden donar només una mica. 352 00:14:52,077 --> 00:14:54,160 La unitat més petita de mesura que pot obtenir és de vuit. 353 00:14:54,160 --> 00:14:57,090 Així que és una mica malgastador que ets utilitzant un byte complet, o vuit bits, 354 00:14:57,090 --> 00:14:58,340 per representar Vertader o Fals. 355 00:14:58,340 --> 00:15:01,807 Però això és només la forma en què és implementat en C per la biblioteca CS50. 356 00:15:01,807 --> 00:15:04,890 MARIA: I llavors els que estem No parlarem de la forma més àmplia 357 00:15:04,890 --> 00:15:08,060 dret ara-- doble, això és per carrosses més grans. 358 00:15:08,060 --> 00:15:09,811 Llarga llarg i curt també són per als nombres enters. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: En efecte. 360 00:15:10,643 --> 00:15:13,190 En l'edició pirata d'pset un, realment fem servir molt, molt. 361 00:15:13,190 --> 00:15:15,801 No obstant això, per a l'edició estàndard, no hauria de ser necessari. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 D'ACORD. 364 00:15:17,361 --> 00:15:20,110 Així operators-- vostè hauria de ser probablement està familiaritzat amb la major part d'aquests. 365 00:15:20,110 --> 00:15:22,620 A més, +; resta, -. 366 00:15:22,620 --> 00:15:24,070 Per a la multiplicació, tenim el *. 367 00:15:24,070 --> 00:15:25,900 Així que no és la X que solem utilitzar. 368 00:15:25,900 --> 00:15:27,840 Divisió, tenim la barra invertida. 369 00:15:27,840 --> 00:15:31,380 I mòdul és el nostre últim operador que parlarem en aquest moment. 370 00:15:31,380 --> 00:15:35,610 És un operador que ens permet prendre la resta d'una divisió. 371 00:15:35,610 --> 00:15:40,630 Així que si tenim 4% 2, 4 dividit per 2 és 2 amb una resta de 0. 372 00:15:40,630 --> 00:15:41,740 Així que 4% 2 és 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 és 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 és 4, el que podria haver imaginat. 375 00:15:44,870 --> 00:15:48,860 I recordi en utilitzar tots aquests operadors utilitzar les regles PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Així que per ser clars, si fer 4% 2, ¿per què és que 0, exactament? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: A causa a 4 dividit per 2 és 2 amb una resta de 0. 378 00:15:57,480 --> 00:16:00,752 Així mòdul ens dóna aquesta resta com en comparació amb el resultat de la divisió. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: I, en efecte, el que trobarem útil? 380 00:16:02,960 --> 00:16:05,640 per dir que en alguns problemes això no és necessàriament un, 381 00:16:05,640 --> 00:16:08,040 si vostè vol tenir la efecte de restringir a tu mateix 382 00:16:08,040 --> 00:16:10,720 per a un rang de números com 0 a través d'alguna cosa, 383 00:16:10,720 --> 00:16:13,904 pot utilitzar mòdul per embolicar abans que com l'2000000000 384 00:16:13,904 --> 00:16:16,320 o el valor de 4 mil milions que que hem parlat en la conferència. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Sí. 386 00:16:16,870 --> 00:16:19,429 I fins i tot en "cobdiciosos" que podria. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Sí, en problema configurat un, també. 388 00:16:21,345 --> 00:16:22,520 MARIA: Sí, molt bé. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Bon toc. 390 00:16:24,340 --> 00:16:25,750 MARIA: Ho sento. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- ho per als operadors booleans, 392 00:16:28,590 --> 00:16:31,770 parlarem de tot d'aquests que vostè veu aquí. 393 00:16:31,770 --> 00:16:35,310 Així que ara mateix, tenim dos signes d'igual s'enumeren per iguals. 394 00:16:35,310 --> 00:16:38,650 Així que aquests són per a la comparació. 395 00:16:38,650 --> 00:16:40,830 Fins ara, només hem vist un sol signe igual. 396 00:16:40,830 --> 00:16:44,870 Va ser llavors quan li assignem un valor a una variable. 397 00:16:44,870 --> 00:16:50,160 Així que si hem vist int n = 5, a continuació, hem assignat 5 a la variable n. 398 00:16:50,160 --> 00:16:55,600 Però si volem fer servir == per comparació, es pot comprovar si n == 5. 399 00:16:55,600 --> 00:16:58,310 I si n == 5, llavors això és cert. 400 00:16:58,310 --> 00:17:01,950 >> Així que els operadors booleans ens permet, bàsicament, 401 00:17:01,950 --> 00:17:04,670 per avaluar Boolean expressions de vertader o fals. 402 00:17:04,670 --> 00:17:07,819 Així que no equals-- tenim la signe d'exclamació i els iguals. 403 00:17:07,819 --> 00:17:14,240 Així també podríem comprovar si n no és igual al 5-- n! = 5. 404 00:17:14,240 --> 00:17:17,640 Més petit que, menor que o igual a, més gran que, més gran que o igual a, 405 00:17:17,640 --> 00:17:20,720 i després tenim la lògica I ja la lògica OR. 406 00:17:20,720 --> 00:17:24,060 I els que ens permeten avaluar múltiples expressions booleanes junts 407 00:17:24,060 --> 00:17:27,930 venir bàsicament junts com una sola expressió booleana conjunt. 408 00:17:27,930 --> 00:17:34,970 Així que si volem trobar un nombre, per exemple, que és més gran que 5 però menys de 15 409 00:17:34,970 --> 00:17:39,810 al mateix temps, ens agradaria utilitzar el operador lògic AND per veure si n és 410 00:17:39,810 --> 00:17:42,937 major que 5 && n menys de 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: I aquí, també, és molt fàcil 412 00:17:44,770 --> 00:17:47,290 des del principi per accidentalment utilitzar un sol signe 413 00:17:47,290 --> 00:17:48,572 o una sola barra vertical. 414 00:17:48,572 --> 00:17:51,280 I espero que el compilador gritarte perquè en realitat 415 00:17:51,280 --> 00:17:52,530 tenir un significat molt diferent. 416 00:17:52,530 --> 00:17:55,660 Per als curiosos, són utilitzat per a operacions bit a bit, 417 00:17:55,660 --> 00:17:57,197 operant en bits individuals. 418 00:17:57,197 --> 00:17:58,780 Però sí vull el parell aquí. 419 00:17:58,780 --> 00:18:01,560 I molt important és que primer, el signe igual, 420 00:18:01,560 --> 00:18:05,270 que és l'operador d'igualtat com en comparació amb l'operador d'assignació. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: I la barra vertical és situat entre el Eliminar i Retorn. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Sí. 423 00:18:09,260 --> 00:18:11,420 En un teclat típic d'Estats Units. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Sí. 425 00:18:13,190 --> 00:18:15,890 Així que anem a entrar de ple en sentències condicionals. 426 00:18:15,890 --> 00:18:18,300 En Scratch, vostè té ja s'ha vist, probablement, 427 00:18:18,300 --> 00:18:22,730 si les declaracions que li permeten comprovar si alguna cosa és cert, llavors 428 00:18:22,730 --> 00:18:23,660 fer una altra cosa. 429 00:18:23,660 --> 00:18:28,410 Així que vostè pot ser que hi hagi volgut per comprovar si el teu sprite és 430 00:18:28,410 --> 00:18:31,410 tocant alguna altra sprites o la vora de la pantalla. 431 00:18:31,410 --> 00:18:35,520 I llavors vostè pot ser que hagi volgut acabar el joc o fer una altra cosa. 432 00:18:35,520 --> 00:18:40,000 Així que la sintaxi perquè és "si (condició)." 433 00:18:40,000 --> 00:18:46,820 Així que si el teu sprite està tocant alguna cosa, llavors no està dins de les claus. 434 00:18:46,820 --> 00:18:48,980 >> Llavors tenim if-else. 435 00:18:48,980 --> 00:18:54,080 Else ens permet fer alguna cosa Si la condició que 436 00:18:54,080 --> 00:18:55,870 comprovar si al principi no és cert. 437 00:18:55,870 --> 00:19:01,530 Així que si el sprite toca el fronterera fer això, més faci alguna cosa més. 438 00:19:01,530 --> 00:19:04,030 Així que en cas contrari fer alguna cosa més. 439 00:19:04,030 --> 00:19:07,530 Llavors tenim un petit exemple per això. 440 00:19:07,530 --> 00:19:11,551 Així que si (military_time <12), que voler printf "Bon dia!" 441 00:19:11,551 --> 00:19:13,300 Else anem a printf "Bona nit!" 442 00:19:13,300 --> 00:19:14,860 Exemple bàsic. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Good. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Així que ara tenim sentències switch. 446 00:19:18,560 --> 00:19:21,960 Canvieu declaracions en general pot ens permeten fer un munt del mateix 447 00:19:21,960 --> 00:19:25,070 que acabem de parlar sobre si les declaracions. 448 00:19:25,070 --> 00:19:29,440 Per exemple, ara mateix tenim la forma general de la sentència switch 449 00:19:29,440 --> 00:19:33,870 que permet que prenguem una variable anomenada n 450 00:19:33,870 --> 00:19:37,670 i comparar-lo amb una gran quantitat d' diferents valors, que aquí estem 451 00:19:37,670 --> 00:19:40,010 han cridat Constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 És possible que tinguem molt més. 453 00:19:41,150 --> 00:19:42,930 I els que són anomenats casos. 454 00:19:42,930 --> 00:19:46,280 >> Així que si tenim un interruptor statement-- i aquesta obra 455 00:19:46,280 --> 00:19:50,580 només per integers-- tenim una variable en aquest cas que és n. 456 00:19:50,580 --> 00:19:53,840 Si la variable n és igual a Constant1, ens 457 00:19:53,840 --> 00:19:59,720 executarà algun fragment de codi o alguna cosa que volem fer. 458 00:19:59,720 --> 00:20:01,280 I llavors podríem trencar. 459 00:20:01,280 --> 00:20:04,820 Així que la ruptura vol dir que la sentència switch 460 00:20:04,820 --> 00:20:08,120 s'aturarà l'execució si n és igual a Constant1, 461 00:20:08,120 --> 00:20:09,752 i després el programa continuarà. 462 00:20:09,752 --> 00:20:11,835 Es sortirà fora de la canviar declaració i que va a 463 00:20:11,835 --> 00:20:13,520 seguir fent una altra cosa. 464 00:20:13,520 --> 00:20:17,204 >> No obstant això, si n no és igual Constant1, llavors el cas de constant2 465 00:20:17,204 --> 00:20:17,870 es comprovarà. 466 00:20:17,870 --> 00:20:21,750 Així que si n és igual constant2, aquest altre s'executarà fragment de codi. 467 00:20:21,750 --> 00:20:23,850 I després es trencarà si això és igual a ella. 468 00:20:23,850 --> 00:20:27,580 I després podem tenir també- no necessàriament, aunque-- un cas per defecte, 469 00:20:27,580 --> 00:20:32,290 que succeirà si n no és igual a qualsevol dels casos que vostè ha enumerat. 470 00:20:32,290 --> 00:20:35,400 I en el cas per defecte, també no necessiten un descans necessàriament 471 00:20:35,400 --> 00:20:39,271 perquè la sentència switch coneixerà que necessita per acabar després del default 472 00:20:39,271 --> 00:20:40,270 cas si aquest és el cas. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Però estilísticament, sempre ens posem en allà. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Sí. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Sí. 476 00:20:42,710 --> 00:20:44,750 Així que sobretot quan comencen, especialment si entre els menys 477 00:20:44,750 --> 00:20:47,458 còmoda, ho faria personalment simplement recomanen seguir amb les FI 478 00:20:47,458 --> 00:20:51,564 i IFS-vigilés i si-else-if vigilés i així successivament si només 479 00:20:51,564 --> 00:20:53,480 perquè són una mica més senzill. 480 00:20:53,480 --> 00:20:56,142 Aquesta és una bona optimització, o de vegades fins i tot estèticament 481 00:20:56,142 --> 00:20:57,350 fa que el codi sigui més llegible. 482 00:20:57,350 --> 00:20:59,599 I de fet, probablement meitat del semestre anem a veure un problema 483 00:20:59,599 --> 00:21:02,504 set on només es veu millor i més fàcil de llegir per als humans 484 00:21:02,504 --> 00:21:03,670 mitjançant l'ús d'una sentència switch. 485 00:21:03,670 --> 00:21:05,460 Però no et preocupis aferrant-se a aquesta massa aviat. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Sí. 487 00:21:05,680 --> 00:21:08,840 Si vostè té un munt de sentències if, simplement no podria ser molt llegible. 488 00:21:08,840 --> 00:21:10,965 Potser no és molt ràpid perquè vostè vagi a través d'ell. 489 00:21:10,965 --> 00:21:13,230 Així que canviar declaracions poden ser molt útil, també. 490 00:21:13,230 --> 00:21:17,900 I també, no remember-- no fer us oblideu de posar les pauses en aquest país. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: No recorda això. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Perquè llavors vostè podria caure a través d'un cas a un altre. 493 00:21:24,890 --> 00:21:27,930 Així que diguem que el cas Constant1 no tenen una sentència break en el mateix. 494 00:21:27,930 --> 00:21:31,920 Llavors podríem caure a través de constant2 cas dins. 495 00:21:31,920 --> 00:21:35,070 I nosaltres no volem fer això si que ja hem assolit cas Constant1 496 00:21:35,070 --> 00:21:37,830 i és igual a n. 497 00:21:37,830 --> 00:21:45,100 >> Així, per exemple, si tenim una variable n que conté un nombre de classe, 498 00:21:45,100 --> 00:21:48,990 i volem veure el que classe és-- si n és igual a 50, 499 00:21:48,990 --> 00:21:51,957 anem a imprimir "CS50 és Introducció a les Ciències de la Computació I. " 500 00:21:51,957 --> 00:21:53,040 Llavors anem a trencar. 501 00:21:53,040 --> 00:21:53,920 I això és tot. 502 00:21:53,920 --> 00:21:55,950 Si, però, n és igual a 51, anem 503 00:21:55,950 --> 00:21:58,494 imprimir "CS51 és Introducció de Ciències de la Computació II ". 504 00:21:58,494 --> 00:21:59,910 Llavors, de nou, anem a trencar. 505 00:21:59,910 --> 00:22:05,080 No obstant això, si a continuació, posem 124, 61, qualsevol un altre nombre que vostè podria pensar, 506 00:22:05,080 --> 00:22:06,890 o programa no va reconèixer que. 507 00:22:06,890 --> 00:22:09,010 Així que dirà: "Ho sento, estic no està familiaritzat amb aquesta classe ". 508 00:22:09,010 --> 00:22:10,009 I es trencarà. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Així que realment pot veure el if, else if, else idea aquí. 510 00:22:12,847 --> 00:22:15,430 És simplement diferent sintaxi per expressant la mateixa idea exacta. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Exactament. 512 00:22:17,690 --> 00:22:19,480 Ara tenim els nostres operadors ternaris. 513 00:22:19,480 --> 00:22:24,900 Així que els operadors ternaris tenen de tres parts-- una condició, 514 00:22:24,900 --> 00:22:27,220 alguna cosa que fer si que la condició és veritable, 515 00:22:27,220 --> 00:22:29,730 i després alguna cosa que fer si aquesta condició és falsa. 516 00:22:29,730 --> 00:22:33,400 Com podeu veure, bàsicament, la sintaxi d'això aquí. 517 00:22:33,400 --> 00:22:37,792 Tenim el signe d'interrogació, i llavors ell-- ¿què és el que anomenem això? 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: El còlon. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colom. 520 00:22:39,100 --> 00:22:39,599 Gràcies. 521 00:22:39,599 --> 00:22:41,880 Ho sento. 522 00:22:41,880 --> 00:22:45,800 Així que donem una ullada al nostre exemple de veure si podem donar sentit a esto-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Així que aquí veiem el nostre operador booleà == que compara la class_num variables 525 00:22:52,580 --> 00:22:53,100 a 50. 526 00:22:53,100 --> 00:22:55,150 Botigues Així class_num un enter. 527 00:22:55,150 --> 00:22:58,180 I si aquest sencer és igual a 50, llavors estem 528 00:22:58,180 --> 00:23:02,810 va a emmagatzemar "David Malan" a l'interior del professor cadena. 529 00:23:02,810 --> 00:23:05,912 Si el nombre de classes no igual a 50, "No està David Malan" 530 00:23:05,912 --> 00:23:07,120 serà el professor. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Gràcies. 532 00:23:08,630 --> 00:23:12,110 I així sembla equivalent a què, vostè diria, a primera vista? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: A mi em sembla com if-else declaracions. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Sí. 536 00:23:20,709 --> 00:23:24,020 I de fet, això és una espècie d'un bonic un traçador de línies, 537 00:23:24,020 --> 00:23:27,520 per així dir-ho, per a l'aplicació de exactament la lògica de if-else 538 00:23:27,520 --> 00:23:29,010 però fer-ho tot en un sol pas. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Exactament. 540 00:23:29,860 --> 00:23:30,360 Sí. 541 00:23:30,360 --> 00:23:33,520 Declaracions Així que si-més podria ocupen molt espai. 542 00:23:33,520 --> 00:23:36,283 Pot ser que siguin massa llargs per una cosa tan simple com això. 543 00:23:36,283 --> 00:23:38,350 Així això pot ser molt succinta i molt agradable. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Així que ara anem a mirar l'execució d'alguna cosa una i altra vegada, 546 00:23:46,820 --> 00:23:50,060 el que la comprovació per a una condicionar diverses vegades 547 00:23:50,060 --> 00:23:53,510 i després continuar a fer alguna cosa mentre que la condició és vertadera. 548 00:23:53,510 --> 00:23:56,740 Així que això ens porta molt bé en cicles while. 549 00:23:56,740 --> 00:23:59,270 >> A l'esquerra, tenim el nostre primer bucle while. 550 00:23:59,270 --> 00:24:03,840 Així, mentre que alguna cosa és veritat, fer alguna cosa una i altra vegada. 551 00:24:03,840 --> 00:24:08,850 Així que assegureu-vos adonar-se que la nostra condició que aquí es valida en la part superior. 552 00:24:08,850 --> 00:24:14,150 Mentre que amb la nostra segona loop-- anomenem que un do-while loop-- fem alguna cosa, 553 00:24:14,150 --> 00:24:15,890 a continuació, comprovem per una condició. 554 00:24:15,890 --> 00:24:17,980 I si aquesta condició segueix sent cert, 555 00:24:17,980 --> 00:24:20,150 tornem i fem la cosa de nou. 556 00:24:20,150 --> 00:24:23,360 Així que la principal diferència és on la condició es comprova. 557 00:24:23,360 --> 00:24:29,260 I el codi no pot ser mai executada si la condició no és 558 00:24:29,260 --> 00:24:30,430 cert amb el bucle while. 559 00:24:30,430 --> 00:24:33,050 Mentre que amb el do-while llaç, tenim el codi 560 00:24:33,050 --> 00:24:35,380 que sempre s'executa almenys una vegada. 561 00:24:35,380 --> 00:24:37,470 I a continuació, mentre que la condició segueix sent cert, 562 00:24:37,470 --> 00:24:39,960 podem tornar enrere i repetir de nou a l'interior. 563 00:24:39,960 --> 00:24:43,625 Llavors, per què creus que usaríem 1 do-while en un bucle while? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Dreta. 566 00:24:48,720 --> 00:24:52,600 Així que si volem demanar al usuari d'algun tipus d'entrada, 567 00:24:52,600 --> 00:24:55,400 si volem demanar-los d'entrar al seu nom, 568 00:24:55,400 --> 00:24:57,342 volem almenys demanar-los una vegada. 569 00:24:57,342 --> 00:24:59,050 I si entren aquest nom, no estem 570 00:24:59,050 --> 00:25:00,740 va a demanar de nou perquè ja la coneixem. 571 00:25:00,740 --> 00:25:02,656 Però si no entren el seu nom, o si 572 00:25:02,656 --> 00:25:05,787 entrar en alguna cosa que és òbviament no és un nom, 573 00:25:05,787 --> 00:25:08,120 encara volem continuar preguntant pel seu nom. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: I en la conferència que va tenir 1 així amb el aconseguir int positiu 575 00:25:10,710 --> 00:25:13,550 exemple, on no hi ha res comprovar en primer lloc perquè no té encara 576 00:25:13,550 --> 00:25:14,190 aconseguit un int. 577 00:25:14,190 --> 00:25:16,680 Així que volem fer esto-- aconseguir un int del user-- 578 00:25:16,680 --> 00:25:18,860 a continuació, comprovar que, potser, una i altra vegada i una altra. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Exactament. 580 00:25:21,030 --> 00:25:22,060 Per loops-- acord. 581 00:25:22,060 --> 00:25:25,842 Per bucles poden permetre que fem gairebé exactament el mateix, també. 582 00:25:25,842 --> 00:25:27,300 De fet, és exactament el mateix. 583 00:25:27,300 --> 00:25:30,190 Així que no hi ha res a que pot fer amb els bucles 584 00:25:30,190 --> 00:25:32,840 que no seria capaç de a veure amb cicles while. 585 00:25:32,840 --> 00:25:36,900 Però per als bucles pot semblar una mica poc més complicat sintàcticament 586 00:25:36,900 --> 00:25:39,730 perquè tenen tres parts dins del que 587 00:25:39,730 --> 00:25:42,990 va ser abans només el condicions, amb bucles de temps. 588 00:25:42,990 --> 00:25:48,260 Així que la primera part que el mar, la més a l'esquerra, tenim "int nans = 0." 589 00:25:48,260 --> 00:25:51,490 Així que aquí és on ens inicialitzar la nostra variable. 590 00:25:51,490 --> 00:25:55,210 >> Llavors tenim un punt i coma i "nans <7." 591 00:25:55,210 --> 00:25:57,100 Així que aquí és on fos condició que realment és. 592 00:25:57,100 --> 00:26:00,170 Així que això és el que hauríem posar només en el temps loop-- 593 00:26:00,170 --> 00:26:01,880 "mentre que els nans <7." 594 00:26:01,880 --> 00:26:05,380 Aquí, que va en el mitjà del nostre bucle for. 595 00:26:05,380 --> 00:26:07,190 Així que "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 I després la última part és "nans ++" que és on ens actualitzem la nostra variable. 597 00:26:11,350 --> 00:26:15,470 Així que l'important és adonar-se que aquest 598 00:26:15,470 --> 00:26:22,010 va a anar a través d'aquest bucle set vegades i executar set vegades. 599 00:26:22,010 --> 00:26:24,020 Així que tenim de set nans, i són tots 600 00:26:24,020 --> 00:26:26,020 dirà: "Jo sóc aquí per ajudar-lo, Blanca Neus " 601 00:26:26,020 --> 00:26:28,860 perquè estan a punt per ajudar a Blancaneu. 602 00:26:28,860 --> 00:26:33,600 >> Amb bucles while, que haurien fet la inicialització i l'actualització 603 00:26:33,600 --> 00:26:37,490 no dins de la condició, de nou, però ja sigui abans o dins del bucle while 604 00:26:37,490 --> 00:26:40,210 per assegurar-se que nosaltres-- perquè sempre necessitem aquestes parts. 605 00:26:40,210 --> 00:26:42,835 Així que per assegurar-se que tenim ells, ens ho hem encara els afegit 606 00:26:42,835 --> 00:26:44,580 des d'ara, no dins dels parèntesis. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: I pel que sembla com-- en la conferència, per exemple, 608 00:26:47,288 --> 00:26:50,250 Jo gairebé sempre ús, com, ii n i les variables bastant avorrides. 609 00:26:50,250 --> 00:26:53,050 Sembla que es pot utilitzar més enginyosament anomenat les variables, també. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Sí, en realitat és molt agradable utilitzar variables una mica més descriptius 611 00:26:56,300 --> 00:26:59,400 degut sobretot si algú més és la lectura del seu code-- potser vostè és alumne 612 00:26:59,400 --> 00:27:00,940 o si vostè està col·laborant amb somebody-- 613 00:27:00,940 --> 00:27:03,481 vostè vol assegurar-se que Entens el que estàs fent. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> D'ACORD. 616 00:27:06,400 --> 00:27:11,435 Així que això és una cosa molt funky-- bucle for dins d'un bucle for. 617 00:27:11,435 --> 00:27:13,060 No sé si ens hem vist això abans. 618 00:27:13,060 --> 00:27:13,830 Probablement no. 619 00:27:13,830 --> 00:27:17,750 Però en realitat podem tenir esto-- així bucles en lloc de bucles. 620 00:27:17,750 --> 00:27:25,130 Així que, algú vol caminar potser mi a través del que està passant aquí? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: vaig a prendre una punyalada. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: OK. 625 00:27:30,636 --> 00:27:34,690 Així, spoiler-- volem imprimir el material que està a la cantonada inferior dreta 626 00:27:34,690 --> 00:27:35,190 allà. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Correcte. 628 00:27:35,450 --> 00:27:35,710 Si si. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: Així que acabem de ja que la producció de la mostra allà. 630 00:27:38,043 --> 00:27:42,590 Així que puc deduir de la bucle superior que ets 631 00:27:42,590 --> 00:27:45,680 iterar sobre les files bucle més extern, per així dir-ho. 632 00:27:45,680 --> 00:27:48,107 I estàs iterar sobre columnes amb el bucle més interior. 633 00:27:48,107 --> 00:27:50,190 I de manera intuïtiva, aquesta ha d'esperar té sentit 634 00:27:50,190 --> 00:27:52,070 perquè per naturalesa de tots els programes que hem vist 635 00:27:52,070 --> 00:27:55,570 abans, printf, que és el funció que estem fent servir, en última instància, 636 00:27:55,570 --> 00:27:58,190 té la capacitat d'imprimir coses essencialment línia per línia. 637 00:27:58,190 --> 00:27:59,960 Igual que, una vegada que hagi emesos una nova línia, hi ha 638 00:27:59,960 --> 00:28:02,876 sense doblegar l'esquena i la impressió d'una cosa major a la pantalla, almenys 639 00:28:02,876 --> 00:28:04,530 no usar printf com aquest. 640 00:28:04,530 --> 00:28:07,750 >> I així, en aquest sentit, es fa sentit que el bucle més extern 641 00:28:07,750 --> 00:28:10,930 s'ha de referir a les files perquè per a cada fila donada, 642 00:28:10,930 --> 00:28:13,650 vostè va a voler imprimir XXXXX, i després 643 00:28:13,650 --> 00:28:15,520 passar a la següent fila, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Així files són el primer. 645 00:28:17,317 --> 00:28:19,150 I després dins de cada fila, imprimir columnes. 646 00:28:19,150 --> 00:28:21,160 Si es va tractar de fer-ho de la contrari, és probable que no ho faria 647 00:28:21,160 --> 00:28:21,690 sortir com pensa. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Sí. 649 00:28:22,190 --> 00:28:24,950 No podíem tornar a la fila anterior amb printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: ¿I què és interessant per xerrada d'avui sobre l'abast, 651 00:28:27,658 --> 00:28:31,600 en realitat, és que la fila és un int això és declarat en el bucle superior. 652 00:28:31,600 --> 00:28:34,030 Però cal notar que encara és dins, per així dir-ho, 653 00:28:34,030 --> 00:28:35,982 les claus que immediatament seguir, 654 00:28:35,982 --> 00:28:38,440 tot i que no és tècnicament dins d'aquestes claus. 655 00:28:38,440 --> 00:28:41,750 Així fila està en l'àmbit de la totalitat del fragment de codi, 656 00:28:41,750 --> 00:28:44,690 tant dins el cicle for exterior ia l'interior de l'interior de bucle. 657 00:28:44,690 --> 00:28:48,050 Però per contra, on és la columna en el seu abast? 658 00:28:48,050 --> 00:28:49,810 La columna variable? 659 00:28:49,810 --> 00:28:51,310 Sí, només en el bucle interior. 660 00:28:51,310 --> 00:28:54,280 I això està bé, perquè no accedim fora de les seves claus. 661 00:28:54,280 --> 00:28:57,280 Tot el que fem és imprimir un nou línia al final allà. 662 00:28:57,280 --> 00:28:58,670 Així que, de fet, està bé. 663 00:28:58,670 --> 00:29:03,740 >> Així que això té l'efecte, sembla que, de fer les tres files i quatre columnes. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Correcte. 665 00:29:04,370 --> 00:29:06,270 Així que primer anem a través de la nostra primera fila. 666 00:29:06,270 --> 00:29:10,520 I just en la nostra primera fila, nosaltres fem la quatre columnes dins de la primera fila. 667 00:29:10,520 --> 00:29:11,980 Així que imprimim a terme quatre de X. 668 00:29:11,980 --> 00:29:15,800 I després podem sortir del bucle for, ja ja hem imprimim 4 de X. 669 00:29:15,800 --> 00:29:17,100 I imprimim una nova línia. 670 00:29:17,100 --> 00:29:19,920 I després anem a través de la mateix procés per a dues files més 671 00:29:19,920 --> 00:29:21,170 per fer un total de tres. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: I val la pena assenyalar que és simplement un artefacte de la font, el fet 673 00:29:23,530 --> 00:29:25,680 que la sortida de la mostra sembla molt més alt, 674 00:29:25,680 --> 00:29:27,520 com si encara hi ha més files que columnes. 675 00:29:27,520 --> 00:29:29,824 Però és només perquè el X és més alt que ample. 676 00:29:29,824 --> 00:29:32,740 Això és tot el que està passant allà, més l'espai en blanc entre línies. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Correcte. 678 00:29:33,281 --> 00:29:34,792 Fresc. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: D'acord. 680 00:29:35,750 --> 00:29:39,830 Així que una mirada ràpida a un problema estableix una, prendre alguna pregunta, i després aixecar la sessió? 681 00:29:39,830 --> 00:29:40,330 Tot bé. 682 00:29:40,330 --> 00:29:43,164 Així que en el problema va fixar un, hi ha de tres principals desafiaments, en última instància. 683 00:29:43,164 --> 00:29:44,955 Però primer, trobareu que el problema establert 684 00:29:44,955 --> 00:29:47,900 especificació, igual que amb molts el conjunts de processadors d'aquesta tardor, va a caminar a 685 00:29:47,900 --> 00:29:50,691 a través d'alguns exercicis d'escalfament, assenyalar alguns recursos 686 00:29:50,691 --> 00:29:52,440 que pot o no han vist ja. 687 00:29:52,440 --> 00:29:54,440 Per exemple, CS50 té un conjunt de pantalons curts, 688 00:29:54,440 --> 00:29:56,481 que són vídeos curts, no a diferència d'això, però que 689 00:29:56,481 --> 00:29:58,460 són specific-- mateix tema potser cinc minuts, 690 00:29:58,460 --> 00:30:02,360 10 minuts de durada sobre els bucles o en condicions o en algoritmes 691 00:30:02,360 --> 00:30:04,125 o posterior en més temes avançats, també. 692 00:30:04,125 --> 00:30:06,000 I en general, integrem aquells en el problema 693 00:30:06,000 --> 00:30:07,950 jocs perquè els estudiants tenir un recurs amb el qual 694 00:30:07,950 --> 00:30:10,840 per revisar el material que podria tenir ja sorgit en conferència o secció. 695 00:30:10,840 --> 00:30:13,220 Però d'aquesta manera és més centrat i molt més al seu abast. 696 00:30:13,220 --> 00:30:15,928 >> També tendim a incrustar en el problema estableix coses trucades tutorials. 697 00:30:15,928 --> 00:30:20,790 Així que gairebé tots els exemples que faig en la conferència, a l'escenari aquí, també 698 00:30:20,790 --> 00:30:24,565 s'han disparat a la cambra en avançar en una més lenta, 699 00:30:24,565 --> 00:30:28,760 un recorregut íntim per mi en el meu portàtil d'aquest codi, línia per línia 700 00:30:28,760 --> 00:30:31,427 de manera que a la classe, sovint vaig llegir-lo a través d'alguna cosa o algú 701 00:30:31,427 --> 00:30:33,260 es intercalar amb una respondre a una pregunta. 702 00:30:33,260 --> 00:30:35,820 Però no s'enfonsa necessàriament per tots en l'audiència. 703 00:30:35,820 --> 00:30:38,230 Així trobaràs codi tutorials per a la majoria dels exemples 704 00:30:38,230 --> 00:30:40,950 el que fem aquí a la conferència perquè pot caminar a través d'ell al seu propi ritme 705 00:30:40,950 --> 00:30:43,580 i rebobinat o avanç ràpid o ometre per complet, si ho desitja. 706 00:30:43,580 --> 00:30:45,356 >> Hi ha sovint alguns preguntes d'escalfament que 707 00:30:45,356 --> 00:30:47,105 demanar-li que ordenar d' reforçar aquest material 708 00:30:47,105 --> 00:30:50,250 i assegureu-vos que vostè és còmode abans de continuar amb la resta del conjunt de processadors. 709 00:30:50,250 --> 00:30:51,700 I després, per descomptat, està el propi conjunt de processadors. 710 00:30:51,700 --> 00:30:53,450 I una de les coses que deliberadament 711 00:30:53,450 --> 00:30:57,202 fer-ho en CS50 és gairebé tots sense interès o intel·lectualment interessant 712 00:30:57,202 --> 00:30:58,910 pas mecànic que és possible que hagi de fer 713 00:30:58,910 --> 00:31:00,519 està gairebé sempre molt ben documentat. 714 00:31:00,519 --> 00:31:03,560 En el transcurs del termini, anem a començar a fer preguntes més retòrics 715 00:31:03,560 --> 00:31:06,187 com recordar com fer això o allò? 716 00:31:06,187 --> 00:31:08,520 Però, en general, trobareu que els conjunts de problemes li aconsegueixen 717 00:31:08,520 --> 00:31:10,269 a través de la mecànica de manera que alguna cosa 718 00:31:10,269 --> 00:31:14,160 els interessants, reptes intel·lectuals són en última instància, d'esquerra a que l'estudiant. 719 00:31:14,160 --> 00:31:17,390 >> Amb això dit, Zamyla, als quals mantenen referint avui en conferència, 720 00:31:17,390 --> 00:31:20,190 és un del nostre personal de tota la vida membre de què també té tutorials 721 00:31:20,190 --> 00:31:24,520 en problemes específics PSet com Mario i cobdiciós, encara que no regar aquest any. 722 00:31:24,520 --> 00:31:26,540 I és en els Tutorials que sovint 723 00:31:26,540 --> 00:31:29,450 ofereix alguns consells i trucs per la forma de procedir, no dient que 724 00:31:29,450 --> 00:31:31,810 exactament què fer, però rather-- com una condició, 725 00:31:31,810 --> 00:31:35,200 si voluntat-- que li dóna almenys un parell d'idees perquè li toca a vostè, 726 00:31:35,200 --> 00:31:37,830 en última instància, per a decidir com acostar-s'hi. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: com a espècie d'alt nivell comprensió de la lògica del que 728 00:31:41,200 --> 00:31:42,220 li demanem que fer. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Exactament. 730 00:31:42,485 --> 00:31:44,190 I, de fet, de Zamyla tutorials estan destinats 731 00:31:44,190 --> 00:31:46,190 per respondre a la freqüència pregunta d'on 732 00:31:46,190 --> 00:31:48,610 faig vaig començar, especialment quan aquests llargs especificacions estan 733 00:31:48,610 --> 00:31:51,960 una mica descoratjador donat tot el text i les imatges que tenen en ells. 734 00:31:51,960 --> 00:31:54,890 >> Així water.c, trobarà després que vostè l'ha completat, 735 00:31:54,890 --> 00:31:56,920 en realitat és relativament senzill. 736 00:31:56,920 --> 00:31:58,882 Absolutament són un grapat de vostès va a colpejar 737 00:31:58,882 --> 00:32:01,840 els seus caps contra la paret tractant esbrinar per què no és la compilació 738 00:32:01,840 --> 00:32:03,450 o per què no està funcionant correctament. 739 00:32:03,450 --> 00:32:05,040 Però una vegada que hagi acabat amb ella i una vegada que hagi 740 00:32:05,040 --> 00:32:07,620 passat algun temps lluitant amb qualsevol dels errors que pugui tenir, 741 00:32:07,620 --> 00:32:09,490 trobareu que és un programa molt curt. 742 00:32:09,490 --> 00:32:11,770 Es pot fer en tan sols uns pocs línies de codi, la majoria dels quals 743 00:32:11,770 --> 00:32:15,030 que hem vist aquí a la conferència ja, si que es muntin els blocs de construcció adequades. 744 00:32:15,030 --> 00:32:16,810 >> I com li suggerim aquí, va demanar 745 00:32:16,810 --> 00:32:22,250 especificar quants minuts algú està prenent una dutxa al campus. 746 00:32:22,250 --> 00:32:24,779 Especifiquem en el problema ajustar la taxa de flux d'aigua 747 00:32:24,779 --> 00:32:27,320 en, com, una dutxa de baix flux cap, igual que el clip de Seinfeld 748 00:32:27,320 --> 00:32:29,180 vam veure ahir o la mateixa oposat. 749 00:32:29,180 --> 00:32:30,971 I després només has per fer una mica de matemàtiques, 750 00:32:30,971 --> 00:32:34,710 realmente-- aritmètica utilitzant C per explicar nosaltres com molts, aproximadament, ampolles d'aigua 751 00:32:34,710 --> 00:32:37,720 és que equival a si som prenent una dutxa n minuts. 752 00:32:37,720 --> 00:32:41,389 >> Ara, en mario.c, això va per ser un programa lleugerament més llarg. 753 00:32:41,389 --> 00:32:42,930 Encara no va a estar tant de temps. 754 00:32:42,930 --> 00:32:45,130 A només unes poques línies més llargues que water.c. 755 00:32:45,130 --> 00:32:48,230 Però va ser l'oportunitat per recrear l'antiga escola Mario 756 00:32:48,230 --> 00:32:50,670 piràmide de Super Mario Germans o algun seguiment. 757 00:32:50,670 --> 00:32:53,510 No va a semblar més bonica o tan colorit com que un allà. 758 00:32:53,510 --> 00:32:56,468 Només utilitzarem petits hashtags com el que tenim aquí a la pantalla 759 00:32:56,468 --> 00:32:58,120 l'ús de text ASCII. 760 00:32:58,120 --> 00:33:00,362 Però va aproximar la mateixa idea. 761 00:33:00,362 --> 00:33:02,570 I serà un exercici que a primera vista 762 00:33:02,570 --> 00:33:04,720 sembla bastant just simple-- imprimir una senzilla piràmide. 763 00:33:04,720 --> 00:33:07,345 Però hi ha un parell de característiques aquí que són interessants. 764 00:33:07,345 --> 00:33:12,400 Observi que la vora més a la dreta de la piràmide en realitat té l'amplada de dos. 765 00:33:12,400 --> 00:33:14,570 Així que ha de dos iguals columnes d'altura, els quals 766 00:33:14,570 --> 00:33:16,804 fa que es requereix una mica de mica de pensament per fer 767 00:33:16,804 --> 00:33:19,720 Segur que aconsegueix que tota la raó, ja que en lloc de només un angle perfectament 768 00:33:19,720 --> 00:33:20,220 la línia. 769 00:33:20,220 --> 00:33:23,340 Així que això és una mica d'un cas cantonada però coincideix amb el joc real. 770 00:33:23,340 --> 00:33:27,610 >> I també és no evident a primera vista com imprimir l'espai en blanc. 771 00:33:27,610 --> 00:33:29,430 Així que quan em veig en el mostra de sortida aquí-- 772 00:33:29,430 --> 00:33:32,440 i també en què spec-- tipus de sembla a un rectangle, 773 00:33:32,440 --> 00:33:35,120 sinó una diagonal del rectangle ha estat tallat, 774 00:33:35,120 --> 00:33:37,320 i és només espais en blanc, per així dir-ho. 775 00:33:37,320 --> 00:33:40,100 I així una freqüència fetes pregunta aquí és sempre bo, 776 00:33:40,100 --> 00:33:43,302 Com em moc els hashtags a la dreta? 777 00:33:43,302 --> 00:33:44,760 O com puc imprimir els espais en blanc? 778 00:33:44,760 --> 00:33:46,860 I en realitat és més fàcil que la majoria dels estudiants pensen. 779 00:33:46,860 --> 00:33:47,360 Oi? 780 00:33:47,360 --> 00:33:51,620 Vostè pot aproximar visualment amb només colpejar la barra d'espai una o dues vegades 781 00:33:51,620 --> 00:33:52,700 o tres vegades. 782 00:33:52,700 --> 00:33:56,260 >> I així, tot i que amb printf gairebé sempre imprimir una corda o int 783 00:33:56,260 --> 00:33:59,950 o una paraula com "hola, món "o una sèrie de paraules, 784 00:33:59,950 --> 00:34:03,560 també pot simplement imprimir cita, espai, cap de la cita. 785 00:34:03,560 --> 00:34:06,320 I això realment donar que un espai en blanc allà. 786 00:34:06,320 --> 00:34:08,330 Així que tingues-ho en compte i no pensar massa això. 787 00:34:08,330 --> 00:34:10,570 Segur que ha de decidir fila per fila per fila, 788 00:34:10,570 --> 00:34:14,280 no molt diferent de la seva exemple, un moment fa, quants dels 789 00:34:14,280 --> 00:34:18,420 columnes han de ser espais en blanc i quants d'ells ha de ser hashtags. 790 00:34:18,420 --> 00:34:21,560 Prendrà una mica de temps, però és en última instància, un trencaclosques de la lògica de classes. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Sí. 792 00:34:22,060 --> 00:34:25,060 Però la lògica d'anar fila per fila serà molt útil en aquest cas. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Sí. 794 00:34:25,810 --> 00:34:28,976 Crec que el codi d'exemple que gave-- tot encara que no era un programa complet. 795 00:34:28,976 --> 00:34:34,247 Vostè encara necessita int i principal i sense efecte i #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 una gran quantitat de les coses de la conferència. 797 00:34:35,580 --> 00:34:37,629 Però els blocs de construcció semblen ser-hi. 798 00:34:37,629 --> 00:34:39,920 I després, finalment, és una cosa una mica més algorísmica. 799 00:34:39,920 --> 00:34:43,210 Així que resulta que cada vegada que anar a CVS o qualsevol botiga de conveniència 800 00:34:43,210 --> 00:34:47,810 i algú et dóna en la factures caixer o monedes com el canvi, 801 00:34:47,810 --> 00:34:50,620 resulta que ells, els éssers humans, si o no ho sàpiguen o no, 802 00:34:50,620 --> 00:34:53,300 probablement estan utilitzant el que hi ha anomenat un algoritme cobdiciós, 803 00:34:53,300 --> 00:34:58,170 pel qual si que se li deu, per exemple, $ 21 en canvi, perquè per alguna raó 804 00:34:58,170 --> 00:35:01,580 vostè va comprar una cosa molt barat amb una gran factura al CVS, 805 00:35:01,580 --> 00:35:05,910 que seria molt molest si la caixer li va donar 21 habitacions individuals o, pitjor 806 00:35:05,910 --> 00:35:07,629 però, una gran quantitat de monedes. 807 00:35:07,629 --> 00:35:10,670 Més aviat, el que una persona raonable és probablement va a fer és que van 808 00:35:10,670 --> 00:35:14,224 per prendre un $ 20 i després un projecte de llei de $ 1, i de lliurar només dos projectes de llei en aquest cas. 809 00:35:14,224 --> 00:35:17,390 MARIA: ¿Així que estem tractant de minimitzar el canvi que es donen de nou a vostè. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Exactament. 811 00:35:17,850 --> 00:35:19,540 I mateix acord amb les monedes, també. 812 00:35:19,540 --> 00:35:23,040 Si vostè li deu, per exemple, $ 0.50, esperem que no vols 50 centaus. 813 00:35:23,040 --> 00:35:25,500 En el seu lloc, vol de dos quartes parts, per exemple. 814 00:35:25,500 --> 00:35:27,540 Ara bé, això fa suposar que el caixer té 815 00:35:27,540 --> 00:35:29,940 n'hi ha prou de tota denominació que ell o ella pot ser que vulgui donar-li. 816 00:35:29,940 --> 00:35:32,148 Però nosaltres permetem que assumeixis tant en el problema. 817 00:35:32,148 --> 00:35:35,590 I l'objectiu, en darrera instància, és implementar en codi C un algorisme cobdiciós. 818 00:35:35,590 --> 00:35:37,344 Així es permet que l'usuari per escriure a la quantitat 819 00:35:37,344 --> 00:35:40,510 canviar ell o ella se li ha amb dòlars i centaus, una mena de punt flotant 820 00:35:40,510 --> 00:35:41,590 valor probable. 821 00:35:41,590 --> 00:35:45,530 I llavors vostè ha de fer els càlculs i esbrinar algorítmicament, bé, 822 00:35:45,530 --> 00:35:49,020 quantes monedes puc donar que mínimament per donar-li 823 00:35:49,020 --> 00:35:50,270 exactament aquesta quantitat de canvi. 824 00:35:50,270 --> 00:35:53,470 Però no serà un algunes parts difícils aquí, oi? 825 00:35:53,470 --> 00:35:56,236 Igual que hi ha el conjunt tema imprecisió. 826 00:35:56,236 --> 00:35:56,860 MARIA: Exactament. 827 00:35:56,860 --> 00:35:59,114 Així que el punt flotant valors tenen imprecisió. 828 00:35:59,114 --> 00:36:00,780 És que parlem d'això en la conferència d'avui? 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Vam fer el l'última vegada en la conferència. 830 00:36:02,340 --> 00:36:03,506 Parlem d'imprecisió. 831 00:36:03,506 --> 00:36:08,840 I no vol enganyar l'usuari de la quantitat de canvi que ell o ella se li deu. 832 00:36:08,840 --> 00:36:11,290 I així el tutorial, en l'especificació de conjunt de problemes, 833 00:36:11,290 --> 00:36:15,990 reflexionar, en última instància, pel que fa a com es pot mitigar els imprecisió 834 00:36:15,990 --> 00:36:17,280 errors, potencialment. 835 00:36:17,280 --> 00:36:21,050 És evitable, sens dubte, per les entrades de les que estem parlant. 836 00:36:21,050 --> 00:36:23,590 I, de fet, pennies-- potser anem a ajornar a Zamyla, 837 00:36:23,590 --> 00:36:25,136 Crec que, per als trucs allà. 838 00:36:25,136 --> 00:36:27,760 Així que, finalment, hi ha una la progressió dels problemes d'aquesta setmana, 839 00:36:27,760 --> 00:36:30,700 el primer dels quals és bastant petita, a continuació, mitjà, i després una mica més gran. 840 00:36:30,700 --> 00:36:33,200 Però tots ells utilitzar l'edifici quadres de la setmana passada, 841 00:36:33,200 --> 00:36:35,280 d'aquesta supersección, problema especificació establerta 842 00:36:35,280 --> 00:36:36,710 el posa en innombrables recursos. 843 00:36:36,710 --> 00:36:41,000 Però tot i així, si és que el que lluita, especialment entre els menys còmodes 844 00:36:41,000 --> 00:36:42,917 sense coneixements previs, arribat a les hores d'oficina 845 00:36:42,917 --> 00:36:44,958 el dilluns i dimarts i Dimecres i dijous. 846 00:36:44,958 --> 00:36:46,950 Anar a CS50 Parli a través de la pàgina web de l'assignatura, 847 00:36:46,950 --> 00:36:49,080 a través de la qual pots xatejar amb el personal i els companys de classe. 848 00:36:49,080 --> 00:36:51,670 >> Però en última instància, crec que el millor consell és simplement començar d'hora. 849 00:36:51,670 --> 00:36:54,711 No és el tipus de classe que ha d'iniciar conjunts de processadors dimecres 850 00:36:54,711 --> 00:36:56,640 nit, o pitjor nit de dijous. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: El meu millor consell és haver començat dilluns. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: Dilluns. 853 00:36:59,900 --> 00:37:02,490 Així que si vostè no ha començat ya-- no. 854 00:37:02,490 --> 00:37:04,732 Però fins i tot si no el dilluns, després el dimarts. 855 00:37:04,732 --> 00:37:05,690 Com més aviat, millor. 856 00:37:05,690 --> 00:37:08,605 I aquesta és la raó per la Per descomptat té tants dies de retard és 857 00:37:08,605 --> 00:37:10,535 per donar-li una mica d'un pressió psicològica 858 00:37:10,535 --> 00:37:13,684 per començar abans, però encara deixa coses rellisquin quan les coses prenen més temps 859 00:37:13,684 --> 00:37:14,350 del que s'esperava. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: I vostè vol fer ús de horari d'oficina el més que pot, també. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Alguna pregunta? 862 00:37:20,291 --> 00:37:20,790 Tot bé. 863 00:37:20,790 --> 00:37:22,930 Bé, per què no aixecar la sessió aquí? 864 00:37:22,930 --> 00:37:23,487