Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практика програмування.doc
Скачиваний:
23
Добавлен:
16.05.2015
Размер:
580.61 Кб
Скачать

Виконання роботи

1.Завдання для самостійної підготовки

вивчити:

- правила запису підпрограм різних типів і способів звернення до них ;

- способи передавання параметрів в підпрограму;

- правила запису програм , де використовують підпрограми різних типів.

- порядок виконання програм , що містять підпрограми .

2.Постановка задачі:

2.1 Написати програму ,яка обчислює значення заданих в варіанті функцій. Обчислення допоміжних функцій оформити у вигляді підпрограми типу FUNCTION.Таблиця 7.

Дано декілька масивів чисел, кількість масивів та розмір кожного згідно варіанту. Необхідно в кожному масиві знайти найбільший і найменьший елементи і вивести їх на екран. Потім елементи кожного масиву піднести до квадрату і знову знайти найбільший і найменьший елементи. Обчислення максимального і мінімального елементив оформити у вигляді PROCEDURE, а також введення та виведення елементів масиву. Налагодити програму з підпрограмами, записати результат у звіт. Таблиця 8.

3.Оформити звіт до практичної роботи.

Методичні вказівки

1. При написанні підпрограми-функції ознайомитись з приведеним прикладом підпрограми функції . Звернути увагу на те ,що в операторі присвоєння ім’я функції можна використовувати тільки в лівій частині , так як ім’я функції в правій частині оператора вказує на звертання до функції.

2.Процедури -це підпрограми ,результатом роботи ,яких є два або більше результати , або ж відсутність жодного результату.Процедура

може складатись як з параметрами так і без параметрів.Звертання до

процедури записується окремим оператором.В данній задачі скласти

такі процедури

процедура введення масиву довільного розміру (< N).

процедура знаходження найбільшого та найменшого елементів маси-ву;

процедура піднесення елементів масиву до квадрату;

процедура виводу елементів масиву.

У звіт по практичній роботі записати програми ,дані з якими працювали програми та результати обчислень.

ЗРАЗОК ПРОГРАМИ З ВИКОРИСТАННЯМ ФУНКЦІЙ

Скласти програму для обчислення функції при довільних дійсних значенях X,Y.У підпрограмі FUNCTION оформити обчислення ax .

PROGRAM PI;

VAR X,Y,FXY:REAL;

FUNCTION STEP(A:REAL;B:INTEGER):REAL;

VAR RAB:REAL; ABSB:INTEGER;

BEGIN RAB:=1; ABSB:=ABS(B);

WHILE ABSB>0 DO

BEGIN RAB:=RAB*A; ABSB:=ABSB-1 END;

IF B<0 THEN RAB:=1/RAB;

STEP:=RAB

END;

BEGIN {основна програма}

WRITELN(‘ВВЕДІТЬ ДАНІ’); READLN(X,Y);

FXY:=STEP(X+Y,-5)-STEP(X-2*Y,3); {звертання до функції}

WRITELN(‘ДЛЯ Х=’,X:6:3,’ І У=’,Y:6:3,’ ЗНАЧЕННЯ F(X,Y)=’,FXY:6:3);

END.

Задача. Заданий масив із 10 елементів. Знайти суму елементів масиву.

Розв’жемо це задання, використовуючи для операцій вводу масиву, обчислення суми елементіві виводу елементів масиву допоміжні алгоритми.

PROGRAM PRAKT7-M;

CONST N=10;

TYPE MASSIV=ARRAY[1..N] OF INTEGER;

VAR A:MASSIV;

S:INTEGER;

I:INTEGER;

PROCEDURE VVOD(VAR X:MASSIV); { підпрограма вводу масиву }

VAR I:INTEGER;

BEGIN

RANDOMIZE;

FOR I:=1 TO N DO X[I]:=RANDOM(100);

END;

PROCEDURE VYVOD(X:MASSIV); { підпрограма виводу масиву }

VAR I:INTEGER;

BEGIN

FOR I:=1 TO N DO WRITE(X[I]:4);

WRITELN;

END;

PROCEDURE SUM(X:MASSIV; VAR M:INTEGER); {обчислення суми}

VAR I:INTEGER;

BEGIN

M:=0;

FOR I:=1 TO N DO M:=M+X[I];

END;

BEGIN{ основна програма}

VVOD(A);

WRITELN(‘Вихідні дані’); VYVOD(A); SUM(A,S);

WRITELN(‘Сума елементів масиву A S=’,S);

END.

Пояснення.

Процедура VVOD містить лише один параметр, який є результатом, тому що масив при цьому змінюється.

Процедура VIVOD містить також лише один параметр, який є вихідними даними. Оскільки дані в результаті процедури не зміпюються, секція VAR в ній відсутня.

Процедура SUM містить два параметри: перший є вихідними даними, другий – результатом. Цей алгоритм можна було б реалізуватиі за допомогою функції(FUNCTION).

Варіанти завдань Таблиця 7

обчислити в основній програмі

оформити у вигляді FUNCTION

1

2

z=f(a,b2)+f(b,ab)

a=1;2;3;4;5. b=0.2;0.4;0.6...2.

3

4

R= f(x+1, y+1) - f(y,x)

x= 1,2,3,4,5;

y=-0.2;-0.6;-0.8.

5

6

z= f(x2 , y2)+f(x,y )

x=4,8,12,16; y=0.2,4,6,8.

7

z= f(a-b,b) f(b,a+b)

a=-2,0,2,4; b=0,1,2,3.

8

9

10

11

12

13

z= f(x , y2)+f(x-1,y )

x=1,2,3,4,5,6 y=0.2,4,6,8.

14

z= f(a+b,b-1)+ f(b,a)

a=-2,0,2,4; b=0,1,2,3.

15

Таблиця 8

КІЛЬКІСТЬ МАСИВІВ

НАЗВА І РОЗМІР МАСИВІВ

ТИП ЕЛЕМЕНТУ МАСИВА

1

2

A[5],B[6]

ДІЙСНІ ЧИСЛА

2

3

A[3,4],B[2,3],C[2,4]

ЦІЛІ ЧИСЛА

3

3

A[3],B[4],C[7]

ДІЙСНІ ЧИСЛА

4

2

A[3,4],B[2,3]

ДІЙСНІ ЧИСЛА

5

4

A[7],B[3],C[4],D[5]

ЦІЛІ ЧИСЛА

6

3

A[6],C[4],D[3]

ДІЙСНІ ЧИСЛА

7

2

C[4,2],B[3,3]

ЦІЛІ ЧИСЛА

8

4

A[2],B[3],C[4],D[5]

ДІЙСНІ ЧИСЛА

9

2

A[5,2],B[3,4]

ДІЙСНІ ЧИСЛА

10

3

A[3,5],B[4,2],C[2,3]

ЦІЛІ ЧИСЛА

11

2

A[10],B[8]

ДІЙСНІ ЧИСЛА

12

4

A[2],B[7],C[4],D[3]

ЦІЛІ ЧИСЛА

13

2

A[5,3],B[4,4]

ДІЙСНІ ЧИСЛА

14

3

A[4],B[2],C[5]

ЦІЛІ ЧИСЛА

15

3

A[3,2],B[3,3],C[2,5]

ЦІЛІ ЧИСЛА

Практична робота №8

Тема :Програмування задач з використанням файлів .

Мета :

  1. Ознайомитись з файловим типом даних у TURBO PASCAL .

  2. Навчитись створювати та читати текстові файли .

  3. Набути навиків формування та опрацювання типованих файлів .

Вивчити:

  • основну термінологію, пов’язану з файловими структурами даних: фізич- ний і логічний запис, методи доступу, форматні і безформатні записи,за-

пис кінця файлу;

  • запис даних уфайл з послідовною організацією;

  • читання із файлу;

  • редагування записів файлу;

  • можливості мови програмування по опрацюванню файлів.

Рекомендована література

1.В.Е.Алексеев,А.С.Ваулин,А.В.Петрова , Вычислительная техника и

программирование.Практикум по программированию. M.:Высш.шк.1991г. 400с.

Стор.340-351

2.Довгаль С.И, Литвинов Б.Ю.Сбитнева А.И Персональные ЕОМ: Турбо Паскаль V 6.0, 1993г.

3. В.Я.Сердюченко, Розробка алгоритмiв та програмування мовою Turbo-Pascal. Харків,1995г. 270с

Постановка задачі

Скласти програму для обчислення суми ряду по заданому вигляду загального члена з заданною точністю 0.001 . Елементи ряду, їх порядкові номера та загальну суму вивести у текстовий файл rezult.txt . Варіанти задач згідно таблиці № 9

Скласти програму для формування типованого файлу, що містить відомості про студентів : прізвище, ім’я, шифр групи, номер телефону, результати 4-ох екзаменів сесії . Кількість записів довільна .

Скласти програму для опрацювання сформованого типованого файлу . Виконати обчислення згідно варіанту таблиці .2

Методичні вказівки .

Текстовий файл можна формувати декількома способами :

  • посимвольно формувати рядок файлу, використовуючи змінну типу CHAR і формуючи в циклі рядок поки не натиснена клавіша ENTER ;

  • використовуючи масив символів, що містить інформацію одного рядка

VAR X : ARRAY[1..80] of CHAR ;

  • використовуючи готові рядки, дані типу String

Приклад програми 1: Скласти програму формування текстового файлу прізвищ

uses crt ;

const ob=’gruppa5.txt’;

var fam:string[30];

spisok:text ;

simv:char;

begin

assign (spisok, ob);

rewrite(spisok);

repeat

writeln(’введіть наступне прізвище’ );

readln(fam);

writeln(spisok,fam);

writeln(’для продовження роботи введіть будь-який символ’);

writeln(’для за­кінчення - треба ввести символ -N’);

readln(simv);

until simv=’N’;

close(spisok);

reset(spisok);

writeln;

writeln(‘зміст файлу’);

while not eof (spisok) do begin

readln(spisok,fam);

writeln(fam);

end;

end.

Приклад виконання завдання 2

Завдання : скласти програму створення типованого файлу, що містить відомості про здачу студентами сесії . Структура запису містить поля : індекс групи, прізвище студента, оцінки з п’яти екзаменів . Кількість записів у файлі довільна .

PROGRAM LR15A(INPUT,OUTPUT);

TYPE

ZAP= RECORD

INDEX:STRING[6];

FAM:STRING[20];

MARKER:PACKED ARRAY[1..5] OF CHAR;

END;

VAR

SESSYA:FILE OF ZAP;

K:INTEGER;

FLAG:BOOLEAN;

X:ZAP;

BEGIN

K:=0;

FLAG:=TRUE; ASSIGN(SESSYA,’SESSYA.dat’);

REWRITE(SESSYA);

REPEAT

WRITELN(‘ ВВЕДІТЬ ПОТОЧНИЙ ЗАПИС : ІНДЕКС ГРУПИ , ФАМІЛІЮ І’);

WRITELN(‘5 ОЦІНОК ЗА ЕКЗАМЕНИ ’);

WRITELN(‘ДЛЯ ЗАКІНЧЕННЯ РОБОТИ ВВЕДІТЬ ЗАМІСЬ ІНДЕКСА ’);

WRITELN(‘ГРУПИ СИМВОЛІВ # # # # # #’);

READ(X.INDEX,X.FAM,X.MARKER[1], X.MARKER[2], X.MARKER[3], X.MARKER[4], X.MARKER[5]);

IF X.INDEX<>’# # # # # # ‘ THEN

BEGIN K:=K+1; WRITE(SESSYA,X) END

ELSE FLAG:=FALSE

UNTIL FLAG;

WRITELN(‘B ФАЙЛІ ‘,K,’ ЗАПИСІВ’); CLOSE(SESSYA);

RESET(SESSYA);

WHILE NOT EOF(SESSYA) DO

BEGIN

READ(SESSYA,X);

WRITELN(X.INDEX,X.FAM,X.MARKER[1], X.MARKER[2], X.MARKER[3], X.MARKER[4], X.MARKER[5]);

END;

WRITELN(‘КОНЕЦ ФАЙЛА’);

END.

Приклад виконання завдання 3

Завданння :Написати програму обчислення стипендії студентів групи Х.

Розмір звичайної стипендії 10 грн. Студенту, який отримує всі п’ять оцінок “5” , призначається стипендія, підвищена на 50% ; отримавшому 1-2 оцінки ”4” i решта ”5” -підвищена на25% ; студенту,який отримав хоча б одну оцінку ”3”, стипендія не призначається . В інших випадках призначається звичайний розмір стипендії .

PROGRAM LR15;

LABEL 2;

TYPE ZAP=RECORD

INDEX:STRING[6] ;

FAM:STRING[20];

MARKER:ARRAY[1..5] OF CHAR;

END;

VAR SESSYA:FILE OF ZAP;

Y:ZAP;

X:STRING[6];

I,K4,K5,N:INTEGER;

S:REAL;

BEGIN

ASSIGN (SESSYA,’SESSYA’);RESET(SESSYA);

WRITELN(‘ВВЕДІТЬ ІНДЕКС ГРУПИ ’);READLN(X);

WRITELN(‘ВІДОМІСТЬ ЗАЧИСЛЕННЯ НА СТИПЕНДІЮ’);

WRITELN(‘СТУДЕНТІВ ГРУПИ’,Х); N:=0;

2:WHILE NIT EOF (SESSYA) DO

BEGIN

READ(SESSYA, Y);

IF Y.INDEX=X THEN

BEGIN K4:=0; K5:=0;

FOR I:=1 TO 5 DO

BEGIN

IF Y.MARKER[i] =’2 ‘ OR Y.MARKER[i] =’3’ THEN GOTO 2;

IF Y.MARKER[i] =’5 ‘ THEN K5:=K5+1;

IF Y.MARKER[i] =’4 ‘ THEN K4:=K4+1;

END;

S:=10.0; N:=N+1;

IF K5=5 THEN S:=15.0;

IF (K5>2)AND(K4<=2) THEN S:=12.5;Writeln(n,Y.FAM:20,’ s=’,s5:2);

END;CLOSE(SESSYA);WRITELN(‘КОНЕЦ ФАЙЛА’);

END.

Таблиця 10.

варіанта

аn

k

x

варіанта

аn

k

x

1

(xln3)n

n!

0

0,25

16

Cos(2nx)

4n2-1

0

0,28

2

(-1)n-1 sin(nx)

n

1

0,83

17

X4n+1

4n+1

0

0,38

3.

n2

----------------- xn

(2n+1)!

1

0,37

18

N2+1

____ (x/2)n

n!

0

0,47

4

cos(nx/2)

n!

0

0,54

19

sin(2n-1)x

2n-1

1

1,04

5

x2n

(-1)n ---------

(2n)!

0

0,41

20

(2x)n

n!

1

0,46

6

cos(nx)

(-1)-----------

n2

1

1,25

21

2n2+1

(-1)n-----x2n

(2n)!

0

0,91

7

n 2n-1

(-1)--------x2n

(2n)!

0

0,75

22

(1-x)n

(-1)n ------

n!

0

0,43

8

x2n+1

(-1)n+1-----------

4n2-1

1

0,58

23

cos(2n-1)x

(2n-1)2

1

1,32

9

(1+x)2n

(-1)n-----------

n

1

-1,34

24

n

(-1)n---sin(nx)

n2-1

2

-0,44

10

x2n

(-1)n+1-----------

2n(2n-1)

1

0,45

25

(2x)n

(-1)n+1-------

n3

1

-0,25

11

cos(nx)

n!

0

0,77

26

n+1

---------- xn

n!

0

1,55

12

(2x)2n

(-1)n-----------

(2n)!

1

0,34

27

n+1

(-1)n------- xn

n2+2

0

0,88

13

x2n-1

(-1)n-1----------

2n-1

1

0,65

28

n2

------- xn

(n+1)!

1

0,51

14

xn

n!

1

1,12

29

xn

(-1)n-------

2n+3

1

1,04

15

2n+1

-------- x2n

n!

0

0,52

30

xn

(-1)т-------

(n!)2

1

0,72

Таблиця 2.Варіанти завдань.

  1. Роздрукувати анкетні дані студентів - вдмінників.

  2. Роздрукувати анкетні данні студентів які навчаються на 4 і 5.

  3. Роздрукувати анкетні дані студентів які мають одну оцінку 3.

  4. Роздрукувати анкетні дані студентів як отримали за останній екзамен 2.

  5. Роздрукувати анкетні дані студентів які отримали за перший екзамен оцін-

ку 5.

Роздрукувати анкетні дані студентів які отримали одну оцінку 4, а всі інші 5.

  1. Роздрукувати анкетні список студентів прізвище яких починається на літе-

ру А, і їх оцінки.

8. Роздрукувати анкетні список студентів прізвище яких починається на літе-

ру Б, і їх дати народження.

Роздрукувати оцінки студентів прізвища яких починаються з літер В і Г.

Роздрукувати прізвище і дату народженя студентів які не отримали жодної оцінки 3.

Обчислити середній бал групи і роздрукувати список студентів які мають середній бал більше середнього балу групи.

Обчислити середній бал групи і роздрукувати список студентів які мають середній бал менше середнього балу групи.

Роздрукувати список студентів впорядкований по алфавіту.

  1. Роздрукувати список студентів впорядкований по році народження.

Роздрукувати список студентів впорядкований по даті народження.