1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Во ред. 3 00:00:05,640 --> 00:00:08,330 Па сега ајде да зборуваме за нешто навистина корисно во programming-- 4 00:00:08,330 --> 00:00:09,914 условно извештаи. 5 00:00:09,914 --> 00:00:11,830 Па условно изрази им овозможи на вашите програми 6 00:00:11,830 --> 00:00:14,538 да донесуваат одлуки и да имаат различни вилушки во патот, нешто 7 00:00:14,538 --> 00:00:17,670 Јас алудираше малку порано, во зависност од вредностите на променливите, 8 00:00:17,670 --> 00:00:20,990 или врз основа на она што корисникот влезови програмерот, на командната линија, 9 00:00:20,990 --> 00:00:23,130 или ако имате брз или нешто слично. 10 00:00:23,130 --> 00:00:26,690 Ц има неколку различни начини да се изразат условен изрази, кои 11 00:00:26,690 --> 00:00:29,911 ние, исто така, понекогаш ќе се јавите на условен филијала во вашите програми. 12 00:00:29,911 --> 00:00:32,910 И некои од овие се случува да се погледне прилично запознаен со вас од нула, 13 00:00:32,910 --> 00:00:35,190 па дури и ќе ги повлече до рамо до рамо, само 14 00:00:35,190 --> 00:00:38,170 можете да направите таа аналогија во вашата глава. 15 00:00:38,170 --> 00:00:41,250 >> Значи, ако if-- е прилично едноставна условно. 16 00:00:41,250 --> 00:00:43,560 Ако се сеќавате од гребнатина на десниот тука 17 00:00:43,560 --> 00:00:50,000 можете да се пополни во која е шестоаголник со сина израз ако глувчето надолу 18 00:00:50,000 --> 00:00:53,010 или ако x е помалку од 10, или нешто слично. 19 00:00:53,010 --> 00:00:57,390 А потоа, ако x е помал од 10, или ако на глувчето е во фактот, долу, 20 00:00:57,390 --> 00:01:01,140 сите на код во внатрешноста на загатка парче ќе се изврши. 21 00:01:01,140 --> 00:01:03,720 Сите оние нешта кои се вклопуваат внатре во кои С форма. 22 00:01:03,720 --> 00:01:07,200 >> Слично на тоа, дали имаме ако на левата таму. 23 00:01:07,200 --> 00:01:09,210 Ако Булова израз, што јас сум само користење 24 00:01:09,210 --> 00:01:13,010 како замена за еден од Булова изрази зборувавме претходно, 25 00:01:13,010 --> 00:01:15,240 отворен кадрава голема заграда, во близина кадрава голема заграда. 26 00:01:15,240 --> 00:01:17,720 Значи мислам на отворен кадрава подготвуваат и затворени кадрава голема заграда 27 00:01:17,720 --> 00:01:22,720 како вид на аналогни на сендвичот Ефектот на ако блок на десната 28 00:01:22,720 --> 00:01:24,070 од нула. 29 00:01:24,070 --> 00:01:28,680 >> Ако Булова израз во изјавата ако е точно, 30 00:01:28,680 --> 00:01:30,900 тогаш сите линии на код помеѓу големи загради 31 00:01:30,900 --> 00:01:33,870 ќе се изврши со цел од врвот до дното. 32 00:01:33,870 --> 00:01:35,700 Ако Булова израз е лажна, ние ќе 33 00:01:35,700 --> 00:01:38,610 прескокнете над што ќе се памети на големи загради, бидејќи ние само 34 00:01:38,610 --> 00:01:44,570 сакаат да одат надолу по вилушка на патот ако Булова израз е точен. 35 00:01:44,570 --> 00:01:48,540 >> Можеме да ги преземе овој чекор ако понатаму со друго. 36 00:01:48,540 --> 00:01:50,820 Па овој блок е нула прилично слична на онаа 37 00:01:50,820 --> 00:01:55,884 видовме пред само една секунда, освен носи две различни патеки базирана 38 00:01:55,884 --> 00:01:56,550 на она што се случува. 39 00:01:56,550 --> 00:02:00,420 Значи, ако на глувчето е долу, или ако x е помал од 10, 40 00:02:00,420 --> 00:02:04,780 ние ќе направиме се што е во меѓу тој прв вилушка, тој прв В, 41 00:02:04,780 --> 00:02:08,430 >> Инаку, ако на глувчето е горе, или x не е помала од 10, 42 00:02:08,430 --> 00:02:10,460 ние ќе направиме се што е во вториот сет. 43 00:02:10,460 --> 00:02:15,010 И тоа е аналогно на она што го гледате тука за C. Ако Булова израз, 44 00:02:15,010 --> 00:02:17,910 направи нешто помеѓу првиот сет на големите загради. 45 00:02:17,910 --> 00:02:20,550 Друго, правете нешто помеѓу Втората група на големите загради. 46 00:02:20,550 --> 00:02:22,080 Па ако на Булова изразување е точно, ние ќе 47 00:02:22,080 --> 00:02:23,580 стори се што е помеѓу првиот сет. 48 00:02:23,580 --> 00:02:27,480 Ако Булова израз е лажна, дека би било причина за друго, 49 00:02:27,480 --> 00:02:30,100 а ние ќе стори се што е во вториот сет на големите загради. 50 00:02:30,100 --> 00:02:34,190 Повторно, врвот до дното, сите линии во меѓу загради. 51 00:02:34,190 --> 00:02:38,130 >> Во C, можно е да се создаде ако еден-друг-синџир, ако друго. 52 00:02:38,130 --> 00:02:42,000 Всушност може да имаат, ако-друго ако-друго Ако-друго, ако, и така натаму и така натаму и така 53 00:02:42,000 --> 00:02:42,720 на. 54 00:02:42,720 --> 00:02:44,660 Во Скреч, ова се бара вгнездени блокови. 55 00:02:44,660 --> 00:02:48,280 Ќе додадете-ако друго, и ти мораше да стави уште еден во внатрешноста на друго место, 56 00:02:48,280 --> 00:02:51,110 и така натаму, и се тоа вид на вгнездените и комплицирани. 57 00:02:51,110 --> 00:02:52,450 Но, Ц, ние не треба да го направат тоа. 58 00:02:52,450 --> 00:02:55,300 Ние всушност може само да тоа да биде еден синџир се допаѓа ова. 59 00:02:55,300 --> 00:02:58,350 Повторно, како што може да се очекува, на сите овие гранки се исклучуваат. 60 00:02:58,350 --> 00:03:00,750 Можете само да некогаш одат надолу една од гранка. 61 00:03:00,750 --> 00:03:02,270 Ако ова е точно. 62 00:03:02,270 --> 00:03:03,930 Во спротивно, ако ова е вистина. 63 00:03:03,930 --> 00:03:05,700 Во спротивно, ако ова е вистина. 64 00:03:05,700 --> 00:03:07,120 Во спротивно, го направите тоа. 65 00:03:07,120 --> 00:03:11,010 Значи сите четири гранки во оваа пример меѓусебно се исклучуваат. 66 00:03:11,010 --> 00:03:14,900 Тоа е, ако, на друго место ако синџирот-друго. 67 00:03:14,900 --> 00:03:17,580 >> Тоа е можно, иако, а понекогаш и многу корисни, 68 00:03:17,580 --> 00:03:20,950 за да се создаде еден синџир на не меѓусебно се исклучуваат гранки. 69 00:03:20,950 --> 00:03:24,600 Во овој пример, само третиот и Четвртиот гранки меѓусебно се исклучуваат. 70 00:03:24,600 --> 00:03:27,450 Тоа би можело да биде дека сте можеле задоволи првиот услов, 71 00:03:27,450 --> 00:03:29,396 и да ја задоволите на вториот услов, 72 00:03:29,396 --> 00:03:31,770 и може да ги задоволи Третата condition-- во кој случај 73 00:03:31,770 --> 00:03:35,270 ќе се памети првата гранка, тогаш може да оди надолу по втор гранка, 74 00:03:35,270 --> 00:03:37,000 тогаш ќе одат надолу третата гранка. 75 00:03:37,000 --> 00:03:40,450 Или можеби ви ги задоволи првиот состојба, а вториот услов, 76 00:03:40,450 --> 00:03:42,770 но не ги задоволуваат третиот услов. 77 00:03:42,770 --> 00:03:46,230 Во овој случај ќе се памети првата гранка и второ колено, 78 00:03:46,230 --> 00:03:48,040 а потоа на четвртата гранка, 79 00:03:48,040 --> 00:03:51,392 >> Причината за ова е тоа што на друго место ќе се поврзе само со точност ако. 80 00:03:51,392 --> 00:03:53,100 Па иако таму еден друг тука, дека 81 00:03:53,100 --> 00:03:56,490 не мора да се создаде заеднички ексклузивни синџирот на сè. 82 00:03:56,490 --> 00:04:00,890 Тоа е само израз таму со Булова 83 00:04:00,890 --> 00:04:05,040 изразување 3-- тоа е исклучуваат меѓусебно со друг. 84 00:04:05,040 --> 00:04:07,580 Така што е можно, и понекогаш и доста корисно, 85 00:04:07,580 --> 00:04:11,772 како што реков, за да се создаде еден синџир на не се исклучуваат меѓусебно гранки. 86 00:04:11,772 --> 00:04:14,230 Ајде да ги разгледаме во различен вид на условна, која 87 00:04:14,230 --> 00:04:17,392 не сте го виделе досега во нула. 88 00:04:17,392 --> 00:04:19,369 Има нешто што се нарекува изјава на прекинувачот. 89 00:04:19,369 --> 00:04:21,410 Билансот на прекинувачот е вид на уредни, бидејќи тоа е 90 00:04:21,410 --> 00:04:25,930 условни изјави, која им овозможува можете да наведете различни случаи, 91 00:04:25,930 --> 00:04:28,926 наместо да се потпира на Булова изрази, да донесуваат одлуки за вас. 92 00:04:28,926 --> 00:04:31,050 Така на пример, да речеме дека имам оваа програма, 93 00:04:31,050 --> 00:04:34,110 и јас барам на корисникот да дадат свој придонес за мене. 94 00:04:34,110 --> 00:04:37,170 Значи јас велам, int x = Земете Int (), и ако се уште не сте запознаени, 95 00:04:37,170 --> 00:04:40,190 добијат int е функција која е исто така се вклучени во библиотеката CS50, 96 00:04:40,190 --> 00:04:44,610 па ако # Include cs50.h ќе имате Добие пристап до Int () и сите негови 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, и така натаму. 98 00:04:46,840 --> 00:04:52,590 Во основа една добие функцијата за секој тип на податок дека ние веќе разговаравме. 99 00:04:52,590 --> 00:04:53,970 >> Па int x е еднаква GetInt. 100 00:04:53,970 --> 00:04:56,390 Во суштина она што се случува е јас сум на терминалот. 101 00:04:56,390 --> 00:04:58,790 Прашувам на корисникот да напишеш во голем број. 102 00:04:58,790 --> 00:05:02,300 >> И тука јас сум префрлување она што го правам, во зависност 103 00:05:02,300 --> 00:05:05,060 на она што на корисникот внесе во конзолата. 104 00:05:05,060 --> 00:05:09,147 Значи, ако тие ја внеле, мене испечатите еден. 105 00:05:09,147 --> 00:05:09,855 И тогаш јас се скрши. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Ако тие тип два, јас печати од двете. 108 00:05:15,510 --> 00:05:16,690 И тогаш јас се скрши. 109 00:05:16,690 --> 00:05:19,060 Важно е да се пауза помеѓу секој случај 110 00:05:19,060 --> 00:05:20,890 затоа што во спротивно ќе падне преку. 111 00:05:20,890 --> 00:05:23,380 Значи, ако јас не се имате било какви паузи таму, а на корисникот 112 00:05:23,380 --> 00:05:31,380 исчука еден, што ќе се случи тоа е ќе се печати една, две, три, жалам. 113 00:05:31,380 --> 00:05:33,099 Тоа е вид на чудно однесување, нели? 114 00:05:33,099 --> 00:05:33,890 Можеби мислат така. 115 00:05:33,890 --> 00:05:36,480 Но, таму се всушност некои случаи каде ова би можело да биде доста корисна работа. 116 00:05:36,480 --> 00:05:39,730 Значи тука е уште еден пример на прекинувачот изјава каде што јас ја изостави на паузите. 117 00:05:39,730 --> 00:05:42,030 Но, јас го направи тоа намерно. 118 00:05:42,030 --> 00:05:43,030 >> Значи она што се случува овде? 119 00:05:43,030 --> 00:05:43,821 Мислам за една секунда. 120 00:05:43,821 --> 00:05:45,960 Можете дури и да сакате да го паузирате видео. 121 00:05:45,960 --> 00:05:48,230 >> Што се случува овде, ако корисникот видови четири? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Па јас питах на корисникот за влез. 124 00:05:53,860 --> 00:05:56,560 И тие се обезбеди на вредноста 4. 125 00:05:56,560 --> 00:05:59,545 Она што добива се печатат кога го направам тоа? 126 00:05:59,545 --> 00:06:02,170 На претходниот слајд, имаше паузите помеѓу сите случаи. 127 00:06:02,170 --> 00:06:04,750 И според тоа би само печати четири, а потоа запре. 128 00:06:04,750 --> 00:06:06,610 Но, во овој случај, тоа нема. 129 00:06:06,610 --> 00:06:10,700 Што ќе се случи да ви е ќе падне преку секој случај. 130 00:06:10,700 --> 00:06:14,890 >> Значи во овој случај јас сум организирана мојата случаи во таков начин што, ако на корисникот видови 4, 131 00:06:14,890 --> 00:06:20,070 Јас ќе се печати четири, три, два, еден, излитам. 132 00:06:20,070 --> 00:06:22,780 И ако тие внеле 5, јас ќе започне на пет и го прават истото. 133 00:06:22,780 --> 00:06:26,410 Ако тие ја внеле 1, јас би само да се направи еден, експлозијата надвор. 134 00:06:26,410 --> 00:06:28,715 >> Значи во овој случај, јас сум со користење прекинувач вид на умно така 135 00:06:28,715 --> 00:06:30,804 дека јас немам намера да падне низ сите случаи. 136 00:06:30,804 --> 00:06:33,720 Но, генерално, што веројатно ќе отидеме сакаат да се пробие меѓу сите нив, 137 00:06:33,720 --> 00:06:36,090 освен ако имате ситуација како овој, каде што сте 138 00:06:36,090 --> 00:06:40,081 вид на клиент преку фактот дека ќе пропаднете случаите без пауза. 139 00:06:40,081 --> 00:06:42,830 Значи тоа е втората од главните типови на условно извештаи. 140 00:06:42,830 --> 00:06:47,139 Од кои последниот е: Па јас имаат два фрагменти на C код овде. 141 00:06:47,139 --> 00:06:48,680 Една на левата и на десната страна. 142 00:06:48,680 --> 00:06:52,330 Оној на левата страна треба веројатно да биде прилично запознаени за вас. 143 00:06:52,330 --> 00:06:55,110 >> Имам int x. 144 00:06:55,110 --> 00:06:57,167 И јас веројатно ќе треба побараа од корисникот 145 00:06:57,167 --> 00:07:00,250 for-- тоа веројатно треба да биде int x еднаква GetInt, или нешто слично. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 И тогаш јас сум да донесат одлука. 148 00:07:05,240 --> 00:07:11,700 Ако некои Булова израз е точно, му ја додели х вредноста 5. 149 00:07:11,700 --> 00:07:13,590 Инаку, доделите х вредноста 6. 150 00:07:13,590 --> 00:07:16,548 >> Дека на левата веројатно треба да биде прилично познат од нашата дискусија 151 00:07:16,548 --> 00:07:18,160 Ако на друго место пред само еден миг. 152 00:07:18,160 --> 00:07:20,535 Дали ќе бидете изненадени да знаете дека линијата надесно 153 00:07:20,535 --> 00:07:22,310 прави иста работа? 154 00:07:22,310 --> 00:07:26,140 >> Значи ова се вика: а понекогаш наречен троичен оператор. 155 00:07:26,140 --> 00:07:27,450 И тоа е прилично кул. 156 00:07:27,450 --> 00:07:29,110 Тоа е обично се користи како симпатична трик. 157 00:07:29,110 --> 00:07:35,777 >> Но, она што ви овозможува да направите е да се симулираат Ако друг со навистина мали, 158 00:07:35,777 --> 00:07:37,610 навистина тривијално кратко условен гранки. 159 00:07:37,610 --> 00:07:41,470 Обично не би се користи: ако имаше шест линии на код помеѓу секој сет 160 00:07:41,470 --> 00:07:42,569 на големите загради. 161 00:07:42,569 --> 00:07:44,360 Но ако сте само правење на брзи одлуки, 162 00:07:44,360 --> 00:07:47,520 ако си оди за да се направи една работа или на друг и тоа е многу едноставна, 163 00:07:47,520 --> 00:07:52,240 ова може да биде пример за тоа како да се направете го тоа со: на трикомпонентните оператор. 164 00:07:52,240 --> 00:07:56,940 Па int x е еднаква на изразување? 165 00:07:56,940 --> 00:07:59,470 Работата по прашањето марка е она Х вредност 166 00:07:59,470 --> 00:08:02,690 ќе биде ако изразувањето е вистина. 167 00:08:02,690 --> 00:08:05,330 >> Она по дебелото црево е она што вредноста на X 168 00:08:05,330 --> 00:08:07,990 ќе биде ако на изразување е неточно. 169 00:08:07,990 --> 00:08:11,510 Па јас се прашувам, Точно е израз? 170 00:08:11,510 --> 00:08:13,870 Ако е така, додели х вредноста 5. 171 00:08:13,870 --> 00:08:16,619 Ако тоа не е, додели х вредноста 6. 172 00:08:16,619 --> 00:08:17,410 Повторно, како што реков. 173 00:08:17,410 --> 00:08:18,670 Ова е обично само една симпатична трик. 174 00:08:18,670 --> 00:08:20,430 А понекогаш и ако станете навистина удобно со него, 175 00:08:20,430 --> 00:08:22,820 ќе го направите ова, бидејќи изгледа вид на ладно во вашите програми. 176 00:08:22,820 --> 00:08:25,710 Обично јас сум го презентираат ви, па сега сте запознаени со тоа 177 00:08:25,710 --> 00:08:26,990 ако ти го гледаш. 178 00:08:26,990 --> 00:08:30,080 Но, сигурно знаат немате да го пишувам за некој од вашиот код. 179 00:08:30,080 --> 00:08:33,246 Но тоа е нешто што треба да биде запознаен со тоа, бидејќи вие дефинитивно ќе се судрите 180 00:08:33,246 --> 00:08:36,130 снипети на кодот тука и таму каде што тоа: синтакса, 181 00:08:36,130 --> 00:08:39,120 АКА на трикомпонентните оператор, се користи. 182 00:08:39,120 --> 00:08:40,960 >> Така брз преглед на conditionals она што се, 183 00:08:40,960 --> 00:08:44,210 и она што се достапни опции да сте во В. имате ако и доколку-друго, 184 00:08:44,210 --> 00:08:46,860 и ако е друго, ако, и така натаму. 185 00:08:46,860 --> 00:08:50,880 Можете да го користите Булова изрази за тие да донесуваат одлуки. 186 00:08:50,880 --> 00:08:53,720 >> Со прекинувач изјавите користите дискретна случаи да донесуваат одлуки. 187 00:08:53,720 --> 00:08:57,540 Сакаш да се каже конкретно, ако тоа е еден, или ако тоа е два, или ако тоа е три, 188 00:08:57,540 --> 00:09:00,870 Јас ќе го направи тоа нешто, или тоа нешто, или тоа нешто. 189 00:09:00,870 --> 00:09:04,660 И: може да се користи да се замени многу едноставна, ако-друго гранки, 190 00:09:04,660 --> 00:09:08,490 или ако-друго синџири за да се направи Вашиот код погледне малку фенси. 191 00:09:08,490 --> 00:09:09,250 >> Јас сум Даг Лојд. 192 00:09:09,250 --> 00:09:11,410 И ова е CS50. 193 00:09:11,410 --> 00:09:12,959