Паскаль: типи дійсних, оператори розгалуження, функції та їх виклики, процедури, під задачі
3.10. Написати програму дослідження вигляду множини розв'язань нерівності ax2+bx+c>0 (два інтервали, інтервал і т.п.).
3.11. Зобразити аналогічно рис.3.2 алгоритми розв'язання задач 3.8–3.10.
3.12. Написати програму визначення виду трикутника за трьома довжинами його сторін (можна припускати, що вони додатні й задовольняють нерівності трикутника):
а)* рівносторонній, рівнобедрений і не рівносторонній, різнобічний;
б) гострокутний, прямокутний, тупокутний.
3. Функція та її виклики
Status in statu.
(лат.: Держава в державі)
Розглянемо задачу: обчислити мінімальну з відстаней між точками площини A(x1; y1), B(x2; y2) і C(1;2). Алгоритм розв'язання цієї задачі очевидний:
1) обчислити відстані d1=AB, d2=AC, d3=BC;
2) обчислити m= min{d1, d2, d3}.
Відстань між точками з довільними координатами (x; y), (x'; y') виражається формулою d= , і для обчислення відстаней нам необхідно тричі написати "Паскалівський" варіант цієї формули з різними наборами координат: x1, y1, x2, y2, потім x1, y1, 1, 2, потім x2, y2, 1, 2. Ці вирази досить громіздкі й задають по суті ті самі обчислення, тільки з різними наборами значень. Все це можна записати інакше.
Мова Паскаль дозволяє описати повторювані обчислення один раз, дати цьому опису ім'я і далі не описувати самі обчислення, а тільки позначати їх цим ім'ям.
Отже, у мові Паскаль є описи обчислень і є їх позначення. Опис обчислень, як правило, є параметризованим, подібно до алгоритму обчислення коренів квадратного рівняння, де параметрами були коефіцієнти рівняння. Конкретні значення, з якими треба зробити обчислення, вказуються в позначенні обчислень разом із ім'ям цього опису й називаються аргументами. Опис обчислень деякого значення називається функцією, а їх позначення – викликом функції.
У даному випадку параметрами будуть чотири координати двох точок. Назвемо їх a1, b1, a2, b2. Опис обчислень задається у вигляді функції, якій ми дамо ім'я dd:
function dd(a1, b1, a2, b2: real):real;
begin
dd:=sqrt( sqr(a1-a2)+sqr(b1-b2) )
end;
Цей опис є означенням імені dd, тому поміщається серед інших означень програми. Позначення цієї функції, тобто виклики її з конкретними аргументами записуються в тілі програми:
program minimdis(input, output);