Вступ до програмування

Розв'язування задач з використанням комп'ютера. Поняття інформаційної моделі. Способи описування алгоритмів. Базові структури алгоритмів. Інтегровані середовища програмування. Створення лінійних програм. Алгоритми роботи з рядковими величинами.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык украинский
Дата добавления 03.03.2013
Размер файла 618,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

SetTextStyle (шрифт: word; направл: word; розм_символу: CharSize-турі); - процедура встановлює поточний шрифт, тип і коефіцієнт розміру символу.

SetViewport(XI, Y1, X1, X2 word, clip: boolean); - процедура встановлює для графічного поточного виведення чи перегляду вікно, де (X1,Y1) - верхній лівий кут області перегляду, (X2,Y2) - нижній правий кут. Процедура переміщує поточний покажчик у точку з координатами (0,0). Clip - булівська змінна.

SetVisualPage (сторінка : word); - процедура задає номер відображуваної графічної сторінки.

TextHeight(mekcm_рядок: string) : word; - функція повертає висоту рядка в елементах зображення.

TextWidth(текст_рядок : string) : word; - функція повертає ширину рядка в елементах зображення.

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

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

Тема уроку: "Застосування в програмах процедур та функцій для побудови найпростіших графічних зображень"

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

Тип уроку: Практичний.

На цьому уроці пропонується розв'язати цікаві задачі із застосуванням графічного режиму роботи монітору.

Задача № 603 (1).

Умова: Вивести на екран монітора наступний малюнок:

Для побудови малюнку перш за все необхідно проініціалізувати графічний режим роботи монітора. Це робиться за допомогою процедури initgraph. Далі необхідно задати початкове положення першого кола, тобто координати його центра. Якщо рядок кіл ми хочемо отримати посередині екрану, то координата y повинна дорівнювати 240 (розмір всього екрану по вертикалі 480), а x - не менше радіусу кола. Кількість кружечків, що необхідно отримати на екрані, може бути розрахована з урахуванням радіусу кола та відстані між центрами кіл, а може бути задана константно.
В запропонованому розв'язку радіус кола та їх кількість задається з клавіатури, а відстань між колами вираховується в залежності від розмірів екрану (640 пікселів по горизонталі) та кількості кіл).

Program Example_603_1;

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

Var GraphDriver,GraphMode:integer;

x,y,R,i,N,S:integer; {x,y-координати центра

кола,R-радіус кола,i-змінна

циклу,N - кількість кіл,S -

відстань між колами}

Begin

Clrscr;

Write(`Введіть радіус кола: ');

Readln(R);

Write(`Введіть кількість кіл: ');

Readln(N);

S:=640 div N; {Відстань між колами}

x:=R; {Початкові координати центра

першого кола}

y:=240;

GraphDriver:=VGA; {Ініціалізація графічного

режиму}

GraphMode:=VGAHi;

InitGraph(GraphDriver,GraphMode,'');

For i:=1 to N do

Begin

Circle(x,y,R);

x := x + S; {Зсув центра кола по

горизонталі}

End;

Readkey; {Затримка зображення на екрані}

Closegraph; {Закриття графічного режиму}

End.

Задача № 603 (7).

Умова: Вивести на екран монітора наступний малюнок:

Для побудови даного малюнку можна скористатися процедурами Rectangle, що малює на екрані незафарбований прямокутник, та bar, що малює зафарбований прямокутник. Сам малюнок буде зображуватись червоним кольором, який встановлений процедурою setcolor, а віконце буде зафарбовано жовтим кольором, що заданий процедурою setfillstyle. Фігури на малюнку не повторюються, тому вихідний алгоритм буде лінійним. Програма, що реалізує цей алгоритм, має наступний вигляд:

Program Example_603_7;

Uses graph; {Підключення графічної

бібліотеки}

Var GraphDriver,GraphMode:integer;

Begin

GraphDriver:=VGA; {Ініціалізація графічного

режиму}

GraphMode:=VGAHi;

InitGraph(GraphDriver,GraphMode,'');

setcolor(red);

{Малювання будиночка, стелі, труби та дверей

відповідно}

rectangle(100,250,500,450);

rectangle(50,200,550,250);

rectangle(400,20,450,200);

rectangle(360,300,470,450);

setfillstyle(1,yellow); {Задається тип

зафарбування (1-суцільне) та

колір зафарбування}

{Малювання зафарбованого віконечка}

bar(140,290,210,360);

Readln; {Затримка зображення на екрані}

Closegraph; {Закриття графічного режиму}

End.

Задача № 604.

Умова: Скласти програму, яка при натисканні клавіші Д (день) малює сонце, а при натисканні клавіші Н (ніч) малює місяць.

По-перше, для вибору малюнку (день чи ніч) введемо символьну змінну Ch, в залежності від значення якої і будемо малювати сонце чи місяць.

По-друге, зауважимо, що малювання сонця складається з малювання зафарбованого кола процедурою FillEllipse (ця процедура малює зафарбований еліпс, але, якщо еліпс має однакові радіуси по осям, то він перетворюється на коло) та кількох прямих (променів), а місяць можна отримати, якщо накласти одне на одне два кола різних кольорів (жовтого та чорного) з деяким зміщенням.

Програма, що реалізує запропонований алгоритм, має наступний вигляд:

Program Example_604;

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

Var GraphDriver,GraphMode:integer;

Ch:char; {Ch - символьна змінна, що дає

змогу користувачеві обрати

бажаний малюнок}

Begin

Clrscr;

Writeln(`Введіть Ваш вибір: Д - день, Н - ніч.');

Readln(ch);

GraphDriver:=VGA; {Ініціалізація графічного

режиму}

GraphMode:=VGAHi;

InitGraph(GraphDriver,GraphMode,'');

if (Ch='Д') or (Ch='д')

then

begin

setfillstyle(1,yellow);

setcolor(yellow);

fillellipse(100,80,50,50); {Малювання сонця}

line(100,80,250,80); {Малювання променів}

line(100,80,240,30);

line(100,80,200,250);

line(100,80,230,180);

line(100,80,150,250);

line(100,80,100,300);

line(100,80,50,380);

line(100,80,20,280);

line(100,80,0,150);

line(100,80,0,80);

line(100,80,0,30);

line(100,80,10,0);

line(100,80,50,0);

line(100,80,100,0);

line(100,80,150,0);

end

else

if (Ch='Н') or (Ch='н')

then

begin

setfillstyle(1,yellow);

setcolor(yellow);

fillellipse(100,80,50,50);

setfillstyle(1,black);

setcolor(black);

fillellipse(130,80,50,50);

end

else writeln('Ви помилилися!');

Readkey; {Затримка зображення на екрані}

Closegraph; {Закриття графічного режиму}

End.

Задача № 607.

Умова: "Зоряне небо". Заповнити екран монітора різнокольоровими точками, кількість яких, колір та координати визначаються випадковим чином.

Для вибору випадковим чином вказаних величин скористуємось функцією Random, що вибирає числа з заданого діапазону, причому врахуємо, що, якщо в дужках після функції вказане ціле число, то будуть генеруватися цілі числа в діапазоні від 0 до вказаного числа. Зверніть увагу на те, що всього можливих кольорів 16 (від 0 до 15), але на чорному тлі чорний колір (з нульовим номером) не видимий, тому можна скористатися такою формулою для отримання ненульових цілих чисел в діапазоні від 1 до 15:

random(14)+1

Аналогічно можна вибрати координати та кількість "зірок" (точок) на екрані, причому відслідкувати, щоб кількість ніколи не була нульовою. Сама "зірка" (точка) на екрані може бути отримана процедурою Putpixel, що задає колір та координати точки виведення.

Програма, що реалізує запропонований алгоритм, має наступний вигляд:

Program Example_607;

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

Var GraphDriver,GraphMode:integer;

x,y,color,N:integer; {x,y - координати точки-

“зірки”, color - колір точки,

N - кількість точок}

i:integer; {i - змінна циклу}

Begin

Randomize;

GraphDriver:=VGA; {Ініціалізація графічного

режиму}

GraphMode:=VGAHi;

InitGraph(GraphDriver,GraphMode,'');

N:=random(1000)+200; {Генерується кількість

точок в діапазоні від 200

до 1200}

for i:=1 to N do

begin

x:=random(640);

y:=random(480);

color:=random(14)+1;

putpixel(x,y,color); {Виведення піксела

заданого кольору color у

задані координати екрану

x та y}

end;

Readkey; {Затримка зображення на екрані}

Closegraph; {Закриття графічного режиму}

End.

Задача № 610.

Умова: Зобразити сімейство квадратів зі спільним центром, що збігається з центром екрана, і з довжинами сторін, що відрізняються на 10 пікселів.

Якщо центр квадрата збігається з центром екрана і довжина сторони найменшого з квадратів (центрального) 10 пікселів, то очевидно, що координати лівого верхнього кута цього квадрата (335, 235). Щоб обчислити координати правого нижнього кута квадрата, необхідно додати до вказаних координат довжину сторони квадрата. Для малювання кожного наступного квадрата необхідно зменшити координати верхнього лівого кута на 5 пікселів, а довжину сторони квадрата збільшити на 10. Процес повторюється, доки координата y не вийде за межі екрана (контролюємо координату y, тому що вона менша за х). Для кольорового оформлення малюнку можна активний колір малювання кожного з квадратів задавати генератором випадкових чисел.

Програма, що реалізує запропонований алгоритм, має наступний вигляд:

Program Example_610;

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

Var GraphDriver,GraphMode:integer;

x,y:integer; {x,y - координати лівого

верхнього кута прямокутника}

r:integer; {r - довжина сторони квадрата}

Begin

Randomize;

GraphDriver:=VGA; {Ініціалізація графічного

режиму}

GraphMode:=VGAHi;

InitGraph(GraphDriver,GraphMode,'');

x:=335;

y:=235;

r:=10;

while (y>=0) and (y<=480) do

begin

setcolor(random(14)+1);

rectangle(x,y,x+R,y+R);

x:=x-5;

y:=y-5;

r:=r+10;

end;

Readkey; {Затримка зображення на екрані}

Closegraph; {Закриття графічного режиму}

End.

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

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

· задачі №603(2б,8), №605, №606, №608.

Тема уроку: "Робота з діловою графікою засобами мови Паскаль"

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

Тип уроку: Практичний.

На цьому уроці пропонується показати можливості мови Паскаль при побудові графіків функцій та різного виду діаграм.

Задача № 614.

Умова: Зобразити на екрані монітора декартову систему координат, початок якої збігається з центром екрана.

Для малювання осей x та y необхідно скористатися процедурою line, причому координати початку та кінця цих прямих обчислити неважко, тому що вони повинні розміщуватись в центрі екрану. Градуювання осей робиться теж за допомогою коротких відрізків довжиною 8 пікселів, що розташовані з кроком step пікселів (крок в програмі заданий у вигляді константи, хоча можна його задавати і іншим чином). Підписи на осях можна зробити таким чином: число, що треба написати, переводиться в рядок процедурою str, а потім виводиться на екран процедурою OutTextXy. Зверніть увагу на те, що на від'ємному проміжку вісі до числа ліворуч дописується знак "-" командою S := '-'+S, де S - рядок, що містить підпис під поділкою. Для якісного оформлення малюнку використовується процедура settextjustify(1,1), що забезпечує відцентроване виведення тексту у вказану позицію.

Програма, що реалізує запропонований алгоритм, має наступний вигляд:

Program Example_614;

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

Const

Step=25; {Крок між поділками на осях}

Var GraphDriver,GraphMode:integer;

x,y:integer; {x,y - координати центру

декартової системи координат}

r:integer; {r - відстань від центру

координат до чергової поділки}

S:string; {Рядок, в якому зберігається

символьне значення підпису для

поділки}

Begin

Randomize;

GraphDriver:=VGA; {Ініціалізація графічного

режиму}

GraphMode:=VGAHi;

InitGraph(GraphDriver,GraphMode,'');

{Малювання осей}

line(0,240,640,240);

line(320,0,320,480);

{Малювання стрілочок на кінцях осей}

line(630,235,640,240);

line(630,245,640,240);

line(315,10,320,0);

line(325,10,320,0);

{Підписи на осях}

outtextxy(330,5,'Y');

outtextxy(630,220,'X');

x:=320;

y:=240;

r:=0;

{Малювання та підпис поділок на вісі X}

while x+r<640 do

begin

line(x+r,y-4,x+r,y+4);

line(x-r,y-4,x-r,y+4);

r:=r+step;

str(r div step, S);

settextjustify (1,1);

outtextxy(x+r,y+10,S);

s:='-'+S;

outtextxy(x-r,y+10,S);

end;

r:=0;

{Малювання та підпис поділок на вісі Y}

while y+r<480 do

begin

line(x+4,y+r,x-4,y+r);

line(x+4,y-r,x-4,y-r);

r:=r+step;

str(r div step, S);

settextjustify (1,1);

outtextxy(x-10,y-r,S);

s:='-'+S;

outtextxy(x-10,y+r,S);

end;

Readkey; {Затримка зображення на екрані}

Closegraph; {Закриття графічного режиму}

End.

Задача № 616.

Умова: Стовпчаста діаграма - це послідовно зображені прямокутники однакової ширини, що розташовані на одному горизонтальному рівні. Висота прямокутників пропорційна значенням деякої числової послідовності.

Побудувати стовпчасту діаграму за даними n цілими значеннями. Для наочності стовпчики зафарбувати різними кольорами.

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

Після введення числових даних необхідно розрахувати коефіцієнти пропорційності по осях Х та Y, щоб отримати малюнок на весь екран. Врахуємо, що максимальний розмір по осі Х - 640 пікселів, а по осі Y - 480 пікселів. Тоді очевидно, що коефіцієнт по осі Х можна обчислити за формулою SizeX = 640/N - 5, де SizeX - коефіцієнт пропорційності, N - кількість стовпчиків на діаграмі. Константне значення 5 від дробу віднімається, щоб розділити стовпчики між собою хоча б на 5 пікселів (це значення можна змінити).

По осі Y знайти коефіцієнт пропорційності важче, тому що для цього необхідно спочатку визначити максимальне значення, що використовується для побудови діаграми. Для знаходження максимуму використовуємо стандартний алгоритм. Тут можна запропонувати дітям згадати цей алгоритм самостійно.
Прогнозована відповідь: беремо у якості еталону будь-який елемент масиву, наприклад, перший, а потім порівнюємо кожний наступний елемент з еталоном і у випадку невідповідності (черговий елемент більший за еталон) замінюємо еталон.

Після знаходження максимуму знаходимо коефіцієнт пропорційності по осі Y за очевидною формулою SizeY = 480/Max, де SizeY - шуканий коефіцієнт, Max - максимальне значення з масиву.

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

Після підготовки даних можна починати побудову діаграми. Кожен елемент діаграми будується процедурою Bar, що малює зафарбований прямокутник, колір якого задається процедурою SetFillStyle. Очевидно, що ширина кожного стовпчика буде дорівнювати SizeX - 5, тому початкова координата по осі Х дорівнює (i - 1)*SizeX, а кінцева - i*SizeX - 5, де і - змінна циклу, що рахує номер чергового стовпчика. Початкова координата по осі Y буде максимальною, тобто 480, а кінцева координата дорівнювати різниці між 480 та елементом масиву.

Програма, що реалізує запропонований алгоритм, має наступний вигляд:

Program Example_616;

Uses graph; {Підключення графічної

бібліотеки}

Var GraphDriver,GraphMode:integer;

N,i,Max :integer;

A:array [1..100] of integer; {Масив значень

для побудови

діаграми}

SizeX, SizeY : integer; {Коефіцієнти

пропорційності по

відповідних осях}

Begin

ClrScr;

Write (`Введіть кількість стовпчиків у діаграмі: ');

ReadLn (N);

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

for i:=1 to N do

begin

Write ('Введіть A[',i,']: ');

ReadLn (A[i]);

end;

Randomize;

GraphDriver:=VGA; {Ініціалізація графічного

режиму}

GraphMode:=VGAHi;

InitGraph(GraphDriver,GraphMode,'');

SizeX:=round(640/N-5);

{Пошук максимального значення в масиві для

побудови діаграми на весь екран}

Max:=A[1];

for i:=2 to N do

if A[i]>Max then Max:=A[i];

SizeY:=round(480/Max);

{Перетворення масиву значень у відповідності з

коефіцієнтом пропорційності}

for i:=1 to N do

A[i]:=A[i]*SizeY;

Randomize;

for i:=1 to N do

begin

{Встановлення випадковим чином кольору

зафарбування стовпчиків діаграми}

SetFillStyle (1,random(14)+1);

Bar ((i-1)*SizeX,480,i*SizeX-5,480-A[i]);

end;

Readkey; {Затримка зображення на екрані}

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

end.

Задача № 618.

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

Для заданої послідовності з n дійсних чисел побудувати секторну діаграму. Для наочності сектори діаграми зафарбувати різними кольорами.

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

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

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

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

Програма, що реалізує описаний алгоритм, має наступний вигляд:

Program Example_618;

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

Var GraphDriver,GraphMode:integer;

N, i : integer;

Sum,Angle : real;

A : array [1..100] of real;

S : string;

Begin

ClrScr;

Write (`Введіть кількість стовпчиків у діаграмі: ');

ReadLn (N);

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

for i:=1 to N do

begin

A[i]:=random*200;

end;

Randomize;

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;

Angle:=0;

for i:=1 to N do

begin

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

PieSlice (320,240,round (Angle),

round (Angle+A[i]),230);

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

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

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

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

Angle:=Angle+A[i];

end;

Readkey; {Затримка зображення на екрані}

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

end.

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

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

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

Тема уроку: "Методи створення рухомих графічних об'єктів засобами мови Паскаль"

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

Тип уроку: Практичний.

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

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

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

Задача № 629.

Умова: "Годинник". Змоделювати рух годинної та хвилинної стрілок.

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

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

Формули, за якими обчислюються координати рухомого кінця стрілки, відомі учням з курсу математики (поворот точки на заданий кут відносно нерухомого центру з координатами x0, y0). Тому наводимо їх тут без пояснень:

x = x0 + L*cosa

y = y0 + L*sina

де L - відстань, на якій знаходиться точка від центру повороту,

a - кут, на який повертається точка.

Зверніть увагу тільки на те, що в програмі друга формула замість знаку "-" буде містити знак "+", тому що екранні координати мають направленість осей, зворотну до реальних Декартових координат (на екрані значення координати Y збільшується в напрямку зверху вниз).

Малювання поділок на циферблаті виконується теж за допомогою вище наведених формул

Програма, що реалізує запропонований алгоритм, наведена нижче. Зверніть увагу, що в цій програмі

L_min, L_time - довжини хвилинної та годинникової стрілок відповідно;

Color_min, Color_time - кольори хвилинної та годинникової стрілок відповідно;

R - радіус циферблату годинника;

х_centr, y_centr - координати центра екрану (визначаються у відповідності до поточної роздільної здатності за допомогою функцій getmaxx та getmaxy;

х_min, y_min - координати рухомого кінця хвилинної стрілки;

х_time, y_time - координати рухомого кінця годинникової стрілки;

Ang_min, Ang_time - кути повороту хвилинної та годинникової стрілок відповідно.

Рух стрілок по циферблату здійснюється за рахунок постійного їх перемалювання то активним кольором малювання стрілки, то кольором тла ("затирання" зображення). Програма завершується після натискання будь-якої клавіші за рахунок використання циклу repeat until keypressed.

Program Example_629;

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

const L_min=174;

L_time=145;

Color_min=white;

Color_time=white;

R = 200;

var gd,gm:integer;

S:string[2];

x_centr, y_centr:integer;

i,x_min,y_min:integer;

x_time,y_time:integer;

Ang_min,Ang_time:real;

begin

{Ініціалізація графічного режиму}

gd:=VGA; gm:=VGAHi;

InitGraph (gd,gm,'egavga.bgi');

{Визначення центра екрану}

x_centr := getmaxx div 2;

y_centr := getmaxy div 2;

{Малювання статичної частини малюнку}

SetColor(brown);

SetFillStyle(1,brown);

{Малювання циферблату коричневого кольору}

FillEllipse(x_centr,y_centr,R,R);

Ang_time:=-90;

{Встановлення кольору малювання, стилю та вирівнювання тексту}

SetColor(yellow);

SetTextJustify(CenterText, CenterText);

SetTextStyle(DefaultFont, HorizDir, 2);

{Малювання поділок жовтого кольору та цифр}

for i:=1 to 12 do

begin

Ang_time:=Ang_time+30;

x_time:=round(x_centr+185*cos(Ang_time*pi/180));

y_time:=round(y_centr+185*sin(Ang_time*pi/180));

str(i,S);

OutTextXy(x_time,y_time,S);

end;

{Малювання ходу годинника}

Ang_min:=-90;

Ang_time:=-90;

repeat

x_time:=round(x_centr+L_time*cos(Ang_time*pi/180));

y_time:=round(y_centr+L_time*sin(Ang_time*pi/180));

SetColor(Color_min);

Line(x_centr,y_centr,x_time,y_time);

x_min:=round(x_centr+L_min*cos(Ang_min*pi/180));

y_min:=round(y_centr+L_min*sin(Ang_min*pi/180));

SetColor(Color_min);

Line(x_centr,y_centr,x_min,y_min);

Delay(10000); {Затримка зображення на екрані}

SetColor(brown);

Line(x_centr,y_centr,x_time,y_time);

Line(x_centr,y_centr,x_min,y_min);

Ang_min:=Ang_min+6;

Ang_time:=Ang_time+0.5;

until keypressed;

readkey;

CloseGraph;

end.

Запропонований метод побудови мультиплікаційних об'єктів являється найпростішим, але якщо об'єкт, що рухається, має більші лінійні розміри, ніж в запропонований задачі, він буде суттєво миготіти на екрані. Тому існує інший підхід до розв'язку цієї задачі. В цьому випадку пропонується наступний алгоритм:

а) намалювати бажаний об'єкт;

б) запам'ятати область екрана, з виведеним малюнком;

в) відновити екран в місці, де був малюнок (тобто стерти малюнок);

г) вивести малюнок на нове місце і т.д.

Цей підхід дуже схожий на попередній варіант, але має суттєві переваги в тому, що не потребує багаторазового перемалювання малюнку. Об'єкт створюється один раз, зберігається його копія, а потім виводиться в потрібному місці.

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

1. GetImage(x1,y1,x2,y2,BitMap) - зберігає образ вказаної прямокутної області екрана в динамічній області пам'яті.

В цій підпрограмі

х1, y1, x2, y2 - координати лівого верхнього та правого нижнього кутів прямокутної області екрана, образ якої ми хочемо зберегти;

BitMap - адреса області пам'яті, в якій ми зберігаємо об'єкт.

2. PutImage (x,y,BitMap,Mode) - відновлює збережений образ прямокутної області.

Тут x, y - координати верхнього лівого кута області екрана, в яку ми хочемо помістити зображення;

BitMap - адреса пам'яті, в якій було збережено зображення;

Mode - режим накладання зображення на екран. Режимів накладання існує 5 (від 0 до 4), але самими цікавими для нас являються CopyPut (0) - заміщення новим об'єктом старого зображення та XOR (1) - "витирання" старого об'єкта.

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

{визначається необхідний розмір області пам'яті}

Size := ImageSize(x1,y1,x2,y2);

{у системи запрошується оперативна пам'ять}

GetMem(BitMap,Size);

де x1, y1, x2, y2 - координати прямокутної області екрану, де знаходиться малюнок;

Size - розмір необхідної пам'яті (змінна цілого типу);

BitMap - адреса оперативної пам'яті, що виділяється системою (змінна типу вказівник для збереження адреси).

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

Задача № 638 (1).

Умова: "Баскетбол". Зобразити на екрані відбивання від підлоги, стін та стелі м'яча, що зображається зафарбованим кругом. Для спрощення алгоритму траєкторію руху м'яча вважати ламаною лінією. Силою тертя повітря знехтувати.

У наведеній нижче програмі описані наступні константи:

- R являється радіусом м'яча,

- Time - час затримки зображення на екрані (підбирається емпіричним шляхом в залежності від типу ПЕОМ).

Крім того використовуються наступні змінні:

- x та y вказують на координати лівого верхнього кута області екрана, куди виводиться, а потім звідки витирається зображення;

- Size та BitMap - використовуються для збереження зображення в оперативній пам'яті (дивись вище);

- Step_x та Step_y - задають крок, на який пересувається об'єкт при кожному наступному перемалюванні (теж підбирається емпірично в залежності від типу ПЕОМ).

Перший м'яч малюється в лівому верхньому кутку екрану і напрямок його руху - зверху вниз, зліва направо, тому початкові координати області зображення x та y дорівнюють 0, а обидва кроки додатні. Далі, якщо об'єкт долітає до границі екрана, то крок змінюється на протилежний за знаком, і об'єкт починає рухатись в зворотному напрямку.

Програма, що реалізує запропонований алгоритм, має наступний вигляд:

Program Example_638_1;

uses crt,graph;

const R=20;

Time = 1000;

var gd,gm:integer;

x,y:integer;

Size:integer;

Step_x,Step_y:integer;

BitMap:pointer;

begin

x:=0; y:=0;

Step_x:=5;

Step_y:=5;

gd:=VGA; gm:=VGAHi;

InitGraph (gd,gm,'egavga.bgi');

SetColor(brown);

SetFillStyle(1,brown);

FillEllipse(R,R,R,R);

size:= ImageSize(0,0,2*R,2*R);

GetMeM(BitMap,Size);

GetImage(0,0,2*R,2*R,BitMap^);

repeat

delay(Time);

PutImage(x,y,BitMap^,1);

x:=x+Step_x;

y:=y+Step_y;

if (x+2*R >= getmaxx) or (x<=0)

then Step_x:=-Step_x;

if (y+2*R >= getmaxy) or (y<=0)

then Step_y:=-Step_y;

PutImage(x,y,BitMap^,1);

until keypressed;

readkey;

CloseGraph;

end.

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

Gd - тип графічного адаптера (CGA, EGA, VGA і т.д.);

Gm - режим роботи графічного адаптера.

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

Один з таких режимів Gm=VGAMed дозволяє програмісту виводити 16-кольорове зображення з роздільною здатністю 640 на 350 пікселів, при цьому він підтримує дві графічних сторінки.

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

SetActivePage (Page) - задається номер активної сторінки (Page), тобто сторінки, на якій в даний момент буде будуватися зображення;

SetVisualPage (Page) - задається номер візуальної сторінки, тобто тієї сторінки, що являється видимою в даний момент.

В запропонованому режимі існує тільки дві сторінки, що мають номера 0 та 1, тому зміну сторінок можна виконувати змінною Page, що буде змінюватись за наступним законом:

Page := 1-Page,

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

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

Задача № 627 (модифікована).

Умова: Скласти програму, яка виводитиме на екран рух тіла, кинутого під кутом до горизонту. Опором повітря знехтувати.

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

G = 9.8 -

Color - колір тіла, що кинуто;

Radius - радіус тіла;

Time - затримка зображення на екрані (підбирається емпіричним шляхом в залежності від типу ПЕОМ).

Program Example_627_m;

uses crt,graph;

const g=9.8;

Color = 2;

Radius = 20;

Time = 500;

var gd,gm:integer;

Page:byte;

Vx,Vy,X,Y:real;

begin

gd:=VGA; gm:=VGAMed;

InitGraph (gd,gm,'egavga.bgi');

Vx:=40; Vy:=30; X:=15; Y:=160;

SetColor (Color);

SetFillStyle(1,Color);

repeat

SetActivePage (Page);

ClearDevice;

Circle (round (X),round (Y),Radius);

FloodFill(round(X),round(Y),Color);

SetVisualPage (Page);

Page:=1-Page;

Delay (Time);

X:=X+Vx*0.1;

if Vy<>0 then Y:=Y-Vy*0.1;

Vy:=Vy-g*0.1;

Until keypressed;

CloseGraph;

end.

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

· сторінки 233 - 237 запропонованого підручника;

· задачі №630, №631, №640, 641.

Тематичні атестації

Тема уроку: "Тематична атестація за темою "Програма. Мова програмування"".

Мета уроку: Перевірити засвоєння матеріалу за вказаною темою.

Тип уроку: Опитування, організоване в усному або письмовому вигляді. Одна з пропозицій - картки, що містять теоретичні та практичні питання.

Орієнтовні варіанти карток на тематичну атестацію:

Варіант №1.

1. Що таке мова програмування? Класифікація мов програмування

2. Поняття типу даних. Класифікація типів даних в мові програмування Паскаль.

3. Структура програми мовою програмування Паскаль.

4. Вкажіть помилкові записи чисел мовою програмування Паскаль:

1237

.35

-45.

-5.3Е03

-0Е+00

000

12Е-3

+78.56Е-04

3.Е8

-Е7

4.5-Е01

12.3.5

5.Укажіть, в яких виразах використані символи, що не належать до алфавіту мови програмування Паскаль:

x/2*cos(p)

2\5,67

'Привіт'

'А>Б'

A .. Z

Y<5,cos(alfa)

6. Записати мовою Паскаль наступний математичний вираз:

7.Записати у загальноприйнятій формі:

-9.1E-3+alpha/(y5-256.8*delta)

8. Обчислити значення виразів:

4.5*2 div 5 + 7 mod 4=

4*123 mod 12 div 3=

Round(-5.63) =

Inc(Ord('F')) =

Trunc(1.45E+01) =

9. Визначить тип результату наступних виразів:

A - 312*i +24/6

5 > 12

якщо A, і - цілі числа.

10. Дано (фрагмент програми):

X:= 13;

Y:= 2*X - 7;

X:= round(Y / 5); {X - ціле число, Y - дійсне}

Що буде виведено на екран після виконання наступних операторів:

Write(X,Y);

Writeln('X=',X,'Y=',Y:9:2);

Writeln; Writeln(X:10);

Варіант №2.

1. Алфавіт мови програмування Паскаль. Поняття складеного символу та слова. Які існують типи слів?

2. Що таке унарні та бінарні операції? Пріоритети виконання операцій у виразах.

3. Які розділи містяться в описовій частині програми? Глобальний та локальний блоки програми.

4. Визначте тип вказаних констант:

False

'Y'

-45

true

-23.7E03

0.12

+00

0E0

5. Які з наведених нижче чисел визначають одне й те саме значення:

5.48

54.8Е00

548Е-02

54800Е-04

0.000548Е+03

0.0548Е02

-54.8Е-01

0.00000548Е+07

6. Записати мовою Паскаль наступний математичний вираз:

7. Записати у загальноприйнятій формі:

5.87/b*c+d/(5.8-abs(d-4))/b+1.77E-11

8. Обчислити значення виразів:

3*21 mod 7 + 5 div 0=

40 / (10 div 2) + 8 mod 3 =

Dec(Trunc(6.78),5) =

Round(5.17) =

Chr(Ord('2')-6) =

9. Визначить тип результату наступних виразів:

A mod 3 + 5

(X+2) < 3.45*Y,

якщо A - ціле число, а X, Y - дійсні.

10. Вивести в різні позиції екрану власне прізвище та ім'я різними кольорами.

Варіант №3.

1. Якими складовими характеризується мова програмування? Що таке синтаксис та семантика?

2. Що таке константа та її опис в мові програмування Паскаль? Що таке змінна? Її опис.

3. Що таке введення та виведення інформації? Запишіть формати процедур введення та виведення в Паскалі.

4. Запишіть наведені нижче числа у форматі з фіксованою крапкою:

0.0000173Е+4

-128.23Е-01

-3.52Е2

27.32Е-3

5. Записати мовою Паскаль наступні числа:

5!=

p=

1/10000=

LXXVI=

0,67(7)

= 0,000000037

= 11/4

= 12,5

= 10^23

= -24,8.10^-7

6. Записати мовою Паскаль наступний математичний вираз:

7. Записати у загальноприйнятій формі:

x1+cos(y2-alpha)/2*abs(x4-5*y5)/7.2

8. Обчислити значення виразів:

56 div 3 - 20 mod 4=

12 / 2 mod 5 + 12 div 2=

Round(-12.45E-03) =

Pred('G') =

Ord(chr(120))

9. Визначити тип результату наступних виразів:

25 - A*sqr(i)

10 div 4 <> 15 mod 3

якщо A та і - цілі числа.

10. Вивести дату свого народження (число, місяць та рік) в три стовпчика, кожен з яких має ширину 8 позицій.

Варіант №4.

1. Що таке трансляція? Типи трансляторів. Чим вони відрізняються?

2. Що таке вираз? Використання стандартних арифметичних функцій у виразах.

3. Перетворення типів у мові програмування Паскаль. Функції перетворення типів.

4. Запишіть дійсні числа у вигляді з плаваючою крапкою:

12.3

-45

-25.923*10^3

23.789

-34.95

934.45*10^-56

0.0005

0

5. Записати мовою Паскаль наступний математичний вираз:

6. Записати у загальноприйнятій формі:

sqr(sqr(k-b))+1/-sqrt(y-1)

7. Вкажіть помилково записані ідентифікатори:

AlFa

Номер_ліцею

___________d

COS

1_Number

_9_class

Begin

A.67

X/Y

8. Обчислити значення виразів:

36/3 div 5 - 4/2 mod 2=

12 div 4*3 + trunc(-6.34)=

Chr(ord('G'))

Round(p + sin(p/2))

Odd(40234)

9. Визначити тип результату наступних виразів:

A + sqrt(49)*i

12 div 3 / 2

якщо A та і - цілі числа.

10. Що буде виведено на екран в результаті виконання такого фрагмента програми:

A:=-5;

Writeln('A+1');

Writeln(A+1);

Варіант №5.

1. Перелічить правила пунктуації (оформлення) програм.

2. Формати представлення дійсних чисел мовою Паскаль. Що таке мантиса та порядок? Нормалізація мантиси.

3. Назвіть правила вибору ідентифікаторів.

4. Вкажіть правильно записані ідентифікатори:

beta

School#1

____________d

Sqrt

10_класс

_9_class

End

Suma/5

129

5. Записати мовою Паскаль наступний математичний вираз:

6. Записати у загальноприйнятій формі:

y*(y+2.037E2*sqrt(a+b-k2))

7. Обчислити значення виразів:

15 div 2 mod 10/2=

10 mod 7 div 2 mod 5=

Trunc(-12.43) =

Inc(Ord('F')+4) =

Odd(round(4.5E+1)) =

8. Визначити тип результату наступних виразів:

12 div 3 < 50 / 10

A - sqr (9)*X

Якщо A- ціле число, а Х - дійсне число.

9. Які з наведених нижче чисел визначають одне й те саме значення:

167

'167'

1.67E+01

16700E-02

0.0000167E+7

0.167Е02

-167Е+00

0.00000167Е+07

10. Вивести на екран поточну дату у форматі число: місяць: рік.

Тема уроку: "Тематична атестація за темою "Базові структури алгоритмів""

Мета уроку: Перевірити засвоєння матеріалу за вказаною темою.

Тип уроку: Опитування, організоване в усному або письмовому вигляді.

На наш погляд атестацію доречно проводити на протязі двох академічних годин, причому розбити її на теоретичну та практичну частини.

? Орієнтовні питання теоретичного туру атестації.

1. Назвіть базові структури алгоритмів. Приклади.

2. Що таке лінійний алгоритм?. Приклад лінійної програми мовою Паскаль.

3. В яких задачах використовується команда розгалуження?

4. Формат команди розгалуження (повна та скорочена форми) мовою Паскаль та мовою блок-схем.

5. Що таке умова? Типи умов.

6. Команда вибору. Приклад застосування.

7. Поняття циклу. Типи циклів.

8. Команда повторення з параметром мовою програмування та мовою блок-схем.

9. Команда повторення з післяумовою мовою блок-схем та мовою програмування.

10. Команда повторення з передумовою мовою блок-схем та мовою програмування.

11. Порівняльна характеристика циклів.

? Орієнтовні варіанти практичних завдань на тематичну атестацію:

Дитині пропонується три задачі, причому перша на лінійний алгоритм (середній рівень досягнень), друга - розгалужений алгоритм (достатній рівень досягнень), а третя - циклічний (високий рівень досягнень). Тільки розв'язок всіх трьох задач дає дитині можливість отримати оцінку 12.

Варіант №1.

1. Дано довжину ребра куба. Знайти його об'єм та площу поверхні.

2. Дано ціле число n (0<n<13), яке вказує порядковий номер кварталу року (січень, лютий, березень - І квартал і т.д.). За вказаним значенням n надрукувати перелік місяців, які належать до цього кварталу.

3.Дано натуральне число n та дійсні числа a1, a2, …, an. Визначити обернену величину добутку тих членів послідовності, для яких виконується нерівність i+1 < ai < i!

Варіант №2.

1. Дано катети прямокутного трикутника. Знайти його гіпотенузу та площу.

2. Дано дійсне число a. Обчислити f(a), якщо:

3.Дано натуральне число n та дійсні числа a1, a2, …, an (ai <>0). Відомо, що в заданій послідовності є хоча б одне ненульове значення. Розглядаючи члени послідовності, що розташовані до першого нульового члена, визначити, яких членів більше - додатних чи від'ємних.

Варіант №3.

1. Дано довжину кола. Визначити площу круга, обмеженого цим колом.

2. Дано три цілих додатних числа x, y, z. Визначити, чи можна з відрізків з цими довжинами утворити трикутник.

3.Обчислити значення функцій

для значень аргумента x=1, 2,…, 10.

Варіант №4.

1. Знайти площу кільця, внутрішній радіус якого дорівнює 10, а зовнішній - даному числу r (r > 10).

2. Розробити програму-довідник, яка за введеними значеннями радіуса R та номером задачі пропонуватиме користувачу послуги у обчисленні:

- 1 - довжини кола;

- 2 - площі круга;

- 3 - об'єму кулі:

- 4 - площі поверхні кулі.

3.Обчислити значення:

Тема уроку: "Тематична атестація за темою "Структуровані типи даних""

Мета уроку: Перевірити засвоєння матеріалу за вказаною темою.

Тип уроку: Опитування, організоване в усному або письмовому вигляді.

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

? Орієнтовні питання теоретичного туру атестації.

1. Що таке масив?

2. Що називається індексом масиву?

3. Які типи змінних називаються простими, а які структурованими? Чому?

4. Що таке одновимірний та двовимірний масив? Опис цих масивів мовою Паскаль.

5. Методи заповнення одновимірного (двовимірного) масиву.

6. Виведення одновимірного (двовимірного) масиву на екран.

7. Як здійснюється пошук в масиві елементів з деякою властивістю?

8. Напишіть або розкажіть словесно алгоритм пошуку в масиві мінімального (максимального) елементу.

9. Що таке впорядкування? Які методи сортування Ви знаєте?

10. Напишіть реалізацію одного з методів сортування (бульбашка, метод прямої вставки, метод прямого вибору).

11. Що таке рядок? Опис рядкових величин мовою програмування.

12. Назвіть функції для роботи з рядковими величинами та призначення їх параметрів.

13. Назвіть процедури для роботи з рядковими величинами та призначення їх параметрів.

? Орієнтовні варіанти практичних завдань на тематичну атестацію:

Дитині пропонується дві задачі: перша на обробку масивів (достатній рівень досягнень), а друга - обробку рядків (високий рівень досягнень). Тільки розв'язок двох задач дає дитині можливість отримати оцінку 12.

Варіант №1.

1.Дано матрицю дійсних чисел розмірністю n x m. Знайти середнє арифметичне елементів кожного стовпчика.

2.Розробити програму, що міняє місцями перше та останнє слова даного речення.

Варіант №2.

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

2. Дано деякий текст. Групи символів, які розділені пробілами (одним або кількома) та не містять всередині себе пробілів, називатимемо словами. Вважатимемо, що текст завжди починається зі слова. Визначити кількість слів, у яких перша та остання літери однакові.

Варіант №3.

1. Таблицю футбольного чемпіонату задано квадратною матрицею порядку n, у якій всі елементи, що належать головній діагоналі, дорівнюють нулеві, а кожний елемент, що не належить головній діагоналі, дорівнює 2, 1 або 0 (кількість очок, що набрані в грі: 2 - виграш, 1 - нічия, 0 - програш). Визначити, чи є хоча б одна команда, що виграла більше половини ігор.

2. Скласти алгоритм-шифрувальник, який замінює кожний символ тексту його ASCII кодом.

Варіант №4.

1. Дано квадратну матрицю розмірності n. Надрукувати елементи бічної діагоналі в порядку зростання.

2. Дано два слова A та B. Перевірити, чи можна з літер, що входять до слова А, скласти слово В.

Тема уроку: "Тематична атестація за темою "Графічні операції. Робота з допоміжними алгоритмами""

Мета уроку: Перевірити засвоєння матеріалу за вказаною темою.

Тип уроку: Опитування, організоване в усному або письмовому вигляді.

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

? Орієнтовні питання теоретичного туру атестації.

1. Які режими роботи монітору Ви знаєте?

2. Охарактеризувати текстовий та графічний режими роботи.

3. Ініціалізація графічного режиму.

4. Основні процедури та функції для створення графічних примітивів.

5. Керування кольором в графічному режимі.

6. Виведення тексту на екран в графічному режимі.

7. Методи створення мультиплікації в графічному режимі.

8. Поняття графічних сторінок і методи користування ними.

9. Що таке метод покрокової деталізації?

10. Поняття допоміжного алгоритму.

11. Типи допоміжних алгоритмів та різниця між ними.

12. Формат опису процедур та функцій.

13. Як викликати допоміжний алгоритм?

14. Що таке локальні та глобальні параметри?

15. Що таке формальні та фактичні параметри?

16. Методи передачі параметрів у підпрограми (параметри-значення та параметри-змінні).

17. Передача у допоміжний алгоритм масиву як параметра.

18. Область дії ідентифікатора.

19. Що таке рекурсія?

? Орієнтовні варіанти практичних завдань на тематичну атестацію:
Дитині пропонується дві задачі: перша на роботу в графічному режимі, друга - на створення допоміжних алгоритмів. Оцінювання роботи учня вчитель робить самостійно (мається на увазі, що в залежності від рівня класу можна, навіть, за одну акуратно виконану задачу поставити оцінку високого рівня). Наприклад, учень виконав тільки першу задачу, але оформив її за допомогою процедур та функцій користувача.

Варіант №1.

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

2.Дано три натуральних числа n, m, k. Визначити їх найбільший спільний дільник.

Варіант №2.

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

2. У тексті замінити всі символи 1 на символи 0 та навпаки, використовуючи для цього відповідну підпрограму. Заміна виконується, починаючи із заданої позиції в тексті.

Варіант №3.

1. Зобразити на екрані монітора з урахуванням масштабування і особливостей екранних координат графік функції |cos x|.

2. Дано дві пари дійсних чисел (x1,y1) та (x2,y2), що є координатами відповідно лівого верхнього та правого нижнього кутів прямокутника, сторони якого паралельні осям координат. Створити підпрограму, що визначатиме довжини сторін цього прямокутника.

Варіант №4.

1. Заповнити екран монітора заданим малюнком, кількість яких по горизонталі та вертикалі задається з клавіатури.

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

Размещено на Allbest.ru


Подобные документы

  • Методика та порядок програмування алгоритмів циклічної структури із заданим числом повторень за допомогою мови програмування VAB. Алгоритм роботи з одновимірними масивами. Програмування алгоритмів із структурою вкладених циклів, обробка матриць.

    курсовая работа [27,7 K], добавлен 03.04.2009

  • Розв'язання задач мовою програмування VBA з використанням алгоритмів лінійної, розгалуженої та ітераційної циклічної структури. Розробка блок-схеми алгоритму, таблиці ідентифікаторів та тексту програми. Створення власної панелі інструментів користувача.

    практическая работа [1012,6 K], добавлен 19.02.2010

  • Визначення поняття "алгоритми", їх властивості, метод складання. Способи подання алгоритмів: письмовий, усний, схематичний, графічний, кодований. Навчальна алгоритмічна мова. Особливості створення блок-схеми. Алгоритм поданий мовою програмування.

    презентация [2,9 M], добавлен 06.05.2019

  • Алгоритми розв’язання задач у вигляді блок–схем. Використання мови програмування MS VisualBasic for Application для написання програм у ході вирішення задач на одномірний, двовимірний масив, порядок розв’язання задачі на використання символьних величин.

    контрольная работа [742,9 K], добавлен 27.04.2010

  • Огляд переваг та недоліків мови Пролог, історія її створення. Числення предикатів як математична основа її функціонування. Порівняльна характеристика середовищ програмування Prolog. Алгоритми розв’язування математичних задач за допомогою цієї мови.

    курсовая работа [504,5 K], добавлен 23.12.2014

  • Фундаментальні поняття об'єктно-орієнтованого програмування. Система лінійних нерівностей та опуклі багатогранники. Системи лінійних рівнянь лінійної алгебри як частковий випадок систем лінійних обмежень. Використання середовища програмування Delphi7.

    курсовая работа [222,7 K], добавлен 20.05.2015

  • Мoвa прoгрaмувaння як систeма пoзначень, що служить для точного опису програм або алгоритмів для ЕOM. Вимоги до мов програмування, класифікація за їх особливостям. Загальна характеристика найбільш поширених мов програмування: Сі, Паскаль, Delphi, Бейсік.

    реферат [24,4 K], добавлен 10.11.2012

  • Лінійне програмування як один з найбільш популярних апаратів математичної теорії оптимального управління рішень. Опис існуючих методів розв’язку задач лінійного програмування. Завдання, основні принципи, алгоритми і головна мета лінійного програмування.

    курсовая работа [363,8 K], добавлен 03.12.2009

  • Аналіз розроблення та програмування обчислювального процесу лінійної структури, налагодження програм. Вивчення правил запису констант, числових і символьних змінних, типів даних. Побудова алгоритму розв’язування завдання та креслення його блок-схеми.

    реферат [2,1 M], добавлен 22.04.2012

  • Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.

    курсовая работа [335,3 K], добавлен 11.01.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.