- •Етапи підготовки і рішення задач на еом
- •Програма, що не має помилок часу трансляції і виконання, може і не дати вірних результатів через так звані логічні помилки в обраному алгоритмі, тобто алгоритмічних помилок.
- •Запис алгоритмів у виді блок – схем
- •Мови програмування
- •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
Вправи та запитання
1. Скільки елементів мають описані нижче масиви та до якого типу вони належать, якщо мінімальне значення індексу є 1:
а) DIM А%(5), В(60), С(2,3);
б) DIM А(8), В!(2,40),С1%(5); в)DIMA#(2,5),B%(150),C1(30);
r) OPTION BASE 1918
DIM A (1923), B%(1925), СЩ1919);
д)OPNION BASED
DIM A(13), B%(15), D$(17) ?
2. Чому розміри масивів рекомендують задавати за допомогою оператора INPUT?
16. Нестандартні функції та підпрограми
1. Модульна структура програми. Модуль - це функціонально завершена частина програми, яку можна використати один чи багато разів і не тільки для розв'язування одної заданої задачі, але й інших подібних задач.
Подібним чином робимо в інформатиці. Складні задачі розбиваємо на окремі підзадачі. Кожну підзадачу розв'язуємо окремо. Складаємо відповідні їм програми, що і є модулями. Кожний модуль програмуємо з урахуванням правил написання структурованих програм. З'єднані модулі утворюють програми розв'язування основної задачі.
Самостійно модулі не виконуються. Спочатку виконується частина програми, яка називається головною (основною) програмою, або головним (основним) модулем. Інші модулі є допоміжними й викликаються в процесі виконання головної програми. Після виконання чергового допоміжного модуля знову продовжує виконуватися головна програма.
Модулі відповідно можуть викликати інші модулі. У програмі може бути будь-яка кількість модулів, які обмінюються значеннями не тільки з головною програмою, але й між собою. В останньому випадку модульна структура програми має складний розгалужений вигляд (мал. 13).
Головна програма
Функція 1
Підпрограма 1
Функція 2
Підпрограма 2
Функція 3
Підпрограма 3
Підпрограма 4
Maл. 13. Модульна структура програми.
Складання програм з добре організованими модулями - це також ознака доброго стилю програмування й завдання структурного програмування.
Поняття модуля в інформатиці є досить загальним. Стосовно мови Бейсик розрізняють два види модулів: нестандартні функції (функції користувача) та підпрограми.
2. Нестандартні функції. Функції поділяються на стандартні та нестандартні.
Кількість стандартних функцій обмежена. Тому користувач має змогу створити будь-які інші функції. Відповідні модулі називаються нестандартними функціями (або функціями користувача). Нестандартну функцію використовують так само, як і стандартну.
Отже, нестандартні функції - це функції, уведені користувачем, коли потрібно багаторазово обчислювати вирази одного вигляду для різних значень вхідних даних.
Нестандартну функцію треба описати. Для опису нестандартної арифметичної функції є оператор опису функції:
DEF
FN
ім'я
(А) = арифметичний вираз
Тут DEF FN (описати функцію) - службові слова. Ім'я - це ідентифікатор, який користувач називає функцією, і необов'язковий символ (%, #, !, $),який зазначає тип функції. Аргументом А є проста змінна. В арифметичному виразі можуть бути змінна А, сталі, інші змінні, інші функції. Аргумент А називається формальним параметром. Функція може мати не один, а декілька формальних параметрів. Оператор DEF є описовим. Найчастіше функції описують на початку програми.
Приклад 1. Розглянемо два оператори опису функції:
10DEFFNA(X) = 2*X 20DEFFNC(A,B) = SQR(A^2 + B^2)
Обчислення функції. Функції обчислюються в момент звертання до неї за допомогою вказівника функції
FNім'я(В)
де В є фактичним параметра. Фактичним параметром може бути стала або змінна, арифметичний вираз або вказівник іншої функції, а також індексна змінна. Вказівники нестандартних функцій використовують в арифметичних виразах як операнди.
Дія вказівника. Якщо в конкретному арифметичному виразі трапляється вказівник нестандартної функції, то система виконує такі дії:
обчислює значення фактичного параметра;
звертається до оператора опису даної функції;
надає формальному параметру в арифметичному виразі значення фактичного та обчислює весь вираз;
отримане значення присвоює вказівнику;
продовжує обчислення конкретного арифметичного виразу.
Приклад 2. Нехай у програмі є такі оператори;
10 DEF FNA(X) = 2*X 20 DEF FNC(A,B) = SQR(A^2 + В^2)
30 Х = 0 : А = 3 : В = 4 40 Z=FNA(X) + FNA(A) + FNA (2) 50 W = FNC(A,B)
Взаємодія операторів у рядках 10-50 дасть такі результати:
Z = 0 + 6 + 4-10, W=SQR(9+ 16) = 5
Висновок. Використання нестандартних функцій робить програму користувача більш універсальною. Якщо потрібно, зміни в арифметичних виразах можна зробити, не змінюючи головної програми. Слід пам'ятати, що функція дає змогу обчислити тільки одне значення, яке присвоюється вказівку функції.
Довідка 1. Оператор DEF дає змогу описувати функції за допомогою тільки одного програмного рядка. В сучасних системах модуль опису функції може складатися з декількох операторів і рядків. Він починається оператором
DEF FN ім’я (список формальних параметрів) і закінчується спеціальним оператором - .
ENDDEF
(або FNEND, або іншим залежно від системи). У середині модуля функцію описують так:
серія операторів
FN <ім'я> = арифметичний вираз.
Отже, модуль опису функції має такий вигляд:
DEF FN ім'я (список формальних параметрів)
серія операторів
FN ім'я = арифметичний вираз
ENDDEF
Приклад 3. Розглянемо програму. Записати функцію, яка визначає більше серед двох чисел А і В.
DEF FNA1(A,B)
IF A>B THEN FNA1=A ELSE FNA1=B
END IF
END DEF
Довідка 2. У середовищі QBasic функцію можна описати за допомогою такої конструкції:
FUNCTION <ім’я>(список параметрів)
…
<Ім’я> = <вираз>
END FUNCTION
Така функція (на відміну від попередніх) буде відокремлена від основної програми.
3. Підпрограми. Оператор CALL. Підпрограма - це модуль, в якому розв'язується допоміжна задача. Його можна викликати один або багато разів з різних місць головної програми і використати для складання інших програм. На відміну від функції, програма дає змогу обчислити та передати в головну програму не одне, а потрібну (за змістом задачі) кількість значень. Підпрограми в навчальній алгоритмічній мові ми називали допоміжними алгоритмами.
Підпрограма має такий вигляд:
SUB ім’я (список формальних параметрів)
серія операторів
END SUB тут SUB, END SUB-службові слова.
Підпрограми викликають з головної програми за допомогою оператора виклику
CALL ім’я (список фактичних параметрів)
Обидва списки повинні збігатися за кількістю параметрів та їхніми типами.
Дія операторів. Під час виконання оператора CALL значення фактичних параметрів надаються відповідним формальним. Виконується серія операторів. Результати обчислень через параметри передаються у зворотньому напрямку. Виконується наступний після CALL оператор.
Приклад 4. Розглянемо програму, яка використовуючи підпрограму визначає вартість телефонної розмови з по хвилинною оплатою 0,27 грн + 20 % податку.
Програма. Оплата за телефонну розмову
CLS
INPUT “Уберіть кількість хвилин розмови” ; К
СALL CINA (K,C)
PRINT “Вам необхідно заплатити”; С; “грн.”
END
SUB CINA (N,C)
C=0.22*N
C=C+0.22*C
END SUB
4. Підпрограми. Оператор GOSUB. Розглянемо оформлення програм у різних версіях мови. Підпрограма складається з рядків. Вона починається рядком з деяким номером, який визначає вхід у підпрограму, а закінчується оператором RETURN. Отже, підпрограма - це конструкція такого вигляду:
номер ...
... серія операторів
…
...RETURN
Підпрограми наведеного вигляду структурно не відокремлені від головної програми. Вони записуються в кінці головної програми або на її початку. У першому випадку номери рядків підпрограм є більшими від номерів рядків головної програми.
Оператор GOSUB. Щоб використати підпрограму, до неї потрібно звернутися з відповідного місця головної програми. Оператор переходу до підпрограми має вигляд
GOSUB <номер>
Тут GOSUB (перейти до підпрограми) - службове слово. Номер - це номер рядка, з якого починається підпрограма.
Дія операторів GOSUB-RETURN. Виконується перехід до рядка з зазначеним (в операторі GOSUB) номером. Усі значення, які отримали змінні перед виконанням оператора GOSUB, можна використати в підпрограмі як вхідні дані. Виконується серія операторів програми. Усі значення, які отримають змінні в підпрограмі, можна використати в головній програмі нижче оператора GOSUB. Виконання оператора RETURN повертає до головної програми. Виконується оператор, який є наступним після відповідного оператора GOSUB.
Довідка 4. Для переходу до однієї з потрібних програм (для реалізації меню) корисним є оператор:
ON A GOSUB <список номерів>
Приклад.
Задача. У розчинах А і В є по “n” компонентів. Кількість кожного компонентна в кожному розчині визначається формулами
a
i
=
1+ ln і
i = 1, n
ві = 1+cos i
Визначити маси всіх компонентів у суміші та масу суміші С
Оформити у вигляді головної програми та підпрограм. В одній підпрограмі (з іменем Р1) виконати додавання значень елементів двох масивів, а в іншій (Р2) – обчислити суму значень елементів кожного масиву.
Кількість компонент у суміші – 40.
10 REM Використання підпрограм.
20 N=40
30 DIM A(N), B(N), C(N)
40 FOR I=1 то N
50 A(I)=1+sin(I)
60 B(I)=1+cos(I)
70 NEXT I
80 GOSUB 200
90 GOSUB 300
100 PRINT “S=”;S
110 END
200 REM Підпрограма 1
210 FOR I=1 то N
220 C(I)=A(I)+B(I)
230 NEXT I
240 RETURN
300 REM Підпрограма 2
310 S=0
320 FOR I=1 то N
330 S=S+S(I)
340 NEXT I
350 RETURN
Вправи та завдання
1. Що буде виведене на екран дисплея в результаті виконання операторів: а) 10 DEF FNA(X)=3*X б) 10 DEF
FNA(X)=2*X + 5 20 PRINT FNA(l) + FNA(2)
20 PRINT FNA(l)
в) 10 DEF FNA(X)=X + 3 r) 10 DEF FNA(B)=3*B - 5 20 A1-FNA(0) 20Y=FNA(5) : 30 PRINT Al 30 PRINT Y, FNA(O)
д) 10 DEF FNA(X)=2*A + 6
20DEFFNB(X)-5*X-3 : 30 Y=FNA(5) + FNB(5) 40 PRINT Y, FNA(FNB(1)) ?
2. Якими будуть результати виконання операторів:
а) 10 DEF FNA(X)=X*X-3*X+5 б) 10 DEF FNX(A)=5*A-3+C Г 20Х=4 20С=1
3.Яка різниця між стандартною та нестандартною функцією?
4.Яка різниця між функціями та підпрограмами?
5.Для чого використовують формальні та фактичні параметри?
6. Що буде видано на екран монітора в результаті виконання команд
а) 10 DEF FNA(X)=3*X б) 10 DEF FNA(X)=2*X+5 20 PRINT FNA(l) 20 PRINT FNA(1)+FNA(2)
в) 10 DEF FNA(X)=X*3 r) 10 DEF FNA(B)=3*B+5 20 A1=FNA(0) 20 Y=FNA(1)
30 PRINT A1 30 PRINT Y, FNA(0)
д) 10 DEF FNA(X)=5*X+6
20 DEF FNB(X)=5*X-3
30 Y=FNA(5)+FNB(5)
40 PRINT Y FNA(FNB(1))
