WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Паскаль: типи дійсних, оператори розгалуження, функції та їх виклики, процедури, під задачі - Реферат

Паскаль: типи дійсних, оператори розгалуження, функції та їх виклики, процедури, під задачі - Реферат

принаймні два різних процеси обчислень. Який із них здійснюється, залежить від значень змінних, що входять в умову, тобто від стану пам'яті програми. Таким чином, оператор розгалуження задає різні дії, що їх має виконати комп'ютер при різних станах пам'яті.
Різні стани пам'яті після виконання тих самих операторів програми можуть утворюватися, якщо її змінним "присвоюються з зовнішнього світу" різні набори значень. Отже, з використанням оператора розгалуження можна описати розв'язання задачі для різних наборів значень, що надходять "із зовнішнього світу" (вхідних значень, або вхідних даних).
Програми, як правило, пишуться для того, щоб перекласти на комп'ютер розв'язання задач, які людина не хоче або не може розв'язати сама. Звичайно задача ставиться в загальному вигляді з указанням параметрів, від значень яких залежить хід і результат розв'язання, наприклад, "розв'язати квадратне рівняння ax2+bx+c=0, задане коефіцієнтами a, b, c". Параметри тут - коефіцієнти рівняння.
Задачі, що ставляться в загальному вигляді з параметрами, називаються масовими. Задача, поставлена не в загальному вигляді, а з конкретним набором значень параметрів, називаєтьсяекземпляром задачі. Наприклад, "розв'язати рівняння x2+3x+2=0, задане коефіцієнтами 1, 3, 2".
Всі можливі конкретні набори значень параметрів утворюють екземпляри задачі й задають конкретні процеси її розв'язання.
Алгоритм розв'язання масової задачі теж повинний бути масовим, тобто таким, що за ним можна здійснити процеси розв'язання всіх екземплярів задачі. Наприклад, розв'язати всі можливі конкретні квадратні рівняння. Таким чином, програми, як правило, мають властивість масовості. І оператор розгалуження - це один із засобів, яким масовість забезпечується.
2.3. Блок-схеми
Процеси, задані оператором розгалуження if умова then оператор else оператор, можна зобразити як гілки одного процесу, на які він розділяється. Позначимо обчислення умови ромбом, із якого виходять два стрілки, позначені можливими значеннями умови true і false. Стрілки задають послідовність дій. Позначимо виконання оператора прямокутником; рис.3.1 виражає "розгалуження" процесу виконання оператора розгалуження на два можливих процеси, хоча при будь-якому його виконанні здійснюється в точності один із них.
Зображення, складені з прямокутників, ромбів указаного вигляду й стрілок, називаються блок-схемами. Одна зі стрілок звичайно починається з "нізвідки" і позначає початок блок-схеми. Якщо рухатися по стрілках і виписувати дії, позначені в блоках (ромбах і прямокутниках), утворяться позначення процесів, що задаються блок-схемою. Отже, блок-схема - це теж алгоритм, тільки виражений в іншій формі. Такого, нехай не зовсім точного, тлумачення блок-схем нам буде достатньо, оскільки ми скористаємося ними лише для ілюстрації семантики окремих операторів.
Пункт (3) алгоритму обчислення коренів квадратного рівняння за його коефіцієнтами можна задати блок-схемою з рис. 3.2.
У деяких випадках блок-схеми дуже наочно подають можливі процеси виконання програми. На зорі програмування вони використовувалися дуже широко, і перед написанням програм навіть необхідно було креслити блок-схеми. Тепер можна обходитися і без них.
Задачі
3.7.* Імітувати виконання операторів, де x, y - імена змінних цілого типу:
readln(x);
if x=1 then y:=16 else
if x=2 then y:=256 else
if x=3 then y:=4096 else
y:=10000;
writeln(y),
якщо при читанні x одержує значення:
а) 1; б) 2;
в) 3; г) 4.
3.8. Написати програму обчислення та друкування дійсних коренів квадратного рівняння, заданого коефіцієнтами a, b, c,
а) де a 0; б) де, можливо, a=0.
3.9.* Написати програму дослідження, тобто обчислення кількості коренів рівняння ax2+bx+c=0 за його коефіцієнтами a, b, c (можливо, a=0).
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);
var x1, y1, x2, y2, d1, d2, d3, m : real;
function dd(a1, b1, a2, b2: real):real;
begin
dd:=sqrt( sqr(a1-a2)+sqr(b1-b2) )
end;
begin
writeln('введіть координати двох точок:');
readln(x1, y1, x2, y2);
d1:=dd(x1, y1, x2,
Loading...

 
 

Цікаве