Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка з програмування (школа).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Задача № 618

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

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

де Sum - загальна сума елементів масиву, 360 - кількість градусів у повному колі.

Сама діаграма будується за допомогою процедури PieSlice, що виводить на екран зафарбований сектор круга. Колір зафарбування задається процедурою SetFillStyle, а початковий та кінцевий кути сектора обчислюються від поточного кута. Angle з урахуванням значення елементу масиву. Центр кола, на якому будується кругова діаграма, завжди константний (320; 240). Програма, що реалізує описаний алгоритм, має вигляд:

Program Example_618;

Uses graph; (Підключення бібліотек}

Var GraphDriver,GraphMode:integer; n, і : integer;

Sum,Ang : real;

A : array [1..100] of real; S : string; Begin

ClrScr; Randomize;

Write (ЛВведіть кількість елементів діаграми: *).;

ReadLn (N);

(Введення значень для побудови діаграми}

for i:=l to N do A[i]:=random*200;

GraphDriver:=VGA;

GraphMode:=VGAHi;

InitGraph(GraphDriver,GraphMode,»);

Sum:=0;

for i:=1 to N do Sum:=Sum+A[i];

for i:=1 to N do A[i]:=A[i]*360/Sum;

Ang:=0;

for i:=1 to N do

begin

SetFillStyle (l,Random(14)+l);

PieSlice (320,240,round (Ang), round (Ang+A[i]),230);

(Виведення на діаграмі числових значень)

Str (A[i]*Sum/360:3:0,S);

OutTextXY(round(320+120*coe((2*Ang+A[i]))*Pi/360),

round(240-120*ein((2*Ang+A[i])*Pi/360)),S);

Ang:=Ang+A[i];

end;

Readkey; CloseGraph; {Закриття графічного режиму)

end.

Домашнє завдання:

• повторити сторінки 221 - 229 запропонованого підручника;

•задачі №615,617,620.

УРОК 33. Методи створення мультфільмів

Мета уроку: показати створення рухомих графічних об'єктів та простих мультиплікаційних зображень засобами мови Паскаль.

Теоретичний матеріал

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