Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

_TPLab_My_Посібник

.pdf
Скачиваний:
20
Добавлен:
08.06.2015
Размер:
1.85 Mб
Скачать

Пуск

Очистка екрану

Тема, завдання автор

Кількість k = 1 виконань програми

k ≤ 3?

Так

Значення точності Eps

S = 1

i = 2

Fact = 1

j = 1

j 2i-1?

Так

Fact = Fact * j

j = j + 1

4 3

Ні

Номер члена ряду

Ні

Цикл обчислення

факторіалу

1 2

41

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

4

3

1

2

S = S + (-1)i/ Fact

Номер i = i +1 наступного

члена ряду

Ні

(i +1)-й

 

член < Eps ?

Так

Сума ряду, останній доданок, відкинутий член ряду

k = k +1

Зупинка

Рисунок 1. Блок-схема алгоритму.

3. Обґрунтування структури програми та специфікація змінних і функцій.

Ітераційний цикл з післяумовою реалізуємо за допомогою оператора Repeat...Until.

Для кожного члена ряду, починаючи з другого, організуємо внутрішній цикл із заданим числом повторень (For…To…Do) для обчислення факторіалу.

Так як необхідно виконати програму тричі для різних значень точності, то необхідно організувати ще й зовнішній цикл з числом повторень 3.

Специфікація змінних.

 

 

 

 

 

 

 

Іденти-

 

 

 

Об’єм пам’яті,

 

 

 

 

Призначення

фікатор

 

Тип

 

 

 

діапазон

 

 

 

 

 

 

 

змінної

 

 

 

 

 

значень

 

 

 

 

Кількість

k

 

 

 

 

 

 

 

 

1

 

виконань

 

Integer

 

 

 

2 б; 1..3

 

 

 

 

програми

 

 

 

 

 

 

 

 

 

 

 

 

Лічильник

i

 

 

 

 

 

 

 

 

2

 

кількості членів

 

Integer

 

 

 

2 б

 

 

 

 

ряду (доданків)

 

 

 

 

 

 

 

 

 

 

 

 

Лічильник циклу

j

 

 

 

 

2 б; 1.. 2i-1

 

3

 

для обчислення

 

Integer

 

 

 

 

 

 

факторіалу

 

 

 

 

 

 

 

 

 

4

 

Факторіал числа

Fact

 

Integer

 

 

 

 

5

 

Точність

Eps

 

Real

 

6 б; 0.01;0.001;

 

 

 

 

 

0.0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

Сума ряду

S

 

Real

 

 

 

6 б

Специфікація функцій.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Призначення

 

Синтаксис

Тип

 

 

Тип

 

 

 

параметрів

 

результату

 

 

 

1

 

x y

 

Power(x,y)

x, y - Real

 

Real

 

 

 

(в PascalABC)

 

 

 

42

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

2

sin х

Sin (x)

Real

Real

3

Модуль числа

АВС(х)

Real

Real

4. Текст програми. Program Suma;

Uses CRT; { Підключення модуля керування екраном } Var k, i, j, Fact : Integer;

S, Eps : Real;

Begin

 

 

 

 

 

 

ClrScr;

{ Очистка екрану }

 

Writeln (‘

 

Лабораторна робота №3’);

 

Writeln (‘ Опрацювання простих типів даних ’);

Writeln (‘ (реалізація циклічних алгоритмів)’);

Writeln (‘ Завдання №1, варіант №1’);

 

Writeln (‘ Роботу виконав ст.гр.1Ф Петренко Петро ‘);

Writeln (‘ Знаходження суми ряду ’);

 

Writeln (‘ Версія 1, дата захисту 30.09.2010 р. ’);

For k

 

1 To

3 Do

 

 

 

Begin { Цикл 1}

 

 

Writeln (‘ Введіть ε: 0,01; 0,001; 0,0001 ‘);

 

 

Read (Eps);

 

 

 

iS 2;1;

 

 

 

 

Repeat

 

 

 

 

 

 

Fact

1;

 

 

 

 

 

For

j 1 To (2*i-1) Do Fact

Fact*j;

 

 

 

 

S

S + Power (-1,i-1) / Fact;

 

 

 

 

 

i i+1;

 

 

 

Until

Power(-1,i-1)/(Fact*(2*i-2)*(2*i-1))) < Eps;

 

 

 

 

 

Writeln (‘S=’, S,’ доданків =’, i-1);

Writeln (Power (-1,i-1)/ Fact); { Останній доданок } Writeln (Power(-1,i-1)/(Fact*(2*i-2)*(2*i-1)));

{Відкинутий член ряду}

End { Цикл 1}

Writeln (‘ Sin(1)=’,Sin(1));{Перевірка результатів обчислень}

Readln

End.

Примітка: В даній програмі використана вбудована (стандартна) функція Power для обчислення степеня числа. Але ця функція є тільки в PascalABC та в PascalABC.NET. В Turbo Pascal обчислення степеня числа необхідно використати стандартні функції Ln та Exp.

5. Аналіз достовірності результатів обчислень.

Так як заданий ряд є розкладом функції Sin(1) в ряд Маклорена, то для перевірки правильності обчислень виведемо результат обчислення значення Sin(1), використавши стандартну (вбудовану) функцію Sin.

43

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

КОНТРОЛЬНІ ЗАПИТАННЯ:

1.Змінні якого типу можуть використовуватись в якості параметру циклу?

2.Коли здійснюється вихід з циклу з передумовою?

3.При якій умові виконується цикл з післяумовою?

4.Чи вірно працюватиме наступна конструкція:

For i 1 To 10 Do Begin

{ оператори } i i + 1

End;

…?

5.Чому в тілі циклу із заданим числом повторень не можна змінювати значення параметру циклу (лічильника)?

6.Чому спосіб обчислення значення члена ряду за допомогою рекурентної формули (через значення попереднього члена) в задачах обчислення суми ряду є більш економним?

7.Яким чином в задачах сумування рядів реалізувати зміну знаку члена ряду? Адже записати (-1)i через стандартні функції Ln та Exp в Turbo Pascal неможливо (чому?).

ЗАВДАННЯ ДЛЯ САМОСТІЙНОГО ВИКОНАННЯ. Завдання 1. Знаходження суми членів ряду.

Обчислити суму членів ряду із заданою точністю та визначити кількість членів ряду для досягнення цієї точності. Виконати програму тричі для різних значень точності (0,01; 0,001; 0,0001).

Ряд (загальний член)

1

s 1

1

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3!

 

 

 

1!

 

 

 

 

2!

 

 

 

 

 

 

 

 

 

 

 

 

s 1

x

2

 

 

 

 

 

 

 

x4

 

 

 

 

 

 

 

 

x6

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2!

 

 

4!

 

6!

 

 

 

 

 

 

3

s 1

1

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

4

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

4

s 1

1

 

 

1

 

 

1

 

 

1

 

1

 

 

 

 

2

 

 

4

5

 

1

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

5

s 1

1

 

 

 

 

1

 

1

 

 

1

 

 

 

 

 

 

 

16

 

2

 

 

 

 

4

 

 

 

 

8

 

 

 

 

 

 

 

 

 

6

s

1

 

 

 

1

 

 

 

 

 

1

 

 

 

 

 

2*4

 

 

 

 

 

 

 

 

 

 

1*3

 

 

 

 

 

 

 

3*5

 

 

 

Ряд (загальний член)

14

xn = (-1)n/nn

 

 

15

xn=1/2n+1/3n

 

 

16

xn = (2n-1)/2n

 

 

17

xn = 1/((3n-2)(3n+1))

 

 

18

xn = (3n+1)/3n

 

 

19

xn = 10 n/n!

 

 

44

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

7

s 1

1

 

1

 

1

 

1

 

1

 

 

 

 

 

 

 

1

3

5

7

9

 

8

s

 

1

 

 

 

 

1

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

1*2

2*3

3*4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9 s

 

1

 

 

 

 

1

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1*3

 

 

 

 

3*5

 

 

 

 

 

 

 

5 * 7

 

 

 

 

 

 

 

 

10

s 1

1

 

1

 

 

 

 

1

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

3

 

 

 

 

4

 

 

5

 

 

 

 

 

 

6

 

 

 

 

11

s 1 x x2 x3 x4

x5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

s 1 x2 x4

x6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s x

x2

 

 

 

 

 

 

x3

 

 

x4

 

 

 

 

 

 

 

 

 

 

13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

2

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27

 

s 1

1

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1!

2!

 

 

 

3!

 

 

 

 

 

 

 

 

s 1

x

2

 

 

 

 

 

 

x4

 

 

 

 

 

x6

 

 

 

28

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6!

 

 

 

 

 

 

 

 

 

 

2!

 

 

 

4!

 

 

 

 

 

 

 

 

 

20

xn = (n)!/(2n)!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21

xn = n!/nn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22

s 1

x

 

x2

 

x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1!

 

2!

 

 

3!

 

 

 

23

s 1 x

x2

 

 

x3

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

2!

 

 

 

3!

 

 

 

 

24

s x

x3

 

 

x5

 

 

 

x7

...

 

 

 

 

 

 

 

 

 

 

3

 

5

 

 

 

 

 

 

 

7

 

25

s x

x3

 

 

x5

 

 

x7

 

 

 

 

 

3

 

5

 

7

 

 

26

s 1 x x2 x3 x4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

29xn = (-1)n/nn

30xn=1/2n+1/3n

Завдання 2. Табулювання функцій.

Означення. Табулювання функції – це обчислення значень функції при зміні аргументу від деякого початкового значення до деякого кінцевого значення з певним кроком (Вікіпедія).

Саме так складаються таблиці значень функцій, звідси і назва – табулювання. Необхідність табулювання виникає при розв’язуванні досить широкого кола задач. Наприклад, при чисельному розв’язуванні нелінійних рівнянь f(x) = 0, шляхом табулювання можна відділити (локалізувати) корені рівняння, тобто знайти такі відрізки, на кінцях яких, функція має різні знаки. В деяких випадках функція не має аналітичного представлення, а її значення отримуються в результаті обчислень, що часто буває при комп’ютерному моделюванні різних процесів. Тоді можна побудувати одним з відомих методів апроксимуючу її функцію, яку використовувати в подальших обчисленнях. Необхідність в табулюванні виникає також при побудові графіків функції.

Обчислити значення функції на відрізку [a,b] в точках xi = a + ih, де h=(b-a)/K, K >=20 – задане число. Результати обчислень вивести у вигляді пар чисел х,у. Виконати завдання пошуку даних. Таблиця 2

Функція

Інтервал

1

Y log2(x

2

2x 3)

-3; 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

Y 2x e 3x

 

 

 

 

 

-2; 2.2

3

Y 4 cos(x)/(1 x2)

-2 ; 2

 

Y cos(x)/

 

 

 

 

 

 

 

4

 

 

x 1

0; 2

5

Y ((2x 1)/(x2 x 1))3

-5; 0

6

Y 4/(x2 x 1)

-4; 0.5

7

Y

 

(x 3)/(x 4)

 

 

-4; 3

 

 

 

 

 

8

Y (1 x2)/(x 2,1)

-4;-2.2

9

Y cos((1 x2)/(1 x2))

-3; 1

10

Y cos(log

2

x)

0.1; 1

 

 

 

 

 

 

 

 

 

 

 

45

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

11

Y cos(2x)+sin(x5)

-6; 0

12

Y 2x sin( x/4)-cos(x)

-2 ; 2

13

 

3

 

 

 

 

 

 

 

Y

x

2

3 2

-5; 0

 

 

 

 

 

x +x -x

 

14

Y

 

(sin(x)

 

sin(x))/2

-2 ; 2

 

 

 

 

 

 

15

Y (5x2

32)/(1 x2 x3)

-5; 3

16

Y ex sin(x)+√x7

- ; /2

17

Y 2x e 3x + x17

-2; 2,5

18

Y tg(x) 2x- cos (2x+1)

- /3;2 /3

19

Y = x2 x4 + ctg(x7-1)

-3; 5

 

 

 

20

Y sin(3 sin(x)) + tg(xcos(x3))

- ;

21

Y cos(2x)

-4; 0

22

Y 2x sin( x/4)

-3 ;

 

Y 3

 

 

 

 

 

 

 

23

x2 x

-3; 0

24

Y

 

(sin(x)

 

sin(x))/2

-2 ; 2

 

 

 

 

 

25

Y (2x 3)/(1 x x2)

-3; 3

1.Обчислити суми першого та останнього значень функції.

2.Обчислити суму та добуток всіх значень функції у, для яких виконуються нерівності у<-3,2 або у>0.

3.Обчислити добуток та кількість усіх значень функції у, для яких виконуються нерівності у<-3 або у>0,4.

4.Обчислити добуток усіх від'ємних значень функції у та визначити кількість додатних.

5.Обчислити добуток значень аргументу (х), для яких досягаються мінімальне та максимальне значення функції у.

6.Визначити максимальне та мінімальне значення функції.

7.Визначити суму додатних значень функції та кількість від'ємних.

8.Скільки від'ємних та додатних значень має функція у?

9.Обчислити суму та кількість додатних значень функції у.

10.Обчислити суму квадратів усіх додатних значень функцій у.

11.Обчислити модуль різниці максимального та першого значень функції.

12.Обчислити суму усіх значень функції, для яких виконуються нерівності у<1,2 або у/>4.

13.Обчислити добуток додатних значень та кількість від'ємних.

14.Обчислити добуток від'ємних значень функції у. У якій точці (х) функція набуває максимального значення.

15.Обчислити добуток усіх значень функції, для яких справджується нерівність 1<у<3,1. Визначити, для якого х функція набуває мінімального значення.

16.Обчислити кількість та добуток усіх від'ємних значень.

17.Обчислити суму квадратів та добуток усіх значень функції, для яких справджується нерівність - 2,41<у/<5.

18.Обчислити модуль добутку максимального та мінімального значень.

19.Обчислити середнє арифметичне всіх від'ємних значень функції.

20.Обчислити суму кубів всіх додатних значень та їхню кількість.

21.Знайти середнє арифметичне тих значень функції, для яких виконуються нерівності у<0 або у>1.

22.Знайти мінімальне значення функції, а також визначити значення аргументу, для якого воно досягається.

23.Обчислити суму та кількість тих значень функції, для яких виконується нерівність 0<у<1.

46

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

24.Обчислити кількість та добуток тих значень функції, для яких виконуються нерівності 1,3<у/<5.

25.Яких значень функції більше: додатних чи від'ємних?

47

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

ЛАБОРАТОРНА РОБОТА № 4 Проектування та відлагодження програм опрацювання регулярних типів даних (масивів)

МЕТА РОБОТИ: Навчитись проектувати алгоритми та програми опрацювання масивів з використанням операторів присвоєння, розгалуження та циклу.

ЗАВДАННЯ:

Спроектувати алгоритми та програми розв’язання задач впорядкування (сортування) масивів (завдання 1) та опрацювання масивів (завдання 2, табл.1) за варіантами завдань, номери яких визначає викладач..

МЕТОДИЧНІ ВКАЗІВКИ

1.Перед виконанням роботи необхідно пригадати:

логічну структуру програми на мові Turbo Pascal;

правила опису простих типів даних;

правила запису виразів;

синтаксис основних операторів;

синтаксис опису та правила застосування стандартних (бібліотечних) процедур і функцій.

2.Перед виконанням цієї роботи необхідно вивчити:

правила опису одномірних та багатомірних масивів;

способи ініціалізації масивів;

правила звертання до компонент масиву;

допустимі операції над масивами.

3.Перевірка правильності роботи програми здійснюється шляхом аналізу отриманих результатів на основі порівняння вихідного і результуючого масивів.

ВІДОМОСТІ З ТЕОРІЇ

Складені або структуровані типи даних задають множину складних значень з одним загальним ім'ям. Існує кілька методів структурування, кожний з яких відрізняється способом звертання до окремих компонент. Одним із структурованих типів даних є регулярний тип (масив).

Означення 1. Масив (регулярний тип) – це впорядкований набір фіксованої кількості значень компонент (елементів) одного і того ж типу (базового), які зберігаються в послідовно розташованих комірках пам’яті комп’ютера і мають спільну назву (ім’я).

Назву регулярний тип масиви одержали за те, що в них об'єднані однорідні елементи, упорядковані (урегульовані) за індексами, які визначає положення кожного елементу в масиві. Тому можна доповнити Означення1 таким чином: масив – це структура даних, яка базується на обчисленні адрес її елементів за допомогою арифметичних операцій.

В математиці поняттю масив відповідають поняття вектора та матриці.

Тип компонент масиву (базовий тип) може бути будь-яким, прийнятим в мові Turbo Pascal, крім файлового типу.

Кожна компонента (елемент) масиву може бути явно визначена іменем масиву, за яким слідує селектор компоненти – взятий в квадратні дужки індекс, значення якого визначає номер компоненти масиву. Таким чином для посилання на масив використовується його ім’я, а для посилання на окремі компоненти масиву використовується запис:

<ім’я масиву > [< індекс >]

В загальному випадку індексом може бути вираз, який обчислюється і значення якого визначає номер компоненти масиву. Тип значення індексного виразу називається типом індексу. Індекси утворюють скінченну множину впорядкованих значень, тому в якості індексних типів у Turbo Pascal можна використати будь-які порядкові типи, крім Longint та його піддіапазонів Word, Integer і типівдіапазонів з базовим типом Longint.

Найчастіше в якості типу індексу використовується інтервальний цілий тип. Індекси інтервального типу, для якого базовим є цілий тип, можуть приймати від’ємні, нульове і додатні значення.

Опис масиву визначає його ідентифікатор (ім'я), розмір масиву і тип компонент – базовий тип.

Синтаксис опису масиву (розділ опису типів):

Type <ім’я_нов_типу> = Array [<тип_індексу>] Of <баз_тип>;

В розділі опису змінних масив описується як змінна визначеного вище нового типу:

48

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

Var <ім’я_змінної> : <ім’я_нов_типу>;

або як змінна-масив базового типу:

Var <ім’я_ змінної >: Array [<тип_індексу>] Of < баз_тип >;

Наприклад:

Type Mas = Array [1. .5, -2. .2,Char] Of Byte;

Var a, b : Array [1. .10] Of Real; c : Array [Byte] Of Single; d: Mas;

Якщо в описі масиву тип індексу є Longint (вказаний явно або значення індексу належать діапазону значень Longint, тобто, виходять за межі діапазону Integer або Word ), наприклад:

Type mat = Array [Longint ] Of Byte;

Var a, b : Array [Longint ] Of Real; d : mat;

то компілятор видасть повідомлення про помилку – Error29: Ordinal type expected (очікується ординальний тип).

Якщо в описі масиву тип індексу є INTEGER або WORD (вказані явно або значення індексу вичерпують їх діапазон значень)

Type Mas = Array [ Word ] Of Byte; Var a, b : Array[Integer] Of Real;

c : Mas;

d : Array[1..65535] Of Real;

e : Array [-32768..32767] Of Real;

то компілятор видасть повідомлення про помилку – Error22: Structure too large (структура дуже велика), так як максимальний допустимий розмір структурованих даних - 65520 байт.

Не слід також забувати, що загальний розмір всіх змінних, оголошених в програмі або модулі, не повинен перевищувати 64Кб.

Структуровані типи (масиви, записи, множини, файли) характеризуються множинністю утворюючих цей тип елементів, тобто змінна або константа структурованого типу завжди має кілька компонент. Кожна компонента, в свою чергу, може належати структурованому типу, що дозволяє говорити про можливу вкладеність типів. В Turbo Pascal допускається довільна глибина вкладеності типів, однак сумарна довжина кожного з них у внутрішнім поданні не повинна перевищувати 65520 байт.

Так як тип <тип_компонент>, який вказується після слова OF, - будь-який тип Turbo Pascal, то він може бути, зокрема, іншим масивом, наприклад:

Type Mas = Array[0..5] Of Array[-2..2] Of Array [Char] Of Byte;

Такий запис можна замінити більш компактним:

Type Mas = Array [0..5,-2..2,Char] Of Byte;

Таким чином опис багатомірного масиву задається наступним чином:

Type <ім’я_нов_типу> = Array [<сп.індекс.тип>] Of <баз_тип>;

де <сп.інд.тип> — список з одного або декількох індексних типів, розділених комами.

В пам'яті комп’ютера елементи масиву слідують один за одним так, що при переході від молодших адрес до старших найбільш швидко змінюється самий правий індекс масиву. Двомірні масиви зберігаються в пам'яті комп’ютера по рядках. Перший індекс визначає номер рядка, другий - номер стовпця.

Операції над масивами.

1. В Turbo Pascal можна одним оператором присвоювання передати всі елементи одного масиву іншому масиву того ж типу, наприклад:

Var a, b : Array [1. .5] Of Single;

Begin ... a b; … End;

49

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

2. Для масивів не визначені операції відношення, запис if a=b є невірним.

Масиви вводяться/виводяться покомпонентно. Для введення-виведення масиву в списку введення/виведення вказується змінна з індексом, а оператори введення/виведення виконуються в циклі.

Примітка 1: Передавати масив в процедуру/функцію можна тільки як змінну масивового типу, описаного в розділі опису типів.

ДОДАТКОВI ВIДОМОСТI:

1. Шаблон опису регулярних типів.

Для забезпечення мінімальної модифікації програми опрацювання масиву при її повторному застосуванні до масивів з іншою кількістю компонент доцільно скористатись наступним шаблоном опису масиву та змінних типу масив:

Const N=17; М=19;

Type Mas = Array [1..N,1..M] Of Byte;

Var a : Array Of Mas;

b : Array [1. .N] Of Real;

Тоді в операторах програми (циклах, введення-виведення тощо) будуть використовуватись не числові значення, а ідентифікатори констант N і М.

При повторному застосуванні програми до опрацювання масиву з іншою кількістю компонент достатньо змінити тільки значення цих констант N і М.

2.Ініціалізація масиву (присвоєння початкових значень всім компонентам масиву) здійснюється одним із вказаних нижче способів.

Перший спосіб – введення значень компонент масиву з клавіатури:

Другий спосіб – ініціалізація за допомогою за допомогою процедури Randomize, яка ініціалізує вбудований генератор випадкових чисел довільного значення (отриманого із системного годинника), та функції Random.

Функція Random (N) повертає випадкове ціле число з діапазону [0,N). Функція Random без параметру повертає випадкове дійсне число з діапазону [0,1).

Randomize; {ініціалізація генератора випадкових чисел}

For i 1 To 10 Do Begin

a[i] Random(1000); a[i] a[i]/2-250

End;

Третій спосіб - з використанням типізованих констант, наприклад:

Type Dim10= Array[1..10] Of Real;

Const M10: Dim10 = ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8,8.7,9.3);

При ініціалізації двовимірних масивів значення компонент кожного із одномірних масивів записується в дужках:

Type Dim3x2= Array[1..3,1..2] Of Integer;

Const M3x2: Dim3x2= ( (1, 2) (3, 4) (5, 6) );

Четвертий спосіб - використання різновиду процедури FіllChar:

FillChar( var V; NBytes: Word; B: Byte );

Ця процедура заповнює ділянку пам'яті однобайтовим значенням. Наприклад, для обнулення масиву A[1..10] of Real можна записати:

FillChar(A, 40, 0) або FillChar(A, SizeOf(A), 0);

3. При організації вкладених циклів необхідно враховувати:

-всі правила, властиві простому циклу, повинні дотримуватися;

-імена параметрів для циклів, вкладених один в інший, повинні бути різними;

-внутрішній цикл повинен повністю входити в тіло зовнішнього циклу. Перетинання циклів неприпустимо.

50

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)