1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,640 ZAMYLA CHAN: To je-me, Zamyla. 3 00:00:02,640 --> 00:00:06,950 Danes bomo izvajati Mario, kjer črpamo Mario 4 00:00:06,950 --> 00:00:10,730 Pred vami je piramida za njega, da skok čez. 5 00:00:10,730 --> 00:00:14,430 Oglejmo razčleniti sub-naloge za to težavo. 6 00:00:14,430 --> 00:00:17,930 >> Najprej želimo poziv uporabniku višina piramide. 7 00:00:17,930 --> 00:00:20,510 In potem smo se želeli prepričati da je to vhod veljaven. 8 00:00:20,510 --> 00:00:23,280 In potem bomo želijo pripraviti piramide. 9 00:00:23,280 --> 00:00:26,850 >> Torej, kaj je govoril o česar in potrjevanje uporabnik vložek. 10 00:00:26,850 --> 00:00:29,920 To je videti takole to do-, medtem ko zanko, ki 11 00:00:29,920 --> 00:00:33,250 pozove uporabnika, dokumentacija cela, nato pa le ponavlja 12 00:00:33,250 --> 00:00:35,700 če je to število je neveljavna. 13 00:00:35,700 --> 00:00:38,220 Torej, kaj naj bi ta pogoj? 14 00:00:38,220 --> 00:00:40,630 >> Za to, vrnimo specifikacije. 15 00:00:40,630 --> 00:00:46,240 No, spec nam pove, da je vsaka veljavna višina se bo med 0 in 23, 16 00:00:46,240 --> 00:00:47,350 inclusive. 17 00:00:47,350 --> 00:00:51,400 Torej to pomeni, da je vsaka neveljavna višina se bo manj kot 0 18 00:00:51,400 --> 00:00:53,840 ali več kot 23. 19 00:00:53,840 --> 00:00:57,220 >> Torej sedaj, da imamo te podatke, pa oblikujejo naše stanje. 20 00:00:57,220 --> 00:00:59,230 Vendar moramo biti previdni, ker zdaj imamo 21 00:00:59,230 --> 00:01:02,130 dve logične vrednosti, ki jih želimo oceniti. 22 00:01:02,130 --> 00:01:04,150 >> Tu sem te, če z resnico mizo. 23 00:01:04,150 --> 00:01:07,520 To nam omogoča, da dva Logične vrednosti, logični ena in dva. 24 00:01:07,520 --> 00:01:13,600 In lahko ocenimo bodisi bool1 in bool2 ali bool1 ali bool2. 25 00:01:13,600 --> 00:01:17,390 >> Torej, kaj je razlika med in in ali? 26 00:01:17,390 --> 00:01:21,810 No, bool1 in bool2 bo oceni, da velja samo v primeru, 27 00:01:21,810 --> 00:01:25,680 če sta oba logične vrednosti true, ker je ali delovanje 28 00:01:25,680 --> 00:01:30,190 bo držalo, če je eden od so logične vrednosti ali oba sta res. 29 00:01:30,190 --> 00:01:33,110 Torej s tem v mislih, videli, če lahko ugotovimo, 30 00:01:33,110 --> 00:01:37,460 kaj je primerna pogoj svoj do-while zanko za neveljavno n 31 00:01:37,460 --> 00:01:38,850 se bo. 32 00:01:38,850 --> 00:01:43,540 >> S tem smo pozvani in potrjeni Uporabnik za višino piramide 33 00:01:43,540 --> 00:01:44,550 da hočejo. 34 00:01:44,550 --> 00:01:47,740 Zdaj, to je odvisno od nas pripraviti piramide. 35 00:01:47,740 --> 00:01:50,520 Polno piramida to Problem bo videti malo 36 00:01:50,520 --> 00:01:56,340 kot je ta, kjer imamo levo piramido, nekaj vrzeli in nato desno piramide. 37 00:01:56,340 --> 00:01:58,630 Torej, kaj je razdeliti malo. 38 00:01:58,630 --> 00:02:03,510 >> Če grem na moj urejevalnik besedila, tukaj nimam pripravi nam-levo poravnani piramido. 39 00:02:03,510 --> 00:02:05,160 Ampak, da ne bo naredil. 40 00:02:05,160 --> 00:02:10,139 Kaj želimo narediti je, da smo želeli ustvariti desno poravnanega piramido prvi. 41 00:02:10,139 --> 00:02:13,580 Torej za to, da samo potiskanje moje hashes vzdolž ob strani, 42 00:02:13,580 --> 00:02:18,240 Jaz sem le, da bo dal nekaj znakov med, samo teh pik. 43 00:02:18,240 --> 00:02:22,560 Potem bom dal dva na Naslednja vrstica, in eno po tej progi. 44 00:02:22,560 --> 00:02:26,070 In tako da tukaj imam desno poravnano piramido. 45 00:02:26,070 --> 00:02:28,540 >> Po tem, bom segajo v zgornji vrstici 46 00:02:28,540 --> 00:02:33,930 in dal v vrzeli, ki je, na spec, dva prostora. 47 00:02:33,930 --> 00:02:37,680 Potem bom izpolniti v drugi strani piramide. 48 00:02:37,680 --> 00:02:42,030 Bom šel v drugi vrsti, pisanje dva prostora za reže in nato dve 49 00:02:42,030 --> 00:02:42,920 hashes. 50 00:02:42,920 --> 00:02:47,020 Nazaj na tretji vrsti, dva presledka za razlike in tri haše. 51 00:02:47,020 --> 00:02:51,480 In na koncu, dve prostori za režo in štiri haše. 52 00:02:51,480 --> 00:02:54,400 Torej, to je tisto, kar v celoti piramida bo izgledal. 53 00:02:54,400 --> 00:02:57,260 >> Seveda si ne želimo Te pike na poti. 54 00:02:57,260 --> 00:03:01,220 Torej bomo namesto njih pike, ki jih dajanje nekaj prostorov v. 55 00:03:01,220 --> 00:03:03,720 Ena, dva, tri na prvi liniji. 56 00:03:03,720 --> 00:03:05,650 Ena, dva na sekundo. 57 00:03:05,650 --> 00:03:08,200 In ena v tretji vrstici. 58 00:03:08,200 --> 00:03:12,060 Torej, to je, kaj bi naredili, če bi želel samo, da celotno piramido, 59 00:03:12,060 --> 00:03:13,700 pravijo, v našem urejevalniku besedil. 60 00:03:13,700 --> 00:03:15,860 >> Tako da je lahko to, razumevanje vzorcev, 61 00:03:15,860 --> 00:03:19,870 in ga spremeniti čez neki psevdokoda. 62 00:03:19,870 --> 00:03:24,500 Za vsako vrsto piramide, želimo natisniti levo piramido in nato 63 00:03:24,500 --> 00:03:26,580 vrzel in nato desno piramide. 64 00:03:26,580 --> 00:03:30,260 Za levo piramide, tiskamo predpisana količina prostorov, 65 00:03:30,260 --> 00:03:31,740 sledijo haše. 66 00:03:31,740 --> 00:03:35,030 Potem smo natisniti vrzel, ki je le dve prostori vsakič. 67 00:03:35,030 --> 00:03:38,080 In v pravo piramido, tiskamo zahtevano število haše. 68 00:03:38,080 --> 00:03:41,410 >> Za drugi vrsti smo izvedli enako natančen postopek. 69 00:03:41,410 --> 00:03:44,510 Tiskamo prostore za levo piramida je potrebna količina 70 00:03:44,510 --> 00:03:49,930 od haše, reže, dva prostora, in nato pa hash za desni piramide. 71 00:03:49,930 --> 00:03:52,490 >> Oglejmo reševanje vzorec za levo piramide. 72 00:03:52,490 --> 00:03:55,660 Če bi imel, za namene to primer višina 73 00:03:55,660 --> 00:03:58,790 osem jih zaprošeni uporabnik, potem moja prva vrstica 74 00:03:58,790 --> 00:04:01,020 bi imel eno hašiš in sedem mest. 75 00:04:01,020 --> 00:04:03,860 Moj drugi vrsti bi morali zgoščeni vsebini, šest prostorov. 76 00:04:03,860 --> 00:04:06,749 Tretji vrsti, tri hash, pet prostori. 77 00:04:06,749 --> 00:04:09,040 Verjetno si lahko to storijo sami za višino osmih 78 00:04:09,040 --> 00:04:13,470 in določi za vsako vrsto koliko hashes in koliko prostorov, kar potrebujete. 79 00:04:13,470 --> 00:04:16,209 Toda tisto, kar smo želeli storiti, je želimo povzetek je. 80 00:04:16,209 --> 00:04:22,660 Torej vas prosim za vsako n-vrstico, koliko hashes in koliko prostorov potrebujemo? 81 00:04:22,660 --> 00:04:25,410 >> Zdaj, ko določi Vzorec za koliko haše 82 00:04:25,410 --> 00:04:29,920 in koliko prostorov, kar potrebujete za koli n vrstica za določeno višino, 83 00:04:29,920 --> 00:04:32,910 ne pozabite, da bodite previdni kako ste indeksira. 84 00:04:32,910 --> 00:04:37,160 Kaj mislim s tem, da v vsakdanjem življenje je večina od nas začnemo z eno. 85 00:04:37,160 --> 00:04:39,680 Zato bi v prvi vrstici je številka ena. 86 00:04:39,680 --> 00:04:43,620 In druga vrsta bo vrstica številka dve, tako naprej in tako naprej. 87 00:04:43,620 --> 00:04:47,620 >> Toda na področju računalništva in CS50, smo nič indeksirane. 88 00:04:47,620 --> 00:04:50,750 Tako smo dejansko začeli štetje nič. 89 00:04:50,750 --> 00:04:54,020 Torej bi prva vrstica biti vrstica številka nič. 90 00:04:54,020 --> 00:04:56,640 In druga vrstica bi bila vrstica številka ena. 91 00:04:56,640 --> 00:05:02,510 Torej, če bi imel višino osem za Moja piramida, nato zadnja vrednost n 92 00:05:02,510 --> 00:05:05,850 bi dejansko sedem, in ne osem. 93 00:05:05,850 --> 00:05:07,010 >> Zato bodite previdni glede tega. 94 00:05:07,010 --> 00:05:10,750 In se zavedati, ko ste določanju svoj vzorec, ali je vaš nič indeksirane 95 00:05:10,750 --> 00:05:12,360 ali en indeksirane 96 00:05:12,360 --> 00:05:13,070 >> V REDU. 97 00:05:13,070 --> 00:05:15,380 Torej sedaj, da imamo Vzorec za levo piramide 98 00:05:15,380 --> 00:05:18,650 moramo določiti vzorec za reže. 99 00:05:18,650 --> 00:05:20,480 Na srečo, to je enostavno. 100 00:05:20,480 --> 00:05:22,690 To je samo vedno dva prostore. 101 00:05:22,690 --> 00:05:25,240 >> Zdaj bomo nadaljevali na pravem vzorcu. 102 00:05:25,240 --> 00:05:27,220 V prvi vrstici bo imela eno hašiš. 103 00:05:27,220 --> 00:05:28,640 Druga vrsta, dva. 104 00:05:28,640 --> 00:05:29,530 Tretji vrsti, tri. 105 00:05:29,530 --> 00:05:30,790 Tako naprej in tako naprej. 106 00:05:30,790 --> 00:05:35,540 Torej še enkrat, določi za katero koli povzetek n in vse višine koliko hashes 107 00:05:35,540 --> 00:05:38,810 in koliko prostorov Vsaka vrstica mora imeti. 108 00:05:38,810 --> 00:05:39,700 >> V REDU. 109 00:05:39,700 --> 00:05:45,050 Tako smo vedeli, da se za vsako zapored morali opraviti nekaj procesa. 110 00:05:45,050 --> 00:05:46,600 Kako to storimo? 111 00:05:46,600 --> 00:05:50,440 No, bomo uporabili za zanke konstrukt, sestavljena iz za inicializacijo 112 00:05:50,440 --> 00:05:52,310 pogoj, in posodobitev. 113 00:05:52,310 --> 00:05:54,830 Za lahko uporabimo zanke ponoviti procesov. 114 00:05:54,830 --> 00:05:59,610 >> Torej, da hočem, da pozdravi, svet 50-krat, nato pa moj zanko 115 00:05:59,610 --> 00:06:03,510 bi izgledal nekako takole, če je Sem inicializacijo moje spremenljivke na nič. 116 00:06:03,510 --> 00:06:06,200 Pogoj je, da je i manj kot 50. 117 00:06:06,200 --> 00:06:09,670 In potem update je, da to korakih po eno vsakič. 118 00:06:09,670 --> 00:06:14,700 Torej, kaj bi to storili, bi bilo, da tiskanje zdravo, svetovno 50-krat zapored. 119 00:06:14,700 --> 00:06:18,080 >> Zdaj pa, da sem želel ponovitev nad višino piramide. 120 00:06:18,080 --> 00:06:21,560 Nato namesto trdega kodiranja nekaj vrednosti v stanju, 121 00:06:21,560 --> 00:06:23,280 Pravkar sem uporabiti spremenljivo višino. 122 00:06:23,280 --> 00:06:27,180 Torej, kaj bo to storiti, je ponovitev čez višino vsake vrstice. 123 00:06:27,180 --> 00:06:30,280 In ne morem narediti nekaj v notranjosti telesa te zanke. 124 00:06:30,280 --> 00:06:32,710 >> Kaj želimo narediti notranjosti telesa zanke? 125 00:06:32,710 --> 00:06:36,550 No, kot smo nakazali prej, želimo natisniti prostore in hash 126 00:06:36,550 --> 00:06:40,730 za levi piramide in nato tiskanja dva presledka in nato natisnete hash. 127 00:06:40,730 --> 00:06:42,500 Tako smo že pogruntal. 128 00:06:42,500 --> 00:06:45,670 Torej lahko začnemo zapolniti V našem programu veliko več. 129 00:06:45,670 --> 00:06:49,850 >> Tukaj imam zunanjo zanko, ki ponovi več kot vsako vrstico v piramidi. 130 00:06:49,850 --> 00:06:53,340 In znotraj tega organa bom večkrat tiskanje prostore, 131 00:06:53,340 --> 00:06:56,860 hashes večkrat, nato pa je razlika, in nato hashes za pravo piramide 132 00:06:56,860 --> 00:07:00,440 in končno, nov linija za začetek naslednje vrstice. 133 00:07:00,440 --> 00:07:02,860 >> S tem smo pozvani uporabnik za vnos. 134 00:07:02,860 --> 00:07:04,510 Naredili smo prepričani, da je veljavna. 135 00:07:04,510 --> 00:07:06,280 In potem smo narisali piramido. 136 00:07:06,280 --> 00:07:09,540 Torej Mario lahko uspešno vzpon piramide. 137 00:07:09,540 --> 00:07:10,970 >> Moje ime je Zamyla. 138 00:07:10,970 --> 00:07:13,840 In to je CS50. 139 00:07:13,840 --> 00:07:15,419