1 00:00:07,090 --> 00:00:07,370 [Powered by Google Translate] Vipul SHEKHAWAT: Hej. 2 00:00:07,370 --> 00:00:09,410 I den här videon kommer jag att introducera dig till en av de mest 3 00:00:09,410 --> 00:00:11,260 grundläggande begrepp inom logik och 4 00:00:11,260 --> 00:00:13,880 programmering, booleskt värde. 5 00:00:13,880 --> 00:00:16,210 Om du är nyfiken på namnet, booleska värden och 6 00:00:16,210 --> 00:00:19,440 villkor uppkallad efter George Boole, en 19th century 7 00:00:19,440 --> 00:00:22,030 matematiker som pionjärer det som nu kallas boolesk 8 00:00:22,030 --> 00:00:23,980 logik, vilken är baserad på gruppering och 9 00:00:23,980 --> 00:00:26,030 jämföra booleska värden. 10 00:00:26,030 --> 00:00:28,250 >> Så vad är ett booleskt värde? 11 00:00:28,250 --> 00:00:30,920 Ett booleskt värde är en variabel som bara har två möjliga 12 00:00:30,920 --> 00:00:33,710 förhållanden, sant och falskt. 13 00:00:33,710 --> 00:00:35,380 Du kan se det som en strömbrytare. 14 00:00:35,380 --> 00:00:38,530 Det kan vara antingen på eller av, sant eller falskt. 15 00:00:38,530 --> 00:00:41,880 Likaså, kan binära tal vara antingen ett eller noll, vilket 16 00:00:41,880 --> 00:00:45,680 är analogt med samma sak, sant eller falskt. 17 00:00:45,680 --> 00:00:46,840 Enkelt, eller hur? 18 00:00:46,840 --> 00:00:48,750 Konceptet med en boolesk variabel är lätt att 19 00:00:48,750 --> 00:00:51,720 förstå, men det sätt på vilket du kan manipulera och 20 00:00:51,720 --> 00:00:54,570 kombinera dem möjliggör en mycket större komplexitet. 21 00:00:54,570 --> 00:00:57,030 Förutom de två grundläggande booleska värden, 22 00:00:57,030 --> 00:00:59,350 det finns många booleska operatorer som kan kombinera två 23 00:00:59,350 --> 00:01:01,760 Booleska värden i en enda. 24 00:01:01,760 --> 00:01:03,540 >> Två av de mest grundläggande, men viktigast 25 00:01:03,540 --> 00:01:06,570 operatörer är AND och OR. 26 00:01:06,570 --> 00:01:09,950 OCH-operatorn resulterar i ett värde true om endast båda 27 00:01:09,950 --> 00:01:14,630 de värden som krävs är sant, är så falska och äkta falskt. 28 00:01:14,630 --> 00:01:17,540 Likaså är falskt och false false. 29 00:01:17,540 --> 00:01:21,080 Enda sanna och äkta lika sant. 30 00:01:21,080 --> 00:01:24,050 Operatorn OR resulterar i värdet true om någon av 31 00:01:24,050 --> 00:01:25,620 värden det tar är sanna. 32 00:01:25,620 --> 00:01:30,460 Så falsk eller FALSKT är falsk, men SANT eller FALSKT är sant, och 33 00:01:30,460 --> 00:01:33,710 Sant eller sant är också sant. 34 00:01:33,710 --> 00:01:36,560 Operatorn NOT tar helt enkelt en boolesk variabel och ger 35 00:01:36,560 --> 00:01:37,830 Ni motsatsen till det. 36 00:01:37,830 --> 00:01:40,950 Så sant blir falskt och falskt blir sant. 37 00:01:40,950 --> 00:01:43,130 Om du sätter det hela tillsammans, variabler med 38 00:01:43,130 --> 00:01:46,320 operatörer, skapar du ett booleskt uttryck. 39 00:01:46,320 --> 00:01:48,550 >> Nu ska vi titta på ett exempel på häckande dessa Boolean 40 00:01:48,550 --> 00:01:49,950 uttryck. 41 00:01:49,950 --> 00:01:51,840 Minns du ordning i verksamheten? 42 00:01:51,840 --> 00:01:54,700 Som med siffror, kan booleska uttryck grupperas med 43 00:01:54,700 --> 00:01:56,270 använda parenteser. 44 00:01:56,270 --> 00:02:00,150 Så det finns i princip tre uttryck här, inte z, y eller 45 00:02:00,150 --> 00:02:04,740 EJ z, och x och y eller z. EJ. 46 00:02:04,740 --> 00:02:07,080 Vi kan räkna ut värdena för dessa genom att titta på 47 00:02:07,080 --> 00:02:09,020 inne och arbetar vår väg ut. 48 00:02:09,020 --> 00:02:12,850 Så låt oss anta x är sant, y sant, och z är också sant. 49 00:02:12,850 --> 00:02:15,270 Vad skulle inte z utvärderas till? 50 00:02:15,270 --> 00:02:20,970 Eftersom vi börjar med sant, skulle inte z helt enkelt falskt. 51 00:02:20,970 --> 00:02:26,230 Så nu har vi falsk eller y. 52 00:02:26,230 --> 00:02:29,740 Om du tittar på topp, kan du se att y är sant, Y eller falskt 53 00:02:29,740 --> 00:02:32,870 skulle fortfarande bara vara sant. 54 00:02:32,870 --> 00:02:37,580 Slutligen vi har X och sant. 55 00:02:37,580 --> 00:02:39,300 Så vad är x och sant? 56 00:02:39,300 --> 00:02:42,590 x är sant och sant är också sant, så hela den här saken 57 00:02:42,590 --> 00:02:45,070 utvärderas till true. 58 00:02:45,070 --> 00:02:47,270 >> Nästa, låt oss titta på hur dessa booleska uttryck kan 59 00:02:47,270 --> 00:02:49,890 faktiskt användas i ett programmeringsspråk. 60 00:02:49,890 --> 00:02:52,900 I C är syntaxen för Booleska operationer lite annorlunda 61 00:02:52,900 --> 00:02:55,520 från ord och, eller och inte. 62 00:02:55,520 --> 00:02:57,210 Låt oss täcker syntaxen. 63 00:02:57,210 --> 00:03:00,510 Om du vill använda och operatör, skriver vi en dubbel-tecken. 64 00:03:00,510 --> 00:03:03,620 Operatorn OR är en dubbel rörledning karaktär. 65 00:03:03,620 --> 00:03:05,780 Detta är den raka vertikala linjen, som du kan förmodligen 66 00:03:05,780 --> 00:03:09,070 hitta ovanför Retur på tangentbordet. 67 00:03:09,070 --> 00:03:12,550 Och den inte operatören är helt enkelt ett utropstecken. 68 00:03:12,550 --> 00:03:15,550 Så för att skriva uttrycket som vi hade tidigare, vi skulle bara 69 00:03:15,550 --> 00:03:27,010 skriv här x && y | |! z.. 70 00:03:27,010 --> 00:03:29,250 Som bara tar exakt vad vi hade tidigare och vänder 71 00:03:29,250 --> 00:03:31,870 det i C-syntax. 72 00:03:31,870 --> 00:03:34,370 >> Nu när vi har översatt vår booleskt uttryck i kod, 73 00:03:34,370 --> 00:03:36,160 Hur använder vi egentligen det? 74 00:03:36,160 --> 00:03:38,170 Låt oss säga att vi har en del kod som bara ska köras om 75 00:03:38,170 --> 00:03:40,330 visst uttryck är sant. 76 00:03:40,330 --> 00:03:42,750 För detta ändamål, ganska mycket alla programmeringsspråk 77 00:03:42,750 --> 00:03:45,190 stödja om villkoret. 78 00:03:45,190 --> 00:03:47,870 Låt oss säga att vi har en boolesk variabel, x, och vi vill ha några 79 00:03:47,870 --> 00:03:50,850 kod att exekvera endast om x är sant. 80 00:03:50,850 --> 00:03:54,900 Vi skulle helt enkelt skriva ordet om, sätta parentes, och sätta 81 00:03:54,900 --> 00:03:57,800 det booleska uttrycket inom dessa parenteser. 82 00:03:57,800 --> 00:03:59,680 Efter att linda vi koden vi vill 83 00:03:59,680 --> 00:04:01,080 köra i klammerparenteser. 84 00:04:07,160 --> 00:04:08,150 Tänk om det finns en del kod som du vill 85 00:04:08,150 --> 00:04:10,260 körs om x inte sant? 86 00:04:10,260 --> 00:04:13,310 Helt enkelt skriva ordet annars efter if, linda 87 00:04:13,310 --> 00:04:16,930 den andra koden i klammerparenteser, och då koden 88 00:04:16,930 --> 00:04:18,399 körs om x är inte sant. 89 00:04:26,640 --> 00:04:29,840 >> En annan användbar språk konstruktion är annars om. 90 00:04:29,840 --> 00:04:32,210 Anta att det finns två Booleans du vill överväga, 91 00:04:32,210 --> 00:04:34,330 låt oss kalla dem x och y.. 92 00:04:34,330 --> 00:04:37,340 Vi förklarar dessa variabler för att vara sant och falskt. 93 00:04:37,340 --> 00:04:40,540 Om x och y är sanna, kör du den första blocket 94 00:04:40,540 --> 00:04:42,630 kod inom dessa klammerparenteser. 95 00:04:42,630 --> 00:04:46,470 Annars om x eller y är sanna, kör du nästa block 96 00:04:46,470 --> 00:04:50,590 kod och annat du köra det sista blocket med kod. 97 00:04:50,590 --> 00:04:52,650 Arbeta med Booleska värden som detta är användbart, men 98 00:04:52,650 --> 00:04:55,750 du verkligen bara begränsad till ett fåtal förhållanden. 99 00:04:55,750 --> 00:04:58,400 Booleans kan bli mycket mer kraftfull när man introducerar 100 00:04:58,400 --> 00:04:59,900 jämförelser. 101 00:04:59,900 --> 00:05:01,280 Dessa är olika sätt att jämföra värden som är 102 00:05:01,280 --> 00:05:03,300 inte ursprungligen Boolean. 103 00:05:03,300 --> 00:05:06,060 För att se om två värden är lika, kan du använda lika 104 00:05:06,060 --> 00:05:09,340 jämlikar, vilket är sant om de är lika och falskt om 105 00:05:09,340 --> 00:05:10,530 de inte. 106 00:05:10,530 --> 00:05:15,360 Andra vanliga jämförelser är mindre än, större än, mindre 107 00:05:15,360 --> 00:05:19,740 än eller lika med och större än eller lika med. 108 00:05:19,740 --> 00:05:22,220 >> Allt jag har täckt hittills har varit ganska abstrakt, så 109 00:05:22,220 --> 00:05:24,320 låt oss införa dessa jämförelser i en sista 110 00:05:24,320 --> 00:05:25,850 konkret exempel. 111 00:05:25,850 --> 00:05:27,130 Anta att det finns två variabler, 112 00:05:27,130 --> 00:05:29,430 temperatur och isHungry. 113 00:05:29,430 --> 00:05:31,560 Temperaturen är ett flyttal, så att den kan ha 114 00:05:31,560 --> 00:05:33,090 decimaler. 115 00:05:33,090 --> 00:05:35,440 Du programmerar en mycket enkel applikation som berättar 116 00:05:35,440 --> 00:05:38,270 någon vad man ska äta, beroende på temperaturen. 117 00:05:38,270 --> 00:05:41,010 Om du är hungrig, och och temperaturen är högre än eller 118 00:05:41,010 --> 00:05:45,060 lika med 100, kan du skriva ut äta glass. 119 00:05:45,060 --> 00:05:48,370 Annars om du är hungrig och och temperaturen är lägre än 120 00:05:48,370 --> 00:05:52,420 eller lika med noll, kan du printf ("äta kryddig mat"). 121 00:05:52,420 --> 00:05:55,200 Slutligen, om du inte är hungrig alls, kan du skriva ut "inte 122 00:05:55,200 --> 00:05:56,710 äta något. " 123 00:05:56,710 --> 00:06:00,130 >> Jag Vipul Shekhawat, och detta är CS50.