Логічні операції у мові програмування pascal. Вирази та операції у мові паскаль. Поняття типу даних у Турбо Паскаль

Здрастуйте, дорогі читачі нашого сайту! Сьогодні, ми поговоримо про логічні змінних типу Boolean в Паскаль, логічні операції і вирішимо п'ять завдань.

Навіщо потрібна логіка в Паскаль? Ви, я сподіваюся, вже навчилися писати найпростіші лінійні програми, і зараз, напевно, ставите питання, як написати нелінійну програму? Для того, щоб програма була нелінійною в Паскалі, як і в інших мовах програмування, використовують логічні вирази, які набувають значення trueабо false. Тобто, на місце будь-якого відношення у Паскалі ставиться true чи false. Наприклад,

Var A: integer; begin A:=5; write(A > 0); (Буде виведено True.) end.

Список операторів відносини:

  • більше: >
  • менше:<
  • більше чи одно: >=
  • менше чи одно:<=
  • одно: =
  • не дорівнює:<>

Щоб записати результат логічного висловлювання, нам потрібна спеціальна змінна. Ця змінна матиме тип boolean, вона може приймати два значення - true або false. Як створювати прості умови ви вже зрозуміли, але як створювати складні умови? Для цього використовуються спеціальні логічні операції: and, or, notі xor.Давайте розберемо кожну операцію окремо та складемо таблиці істинності. Приймемо за 1 – true, а за 0 – false.

And, або кон'юнкція.


Логічне множення, істинне лише тоді, коли обидва прості висловлювання істинні.

або диз'юнкція.

Істинно, якщо хоча б один простий вислів істинний.

Xor, або сувора диз'юнкція.


Істинно, якщо одне з двох простих висловлювань істинно.

Ні, чи інверсія.


Якщо висловлювання істинне, його заперечення - брехня і навпаки.

Завдання Boolean.

Закріпимо отримані знання, вирішивши кілька завдань.

. Дано ціле число A. Перевірити істинність висловлювання: «Число A є позитивним».

Program Boolean1; var a: integer; begin write("Введіть число A:"); read(a); writeln("Число A є позитивним -", a > 0); (Просте висловлювання) end.

. Дано ціле число A. Перевірити істинність висловлювання: «Число A є непарним».

Для того щоб дізнатися, чи є дане число непарним у Паскалі, передбачена спеціальна функція Odd, яка повертає true, якщо число непарне і falseякщо число парне.

Program Boolean2; var a: integer; b: boolean; begin write("Введіть число A:"); read(a); b: = Odd (a); writeln("Число A є непарним -", b); (Можна обійтися і без b) end.

. Дано ціле число A. Перевірити істинність висловлювання: «Число A є парним».

Щоб дізнатися чи є число непарним, використовуємо вже відому нам функцію, потім инвертируем результат.

Program Boolean3; var a: integer; b: boolean; begin write("Введіть число A:"); ( 6 ) read(a); b: = Odd (a); (False) writeln("Число A є парним -", not b); (True) end.

. Дано три цілих числа: A, B, C. Перевірити істинність висловлювання: «Число B знаходиться між числами A і C».

Program Boolean7; var a, b, c: integer; b1, b2: boolean; begin write("Введіть число A, B, C:"); read(a, b, c); b1:= (B> A) and (B< C); b2:= (B >C) та (B< A); { Надо учитывать оба варианта } writeln("Число B находится между числами A и C - ", b1 or b2); end.

. Дано два цілих числа: A, B. Перевірити істинність висловлювання: «Рівне одне з чисел A і B непарне».

Використовуємо xor.

Program Boolean10; var a, b: integer; c:boolean; begin write("Введіть число A, B:"); read(a, b); c:= (Odd(a)) xor (Odd(b)); ( Скільки дужок 🙂 ) writeln("Рівне одне з чисел A і B непарне - ", c); end.

. Дано чотиризначне число. Перевірити істинність висловлювання: «Це число читається однаково ліворуч і праворуч ліворуч».

Використовуємо знання, здобуті в уроці.

Отже, дане завданняперевіряє, чи є введене чотиризначне число паліндромом. Напевно, найвідоміший паліндром - фраза Мальвіни: "А троянда впала на лапу Азора." (Спробуйте прочитати цю пропозицію справа наліво)

Program Boolean23; var a, b, c, d, e, f: integer; b1, b2: boolean; begin write("Введіть число чотиризначне число:"); read(e); a:= e div 1000; b:= e mod 1000 div 100; c:= e mod 100 div 10; d:= e mod 100 mod 10; f: = d * 1000 + c * 100 + b * 10 + a; writeln("Це число є паліндром -", f = e); end.

На сьогодні все! Не забувайте періодично заходити до нас на сайт, підписуйтесь та клацайте по кнопочкам!

Поняття типу даних у Турбо Паскаль

Для обробки ЕОМ дані представляються як величин та його сукупностей. З поняттям величини пов'язана така важлива характеристика як її тип.

Тип визначає:

· можливі значення змінних, констант, функцій, виразів, що належать до даного типу;

· Внутрішню форму представлення даних в ЕОМ;

· Операції та функції, які можуть виконуватися над величинами, що належать до цього типу.

У мові Паскаль тип величини задають наперед. Усі змінні, що використовуються у програмі, повинні бути оголошені в розділі опису із зазначенням їх типу. Обов'язкове опис типу призводить до надмірності у тексті програм, але така надмірність є важливим допоміжним засобом розробки програм і сприймається як необхідне властивість сучасних алгоритмічних мов високого рівня.

Ієрархія типів у мові Паскаль така:

· Прості

o Порядкові

§ Логічні

§ Символьні

§ Перераховані

§ Інтервальні

o Речові

· Структуйовані

o Масиви

o Безліч

· Покажчики

Логічні типи даних

Пряме ставлення до програмування має дисципліна, яка називається математичною логікою. Основу математичної логіки становить алгебра логіки, або обчислення висловлювань. Під висловлюванням розуміється будь-яке твердження, щодо якого можна однозначно сказати, істинно воно чи хибно. Наприклад, «Місяць – супутник Землі» – істинно; "5>3" - істинно; «Москва-столиця Китаю» - хибно; "1 = 0" - хибно. Істина чи брехня є логічними величинами. Логічні значення наведених вище висловлювань однозначно визначені; інакше кажучи, їх значення є логічними константами. Логічне значення нерівності x< 0, где x – переменная, является переменной величиной. В зависимости от значения x оно может быть либо истиной, либо ложью. В связи с этим возникает понятие логической переменной.

Основи формального апарату математичної логіки створив у середині ХІХ ст. англійський математик Джордж Буль. На його честь літочислення висловлювань називають булевою алгеброю, а логічні величини – булевськими.

Одиночні висловлювання може бути об'єднані у складові логічні формули з допомогою логічних операцій.

Є три основні логічні операції: заперечення, кон'юнкція (логічне множення) та диз'юнкція (логічне додавання).

Операція заперечення позначається у математичній логіці значком та читається як НЕ. Це одномісна операція.

Наприклад, (x = y) читається «не (x і y)». В результаті вийде істина якщо x не дорівнює y, і брехня, якщо x дорівнює y. Заперечення змінює значення логічної величини протилежне.

Операція кон'юнкції позначається & і читається як І. Це двомісна операція. Наприклад, (x > 0) & (x< 1) читается «x больше 0 и x меньше 1». Данная логическая формула примет значение истина, если x Є (0,1), и ложь – в противном случае. Следовательно, результат конъюнкции – истина, если истинны оба операнда. Знак операции дизъюнкции V читается как ИЛИ. Например, (x = 0) V (x = 1) читается «x равно 0 или x равно 1». Формула дает истину, если x – двоичная цифра (0 или 1). Следовательно, дизъюнкция дает в результате истину, если хотя бы один операнд - истина.

У Турбо Паскалі логічні значення позначаються службовими словами True (істина) і False (брехня), а логічний тип даних називається BOOLEAN.

Усі реалізації мови Pascal, у тому числі і Turbo Pascal, аж до версії 6.0 містили лише один логічний тип даних Boolean, елементи якого можуть набувати лише двох вищевказаних логічних значень. У Turbo Pascal версії 7.0 додано ще три логічні типи даних: ByteBool, WordBool та LongBool.

За аналогією з цілими та символьними типами, що поділяються на фізичні та логічні, природно припустити, що ByteBool, WordBool та LongBool – фізичні типи, Boolean – логічний. Але в цьому випадку це не зовсім так. Усі чотири типи різні. Для Turbo Pascal логічний тип Boolean більш кращий, так як він використовує меншу кількість пам'яті, інші типи були введені для забезпечення сумісності програм, що розробляються з Windows, в якій значенню False відповідає 0, а значенню True - будь-яке, відмінне від 0, число.

Дані логічного типу займають один байт пам'яті. У цьому значенню false відповідає нульове значення байта, а значенню true відповідає будь-яке ненульове значення байта. Наприклад: false завжди в машинному поданні: 00000000; true може виглядати так: 00000001 або 00010001 або 10000000.

Однак слід мати на увазі, що при виконанні операції привласнення змінної логічного типу значення true, у відповідне поле пам'яті завжди записується код 00000001. У цих операціях операнди логічного типу розглядаються як єдине ціле незалежно від бітового складу їх внутрішнього уявлення. Крім того, слід пам'ятати, що результати логічного типу виходять при порівнянні будь-яких типів. Логічні константи мови Turbo Pascal TRUE (істина) та FALSE (брехня) можна використовувати у явному вигляді або позначати ім'ям у розділі CONST, наприклад:

Логічна змінна також може приймати два значення TRUE та FALSE. Логічні змінні мають бути описані пропозицією:

Var<имя_переменной>: boolean; (Variable змінна).

Наприклад: var L,A,C:boolean;

Слід звернути увагу, що у розділі описи змінних необхідно визначити тип змінних, які у програмі. Наприклад,

Var P, Q, R: Integer;

У розділі операторів логічного типу змінної можна надати значення логічної константи, наприклад:

L1: = true; L2: = false; L3: = L1;

Величини логічного типу даних можна надавати, виводити, але не можна вводити процедурою read.

Приклад змінних із булевим значенням

На занятті розглядається умовний оператор у Паскалі ( if). Пояснюється, як використовувати кілька умов в одній конструкції ( ANDі OR). Розглядаються приклади роботи з оператором

Нагадуємо, що цей сайт не претендує на повний виклад інформації на тему. Метою порталу є надання можливості засвоєння матеріалу на основі готових вирішених прикладів на тему «Мова програмування Pascal» практичними завданнямидля закріплення матеріалу. Представлені на сайті сайт завдання Паскалю вибудовані послідовно в міру збільшення їх складності. Сайт сайт може бути використаний вчителями та викладачами як допоміжний наочний посібник.

До розгляду цієї теми переважно використовувалися лінійні алгоритмиу Паскалі, характерні для дуже простих завдань, коли дії (оператори) виконуються послідовно, одна одною. Більш складні алгоритми передбачають використання конструкцій розгалуження.

Блок-схема умовного оператора:

Умовний оператор у Паскалі має наступний синтаксис:

Скорочений варіант:

if умова then оператор;

Повний варіант:

if умова then оператор else оператор;

Умовний оператор у Паскалі — if — служить організації ходу завдання в такий спосіб, у якому змінюється послідовність виконання операторів залежно від будь-якого логічного умови. Логічне умова може приймати одне з двох значень: або true (істина), або false (брехня), відповідно, вона може бути або істинною, або хибною.

Складовий оператор

Якщо за дійсної умови необхідно виконувати кілька операторів, то їх за правилами мови Pascal необхідно укладати в блок, що починається зі службового слова begin і закінчується службовим словом end . Такий блок прийнято називати операторними дужками, а цю конструкцію - складовим оператором:

Операторні дужки та складовий оператор у Паскалі:

if логічний вираз then begin оператор1; оператор2; end else begin оператор1; оператор2; end;

Переклад з англійського оператора умови полегшить розуміння його використання:

IF THEN ELSE
ЯКЩО ТО Інакше


За умови (в логічному вираженні) використовуються оператори відносини.
Розглянемо список операторів відносини Паскаля:

  • більше >
  • менше
  • більше або дорівнює Pascal >=
  • менше або одно в Pascal
  • порівняння в Pascal =
  • не одно в Pascal

Приклад:знайти найбільше з двох чисел

Варіант 1 Варіант 2


Докладно розібратися у роботі умовного оператора в Паскалі можна, переглянувши відеоурок:

Приклад:обчислити значення змінної у по одній із двох гілок

Показати рішення:

var x, y: real; begin writeln ("введіть х"); read(x); if x>0 then y:=ln(x) else y:=exp(x); writeln ("y=", y:6:2) (підсумкове число займатиме 6 позицій, і в ньому буде 2 знаки після коми) end.

Зверніть увагу на те, як у даному прикладівиводиться y. При виведенні змінних типу в pascal можна використовувати так званий форматований висновок, або запис з двома двокрапками:
y:6:2
- цифра після першої двокрапки (6) вказує на те, скільки знаків буде займати число при виведенні на екран
- цифра після другої двокрапки (2) вказує на те, скільки знаків після коми речового числа виводитиметься

Таким чином, використання такого запису pascal практично дозволяє виконати округлення до сотих, тисячних і т.п.

Завдання 0.Обчислити значення змінної по одній з двох гілок:

Завдання 1.У комп'ютер вводяться два числа. Якщо перше більше за друге, то обчислити їх суму, інакше - твір. Після цього комп'ютер повинен надрукувати результат та текст ЗАДАЧА РІШЕНО

Завдання 2.Дракон щороку відрощує по три голови, але після того, як йому виповниться 100 років – лише по дві. Скільки голів та очей у дракона, якому Nроків?

Логічні операції у Паскалі (в логічному вираженні)

Коли необхідно використовувати подвійну умову Pascal, то знадобляться логічні операції.

  • Логічна операція AND (І), поставлена ​​між двома умовами, говорить про те, що повинні виконуватися відразу обидві ці умови (мають бути істинними). Логічний сенс операції – "кон'юнкція".
  • Поставлений між двома умовами, знак OR (АБО) говорить про те, що достатньо, якщо буде виконуватися хоча б одне з них (одна з двох умов істинно). Логічний сенс операції – "диз'юнкція".
  • Мовою Паскаль XOR - знак логічної операції, що має сенс "сувора диз'юнкція" і що вказує на те, що необхідно, щоб одна з двох умов виконувалася (істинно), а інша - не виконувалася (хибно).
  • Логічна операція NOT перед логічним виразом або змінною має сенс "заперечення" або "інверсія" і вказує на те, що якщо ця змінна або вираз істинні, то їх заперечення - брехня і навпаки.

Важливо:Кожне з простих умовобов'язково укладати у дужки.

Приклад: Розглянемо приклади логічних операцій у логічних виразах у Паскалі.

1 2 3 4 5 6 7 8 var n: integer; begin n: = 6; if (n>5) and (n<10 ) then writeln ("истина" ) ; if (n>7) або (n<10 ) then writeln ("истина" ) ; if (n>7) xor (n<10 ) then writeln ("истина" ) ; if not (n>7) then writeln ("істина"); end.

var n:integer; begin n:=6; if (n>5) and (n<10) then writeln("истина"); if (n>7) або (n<10) then writeln("истина"); if (n>7) xor (n<10) then writeln("истина"); if not(n>7) then writeln("істина"); end.

Приклад:Компанія набирає працівників від 25 до 40 років включно. Ввести вік людини та визначити, чи підходить вона для даної компанії (вивести відповідь «підходить» або «не підходить»).
Особливість:треба перевірити, чи виконуються дві умови одночасно.

Вирази – це конструкції мови, які визначають порядок виконання дій над елементами даних.

Вираз складається з операндів (operand – елемент даних, що у операції), об'єднаних знаками операцій. Операндами можуть бути константи, змінні та виклики функцій. Тип значення виразу визначається типом його операндів і виконуваними з них операціями. Наприклад,

  • вираз: b > a + 10;
  • b – лівий операнд, a + 10 – правий операнд, > – операція відношення; результат має логічний тип.

Важливо: величини, що становлять вираз, мають бути сумісними типами.

Операції можуть бути унарними та бінарними. Унарна операція відноситься до одного операнда і записується перед ним (наприклад, -х), бінарна - виражає відношення між двома операндами і записується між ними (наприклад, a + b). Операції визначають дії над операндами, що виконуються відповідно до пріоритетів:

  • Унарні -, not, ...
  • Операції типу множення: *, /, div, mod, and, …
  • Операції типу додавання: +, -, or, …
  • Операції відносини: =, =, …

Зауважимо, що й у вираженні зустрічаються функції, всі вони обчислюються насамперед. Порядок виконання операцій можна змінити за допомогою круглих дужок.

У поточному уроці розберемо операції відносини, арифметичні та логічні операції, інші - розглядатимемо в міру вивчення матеріалу.

Арифметичні висловлювання та операції

Вираз, складений з операндів цілих чи речових типів, об'єднаних знаками арифметичних операцій та круглими дужками, називається арифметичним.

Результат арифметичного виразу може набувати цілого чи речового значення.

До арифметичних операцій належать:

  • унарні операції: + , - для речових та цілих чисел;
  • бінарні операції: +, -, *, / для речових та цілих чисел;
  • бінарні операції: div, mod для цілих чисел.

Вирази та операції відносини

Вираз, що складається з операндів, пов'язаних операцією відносини, називається виразом відносини.

Дві операції відношення = і застосовуються до всіх типів, решта - до операндів простого типу та до рядків.

Операції відносини, шляхом порівняння двох операндів, дозволяють визначити істинно (true) або хибне (false) значення виразу.

Логічні висловлювання та операції

Вираз, що складається з операнда, пов'язаних логічними операціями, називається логічним виразом.

Операндами логічного вираження можуть бути лише дані типу boolean, результатом - значення істинно (true) або хибно (false).

До логічних операцій, які підпорядковуються стандартним правилам алгебри логіки, відносяться:

  • унарна операція not;
  • бінарні операції and, or, xor.

Логічні операції та, розглянуті вище, операції відносини широко застосовуються для реалізації розгалужуваних та циклічних алгоритмів.

Роутери