1 00:00:08,280 --> 00:00:09,020 [Powered by Google Translate] ZAMYLA CHAN: Tot correcte tothom,. 2 00:00:09,020 --> 00:00:11,130 Benvingut al Tutorial 1. 3 00:00:11,130 --> 00:00:13,950 Aquest tutorial és el conjunt de processadors 1, que és C. Espero que els 4 00:00:13,950 --> 00:00:16,540 tots es van divertir amb els seus projectes de Scratch. 5 00:00:16,540 --> 00:00:18,430 Així que ara en aquest tutorial, estem en realitat serà 6 00:00:18,430 --> 00:00:21,580 capaç d'entrar en C, entrar a escriure una mica de codi màquina. 7 00:00:21,580 --> 00:00:24,750 Així que si no estaven en Tutorial 0, llavors aquests 8 00:00:24,750 --> 00:00:26,330 tutorials realment - anem a caminar a través de la 9 00:00:26,330 --> 00:00:29,500 conjunt de problemes, parlar a través d'alguns consells i tècniques comuns 10 00:00:29,500 --> 00:00:30,430 que pot utilitzar. 11 00:00:30,430 --> 00:00:32,960 Anem a trencar l'assignació fins a trossets manejables, de manera que 12 00:00:32,960 --> 00:00:35,500 vostès poden començar i és d'esperar 13 00:00:35,500 --> 00:00:37,470 entendre com fer-ho. 14 00:00:37,470 --> 00:00:38,050 >> Bé. 15 00:00:38,050 --> 00:00:42,280 Així conjunt de processadors 1. 16 00:00:42,280 --> 00:00:46,200 Els conjunts de processadors d'enguany tindrà una estructura en què la primera - 17 00:00:46,200 --> 00:00:48,930 que serà una secció de preguntes, una sèrie de 18 00:00:48,930 --> 00:00:51,120 preguntes que realment també l'ajudaran a començar amb 19 00:00:51,120 --> 00:00:53,840 el conjunt de processadors, ajudarà a practicar algunes tècniques que vostè necessita. 20 00:00:53,840 --> 00:00:55,950 I així aquestes preguntes, jo no vaig a cobrir en el 21 00:00:55,950 --> 00:00:59,630 pas a pas, perquè en la seva secció, el seu ensenyament assignat 22 00:00:59,630 --> 00:01:01,630 company en realitat va a caminar a través dels 23 00:01:01,630 --> 00:01:02,620 preguntes amb vostè. 24 00:01:02,620 --> 00:01:04,370 Al final de la secció, a peu amb el 25 00:01:04,370 --> 00:01:07,200 respostes a aquestes preguntes, però també amb la confiança que 26 00:01:07,200 --> 00:01:10,340 vostè pot posar en pràctica algunes de les característiques que vostè necessita 27 00:01:10,340 --> 00:01:12,480 per a l'última part de la conjunt de processadors. 28 00:01:12,480 --> 00:01:15,900 >> Pset 1 constitueix Mario. 29 00:01:15,900 --> 00:01:19,000 I això és un programa petit i divertit en el qual essencialment 30 00:01:19,000 --> 00:01:24,360 escriure i imprimir una piràmide enmig de la típica escena de Mario. 31 00:01:24,360 --> 00:01:27,150 I a continuació, la segona part de la conjunt de processadors s'anomena Greedy. 32 00:01:27,150 --> 00:01:29,850 I així, en Greedy que actuen fonamentalment com un cobdiciós 33 00:01:29,850 --> 00:01:32,780 caixer, en què si algú ens dóna una quantitat de diners 34 00:01:32,780 --> 00:01:38,730 que volem, podem calcular la quantitat mínima de monedes que 35 00:01:38,730 --> 00:01:40,840 podem tornar a ells encara els dóna aquesta quantitat. 36 00:01:44,080 --> 00:01:44,420 >> Està bé. 37 00:01:44,420 --> 00:01:46,970 Així que cada tutorial tindrà una caixa d'eines. 38 00:01:46,970 --> 00:01:50,650 I de nou, no es pot utilitzar totes les eines d'aquesta 39 00:01:50,650 --> 00:01:53,080 caixa d'eines o usar tots ells. 40 00:01:53,080 --> 00:01:54,550 En qualsevol cas, és molt bo saber el que 41 00:01:54,550 --> 00:01:55,680 que està equipat amb. 42 00:01:55,680 --> 00:01:59,990 Així que tenim l'aparell CS50, que vaig a mostrar que vostès i 43 00:01:59,990 --> 00:02:01,350 presentar-li a això. 44 00:02:01,350 --> 00:02:05,710 A continuació, també en general, un bon estil és definitivament un dels nostres 45 00:02:05,710 --> 00:02:07,080 eines més importants. 46 00:02:07,080 --> 00:02:10,759 Estil essencialment es refereix a com és llegible el codi? 47 00:02:10,759 --> 00:02:12,750 Quan algú se'n va i llegeix el codi, tenen 48 00:02:12,750 --> 00:02:13,610 una vida fàcil? 49 00:02:13,610 --> 00:02:14,630 Poden entendre? 50 00:02:14,630 --> 00:02:16,610 És elegant? 51 00:02:16,610 --> 00:02:21,750 Llavors parlarem sobre com baixar l'entrada de l'usuari vàlid en el seu 52 00:02:21,750 --> 00:02:26,430 programa perquè tant Mario i cobdiciós, haurà de 53 00:02:26,430 --> 00:02:31,660 demanar a l'usuari que introdueixi i donar-li algun tipus de nombre. 54 00:02:31,660 --> 00:02:35,480 Així que volem assegurar-nos que el nombre és vàlid. 55 00:02:35,480 --> 00:02:39,010 Llavors recordi en Scratch, vam tenir blocs com ara repetició, 56 00:02:39,010 --> 00:02:42,300 Repetiu fins que, o esperar, o per sempre. 57 00:02:42,300 --> 00:02:45,880 Així que anem a la classe de traduir això en C i ara 58 00:02:45,880 --> 00:02:49,750 mirar com bucles for, while i do-while. 59 00:02:49,750 --> 00:02:54,330 Després també tenim també haurà de mostrar els valors de nou a la 60 00:02:54,330 --> 00:02:56,500 pantalla, ja sigui en Mario o en Greedy. 61 00:02:56,500 --> 00:03:01,150 I el que anem a parlar sobre com imprimir coses de les cadenes a 62 00:03:01,150 --> 00:03:03,070 sencers i carrosses. 63 00:03:03,070 --> 00:03:05,250 I, finalment, parlarem de pseudocodi, una realitat 64 00:03:05,250 --> 00:03:07,550 concepte important que cal recordar en aquest curs. 65 00:03:07,550 --> 00:03:11,130 El que em sembla més m'ajuda amb els butlletins de problemes és pensar i 66 00:03:11,130 --> 00:03:14,260 descriure el que vull fer abans de pensar en qualsevol C. 67 00:03:14,260 --> 00:03:15,640 Però just descriure l'acció. 68 00:03:15,640 --> 00:03:19,100 Així que és una mena de pseudo entre Anglès i C, tipus de 69 00:03:19,100 --> 00:03:22,980 descrivint els processos sense la sintaxi correcta però 70 00:03:22,980 --> 00:03:24,490 proporcionar una estructura prou bo. 71 00:03:24,490 --> 00:03:27,460 I així tindré alguns exemples de pseudocodi per a vostè també 72 00:03:27,460 --> 00:03:28,710 en aquest tutorial. 73 00:03:31,610 --> 00:03:31,940 >> Bé. 74 00:03:31,940 --> 00:03:35,620 Llavors, què treballarem amb l'aparell CS50. 75 00:03:35,620 --> 00:03:38,840 Bàsicament es tracta d'una màquina virtual que executa una mena de 76 00:03:38,840 --> 00:03:40,780 ordinador dins del seu propi equip. 77 00:03:40,780 --> 00:03:42,080 I això té un munt de beneficis. 78 00:03:42,080 --> 00:03:44,780 Una d'elles és que es tracta d'un preset amb moltes de les eines que vostè va a 79 00:03:44,780 --> 00:03:45,980 necessita per CS50. 80 00:03:45,980 --> 00:03:47,940 Al seu torn, això significa que tothom està en el mateix terreny, 81 00:03:47,940 --> 00:03:50,800 ja sigui Mac o PC o un altre sistema operatiu. 82 00:03:50,800 --> 00:03:53,930 Tots podem executar la màquina virtual. 83 00:03:53,930 --> 00:03:58,800 I així, hi ha instruccions en manual.cs50.net/appliance. 84 00:03:58,800 --> 00:04:02,740 Així que si vostè va a aquest enllaç i segueix les instruccions, 85 00:04:02,740 --> 00:04:07,820 llavors espero que vostè serà capaç d'instal · lar l'aparell. 86 00:04:07,820 --> 00:04:11,390 >> Així que primer, haurà de instal · lar una aplicació, una 87 00:04:11,390 --> 00:04:13,760 aplicació real a ser capaç d'executar la màquina virtual. 88 00:04:13,760 --> 00:04:15,270 I després de descarregar l'aparell. 89 00:04:15,270 --> 00:04:18,050 Però, de nou, hi ha instruccions en 90 00:04:18,050 --> 00:04:21,459 manual.cs50.net/appliance. 91 00:04:21,459 --> 00:04:26,040 Així que ja he descarregat el meu equip i jo hem instal · lat 92 00:04:26,040 --> 00:04:28,060 en VMware Fusion. 93 00:04:28,060 --> 00:04:31,250 I així, una vegada que he descarregat l'aparell, em vaig anar a arxiu. 94 00:04:31,250 --> 00:04:34,690 Vaig anar a obrir i després trobar on jo 95 00:04:34,690 --> 00:04:37,550 emmagatzema l'aparell CS50. 96 00:04:37,550 --> 00:04:39,310 I a partir d'aquí, el córrer aquí. 97 00:04:39,310 --> 00:04:44,520 Però jo el tingui instal · lat ja és aquí, així que anem a fer una ullada més de prop. 98 00:04:44,520 --> 00:04:44,850 >> Està bé. 99 00:04:44,850 --> 00:04:46,770 Així que ara estem dins CS50 Appliance. 100 00:04:46,770 --> 00:04:47,890 Ho vaig fer de pantalla completa. 101 00:04:47,890 --> 00:04:51,130 Vostè pot optar per fer-ho si així ho desitja o simplement com un 102 00:04:51,130 --> 00:04:53,480 petita finestra a l'escriptori. 103 00:04:53,480 --> 00:04:57,170 Aquí tenim un escriptori simple amb 104 00:04:57,170 --> 00:04:58,220 una casa i un pot d'escombraries. 105 00:04:58,220 --> 00:05:05,070 Però si vas a Menú i després a la programació, a continuació, veure 106 00:05:05,070 --> 00:05:07,570 que tenim una cosa anomenada Terminal. 107 00:05:07,570 --> 00:05:12,340 I aquí, podem navegar pel nostre equip. 108 00:05:12,340 --> 00:05:13,360 Podem escriure codi. 109 00:05:13,360 --> 00:05:17,240 Però, en realitat, estarem usant un programa anomenat gedit, o "g 110 00:05:17,240 --> 00:05:20,050 editar ", el que és. 111 00:05:20,050 --> 00:05:21,680 Així que anem a utilitzar que un que escriure codi. 112 00:05:21,680 --> 00:05:24,850 Així que vostè té aquestes dues eines que utilitzarà principalment 113 00:05:24,850 --> 00:05:27,590 d'escriure codi. 114 00:05:27,590 --> 00:05:31,240 Després, en un altre lloc, és com un ordinador normal. 115 00:05:31,240 --> 00:05:32,890 Comptem amb un navegador. 116 00:05:32,890 --> 00:05:34,400 Triem Google Chrome. 117 00:05:34,400 --> 00:05:38,720 El que hem fet és que hem creat un Dropbox per contenir tots els 118 00:05:38,720 --> 00:05:39,340 els documents. 119 00:05:39,340 --> 00:05:41,760 I això és una cosa que està molt animat. 120 00:05:41,760 --> 00:05:44,900 Dropbox utilitza la sincronització de núvol i si és així - 121 00:05:44,900 --> 00:05:47,250 Així, per exemple, alguna cosa per casualitat - esperem que no - 122 00:05:47,250 --> 00:05:50,100 succeeix al seu aparell, llavors tot haurà 123 00:05:50,100 --> 00:05:51,350 sincronitzat en el núvol. 124 00:05:54,716 --> 00:05:55,180 >> Està bé. 125 00:05:55,180 --> 00:05:59,500 Així que aquestes són les aplicacions que utilitzarà en la 126 00:05:59,500 --> 00:06:02,900 CS50 Appliance. 127 00:06:02,900 --> 00:06:05,750 Ara, per navegar al voltant de la línia de comandes. 128 00:06:05,750 --> 00:06:10,150 El terminal pot actuar com una espècie d'una manera realment 129 00:06:10,150 --> 00:06:12,040 escriure ordres en - 130 00:06:12,040 --> 00:06:13,650 com, si vostè és un Mac, un Finder. 131 00:06:13,650 --> 00:06:17,010 O si estàs en Windows, crec que això és "explorar el meu 132 00:06:17,010 --> 00:06:19,070 ordinador "o alguna cosa per l'estil. 133 00:06:19,070 --> 00:06:23,160 Així que si ens remuntem a l'aparell, anem a obrir un 134 00:06:23,160 --> 00:06:25,710 finestra de terminal. 135 00:06:25,710 --> 00:06:27,720 Així que té aquest sistema, jharvard @ aparell. 136 00:06:27,720 --> 00:06:32,950 Anem a fer-ho més gran. 137 00:06:32,950 --> 00:06:33,790 Bé. 138 00:06:33,790 --> 00:06:40,400 Així que si escrivim la comanda ls, a continuació, que mostra tots els 139 00:06:40,400 --> 00:06:45,440 arxius al nostre ordinador, en el nostre directori actual. 140 00:06:45,440 --> 00:06:46,720 Els directoris són com si fossin carpetes. 141 00:06:46,720 --> 00:06:49,310 Utilitzem aquests termes indistintament. 142 00:06:49,310 --> 00:06:52,480 D'acord, hem fet una llista dels arxius 143 00:06:52,480 --> 00:06:53,650 que estan en aquest directori. 144 00:06:53,650 --> 00:06:58,340 Ara bé, si volem accedir, per exemple, el nostre Dropbox, aleshores podem 145 00:06:58,340 --> 00:06:59,320 canviar de directori. 146 00:06:59,320 --> 00:07:04,230 Així cd i després Dropbox. 147 00:07:04,230 --> 00:07:10,860 Ens ls altra vegada, i llavors veiem la llista d'arxius que es troben en 148 00:07:10,860 --> 00:07:11,790 aquesta carpeta. 149 00:07:11,790 --> 00:07:15,590 Això és anàleg a em vaig a casa meva, a continuació, fer clic a 150 00:07:15,590 --> 00:07:19,250 Dropbox, i després veure la llista aquí. 151 00:07:19,250 --> 00:07:20,090 >> Està bé. 152 00:07:20,090 --> 00:07:22,220 Així que anem a dir - 153 00:07:22,220 --> 00:07:25,640 quan vostès faran que el seu conjunt de processadors 1, farem una 154 00:07:25,640 --> 00:07:27,390 directori anomenat pset1. 155 00:07:27,390 --> 00:07:32,170 Així que estem en Dropbox en aquest moment, com es pot veure en aquesta 156 00:07:32,170 --> 00:07:32,700 sol · licitarà aquí. 157 00:07:32,700 --> 00:07:34,320 Així que farem un directori. 158 00:07:34,320 --> 00:07:37,940 Així mkdir, anem a dir-pset1. 159 00:07:40,470 --> 00:07:43,500 I ara si nosaltres ls de nou, llavors 160 00:07:43,500 --> 00:07:45,390 veure que pset1 apareix. 161 00:07:45,390 --> 00:07:49,470 I així, si volem entrar pset1, llavors podem entrar 162 00:07:49,470 --> 00:07:54,230 aquesta carpeta amb la comanda cd. 163 00:07:54,230 --> 00:07:54,610 Està bé. 164 00:07:54,610 --> 00:07:59,040 Així que de nou, anem a veure si podem - 165 00:07:59,040 --> 00:08:01,620 dir, anem a fer-ho d'una altra manera. 166 00:08:01,620 --> 00:08:03,550 Això és anàleg a dir "Crear 167 00:08:03,550 --> 00:08:05,330 una nova carpeta, pset1. 168 00:08:05,330 --> 00:08:08,530 Però a mesura que trobis, podràs estar en contacte amb 169 00:08:08,530 --> 00:08:09,310 el terminal molt. 170 00:08:09,310 --> 00:08:11,900 Així que de vegades és molt més fàcil, més ràpid perd un sol 171 00:08:11,900 --> 00:08:15,900 treballar a la terminal per fer aquest tipus de coses. 172 00:08:15,900 --> 00:08:16,140 Bé. 173 00:08:16,140 --> 00:08:18,150 I llavors aquests altres ordres. 174 00:08:18,150 --> 00:08:20,410 Hi ha un rm per eliminar un arxiu. 175 00:08:20,410 --> 00:08:22,690 Així que poseu rm i després el nom de la 176 00:08:22,690 --> 00:08:23,800 arxiu per eliminar-lo. 177 00:08:23,800 --> 00:08:25,810 Anem a entrar en alguns exemples d'això més endavant. 178 00:08:25,810 --> 00:08:28,840 I després tenim una cosa que es diu la comanda man, que 179 00:08:28,840 --> 00:08:31,850 porta un manual per a un tipus de funció. 180 00:08:31,850 --> 00:08:34,419 Un cop més, vaig a portar a col · lació un exemple real d'això més endavant. 181 00:08:37,360 --> 00:08:39,900 >> Així que una altra eina molt important, com he esmentat breument 182 00:08:39,900 --> 00:08:41,280 abans, és l'estil. 183 00:08:41,280 --> 00:08:43,650 Per tant, bàsicament, l'estil té a veure amb la lectura. 184 00:08:43,650 --> 00:08:46,460 Hi haurà algú més sigui capaç de llegir, seguir i 185 00:08:46,460 --> 00:08:47,670 entendre el seu codi? 186 00:08:47,670 --> 00:08:50,490 Això és especialment important per a vostè, vostè mateix, en realitat. 187 00:08:50,490 --> 00:08:53,060 Si et quedaràs fins a finals de codificació, i més tard li 188 00:08:53,060 --> 00:08:55,940 tornar enrere i vostè és com, què vol dir això variable? 189 00:08:55,940 --> 00:08:58,400 Diguem que estem treballant en un projecte de grup amb algú, i et 190 00:08:58,400 --> 00:09:00,130 ambdós tenen a veure l'un a l'altre de codi. 191 00:09:00,130 --> 00:09:03,380 És molt important que vostè nom a les variables correctament 192 00:09:03,380 --> 00:09:06,240 i fer que es vegi bé, perquè això fa tota la diferència. 193 00:09:06,240 --> 00:09:08,270 Però per sobre de tot, estem en un curs en aquests moments. 194 00:09:08,270 --> 00:09:10,660 Així que per l'interès de CS50 i especialment per a la seva 195 00:09:10,660 --> 00:09:13,010 Teaching Fellows i anivelladores que buscaran en la seva 196 00:09:13,010 --> 00:09:15,455 conjunts de processadors, si us plau, utilitzeu l'estil correcte. 197 00:09:15,455 --> 00:09:18,980 I els seus companys d'ensenyament serà molt feliç. 198 00:09:18,980 --> 00:09:22,890 Així que de nou, l'estil de sagnat inclou les coses correctament, 199 00:09:22,890 --> 00:09:26,380 especialment l'ús dels seus aparells i sangria aquests. 200 00:09:26,380 --> 00:09:29,910 Nomenar variables d'alguna cosa que té sentit. 201 00:09:29,910 --> 00:09:32,330 En aquests moments seguim la convenció quan es té 202 00:09:32,330 --> 00:09:35,240 diverses paraules en el nom de la variable, llavors 203 00:09:35,240 --> 00:09:37,480 connectar amb un guió baix, com es veu en el fet que 204 00:09:37,480 --> 00:09:39,660 nomenar exemple allà. 205 00:09:39,660 --> 00:09:41,740 >> Llavors, finalment, una cosa que es diu nombres màgics. 206 00:09:41,740 --> 00:09:48,030 Essencialment, quan vostè està llegint a través de codi i dir 207 00:09:48,030 --> 00:09:51,570 té una variable - 208 00:09:51,570 --> 00:09:56,680 dir, no té una variable però només dir que està bé, fins al 209 00:09:56,680 --> 00:09:58,600 i tal és menys de 10. 210 00:09:58,600 --> 00:10:00,210 A continuació, la seva filla anirà bé, espera, 211 00:10:00,210 --> 00:10:01,320 D'on provenen d'aquest 10? 212 00:10:01,320 --> 00:10:05,040 Així que en realitat explica vostè importa molt. 213 00:10:05,040 --> 00:10:06,740 Per ajudar a explicar són els comentaris. 214 00:10:06,740 --> 00:10:09,850 Els comentaris són probablement la cosa més important incloure en 215 00:10:09,850 --> 00:10:11,460 seus programes. 216 00:10:11,460 --> 00:10:15,440 I no només l'ajuda a explicar en realitat - 217 00:10:15,440 --> 00:10:17,220 l'ajuda a explicar el seu tipus de raonament 218 00:10:17,220 --> 00:10:17,870 vas al llarg. 219 00:10:17,870 --> 00:10:20,480 I si ho fa, de nou, serà molt més fàcil 220 00:10:20,480 --> 00:10:23,370 tornar al codi i el tipus d'entendre el que està 221 00:10:23,370 --> 00:10:24,080 fent allà. 222 00:10:24,080 --> 00:10:26,410 Un cop més, els estudiants de m'agrada comentaris. 223 00:10:26,410 --> 00:10:28,940 Així que un comentari així i - 224 00:10:28,940 --> 00:10:29,970 una mena punts de regal. 225 00:10:29,970 --> 00:10:32,340 I qui no li agraden els punts gratis? 226 00:10:32,340 --> 00:10:33,910 Vostè també pot tenir múltiples línies de comentaris. 227 00:10:33,910 --> 00:10:36,630 I per això he inclòs una mena de plantilla aquí. 228 00:10:36,630 --> 00:10:38,580 Essencialment, en general aquests s'utilitzen en la part superior del teu 229 00:10:38,580 --> 00:10:40,950 programa a la classe d'explicar, en general, el que 230 00:10:40,950 --> 00:10:43,220 el conjunt de problemes té. 231 00:10:43,220 --> 00:10:46,130 Inclogui el seu nom, la data, etc. 232 00:10:46,130 --> 00:10:49,030 I per això, com vaig dir en el comentari de diverses línies 233 00:10:49,030 --> 00:10:56,260 manual.cs50.net/style_guide té més consells i regles sobre 234 00:10:56,260 --> 00:10:59,310 estil de bucles, etc. 235 00:10:59,310 --> 00:10:59,740 >> Bé. 236 00:10:59,740 --> 00:11:03,600 Així que ara que t'ho he dit un poc d'estil, veurem 237 00:11:03,600 --> 00:11:07,390 aquesta acció a. 238 00:11:07,390 --> 00:11:07,770 Està bé. 239 00:11:07,770 --> 00:11:11,850 Així que aquí, Tommy ens ha escrit una deliciosament horrible, 240 00:11:11,850 --> 00:11:15,440 exemple d'estil en un programa. 241 00:11:15,440 --> 00:11:17,170 Així que vostè veu aquí, tot bé. 242 00:11:17,170 --> 00:11:18,280 Això és realment bé. 243 00:11:18,280 --> 00:11:22,060 Ja veus el comentari de diverses línies aquí. 244 00:11:22,060 --> 00:11:25,120 El començar amb una barra inclinada i després dos asteriscs. 245 00:11:25,120 --> 00:11:28,580 Es prossegueix per, alineant els asteriscs al llarg de la línia 246 00:11:28,580 --> 00:11:30,540 i després acabar amb un asterisc i una barra. 247 00:11:30,540 --> 00:11:30,810 Està bé. 248 00:11:30,810 --> 00:11:32,800 Així que això està bé. 249 00:11:32,800 --> 00:11:33,760 Això aquí està bé. 250 00:11:33,760 --> 00:11:35,110 Ha incloent les seves biblioteques. 251 00:11:35,110 --> 00:11:38,790 Però llavors aquí té comentaris abasten diverses línies. 252 00:11:38,790 --> 00:11:40,390 Hi ha un munt de coses malament amb això. 253 00:11:40,390 --> 00:11:44,770 Comentaris abasten diverses línies, aquí ell està usant 254 00:11:44,770 --> 00:11:47,230 la sintaxi de les línies de comentari només individuals. 255 00:11:47,230 --> 00:11:53,140 També està fusionant tot en el mateix comentari. 256 00:11:53,140 --> 00:11:54,715 Així que volem evitar això. 257 00:11:57,710 --> 00:12:03,010 Llavors aquí veiem que aquestes claus, per exemple, són tots 258 00:12:03,010 --> 00:12:03,730 el lloc. 259 00:12:03,730 --> 00:12:06,950 La sagnia és erroni. 260 00:12:06,950 --> 00:12:09,460 En realitat, no li mostri on definitivament alguna cosa 261 00:12:09,460 --> 00:12:12,850 Comença i acaba una altra cosa. 262 00:12:12,850 --> 00:12:16,510 Llavors, així, veiem que té una variable definida i = 5 aquí. 263 00:12:16,510 --> 00:12:18,620 Però aquest quatre ve del no-res, i no hi ha 264 00:12:18,620 --> 00:12:21,520 comentaris per explicar realment on ve. 265 00:12:21,520 --> 00:12:22,130 >> Bé. 266 00:12:22,130 --> 00:12:28,760 Així que ara anem a veure una cosa que en realitat és el mateix 267 00:12:28,760 --> 00:12:30,250 codi excepte amb millor estil. 268 00:12:30,250 --> 00:12:32,485 Així que de nou, aquest és l'exemple de bon estil, 269 00:12:32,485 --> 00:12:33,735 l'exemple de diverses línies. 270 00:12:38,400 --> 00:12:39,735 I llavors aquí és molt net. 271 00:12:39,735 --> 00:12:43,500 Veiem que comença una sentència if aquí, entra en una nova 272 00:12:43,500 --> 00:12:46,400 línia, té una clau oberta. 273 00:12:46,400 --> 00:12:48,740 Llavors ell té una osca. 274 00:12:48,740 --> 00:12:50,970 Es manté aquesta sagnia - 275 00:12:50,970 --> 00:12:54,680 manté aquesta indicació uniforme a tot el territori 276 00:12:54,680 --> 00:12:59,120 programa i realment es nota quan un bloc de codi s'inicia, quan 277 00:12:59,120 --> 00:13:00,780 un bloc de codi acaba. 278 00:13:00,780 --> 00:13:04,410 Això pot semblar una mica primmirada de la nostra part per començar 279 00:13:04,410 --> 00:13:06,370 amb, però ja veuràs com estàs escrivint codi. 280 00:13:06,370 --> 00:13:09,400 És molt útil poder separar això. 281 00:13:09,400 --> 00:13:12,200 I un cop més, els seus alumnes realment així. 282 00:13:12,200 --> 00:13:14,360 I pel que veig, en lloc de limitar-se a posar un nombre a 283 00:13:14,360 --> 00:13:17,510 allà, en realitat el nom de les iteracions variables. 284 00:13:17,510 --> 00:13:20,160 I el que no estem realment mirant aquest codi en aquest moment 285 00:13:20,160 --> 00:13:22,450 però només una mica de veure un exemple de 286 00:13:22,450 --> 00:13:23,780 estil bé contra el mal. 287 00:13:23,780 --> 00:13:29,610 I si ens fixem en ells banda a banda aquí, oi 288 00:13:29,610 --> 00:13:32,910 definitivament prefereixen llegir l'un a la dreta. 289 00:13:39,230 --> 00:13:40,100 >> Està bé. 290 00:13:40,100 --> 00:13:42,710 Així que una última cosa abans de submergir-se en la veritable substància de la 291 00:13:42,710 --> 00:13:46,260 conjunt de processadors és com compilar i executar el codi. 292 00:13:46,260 --> 00:13:50,320 I així, essencialment quan s'escriu C, que en realitat no és 293 00:13:50,320 --> 00:13:52,480 traduït en el codi màquina real, els zeros i 294 00:13:52,480 --> 00:13:56,000 els que la màquina pot llegir i interpretar. 295 00:13:56,000 --> 00:13:57,170 Així que tenim alguna cosa - 296 00:13:57,170 --> 00:13:59,340 Clang és un compilador que fem servir per C. 297 00:13:59,340 --> 00:14:00,270 Hi ha molts compiladors. 298 00:14:00,270 --> 00:14:02,480 Però en CS50, utilitzarem Clang. 299 00:14:02,480 --> 00:14:05,480 I així Clang bàsicament es tradueix de C a màquina 300 00:14:05,480 --> 00:14:07,380 codi per a vostè. 301 00:14:07,380 --> 00:14:10,170 Així que anem a veure un exemple - Baptisme en l'aparell aquí. 302 00:14:14,550 --> 00:14:15,030 Està bé. 303 00:14:15,030 --> 00:14:16,670 Així que ara mateix estem en el nostre directori home. 304 00:14:16,670 --> 00:14:18,680 En realitat no hi ha cap codi on està. 305 00:14:18,680 --> 00:14:24,740 Així que anem a canviar el nostre directori per Dropbox/walkthrough1, on 306 00:14:24,740 --> 00:14:25,930 He guardat una mica de codi. 307 00:14:25,930 --> 00:14:29,340 Així que si premem ls, llavors veiem que tinc una 308 00:14:29,340 --> 00:14:31,230 parell d'arxius d'aquí. 309 00:14:31,230 --> 00:14:31,700 >> Està bé. 310 00:14:31,700 --> 00:14:35,280 Així que ja he escrit hello.c, així que anem a compilar 311 00:14:35,280 --> 00:14:36,670 i després veure el que fa. 312 00:14:36,670 --> 00:14:43,150 Així que una ordre de compilació bàsica seria llavors clang hello.c, 313 00:14:43,150 --> 00:14:46,910 essencialment dient bé, compilar hello.c per a mi. 314 00:14:46,910 --> 00:14:50,550 Faig clic a Enter, sembla haver anat bé. 315 00:14:50,550 --> 00:14:52,590 Anem a ls clic de nou. 316 00:14:52,590 --> 00:14:55,230 Aquest arxiu a.out ara ha demostrat. 317 00:14:55,230 --> 00:14:57,430 I així a.out és un arxiu executable. 318 00:14:57,430 --> 00:15:05,330 Així que per córrer, fer un. / A.out. 319 00:15:05,330 --> 00:15:07,650 I així veiem que aquest programa hello.c aparentment 320 00:15:07,650 --> 00:15:10,400 imprimeix hola cinc vegades. 321 00:15:10,400 --> 00:15:10,990 Està bé. 322 00:15:10,990 --> 00:15:14,250 Però dir que no voleu utilitzar el nom a.out. 323 00:15:18,140 --> 00:15:21,080 Per exemple, volem executar el programa hola ja que 324 00:15:21,080 --> 00:15:22,540 fa que sigui més fàcil d'entendre. 325 00:15:22,540 --> 00:15:26,590 Així que diguem que hello.c clang, i llavors essencialment el que necessita 326 00:15:26,590 --> 00:15:29,030 per passar en algunes coses que es diuen les banderes. 327 00:15:29,030 --> 00:15:31,600 I dient això està bé, així que vull anomenar aquesta altra cosa. 328 00:15:31,600 --> 00:15:33,900 També es pot passar en un munt de banderes diferents, 329 00:15:33,900 --> 00:15:34,620 que veuràs. 330 00:15:34,620 --> 00:15:37,510 Per tant la bandera per nomenar un programa alguna cosa que 331 00:15:37,510 --> 00:15:39,780 volem és-o. 332 00:15:39,780 --> 00:15:42,470 Després-o, s'escriu el nom del programa. 333 00:15:42,470 --> 00:15:44,090 Anem a cridar hola. 334 00:15:44,090 --> 00:15:49,050 >> Així que ara veiem que en realitat tenim un arxiu executable hola. 335 00:15:49,050 --> 00:15:54,020 Així que podem córrer, i fa el mateix que abans. 336 00:15:54,020 --> 00:15:56,210 Així que ara que tenim hola, també podem eliminar, per 337 00:15:56,210 --> 00:15:57,450 exemple, el nostre a.out. 338 00:15:57,450 --> 00:16:03,880 Així que rm per eliminar, a.out, el seu telèfon li demanarà, pregunti 339 00:16:03,880 --> 00:16:05,470 perquè confirmi si realment desitja 340 00:16:05,470 --> 00:16:06,370 esborrar o no. 341 00:16:06,370 --> 00:16:10,000 Diem i per a si. 342 00:16:10,000 --> 00:16:10,750 I aquí anem. 343 00:16:10,750 --> 00:16:12,220 A.out s'ha anat. 344 00:16:12,220 --> 00:16:12,620 Està bé. 345 00:16:12,620 --> 00:16:14,810 Però de vegades és confús per recordar tota la 346 00:16:14,810 --> 00:16:17,160 banderes que hem d'incloure i teclejar so metàl · lic. 347 00:16:17,160 --> 00:16:20,410 I com veiem quan estem fent servir programes més complexos, anem a 348 00:16:20,410 --> 00:16:22,450 ser incloses les biblioteques diferents. 349 00:16:22,450 --> 00:16:27,230 I així, els nostres comandaments a Clang obtindrà més i més. 350 00:16:27,230 --> 00:16:30,660 Per tant inclòs en l'aparell CS50 és la comanda make. 351 00:16:30,660 --> 00:16:33,880 Així que simplement escriure make hello. 352 00:16:33,880 --> 00:16:35,130 Oops. 353 00:16:36,860 --> 00:16:38,400 Ja hem fet l'arxiu executable. 354 00:16:38,400 --> 00:16:39,650 Així que m'acaba de treure. 355 00:16:42,260 --> 00:16:44,830 Ara anem a escriure make hello. 356 00:16:44,830 --> 00:16:49,470 I vostè veu aquí en aquesta línia que diu essencialment fer 357 00:16:49,470 --> 00:16:54,760 hola involucra tots els comandaments que 358 00:16:54,760 --> 00:16:55,580 entrar-hi per a vostè. 359 00:16:55,580 --> 00:16:58,080 >> Per tant inclòs en l'aparell CS50 és l'arxiu make. 360 00:16:58,080 --> 00:17:02,300 Així que, simplement, quan vostè té un name.c arxiu, llavors tot el que fan 361 00:17:02,300 --> 00:17:03,680 és a dir fer que el nom de l'arxiu. 362 00:17:03,680 --> 00:17:04,800 I llavors tindràs un arxiu executable 363 00:17:04,800 --> 00:17:06,200 arxiu amb aquest nom. 364 00:17:06,200 --> 00:17:06,675 Sí? 365 00:17:06,675 --> 00:17:09,525 >> Ponència 1: Per el meu ordinador, en lloc de Clang diu GCC. 366 00:17:09,525 --> 00:17:11,910 És com - 367 00:17:11,910 --> 00:17:12,109 ZAMYLA CHAN: Si. 368 00:17:12,109 --> 00:17:15,700 Així que l'equip podria dir GCC en lloc de Clang perquè 369 00:17:15,700 --> 00:17:18,180 GCC és un altre tipus de compilador. 370 00:17:18,180 --> 00:17:20,460 Si vostè està en el Appliance CS50 encara, llavors aquest 371 00:17:20,460 --> 00:17:21,810 d'utilitzar Clang. 372 00:17:24,619 --> 00:17:27,880 Si no és així, llavors potser venir a parlar amb mi després o enviar 373 00:17:27,880 --> 00:17:29,595 sobre CS50 Comenta i podem resoldre això. 374 00:17:34,510 --> 00:17:35,710 >> Està bé. 375 00:17:35,710 --> 00:17:39,250 Així que ara que tenim el nostre tipus d'eines bàsiques cap avall, llavors 376 00:17:39,250 --> 00:17:43,060 pot submergir-se en Mario. 377 00:17:43,060 --> 00:17:43,550 Bé. 378 00:17:43,550 --> 00:17:47,360 Així que Mario és un programa en què bàsicament serem 379 00:17:47,360 --> 00:17:50,800 fer que la nostra pròpia espècie de versió primitiva del Mario 380 00:17:50,800 --> 00:17:51,410 joc de fons. 381 00:17:51,410 --> 00:17:54,790 Ja saps, Mario té generalment un tub i una 382 00:17:54,790 --> 00:17:55,670 arbre i alguns blocs. 383 00:17:55,670 --> 00:17:59,390 I després hi ha una espècie de piràmide meitat. 384 00:17:59,390 --> 00:18:02,100 Així que només anem a centrar en la piràmide de la meitat, 385 00:18:02,100 --> 00:18:05,350 fer que el codi tal que imprimeix els valors hash per a la classe 386 00:18:05,350 --> 00:18:07,500 de blocs en aquest format. 387 00:18:07,500 --> 00:18:10,800 Llavors, ¿què passarà és que l'usuari va a introduir una certa 388 00:18:10,800 --> 00:18:13,130 altura de la piràmide, i llavors vostè imprimir que fos 389 00:18:13,130 --> 00:18:17,410 de tal manera que la part inferior esquerra de hash - 390 00:18:17,410 --> 00:18:21,270 pel que en la part inferior dreta aquí - que un s'alinearan 391 00:18:21,270 --> 00:18:23,820 amb la part inferior esquerra de la terminal. 392 00:18:26,720 --> 00:18:27,360 Bé. 393 00:18:27,360 --> 00:18:29,860 >> Així que la primera cosa que vostè necessita - 394 00:18:29,860 --> 00:18:33,120 el primer problema petit mini que hem d'abordar és com 395 00:18:33,120 --> 00:18:34,640 per obtenir l'entrada de l'usuari. 396 00:18:34,640 --> 00:18:40,020 Així que hem d'estar bregant amb el que l'usuari introdueix i després 397 00:18:40,020 --> 00:18:41,060 tipus de coses hi ha sortida. 398 00:18:41,060 --> 00:18:47,630 Així que donem una ullada a buscar un arxiu anomenat apples.c que vaig escriure 399 00:18:47,630 --> 00:18:52,670 que té a veure amb les entrades i sortides. 400 00:18:52,670 --> 00:18:53,240 Bé. 401 00:18:53,240 --> 00:18:55,970 Així que aquí a la part superior, he inclòs algunes de les biblioteques 402 00:18:55,970 --> 00:18:56,540 el que necessito. 403 00:18:56,540 --> 00:19:00,700 El que realment importa aquí és stdio (estàndard I / O). Que s'ocupa de 404 00:19:00,700 --> 00:19:02,760 amb entrades i sortides estàndard, perquè anem a 405 00:19:02,760 --> 00:19:04,600 es tracta d'entrades d'usuari. 406 00:19:04,600 --> 00:19:04,960 Està bé. 407 00:19:04,960 --> 00:19:06,660 Així que començo la meva funció principal. 408 00:19:06,660 --> 00:19:11,310 I llavors li demano a l'usuari bé, quantes pomes té? 409 00:19:11,310 --> 00:19:13,650 Llavors aquí, el que fa aquesta línia - 410 00:19:13,650 --> 00:19:18,420 Assigno la variable i amb el valor de getInt. 411 00:19:18,420 --> 00:19:22,890 >> Així getint és una funció que s'inclou en stdio. 412 00:19:22,890 --> 00:19:26,090 I així, en essència, que s'ocuparà d'ell per a vostè. 413 00:19:26,090 --> 00:19:27,900 Se li demanarà a l'usuari per a un int. 414 00:19:27,900 --> 00:19:30,600 El que tornen, que s'assignarà a la 415 00:19:30,600 --> 00:19:32,020 la variable i. 416 00:19:32,020 --> 00:19:35,620 I així, llavors és només un petit programa que disminueix la 417 00:19:35,620 --> 00:19:39,160 valor de R per 1 i després s'imprimeix el valor nou. 418 00:19:39,160 --> 00:19:42,420 Una cosa bona de gedit és en realitat que hi ha un mini 419 00:19:42,420 --> 00:19:43,720 terminal de la dreta aquí. 420 00:19:43,720 --> 00:19:46,670 Així, en lloc d'haver de canviar cap endavant i cap enrere entre 421 00:19:46,670 --> 00:19:48,120 gedit i el terminal, en realitat es pot 422 00:19:48,120 --> 00:19:49,100 el executes des d'aquí. 423 00:19:49,100 --> 00:19:52,070 Així que primer anem a entrar al directori correcte. 424 00:19:52,070 --> 00:19:54,230 Així que anem a canviar els nostres directoris per 425 00:19:54,230 --> 00:19:55,480 Dropbox/walkthrough1. 426 00:19:57,160 --> 00:19:57,840 Està bé. 427 00:19:57,840 --> 00:20:03,400 Així que ara farem les pomes, compila per nosaltres. 428 00:20:03,400 --> 00:20:06,640 Així que ara anem a executar les pomes. 429 00:20:06,640 --> 00:20:08,420 Quantes pomes tenim? 430 00:20:08,420 --> 00:20:09,630 Em diuen que tinc 3. 431 00:20:09,630 --> 00:20:12,060 I diu "mwahaha vaig a menjar a un d'ells", i diu 432 00:20:12,060 --> 00:20:13,610 "Ara té 2 pomes". 433 00:20:13,610 --> 00:20:14,220 >> Està bé. 434 00:20:14,220 --> 00:20:16,390 Així que anem a córrer de nou. 435 00:20:16,390 --> 00:20:19,040 I diguem que tinc una poma. 436 00:20:19,040 --> 00:20:19,940 Ara tinc 0 pomes. 437 00:20:19,940 --> 00:20:20,180 Bé. 438 00:20:20,180 --> 00:20:22,460 Així que aquest programa sembla funcionar com s'espera. 439 00:20:22,460 --> 00:20:25,070 Ens entrada a un nombre, que disminueix en 1 i, a continuació 440 00:20:25,070 --> 00:20:27,290 imprimeix un altre cop. 441 00:20:27,290 --> 00:20:31,950 Però el que si, per exemple, tinc -1 pomes? 442 00:20:31,950 --> 00:20:33,440 Això no acaba de tenir sentit. 443 00:20:33,440 --> 00:20:37,430 Però tot i així és un nombre enter, de manera que el programa ho accepta. 444 00:20:37,430 --> 00:20:41,090 I així li retorna un nombre encara més negatiu. 445 00:20:41,090 --> 00:20:44,700 Així que aquesta és una lliçó per a nosaltres que tot i la getInt 446 00:20:44,700 --> 00:20:46,700 funció i els altres associats, com ara 447 00:20:46,700 --> 00:20:48,260 GetFloat o GetString - 448 00:20:48,260 --> 00:20:51,490 tot i que aquells ens portarà el tipus de dades correcte, per 449 00:20:51,490 --> 00:20:55,750 exemple, si jo acabava de dir [escrivint], 450 00:20:55,750 --> 00:20:57,380 llavors em deia que torni a intentar-ho. 451 00:20:57,380 --> 00:21:01,860 Així que això va a fer front a qualsevol tipus de dades de la seva entrada 452 00:21:01,860 --> 00:21:04,650 és però no es comprovi en realitat, així, en realitat és un tipus de 453 00:21:04,650 --> 00:21:07,820 valor que jo vull? 454 00:21:07,820 --> 00:21:12,370 Llavors una part de Mario és que l'usuari ha de introduir un 455 00:21:12,370 --> 00:21:15,400 nombre que representa l'altura de la piràmide 1/2 456 00:21:15,400 --> 00:21:16,360 que vostè està fent. 457 00:21:16,360 --> 00:21:21,000 I llavors, si estem provocant en aquest usuari per l'altura, llavors 458 00:21:21,000 --> 00:21:25,480 ha d'haver dos límits sobre això. 459 00:21:25,480 --> 00:21:28,040 ¿És cert? 460 00:21:28,040 --> 00:21:31,150 En l'especificació, que diu que no hi ha més de 23 461 00:21:31,150 --> 00:21:32,630 personatges perquè això és una mica de la norma 462 00:21:32,630 --> 00:21:34,450 alçada de la terminal. 463 00:21:34,450 --> 00:21:37,590 Però llavors, què enquadernat, potser una cota més baixa, podria 464 00:21:37,590 --> 00:21:38,840 volem incloure? 465 00:21:41,180 --> 00:21:44,350 >> Si estem realment dibuixar una piràmide, forma de pensar de nou 466 00:21:44,350 --> 00:21:48,460 a dalt d'una piràmide pot ser, pot mai ser inferiors a un 467 00:21:48,460 --> 00:21:49,132 nombre determinat? 468 00:21:49,132 --> 00:21:50,490 ALTAVEU 2: Per sobre del tres. 469 00:21:50,490 --> 00:21:50,560 ZAMYLA CHAN: Hmm? 470 00:21:50,560 --> 00:21:52,630 ALTAVEU 2: Per sobre del tres. 471 00:21:52,630 --> 00:21:54,850 ZAMYLA CHAN: Aquest és un bon punt. 472 00:21:54,850 --> 00:21:57,860 Podria ser - 473 00:21:57,860 --> 00:22:00,700 podríem voler limitar a només una piràmide de tres nivells. 474 00:22:00,700 --> 00:22:02,120 Però anem a pensar - 475 00:22:02,120 --> 00:22:06,510 diguem com una taula hash es compta com una piràmide també. 476 00:22:06,510 --> 00:22:09,031 Llavors, ¿quina ha de ser la nostra actual límit inferior serà? 477 00:22:12,260 --> 00:22:13,760 Pensant en les illes, no volem un 478 00:22:13,760 --> 00:22:15,020 piràmide alçada negativa. 479 00:22:15,020 --> 00:22:15,460 ¿És cert? 480 00:22:15,460 --> 00:22:15,720 Bé. 481 00:22:15,720 --> 00:22:19,060 Així que quan vostè demana l'entrada de l'usuari, llavors vostè haurà de 482 00:22:19,060 --> 00:22:21,980 incloure alguna manera d'assegurar-se que el nombre sencer que 483 00:22:21,980 --> 00:22:24,970 que li proporcionen no és negatiu perquè no es pot 484 00:22:24,970 --> 00:22:28,180 dibuixar una piràmide negativa. 485 00:22:28,180 --> 00:22:28,410 >> Bé. 486 00:22:28,410 --> 00:22:30,190 Així que hi ha un parell de maneres de fer això. 487 00:22:30,190 --> 00:22:34,420 Bàsicament, un cop de demanar l'entrada de l'usuari, que vol demanar 488 00:22:34,420 --> 00:22:37,080 que et donen amb l'entrada correcta. 489 00:22:37,080 --> 00:22:40,120 Així que vostè vol exigir que se li donarà un número 490 00:22:40,120 --> 00:22:46,630 que no és negatiu, sinó també menys de 24. 491 00:22:46,630 --> 00:22:49,510 Així que ens enfrontem a zero al 23, ambdós inclosos. 492 00:22:49,510 --> 00:22:50,070 Està bé. 493 00:22:50,070 --> 00:22:52,830 Per això volem demanar contínuament - 494 00:22:52,830 --> 00:22:55,720 si no ens han donat un enter vàlid, volen 495 00:22:55,720 --> 00:22:57,350 contínuament demanen no. 496 00:22:57,350 --> 00:22:59,770 Dóna'm una entrada vàlida. 497 00:22:59,770 --> 00:23:02,270 Dóna'm una alçada vàlida. 498 00:23:02,270 --> 00:23:06,970 Així recordar de nou en Scratch, vam tenir la repetició fins que el bloc o 499 00:23:06,970 --> 00:23:08,950 Sempre Si el bloc. 500 00:23:08,950 --> 00:23:12,345 Aquests són els bucles que són molt similars al bucle mentre i 501 00:23:12,345 --> 00:23:14,960 acord el bucle while, que ens ficarem en només en un segon. 502 00:23:14,960 --> 00:23:19,790 De manera que el bucle while té essencialment una condició que comprovi 503 00:23:19,790 --> 00:23:23,240 això és un valor booleà que vostè col · loca dins d'allí, com el 504 00:23:23,240 --> 00:23:25,740 blocs en zero amb els angles. 505 00:23:25,740 --> 00:23:29,550 Això és el que passa dins dels claudàtors del bucle while. 506 00:23:29,550 --> 00:23:31,830 Així que hauràs de tenir algun tipus de condició allà. 507 00:23:31,830 --> 00:23:36,540 I com ja hem comentat anteriorment, aquesta condició 508 00:23:36,540 --> 00:23:40,250 tenen a veure amb els límits del sencer que s'introdueix. 509 00:23:40,250 --> 00:23:44,040 Així que l'estat tindria alguna cosa a veure amb el fet 510 00:23:44,040 --> 00:23:48,600 el nombre sencer està dins dels límits adequats. 511 00:23:48,600 --> 00:23:49,410 >> Així que això és un bucle while. 512 00:23:49,410 --> 00:23:52,580 Per exemple, vostè pot sol · licitar el nombre sencer i després 513 00:23:52,580 --> 00:23:56,070 comprovar contínuament mentre que aquesta entrada no és vàlida. 514 00:23:56,070 --> 00:23:59,810 Per exemple, tingui en tornar a preguntar, segueix demanant 515 00:23:59,810 --> 00:24:01,600 l'usuari d'un nombre enter. 516 00:24:01,600 --> 00:24:03,780 Així que això podria ser una manera. 517 00:24:03,780 --> 00:24:06,240 Una altra manera podria ser un document while, que és molt 518 00:24:06,240 --> 00:24:10,130 similar a un bucle while, excepte el que és un fer, mentre que fa és - 519 00:24:10,130 --> 00:24:12,600 pots tipus de veure la sintaxi - 520 00:24:12,600 --> 00:24:18,540 és que té el fer i després el cos del cicle actual en primer lloc. 521 00:24:18,540 --> 00:24:20,280 Llavors té les condicions while. 522 00:24:20,280 --> 00:24:22,060 Llavors, què while - 523 00:24:22,060 --> 00:24:25,470 el que són útils perquè, efectivament, és executar el 524 00:24:25,470 --> 00:24:29,130 codi almenys una vegada i després comprovar si la condició és 525 00:24:29,130 --> 00:24:30,030 complert o no. 526 00:24:30,030 --> 00:24:32,510 Així que si vostè anés a fer un do while, llavors dins del seu 527 00:24:32,510 --> 00:24:35,210 declaració que vostè pot sol · licitar un nombre enter perquè vas a 528 00:24:35,210 --> 00:24:37,180 per la qual cosa demanar a l'usuari una vegada. 529 00:24:37,180 --> 00:24:40,850 I després, després que els del sistema, llavors es pot dir molt bé, 530 00:24:40,850 --> 00:24:43,110 bé una vegada que he fet això, és vàlid? 531 00:24:43,110 --> 00:24:44,810 Si és així, llavors vostè pot seguir endavant. 532 00:24:44,810 --> 00:24:47,310 Però si no és així, llavors només vaig a actuar com un regular mentre 533 00:24:47,310 --> 00:24:49,240 bucle i després seguir preguntant. 534 00:24:53,590 --> 00:24:54,670 >> Bé. 535 00:24:54,670 --> 00:24:57,120 Així que tornem a Mario. 536 00:24:57,120 --> 00:25:01,740 Així que sabem com s'ha de sol · licitar la intervenció de l'usuari és correcta 537 00:25:01,740 --> 00:25:03,160 dins dels límits adequats. 538 00:25:03,160 --> 00:25:07,100 Així que ara que realment es necessita per dibuixar la piràmide meitat. 539 00:25:07,100 --> 00:25:08,730 Sembla que els caràcters de text simples. 540 00:25:08,730 --> 00:25:10,360 Així que en realitat obert - 541 00:25:14,280 --> 00:25:17,190 anem a obrir una finestra i dir molt bé, així que si jo fos 542 00:25:17,190 --> 00:25:24,960 en realitat va a fer-ho manualment, escriviu una sola? 543 00:25:24,960 --> 00:25:25,780 Bé. 544 00:25:25,780 --> 00:25:26,910 Així que anem a veure. 545 00:25:26,910 --> 00:25:30,070 Diguem, per exemple, volem fer una piràmide que és 546 00:25:30,070 --> 00:25:32,090 alineats al llarg del costat esquerre, a continuació, només faria - 547 00:25:34,710 --> 00:25:37,750 en Mario, el nivell superior té dos blocs en lloc d'un. 548 00:25:37,750 --> 00:25:39,080 Així que vam començar amb dos. 549 00:25:39,080 --> 00:25:40,700 Fem clic a D'acord. 550 00:25:40,700 --> 00:25:45,670 Ho fem tres, i després quatre, Enter, cinc. 551 00:25:45,670 --> 00:25:45,980 Bé. 552 00:25:45,980 --> 00:25:46,790 Per tant és simple. 553 00:25:46,790 --> 00:25:50,210 Excepte en aquest conjunt de problemes, ho volem realment per alinear-se amb 554 00:25:50,210 --> 00:25:52,250 la part dreta de la nostra pantalla. 555 00:25:52,250 --> 00:25:52,630 Està bé. 556 00:25:52,630 --> 00:25:58,870 Llavors, com pot un de vosaltres en realitat aquest tipus de manera que 557 00:25:58,870 --> 00:26:01,810 està alineat al llarg de la dreta? 558 00:26:01,810 --> 00:26:08,550 En lloc de posar la picada en primer lloc, com vostè pot ser de tipus 559 00:26:08,550 --> 00:26:10,040 moure al llarg? 560 00:26:10,040 --> 00:26:11,360 ALTAVEU 3: Escriu una línia? 561 00:26:11,360 --> 00:26:11,800 ZAMYLA CHAN: Hmm? 562 00:26:11,800 --> 00:26:13,030 ALTAVEU 3: Escriu una línia? 563 00:26:13,030 --> 00:26:13,110 ZAMYLA CHAN: Si. 564 00:26:13,110 --> 00:26:13,390 Si. 565 00:26:13,390 --> 00:26:15,080 Es pot escriure com un guió o alguna cosa així 566 00:26:15,080 --> 00:26:19,370 això, sinó que es pot dir simplement utilitzar un espai. 567 00:26:19,370 --> 00:26:21,500 Posem com en tres espais aquí. 568 00:26:21,500 --> 00:26:24,760 A continuació, la següent línia, bé, hauríem de posar dos espais. 569 00:26:24,760 --> 00:26:26,500 La següent línia, que només cal posar un espai. 570 00:26:26,500 --> 00:26:30,340 I per a la nostra última línia, que no posaria cap espai. 571 00:26:30,340 --> 00:26:32,210 I aquí tenim la nostra piràmide. 572 00:26:32,210 --> 00:26:33,170 >> Així que és una mena de - 573 00:26:33,170 --> 00:26:37,290 Recordo aquest tipus de lògica. 574 00:26:37,290 --> 00:26:39,340 I tractar d'esbrinar algun tipus de patró que podem 575 00:26:39,340 --> 00:26:43,690 després traduir a C i involucren en algun tipus de bucle. 576 00:26:43,690 --> 00:26:43,930 Està bé. 577 00:26:43,930 --> 00:26:48,130 Així que diguem que tenim una alçada vuit, llavors la nostra primera filera tindrà 578 00:26:48,130 --> 00:26:48,980 02:00 hashes. 579 00:26:48,980 --> 00:26:53,030 No obstant això, per obtenir els hashes, vostè hauria d'escriure alguna cosa 580 00:26:53,030 --> 00:26:54,000 espais per endavant. 581 00:26:54,000 --> 00:26:55,840 ¿És cert? 582 00:26:55,840 --> 00:26:57,340 El que vaig fer és que jo vaig passar. 583 00:26:57,340 --> 00:27:00,150 El vaig dibuixar jo mateix, una piràmide al meu editor de text, un 584 00:27:00,150 --> 00:27:03,800 piràmide, amb una alçada de vuit anys i s'ha calculat el nombre de 585 00:27:03,800 --> 00:27:05,180 espais que necessitava per fer. 586 00:27:05,180 --> 00:27:07,350 Així que li vaig dir que sí, bé la primera fila és 587 00:27:07,350 --> 00:27:08,260 tindrà dos hashes. 588 00:27:08,260 --> 00:27:11,100 Però abans d'això, ha d'introduir set espais. 589 00:27:11,100 --> 00:27:13,420 El següent té sis espais i després 590 00:27:13,420 --> 00:27:15,610 03:00 hashes, etcètera. 591 00:27:15,610 --> 00:27:20,520 >> Així que anem a tractar de portar això a un altre nivell de 592 00:27:20,520 --> 00:27:21,330 abstracció. 593 00:27:21,330 --> 00:27:26,680 Què passaria si tinguéssim la enèsima fila, com hashes i quants 594 00:27:26,680 --> 00:27:27,960 molts espais que necessitem? 595 00:27:27,960 --> 00:27:30,750 Algú veu el patró? 596 00:27:35,200 --> 00:27:37,560 Així que la primera fila té dues hashes. 597 00:27:37,560 --> 00:27:39,720 La segona té tres. 598 00:27:39,720 --> 00:27:42,120 El tercer té quatre. 599 00:27:42,120 --> 00:27:45,398 Així que l'enèsima fila tindria - 600 00:27:45,398 --> 00:27:46,800 ALTAVEU 4 N + 1? 601 00:27:46,800 --> 00:27:47,170 ZAMYLA CHAN: Si. 602 00:27:47,170 --> 00:27:47,780 N més 1. 603 00:27:47,780 --> 00:27:49,030 Exactament. 604 00:27:52,810 --> 00:27:56,470 Així veiem que el nombre de hashes serà - 605 00:27:56,470 --> 00:27:59,510 si estem comptant la primera fila per ser un, llavors el nombre 606 00:27:59,510 --> 00:28:03,850 de hashes és només serà un més que això. 607 00:28:03,850 --> 00:28:04,150 Bé. 608 00:28:04,150 --> 00:28:06,350 Llavors què passa amb el nombre de places? 609 00:28:06,350 --> 00:28:10,120 Així que anem a tractar d'expressar això en termes de l'altura. 610 00:28:10,120 --> 00:28:12,570 Si l'alçada és de vuit, a continuació, la primera 611 00:28:12,570 --> 00:28:15,260 fila té set espais. 612 00:28:15,260 --> 00:28:18,215 Així que aquest tipus de 8 correspon a menys 1. 613 00:28:18,215 --> 00:28:19,030 ¿És cert? 614 00:28:19,030 --> 00:28:22,420 Així que la segona fila tindrà sis espais, 615 00:28:22,420 --> 00:28:25,340 que és menys 8 2. 616 00:28:28,420 --> 00:28:31,450 Així que vaig a deixar a vostè a la classe de figura fora 617 00:28:31,450 --> 00:28:33,610 el patró perquè. 618 00:28:33,610 --> 00:28:34,010 >> Bé. 619 00:28:34,010 --> 00:28:37,450 Però en la programació, de vegades realment índex en zero. 620 00:28:37,450 --> 00:28:39,680 Així que vam començar de zero en comptes d'un. 621 00:28:39,680 --> 00:28:46,250 Així, en lloc de la primera fila es diu la primera fila, 622 00:28:46,250 --> 00:28:48,930 estarem trucant a la fila 0-th. 623 00:28:48,930 --> 00:28:51,360 Així que depenent de la manera desitjada per aplicar, es 624 00:28:51,360 --> 00:28:55,120 molt de compte si vostè comença a zero, si vostè comença a 625 00:28:55,120 --> 00:28:58,400 un, el seu patró serà compensat per una. 626 00:29:02,270 --> 00:29:02,880 Bé. 627 00:29:02,880 --> 00:29:05,460 Així que ara que tipus de descobert el programa, 628 00:29:05,460 --> 00:29:06,310 he de dir bé. 629 00:29:06,310 --> 00:29:11,540 Així, per cada tipus de nivell de l'escala, em vaig a imprimir 630 00:29:11,540 --> 00:29:14,390 tal i tal nombre d'espais i, a continuació tal 631 00:29:14,390 --> 00:29:16,550 tal nombre de hashes. 632 00:29:16,550 --> 00:29:19,550 Això depèn del model que hem creat abans. 633 00:29:19,550 --> 00:29:19,810 Bé. 634 00:29:19,810 --> 00:29:23,600 Així que una manera de iterar i amable d'anar 635 00:29:23,600 --> 00:29:27,670 a través d'un nombre establert de les coses és un bucle, una espècie de 636 00:29:27,670 --> 00:29:31,040 la repetició del bloc 10 o repetició similar i ha introduït un 637 00:29:31,040 --> 00:29:33,810 nombre d'Scratch. 638 00:29:33,810 --> 00:29:38,050 Per tant, bàsicament, per a cada nivell d'escales, anem a voler 639 00:29:38,050 --> 00:29:39,650 imprimir els espais primer. 640 00:29:39,650 --> 00:29:43,020 A continuació, imprimiu el nombre de hashes. 641 00:29:43,020 --> 00:29:46,480 I llavors voldrem entrar en una nova línia i després repetir 642 00:29:46,480 --> 00:29:49,750 de nou per al següent bloc. 643 00:29:49,750 --> 00:29:50,720 Bé. 644 00:29:50,720 --> 00:29:55,080 >> Així que donem una ullada als bucles for per un segon per veure un tipus de forma 645 00:29:55,080 --> 00:29:59,460 perquè puguem anar a través d'un nombre determinat, aneu a través del número 646 00:29:59,460 --> 00:30:02,250 de passos d'aquesta piràmide meitat. 647 00:30:02,250 --> 00:30:04,220 Així que per bucles es compon de tres parts. 648 00:30:04,220 --> 00:30:08,150 En primer lloc, vostè té una inicialització. 649 00:30:08,150 --> 00:30:13,220 Per tant, bàsicament, s'estableix una variable. 650 00:30:13,220 --> 00:30:15,130 Estarà en aquest valor cada vegada 651 00:30:15,130 --> 00:30:17,110 que l'arrancada en bucle. 652 00:30:17,110 --> 00:30:18,540 A continuació, tindrem una condició. 653 00:30:18,540 --> 00:30:21,640 El bucle for s'executarà només en tant que 654 00:30:21,640 --> 00:30:25,630 condició s'avalua com a veritable. 655 00:30:25,630 --> 00:30:28,000 I llavors vostè té un problema d'actualització. 656 00:30:28,000 --> 00:30:32,450 Així que té a veure amb la variable que s'inicialitza. 657 00:30:32,450 --> 00:30:38,120 Així que, bàsicament, una forma d'assegurar que puguem sortir 658 00:30:38,120 --> 00:30:40,070 del bucle, que no mantenim en l'execució de 659 00:30:40,070 --> 00:30:41,310 per sempre i per sempre. 660 00:30:41,310 --> 00:30:43,760 Perquè a diferència de Scratch, que en realitat no tenen un 661 00:30:43,760 --> 00:30:45,680 llaç pla Forever. 662 00:30:45,680 --> 00:30:48,100 En C, el programa ha d'acabar amb el temps. 663 00:30:48,100 --> 00:30:52,290 Així que hem d'assegurar que d'alguna manera hem detenir. 664 00:30:52,290 --> 00:30:52,830 >> Bé. 665 00:30:52,830 --> 00:30:56,260 Així, un exemple d'un bucle for que és possible que vulgueu utilitzar per 666 00:30:56,260 --> 00:30:57,530 Mario és això. 667 00:30:57,530 --> 00:31:02,290 Així que tens un enter i que comencen en 0. 668 00:31:02,290 --> 00:31:08,050 Mentre que és menor que l'alçada, s'executa el cos 669 00:31:08,050 --> 00:31:11,140 del bucle interior aquí. 670 00:31:11,140 --> 00:31:13,820 Després que el cos del bucle s'ha executat, llavors ho faria 671 00:31:13,820 --> 00:31:15,290 incrementar i en 1. 672 00:31:15,290 --> 00:31:18,510 Després, el programa pots tornar a intentar - està bé, bé, i és menor que 673 00:31:18,510 --> 00:31:18,885 l'alçada? 674 00:31:18,885 --> 00:31:21,865 Si és així, llavors vostè podria continuar. 675 00:31:24,630 --> 00:31:27,790 Així que aquí està un exemple de zero indexació, on vam començar a 676 00:31:27,790 --> 00:31:29,100 zero i després - 677 00:31:29,100 --> 00:31:30,970 compte que la nostra condició és menor que l'altura. 678 00:31:30,970 --> 00:31:34,510 Així que dir que la nostra alçada és de quatre, per exemple, i 679 00:31:34,510 --> 00:31:35,470 començarà a 0. 680 00:31:35,470 --> 00:31:36,180 Serà 1. 681 00:31:36,180 --> 00:31:36,730 Serà 2. 682 00:31:36,730 --> 00:31:37,940 Serà 3. 683 00:31:37,940 --> 00:31:42,310 I després, un cop que s'actualitza, quan el bucle per les actualitzacions, ho faré 684 00:31:42,310 --> 00:31:43,650 a continuació, s'estableix en 4. 685 00:31:43,650 --> 00:31:47,080 Però 4 no és menor de 4, i així que fèiem 686 00:31:47,080 --> 00:31:50,340 continuar amb la resta del nostre bucle. 687 00:31:50,340 --> 00:31:50,870 >> Bé. 688 00:31:50,870 --> 00:31:51,680 Així que comença a zero. 689 00:31:51,680 --> 00:31:53,470 Però també podríem començar a la una, per exemple. 690 00:31:53,470 --> 00:31:56,960 Però des que vam començar a un, quin tipus d'haver d'anar a una més 691 00:31:56,960 --> 00:31:57,920 temps al final. 692 00:31:57,920 --> 00:32:02,800 Així que per això li sumem el menor o igual a. 693 00:32:02,800 --> 00:32:05,780 Així que una de les grans coses que m'agraden d'ordinador 694 00:32:05,780 --> 00:32:06,930 programació és que no és tan 695 00:32:06,930 --> 00:32:08,370 moltes maneres de fer les coses. 696 00:32:08,370 --> 00:32:11,300 Així que vostè pot decidir si vol començar de zero, ja sigui que 697 00:32:11,300 --> 00:32:12,330 començar a la una. 698 00:32:12,330 --> 00:32:15,400 A més, si volia, es podia utilitzar un 699 00:32:15,400 --> 00:32:16,600 mentre que el bucle, per exemple. 700 00:32:16,600 --> 00:32:18,890 Així que vostè podria - 701 00:32:18,890 --> 00:32:20,270 anem a hello.c realment obert. 702 00:32:26,200 --> 00:32:28,600 Així que tenim un bucle aquí. 703 00:32:28,600 --> 00:32:31,330 S'inicia a i = 0, i <5. 704 00:32:31,330 --> 00:32:33,550 Tinc un comentari aquí ens diu el que fa. 705 00:32:33,550 --> 00:32:36,300 Imprimeix saludar cinc vegades usant un bucle for. 706 00:32:36,300 --> 00:32:41,690 Però també podria fer que l'ús d'un bucle while també. 707 00:32:41,690 --> 00:32:48,290 >> Així que donem una ullada a com podem fer això. 708 00:32:48,290 --> 00:32:51,010 Així que si anem a simular un bucle for, també volem 709 00:32:51,010 --> 00:32:54,870 imitar la inicialització, la condició, i l'actualització. 710 00:32:54,870 --> 00:33:01,430 Així que la condició ha de ser bastant simple ja que en el 711 00:33:01,430 --> 00:33:04,350 mentre que la sintaxi, quan es miri, diu while (condició). 712 00:33:04,350 --> 00:33:06,830 Així que anem a introduir la condició allà. 713 00:33:06,830 --> 00:33:09,700 i <5. 714 00:33:09,700 --> 00:33:10,590 Bé. 715 00:33:10,590 --> 00:33:18,900 Així que sabem que volem imprimir adéu. 716 00:33:18,900 --> 00:33:21,350 Sabem que aquest és el cos del nostre bucle. 717 00:33:21,350 --> 00:33:23,600 Però ens falta la inicialització 718 00:33:23,600 --> 00:33:24,490 i l'actualització, no? 719 00:33:24,490 --> 00:33:25,790 Com que no pot tenir un bucle infinit. 720 00:33:25,790 --> 00:33:27,660 S'ha d'acabar. 721 00:33:27,660 --> 00:33:35,300 Així que anem a afegir algun tipus d'inicialització aquí amb el 722 00:33:35,300 --> 00:33:38,790 mateixa que hem utilitzat en el nostre bucle per, int i = 0. 723 00:33:38,790 --> 00:33:39,110 Bé. 724 00:33:39,110 --> 00:33:40,630 Així que vam començar amb un int i. 725 00:33:40,630 --> 00:33:43,640 Repetim aquest bucle while, sempre i quan i és menor que 5. 726 00:33:43,640 --> 00:33:47,220 Així que ens falta una cosa, que és l'actualització. 727 00:33:47,220 --> 00:33:51,470 Llavors, què seria d'actualització que hem d'utilitzar si eren essencialment 728 00:33:51,470 --> 00:33:52,880 recreant el bucle for de dalt? 729 00:33:56,000 --> 00:33:59,880 Tenim la inicialització i és igual a 0. 730 00:33:59,880 --> 00:34:03,610 Tenim la condició i és menor que 5. 731 00:34:03,610 --> 00:34:06,300 I llavors aquí és una actualització, no? 732 00:34:06,300 --> 00:34:07,365 Així que volem copiar això. 733 00:34:07,365 --> 00:34:10,340 Volem dir molt bé, i + +. 734 00:34:10,340 --> 00:34:13,820 Això és el mateix que dir i = i + 1. 735 00:34:13,820 --> 00:34:17,090 Però ja que s'usa tan sovint, forma abreujada que és només 736 00:34:17,090 --> 00:34:18,340 dient i + +. 737 00:34:20,800 --> 00:34:22,050 >> Gran. 738 00:34:25,230 --> 00:34:26,400 Bé. 739 00:34:26,400 --> 00:34:29,210 Aquí realment no ha sortit del meu programa de pomes. 740 00:34:29,210 --> 00:34:33,070 Així que només vaig a premeu Control-C i així que 741 00:34:33,070 --> 00:34:34,989 botes em fora del meu programa i porta 742 00:34:34,989 --> 00:34:35,920 de tornada a la terminal. 743 00:34:35,920 --> 00:34:38,320 Així que, per exemple, si et trobes amb un error en el qual vostè 744 00:34:38,320 --> 00:34:40,750 es va oblidar d'actualitzar el seu bucle while de manera que ho faria 745 00:34:40,750 --> 00:34:43,150 acabar i entrar en un bucle infinit, llavors es pot 746 00:34:43,150 --> 00:34:46,400 utilitzar Control-C per sortir d'això. 747 00:34:46,400 --> 00:34:46,639 Està bé. 748 00:34:46,639 --> 00:34:47,960 Així que estem al directori correcte. 749 00:34:47,960 --> 00:34:52,010 Així que farem hello. 750 00:34:52,010 --> 00:35:01,710 I després, si correm hola, veiem que el bucle adéu fa 751 00:35:01,710 --> 00:35:03,350 exactament el mateix que el nostre bucle for fa. 752 00:35:03,350 --> 00:35:05,060 Així que això és només un suggeriment. 753 00:35:05,060 --> 00:35:06,980 Ja sigui que vostè està més còmode amb bucles for o 754 00:35:06,980 --> 00:35:09,850 amb cicles while, poden ser intercanviables. 755 00:35:09,850 --> 00:35:15,130 Així que qualsevol que voleu utilitzar per iterar a través de - 756 00:35:15,130 --> 00:35:16,020 en aquest cas - 757 00:35:16,020 --> 00:35:19,410 l'altura de la piràmide Mario. 758 00:35:19,410 --> 00:35:23,020 I així, una vegada més, això és només un recordatori, si s'inicia en zero 759 00:35:23,020 --> 00:35:25,430 per a la variable, llavors vostè voldrà tenir una diferent 760 00:35:25,430 --> 00:35:27,360 condicions que si vostè va començar a la una. 761 00:35:27,360 --> 00:35:29,620 Així que aquesta taula només tipus de mostra un recordatori. 762 00:35:29,620 --> 00:35:33,660 Per repetir 10 vegades, per exemple, llavors vostè 763 00:35:33,660 --> 00:35:36,030 Podeu iniciar la variable en zero. 764 00:35:36,030 --> 00:35:39,350 I la seva condició pot ser inferior a 10. 765 00:35:39,350 --> 00:35:43,020 Així que amable de la seva part mostra la matriu d'això. 766 00:35:43,020 --> 00:35:43,360 >> Bé. 767 00:35:43,360 --> 00:35:45,790 Així que hem passat per Mario. 768 00:35:45,790 --> 00:35:48,820 Hem dit acord, bé hem de comprovar per l'entrada correcta, 769 00:35:48,820 --> 00:35:50,800 zero i inclusiva 23. 770 00:35:50,800 --> 00:35:53,370 Ens trobarem algun tipus de patró, algun tipus de forma 771 00:35:53,370 --> 00:35:57,920 d'expressar la n-èsima fila o la fila i-èsima. 772 00:35:57,920 --> 00:36:01,560 I anem a decidir, Val, anem a imprimir aquest 773 00:36:01,560 --> 00:36:04,870 molts espais, això hashes molts, línia nova. 774 00:36:04,870 --> 00:36:05,050 Està bé. 775 00:36:05,050 --> 00:36:05,720 Així que hem de. 776 00:36:05,720 --> 00:36:08,570 Així que ara podem passar a Greedy. 777 00:36:08,570 --> 00:36:14,500 Greedy és un programa on un usuari li dóna una quantitat de 778 00:36:14,500 --> 00:36:17,460 efectiu que essencialment vostè com el caixer de tornar. 779 00:36:17,460 --> 00:36:21,530 Però vostè vol utilitzar monedes tan poc com sigui possible. 780 00:36:21,530 --> 00:36:25,070 I aquí és on un algorisme cobejós arriba, on 781 00:36:25,070 --> 00:36:30,440 anem a voler utilitzar la mínima quantitat de monedes possible 782 00:36:30,440 --> 00:36:31,900 fer aquesta quantitat de canvi. 783 00:36:34,500 --> 00:36:34,990 >> Bé. 784 00:36:34,990 --> 00:36:40,480 Així, un exemple d'això en la seva solució podria ser 785 00:36:40,480 --> 00:36:42,540 alguna cosa com això. 786 00:36:42,540 --> 00:36:45,410 Executa. / Cobdiciós. 787 00:36:45,410 --> 00:36:47,920 Se li demanarà que dir bé, bé quant canvi es deu? 788 00:36:47,920 --> 00:36:50,780 Aquest valor es serà un valor en dòlars. 789 00:36:50,780 --> 00:36:52,440 Així que serà un flotador. 790 00:36:52,440 --> 00:36:55,630 El programa calcularà la suma mínim 791 00:36:55,630 --> 00:37:00,380 de monedes requerides per fer, en aquest exemple, $ 0,32. 792 00:37:00,380 --> 00:37:04,550 I així, el nombre mínim és de quatre. 793 00:37:04,550 --> 00:37:07,480 Així que abans de decidir què fer, anem a classe de passeig 794 00:37:07,480 --> 00:37:10,770 a través del procés que vostè pot anar sobre. 795 00:37:10,770 --> 00:37:16,480 Així que si l'entrada és de 32, llavors essencialment que utilitzaré 796 00:37:16,480 --> 00:37:19,100 el mínim de monedes si ús com molts 797 00:37:19,100 --> 00:37:20,460 monedes grans com sigui possible. 798 00:37:20,460 --> 00:37:20,870 ¿És cert? 799 00:37:20,870 --> 00:37:25,420 Així que és molt més fàcil d'usar com a quart 800 00:37:25,420 --> 00:37:27,070 comparació amb cinc monedes de cinc centaus. 801 00:37:27,070 --> 00:37:31,740 Així que anem a dir, ha de tornar 0,32 $. 802 00:37:31,740 --> 00:37:36,660 Bé, puc fer servir una quarta part en això? 803 00:37:36,660 --> 00:37:37,480 Sí, es pot. 804 00:37:37,480 --> 00:37:41,970 I llavors es reduiria a $ 0,07. 805 00:37:41,970 --> 00:37:46,070 A veure si puc utilitzar un altre trimestre de reemborsament. 806 00:37:46,070 --> 00:37:46,870 Bé, no. 807 00:37:46,870 --> 00:37:48,200 No pot cabre una quarta part en això. 808 00:37:48,200 --> 00:37:52,110 Així que vaig a passar a la moneda més gran següent. 809 00:37:52,110 --> 00:37:53,250 Puc utilitzar una moneda de deu centaus? 810 00:37:53,250 --> 00:37:55,800 0,07 $, no vostè no pot utilitzar una moneda de deu centaus de pagar $ 0,07. 811 00:37:55,800 --> 00:37:56,840 Així que dir que no. 812 00:37:56,840 --> 00:38:00,490 Mou a la següent, que és un níquel. 813 00:38:00,490 --> 00:38:01,440 Es pot utilitzar una moneda? 814 00:38:01,440 --> 00:38:02,930 Sí 815 00:38:02,930 --> 00:38:06,440 Set és major de $ 0,05, de manera que podem utilitzar una moneda. 816 00:38:06,440 --> 00:38:08,640 I després tenim dos centaus sobre l'esquerra. 817 00:38:08,640 --> 00:38:11,110 Podem utilitzar un cèntim? 818 00:38:11,110 --> 00:38:12,180 Sí que es pot. 819 00:38:12,180 --> 00:38:13,070 Podem utilitzar un cèntim? 820 00:38:13,070 --> 00:38:13,380 Sí 821 00:38:13,380 --> 00:38:14,710 Podem utilitzar un cèntim? 822 00:38:14,710 --> 00:38:17,070 No, perquè ara tenim èxit 823 00:38:17,070 --> 00:38:19,400 pagat la part posterior de l'usuari. 824 00:38:19,400 --> 00:38:23,620 Així que en total té quatre monedes utilitzades. 825 00:38:23,620 --> 00:38:26,370 >> Així que pensant en aquest procés, cada 826 00:38:26,370 --> 00:38:29,080 moment decidir bé, 827 00:38:29,080 --> 00:38:31,050 Quina és la moneda més gran que podem utilitzar? 828 00:38:31,050 --> 00:38:37,240 Quan fem servir, quin tipus de mantenir una nota mental de quant 829 00:38:37,240 --> 00:38:39,650 més diners que necessitem per tornar l'usuari, així com el nombre de 830 00:38:39,650 --> 00:38:41,310 monedes que han estat utilitzant. 831 00:38:44,640 --> 00:38:45,200 Bé. 832 00:38:45,200 --> 00:38:48,930 Així que de nou, el primer pas - igual que Mario - és preguntar 833 00:38:48,930 --> 00:38:51,120 l'usuari una quantitat monetària. 834 00:38:51,120 --> 00:38:53,920 I així, aquesta quantitat serà - 835 00:38:53,920 --> 00:38:56,040 que tindrà un valor decimal, perquè anem a 836 00:38:56,040 --> 00:38:57,310 demanar-los dòlars. 837 00:38:57,310 --> 00:39:00,550 Així que tipus de dades no serà un nombre enter. 838 00:39:00,550 --> 00:39:01,860 Però serà un - 839 00:39:04,960 --> 00:39:07,700 sí, un flotador. 840 00:39:07,700 --> 00:39:10,780 Però igual que les pomes, els flotadors poden ser positius o negatius. 841 00:39:10,780 --> 00:39:13,390 Així que quan et registres per als valors, vostè va a voler 842 00:39:13,390 --> 00:39:15,380 per assegurar que el seu flotador - 843 00:39:15,380 --> 00:39:19,710 l'entrada de l'usuari - és no negatiu. 844 00:39:19,710 --> 00:39:20,960 Bé. 845 00:39:22,630 --> 00:39:26,720 Podríem tractar amb flotadors al nostre programa conjunt, representen 846 00:39:26,720 --> 00:39:31,610 quarts de 0,25, un 0,1 dimes, et cetera. 847 00:39:31,610 --> 00:39:36,280 Però em resulta molt més fàcil de tractar en només centaus purs. 848 00:39:36,280 --> 00:39:36,910 També - 849 00:39:36,910 --> 00:39:39,370 i parlarem d'això una mica més tard - 850 00:39:39,370 --> 00:39:43,610 al carrer, punts flotants tenen alguna cosa que es diu la imprecisió. 851 00:39:43,610 --> 00:39:48,660 Així que quan vostè entra en 0,12, per exemple, l'ordinador 852 00:39:48,660 --> 00:39:53,010 emmagatzema realment com com 0.1111119 o 853 00:39:53,010 --> 00:39:54,350 alguna cosa per l'estil. 854 00:39:54,350 --> 00:39:56,900 >> Així que és molt més fàcil convertir centaus. 855 00:39:56,900 --> 00:40:02,190 Llavors, com convertir un valor en dòlars a centaus? 856 00:40:02,190 --> 00:40:03,540 ALTAVEU 5: Times per 100? 857 00:40:03,540 --> 00:40:03,920 ZAMYLA CHAN: Si. 858 00:40:03,920 --> 00:40:04,110 Si. 859 00:40:04,110 --> 00:40:07,110 Així que ho faríem vegades per 100. 860 00:40:07,110 --> 00:40:10,820 Però una cosa difícil sobre els punts flotants és que hi ha 861 00:40:10,820 --> 00:40:11,790 és una certa imprecisió. 862 00:40:11,790 --> 00:40:16,090 Així que anem a veure un exemple. 863 00:40:18,760 --> 00:40:21,360 Així que vaig a obrir imprecision.c. 864 00:40:21,360 --> 00:40:23,690 Bé. 865 00:40:23,690 --> 00:40:24,860 Aquest és un programa molt simple. 866 00:40:24,860 --> 00:40:26,970 Es demana un flotador, i s'imprimeix de nou. 867 00:40:35,950 --> 00:40:39,600 Un bon consell a la terminal és que pot simplement escriure clar i 868 00:40:39,600 --> 00:40:41,180 llavors vostè té una pantalla clara. 869 00:40:41,180 --> 00:40:45,270 I el que no cal buscar en qualsevol sortida anterior o qualsevol 870 00:40:45,270 --> 00:40:47,490 errors o bugs informes, alguna cosa així. 871 00:40:47,490 --> 00:40:48,120 Bé. 872 00:40:48,120 --> 00:40:49,675 Així que farem imprecisió. 873 00:40:53,250 --> 00:40:56,250 Anem a executar-lo. 874 00:40:56,250 --> 00:40:57,890 Així que haven't - 875 00:40:57,890 --> 00:41:03,830 en el meu codi, no s'imprimeix cap missatge ni res d'això. 876 00:41:03,830 --> 00:41:05,010 Per tant, només té un cursor parpellejant. 877 00:41:05,010 --> 00:41:07,390 Així que només m'espera a l'entrada d'un flotador. 878 00:41:07,390 --> 00:41:08,640 Així let 's - 879 00:41:10,610 --> 00:41:11,280 un flotador aleatori. 880 00:41:11,280 --> 00:41:15,080 I es veu que s'imprimeix de nou, però té alguna cosa extra 881 00:41:15,080 --> 00:41:18,180 nombres que definitivament no va acceptar. 882 00:41:18,180 --> 00:41:21,980 Així que volem assegurar-nos que això no ho fa 883 00:41:21,980 --> 00:41:23,300 succeir en el nostre programa. 884 00:41:23,300 --> 00:41:27,550 >> Així que el que volem fer és assegurar-nos que realment 885 00:41:27,550 --> 00:41:31,300 tipus d'arrodonir al valor adequat. 886 00:41:31,300 --> 00:41:31,850 ¿És cert? 887 00:41:31,850 --> 00:41:37,820 I així, per sort, tenim una funció anomenada ronda inclòs 888 00:41:37,820 --> 00:41:38,550 en l'aparell. 889 00:41:38,550 --> 00:41:41,390 Està a la biblioteca matemàtica. 890 00:41:41,390 --> 00:41:44,710 Si vols saber com utilitzar tot l'any, llavors vostè realment utilitzar 891 00:41:44,710 --> 00:41:45,220 el manual. 892 00:41:45,220 --> 00:41:48,160 Podeu fer clic en rodó home. 893 00:41:48,160 --> 00:41:51,190 Llavors aquí es planteja - 894 00:41:51,190 --> 00:41:53,220 pot ser una mica difícil de desxifrar, però amb el temps 895 00:41:53,220 --> 00:41:54,690 vostè aconseguirà la caiguda d'ella. 896 00:41:54,690 --> 00:42:00,060 En certa manera li mostra el que fa la funció i una mica més 897 00:42:00,060 --> 00:42:01,790 possibles usos que. 898 00:42:01,790 --> 00:42:10,210 Així que quan vostè finalment aconsegueix una entrada correcta, vàlida a partir de la 899 00:42:10,210 --> 00:42:14,490 usuari, llavors vostè vol convertir centaus. 900 00:42:14,490 --> 00:42:18,530 Comproveu arrodonir el valor per evitar aquesta 901 00:42:18,530 --> 00:42:21,780 surant imprecisió punt. 902 00:42:21,780 --> 00:42:22,340 >> Bé. 903 00:42:22,340 --> 00:42:26,190 Per això hem demanarà a l'usuari una quantitat monetària. 904 00:42:26,190 --> 00:42:31,460 Ara el que vull fer és comprovar essencialment, oi? 905 00:42:31,460 --> 00:42:35,500 Bé, així que puc utilitzar la moneda més gran possible? 906 00:42:35,500 --> 00:42:37,040 Si pot, llavors que l'utilitzi. 907 00:42:37,040 --> 00:42:40,250 Vostè manté un registre de quantes monedes que ha utilitzat fins ara i 908 00:42:40,250 --> 00:42:41,710 també la quantitat decreixent. 909 00:42:41,710 --> 00:42:42,240 ¿És cert? 910 00:42:42,240 --> 00:42:44,880 I llavors vostè va a comprovar. 911 00:42:44,880 --> 00:42:47,940 Quan hagi esgotat mena de quarts de final, vol anar 912 00:42:47,940 --> 00:42:49,545 al següent possible. 913 00:42:49,545 --> 00:42:59,380 >> Així classe quin tipus d'estructura de bucle o el que podríem 914 00:42:59,380 --> 00:43:03,850 voleu utilitzar per comprovar contínuament si encara podem utilitzar 915 00:43:03,850 --> 00:43:05,100 una quarta part, per exemple? 916 00:43:07,380 --> 00:43:09,280 ALTAVEU 6: Mentre major valor de? 917 00:43:09,280 --> 00:43:10,150 ZAMYLA Chandler: Sí, perfecte. 918 00:43:10,150 --> 00:43:10,590 Exactament. 919 00:43:10,590 --> 00:43:12,630 Així, mentre que el valor és més gran que. 920 00:43:12,630 --> 00:43:16,300 Així, mentre que el valor que hem de donar l'esquena és encara 921 00:43:16,300 --> 00:43:19,410 més gran que una quarta part, mentre que encara podem utilitzar una quarta part, 922 00:43:19,410 --> 00:43:20,490 utilitzar trimestres. 923 00:43:20,490 --> 00:43:21,450 Porteu un registre d'això. 924 00:43:21,450 --> 00:43:22,610 I després seguir endavant. 925 00:43:22,610 --> 00:43:25,040 Perfecte. 926 00:43:25,040 --> 00:43:26,290 Bé. 927 00:43:28,190 --> 00:43:32,580 Oh, aquí acabo incloure només alguns consells sobre com imprimir 928 00:43:32,580 --> 00:43:33,830 valors fora. 929 00:43:36,330 --> 00:43:38,810 Així que en la seva funció printf, hem estat en general només 930 00:43:38,810 --> 00:43:39,760 tractant amb cadenes. 931 00:43:39,760 --> 00:43:43,290 Però quan es vol imprimir un int o qualsevol tipus de 932 00:43:43,290 --> 00:43:46,510 dígits, vostè ha d'escriure una classe de tipus de marcador de posició. 933 00:43:46,510 --> 00:43:50,840 Així que està representat pel percentatge,% d per sencers. 934 00:43:50,840 --> 00:43:53,780 Vostè escriu que, a continuació, després vostè realment - 935 00:43:53,780 --> 00:43:54,900 després d'una coma - 936 00:43:54,900 --> 00:43:57,990 posar en valor el que realment passa allà. 937 00:43:57,990 --> 00:43:58,510 Dreta. 938 00:43:58,510 --> 00:43:58,840 >> Bé. 939 00:43:58,840 --> 00:44:02,050 Així que hem decidit que volem comprovar si - 940 00:44:02,050 --> 00:44:04,950 com fer-ho seria la de comprovar constantment la 941 00:44:04,950 --> 00:44:08,640 encara podem utilitzar quarts, i useu els quarts, mantingui 942 00:44:08,640 --> 00:44:11,460 seguir, i després passar a la següent gran valor. 943 00:44:11,460 --> 00:44:15,010 Ara, un altre tipus de forma elegant que vostè pot fer això és 944 00:44:15,010 --> 00:44:16,770 utilitzant el mòdul operador. 945 00:44:16,770 --> 00:44:22,710 Així que ja tenim el més, menys, multiplicar i dividir 946 00:44:22,710 --> 00:44:23,560 disponible. 947 00:44:23,560 --> 00:44:25,600 No obstant això, l'operador de mòdul és molt guai. 948 00:44:25,600 --> 00:44:28,630 El que fa és que en realitat li retorna la resta de 949 00:44:28,630 --> 00:44:31,750 dividir dos nombres. 950 00:44:31,750 --> 00:44:34,680 Així que si vostè recorda a la divisió llarga quan ho faria, per exemple, 951 00:44:34,680 --> 00:44:40,100 fa 74 dividit per 3, l'escriuria, pròrroga, 952 00:44:40,100 --> 00:44:43,260 restar, i després, al final és el número a la part inferior 953 00:44:43,260 --> 00:44:44,050 la resta. 954 00:44:44,050 --> 00:44:47,120 Bé, què mòdul és el que realment et dóna això. 955 00:44:47,120 --> 00:44:51,290 Així mòdul 3 74 li posaries a 2. 956 00:44:51,290 --> 00:44:56,310 De la mateixa manera, 10 modul 2 et dóna 0 perquè no hi ha cap 957 00:44:56,310 --> 00:44:59,340 resta en dividir 10 per 2. 958 00:44:59,340 --> 00:45:03,940 6 mòdul 5, 5 va bé en un 6 vegades i després 959 00:45:03,940 --> 00:45:05,900 que hi hagi un sobrant. 960 00:45:05,900 --> 00:45:09,930 Llavors, si vostè té 7 mòdul 9, i 9 és major que 7. 961 00:45:09,930 --> 00:45:11,830 Per tant, no pot anar cap altre moment. 962 00:45:11,830 --> 00:45:15,560 Així que és lògic que el valor de retorn és de 7. 963 00:45:15,560 --> 00:45:21,590 Així que si vostè pensa en mòdul, com se li dóna la resta 964 00:45:21,590 --> 00:45:25,170 després de dividir una cosa, pots tipus de veure com 965 00:45:25,170 --> 00:45:27,490 podria ser capaç d'utilitzar en Greedy, oi? 966 00:45:30,340 --> 00:45:34,170 Així que si vostè combinar el tipus de mòdul potser amb la divisió 967 00:45:34,170 --> 00:45:36,410 operador, o alguna cosa així, llavors vostè podria tenir un lloc fresc 968 00:45:36,410 --> 00:45:38,870 tipus de forma mathy abordar el conjunt de problemes. 969 00:45:44,010 --> 00:45:46,090 >> Així que ara que sabem que hi ha un parell de diferents 970 00:45:46,090 --> 00:45:48,350 formes en què podem fer això - hi ha sens dubte un munt de 971 00:45:48,350 --> 00:45:54,160 diferents maneres d'escriure, fins i tot els bucles while. 972 00:45:54,160 --> 00:45:57,020 Així que he escrit algunes pseudocodi aquí. 973 00:45:57,020 --> 00:46:01,760 Potser no és idèntica a l'espècie d'esquelet del seu 974 00:46:01,760 --> 00:46:02,460 codi que s'escriu. 975 00:46:02,460 --> 00:46:05,580 Però essencialment, el procés i la manera de pensar és 976 00:46:05,580 --> 00:46:06,940 just com ho discutim. 977 00:46:06,940 --> 00:46:10,310 Així que, primer, la primera línia està dient a obtenir una determinada quantitat 978 00:46:10,310 --> 00:46:12,490 en dòlars. 979 00:46:12,490 --> 00:46:16,960 I després hi ha implícit convertir-lo en centaus. 980 00:46:16,960 --> 00:46:20,540 Llavors, mentre quartes parts es pot utilitzar, volem 981 00:46:20,540 --> 00:46:21,750 augmentar el compte. 982 00:46:21,750 --> 00:46:24,360 I després volem disminuir la quantitat, el valor que 983 00:46:24,360 --> 00:46:25,300 estem tornant enrere. 984 00:46:25,300 --> 00:46:28,170 Com es veu aquí, no és prou C. Però també he 985 00:46:28,170 --> 00:46:31,550 sagnia coses, vaig posar les meves condicions dins 986 00:46:31,550 --> 00:46:32,190 parèntesi. 987 00:46:32,190 --> 00:46:34,370 >> Així que aquest tipus de em aconsegueix començat. 988 00:46:34,370 --> 00:46:36,620 I més tard, puc mirar cap amunt la sintaxi. 989 00:46:36,620 --> 00:46:40,230 Sovint, la part més difícil realment d'un problema és 990 00:46:40,230 --> 00:46:41,860 entendre què és exactament el que heu de fer. 991 00:46:41,860 --> 00:46:44,610 Així que una vegada que s'escrigui això, llavors és molt més fàcil llavors 992 00:46:44,610 --> 00:46:45,810 es tradueixen en pseudocodi. 993 00:46:45,810 --> 00:46:49,340 I després de pseudocodi, la sintaxi ve bastant fàcil. 994 00:46:49,340 --> 00:46:52,140 Veiem, doncs, mentre trimestres, es pot utilitzar, augmentar el recompte, 995 00:46:52,140 --> 00:46:53,220 disminuir la quantitat. 996 00:46:53,220 --> 00:46:57,310 Si bé es pot utilitzar monedes de deu centaus, llavors vostè ho faci així successivament i així 997 00:46:57,310 --> 00:47:00,670 successivament, fins que hagi esgotat totes les seves monedes. 998 00:47:00,670 --> 00:47:03,410 De imprimir el nombre de monedes utilitzat, que serà el 999 00:47:03,410 --> 00:47:06,620 quantitat mínima per fer que l'usuari introdueix el valor. 1000 00:47:06,620 --> 00:47:09,370 I allà té el seu algorisme cobdiciós. 1001 00:47:09,370 --> 00:47:13,960 I després, un cop que hagi acabat, vostè també ha acabat conjunt de processadors 0. 1002 00:47:13,960 --> 00:47:16,155 >> Algú té alguna pregunta sobre alguna cosa? 1003 00:47:19,420 --> 00:47:19,780 Està bé. 1004 00:47:19,780 --> 00:47:22,900 Bé, em quedaré una mica després si té 1005 00:47:22,900 --> 00:47:23,970 qualsevol pregunta. 1006 00:47:23,970 --> 00:47:24,940 Això va ser tutorial 1. 1007 00:47:24,940 --> 00:47:26,190 Gràcies per venir.