1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA Chan: Ez egy nekem, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Ma Mario, mi lesz rajz a fele piramis Mario 4 00:00:06,910 --> 00:00:08,290 felmászni. 5 00:00:08,290 --> 00:00:11,570 >> Tehát beszéljünk a to-do által erre a problémára. 6 00:00:11,570 --> 00:00:13,610 Megyünk akar azonnali és érvényesítse 7 00:00:13,610 --> 00:00:18,290 A felhasználó egy érvényes bemeneti hogyan magas akarnak Mario piramis lenni. 8 00:00:18,290 --> 00:00:20,090 Aztán megyünk rajzolni. 9 00:00:20,090 --> 00:00:24,870 Szóval térjünk kezdődött megkérdezése és érvényesítése a felhasználó számára a bemenet. 10 00:00:24,870 --> 00:00:27,640 >> Tudjuk kihasználni a CS50 Könyvtár funkció 11 00:00:27,640 --> 00:00:31,160 kap int, amely biztosítja, hogy a A felhasználó ezt egész. 12 00:00:31,160 --> 00:00:35,730 Bármilyen pozitív egész szám, negatív egészek, 0 szám minden tisztességes játék. 13 00:00:35,730 --> 00:00:41,670 Ellenkező esetben a felhasználó a program kérni fogja újra, amíg nem adja meg az érvényes egész. 14 00:00:41,670 --> 00:00:44,210 Most ugyan get int csinál sok a munka számunkra 15 00:00:44,210 --> 00:00:46,730 annak biztosításában, hogy a felhasználói ad nekünk egy egész, 16 00:00:46,730 --> 00:00:50,760 mi kell még alkalmazni néhány további korlátozásokat, hogy. 17 00:00:50,760 --> 00:00:56,420 Elvégre nem lehet Mario hegymászó fél piramis magassága negatív 12. 18 00:00:56,420 --> 00:00:59,040 >> Ezen felül, a probléma specifikáció 19 00:00:59,040 --> 00:01:02,490 azt mondja, hogy csak akkor tudjuk hogy Mario mászni 20 00:01:02,490 --> 00:01:06,940 piramis magasságát 0 és 23 között. 21 00:01:06,940 --> 00:01:11,120 OK, így ez azt jelenti, hogy meg kell folyamatosan figyelmezteti a felhasználót 22 00:01:11,120 --> 00:01:14,320 hogy nekünk egy érvényes szám, és csak tovább 23 00:01:14,320 --> 00:01:17,120 egyszer már adott nekünk egy érvényes magasságát. 24 00:01:17,120 --> 00:01:18,720 Hogyan csináljuk? 25 00:01:18,720 --> 00:01:23,760 >> Nos, folyamatos eljárások nekünk az ötlet, hogy valami loops-- 26 00:01:23,760 --> 00:01:24,720 ismétlődően. 27 00:01:24,720 --> 00:01:28,220 Egy hurok C egy darabig hurok, hogy folyamatosan 28 00:01:28,220 --> 00:01:33,480 végre a test a hurok, amíg az adott betegség értéke igaz. 29 00:01:33,480 --> 00:01:36,200 Amint ez a feltétel értéke hamis, 30 00:01:36,200 --> 00:01:39,770 A program folytassa bármi is jön utána. 31 00:01:39,770 --> 00:01:43,180 Tehát míg a hurok egyik módja biztosítva, hogy folyamatosan 32 00:01:43,180 --> 00:01:45,320 kéri a felhasználó érvényes bemenet. 33 00:01:45,320 --> 00:01:50,070 És ha egyszer nekünk egy érvényes bemenet, akkor folytassa bármi is jön a következő. 34 00:01:50,070 --> 00:01:54,380 Tudjuk, hogy mi fog kérni A felhasználó a bemeneti legalább egyszer. 35 00:01:54,380 --> 00:01:59,200 Tehát most jön a testvére a while ciklus, amely a do while ciklus. 36 00:01:59,200 --> 00:02:02,650 >> Tedd while végrehajtja a a hurok teste legalább egyszer. 37 00:02:02,650 --> 00:02:06,150 Tehát anélkül, állapotának ellenőrzésére, akkor végrehajtja a hurok teste. 38 00:02:06,150 --> 00:02:09,750 Majd ellenőrizze az állapotát, hogy hogy mire kell ismételni önmagát. 39 00:02:09,750 --> 00:02:13,080 Ez hasznos lehet, ha mi érvényesítése felhasználói. 40 00:02:13,080 --> 00:02:15,830 Tudjuk, hogy megyünk kérni őket, legalább egyszer. 41 00:02:15,830 --> 00:02:18,780 Tehát a do while ciklus talán valahogy így néz ki. 42 00:02:18,780 --> 00:02:20,090 Van egy n egész. 43 00:02:20,090 --> 00:02:22,760 És azon belül a do while ciklus, azonnal 44 00:02:22,760 --> 00:02:24,750 kérnek a felhasználótól egy egész szám. 45 00:02:24,750 --> 00:02:29,740 Ha n érvénytelen, akkor mi készteti újra és újra és újra, amíg nem 46 00:02:29,740 --> 00:02:31,820 nekünk, hogy érvényes egész. 47 00:02:31,820 --> 00:02:37,440 Végül, ha n érvényes bemenet választja, akkor folytassa a többi programunk. 48 00:02:37,440 --> 00:02:41,830 >> Akkor menjünk vissza a spec és ellenőrzés milyenek a körülmények egy érvényes bemeneti 49 00:02:41,830 --> 00:02:43,670 lesz. 50 00:02:43,670 --> 00:02:48,090 Az érvényes magasságok fognak lehet 0 és 23 között, a befogadó. 51 00:02:48,090 --> 00:02:53,350 Így érvénytelen magasságban fognak lehet kevesebb, mint 0, vagy több mint 23. 52 00:02:53,350 --> 00:02:56,420 Úgy emlékszem, hogy tervezzen Ön állapotát gondosan, 53 00:02:56,420 --> 00:02:58,660 tudva, hogy a feltétel a do while ciklus 54 00:02:58,660 --> 00:03:01,470 legyen, míg n érvénytelen. 55 00:03:01,470 --> 00:03:05,080 Most ez nem lesz egyszerû logikai kifejezés. 56 00:03:05,080 --> 00:03:07,630 Mi lesz, hogy összekapcsolják Két különböző kifejezéseket 57 00:03:07,630 --> 00:03:09,900 hogy az egész állapotban. 58 00:03:09,900 --> 00:03:13,290 >> Tehát lássuk csak nézd meg a igazságtáblázatot voltam Már megadtam a célzást, hogy mi vagyunk 59 00:03:13,290 --> 00:03:15,200 fog foglalkozni két Logikai. 60 00:03:15,200 --> 00:03:19,620 Tehát itt egy igazság táblázatot, ahol Van két Booleans-- Boole az 1. és 2.. 61 00:03:19,620 --> 00:03:27,050 Tehát megvan a lehetőség, hogy értékelje bool1 és bool2 vagy bool1 vagy bool2. 62 00:03:27,050 --> 00:03:31,980 És csak akkor lesz igaz, ha mindkét Logikai adattípus vizsgálata igaz, mivel minden 63 00:03:31,980 --> 00:03:37,280 vagy igaz lesz, amíg az egyik A két Logikai értéke igaz. 64 00:03:37,280 --> 00:03:41,450 OK, így egy pillanatra, szüneteltetéséhez video és megemészteni ezt az igazságot asztalra. 65 00:03:41,450 --> 00:03:42,930 Hamarosan itt vár. 66 00:03:42,930 --> 00:03:45,760 Ha visszajössz, lásd ha lehet összerakni 67 00:03:45,760 --> 00:03:51,910 a logikai kifejezés a feltétele n egy érvénytelen bemenet. 68 00:03:51,910 --> 00:03:54,420 >> Tehát most, hogy van érvényes felhasználói bemenet, nézzük 69 00:03:54,420 --> 00:03:58,710 megy előre, és beszélni, hogyan esetleg felhívni a fele piramis. 70 00:03:58,710 --> 00:04:03,410 Itt ebben az egyszerű szövegszerkesztő, Már húzott balra igazított piramis. 71 00:04:03,410 --> 00:04:07,050 De tudjuk, hogy szükségünk van a piramis kell jobbra igazítva. 72 00:04:07,050 --> 00:04:08,650 Tehát hogyan lehet ezt megtenni? 73 00:04:08,650 --> 00:04:11,440 Nos, talán próbálja nyomni mindent az oldalról 74 00:04:11,440 --> 00:04:14,880 módon putting egy kicsit karakter között. 75 00:04:14,880 --> 00:04:16,779 És akkor, a következő vonal, megyek, hogy 76 00:04:16,779 --> 00:04:20,970 néhány karakter tolja végig, és further-- így tovább és így forth-- 77 00:04:20,970 --> 00:04:23,360 amíg én a jobbra igazítva piramis. 78 00:04:23,360 --> 00:04:27,780 Tehát van egy jobbra igazított piramis, de nem úgy néz ki, így nagy a pontok. 79 00:04:27,780 --> 00:04:30,680 De még mindig szeretnénk azt állítják, hogy szép távolság. 80 00:04:30,680 --> 00:04:35,260 Így fogok szó beszúrni egy szóközt. 81 00:04:35,260 --> 00:04:39,420 >> Ahelyett, hogy három pont, én tesz egy, kettő, három terek. 82 00:04:39,420 --> 00:04:40,370 A második sorban. 83 00:04:40,370 --> 00:04:42,640 Teszek egy, kettő terek. 84 00:04:42,640 --> 00:04:45,370 És az utolsó előtti vonal, csak egy helyet. 85 00:04:45,370 --> 00:04:48,290 És itt van egy jobbra igazított piramis. 86 00:04:48,290 --> 00:04:52,170 Csinál a példa a szövegben szerkesztő, van egy ötletem a minta 87 00:04:52,170 --> 00:04:54,590 hogy fel fogjuk használni, hogy felhívja a fele piramis. 88 00:04:54,590 --> 00:04:58,080 Minden sorban, hogy mit tettünk A mi be is terek, 89 00:04:58,080 --> 00:05:00,170 majd gépelt néhány hash, majd gépelt 90 00:05:00,170 --> 00:05:03,020 az Enter billentyűt, amely teremt egy új sort. 91 00:05:03,020 --> 00:05:07,770 Tehát most, hogy van, hogy menjünk egy lépéssel tovább, és talál egy mintát. 92 00:05:07,770 --> 00:05:10,170 >> Így fogok mondani, az ennek érdekében például 93 00:05:10,170 --> 00:05:12,480 dolgunk magassága 8. 94 00:05:12,480 --> 00:05:17,100 Az első sorban megy, hogy két hash, hogy a következő hét szünetet. 95 00:05:17,100 --> 00:05:20,020 A second-- három hash hat terek. 96 00:05:20,020 --> 00:05:24,260 Harmadik row-- négy hash öt spaces-- így tovább és így tovább 97 00:05:24,260 --> 00:05:26,350 amíg eljutunk a NTH sor. 98 00:05:26,350 --> 00:05:31,540 Tehát, kérem, az NTH sor, hány hash megyünk, hogy 99 00:05:31,540 --> 00:05:33,120 és hány mezőt? 100 00:05:33,120 --> 00:05:37,000 Tehát ez rajtad múlik, hogy kitaláljuk, képletet mutatják, hogy hány hash 101 00:05:37,000 --> 00:05:42,020 és hány terek van szükség Az n-edik sorig, ha van egy kis magasságot. 102 00:05:42,020 --> 00:05:46,060 >> Most, amikor kitalálni ezt ki, legyen óvatos, hogyan éppen feltérképezett. 103 00:05:46,060 --> 00:05:49,170 Mit értek ez, hogy a mindennapi életben mindannyian 104 00:05:49,170 --> 00:05:51,540 elkezdi mérni, általában 1. 105 00:05:51,540 --> 00:05:55,950 De CS50 és számítástechnika Általában 0 indexelt. 106 00:05:55,950 --> 00:06:00,620 Tehát az első sorban lenne n 0, szemben az 1. 107 00:06:00,620 --> 00:06:04,550 Legyen óvatos az e amikor megpróbálja kitalálni a mintát. 108 00:06:04,550 --> 00:06:07,570 Tehát most menjünk vissza, hogy fogunk felhívni a piramis. 109 00:06:07,570 --> 00:06:12,300 Minden sorban, megyünk akar nyomtassa ki a terek, nyomtassa ki a hash 110 00:06:12,300 --> 00:06:14,050 majd nyomtasson egy új sort. 111 00:06:14,050 --> 00:06:19,160 A célzás itt a szó "a" minden sorban. 112 00:06:19,160 --> 00:06:21,470 A C-ben van egy konstrukciót hívják a hurok, 113 00:06:21,470 --> 00:06:25,250 amely áll egy inicializálás, a feltétel, egy frissítést, 114 00:06:25,250 --> 00:06:26,790 és a test a hurok. 115 00:06:26,790 --> 00:06:31,360 >> Mondjuk én akartam mondani, helló világ, 50-szer, a hurok 116 00:06:31,360 --> 00:06:32,880 valahogy így néz ki ez. 117 00:06:32,880 --> 00:06:35,480 Azt inicializálni én egész 0-ra. 118 00:06:35,480 --> 00:06:38,230 A feltétel az, hogy I kisebb, mint 50. 119 00:06:38,230 --> 00:06:42,350 Aztán a frissítés csak megnő én egy minden alkalommal. 120 00:06:42,350 --> 00:06:45,140 Mi is használjuk a hurok iterációkhoz át a dolgokat. 121 00:06:45,140 --> 00:06:47,820 Figyelje meg, hogyan mi nem nehéz kódolni egy számot, 122 00:06:47,820 --> 00:06:51,820 hanem helyezte a változó magasság helyett a feltételt. 123 00:06:51,820 --> 00:06:56,420 Tehát mit csinálok itt én ismételve mint minden sorban a piramis. 124 00:06:56,420 --> 00:07:00,160 Tudok tenni valamit az egyes sorban a testben az én hurok. 125 00:07:00,160 --> 00:07:02,350 >> Mit csinálunk belül a test a hurok? 126 00:07:02,350 --> 00:07:07,120 Nos, mint már mondtuk, nyomtatáshoz terek és mi nyomtatás hash 127 00:07:07,120 --> 00:07:09,480 és mi nyomtat egy új sort. 128 00:07:09,480 --> 00:07:11,950 Tehát a külső hurok így fog kinézni. 129 00:07:11,950 --> 00:07:15,070 Azt végighaladni minden sorban A piramis segítségével, 130 00:07:15,070 --> 00:07:18,890 Ebben az esetben a magasságban, mint a változó amely tárolja a magassága a piramis. 131 00:07:18,890 --> 00:07:22,870 Testében, hogy hurok vagyok nyomdába kerülés terek többször, nyomtatás 132 00:07:22,870 --> 00:07:26,730 A hash többször, majd nyomtasson egy új sort. 133 00:07:26,730 --> 00:07:31,010 >> Tehát most, felhasználva a fogalmak Már beszéltem ebben séta-át, 134 00:07:31,010 --> 00:07:35,210 képesnek kell lennie arra, hogy jelezzen a felhasználó bemenet, megerősíti, hogy a bemenet, 135 00:07:35,210 --> 00:07:37,370 majd felhívni a fele piramis. 136 00:07:37,370 --> 00:07:41,510 >> A nevem Zamyla, és ez CS50. 137 00:07:41,510 --> 00:07:43,167