загрузка...
загрузка...
На головну

Арифметичні вирази і операції

  1. I. Психологічні операції в сучасній війні.
  2. II. Виберіть слово або вираз (a, b, c), значення якого подібно значенням слова або виразу (1-6).
  3. IV. Основний парадокс рефлексивної кооперації: неможливість взаєморозуміння. способи подолання
  4. VI. Розчини. Способи вираження концентрації
  5. А. Методики впізнання емоційного вирази облич на фотографіях
  6. Активні операції банків
  7. акцептні операції

У вищеописаної програмі використовувалася тільки одна арифметична операція - складання. Але в мові Паскаль, природно, використовуються і інші арифметичні операції. Ось їх перелік:

+ складання; - Віднімання; * Множення; / Поділ;

div - цілочисельне ділення; mod - Знаходження залишку від цілочисельного ділення.

Перші чотири операції виконуються так само, як у звичайній арифметиці. Єдине, на що слід звернути увагу: знаки множення і ділення відрізняються по написанню (замість прийнятих в математиці знаків. Крім того, знак множення між співмножники не можна опускати, як це часто робиться в математиці. Запис ab, Яка в математиці може позначати твір двох чисел aи b, Компілятором мови Паскаль буде сприйнята як ім'я змінної, що складається з двох букв, що призведе до помилки в роботі програми. Що ж стосується цілочисельного ділення, то воно виконується як звичайне, але потім відкидається дрібна частина отриманого при діленні числа. операції div и mod виконуються тільки над змінними і константами цілого типу.

Приклад використання дій div і mod:

значення виразу 91 div 8 дорівнює 11;

значення виразу 91 mod 8 дорівнює 3.

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

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

5 + 3 * (7 + 2) - 40 div 4

Перш за все, обчислюється вираз, що знаходиться в дужках - його значення дорівнює 9. Потім зліва направо виконуються наступні дії: множення вираження в дужках на 3 (отримуємо 27) і цілочисельне ділення (отримуємо 10). На завершальному етапі складаємо 5 і 27 і віднімаємо з суми 10. В результаті отримуємо кінцевий результат - 22.

Говорячи про арифметичні виразах, необхідно відзначити також наступне: добре знайомий нам оператор Writeln може виводити не тільки тексти і значення змінних, але і значення арифметичних виразів, в які можуть входити змінні і константи. Ці вирази в операторі Writeln записуються подібно іменам змінних в дужках, але без лапок. Комп'ютер спочатку підрахує значення виразу, а потім покаже результат, на екрані. Наприклад, якщо ми в будь-якій програмі дамо змінним x и y значення 20 і 30, а потім оператором Writeln виведемо на екран комп'ютера вираз x + y:

x: = 20;

у: = 30;

writeln (x + y);

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

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

7.3.4. Використання дійсних чисел

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

Речові числа в Паскалі можна записувати двома способами - у вигляді з фіксованою точкою і в вигляді з плаваючою точкою. Запис з фіксованою точкою схожа на звичайну запис десяткового дробу в математиці, тільки ціла частина від дробової відокремлюється НЕ коми, а точкою. Наприклад, число 10,23 у вигляді з фіксованою точкою записується як 10.23.

Іншим способом подання дійсних чисел є запис з плаваючою точкою. У цьому випадку число представляється як добуток двох співмножників - m · 10n , де m- Мантиса числа, а n - Порядок числа. Мантиса - це ціле число або дійсне число з фіксованою точкою, яка може приймати значення в діапазоні від 1 до 10. Показник може бути тільки цілим числом. Саме в такому вигляді за замовчуванням виводяться на екран комп'ютера речові числа, причому запис у вигляді з плаваючою точкою буде виглядати наступним чином - mEn, де E замінює собою підставу ступеня - число 10. Перед показником вказується його знак. Число 125.73 (далі в посібнику ми будемо використовувати саме такий запис десяткових дробів) у вигляді з плаваючою точкою буде записано як 1.2573000000E + 02, тобто 1.2573·102, А число 0.00441 буде записано як 4.4100000000E-03, тобто 4.41·10-3. Як приклад використання речових змінних розглянемо задачу обчислення обсягу паралелепіпеда, де його висота, довжина і ширина - речові числа (ріс.7.3.5). У програмі, написаній для вирішення даного завдання, використовуються 4 змінні. Всі вони описані як речові. це l - Довжина паралелепіпеда, w - Його ширина, h - Висота і v - Шуканий обсяг. Вихідні дані вводяться за допомогою операторів Readln. Потім обчислюється твір цих трьох величин і присвоюється змінної w, Значення якої виводиться оператором Writeln. При введенні в комп'ютер вихідних даних не забуваємо відділяти цілу частину числа від дробової частини числа точкою. При довжині паралелепіпеда, дорівнює 4.2, ширині - 2.5, і висоті - 1.8 отримаємо наступний результат, показаний на рис. 7.3.5. Як і слід було очікувати, результат виведений у вигляді з плаваючою точкою. Хотілося б бачити результат обчислень в більш звичній для нас формі. На цей випадок у мові Паскаль передбачена можливість форматированного виведення, тобто програміст може сам визначати зовнішній вигляд виведеного значення дійсної змінної. Для цього в операторі виведення після імені змінної потрібно поставити двокрапку. Після двокрапки вказується загальна кількість символів, що відводиться під значення даної змінної, далі ставиться ще одне двокрапка, а потім вказується кількість цифр у дробовій частині числа. Не потрібно забувати при цьому, що одну позицію потрібно залишити для точки. Наприклад, якщо ми хочемо, щоб в програмі виводиться на екран значення деякої змінної t, Що відноситься до матеріального типу, займало 8 позицій, з яких 3 відводиться під дробову частину, 1 - під десяткову точку, а 4 - під цілу частину, то ми запишемо наші побажання в операторі виведення наступним чином: Writeln (t: 8: 3);

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

Виходячи з вищесказаного, в нашій програмі оператор виведення можна змінити наступним чином:

Writeln ( 'Обсяг паралелепіпеда дорівнює', v: 6: 2);

тобто під значення змінної буде використано 6 символів, в тому числі 3 символу для цілої частини, 1 - для точки і 2 для дробової частини. Тоді при тих же вихідних даних результат буде виведений в наступному вигляді: Обсяг паралелепіпеда дорівнює 18.90

тобто результат буде представлений у вигляді, зручному для сприйняття людиною.


Мал. 7.3.5. Програма обчислення обсягу паралелепіпеда

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

У Паскалі є спеціальні процедури дозволяють перетворювати один тип даних в інший.

Trunc -перетворює дійсне число в ціле шляхом відкидання дробової частини. наприклад: trunc(6.72) = 6.

Round - Перетворює дійсне число в ціле шляхом округлення. наприклад: round(6.72) = 7 і round(-6.72) = - 6.

Chr і Ord -перетворять символьне значення в ціле і навпаки.

7.4. Використання можливостей інтегрованого середовища програмування

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

7.4.1. Редагування тексту редактором системи Турбо Паскаль

Цей редактор, команди якого знаходяться в розділі меню Edit, Дозволяє не тільки набирати текст програми, але і швидко переміщатися по тексту, а також коригувати текст програми, тобто вносити в нього необхідні виправлення.

Для початку успішної роботи в редакторі розберемо основні команди, що дозволяють переміщатися по тексту. Переміщення курсору на одну позицію вліво або вправо, або на один рядок вгору або вниз здійснюється натисканням відповідних клавіш зі стрілками на клавіатурі. Для того щоб переміститися по тексту не так на один символ, а відразу на ціле слово вліво потрібно натиснути клавіші Ctrl + «Стрілка вліво», для переміщення на одне слово вправо - Ctrl+ «Стрілка вправо». Якщо потрібно перейти на початок поточного рядка, натискаємо клавішу Home, Перехід в закінчення поточного рядка виробляється натисканням клавіші End. натискання клавіші Page Up дозволяє переміститися по тексту на один екран вгору, клавіші Page Down - На екран вниз. Програми на мові Паскаль можуть бути досить великими за обсягом і не поміщатися на одному екрані. У такому випадку для того, щоб потрапити в початок програми потрібно натиснути комбінацію клавіш Ctrl + Page Up, А для того, щоб переміститися в кінець програми натиснути комбінацію Ctrl+Page Down.

Крім використання перерахованих вище клавіш і їх комбінацій для переміщення по тексту програми в ряді випадків зручно користуватися мишею. Зокрема, для того щоб встановити курсор в будь-яке місце в межах поточного екрану, достатньо помістити туди покажчик миші і зробити один клацання лівою кнопкою. Якщо програма має досить великий обсяг, то для перегляду її вмісту за допомогою миші зручно використовувати скролери. Скроллером або смугою прокрутки називаються смуги (на екрані системи Турбо Паскаль вони - бірюзового кольору), що знаходяться праворуч або знизу від основної робочої області екрану. На кожному з скроллером знаходиться невеликий прямокутник, званий ліфтом або бегунком. Вхопившись покажчиком миші за ліфт і перетягуючи його вздовж скроллера, можна швидко прокручувати текст програми, як у вертикальному, так і в горизонтальному напрямку.

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

Виділення фрагмента у всіх цих випадках проводиться однаково. Курсор встановлюється на який-небудь символ, що відноситься до його виділяє фрагменту, а потім, утримуючи клавішу Shift натискається потрібну кількість разів клавіша «стрілка вліво» чи «стрілка вправо». При цьому відповідно виділений фрагмент розширюється вліво або вправо. При цьому виділений текст буде відображатися на синьому, а на сірому тлі. У разі якщо виділяється фрагмент містить не один рядок або частину рядка, а кілька рядків слід натиснути потрібну кількість разів клавішу «стрілка вгору» або «стрілка вниз», в результаті чого виділений фрагмент розшириться вгору або вниз. Для виділення фрагмента можна використовувати і миша. Для цього слід при натиснутій лівій кнопці миші «протягнути» покажчик миші по його виділяє фрагменту, а потім, коли виділення завершено, відпустити цю кнопку.

У тому випадку, якщо виділений фрагмент тексту необхідно видалити, для цього потрібно розкрити розділ меню Edit і дати команду Clear (Очистити) або натиснути комбінацію клавіш Ctrl + Del. Якщо ж потрібно видалити тільки один рядок, то для цього достатньо помістити курсор на удаляемую рядок і натиснути клавіші Ctrl + Y. При необхідності вставити додаткову порожню рядок перед поточним рядком, слід скористатися комбінацією клавіш Ctrl + N.

Якщо ж потрібно виділений фрагмент тексту перемістити або скопіювати, то користуються буфером обміну. Буфером називається спеціальна область оперативної пам'яті комп'ютера, яка використовується для тимчасового зберігання різної інформації. Принцип роботи з буфером полягає в наступному: спочатку в нього заноситься будь-яка інформація, зокрема фрагмент тексту (який повинен бути перед цим попередньо виділений). При переміщенні фрагмента, він спочатку вирізається з того місця програми, де він до цього перебував. Видалення фрагмента в буфера проводиться командою Cut, Що знаходиться в розділі Edit(Аналогічний результат отримаємо, натиснувши комбінацію клавіш Shift + Del). При копіюванні сам фрагмент залишається на місці, а в буфер відправляється лише його копія. Копіювання фрагмента в буфер виконується командою Copy з того ж розділу меню (або комбінацією клавіш Ctrl + Ins). Потім, по команді вставки, інформація, що зберігається в буфері, вставляється в інше місце даної програми або в іншу програму, причому вставка проводиться туди, куди в даний момент встановлено курсор. Команда вставки називається Paste(Її аналогом є поєднання клавіш Shift + Ins) І виконується тільки в тому випадку, якщо буфер обміну не порожній.

При роботі з буфером в системі Турбо Паскаль необхідно пам'ятати, що при копіюванні або переміщенні в нього будь-якої нової інформації, вона записується в кінець буфера, слідом за старою інформацією, що раніше в ньому зберігалася. Тому, щоб не заплутатися при роботі з буфером, перед тим, як що-небудь в нього записувати, корисно переглянути його вміст командою show clipboard (Перегляд буфера). При цьому на екрані комп'ютера з'явиться вікно, з перебувають в буфері текстом. Очистити вміст буфера можна командою Clear.

Якщо в процесі редагування Ви зробили помилку, то можна скасувати остання зміна в тексті за допомогою команди Undo. Якщо ж Ви вирішили повторити дію, яку, то це можна зробити командою Redo.

Говорячи про редагування тексту вбудованим редактором необхідно відзначити ще один момент. Введення тексту в даному редакторі може проводитися в двох режимах: вставки і заміни. За замовчуванням використовується режим вставки, в якому при введенні будь-якого тексту в середину рядка текст, розташований праворуч від поточної позиції курсора, зсувається, звільняючи місце для вставки нового тексту. Якщо при роботі в редакторі натиснути клавішу Ins, То замість режиму вставки буде встановлений режим заміни, про що свідчить зміна зовнішнього вигляду курсора. Курсор, який мав форму горизонтальної риси, тепер буде виглядати як прямокутник. При роботі в режимі заміни введення нового тексту в середину рядка буде супроводжуватися автоматичним видаленням старого тексту, поверх якого з'являється новий. Такий режим зручніше використовувати при коригуванні тексту, так як не потрібно витрачати час на попереднє видалення старого тексту. Якщо необхідно знову повернутися до режиму вставки, то для цього потрібно знову натиснути ту ж клавішу Ins.

7.4.2. Робота з довідковою системою

Система програмування має потужну, велику і розгалужену довідкову систему і може надати своєчасну і ефективну допомогу при створенні програм.

Єдиним недоліком довідкової системи для російськомовного користувача є те, що вона не русифікована (вся довідкова інформація видається тільки на англійській мові) / Допомога, яку надає довідкової системою користувачеві, може бути надана декількома способами. По-перше, інформацію можна отримати через системне меню, в якому є розділ Help. У цьому розділі є ряд пунктів, найважливішими з яких є Contentsи Index. Contentsвідкриває вікно, що містить основне зміст довідкової системи, що включає розділи How to Use Help(Як працювати з довідковою системою), Menus and HotKeys (Робота з меню і використання функціональних клавіш і комбінацій клавіш), Editor Commands (Довідка по роботі з текстовим редактором), Functions and Procedures (Функції та процедури Паскаля), Error messages (Розшифровка повідомлень про помилки), Reserved words (Список зарезервованих слів з описом їх значень і застосування) та інші. При відкритті кожного з цих розділів виводиться докладна текстова інформація по відповідній темі.

При активізації пункту Indexкористувач отримує доступ до вікна з алфавітним списком термінів, які використовуються в системі програмування. Цей список схожий на предметний покажчик, розташований в кінці книги, але він має деякі відмінні риси. По-перше, для того, щоб знайти цікавий для Вас термін не обов'язково прокручувати весь список. Досить набрати на клавіатурі початкові слово, що цікавить Вас слова. По-друге, даний список є гіпертекстових. Гіпертекстом називається текст, який має посилання на інші тексти. Так, якщо два рази клацнути мишею на будь-якому з наявних у списку термінів або навести на цей термін курсорну рамку і натиснути клавішу Enter,то в діалоговому вікні системи Helpз'явиться детальна довідкова стаття про нього. Крім того, в більшості випадків буде наведено список розділів, пов'язаних за змістом з даною темою, і зразки програм, в яких цей термін використовується.

Наприклад, якщо ми хочемо отримати довідку по роботі з оператором Read, потрібно клацнути в розділі меню Helpмишею пункт Index, Потім досить набрати перші букви - Re, Щоб курсорними рамка встановилася на слово Read і натиснути Enter. В результаті з'являється текстове вікно, в якому детально описується використання оператора Read(Зокрема зі статті можна дізнатися, що Read - Це не просто оператор, а стандартна процедура Паскаля), наводиться список «родинних» даної теми статей довідкової системи (ReadKey, Readln, Write, Writeln) І вказується, що в довідці є приклад програми (по-англійськи - sample code), Де використовується оператор Read.


Ріс.7.4.1. Вікно змісту довідкової системи і вікно контекстної допомоги

для оператора Read приклад такої програми міститься в файлі Eof.pas. Щоб переглянути його текст достатньо двічі клацнути мишею її назву.

Крім вищеописаного способу отримання інформації через системне меню існує ще один (в ряді випадків він є більш швидким і зручним) - використання контекстної підказки. Прикметник «контекстна» означає - що відноситься до даного випадку, до даної ситуації.

натиснувши клавішу F1, Ви можете отримати довідку по тому режиму роботи (робота в текстовому редакторі, відкриття файлу, збереження файлу) який встановлений в даний момент. Наприклад, якщо ми стикаємося з будь-якими труднощами в процесі збереження файлу, то досить, знаходячись у вікні збереження файлу, натиснути F1, Щоб отримати довідку саме з даного питання (ріс.7.4.1).

Нарешті, якщо Ви зіткнулися з проблемою при використанні будь-якого службового слова, то потрібно встановити на нього курсор і натиснути комбінацію клавіш Ctrl + F1. В результаті Ви побачите довідкову статтю, присвячену використанню даного слова. Наприклад, якщо у користувача в ході складання програми виникли труднощі при використанні оператора Readln, то досить набрати в тексті програми слово Readln і натиснути Ctrl + F1для того, щоб на екрані з'явилося вікно довідки з відповідною статтею. Така стаття крім основного тексту містить також посилання на файл Readln.pas, Де міститься зразок програми з використанням даного оператора.

7.4.3. Робота з вікнами

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

Система програмування Турбо Паскаль дозволяє протягом одного сеансу працювати з декількома файлами. Якщо під час сеансу роботи в системі Ви створюєте новий файл або відкриваєте вже існуючий, то при цьому відкривається відповідне даного файлу нове вікно. Одне з вікон є активним і знаходиться на передньому плані. Таке вікно має два керуючих елемента, один з яких дозволяє закрити вікно (квадратик в лівій верхній частині вікна), а інший - розгорнути вікно на весь екран (стрілка в правій верхній частині вікна). Якщо вікно вже розгорнуто на весь екран, то розвертає елемент змінюється відновлюючу, який дозволяє повернутися до вихідного розміру вікна. Цей елемент теж має форму стрілки, але двобічної. Для кожного вікна з програмою або результатами роботи в правому верхньому кутку вказується його порядковий номер.



Ріс.7.4.2. Розташування вікон на екрані каскадом (вгорі) і черепицею (внизу)

Діалогові вікна, на відміну від вікон програм, мають тільки закриває елемент і не мають порядкового номера.

Для управління розташуванням вікон на екрані, їх розмірами, переходу між вікнами використовуються команди розділу меню Window. Команди цього меню дозволяють розташовувати вікна на екрані двома різними способами: каскадом (команда Cascade) І черепицею (команда Tile). При розташуванні вікон каскадом одне (активне) вікно знаходиться на передньому плані, а для інших вікон виводяться тільки їх заголовки (ріс.7.4.2). Цей спосіб розташування вікон застосовується за замовчуванням. Якщо під час сеансу роботи в системі програмування необхідно зробити активним інше вікно, то слід клацнути мишею його заголовок, в результаті чого це вікно стане активним, а від попереднього активного вікна буде видно тільки заголовок, хоча воно і не буде закрито.

Якщо потрібно зробити активним попереднє по порядковому номеру вікно, то використовується команда Previous, Якщо активним має бути наступне по порядку вікно, то - команда Next(Тут мається на увазі порядок відкриття вікон в ході поточного сеансу роботи в системі).Якщо активне вікно більше не потрібно, то його можна закрити командою Close.

Для того щоб переглянути список усіх відкритих вікон, застосовується команда List.За цією командою на передній план виводиться діалогове вікно, в якому перераховані всі вікна, причому першим в списку йде вікно, яке було відкрито останнім. Якщо будь-яка з наявних у списку вікон потрібно закрити, то для цього його потрібно виділити курсорною рамкою і клацнути екранну кнопку Delete,в результаті чого вікно буде видалено зі списку і закрито.

Для розташування декількох вікон таким чином, щоб вони не перекривали один одного, використовується команда Tile(Ріс.7.4.2). В цьому режимі користувачеві буде видно всі відкриті в даний момент вікна, кожне з яких при цьому буде займати тільки частину екрану. Одне з вікон є активним. Його можна визначити за наявністю в ньому керуючих елементів і скроллером. Інша вікно можна зробити активним клацанням по його заголовку (як і при розташуванні вікон каскадом), але при цьому попереднє активне вікно залишається на екрані і зберігає свої розміри і місце розташування.

Якщо користувачеві необхідно активне вікно розгорнути на весь екран, то для цього він повинен дати команду Zoom. Якщо ж бажано бачити всі відкриті вікна, але при цьому користувач хоче змінити їх взаємне розташування або розміри вікон, то слід скористатися командою Size / Move. Після виконання цієї команди система переходить в спеціальний режим (про що свідчить зміна кольору заголовка активного вікна - з білого він стає зеленим). У цьому режимі можна пересувати вікна по екрану клавішами «Стрілка вгору», «Стрілка вниз», «Стрілка вправо», «Стрілка вліво». Якщо потрібно збільшити або зменшити розміри вікна, то для цього слід використовувати комбінації клавіш Shift+ «Стрілка вгору», Shift + «Стрілка вниз», Shift + «Стрілка вправо», Shift+ «Стрілка вліво». Підтвердження зроблених змін здійснюється натисканням клавіші Enter. Для виходу з режиму переміщення і зміни розмірів вікон натискаємоклавішу Esc.

У разі якщо користувач хоче закрити всі відкриті під час сеансу роботи вікна, то він повинен скористатися командою Close all.

7.5. Умовні оператори та оператор безумовного переходу

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

< - Менше, > - Більше, = - Одно,

<= - менше або дорівнює, > = - більше або дорівнює, <> - не дорівнює.

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

Почнемо розгляд умовних операторів з більш простого випадку, коли в разі істинності перевіряється відносини виконується один варіант дій, а в іншому випадку інший варіант. Такий вибір подальшого ходу дій реалізується за допомогою умовного оператора If.

7.5.1. оператор If

Загальний вигляд оператора ifнаступний:

if <Умова>then <Варіант 1>else <Варіант 2>.

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

Класичним прикладом використання оператора if є програма, що визначає більше з двох введених чисел. Для наочності рішення даної задачі запишемо попередньо алгоритм її вирішення у вигляді графічної схеми (рис. 7.5.1), а потім реалізуємо його у вигляді комп'ютерної програми. Спочатку вводяться два числа a и b (Введення записаний в верхньому параллелограмме), потім перевіряється істинність умови a> b (Перевірка записана в ромбі). Якщо дана умова істинно, то на екран комп'ютера виводиться число a, Яке є великим (виконується операція, зазначена в лівому нижньому параллелограмме), якщо ж умова помилкова, то на екран виводиться є великим число b(Здійснюється операція, записана в правому нижньому параллелограмме).

 початок
 Введення a, b
 a> b
 висновок a
 висновок b
 кінець
 Так
 немає

Мал. 7.5.1. Графічна схема визначення більшого з двох чисел

Тепер від графічної схеми перейдемо до програми, зображеної на рис. 7.5.2. У цій програмі спочатку вводяться значення змінних a и b. Потім за допомогою умовного оператора if проводиться перевірка умови a> b і виконується або оператор виведення writeln, записаний після службового слова then, або той оператор виведення, який знаходиться після службового слова else. Зверніть увагу на те, що хоча конструкція if .. then .. elseрозташована в трьох рядках вона є єдиним оператором.

Цей вид умовного оператора є повною форму, але така форма його записи не є єдино можливою. Поряд з нею в мові Паскаль використовується і скорочений умовний оператор. Такий оператор має наступний загальний вид:

if <Умова> then <Дію>;

Скорочений умовний оператор працює наступним чином. Якщо умова, що міститься після службового слова if, Істинно, то виконується дія, записане після then, А якщо умова помилкова, то в умовному операторі не виконується ніяких дій, і програма переходить до виконання наступного оператора, розташованого слідом за даними умовним оператором.



Мал. 7.5.2. Програма визначення більшого з двох чисел і результати її роботи

Як працюють скорочені умовні оператори, розберемо на прикладі наступної задачі: нам потрібно відшукати найбільшу кількість цього разу серед трьох введених з клавіатури чисел. Оригінальний текст програми, яка вирішує це завдання, і приклад її роботи наведені на рис. 7.5.3.

Мал. 7.5.3. Програма визначення найбільшого з трьох чисел і результати її роботи

У даній програмі операторами readln виробляється введення вихідних даних - трьох чисел, які присвоюються змінним x, yи z.

В результаті послідовного виконання двох скорочених умовних операторів ми отримаємо в змінної max шукану величину - найбільше з трьох чисел. Залишається тільки вивести значення змінної max оператором writeln на екран комп'ютера - це і буде рішення поставленого завдання.

Нерідко в ході розробки програм виникає необхідність розмістити в одній або обох гілках умовного оператора не одне, а цілий ряд дій. В такому випадку в якості варіантів дій, які перебувають в гілках умовного оператора використовують не прості, а складові оператори, які поміщаються в програмі після службових слів then або else.

Складовою оператор являє собою групу операторів, розміщену між службовими словами begin и end.слова begin и end,звані в даному випадку операторними дужками, позначають тут не початок і кінець основної частини програми, а початок і кінець складеного оператора. Між ними можуть розташовуватися різні оператори: Кількість простих операторів, що входять в складовою необмежена.

Оператори, що входять в складений оператор, відокремлюються одна від одної крапкою з комою. перед словом end крапка з комою не ставиться. Не ставиться в даному випадку крапка з комою і після слова endперед словомelse , так як end позначає тут лише кінець одного з варіантів, що входять до складу єдиного умовного оператора. Таким чином, в загальному вигляді структуру умовного оператора зі складовими операторами в його гілках можна представити таким чином:

if <Умова> then

Begin

<Оператор 1>; <Оператор 2>; ........... <Оператор m>

End

Else

Begin

<Оператор 1>; <Оператор 2>; ........... <Оператор n>

End;

Розглянемо використання складеного оператора для вирішення наступного завдання. Адміністрація магазину ввела правило, згідно з яким кожен покупець, який придбав товар на суму понад 1000 рублів має право на трипроцентну знижку від вартості покупок .. Ця програма повинна підраховувати величину знижки і ту суму, яку повинен сплатити покупець з урахуванням знижки. У разі ж якщо вартість покупок менше 1000 рублів програма повинна видавати повідомлення про те, що покупка повинна бути оплачена повністю.

Програма для вирішення цього завдання наведена на рис. 7.5.4. У цій програмі використовуються три змінних дійсного типу: sum - Сума покупки без урахування знижок, skidka - Величина трехпроцентной знижки, sumsk - Вартість покупки з урахуванням знижки.

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

На рис. 7.5.4 під текстом програми наведені результати її роботи для обох можливих випадків (сума більше 1000 і сума менше 1000).




Мал. 7.5.4. Програма, яка визначає знижку при покупці товарів в магазині і результати її роботи при різних вихідних даних

7.5.2. Логічні змінні. Логічні операції

Результатом операції порівняння двох чисел може бути величина, яка приймає одне з двох можливих значень: «істинно» (якщо зазначене співвідношення дійсно виконується) і «хибно» (якщо співвідношення не виконується). По-англійськи «істинно» і «хибно» пишеться відповідно True и False. Константи і змінні, значеннями яких може бути тільки ці дві величини (True або False) називаються логічними чи Булевського константами і змінними. Назва це дано на честь англійського математика XIX століття Джона Буля. Для опису таких змінних в мові Паскаль існує спеціальний тип - boolean. Приклад опису логічної змінної flag:

var flag: Boolean.

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

flag: = x> = 15;

тобто змінної логічного типу flagми присвоюємо значення операції порівняння x> = 15. У разі, якщо вказане нерівність виконується, значення змінної дорівнюватиме true. В протилежному випадку її значення дорівнюватиме false. Ім'я логічної змінної, якій присвоєно значення операції порівняння, можна підставляти в умовний оператор замість самої цієї операції. Такий прийом дозволяє зробити програму більш компактною в тому випадку, якщо одна і та ж операція порівняння повторюється в програмі кілька разів. Значення логічної змінної можна виводити на екран комп'ютера оператором writeln подібно значенням числових змінних. Можна привласнювати значення true и false логічним змінним і безпосередньо: flag: = true;

Саме такий спосіб привласнення значень логічної змінної ми і використовуємо в наступній програмі. Ця програма перевіряє, чи є в ряду з трьох цілих чисел хоча б одна позитивна. Ці числа, як зазвичай, ми будемо вводити з клавіатури, а повідомлення про результати перевірки буде виведено на екран комп'ютера. У програмі, текст якої наведено на ріс.7.5.5 використовуються три змінні цілого типуx, y и z для вводяться числових значень і одна змінна логічного типу flag, Призначення якої в даній програмі ми розглянемо нижче. Опис змінної або змінних, що відносяться до одного типу, становить окрему групу, яку від наступної групи відокремлює крапка з комою. При цьому слово var, Що відкриває розділ опису змінних ставиться тільки один раз.

В основній частині програми змінної flag присвоюється початкове значення false. Слідом за оператором присвоювання в програмі йдуть три однотипних блоку, в кожному з яких обробляється одне з чисел, що вводяться. Кожен такий блок складається з оператора виведення, що пропонує користувачеві ввести число, оператора введення, що привласнює введене значення однієї із змінних цілого типу і скороченого умовного оператора, який перевіряє, чи є введене число позитивним або негативним. У разі, якщо число позитивне, змінної flag присвоюється значення true. У тому випадку, якщо число негативне, ніяких дій не проводиться .. Якщо ж немає позитивних чисел серед введених, то значення flag залишиться незмінним, тобто рівним false.




Мал. 7.5.5. Програма, яка визначає, чи є в ряду чисел позитивні, і результати її роботи при різних вихідних даних

Далі в програмі розташований повний умовний оператор, який перевіряє підсумкове значення змінної flag і якщо вона має значення true,то виводиться повідомлення про наявність серед введених чисел, хоча б одного позитивного, а інакше виводиться повідомлення про те, що всі введені числа негативні. На рис. 7.5.5 під текстом програми показані результати її роботи при різних вихідних даних.

Над величинами логічного типу можна виробляти логічні операції. Результатом логічних операцій можуть бути тільки логічні величини, тобто величини, що мають значення true и false. Всього в Паскалі використовується 4 логічних операції: not (НІ) логічний заперечення, and (І) - логічне І, or (АБО) - логічне АБО, xor (Що виключає Або). Ці операції підрозділяються на унарні, тобто такі, які виробляються тільки над однією величиною, і бінарні, тобто ті які виробляються відразу над двома величинами. До першого типу операцій відноситься not, До другого - всі інші. При виконанні логічних операцій дотримується, як і для арифметичних операцій, визначений пріоритет. Найбільш високим пріоритетом має операція not, Тобто вона виконується в першу чергу. Далі виконується операція and.

Найнижчий пріоритет мають операції orи xor. Якщо у виразі необхідно змінити порядок виконання логічних операцій, для цього використовуються дужки, бо вираз, укладену в дужки, володіє вищим пріоритетом.

Для логічних величин існує таблиці, в якій вказані результати логічних операцій при різних вихідних даних. Така таблиця називається таблицею істинності. Нижче наведена така таблиця для унарних (табл.1) і (табл.2) бінарних операцій.

Таблиця 1. Унарні операції.

X  Not (X)
 False  True
 True  False

З даної таблиці видно, що в результаті операції not,виробленої над будь величиною, її значення змінюється на протилежне.

Якщо розглянути результати, показані в таблиці 2, то можна зробити висновок про те, що для операції and значення дорівнюватиме true тільки тоді, коли обидві вихідних величини Xи Y, над якими проводиться ця операція (такі величини називаються операндами) мають значення true. У всіх інших випадках результатом операції буде false. для операції or значення буде true, якщо хоча б один з операндів (або X або Y) має значення true. результат операції or буде дорівнює false тільки тоді, коли обидва операнди мають значення false. для операції xor значення буде true, Якщо значення операндів не збігаються. Якщо ж значення операндів збігаються (незалежно від того, чи будуть ці значення рівні false або true) То підсумок операції буде дорівнює false.

Таблиця 2. Бінарні операції.

  Y  X and Y  X or Y  X xor Y
 False  False  False  False  False
 False  True  False  True  True
 True  False  False  True  True
 True  True  True  True  False

Логічні операції використовують при складанні програм, в яких потрібно перевірити відразу кілька умов. Наприклад, якщо деякий дія повинна виконуватися за умови, що значення змінної aзнаходиться в діапазоні від 5 до 20, тобто a має бути більше або дорівнює 5 і менше або дорівнює 20 то цю умову можна записати в такий спосіб:

(A> = 5) and (a <= 20).

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

7.5.3. оператор Case

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

Загальний вигляд оператора case наступний:

Case <Селектор> of

<Значення 1>: <Варіант1>;

<Значення 2>: <Варіант2>;

.......................................

<значенняn>: <варіантN>;

Else <Варіант N + 1>;

End;

де Case, of , Else - Службові слова мови Паскаль. словосполучення Case ofперекладається на російську як «В разі якщо». Селектором називається змінна цілого або символьного типу (про символьних змінних ми розповімо детальніше в розділі «Робота з символами і рядками»). Змінна-селектор може набувати різних значень. Після заголовка в операторі йде перелік можливих значень переменной- селектора. Кожному з цих значень відповідає певний варіант дій, який реалізується в тому випадку, якщо в програмі селектор приймає це значення. Цей варіант вказується після двокрапки, що відокремлює його від значення, і являє собою простий або складений оператор. Якщо змінна-селектор не приймає жодне з перерахованих в операторі case значень, то виконується альтернативний варіант, який вказаний після службового слова else.Зверніть увагу на те, що на відміну від умовного оператора if в операторі case перед варіантом з else ставиться крапка з комою. Ця частина оператора (elseз відповідним йому варіантом) не є обов'язковою. Можливий скорочений варіант оператора без цієї частини. закінчується оператор case службовим словом end, Після якого ставиться крапка з комою.

Розберемо наступний фрагмент програми, в якій використано оператора case:




Розрахунок процентних платежів | Розрахунок вартості інвестиції | Розрахунок тривалості платежів | портали | Інтернет-перекладачі | криптографічні засоби | Первинний ключ | Введення даних і створення необхідних об'єктів бази даних | Textcolor (lightgreen); | оператор присвоювання |

загрузка...
© um.co.ua - учбові матеріали та реферати