- •“Київський політехнічний інститут” обчислювальна техніка та програмування - 1
- •Обчислювальна техніка та програмування - 1
- •Символи кодової таблиці ascii
- •Умовні переходи на мові "паскаль"
- •1: Begin
- •Цикли на мові "паскаль"
- •Підпрограми на мові "паскаль"
- •Function Alfha(a,b:real; c:byte):real;
- •Function Beta:integer;
- •Procedure Sorter (a,b:real; c:byte; Var X,y:real);
- •Procedure Beep;
- •Uses crt;
- •Window (x1,y1,x2,y2);
- •Window (10,5,45,15);
- •Window (1,1,80,25);
- •TextColor (yellow);
- •TextColor (14);
- •Текстові та типізовані файли мови "паскаль"
- •Assign (f1, ’Data.Pas’);
- •Reset (f2);
- •Rewrite (f2);
- •Seek (f2, 7);
- •FileSize (f2),
- •FilePos (f2).
- •Побудова графіків функцій на мові "паскаль"
- •MoveTo (200, 100);
- •SetLineStyle (0,0,1);
- •OutText (’Текст для виводу’);
- •OutTextXy (200,100,’Текст для виводу’);
- •SetTextStyle (0,0,0);
- •SetTextJustify (1,1);
- •PutPixel (150,50,green);
- •ClearDevice;
- •Бібліотечний модуль на мові "паскаль"
- •Interface
- •Implementation
- •Динамічні змінні мови "паскаль"
- •SetFillStyle (1, white);
- •Об’єктно-орієнтоване програмування на мові "паскаль"
- •New (Person, Init);
- •Destructor Done; Virtual;
- •Dispose (Person, Done);
- •Форматований ввід та вивід даних на мові “cі”
- •Printf(“керуючий рядок”,аргумент1,аргумент2, ...);
- •Scanf(“керуючий рядок”,аргумент1,аргумент2,...);
- •Scanf(“%d %f %c %s”,&I,&j,&k,l);
- •Scanf(“%d %*d %d”, &I,&j);
- •Scanf(“%d,%d”,&n,&m);
- •Оператори організації переходів на мові "сі"
- •1.2. Для організації умовного переходу по одному із багатьох варіантів доцільно використовувати оператор switch. Він має наступний формат:
- •Організація циклів на мові "сі"
- •Одновимірні та двовимірні масиви на мові "сі"
- •Char b[30];
- •Char a[10][20];
- •Записи, вкладені записи, масиви записів на мові "сі"
- •Int month;
- •Int year;};
- •Int class, age;};
- •Робота із бінарними та текстовими файлами
- •File *lst;
- •Int fflush (вказівник_на_файл);
- •Int fgetc(вказівник_на_файл);
- •Int fputc(вказівник_на_файл);
- •Int fread (вказівник_на_масив, розмір_об’єкта, кількість_об’єктів , вказівник_на_файл);
- •Int fwrite(вказівник_на_масив, розмір_об’єкта, кількіст_об’єктів , вказівник_на_файл);
- •Int fseek(вказівник_файла, зміщення, поч. Значення);
- •3. Контрольні запитання
- •Робота з функціями на мові “сі”
- •Тип_функції назва_функції(тип1 параметр1, ..., тип_n параметр_n);
- •Int main(int argc, char *argv)
- •3.1. Який синтаксис функцій у мові “сі”.
- •Комп’ютерний практикум № 17 графічний режим екрану на мові “ci”
- •Initgraph(int *driver, int *mode, char *path);
- •Void *pimage;
- •Void *malloc(об'єм_пам’яті_в_байтах);
- •Imagesize(x1,y1,x2,y2);
- •Putimage(x1, y1, вказівник, вид_вставки);
- •Вирішення диференційних рівнянь методом ейлера
- •Основи роботи в середовищі “turbo pascal 7.0” та “turbo c 3.0”
- •Комп’ютерний практикум № 17. Графічний режим екрану
SetFillStyle (1, white);
Прямокутник із цілочисленими координатами лівого верхнього кута 100, 50 та правого нижнього кута 300, 150 креслиться командою
Rectangle (100,50,300,150);
Колоз координатами центра 300, 200 та радіусом 50 створюється командою
Circle (300,200,50);
Дуга колаз координатами центра 300, 200, із початковим й кінцевим кутом 90 й 270 градусів та радіусом 50 малюється командою
Arc (300,200,90,270,50);
Кут вимірюється як і в математиці від додатного напрямку осі абсцис проти годинникової стрілки.
Сектор кругаз координатами центра 300, 200, із початковим й кінцевим кутом 90 й 270 градусів та радіусом 50 створюється командою
PieSlice (300,200,90,270,50);
Еліптична дугаз координатами центра 300, 200, із початковим й кінцевим кутом 90 й 270 градусів та радіусом за віссю абсцис 50 й віссю ординат 150 креслиться командою
Ellipse (300,200,90,270,50,150);
Еліптичний секторіз координатами центра 300, 200, із початковим й кінцевим кутом 90 й 270 градусів та радіусом за віссю абсцис 50 й віссю ординат 150 малюється командою
Sector (300,200,90,270,50,150);
Заповнений еліпсіз координатами центра 300, 200 та радіусом за віссю абсцис 50 й віссю ординат 150 креслиться командою
FillEllipse (300,200,50,150);
Стовпець із координатами лівого верхнього кута 100, 50 та правого нижнього кута 200, 250 створюється командою
Bar (100,50,200,250);
Тривимірний стовпець із координатами лівого верхнього кута 100, 50 й правого нижнього кута 200, 250 та глибиною 10 із видимою вершиною, що задається логічною константою TopON чи її значенням True, малюється командою
Bar3D (100,50,200,250,10,TopON);
Невидима вершина використовується для розміщення стовпця один на одному і задається константою TopOFF чи її значенням False.
Ламана лінія або багатокутниквикреслюється на основі масиву координат точокx та y, які зберігаються в зарезервованому записіPointType. Багатокутник виходить, якщо координати першої та останньої точки співпадають. Для малювання необхідно також задати кількість точок (вершин) фігури
DrawPoly (<кількість точок :word>,
<масив координат точок :PointType>);
Приклад 3. Створити трикутник, контур якого має зелений колір.
Uses Graph;
Const
{ Завдання координат 4-х точок }
Triangle :array [1..4] of PointType=
((x:50; y:100), (x:100; y:100),
(x:150; y:150), (x:50; y:100));
Var
grDriver :Integer;
grMode :Integer;
ErrCode :Integer;
Begin
grDriver:= Detect;
InitGraph (grDriver, grMode,'F:\TP\BGI');
ErrCode:= GraphResult;
if ErrCode = grOk then
begin
{ Завдання зеленого кольору }
SetColor (green);
{ Креслення трикутника }
DrawPoly (4, Triangle);
Readln;
CloseGraph;
end
else
Writeln(GraphErrorMsg(ErrCode));
End.
Заповнений багатокутникмалюється при обов'язковій рівності координат першої та останньої точки
FillPoly (<кількість точок :word>,
<масив координат точок :PointType>);
1.10. Замкнуті області зображень можна заповнювати (зафарбовувати) заданим шаблоном та кольором, які встановлені командою SetFillStyle. Кордон заповнення задається кольором лінії, яка обмежує замкнуту область. Для команди заповнення необхідно вказати також координату будь-якої точки всередині області
FloodFill (<x,y :integer>,<колір кордону :word>);
Приклад 4. Заповнити червоне коло суцільним синім шаблоном.
Uses Graph;
Var
grDriver :Integer;
grMode :Integer;
ErrCode :Integer;
Begin
grDriver:= Detect;
InitGraph (grDriver, grMode,'F:\TP\BGI');
ErrCode:= GraphResult;
if ErrCode = grOk then
begin
{ Малювання кола червоним кольором }
SetColor (red);
Circle (200, 100, 50);
Readln;
{ Завдання суцільного заповнення
синім кольором }
SetFillStyle (1, blue);
{ Заповнення до червоної межі }
FloodFill (200, 100, red);
Readln;
CloseGraph;
end
else
Writeln(GraphErrorMsg(ErrCode));
End.
1.11. Приклад 5. Безперервно переміщувати червону кулю за годинниковою стрілкою паралельно сторонам екрана.
Uses Graph, Crt;
Const
Radius=20;
Var
grDriver :Integer;
grMode :Integer;
ErrCode :Integer;
Size,X,Y,I :Word;
P :Pointer;
Begin
grDriver:= Detect;
InitGraph (grDriver, grMode,'F:\TP\BGI');
ErrCode:= GraphResult;
if ErrCode = grOk then
begin
{ Малювання червоної кулі }
SetColor (red);
X:= Radius+2;
Y:= Radius+2;
Circle (X, Y, Radius);
SetFillStyle (1, red);
FloodFill (Radius, Radius, red);
{ Створення динамічної змінної }
Size:= ImageSize (0, 0, 2*X, 2*Y);
GetMem (P, Size);
GetImage (0, 0, 2*X, 2*Y, P^);
ClearDevice;
Repeat
{ Переміщення кулі вздовж верхньої сторони екрана }
for I:=1 to GetMaxX-2*X do
begin
PutImage (I, 1, P^, CopyPut);
Delay (10);
end;
{ Переміщення кулі вздовж правої сторони екрана }
for I:=1 to GetMaxY-2*Y do
begin
PutImage (GetMaxX-2*X, I, P^, CopyPut);
Delay (10);
end;
{ Переміщення кулі вздовж нижньої сторони екрана }
for I:=1 to GetMaxX-2*X do
begin
PutImage (GetMaxX-2*X-I, GetMaxY-2*Y, P^,CopyPut);
Delay (10);
end;
{ Переміщення кулі вздовж лівої сторони екрана}
for I:=1 to GetMaxY-2*Y do
begin
PutImage (1, GetMaxY-2*X-I, P^, CopyPut);
Delay (10);
end;
{ Повторення переміщень до натискання клавіші }
Until KeyPressed;
FreeMem (P, Size);
CloseGraph;
end
else
Writeln(GraphErrorMsg(ErrCode));
End.
ЗАВДАННЯ НА РОБОТУ
Розробити та запустити у роботу програму на мові програмування "Паскаль", яка вирішує задачу відповідно до заданого нижче варіанта.
2.1. Безперервно переміщувати по замкнутій еліптичній траєкторії графічний об'єкт, який складається з різнокольорового заповненого трикутника та круга.
2.2. Безперервно переміщувати за зворотно-поступальною траєкторією з лівого верхнього до правого нижнього кута екрана графічний об'єкт, який складається з різнокольорового заповненого п'ятикутника та стовпця.
2.3. Безперервно переміщувати горизонтально між сторонами екрана за зворотно-поступальною траєкторією графічний об'єкт, який складається з різнокольорового заповненого шестикутника та еліпса.
2.4. Безперервно переміщувати за зворотно-поступальною траєкторією з лівого нижнього до правого верхнього кута графічний об'єкт, який складається з трьох різнокольорових концентричних кругів.
2.5. Безперервно переміщувати вертикально між сторонами екрана за зворотно-поступальною траєкторією рухомий об'єкт, який складається з різнокольорового семикутника та еліптичного сектора.
2.6. Безперервно переміщувати горизонтально за синусоїдальною зворотно-поступальною траєкторією графічний об'єкт, який складається з різнокольорового заповненого прямокутника та сектора круга.
2.7. Безперервно переміщувати вертикально за синусоїдальною зворотно-поступальною траєкторією графічний об'єкт, який складається з різнокольорового заповненого трикутника та еліпса.
2.8. Безперервно переміщувати по колу на весь екран графічний об'єкт, який складається з різнокольорового заповненого прямокутника та сектора еліпса.
2.9. Безперервно переміщувати за прямолінійною замкнутою траєкторією типу “вертикальна вісімка” на весь екран графічний об'єкт, який складається з різнокольорового стовпця та круга.
2.10. Безперервно переміщувати за прямолінійною замкнутою траєкторією типу “горизонтальна вісімка” на весь екран графічний об'єкт, який складається з двох різнокольорових концентричних кругів.
КОНТРОЛЬНІ ЗАПИТАННЯ
3.1. Що називається динамічною пам'яттю.
3.2. Для чого використовується динамічна пам'ять.
3.3. Що таке динамічні змінні.
3.4. Які є типи вказівників та як вони описуються.
3.5. Якими командами виділяється та звільняється динамічна пам'ять у залежності від типу вказівників.
3.6. Як позначаються динамічні змінні у виконавчій частині програми.
3.7. Як визначити об'єм вільної динамічної пам'яттю
3.8. Як визначити об'єм неперервної ділянки динамічної пам'яті.
В якій послідовності створюється рухоме зображення.
Якою командою фрагмент зображення відображується з динамічної пам'яті на екран.
Які є способи поєднання поточного зображення екрана із зображенням рухомого фрагмента.
Який максимальний об'єм одного прямокутного фрагмента зображення, що вирізається з екрана.
Якою командою задається колір та шаблон заповнення геометричних фігур.
Комп'ютерний практикум № 9