1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,640 ZAMYLA CHAN: E 'un-me, Zamyla. 3 00:00:02,640 --> 00:00:06,950 Oggi, stiamo andando a implementare Mario, dove traiamo Mario 4 00:00:06,950 --> 00:00:10,730 una piramide piena per lui per saltare. 5 00:00:10,730 --> 00:00:14,430 Analizziamo il sub-task per questo problema. 6 00:00:14,430 --> 00:00:17,930 >> In primo luogo, vogliamo richiedere all'utente per l'altezza della piramide. 7 00:00:17,930 --> 00:00:20,510 E poi vogliamo fare in modo che tale input è valido. 8 00:00:20,510 --> 00:00:23,280 E poi andremo a vogliono disegnare la piramide. 9 00:00:23,280 --> 00:00:26,850 >> Quindi parliamo di spingendo e validare l'input dell'utente. 10 00:00:26,850 --> 00:00:29,920 Potrebbe sembrare qualcosa di simile questo, un ciclo do-po che 11 00:00:29,920 --> 00:00:33,250 richiede all'utente per un interi e poi solo ripetizioni 12 00:00:33,250 --> 00:00:35,700 se questo intero non è valido. 13 00:00:35,700 --> 00:00:38,220 Così che cosa dovrebbe essere questa condizione? 14 00:00:38,220 --> 00:00:40,630 >> Per questo, andiamo indietro alla specifica. 15 00:00:40,630 --> 00:00:46,240 Ebbene, le specifiche ci dice che qualsiasi valida altezza sta per essere compreso tra 0 e 23, 16 00:00:46,240 --> 00:00:47,350 inclusiva. 17 00:00:47,350 --> 00:00:51,400 Allora questo significa che qualsiasi invalido altezza sarà inferiore a 0 18 00:00:51,400 --> 00:00:53,840 o superiore a 23. 19 00:00:53,840 --> 00:00:57,220 >> Quindi, ora che abbiamo queste informazioni, cerchiamo di progettare la nostra condizione. 20 00:00:57,220 --> 00:00:59,230 Ma dobbiamo stare attenti, perché ora abbiamo 21 00:00:59,230 --> 00:01:02,130 due booleani che vogliamo valutare. 22 00:01:02,130 --> 00:01:04,150 >> Qui ho fornito voi con una tabella di verità. 23 00:01:04,150 --> 00:01:07,520 Questo ci permette di prendere due Booleani, booleano uno e due. 24 00:01:07,520 --> 00:01:13,600 E siamo in grado di valutare sia Bool1 e Bool2 o Bool1 o Bool2. 25 00:01:13,600 --> 00:01:17,390 >> Allora, qual è la differenza tra AND e OR? 26 00:01:17,390 --> 00:01:21,810 Bene, Bool1 e Bool2 sarà valutata come vera se e solo 27 00:01:21,810 --> 00:01:25,680 se entrambi booleani sono vere, mentre il o il funzionamento 28 00:01:25,680 --> 00:01:30,190 sarà vero se uno di i booleani o entrambi sono vere. 29 00:01:30,190 --> 00:01:33,110 Quindi, con questo in mente, vedere se si riesce a capire 30 00:01:33,110 --> 00:01:37,460 ciò che la condizione appropriata per il ciclo do-while per n non valida 31 00:01:37,460 --> 00:01:38,850 sarà. 32 00:01:38,850 --> 00:01:43,540 >> Con questo, abbiamo spinti e validate l'utente per l'altezza della piramide 33 00:01:43,540 --> 00:01:44,550 che vogliono. 34 00:01:44,550 --> 00:01:47,740 Così ora, tocca a noi per disegnare la piramide. 35 00:01:47,740 --> 00:01:50,520 La piramide completa per questo problema avrà un aspetto un po ' 36 00:01:50,520 --> 00:01:56,340 come questo, dove abbiamo una piramide di sinistra, alcuni gap, e poi una piramide retta. 37 00:01:56,340 --> 00:01:58,630 Quindi cerchiamo di rompere questo giù un po '. 38 00:01:58,630 --> 00:02:03,510 >> Se vado al mio editor di testo, qui ho ci ha disegnato una piramide allineato a sinistra. 39 00:02:03,510 --> 00:02:05,160 Ma questo non lo farà. 40 00:02:05,160 --> 00:02:10,139 Quello che vogliamo fare è che vogliamo creare una piramide allineato a destra prima. 41 00:02:10,139 --> 00:02:13,580 Quindi, per fare questo, per spingere solo i miei hash lungo al lato, 42 00:02:13,580 --> 00:02:18,240 Sto solo andando a mettere alcuni caratteri in mezzo, a questi punti. 43 00:02:18,240 --> 00:02:22,560 Poi ho intenzione di mettere due sul riga successiva, e uno su quella linea. 44 00:02:22,560 --> 00:02:26,070 Ed ecco ho una piramide allineato a destra. 45 00:02:26,070 --> 00:02:28,540 >> Dopo di che, ho intenzione di tornare alla riga superiore 46 00:02:28,540 --> 00:02:33,930 e mettere il divario, che è, per le specifiche, due spazi. 47 00:02:33,930 --> 00:02:37,680 Poi ho intenzione di riempire il Dall'altro lato della piramide. 48 00:02:37,680 --> 00:02:42,030 Ho intenzione di andare alla seconda fila, scrivo due spazi per il vuoto e poi due 49 00:02:42,030 --> 00:02:42,920 hash. 50 00:02:42,920 --> 00:02:47,020 Torna alla terza fila, due posti per il divario e tre gli hash. 51 00:02:47,020 --> 00:02:51,480 E alla fine, due posti per il divario e quattro gli hash. 52 00:02:51,480 --> 00:02:54,400 Ecco, questo è ciò che un pieno piramide sarà simile. 53 00:02:54,400 --> 00:02:57,260 >> Naturalmente, non vogliamo questi punti nel modo. 54 00:02:57,260 --> 00:03:01,220 Quindi stiamo andando a sostituire questi puntini mettendo alcuni spazi in. 55 00:03:01,220 --> 00:03:03,720 Uno, due, tre sulla prima riga. 56 00:03:03,720 --> 00:03:05,650 Una, due al secondo. 57 00:03:05,650 --> 00:03:08,200 E uno sulla terza riga. 58 00:03:08,200 --> 00:03:12,060 Quindi questo è quello che avremmo fatto se ci voluto fare solo una piramide piena, 59 00:03:12,060 --> 00:03:13,700 dire, nel nostro editor di testo. 60 00:03:13,700 --> 00:03:15,860 >> Quindi cerchiamo di prendere questo, la comprensione dei modelli, 61 00:03:15,860 --> 00:03:19,870 e convertirlo verso alcuni pseudocodice. 62 00:03:19,870 --> 00:03:24,500 Per ogni riga della piramide, vogliamo stampare la piramide sinistra e poi 63 00:03:24,500 --> 00:03:26,580 il vuoto e quindi la piramide destra. 64 00:03:26,580 --> 00:03:30,260 Per la piramide di sinistra, il risultato della stampa la quantità richiesta di spazi, 65 00:03:30,260 --> 00:03:31,740 seguito dai hash. 66 00:03:31,740 --> 00:03:35,030 Poi stampiamo il divario, che è solo due spazi ogni volta. 67 00:03:35,030 --> 00:03:38,080 E nella piramide destra, il risultato della stampa il numero richiesto di hash. 68 00:03:38,080 --> 00:03:41,410 >> Per la seconda fila, abbiamo condotto lo stesso processo esatto. 69 00:03:41,410 --> 00:03:44,510 Stampiamo gli spazi per la sinistra piramide, la quantità necessaria 70 00:03:44,510 --> 00:03:49,930 di hash, il divario, due spazi, e poi gli hash per la piramide destra. 71 00:03:49,930 --> 00:03:52,490 >> Affrontiamo il modello per la piramide sinistra. 72 00:03:52,490 --> 00:03:55,660 Se ho avuto, a fini di questo esempio, un'altezza 73 00:03:55,660 --> 00:03:58,790 otto richiesto dal utente, quindi la mia prima fila 74 00:03:58,790 --> 00:04:01,020 avrebbe un hash e sette spazi. 75 00:04:01,020 --> 00:04:03,860 La mia seconda fila avrebbe due hash, sei spazi. 76 00:04:03,860 --> 00:04:06,749 La terza fila, tre gli hash, cinque spazi. 77 00:04:06,749 --> 00:04:09,040 Probabilmente si può fare questo voi stessi per una altezza di otto 78 00:04:09,040 --> 00:04:13,470 e determinare per ogni riga quanti hash e quanti spazi è necessario. 79 00:04:13,470 --> 00:04:16,209 Ma quello che vogliamo fare è vogliamo astratta esso. 80 00:04:16,209 --> 00:04:22,660 Quindi vi chiedo per qualsiasi riga ennesima, quanti hash e quanti spazi abbiamo bisogno? 81 00:04:22,660 --> 00:04:25,410 >> Ora, come si determina il modello per quanti hash 82 00:04:25,410 --> 00:04:29,920 e quanti spazi necessario per ogni ennesima riga per una determinata altezza, 83 00:04:29,920 --> 00:04:32,910 ricordarsi di stare attenti di come si sta indicizzazione. 84 00:04:32,910 --> 00:04:37,160 Quello che voglio dire con questo è che in tutti i giorni la vita la maggior parte di noi inizia a contare da uno. 85 00:04:37,160 --> 00:04:39,680 Quindi la prima fila sarebbe stato il numero uno. 86 00:04:39,680 --> 00:04:43,620 E la seconda fila sarebbe fila numero due, così via e così via. 87 00:04:43,620 --> 00:04:47,620 >> Ma in informatica e CS50, stiamo zero indicizzato. 88 00:04:47,620 --> 00:04:50,750 Così abbiamo effettivamente iniziare a contare da zero. 89 00:04:50,750 --> 00:04:54,020 Quindi la prima fila sarebbe essere il numero di riga zero. 90 00:04:54,020 --> 00:04:56,640 E la seconda fila sarebbe numero di riga uno. 91 00:04:56,640 --> 00:05:02,510 Quindi, se ho avuto una altezza di otto per la piramide, allora l'ultimo valore di n 92 00:05:02,510 --> 00:05:05,850 sarebbe in realtà sette e non otto. 93 00:05:05,850 --> 00:05:07,010 >> Quindi state attenti su questo. 94 00:05:07,010 --> 00:05:10,750 Ed essere consapevoli quando si sta per determinare il vostro modello se il vostro zero indicizzati 95 00:05:10,750 --> 00:05:12,360 o uno-indicizzati 96 00:05:12,360 --> 00:05:13,070 >> OK. 97 00:05:13,070 --> 00:05:15,380 Quindi, ora che abbiamo la modello per la piramide sinistra, 98 00:05:15,380 --> 00:05:18,650 abbiamo bisogno di determinare il modello per il gap. 99 00:05:18,650 --> 00:05:20,480 Per fortuna, questo è davvero facile. 100 00:05:20,480 --> 00:05:22,690 E 'solo sempre due spazi. 101 00:05:22,690 --> 00:05:25,240 >> Così ora si procede al modello giusto. 102 00:05:25,240 --> 00:05:27,220 La prima riga avrà un hash. 103 00:05:27,220 --> 00:05:28,640 La seconda fila, due. 104 00:05:28,640 --> 00:05:29,530 La terza fila, tre. 105 00:05:29,530 --> 00:05:30,790 Così via. 106 00:05:30,790 --> 00:05:35,540 Quindi, di nuovo, determinare per qualsiasi astratto n e qualsiasi altezza quanti hash 107 00:05:35,540 --> 00:05:38,810 e quanti spazi ogni riga dovrebbe avere. 108 00:05:38,810 --> 00:05:39,700 >> OK. 109 00:05:39,700 --> 00:05:45,050 Quindi sappiamo che per ogni fila ci per gli incontri di processo. 110 00:05:45,050 --> 00:05:46,600 Come lo facciamo? 111 00:05:46,600 --> 00:05:50,440 Beh, usiamo il ciclo for costrutto, costituito da una inizializzazione, 112 00:05:50,440 --> 00:05:52,310 una condizione, e un aggiornamento. 113 00:05:52,310 --> 00:05:54,830 Per i cicli possono essere usati ripetere processi. 114 00:05:54,830 --> 00:05:59,610 >> Quindi dire che voglio per dire ciao, mondo 50 volte, poi il mio ciclo for 115 00:05:59,610 --> 00:06:03,510 sarebbe simile a questa, dove Ho inizializzo mia variabile a zero. 116 00:06:03,510 --> 00:06:06,200 La condizione è che i è inferiore a 50. 117 00:06:06,200 --> 00:06:09,670 E allora l'aggiornamento è che incrementa di uno ogni volta. 118 00:06:09,670 --> 00:06:14,700 Così che cosa questo sarebbe fare sarebbe quella di stampare ciao, mondo 50 volte di fila. 119 00:06:14,700 --> 00:06:18,080 >> Ora, dico che volevo iterare sull'altezza della piramide. 120 00:06:18,080 --> 00:06:21,560 Poi invece di codifica duro qualche valore nella condizione, 121 00:06:21,560 --> 00:06:23,280 Mi basta usare l'altezza variabile. 122 00:06:23,280 --> 00:06:27,180 Così che cosa questo farà è iterate sull'altezza ciascuna riga. 123 00:06:27,180 --> 00:06:30,280 E posso fare qualcosa dentro del corpo di tale ciclo. 124 00:06:30,280 --> 00:06:32,710 >> Che cosa vogliamo fare all'interno del corpo del ciclo? 125 00:06:32,710 --> 00:06:36,550 Beh, come abbiamo indicato in precedenza, vogliamo per stampare gli spazi e gli hash 126 00:06:36,550 --> 00:06:40,730 per la piramide sinistra e quindi stampare due spazi e quindi stampare il hash. 127 00:06:40,730 --> 00:06:42,500 Quindi abbiamo già capito che fuori. 128 00:06:42,500 --> 00:06:45,670 Così possiamo iniziare a riempire nel nostro programma molto di più. 129 00:06:45,670 --> 00:06:49,850 >> Qui ho un esterno per ciclo che itera oltre ogni riga nella piramide. 130 00:06:49,850 --> 00:06:53,340 E dentro quel corpo sto andando per stampare più volte gli spazi, 131 00:06:53,340 --> 00:06:56,860 hash ripetutamente, e poi il vuoto, e poi hash per la piramide a destra, 132 00:06:56,860 --> 00:07:00,440 e quindi, infine, una nuova la linea per iniziare la riga successiva. 133 00:07:00,440 --> 00:07:02,860 >> Con questo, abbiamo spinti l'utente per l'ingresso. 134 00:07:02,860 --> 00:07:04,510 Abbiamo fatto in modo che sia valido. 135 00:07:04,510 --> 00:07:06,280 E poi abbiamo disegnato la piramide. 136 00:07:06,280 --> 00:07:09,540 Così Mario può con successo scalare la piramide. 137 00:07:09,540 --> 00:07:10,970 >> Il mio nome è Zamyla. 138 00:07:10,970 --> 00:07:13,840 E questo è CS50. 139 00:07:13,840 --> 00:07:15,419