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

МIНIСТЕРСТВО ОСВIТИ УКРАЄНИ

Iвано-Франкiвський державний технiчний унiверситет нафти I газу

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

з програмування мовою Сi

для студентiв спецiальностi 7.091401-АУ

МВ ИГАЦ-65-96

Всi цитати, цифровий i фактичний

матерiал, бiблiографiчнi вiдомостi

перевiренi, написання одиниць

вiдповiдаї стандартам.

Зауваження рецензентiв врахованi.

Клим Б.В. Затверджено

Крихiвський М.В. на засiданнi кафедри

прикладноє математики.

Протокол N 11/40

вiд 19 червня 1996 р.

м. Iвано-Франкiвськ

1996

Лабораторний практикум складений у вiдповiдностi з дiючими в

Iвано-Франкiвському державному технiчному унiверситетi нафти i

газу навчальним планом i програмою курсу "Програмування i обчи-

слювальнi методи" для студентiв спецiальностi 7.091401 - автома-

тизоване управлiння в технiчних та органiзацiйних системах.

До практикуму входить загальна теоретична частина та 9 робiт з

програмування мовою Сi, в кожнiй з яких приводяться короткi тео-

ретичнi вiдомостi, приклад програми для виконання роботи на ЕОМ

та запитання для самоперевiрки.

Склали: доцент, канд. техн. наук Клим Б.В.,

асистент Крихiвський М.В.

Вiдповiдальний за випуск зав. кафедрою,

доцент, канд. техн. наук Юрчишин В.М.

Ухвалено на засiданнi навчально-методичного об'їднанням

спецiальностi 7.091401, протокол N 12 вiд 28 червня 1996 р.

Голова метоб'їднання Л.М. Замiховський

спецiальностi 7.091401

Нормоконтролер О.Г. Гургула

Лiткоректор Н.Ф. Будуйкевич

Заключення члена експертно-рецензiйноє комiсiє унiверситету:

Лабораторний практикум рекомендований до друку.

03 липня 1996 р. В.А. Ожоган

З М I С Т стор.

Вступ ____________________________________________________ 5

1. Алфавiт мови ____________________________________________ 6

2. Константи _______________________________________________ 7

3. Простi змiннi ___________________________________________ 8

4. Оголошення даних ________________________________________ 8

4.1. Базовi типи даних _____________________________________ 9

4.2. Класи пам'ятi _________________________________________ 9

4.3. Модифiкатоpи __________________________________________ 10

5. Бiблiотека стандартних функцiй __________________________ 12

6. Опеpацiє ________________________________________________ 14

7. Виpази __________________________________________________ 14

8. Опеpатоpи _______________________________________________ 15

9. Структура програми, директиви препроцесору ______________ 16

10. Порядок виконання лабораторних робiт ____________________ 17

11. Лабораторна робота N 1. Лiнiйнi програми ________________ 18

11.1. Короткi теоретичнi вiдомостi __________________________ 18

11.2. Приклад програми ______________________________________ 19

11.3. Запитання для самоперевiрки ___________________________ 21

12. Лабораторна робота N 2. Розгалуженi програми ____________ 22

12.1. Короткi теоретичнi вiдомостi __________________________ 22

12.2. Приклад програми ______________________________________ 23

12.3. Запитання для самоперевiрки ___________________________ 28

13. Лабораторна робота N 3. Циклiчнi програми _______________ 29

13.1. Короткi теоретичнi вiдомостi __________________________ 29

13.2. Приклад програми ______________________________________ 30

13.3. Запитання для самоперевiрки ___________________________ 32

14. Лабораторна робота N 4. Циклiчнi iтерацiйнi програми ____ 33

14.1. Короткi теоретичнi вiдомостi __________________________ 33

14.2. Приклад програми ______________________________________ 34

3

14.3. Запитання для самоперевiрки ___________________________ 36

15. Лабораторна робота N 5. Накопичення суми i добутку ______ 37

15.1. Короткi теоретичнi вiдомостi __________________________ 37

15.2. Приклад програми ______________________________________ 38

15.3. Запитання для самоперевiрки ___________________________ 39

16. Лабораторна робота N 6. Обробка масивiв даних ___________ 40

16.1. Короткi теоретичнi вiдомостi __________________________ 40

16.2. Приклад програми ______________________________________ 41

16.3. Запитання для самоперевiрки ___________________________ 43

17. Лабораторна робота N 7. Процедура-функцiя _______________ 43

17.1. Короткi теоретичнi вiдомостi __________________________ 43

17.2. Приклад програми ______________________________________ 45

17.3. Запитання для самоперевiрки ___________________________ 47

18. Лабораторна робота N 8. Файли ___________________________ 48

18.1. Короткi теоретичнi вiдомостi __________________________ 48

18.2. Приклад програми ______________________________________ 50

18.3. Запитання для самоперевiрки ___________________________ 55

19. Лабораторна робота N 9. Виконання графiчних робiт _______ 56

19.1. Короткi теоретичнi вiдомостi __________________________ 56

19.2. Приклад програми ______________________________________ 58

19.3. Запитання для самоперевiрки ___________________________ 61

Використана лiтература ___________________________________ 61

4

ВСТУП.

Мова Сi розроблена в 1970 р. фiрмою Bell Laboratories (США),

головне єє призначення - забезпечити програмiста мовними засоба-

ми, якi об'їднують можливостi асемблера i мов високого рiвня. В

зв'язку з цим Сi володiї рядом особливостей:

- маї повний набiр конструкцiй структурного програмування, мо-

дульнiсть, блочну структуру програм, роздiльну компiляцiю;

- наявнi розвиненi засоби побудови складених об'їктiв: масивiв,

структур, об'їднань, даних перерахункового типу;

- реалiзованi деякi операцiє низького рiвня, операцiє над бiтами;

- базовi типи даних вiдображають байти, машиннi слова, символи -

об'їкти обробки мовою асемблер;

- маї механiзм вказувачiв на змiннi i функцiє, що дозволяї пра-

цювати безпосередньо з адресами пам'ятi;

- можливiсть пiдвищення ефективностi програм з-за вiдсутностi

жорстких обмежень на перетворення типiв даних;

- можливiсть широкого пiдключення стандартних функцiй, що робить

версiю мови незалежною вiд реалiзацiє операцiйноє системи i

архiтектури комп'ютера.

Мова Сi маї широке застосування, особливо в розробцi системних

програм. Зараз розповсюдженi десятки версiй мови. Лабораторний

практикум дотримуїться єє стандарту, затвердженого Американським

Нацiональним Iнститутом Стандартiв i опублiкованого в 1986 роцi,

та Turbo C версiє 2.0 фiрми Borland International.

5

1. АЛФАВIТ МОВИ

До алфавiту належать:

- латинськi букви великi i малi: a,b,c,...,z,A,B,C,...,Z;

- десятковi цифри вiд 0 до 9;

- пробiльнi символи (пробiл, табуляцiя, перевiд рядка i iн.).

В текстi вони позначаються з допомогою спецiальних символiв,

наприклад: \n - новий рядок, \t - горизонтальна табуляцiя;

- роздiлювачi, вони показанi в таблицi 1.

Таблиця 1

┌──────┬───────────────────────┬──────┬──────────────────────┐

│Символ│ Назва символа │Символ│ Назва символа │

├──────┼───────────────────────┼──────┼──────────────────────┤

│ , │ кома │ ! │ знак оклику │

│ . │ крапка │ | │ вертикальна риска │

│ : │ двокрапка │ / │ слеш │

│ ; │ крапка з комою │ \ │ зворотнiй слеш │

│ ? │ знак запитання │ ~ │ тiльда │

│ ' │ апостроф │ _ │ пiдкреслення │

│ @ │ знак долара │ " │ лапки │

│ ( │ лiва кругла дужка │ # │ знак номера │

│ ) │ права кругла дужка │ % │ процент │

│ { │ лiва фiгурна дужка │ & │ амперсанд │

│ } │ права фiгурна дужка │ ^ │ стрiлка вверх │

│ [ │ лiва квадратна дужка │ - │ мiнус │

│ ] │ права квадратна дужка │ + │ плюс │

│ < │ менше │ = │ дорiвнюї │

│ > │ бiльше │ * │ зiрочка (множення) │

└──────┴───────────────────────┴──────┴──────────────────────┘

6

2. КОНСТАНТИ

Константи подiляються на числа (цiлi або з плаваючою крапкою),

символьнi (одиночний символ, лiтера) та рядковi (рядок символiв).

Цiлi константи ї вiсiмковi, десятковi i шiстнадцятковi. Вони

утворюються з десяткових цифр та букв: А, B, C, D, E, F. Для єх

розрiзняння вiсiмкова константа доповнюїться зпереду символом

0 (нуль), шiстнадцяткова - 0X (нуль iкс). Кожна константа займаї

об'їм пам'тi, потрiбний для єє зберiгання (int або unsigned int -

2 байти, long або unsigned long - 4 байти). Цю пам'ять можна роз-

ширити з допомогою букв U (unsigned) та L (long), якi ставляться

вкiнцi константи. Приклади цiлих констант:

11 - десяткова, 11 десяткових одиниць, займаї 2 байти;

11L- десяткова, 11 десяткових одиниць, займаї 4 байти;

017 - вiсiмкова, 15 десяткових одиниць, займаї 2 байти;

0X2C - шiстнадцяткова, 44 десятковi одиницi, займаї 2 байти.

Константи з плаваючою крапкою ї дiйсними десятковими числами.

Вони складаються з цiлоє i дробовоє частин, роздiлених крапкою,

та експоненти. Приклади констант з плаваючою крапкою: 12.75, 7.2,

3.48Е3, 154.0, 154., 154, 154Е0, 0.025, .025, 25Е-3. В трьох ос-

таннiх прикладах та в чотирьох, якi розмiщенi перед ними, конста-

нти представляють одне i те саме дiйсне десяткове число, вони

вiдрiзняються мiж собою лише формою написання.

Символьна константа - це символ, взятий в апострофи, наприк-

лад: 'А', '*'.. Значення символьноє константи дорiвнюї кодовi

символу, який вона представляї. Ї константи, якi складаються з

двох лiтер, наприклад, '\'' - апостроф, '\n' - новий рядок.

Символьний рядок - це послiдовнiсть символiв, взятих в лапки.

Ознакою кiнця рядка символiв ї нуль ('\0'), який добавляїться до

нього пiд час компiляцiє. Приклад задання рядка: "FяП#%".

7

3. ПРОСТI ЗМIННI

Змiннi можуть приймати значення констант вiдповiдного типу.

Iм'я змiнноє позначаїться з допомогою iдентифiкатора, який пред-

ставляї собою набiр букв латини, цифр i символа пiдкреслення.

Iм'я може мати довжину до 32 символiв, i повинно починатися з

букви. Приклади iмен змiнних: a, A, syla_strumu, x1, aa23c.

4. ОГОЛОШЕННЯ ДАНИХ

Даними в Сi вважаються: константи, простi змiннi, масиви,

структури, об'їднання, вказувачi, типи i теги.

Тип кожного об'їкта даних, який ї в програмi, повинен бути яв-

но оголошеним за допомогою спецiальних описувачiв. Описувачi ви-

значають базовий тип даного, клас пам'ятi та модифiкатор. Оголо-

шення можна виконати на внутрiшньому рiвнi (блок) або на зовнiш-

ньому (програмний модуль).

4.1. Базовi типи даних

Вiд базового типу даних залежить об'їм пам'ятi, який вони зай-

мають. Якщо вiн явно не вказаний в оголошеннi, то маїться на ува-

зi int. Специфiкатори базових типiв показанi в таблицi 2.

Приклади застосування в оголошеннях: int k,j; long double x1;

4.2. Класи пам'ятi

Мова Сi передбачаї використання таких специфiкаторiв класiв

пам'ятi для оголошення даних: extern, static, auto i register.

Специфiкатори static i extern застосовуються на зовнiшньому (в

8

Таблиця 2

┌──────────────────┬──────────────────────────┬─────────────────┐

│ Тип │ Назва типу │ Об'їм пам'ятi │

├──────────────────┼──────────────────────────┼─────────────────┤

│ char │ Символьний │ 1 байт │

│ int │ Цiлий │ 2 байти │

│ short │ Cкорочений │ 2 байти │

│ long │ Подовжений │ 4 байти │

│ unsigned │ Беззнаковий │ 2 байти │

│ unsigned char │ Беззнаковий символьний │ 1 байт │

│ unsigned short │ Беззнаковий короткий │ 2 байти │

│ unsigned long │ Беззнаковий довгий │ 4 байти │

│ float │ Плаваючий │ 4 байти │

│ double │ Подвiйний │ 8 байтiв │

│ long double │ Подвiйний довгий │ 10 байтiв │

└──────────────────┴──────────────────────────┴─────────────────┘

окремому модулi, файлi) або внутрiшньому (в блоцi) рiвнi, auto