1 00:00:08,280 --> 00:00:09,020 [Powered by Google Translate] ZAMYLA Chan: Todos todos, seguro. 2 00:00:09,020 --> 00:00:11,130 Benvido ao Paso a paso 1. 3 00:00:11,130 --> 00:00:13,950 Este paso a paso estará en pset 1, que é C. Eu espero que 4 00:00:13,950 --> 00:00:16,540 todos nos divertimos cos seus proxectos de scratch. 5 00:00:16,540 --> 00:00:18,430 Entón agora neste paso a paso, estamos, en realidade, vai ser 6 00:00:18,430 --> 00:00:21,580 capaz de poñerse en C, poñerse en escribir un código de máquina. 7 00:00:21,580 --> 00:00:24,750 Entón, se non estaba en Paso a paso 0, entón estes 8 00:00:24,750 --> 00:00:26,330 orientacións realmente - nós estamos indo a pé a través da 9 00:00:26,330 --> 00:00:29,500 conxunto de problemas, falar a través de algúns consellos e técnicas comúns 10 00:00:29,500 --> 00:00:30,430 que pode usar. 11 00:00:30,430 --> 00:00:32,960 Imos romper a asignación ata mordidas gerenciáveis, de xeito que 12 00:00:32,960 --> 00:00:35,500 podedes comezar e espero 13 00:00:35,500 --> 00:00:37,470 entender como facelo. 14 00:00:37,470 --> 00:00:38,050 >> Okay. 15 00:00:38,050 --> 00:00:42,280 Así pset 1. 16 00:00:42,280 --> 00:00:46,200 A serie de exercicios deste ano terá unha estrutura onde o primeiro - 17 00:00:46,200 --> 00:00:48,930 alí vai ser unha sección de preguntas, unha serie de 18 00:00:48,930 --> 00:00:51,120 cuestións que realmente vai axudar a comezar con 19 00:00:51,120 --> 00:00:53,840 o pset, axudar a practicar algunhas técnicas que precisa. 20 00:00:53,840 --> 00:00:55,950 E así, esas preguntas, eu non vou cubrir o 21 00:00:55,950 --> 00:00:59,630 paso a paso, porque na súa sección, o ensino da súa asignado 22 00:00:59,630 --> 00:01:01,630 compañeiro é realmente vai percorrer os 23 00:01:01,630 --> 00:01:02,620 cuestións con vostede. 24 00:01:02,620 --> 00:01:04,370 Ao final da súa sección, vai estar co 25 00:01:04,370 --> 00:01:07,200 respostas a estas preguntas, pero tamén coa confianza que 26 00:01:07,200 --> 00:01:10,340 pode aplicar algunhas das características que precisa 27 00:01:10,340 --> 00:01:12,480 para as últimas partes do pset. 28 00:01:12,480 --> 00:01:15,900 >> Pset 1 constitúe Mario. 29 00:01:15,900 --> 00:01:19,000 E iso é un programa pouco de diversión, onde esencialmente nós 30 00:01:19,000 --> 00:01:24,360 escribir e imprimir unha pirámide media na escena Mario típico. 31 00:01:24,360 --> 00:01:27,150 E, a continuación, a segunda parte do pset chámase Greedy. 32 00:01:27,150 --> 00:01:29,850 E así, en Greedy que actúan como un ganancioso 33 00:01:29,850 --> 00:01:32,780 caixa, onde se alguén nos dá unha cantidade de diñeiro 34 00:01:32,780 --> 00:01:38,730 que queremos, nós calculamos a cantidade mínima de moedas que 35 00:01:38,730 --> 00:01:40,840 podemos volver a eles para aínda darlles ese importe. 36 00:01:44,080 --> 00:01:44,420 >> Todo ben. 37 00:01:44,420 --> 00:01:46,970 Así, cada paso a paso vai ter unha caixa de ferramentas. 38 00:01:46,970 --> 00:01:50,650 E, de novo, non pode usar todas as ferramentas neste 39 00:01:50,650 --> 00:01:53,080 caixa de ferramentas ou pode empregar todos eles. 40 00:01:53,080 --> 00:01:54,550 En calquera caso, é moi bo saber que 41 00:01:54,550 --> 00:01:55,680 está equipado con. 42 00:01:55,680 --> 00:01:59,990 Polo tanto, temos a Appliance CS50, que eu vou amosar a vostedes e 43 00:01:59,990 --> 00:02:01,350 presenta-lo a iso. 44 00:02:01,350 --> 00:02:05,710 A continuación, tamén en xeral, bo estilo é sempre un dos nosos 45 00:02:05,710 --> 00:02:07,080 ferramentas máis importantes. 46 00:02:07,080 --> 00:02:10,759 Estilo esencialmente se refire a como lexible é o código? 47 00:02:10,759 --> 00:02:12,750 Cando alguén vai e le o seu código, que teñen 48 00:02:12,750 --> 00:02:13,610 un tempo doado? 49 00:02:13,610 --> 00:02:14,630 Poden entendelo lo? 50 00:02:14,630 --> 00:02:16,610 É elegante? 51 00:02:16,610 --> 00:02:21,750 Entón imos falar sobre como obter datos introducidos polo usuario válido no seu 52 00:02:21,750 --> 00:02:26,430 programa, pois en ambos Mario e Greedy, cómpre 53 00:02:26,430 --> 00:02:31,660 preguntar ao usuario a entrada e darlle algún tipo de número. 54 00:02:31,660 --> 00:02:35,480 Entón queremos estar seguro de que o número é válido. 55 00:02:35,480 --> 00:02:39,010 Entón lembre-se en scratch, tivemos bloques como repetición, 56 00:02:39,010 --> 00:02:42,300 Repita ata que, ou esperar, ou para sempre. 57 00:02:42,300 --> 00:02:45,880 Entón, nós estamos indo para o tipo de traducir iso en C agora e 58 00:02:45,880 --> 00:02:49,750 ollar lazos como for, while, e do-while. 59 00:02:49,750 --> 00:02:54,330 Entón tamén nós tamén imos ter amosar valores de volta na 60 00:02:54,330 --> 00:02:56,500 pantalla, e en Mario ou Greedy. 61 00:02:56,500 --> 00:03:01,150 E así imos falar sobre como imprimir cousas de cordas para 62 00:03:01,150 --> 00:03:03,070 enteiros e coches alegóricos. 63 00:03:03,070 --> 00:03:05,250 E entón, finalmente, imos falar sobre pseudocódigo, realmente 64 00:03:05,250 --> 00:03:07,550 concepto importante para lembrar durante este curso. 65 00:03:07,550 --> 00:03:11,130 O que eu creo que máis me axuda con conxuntos de problemas é pensar e 66 00:03:11,130 --> 00:03:14,260 describir o que quero facer antes de pensar en calquera C. 67 00:03:14,260 --> 00:03:15,640 Pero só describir a acción. 68 00:03:15,640 --> 00:03:19,100 Entón pseudocódigo é unha especie de entre Inglés e C, tipo de 69 00:03:19,100 --> 00:03:22,980 describindo os procesos sen a sintaxe correcta pero 70 00:03:22,980 --> 00:03:24,490 introducindo unha estrutura boa o suficiente. 71 00:03:24,490 --> 00:03:27,460 E entón eu vou ter algúns exemplos de pseudocódigo para ti tamén 72 00:03:27,460 --> 00:03:28,710 neste paso a paso. 73 00:03:31,610 --> 00:03:31,940 >> Okay. 74 00:03:31,940 --> 00:03:35,620 Entón, o que nós imos estar traballando con é o aparello CS50. 75 00:03:35,620 --> 00:03:38,840 É esencialmente unha máquina virtual que executa un tipo de 76 00:03:38,840 --> 00:03:40,780 ordenador dentro do seu propio ordenador. 77 00:03:40,780 --> 00:03:42,080 E iso ten unha morea de beneficios. 78 00:03:42,080 --> 00:03:44,780 Unha delas é que é pre-configurado con unha morea de ferramentas que 79 00:03:44,780 --> 00:03:45,980 precisa para CS50. 80 00:03:45,980 --> 00:03:47,940 Como así, o que significa que todos están no mesmo terreo, 81 00:03:47,940 --> 00:03:50,800 se Mac ou PC ou outro sistema operativo. 82 00:03:50,800 --> 00:03:53,930 Todos podemos executar a máquina virtual. 83 00:03:53,930 --> 00:03:58,800 E así hai instrucións no manual.cs50.net/appliance. 84 00:03:58,800 --> 00:04:02,740 E por iso, se vai para ese enlace e seguir as instrucións, 85 00:04:02,740 --> 00:04:07,820 entón vai ser capaz de instalar o dispositivo. 86 00:04:07,820 --> 00:04:11,390 >> Entón, primeiro, vai ter instalar unha aplicación, un 87 00:04:11,390 --> 00:04:13,760 aplicación real para poder executar a máquina virtual. 88 00:04:13,760 --> 00:04:15,270 E entón baixar o aparello. 89 00:04:15,270 --> 00:04:18,050 Pero, de novo, hai instrucións no 90 00:04:18,050 --> 00:04:21,459 manual.cs50.net/appliance. 91 00:04:21,459 --> 00:04:26,040 Entón, eu xa baixou o meu aparello, e eu instala 92 00:04:26,040 --> 00:04:28,060 en VMware Fusion. 93 00:04:28,060 --> 00:04:31,250 E así, unha vez eu baixei o aparello, fun ao arquivo. 94 00:04:31,250 --> 00:04:34,690 Fun abrir e logo descubrir onde eu 95 00:04:34,690 --> 00:04:37,550 almacenado o Appliance CS50. 96 00:04:37,550 --> 00:04:39,310 E de alí, eu corrín aquí. 97 00:04:39,310 --> 00:04:44,520 Pero eu teño-o xa aquí, por iso imos dar un ollo máis de preto. 98 00:04:44,520 --> 00:04:44,850 >> Todo ben. 99 00:04:44,850 --> 00:04:46,770 Polo tanto, agora estamos dentro CS50 Appliance. 100 00:04:46,770 --> 00:04:47,890 Eu fixen iso en pantalla completa. 101 00:04:47,890 --> 00:04:51,130 Pode optar por facelo se quere ou só telo como un 102 00:04:51,130 --> 00:04:53,480 ventá menor no seu escritorio. 103 00:04:53,480 --> 00:04:57,170 Aquí temos só un escritorio sinxelo, con 104 00:04:57,170 --> 00:04:58,220 unha casa e un lixo. 105 00:04:58,220 --> 00:05:05,070 Pero se vai para o menú e, a continuación, a programación, entón ve 106 00:05:05,070 --> 00:05:07,570 que temos algo chamado Terminal. 107 00:05:07,570 --> 00:05:12,340 E así, aquí, podemos navegar en torno do noso ordenador. 108 00:05:12,340 --> 00:05:13,360 Podemos escribir código. 109 00:05:13,360 --> 00:05:17,240 Pero, en realidade, nós imos usar un programa chamado gedit, ou "g 110 00:05:17,240 --> 00:05:20,050 editar, "calquera que sexa. 111 00:05:20,050 --> 00:05:21,680 Entón, nós imos estar usando aquel de escribir código. 112 00:05:21,680 --> 00:05:24,850 Entón tes esas dúas ferramentas que vai empregar, sobre todo 113 00:05:24,850 --> 00:05:27,590 de escribir código. 114 00:05:27,590 --> 00:05:31,240 Entón, ademais, é como un ordenador normal. 115 00:05:31,240 --> 00:05:32,890 Temos un navegador. 116 00:05:32,890 --> 00:05:34,400 Nós escoller o Google Chrome. 117 00:05:34,400 --> 00:05:38,720 O que eu fixen é que eu crear un Dropbox para conter todos 118 00:05:38,720 --> 00:05:39,340 os documentos. 119 00:05:39,340 --> 00:05:41,760 E entón iso é algo que é moi animou. 120 00:05:41,760 --> 00:05:44,900 Dropbox usa nube sincronización e por iso, se - 121 00:05:44,900 --> 00:05:47,250 así, por exemplo, algo que por casualidade - non imos esperar - 122 00:05:47,250 --> 00:05:50,100 acontece co seu dispositivo, entón todo está 123 00:05:50,100 --> 00:05:51,350 sincronizados na nube. 124 00:05:54,716 --> 00:05:55,180 >> Todo ben. 125 00:05:55,180 --> 00:05:59,500 Polo tanto, estas son as aplicacións que vai empregar na 126 00:05:59,500 --> 00:06:02,900 CS50 Appliance. 127 00:06:02,900 --> 00:06:05,750 Agora, para navegar ao redor da liña de comandos. 128 00:06:05,750 --> 00:06:10,150 O terminal realmente pode actuar como unha especie de camiño para realmente 129 00:06:10,150 --> 00:06:12,040 escribir comandos - 130 00:06:12,040 --> 00:06:13,650 gusta, se vostede é un Mac, un Finder. 131 00:06:13,650 --> 00:06:17,010 Ou, se está en Windows, eu creo que é "explorar o meu 132 00:06:17,010 --> 00:06:19,070 ordenador "ou algo así. 133 00:06:19,070 --> 00:06:23,160 Entón, se nós volver para o aparello, imos abrir un 134 00:06:23,160 --> 00:06:25,710 ventá de terminal. 135 00:06:25,710 --> 00:06:27,720 Por iso, ten ese aviso, jharvard aparello @. 136 00:06:27,720 --> 00:06:32,950 Nós só facer esa maior. 137 00:06:32,950 --> 00:06:33,790 Okay. 138 00:06:33,790 --> 00:06:40,400 Entón, se escribir o comando ls, entón, que lista todos os 139 00:06:40,400 --> 00:06:45,440 arquivos no noso ordenador, no noso directorio actual. 140 00:06:45,440 --> 00:06:46,720 Os directorios son como carpetas. 141 00:06:46,720 --> 00:06:49,310 Usamos estes termos como sinónimos. 142 00:06:49,310 --> 00:06:52,480 Todo ben, entón listados os arquivos 143 00:06:52,480 --> 00:06:53,650 que están neste directorio. 144 00:06:53,650 --> 00:06:58,340 Agora, se queremos acceder, por exemplo, o noso Dropbox, entón podemos 145 00:06:58,340 --> 00:06:59,320 cambiar directorios. 146 00:06:59,320 --> 00:07:04,230 Entón, CD e Dropbox. 147 00:07:04,230 --> 00:07:10,860 Nós ls novo, e ver a lista de ficheiros que están en 148 00:07:10,860 --> 00:07:11,790 este cartafol. 149 00:07:11,790 --> 00:07:15,590 Isto é análogo ao ir á miña casa, a continuación, premendo 150 00:07:15,590 --> 00:07:19,250 Dropbox, e despois de ver a lista aquí. 151 00:07:19,250 --> 00:07:20,090 >> Todo ben. 152 00:07:20,090 --> 00:07:22,220 Entón, imos dicir - 153 00:07:22,220 --> 00:07:25,640 cando vostedes van facer o seu pset 1, imos facer unha 154 00:07:25,640 --> 00:07:27,390 directorio chamado pset1. 155 00:07:27,390 --> 00:07:32,170 Entón, nós estamos no Dropbox agora, como se pode ver a partir deste 156 00:07:32,170 --> 00:07:32,700 solicitar aquí. 157 00:07:32,700 --> 00:07:34,320 Entón imos facer un directorio. 158 00:07:34,320 --> 00:07:37,940 Entón, mkdir, imos chamalo pset1. 159 00:07:40,470 --> 00:07:43,500 E agora, se nós, ls novo, entón nós 160 00:07:43,500 --> 00:07:45,390 ver que pset1 aparece. 161 00:07:45,390 --> 00:07:49,470 E así, se queremos ir a dentro pset1, entón podemos ir dentro 162 00:07:49,470 --> 00:07:54,230 esa carpeta co comando cd. 163 00:07:54,230 --> 00:07:54,610 Todo ben. 164 00:07:54,610 --> 00:07:59,040 Entón, de novo, imos ver se nós - 165 00:07:59,040 --> 00:08:01,620 dicir, imos facelo doutro xeito. 166 00:08:01,620 --> 00:08:03,550 Isto é análogo a só dicindo "Crear 167 00:08:03,550 --> 00:08:05,330 un novo cartafol, pset1. 168 00:08:05,330 --> 00:08:08,530 Pero como atopar, vai interactuar con 169 00:08:08,530 --> 00:08:09,310 o terminal moito. 170 00:08:09,310 --> 00:08:11,900 Entón, ás veces, é moito máis fácil, unha perda máis rápida de só 171 00:08:11,900 --> 00:08:15,900 traballar no terminal para facer eses tipos de cousas. 172 00:08:15,900 --> 00:08:16,140 Okay. 173 00:08:16,140 --> 00:08:18,150 E entón estes outros comandos. 174 00:08:18,150 --> 00:08:20,410 Hai un rm para eliminar o ficheiro. 175 00:08:20,410 --> 00:08:22,690 Entón, simplemente escribe rm e despois o nome do 176 00:08:22,690 --> 00:08:23,800 ficheiro para excluílo. 177 00:08:23,800 --> 00:08:25,810 Nós imos entrar en algúns exemplos de que, máis tarde. 178 00:08:25,810 --> 00:08:28,840 E entón temos algo chamado o mando home, que 179 00:08:28,840 --> 00:08:31,850 trae un manual para un tipo de función. 180 00:08:31,850 --> 00:08:34,419 Unha vez máis, eu vou traer un exemplo real de que, máis tarde. 181 00:08:37,360 --> 00:08:39,900 >> Polo tanto, outra ferramenta moi importante, como xa refire brevemente 182 00:08:39,900 --> 00:08:41,280 antes, é o estilo. 183 00:08:41,280 --> 00:08:43,650 Entón, basicamente, o estilo ten que ver coa lexibilidade. 184 00:08:43,650 --> 00:08:46,460 Será que alguén sexa capaz de ler, seguimento e 185 00:08:46,460 --> 00:08:47,670 comprender o seu código? 186 00:08:47,670 --> 00:08:50,490 Isto é especialmente importante para vostede, vostede mesmo, en realidade. 187 00:08:50,490 --> 00:08:53,060 Se queda se codificación final, e despois en ti 188 00:08:53,060 --> 00:08:55,940 volver e pensa, o que significa variable? 189 00:08:55,940 --> 00:08:58,400 Diga, se está a traballar nun proxecto en grupo con alguén, e 190 00:08:58,400 --> 00:09:00,130 ambos teñen que mirar para o outro código. 191 00:09:00,130 --> 00:09:03,380 É moi importante que nomear as súas variables correctamente 192 00:09:03,380 --> 00:09:06,240 e facela agradable, porque iso fai toda a diferenza. 193 00:09:06,240 --> 00:09:08,270 Pero, entón, por riba de todo, estamos nun camiño correcto agora. 194 00:09:08,270 --> 00:09:10,660 Polo tanto, para o interese do CS50 e especialmente para o seu 195 00:09:10,660 --> 00:09:13,010 compañeiros de ensino e niveladoras que vai estar a ollar para o seu 196 00:09:13,010 --> 00:09:15,455 Serie de exercicios, por favor, use o estilo correcto. 197 00:09:15,455 --> 00:09:18,980 E os seus compañeiros de ensino vai ser moi feliz. 198 00:09:18,980 --> 00:09:22,890 Entón, de novo, o estilo inclúe o retroceso cousas correctamente, 199 00:09:22,890 --> 00:09:26,380 especialmente por medio do seu dispositivo e retirada aqueles. 200 00:09:26,380 --> 00:09:29,910 Nomear variables algo que ten sentido. 201 00:09:29,910 --> 00:09:32,330 Agora seguir a convención cando ten 202 00:09:32,330 --> 00:09:35,240 varias palabras no seu nome variable, entón 203 00:09:35,240 --> 00:09:37,480 conecta-los con un subliñado, como ve na medida en que 204 00:09:37,480 --> 00:09:39,660 Exemplo Nome alí. 205 00:09:39,660 --> 00:09:41,740 >> Entón, finalmente, algo chamado de números máxicos. 206 00:09:41,740 --> 00:09:48,030 Basicamente, cando estás lendo a través de código e dicir 207 00:09:48,030 --> 00:09:51,570 ten unha variable - 208 00:09:51,570 --> 00:09:56,680 dicir, non tes unha variable, pero só dicir que todo ben, ata que tales 209 00:09:56,680 --> 00:09:58,600 e tal é inferior a 10. 210 00:09:58,600 --> 00:10:00,210 A continuación, o seu alumno está a ir ben, espera, 211 00:10:00,210 --> 00:10:01,320 onde foi que 10 vén? 212 00:10:01,320 --> 00:10:05,040 Entón, realmente explicar-se importa moito. 213 00:10:05,040 --> 00:10:06,740 Para axudar a explicar e comentarios. 214 00:10:06,740 --> 00:10:09,850 Comentarios son probablemente a cousa máis importante incluír no 215 00:10:09,850 --> 00:10:11,460 seus programas. 216 00:10:11,460 --> 00:10:15,440 E axuda a explicar non só a verdade - 217 00:10:15,440 --> 00:10:17,220 que axuda a explicar o tipo de razoamento como 218 00:10:17,220 --> 00:10:17,870 vai xunto. 219 00:10:17,870 --> 00:10:20,480 E así se fai iso, unha vez máis, que vai ser moito máis fácil 220 00:10:20,480 --> 00:10:23,370 para volver no seu código e tipo de entender o que está a 221 00:10:23,370 --> 00:10:24,080 facendo alí. 222 00:10:24,080 --> 00:10:26,410 Unha vez máis, alumnos realmente me gusta de comentarios. 223 00:10:26,410 --> 00:10:28,940 Entón comentar ben e - 224 00:10:28,940 --> 00:10:29,970 tipo como de puntos libres. 225 00:10:29,970 --> 00:10:32,340 E quen non lle gusta puntos libres? 226 00:10:32,340 --> 00:10:33,910 Tamén pode ter varias liñas de comentarios. 227 00:10:33,910 --> 00:10:36,630 E así eu incluído un tipo de modelo aquí. 228 00:10:36,630 --> 00:10:38,580 Esencialmente, estes son xeralmente utilizados na parte superior da súa 229 00:10:38,580 --> 00:10:40,950 programa para tipo de explicar, en xeral, o que 230 00:10:40,950 --> 00:10:43,220 seu conxunto de problemas fai. 231 00:10:43,220 --> 00:10:46,130 Inclúe o seu nome, a data, etcétera. 232 00:10:46,130 --> 00:10:49,030 E así, como eu dixen nese comentario multi-liña, 233 00:10:49,030 --> 00:10:56,260 manual.cs50.net/style_guide ten máis consellos e regras sobre 234 00:10:56,260 --> 00:10:59,310 estilo para loops, etcétera. 235 00:10:59,310 --> 00:10:59,740 >> Okay. 236 00:10:59,740 --> 00:11:03,600 Polo tanto, agora que eu xa lle dixen un pouco sobre o estilo, imos ver 237 00:11:03,600 --> 00:11:07,390 esta acción en. 238 00:11:07,390 --> 00:11:07,770 Todo ben. 239 00:11:07,770 --> 00:11:11,850 Entón, aquí, Tommy escribiu-nos unha deliciosa horrible 240 00:11:11,850 --> 00:11:15,440 exemplo de estilo nun programa. 241 00:11:15,440 --> 00:11:17,170 Entón mira aquí, todo ben. 242 00:11:17,170 --> 00:11:18,280 Este é, en realidade, todo ben. 243 00:11:18,280 --> 00:11:22,060 Vostede ve o comentario multi-liña aquí. 244 00:11:22,060 --> 00:11:25,120 Vostede comeza cunha barra e, a continuación, dous asteriscos. 245 00:11:25,120 --> 00:11:28,580 Vostede segue xunto, aliñado os asteriscos ao longo da liña 246 00:11:28,580 --> 00:11:30,540 e despois rematar cun asterisco e barra. 247 00:11:30,540 --> 00:11:30,810 Todo ben. 248 00:11:30,810 --> 00:11:32,800 Entón, iso é bo. 249 00:11:32,800 --> 00:11:33,760 Este aquí é bo. 250 00:11:33,760 --> 00:11:35,110 El incluíndo as súas bibliotecas. 251 00:11:35,110 --> 00:11:38,790 Pero, entón, aquí ten comentarios que abranguen varias liñas. 252 00:11:38,790 --> 00:11:40,390 Hai moitas cousas erradas con iso. 253 00:11:40,390 --> 00:11:44,770 Comentarios que abranguen varias liñas, aquí está a usar 254 00:11:44,770 --> 00:11:47,230 a sintaxe para comentarios de liña só individuais. 255 00:11:47,230 --> 00:11:53,140 Tamén está mesturando todo no mesmo comentario. 256 00:11:53,140 --> 00:11:54,715 Entón, nós queremos evitar isto. 257 00:11:57,710 --> 00:12:03,010 Entón aquí vemos que estes aparellos, por exemplo, son todos 258 00:12:03,010 --> 00:12:03,730 sobre o lugar. 259 00:12:03,730 --> 00:12:06,950 O retroceso é malo. 260 00:12:06,950 --> 00:12:09,460 Realmente non mostrar sempre que algo 261 00:12:09,460 --> 00:12:12,850 comeza e remata outra cousa. 262 00:12:12,850 --> 00:12:16,510 Entón, así, vemos que ten unha variable definida i = 5 aquí. 263 00:12:16,510 --> 00:12:18,620 Pero, entón, este catro xorde da nada, e non hai 264 00:12:18,620 --> 00:12:21,520 comentar a verdade explicar de onde que vén. 265 00:12:21,520 --> 00:12:22,130 >> Okay. 266 00:12:22,130 --> 00:12:28,760 Entón agora imos ollar para algo que en realidade é só o mesmo 267 00:12:28,760 --> 00:12:30,250 código, excepto con mellor estilo. 268 00:12:30,250 --> 00:12:32,485 Entón, de novo, este é o exemplo bo estilo, 269 00:12:32,485 --> 00:12:33,735 o exemplo de liñas múltiples. 270 00:12:38,400 --> 00:12:39,735 E entón aquí é bastante limpo. 271 00:12:39,735 --> 00:12:43,500 Vemos que inicia unha declaración aquí, entra nunha nova 272 00:12:43,500 --> 00:12:46,400 liña, ten unha chave de apertura. 273 00:12:46,400 --> 00:12:48,740 El ten un recorte. 274 00:12:48,740 --> 00:12:50,970 El mantén este retroceso - 275 00:12:50,970 --> 00:12:54,680 mantén este uniforme indicación en todo o territorio 276 00:12:54,680 --> 00:12:59,120 programa e realmente mostra cando un bloque de código comeza cando 277 00:12:59,120 --> 00:13:00,780 un bloque de código remata. 278 00:13:00,780 --> 00:13:04,410 Isto pode parecer un pouco detallista da nosa parte para comezar 279 00:13:04,410 --> 00:13:06,370 con, pero vai ver como está escribindo o seu código. 280 00:13:06,370 --> 00:13:09,400 É moi útil para ser capaz de separar iso. 281 00:13:09,400 --> 00:13:12,200 E, de novo, os seus alumnos realmente me gusta diso. 282 00:13:12,200 --> 00:13:14,360 E así se ve, no canto de só poñer un número 283 00:13:14,360 --> 00:13:17,510 Alí, en realidade o nome das iterações variables. 284 00:13:17,510 --> 00:13:20,160 E por iso non estamos realmente mirando para este código agora 285 00:13:20,160 --> 00:13:22,450 pero só unha especie de ver un exemplo de 286 00:13:22,450 --> 00:13:23,780 estilo ben contra o mal. 287 00:13:23,780 --> 00:13:29,610 E por iso, se ollar para os lado a lado aquí, faría 288 00:13:29,610 --> 00:13:32,910 definitivamente prefiro ler a da dereita. 289 00:13:39,230 --> 00:13:40,100 >> Todo ben. 290 00:13:40,100 --> 00:13:42,710 Entón, unha última cousa antes de mergullo na carne real do 291 00:13:42,710 --> 00:13:46,260 pset é como compilar e executar o código. 292 00:13:46,260 --> 00:13:50,320 E así, esencialmente, cando escribe C, que en realidade non é 293 00:13:50,320 --> 00:13:52,480 traducidas para o código de máquina real, e os ceros 294 00:13:52,480 --> 00:13:56,000 aqueles que a máquina poida realmente ler e interpretar. 295 00:13:56,000 --> 00:13:57,170 Entón temos algo - 296 00:13:57,170 --> 00:13:59,340 Clang é un compilador que usan para C. 297 00:13:59,340 --> 00:14:00,270 Existen moitos compiladores. 298 00:14:00,270 --> 00:14:02,480 Pero en CS50, imos usar Clang. 299 00:14:02,480 --> 00:14:05,480 E así Clang basicamente se traduce de C para máquina 300 00:14:05,480 --> 00:14:07,380 código para ti. 301 00:14:07,380 --> 00:14:10,170 Entón, imos ollar un exemplo - mergullo no aparello aquí. 302 00:14:14,550 --> 00:14:15,030 Todo ben. 303 00:14:15,030 --> 00:14:16,670 Entón, agora estamos no noso directorio persoal. 304 00:14:16,670 --> 00:14:18,680 Nós, en realidade, non están onde un código. 305 00:14:18,680 --> 00:14:24,740 Entón imos cambiar o noso directorio para Dropbox/walkthrough1, onde 306 00:14:24,740 --> 00:14:25,930 Eu teño gardado un código. 307 00:14:25,930 --> 00:14:29,340 Entón, se nós presionar ls, entón vemos que eu teño un 308 00:14:29,340 --> 00:14:31,230 par de arquivos aquí. 309 00:14:31,230 --> 00:14:31,700 >> Todo ben. 310 00:14:31,700 --> 00:14:35,280 Entón, eu xa escribín hello.c, entón imos compilar 311 00:14:35,280 --> 00:14:36,670 e despois ver o que fai. 312 00:14:36,670 --> 00:14:43,150 Así, un comando de compilación básica sería bumbum entón hello.c, 313 00:14:43,150 --> 00:14:46,910 esencialmente dicindo ben, compilar hello.c para min. 314 00:14:46,910 --> 00:14:50,550 Eu prema en Inserir, parece ir cara á dereita. 315 00:14:50,550 --> 00:14:52,590 Imos facer clic ls novo. 316 00:14:52,590 --> 00:14:55,230 Este arquivo a.out mostrou agora. 317 00:14:55,230 --> 00:14:57,430 E así a.out é un ficheiro executábel. 318 00:14:57,430 --> 00:15:05,330 Entón, para executa-lo, fai un. / A.out. 319 00:15:05,330 --> 00:15:07,650 E así vemos que este programa hello.c aparentemente 320 00:15:07,650 --> 00:15:10,400 imprime hello cinco veces. 321 00:15:10,400 --> 00:15:10,990 Todo ben. 322 00:15:10,990 --> 00:15:14,250 Pero dicir que non quere usar o a.out nome. 323 00:15:18,140 --> 00:15:21,080 Por exemplo, queremos executar o programa Ola, porque iso 324 00:15:21,080 --> 00:15:22,540 fai máis doado de entender. 325 00:15:22,540 --> 00:15:26,590 Entón, digamos que hello.c bumbum e entón tes que esencialmente 326 00:15:26,590 --> 00:15:29,030 para pasar algunhas cousas chamadas bandeiras. 327 00:15:29,030 --> 00:15:31,600 Así dicindo ok, así quero nomear esta outra cousa. 328 00:15:31,600 --> 00:15:33,900 Tamén pode pasar un monte de varias bandeiras, 329 00:15:33,900 --> 00:15:34,620 que vai ver. 330 00:15:34,620 --> 00:15:37,510 Así, a bandeira para nomear algo programa que 331 00:15:37,510 --> 00:15:39,780 quere é o. 332 00:15:39,780 --> 00:15:42,470 Tras-o, escribe o nome do programa. 333 00:15:42,470 --> 00:15:44,090 Imos chamar-lle só Olá 334 00:15:44,090 --> 00:15:49,050 >> Entón, agora, vemos que, en realidade, ten un arquivo executábel Olá 335 00:15:49,050 --> 00:15:54,020 Así, podemos executa-lo, e el fai o mesmo que antes. 336 00:15:54,020 --> 00:15:56,210 Polo tanto, agora que temos Ola, tamén se pode eliminar, polo 337 00:15:56,210 --> 00:15:57,450 exemplo, o noso a.out. 338 00:15:57,450 --> 00:16:03,880 Entón rm para eliminar, a.out, o terminal pode solicitar que, pregunta 339 00:16:03,880 --> 00:16:05,470 para vostede para confirmar se realmente quere 340 00:16:05,470 --> 00:16:06,370 apaga-lo ou non. 341 00:16:06,370 --> 00:16:10,000 Dicimos y para si. 342 00:16:10,000 --> 00:16:10,750 E alí imos nós. 343 00:16:10,750 --> 00:16:12,220 A.out está desaparecido. 344 00:16:12,220 --> 00:16:12,620 Todo ben. 345 00:16:12,620 --> 00:16:14,810 Pero ás veces queda confuso se lembrar de todo o 346 00:16:14,810 --> 00:16:17,160 bandeiras que necesitamos para incluír e escribir bumbum. 347 00:16:17,160 --> 00:16:20,410 E como vemos cando estamos usando programas máis complexos, imos 348 00:16:20,410 --> 00:16:22,450 estar incluídos bibliotecas diferentes. 349 00:16:22,450 --> 00:16:27,230 E así os nosos comandos para Clang vai ter máis e máis. 350 00:16:27,230 --> 00:16:30,660 Entón incluído no Appliance CS50 é o comando make. 351 00:16:30,660 --> 00:16:33,880 Entón, simplemente escribe facer Olá 352 00:16:33,880 --> 00:16:35,130 Oops. 353 00:16:36,860 --> 00:16:38,400 Nós xa fixemos este ficheiro executable. 354 00:16:38,400 --> 00:16:39,650 Entón deixe-me só eliminar-lo rapidamente. 355 00:16:42,260 --> 00:16:44,830 Agora imos escribir make Olá 356 00:16:44,830 --> 00:16:49,470 E mira aquí nesta liña que, esencialmente, dicindo facer 357 00:16:49,470 --> 00:16:54,760 Ola implica todos eses comandos 358 00:16:54,760 --> 00:16:55,580 entrar nel para ti. 359 00:16:55,580 --> 00:16:58,080 >> Entón incluído no Appliance CS50 é o arquivo make. 360 00:16:58,080 --> 00:17:02,300 Entón, simplemente cando ten un nome.c ficheiro, entón todo o que fai 361 00:17:02,300 --> 00:17:03,680 é dicir facer nome do ficheiro. 362 00:17:03,680 --> 00:17:04,800 E entón vai ter un executable 363 00:17:04,800 --> 00:17:06,200 ficheiro con ese nome. 364 00:17:06,200 --> 00:17:06,675 Si? 365 00:17:06,675 --> 00:17:09,525 >> COLUMNA 1: Para o meu ordenador, en vez de Clang di GCC. 366 00:17:09,525 --> 00:17:11,910 É que, como - 367 00:17:11,910 --> 00:17:12,109 ZAMYLA Chan: Yeah. 368 00:17:12,109 --> 00:17:15,700 Así, o ordenador pode dicir GCC ao contrario Clang porque 369 00:17:15,700 --> 00:17:18,180 O GCC é outro tipo de compilador. 370 00:17:18,180 --> 00:17:20,460 Se estás no Appliance CS50 aínda, entón 371 00:17:20,460 --> 00:17:21,810 usar Clang. 372 00:17:24,619 --> 00:17:27,880 Se non, entón quizais veña falar comigo despois ou engadir 373 00:17:27,880 --> 00:17:29,595 en CS50 Discutir e podemos clasificar. 374 00:17:34,510 --> 00:17:35,710 >> Todo ben. 375 00:17:35,710 --> 00:17:39,250 Polo tanto, agora que temos o noso tipo de ferramentas básicas para abaixo, entón nós 376 00:17:39,250 --> 00:17:43,060 Pode mergullo Mario. 377 00:17:43,060 --> 00:17:43,550 Okay. 378 00:17:43,550 --> 00:17:47,360 Entón Mario é un programa onde esencialmente imos ser 379 00:17:47,360 --> 00:17:50,800 facer a nosa propia especie de versión primitiva do Mario 380 00:17:50,800 --> 00:17:51,410 fondo do xogo. 381 00:17:51,410 --> 00:17:54,790 Vostede sabe, Mario xeralmente ten un cachimbo e un 382 00:17:54,790 --> 00:17:55,670 árbore e algúns bloques. 383 00:17:55,670 --> 00:17:59,390 E despois hai unha especie de pirámide metade. 384 00:17:59,390 --> 00:18:02,100 Entón, nós estamos indo só para concentrarse no que a pirámide metade, 385 00:18:02,100 --> 00:18:05,350 facer o código de tal forma que imprime hashes para o tipo 386 00:18:05,350 --> 00:18:07,500 de bloques neste formato. 387 00:18:07,500 --> 00:18:10,800 Entón, o que vai ocorrer é que o usuario pode introducir un certo 388 00:18:10,800 --> 00:18:13,130 altura da pirámide, e entón vai imprimir iso 389 00:18:13,130 --> 00:18:17,410 de xeito que a parte inferior esquerda hash - 390 00:18:17,410 --> 00:18:21,270 tan no fondo moi ben aquí - que unha pode aliñar 391 00:18:21,270 --> 00:18:23,820 co ángulo inferior esquerdo do seu terminal. 392 00:18:26,720 --> 00:18:27,360 Okay. 393 00:18:27,360 --> 00:18:29,860 >> Entón, a primeira cousa que cómpre - 394 00:18:29,860 --> 00:18:33,120 o pequeno problema primeiro mini que temos que afrontar é como 395 00:18:33,120 --> 00:18:34,640 para a entrada do usuario. 396 00:18:34,640 --> 00:18:40,020 Polo tanto, temos que estar lidando con o que o usuario inserir e despois 397 00:18:40,020 --> 00:18:41,060 tipo de cousas saída de alí. 398 00:18:41,060 --> 00:18:47,630 Entón, imos ollar para buscar un arquivo chamado apples.c que escribín 399 00:18:47,630 --> 00:18:52,670 que se encarga de entradas e saídas. 400 00:18:52,670 --> 00:18:53,240 Okay. 401 00:18:53,240 --> 00:18:55,970 Entón, aquí enriba, eu inclúe algunhas das bibliotecas 402 00:18:55,970 --> 00:18:56,540 que eu teño. 403 00:18:56,540 --> 00:19:00,700 O importante aquí é stdio (estándar I / O). Que trata 404 00:19:00,700 --> 00:19:02,760 con entradas e saídas normais, porque nós imos 405 00:19:02,760 --> 00:19:04,600 estar lidando con entradas do usuario. 406 00:19:04,600 --> 00:19:04,960 Todo ben. 407 00:19:04,960 --> 00:19:06,660 Entón eu comece a miña función principal. 408 00:19:06,660 --> 00:19:11,310 E entón eu preguntarlle ao usuario correcto, cantas mazás ten? 409 00:19:11,310 --> 00:19:13,650 Entón, aquí, o que esta liña fai - 410 00:19:13,650 --> 00:19:18,420 I atribúa a variable i como o valor GetInt. 411 00:19:18,420 --> 00:19:22,890 >> Así GetInt é unha función que está incluída no stdio. 412 00:19:22,890 --> 00:19:26,090 E así, esencialmente, que vai tratar con isto para ti. 413 00:19:26,090 --> 00:19:27,900 El ha pedir ao usuario para un int. 414 00:19:27,900 --> 00:19:30,600 O que quere que eles retornan, que será asignado ao 415 00:19:30,600 --> 00:19:32,020 variable i. 416 00:19:32,020 --> 00:19:35,620 E entón é só un pequeno programa que diminúe a 417 00:19:35,620 --> 00:19:39,160 valor de i en 1 e, a continuación, imprime o novo valor. 418 00:19:39,160 --> 00:19:42,420 O agradable sobre gedit é certo que hai un mini 419 00:19:42,420 --> 00:19:43,720 dereito terminal aquí. 420 00:19:43,720 --> 00:19:46,670 Entón, en vez de ter que cambiar para adiante e cara atrás entre 421 00:19:46,670 --> 00:19:48,120 gedit e da terminal, realmente pode 422 00:19:48,120 --> 00:19:49,100 basta executa-lo dende aquí. 423 00:19:49,100 --> 00:19:52,070 Entón, primeiro imos entrar no directorio correcto. 424 00:19:52,070 --> 00:19:54,230 Entón, imos cambiar os nosos directorios para 425 00:19:54,230 --> 00:19:55,480 Dropbox/walkthrough1. 426 00:19:57,160 --> 00:19:57,840 Todo ben. 427 00:19:57,840 --> 00:20:03,400 Entón agora imos facer mazás, compila-lo para nós. 428 00:20:03,400 --> 00:20:06,640 E agora imos realizar mazás. 429 00:20:06,640 --> 00:20:08,420 Cantas mazás que temos? 430 00:20:08,420 --> 00:20:09,630 Eu digo que teño 3. 431 00:20:09,630 --> 00:20:12,060 E el di que "mwahaha eu vou comer un deles" e di 432 00:20:12,060 --> 00:20:13,610 "Agora tes dúas mazás". 433 00:20:13,610 --> 00:20:14,220 >> Todo ben. 434 00:20:14,220 --> 00:20:16,390 Entón, imos correr de novo. 435 00:20:16,390 --> 00:20:19,040 E imos dicir que eu teño unha mazá. 436 00:20:19,040 --> 00:20:19,940 Agora eu teño 0 mazás. 437 00:20:19,940 --> 00:20:20,180 Okay. 438 00:20:20,180 --> 00:20:22,460 Polo tanto, este programa parece funcionar como esperaba. 439 00:20:22,460 --> 00:20:25,070 Nós introducir un número, diminúe-lo por 1, e, a continuación, 440 00:20:25,070 --> 00:20:27,290 imprime o novo. 441 00:20:27,290 --> 00:20:31,950 Pero e se, por exemplo, eu teño -1 mazás? 442 00:20:31,950 --> 00:20:33,440 Iso non facer moito sentido. 443 00:20:33,440 --> 00:20:37,430 Pero aínda é un número enteiro, para que o programa acepta. 444 00:20:37,430 --> 00:20:41,090 E así el retorna un número aínda máis negativo. 445 00:20:41,090 --> 00:20:44,700 Entón, iso é unha lección para nós que, aínda que o GetInt 446 00:20:44,700 --> 00:20:46,700 función e os outros asociados, tales como 447 00:20:46,700 --> 00:20:48,260 GetFloat ou GetString - 448 00:20:48,260 --> 00:20:51,490 aínda que os vai o tipo de datos á dereita para 449 00:20:51,490 --> 00:20:55,750 exemplo, se eu tivese acaba de dicir [tipagem] 450 00:20:55,750 --> 00:20:57,380 el me dixo para tentar de novo. 451 00:20:57,380 --> 00:21:01,860 Entón, iso vai tratar con calquera tipo de datos a súa entrada 452 00:21:01,860 --> 00:21:04,650 é, pero non vai realmente comprobar, así, é realmente un tipo de 453 00:21:04,650 --> 00:21:07,820 valor que quero? 454 00:21:07,820 --> 00:21:12,370 Entón, a continuación, unha parte da Mario é que o usuario ten que introducir un 455 00:21:12,370 --> 00:21:15,400 número que representa a altura da pirámide de media 456 00:21:15,400 --> 00:21:16,360 que está facendo. 457 00:21:16,360 --> 00:21:21,000 E entón, se estamos tendo este usuario a altura, entón 458 00:21:21,000 --> 00:21:25,480 debe haber dous límites para iso. 459 00:21:25,480 --> 00:21:28,040 Non? 460 00:21:28,040 --> 00:21:31,150 Na especificación, el di que non debe ser superior a 23 461 00:21:31,150 --> 00:21:32,630 personaxes, porque ese é o tipo de defecto 462 00:21:32,630 --> 00:21:34,450 altura do terminal. 463 00:21:34,450 --> 00:21:37,590 Pero entón, cal outro límite, quizais o límite inferior, poder 464 00:21:37,590 --> 00:21:38,840 queremos incluír? 465 00:21:41,180 --> 00:21:44,350 >> Na realidade estamos deseñando unha pirámide, tipo de pensamento de volta 466 00:21:44,350 --> 00:21:48,460 para o alto dunha pirámide pode ser, pode nunca ser inferior a un 467 00:21:48,460 --> 00:21:49,132 determinado número? 468 00:21:49,132 --> 00:21:50,490 Speaker 2: maior que tres. 469 00:21:50,490 --> 00:21:50,560 ZAMYLA Chan: Hmm? 470 00:21:50,560 --> 00:21:52,630 Speaker 2: maior que tres. 471 00:21:52,630 --> 00:21:54,850 ZAMYLA Chan: Ese é un punto bo. 472 00:21:54,850 --> 00:21:57,860 Pode ser - 473 00:21:57,860 --> 00:22:00,700 podemos querer restringi-lo a só unha pirámide nivel tres. 474 00:22:00,700 --> 00:22:02,120 Pero imos pensar - 475 00:22:02,120 --> 00:22:06,510 imos dicir como unha conta de un táboa de hash como unha pirámide tamén. 476 00:22:06,510 --> 00:22:09,031 Entón, o que debe ser a nosa real límite inferior ser? 477 00:22:12,260 --> 00:22:13,760 Pensando en mazás, non queremos un 478 00:22:13,760 --> 00:22:15,020 pirámide altura negativa. 479 00:22:15,020 --> 00:22:15,460 Non? 480 00:22:15,460 --> 00:22:15,720 Okay. 481 00:22:15,720 --> 00:22:19,060 Entón, cando pedir a entrada do usuario, entón vai ter que 482 00:22:19,060 --> 00:22:21,980 incluír algunha forma de facer que o número enteiro que 483 00:22:21,980 --> 00:22:24,970 eles lle proporcionar non é negativa, porque non pode 484 00:22:24,970 --> 00:22:28,180 debuxar unha pirámide negativo. 485 00:22:28,180 --> 00:22:28,410 >> Okay. 486 00:22:28,410 --> 00:22:30,190 Polo tanto, hai algunhas formas de facelo. 487 00:22:30,190 --> 00:22:34,420 Esencialmente, unha vez que pedir a entrada do usuario, que pretende esixir 488 00:22:34,420 --> 00:22:37,080 que lle proporcionar a entrada correcta. 489 00:22:37,080 --> 00:22:40,120 Entón quere esixir que lle proporcionar un número 490 00:22:40,120 --> 00:22:46,630 que non é negativo, pero tamén menos que 24. 491 00:22:46,630 --> 00:22:49,510 Entón, nós estamos lidando con cero a 23, inclusive. 492 00:22:49,510 --> 00:22:50,070 Todo ben. 493 00:22:50,070 --> 00:22:52,830 Entón, nós queremos esixir continuamente - 494 00:22:52,830 --> 00:22:55,720 se eles non nos deron un número enteiro válido, queren 495 00:22:55,720 --> 00:22:57,350 continuamente esixir ningunha. 496 00:22:57,350 --> 00:22:59,770 Déame unha entrada válida. 497 00:22:59,770 --> 00:23:02,270 Deixa-me unha altura válida. 498 00:23:02,270 --> 00:23:06,970 Entón, lembro de volta en scratch, tivemos a repetir ata bloque ou 499 00:23:06,970 --> 00:23:08,950 para sempre bloque. 500 00:23:08,950 --> 00:23:12,345 Aqueles son lazos que son moi semellantes á liña de tempo e 501 00:23:12,345 --> 00:23:14,960 O loop Do While, o que nós imos entrar en só un segundo. 502 00:23:14,960 --> 00:23:19,790 Así, o loop while ten esencialmente unha condición que verifique 503 00:23:19,790 --> 00:23:23,240 iso é un valor booleano que poñer alí dentro, como o 504 00:23:23,240 --> 00:23:25,740 bloques en cero cos ángulos. 505 00:23:25,740 --> 00:23:29,550 Isto é o que pasa dentro dos corchetes do loop while. 506 00:23:29,550 --> 00:23:31,830 Entón vai ter que ter algún tipo de condición alí. 507 00:23:31,830 --> 00:23:36,540 E, como xa discutir anteriormente, esta condición será 508 00:23:36,540 --> 00:23:40,250 teñen que ver cos límites do número enteiro que foi introducido. 509 00:23:40,250 --> 00:23:44,040 Así a condición tería algo que ver co feito 510 00:23:44,040 --> 00:23:48,600 o número enteiro está dentro dos límites adecuados. 511 00:23:48,600 --> 00:23:49,410 >> Entón iso é un loop while. 512 00:23:49,410 --> 00:23:52,580 Por exemplo, pode pedir para o completo e despois 513 00:23:52,580 --> 00:23:56,070 comprobar continuamente mentres esta entrada non é válida. 514 00:23:56,070 --> 00:23:59,810 Por exemplo, manter a re-alerta, continuar a preguntar 515 00:23:59,810 --> 00:24:01,600 o usuario a un número enteiro. 516 00:24:01,600 --> 00:24:03,780 De xeito que podería ser un camiño. 517 00:24:03,780 --> 00:24:06,240 Outra forma podería ser un do while, que é moi 518 00:24:06,240 --> 00:24:10,130 semellante a un loop while, excepto o que facer, mentres que un fai é - 519 00:24:10,130 --> 00:24:12,600 pode tipo de ver a sintaxe - 520 00:24:12,600 --> 00:24:18,540 é que ten que facer e, a continuación, o corpo do ciclo real primeiro. 521 00:24:18,540 --> 00:24:20,280 A continuación, el ten as condicións momento. 522 00:24:20,280 --> 00:24:22,060 Entón o que fai un loop mentres - 523 00:24:22,060 --> 00:24:25,470 o que é útil para que eles realmente realizar o 524 00:24:25,470 --> 00:24:29,130 código polo menos unha vez e despois comprobar que a situación é 525 00:24:29,130 --> 00:24:30,030 ou non cubertas. 526 00:24:30,030 --> 00:24:32,510 Entón, se fose facer un loop Do While, a continuación, dentro da súa 527 00:24:32,510 --> 00:24:35,210 declaración que pode pedir a un enteiro, porque vai no 528 00:24:35,210 --> 00:24:37,180 polo menos ten que preguntar ao usuario unha vez. 529 00:24:37,180 --> 00:24:40,850 E entón, despois de levalos, entón podes dicir que está ben, 530 00:24:40,850 --> 00:24:43,110 ben, unha vez eu fixen iso, é válido? 531 00:24:43,110 --> 00:24:44,810 Se for, entón podes só seguir adiante. 532 00:24:44,810 --> 00:24:47,310 Pero se non é, entón só vai actuar como un estándar, mentres 533 00:24:47,310 --> 00:24:49,240 loop e continuar a preguntar. 534 00:24:53,590 --> 00:24:54,670 >> Okay. 535 00:24:54,670 --> 00:24:57,120 Entón, nós estamos de volta para Mario. 536 00:24:57,120 --> 00:25:01,740 Entón, nós sabemos como pedir a entrada do usuario que é correcto 537 00:25:01,740 --> 00:25:03,160 dentro dos límites dereita. 538 00:25:03,160 --> 00:25:07,100 Entón, agora nós realmente necesitamos para deseñar esta pirámide metade. 539 00:25:07,100 --> 00:25:08,730 Parece que os caracteres de texto simple. 540 00:25:08,730 --> 00:25:10,360 Entón, imos realmente aberto - 541 00:25:14,280 --> 00:25:17,190 imos abrir unha xanela e dicir todo ben, así que se eu fose 542 00:25:17,190 --> 00:25:24,960 realmente vai facelo manualmente, escriba un para min? 543 00:25:24,960 --> 00:25:25,780 Okay. 544 00:25:25,780 --> 00:25:26,910 Entón, imos ver. 545 00:25:26,910 --> 00:25:30,070 Imos dicir, por exemplo, queremos facer unha pirámide que é 546 00:25:30,070 --> 00:25:32,090 aliñadas ao longo do lado esquerdo, a continuación, vai só facer - 547 00:25:34,710 --> 00:25:37,750 en Mario, o nivel superior ten dous bloques, en vez de un. 548 00:25:37,750 --> 00:25:39,080 Entón, imos comezar con dous. 549 00:25:39,080 --> 00:25:40,700 Nós prema en Inserir. 550 00:25:40,700 --> 00:25:45,670 Nós facemos tres, e despois catro, Intro, cinco. 551 00:25:45,670 --> 00:25:45,980 Okay. 552 00:25:45,980 --> 00:25:46,790 Entón, iso é moi sinxelo. 553 00:25:46,790 --> 00:25:50,210 Excepto neste conxunto de problemas, queremos que, en realidade, para aliñar con 554 00:25:50,210 --> 00:25:52,250 do lado dereito da nosa pantalla. 555 00:25:52,250 --> 00:25:52,630 Todo ben. 556 00:25:52,630 --> 00:25:58,870 Entón, como pode un de vós realmente escribir esa tal que 557 00:25:58,870 --> 00:26:01,810 está aliñado ao longo da dereita? 558 00:26:01,810 --> 00:26:08,550 En vez de poñer o hash primeiro, como pode tipo de 559 00:26:08,550 --> 00:26:10,040 movelo xunto? 560 00:26:10,040 --> 00:26:11,360 Speaker 3: Escriba unha liña? 561 00:26:11,360 --> 00:26:11,800 ZAMYLA Chan: Hmm? 562 00:26:11,800 --> 00:26:13,030 Speaker 3: Escriba unha liña? 563 00:26:13,030 --> 00:26:13,110 ZAMYLA Chan: Yeah. 564 00:26:13,110 --> 00:26:13,390 Si 565 00:26:13,390 --> 00:26:15,080 Vostede podería escribir como un subliñado ou algo parecido 566 00:26:15,080 --> 00:26:19,370 que, pero podemos só dicir usar un espazo. 567 00:26:19,370 --> 00:26:21,500 Imos poñer en tres espazos como aquí. 568 00:26:21,500 --> 00:26:24,760 A continuación, a seguinte liña, así, teriamos que poñer dous espazos. 569 00:26:24,760 --> 00:26:26,500 A seguinte liña, nós só poñemos un espazo. 570 00:26:26,500 --> 00:26:30,340 E entón, para a nosa última liña, que non ía poñer espazos. 571 00:26:30,340 --> 00:26:32,210 E aí temos a nosa pirámide. 572 00:26:32,210 --> 00:26:33,170 >> Entón, este é o tipo de - 573 00:26:33,170 --> 00:26:37,290 Lembre que tipo de lóxica. 574 00:26:37,290 --> 00:26:39,340 E tentar descubrir algún tipo de estándar que podemos 575 00:26:39,340 --> 00:26:43,690 entón traducir para C e participa en algún tipo de lazo. 576 00:26:43,690 --> 00:26:43,930 Todo ben. 577 00:26:43,930 --> 00:26:48,130 Entón, dicir que temos unha altura de oito, entón a nosa primeira liña terá 578 00:26:48,130 --> 00:26:48,980 dous hashes. 579 00:26:48,980 --> 00:26:53,030 Pero, para os hashes, que tería que escribir algunha 580 00:26:53,030 --> 00:26:54,000 espazos de antemán. 581 00:26:54,000 --> 00:26:55,840 Non? 582 00:26:55,840 --> 00:26:57,340 O que eu fixen é que eu só pasei. 583 00:26:57,340 --> 00:27:00,150 Eu tirou-me, unha pirámide no meu editor de texto, unha 584 00:27:00,150 --> 00:27:03,800 pirámide cunha altura de oito e, a continuación, calcular cantos 585 00:27:03,800 --> 00:27:05,180 espazos que eu precisaba facer. 586 00:27:05,180 --> 00:27:07,350 Entón, eu dixen que todo ben, ben, a primeira liña é 587 00:27:07,350 --> 00:27:08,260 vai ter dous hashes. 588 00:27:08,260 --> 00:27:11,100 Pero antes diso, eu teño de entrada sete espazos. 589 00:27:11,100 --> 00:27:13,420 O próximo ten seis espazos e, a continuación, 590 00:27:13,420 --> 00:27:15,610 tres hashes, etcétera. 591 00:27:15,610 --> 00:27:20,520 >> Entón imos tentar traer isto para outra capa de 592 00:27:20,520 --> 00:27:21,330 abstracción. 593 00:27:21,330 --> 00:27:26,680 E se tivésemos a liña n, cantos e como hashes 594 00:27:26,680 --> 00:27:27,960 moitos espazos que necesitamos? 595 00:27:27,960 --> 00:27:30,750 Alguén ve o defecto? 596 00:27:35,200 --> 00:27:37,560 Así, a primeira liña ten dous hashes. 597 00:27:37,560 --> 00:27:39,720 A segunda ten tres. 598 00:27:39,720 --> 00:27:42,120 O terceiro ten catro. 599 00:27:42,120 --> 00:27:45,398 Entón, a liña n-ésimo tería - 600 00:27:45,398 --> 00:27:46,800 Speaker 4: n + 1? 601 00:27:46,800 --> 00:27:47,170 ZAMYLA Chan: Yeah. 602 00:27:47,170 --> 00:27:47,780 N + 1. 603 00:27:47,780 --> 00:27:49,030 Exactamente. 604 00:27:52,810 --> 00:27:56,470 Entón, vemos que o número de hashes vai ser - 605 00:27:56,470 --> 00:27:59,510 se estamos contando a primeira liña a ser un, entón o número 606 00:27:59,510 --> 00:28:03,850 de hashes é só vai ser unha máis que iso. 607 00:28:03,850 --> 00:28:04,150 Okay. 608 00:28:04,150 --> 00:28:06,350 Entón o que ocorre co número de espazos? 609 00:28:06,350 --> 00:28:10,120 Entón, imos tratar de expresar isto en termos de altura. 610 00:28:10,120 --> 00:28:12,570 A altura é de oito, a continuación, o primeiro 611 00:28:12,570 --> 00:28:15,260 liña ten sete espazos. 612 00:28:15,260 --> 00:28:18,215 Así, este tipo de corresponde a 8 menos 1. 613 00:28:18,215 --> 00:28:19,030 Non? 614 00:28:19,030 --> 00:28:22,420 Entón a segunda liña vai ter seis espazos, 615 00:28:22,420 --> 00:28:25,340 Que é 8 menos 2. 616 00:28:28,420 --> 00:28:31,450 Entón eu vou deixar para a especie de figura fóra 617 00:28:31,450 --> 00:28:33,610 o estándar para aquel. 618 00:28:33,610 --> 00:28:34,010 >> Okay. 619 00:28:34,010 --> 00:28:37,450 Pero, na programación, ás veces nós realmente índice en cero. 620 00:28:37,450 --> 00:28:39,680 Entón, imos comezar de cero en vez de un. 621 00:28:39,680 --> 00:28:46,250 Así, en vez da primeira liña a ser chamado a primeira liña, 622 00:28:46,250 --> 00:28:48,930 imos ser chamándoo de liña 0 º. 623 00:28:48,930 --> 00:28:51,360 Entón, dependendo da forma que quere para implementar lo, sexa 624 00:28:51,360 --> 00:28:55,120 moito coidado se comezar de cero, se comezar a 625 00:28:55,120 --> 00:28:58,400 un, o seu patrón vai ser compensado por un. 626 00:29:02,270 --> 00:29:02,880 Okay. 627 00:29:02,880 --> 00:29:05,460 Polo tanto, agora que tipo de descuberto o programa, 628 00:29:05,460 --> 00:29:06,310 teño que dicir ben. 629 00:29:06,310 --> 00:29:11,540 Así, para cada tipo de nivel de escaleira, eu vou para imprimir 630 00:29:11,540 --> 00:29:14,390 tal e como o número de espazos e, a continuación, tal e 631 00:29:14,390 --> 00:29:16,550 tal número de hashes. 632 00:29:16,550 --> 00:29:19,550 Iso depende do estándar que foi establecido antes. 633 00:29:19,550 --> 00:29:19,810 Okay. 634 00:29:19,810 --> 00:29:23,600 Polo tanto, unha forma de iterar e tipo de curso 635 00:29:23,600 --> 00:29:27,670 través dun número definido de cousas é unha especie de loop, como 636 00:29:27,670 --> 00:29:31,040 a repetición 10 bloque ou repetición como e entrou nunha 637 00:29:31,040 --> 00:29:33,810 número de scratch. 638 00:29:33,810 --> 00:29:38,050 Entón, basicamente, para cada nivel de escaleiras, imos querer 639 00:29:38,050 --> 00:29:39,650 imprimir os espazos en primeiro lugar. 640 00:29:39,650 --> 00:29:43,020 A continuación, imprime o número de hashes. 641 00:29:43,020 --> 00:29:46,480 E entón imos querer introducir unha nova liña e despois repetir-lo 642 00:29:46,480 --> 00:29:49,750 novo para o próximo bloque. 643 00:29:49,750 --> 00:29:50,720 Okay. 644 00:29:50,720 --> 00:29:55,080 >> Entón, imos ollar para loops por un segundo a especie de ver unha forma 645 00:29:55,080 --> 00:29:59,460 que pode pasar por un determinado número, desprácese ata o número 646 00:29:59,460 --> 00:30:02,250 de pasos desta pirámide metade. 647 00:30:02,250 --> 00:30:04,220 Entón, para loops son compostos de tres partes. 648 00:30:04,220 --> 00:30:08,150 Primeiro, ten unha inicialización. 649 00:30:08,150 --> 00:30:13,220 De xeito que esencialmente define unha variable. 650 00:30:13,220 --> 00:30:15,130 Vai ser axustado para que o valor de cada vez 651 00:30:15,130 --> 00:30:17,110 que para partidas do circuíto. 652 00:30:17,110 --> 00:30:18,540 Entón vai ter unha condición. 653 00:30:18,540 --> 00:30:21,640 O seu lazo para só será executada mentres que 654 00:30:21,640 --> 00:30:25,630 condición valorada como verdadeira. 655 00:30:25,630 --> 00:30:28,000 E entón vai ter unha condición de actualización. 656 00:30:28,000 --> 00:30:32,450 Entón, o que ten que ver coa variable que inicializar. 657 00:30:32,450 --> 00:30:38,120 Así como algúns dos basicamente asegurando que podemos saír 658 00:30:38,120 --> 00:30:40,070 do lazo, que non continuar a execución 659 00:30:40,070 --> 00:30:41,310 para sempre e sempre. 660 00:30:41,310 --> 00:30:43,760 Porque a diferenza de scratch, nós realmente non temos só un 661 00:30:43,760 --> 00:30:45,680 lazo para sempre sinxelo. 662 00:30:45,680 --> 00:30:48,100 C, o programa ten que rematar finalmente. 663 00:30:48,100 --> 00:30:52,290 Entón, temos que garantir que dalgunha forma temos que parar. 664 00:30:52,290 --> 00:30:52,830 >> Okay. 665 00:30:52,830 --> 00:30:56,260 Entón, un exemplo de un loop que pode querer usar para 666 00:30:56,260 --> 00:30:57,530 Mario é esta. 667 00:30:57,530 --> 00:31:02,290 Entón tes un enteiro i que comezan en 0. 668 00:31:02,290 --> 00:31:08,050 Mentres que é menor que a altura, o corpo é executado 669 00:31:08,050 --> 00:31:11,140 do circuíto aquí dentro. 670 00:31:11,140 --> 00:31:13,820 Despois de que o corpo do lazo foi executado, así que faría 671 00:31:13,820 --> 00:31:15,290 i aumentar en 1. 672 00:31:15,290 --> 00:31:18,510 A continuación, o programa ía comprobar de novo - Ben, ben, é menos do que eu 673 00:31:18,510 --> 00:31:18,885 a altura? 674 00:31:18,885 --> 00:31:21,865 Se for, entón ten que continuar. 675 00:31:24,630 --> 00:31:27,790 Entón, aquí está un exemplo de cero a indexación, onde comezamos a 676 00:31:27,790 --> 00:31:29,100 cero e entón nós - 677 00:31:29,100 --> 00:31:30,970 notar que a condición é menor que a altura. 678 00:31:30,970 --> 00:31:34,510 Entón, dicir que a nosa altura é de catro anos, por exemplo, i 679 00:31:34,510 --> 00:31:35,470 terá comezo ás 0. 680 00:31:35,470 --> 00:31:36,180 Vai ser 1. 681 00:31:36,180 --> 00:31:36,730 Vai ser 2. 682 00:31:36,730 --> 00:31:37,940 Vai ser 3. 683 00:31:37,940 --> 00:31:42,310 E entón, xa que actualiza cando o lazo para actualizacións, vou 684 00:31:42,310 --> 00:31:43,650 entón, ser definido como 4. 685 00:31:43,650 --> 00:31:47,080 Pero 4 non sexa inferior a 4 e, a continuación, de xeito que sería 686 00:31:47,080 --> 00:31:50,340 seguir para o resto do noso lazo. 687 00:31:50,340 --> 00:31:50,870 >> Okay. 688 00:31:50,870 --> 00:31:51,680 Así que está comezando de cero. 689 00:31:51,680 --> 00:31:53,470 Pero tamén podería comezar a un, por exemplo. 690 00:31:53,470 --> 00:31:56,960 Pero desde que comezamos nun, nós medio que temos que ir máis dunha 691 00:31:56,960 --> 00:31:57,920 tempo ao final. 692 00:31:57,920 --> 00:32:02,800 Entón é por iso que nós engadimos o menor ou igual a. 693 00:32:02,800 --> 00:32:05,780 Polo tanto, unha das grandes cousas que máis me gusta sobre o ordenador 694 00:32:05,780 --> 00:32:06,930 programación é que hai tanta 695 00:32:06,930 --> 00:32:08,370 moitas formas de facer as cousas. 696 00:32:08,370 --> 00:32:11,300 Así, pode escoller se comezar de cero, se 697 00:32:11,300 --> 00:32:12,330 comezar un. 698 00:32:12,330 --> 00:32:15,400 Ademais, se o desexa, pode utilizar só un 699 00:32:15,400 --> 00:32:16,600 while loop, por exemplo. 700 00:32:16,600 --> 00:32:18,890 Entón, vostede podería - 701 00:32:18,890 --> 00:32:20,270 imos realmente hello.c aberta. 702 00:32:26,200 --> 00:32:28,600 Polo tanto, temos un loop aquí. 703 00:32:28,600 --> 00:32:31,330 El comeza en i = 0, i <5. 704 00:32:31,330 --> 00:32:33,550 Eu teño aquí un comentario dicindo o que fai. 705 00:32:33,550 --> 00:32:36,300 Ela imprime Ola cinco veces usando un loop for. 706 00:32:36,300 --> 00:32:41,690 Pero nós tamén podemos facelo usando un loop while tamén. 707 00:32:41,690 --> 00:32:48,290 >> Entón, imos ver como podemos facer iso. 708 00:32:48,290 --> 00:32:51,010 Entón, se imos imitar un loop for, entón nós tamén queremos 709 00:32:51,010 --> 00:32:54,870 imitar o arranque, a condición e actualización. 710 00:32:54,870 --> 00:33:01,430 Así, a condición debe ser moi sinxelo, porque o 711 00:33:01,430 --> 00:33:04,350 mentres sintaxe, cando mira para el, el di que mentres (condición). 712 00:33:04,350 --> 00:33:06,830 Entón imos a condición de entrada alí. 713 00:33:06,830 --> 00:33:09,700 i <5. 714 00:33:09,700 --> 00:33:10,590 Okay. 715 00:33:10,590 --> 00:33:18,900 Entón, sabemos que queremos imprimir adeus. 716 00:33:18,900 --> 00:33:21,350 Sabemos que este é o corpo do noso loop. 717 00:33:21,350 --> 00:33:23,600 Pero estamos perdendo o arranque 718 00:33:23,600 --> 00:33:24,490 ea actualización, non? 719 00:33:24,490 --> 00:33:25,790 Porque nós non podemos ter un lazo para sempre. 720 00:33:25,790 --> 00:33:27,660 Ten que rematar. 721 00:33:27,660 --> 00:33:35,300 Entón, imos engadir algún tipo de arranque aquí, usando o 722 00:33:35,300 --> 00:33:38,790 mesmo que usan no noso circuíto para, int i = 0. 723 00:33:38,790 --> 00:33:39,110 Okay. 724 00:33:39,110 --> 00:33:40,630 Entón, imos comezar con un int i. 725 00:33:40,630 --> 00:33:43,640 Nós repetimos este loop while mentres i é menor que 5. 726 00:33:43,640 --> 00:33:47,220 Entón, vostede non ten unha cousa, que é a actualización. 727 00:33:47,220 --> 00:33:51,470 Entón, o que sería actualización, cómpre usar se eran esencialmente 728 00:33:51,470 --> 00:33:52,880 recriando o lazo se riba? 729 00:33:56,000 --> 00:33:59,880 Temos o arranque i é igual a 0. 730 00:33:59,880 --> 00:34:03,610 Temos a condición i é inferior a 5. 731 00:34:03,610 --> 00:34:06,300 E entón, aquí está unha actualización, non? 732 00:34:06,300 --> 00:34:07,365 Entón, nós queremos copiar. 733 00:34:07,365 --> 00:34:10,340 Queremos dicir ben, i + +. 734 00:34:10,340 --> 00:34:13,820 Esta é a mesma cousa que dicir i = i + 1. 735 00:34:13,820 --> 00:34:17,090 Pero dende que é usado tantas veces abreviada, por que é só 736 00:34:17,090 --> 00:34:18,340 dicindo i + +. 737 00:34:20,800 --> 00:34:22,050 >> Grande. 738 00:34:25,230 --> 00:34:26,400 Okay. 739 00:34:26,400 --> 00:34:29,210 Aquí eu realmente non saír do meu programa de mazás. 740 00:34:29,210 --> 00:34:33,070 Entón, eu estou indo só para premer Control-C e inmediatamente 741 00:34:33,070 --> 00:34:34,989 botas-me para fóra do meu programa e trae 742 00:34:34,989 --> 00:34:35,920 me de volta para o terminal. 743 00:34:35,920 --> 00:34:38,320 De xeito que, por exemplo, se ten un erro onde 744 00:34:38,320 --> 00:34:40,750 esqueceu de actualizar o seu ciclo como tal que sería 745 00:34:40,750 --> 00:34:43,150 rematar, e entra en un loop infinito, entón podes 746 00:34:43,150 --> 00:34:46,400 usar Control-C para saír desa. 747 00:34:46,400 --> 00:34:46,639 Todo ben. 748 00:34:46,639 --> 00:34:47,960 Entón, nós estamos no directorio correcto. 749 00:34:47,960 --> 00:34:52,010 Entón, imos facer Olá 750 00:34:52,010 --> 00:35:01,710 E entón, se corremos Ola, vemos que o circuíto fai adeus 751 00:35:01,710 --> 00:35:03,350 exactamente a mesma cousa como o noso circuíto para fai. 752 00:35:03,350 --> 00:35:05,060 Entón, iso é só unha suxestión. 753 00:35:05,060 --> 00:35:06,980 Se está máis cómodo co loops ou 754 00:35:06,980 --> 00:35:09,850 con lazos, mentres, poden ser intercambiables. 755 00:35:09,850 --> 00:35:15,130 Entón, calquera que quere usar para percorrer - 756 00:35:15,130 --> 00:35:16,020 neste caso - 757 00:35:16,020 --> 00:35:19,410 a altura da pirámide Mario. 758 00:35:19,410 --> 00:35:23,020 E así unha vez máis, este é só un recordatorio, se comezar de cero 759 00:35:23,020 --> 00:35:25,430 para a súa variable, entón vai querer ter un diferente 760 00:35:25,430 --> 00:35:27,360 condición que se comezou en un. 761 00:35:27,360 --> 00:35:29,620 Polo tanto, este tipo de táboa só mostra un recordatorio. 762 00:35:29,620 --> 00:35:33,660 Se queres repetir 10 veces, por exemplo, entón 763 00:35:33,660 --> 00:35:36,030 Pode comezar a variable en cero. 764 00:35:36,030 --> 00:35:39,350 E a súa condición pode ser inferior a 10. 765 00:35:39,350 --> 00:35:43,020 E para que tipo de mostra a matriz do que iso. 766 00:35:43,020 --> 00:35:43,360 >> Okay. 767 00:35:43,360 --> 00:35:45,790 Entón nós pasamos por Mario. 768 00:35:45,790 --> 00:35:48,820 Nós xa dixen, Ok, así, cómpre comprobar a entrada correcta, 769 00:35:48,820 --> 00:35:50,800 de cero a 23, inclusive. 770 00:35:50,800 --> 00:35:53,370 Nós imos atopar algún tipo de defecto, algún tipo de forma 771 00:35:53,370 --> 00:35:57,920 de expresión da liña nth ou a liña de orde i. 772 00:35:57,920 --> 00:36:01,560 E imos decidir, Ok, imos imprimir esta 773 00:36:01,560 --> 00:36:04,870 moitos espazos, este hashes moitos, nova liña. 774 00:36:04,870 --> 00:36:05,050 Todo ben. 775 00:36:05,050 --> 00:36:05,720 Polo tanto, temos que. 776 00:36:05,720 --> 00:36:08,570 Entón agora podemos pasar Greedy. 777 00:36:08,570 --> 00:36:14,500 Greedy é un programa onde un usuario lle dá unha cantidade de 778 00:36:14,500 --> 00:36:17,460 diñeiro que, esencialmente, vostede como o cadro que volver. 779 00:36:17,460 --> 00:36:21,530 Pero quere usar moedas tan pouco canto posible. 780 00:36:21,530 --> 00:36:25,070 E así, este é o lugar onde un algoritmo Greedy vén, onde 781 00:36:25,070 --> 00:36:30,440 imos querer usar a cantidade mínima de moedas posible 782 00:36:30,440 --> 00:36:31,900 facer esa cantidade de cambio. 783 00:36:34,500 --> 00:36:34,990 >> Okay. 784 00:36:34,990 --> 00:36:40,480 Entón, un exemplo diso na súa solución pode parecer 785 00:36:40,480 --> 00:36:42,540 algo así. 786 00:36:42,540 --> 00:36:45,410 Executa. / Ganancioso. 787 00:36:45,410 --> 00:36:47,920 Lle será solicitada a dicir ben, ben o que o cambio é debido? 788 00:36:47,920 --> 00:36:50,780 Ese valor será un valor en dólares. 789 00:36:50,780 --> 00:36:52,440 Así que vai ser un float. 790 00:36:52,440 --> 00:36:55,630 O seu programa ha calcular a cantidade mínima 791 00:36:55,630 --> 00:37:00,380 de moedas necesarias para facer, neste caso, US $ 0,32. 792 00:37:00,380 --> 00:37:04,550 E así, o número mínimo é de catro. 793 00:37:04,550 --> 00:37:07,480 Entón, antes de descubrir o que facer, imos especie de sendeirismo 794 00:37:07,480 --> 00:37:10,770 a través do proceso de que pode ir sobre. 795 00:37:10,770 --> 00:37:16,480 Entón, se a entrada é 32, entón esencialmente eu vou usar 796 00:37:16,480 --> 00:37:19,100 a menor cantidade de moedas, se eu usar como moitos 797 00:37:19,100 --> 00:37:20,460 moedas de maior posible. 798 00:37:20,460 --> 00:37:20,870 Non? 799 00:37:20,870 --> 00:37:25,420 Entón é moito máis fácil de usar un cuarto como 800 00:37:25,420 --> 00:37:27,070 oposición a cinco moedas. 801 00:37:27,070 --> 00:37:31,740 Entón, imos dicir, ten que devolver US $ 0,32. 802 00:37:31,740 --> 00:37:36,660 Ben, eu podo usar un cuarto no presente? 803 00:37:36,660 --> 00:37:37,480 Si, pode. 804 00:37:37,480 --> 00:37:41,970 E entón sería reducido a US $ 0,07. 805 00:37:41,970 --> 00:37:46,070 Imos ver se podo usar outro trimestre de pagar de volta. 806 00:37:46,070 --> 00:37:46,870 Ben, non. 807 00:37:46,870 --> 00:37:48,200 Eu non podo poñer un cuarto en que. 808 00:37:48,200 --> 00:37:52,110 Entón, eu estou indo a ir a moeda maior seguinte. 809 00:37:52,110 --> 00:37:53,250 Podo usar un centavo? 810 00:37:53,250 --> 00:37:55,800 $ 0,07, non, non pode usar un centavo para pagar R $ 0,07. 811 00:37:55,800 --> 00:37:56,840 Entón dicir que non. 812 00:37:56,840 --> 00:38:00,490 Mover-se para a próxima, que é un níquel. 813 00:38:00,490 --> 00:38:01,440 Pódese usar un níquel? 814 00:38:01,440 --> 00:38:02,930 Si 815 00:38:02,930 --> 00:38:06,440 Sete é maior que US $ 0,05, para que poidamos utilizar un níquel. 816 00:38:06,440 --> 00:38:08,640 E despois temos dous centavos que sobran. 817 00:38:08,640 --> 00:38:11,110 Podemos usar un centavo? 818 00:38:11,110 --> 00:38:12,180 Si, podemos. 819 00:38:12,180 --> 00:38:13,070 Podemos usar un centavo? 820 00:38:13,070 --> 00:38:13,380 Si 821 00:38:13,380 --> 00:38:14,710 Podemos usar un centavo? 822 00:38:14,710 --> 00:38:17,070 Non, porque agora temos con éxito 823 00:38:17,070 --> 00:38:19,400 pagou a parte de atrás do usuario. 824 00:38:19,400 --> 00:38:23,620 E para que totalizar catro moedas utilizadas. 825 00:38:23,620 --> 00:38:26,370 >> Entón, a pensar sobre ese proceso, nós todos 826 00:38:26,370 --> 00:38:29,080 momento, decidir ben, 827 00:38:29,080 --> 00:38:31,050 Cal é a moeda que pode usar? 828 00:38:31,050 --> 00:38:37,240 Unha vez que usamos, nós medio que manter unha nota mental de como 829 00:38:37,240 --> 00:38:39,650 máis diñeiro que necesitamos para voltar ao usuario, así como o número de 830 00:38:39,650 --> 00:38:41,310 moedas que teñen benvida a utilizar. 831 00:38:44,640 --> 00:38:45,200 Okay. 832 00:38:45,200 --> 00:38:48,930 Entón, pero, de novo, o primeiro paso - como Mario - é solicitar 833 00:38:48,930 --> 00:38:51,120 o usuario por un importe monetario. 834 00:38:51,120 --> 00:38:53,920 E así, ese importe será - 835 00:38:53,920 --> 00:38:56,040 que vai ter un valor decimal porque nós imos 836 00:38:56,040 --> 00:38:57,310 lles pedir dólares. 837 00:38:57,310 --> 00:39:00,550 Entón, que tipo de datos non vai ser un número enteiro. 838 00:39:00,550 --> 00:39:01,860 Pero vai ser un - 839 00:39:04,960 --> 00:39:07,700 si, un flotador. 840 00:39:07,700 --> 00:39:10,780 Pero, así como a mazá, coches alegóricos pode ser positivo ou negativo. 841 00:39:10,780 --> 00:39:13,390 Entón cando comprobar valores, vai querer 842 00:39:13,390 --> 00:39:15,380 para garantir que o flotador - 843 00:39:15,380 --> 00:39:19,710 a entrada do usuario - é non-negativo. 844 00:39:19,710 --> 00:39:20,960 Okay. 845 00:39:22,630 --> 00:39:26,720 Nós poderiamos tratar con coches alegóricos no noso programa conxunto, representan 846 00:39:26,720 --> 00:39:31,610 cuartos por 0,25, moedas de 0,1, etcétera. 847 00:39:31,610 --> 00:39:36,280 Pero creo que é moito máis fácil de manexar en só centavos puros. 848 00:39:36,280 --> 00:39:36,910 Tamén - 849 00:39:36,910 --> 00:39:39,370 e nós imos falar sobre iso un pouco máis tarde - 850 00:39:39,370 --> 00:39:43,610 C, puntos flotantes teñen algo chamado imprecisión. 851 00:39:43,610 --> 00:39:48,660 Entón, cando entra en 0,12, por exemplo, o ordenador 852 00:39:48,660 --> 00:39:53,010 De feito, tendas como como 0.1111119 ou 853 00:39:53,010 --> 00:39:54,350 algo así. 854 00:39:54,350 --> 00:39:56,900 >> Entón é moito máis doado de converterse ao centavos. 855 00:39:56,900 --> 00:40:02,190 Entón, como imos converter un valor en dólares para os centavos? 856 00:40:02,190 --> 00:40:03,540 Speaker 5: Equipos-por 100? 857 00:40:03,540 --> 00:40:03,920 ZAMYLA Chan: Yeah. 858 00:40:03,920 --> 00:40:04,110 Si 859 00:40:04,110 --> 00:40:07,110 Entón teriamos veces por 100. 860 00:40:07,110 --> 00:40:10,820 Pero unha cousa complicada sobre puntos flotantes é que hai 861 00:40:10,820 --> 00:40:11,790 é certa imprecisión. 862 00:40:11,790 --> 00:40:16,090 Entón imos ver un exemplo diso. 863 00:40:18,760 --> 00:40:21,360 Entón, eu vou abrir imprecision.c. 864 00:40:21,360 --> 00:40:23,690 Okay. 865 00:40:23,690 --> 00:40:24,860 Este é un programa moi sinxelo. 866 00:40:24,860 --> 00:40:26,970 El pide unha boia, e imprime o de volta. 867 00:40:35,950 --> 00:40:39,600 Unha información legal no terminal é que pode simplemente escribir clara e 868 00:40:39,600 --> 00:40:41,180 entón tes unha pantalla transparente. 869 00:40:41,180 --> 00:40:45,270 E para que non precisa ollar para calquera saída anterior ou calquera 870 00:40:45,270 --> 00:40:47,490 erros ou informes de erro, algo así. 871 00:40:47,490 --> 00:40:48,120 Okay. 872 00:40:48,120 --> 00:40:49,675 Entón, imos facer imprecisión. 873 00:40:53,250 --> 00:40:56,250 Imos executalo. 874 00:40:56,250 --> 00:40:57,890 Entón eu haven't - 875 00:40:57,890 --> 00:41:03,830 no meu código, eu non imprimir calquera solicitude ou algo así. 876 00:41:03,830 --> 00:41:05,010 Entón, el só ten un cursor intermitente. 877 00:41:05,010 --> 00:41:07,390 Entón, é só me esperando para entrada dun coche alegórico. 878 00:41:07,390 --> 00:41:08,640 Entón imos - 879 00:41:10,610 --> 00:41:11,280 un flotador aleatoria. 880 00:41:11,280 --> 00:41:15,080 E ve que imprime-lo de volta, pero ten algúns extras 881 00:41:15,080 --> 00:41:18,180 números que definitivamente non incluír. 882 00:41:18,180 --> 00:41:21,980 Entón, nós queremos estar seguro de que iso non fai 883 00:41:21,980 --> 00:41:23,300 acontecer no noso programa. 884 00:41:23,300 --> 00:41:27,550 >> Entón o que queremos facer é estar seguro de que realmente 885 00:41:27,550 --> 00:41:31,300 tipo de redondeado para o valor apropiado. 886 00:41:31,300 --> 00:41:31,850 Non? 887 00:41:31,850 --> 00:41:37,820 E así, por sorte, temos unha función chamada rolda incluído 888 00:41:37,820 --> 00:41:38,550 no aparello. 889 00:41:38,550 --> 00:41:41,390 É na biblioteca de matemáticas. 890 00:41:41,390 --> 00:41:44,710 Se queres saber como usar rolda, entón realmente usar 891 00:41:44,710 --> 00:41:45,220 o guía. 892 00:41:45,220 --> 00:41:48,160 Podes premer rolda home. 893 00:41:48,160 --> 00:41:51,190 Entón aquí abre - 894 00:41:51,190 --> 00:41:53,220 pode ser un pouco difícil de descifrar, mais acabou 895 00:41:53,220 --> 00:41:54,690 vai pegar o xeito del. 896 00:41:54,690 --> 00:42:00,060 É o tipo de mostra que a función fai e máis un pouco 897 00:42:00,060 --> 00:42:01,790 usos posibles desa. 898 00:42:01,790 --> 00:42:10,210 Entón, cando finalmente conseguir unha entrada, axeitado válido a partir da 899 00:42:10,210 --> 00:42:14,490 usuario, entón quere convertela-lo para os centavos. 900 00:42:14,490 --> 00:42:18,530 Asegúrese de que redondear o valor para que evite este 901 00:42:18,530 --> 00:42:21,780 flotando imprecisión punto. 902 00:42:21,780 --> 00:42:22,340 >> Okay. 903 00:42:22,340 --> 00:42:26,190 Entón, nós temos solicitado ao usuario unha cantidade monetaria. 904 00:42:26,190 --> 00:42:31,460 Agora, o que queremos facer é esencialmente comprobar, non? 905 00:42:31,460 --> 00:42:35,500 Ok, entón eu podo usar a maior moeda posible? 906 00:42:35,500 --> 00:42:37,040 Se pode, a continuación, usalo. 907 00:42:37,040 --> 00:42:40,250 Manter o control de tantas moedas usou ata agora e 908 00:42:40,250 --> 00:42:41,710 tamén a cantidade descenso. 909 00:42:41,710 --> 00:42:42,240 Non? 910 00:42:42,240 --> 00:42:44,880 E entón, vai comprobar. 911 00:42:44,880 --> 00:42:47,940 Unha vez que especie de esgotados os trimestres, quere ir 912 00:42:47,940 --> 00:42:49,545 para a próxima cousa é posible. 913 00:42:49,545 --> 00:42:59,380 >> Entón, que tipo de estrutura ou tipo de lazo que poderiamos 914 00:42:59,380 --> 00:43:03,850 desexa usar para comprobar continuamente aínda podemos utilizar 915 00:43:03,850 --> 00:43:05,100 cuarto, por exemplo? 916 00:43:07,380 --> 00:43:09,280 Speaker 6: Aínda que o valor maior que? 917 00:43:09,280 --> 00:43:10,150 ZAMYLA Chan: Si, perfecto. 918 00:43:10,150 --> 00:43:10,590 Exactamente. 919 00:43:10,590 --> 00:43:12,630 Así, mentres que o valor é maior que. 920 00:43:12,630 --> 00:43:16,300 Así, mentres que o valor que temos que dar a volta aínda é 921 00:43:16,300 --> 00:43:19,410 maior que un cuarto, mentres aínda podemos usar un trimestre, 922 00:43:19,410 --> 00:43:20,490 usar trimestres. 923 00:43:20,490 --> 00:43:21,450 Manteña o control diso. 924 00:43:21,450 --> 00:43:22,610 E entón seguir adiante. 925 00:43:22,610 --> 00:43:25,040 Perfecto. 926 00:43:25,040 --> 00:43:26,290 Okay. 927 00:43:28,190 --> 00:43:32,580 Ah, aquí eu só incluíu só algúns consellos para imprimir 928 00:43:32,580 --> 00:43:33,830 valores fóra. 929 00:43:36,330 --> 00:43:38,810 Así, na súa función printf, temos sido xeralmente só 930 00:43:38,810 --> 00:43:39,760 tratar con cordas. 931 00:43:39,760 --> 00:43:43,290 Pero cando quere imprimir un int ou só calquera tipo de 932 00:43:43,290 --> 00:43:46,510 díxitos, ten que tipo de escribir unha especie de soporte do lugar. 933 00:43:46,510 --> 00:43:50,840 Entón, que é representado pola porcentaxe,% d para enteiros. 934 00:43:50,840 --> 00:43:53,780 Vai escribir que, a continuación, despois que realmente - 935 00:43:53,780 --> 00:43:54,900 despois dunha vírgula - 936 00:43:54,900 --> 00:43:57,990 poñer o valor que realmente vai alí. 937 00:43:57,990 --> 00:43:58,510 Dereito. 938 00:43:58,510 --> 00:43:58,840 >> Okay. 939 00:43:58,840 --> 00:44:02,050 Así, determinamos que queremos comprobar - 940 00:44:02,050 --> 00:44:04,950 unha forma de facelo sería a de comprobar continuamente 941 00:44:04,950 --> 00:44:08,640 aínda podemos usar trimestres, e despois usar os trimestres, manter 942 00:44:08,640 --> 00:44:11,460 seguir, e despois pasar ao maior valor seguinte. 943 00:44:11,460 --> 00:44:15,010 Agora, outro tipo de forma elegante que podería facelo é 944 00:44:15,010 --> 00:44:16,770 usando o operador módulo. 945 00:44:16,770 --> 00:44:22,710 Entón, xa temos de máis, menos, multiplicar, dividir e 946 00:44:22,710 --> 00:44:23,560 dispoñible para nós. 947 00:44:23,560 --> 00:44:25,600 Pero o operador módulo tipo de limpo. 948 00:44:25,600 --> 00:44:28,630 O que fai é, en realidade, devolve o resto da 949 00:44:28,630 --> 00:44:31,750 división de dous números. 950 00:44:31,750 --> 00:44:34,680 Entón, se lembrar de división longa cando faría, por exemplo, 951 00:44:34,680 --> 00:44:40,100 facer 74 dividido por 3, podería gravala-lo, transitar, 952 00:44:40,100 --> 00:44:43,260 restar, e despois ao final o número no fondo é 953 00:44:43,260 --> 00:44:44,050 o resto. 954 00:44:44,050 --> 00:44:47,120 Ben, o módulo fai iso, en realidade, só lle dá iso. 955 00:44:47,120 --> 00:44:51,290 Entón, 74 módulo 3 lle daría 2. 956 00:44:51,290 --> 00:44:56,310 Do mesmo xeito, 10 MÓDULO 2 dálle 0, pois non hai ningunha 957 00:44:56,310 --> 00:44:59,340 resto cando dividir 10 por 2. 958 00:44:59,340 --> 00:45:03,940 6 módulo 5, así 5 6 vai para un tempo e despois 959 00:45:03,940 --> 00:45:05,900 ten unha sobra. 960 00:45:05,900 --> 00:45:09,930 Entón, se ten 7 módulo 9, 9 así é maior que 7. 961 00:45:09,930 --> 00:45:11,830 Por iso, non pode ir outras veces. 962 00:45:11,830 --> 00:45:15,560 Polo tanto, ten sentido que o valor de retorno é 7. 963 00:45:15,560 --> 00:45:21,590 Entón, se pensar en módulo, como dá a vostede o resto 964 00:45:21,590 --> 00:45:25,170 despois de dividir algo, pode tipo de ver como 965 00:45:25,170 --> 00:45:27,490 Pode ser capaz de usalo en Greedy, non? 966 00:45:30,340 --> 00:45:34,170 Entón, se combinar o tipo de módulo, se cadra, coa división 967 00:45:34,170 --> 00:45:36,410 operador, algo así, entón vostede pode ter un fresco 968 00:45:36,410 --> 00:45:38,870 tipo de forma mathy abordar o conxunto de problemas. 969 00:45:44,010 --> 00:45:46,090 >> Polo tanto, agora que sabemos que hai un par de diferentes 970 00:45:46,090 --> 00:45:48,350 formas que poderiamos facelo - Hai definitivamente unha morea de 971 00:45:48,350 --> 00:45:54,160 diferentes formas de escribir ata os lazos tempo. 972 00:45:54,160 --> 00:45:57,020 Entón, eu escribín un pseudocódigo aquí. 973 00:45:57,020 --> 00:46:01,760 Pode non ser o mesmo que o do tipo de esqueleto da súa 974 00:46:01,760 --> 00:46:02,460 código que escribe. 975 00:46:02,460 --> 00:46:05,580 Pero, esencialmente, o proceso é o modo de pensar e 976 00:46:05,580 --> 00:46:06,940 así como nós discutido. 977 00:46:06,940 --> 00:46:10,310 Entón, primeiro, a primeira liña está dicindo para obter unha certa cantidade 978 00:46:10,310 --> 00:46:12,490 en dólares. 979 00:46:12,490 --> 00:46:16,960 E, a continuación, implícito que é convertelo en centavos. 980 00:46:16,960 --> 00:46:20,540 A continuación, mentres cuadrantes pode ser usado, queremos 981 00:46:20,540 --> 00:46:21,750 aumentar a conta. 982 00:46:21,750 --> 00:46:24,360 E entón queremos diminuír a cantidade, o valor que 983 00:46:24,360 --> 00:46:25,300 estamos volvendo para atrás. 984 00:46:25,300 --> 00:46:28,170 Como podes ver aquí, non é moi C. Pero eu tamén 985 00:46:28,170 --> 00:46:31,550 recuado cousas, eu coloque miñas condicións dentro 986 00:46:31,550 --> 00:46:32,190 parénteses. 987 00:46:32,190 --> 00:46:34,370 >> Entón que tipo de me pega comezou. 988 00:46:34,370 --> 00:46:36,620 E máis tarde, eu só podo mirar para arriba a sintaxe. 989 00:46:36,620 --> 00:46:40,230 Moitas veces a parte máis difícil realmente un problema é 990 00:46:40,230 --> 00:46:41,860 comprender exactamente o que cómpre facer. 991 00:46:41,860 --> 00:46:44,610 Entón, cando escribir isto, entón é moito máis fácil de continuación 992 00:46:44,610 --> 00:46:45,810 traducir en pseudocódigo. 993 00:46:45,810 --> 00:46:49,340 E despois de pseudocódigo, sintaxe vén moi doado. 994 00:46:49,340 --> 00:46:52,140 Así, vemos mentres direccións, poden ser utilizados, aumentar a conta, 995 00:46:52,140 --> 00:46:53,220 diminuír a cantidade. 996 00:46:53,220 --> 00:46:57,310 Mentres moedas pode ser usado, entón dirixir-la así por diante e así 997 00:46:57,310 --> 00:47:00,670 por diante, ata que teña esgotado todas as súas tostões. 998 00:47:00,670 --> 00:47:03,410 Imprime o número de moedas usado, que será o 999 00:47:03,410 --> 00:47:06,620 cantidade mínima para que o usuario introduciu valor. 1000 00:47:06,620 --> 00:47:09,370 E aí ten o seu algoritmo Greedy. 1001 00:47:09,370 --> 00:47:13,960 E entón, unha vez que termine, tamén rematou pset 0. 1002 00:47:13,960 --> 00:47:16,155 >> Alguén ten algunha dúbida sobre algo? 1003 00:47:19,420 --> 00:47:19,780 Todo ben. 1004 00:47:19,780 --> 00:47:22,900 Ben, eu vou ir por un pouco despois de ter 1005 00:47:22,900 --> 00:47:23,970 calquera dúbida. 1006 00:47:23,970 --> 00:47:24,940 Este foi detonado 1. 1007 00:47:24,940 --> 00:47:26,190 Grazas por vir.