М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