Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Posibnik_Pascal

.pdf
Скачиваний:
75
Добавлен:
17.02.2016
Размер:
1.49 Mб
Скачать

Міністерство освіти і науки України Кіровоградський державний педагогічний університет імені Володимира Винниченка

С.Д.Паращук З.М.Троценко

ПРОГРАМУВАННЯ МОВОЮ ПАСКАЛЬ

ЛАБОРАТОРНИЙ ПРАКТИКУМ

Навчальний посібник для студентів вищих закладів освіти

Кіровоград - 2008

ББК 32.973 П18

УДК 6Ф7.3

Рецензенти:

С.І.Алексєєва, кандидат фізико-математичних наук, доцент кафедри інформатики Кіровоградського державного педагогічного університету імені Володимира Винниченка

В.В.Котяк, старший викладач кафедри інформатики Кіровоградського державного педагогічного університету імені Володимира Винниченка

Рекомендовано методичною радою Кіровоградського державного педагогічного університету імені Володимира Винниченка (протокол №5 від 23 січня 2008 року)

Паращук С.Д., Троценко З.М.

Програмування мовою Паскаль. Лабораторний практикум: Навчальний посібник. – Кіровоград: ПП «Центр оперативної поліграфії «Авангард», 2008. – 159 с.

Мета посібника – розвиток навичок алгоритмізації та програмування мовою Паскаль, формування умінь розробляти алгоритми та створювати, редагувати і налагоджувати програми.

У посібнику подані матеріали для проведення лабораторних занять, що охоплюють усі розділи з основ програмування. Кожна лабораторна робота містить короткі теоретичні відомості, зразки створення алгоритмів і програм, завдання для індивідуальної роботи.

Посібник призначений для студентів, які навчаються за спеціальністю чи спеціалізацією «Інформатика»

© С.Д.Паращук, З.М.Троценко

2

Зміст

 

Передмова ................................................................................................................

4

Тема: Лінійні програми........................................................................................

5

Тема: Умовні оператори ....................................................................................

10

Тема: Цикли ........................................................................................................

17

Тема: Типи користувача.....................................................................................

24

Тема: Процедури і функції................................................................................

30

Тема: Одновимірні масиви................................................................................

37

Тема: Багатовимірні масиви. Матриці .............................................................

41

Тема: Робота з рядками......................................................................................

46

Тема: Множини...................................................................................................

50

Тема: Записи........................................................................................................

55

Тема: Текстові файли........................................................................................

60

Тема: Типізовані файли ....................................................................................

66

Тема: Рекурсія....................................................................................................

71

Тема: Сортування..............................................................................................

75

Тема: Пошук.......................................................................................................

87

Тема: Однозв’язні лінійні списки. ...................................................................

92

Тема: Стеки......................................................................................................

101

Тема: Черги ......................................................................................................

108

Тема: Двозв’язні лінійні списки.....................................................................

114

Тема: Двійкові дерева .....................................................................................

125

Тема: Модуль Graph. Створення графічних зображень...............................

136

Тема: Модулі користувача..............................................................................

154

ЛІТЕРАТУРА.......................................................................................................

159

Передмова

Мова програмування Паскаль є одною з кращих мов для навчання основам програмування. Вона є простою для вивчення і має всі засоби, що притаманні сучасним мовам програмування. Програма мови Паскаль має чітку регламентовану структуру. Окрім того, мова є типізованою, містить виразні засоби структурного програмування, орієнтована на обробку різного виду інформації.

Навчальний посібник містить повний цикл лабораторних робіт із основ програмування, орієнтованих на інтегроване середовище програмування Turbo Pascal 7.0 (Borland Pascal). Ці роботи, за виключенням декількох останніх, можна також виконувати в інших середовищах, що підтримують мову Паскаль. Весь цикл робіт охоплює наступні розділи програмування: оператори, структуровані типи даних, динамічне програмування і динамічні структури даних, модулі.

Кожна робота розпочинається з коротких теоретичних відомостей. Тут зібрані основні факти, що необхідні для написання програм. Однак студенти повинні володіти теоретичним матеріалом у повному обсязі при складанні звітів із виконаних завдань. Далі у роботі містяться приклади розв’язання задач. Майже у всіх прикладах наводиться їх аналіз. Приклад завершується текстом програми. Ці приклади можуть слугувати зразками студентам для виконання індивідуальних завдань. У текстах програм наводиться достатня кількість коментарів, які пояснюють призначення відповідних конструкцій програм і розкривають алгоритм розв’язання задач.

Основними в лабораторній роботі є завдання для індивідуального виконання. Вони розбиті на два рівні – основний та підвищений. Завдання основного рівня є нескладними і в основному охоплюють клас базових задач із відповідної теми. Завдання підвищеного рівня розраховані на студентів з високим рівнем знань. У деяких роботах також є додаткові задачі. Їх розв’язання, зазвичай, вимагає додаткових знань і розробки ефективних алгоритмів.

Навчальний посібник орієнтований на різні форми організації роботи. Деяку частину індивідуальних завдань можна внести до обов’язкового обсягу, яка контролюється викладачем під час аудиторних занять. Іншу частину завдань можна винести на самостійне опрацювання. Серед додаткових задач можна вибрати такі, які вимагають розробки індивідуального проекту та завершеного програмного продукту. Ці задачі можна рекомендувати як початковий етап майбутнього курсового проекту.

4

Лабораторна робота № 1

Тема: Лінійні програми

Студент повинен знати: структуру програми, прості числові типи даних та операції над цими даними, синтаксис процедур введення-виведення, синтаксис і семантику оператора присвоювання, стандартні функції для числових типів даних.

Теоретичні відомості

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

Синтаксис оператора присвоювання <ім’я змінної>:=<вираз>;

Синтаксис оператора виклику процедури <ім’я процедури>(<список фактичних параметрів>);

У мові Паскаль введення-виведення даних у програмі реалізоване за допомогою виклику стандартних процедур:

read(<список змінних>) – введення даних із клавіатури; readln(<список змінних>) – введення даних із клавіатури; write(<список виразів>) – виведення даних на екран; writeln(<список виразів>) – виведення даних на екран;

Якщо список змінних (виразів) складається з декількох змінних (виразів), то змінні (вирази) розділяються комами. Простими виразами є константи, змінні, виклики функцій. Арифметичні вирази утворюються із простих виразів числових типів даних за допомогою арифметичних операцій та, можливо, круглих дужок. Круглі дужки змінюють пріоритет операцій. У арифметичних виразах часто зустрічаються виклики стандартних арифметичних функцій. Система Turbo Pascal 7.0 містить наступні стандартні арифметичні функції для дійсних типів даних:

abs(x) – обчислення модуля х; sqr(x) – обчислення х2;

sqrt(x) – обчислення квадратного кореня; ln(x) – обчислення натурального логарифма; exp(x) – обчислення ex;

pi – обчислення значення числа π;

sin(x) – обчислення синуса кута х, заданого в радіанах; cos(x) – обчислення косинуса кута х, заданого в радіанах;

arctan(x) – обчислення арктангенса кута х, заданого в радіанах;; frac(x) – обчислення дробової чистини х;

trunc(x) – обчислення цілої частини х шляхом відкидання дробової; round(x) – округлення числа х до найближчого цілого.

Для обчислення інших арифметичних функцій, що не підтримуються системою Turbo Pascal 7.0, можна скористатися наступними тотожностями:

tg x =

sin x

;

 

 

 

 

 

ctg x =

cos x

;

 

 

 

 

 

 

 

 

 

sin x

 

 

 

 

cos x

 

 

 

 

 

 

 

 

 

 

 

arcsin x = arctg

 

 

x

, 0

x <1;

arccos x = arctg

1x2

, 0 < x 1

;

1

x2

x

 

 

 

 

 

 

 

ln x

 

 

 

 

arcctg x = arctg

1

 

, x 0 ;

 

loga x =

 

, a > 0, a 1, x > 0 ;

 

x

 

ln a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a x = ex ln a , a > 0, a 1;

 

 

x y = e y ln x , x > 0, x 1.

 

 

5

Структура Паскаль-програми така:

program

{заголовок програми}

{$ }

{розділ директив компілятора}

uses

{розділ підключення модулів}

const

{розділ оголошення констант}

label

{розділ оголошення міток}

type

{розділ оголошення типів}

var

{розділ оголошення змінних}

procedure

{розділ оголошення процедур}

function

{розділ оголошення функцій}

begin

{розділ операторів}

end.

Декларативна частина програми передує операторній і складається з розділів, кожен з яких починається певним ключовим словом. Операторна частина розпочинається ключовим словом begin і завершується ключовим словом end. (з крапкою). Усі розділи декларативної частини є необов’язковими, та при створенні програми обираються ті з них, які необхідні.

Приклад

Дано площу круга. Знайти сторону правильного трикутника, вписаного в коло.

Аналіз задачі

Площа круга обчислюється за формулою S = π * R2 , а сторона правильного трикутника, вписаного в коло, дорівнює a = R * 3 . Отже, з першої формули треба обчислити R = S /π і підставити результат у другу формулу.

Алгоритм очевидний і наведений в тексті програми.

Program storona;

{заголовок програми}

Var S,R,a:real;

{оголошення змінних S,R,a}

Begin

 

Writeln(‘Введіть площу круга S=’);

{виведення тексту-підказки на екран}

Readln(S);

{введення з клавіатури змінної S}

R:=sqrt(S/pi);

{обчислення радіуса R кола}

a:=R*(sqrt(3));

{обчислення сторони a}

Writeln(‘Сторона трикутника=’,a);

{виведення значення сторони a}

End.

 

Завдання для виконання

Основний рівень

1.Дано сторони трикутника. Обчислити його площу.

2.Дано висоту та радіус основи конуса. Обчислити його об’єм.

3.Дано площу повної поверхні та радіус основи циліндра. Обчислити його висоту.

4.Дано дві сторони трикутника та кут між ними (в градусах). Обчислити площу трикутника.

5.Дано сторони трикутника. Знайти його висоти.

6.Дано сторону ромба та гострий кут між сторонами (в градусах). Знайти площу ромба.

7.Дано основи та висоту трапеції. Знайти її площу.

8.Дано висоту та сторону основи правильної чотирикутної піраміди. Обчислити її об’єм.

9.Дано висоту та сторону основи правильної трикутної призми. Обчислити її об’єм.

10.Дано сторони трикутника. Знайти його медіани.

11.Дано сторони трикутника. Знайти його бісектриси.

12.Дано радіус кола. Знайти площу квадрата, вписаного у коло.

13.Дано площу основи та висоту циліндра. Обчислити його об’єм.

6

14.Дано висоту та сторону основи правильної чотирикутної піраміди. Обчислити площу її бічної поверхні.

15.Дано радіус кулі. Обчислити об’єм кульового сегмента, якщо відома його висота.

Підвищений рівень

A

1.Визначити h – повну кількість годин та m – повну кількість хвилин від початку доби до того моменту (у першій половині доби), коли стрілка, що показує години, повернулася на f градусів (0<=f<360, f – ціле число).

2.Присвоїти цілій змінній d першу цифру із дробової частини додатного дійсного числа x (наприклад, якщо x=32.597, то d=5).

3.Нехай k – ціле число днів від 1 до 365. Присвоїти цілій змінній n значення 1,2,…,6 або 7 у залежності від того, на який день тижня (понеділок, вівторок, …, суботу або неділю) припадає k-й день невисокосного року, у якому 1 січня – це понеділок.

4.Цілій змінній s присвоїти суму цифр тризначного цілого числа k.

5.Дано ціле п’ятизначне число. Підрахувати суму цифр, які стоять на парних позиціях в числі, та добуток цифр, які стоять на непарних позиціях.

6.Два моменти часу однієї доби виражено годинами h1, h2 та хвилинами m1, m2 відповідно. Причому перший момент часу передує другому. Визначити інтервал часу у годинах та хвилинах між цими двома моментами.Триває k-та секунда доби. Визначити, скільки повних годин (h) та хвилин (m) пройшло до цього моменту (наприклад, якщо k=13257=3*3600+40*60+57, то h=3, m=40).

8.Паралелограм ABCD заданий координатами трьох його вершин:A(x1,y1), B(x2,y2), C(x3,y3). Знайти довжини сторін та площу паралелограма.

9.Вартість товару n гривень. Яку найменшу кількість банкнот по 20, 10 та 1 гривні треба витратити на купівлю товару?

10.Визначити f – кут (у градусах) між положенням годинної стрілки на початку доби та її положенням у h годин, m хвилин та s секунд (0<=h<=11, 0<=m,s<=59).

11.Пляшка води коштує 45 копійок. Порожні пляшки здають по 20 копійок, і на отримані гроші знову купують воду. Яку найбільшу кількість пляшок води можна купити за S копійок?

12.Визначити номери під’їзду та поверху за номером квартири дев’ятиповерхового будинку, якщо на кожному поверсі рівно 4 квартири, а нумерація квартир починається з першого під’їзду.

13.Визначити нормальну вагу людини та індекс маси її тіла за формулами: h·t/240 та m/h2, де h – зріст людини (у сантиметрах для першої формули та у метрах – для другої); t – довжина обхвату грудей (в см); m – вага (у кг). Індекс маси тіла прийнятий Всесвітньою організацією охорони здоров’я. Він не повинен перевищувати 25 пунктів.

14.Дано цілі числа m, n (0<m<=12, 0<n<=60), що вказують момент часу: “m годин, n хвилин”. Визначити найменший час (кількість повних хвилин), через який годинна та хвилинна стрілки на циферблаті співпадуть.

15.Дано коефіцієнти та вільні члени системи лінійних рівнянь

a1 x + b1 y = c1 .a2 x + b2 y = c2

Знайти розв’язок системи за умови, що визначник системи не дорівнює нулю.

7

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

5 log2

 

x + sin x

 

 

 

1.

Дано число x>0. Обчислити

y =

 

3.2

 

 

.

 

 

 

 

 

x = 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.

 

 

 

3

arcctg x lg x 2 + x3

 

 

Дано число x 0 . Обчислити y =

 

 

 

x +

4

.

 

 

 

 

 

 

 

 

 

 

 

 

 

3.

Дано числа x, y. Обчислити

z =

4 x + y +8

sin 2

(x + y + 8)

.

 

 

2 + cos

3 (x + y + 8)

 

 

 

 

 

 

 

 

4.

Дано число x, 0<=x<1. Обчислити y =

arcsin x

+ log3

(x 2 + 3x + 2)

.

 

 

 

e x 2 +3x+2

 

 

 

 

 

 

 

 

 

 

5.

Дано число x. Обчислити y =

3 + sin 2 (8x 4

+ 3)

+ 88x 4 +3 .

 

4 + cos2 (8x 4

+ 3)

 

 

 

 

 

 

 

 

6.Дано число x, 0<=x<1. Обчислити y = arcsin x + arccos x + arctg x .

x2 + 3x + 4

7.Дано додатні числа x, y. Обчислити z = 3x 4y + e8x + ysin x xcos y .

8.

Дано числа x, y. Обчислити z =

3 sin x 4 e x+ y

.

 

 

 

 

 

 

 

 

 

 

 

2 xy

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.

Дано число x. Обчислити y = log4 (2 x + 3x + 4 x ) sin 3 (x3

+ 3) .

 

 

 

 

10.

Дано число x, 0<x<1. Обчислити y =

x + arcsin x + 5 arcctg x .

 

 

 

 

 

 

 

 

 

2 + arccos x

 

 

 

 

 

 

 

 

 

 

11.

Дано число x. Обчислити y =

 

sin 2 (x3 + 3x 2 + 4x + 5)

 

+

 

x

3

+ 3x

2

+ 4x +10

 

.

 

 

 

 

 

+ cos

2 (x3 + 3x 2 + 4x +

 

 

 

 

 

 

2

8)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12.

Дано додатні числа x, y. Обчислити z = (x + 4)3y 2 + lg(x3 + y3) 6 x3 + y3 .

13.

Дано додатне число x. Обчислити

y =

(8x + 4)2x +1

5 3x

2 + 4x + 5

.

2 x +4

 

 

 

 

 

 

 

 

 

 

 

 

14.

 

 

5 sin 2 (3x +

4y)

+

6

4

3x +4y

.

Дано додатні числа x, y. Обчислити z =

 

 

 

 

 

 

33x+4y

 

 

 

 

 

 

15. Дано додатні числа x, y. Обчислити z = 3xy 4 x y + tg(x + y)

Питання для самоконтролю

1.З яких символів складається алфавіт мови Паскаль?

2.Яка структура програми мови Паскаль?

3.Який із розділів є обов’язковим для кожної програми?

4.Які з наступних послідовностей символів є ідентифікаторами (іменами) змінних?

а) x

б) x1

c) x’

д) x1x2

e) abcd

ж) sin

з) a-1

к) об’єм

5.Які типи даних мови Паскаль ви знаєте?

6.Синтаксис та семантика оператора присвоювання.

8

7. Які з наступних послідовностей символів є операторами присвоювання:

a) a:=b

г) a*x+b:=0

ж) z:=z+1,2

б) a=c+1

д) z:=0

з) z:=z+1

в) a:b-sqr(2)

е) y:=y

к) –y:=y

8.Яка відмінність у роботі операторів read i readln, write i writeln?

9.Відкомпілювати та запустити програму на виконання.

10.Записати на диск свою програму.

11.Зчитати свою програму з диску.

9

Лабораторна робота № 2

Тема: Умовні оператори

Студент повинен знати: структуру програми, прості числові типи даних, синтаксис і семантику умовного оператора та оператора вибору (варіанту).

 

Теоретичні відомості

 

 

У мові Паскаль базова алгоритмічна структура розгалуження реалізується за

допомогою умовного оператора IF. Його синтаксис такий:

 

 

if <умова> then <оператор1> else <оператор2>

(1)

або

if <умова> then <оператор>

(2)

Оператор (1) реалізує повне розгалуження, а (2) – неповне. Слова if, then, else є службовими і перекладаються «якщо, то, інакше». <умова> - вираз булевого типу, який може приймати два значення true або false. Кожний із операторів <оператор1>, <оператор2> чи <оператор> повинен сприйматися як один оператор.

Синтаксис оператора вибору має вигляд: case <вираз> of

<список 1> : <оператор 1>; <список 2> : <оператор 2>;

…………………………….

<список k> : <оператор k> else <оператор k+1>

end;

або

case <вираз> of

<список 1> : <оператор 1>; <список 2> : <оператор 2>;

…………………………….

<список k> : <оператор k> end;

Перший варіант оператора вибору задає його повну форму, а другий – неповну. <вираз> називається виразом-селектором, і його тип може бути будь-яким простим типом, крім дійсного. <список 1>, …, <список k> - списки констант того ж типу, що і тип виразу. Кожний із операторів <оператор i> повинен сприйматися як один оператор.

Приклади

1. Дано три дійсні додатні числа. Визначити, чи можна побудувати трикутник з такими довжинами сторін.

Аналіз задачі

Трикутник можна побудувати за трьома відрізками a, b, c, якщо одночасно виконуються нерівності a+b>c, a+c>b, b+c>a – умови існування трикутника.

Алгоритм очевидний і наведений в тексті програми.

Program trukytnik;

 

Var a,b,c: real;

{сторони трикутника}

Begin

 

Writeln(‘Введіть 3 додатніх числа:’);

 

Readln(a,b,c);

 

If (a<b+c) and (b<a+c) and (c<a+b) then

{перевірка існування трикутника}

Writeln(‘Трикутник можна побудувати’)

 

else

 

Writeln(‘Трикутник побудувати неможливо’);

 

End.

 

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]