1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: Það er ég, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Í dag í Mario, við erum að fara að vera teikna hálfa pýramída fyrir Mario 4 00:00:06,910 --> 00:00:08,290 að klifra upp. 5 00:00:08,290 --> 00:00:11,570 >> Svo skulum við tala um okkar til að gera er fyrir þessu vandamáli. 6 00:00:11,570 --> 00:00:13,610 Við erum að fara að vilja að hvetja og sannreyna 7 00:00:13,610 --> 00:00:18,290 notandi til gilt inntak hvernig hátt þeir vilja pýramída Mario að vera. 8 00:00:18,290 --> 00:00:20,090 Og þá erum við að fara að draga það. 9 00:00:20,090 --> 00:00:24,870 Svo skulum byrja með innblæstri staðfesta notandann inntak þeirra. 10 00:00:24,870 --> 00:00:27,640 >> Við getum nýta sér CS50 bókasafn virka 11 00:00:27,640 --> 00:00:31,160 fá int sem mun tryggja að notandi inntak heiltala. 12 00:00:31,160 --> 00:00:35,730 Allar jákvæðar heiltölur, neikvæð heiltölur, fjöldi 0 eru allir sanngjarn leikur. 13 00:00:35,730 --> 00:00:41,670 Annars mun notandinn beðinn um að reyna aftur fyrr en þeir inntak gild heiltölu. 14 00:00:41,670 --> 00:00:44,210 Nú þó Fá INT virkar a einhver fjöldi af vinna fyrir okkur 15 00:00:44,210 --> 00:00:46,730 við að tryggja að Notandinn gefur okkur heiltölu, 16 00:00:46,730 --> 00:00:50,760 við þurfum samt að beita sumir fleiri hömlur á það. 17 00:00:50,760 --> 00:00:56,420 Eftir allt saman, getum við ekki Mario klifra helmingur pýramída af hæð neikvæð 12. 18 00:00:56,420 --> 00:00:59,040 >> Til viðbótar við þessi, vandamálið forskrift 19 00:00:59,040 --> 00:01:02,490 segir að við getum aðeins leyfa Mario að klifra 20 00:01:02,490 --> 00:01:06,940 pýramída af hæð á milli 0 og 23. 21 00:01:06,940 --> 00:01:11,120 OK, svo það þýðir að við þurfum að stöðugt hvetja notandann 22 00:01:11,120 --> 00:01:14,320 að gefa okkur gilt númer og aðeins halda áfram 23 00:01:14,320 --> 00:01:17,120 þegar þeir eru búnir að gefa okkur gilt hæð. 24 00:01:17,120 --> 00:01:18,720 Hvernig gerum við það? 25 00:01:18,720 --> 00:01:23,760 >> Jæja, gefa samfellt ferli okkur hugmyndin um loops-- gera eitthvað 26 00:01:23,760 --> 00:01:24,720 sífellu. 27 00:01:24,720 --> 00:01:28,220 Ein lykkja í C sem stund lykkja sem verður stöðugt 28 00:01:28,220 --> 00:01:33,480 framkvæma í meginmál lykkju svo lengi sem sem gefið skilyrðið metur að sanna. 29 00:01:33,480 --> 00:01:36,200 Um leið og því ástandi metur að rangar, 30 00:01:36,200 --> 00:01:39,770 forritið mun halda áfram að hvað kemur eftir það. 31 00:01:39,770 --> 00:01:43,180 Svo á meðan lykkjur eru ein leið til að tryggja að við stöðugt 32 00:01:43,180 --> 00:01:45,320 hvetja notandann til gilt inntak. 33 00:01:45,320 --> 00:01:50,070 Og þegar þeir gefa okkur gilt inntak, Við munum halda áfram til hvað kemur næst. 34 00:01:50,070 --> 00:01:54,380 Við vitum að við erum að fara að spyrja sem notandinn fyrir inntak minnsta kosti einu sinni. 35 00:01:54,380 --> 00:01:59,200 Svo nú erum við að koma til systur af meðan lykkja, sem er að gera á meðan lykkja. 36 00:01:59,200 --> 00:02:02,650 >> Gera á meðan lykkjur mun framkvæma meginmál lykkju að minnsta kosti einu sinni. 37 00:02:02,650 --> 00:02:06,150 Svo án þess að athuga ástand, það mun framkvæma líkama lykkju. 38 00:02:06,150 --> 00:02:09,750 Og þá athuga ástand til að sjá hvort sem það þarf að endurtaka sig. 39 00:02:09,750 --> 00:02:13,080 Þetta kemur sér vel þegar við erum staðfesta notandi inntak. 40 00:02:13,080 --> 00:02:15,830 Við vitum að við erum að fara að spyrja þá að minnsta kosti einu sinni. 41 00:02:15,830 --> 00:02:18,780 Svo do while lykkju gæti líta eitthvað eins og this. 42 00:02:18,780 --> 00:02:20,090 Við höfum heiltölu n. 43 00:02:20,090 --> 00:02:22,760 Og inni í gera while lykkju, við strax 44 00:02:22,760 --> 00:02:24,750 hvetja notandann til heiltala. 45 00:02:24,750 --> 00:02:29,740 Ef n er ógildur, þá munum við hvetja þá aftur og aftur og aftur þangað til þeir 46 00:02:29,740 --> 00:02:31,820 gefa okkur að gilda heiltölu. 47 00:02:31,820 --> 00:02:37,440 Að lokum, þegar n er gild inntak, munum við halda áfram til the hvíla af áætlun okkar. 48 00:02:37,440 --> 00:02:41,830 >> Svo við skulum fara aftur til sérstakur og stöðva hvað skilyrði fyrir gildri inntak 49 00:02:41,830 --> 00:02:43,670 er að fara til vera. 50 00:02:43,670 --> 00:02:48,090 Gild hæð eru að fara að vera á milli 0 og 23, að báðum meðtöldum. 51 00:02:48,090 --> 00:02:53,350 Svo ógildir hæðum eru að fara að vera minna en 0 eða fleiri en 23. 52 00:02:53,350 --> 00:02:56,420 Svo muna að hanna ástand þitt vandlega, 53 00:02:56,420 --> 00:02:58,660 vitandi að ástand fyrir að gera á meðan lykkja 54 00:02:58,660 --> 00:03:01,470 ætti að vera á meðan n er ógilt. 55 00:03:01,470 --> 00:03:05,080 Nú er þetta ekki að fara að vera Einföld einn Boolean tjáningu. 56 00:03:05,080 --> 00:03:07,630 Við erum að fara að þurfa að sameina tvær mismunandi orðasambönd 57 00:03:07,630 --> 00:03:09,900 að gera allt ástand okkar. 58 00:03:09,900 --> 00:03:13,290 >> Svo skulum bara líta á sannleiksumsagnar borð sem ég hef þegar gefið þér vísbendingu um að við erum 59 00:03:13,290 --> 00:03:15,200 að fara að takast á við tvær Booleans. 60 00:03:15,200 --> 00:03:19,620 Svo er hér sannleikurinn borð þar sem ég hafa tvær Booleans-- Boolean 1 og 2. 61 00:03:19,620 --> 00:03:27,050 Þannig að við höfum möguleika á að meta bool1 og bool2 eða bool1 eða bool2. 62 00:03:27,050 --> 00:03:31,980 Og mun aðeins vera satt ef bæði Booleans meta satt, en allt 63 00:03:31,980 --> 00:03:37,280 eða mun vera satt svo lengi sem einn af tveir Booleans metur að sanna. 64 00:03:37,280 --> 00:03:41,450 OK, svo taka a augnablik, gera hlé á þessu vídeó og melta þennan sannleika töflu. 65 00:03:41,450 --> 00:03:42,930 Ég kem hérna að bíða eftir. 66 00:03:42,930 --> 00:03:45,760 Þegar þú kemur til baka, sjá ef þú getur stykki saman 67 00:03:45,760 --> 00:03:51,910 a Boole-segð fyrir þinn ástand n vera ógild inntak. 68 00:03:51,910 --> 00:03:54,420 >> Svo nú er að við höfum gildi notandi inntak, við skulum 69 00:03:54,420 --> 00:03:58,710 fara á undan og tala um hvernig við gæti draga hálfa pýramída. 70 00:03:58,710 --> 00:04:03,410 Hér í þessari einföldu texta ritstjóri, Ég hef dregið vinstri takt pýramída. 71 00:04:03,410 --> 00:04:07,050 En við vitum að við þurfum okkar pýramída til að rétt takt. 72 00:04:07,050 --> 00:04:08,650 Svo hvernig gæti ég gert þetta? 73 00:04:08,650 --> 00:04:11,440 Jæja, ég gæti reynt að ýta allt til hliðar 74 00:04:11,440 --> 00:04:14,880 bara með því að setja smá tákni á milli. 75 00:04:14,880 --> 00:04:16,779 Og þá, fyrir næsta lína, ég ætla að setja 76 00:04:16,779 --> 00:04:20,970 sumir fleiri stafir að ýta því eftir, og further-- svo framvegis og svo forth-- 77 00:04:20,970 --> 00:04:23,360 þangað til ég hef rétt takt pýramída. 78 00:04:23,360 --> 00:04:27,780 Þannig að við höfum rétt align pýramída, en það lítur ekki svo mikill með punkta. 79 00:04:27,780 --> 00:04:30,680 En við viljum samt að halda því gott bil. 80 00:04:30,680 --> 00:04:35,260 Þannig að ég ætla að bókstaflega setja nokkrar rými. 81 00:04:35,260 --> 00:04:39,420 >> Í stað þess að þremur punktum, ég ætla setja einn, tveir, þrír rými. 82 00:04:39,420 --> 00:04:40,370 Á annarri línu. 83 00:04:40,370 --> 00:04:42,640 Ég ætla að setja eitt, tvö rými. 84 00:04:42,640 --> 00:04:45,370 Og á penultimate lína, bara eitt bil. 85 00:04:45,370 --> 00:04:48,290 Og hér er ég með rétt takt pýramída. 86 00:04:48,290 --> 00:04:52,170 Frá aðgerð dæmi í textanum ritstjóri, höfum við hugmynd um mynstur 87 00:04:52,170 --> 00:04:54,590 sem við munum nota til að draga hálfa pýramída. 88 00:04:54,590 --> 00:04:58,080 Fyrir hverri umf, hvað við gerðum er við gerð nokkur rými, 89 00:04:58,080 --> 00:05:00,170 og síðan slegið nokkur kjötkássa, og þá tegund 90 00:05:00,170 --> 00:05:03,020 á Enter takkann, sem er að búa til nýja línu. 91 00:05:03,020 --> 00:05:07,770 Svo nú er að við höfum það, við skulum fara einu skrefi lengra og finna mynstur. 92 00:05:07,770 --> 00:05:10,170 >> Þannig að ég ætla að segja, fyrir áhugi á þessu dæmi, 93 00:05:10,170 --> 00:05:12,480 við erum að fást við hæð 8. 94 00:05:12,480 --> 00:05:17,100 Það fyrsta röðin er að fara að hafa tvo kjötkássa sem fylgir sjö rými. 95 00:05:17,100 --> 00:05:20,020 The second-- þrjú kjötkássa, sex rými. 96 00:05:20,020 --> 00:05:24,260 Þriðja row-- fjögur kjötkássa, fimm spaces-- svo framvegis og svo framvegis 97 00:05:24,260 --> 00:05:26,350 þar til við komum til nth röð. 98 00:05:26,350 --> 00:05:31,540 Svo þá spyr ég ykkur um tu röð, hversu margir kjötkássa við erum að fara að hafa 99 00:05:31,540 --> 00:05:33,120 og hversu margir eru? 100 00:05:33,120 --> 00:05:37,000 Svo það er komið að þér að reikna út Formúlan til að tákna hversu marga kjötkássa 101 00:05:37,000 --> 00:05:42,020 og hversu margir eru þarf að sem NTH röð þegar þú hefur einhverja hæð. 102 00:05:42,020 --> 00:05:46,060 >> Nú þegar þú ert vangaveltur þetta út, vera varkár hvernig þú ætlar að flokkun. 103 00:05:46,060 --> 00:05:49,170 Það sem ég meina með þessu er að í daglegu lífi okkur öllum 104 00:05:49,170 --> 00:05:51,540 byrja að telja, yfirleitt um 1. 105 00:05:51,540 --> 00:05:55,950 En í CS50 og í tölvunarfræði almennt, við erum 0 verðtryggð. 106 00:05:55,950 --> 00:06:00,620 Svo það fyrsta röðin væri n af 0 öfugt við 1. 107 00:06:00,620 --> 00:06:04,550 Verið varkár um þetta þegar þú ert að reyna að reikna út mynstrið þitt. 108 00:06:04,550 --> 00:06:07,570 Svo nú skulum fara aftur til hvernig við erum að fara að teikna pýramída okkar. 109 00:06:07,570 --> 00:06:12,300 Fyrir hverri umf, við erum að fara til að vilja prenta rými, prenta kjötkássa, 110 00:06:12,300 --> 00:06:14,050 og þá prenta nýja línu. 111 00:06:14,050 --> 00:06:19,160 Vísbending hér er Orðið "fyrir" hverri umf. 112 00:06:19,160 --> 00:06:21,470 Í C, höfum við reisa kallað for lykkju, 113 00:06:21,470 --> 00:06:25,250 sem er samsett úr merkinu frumstilling, ástand, uppfærsla, 114 00:06:25,250 --> 00:06:26,790 og líkama lykkju. 115 00:06:26,790 --> 00:06:31,360 >> Segja að ég vildi segja, halló Heimurinn, 50 sinnum, mínar fyrir lykkju 116 00:06:31,360 --> 00:06:32,880 myndi líta eitthvað eins og this. 117 00:06:32,880 --> 00:06:35,480 Ég frumstilla tölu mitt til 0. 118 00:06:35,480 --> 00:06:38,230 Skilyrði er að ég er minna en 50. 119 00:06:38,230 --> 00:06:42,350 Og þá er bara uppfærsla minn incrementing I í einu í hvert skipti. 120 00:06:42,350 --> 00:06:45,140 Við getum líka notað fyrir lykkjur að iterate yfir hlutum. 121 00:06:45,140 --> 00:06:47,820 Tilkynning hér hvernig við höfum ekki harður dulmáli númer, 122 00:06:47,820 --> 00:06:51,820 heldur sett breytu Hæð í staðinn inn ástandi. 123 00:06:51,820 --> 00:06:56,420 Svo það sem ég er að gera hér er ég iterating yfir í hverri umf frá pýramída. 124 00:06:56,420 --> 00:07:00,160 Ég get gert eitthvað fyrir hverja róa inni í líkama lykkju míns. 125 00:07:00,160 --> 00:07:02,350 >> Hvað erum við að gera inni líkami lykkju? 126 00:07:02,350 --> 00:07:07,120 Jæja, eins og ég sagði þegar, við erum prentun rými og við erum prentun kjötkássa 127 00:07:07,120 --> 00:07:09,480 og við erum að prenta nýja línu. 128 00:07:09,480 --> 00:07:11,950 Svo ytri mín fyrir lykkju mun líta svona út. 129 00:07:11,950 --> 00:07:15,070 Ég kunnugt um hverja umf pýramída, nota, 130 00:07:15,070 --> 00:07:18,890 í þessu tilfelli, hæð og breytunni sem geymir hæð pýramídans. 131 00:07:18,890 --> 00:07:22,870 Inni í líkama þess lykkju, ég er að fara að prenta rými ítrekað, prenta 132 00:07:22,870 --> 00:07:26,730 sem kjötkássa endurtekið, og þá prenta nýja línu. 133 00:07:26,730 --> 00:07:31,010 >> Svo nú, með því að nota öll hugtök sem Ég hef talað um í þessum göngutúr í gegnum, 134 00:07:31,010 --> 00:07:35,210 þú ættir að vera fær um að hvetja Notandinn fyrir hjálpina, sannprófa að inntak, 135 00:07:35,210 --> 00:07:37,370 og þá draga hálfa pýramída. 136 00:07:37,370 --> 00:07:41,510 >> Mitt nafn er Zamyla, og þetta er CS50. 137 00:07:41,510 --> 00:07:43,167