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

(Основи інформатики) Chastina_III

.pdf
Скачиваний:
9
Добавлен:
28.02.2016
Размер:
1.26 Mб
Скачать

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

Ми можемо написати наступну програму:

змінна х

повторити 255 {

х = х + 1

колір RGB( х, х, х)

уперед х

праворуч 75

}

На кожному кроці циклу (саме так говорять про кожне повторення)

змінна х буде збільшуватися на 1. Ми використовуємо значення цієї змінної у функції RGB і в команді вперед. Спочатку х буде рівний 0, тому що ніяке значення йому не привласнене. На першому кроці циклу х стане рівний 1,

потім 2, потім 3 і т.п., поки не буде значення 255 на останньому кроці циклу.

У цьому випадку змінна х у циклі буде своєрідним лічильником. Таким чином, ми організували цикл із лічильником.

Для організації циклів з лічильником існує спеціальна форма запису.

Спробуємо написати нашу програму, використовуючи цю форму.

змінна х

повторити для х = 1 до 255 {

колір RGB( х, х, х)

уперед х

праворуч 75

}

Уцьому випадку в команді повторити ми бачимо наступний запис

"для х = 1 до 255", яка означає, що в якості змінної для лічильника використовується змінна "х". Спочатку їй привласнюється початкове значення "х = 1". Потім вказується, до якого значення х повторювати цикл.

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

Ще одним параметром для циклу з лічильником є КРОК. Це необов'язковий параметр, але іноді він може бути дуже корисним. Якщо цей параметр не заданий, то змінна, використовувана в якості лічильника, на кожному кроці циклу збільшується на 1. А якщо крок заданий, те змінна змінюється на величину кроку.

Для прикладу розглянемо завдання про знаходження суми парних чисел, що лежать в інтервалі від 100 до 200. У даному завданні нам буде потрібно послідовно перебирати парні числа в заданому інтервалі. Першим числом буде 100, другим - 102, третім - 104. Тобто крок, з яким буде змінюватися число, рівний 2. Таким чином, ми можемо написати програму, у

якій організуємо цикл із лічильником і використанням кроку.

змінна х

змінна S

повторити для х = 100 до 200 крок 2 {

S = S + х

}

пиши S

В Game Logo параметри циклу з лічильником (початкове значення,

кінцеве значення, крок) можуть бути тільки цілими числами.

ЦИКЛ ІЗ УМОВОЮ

Тепер розглянемо інше завдання. У банк поклали 1000 гривень під відсотки. Щомісяця на цю суму нараховувалося 5%. Причому на наступний місяць відсотки нараховувалися вже на суму разом з нарахованими у попередній місяць (відсоток на відсоток). Через скільки місяців сума на рахунку була 2000 гривень?

Для розв'язання даного завдання найкраще застосувати цикл із умовою.

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

змінна S

змінна m

S = 1000

повторювати поки S < 2000 {

S = S + S * 0.05 m = m + 1

}

пиши m

Цикли з умовою найчастіше використовуються, коли заздалегідь не відома кількість повторень і цикл повинен працювати доти, поки виконується умова.

Вкладені цикли Один цикл повторення може перебувати усередині іншого циклу.

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

Один цикл усередині іншого повинен перебувати так само, як одна мотрійка усередині іншої мотрійки.

Розглянемо наступний приклад:

повторити 20 {

повторити 15 {

праворуч 24

уперед 40

}

праворуч 18

}

У даному прикладі цикл, що малює правильний 15-косинець,

повторюється 20 раз, причому черепашка після того, як намалює черговий

15-косинець повертається на 18 градусів. Цей поворот необхідний для того,

щоб кожний наступний багатокутник малювався не на тому ж місці, що де й попередній, але з невеликим зрушенням. Щоб розташувати 15 прямокутників

красиво по колу, необхідно щораз повертатися на кут, рівний 360:20, що складе 18 градусів.

НЕСКІНЧЕННИЙ ЦИКЛ

Організувати нескінченний цикл можна, скориставшись циклом з умовою, у якому умова буде виконуватися завжди.

Наприклад:

повторювати поки 1 = 1 {

}

Оформлення програми

Для того, щоб ваша програма була зрозуміла й легше сприймалася, слід дотримуватися двох прості правил.

Для відділення однієї частини програми від іншої використовуйте порожні рядки.

Користуйтеся відступами для виділення блоків команд, що коштують усередині умов і циклів.

Додати відступ можна за допомогою комбінації клавіш Ctrl + Tab.

Проілюструємо застосування даних правил.

Запис 1.

змінна х повторити 4 {

повторити для х = -1 до 100 {

уперед 10

праворуч 100 - х }

ліворуч 20 }

Запис 2.

змінна х повторити 4 {

повторити для х = -1 до 100 {

уперед 10

праворуч 100 - х

}

ліворуч 20

}

У другому випадку ту ж саму програму сприймати набагато легше.

Коментарі

Ще однією важливою частиною оформлення програми є коментарі.

Коментарі служать для того, щоб постачити програму ясними й зрозумілими поясненнями. В Game Logo коментар починається зі знаку апострофа ' і може розташовуватися як на окремому рядку, так і після якої-небудь команди.

Приклад програми з коментарями.

'---------------------------------------------------------------------------

' Програма "Нескінченна спіраль"

'---------------------------------------------------------------------------

змінна х змінна р

сховати черепаху перо 4

повторювати поки 1 = 1 { ' початок нескінченного циклу р = випадковий * 10 + 65 ' задаємо кут повороту для спіралі повторити 255 {

х = х + 1

колір RGB(х, х, х)

уперед х праворуч р

}

додому

х= 0 ' обнуліти змінну для кількості кроків і кольору

}' кінець нескінченного циклу значень.

Часто наші дії залежать від того або іншої умови. Наприклад:

•якщо на вулиці гарна погода, те можна зробити прогулянку;

•якщо дощ, то беремо парасоль, інакше парасоль не беремо.

У програмах також можна користуватися умовами для того, щоб визначити, чи випливає виконувати те або інша дія.

Для того щоб задати яка-небудь умова, в Game Logo застосовують конструкцію наступного виду:

якщо <умова> то <команда>

При істинності умови буде виконуватися команда, що коштує після

"то", а якщо ні, то команда, що коштує після "то", виконана не буде.

У враженнях умови, що створюють, використовуються знаки порівняння:

= рівно

> більше

< менше

>= більше або рівно

<= менше або рівно

<> не рівно

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

якщо <умова> то <команда 1> інакше <команда 2>

При виконанні умови буде виконана <команда 1>, якщо ж умова не виконається, то буде виконана <команда 2>.

Приклад: або

Витримає міст, якщо по ньому проїде вантажівка вагою 2000 кг., на яку завантажили 50 коробок вагою 80 кг. кожна?

Межа навантаження мосту - 5000 кг.

змінна m

m = 2000 + 50 * 80

якщо m > 5000 то пиши "не витримає" інакше пиши "витримає"

У тому випадку, якщо при виконанні умови потрібне виконання

декількох команд, використовується наступний тип запису умови:

якщо <умова> то

<команда> <команда> <команда>

...

кінець умови

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

Конструкція якщо ... то ... інакше аналогічна конструкції якщо ... те, але дозволяє задати дії, виконувані як при виконанні умови, так і у випадку його невиконання.

якщо <умова> то

<команда> <команда> <команда>

...

інакше

<команда> <команда> <команда>

...

кінець умови

Якщо задана умова не виконується й запис умови містить ключове слово "інакше", виконається послідовність команд, розташованих слідом за

"інакше". Після чого керування перейде до команд, що випливають після рядка "кінець умови".

У випадку використання багаторядкових способів записи умов кількість команд може бути кожним ( у тому числі й одна команда). Крім того, слід пам'ятати, що "якщо ... те", "інакше" і "кінець умови" пишуться на окремих рядках.

Спробуємо написати програму з попереднього прикладу з використанням багаторядкового запису умови.

змінна m

m = 2000 + 50 * 80

якщо m > 5000 то пиши "не витримає"

інакше пиши "витримає"

кінець умови

Так само, як і у випадку застосування циклів, умови можуть бути вкладено одне в інше.

БЕЗУМОВНИЙ ПЕРЕХІД

Команда безумовного переходу ПЕРЕЙТИ До здійснює перехід виконання програми до зазначеної мітки. Мітка ставиться на окремому рядку. Ім'я мітки може бути будь-яким, але не повинне містити пробіли й розділові знаки. Після імені мітки завжди ставиться двокрапка. Пробіл між іменем мітки й двокрапкою не ставиться.

Приклад:

СТАРТ:

уперед 10

праворуч 5

перейти до СТАРТ

У даному прикладі за допомогою безумовного переходу організоване нескінченне повторення команд, що перебувають між міткою СТАРТ і командою перейти до СТАРТ.

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

Значення, що вертаються датчиком, перебувають у діапазоні від 0 до

100. Якщо черепашка рухається по чорній поверхні, то датчик поверне значення 0. При русі по білій поверхні значення датчика буде рівно 100.

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

При русі по світлій поверхні значення датчика будуть більше 50, на темній поверхні - менше 50.

Поточне значення датчика можна підставляти в будь-яке вираження або команду, використовуючи слово "датчик".

У стандартній поставці Game Logo є тло path.gif. Спробуємо провести черепашку по доріжці до чорного прямокутника.

Установимо тіло командою тіло

= path.gif і піднімемо перо в черепашки. В основі програми буде цикл із умовою, який буде

повторюватися доти, поки черепашка не діде до чорного квадрата, тобто поки значення датчика не дорівнює нулю (повторювати поки датчик <> 0).

На кожному кроці циклу за допомогою умови ми будемо перевіряти, на світлій або темній поверхні перебуває черепаха (якщо датчик > 50 то). Якщо черепашка перебуває на світлій доріжці, то дамо їй завдання просунутися вперед на кілька кроків (уперед 7). Інакше, якщо черепашка перебуває над темною поверхнею, дамо їй завдання повернутися назад на два-три десятки кроків (назад 30) і повернутися на 90 градусів у праву сторону (праворуч 90).

тіло = path.gif

підняти перо повторювати поки датчик <> 0 {

якщо датчик > 50 те вперед 7

інакше назад 30

праворуч 90

кінець умови

}

Крім об'єкта черепашка, в Game Logo можливе використання спрайтових об'єктів, які мають тип картинки. Об'єкт картинка має подібний із черепашкою набір властивостей і методів.

МЕТОДИ Й ВЛАСТИВОСТІ ОБ'ЄКТІВ

Коли ми говоримо про методи об'єкта, те маємо на увазі дії, які цей об'єкт здатний виконувати. Наприклад, такий об'єкт, як черепаха, може виконувати команди вперед, назад, ліворуч, праворуч. Тому що це головний об'єкт в Game Logo, те, коли ми використовуємо команди черепахи, ми не вказуємо назву об'єкта. Але якби нам знадобилося написати ці команди в повному виді, то вони виглядали б у такий спосіб:

черепаха уперед 100

черепаха ліворуч 90

У цьому випадку після імені об'єкта (черепаха) через крапку пишеться метод, який підтримується цим об'єктом.

Крім методів, черепаха має набір властивостей. До властивостей черепах ставляться колір пера, його товщина, координати черепахи і т.п.

Властивості так само, як і методи, пишуться через крапку після імені об'єкта.

Для зміни таких властивостей черепахи, як колір і товщина пера, ми можемо написати наступний варіант запису:

черепаха колір 14

черепаха перо 5

Координати й кут

У набір властивостей черепахи входять координати й кут повороту.

Координата по горизонталі (вісь X) може бути задана наступною командою:

черепаха х = 200

Координата по вертикалі (вісь Y) може бути задана командою:

черепаха y = 500