- •Лабораторна робота № 1
- •Системний блок
- •Материнська (системна) плата
- •Системна магістраль даних (системна шина)
- •Мікросхема bios
- •Блок живлення
- •Накопичувачі
- •Адаптери
- •Клавіатура
- •Маніпулятори
- •Плати розширення
- •Зовнішні пристрої
- •Принтери
- •Стримери
- •Пристрої на компакт-дисках
- •Сканери
- •Джерела безперебійного живлення
- •Контрольні питання
- •Лабораторна робота №2
- •Алгоритм, його основні властивості та способи зображення
- •Мова програмування qbasic
- •Найпростіші оператори
- •Контрольні запитання
- •Варіанти завдань роботи
- •Лабораторна робота №3
- •Запуск qbasic
- •Індикатори натиснення спеціальних клавіш:
- •Індикатори натиснення клавіш-перемикачів:
- •Описання головного меню qbasic
- •Введення та редагування програм
- •Редактор qbasic
- •Запуск програми на виконання та перегляд результату
- •Збереження програми у вигляді файла на диску
- •Вихід з середовища qbasic
- •Контрольні запитання
- •Завдання
- •Лабораторна робота № 4
- •Розгалужена структура алгоритму
- •Умовний оператор if
- •Оператор goto
- •Оператор вибору on
- •Оператор select case
- •Циклічна структура алгоритму
- •Оператор for...Next
- •Зразок виконання завдання.
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 5
- •Змінні величини та функції, що їх визначають
- •Область визначення (існування) функції
- •Максимум та мінімум (екстремум) функції
- •Найбільше та найменше значення функції
- •Оператор-функція
- •Зразок виконання завдання
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 6
- •Умовні цикли
- •Оператор while...Wend
- •Оператор do...Loop
- •Метод половинного ділення
- •Зразок виконання завдання
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 7
- •Ітераційний цикл
- •Контрольні запитання
- •Варіанти завдань.
- •Лабораторна робота № 8
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота №9
- •Обмінне сортування
- •Інші методи сортування
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 10
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 11
- •Зразок виконання завдання
- •Контрольні питання
- •Лабораторна робота № 12
- •Контрольні запитання
- •Варіанти завдань.
- •Лабораторна робота № 13
- •Символьні функції
- •Що таке аscii?
- •Перетворення з аsсii в qbasic
- •Визначення довжини символьної величини
- •Виділення частини тексту
- •Кодування текстів
- •Пoшук підрядка
- •Різні варіанти написання тексту
- •Зразок виконання завдання.
- •Контрольні запитання
- •Варіанти завдань.
- •Лабораторна робота № 14
- •Оператор print using
- •Print using та числа
- •Print using та текстові значення
- •Масиви економічної інформації
- •Контрольні запитання
- •Варіанти завдань.
- •Лабораторна робота №15
- •Про функції
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 16
- •Зразок виконання завдання
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 17
- •Прямі лінії – відрізки
- •Оператор circle
- •Малювання прямокутників
- •Коло, дуга, еліпс і сектор
- •Використання кольору
- •Кольори малюнку і фону
- •Колір у текстовому режимі (оператор color)
- •Колір у графіці (оператор color)
- •Вибір значення для параметра фон
- •Зафарбовування областей
- •Ще один метод малювання
- •Відносний рух
- •Обертання
- •Масштабування зображення
- •Колір в операторі draw
- •Текстові змінні в операторі draw
- •Контрольні питання
- •Варіанти завдань
- •Лабораторна робота №18
- •Процедура
- •Використання підпpoгpaм типу SubRoutіne
- •Використання функцій типу def fn
- •Зразок виконання завдання:
- •Контрольні запитання.
- •Варіанти завдань
- •Лабораторна робота № 19
- •Контрольні запитання
- •Варіанти завдань
- •Лабораторна робота № 20
- •Різні способи дocтyпу до файлів
- •Відкриття фaйлa
- •Peжими pобoти з фaйлaми
- •Пpиклад відкриття фaйлa
- •Перегляд та peдaгувaння файла
- •Контрольні запитання
- •Варіанти завдань
Лабораторна робота №15
Побудова графіків функцій в декартових координатах
Мета роботи - оволодіння засобами машинної графіки QBASIC для виводу результатів обчислень у вигляді графіків та оволодіння практичними навичками по використанню графічних засобів.
Теоретична частина
Про функції
Площа S кола радіуса R визначається за формулою S=PI*R*R. Кожному значенню R відповідає деяке значення S. Ми говоримо, що S є функція аргументу R.
Ви вже зустрічали вирази вигляду :
Y=X*X, Y=SIN (X), Y= SQR(X), …
Все це приклади функцій. У кожному випадку Y є функція X. Вводиться значення X і на виході одержується значення Y. Зазначимо, що для деяких функцій не всі значення Х можна вводити. Наприклад, для функції Y= SQR(X) не можна вводити від’ємні числа. Не має значення, які букви використовувати для позначення функції та аргументу. Але, як правило, використовують букви Y і X.
Представлення функції у вигляді формули саме по собі не дуже наглядне. Наприклад, функція Y=X*X*SIN(1/X). Що можна сказати про її поведінку при великих значеннях Х? А при малих Х? «Краще один раз побачити, ніж сто раз почути», тому для кращого розуміння функцій ми часто малюємо «картинку» - графік функції.
Графіки та координати.
Точку на площині представляють парою чисел (X,Y). Ця пара означає відстань точки від деяких осей. Число Х задає відстань по горизонталі, а Y - по вертикалі.
Побудувати графік функції це значить, що для кожного значення Х з деякої заданої області визначення необхідно обчислити відповідне значення Y та побудувати точку з координатами (X,Y).
Досить цікаво поводить себе функція Y=X*X*SIN(1/X). Якщо побудувати графік для значень Х, між -10 та 10, то він буде дуже схожий на пряму, проведену під лінійку (рис. 15.1а), однак поблизу 0 складається враження, що лінійка трохи змістилась. На наступному (рис.15.1б) зроблено збільшення та побудовано графік для Х між -1 та 1. Тут вже починає прояснятися, що відбувається в околі Х=0. Подальше збільшення дають (рис.15.1в) та (рис15.1г), на яких зображено відповідно області від -0.1 до 0.1 і від -0.025 до 0.025.
а) б)
в) г)
Рис. 15.1. Графік функції з різними
параметрами
Чому при великих значеннях Х графік функції X*X*SIN(1/X) виглядає майже як пряма? Щоб відповісти на це запитання, представимо нашу функцію у вигляді X*SIN(1/X)/(1/X) та позначимо 1/X літерою U. Тепер ми маємо справу з функцією X*SIN(U)/U, а при великих Х величина 1/X(або U) мала. Пригадаємо, що при малих значеннях U значення SIN(U)/U приблизно рівне 1, так що X*SIN(U)/U приблизно рівне Х. Таким чином, при великих значеннях Х отримуємо (приблизно) графік функції Y=X, тобто пряму лінію.
Якщо поглянути на графіки для малих значень Х, то побачимо цікаву особливість. Верхні точки графіка розташовуються в лінію Х*Х, нижчі — в лінію –(Х*Х), а весь інший графік пульсує вгору-вниз між цими кривими. Справа в тому, що наближуючись до нуля, Х проходить через точки -1/ , -1/(2 ), -1/(3 ) і т.д. В цих точках функція X*X*SIN(1/X) приймає значення або Х*Х, або -Х*Х. Простежити поведінку функцій можна, будуючи їх графіки. За допомогою комп’ютера можна ефективно малювати графіки функцій.
При запуску QBASIC екран комп’ютера автоматично готовий для виводу тексту. QBASIC вибирає режим екрана, що вміщує 25 рядків та 80 символів у кожному рядку. Однак, якщо ви хочете малювати, то повинні встановити один з графічних режимів екрану. Зробити це можна, використавши оператор SCREEN. Щоб повернутися у текстовий режим, ви застосовуєте оператор SCREEN 0 .
Оператор SCREEN, таким чином, дозволяє вам включати та виключати обидва типи екранного режиму роботи. Загальна форма даного оператора наступна:
SCREEN номер режиму ,
де номер режиму — ціле число.
При цьому можна вибирати тільки з тих режимів, які доступні для відеоадаптера конкретного комп’ютера.
Графічні режими характеризуються кількістю точок по вертикальній та горизонтальній осях екрану. Наприклад:
SCREEN 2
Ця команда встановлює графічний режим екрана, що містить 640 точок по горизонтальній осі та 200 точок по вертикальній. Зображення створюється точками, а його положення на екрані визначається координатною системою. Початок координат, тобто точка з координатами (0,0), розміщена у верхньому лівому кутку екрану. Остання точка в цьому графічному режимі має координати (639,199) і знаходиться в нижньому правому кутку. Таким чином, середина екрана визначається як точка з координатами (320,100). Рисунок 15.2. демонструє параметри даного графічного режиму.
Д
Рис. 15.2. Координати екрана
PSET, PRESET - малювання точки;
LINE - малювання відрізку;
CIRCLE - малювання кола.
Так як всі ці оператори використовують координати, нам необхідно познайомитися з системами координат на графічному екрані більш детально.
Існує три різних типи координат графічного екрана в QBASIC :
абсолютні координати;
координати на основі Точки Останньої Вказівки, у скороченні — ТОВ (на англ. Last Point Referenced - LPR);
відносні координати.
Абсолютні координати — враховуючи систему координат екрана, ви просто вказуєте місце, в якому хочете намалювати точку, наприклад:
PSET (100, 120)
Значення (100, 120) вказують на розміщення точки по осях X та Y відповідно.
Точка Останньої Вказівки (ТОВ) — координати точки, яка була намальована останньою, зберігаються в пам’яті комп’ютера. Ця точка й називається Точкою Останньої Вказівки та часто використовується в графічних операторах. Наприклад, при малюванні лінії за допомогою оператора
LINE (300, 120)
достатньо вказати координати тільки однієї точки, і на екрані буде проведено відрізок від ТОВ до вказаної точки, яка після цього стане ТОВ. Відразу після включення графічного режиму ТОВ стає точка в центрі екрану.
Відносні координати — ці координати показують величину переміщення відносного положення ТОВ. Щоб намалювати нову точку, використовуючи відносні координати, вам потрібне ключове слово STEP, наприклад:
PSET STEP (-5, 8)
При цьому з’явиться точка, положення якої буде лівіше на 5 і нижче на 8 точок відносно ТОВ. Інакше кажучи, якщо ТОВ має координати (100, 100), то даний оператор означає малювання точки з координатами (95, 108).
Абсолютні координати повинні бути завжди додатними, а відносні можуть бути як додатними, так і від’ємними.
Оператор LOCATE має п’ять різних параметрів, які забезпечують повну владу над курсором. Курсор існує тільки в текстовому режимі, його ширина завжди рівна ширині символу, а висота може регулюватися. Загальна форма оператора LOCATE виглядає наступним чином:
LOCATE рядок, стовпчик, прапорець, початок, кінець,
де рядок — номер рядка, в якому буде розміщено курсор. Це значення повинно бути від 1 до значення максимально можливої кількості рядків;
стовпчик — номер стовпчика (значення може бути від 1 до 80);
прапорець — робить курсор видимим або невидимим;
початок — номер першого сегмента курсору;
кінець — номер останнього сегмента курсору.
Всі ці значення, що присвоюються цим параметрам, повинні бути цілого типу.
Оператор PSET використовується для малювання точки на екрані шляхом зміни її кольору з фонового (чорного) на білий. Оператор може мати наступні форми:
PSET (X, Y), С — абсолютна форма;
PSET STEP (X, Y), С — відносна форма,
де X,Y — абсолютні координати або зміщення точки відносно ТОВ, С - колір
Крім того, в QBASIC існує оператор PRESET, що має повністю аналогічну форму запису. Цей оператор застосовується для зміни кольору відповідної точки на фоновий. Він також може використовувати абсолютні та відносні координати. Отже, оператор PRESET виконує дію, протилежну оператору PSET.
Програмуючи в QBASIC, можна малювати не тільки білі зображення на чорному фоні. Існують різні кольори, які можна використати як для фона, так і для малюнка. При виведенні зображення на екран можна задавати колір фону - FON та колір переднього плану - С. FON та С позначають цілим числом, якому відповідає певний колір. Колір фону можна задати командою COLOR. Колір зображення або визначається командою COLOR, або задається у команді його виводу на екран (команда виводу точки, команда виводу лінії та ін.)
SCREEN 1
COLOR FON, палітра,
де FON — ціле число 0...15; палітра — число 0 або 1. При запису команд виводу зображень С — ціле число 0...3.
Колір відповідний цим значенням С буде залежати від номера палітри у команді COLOR (номер палітри приймає значення 0 або 1) (табл. 15.1).
Таблиця 15.1.
Колір зобра- жен- ня Палітра
|
1 |
2 |
3 |
0 |
0 |
Зелений |
Червоний |
Коричневий |
Колір фону |
1 |
Синій |
Фіолетовий |
Ярко-білий |
|
Режим SCREEN 7 має 16 кольорів (табл. 15. 2.)
Таблиця 15.2.
С |
Колір |
С
|
Колір |
0 |
Чорний |
8 |
Сірий |
1 |
Голубий |
9 |
Світло-голубий |
2 |
Зелений |
10 |
Світло-зелений |
3 |
Бірюзовий |
11 |
Світло-бірюзовий |
4 |
Червоний |
12 |
Світло-червоний |
5 |
Бузковий |
13 |
Світло-бузковий |
6 |
Коричневий |
14 |
Жовтий |
7 |
Білий |
15 |
Ярко-жовтий |
Приклад роботи команди COLOR.
REM Робота с кольором
SCREEN 1: sc = 1: t1$ = "Фон": t2$ = "Палітра"
FOR cl = 0 TO 15
FOR c2 = 0 TO 1
COLOR cl,c2
GOSUB 1000
NEXT c2, cl
SCREEN 0: CLS
PRINT "Закінчена демонстрація роботи режиму SCREEN1"
PRINT "Натисніть клавішу для продовження"
WHILE INKEY$ = ""
WEND
SCREEN 7: sc=7
t1$="Передний план": t2$="Фон"
FOR cl = 0 TO 15
FOR c2 = 0 TО 1
COLOR cl,c2
GOSUB 1000
NEXT c2, cl
SCREEN 0: CLS
PRINT "Закінчена демонстрація роботи режиму SCREEN7"
END
1000 CLS
FOR k = I TO 1000
xt = INT(RND(1) * 320)
yt=INT(RND(l) * 200)
PSET (xt, yt)
NEXT k
VIEW PRINT 22 TO 24
PRINT "SCREEN"; sc; t1$; cl; t2$; c2
PRINT "Натисніть клавішу для продовження"
WHILE INKEY$ = ""
WEND
RETURN
Завдання. Побудувати точковий графік функції Y=X*X*SIN(1/X) при зміні аргументу Х :
1. Від -10 до 10
2. Від -1 до 1
3. Від - 0.1 до 0.1
4. Від -0.025 до 0.025.
Передбачити перед виводом графіка вивід найбільшого та найменшого значення функції.
Розв’язання.
Виберемо графічний режим SCREEN 7. Діапазон зміни аргументу Х відомий. Виберемо абсцису Х0 початку системи координат в точці 80. Масштабний коефіцієнт Мх по осі Х визначається як
Мх =320/(b-a).
Діапазон зміни аргументу Y невідомий. Тому в програмі необхідно визначити найбільше Ymax та найменше Ymin значення серед тих значень Yi, які обчислюються. Вибір ординати Y0 початку систем координат проведемо з умови максимального використання поля, виділеного під графік:
якщо Ymax > 0 і Ymin > 0, то Y0 =200 — це номер нижньої точки по вертикалі, виділеної під графік;
якщо Ymax < 0 і Ymin < 0, то Y0 =0 — це номер верхньої точки по вертикалі, виділеної під графік;
якщо Ymax > 0 і Ymin < 0, то Y0 = ]My * Ymax + 0.5[.
Масштабний коефіцієнт My вертикальної осі Y рівний My = 200/(Ymax - Ymin ).
Для побудови графіка необхідно виконати перетворення координати точки (X, Y) вибраної системи координат з центром (X0, Y0) в координати екрана (Xе, Yе):
Xe = ] x*Mx + 0.5 [ + X0. Ye = Y0 - ]y*My + 0.5[.
Значення 0,5 взяте для округлення. Знак “-“ при обчисленні Ye означає зміну напрямку осі ординат.
Програма
BEGIN1:
CLS
'Побудова графіка функції
DIM Y(600)
COLOR 1, 10
PRINT "Введіть початкове значення Х "
INPUT A
PRINT "Введіть кінцеве значення X "
INPUT B
CLS
N = 500
HX = (B - A) / N
LOCATE 5, 15
PRINT "Область зміни Х"
PRINT "Початкове значення Х="; A
PRINT "Кінцеве значення Х="; B
PRINT "Крок HX="; HX
' Знаходження областей значень Y(I), YMAX, YMIN
YMAX = -1E+10: YMIN = 1E+10: I = 0
FOR X = A TO B STEP HX
I = I + 1
Y(I) = X ^ 2 * SIN(1 / X)
IF Y(I) > YMAX THEN YMAX = Y(I)
IF Y(I) < YMIN THEN YMIN = Y(I)
NEXT X
PRINT "YMIN="; YMIN, "YMAX="; YMAX
'Знаходження масштабів MX,MY, координати Y0
MX = 320 / (B - A)
MY = 200 / ABS(YMAX - YMIN)
IF (YMAX > 0) AND (YMIN >= 0) THEN Y0 = 200
IF (YMAX = 0) AND (YMIN < 0) THEN Y0 = 0
IF (YMAX > 0) AND (YMIN < 0) THEN Y0 = INT(MY * YMAX + 0. 5)
LOCATE 24, 1
PRINT "Для побудови графіка функцій натисніть"
LOCATE 25, 1
PRINT "будь-яку клавішу"
WHILE INKEY$ = "" 'Зупинка виконання програми до натиснення будь-якої клавіші
WEND
CLS
SCREEN 7
COLOR 5, 0
I = 0
'Побудова графіку з точок
COL = 2 'Колір точки зелений
X0 = 80
FOR X = A TO B STEP HX
I = I + 1
XE = INT(X * MX + 0. 5) + X0 'Перетворення (X,Y)
YE = Y0 - INT(Y(I) * MY + 0. 5) 'в координати екрану
PSET (80 + XE, 110 + YE), COL 'відображення точки
NEXT X
’Закінчення і запит на повторне виконання програми
LOCATE 1, 2
PRINT "Якщо потрібно повторити виконання програми"
PRINT " натисніть (Y), інакше - (N)"
BEGIN2:
G$ = INKEY$
IF G$ <> LCASE$("Y") AND G$ <> LCASE$("N") THEN GOTO BEGIN2
IF G$ = LCASE$("Y") THEN GOTO BEGIN1
END
Результат виконання програми: