Статьи

Оператор циклу з передумовою має вигляд

  1. Статті до прочитання:

зміст

Робоча програма ...................................................... .. 3

Програмування на Паскалі .................................. 4

Вступ……………………………………………………………. 4

Найпростіші оператори мови .............................. 5

Організація розгалужень ........................................... 8

Логічні функції .............................................. 10

Організація циклів ............................................. .. 12

Масиви .................................................................. .. 19

Символьні дані .............................................. 25

Записи ........................................................................ 29

Файли ........................................................................ 29

Графіка ..................................................................... 36

Література ..................................................................... 40

Завдання на курсову роботу .................................... 40

РОБОЧА ПРОГРАМА

Метою дисциплін Алгоритмізація та основи програмування, Програмування на мовах високого рівня є поглиблення навичок з техніки програмування на ЕОМ.

МЕТА ТА ЗАВДАННЯ ДИСЦИПЛІНИ

Мета викладання дісціплінявляется поглиблення навичок з техніки програмування на ЕОМ.

Завдання вивчення дисципліни. Студент повинен:

МАТИ ПОДАННЯ: про сучасних алгоритмічних мовах.

ЗНАТИ: Інструментальні засоби мови Паскаль.

ВМІТИ: Програмувати на алгоритмічній мові Паскаль, включаючи постановку задачі, розробку алгоритму, складання програми, її налагодження і інтерпретацію результатів рахунки.

ПРИДБАТИ НАВИЧКИ: самостійної роботи на комп'ютері.

ТЕМАТИЧНЕ ЗМІСТ ПРОГРАМИ

1. Алфавіт мови. Константи і змінні. Типи даних.

2. Оператори введення-виведення. Оператор присвоювання. Основні функції.

3. Оператори аналізу умов. Логічні функції. Завдання з ветвлениями.

4. Побудова циклів, їх типи. Оператори циклів. Завдання на накопичення.

5. Робота з масивами.

6. Символьні функції. Робота з рядками.

7. Використання процедур.

9. Графічні засоби мови.

9. Записи. Робота з файлами.

Перелік рекомендованих лабораторних робіт

1. Програмування алгоритмів з ветвлениями.

2. Програмування циклів. Числові та функціональні ряди.

3. Робота з одновимірними і двовимірними масивами.

4. Робота з символьними даними.

5. Робота з графікою

6. Робота з файлами

Лабораторні роботи наведені в даній методичке під заголовком "Завдання для самостійного рішення" (@).

ЕКЗАМЕНАЦІЙНІ ПИТАННЯ З ДИСЦИПЛІНИ

На іспит виноситься один теоретичне питання з наступного списку і завдання для вирішення на комп'ютері.

Програмування процесів. Етапи вирішення завдань на ЕОМ. Типи алгоритмічних мов. Особливості вивчається. Оператор присвоювання. Оператор введення. Оператори виведення. Форматування виведення. Оператори переходу. Розгалужені програми. Ітераційні цикли. Арифметичні цикли. Оператор циклу. Робота з масивами. Методи угруповань. Організація процедур. Графічні оператори. Похибки при цифрових обчисленнях.

Програмування на алгоритмічній

мові Паскаль

1. ВВЕДЕННЯ

Алгоритмічні мови надають можливість людині керувати діями ЕОМ. Існує кілька таких мов, серед яких дуже популярним є Турбо Паскаль (далі просто Паскаль).

Сімволи.В Паскалі дозволені наступні основні символи: 1. Букви латинського і російської мов (кирилиця використовується тільки в константах). 2. Цифри. 3. Символи: + - * / =. , () [] '; ^: І інші.

Операції. Арифметичні: +, -, * (множення), / (речовий поділ). Операції відносин: =,, = (більше або дорівнює),

div - цілочисельне ділення (дріб відкидається, наприклад 14 div 3 = 4),

mod - цілочисельний залишок від ділення (приклад 14 mod 3 = 2),

Змінні забезпечуються іменами, які можуть містити латинські букви, цифри і знаки підкреслення, але починатися ім'я має з букви. Програміст вибирає імена довільно, але таким чином, щоб вони вказували на зміст змінної. За кожною змінною комп'ютер закріплює одну комірку пам'яті. Великі і маленькі букви в іменах сприймаються комп'ютером однаково, тобто букви W і w позначають одну і ту ж змінну. Приклади імен: Х, y, A24, VES_Netto, MAXIMUM.

Типи змінних. Всім змінним в програмі попередньо повинні бути вказані типи. Ось найважливіші.

числовий цілий Integer (діапазон від -32768 до +32767)

числовий цілий довгий Longint (від -2147483648 до +2147483647)

числовий речовинний Real (від 2,9Е-39 до 1,7Е + 38)

символ Char (один символ)

рядок символів String (до 255 символів)

логічний Boolean (значення: true - істина, false - неправда).

Завдання типу проводиться оператором VAR. наприклад:

VAR a, d: INTEGER; x: REAL; d: STRING ;.

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

CONST b: INTEGER = 5; s: STRING = 'поле'.

Тут змінним надаються і типи та значення.

Вирази використовуються для відображення формул і записуються в рядок. Обчислення в них реалізуються зліва направо в загальноприйнятій послідовності: 1. обчислення функцій, 2. множення-ділення, 3. складання-віднімання. Порядок дій може бути змінений дужками. Наступний приклад ілюструють правила побудови виразів (зліва в рамці формула в звичайній записи, праворуч вираз на Паскалі):

e A / (3 * B) + X / (Y + 1) * 4 e A / (3 * B) + X / (Y + 1) * 4

Функції реалізують стандартні дії. Функції завжди містять дужки (крім Pi). Нижче показані найважливіші:

Функція Призначення Тіпаргумента Тіпрезультата Приклади abs (x) модуль х цілий / речовин. як уаргумента abs (-6) = 6 sin (x) синус кута х веществ.врадіанах речовин. cos (x) косинус кута х arctan (x) арктангенс х sqrt (x) квадратний кореньіз х (х? 0) цілий / речовин. як уаргумента sqr (x) квадрат х exp (x) ex речовин. речовин. ln (x) логаріфмнатуральний х (x0) int (x) ціла частина числа х int (1.2) = int (1.9) = 1 frac (x) дрібна частина числа х frac (2.5) = 0.5 odd (x) виявлення непарності х цілий логічний odd (3) = true pi число? = 3.14159 ... речовин. trunc (x) отбрасиваетдробную частина х речовин. цілий trunc (3.7) = 3 round (x) округлює вещественноех до цілого речовин. цілий round (3.7) = 4

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

речова змінна: = целочисленная змінна

(Наприклад a: = d). Таке перетворення називається неявним.

2. ПРОСТЕЙШИЕ ОПЕРАТОРИ МОВИ

Оператор - основна одиниця програми і має безліч різновидів. Розглянемо поки найпростіші.

Оператор присвоювання. Загальний вигляд оператора присвоювання:

uпеременная: = вираз

Такий запис означає, що вираз, що стоїть праворуч, обчислюється і його результат присвоюється змінної, що стоїть зліва. Приклади операторів: Z: = 2, А: = 3.5 + exp (8), S: = X * 4 + Y / 2.

Присвоєння не є рівністю в звичайному сенсі. Тут справа і зліва від знака одно можна вказувати одну й ту ж саму змінну. Наприклад, припустимо: М: = М + 2, X: = X / 3. Ці висловлювання слід розуміти так, що новий вміст комірки М дорівнюватиме старому, збільшеному на два, і нове Х дорівнюватиме старому, поділеній на три. Наприклад, якщо раніше було М = 3 і Х = 12, то після обчислень отримаємо М = 3 + 2 = 5 і Х = 12/3 = 4.

Оператор виводу. Для аналізу результатів обчислень необхідно вивести їх на зовнішній носій - папір або екран дисплея. Для цієї мети використовується оператор.

uWRITE (спісок_виводімих_переменних)

uWRITELN (спісок_виводімих_переменних)

Так оператор WRITELN (a, m) читається - "Друкувати змінні А, М".

Різниця двох форм оператора полягає в тому, що другий різновид після виведення даних переводить курсор на новий рядок (line). Оператор writeln може використовуватися і без аргументів (і без дужок). Тоді при виведенні буде формуватися тільки порожній рядок. У оператор можуть включатися не тільки змінні, але і константи і вирази. Наприклад, якщо Х = 12, а Y = 100, то застосування оператора WRITE ( 'X =', x, 'Y =', y, 'СУМА =', x + y) дасть такий результат: X = 12 Y = 100 СУМА = 112.

За допомогою оператора можна вказати не тільки що буде виведено, але і як, тобто відформатувати висновок. Після імені дійсної змінної можна (через двокрапку) задати два числа. Перше з них задасть загальну довжину виведення числа, друге - розмір дробової частини. Після імені цілочисельний змінної потрібно задати тільки одне число. Наприклад, оператор WRITE (k: 6, z: 8: 2) при виведенні відведе для цілочисельний змінної K 6 позицій, а для дійсної змінної Z - 8, з яких 2 під дробову частину. Зайві позиції, відведені під цілу частину, замість пробілами.

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

uREADLN (спісок_вводімих_переменних)

Зустрічаючи такий оператор, комп'ютер зупиняється і чекає вашого введення. Число вводяться за кількістю і типом повинно відповідати списку змінних. Якщо список містить більше однієї змінної, дії користувача залежать від типів, що вводяться. Числові значення поділяються натисканням Enter або пропуском, а в кінці Enter. Якщо вводяться дані типу char - символи набирати слід поспіль. Дані типу string розділяються пропуском. Оператор може і не мати аргументів зовсім (readln ()). Тоді все, що ви можете зробити, це натиснути Enter.

Приклад: READLN (r, l) .Дословно, оператор інтерпретується так: "Читати в пам'ять комп'ютера, введені з клавіатури, змінні R і L". Нехай в нашій програмі R = 5 і L = 8.4. Тоді користувач повинен ввести 5 і 8.4 через пробіл або Enter.

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

uEXIT - Оператор завершення використовується для примусового завершення програми / процедури в будь-якому її місці.

uREADKEY - Оператор очікування натискання клавіші може використовуватися для створення паузи в програмі, наприклад, для того, щоб розгледіти, що виведено на екрані.

uCLRSCR - Оператор очісткіосвобождает екран і встановлює курсор в лівий верхній кут.

Цей оператор і оператор readkey знаходяться в бібліотеці CRT Паскаля і, щоб ними скористатися, слід її підключити оператором USES CRT.

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

Операційні скобкііспользуются, щоб виділити деяку групу операторів як єдине ціле.

uBEGIN ... END

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

Запис операторов.Оператор може займати будь-яку кількість рядків і для перенесення на інший рядок не потрібно ніяких символів переносу. Всі оператори Паскаля завершуються знаком "крапка з комою". Однак після оператора begin і перед оператором end крапку з комою можна не ставити.

Структура програми на Паскалі має дві частини: описову (пункти 1,2,3) і обчислювальну і складається з наступних елементів (рис. 2.1):

1. Здається ім'я програми (необов'язково).

2. Приєднуються потрібні модулі та бібліотеки Паскаля (необов'язково).

3. Описуються всі беруть участь мітки, змінні, константи, типи і ін.

4. Оператором Begin відкривається обчислювальна частина.

5. Усередині блоку поміщаються оператори власне програми.

6 6. Оператором End (з крапкою) завершується вся програма.

Тепер напишемо просту програму (рис. 2.2) обчислення площі круга S довільного радіуса R за відомою формулою S =? R2. Програму назвемо KRUG. Змінні S і R позначимо як речові, оскільки вони можуть мати дробову частину. Введення радіуса здійснюється оператором readln (r). Щоб користувач розумів, що саме він повинен ввести, перш оператором write ( 'радіус =') на екран виводиться слово "радіус =". В кінці програми бачимо оператор readkey. Він потрібен для зручності налагодження. Зустрічаючи його, комп'ютер очікує від користувача натискання будь-якої клавіші. В цей час він може без поспіху оглянути результати рахунки. Якщо цього не зробити Паскаль відразу ж поверне нас у вікно редагування і тоді вікно видачі доведеться викликати клавішами Alt + F5, що незручно. Решта очевидно.

Зауваження. У текстах наступних прикладів для компактності ми не будемо використовувати оператори очищення екрана, затримки readkey і, в більшості випадків, оператори-підказки введення, однак студент повинен це робити.

ОРГАНІЗАЦІЯ розгалуження

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

Умовний оператор дозволяє виконувати деякі дії в залежності від заданих умов.

uIF логіческоеусловіе THEN оператор1 ELSE оператор2

Тут, якщо умова істинна, виконується оператор1, інакше оператор2 Тут, якщо умова істинна, виконується оператор1, інакше оператор2. Наприклад, оператор

IF ab THEN WRITELN ( 'А більше В') ELSE WRITELN ( 'А чи не більше В');

виводить словесне повідомлення про співвідношення змінних А і В.

Оператор може використовуватися і в усіченою формі без опції ELSE.

Інший приклад. На практиці іноді доводиться з'ясовувати кратність числа (наприклад Х) деякого іншого числа (Y). Це можна зробити за допомогою наступного виразу (обидва числа повинні бути цілого типу)

IF x MOD y = 0 THEN WRITELN ( 'X кратно Y')

ELSE WRITELN ( 'X не кратне Y')

Усюди, де в синтаксисі команд зустрічається слово "оператор", може бути записано будь-яке число операторів, укладених в операторні дужки BEGIN ... END.

Приклад. Напишемо оператор взяття кореня числа х з урахуванням його знака.

IF x0

THEN BEGIN y: = SQRT (x); WRITELN ( 'корінь =', y) END

ELSE WRITELN ( 'число негативно')

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

Всередину оператора if можуть бути вкладені інші if Всередину оператора if можуть бути вкладені інші if. Наприклад, нехай в послідовності чисел a, b, c потрібно вивести перше по порядку позитивне число. Якщо таких не виявилося, друкувати "Все числа менше 0". Програма справа.

Оператор безумовного переходу Оператор безумовного переходу. Оператор виду:

uGOTO меткаоператора

змушує програму виконувати не наступний один по одному оператор, а оператор з вказаною міткою. Наприклад, оператор GOTO m читається як "Йти до оператора з міткою m" і передає йому управління. Мітки повинні бути попередньо оголошені оператором label в розділі оголошень програми (в нашому випадку label m). Мітках можна давати довільні символьні або числові імена, важливо щоб все мітки були різними, тобто ніколи не збігалися в межах програми. В операторі, на який відбувається посилання, мітка ставиться перед ним і відділяється двокрапкою.

Дуже поширеною завданням є програмування алгоритмів з декількома наслідками - розгалужених процесів. Тут зручно (принаймні, на першому етапі) спочатку побудувати блок-схему, що дає наочне графічне представлення алгоритму. У блок-схемі окремі операції або їх групи поміщаються в прямокутні блоки. Операції аналізу відображаються ромбами. Позначення інших операцій буде розглянуто пізніше. Блок-схеми обрамляють блоки ПОЧАТОК і КІНЕЦЬ. Ми будемо зображати останні тільки в разі, якщо можливо різночитання.

Приклад 3-1 Приклад 3-1. Для довільного аргументу Х обчислити значення кусково-ламаної функції Y (X) (рис. 3.1а).

Відзначимо, що практично будь-яке завдання може бути запрограмована по-різному. Два таких рішення наведені в program p3_1 (рис. 3.1б і 3.1в). Другий варіант працює швидше оскільки, якщо виявлено що виконується умова, такі умови не перевіряються.

Приклад 3-2. Дано три довільних числа А, В, С. Скласти програму, яка аналізує їх і, якщо сума перших двох чисел не менше третього, а друге більше першого - видає повідомлення ВІРНО. Якщо хоча б одна з умов не виконується, - то повідомлення НЕВІРНО. Іншими словами

ВІРНО якщо А + В = C і В A "ВІРНО" якщо А + В = C і В A

"НЕВІРНО" - в іншому випадку

Незважаючи на просту умову, програма (program P3_2) вийшла досить заплутаною. При необхідності виконувати аналіз одночасно декількох умов зручно користуватися логічними функціями. Аргументами логічних функцій є висловлювання, які можуть бути або істинними, або хибними. До таких висловлювань належать операції відносини (так само, більше, менше і т.д.). Так, наприклад, ставлення виду Х = Y завжди може бути тільки істинним або тільки хибним.

ЛОГІЧНІ ФУНКЦІЇ

Функція одного аргументу НЕ (NOT) істинна тоді, коли хибна її аргумент (значення функції назад аргументу). Поведінка функції повністю описує таблиця. Наприклад, наступні два оператора ідентичні

if x = 10) then y = 5

Функцій двох аргументів. Функція І (AND) істинна коли істинні всі її аргументи. Функція АБО (OR) істинна, якщо правдивий хоча б один з аргументів. Якщо немає дужок, функції обчислюються в такій послідовності: НЕ, І, АБО. Значенням Істина і Брехня в Паскалі відповідають значеніяTrue і False.

аргу-мент функціяНЕ 1-йаргумент 2-йаргумент функціяй функціяй брехня істина брехня брехня брехня брехня істина брехня брехня істина брехня істина істина брехня брехня істина істина істина істина істина

Логічні операції мають пріоритет перед операціями відносини, тому, якщо таких умов кілька, останні беруться в дужки. Для ілюстрації знову розглянемо приклад 3-2. Рішення буде дуже компактним (допоміжні оператори опущені):

Readln (a, b, c);

if (a + b = c) and (ba) then writeln ( 'вірно') else writeln ( 'невірно');

Приклад. Для чисел А, В, С з'ясувати, чи правда що перше число найбільше, а останнє - найменше.

if (ab) and (ac) and (c

then writeln ( 'вірно') else writeln ( 'невірно');

Ще. Чи вірно, що серед чисел є негативні.

if (a

Ще. Чи вірно, що серед чисел рівно одне менше нуля.

if (a0) and (c0) or (a0) and (b0) or (a0) and (b0) and (c

then writeln ( 'вірно') else writeln ( 'невірно');

У цьому рішенні перебираються всі можливі, що цікавлять нас, комбінації змінних. Іноді простіше (див. Праворуч) скористатися непрямим способом, наприклад, збільшувати допоміжну змінну Х, кожен раз, коли зустрічається число менше нуля. Якщо в кінці виявиться, що Х = 1 означає, є рівно одне число менше нуля.

Якщо в кінці виявиться, що Х = 1 означає, є рівно одне число менше нуля

Оператор вибору (селектор) Оператор вибору (селектор) .При необхідності зробити вибір з багатьох альтернатив конструкція з вкладенням if стає дуже громіздкою. В цьому випадку корисним виявляється оператор case. Тут вираз може бути цілого або символьного типу. Якщо його значення дорівнює одній з констант, виконується відповідний оператор. Якщо жодна з констант не підходить, виконується оператор, наступний після слова else (якщо є). Будь-яка з констант може бути діапазоном (через дві точки) і / або безліччю констант (через кому). Будь-оператор може бути блоком begin і утримувати свої оператори case і if.

Приклад 4-1. Нехай потрібно по числу прожитих років Т віднести людину до якоїсь віковій групі. Рішення очевидно, але вимагає одного поясненні. Оскільки жінки і чоловіки йдуть на пенсію в різний час (55 і 60 років), крім віку потрібно враховувати і стать Р.

Приклад 4-2. Покладемо, введений якийсь знак в змінну S і його потрібно віднести до відповідної групи. Слід сказати, що латинські символи в символьної таблиці ПК знаходяться не разом. Поспіль йдуть літери з А по Z, потім йдуть не букви, потім букви від a до z. З огляду на це довелося вказати два діапазони констант ( 'A' .. 'Z', 'a' .. 'z'). Символи українського алфавіту складаються з ще більшої кількості діапазонів (див. Розділ 'Символьні дані').

@ Будинки для самостійного рішення

Завдання 4.1.Імеются числа a, b, c. З'ясувати, чи правда, що вони розташовані в порядку зростання.

Завдання 4.2.Виясніть, чи правда, що серед чисел a, b, c є хоча б одна негативна і одне позитивне (відповідь Так / Ні)

Завдання 4.3.Імеются числа a, b, c. Вивести їх в порядку зростання.

Завдання 4.4.Виясніть, чи правда, що серед a, b, c є точно один 0.

Завдання 4 Завдання 4.5.На рис. 4.1 зображені дві пересічні лінії Y1 = X2і Y2 = 1-X / 2. За довільним значенням координат деякої точки X і Y знайти область?,?,?,?, В якій знаходиться ця точка. Відповідь має бути виданий у вигляді числа 1, 2, 3, 4. Якщо точка знаходиться поза цими областей, відповіддю має бути вираз - "Поза областей".

Зараз визначимо тільки приналежність точки до області 2. Спочатку з'ясуємо діапазон зміни Х в області. Очевидно, він простягається від Х = 0 до координати Х, де перетинаються пряма і парабола (біла точка на малюнку). Щоб її знайти, треба прирівняти вирази для обох функцій X2 = 1-X / 2 і, перетворивши його в квадратне рівняння 2X2 + X2 = 0, обчислити лівий корінь Х = -1,28. Звідси можна записати -1,28

IF (-1,28

Завершіть рішення для інших областей.

Завдання 4.6.Іспользуя оператор CASE, написати програму, в якій вводяться два числа-операнда Х і Y і знак операції Z (+, -, /, *). Обчислити результат S в залежності від знака. Передбачити реакцію на можливий невірний знак операції, а також на введення Y = 0 при спробі виконати поділ ( 'Ділення на нуль неможливо')

ОРГАНІЗАЦІЯ циклів

У простих прикладах, розглянутих вище, взагалі кажучи, не було потрібно залучення програмування. Всі вони легко могли бути вирішені вручну або за допомогою калькулятора. Сила ЕОМ полягає в можливості простими засобами здійснювати багаторазове повторення заданих дій - циклів.

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

Приклад 5-1.Пусть для деякого безлічі чисел Х потрібно обчислити і віддрукувати функцію Х / 2. Введення і обчислення слід припинити після виявлення першого Х, рівного нулю. Очевидна наступна блок-схема (рис. 5.1а). Блоків введення, обчислення, друку і аналізу стільки, скільки чисел в послідовності до першого нуля. Чисел може бути дуже багато і подібний підхід, звичайно, неприйнятний, не кажучи вже про те, що заздалегідь невідомо, коли зустрінеться нуль.

Такі програми будуються по-іншому. Переробна частина циклу записується тільки раз, але охоплюється петлею повернення (рис. 5.1б). Тоді одні і ті ж оператори будуть виконуватися багаторазово доти, поки Х¹0. Для реалізації циклу тут знадобилася мітка (m).

@ Завдання 5.1.Наберіте програму Р5_1. Потім поліпшите її: введіть необхідні підказки, відформатуйте висновок, зробіть очищення екрана, введіть підрахунок кількості точок Х, для яких був обчислений Y. Видайте повідомлення "Х = 0" після закінчення програми.

Приклад 5-2. Нехай для аргументу Х в діапазоні 3? 9, потрібно обчислити значення функції Y = (X-6) 2, де Х змінюється з кроком 2 (рис. 5.2а, б). Праворуч від тексту програми зроблені викладки по перевірці рішення. У кожному рядку вручну обчислюється значення відповідної змінної. Перевірка виконується зверху-вниз, зліва-направо по ходу виконання програми. Стрілки показують зв'язки між циклами. Бачимо, що задана послідовність зміни Х (3,5,7, ...) спостерігається і останнім Y обчислюється для Х = 9. При наступному збільшенні Х воно стає рівним 11 і п'ятий цикл не виконується, оскільки Х9. Програма завершується. Слід зазначити, що немає ніякого технічно простого способу перевірки правильності написаних програм. Для цієї мети програмісту доводиться вручну по тексту програми розраховувати значення змінних і звіряти їх з бажаними (відомими з умови). Звичайно, перевірка виконується не для всієї завдання, а тільки для невеликого числа (наприклад, 3-х) початкових циклів і при цьому ретельно аналізується значення умови виходу з циклу (тут оператор IF).

Завдання 5.2. Обчисліть функцію в зворотному порядку. Підрахуйте середнє арифметичне всіх Х і Y (SX і SY).

Арифметичні цикли. Якщо кількість повторень відомо заздалегідь - такі цикли називаються арифметичними.

Приклад 5-3. Нехай в умовах попереднього прикладу не відомо граничне значення аргументу, але зате задано кількість точок аргументу - 4. Оскільки в даному випадку не задано останнє значення Х, ознака закінчення циклів доведеться формувати самим. Для цього вводиться змінна, яка фіксує число вже виконаних циклів - лічильник циклів (назвемо її I). У початковому стані (рис. 5.3) беремо його рівним 1. Після виконання чергового циклу лічильник бере зріст на одиницю (I = I + 1). На початку кожного циклу в операторі IF робиться перевірка на досягнення лічильником останнього дозволеного значення (у нас 4). Якщо I4) - рахунок припиняється. Поруч з програмою наведені викладки по її перевірці. Як бачимо, результат перевірки збігся з результатом, отриманим раніше. Очевидним що лічильник циклів I повинен бути цілого типу.

@ Завдання 5.3. Напишіть програму обчислення функції в зворотному порядку. Зробіть число точок не константою (4), а змінної N, що вводиться оператором read. При прогоні програми задайте N = 100. Оскільки весь результат тепер не вміщується на екрані, організуйте паузу при видачі кожних 20-ти рядків (знадобиться операція mod і readkey).

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

Оператор циклу for:

uFOR переменнаяцікла: = начальноезначеніе

ТО конечноезначеніе DO оператор

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

FOR a = 3 TO 7 DO WRITELN (a); FOR a = 3 TO 7 DO WRITELN (a);

дослівно інтерпретується наступним чином: "Оператор WRITELN після слова DO буде повторюватися стільки разів, скільки потрібно, щоб змінна А, змінюючись з кроком 1 від значення рівного 3, досягла 7". Тобто .: A = 3; 4; 5; 6; 7 і цикл буде виконано 5 разів.

Якщо після слова DO помістити конструкцію begin ... end, цикл може містити необмежену кількість операторів, наприклад

FOR i = 1 TO n DO BEGIN WRITELN (i); READLN (x) END;

Є форма оператора, що працює на спадання (крок дорівнює -1).

uFOR переменнаяцікла: = начальноезначеніе

DOWNТО конечноезначеніе DO оператор

Як параметри оператора циклу дозволені і вирази, наприклад, FOR c = b + 2 TO 4 * k DO ...

Важливо: всі параметри в операторі FOR повинні бути цілого типу.

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

Приклад 5-4. Нехай потрібно знайти суму N довільних цілих чисел Х. У програмі P5_4 сума накопичується в змінної S за допомогою оператора S = S + X. Початкове значення суми береться рівним нулю (S = 0).

@ Завдання. 5.4.Переделайте програму таким чином, щоб вона обчислювала ще середнє арифметичне і твір.

Числові ряди Числові ряди. Типовою циклічної завданням на накопичення є обчислення числових рядів.

Тут кожен наступний член прогресії Аi дорівнює попередньому Ai-1, помноженому на два. Якщо врахувати введені позначення, можна записати так звані рекурентні формули:

Si = Si-1 + Ai, де Sо = 0

Ai = 2Ai-1 A1 = 3. .

Або, як прийнято в програмуванні:

S = S + A, S = 0

A = 2A, A = 3

Дія оператора FOR відображено блок-схемою рис. 5.5. Сам оператор FOR поміщається в фігуру "прямокутник в ромбі", яка має два виходи. Вихід ТАК відповідає випадку, коли змінна циклу? свого граничного значення (тут I

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

@ Завдання @ Завдання. 5.5. Напишіть програму обчислення добутку N елементів числового ряду.

Тут справедливі формули:

P = PZA, P = 1

A = A + 2, A = 3

Z = -Z, Z = -1

Для формування мінливого знака вводимо спеціальну змінну Z і задаємо їй початкове значення, що збігається зі знаком першого сомножімого (-1). Далі знак буде змінюватися на протилежний при кожному збільшенні на мінус 1 (Z = -Z).

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

Приклад 5-6. Для N довільних цілих чисел Х обчислити і віддрукувати: 1) суму негативних чисел S, 2) кількість позитивних чисел КР, 3) твір позитивних чисел Р. Все обчислення виробляти до появи першого нуля в послідовності. Якщо нуль не зустрів, крім S, KP і Р, друкувати повідомлення нулів немає. Блок-схема алгоритму на рис. 5.6. Перевірка в програмі зроблена для N = 5 і Х = 3, -2, 1, -3, 2. У результаті: S = -5, P = 6, KP = 3.

@ Завдання 5.6. Програма має один дефект. Твір позитивних елементів може виявитися рівним 1, як у випадку, якщо воно дійсно таким вийшло, так і якщо позитивних чисел не було зовсім (адже початкове значення твори = 1). Виправте програму.

program P5_6; label t; перевірка для n = 5 (х = 3, -2, 1, -3, 2) var i, n, kp, x, s, p: integer; begin цикл цикл цикл цикл цикл readln (n); kp: = 0 ; s: = 0; p: = 1; for i: = 1 to n do beginreadln (x); if x = 0 then goto t; if x0 then beginkp: = kp + 1; p: = p * x end; end; writeln ( '0 немає '); t: writeln (s, p, kp); end. n = 5 i = 1 2 3 4 5 = 5x = 2 kp = 3p = 6 65 0 немає-5,6,3

Оператор циклу з передумовою має вигляд

uWHILE умова DO оператор

Така конструкція дозволяє легко організовувати ітераційні цикли (цикли із заздалегідь невідомим числом повторень) Така конструкція дозволяє легко організовувати ітераційні цикли (цикли із заздалегідь невідомим числом повторень). Оператор, що входить в тіло циклу виконується до тих пір, поки істинно умова. Для прикладу вирішимо завдання - обчислювати і друкувати Y = Х / 2 до виявлення першого Х = 0. Програма наведена нижче.

readln (x); {Y = Х / 2}

while x0 do begin

writeln (х, х / 2);

Readln (x)

end; {оператор while}

Статті до прочитання:

15 Цикл з передумовою


Схожі статті:

  • Оператори циклу з передумовою

    Контрольні питання: 1. Який тип вираження в операторі циклу з передумовою? 2. Чи вірно, що в тілі циклу з передумовою має перебуває один ...

  • Оператор циклу з параметром

    Програмування в Delphi з використанням операторів циклу Мета і зміст роботи У даній лабораторній роботі вивчаються оператори циклу мови Delphi ...

Odd (x) виявлення непарності х цілий логічний odd (3) = true pi число?
Тепер напишемо просту програму (рис. 2.2) обчислення площі круга S довільного радіуса R за відомою формулою S =?
2. За довільним значенням координат деякої точки X і Y знайти область?
2. Нехай для аргументу Х в діапазоні 3?
Вихід ТАК відповідає випадку, коли змінна циклу?
1. Який тип вираження в операторі циклу з передумовою?

Новости