1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 Zamyla CHAN: Тоа е мене, Zamyla. 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 >> Па ајде да зборуваме за нашите to-do за овој проблем. 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 >> Ние може да се направи употреба на Функција CS50 библиотека 11 00:00:27,640 --> 00:00:31,160 се int која ќе се обезбеди корисникот влезови цел број. 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 Сега, иако стапите int прави многу работа за нас 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 >> Во прилог на тоа, спецификација проблем 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 >> Па, континуирани процеси ни даде идејата за loops-- прави нешто 26 00:01:23,760 --> 00:01:24,720 repetitively. 27 00:01:24,720 --> 00:01:28,220 Еден циклус во C е време циклус кој постојано ќе 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 Ние имаме цел број n. 43 00:02:20,090 --> 00:02:22,760 И во внатрешноста на do додека јамка, ние веднаш 44 00:02:22,760 --> 00:02:24,750 го извести корисникот за цел број. 45 00:02:24,750 --> 00:02:29,740 Ако n е валиден, тогаш ние ќе ги поттикне повторно и повторно и повторно се додека не 46 00:02:29,740 --> 00:02:31,820 ни даде таква валиден број. 47 00:02:31,820 --> 00:02:37,440 Конечно, откако n е валидна влез, ние ќе продолжи со остатокот од нашата програма. 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 треба да биде, а n е валиден. 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 ќе треба да се занимаваат со две Booleans. 60 00:03:15,200 --> 00:03:19,620 Значи тука е вистина маса каде што имаат две Booleans-- Булова 1 и 2. 61 00:03:19,620 --> 00:03:27,050 Значи, имаме можност да се оцени bool1 и bool2 или bool1 или bool2. 62 00:03:27,050 --> 00:03:31,980 И ќе биде само точно ако двата Booleans оценка на true, додека сите 63 00:03:31,980 --> 00:03:37,280 или ќе биде вистина се додека еден од двете Booleans е точен. 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 Булова израз за вашиот состојба на n е валиден влез. 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 некои повеќе знаци да го притисни заедно, и further-- така натаму и така forth-- 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 На second-- три хаш, шест места. 96 00:05:20,020 --> 00:05:24,260 Трето row-- четири хаш, пет spaces-- така натаму и така натаму 97 00:05:24,260 --> 00:05:26,350 се додека не се дојде до n-ти ред. 98 00:05:26,350 --> 00:05:31,540 Па тогаш, јас побара од вас за n-ти ред, Колку хаш сме случува да имаат 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 и колку места се потребни за n-ти ред, кога имаш некои височина. 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 Но, во CS50 и во компјутерски науки Во принцип, ние се 0 индексирани. 106 00:05:55,950 --> 00:06:00,620 Така, првиот ред ќе биде n од 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 Во C, имаме конструкт повика за телефонска линија, 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 Ние исто така може да се користи за петелки да iterate во текот на работите. 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 Јас iterate над секој ред на пирамидата, користење, 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 >> Моето име е Zamyla, и ова е CS50. 137 00:07:41,510 --> 00:07:43,167