
- •Етапи підготовки і рішення задач на еом
- •Програма, що не має помилок часу трансляції і виконання, може і не дати вірних результатів через так звані логічні помилки в обраному алгоритмі, тобто алгоритмічних помилок.
- •Запис алгоритмів у виді блок – схем
- •Мови програмування
- •1. Основні поняття алгоритмічної мови Бейсік.
- •3. Сталі та змінні.
- •4. Функції. Вирази.Оператор присвоєння
- •Вправи та запитання
- •5. Надання значень змінним
- •Оператор read.
- •6. Виведення результатів
- •Оператор Результат
- •Оператор Результат
- •7.Лінійні програми
- •Розгалуження
- •1.Логічний вираз
- •3. Команда розгалуження if. Повна форма умовної команди.
- •10.Цикли
- •11.Оператори циклу
- •12. Обчислення суми, добутку
- •13. Ітераційні цикли
- •14. Вкладені цикли
- •Мал.12 Схеми вкладених циклів.
- •15. Використання масивів
- •Вправи та запитання
- •16. Нестандартні функції та підпрограми
- •17. Робота з текстовими даними
- •18. Оператори роботи з графічною інформацією.
- •19. Робота з файлами даних
- •20 Основи роботи в пакеті MathCad
- •Визначення основних понять та позначень, безпосередньо зв'язаних з процесом обчислень у середовиіщі пакету Вхідний алфавіт
- •Типи констант і змінних
- •Розмірність, одиниці вимірів та одиниці маштабування
- •Базові обчислювальні конструкції пакета
- •Реалізація ітеративних обчислень.
- •Функції керування обчисленнями
- •Побудова декартових графіків
- •Методи доступу і роботи з файлами даних
- •Вбудовані функції та функції користувача
- •Розділ 21Алгоритми та програми реалізації загальних чисельних методів.
- •21.1. Розв’язання систем лінійних рівнянь.
- •21.2 Інтерполяція та екстраполяція.
- •21.3. Розв’язання нелінійних та трансцендентних рівнянь.
- •21.4 Розв’язування систем нелінійних рівнянь.
- •Програма 14
- •21.5. Пошук екстремумів функцій одної та багатьох змінних.
- •Програма 15
- •Програма 16
- •Програма 17
11.Оператори циклу
1.Цикл з операторами FOR - NEXT. Цикл призначений для організації повторень, якщо кількість повторень у циклі відома.
Структура оператора.
FOR I=A1 TO A2 STEP A3
серія операторів
NEXT I ,
де FOR (для), ТО (до), STEP (крок) – службові слова, які утворюють оператор заголовка циклу, NEXT (наступний) – оператор, який фіксує кінець тіла циклу і змінює значення параметра І. Тіло циклу – це серія операторів, що є між операторами FOR i NEXT.
Змінну І прийнято називати параметром циклу.А1,А2,А3 – арифметичні вирази, змінні, сталі. А1 – початкове значення параметра циклу, А2 – кінцеве, А3 – значення кроку, на яке щоразу змінюється значення параметра циклу.
Розглянемо дію операторів FOR i NEXT .
Дія операторів FOR - NEXT. Нехай крок А3>0.Змінна І набуває значення А1. Перевіряється умова ІА2. Якщо вона істинна, то виконується тіло циклу(серія операторів). Значення параметра І збільшується на А3. Знову перевіряється умова і т.д. Якщо умова хибна, то цикл закінчується й виконується наступний після NEXT оператор.
Якщо тіло циклу коротке, то всю конструкцію циклу можна розмістити в одному програмному рядку, що робить програму більш компактною(не забувайте лише ставити двокрапки):
FOR I =A1 TO A2 STEP A3 : серія операторів : NEXT I .
Зауваження . Параметром циклу може бути любий ідентифікатор який допускає мова Бейсік. В операторі NEXT записується той же самий ідентифікатор який є в операторі FOR як параметр циклу. Функції оператору NEXT змінювати параметри циклу на крок і перевіряти умову закінчення циклу.
З а д а ч а 1. Є послідовність чисел, де перші два числа – це 0 та 1. Кожне наступне число є сумою двох попередніх. Такі числа називають числами Фібоначчі. Визначити наступних десять чисел послідовності.
5 REM Програма 13
10 PRINT “Числа Фібоначчі: 0 1”;
20 A=0 : B=1
30 FOR I=1 TO 10
40 C=A+B
50 A=B : B=C
60 PRINT C
70 NEXT I
80 END
Числа Фібоначчі:0 1 1 2 3 5 8 13 21 34 55 89.
2. Програма табулювання функцій. Табулювання функції – це побудова таблиці значень функції для різних значень аргументу
З а д а ч а 2. Протабулювати дві функції
y=sinx, z=cosx
на проміжку [0;1], змінюючи значення аргументу на 0,1.
10 REM Програма 14 Табулювання функцій
FOR X=0 TO 1 STEP 0.1
30 Y=SIN(X)
40 Z=COS(X)
50 PRINT ”X=”;X, “Y=”;Y, “Z=”;Z
60 NEXT X
70 END
Під час виконання арифметичних операцій з дійсними числами результати округлюються. Це може призвести до того, що в циклі з дійсним параметром циклу останнє повторення не відбудеться. Тому рекомендують використовувати параметр цілого типу.
10 REM Програма 14а Табулювання функції
20 DEFINT N
30 FOR N=0 TO 10
40 X=0.1*N
50 Y=SIN(X)
60 Z=COS(X)
60 PRINT “X=”;X, “Y=”;Y,’Z=”;Z
70 NEXT N
80 END
Входити в цинл можна тільки через його заголовок . Виходити з циклу можна двома методами:
коли параметр циклу змінив своє значення від початкового до кінцевого (в цьому випадку він буде не визначений)
за допомогою умовного оператору який записується в тілі циклу (парамитр циклу прийме поточне значення даного кроку.
3.Оператор типу WHILE –WEND. Розглянемо оператор WHILE, призначений, зокрема, для реалізації циклів з невідомою кількістю повторень. У мові Бейсик записується так:
WHILE умова
серія операторів
WEND
Тут WHILE (поки), WEND(кінець поки) – службові слова, які позначають оператори заголовка та кінця циклу.
Даний оператор служить для організації циклу із виходом по умові: якщо значення в умові приймає хибне , то виконуються оператори, обмежені відповідними операторами WHILE i WEND. Ці оператори допускають використання вкладених циклів, але при цьому для кожного оператора WHILE повинен бути обов’язково окремий оператор WEND кінця циклу, навіть якщо у вкладених циклів є спільний логічний кінець.
Оператор WHILE – WEND можна використовувати в командному режимі, однак в цьому випадку командний рядок повинен повністю вміщувати всю циклічну конструкцію, напр.,:
WHILE X – 100 : X+1 : WEND : PRINT “X=”;X
Зауваження 1. Умовою може бути арифметичний вираз без знаків відношення, в цьому випадку, якщо значення відмінне від 0, то виконуються оператори записані між оператором – WHILE – WEND.
Зауваження 2. Параметр циклу, який записаний в умові, обов’язково в тілі циклу повинен змінювати своє значення.
Приклад. Обчислити визначений інтеграл методом прямокутників
10 A=0: B=1: E=0.1: H=B-A: F1=0: F2=1
20 WHILE SGN(ABS(F1-F2)-E)
30 WHILE SGN(ABS(F1-F2)-E)+1
35 H=H/10: X=0:F1=0
40 WHILE SGN(ABS(X-H-1) – 0.001)+1: X=X+H
50 F1=F1+H*(46*X^3+41*X^2+21*X):WEND
60 X=0: F2=0: H=H/10
70 WHILE SGN(ABS(S-N-1) – 0.001)+1: X=X+H
80 F2=F2+H*(46*X^3+41*X^2+21*X): WEND
90 WEND
100 WEND
110 PRINT ”значення визначеного інтегралу=”;F2
120 END
Оператори циклу FOR – NEXT і WHILE -WEND можна записувати і виконувати в командному рядку.
4. Поняття про структурне програмування. Задачі та програми, які ми розглядаємо, мають навчальний характер і не є складними і великими. На практиці задачі, алгоритми та програми звичайно є або складними або громіздкими. У таких випадках варто пам’ятати про основні принципи структурного програмування.
Структурне програмування – це концепція програмування, яка передбачає таке:
1.Попередній аналіз складного або громіздкого алгоритму з метою розробити його на окремі прості частини (модулі).
2. Послідовну (зверху донизу) деталізацію частин та складання модульних програм (модулі розглядатимемо пізніше).
3. Використання трьох базових конструкцій мови (простої, розгалуження, циклу) під час роботи з кожним модулем.
4. Написання програм, зрозумілих для людей, які будуть їх читати.
5. Використання операторів мови, які дають змогу звести до мінімуму застосування оператора переходу.
6. Систему заходів перевірки правильності програми: логічний аналіз програми до її виконання, перехресна перевірка програм, колективна робота над створенням складних програм тощо.
Пояснимо ці принципи.
1–2. Деталізація зверху донизу. Кваліфіковані програмісти, ознайомившись з умовою дуже складної задачі, можуть одразу скласти програму. Але для більшості користувачів шлях від умови задачі та математичної моделі пролягає через побудову алгоритму. Спочатку складають загальну схему алгоритму, а потім її деталізують. Складний алгоритм розбивають на частини. Виділяють основну частину та частини нижчого рівня. Кожну частину розробляють окремо: спочатку частини верхнього рівня, а пізніше – нижчого. Тому кажуть, що відбувається аналіз зверху донизу. У кінці частини стикують між собою.
3.Базові конструкції. Доцільно з’ясувати, які конструкції та елементи мови можна використати під час програмування кожної частини. Нагадаємо, що у розпорядженні користувача є три базові (основні) алгоритмічні конструкції:
проста; 2) розгалуження; 3) цикл.
Вони описані у попередніх параграфах. Кожна така конструкція має один вхід і один вихід. Програму, складену як послідовність конструкцій, що мають один вхід і один вихід, називають структурованою. Термін походить від слова структура, що є синонімом слів конструкція.
Обдумуючи алгоритм, варто мислити не на рівні окремих операторів, а на рівні конструкцій, виділяючи в кожному алгоритмі прості частини, розгалуження, цикли. Намагайтесь без зайвої деталізації виділяти такі комбінації базових конструкцій: “розгалуження в циклі” та “ вкладені цикли”.
4. Коментарі. Програми повинні бути зрозумілими не лише для тих, хто їх складає, але й для людей, які будуть їх читати. У них рекомендують робити пояснення. Для цього у тексті програми використовують коментарі, а до програми дають додаткові пояснення.
5. Потрібно уникати операторів переходу. Безсистемне використання оператора переходу (особливо до попередньої частини програми), який ускладнює читання програми, потрібно зводити до мінімуму. Цього можна досягти за допомогою таких конструкцій мови, як умовний оператор IF-THEN- ELSE, оператор багатозначного вибору SELECT CASE, оператор циклу WHILE та підпрограм з параметрами, які вивчатимемо пізніше.
Варто знати, що у сучасному Бейсику є можливість достроково вийти з деякої конструкції за допомогою таких операторів виходу: EXIT IF, EXIT SELECT, EXIT WHILE, EXIT FOR, EXIT LOOP, EXIT DEF тощо.