Читайте данную работу прямо на сайте или скачайте
Программирование и алгоритмические языки
Мнстерство освти науки кра
Сумський державний нверситет
Кафедра Моделювання складних систем
КУРСОВА РОБОТА
з предмету Програмування
алгоритмчн мови
на тему Використання пдпрограм
Виконав студент |
Коваль к.В. |
Група |
ЕСЗТ-81с |
Факультет |
заочний |
Переврив викладач |
ндрúнко В. . |
Варант роботи |
14 |
Суми - 2001
ЗМ
СТ
|
Змст |
2 |
|
Вступ |
3 |
1. |
Завдання 1 |
4 |
1.1 |
Постановка задач |
4 |
1.2 |
Виршення задач (програма) |
4 |
1.3 |
Отриманий результат псля виконання програми |
5 |
1.4 |
налз отриманого результату |
5 |
1.5 |
Опис формату пдпрограми функц |
6 |
1.6 |
Формальн та фактичн параметри функцÿ |
6 |
2. |
Завдання 2 |
7 |
2.1 |
Постановка задач |
7 |
2.2 |
Виршення задач (програма) |
7 |
2.3 |
Отриманий результат псля виконання програми |
|
2.4 |
налз отриманого результату |
|
2.5 |
Опис формату пдпрограми процедури |
|
2.6 |
Формальн та фактичн параметри процедури |
|
3. |
Опис використаних в програмах операторв |
|
|
Використана тература |
|
ВСТУП
Часто в пдпрограм виявляються однотипн длянки, як виконують т ж сам обчислення, але з рзними даними. Так частини програм доцльно оформлювати у вигляд пдпрограм. Використання пдпрограм дозволя
:
1) зробити основну програму бльш наочною компактною;
2) зменшити об`
м використовувано пам`ят ЕОМ;
3) скоротити час налагодження, тому що програмування налагодження основно програми пдпрограми можуть виконувати паралельно рзн програмсти.
В Турбо-Паскал видляють два види програм: процедури функцÿ. Структура процедур функцй така ж, як структура основно
1) розташований безпосередньо в роздл опису основно
2) записаний у окремий файл вставлений в роздл описв основно
{$I м`я_файлу}
3) оформлений у вигляд зовншнього модуля (це можуть бути або стандартн модул, або поряд з використанням стандартних модулв кожний програмст ма
можливсть органзацÿ власних модулв). Структура любого модуля ма
вигляд:
unit м`я модуля
interface
uses список_використовуваних_модулв
{Вдкрит оголошення}
implementation
uses список_використовуваних_модулв
{Власн оголошення}
{Процедури та функцÿ}
begin Е end.
ЗАВДАННЯ 1
Постановка задач
Обчислити суми елементв нижнх трикутних матриць для матриць А(15,15) В(20,20).
Виконати з використанням пдпрограми функцÿ.
Виршення задач
Program Kurs_Task1;
Uses Crt;
Const n=4; m=6;
Type Mas=Array[1..m,1..m] of Real;
ar a,b : Mas;
Sa,Sb : Real;
{-= Пpоцедуpа встановлення кольоpу шpифта =-}
Procedure Tc (p:Integer);
Begin
TextColor(p);
End;
{-= Пpоцедуpа введення числових елементiв матpиць =-}
Procedure InT (k:String; x:Integer; Var m:Mas);
Var i,j : Integer;
Begin
For i:=1 To x Do
Begin
For j:=1 To x Do
Begin
Write('Масив '); TC(15); Write(k); TC(7);
Write(' строка '); TC(15); Write(i); TC(7);
Write(' елемент '); TC(15); Write(j); TC(7);
Write(' > '); TC(15); ReadLn(m[i,j]); TC(7);
End;
End;
End;
{-= Функцiя обчислення суми елементiв нижньо
Function Sum (k:String; x:Integer; Var m:Mas):Real;
Var i,j,t : Integer;
s : Real;
Begin
t:=0; s:=0;
For i:=1 To x Do
Begin
t:=t+1;
For j:=1 To t Do
Begin
s:=s+m[i,j];
End;
End;
Sum:=s;
End;
{-= Основна пpогpама =-}
Begin
ClrScr;
InT('A',n,a);
InT('B',m,b);
Sa:=Sum('A',n,a);
Write('Сума елементiв нижньо
Write('A'); TC(7); Write(' доpiвню
'); TC(15); WriteLn(Sa:5:2); TC(7);
Sb:=Sum('B',m,b);
Write('Сума елементiв нижньо
Write('B'); TC(7); Write(' доpiвню
'); TC(15); WriteLn(Sb:5:2); TC(7);
ReadKey;
End.
Отриманий результат псля виконання програми
Масив A строка 1 елемент 1 > -5
Масив A строка 1 елемент 2 > -4
Масив A строка 1 елемент 3 > -3
Масив A строка 1 елемент 4 > -2
* * * *
Масив B строка 6 елемент 1 > 10
Масив B строка 6 елемент 2 > 11
Масив B строка 6 елемент 3 > 12
Масив B строка 6 елемент 4 > 13
Масив B строка 6 елемент 5 > 14
Масив B строка 6 елемент 6 > 15
Сума елементiв нижньо
Сума елементiв нижньо
Аналз отриманого результату
Для зручност побудови програми замсть параметрв (15,15) та (20,20) матриць А В вдповдно, були використан розмри (4,4) та (6,6), як можуть змнюватися шляхом змни чисельних значень констант n та m.
Вище приведено результат, обчислений програмою. При введенн обох матриць, вводяться вс числов значення, потм з створених матриць видля
ться нижня трикутна матриця (за даними завдання):
Матриця А |
|
|
Матриця В |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-20 |
-19 |
-18 |
-17 |
-16 |
-15 |
-5 |
-4 |
-3 |
-2 |
|
|
-14 |
-13 |
-12 |
-11 |
-10 |
-9 |
-1 |
0 |
1 |
2 |
|
|
-8 |
-7 |
-6 |
-5 |
-4 |
-3 |
3 |
4 |
5 |
6 |
|
|
-2 |
-1 |
0 |
1 |
2 |
3 |
7 |
8 |
9 |
10 |
|
|
4 |
5 |
6 |
7 |
8 |
9 |
|
|
|
|
|
|
10 |
11 |
12 |
13 |
14 |
15 |
Для переврки врност обчислення програмою суми елементв нижньо
переврочне обчислення:
(Ц5) + (Ц1) + 0 + 3 + 4 + 5 + 7 + 8 + 9 + 10 = 40
результат обчислення програми:
Сума елементiв нижньо
Як ми можемо бачити, результати дентичн, це свдчить про те, що програма обробила вхдн дан врно видала врну вдповдь.
Вищевикладене може обгрунтовано свдчити про те, що програма виконана врно.
Опис формату пдпрограми функцÿ
Пдпрограма функця використову
ться, якщо в програм виявляються однотипн длянки, як виконують т ж сам обчислення, але з рзними даними.
Структура функцÿ така ж, як структура основно
Загальний вигляд функцÿ: function м`я (формальн_параметри) : тип;
Особливост пдпрограми-функцÿ:
1) функця ма
тльки один результат виконання (але може мати деклька вхдних параметрв);
2) результат познача
ться менем функцÿ, тому в роздл операторв функцÿ обов`язково повинен бути присутнм оператор присвоювання, в вй частин якого сто
3) в заголовку функцÿ обов`язково повинен бути вказаний тип функцÿ;
4) виклик функцÿ в основнй програм здйсню
ться безпосередньо середин вираження по ? мен з вказуванням фактичних параметрв.
Формальн фактичн параметри функцÿ
Формальн параметри представляють собою список перемнних з вказуванням
В представленй вище програм використовуван формальн параметри функцÿ - перемнна, яка вказу
м`я масиву, який обробля
ться середин ц㺿 функцÿ (m:Mas); перемнна, яка вказу
розмрнсть масиву (x:Integer); та символьне значення (А або В) - м`я матриц (k:String):
Function Sum (k:String; x:Integer; Var m:Mas):Real;
Фактичн параметри казуються безпосередньо середин тла основно
ЗАВДАННЯ 2
Постановка задач
Обчислити суми кльксть елементв, як знаходяться в нтервал вд a до b для матриць X(10,8) Y(10,12).
Виконати з використанням пдпрограми процедури.
Виршення задач
Program Kurs_Task2;
Uses Crt;
Const h=5; m=4; n=6;
Type Mas=Array[1..h,1..n] of Real;
ar x,y : Mas;
a1,b1,a2,b2 : Integer;
v1,v2 : Integer;
Sx,Sy : Real;
{-= Пpоцедуpа встановлення кольоpу шpифта =-}
Procedure Tc (p:Integer);
Begin
TextColor(p);
End;
{-= Пpоцедуpа введення числових елементiв матpиць =-}
Procedure InT (k:String; x:Integer; Var m:Mas);
Var i,j : Integer;
Begin
For i:=1 To h Do
Begin
For j:=1 To x Do
Begin
Write('Масив '); TC(15); Write(k); TC(7);
Write(' строка '); TC(15); Write(i); TC(7);
Write(' елемент '); TC(15); Write(j); TC(7);
Write(' > '); TC(15); ReadLn(m[i,j]); TC(7);
End;
End;
End;
Procedure Out (k:String; a,b,v:Integer; s:Real);
Begin
Write('Сума елементiв матpицi ',k,' в iнтеpвалi вiд ');
WriteLn(a,' до ',b,' доpiвню
',s:5:2);
WriteLn('Кiлькiсть обчислених елементiв доpiвню
',v);
End;
{-= Пpоцедуpа обчислення суми елементiв та
Procedure Sum (x:Integer; a,b: Integer; m:Mas; Var s:Real; Var v:Integer);
Var i,j,p : Integer;
Begin
p:=0; s:=0; v:=0;
For i:=1 To h Do
Begin
For j:=1 To x Do
Begin
p:=p+1;
If (p>=a)and(p<=b) Then
Begin
s:=s+m[i,j];
v:=v+1;
End;
End;
End;
End;
{-= Основна пpогpама =-}
Begin
ClrScr;
InT('X',m,x);
InT('Y',n,y);
WriteLn('Задайте iнтеpвал для матpицi X:');
Write(' вiд > '); ReadLn(a1);
Write(' до > '); ReadLn(b1);
Sum(m,a1,b1,x,Sx,v1);
WriteLn('Задайте iнтеpвал для матpицi Y:');
Write(' вiд > '); ReadLn(a2);
Write(' до > '); ReadLn(b2);
Sum(n,a2,b2,y,Sy,v2);
Out('X',a1,b1,v1,Sx);
Out('Y',a2,b2,v2,Sy);
ReadKey;
End.
Отриманий результат псля виконання програми
Масив X строка 1 елемент 1 > -10
Масив X строка 1 елемент 2 > -9
Масив X строка 1 елемент 3 > -8
Масив X строка 1 елемент 4 > -7
* * * *
Масив Y строка 5 елемент 3 > 16
Масив Y строка 5 елемент 4 > 17
Масив Y строка 5 елемент 5 > 18
Масив Y строка 5 елемент 6 > 19
Задайте iнтеpвал для матpицi X:
вiд > 5
до > 12
Задайте iнтеpвал для матpицi Y:
вiд > 7
до > 15
Сума елементiв матpицi X в iнтеpвалi вiд 5 до 12 доpiвню
-20.00
Кiлькiсть обчислених елементiв доpiвню
8
Сума елементiв матpицi Y в iнтеpвалi вiд 7 до 15 доpiвню
а 0.00
Кiлькiсть обчислених елементiв доpiвню
9
налз отриманого результату
Для зручност побудови програми замсть параметрв (10,8) та (10,12) матриць X та Y вдповдно, були використан розмри (5,4) та (5,6), як можуть змнюватися шляхом змни чисельних значень констант m та n.
Вище приведено результат, обчислений програмою. При введенн обох матриць, вводяться вс числов значення, потм користувач познача
нтервал для обох матриць окремо, в якому потрбно виконати пдсумовування та пдрахунок клькост пдсумованих елементв (в даному випадку для матриц X вд 5 до 12, в матриц Y вд 7 до 15 елементу матриц ):
Матриця X |
|
|
Матриця Y |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
-10 |
-9 |
-8 |
-7 |
|
|
-10 |
-9 |
-8 |
-7 |
-6 |
-5 |
-6 |
-5 |
-4 |
-3 |
|
|
-4 |
-3 |
-2 |
-1 |
0 |
1 |
-2 |
-1 |
0 |
1 |
|
|
2 |
3 |
4 |
5 |
6 |
7 |
2 |
3 |
4 |
5 |
|
|
8 |
9 |
10 |
11 |
12 |
13 |
6 |
7 |
8 |
9 |
|
|
14 |
15 |
16 |
17 |
18 |
19 |
Для переврки врност обчислення програмою суми елементв в заданому нтервал вд 5 до 12 матриц Х, викона
мо пдрахунок видлених елементв для ц㺿 матриц:
переврочне обчислення:
(Ц6) + (Ц5) + (Ц4) + (Ц3) + (Ц2) + (Ц1) + 0 + 1 = Ц20
кльксть елементв: 1 2 3 4 5 6 7 8
результат обчислення програми:
Сума елементiв матpицi X в iнтеpвалi вiд 5 до 12 доpiвню
-20.00
Кiлькiсть обчислених елементiв доpiвню
8
Як ми можемо бачити, результати дентичн, це свдчить про те, що програма обробила вхдн дан врно видала врну вдповдь на обидва запитання в обох матрицях (масивах).
Вищевикладене може обгрунтовано свдчити про те, що програма виконана врно.
Опис формату пдпрограми процедури
Пдпрограма процедура так же, як функця, використову
ться якщо в програм виявляються однотипов длянки, як виконують т ж сам обчислення, але з рзними даними.
Структура процедури така ж, як структура основно
Опис процедури ма
вигляд:
Procedure м`я (формальн_параметри);
роздл описв
begin
роздл операторв
end;
розмщу
ться в основнй програм (program) в роздл описв.
Тут м`я - м`я процедури. Роздл описв, як в основнй програм, включа
роздли label, const, type, var роздл процедур та функцй.
Параметри процедур можуть бути трьох видв:
1) параметри-значення (вхдн параметри);
2) параметри-перемнн (вихдн параметри);
3) параметри процедурного типу.
Опис вхдних параметрв процедури в списку формальних параметрв ма
такий вигляд:
список_перемнних1:тип1; список_перемнних2:тип2; Е
Вдповдно опис вихдних параметрв вигляда
так:
ar список_перемнних1:тип1; var список_перемнних2:тип2; Е
В Турбо-Паскал допуска
ться також використання нетипзованих вихдних параметрв, як мають вигляд:
ar список_перемнних
Виклик процедури в основнй програм вдбува
ться оператором виду:
м`я_процедури (фактичн_параметри);
Формальн фактичн параметри процедури
Формальн параметри мають вигляд списку перемнних з казуванням
При виклику процедури в основнй програм, задаються параметри, як являють собою фактичн параметри, як перелчен через кому (без вказвки
Вхдними фактичними параметрами можуть бути константи, перемнн вирази. Вихдними фактичними параметрами можуть бути тльки перемнн.
Опис використаних в програмах операторв
Program |
заголовок програми, в якому вказу ться м`я програми (утворю ться так, як мена перемнних). |
Uses |
слугу для використання модулв в програм. |
Crt |
стандартний модуль Турбо-Паскаля, який пдтриму текстовий режим дозволя задавати колр фону чи шрифту, константи для органзацÿ прямо |
Const |
роздл констант - якщо в програм використовуються константи, як мають достатньо громздкий запис, або змнн константи (для рзних варантв програми). |
Type |
опис мен типв перемнних, як вдрзняються вд стандартних, тобто перемнн типу перечислення, обмежен перемнн, масиви т.д. |
ar |
роздл, в якому описуються вс перемнн, як зустрчаються в програм. |
Procedure |
оператор пдпрограми-процедури (описаний вище). |
Function |
оператор пдпрограми-функцÿ (описаний вище). |
Read |
оператор вводу - кожне введене значення послдовно присвою ться перемнним з списку: Read (список_перемнних); |
ReadLn |
те ж, що попереднй оператор, тльки псля введення даних вдбува ться перехд на нову строку (тобто наступний оператор введення буде вводити дан з ново |
Write |
оператор виводу - виводить послдовно значення перемнних з списку, або виводить текст, занесений в одинарн лапки: Write (список_перемнних,ТтекстТ); |
WriteLn |
те ж саме, що попереднй оператор, але псля виводу перемнних здйсню ться перехд на нову строку (наступний оператор виводу буде виводити дан з початку ново |
:= |
оператор присвоювання - мен перемнно |
For |
оператор циклу, який ма загальний вигляд: for I:=N1 to N2 do оператор; тут I - перемнна циклу; N1, N2 - початкове кнцеве значення перемнно |
If |
оператор мовного переходу, який ма загальний вигляд: if логчний_вираз then оператор_1 [else оператор_2]; тут квадратн дужки означають, що конструкця else з оператором 2 може бути вдсутня. Перед else крапка з комою не ставиться. Оператор 1,2 - це прост або складен оператори. Якщо логчний вираз стинний, то викону ться оператор 1, накше - оператор 2 (або наступний за if оператор, якщо else вдсутн ). В якост операторв 1,2 можуть бути використан нш оператори if, в цьому випадку кожне else вдноситься до найближчого злва if, який не ма else. |
Begin |
з цього ключового слова почина ться частина програми роздлу операторв (почина ться роздл, або ж вцлому програма). |
End |
цим ключовим словом закнчу ться частина програми роздлу операторв (закнчу ться роздл, або ж вцлому програма). |
Використана тература
1. лBorland Pascal 7.0 : Резидентная программа-справочник. Москва: ПО л Object Windows + , 1993.
2. Турбо-Паскаль 5.0: Руководство пользователя. Калинин: НПО Центрпрограммсистем, 1990.
3. Офицеров Д.В., Старых В.А. Программирование в интегрированной среде Турбо-Паскаль: Справ. пособие. - Мн.: Беларусь, 1992. Ц 240 с.: ил.
4. Перминов О.Н. Программирование на языке Паскаль, М.: Радио и связь, 1988.
5. Довдкова система по мовам програмування - електронна верся.
|