7.5.2. булеви променливи. Булеви операции
Резултатът от операцията за сравняване на две числа може да бъде стойност, която приема една от двете възможни стойности: „истина“ (ако указаното съотношение действително е изпълнено) и „фалшиво“ (ако съотношението не е изпълнено). На английски "true" и "false" се пишат съответноTrueиFalse.Константите и променливите, чиито стойности могат да бъдат само тези две стойности (TrueилиFalse)се наричат логически или булеви константи и променливи. Името е дадено в чест на английския математик от 19 век Джон Бул. За описание на такива променливи в езика Pascal има специален тип -boolean. Пример за декларация на булева променливафлаг:
На булевите променливи могат да бъдат присвоени стойностите на операциите за сравнение, точно както присвояваме аритметични операции на числови променливи. Такава операция за присвояване може да изглежда например по следния начин:
тоест присвояваме стойността на операцията за сравнениеx>=15.на променлива от булев типфлаг.Ако указаното неравенство е вярно, стойността на променливата ще бъде равна наистина. В противен случай стойността му ще бъдеfalse. Името на булева променлива, на която е присвоена стойността на операция за сравнение, може да бъде заменено в условен израз вместо самата операция. Тази техника ви позволява да направите програмата по-компактна, ако една и съща операция за сравнение се повтаря няколко пъти в програмата. Стойностите на булева променлива могат да бъдат отпечатани на екрана на компютъра с оператораwriteln, точно както стойностите на числови променливи. Можете да присвоите стойноститеtrueиfalseна булеви променливи и директно:flag:=true;
Това е този начин за присвояване на стойности на булева променлива, която ниеизползвайте в следната програма. Тази програма проверява дали има поне едно положително цяло число в поредица от три цели числа. Тези числа, както обикновено, ще въведем от клавиатурата и на екрана на компютъра ще се покаже съобщение за резултатите от проверката. Програмата, чийто текст е показан на фиг. 7.5.5, използва три променливи от целочислен типx, yиzза входни числени стойности и една променлива от булев типflag, чието предназначение в тази програма ще разгледаме по-долу. Декларацията на променлива или променливи от един и същи тип съставлява отделна група, която е отделена от следващата група с точка и запетая. В този случай думатаvar, която отваря секцията за деклариране на променливи, се поставя само веднъж.
В основната част на програмата променливатаflagе зададена на първоначалната стойностfalse. След оператора за присвояване в програмата има три еднотипни блока, всеки от които обработва едно от въведените числа. Всеки такъв блок се състои от изходящ оператор, който подканва потребителя да въведе число, входен оператор, който присвоява въведената стойност на една от променливите от целочислен тип, и съкратен условен оператор, който проверява дали въведеното число е положително или отрицателно. Ако числото е положително, на променливатаflagсе присвоява стойностtrue. В случай, че числото е отрицателно, не се предприема действие. Ако сред въведените няма положителни числа, тогава стойността нафлагще остане непроменена, тоест равна наfalse.


Ориз. 7.5.5. Програма, която определя дали има положителни числа в редица и резултатите от работата й с различни начални данни
По-нататък в програмата има пълен условен оператор, който проверява крайната стойност на променливатафлаги ако има стойностtrue,тогава се извежда съобщение, че сред въведените числа има поне едно положително, в противен случай се извежда съобщение, че всички въведени числа са отрицателни. На фиг. 7.5.5 под текста на програмата показва резултатите от нейната работа с различни изходни данни.
Логическите операции могат да се извършват върху стойности от булев тип. Резултатът от логически операции може да бъде само булеви стойности, тоест стойности, които имат стойноститеtrueиfalse. Общо 4 логически операции се използват в Pascal:not(НЕ) - логическо отрицание,и(И) - логическо И,или(ИЛИ) - логическо ИЛИ,xor(Изключително ИЛИ). Тези операции са разделени на унарни, т.е. тези, които се изпълняват само върху една стойност, и двоични, т.е. тези, които се изпълняват върху две величини наведнъж.notпринадлежи към първия тип операции, всички останали принадлежат към втория. При извършване на логически операции се спазва определен приоритет, както при аритметичните операции. Операциятаnotима най-висок приоритет, което означава, че се изпълнява първа. След това се изпълнява операциятаи.
Операциитеorиxorимат най-нисък приоритет. Ако е необходимо да се промени редът на логическите операции в израз, за това се използват скоби, тъй като изразът, заграден в скоби, има най-висок приоритет.
За логическите стойности има таблица, която показва резултатите от логически операции за различни първоначални данни. Такава таблица се нарича таблица на истината. По-долу е дадена такава таблица за унарни (Таблица 1) и (Таблица 2) двоични операции.
Таблица 1. Унарни операции.
От тази таблица се вижда, че в резултат на операциятаnot,се изпълнява върху която и да е стойност, стойността й е обърната.
Ако разгледаме резултатите, показани в таблица 2, можем да заключим, че за операциятаистойността ще бъде равна наtrueсамо когато и двете начални стойностиXиY,, върху които се изпълнява тази операция (такива стойности се наричат операнди), имат стойностtrue. Във всички останали случаи резултатът от операцията ще бъдеfalse. За операциятаилистойността ще бъдеtrue,ако поне един от операндите (илиXилиY) има стойностtrue. Резултатът от операциятаилище бъдеfalseсамо ако и двата операнда саfalse. За операциятаxorстойността ще бъдеtrue, ако стойностите на операндите не съвпадат. Ако стойностите на операндите са еднакви (независимо дали тези стойности са равни наfalseилиtrue), тогава резултатът от операцията ще бъде равен наfalse.