1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ЗАМИЛА цхан: То је мени, Замила. 3 00:00:02,500 --> 00:00:06,910 Данас у Марио, ми ћемо бити цртање пола пирамиде за Марио 4 00:00:06,910 --> 00:00:08,290 да се попне горе. 5 00:00:08,290 --> 00:00:11,570 >> Дакле, хајде да причамо о нашим да-до-а за овај проблем. 6 00:00:11,570 --> 00:00:13,610 Ми ћемо желети да подстакне и потврди 7 00:00:13,610 --> 00:00:18,290 корисник за важећи унос како Висок желе Марио пирамида да буде. 8 00:00:18,290 --> 00:00:20,090 А онда ћемо да га извући. 9 00:00:20,090 --> 00:00:24,870 Па хајде да почнемо са подстицања и потврђивање корисника за њихов допринос. 10 00:00:24,870 --> 00:00:27,640 >> Можемо користити карактеристику ЦС50 Библиотека Функција 11 00:00:27,640 --> 00:00:31,160 гет инт који ће обезбедити да корисник уноси цео број. 12 00:00:31,160 --> 00:00:35,730 Било позитивни цели бројеви, негативни цели бројеви, број 0 су сви фер игра. 13 00:00:35,730 --> 00:00:41,670 У супротном, корисник ће бити затражено да понови док не унесете важећи интегер. 14 00:00:41,670 --> 00:00:44,210 Сада иако гет Инт ради пуно посла за нас 15 00:00:44,210 --> 00:00:46,730 у обезбеђивању да корисник нам даје цео број, 16 00:00:46,730 --> 00:00:50,760 тек треба да примене неке додатна ограничења на то. 17 00:00:50,760 --> 00:00:56,420 На крају крајева, не можемо имати Марио пењање пола пирамида висине негативног 12. 18 00:00:56,420 --> 00:00:59,040 >> Поред тога, problem спецификација 19 00:00:59,040 --> 00:01:02,490 каже да само можемо дозволити да се попне Марио 20 00:01:02,490 --> 00:01:06,940 пирамида од висине између 0 и 23. 21 00:01:06,940 --> 00:01:11,120 У реду, а то значи да нам је потребно континуирано питати корисника 22 00:01:11,120 --> 00:01:14,320 да нам ваљан број и настави само 23 00:01:14,320 --> 00:01:17,120 Једном су нам дали важећи висину. 24 00:01:17,120 --> 00:01:18,720 Како то да урадимо? 25 00:01:18,720 --> 00:01:23,760 >> Па, континуирани процес нам дати идеја лоопс-- уради нешто 26 00:01:23,760 --> 00:01:24,720 понављаног. 27 00:01:24,720 --> 00:01:28,220 Једна петља ин Ц као време петља која ће континуирано 28 00:01:28,220 --> 00:01:33,480 извршити тело петље све док дату услов има вредност труе. 29 00:01:33,480 --> 00:01:36,200 Чим таквом стању вредност фалсе, 30 00:01:36,200 --> 00:01:39,770 програм ће наставити да што долази после тога. 31 00:01:39,770 --> 00:01:43,180 Дакле, док петље су један од начина осигуравајући да непрекидно 32 00:01:43,180 --> 00:01:45,320 питати корисника за важећи унос. 33 00:01:45,320 --> 00:01:50,070 И кад су нам валидан улаз, ми ћемо наставити да све што следи. 34 00:01:50,070 --> 00:01:54,380 Знамо да ћемо питати корисник за унос најмање једном. 35 00:01:54,380 --> 00:01:59,200 Дакле, сада долазимо до сестра док петља, која је радила док петља. 36 00:01:59,200 --> 00:02:02,650 >> До вхиле петље ће извршите тело петље барем једном. 37 00:02:02,650 --> 00:02:06,150 Дакле, без провере стања, она ће извршити тело петље. 38 00:02:06,150 --> 00:02:09,750 А затим проверите стање да види да ли је потребно да се понови. 39 00:02:09,750 --> 00:02:13,080 Ово долази до изражаја када ми потврђивање уноса корисника. 40 00:02:13,080 --> 00:02:15,830 Знамо да ћемо да их питамо бар једном. 41 00:02:15,830 --> 00:02:18,780 Тако да раде док петља могао изгледа отприлике овако. 42 00:02:18,780 --> 00:02:20,090 Имамо број н. 43 00:02:20,090 --> 00:02:22,760 И унутар До док петље, одмах смо 44 00:02:22,760 --> 00:02:24,750 питати корисника за цео број. 45 00:02:24,750 --> 00:02:29,740 Ако је н неважећа, онда ћемо их навести опет и опет и опет док не 46 00:02:29,740 --> 00:02:31,820 дај нам да важећи цео. 47 00:02:31,820 --> 00:02:37,440 Коначно, када је н важи улаз, ми ћемо наставити до краја нашег програма. 48 00:02:37,440 --> 00:02:41,830 >> Дакле, да се вратимо на спец и провере који су услови за важећи унос 49 00:02:41,830 --> 00:02:43,670 ће бити. 50 00:02:43,670 --> 00:02:48,090 Важећи висине ће бити између 0 и 23, закључно. 51 00:02:48,090 --> 00:02:53,350 Па неважећи висине ће бити мање од 0 или више од 23. 52 00:02:53,350 --> 00:02:56,420 Запамтите да дизајнирају ваше стање пажљиво, 53 00:02:56,420 --> 00:02:58,660 знајући да је стање за радити док петље 54 00:02:58,660 --> 00:03:01,470 треба да буде а н је неважећи. 55 00:03:01,470 --> 00:03:05,080 Сада то неће бити Једноставно један Булова израз. 56 00:03:05,080 --> 00:03:07,630 Ми ћемо морати да комбинују два различита израза 57 00:03:07,630 --> 00:03:09,900 да читав наше стање. 58 00:03:09,900 --> 00:03:13,290 >> Дакле, хајде да погледамо табелу истину сам Већ ти дао наслутити да смо 59 00:03:13,290 --> 00:03:15,200 ће се бавити два боолеанс. 60 00:03:15,200 --> 00:03:19,620 Дакле, овде је сто истина где сам Имам два Боолеанс-- логичку 1 и 2. 61 00:03:19,620 --> 00:03:27,050 Дакле, имамо могућност да процени боол1 и боол2 или боол1 или боол2. 62 00:03:27,050 --> 00:03:31,980 И само да ће бити истина ако обоје Боолеанс процењују да истина, а све 63 00:03:31,980 --> 00:03:37,280 или ће бити тачно докле год један од два боолеанс вредност труе. 64 00:03:37,280 --> 00:03:41,450 У реду, тако да одвојите мало времена, паузирам ово видео и варе ову табелу истину. 65 00:03:41,450 --> 00:03:42,930 Ја ћу бити овде чека. 66 00:03:42,930 --> 00:03:45,760 Када се вратио, види ако се склопе 67 00:03:45,760 --> 00:03:51,910 Логичка израз за своје стање н је инвалид улаз. 68 00:03:51,910 --> 00:03:54,420 >> Дакле, сада имамо важи корисник улаз, хајдемо 69 00:03:54,420 --> 00:03:58,710 само напред и разговарају о томе како може привући пола пирамиду. 70 00:03:58,710 --> 00:04:03,410 Овде у овом једноставном текст едитору, Ја сам нацртао лево поравнати пирамиду. 71 00:04:03,410 --> 00:04:07,050 Али ми знамо да нам је потребна наша пирамида да се десно поравнати. 72 00:04:07,050 --> 00:04:08,650 Како би ово радим? 73 00:04:08,650 --> 00:04:11,440 Па, можда покушати да прогурају све у страну 74 00:04:11,440 --> 00:04:14,880 од само стављањем мало карактер између. 75 00:04:14,880 --> 00:04:16,779 А онда, за следећи линија, ја ћу ставити 76 00:04:16,779 --> 00:04:20,970 још неколико знакова да је пусх заједно, и фуртхер-- тако даље, и тако фортх-- 77 00:04:20,970 --> 00:04:23,360 док не добијем прави поравнати пирамиду. 78 00:04:23,360 --> 00:04:27,780 Дакле, имамо прави алигн пирамиду, али то не изгледа тако велика са тачкама. 79 00:04:27,780 --> 00:04:30,680 Али ми и даље желимо да задржати тај леп размак. 80 00:04:30,680 --> 00:04:35,260 Па ћу буквално убаците неки простор. 81 00:04:35,260 --> 00:04:39,420 >> Уместо три тачке, ја ћу пут један, два, три простора. 82 00:04:39,420 --> 00:04:40,370 На другом реду. 83 00:04:40,370 --> 00:04:42,640 Ставићу један, два простора. 84 00:04:42,640 --> 00:04:45,370 И на претпоследњем линија, само један простор. 85 00:04:45,370 --> 00:04:48,290 И овде имам прави поравнати пирамиду. 86 00:04:48,290 --> 00:04:52,170 Да то пример у тексту уредник, имамо идеју за узорак 87 00:04:52,170 --> 00:04:54,590 да ћемо користити за цртање пола пирамиду. 88 00:04:54,590 --> 00:04:58,080 За сваки ред, оно што смо урадили је да унесете неке просторе, 89 00:04:58,080 --> 00:05:00,170 а затим откуца неки хешева, а затим откуца 90 00:05:00,170 --> 00:05:03,020 тастер Ентер, који ствара нову линију. 91 00:05:03,020 --> 00:05:07,770 Дакле, сада имамо да идемо један корак даље и наћи образац. 92 00:05:07,770 --> 00:05:10,170 >> Па ћу рећи, за интерес овом примеру, 93 00:05:10,170 --> 00:05:12,480 имамо посла са висине од 8. 94 00:05:12,480 --> 00:05:17,100 Први ред ће имати два хешеве да следи седам просторе. 95 00:05:17,100 --> 00:05:20,020 У секунду-- три хешеве, шест простори. 96 00:05:20,020 --> 00:05:24,260 Треће ров-- четири хешеве, пет спацес-- тако даље и тако даље 97 00:05:24,260 --> 00:05:26,350 док не дођемо до НТХ ред. 98 00:05:26,350 --> 00:05:31,540 Па онда, молим вас за н-ти ред, колико се хасхови ћемо имати 99 00:05:31,540 --> 00:05:33,120 и колико простора? 100 00:05:33,120 --> 00:05:37,000 Тако да је на вама да смислимо Формула за представљање како многе хасхес 101 00:05:37,000 --> 00:05:42,020 и колико простори су потребни за н-ти ред кад имате неку висину. 102 00:05:42,020 --> 00:05:46,060 >> Сада када сте рачунајући ово, будите пажљиви како се индексира. 103 00:05:46,060 --> 00:05:49,170 На шта мислим ово је да у свакодневном животу свих нас 104 00:05:49,170 --> 00:05:51,540 почети да броји, обично 1. 105 00:05:51,540 --> 00:05:55,950 Али у ЦС50 и рачунарских наука генерално, ми смо 0 индексирани. 106 00:05:55,950 --> 00:06:00,620 Дакле, први ред би био Н о 0 за разлику од 1. 107 00:06:00,620 --> 00:06:04,550 Пазите на то када си покушавам да схватим ваш образац. 108 00:06:04,550 --> 00:06:07,570 Дакле, хајде да се вратимо на то како ћемо скренути нашу пирамиду. 109 00:06:07,570 --> 00:06:12,300 За сваки ред, ми ћемо желети да принт просторе, принт хешеви, 110 00:06:12,300 --> 00:06:14,050 а затим штампати нову линију. 111 00:06:14,050 --> 00:06:19,160 Наговештај овде је реч "за" сваком реду. 112 00:06:19,160 --> 00:06:21,470 Ин Ц, имамо конструкт назива за петљу, 113 00:06:21,470 --> 00:06:25,250 који се састоје од иницијализација, услов, ажурирање, 114 00:06:25,250 --> 00:06:26,790 и тело петље. 115 00:06:26,790 --> 00:06:31,360 >> Да сам хтео да кажем, здраво свет, 50 пута, на период од петље 116 00:06:31,360 --> 00:06:32,880 би изгледао отприлике овако. 117 00:06:32,880 --> 00:06:35,480 Ја инитиализе мој цео на 0. 118 00:06:35,480 --> 00:06:38,230 Услов је да је мање од 50. 119 00:06:38,230 --> 00:06:42,350 А онда је мој ажурирање само инцрементинг И по један сваки пут. 120 00:06:42,350 --> 00:06:45,140 Такође могу користити за петље да прелазили преко ствари. 121 00:06:45,140 --> 00:06:47,820 Приметити овде како нисмо фиксирани број, 122 00:06:47,820 --> 00:06:51,820 већ постављени променљиве висина уместо у стање. 123 00:06:51,820 --> 00:06:56,420 Дакле, шта ја радим овде се ја итератинг у сваком реду пирамиде. 124 00:06:56,420 --> 00:07:00,160 Могу да урадим нешто за сваки ред унутар тела мог петље. 125 00:07:00,160 --> 00:07:02,350 >> Шта радимо унутра тело петље? 126 00:07:02,350 --> 00:07:07,120 Па, као што смо већ рекли, ми смо штампање простори и ми смо штампање хасхес 127 00:07:07,120 --> 00:07:09,480 и ми штампање нову линију. 128 00:07:09,480 --> 00:07:11,950 Тако да је моја спољни фор петље ће изгледати овако. 129 00:07:11,950 --> 00:07:15,070 Ја прелазили преко сваки ред пирамиде, користећи, 130 00:07:15,070 --> 00:07:18,890 у овом случају, висина као променљиву који чува висину пирамиде. 131 00:07:18,890 --> 00:07:22,870 Унутар тела тог петље, ја сам łтампања простора у више наврата, штампа 132 00:07:22,870 --> 00:07:26,730 хешеви у више наврата, а затим штампати нову линију. 133 00:07:26,730 --> 00:07:31,010 >> Тако да сада, користећи све концепте које Ја сам говорио о овим шетање кроз, 134 00:07:31,010 --> 00:07:35,210 требало би бити у стању да подстакне корисника за улаз, потврди да је улаз, 135 00:07:35,210 --> 00:07:37,370 а затим извући пола пирамиду. 136 00:07:37,370 --> 00:07:41,510 >> Моје име је Замила, а то је ЦС50. 137 00:07:41,510 --> 00:07:43,167