Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ЛАБОРАТОРНІ РОБОТИ
з курсу “Обчислювальна техніка та програмування”
Київ 2009
Мета роботи: скласти програму розрахунку таблиці функції
Хід виконання роботи:
1. Самостійно вибрати функцію та скласти алгоритм програми.
2. За алгоритмом написати програму розрахунку таблиці функції.
3. Підготувати звіт.
Вхідні дані: введені з клавіатури нижнє та верхнє значення аргументу, кількість точок таблиці або крок (передбачити обидва варіанта за вибором користувача).
Вихідні дані: початкові дані, таблиця (складається зі стовпчиків "номер точки", "аргумент", "значення функції").
Перед виводом таблиці на екран необхідно вивести введені початкові дані. Таблицю накреслити за допомогою символів псевдографіки або інших символів (ширина кожного стовпця береться з таблиці 1), передбачити призупинку виведення таблиці при заповненні екрану та продовження виводу при натисканні будь-якої клавіші.
Реалізувати можливість задання кольору фону та тексту при виведенні на екран, можливість встановлення кольору кожного стовпця таблиці (не обовязково).
Приклади таблиць:
Початкові дані:
Xmin=-0.23, Xmax=7.50, step=0.3
+---+--------------------+--------------------+
| N | X | Y |
+---+--------------------+--------------------+
| 1| -0.23| 0.0529|
| 2| 0.07| 0.0049|
| 3| 0.37| 0.1369|
...............................................
| 25| 6.97| 48.5809|
| 26| 7.27| 52.8529|
+---+--------------------+--------------------+
Початкові дані:
Xmin=-0.23, Xmax=7.50, N=26
+---+--------------------+--------------------+
| N | X | Y |
+---+--------------------+--------------------+
| 1| -0.23| 0.0529|
| 2| 0.0792| 0.00627264|
| 3| 0.3884| 0.150855|
...............................................
| 25| 7.1908| 51.7076|
| 26| 7.5| 56.25|
+---+--------------------+--------------------+
Програма налагоджується з функцією, обраною програмістом. При захисті програми необхідно отримати у викладача функцію та виконати необхідні зміни в програмному коді.
Зміст звіту:
1. Мета роботи.
2. Обрана функція.
3. Алгоритм програми.
4. Ключові моменти програми (реалізація призупинки виводу таблиці, задання кольорів тощо).
Таблиця 1.
Варіант |
Ширина стовпця (символів) |
Варіант |
Ширина стовпця (символів) |
||||
"номер точки" |
"аргумент" |
"значення функції" |
"номер точки" |
"аргумент" |
"значення функції" |
||
1 |
5 |
20 |
25 |
2 |
8 |
23 |
23 |
3 |
7 |
24 |
29 |
4 |
12 |
26 |
27 |
5 |
5 |
18 |
21 |
6 |
6 |
25 |
25 |
7 |
10 |
27 |
24 |
8 |
6 |
29 |
26 |
9 |
3 |
22 |
28 |
10 |
7 |
21 |
21 |
11 |
4 |
21 |
21 |
12 |
9 |
24 |
24 |
13 |
7 |
29 |
19 |
14 |
4 |
28 |
28 |
15 |
5 |
26 |
23 |
16 |
11 |
22 |
26 |
17 |
6 |
24 |
24 |
18 |
5 |
21 |
25 |
19 |
11 |
28 |
28 |
20 |
9 |
23 |
29 |
21 |
7 |
21 |
22 |
22 |
4 |
27 |
22 |
23 |
5 |
19 |
20 |
24 |
9 |
25 |
23 |
25 |
9 |
23 |
22 |
26 |
8 |
26 |
27 |
27 |
8 |
24 |
24 |
28 |
7 |
25 |
25 |
29 |
4 |
24 |
25 |
30 |
5 |
26 |
26 |
Мета роботи: вивчити методи чисельного інтегрування; скласти програму обчислення визначеного інтегралу чисельними методами; дослідити залежність точності розрахунку інтегралу від кількості проміжків розбиття інтервалу інтегрування.
Хід виконання роботи:
1. Вивчити методи чисельного обчислення визначеного інтегралу, графічне пояснення алгоритмів розрахунку інтеграла (наприклад, Г.М.Фихтенгольц "Курс дифференциального и интегрального исчисления", том ІІ, М., 1969г., стр.153-159).
2. Скласти алгоритми обрахунку визначеного інтеграла кожним методом.
3. Скласти програму обчислення інтеграла трьома методами; підінтегральну функцію записати окремою функцією в програмі.
4. Налагодити програму для самостійно обраної функції (наприклад, для функції у(х)=х, у=const, y=x2 тощо) з відомим значенням інтеграла.
5. Виконати розрахунки для функції за варіантом при різних значеннях кількості проміжків n (наприклад n=30, n=100, n=1000, n=10000).
6. Виконати розрахунок кількості проміжків N, при якій значення інтегралів I1 (при кількості проміжків N) та I2 (при кількості проміжків N+2) відрізняються не більше ніж на задану похибку ε (похибку обирати в межах 10-5≤ε≤10-3).
7. Підготувати звіт.
Реалізувати всі 3 метода та можливість вибору методу для розрахунку.
Для реалізації вибору потрібної кількості проміжків розбиття по заданій точності (п.6) використовується наступний алгоритм:
В програмі потрібно створити меню для вибору метода.
Вхідні дані: ліва та права межі інтегрування, кількість проміжків розбиття, похибка обчислення інтеграла (всі значення вводяться з клавіатури).
Вихідні дані: початкові дані, значення інтеграла при заданій кількості проміжків, кількість проміжків, при якій зміна значення інтеграла не перевищує заданої похибки.
Зміст звіту:
1. Мета роботи.
2. Алгоритм кожного метода.
3. Задана функція та вхідні дані; обрахований вручну інтеграл (в символьному вигляді та чисельне значення).
4. Таблиця з результатами обрахунків заданого інтеграла трьома методами при 4-5 кількостях проміжків:
Метод |
n=... |
n=... |
n=... |
n=... |
N |
Лівих прямокутників |
|||||
Правих прямокутників |
|||||
Трапецій |
|||||
Парабол |
5. Кількість проміжків розбиття N для отримання необхідної похибки обчислення інтегралів для кожного з методів (останній стовпчик таблиці).
6. Висновки щодо точності та швидкодії (кількості ітерацій) кожного з методів.
АЛГОРИТМИ МЕТОДІВ
Алгорими обчислення визначеного інтегралу зводяться до обчислення площі криволінійної трапеціїї шляхом її розбиття на елементарні фігури, площі яких можна легко обчислити, та обчислення суми площь цих елементарних фігур (з урахуванням знаку). Для зручності крок розбиття обирають сталою величиною для всіх елементарних фігур. На малюнку зображено приклад розбиття криволінійної трапеції на елементарні прямокутники (а) та трапеції (б).
n кількість проміжків розбиття; - крок; a, b межі інтегрування.
Метод прямокутників:
- метод лівих прямокутників
- метод правих прямокутників
Метод трапецій:
Метод Сімпсона (метод парабол):
(формула Сімпсона працює лише для парної кількості проміжків)
Варіант |
Інтеграл |
Варіант |
Інтеграл |
1 |
2 |
||
3 |
4 |
||
5 |
6 |
||
7 |
8 |
||
9 |
10 |
||
11 |
12 |
||
13 |
14 |
||
15 |
16 |
||
17 |
18 |
||
19 |
20 |
||
21 |
22 |
||
23 |
24 |
||
25 |
26 |
||
27 |
28 |
||
29 |
30 |
Мета роботи: розробка програми розвязання нелінійних рівнянь
Хід виконання роботи:
1. Вивчити методи розвязання нелінійних рівнянь.
2. Скласти алгоритми програм розвязання нелінійних рівнянь трьома методами.
3. Написати програму розвязання нелінійних рівнянь трьома методами.
4. Для налагодження програми взяти нелінійне рівняння з відомим розвязком та провести тестування програми.
5. Дослідити збіжність методів від вибору початкових умов.
6. Підготувати звіт.
Реалізувати всі три метода розвязку, меню вибору метода.
В програмі передбачити:
- режим налагодження виведення результатів на кожній ітерації (за вибором користувача);
- призупинку обчислення при перевищенні заданої кількості ітерацій з видачею інформації для прийняття рішення, що робити далі (продовжити з такою ж кількістю ітерацій чи закінчити розрахунок);
- визначення затрат часу на пошук кореня, наприклад, за допомогою функцій clock() чи time() (в персональних компютерах час обчислюється з точністю 54,9 мс, тому якщо розвязок знаходиться за менший час, програма буде видавати 0.0 с);
- вивід на екран значення кореня та значення функції в цій точці.
Вхідні дані: початкове (початкові) значення кореня, похибка обчислення, максимальна кількість ітерацій.
Вихідні дані: значення кореня, значення функції у знайденій точці, кількість ітерацій.
Зміст звіту:
1. Мета роботи.
2. Алгоритм кожного метода.
3. Обрана функція та обраховане вручну значення кореня.
4. Результати обрахунків коренів функції трьома методами при чотирьох різних початкових умовах.
5. Кількість ітерацій, потрібна для знаходження кореня при заданій похибці обчислення для кожного з методів при різних початкових умовах.
6. Висновки щодо точності та часу обчислення кожного з методів.
МЕТОДИ РОЗВЯЗКУ НЕЛІНІЙНИХ РІВНЯНЬ
Загальна форма запису нелінійного рівняння f(x)=0. Наприклад, f(x)=x3+2.0·x.
Розвязком рівняння f(x) буде таке X, при якому рівняння перетворюється в тотожність: при x=X, f(X)=0. Функція невязки |f(xпот)| є мірою відхилення xпот від X (xпот поточне значення кореня). При чисельному розвязку рівнянь розвязком вважається таке Хч, при якому |f(Xч)|≤ε, де ε похибка обчислення, яку обирати з діапазону ε =10-5 10-3 (для метода половинного ділення розвязком є будь-яке значення з проміжку [x1; x2], якщо |x1-x2|≤ε).
Метод хорд
Задамо точки х1 та х2, в яких значення функції мають протилежні знаки (в нашому випадку, наприклад, в точці х1 f(x1)<0, в точці x2 f(x2)>0). Як відомо з курсу вищої математики, при цій умові корінь рівняння лежить між точками x1 і x2. Проводимо через точки f(x1) та f(x2) пряму (хорду), рівняння якої в канонічному виді має вигляд
,
де f(x1), f(x2) - значення функції в точках x1 і x2,
f '(x) похідна функції f(x).
Тепер знаходимо з цього рівняння координату точки xi, в якій хорда перетинає вісь абсцис (F(xi)=0):
Вирахуване значення xi вважаємо новим значенням x1 або x2: значення xi обирається рівним x1 або x2 таким чином, щоб точка з розвязком знаходилася всередині інтервалу [х1; х2], тобто значення функції в точках х1 та х2 знову мали протилежні знаки. (При однакових знаках в обох точках добуток значень функцій в цих точках буде додатній, при різних знаках відємний.)
На кожній ітерації обчислюємо |f(xі)| і порівнюємо з заданою похибкою розвязку ε. Цикл припиняється, коли значення функції в точці xі менше за абсолютним значенням ніж ε; це значення хі вважається розвязком рівняння Хч.
Метод половинного ділення
Задамо точки x1 та х2, в яких значення функції мають протилежні знаки (в нашому випадку, наприклад, в точці х1 f(x1)<0, в точці x2 f(x2)>0). При цій умові корінь рівняння лежить між точками x1 і x2. Метод половинного ділення полягає в зменшенні інтервалу [х1; x2] вдвічі на кожній ітерації.
Обираємо нову точку на середині відрізку [x1; x2]:
Обчислюємо значення F=f(xі). Перевіряємо, в якому з утворених проміжків [х1; xі] та [хі; x2] знаходиться розвязок рівняння (якщо значення функції на кінцях проміжку мають протилежні знаки, то розвязок знаходиться в цьому проміжку). Для показаної на малюнку функції бачимо, що якщо F<0, то корінь рівняння лежить поміж хі та х2. В цьому разі необхідно значення змінної х1 замінити на значення хі і повторити обчислення. Якщо F>0, то корінь лежить поміж х1 і хі (друга ітерація). Тоді треба замінити значення змінної х2 на хі і повторити обчислення. Після присвоєння хі необхідно перевірити критерій закінчення пошуку розвязку |x1-x2|≤ε.
Метод Ньютона (метод дотичних)
Обираємо х1 і обчислюємо f(x1). Проводимо у вибраній точці дотичну до кривої f(x). Рівняння дотичної має вигляд:
де f '(x1) перша похідна функції f(x) в точці х1.
З цього рівняння визначаємо точку хі, в якій дотична перетинає вісь абсцис:
,
звідки
.
Значення xі ближче до кореня ніж x1. Міняємо x1 на xі і повторюємо обчислення до того часу, поки не виконається критерій зупинки |F(хі)|≤ε.
Мета роботи: скласти програми для роботи з двовимірними масивами.
Хід виконання роботи:
1. Скласти алгоритм для кожної задачі обробки двовимірних масивів.
2. Написати програму обробки матриць (двовимірних масивів) дійсних чисел А та Б.
3. Налагодити програму (елементи масивів задавати шляхом ініціалізації).
4. Провести тестування програми та результати порівняти з обчисленими вручну.
5. Підготувати звіт.
Матриця А є квадратною, Б прямокутною. Матриці задаються у вигляді динамічних масивів. Користувач задає розміри матриць (na розміри масиву А; nb, mb розміри масиву Б); в програмі виконується виділення памяті та обробка масивів розміром na×na та nb×mb.
В програмі необхідно реалізувати меню вибору задачі та пункт виходу. Кожен пункт обробки масивів оформити у вигляді окремих функцій, параметрами яких є відповідні матриці та їх розміри; сортування рядка матриці оформити у вигляді функції, що має два параметра: одновимірний масив (рядок матриці) та кількість елементів в масиві (рядку). Результат виконання функції знаходження максимального та мінімального елементів матриці А значення елементів, інші функції не повертають значень. Перед початком обробки вивести на екран матрицю, що обробляється. Перед завершенням програми очистити виділену під масиви память.
Вхідні дані: константи na, nb та mb; елементи матриць (вводяться з клавіатури або задаються ініціалізацією передбачити обидва варіанта за вибором користувача). Для перевірки та налагодження програми передбачити формування елементів масиву за простим формулам (наприклад, Аi,j=i+j).
Вихідні дані: матриці, що обробляються, та результати виконання пунктів завдання.
Завдання на обробку масивів:
1. Знайти максимальний елемент матриці А і його координати (нумерація елементів починається з нуля) та мінімальний з елементів, що знаходяться нижче головної діагоналі (див. приклад).
2. Транспонувати матрицю Б.
3. Знайти матричний добуток А×Б.
4. Відсортувати за зростанням елементи заданого з клавіатури рядка масиву А (індексація починається з нуля).
5. Вивести на екран суму елементів рядків матриці А та стовпців матриці Б.
Зміст звіту:
1. Мета роботи.
2. Алгоритм кожної задачі.
3. Введені з клавіатури значення та результати кожного пункту обробки масивів.
Для формування верхньої трикутної матриці (елементів матриці, що лежать вище головної діагоналі) можна використати, наприклад, такий фрагмент програми:
....
int i, j; /* лічильники рядків та стовбців */
float x[10][10]; /* матриця у вигляді статичного масиву */
....
for (i=0; i<10; i++)
{
for (j=i; j<10; j++) /* саме ця початкова умова задає „трикутність” */
{
x[i][j]=i+j; /* формування елементів матриці за формулою */
}
}
....
Мета роботи: отримати навички роботи з текстовими та двійковими (бінарними) файлами в мові С, форматним та неформатним вводом-виводом.
Хід виконання роботи:
1. Ознайомитись з функціями форматного та неформатного виводу, відмінностями між текстовими та бінарними файлами.
2. Створити в будь-якому текстовому редакторі (наприклад, в редакторі "Блокнот") та зберегти під назвою input.dat текстовий файл, записавши в нього в окремих рядках:
а) назву групи та номер бригади;
б) початкове значення аргумента;
в) кінцеве значення аргумента;
г) кількість точок, в яких обчислюється значення функції;
д) крок аргумента.
3. Вивести кількість точок таблиці та таблицю функції (див. лабораторну роботу №1) в двійковий та текстовий файли з назвами result.bin і result.txt відповідно, причому в першому випадку здійснити неформатний вивід (використовуючи, наприклад, функцію fwrite()), а в другому форматний (наприклад, за допомогою функції fprintf()).
4. Прочитати дані з бінарного файла result.bin та вивести таблицю на екран.
5. Порівняти розміри файлів result.bin, result.txt та можливість продивитись їх зміст в текстовому редакторі. Зробити висновки.
6. Підготувати звіт.
З файла input.dat беруться дані для обчислення таблиці функції. Якщо кількість точок дорівнює нулю, для створення таблиці використовувати значення кроку. Після визначення кількості рядків таблиці повинна виділятися память під двохвимірний динамічний масив дійсних чисел, який заповнюється значеннями "аргумент" і "значення функції".
В текстовий файл result.txt спочатку виводиться кількість точок (рядків в таблиці), а дані повинні виводитись по рядках: в кожному рядку знаходиться пара чисел "аргумент-значення функції". В двійковий файл result.bin виводяться неформатні дані: спочатку кількість точок, а потім пари чисел "аргумент-значення функції".
При вводі данних з файлу result.bin спочатку зчитується кількість рядків таблиці, а потім необхідна кількість даних для побудови таблиці функції.
Зміст звіту:
1. Мета роботи.
2. Алгоритм програми.
3. Висновки щодо розміру двійкових та текстових файлів та можливості їх корекції в текстових редакторах.
Мета роботи: Навчитись розробляти програми виводу/вводу інформації через інтерфейс USB, а також використовувати функції третіх фірм.
Хід виконання роботи
1. Вивчити будову інтерфейса USB (наприклад, М.Гук «Интерфейсы персонального компьютера. Справочник»), ознайомитись з мікросхемою перетворювача USB-Parallel FT245 фірми FTDI Chip.
2. Ознайомитись з функціями для роботи з мікросхемою FT245, функціями роботи з таймером, функцією затримки та побітовими операціями і операціями зсуву.
3. Написати основну програму виводу, яка реалізує алгоритм біжучих та блимаючих вогнів на світлодіодах, а також реакцію на натискання кнопок клавіатури (зміна напрямку руху вогнів на протилежний, характер та швидкість загорання світлодіодів тощо).
При здачі роботи отримати новий алгоритм і зробити необхідні зміни в програмі.
4. Підготувати звіт.
Короткий опис інтерфейсу USB
Як відомо, все менше сучасних компютерів оснащується паралельними та послідовними інтерфейсами для підєднання переферійних пристроїв, а їх місце займає інтерфейс USB (Univesal Serial Bus універсальна послідовна шина).
USB це послідовний протокол та фізичне зєднання, що передає всі дані по витій парі проводів. Інша пара забезпечує живлення пристрою. Для сучасної версії протоколу (USB 2.0) пристрої підтримують наступні режими передачі:
Для підєднання периферійних пристроїв використовуються розєми типу А (Standard A) та В (Standard B).
Зовнішній вигляд |
Номер контакта |
Позначення |
Колір проводу |
1 |
VBus |
червоний |
|
2 |
D- |
білий |
|
3 |
D+ |
зелений |
|
4 |
GND |
чорний |
Для живлення периферійних пристроїв використовуються проводи VBus ланцюг +5 В та GND ланцюг «корпуса». Будь-який пристрій може отримувати по шині струм до 100 мА, а при видачі спеціального запиту споживання може бути збільшене максимум до 500 мА. Дані передаються по проводам D+ и D- диференційно, тобто станам 0 та 1 відповідає різниця напруг між цими проводами 200 мВ при напрузі на D+ або D- більше 2,8 В. Окрім того, ці проводи використовуються для ініціалізації режиму передачі (шляхом підтягування одного з сигнальних проводів до VBus через резистор 1,5 кОм).
В лінійках сучасних мікроконтролерів та мікропроцесорів існують окремі мікросхеми, що мають вбудовані приймач-передавачі USB. В разі відсутності вбудованого приймач-передавача для організації звязку між периферійним пристроєм та персональним компютером можуть використовуватись спеціалізовані мікросхеми, наприклад, для перетворення USB-пакетів в паралельний код використовується мікросхема FT245, для в послідовний протокол RS232 мікросхема FT232.
Короткий опис функцій для роботи з мікросхемою FT245
Оскільки написання драйверів для роботи з шиною USB під керуванням операційної системи Windows складне навіть для професійних програмістів, будемо використовувати драйвери, розроблені фірмою FTDI Chip (http://www.ftdichip.com/Drivers/D2XX.htm). Найбільш часто використовуються наступні функції (див. специфікацію), прототипи яких описані у файлі FTD2XX.h:
FT_STATUS FT_ListDevices(PVOID pvArg1,PVOID pvArg2, DWORD dwFlags);
FT_STATUS FT_Open(int iDevice, FT_HANDLE *ftHandle);
FT_STATUS FT_Close(FT_HANDLE ftHandle);
FT_STATUS FT_Write(FT_HANDLE ftHandle, LPVOID lpBuffer,
DWORD dwBytesToWrite, LPDWORD lpdwBytesWritten);
FT_STATUS FT_Read(FT_HANDLE ftHandle, LPVOID lpBuffer,
DWORD dwBytesToRead, LPDWORD lpdwBytesReturned);
FT_STATUS FT_ResetDevice(FT_HANDLE ftHandle);
FT_STATUS FT_Purge(FT_HANDLE ftHandle, DWORD dwMask);
FT_STATUS FT_SetTimeouts(FT_HANDLE ftHandle, DWORD dwReadTimeout,
DWORD dwWriteTimeout);
FT_ListDevices() повертає інформацію про пристрої FTDI, що підключені на даний момент до компютера; в найпростішому випадку функція повертає дані про кількість пристроїв. Перед тим як передавати дані, необхідно відкрити пристрій за допомогою функції FT_Open(), що повертає дескриптор (унікальний номер), який використовується в подальшому всіма функціями для ідентифікації пристрою. Якщо пристрій був відкритий успішно, дані можна передавати і приймати за допомогою функцій FT_Write() та FT_Read(). В кінці сеансу звязку пристрій необхідно закрити, використовуючи функцію FT_Close().
Додаткові функції, що використовуються при роботі з мікросхемою FT245:
FT_ResetDevice() виконує ініціалізацію мікросхеми наново;
FT_Purge() очищує буфери прийому та/або передачі;
FT_SetTimeouts() встановлює час очікування виконання операції читання/запису;
Додаткові відомості
При читанні даних інколи виникає необхідність виділяти біти, що відповідають за певний стан зовнішнього пристрою. Для виділення потрібного біта зручно використовувати побітові операції І, АБО та побітову інверсію, а також так звані маски. Маскою називається число, що дозволяє виділити значення певних бітів в байті (або встановити в байті певні біти, не змінюючи інші). Наприклад, щоб виконати певні дії в залежності від значення пятого біта з байта, записаного в змінній status, можна виконати таку перевірку:
#define MASK 32
..................
if(status & MASK==1)
/* дії_при_встановленому_біті */
else
/* дії_при_скинутому_біті */
оскільки 25=32.
Щоб встановити третій біт, не змінюючи значення інших, можна скористатись операцією побітового АБО:
#define MASK 8
..................
status=status | MASK; /* третій біт стане рівним 1 */
Для проведення лабораторних робіт використовується макет, зібраний за схемою, що наведена на рисунку. До виводів портів через опори номіналом 2 кОм підєднані світлодіоди.
При передачі байта на відповідні світлодіоди подається напруга. Щоб подати напругу на окремі світлодіоди, потрібно за допомогою функції FT_Write() передати число, що “відповідає” за них (маску). Наприклад, щоб засвітити світлодіод №5, на порт потрібно видати число 25=32. Якщо необхідно подати живлення на декілька світлодіодів, потрібно в порт записати суму масок: для одночасного загоряння світлодіодів №2 та №6 потрібно видати в порт число 22+26=4+64=68.
Зауваження:
1) Щоб використати описи типів даних, які знаходяться в заголовочному файлі FTD2XX.h, необхідно включити у вихідний код заголовочний файл windows.h.
2) Для зборки виконуваного модуля необхідно включити в проект бібліотеку FTD2XX.lib.
3) Оскільки мікросхема FT245 призначена для роботи з мікроконтролерами, який підтверджує прийом даних, а при односторонній передачі даних таке підтвердження неможливе, перед новою передачею даних необхідно очистити буфер прийому.
4) Функція затримки delay() відсутня в C++ Builder. Замість неї необхідно використовувати аналогічну функцію Sleep().
Завдання
Написати програму для роботи з інтерфейсом USB. Необхідно створити 4 функції для роботи з світлодіодами: 3 функції задають послідовність загоряння діодів за допомогою побітових операцій (наприклад, одна функція змушує діоди блимати, друга засвічує діоди послідовно так, що вогник «біжить» в один бік, третя два вогника разом в інший) і передаються в якості параметра в четверту, що працює з портом (подає напругу на світлодіоди).
Створити меню вибору послідовності загоряння діодів. Передбачити можливість повернення в меню під час блимання світлодіодів при натисканні кнопки на клавіатурі. На екрані повинне дублюватись число, що виводиться в порт.
Зміст звіту:
1. Мета роботи.
2. Схема електрична принципова зовнішнього пристрою.
3. Алгоритми функцій, що задають послідовність загоряння світлодіодів.
f(х2)
f(х1)
f(xi)
2ε
f(Хч)
х
х2
xi
х1
Хч
f(x1) h
f(х2)
f(х1)
f(xi)
ε
х
х2
xi
х1
Хч
f(x1)
f(xi)
f(Хч)
Хч
2ε
хі
х1
x
f(xn)
f(xn-1)
f(x0)
f(x2)
f(x2)
f(x1) h
f(x0)
а=x0 x1 x2 … xn-1 xn=b
а
f(xn)
а=x0 x1 x2 … xn-1 xn=b
а
1 2 3 … n-1 n
1 2 3 … n-1 n
а) б)
f(xn-1)