- •“Київський політехнічний інститут” обчислювальна техніка та програмування - 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. Графічний режим екрану
SetTextStyle (0,0,0);
Вирівнювання тексту на екрані відносно позиції вказівника СР (точки виводу) здійснюється процедурою
SetTextJustify (<по горизонталі, по вертикалі:word>);
Вирівнювання задається командами у вигляді слів чи еквівалентних цифр відповідно до табл.1.5.
Табл.1.5.
-
Вирівнювання
Примітка
По горизонталі
LeftText (або цифра 0)
Вказівник ліворуч тексту
CenterText (або цифра 1)
Вказівник по центру тексту
RightText (або цифра 2)
Вказівник праворуч тексту
По вертикалі
BottomText (або цифра 0)
Вказівник вище тексту
CenterText (або цифра 1)
Вказівник по центру тексту
TopText (або цифра 2)
Вказівник нище тексту
За згодою встановлено вирівнювання по центру, тобто
SetTextJustify (1,1);
1.11. Для ефективної роботи програми з будь-яким драйвером та роздільністю екрана необхідно обчислювати координати точок на екрані відносно поточної роздільності. Для цього використовуються функції
GetMaxX та GetMaxY
цілочисленого типу word, які повертають роздільність екрана по координаті X та Y відповідно.
1.12. На екран можна виводити точку заданого кольору в задану позицію, що інколи використовується для побудови графіка. Наприклад, вивід зеленої точки в позицію з координатами (х=150, у=50) виконується командою
PutPixel (150,50,green);
1.13. Очистка екрана у графічному режимі здійснюється командою
ClearDevice;
1.14. При побудові графіків потрібно враховувати протилежний до математичного напрямок осі Y на екрані, рис. 1.1. Позиція точки по осі Y визначається різницею між максимальним розмахом координатної сітки графіка та обчисленою координатою точки Y0. Наприклад, якщо координатна сітка займає весь екран по осі Y, то координата дорівнює
Y:= GetMaxY – Y0;
Обчислення координат точок для виводу графіків на основі реальних координат Xd та Yd здійснюється з урахуванням їх цілочисленого типу й масштабів по осях X та Y
X0:= Round(Xd*Mx);
Y0:= Round(Yd*My);
Масштаби визначаються максимальним реальним значенням функції Ymax й аргументу Xmax, а також максимальним розмахом координатної сітки графіка по осях. Наприклад, якщо координатна сітка займає весь екран, то масштаби дорівнюють
Mx:= GetMaxX/Xmax;
My:= GetMaxY/Ymax;
1.15.
Приклад 1.
Розрахувати значення та
побудувати графік функції
при зміні аргументуt
від нуля до 2 з кроком 0,01 для наступних
значень параметрів: А=5; =-1,5;
=30;
=1,8.
Програма складається з двох
підпрограм-процедур: Function_W
та Graphic.
Підпрограма Function_W
обчислює значення заданої функції й
визначає її максимальне та мінімальне
значення, які потім використовуються
для визначення масштабу по осі Y при
побудові графіка функції. Обчислені
значення функції та аргументу виводяться
на екран та записуються до файлу. Друга
підпрограма Graphic
будує на екрані
координатну сітку та графік на основі
значень функції записаних у файл. На
екран виводяться також екстремальні
значення функції та аргументу для чого
використовується підпрограма-функція
RealToStr,
що перетворює дані
дійсного типу в рядкові.
Program Graphica;
Uses Graph, Crt;
Const
Tend=2; t:real=0;
Var
W, Wmax, Wmin :real;
f :text;
grDriver, grMode, errCode :integer;
Procedure Function_W;
Const
A=5;
alpha=-1.5;
omega=30;
ksi=1.8;
dt=0.01;
Begin
TextBackGround (lightgray);
ClrScr;
TextColor (red);
Writeln ('РОЗРАХУНОК ЗНАЧЕНЬ ФУНКЦІЇ');
Writeln;
TextColor (black);
Writeln (' ':2,'Аргумент',' ':6,'Функція');
Window (1,4,80,25);
TextColor (white);
Assign (f,'F:\TP\Data.Out');
Rewrite (f);
Wmax:=-10E10;
Wmin:=10E10;
Repeat
W:=A*Exp(alpha*t)*Sin(omega*t+ksi);
Writeln (' ':3, t:5:2,' ':7,W:7:2);
Writeln (f, t:5:2,W:7:2);
If W>Wmax then Wmax:=W;
If W<Wmin then Wmin:=W;
t:=t+dt;
Delay (5);
Until t>Tend+dt;
Readln;
Window (1,1,80,25);
Close (f);
End;
Procedure Graphic (x1,y1,x2,y2:word);
Const
N=4;
M=4;
Var
X, Yw, X0, Yw0, J :integer;
Mt, Mw, Wmod :real;
Function RealToStr (R :real) :string;
Var
S :string;
Begin
Str (R:7:2, S);
RealToStr:= S;
End;
Begin
SetBkColor(red);
SetFillStyle (1, lightgray);
Bar (x1, y1, x2, y2);
For J:=0 to N do Line (((x2-x1) div N+1)*J+x1, y1,
((x2-x1) div N+1)*J+x1, y2);
For J:=0 to M do Line (x1, ((y2-y1) div M+1)*J+y1,
x2, ((y2-y1) div M+1)*J+y1);
SetTextJustify (CenterText, CenterText);
SetTextStyle (SmallFont, HorizDir, 5);
OutTextXY (x1-5, ((y2-y1) div 2)+y1, '0');
OutTextXY (x2+7, ((y2-y1) div 2)+y1, 'T');
OutTextXY (x1-5, y1, 'W');
SetColor (yellow);
SetLineStyle (0,0,3);
If (Wmax>=0) and (Wmin<0) then Wmod:=Wmax+Abs(Wmin);
If (Wmax>=0) and (Wmin>0) then Wmod:=Wmax;
If (Wmax<0) and (Wmin<=0) then Wmod:=Abs(Wmin);
Mt:=(x2-x1)/Tend;
Mw:=(y2-y1)/Wmod;
Assign (f, 'F:\TP\Data.out');
Reset (f);
Readln (f, t,W);
X0:=x1+Round (t*Mt);
Yw0:=y2-((y2-y1) div 2)-Round (W*Mw);
While Not Eof (f) do
begin
Readln (f, t,W);
X:=x1+Round (t*Mt);
Yw:=Y2-((Y2-Y1) div 2)-Round (W*Mw);
Line (X0,Yw0,X,Yw);
X0:=X;
Yw0:=Yw;
end;
Close (f);
SetColor (red);
OutTextXY (x2-210, y2-80, 'Tend='+RealToStr(t));
SetColor (green);
OutTextXY (x2-210, y2-60, 'Wmax='+RealToStr (Wmax));
SetColor (magenta);
OutTextXY (x2-210, y2-40, 'Wmin='+RealToStr (Wmin));
Repeat until KeyPressed;
end;
BEGIN
Function_W;
grDriver:= Detect;
InitGraph (grDriver, grMode,'F:\TP\BGI');
errCode:= GraphResult;
if errCode <> grOk then
begin
Writeln (GraphErrorMsg(ErrCode));
Halt;
end;
Graphic (30, 30, GetMaxX-30, GetMaxY-30);
CloseGraph;
END.
ЗАВДАННЯ НА РОБОТУ
Розробити та запустити у роботу програму на мові програмування "Паскаль", яка вирішує задачу відповідно до заданого нижче варіанта.
2.1. Обчислити значення та побудувати графіки функцій Y1=А*sin(В*х+рі/3) та Y2=С*(1-е-x) при зміні аргументу Х від нуля до 5 з кроком 0,05. Значення коефіцієнтів А, В, С ввести з клавіатури. Значення аргументу та функцій вивести в три стовпці на екран із відповідними заголовками та записати у файл. Графіки вивести в першу четверть екрана на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій та аргументу.
2.2. Обчислити значення та побудувати графіки функцій Y=С*e-x +А*(1-е-х) та Z=В*соs(х+рі/4) при зміні аргументу Х від нуля до 3 з кроком 0,01. Значення коефіцієнтів А, В, С задати у вигляді констант. Значення аргументу та функцій вивести в три стовпці на екран з відповідними заголовками та записати у файл. Графіки вивести в третю четверть екрана на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій.
2.З. Обчислити значення та побудувати графіки функцій Y=А*sin(В*х) та F=С+(1-е-x) при зміні аргументу Х від нуля до 7 із кроком 0,05. Значення коефіцієнтів А, В, С ввести з клавіатури. Значення аргументу та функцій вивести в три стовпці на екран з відповідними заголовками та записати у файл. Графіки вивести в другу четверть екрана на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій та аргументу.
2.4. Обчислити значення та побудувати графіки функцій Z=А –B*(1-е-x) та Y=С*соs(х-рі/6) при зміні аргументу Х від нуля до 10 з кроком 0,04. Значення коефіцієнтів А, В, С задати у вигляді констант. Значення аргументу та функцій вивести в три стовпці на екран з відповідними заголовками та записати у файл. Графіки вивести в другу четверть екрана на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій та аргументу.
2.5. Обчислити значення та побудувати графіки функцій Y2=А*(1-е-x) та Z3=В*sin(С*х-рі/3) при зміні аргументу Х від нуля до 6 з кроком 0,01. Значення коефіцієнтів А, В, С задати у вигляді констант. Значення аргументу та функцій вивести в три стовпці на екран з відповідними заголовками та записати у файл. Графіки вивести на весь екран на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій.
2.6. Обчислити значення та побудувати графіки функцій Y1=А*e-x +В*(1-е-x) та Z=С*cos(х+рі/З) при зміні аргументу Х від нуля до 8 з кроком 0,02. Значення коефіцієнтів А, В, С задати у вигляді констант. Значення аргументу та функцій вивести в три стовпці на екран з відповідними заголовками та записати у файл. Графіки вивести в третю четверть екрана на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій.
2.7. Обчислити значення та побудувати графіки функцій Y=А*sin(В*х+рі/5) та Z=C*(1-е-x) при зміні аргументу Х від нуля до 6 з кроком 0,02. Значення коефіцієнтів А, В, С ввести з клавіатури. Значення аргументу та функцій вивести в три стовпці на екран з відповідними заголовками та записати у файл. Графіки вивести в другу четверть екрана на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій та аргументу.
2.8. Обчислити значення та побудувати графіки функцій Z1=А –В*(1-е-x) та Z2=С*соs(х+рі/4) при зміні аргументу Х від нуля до 5 з кроком 0,01. Значення коефіцієнтів А, В, С задати у вигляді констант. Значення аргументу та функцій вивести в три стовпці на екран з відповідними заголовками та записати у файл. Графіки вивести в другу четверть екрана на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій та аргументу.
2.9. Обчислити значення та побудувати графіки функцій Y2=А*(1-е-х)+В та Z1=С*sin(х-рі/3) при зміні аргументу Х від нуля до 6 з кроком 0,01. Значення коефіцієнтів А, В, С задати у вигляді констант. Значення аргументу та функцій вивести в три стовпці на екран з відповідними заголовками та записати у файл. Графіки вивести на весь екран на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій.
2.10. Обчислити значення та побудувати графіки функцій Y=А*(1-е-х) та Z=В*соs(С*х-рі/3) при зміні аргументу Х від нуля до 5 з кроком 0,01. Значення коефіцієнтів А, В, С задати у вигляді констант. Значення аргументу та функцій вивести в три стовпці на екран з відповідними заголовками та записати у файл. Графіки вивести на весь екран на одну координатну сітку різним кольором. Підписати координатні осі та вивести максимальні значення функцій.
КОНТРОЛЬНІ ЗАПИТАННЯ
3.1. Як відкрити графічний режим дисплея.
3.2. За допомогою яких команд можна будувати графіки функцій.
3.3. Як змінити тип, товщину та колір лінії.
3.4. За допомогою яких команд виводиться на екран текстова інформація у графічному режимі роботи.
3.5. Як змінити шрифт, розмір та напрямок виводу тексту.
3.6. Чим визначаються масштаби по координатних осям.
Комп'ютерний практикум № 7
