asyan.org
добавить свой файл
1

Заняття 2.12 PascalABC

Складніші приклади

  Приклад 1. Заповнити весь екран колами радіусу 10.
 
Етапи виконання завдання.
I. Результат роботи програми не залежить від вихідних даних

II. Визначення результатів: малюнок, що зображає гуртки по всьому екрану.

III. Алгоритм розв’язку задачі.


1. Дане завдання є узагальненням задачі з прикладу 2 уроки Частина 5. Всі дії, які виконувалися в цьому завданні, слідуємо повторити для декількох рядів. Кількість рядів буде визначатися висотою екрану.
2. Радіус r = 10. Визначаємо вертикальне положення центру першої окружності y = 11.
3. Вертикальне положення будь-якої іншої окружності, що задовольняє умові завдання, буде визначатися координатою y. Для кожного вертикального положення в циклі, поки y не стане більшим, ніж вертикальний розмір екрану, виконуємо наступне:
а) задаємо горизонтальне положення координати центру кола x = 11.
б) в циклі, змінює значення x, малюємо коло і змінюємо горизонтальне положення окружності. Цикл повинен завершитися, коли значення координати x стане більшим, ніж горизонтальний розмір екрану.
в) змінюємо вертикальне положення центру кола.


^ IV. Опис змінних:
Змінні x, y, r - integer.

V. Програма:

uses graphabc; Var x, y, r: integer;
begin
setwindowsize (400,250);
setwindowtitle ('Кола');
r:=10;
y:=11;
while y <= 400 do
   begin x:=11;
      while x <= 400 do
         begin circle (x, y, r); x:=x +20; end;
      y:=y +20;
   end;
end.

VI. Тестування програми:

1. Запустіть програму, перевірте, результат повинен бути наступним:
 

2. Які алгоритмічні структури використовувалися при написанні даної програми?

3. Чому всі кола малюються чорним кольором? Внесіть зміни в програму так, що б всі кола були червоними.

 4. Змініть в програмі значення r = 10 на r = 30. Чому вийшов такий малюнок? Поекспериментуйте зі значеннями радіусу.

5. Які зміни потрібно внести в програму, щоб екран заповнювався колами радіусу 30?

6. Внесіть зміни в програму так, що б всі кола були червоними або різнокольоровими (див. завдання 1 з уроку 18).

7 *. Внесіть в програму зміни, так що б екран можна було заповнювати колами введеного радіусу.
 
    Приклад 2. Намалювати на екрані шахову дошку.
 
Етапи виконання завдання.

^ I. Визначення вихідних даних: мінлива k (кількість кіл).

II. Визначення результатів: малюнок, що зображає шахову дошку.

III. Алгоритм розв’язку задачі.


1. Намалюємо контур дошки.
2. Визначаємо координату y верхнього кута для першого квадрата.
3. Для вирішення даного завдання знадобиться намалювати 8 рядів квадратів. Кожен ряд, в свою чергу складається з 8 квадратів.
4. У циклі для підрахунку номера ряду мінлива k змінюється від 1 до 8. У цьому циклі виконуємо наступні дії:
а) Визначаємо координату x лівого кута для першого квадрата в поточному ряду.
б) У циклі для підрахунку номера квадрата мінлива n змінюється від 1 до 8.
• Визначаємо колір квадрата: він білий, якщо сума номера ряду та номери квадрата в ряду - парне число, і чорний - якщо непарне.
• Малюємо квадрат. Для малювання нового квадрата змінюємо значення координати x на 50 (довжина сторони квадрата)
в) Для малювання квадрата в новому ряду змінюємо значення координати y на 50 (довжина сторони квадрата).


^ IV. Опис змінних:
Змінні x, y (координати верхнього лівого кута квадрата), с (колір), n, k - integer.

V. Програма:

uses graphabc; Var x, y, c, n, k: integer;
begin
setwindowsize (500,500);
setwindowtitle ('Шахова дошка ");
rectangle (49,49,451,451); {контур дошки}
y: = 50; {координата верхнього кута першого квадрата}
for k: = 1 to 8 do begin x: = 50;
{Координата лівого кута першого квадрата в ряду}
for n: = 1 to 8 do
   begin
     if (n + k) mod 2 = 0 then {визначення кольору квадрата} c: = clwhite else c: = clblack;
   setpencolor (c);
   rectangle (x, y, x +50, y +50);
   FloodFill (x +1, y +1, c);
   x: = x +50;
   end;
   y: = y +50;
   end;
end.
VI. Тестування програми:

1. Перевірте роботу програми. Ви повинні отримати наступне зображення:



2. Які алгоритмічні структури використовувалися при написанні даної програми?

3. Які зміни потрібно внести в програму, щоб дошка малювалася більшого (меншого) розміру?

4 *. Додайте в програму можливість введення розміру клітини на шаховій дошці.

5. Які зміни потрібно внести в програму, щоб зафарбувати весь екран як шахову дошку?