1 00:00:00,000 --> 00:00:09,250 2 00:00:09,250 --> 00:00:11,070 >> ZAMYLA CHAN: Salto Imos en Mario. 3 00:00:11,070 --> 00:00:14,850 Mario é un programa onde nós imos facer o noso propio, aínda que primitiva, versión de 4 00:00:14,850 --> 00:00:17,760 un clásico Super Mario Brothers fondo do xogo. 5 00:00:17,760 --> 00:00:21,100 Por este conxunto de problemas, imos para recrear a media pirámide para 6 00:00:21,100 --> 00:00:23,000 Mario para ir sobre. 7 00:00:23,000 --> 00:00:27,330 O noso programa interactivo, polo que pedirá ao usuario a entrada dun certo 8 00:00:27,330 --> 00:00:28,660 altura á pirámide. 9 00:00:28,660 --> 00:00:32,920 E o programa pode imprimir unha media altura da pirámide de que, cando o 10 00:00:32,920 --> 00:00:37,390 Hash inferior esquerda aliñan co fondo esquina esquerda da terminal 11 00:00:37,390 --> 00:00:39,710 xanela de saída. 12 00:00:39,710 --> 00:00:44,870 >> Imos romper este problema en dúas partes, un, conseguir a entrada do usuario, e dous, 13 00:00:44,870 --> 00:00:47,040 imprimir a pirámide. 14 00:00:47,040 --> 00:00:51,150 Lembre que, aínda que a función GetInt pode recuperar un enteiro, ten 15 00:00:51,150 --> 00:00:56,260 ten que ter a certeza de que esta entrada fai sentido para o seu programa, polo que, 16 00:00:56,260 --> 00:00:59,690 Mario, el non vai facer só unha produto a un número enteiro. 17 00:00:59,690 --> 00:01:03,440 Debe asegurarse de que o usuario entradas dun número enteiro que está dentro da 18 00:01:03,440 --> 00:01:06,985 límites inferior e superior do pirámide que pode imprimir. 19 00:01:06,985 --> 00:01:12,300 Por esta especificación, esta é 0 e 23 inclusive. 20 00:01:12,300 --> 00:01:16,410 Se o usuario introduce un enteiro fóra dos nosos límites aceptados, entón queremos 21 00:01:16,410 --> 00:01:20,840 para leva-los de novo e de novo ata eles nos dan un número enteiro válido. 22 00:01:20,840 --> 00:01:25,990 >> Unha forma de garantir a entrada do usuario correcto é usando un lazo do-while, que é 23 00:01:25,990 --> 00:01:28,100 moi semellante a un loop while. 24 00:01:28,100 --> 00:01:32,580 O Do-While executa o código no interior do corpo unha vez, e logo verifica 25 00:01:32,580 --> 00:01:35,270 a condición de ser satisfeita ou non. 26 00:01:35,270 --> 00:01:38,830 Isto é útil para a entrada do usuario porque vostede sabe que precisa 27 00:01:38,830 --> 00:01:41,805 para levalos polo menos unha vez. 28 00:01:41,805 --> 00:01:45,940 Se a condición non se responde, o programa utilizará a liña tras 29 00:01:45,940 --> 00:01:47,270 o Do-while. 30 00:01:47,270 --> 00:01:50,950 Se a condición se responde, porén, o ciclo se repetirá. 31 00:01:50,950 --> 00:01:55,560 >> A Do-While á validación de usuario entrada será algo parecido a isto. 32 00:01:55,560 --> 00:02:02,920 Eu declaro unha variable n, GetInt, e repetir ata que non é válido. 33 00:02:02,920 --> 00:02:06,270 Lembre que cando se declara a súa variable, é necesaria a adecuada 34 00:02:06,270 --> 00:02:08,449 ámbito, así como en scratch. 35 00:02:08,449 --> 00:02:12,510 Se eu declarar n dentro do meu lazo do-while, o resto do programa non será 36 00:02:12,510 --> 00:02:13,750 capaz de acceder a ela. 37 00:02:13,750 --> 00:02:16,100 É limitada aos confíns das chaves. 38 00:02:16,100 --> 00:02:19,010 39 00:02:19,010 --> 00:02:23,090 >> Todo ben, entón agora que xa validado a entrada do usuario, que realmente precisa 40 00:02:23,090 --> 00:02:25,020 aproveitar esa media pirámide. 41 00:02:25,020 --> 00:02:29,700 Ela está composta de caracteres impresos, de xeito imos facer unha media pirámide nun simple 42 00:02:29,700 --> 00:02:31,480 editor de texto. 43 00:02:31,480 --> 00:02:35,920 Se queremos facer unha pirámide de estilo Mario tres de altura que está aliñado 44 00:02:35,920 --> 00:02:41,370 na parte esquerda da nosa fiestra, entón nós tipo dous hash, prema en Inserir, 45 00:02:41,370 --> 00:02:47,180 a continuación, escriba tres hash, prema Enter, e escriba catro. 46 00:02:47,180 --> 00:02:51,090 >> Pero neste conxunto de problemas, o noso media pirámide ten que ser aliñado á dereita. 47 00:02:51,090 --> 00:02:55,550 Usando un teclado estándar, como pode modificar este ficheiro para mover hashes 48 00:02:55,550 --> 00:02:57,210 para o lado dereito? 49 00:02:57,210 --> 00:03:03,190 Eu poida usar para guións baixos, dous no top de liña e un no segundo. 50 00:03:03,190 --> 00:03:07,690 Isto non parece tan bo, con todo, así Imos substituír os guións baixos con 51 00:03:07,690 --> 00:03:12,450 espazos, e aí temos unha media pirámide de altura tres. 52 00:03:12,450 --> 00:03:16,330 >> Tente lembrar-se este editor de texto exemplo, como comezar a pensar de volta para 53 00:03:16,330 --> 00:03:20,100 C. Imos tentar descubrir algún tipo de patrón que podemos 54 00:03:20,100 --> 00:03:22,750 poñer nunha construción de loop. 55 00:03:22,750 --> 00:03:27,570 Tome unha altura exemplo, digamos oito, e vexa se pode comezar a 56 00:03:27,570 --> 00:03:29,470 chegar a un estándar. 57 00:03:29,470 --> 00:03:34,710 A primeira liña Terá sete espazos seguido por dous hash. 58 00:03:34,710 --> 00:03:40,090 A segunda fila terá seis espazos e hash tres, e así por diante ata que o 59 00:03:40,090 --> 00:03:41,440 oitava liña. 60 00:03:41,440 --> 00:03:45,210 >> Pero como representaría a liña enésimo? 61 00:03:45,210 --> 00:03:48,170 Lembre que a convención de programación é cero indexado. 62 00:03:48,170 --> 00:03:51,870 Isto significa que comeza a contar a cero, entón a primeira liña é tecnicamente 63 00:03:51,870 --> 00:03:57,110 liña número cero con dúas portillas, liña número un ten tres hash, liña 64 00:03:57,110 --> 00:04:01,860 número dous ten catro hash, para despois ese estándar para calquera liña 65 00:04:01,860 --> 00:04:05,800 número n, existen n + 2 hash. 66 00:04:05,800 --> 00:04:09,270 Vou deixar para ti, con todo, para atopar o estándar para os espazos. 67 00:04:09,270 --> 00:04:12,240 Lembre que o seu estándar será lixeiramente diferente se decide 68 00:04:12,240 --> 00:04:16,649 iniciar a súa conta dende e un non cero. 69 00:04:16,649 --> 00:04:19,560 >> Agora tes un estándar para calquera liña n abstracto. 70 00:04:19,560 --> 00:04:25,190 Vostede sabe cantos espazos para imprimir e cantos guisados, así, para cada liña, isto 71 00:04:25,190 --> 00:04:26,270 Número cambiará. 72 00:04:26,270 --> 00:04:30,700 Pero o mesmo proceso de impresión dun carácter único, un espazo ou un 73 00:04:30,700 --> 00:04:33,200 de hash, é repetida. 74 00:04:33,200 --> 00:04:37,470 Entón todo o que tes que facer é varias veces imprimir este personaxe por tantas veces 75 00:04:37,470 --> 00:04:40,120 como determina o seu defecto. 76 00:04:40,120 --> 00:04:42,522 >> Entón, como imos repetir procesos? 77 00:04:42,522 --> 00:04:45,160 En perigo, utilizouse o bloque de repetición. 78 00:04:45,160 --> 00:04:48,580 En C, imos usar un loop for. 79 00:04:48,580 --> 00:04:51,290 Vexamos a sintaxe Para para loops. 80 00:04:51,290 --> 00:04:57,140 >> Para cada ciclo está composto por tres partes, unha inicialización, unha condición, 81 00:04:57,140 --> 00:04:58,592 e unha actualización. 82 00:04:58,592 --> 00:05:01,550 O seu loop For pode arrincar unha variable cando por primeira vez 83 00:05:01,550 --> 00:05:02,960 entra no loop For. 84 00:05:02,960 --> 00:05:07,100 Se a condición se responde, o corpo do loop será executado. 85 00:05:07,100 --> 00:05:10,070 Despois diso, a actualización será executada. 86 00:05:10,070 --> 00:05:13,630 >> Se a condición é aínda cumprida, o loop executarase e actualizar e 87 00:05:13,630 --> 00:05:18,580 repetir, aínda que a súa condición avalía a True. 88 00:05:18,580 --> 00:05:21,450 Vostede é condición debe finalmente avaliar como falso, con todo, xa que 89 00:05:21,450 --> 00:05:24,490 ao contrario do risco, non ten os lazos para sempre. 90 00:05:24,490 --> 00:05:28,270 O seu programa debe terminar eventualmente. 91 00:05:28,270 --> 00:05:32,330 >> Aquí está un exemplo de un loop que pode querer usar para Mario. 92 00:05:32,330 --> 00:05:36,790 A inicialización declara i un enteiro co valor 0. 93 00:05:36,790 --> 00:05:40,750 Sempre que i é menor que o canto, o corpo do loop e executará 94 00:05:40,750 --> 00:05:44,980 aumentar i por un e repetir ata i é maior ou 95 00:05:44,980 --> 00:05:47,220 igual á altura. 96 00:05:47,220 --> 00:05:49,140 >> Agora, o meu loop é o índice cero. 97 00:05:49,140 --> 00:05:52,270 A Int i comeza en cero, nin un sequera. 98 00:05:52,270 --> 00:05:55,320 Se eu escollese un, entón a miña condición faría tamén ten que ser diferente a 99 00:05:55,320 --> 00:05:58,740 o circuíto para realizar o mesmo número de veces. 100 00:05:58,740 --> 00:06:03,490 Teña en conta que isto con coidado cando está seleccionar o arranque eo seu 101 00:06:03,490 --> 00:06:08,660 condición, e consultar este trazar para comprobar. 102 00:06:08,660 --> 00:06:13,430 >> Unha das grandes cousas sobre o ordenador ciencia é que non hai só tantas 103 00:06:13,430 --> 00:06:15,490 formas de realizar as cousas. 104 00:06:15,490 --> 00:06:19,450 Pode escoller se comezan en cero ou un. 105 00:06:19,450 --> 00:06:22,380 Se non quere usar un loop, Tamén pode usar un loop while para 106 00:06:22,380 --> 00:06:26,530 repetir afirmacións, mentres manter a esencia dun loop, 107 00:06:26,530 --> 00:06:31,430 arranque, condición e actualización. 108 00:06:31,430 --> 00:06:36,890 Así que descubrir o loop que estamos máis cómodo, entón nós 109 00:06:36,890 --> 00:06:38,450 pode completar Mario. 110 00:06:38,450 --> 00:06:41,540 >> Nós primeiro comprobado para a entrada do usuario e logo, identificado unha 111 00:06:41,540 --> 00:06:43,580 estándar para calquera liña n. 112 00:06:43,580 --> 00:06:49,990 Así, para cada liña de cero a n menos 1 imprimirá o número apropiado de 113 00:06:49,990 --> 00:06:55,340 espazos, entón o número apropiado de hashes de acordo co noso estándar, e 114 00:06:55,340 --> 00:06:57,180 a continuación, unha nova liña. 115 00:06:57,180 --> 00:06:59,640 Con iso, ten a súa pirámide. 116 00:06:59,640 --> 00:07:02,630 O meu nome é Zamyla, e iso foi Mario. 117 00:07:02,630 --> 00:07:11,765