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

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

ГоловнаІнформатика, Компютерні науки → Програмування: Функції, процедури та підпрограми - Реферат

Програмування: Функції, процедури та підпрограми - Реферат

має загальний вигляд
procedure ім'я(означення параметрів);
означення імен
begin
послідовність операторів
end;
Процедура, як і функція, є означенням імені і записується серед означень програми.
На відміну від функції, в її заголовку немає імені типу для значень, породжуваних у результаті виклику, тому що ніякі значення не породжуються. За цією ж причиною в тілі процедури не може бути операторів присвоювання з її ім'ям у лівій частині.
Виклик процедури складається з імені й аргументів у дужках і записується як окремий оператор, наприклад, readln(x, y).
Отже, напишемо інший варіант програми упорядкування трьох значень:
program sort31(input, output);
var a, b, c : integer;
procedure swap(xx, yy : integer);
var t : integer;
begin t:=xx; xx:=yy; yy:=t end;
begin
writeln('задайте три цілих:'); readln(a, b, c);
if a>b then swap(a, b);
if b>c then swap(b, c);
if a>b then swap(a, b);
writeln('упорядкування: ', a, ' ', b, ' ', c)
end.
Але це неправильно!
Справа в тім, що при виконанні виклику, наприклад, swap(a, b), змінні xx і yy одержать значення змінних a і b, потім ці значення поміняються місцями, виконання виклику закінчиться, а в змінних a і b залишаться ті ж самі значення, що були перед викликом.
Наприклад, якщо змінним a, b, c присвоїти "з зовнішнього світу" значення відповідно 3, 1, 2, то буде надруковано упорядкування: 3 1 2. Слушність цього напису дуже сумнівна.
Отже, при виконанні виклику процедури (чи функції) спочатку параметри одержують значення аргументів, а потім їх зміни ніяк не відбиваються на аргументах (рис.3.3). Тому параметри, що дотепер розглядалися, називаються параметрами-значеннями.
Мова Паскаль допускає в заголовках процедур і функцій означати параметри іншого виду. Вони називаються параметрами-змінними і означаються зі словом var попереду. Так, процедура swap набуває вигляду:
procedure swap(var xx, yy : integer);
var t : integer;
begin
t:=xx;
xx:=yy;
yy:=t
end;
Таке означення параметрів забезпечує, що при виконанні виклику процедури або функції іменам параметрів ставляться у відповідність змінні, тобто ділянки пам'яті, уже зіставлені аргументам. При виконанні виклику зміна значення параметра-змінної насправді є зміною значення аргументу .
Якщо в програмі sort31 означити параметри процедури як параметри-змінні, то за виконання виклику swap(a, b) імені xx зіставляється та ж сама ділянка пам'яті, що й змінній a, а імені yy - та ж, що b. У результаті обмін місцями значень xx і yy є обміном a і b. Що й було потрібно. Таким чином, якщо в змінні a, b, c програми було прочитано значення 3, 2, 1 відповідно, то результати виконання викликів процедури swap можна подати станами пам'яті програми. Функції та процедури в мові Паскаль мають загальну назву: підпрограми. У заголовках підпрограм можна означати як параметри-значення, так і параметри-змінні. Означення однотипних параметрів того самого виду називається секцією, і означення параметрів насправді є послідовністю секцій.Секція параметрів-значень - це список імен, за яким після двокрапки записано ім'я типу, наприклад, a1, a2 : real.Секція параметрів-змінних починається словом var, за яким записано список імен параметрів та ім'я типу,наприклад,
var xx, yy : integer.
Секції розділяються ";". За необхідності ми могли б написати, наприклад,
procedure qq(x, y : integer; var z, t : integer).
Як ми вже говорили, у викликах підпрограм вказуються аргументи - вирази, однотипні з параметрами. Але є суттєва відмінність між аргументами, що можуть відповідати параметрам-значенням і параметрам-змінним.
Аргументом для параметра-значення може бути будь-який вираз, тип якого сумісний за присвоюванням із типом параметра.
Аргументом для параметра-змінної може бути тільки ім'я змінної того ж типу, що й параметр. У літературі часто параметри підпрограм називаються формальними параметрами, а аргументи у викликах -фактичними.
Задачі
1)Як Ви гадаєте, процедури readln і writeln мають параметри-значення або параметри-змінні?
2)Як відомо, будь-які дві різні точки площини задають єдину пряму, що проходить через них. Рівняння прямої ax+by+c=0 називається нормалізованим, якщо (b=1) або (b=0 і a=1). Пряма може бути задана не єдиним рівнянням, але її нормалізоване рівняння єдине.
Написати процедуру обчислення коефіцієнтів нормалізованого рівняння прямої за координатами двох різних точок.
Написати функцію перевірки, чи лежать дві точки площини по один бік прямої, заданої коефіцієнтами нормалізованого рівняння.
З використанням цих підпрограм написати програму читання координат точки і вершин трикутника і перевірки, чи лежить точка всередині його.
3). Прочитати координати двох пар точок, якими задано два відрізки, та визначити, чи мають вони хоча б одну спільну точку.
3.Підзадачі, підпрограми та бібліотеки підпрограм
Підпрограми, як очевидно з попередніх двох параграфів, використовуються для організації програми. Якщо в кількох місцях програми треба описати по суті ті самі обчислення, але з різними значеннями або змінними, то використання підпрограм може скоротити програму, зробити її більш зрозумілою й заощадити час на її створення. Якщо програма - це опис розв'язання якоїсь задача, то підпрограма, як правило, - це опис
розв'язання частини цієї задачі. У багатьох випадках частину задачі можна сформулювати так само чітко, як і самому задачу, тобто виділити її як підзадачу. Наприклад, у задачі обчислення найкоротшої з довжин відрізків, утворених точками, виділяється
підзадача обчислення довжини відрізка, а в задачі про переупорядкування значень трьох змінних - під задача обміну значень двох змінних. Таким чином, прагматика підпрограм, тобто те, для чого вони призначені, є опис розв'язання підзадач.
Розв'язання переважної більшості задач на програмування починається з аналізу їх умови. При цьому дуже важливо правильно виділити підзадачі - це дозволить використовувати підпрограми і прискорить створення програми в цілому.Кожна система програмування має у своєму складі цілий набір уже готових підпрограм для розв'язання різноманітних задач. Ці задачі виникають як підзадачі практично в будь-який задачі програмування і по суті є стандартними. До них відносяться, наприклад, задачі обчислення математичних функцій (sin, exp тощо) або читання значень із зовнішніх носіїв даних. Підпрограми розв'язання деяких таких задач нам уже знайомі, про інші ми ще дізнаємося. Стандартні підпрограми в системах програмування зібрано в спеціальний набір - бібліотеку. У процесі побудови машинної програми вони додаються до програми, начебто були в ній визначені. Якщо ж програма інтепретується, вони завантажуються з бібліотеки й виконуються. Знати їх корисно і необхідно в практичномупрограмуванні, аджекористуватися готовими деталями набагато легше, ніж створювати їх самому.
Loading...

 
 

Цікаве