Логічні операції та циклічні програми. Тема 5
План 1. Складені логічні вирази (логічні операції not, and, or). 2. Застосування складених умов у задачах пошуку даних. 3. Цикл з параметром for. 4. Цикл з післяумовою repeat.
Складені логічні вирази – це прості логічні вирази, з'єднані логічними операціями not (не), and (і), or (або). Прості логічні вирази, які входять у складені, записують у круглих дужках.
Логічна операція not (не) • А – простий вираз • not – логічна операція Операція not, застосована до виразу А (not А), дає істинне значення, якщо вираз А хибний, і хибне, якщо вираз А істинний: А true false not A false true
not (5>7) – істинний • not (2<>2) • not(2=2) • not (3+2<0) • not (3>2) • not (7>5) • Істинний • Хибний
Визначення учнів, які не одержали оцінки “ 2” з інформатики • ос – позначення оцінки not (ос=2) або ос <> 2
Логічна операція and (i) • Використовується для запису подвійних нерівностей вигляду a
Операція and, застосована до двох виразів A and B дає істинне значення тоді й тільки тоді, коли вирази А та В істинні A false true B false true A and B false true
(5>7) and (7>5) Складений вираз є хибним (false), тому що перший простий вираз завжди хибний (false). Приклад: • month – номер місяця року • Умова: місяць є весняним • Логічний вираз: (month>=3) and (month<=5)
(10=4) and (7>4) – хибний • • • (2=2) and (2<>2) (7>2) and (5=5) (0>=0) and (2<>4) (3<2) and (3=3) (4<>2) and (1<>0) • • • Хибний Істинний
Логічна операція or (або) Використовується для опису сукупності нерівностей Приклад: • x<0; x>3 – сукупність нерівностей. • (x<0) or (x>3) – логічний вираз.
Операція or, застосована до двох виразів А or B, дає істинне значення тоді й тільки тоді, коли істинним є хоча б один з виразів. А false true B false true A or B false true
(5>7) or (7>5) – істинний (true) Складений вираз є істинним (true), тому що другий простий вираз завжди істинний (true). Приклад: • month – номер місяця року • Умова: місяць є літнім • Логічний вираз: (month=6) or (month=7) or (month=8)
Пріоритет логічних операцій 1) not 2) and 3) or Операції одного пріоритету виконуються по черзі зліва направо.
Нехай х – змінна цілого типу Вираз істинний лише для двох значень х: 0і 2 2 1 (x=0) or (x>1) and (x<3)
Логічний вираз істинний, якщо х набуде одного із значень 0, 1, 2, 5 3 1 2 (x=5) or not (x<0) and (x<=2) • Послідовність виконання логічних операцій можна змінити за допомогою круглих дужок. • Наприклад, вираз 3 2 1 (x=5) or not ((x<0) and (x<=2)) • істинний для всіх додатних значень змінної х
Застосування складених умов у задачах пошуку даних Умова: Протабулювати функцію y=sinx на проміжку [0, π] з кроком h=0, 1 і обчислити середнє арифметичне значень функції, більших від 0, 1 і менших від 0, 6.
Алгоритм програми program Find. Seredne; var x, y, s, s 1, h, xk: real; n: integer; begin x: =0; xk: =pi; h: =0. 1; s: =0; n: =0; while x<=xk+h/2 do begin y: =sin(x); writeln(x: 3: 1, y: 6: 2); if (y>0. 1) and (y<0. 6) then begin s: =s+y; n: =n+1 end; x: =x+h; end; if n=0 then writeln(‘Таких значень немає n=0'); if n>0 then begin s 1: = s/n; writeln (‘Середнє значення= ', s 1: 6: 2) end. x – значення х y – значення функції sinx s – сума всіх значень функції s 1 – середнє арифметичне h – крок табулювання. xk – кінцеве значення х n – кількість значень функції
Таблиця пріоритетів арифметичних і логічних операцій 1) () – спочатку виконуються дії в дужках 2) Функції, логічна операція not 3) *, /, div, mod, and 4) +, -, or 5) >, <, >=, <=, =, <>
Цикл з параметром for Якщо крок зміни параметра у циклі дорівнює 1, то замість команди while варто застосувати команду циклу з параметром for.
Задача про числа While program Table; uses Crt; var i: integer; begin clrscr; i: =20; while i<=30 do begin writeln(i: 4, i*i: 6, i*i*i: 8); i: =i+1 (наступне число) end; readln end. For program Table; uses Crt; var i: integer; begin clrscr; for i: =20 to 30 do writeln(i: 4, i*i: 6, i*i*i: 8); readln end.
Цикл з параметром for <параметр і> : = a to b do <команда> • Дія команди: а та b – цілі числа або вирази, а параметром є змінна і. • Замість <команди> може бути одна проста або складена команда. • Команда виконується для значення параметра і=а, потім для і=а+1 і так доти, доки і<=b
Часткові випадки • Якщо a=b, то цикл виконується один раз. • Якщо a>b, то цикл не виконується жодного разу. • Правило: крок зміни параметра у циклі for мови Паскаль може бути тільки 1. Значення параметра збільшується на 1 автоматично. Тому команду i: =i+1 у тілі циклу не пишуть.
Виведення значення у гривнях program Bank; var d: integer; gr: real; begin writeln(‘Долар Гривня'); for d: =1 to 10 do begin gr: =7. 9*d; writeln(d: 3, gr: 10: 2) end; readln end.
Графічні схеми циклу з параметром for <параметр і> : = a to b do <команда> i: =a, b Команда
Блок-схема алгоритму “Сума 100” Початок program Suma 100; var s, n: integer; begin s: =0; for n: =1 to 100 do s: =s+n; writeln(‘Сума= ', s: 5) end. Сума: =0 Число: =1, 100 Сума: = Сума + Число Сума Кінець
Обчислення елементів послідовності • Умова: елементи числової послідовності описуються формулою a 1=1+3 cos 2 i. Обчислити та вивести на екран номери і значення перших n=10 елементів. program Elements; var i, n: integer; a: real; begin n: =10; for i: =1 to n do begin a: =1+3*cos(2*i); writeln(i: 4, a: 15: 2) end.
Пошук заданих елементів Умова: скільки елементів послідовності a 1=1 -cosi, де i = 1, 2, …, 20, задовольняють умову 00) and (a<1) then k: =k+1 end; writeln('kilkist=', k: 2); readln end.
Зворотна форма команди for <параметр>: =<вираз 1> downto <вираз 2> do <команда> Приклад: Умова: вивести на екран числа від 1 до 10 у зворотному порядку: for i: =10 downto 1 do write (i: 3).
Цикл з післяумовою repeat <команди> until <логічний вираз> • Дія команди: спочатку виконуються зазначені команди, а пізніше перевіряється логічний вираз. Якщо він істинний, то виконання циклу завершується, якщо ні, то цикл продовжується. • Логічний вираз тут описує умову виходу з циклу.
Обчислити суму перших 10 цілих чисел while repeat цикл з передумовою цикл з післяумовою s: =0; n: =1; while n<10 do s: =s+n; n: =n+1 write(s); s: =0; n: =1; repeat s: =s+n; n: =n+1 until n>10; write(s);
Вивести символи латинського алфавіту s: =‘A’; repeat write(s); s: =succ(s) {беремо наступне значення s} until s>’Z’;


