
- •“Київський політехнічний інститут” обчислювальна техніка та програмування - 1
- •Обчислювальна техніка та програмування - 1
- •Символи кодової таблиці ascii
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Умовні переходи на мові "паскаль"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Цикли на мові "паскаль"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Підпрограми на мові "паскаль"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Текстові та типізовані файли мови "паскаль"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Побудова графіків функцій на мові "паскаль"
- •Теоретичні відомості
- •OutText (’Текст для виводу’);
- •OutTextXy (200,100,’Текст для виводу’);
- •Завдання на роботу
- •Контрольні запитання
- •Бібліотечний модуль на мові "паскаль"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Динамічні змінні мови "паскаль"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Об’єктно-орієнтоване програмування на мові "паскаль"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Форматований ввід та вивід даних на мові “cі”
- •Основні теоретичні відомості
- •Printf(“керуючий рядок”,аргумент1,аргумент2, ...);
- •Scanf(“керуючий рядок”,аргумент1,аргумент2,...);
- •Завдання на роботу
- •Контрольні запитання
- •Оператори організації переходів на мові "сі"
- •Теоретичні відомості
- •1.2. Для організації умовного переходу по одному із багатьох варіантів доцільно використовувати оператор switch. Він має наступний формат:
- •Завдання на роботу
- •Контрольні запитання
- •Організація циклів на мові "сі"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Одновимірні та двовимірні масиви на мові "сі"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Записи, вкладені записи, масиви записів на мові "сі"
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Робота із бінарними та текстовими файлами
- •Теоретичні відомості
- •Int fgetc(вказівник_на_файл);
- •Int fputc(вказівник_на_файл);
- •Int fread (вказівник_на_масив, розмір_об’єкта, кількість_об’єктів , вказівник_на_файл);
- •Int fwrite(вказівник_на_масив, розмір_об’єкта, кількіст_об’єктів , вказівник_на_файл);
- •Int fseek(вказівник_файла, зміщення, поч. Значення);
- •Завдання на роботу
- •3. Контрольні запитання
- •Робота з функціями на мові “сі”
- •Теоретичні відомості
- •Тип_функції назва_функції(тип1 параметр1, ..., тип_n параметр_n);
- •Завдання на роботу
- •Контрольні запитання
- •3.1. Який синтаксис функцій у мові “сі”.
- •Комп’ютерний практикум № 17 графічний режим екрану на мові “ci”
- •Основні теоретичні відомості
- •Void *malloc(об'єм_пам’яті_в_байтах);
- •Putimage(x1, y1, вказівник, вид_вставки);
- •Завдання на роботу
- •Контрольні запитання
- •Вирішення диференційних рівнянь методом ейлера
- •Теоретичні відомості
- •Завдання на роботу
- •Контрольні запитання
- •Основи роботи в середовищі “turbo pascal 7.0” та “turbo c 3.0”
- •Комп’ютерний практикум № 17. Графічний режим екрану
OutText (’Текст для виводу’);
та
OutTextXy (200,100,’Текст для виводу’);
Перша команда виводить інформацію відносно поточної позиції вказівника екрана, а друга – відносно заданої позиції вказівника, в наведеному прикладі – це координати (х=200, у=100).
Недоліком представлених команд виводу є те, що вони дозволяють виводити інформацію тільки рядкового типу string, проте часто необхідно виводити на екран числові значення змінних. Для виходу із ситуації числові дані попередньо перетворюються у рядкові за допомогою процедури
Str (<число>,<рядковий еквівалент>);
наприклад, числове значення змінної Min дійсного типу real передається змінній Smin рядкового типу string, а потім виводиться
Min:=10.3;
Str (Min,SMin);
OutText (Smin);
Текст може виводитися різними шрифтами та заданою величиною (розміром), які вказуються у команді
SetTextStyle (<шрифт, орієнтація тексту, розмір:word>);
Кожен шрифт зберігається в окремому файлі з розширенням .CHR найчастіше у підкаталозі BGI, що входить до каталогу програмних засобів. Параметри команди задаються словами чи еквівалентними цифрами. Позначення стандартних шрифтів мови "Паскаль" представлено в табл.1.3.
Табл.1.3.
-
Тип шрифту
Примітка
DefaultFont (або цифра 0)
Растровий шрифт, матриця 8х8
TriplexFont (або цифра 1)
Штриховий напівжирний шрифт
SmallFont (або цифра 2)
Штриховий тонкий шрифт
SansSerifFont (або цифра 3)
Штриховий рублений шрифт
GothicFont (або цифра 5)
Штриховий готичний шрифт
Текст може виводитися горизонтально – зліва направо чи вертикально – знизу догори. Орієнтація задається командами згідно табл. 1.4.
Табл.1.4.
-
Орієнтація тексту
Примітка
HorizDir (або цифра 0)
Горизонтально
VertDir (або цифра 1)
Вертикально
Розмір шрифту встановлюється цифрами в межах від нуля до 10, причому нульове значення відповідає стандартному розміру шрифту.
За згодою встановлено растровий шрифт стандартного розміру, направлений горизонтально, тобто
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.