Роби, поки я кажу робити

Третій тип циклу – while / end while – перевіряє умову перед виконанням кожного повтору, і якщо результат перевірки умови приймає значення істина (true), то виконується код в циклі. Цикл while / end while може виконати внутрішній код кілька разів або не виконати жодного разу.

Іноді нам потрібна програма з нескінченним циклом, поки сам користувач не зупинить її. Це може бути легко зроблено за допомогою логічної константи true (істина) (див. програму 39).

Програма 39. Вічний цикл.

# while true. kbs

while true

print "більше ніколи";

end while

while умова

оператор (и)

end while

Виконує оператор(и) в тілі циклу знову і знову, поки умова істинна.

Оператор (и) буде виконано нуль (0) або кілька разів.

Програма 40 використовує while / end while для рахунку від 1 до 10 подібно програмі 33, яка використовувала для того ж цикл for.

Програма 40. While рахує до 10

1 # whilefor .kbs

2 t = 1

3 while t <= 10

4 print t

5 t = t + 1

6 end while

7.4. Швидка графіка

Коли нам потрібно швидко виконати багато графічних операцій, наприклад, при створенні анімації або в іграх, BASIC-256 пропонує режим «швидкої графіки». Такий режим включається командою fastgraphics. В цьому режимі вікно для виведення графіки буде оновлюватися тільки при виконанні команди refresh.

fastgraphics

Refresh

Команда fastgraphics включає режим «швидкої графіки» . В цьому режимі вікно для виведення графіки буде оновлюватися тільки по команді refresh

Включивши «швидкої графіки»під час виконання програми, ви не зможете повернутися в стандартний (повільний) режим. Після завершення виконання програми режим швидкої графіки вимикається автоматично (примітка розробника).

 

Програма 41. Калейдоскоп.

1 # kalidescope .kbs

2 clg

3 fastgraphics

4 for t = 1 to 100

5 r = int ( rand * 256)

6 g = int ( rand * 256)

7 b = int ( rand * 256)

8 x = int ( rand * 300)

9 y = int ( rand * 300)

10 h = int ( rand * 100)

11 w = int ( rand * 100)

12 color rgb (r, g, b)

13 rect x, y, w, h

14 rect 300-x-w, y, w, h

15 rect x, 300-y-h, w, h

16 rect 300 -x-w,300 -y-h, w, h

17 next t

18 refresh

Запустіть програму 41, попередньо видаливши або закоментувавши рядок номер 3, з командою fastgraphics. Ви бачите різницю?

У «Великий програмі» цього розділу ми будемо використовувати цикл while для анімації підстрибує м'яча у вікні для виводу графіки.

 

Програма 42. Велика програма – стрибучий м'яч

1 # bouncingball .kbs

2 fastgraphics

3 clg

5 # початкова позиція м'яча
6 x = rand * 300
7 y = rand * 300
8 # розмір м'яча
9 r = 10
10 # швидкість за напрямками х і y
11 dx = rand * r + 2
12 dy = rand * r + 2
13
14 color green
15 rect 0, 0, 300, 300
16
17 while true
18 # стираємо старий м'яч
19 color white
20 circle x, y, r
21 # обчислюємо нову позицію
22 x = x + dx
23 y = y + dy
24 # зіткнення з лівого або правого кордоном
25 if x <0 or x> 300 then
26 dx = dx * -1
27 sound 1000, 50
28 end if
29 # зіткнення з верхньої або нижньої кордоном
30 if y <0 or y> 300 then
31 dy = dy * -1
32 sound 1500, 50

33 end if
34 # малюємо новий м'яч
35 color red

36 circle x, y, r
37 # оновлюємо вікно графіки
38 refresh
39 end while


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

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

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

Одновимірна масив створює список в пам'яті так, що ви можете звертатися до її елементів по числовому адресою, званому індексом. Масиви можуть бути як числовими, так і строковими в залежності від типу змінної, використаної в операторі 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. У цьому прикладі використовується спрайт і два масиви для зберігання їх траєкторій.

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

Масиви можуть зберігати не тільки числа, а й рядки. Щоб відкрити строковий масив необхідно використовувати ідентифікатор строкової змінної в операторі 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, це Денис

 

8.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.4. Графіки і масиви

У розділі 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. Штамп з тінню

 
 

 

 








Дата добавления: 2016-03-10; просмотров: 311;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2026 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.019 сек.