6.Математичні операції
Операнди:
«+»— додавання;
«-»— віднімання;
«*»— множення;
«/»— ділення;
«div»— ціла частина від ділення (наприклад: 7 div 2= 3);
«mod»— остача від ділення (наприклад: 7 mod 2= 1);
«=»— дорівнює;
«<>»— не дорівнює (≠);
«>»— більше;
«<»— менше;
«>=»— більше або рівне (≥);
«<=»— менше або рівне (≤);
«shl»— побітовий зсув вліво (наприклад: 00000110b shl 1= 00001100b);
«shr»— побітовий зсув вправо (наприклад: 00000111b shr 1= 00000011b).
7.Типи даних
Цілі типи:
Назва типу |
Діапазон значень10 |
Роль старшого біту та розмір (біти) |
Byte |
0..255 |
беззнаковий 8 |
Word |
0..65535 |
беззнаковий 16 |
Char |
#0..#255 |
8 |
Boolean |
FALSE..TRUE |
8 |
ByteBool |
FALSE..TRUE |
8 |
WordBool |
FALSE..TRUE |
16 |
LongBool |
FALSE..TRUE |
32 |
ShortInt |
−128..127 |
зі знаком 8 |
Integer |
−32768..32767 |
зі знаком 16 |
LongInt |
−2147483648..2147483647 |
зі знаком 32 |
Pointer |
$00000000..$FFFFFFFF |
32 |
Дійсні типи:
Назва типу |
Діапазон значень (з урахуванням «дірок») |
Кількість значущих цифр |
Розмір (біти) |
Comp |
−9.2e18..9.2e18 |
19-20 |
64 |
Single |
1.5e-45..3.4e38 |
7-8 |
32 |
Real |
2.9e-39..1.7e38 |
11-12 |
48 |
Double |
5.0e-324..1.7e308 |
15-16 |
64 |
Extended |
3.4e-4932..1.1e4932 |
19-20 |
80 |
Інші типи:
Назва типу |
Розмір (Байт) |
String |
1+ 1..255 |
File |
8+40+80 |
Text |
128+ 128
|
8.Стандартні підпрограми і сталі
Abs(X) — обчислення абсолютного значення (модулю) Х.
ArcTan(X) — обчислення кута, тангенс якого дорівнює Х (тобто математичний arctg(X)), значення кута подано в радіанах і може знаходитися в діапазоні від -π/2 до π/2. Для перетворення значення кута з радіанної міри в градусну необхідно значення кута помножити на число 180/π. Результат має дійсний тип.
Cos(X) — обчислення косинуса Х, параметр задає значення кута в радіанах.
Exp(x) — обчислення значення експоненти аргументу (ex). Результат завжди має дійсний тип.
Frac(X) — знаходження дробової частини Х. Результат має дійсний тип.
Int(X) — знаходження цілої частини Х (дробова частина відкидається). Результат має дійсний тип.
Ln(x) — обчислюється натуральний логарифм аргументу. Результат має дійсний тип. За допомогою функцій Exp та Ln можна обчислити довільну степінь числа так: ab=Exp(b*Ln(a)), відповідно корінь можна подати так само a1/b (тобто корінь степіня b з a)=Exp(1/b*Ln(a)).
Pi — повертає значення числа p (3.1415926).
Sin(X) — обчислення синуса Х. Параметр задає значення кута в радіанах. Для перетворення значення кута з радіанної міри в градусну необхідно значення кута помножити на число 180/p. Результат має дійсний тип.
Sqr(X) — піднесення до квадрата значення Х. Тип результату збігається з типом параметра.
Sqrt(X) — обчислення квадратного кореня з Х. Тип результату дійсний.
Random — генерує значення випадкового числа з діапазону від 0 до 0.99. Тип результату дійсний.
Random(P) — генерує значення випадкового числа з діапазону від 0 до P. Тип результату цілий. Щоб випадкові числа були «більш випадковими», необхідно періодично змінювати базу генерації. Для цього використовується процедура Randomize, що дозволяє при кожному новому запуску програми отримувати різні випадкові числа.
Для величин перелічувальних типів (всі цілі, літерний та булівський) існують також декілька зручних стандартних функцій та процедур, наведених нижче:
Dec(x, [dx]) — процедура зменшує значення змінної Х на величину DX, а якщо параметр DX не заданий — на 1.
Inc(x, [dx]) — процедура збільшує значення змінної Х на величину DX, а якщо параметр DX не заданий — на 1.
Pred(X) — функція, що визначає попереднє значення для даного типа. Наприклад, Pred(5)=4, Pred(True)=False, Pred('B')='A'.
Succ(X) — функція, що визначає наступне значення для даного типа. Наприклад, Succ(5)=6, Succ(True)=False, Succ('A')='B'.
Odd(X) — число перевіряється на непарність. Результат дорівнює true, якщо аргумент непарний, і false — в протилежному випадку.
Задача 1.
Трикутник задано координатами вершин А(0; 0), В(і; i-1) та С(-і; і+1), де і – номер вашого варіанта (ввести з клавіатури). Координати точок розрахувати в програмі та вивести їх значення (наприклад: А(0; 0) В(5; 4) С(-5; 6)).
Варіант 13: Обчислити висоту та hb медіану та.
Математична постановка:
Для знаходження сторін трикутника за координатами їх точок:
,
для
півпериметра:
,
для
площі трикутника:
,
Для
знаходження висоти hb
використаємо формулу:
,
для
знаходження медіани:
.
Вхідні дані:
Змінні типу integer: ax, ay, bx, by, cx, cy, i; змінні типу типу real: hb, ma, s, p, a,b,c.
Вихідні дані:
Змінні hb та ma виводяться на екран.
Математична модель:
Введемо данні (номер варіанту).
Розрахуємо довжини сторін трикутника за формулою №1 указаною вище, зважаючи на те, що координати точок будуть А(0; 0), В(і; i-1) та С(-і; і+1), i – номер варінту.
Виведемо довжни сторін на екран.
Знайдемо півпериметр даного трикутника за формулою №2.
Знайдемо площу трикутника опираючись на знайденні дані.
Здаходимо висоту трикутника.
Знаходимо медіану.
Виводимо знайдені дані на екран.
Блок-схема програми:
Р
озрахунок
та аналіз результатів роботи програми:
Як бачимо програма пройшла перевірку на неправильне значення, та все розрахувала вірно.
Текс програми:
program lab_1_1;
uses crt;
var ax, ay, bx, by, cx, cy, i: integer;
hb, ma, s, p, a,b,c: real;
begin
clrscr;
repeat
write('Vvedit chislo 13: ');
read(i);
until i = 13;
bx := i;
by := i-1;
cx := -i;
cy := i+1;
writeln( 'Koordinati tochok: A(',ax,';',ay,'), B(',bx,';',by,'), C(',cx,';',cy,')' );
c := sqrt( sqr(bx-ax) + sqr(by-ay) );
a := sqrt( sqr(cx-bx) + sqr(cy-by) );
b := sqrt( sqr(cx-ax) + sqr(cy-ay) );
writeln( 'Storoni ravnyautsa: a = ',a:3:2,',b = ',b:3:2,',c = ', c:3:2 );
p := (a+b+c)/2;
s := sqrt( p*(p-a)*(p-b)*(p-c) );
hb := 2*s/b;
writeln('Visota Hb = ',hb:3:2);
ma := sqrt( 2*sqr(b) + 2*sqr(c) - sqr(a) )/2;
writeln('Mediana Ma = ',ma:3:2);
readln;
readln;
end.
Задача 2.
Розрахувати функцію користувача. Вхідні дані задати самостійно.
№ варіанта – це номер студента в журналі. Якщо n > 26, то потрібно від n віднімати 26. Потрібні функції слід вибрати з наведеної нижче таблиці.
n |
Функція fn(x) |
13 |
|
Математична постановка:
Розрахувати значення функції за формулою.
Вхідні дані:
Змінна типу real: x.
Вихідні дані:
Змінна типу real: result,виводиться на екран.
Розрахунок
та аналіз результатів роботи програми:
Як бачимо програма не дає ввести користувачу 0 (якщо б був 0,то логарифм не мав би сенсу), та дає правильний розв’язок формули.
Текст програми:
program lab_1_2;
uses crt;
var x,result, a,b,c: real;
begin
clrscr;
repeat
write('Vvedite x (luboe znachenie krome 0 ): ');
readln(x);
until x <> 0;
a := 3.1*( sin(x)/cos(x));
b := ( 2.3*x - 4 )*Ln( Abs(x) );
c := (2*x - 5.6)*(x + 7);
result := a + b/c;
writeln('3.1tg(x) + ( (2.3x - 4)ln|x| )/( (2x - 5.6)(x+7) ) = ', result:3:4);
readln;
end.
Блок-схема
програми:
Висновоки:
Я навчився розв’язувати прості програми на мові Pascal,робити математичну постановку програми, складати алгоритм роботи програми.
