ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Розділ 8. Масиви – колекції даних

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

Одновимірний числовий масив.

Одновимірна масив створює список в пам'яті так, що ви можете звертатися до її елементів по числовому адресою, званому індексом. Масиви можуть бути як числовими, так і строковими в залежності від типу змінної, використаної в операторі dim.

 

Програма 43. Одновимірний числовий масив.

1 # numeric 1d.kbs
2
3 dim a(10)
4
5 a [0] = 100
6 a [1] = 200
7 a [3] = a [1] + a [2]
8
9 input "Введіть число:", a [9]
10 a [8] = a [9] - a [3]
11
12 for t = 0 to 9
13 print "a [" + t + "] =" + a [t]
14 next t

 

Робота програми 43. Одновимірний числовий масив.

Введіть число: 63
a [0] = 100
a [1] = 200
a [2] = 0
a [3] = 200
a [4] = 0
a [5] = 0
a [6] = 0
a [7] = 0
a [8] = -137
a [9] = 63

 

dim variable(кількість елементів)
dim variable$ (кількість елементів)
dim variable(кількість_рядів, кількість_стовпців)
dim variable$(кількість_рядів, кількість_стовпців)

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

Оператор dim автоматично призначає значення елементів масиву рівне нулю (0), якщо масив числовий або рівне порожньому рядку ( ""), якщо масив строковий.

variable[номер_елемента]
variable[номер_рядка, номер_стовпчика]
variable$[номер_елемента]
variable$[номер_рядка, номер_стовпчика]
де variable або variable$ – ім'я масиву.

Ви можете робити посилання на елементи масиву за допомогою його імені і індексу всередині квадратних дужок в будь-якому місці, де можна використовувати прості змінні. Індекси повинні бути цілим числом від 0 до зменшеного на один значення зазначеного в операторі dim.

Вас може збентежити той факт, що BASIC-256 використовує нуль (0) для першого елемента масиву і число на одиницю менше, ніж його розмір для последнего, але так прийнято в програмуванні. Масиви з відліком від нуля – так називають такі об'єкти програмісти.

 

Ми можемо використовувати числові масиви для малювання великої кількості одночасно стрибають на екрані м'ячиків. Програма 44 використовує 5 масивів для зберігання місця розташування кожного з м'ячів, його напрямки руху і кольору. За допомогою циклів ми задаємо початкові значення цим масивів, а також змушуємо м'ячі рухатися. Ця програма також використовує функцію rgb(), яка визначає і зберігає колір кожного м'яча.

 

Програма 44. Багато стрибучих м’ячів.

1 # manyballbounce .kbs
2 fastgraphics
3
4 r = 10 # розмір м'яча
5 balls = 50 # кількість м'ячів
6
7 dim x(balls)
8 dim y(balls)
9 dim dx(balls)
10 dim dy(balls)
11 dim colors(balls)

12
13 for b = 0 to balls -1
14 # початкова позиція м'яча
15 x [b] = 0
16 y [b] = 0
17 # швидкість по осях x і y
18 dx [b] = rand * r + 2
19 dy [b] = rand * r + 2
20 # кожному м'ячу - свій колір!
21 colors [b] = rgb (rand * 256, rand * 256, rand * 256)
22 next b
23
24 color green
25 rect 0, 0, 300, 300
26
27 while true
28 # очистимо екран
29 clg
30 # позиціонуємо і малюємо м'ячики
31 for b = 0 to balls -1
32 x [b] = x [b] + dx [b]
33 y [b] = y [b] + dy [b]
34 # якщо м'яч виходить за бічні межі поля - повертаємо
35 if x [b] <0 or x [b]> 300 then
36 dx [b] = dx [b] * -1
37 end if
38 # якщо м'яч виходить за верхню / нижню межу - повертаємо
39 if y [b] <0 or y [b]> 300 then
40 dy [b] = dy [b] * -1
41 end if
42 # малюємо новий м'яч
43 color colors [b]

44 circle x [b], y [b], r
45 next b
46 # оновлюємо екран
47 refresh
48 pause .05
49 end while

 
 

Мал. 8.1. Робота програми 44. Багато стрибучих м’ячів.

rgb (червоний, зелений, синій)

 

Функція rgb повертає одне число, яке представляє колір, обчислений з трьох значень (червоного, зеленого і синього). Аргументами цієї функції можуть бути арифметичні вирази, але з однією умовою – їх значення має бути в інтервалі від 0 до 255.

 

Ще один варіант реалізації стрибаючих м'ячів наведено в програмі 45. У цьому прикладі використовується спрайт і два масиви для зберігання їх траєкторій.

Масиви рядків

Масиви можуть зберігати не тільки числа, а й рядки. Щоб відкрити строковий масив необхідно використовувати ідентифікатор строкової змінної в операторі dim. Все, що ми знаємо про числові масиви можна застосувати і до строкових з урахуванням відмінності в типах даних. Використання строкових масивів показано в програмі 69.

 

Програма 45. Список друзів.

1 # listoffriends .kbs
2 print "Склади список друзів"
3 input "Скільки всього друзів?", N
4
5 dim names$ (n)
6
7 for i = 0 to n -1
8 input "Напиши ім'я одного?", names$ [i]
9 next i
10
11 cls

12 print "Мої друзі"
13 for i = 0 to n -1
14 print "Друг номер";
15 print i + 1;
16 print "це" + names$ [i]
17 next i

 

Приклад виведення програми 45. Список друзів:
Склади список друзів
Скільки всього друзів? 3
Напиши ім'я одного? Іван
Напиши ім'я одного? Артем
Напиши ім'я одного? Денис
- Очищення екрану -
Мої друзі
Друг номер 1, це Іван
Друг номер 2, це Артем
Друг номер 3, це Денис

 

Присвоєння значень масивів

Ми використовували фігурні дужки ({}) для відтворення музики, малювання багатокутників і штампів. Фігурні дужки можна також використовувати для завдання конкретних значень масивів.

 

Програма 46. Завдання значень масиву списком.

1 # arrayassign .kbs
2 dim number (3)
3 dim name$ (3)
4
5 number = {1, 2, 3}
6 name$ = {"Юра", "Аня", "Петя"}
7
8 for i = 0 to 2
9 print number [i] + "" + name$ [i]
10 next i

 

Приклад виведення програми 46. Завдання значень масиву списком.

1 Юра
2 Аня
3 Петя

 

array = {знач0, знач1,. . . }

array$ = {текст 0, текст1,. . . }

 

Масиву можна задати значення (починаючи з індексу 0) за допомогою списку значень, ув'язнених у фігурні дужки. Це стосується як до числовим, так і строковим масивів.

Графіки і масиви

У розділі 8 ми використовували списки для створення багатокутників і штампів. Масиви також застосовні для цієї мети, що призведе до спрощення коду. Досить один раз визначити штамп або багатокутник, зберігаючи дані в масиві, і використовувати цей масив в різних місцях програми.

У масиві, використовуваному для штампів і багатокутників парні елементи (0, 2, 4 ,...) Містять абсциси (х), а непарні елементи (1, 3, 5,...) Містять ординату (y) точок, що утворюють фігуру , по два значення на кожну точку.

Програма 47. Штамп з тінню (мал. 8.2).

1 # shadowstamp .kbs
2
3 dim xmark (24)
4 xmark = {-1, -2, 0, -1, 1, -2, 2, -1, 1, 0, 2, 1, 1, 2, 0, 1, -1, 2, -2, 1 , -1, 0, -2, -1}
5
6 clg
7 color grey
8 stamp 160, 165, 50, xmark
9 color black
10 stamp 150, 150, 50, xmark

 


Мал. 8.2. Програма 47. Штамп з тінню

 
 

 

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти