1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA Chan: Je to já, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Dnes v Mario, budeme mít kreslení polovinu pyramidy pro Mario 4 00:00:06,910 --> 00:00:08,290 vyšplhat nahoru. 5 00:00:08,290 --> 00:00:11,570 >> Takže pojďme mluvit o našich úkolů pro tento problém. 6 00:00:11,570 --> 00:00:13,610 Budeme chtít výzvu a ověřovat 7 00:00:13,610 --> 00:00:18,290 Uživatel pro platný vstup, jak high chtějí Mario pyramida být. 8 00:00:18,290 --> 00:00:20,090 A pak, budeme ji čerpat. 9 00:00:20,090 --> 00:00:24,870 Takže pojďme začít s výzvou a ověření uživatele pro jejich vstup. 10 00:00:24,870 --> 00:00:27,640 >> Můžeme využít služeb Funkce CS50 Knihovna 11 00:00:27,640 --> 00:00:31,160 dostat int, která zajistí, že uživatel zadá celé číslo. 12 00:00:31,160 --> 00:00:35,730 Případné pozitivní celá čísla, záporná celá čísla, čísla 0 jsou poctivá hra. 13 00:00:35,730 --> 00:00:41,670 V opačném případě bude uživatel vyzván k opakovat, dokud se vstupem platné celé číslo. 14 00:00:41,670 --> 00:00:44,210 Nyní sice get int dělá hodně práce pro nás 15 00:00:44,210 --> 00:00:46,730 na zajištění Uživatel nám dává celé číslo, 16 00:00:46,730 --> 00:00:50,760 stále potřebujeme použít některé další omezení na to. 17 00:00:50,760 --> 00:00:56,420 Konec konců, nemůžeme mít Mario lezení polovina pyramida výšky negativního 12. 18 00:00:56,420 --> 00:00:59,040 >> Kromě toho, že je specifikace problému 19 00:00:59,040 --> 00:01:02,490 říká, že můžeme jen dovolit Mario šplhat 20 00:01:02,490 --> 00:01:06,940 pyramida z výšek mezi 0 a 23 ° C. 21 00:01:06,940 --> 00:01:11,120 OK, tak to znamená, že je třeba průběžně vyzve uživatele 22 00:01:11,120 --> 00:01:14,320 aby nám platný Počet a jen pokračovat 23 00:01:14,320 --> 00:01:17,120 když si dal nám platnou výšku. 24 00:01:17,120 --> 00:01:18,720 Jak to uděláme? 25 00:01:18,720 --> 00:01:23,760 >> No, kontinuální procesy nám dá Myšlenka loops-- něco dělat 26 00:01:23,760 --> 00:01:24,720 opakovaně. 27 00:01:24,720 --> 00:01:28,220 Jedna smyčka v C za chvíli smyčka, která bude průběžně 28 00:01:28,220 --> 00:01:33,480 vykonat tělo smyčky tak dlouho, dokud daná podmínka vyhodnocena jako pravdivá. 29 00:01:33,480 --> 00:01:36,200 Jakmile je tato podmínka vyhodnocuje jako nepravdivý, 30 00:01:36,200 --> 00:01:39,770 Program bude pokračovat co přijde po tom. 31 00:01:39,770 --> 00:01:43,180 Takže zatímco smyčky jsou jedním ze způsobů zajistit, aby Neustále 32 00:01:43,180 --> 00:01:45,320 vyzve uživatele k zadání platný vstup. 33 00:01:45,320 --> 00:01:50,070 A poté, co nám platný vstup, budeme pokračovat, co přijde příště. 34 00:01:50,070 --> 00:01:54,380 Víme, že budeme klást uživatel pro vstup alespoň jednou. 35 00:01:54,380 --> 00:01:59,200 Takže teď se dostáváme k sestra while, který je dělat, zatímco smyčka. 36 00:01:59,200 --> 00:02:02,650 >> Dělat, zatímco smyčky se provede tělo smyčky alespoň jednou. 37 00:02:02,650 --> 00:02:06,150 Takže bez kontroly stavu, že se provede těla smyčky. 38 00:02:06,150 --> 00:02:09,750 A pak zkontrolovat stav vidět zda je třeba opakovat. 39 00:02:09,750 --> 00:02:13,080 To přijde vhod, když my ověření uživatelského vstupu. 40 00:02:13,080 --> 00:02:15,830 Víme, že jedeme aby jim alespoň jednou zeptat. 41 00:02:15,830 --> 00:02:18,780 Takže dělat, zatímco smyčka by mohla vypadat nějak takto. 42 00:02:18,780 --> 00:02:20,090 Máme celé číslo n. 43 00:02:20,090 --> 00:02:22,760 A uvnitř úkolů while, okamžitě 44 00:02:22,760 --> 00:02:24,750 vyzve uživatele k celé číslo. 45 00:02:24,750 --> 00:02:29,740 Pokud n je neplatné, pak budeme je výzva znovu a znovu a znovu, dokud nebudou 46 00:02:29,740 --> 00:02:31,820 dej nám, že platné celé číslo. 47 00:02:31,820 --> 00:02:37,440 Konečně, jakmile n je platný vstup, zmíníme pokračovat do zbytku našeho programu. 48 00:02:37,440 --> 00:02:41,830 >> Takže se vraťme k spec a kontrola jaké jsou podmínky pro platný vstup 49 00:02:41,830 --> 00:02:43,670 bude. 50 00:02:43,670 --> 00:02:48,090 Platné výšky budou být v rozmezí 0 až 23 včetně. 51 00:02:48,090 --> 00:02:53,350 Takže neplatné výšky jdou do být menší než 0 nebo větší než 23 ° C. 52 00:02:53,350 --> 00:02:56,420 Takže nezapomeňte navrhnout Váš zdravotní stav pečlivě, 53 00:02:56,420 --> 00:02:58,660 s vědomím, že podmínkou Pro dělat, zatímco smyčky 54 00:02:58,660 --> 00:03:01,470 by měl být při n je neplatný. 55 00:03:01,470 --> 00:03:05,080 Teď to není Bude to jednoduchý jediný logický výraz. 56 00:03:05,080 --> 00:03:07,630 Budeme muset spojit dva různé výrazy 57 00:03:07,630 --> 00:03:09,900 aby se celý náš stav. 58 00:03:09,900 --> 00:03:13,290 >> Takže pojďme stačí se podívat na pravdivostní tabulky jsem Už vám dal náznak, že jsme 59 00:03:13,290 --> 00:03:15,200 bude zabývat dvěma Boolean. 60 00:03:15,200 --> 00:03:19,620 Takže tady je pravdivostní tabulka, kde jsem mají dvě Booleans-- boolovskou 1 a 2. 61 00:03:19,620 --> 00:03:27,050 Takže máme možnost vyhodnotit bool1 a bool2 nebo bool1 nebo bool2. 62 00:03:27,050 --> 00:03:31,980 A bude pouze pravdivé pokud oba Booleans vyhodnotit na hodnotu true, zatímco všichni 63 00:03:31,980 --> 00:03:37,280 nebo bude platit tak dlouho, dokud jeden z dva Booleans vyhodnocen jako true. 64 00:03:37,280 --> 00:03:41,450 OK, takže chvilku, pozastavit toto video a strávit tuto pravdu tabulky. 65 00:03:41,450 --> 00:03:42,930 Budu tady čekat. 66 00:03:42,930 --> 00:03:45,760 Když se vrátíš, viz pokud můžete dát dohromady 67 00:03:45,760 --> 00:03:51,910 booleovský výraz pro vaše Stav N je neplatný vstup. 68 00:03:51,910 --> 00:03:54,420 >> Takže teď, že máme platný vstup od uživatele, pojďme 69 00:03:54,420 --> 00:03:58,710 jděte do toho a mluvit o tom, jak mohl čerpat polovinu pyramidy. 70 00:03:58,710 --> 00:04:03,410 Tady v tomto jednoduchém textovém editoru, Já jsem nakreslil levé vyrovnány pyramidy. 71 00:04:03,410 --> 00:04:07,050 Ale my víme, že musíme naše pyramida je třeba se zarovnáním vpravo. 72 00:04:07,050 --> 00:04:08,650 Tak, jak by to udělat? 73 00:04:08,650 --> 00:04:11,440 No, já bych mohl zkusit, aby se zasadila vše na stranu 74 00:04:11,440 --> 00:04:14,880 pouhým uvedením málo znak mezi nimi. 75 00:04:14,880 --> 00:04:16,779 A pak, pro příští linka, jdu dát 76 00:04:16,779 --> 00:04:20,970 Některé více znaků, aby se zasadila ji s sebou, a further-- tak dále a tak forth-- 77 00:04:20,970 --> 00:04:23,360 dokud nebudu mít tu správnou vyrovnány pyramidy. 78 00:04:23,360 --> 00:04:27,780 Takže máme pravý align pyramidy, ale to nevypadá tak skvěle s tečkami. 79 00:04:27,780 --> 00:04:30,680 Ale přesto chceme tvrdí, že pěkné mezery. 80 00:04:30,680 --> 00:04:35,260 Takže jdu doslovně vložit nějaké mezery. 81 00:04:35,260 --> 00:04:39,420 >> Namísto tří teček, budu dát jeden, dva, tři mezery. 82 00:04:39,420 --> 00:04:40,370 Na druhém řádku. 83 00:04:40,370 --> 00:04:42,640 Dám jeden, dva prostory. 84 00:04:42,640 --> 00:04:45,370 A na předposlední linka, jen jeden prostor. 85 00:04:45,370 --> 00:04:48,290 A tady mám právo vyrovnány pyramidy. 86 00:04:48,290 --> 00:04:52,170 V tom příklad v textu editor, máme představu o struktuře 87 00:04:52,170 --> 00:04:54,590 že budeme používat k tomu polovinu pyramidy. 88 00:04:54,590 --> 00:04:58,080 Pro každý řádek, co jsme udělali Je napíšeme nějaké mezery, 89 00:04:58,080 --> 00:05:00,170 a pak napsal některé hashe, a poté zadali 90 00:05:00,170 --> 00:05:03,020 klávesa Enter, která vytváří novou linku. 91 00:05:03,020 --> 00:05:07,770 Takže teď, že máme to, pojďme o krok dál a najít vzor. 92 00:05:07,770 --> 00:05:10,170 >> Tak jsem chtěl říct, protože Zájem o tento příklad, 93 00:05:10,170 --> 00:05:12,480 máme co do činění s výškou 8. 94 00:05:12,480 --> 00:05:17,100 První řádek bude mít dva hash, který následuje sedm mezery. 95 00:05:17,100 --> 00:05:20,020 Tyto second-- Tři hashe, šest prostory. 96 00:05:20,020 --> 00:05:24,260 Třetí row-- čtyři, pět hash spaces-- tak dále a tak dále 97 00:05:24,260 --> 00:05:26,350 až se dostaneme do n-tého řádku. 98 00:05:26,350 --> 00:05:31,540 Tak jsem vás požádat o n-tého řádku kolik hashes budeme mít 99 00:05:31,540 --> 00:05:33,120 a kolik míst? 100 00:05:33,120 --> 00:05:37,000 Takže je to jen na vás přijít na to, Vzorec pro reprezentaci, kolik hashe 101 00:05:37,000 --> 00:05:42,020 a kolik prostory jsou potřebné pro n-té řádky, pokud máte nějakou výšku. 102 00:05:42,020 --> 00:05:46,060 >> Nyní, když jste přijít na to, dávat pozor, jak jste indexování. 103 00:05:46,060 --> 00:05:49,170 Co tím chci říct je to, že v každodenním životě nás všech 104 00:05:49,170 --> 00:05:51,540 začít počítat, obvykle o 1. 105 00:05:51,540 --> 00:05:55,950 Ale v CS50 a ve vědě o počítačích Obecně platí, že jsou indexovány 0. 106 00:05:55,950 --> 00:06:00,620 Takže první řádek bude n 0, na rozdíl od 1. 107 00:06:00,620 --> 00:06:04,550 Dávejte pozor na to, když jste se snaží zjistit svou masku. 108 00:06:04,550 --> 00:06:07,570 Takže teď se vraťme k tomu, jak budeme kreslit naší pyramidy. 109 00:06:07,570 --> 00:06:12,300 Pro každý řádek, budeme chtít vytisknout mezery, vytiskněte hodnoty hash, 110 00:06:12,300 --> 00:06:14,050 a vytisknout nový řádek. 111 00:06:14,050 --> 00:06:19,160 Náznak je zde Slovo "pro" každý řádek. 112 00:06:19,160 --> 00:06:21,470 V C, máme konstrukt volal pro smyčce, 113 00:06:21,470 --> 00:06:25,250 který se skládá z inicializace, podmínka, aktualizace, 114 00:06:25,250 --> 00:06:26,790 a tělo smyčky. 115 00:06:26,790 --> 00:06:31,360 >> Řekněme, že jsem chtěl říci, ahoj world, 50 krát, můj pro smyčce 116 00:06:31,360 --> 00:06:32,880 bude vypadat nějak takhle. 117 00:06:32,880 --> 00:06:35,480 I inicializovat moje číslo do 0 ° C. 118 00:06:35,480 --> 00:06:38,230 Podmínkou je, že je menší než 50 ° C. 119 00:06:38,230 --> 00:06:42,350 A pak moje aktualizace je prostě zvyšování I po druhém pokaždé. 120 00:06:42,350 --> 00:06:45,140 Můžeme také použít pro smyček iterovat nad věcí. 121 00:06:45,140 --> 00:06:47,820 Všimněte si, jak my ne pevný kódované číslo, 122 00:06:47,820 --> 00:06:51,820 ale umístil proměnnou Výška místo do stavu. 123 00:06:51,820 --> 00:06:56,420 Takže to, co tu dělám je, že jsem iterace přes každou řadu pyramidy. 124 00:06:56,420 --> 00:07:00,160 Mohu udělat něco pro každého řádek uvnitř těla mého smyčky. 125 00:07:00,160 --> 00:07:02,350 >> Co budeme dělat dovnitř tělo smyčky? 126 00:07:02,350 --> 00:07:07,120 No, jak jsme již uvedli, jsme tisk prostory a my jsme tisku hashe 127 00:07:07,120 --> 00:07:09,480 a my jsme tisku nový řádek. 128 00:07:09,480 --> 00:07:11,950 Takže moje vnější pro smyčce bude vypadat takto. 129 00:07:11,950 --> 00:07:15,070 I iteraci přes každý řádek pyramidy, použitím 130 00:07:15,070 --> 00:07:18,890 v tomto případě, jak je proměnná výška který ukládá výšku pyramidy. 131 00:07:18,890 --> 00:07:22,870 Uvnitř těla té smyčky, jsem bude opakovaně tisknout mezery, tisk 132 00:07:22,870 --> 00:07:26,730 hodnoty hash opakovaně, a vytisknout nový řádek. 133 00:07:26,730 --> 00:07:31,010 >> Takže teď, s použitím všech pojmů, které Mluvil jsem o této průchozích, 134 00:07:31,010 --> 00:07:35,210 byste měli být schopni přiměje Uživatel pro vstup, potvrdit, že vstup, 135 00:07:35,210 --> 00:07:37,370 a pak nakreslit polovinu pyramidy. 136 00:07:37,370 --> 00:07:41,510 >> Jmenuji se Zamyla, a to je CS50. 137 00:07:41,510 --> 00:07:43,167