1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: To je me, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Danes v Mario, bomo lahko risanje pol piramido za Mario 4 00:00:06,910 --> 00:00:08,290 splezati. 5 00:00:08,290 --> 00:00:11,570 >> Torej, kaj je govoril o naši to-do-jev za ta problem. 6 00:00:11,570 --> 00:00:13,610 Mi smo želeli spodbudilo in potrjevanje 7 00:00:13,610 --> 00:00:18,290 uporabnik za veljaven vnos kako visoko hočejo Mario piramida biti. 8 00:00:18,290 --> 00:00:20,090 In potem, gremo, da ga pripravi. 9 00:00:20,090 --> 00:00:24,870 Torej začnimo s pozivom in validaciji uporabnika za njihov prispevek. 10 00:00:24,870 --> 00:00:27,640 >> Mi lahko izkoristijo CS50 knjižnica Funkcija 11 00:00:27,640 --> 00:00:31,160 dobili int, ki bo zagotavljal, da uporabnik vnese celo število. 12 00:00:31,160 --> 00:00:35,730 Vse pozitivna cela števila, negativna cela števila, številka 0, so vsi pošteno igro. 13 00:00:35,730 --> 00:00:41,670 V nasprotnem primeru bo uporabnik zahteval, da ponoviti, dokler oni vhod veljavno celo število. 14 00:00:41,670 --> 00:00:44,210 Zdaj čeprav get int ne Veliko dela za nas 15 00:00:44,210 --> 00:00:46,730 pri zagotavljanju, da Uporabnik nam daje celo število, 16 00:00:46,730 --> 00:00:50,760 moramo še vedno uporabljajo nekateri dodatne omejitve, da. 17 00:00:50,760 --> 00:00:56,420 Konec koncev, ne moremo imeti Mario plezanje pol piramida višine negativnega 12. 18 00:00:56,420 --> 00:00:59,040 >> Poleg tem, da je specifikacija problem 19 00:00:59,040 --> 00:01:02,490 pravi, da samo, da smo lahko omogočajo Mario plezati 20 00:01:02,490 --> 00:01:06,940 piramida višine med 0 in 23. 21 00:01:06,940 --> 00:01:11,120 OK, to pomeni, da moramo nenehno poziv uporabniku 22 00:01:11,120 --> 00:01:14,320 da nam veljavna Številka le nadaljevati 23 00:01:14,320 --> 00:01:17,120 ko nam oni dali veljavno višino. 24 00:01:17,120 --> 00:01:18,720 Kako to storimo? 25 00:01:18,720 --> 00:01:23,760 >> No, stalno procesi da nam ideja loops-- početje nečesa 26 00:01:23,760 --> 00:01:24,720 ponavlja. 27 00:01:24,720 --> 00:01:28,220 Ena zanka v C kot časa zanke, ki bo stalno 28 00:01:28,220 --> 00:01:33,480 izvršiti telo zanke dokler dane pogoj ovrednoten kot resničen. 29 00:01:33,480 --> 00:01:36,200 Takoj, ko ta pogoj neresničen, 30 00:01:36,200 --> 00:01:39,770 bo program nadaljuje kar pride po tem. 31 00:01:39,770 --> 00:01:43,180 Torej, medtem ko zanke so eden od načinov zagotavljanje, da smo nenehno 32 00:01:43,180 --> 00:01:45,320 poziv uporabniku za veljavno vhod. 33 00:01:45,320 --> 00:01:50,070 In ko nam veljavno vhod, bomo nadaljevali s kar pride zraven. 34 00:01:50,070 --> 00:01:54,380 Vemo, da bomo to ask Uporabnik za vnos vsaj enkrat. 35 00:01:54,380 --> 00:01:59,200 Zdaj smo prišli do sestra medtem ko je zanka, ki je storila, medtem ko zanke. 36 00:01:59,200 --> 00:02:02,650 >> Ali pa bo zanke izvršitev Telo zanke vsaj enkrat. 37 00:02:02,650 --> 00:02:06,150 Torej, brez preverjanja stanja, bo izvršitev telo zanke. 38 00:02:06,150 --> 00:02:09,750 In potem preverite stanje videti ali je potrebno, da se ponovi. 39 00:02:09,750 --> 00:02:13,080 To pride prav, ko smo potrditev vnos uporabnika. 40 00:02:13,080 --> 00:02:15,830 Vemo, da bomo da od njih zahteva vsaj enkrat. 41 00:02:15,830 --> 00:02:18,780 Torej naredi, medtem ko bi lahko zanka izgledal nekako takole. 42 00:02:18,780 --> 00:02:20,090 Imamo celo število n. 43 00:02:20,090 --> 00:02:22,760 In notranjost opravil medtem ko zanke, smo takoj 44 00:02:22,760 --> 00:02:24,750 poziv uporabniku za celo število. 45 00:02:24,750 --> 00:02:29,740 Če n ni veljavna, potem bomo spodbudile znova in znova in znova, dokler ne 46 00:02:29,740 --> 00:02:31,820 nam, da je veljavno celo število. 47 00:02:31,820 --> 00:02:37,440 Nazadnje, ko je n veljavna vhod, bomo nadaljuje s preostalim našega programa. 48 00:02:37,440 --> 00:02:41,830 >> Torej gremo nazaj na spec in preverjanje kar je pogoj za veljavno vhod 49 00:02:41,830 --> 00:02:43,670 se bo. 50 00:02:43,670 --> 00:02:48,090 Veljavni višine se bodo je med 0 in 23, vključujoče. 51 00:02:48,090 --> 00:02:53,350 Torej neveljavni višine se bodo biti manj kot 0 ali več kot 23. 52 00:02:53,350 --> 00:02:56,420 Torej, ne pozabite, da oblikujejo vaše stanje skrbno, 53 00:02:56,420 --> 00:02:58,660 vedoč, da je pogoj za opravila, medtem ko zanke 54 00:02:58,660 --> 00:03:01,470 mora biti, medtem ko n je neveljavna. 55 00:03:01,470 --> 00:03:05,080 Zdaj se to ne dogaja, da se preprost single Logični izraz. 56 00:03:05,080 --> 00:03:07,630 Bomo morali združiti dva različna izraza 57 00:03:07,630 --> 00:03:09,900 da bi naše celotno stanje. 58 00:03:09,900 --> 00:03:13,290 >> Torej, kaj je samo pogled na resnico mizi sem že dal namig, da smo 59 00:03:13,290 --> 00:03:15,200 dogaja, da se ukvarjajo z dvema logične vrednosti. 60 00:03:15,200 --> 00:03:19,620 Torej, tukaj je resnica miza, kjer sem imajo dve Booleans-- logično 1 in 2. 61 00:03:19,620 --> 00:03:27,050 Tako imamo možnost, da ocenijo bool1 in bool2 ali bool1 ali bool2. 62 00:03:27,050 --> 00:03:31,980 In bo le res, če tako Logične vrednosti oceni, da res, ker so vse 63 00:03:31,980 --> 00:03:37,280 ali bo res tako dolgo, kot eno izmed dva logične vrednosti ovrednoten kot resničen. 64 00:03:37,280 --> 00:03:41,450 OK, tako da bo trajalo nekaj trenutkov, pavza to video in prebaviti to resnico tabelo. 65 00:03:41,450 --> 00:03:42,930 Bom tukaj čaka. 66 00:03:42,930 --> 00:03:45,760 Ko se vrneš, si oglejte če lahko kos skupaj 67 00:03:45,760 --> 00:03:51,910 logično izraz za vaše pogoj n čemer je neveljavna vhod. 68 00:03:51,910 --> 00:03:54,420 >> Torej, zdaj, ko imamo veljaven uporabnik vložek, kaj je 69 00:03:54,420 --> 00:03:58,710 gredo naprej in govori o tem, kako lahko potegnemo pol piramido. 70 00:03:58,710 --> 00:04:03,410 Tu v tem preprostem urejevalniku besedil, Sem potegnil levo poravnana piramido. 71 00:04:03,410 --> 00:04:07,050 Toda vemo, da moramo naše piramida se desno poravnano. 72 00:04:07,050 --> 00:04:08,650 Torej, kako lahko to naredim? 73 00:04:08,650 --> 00:04:11,440 No, lahko poskusite potisnite Vse ob strani 74 00:04:11,440 --> 00:04:14,880 s samo polaganje malo znak vmes. 75 00:04:14,880 --> 00:04:16,779 In potem, za naslednji linija, bom dal 76 00:04:16,779 --> 00:04:20,970 nekaj več znakov, da ga potisnite skupaj, in further-- tako naprej in tako forth-- 77 00:04:20,970 --> 00:04:23,360 dokler ne bom imel prave usklajena piramido. 78 00:04:23,360 --> 00:04:27,780 Torej imamo pravico poravnavanje piramido, vendar ne izgleda tako velik, s pikami. 79 00:04:27,780 --> 00:04:30,680 Vendar smo še vedno želijo ohraniti to lepo razmik. 80 00:04:30,680 --> 00:04:35,260 Torej bom dobesedno vstavite nekaj prostorov. 81 00:04:35,260 --> 00:04:39,420 >> Namesto treh pik, bom dal enega, dva, tri prostore. 82 00:04:39,420 --> 00:04:40,370 V drugi vrstici. 83 00:04:40,370 --> 00:04:42,640 Bom dal enega, dva prostore. 84 00:04:42,640 --> 00:04:45,370 In na predzadnjem linija, le eno mesto. 85 00:04:45,370 --> 00:04:48,290 In tu imam pravico usklajena piramido. 86 00:04:48,290 --> 00:04:52,170 S tem primer v besedilu urednik, imamo idejo za vzorec 87 00:04:52,170 --> 00:04:54,590 da bomo uporabili za izdelavo pol piramido. 88 00:04:54,590 --> 00:04:58,080 Za vsako vrstico, kaj smo naredili se vpišemo nekaj prostorov, 89 00:04:58,080 --> 00:05:00,170 in nato vnesli nekaj hashes in nato vnesli 90 00:05:00,170 --> 00:05:03,020 tipko Enter, ki ustvarja novo linijo. 91 00:05:03,020 --> 00:05:07,770 Torej, zdaj, ko imamo, da gremo en korak naprej in najti vzorec. 92 00:05:07,770 --> 00:05:10,170 >> Tako bom povedal, za Interes tega primera, 93 00:05:10,170 --> 00:05:12,480 imamo opravka z višino 8. 94 00:05:12,480 --> 00:05:17,100 Prva vrstica se dogaja, da imajo dva hashes ki sledi sedem mest. 95 00:05:17,100 --> 00:05:20,020 V second-- tri hashes, šest prostorov. 96 00:05:20,020 --> 00:05:24,260 Tretje row-- štiri hashes, pet spaces-- tako naprej in tako naprej 97 00:05:24,260 --> 00:05:26,350 dokler ne pridemo do n-to vrstico. 98 00:05:26,350 --> 00:05:31,540 Torej, vas prosim za n-to vrstico, koliko hashes bomo imeli 99 00:05:31,540 --> 00:05:33,120 in koliko mest? 100 00:05:33,120 --> 00:05:37,000 Torej, to je do vas, da ugotovimo, Formula za zastopanje koliko hash 101 00:05:37,000 --> 00:05:42,020 in koliko mest so potrebne za n-to vrstico, če imate nekaj višine. 102 00:05:42,020 --> 00:05:46,060 >> Zdaj, ko ste poskušal tole, bodite previdni, kako ste indeksira. 103 00:05:46,060 --> 00:05:49,170 Kaj mislim s tem, da v vsakdanjem življenju vseh nas 104 00:05:49,170 --> 00:05:51,540 začnemo, običajno z 1. 105 00:05:51,540 --> 00:05:55,950 Toda v CS50 in računalništvu na splošno, smo 0 indeksirajo. 106 00:05:55,950 --> 00:06:00,620 Tako da bi bila prva vrsta biti n 0 v primerjavi z 1. 107 00:06:00,620 --> 00:06:04,550 Bodite pozorni na to, ko ste poskuša ugotoviti, svoj vzorec. 108 00:06:04,550 --> 00:06:07,570 Zdaj gremo nazaj na to, kako bomo, da pripravi svojo piramido. 109 00:06:07,570 --> 00:06:12,300 Za vsako vrsto, bomo želeli tiskanje prostore, tiskanje hash, 110 00:06:12,300 --> 00:06:14,050 in nato natisniti novo linijo. 111 00:06:14,050 --> 00:06:19,160 tukaj namig je besedo "za" vsako vrstico. 112 00:06:19,160 --> 00:06:21,470 V C imamo konstrukt imenuje za zanke, 113 00:06:21,470 --> 00:06:25,250 ki je sestavljena iz inicializacija, pogoj, posodobitev, 114 00:06:25,250 --> 00:06:26,790 in telo zanke. 115 00:06:26,790 --> 00:06:31,360 >> Povedati, da sem hotel reči, zdravo svetu, 50-krat, moj za zanko 116 00:06:31,360 --> 00:06:32,880 bi izgledala nekako takole. 117 00:06:32,880 --> 00:06:35,480 Sem inicializacijo moje celo na 0. 118 00:06:35,480 --> 00:06:38,230 Pogoj je, da sem manj kot 50. 119 00:06:38,230 --> 00:06:42,350 In potem moj update je le povečevanje I eden vsakič. 120 00:06:42,350 --> 00:06:45,140 Mi lahko uporabite tudi za zanke Ponovil nad stvarmi. 121 00:06:45,140 --> 00:06:47,820 Obvestilo tukaj, kako smo ne Težko kodirane številko, 122 00:06:47,820 --> 00:06:51,820 ampak postavi spremenljivko Višina namesto v stanju. 123 00:06:51,820 --> 00:06:56,420 Torej, kaj delam tu sem ponavljanjem nad vsako vrsto piramide. 124 00:06:56,420 --> 00:07:00,160 Jaz lahko naredim nekaj za vsak vrstica v telesu moje zanke. 125 00:07:00,160 --> 00:07:02,350 >> Kaj delamo v notranjosti telo zanke? 126 00:07:02,350 --> 00:07:07,120 No, kot smo že povedali, smo tiskanje prostori in smo tiskanje hash 127 00:07:07,120 --> 00:07:09,480 in smo tiskanje novo linijo. 128 00:07:09,480 --> 00:07:11,950 Torej moj zunanji zanko bo videti takole. 129 00:07:11,950 --> 00:07:15,070 I Ponovil nad vsako vrstico piramide, pri čemer se 130 00:07:15,070 --> 00:07:18,890 V tem primeru je višina kot spremenljivka ki shranjuje višino piramide. 131 00:07:18,890 --> 00:07:22,870 V telesu te zanke, sem tiskanjem prostore večkrat, print 132 00:07:22,870 --> 00:07:26,730 se večkrat hashes, in nato natisniti novo linijo. 133 00:07:26,730 --> 00:07:31,010 >> Torej sedaj, z uporabo vseh konceptov, ki Sem govorili v tem sprehodu skozi, 134 00:07:31,010 --> 00:07:35,210 bi morali imeti možnost, da morala spodbuditi Uporabnik za vnos, potrdi, da je prispevek, 135 00:07:35,210 --> 00:07:37,370 in nato pripravi pol piramido. 136 00:07:37,370 --> 00:07:41,510 >> Moje ime je Zamyla, in to je CS50. 137 00:07:41,510 --> 00:07:43,167