було зроблено оптимізацію коефіцієнта настройки і було отримано стійкі розв’язки коливної системи при С0=С0опт.
Стійкість системи забезбечена підбором коефіцієнта настройки, а тому умову постановки задачі виконано.
8. Перелік та опис застосованих програмних засобів
8.1. Алфавiт мови.
До алфавiту належать:
- латинськi букви великi та малi: a, b, c, ... , z, A, B, C, ..., Z;
- десятковi цифри вiд 0 до 9;
- роздiлювачi, вони показанi в таблицi 1.
- пробiльнi символи, які показані в таблиці 2, вони починаються з символа зворотній слеш. У програмі виконують керівні функції.
Таблиця 1 – Розділювачі
Символ | Назва символа | Символ | Назва символа
, | кома | ! | знак оклику
. | крапка | : | двокрапка
| | вертикальна риска | / | прямий слеш
; | крапка з комою | \ | зворотнiй слеш
? | знак запитання | ~ | тiльда
' | апостроф | _ | пiдкреслення
$ | знак долара | " | лапки
( | лiва кругла дужка | # | знак номера
) | права кругла дужка | % | процент
{ | лiва фiгурна дужка | & | амперсанд
} | права фiгурна дужка | ^ | стрiлка вверх
[ | лiва квадратна дужка | - | мiнус
] | права квадратна дужка | + | плюс
< | менше | = | дорiвнює
> | бiльше | * | зiрочка (множення)
Таблиця 2 – Пробільні символи
Символ | Назва символа | Символ | Назва символа
\a | Попередження (звук) | \v | Вертикальна табуляція
\b | Повернення на один знак вліво | \t | Горизонтальна табуляція
\f | На наступну сторінку | \r | Кінець рядка
\n | Перехід на новий рядок | \0 | Нуль
8.2. Директиви препроцесору.
Програма мовою Сi складається iз сукупностi функцiй, серед яких одна є головною i називається main(), а решта – пiдпорядкованi, та директив препроцесору.
Препроцесор представляє собою програму, яка обробляє початковий модуль до компiляцiї згiдно з вiдповiдними директивами. Директива препроцесору може бути розмiщена в будь-якому мiсцi початкового модуля, а область її дії поширюється на частину програми від того місця, де вона записана, до кінця програми. Директиви препроцесору пишуться спеціально створеною для них мовою. Вiд iнших об’єктiв програми вони вiдрiзняються наявнiстю знака # (дiєз). Найбiльш вживаними з них є такі:
# include <iм’я файлу> – під’єднання до програмного модуля файлу, який знаходиться в стандартному системному каталозi;
# include "iм’я файлу" – те ж, але в заданому каталозі. Вона працює так: спочатку компілятор шукає ім’я файлу в стандартному каталозі, а якщо він там не знайдений, то в заданому;
# define iдентифiкатор текст – замiна в тексті програми iдентифiкатора на текст;
# undef iдентифiкатор – вiдмiна дiї поточної директиви # define;
# if – умовна компiляцiя, визначення, чи потрiбно пiд’єднувати до програмного модуля певну його частину. Ця директива багато де в чому подібна до умовного оператора if. Вона може містити логічні операції та знаки операцій відношення;
# else – альтернатива до директиви if;
# elif – дозволяє розширити комбінацію директив if–else, встановити додаткові умови та відповідні їм дії. Цю директиву можна застосувати лише для деяких найновіших компіляторів;
# endif –кінець області дії директиви if;
# error текст – обробка помилок пiд час компiляцiї програми;
# – порожня директива, iгнорується компiлятором.
Завдяки наявності директив препроцесору програміст має можливість регулювати довжину програми. Наприклад, якщо в програмі використовуються математичні функції, то слід використати директиву #include<math.h>, тоді компілятор додасть до програми файл math.h з відповідними математичними функціями, і не варто – в протилежному випадку.
8.3. Розгалуження.
Розгалуженою називається програма, яка має переходи. Порядок виконання її операторiв визначається поставленими умовами.
Розгалуження має один вхід та два виходи: так (правда) і ні (неправда). Це, однак, не означає, що за результатами розгалуження програма продовжить своє виконання в обох напрямках, але лише вздовж одного, який задовільнятиме задану умову.
В графічному алгоритмі розгалуження позначається за допомогою символа, який має вигляд поверненого на 900 (горизонтально) ромба. Всередині ромба записується вираз, а два виходи супроводжуються написами, як правило, це “так” і “ні”.
Нагадаємо, що мова Сі не має спеціальних змінних або констант логічного типу. Натомість використовуються цілі числа: 0 – неправда та 1 або інше відмінне від 0 значення – правда.
Для органiзацiї розгалужень у даній програмі ми використовували такі засоби мови Сі :
–
умовний оператор: if(вираз)оператор; Вiн працює так: якщо значення виразу не дорiвнює нулю, то виконується оператор, який знаходиться в складі оператора if, iнакше – наступний оператор програми. Тут і далі під поняттям оператор будемо розуміти один оператор або блок – декілька операторів, обрамлених фігурними дужками;
8.4. Цикли.
Циклом називається обчислювальний процес, який багаторазово повторюється. Основною його характеристикою є аргумент або параметр циклу. Це змiнна, яка перед циклом одержує початкове значення, а в циклi нарощується i перевiряється на досягнення кiнцевого значення, перевищення якого є умовою закiнчення циклу. В залежності від характеру зміни параметра розрiзняють цикл з рiвномiрним приростом аргумента, який називають ще циклом типу арифметичної прогресiї, та iтерацiйний або перерахунковий.
У даній програмі ми використовували такі спеціальні оператори циклів:
– for(вираз1; вираз2; вираз3)оператор;
Тут: вираз1 – присвоєння параметру циклу початкового значення;
вираз2 – умова, перевiрка на досягнення кiнцевого значення;
вираз3 – нарощення параметра циклу на заданий крок;
оператор – тiло циклу, один оператор або блок;
8.5. Масиви.
Масивом