Professional Documents
Culture Documents
Exam
Exam
Exam
1.Мова С як мова програмування високого рівня. Структурне та об’єктно-орієнтоване програмування. Переваги та недоліки.................................................................................2
2.Структура програми мовою С. Етапи створення та виконання програми............................................................................................................................................................................. 4
3.Алфавіт і лексеми мови С. Коментарі............................................................................................................................................................................................................................................ 5
4.Склад мови С. Константи та змінні С............................................................................................................................................................................................................................................ 6
5.Керуючі послідовності мови С......................................................................................................................................................................................................................................................... 9
6.Типи даних у С.................................................................................................................................................................................................................................................................................. 10
7.Сумісність типів. Перетворення типів......................................................................................................................................................................................................................................... 11
8.Перелічувальний тип....................................................................................................................................................................................................................................................................... 12
9.Приведення типів............................................................................................................................................................................................................................................................................. 13
10.Перейменування типів (typedef).................................................................................................................................................................................................................................................. 15
11.Оголошення і визначення............................................................................................................................................................................................................................................................. 16
12.Змінні. Описання змінних. Ініціалізація. Область дії і клас пам’яті.................................................................................................................................................................................... 17
13.Ліводопустимі вирази. Структура програми............................................................................................................................................................................................................................ 19
14.Базові конструкції мови С. Оператор «вираз», складений оператор (блок), пустий оператор........................................................................................................................................20
15.Операції. Позначення операцій. Пріоритет операцій.............................................................................................................................................................................................................. 21
16. Оператори: пустий, складений, оператор-вираз, умовний оператор if............................................................................................................................................................................... 23
17.Оператор-перемикач switch.......................................................................................................................................................................................................................................................... 24
18.Оператори повтору С. Цикл з передумовою............................................................................................................................................................................................................................. 25
19. Оператори повтору С. Цикл з післяумовою............................................................................................................................................................................................................................. 26
20. Оператори повтору С. Цикл з лічильником............................................................................................................................................................................................................................. 27
21.Оператори керування ходом програми: goto, break, continue, return................................................................................................................................................................................... 28
22.Одновимірні масиви. Описання, ініціалізація, операції над масивами............................................................................................................................................................................... 29
23.Двовимірні масиви. Описання, ініціалізація, операції над масивами.................................................................................................................................................................................. 30
24.Функції в С. Призначення, описання функцій. Виклик функцій......................................................................................................................................................................................... 31
25.Формальні і фактичні параметри, передача параметрів за адресою і за значенням......................................................................................................................................................... 32
26.Прототипи функції......................................................................................................................................................................................................................................................................... 33
27.Передача багатовимірних масивів в функції............................................................................................................................................................................................................................ 34
28.Передача масивів і рядків у функції........................................................................................................................................................................................................................................... 35
29.Глобальні та локальні імена. Класи пам’яті, область видимості, тривалість існування................................................................................................................................................. 36
30.Символи та рядки. Операції над рядками. Функції для роботи з рядками......................................................................................................................................................................... 38
31. Функції вводу-виводу в мові С. Форматний вивід.................................................................................................................................................................................................................. 41
32.Структура як тип і сукупність даних. Операції над структурами. Бітові поля.................................................................................................................................................................. 43
33.Об’єднання як тип даних.............................................................................................................................................................................................................................................................. 45
34.Графічні можливості С.................................................................................................................................................................................................................................................................. 46
35.Директиви препроцесора. Вказівки компілятору.................................................................................................................................................................................................................... 47
1.Мова С як мова програмування високого рівня. Структурне та об’єктно-орієнтоване програмування. Переваги та недоліки
С – це мова програмування загального призначення, що не є мовою Структурне програмування - парадигма програмування, в основі
дуже високого рівня і не призначена для певної області застосування. якої лежить уявлення програми у вигляді ієрархічної структури
Але відсутність в ній обмежень та її загальність роблять її зручнішою блоків. Для передачі управління використовуються три конструкції:
і ефектівнішою для багатьох завдань, у порівнянні з мовами, що • послідовне виконання — одноразове виконання операції в порядку
вважаються потужнішими. С дозволяє маніпулювати бітами, байтами запису їх (операцій) в тексті програми;
та адресами, тобто тими базовими елементами даних, з якими працює • розгалуження — виконання певної операції або декількох операцій
комп'ютер. На відміну від більшості мов високого рівня, С майже в залежності від стану певної, наперед заданої умови;
відсутній контроль помилок у процесі виконання програми. • цикл — багаторазове виконання операції або групи операцій за
Наприклад, не перевіряється порушення меж масивів. Інша важлива умови виконання деякої наперед заданої умови. Така умова
особливість — це мала кількість ключових слів, що складають називається — умова продовження циклу.
команди мови. У С89 визначено 32 ключові слова, причому в С99 !При цьому безумовна передача управління, наприклад, оператором
додано лише 5 слів. Мови високого рівня зазвичай мають значно goto забороняється.
більше ключових слів, наприклад, у більшості версій мови Basic їхня Переваги:
кількість перевищує сотню!Н езважаючи на її низькорівневі підвищується надійність програм (завдяки хорошому
можливості, мова проектувалася для машинно-незалежного структуруванню при проектуванні, програма легко піддається
програмування. Сумісна зі стандартами та машинно-незалежно тестуванню та не створює проблем при налагодженні);
написана мовою C програма, може легко компілюватися на великій підвищується ефективність програм (структурування програми
кількості апаратних платформ та операційних систем з мінімальними дозволяє легко знаходити та коригувати помилки, а окремі
змінами, що робить її одною з найшвидших мов. Мова стала підпрограми можна переробляти (модифікувати) незалежно від
доступною для великої кількості платформ, від вбудованих інших);
мікроконтролерів до суперкомп'ютерів. C підтримує процедурну, зменшується час та вартість програмної розробки;
узагальнену, і об'єктно-орієнтовану парадигми програмування, і покращується читабельність програм.
багато інших парадигм. C має можливості для структурного
програмування, а увесь виконуваний код міститься у функціях.
Недоліки: • збільшується швидкість написання (на старті можна швидко
непропорційне зростання складності програми при збільшенні створити потрібні компоненти всередині програми, щоб отримати
об'єму коду програми; мінімально працюючий прототип)
процеси і дані існують окремо один від одного, таким чином, крім
функціональної декомпозиції, існує структура даних, що Недоліки:
знаходиться на другому плані. складно зрозуміти та почати працювати. (підхід ООП набагато
складність створення паралельних програм. складніший за звичайне процедурне програмування — потрібно
знати багато теорії, перш ніж буде написано хоч один рядок коду)
Об’єктно-орієнтоване програмування - парадигма програмування, потребує більше пам'яті (об'єкти в ООП складаються з даних,
в якій основними концепціями є поняття об'єктів та класів. У рамках інтерфейсів, методів та багато іншого, а це займає набагато більше
даного підходу програма являє собою описання об'єктів, їх пам'яті, ніж проста змінна, також при використанні стандартних
властивостей (або атрибутів), сукупностей (або класів), відносин між бібліотек класів в невеликих програмах)
ними, способів їхньої взаємодії та операцій над об'єктами (або іноді продуктивність коду буде нижчою (через особливості
методів). ООП має багато плюсів, і саме тому цей підхід підходу частина речей може бути реалізована складніше, ніж
використовує більшість сучасних програмістів. могла бути, тому буває таке, що ООП-програма працює
Переваги: повільніше, ніж процедурна (хоча із сучасними потужностями
• візуально код стає простішим, і його легше читати (коли все процесорів це мало кого хвилює))
розбито на об'єкти і вони мають зрозумілий набір правил, можна
відразу зрозуміти, за що відповідає кожен об'єкт і з чого він
складається) !Мабуть, найбільш відомим прикладом об'єктно-орієнтованої мови
• менше однакового коду (якщо у звичайному програмуванні одна програмування є мова C++, яка розвинулася з імперативної мови С. Її
функція рахує символи, що повторюються, в одномірному масиві, прямим нащадком і логічним продовженням є мова С#.
а інша — у двомірному, то у них більша частина коду буде
однаковою. У ООП це вирішується успадкуванням)
• складні програми пишуться простіше (кожну велику програму
можна розкласти на кілька блоків, зробити їм мінімальне
наповнення, а потім щоразу докладно наповнити кожен блок)
2.Структура програми мовою С. Етапи створення та виконання програми.
Основними частинами типової структури програми на С Ім'я функції - це колективне ім'я групи описів і
є такі: операторів, укладених в блок (фігурні дужки), за ім'ям
директиви препроцесорної обробки(управляють функції в круглих дужках вказуються параметри функції.
перетворенням тексту до його компіляції) ; Перед ім’ям функції вказується її тип, що повертає
опис зовнішніх змінних (вихідних даних і функція.
результатів) та функцій (визначають дані або стан на початку програми додаються бібліотеки, що
програми, що використовується); використовуються в програмі.
функції програми (визначають поведінку чи дії
програми); Етапи розв’язку задачі на ЕОМ:
головна функція — програми, що має вигляд main() 1. Постановка задачі;
(ім'я main фіксоване і всіх програм на Сі завжди однаково.) 2. Формалізація задачі – це процесс конкретизації проблеми
до кінцевого числа термінів ( структур даних ) і
визначення взаємозв’язків між ними.
3. Складання алгоритму (алгоритмізація) – це процес
складання алгоритму, який розв. задану задачу.
4. Написання програми (програмування) до 15% роботи
Структурність мови: 5. Відлагодження (дебаг) – пошук та виправлення
Мова Сі є блочно-структурованою. Кожен блок синтаксичних помилок.
розміщається в фігурних дужках {}. 6. Тестування – пошук та виправлення семантичних помилок.
Основним блоком у програмі консольного застосування 7. Оформлення результатів
на мові Сі є головна функція, що має ім'я main ().
Кожна дія в мові Сі закінчується символом "крапка з
комою" -;.
Як дія може виступати виклик функції або здійснення
деяких операцій.
3.Алфавіт і лексеми мови С. Коментарі
Односимвольні константи мають тип char, займають 1 байт. '\N' // символ керування висновком - переклад рядка
Заслуговують уваги послідовності, що починаються зі знака «\», їх називають керуючими або escape-послідовностями. Символ зворотної
косої риски «\» використовується для запису кодів,що не мають графічного зображення, для запису символiв, а також для виведення
символьних констант, якщо їх коди заданi у вісімковому та шістнадцятковому вигляді
Керуючі послідовності можуть також застосовуватись у рядкових константах. Так, якщо всередині рядка потрібно записати лапки, то
перед ними слід розташувати зворотну косу риску («\»), за якою компілятор відрізняє їх від лапок, що обмежують рядок:
Всі керуючі символи, при використанні, обрамляются подвійними лапками, якщо необхідно вивести якесь повідомлення, то керуючі
символи можна записувати відразу в повідомленні, в будь-якому його місці. Нижче показаний код програми, використовує керуючі
символи.
У рядку 9 у вихідний потік надходять дві табуляції \t\t, після чого друкується повідомлення control characters C++. У рядку 10 керуючий
символ \r повертає каретку в початок рядка і друкує повідомлення cppstudio.com, причому дане повідомлення займе місце двох
табуляцій з рядка 9. Після цього каретка буде переведена на новий рядок, так як в кінці повідомлення рядка 10 варто символ \n. У рядку
11 перше і останнє слова повідомлення обрамлені одинарними і подвійними лапками відповідно. У рядку 12 у вихідний потік зсуваються
керуючі символи \a, ці символи запускають спікер комп'ютера.
6.Типи даних у С
Обробка даних різного типу є головною метою будь-якої операціях. Для опису основних типів мови C
програми. Кожне з даних характеризується класом використовують такі службові слова:
пам’яті, ім’ям, типом і значенням. Імена дозволяють int (цілий);
ідентифікувати дані, тобто відрізняти їх між собою. char (символьний);
Програміст обирає тип кожної величини, що float (дійсний);
використовується для подання реальних об’єктів. Тип задає double (дійсний з подвійною точністю);
множину можливих значень даних і способи їх зберігання, void (порожній, не має значення).
перетворення та використання. Типи int, char називають цілими, а
Обов’язкове оголошення типу даних типи float та double — дійсними з плаваючою крапкою.
дозволяє компілятору робити перевірку допустимості Код, що формує компілятор для обробки цілих величин,
різних конструкцій програми. відрізняється від коду для величин з плаваючою крапкою.
Усі типи даних мови C можна розділити на основні (базові) Для уточнення внутрішнього подання та діапазону значень
і складені. Основні типи визначені для представлення стандартних типів мова C використовує чотири
цілих, дійсних,.На основі цих типів вводиться опис специфікатори типу:
складених типів, до яких належать масиви, перелічення, short (короткий);
функції, структури, посилання, покажчики, об’єднання. long (довгий);
Основні типи даних часто називають арифметичними, signed (знаковий);
тому що їх можна використовувати в арифметичних unsigned (беззнаковий).
Тип Розмір, байт unsigned int (32 розряди) 4
unsigned short int 2 Char 1
short int 2 Float 4
unsigned long int 4 Double 8
long int 4 long double 10
int (16 розрядів) 2 Перелічувальний тип - тип, який створюється користувачем
за допомогою слова enum. Наприклад:
int (32 розряди) 4
enum notes {d = 1, re, mi, fa} k;
unsigned int (16 розрядів) 2 enum season {winter, sring, summer, autumn} g;
Приведення (перетворення) типів— це зміна типу програми таким чином, що програма буде
сутності одного типу даних в інший, що може виконуватись коректно.
відбуватися різними способами, явно чи неявно. Явне перетворення типів, це таке приведення типів
1. Char даних, яке задається в явному вигляді в рамках
Int int програми (замість того, щоб відбулося неявне
Enum перетворення типів компілятором).
2. Складні -> unsigned
3. Int <= unsighned <= long <= unsigned
Long <= float <= double <= long double
Приведення типів буває явне і неявне. Неявне Існує кілька видів явного перетворення.
перетворення типів, також відоме як примусове, це з перевіркою
автоматичне перетворення типів при компіляції. Перед перетворенням виконується перевірка під час
Деякі мови програмування дозволяють виконання програми, яка визначає чи може вихідний тип
компіляторам здійснювати перетворення; інші вмістити початкове значення. Якщо ні, повертається
вимагають здійснити його явно. помилка.
У виразах зі мішаними типами змінних, данні одного без перевірки
або декількох підтипів можуть при необхідності
бути перетворені до супертипу під час виконання
Перевірка не виконується. Якщо вихідний тип не може f*3 – I -> float
містити початкове значення, результат буде не d + s -> double
визначений.
по бітовому шаблону (отсилка к 9)
Бітове представлення вихідних даних копіюється, і
інтерпретується по новому відповідно до вихідного типу,
в який перетворюється значення.
С + 1.0 -> double
C – s/i -> int
e + 1 -> int
8.Перелічувальний тип
При застосуванні великої кількості логічно взаємозалежних enum Months {January = 1, February, Marth, April, May, June, July,
констант C доцільно користуватися константами перелічення. Тип August, September, October, November, December};
перелічення має вигляди:
Якщо значення константи перелічення не визначено, то воно на
enum {список іменованих констант}; — неiменоване перелічення, одиницю більше значення попередньої константи. За
enum [ім’я] {список іменованих констант}; — iменоване замовчуванням перша константа має значення 0. Тоді у першому
перелічення. прикладі константи одержать значення:Anton = 0, Ivan = 1, Piter = 2,
де enum—службове слово (enumerate—перелічувати); а у другому — значення: January = 1, February = 2, Marth= З тощо.
ім’я— ім’я списку констант; Іменовані перелічення задають унікальний цілочисловий тип і
список іменованих констант— розділена комами послідовнiсть можуть використовуватися як специфікації типу для визначення
iдентифікаторів або іменованих констант вигляду: змінних
9.Приведення типів.
Приведення (перетворення) типів - в програмуванні це можна приводити з пониженням типів: посилання на
зміна типу сутності одного типу даних в інший, що може базовий клас може вказувати на його похідні (дочірні)
відбуватися різними способами, явно чи неявно. класи.
Важливі примітки:
символьного, широкого символьного, перечислення, і виконання програми, яка визначає чи може вихідний
короткого цілого типів, які перетворюються в int, і для тип вмістити початкове значення. Якщо ні,
відміну від інших від інших перетворень типів, розширення без перевірки
ніколи не призводить до втрати точності або зміни Перевірка не виконується. Якщо вихідний тип не може
double da = 3.3;
double db = 3.3;
double dc = 3.4;
Мова С дозволяє визначати імена нових типів даних за Далі можна створити матеріальну змінну, використовуючи
допомогою ключового слова typedef. Насправді тут не balance:
створюється новий тип даних, а визначається нове ім'я
існуючого типу. Він дозволяє полегшити створення balance past_due;
машинно-незалежних програм. Єдине, що потрібно при
переході на іншу платформу, - це змінити оператор typedef. Тут past_due - це речова змінна типу balance, іншими
Він також може допомогти документувати код, дозволяючи словами - типу float.
призначати змістовні імена стандартних типів даних.
Стандартний вид оператора typedef наступний: Можна використовувати typedef для створення імен для
typedef тип ім'я; більш складних типів. наприклад:
де тип - це будь-який існуючий тип даних, а ім'я - це typedef struct {
нове ім'я для даного типу. Нове ім'я визначається на додаток float due;
до існуючого імені типу, а не заміщає його. int over_due;
char name [40];
Наприклад, можна створити нове ім'я для float, } client; / * Тут client - це ім'я нового типу * /
використовуючи
typedef float balance; client clist [NUM_CLIENTS]; / * Визначення масиву
структур типу client * /
Даний оператор повідомляє компілятору про необхідність
розпізнавання balance як іншого імені для float. Використання typedef може допомогти при створенні більш
легкого для читання і більш переносимого коду. Але треба
пам'ятати, що насправді не створюються ніякі нові типи
даних
11.Оголошення і визначення.
Приклади оголошень:
int a, b, c;
char sym;
bool f_is;
float x, y;
double z;
12.Змінні. Описання змінних. Ініціалізація. Область дії і клас пам’яті
14.Базові конструкції мови С. Оператор «вираз», складений оператор (блок), пустий оператор.
Будь-який вираз, що закінчується крапкою з комою, є оператором. блоку, тобто. використовуються зі своїми значеннями,
Оператор-вираз привласненими ним усередині цього блоку, а не в іншому місці
Виконання оператора виразу полягає у обчисленні виразу. програми.
Отримане значення виразу ніяк не використовується, тому If (i< 0){
зазвичай такі вирази викликають побічні ефекти. i++;
Зауважимо, що викликати функцію, яка не повертає значення, x+=y;
можна тільки за допомогою оператора виразу. }
Приклади:
++ і;
<Вираз>; Порожній оператор:
x = y + 3; Порожній оператор складається лише з точки з комою. Під час
x++; виконання цього оператора нічого не відбувається. Він зазвичай
f(x); використовується у таких випадках:
- в операторах do, for, while, if у рядках, коли місце оператора не
Блоком називається послідовність операторів, укладених у фігурні потрібно, але за синтаксисом потрібний хоча б один оператор;
дужки { та }. - за необхідності передати керування на фігурну дужку (за
Оператори блоку виконуються послідовно в порядку їхнього допомогою оператора goto).
запису всередині блоку. На початку блоку можуть бути описані For(i = 0; i < n; a[i++]=0);
внутрішні змінні. І тут кажуть, що це змінні локалізовані всередині
15.Операції. Позначення операцій. Пріоритет операцій.
1) Бінарний плюс +;
Унарні (операції над одним операндумом) &, *, -, +, ~, !, ++, –-, 2) Бінарний мінус -;
sizeof; Мультиплікативні: (типу множення)
Бінарні (над двума операндумом) +, -, *, /, %, <<, >>, &, :, ^, 1) Множення для арифметичних типів *
<, >, <=, ==, >=, !=, &&, ||, =,*=, /=, %=, +=, -=, <<=, >>=, &=, 2) Ділення арифметичне /
|=, ^=, ., ->, ,, (), []; 3) Залшок від ділення %
Тернарні(три операндуми) ?: .
Унарні:
Взяття адреси &
Звернення за адрессою * Операції зсуву:
Унарний мінус - <<Зсув вліво(побітового предст.) 1 <<2 = 4
Унарний плюс + >>Зсув вправо 1>>2 = 0
Інверсія (побітова інверсія) ~ Порозрядні операції:
Логічне заперечення ! Порозрядна коніюниція бітових представлень операндів &
Інкремент(незастосовується для констант) ++х – перфіксна Порозрядна диз’юнкція бітових представлень | (aбо)
х++ - постфіксна Порозрядне виключення ^
Декремент – Операції відношення:
Бінарні: <, <= ,> , >=, ==, != - арифметичні типи вказівників
Адитивні : Логічні оперції:
&&, ||, !A
Операції присвоєння:
=, *=, /=, +=, -=, <<=, >>=, &=, |=, ^=
Операції вибору по множників структурованог об’єкта
Прямий вибір компонента структури
Опосередковане звернення до компонента структури через
вказівник
Операції з компонентами класа
.* пряме звернення до компонента класа
->* опосередковане звернення до классу через вказівник
:: указання області видимості
Операції з адресами та покажчиками:
Додаткові операції:
& — одержання адреси: видає адресу змінної, ім’я якої
sizeof() — знаходить розмір (у байтах) операнда, розташова¬ного
роз¬ташоване праворуч від позначення операції;
праворуч від назви операції;
* — непряма адресація (розіменування): видає значення, записане
за адресою, на яку посилається покажчик.
(type) — операція приведення типу перетворює наступне за нею
Операції обробки окремих бітів застосовують для обробки даних
значення в тип, визначений ключовим словом, укладеним у круглі
як послідовностей бітів (розрядів), кожний з яких набуває значення
дужки, наприклад:
0 або 1.
i = i+(int)*3.14;
Тернарна
?: — триарна (з трьома операндами) операція, що має вигляд:
вираз1? вираз2 : виразЗ;,
тут, якщо результат обчислення першого операнда (вираз1) не
дорівнює 0 («істина»), то результатом операції буде значення
дру¬гого операнда (вираз2), інакше — третього операнда (виразЗ).
Наприклад, знаходження найбільшої з двох величин а і b,
мож¬ливо здійснити операцією: max = (b> а)? b : а;.
Основні операції мови C
Порядок
№ Операції виконання
5 + – Л -> П
8 == != Л -> П
9 & Л -> П
10 ^ Л -> П
11 | Л -> П
12 && Л -> П
13 || Л -> П
14 ?: П -> Л
15 = += *= -= /= %= П -> Л
16 , Л -> П
17.Оператор-перемикач switch.
Хоча конструкція if-else-if може виконувати численні перевірки, ньому може заплутатися навіть авторка через деякий час. З цією
вона не дуже елегантна. Код дуже важкий для сприйняття і в метою має оператор прийняття рішень switch, що виконує дії,
ґрунтуючись на порівнянні значення зі списком констант символів включає інший оператор switch, може містити аналогічні
або цілих чисел. У разі виявлення збігу виконується оператор або константи.
оператори, асоційовані з цим значенням. Оператор switch має Якщо в операторі switch використовуються символьні
такий вигляд: константи, вони автоматично перетворюються на цілі.
switch (выражение) Всі мітки case мусять бути унікальними;
{
Оператор switch часто використовується для обробки команд
case константа1:
клавіатури типу роботи з меню. Як показано нижче, функція menu()
последовательность операторов
відображає меню для програми перевірки орфографії та викликає
break;
відповідні процедури:
case константа2:
void menu(void)
последовательность операторов
{
break;
char ch;
case константа3:
последовательность операторов break;
printf("1. Check Spelling\n");
...
printf("2. Correct Spelling Errors\n");
default:
printf("3. Display Spelling Errors\n");
последовательность операторов
printf("Strike Any Other Key to Skip\n");
}
printf (" Enter your choice: ");
Оператор default виконується, якщо не знайдено відповідності,
default необов'язковий і, якщо його немає, то у разі відсутності ch = getche(); /* чтение клавиатуры */
збігів нічого не відбувається.
switch(ch) {
Коли виявляється збіг, оператори, асоційовані з відповідним case, case '1':
виконуються доти, доки не зустрінеться оператор break. У випадку check_spelling();
default (або останнього case, якщо немає default), оператор switch break;
закінчує роботу при виявленні кінця. case '2':
correct_errors();
Слід знати про три важливі моменти оператора switch: break;
case '3';
switch відрізняється від if тим, що він може виконувати display_errors();
лише операції перевірки суворої рівності, у той час як if break;
може обчислювати логічні вирази та стосунки. default :
Не може бути двох констант в одному операторі switch, що printf("No option selected");
мають однакові значення. Звичайно, оператор switch, що }
}
18.Оператори повтору С. Цикл з передумовою.
Цикл – багаторазове проходження по одному і тому ж коду
програми. Цикли необхідні програмісту для багаторазового Реалізується оператор while таким чином: якщо значення виразу-
виконання одного і того ж коду, поки істинно якась умова. Якщо умови не дорівнює нулю («істина»), то виконується тіло циклу, а в
умова завжди істинно, то такий цикл називається нескінченним, у протилежному випадку, тобто коли значення виразу дорівнює
такого циклу немає точки виходу. нулю («неправда»), — цикл не працює і керування передається
Оператори циклу використовують для здійснення багаторазового наступному за циклом while оператору. Цикл з пере-думовою
повторення деякої послідовності дій. Кожен цикл складається з може не виконуватися жодного разу.
тіла циклу, тобто операторів, що виконуються декілька разів. Один Зауваження:
прохід циклу називається ітерацією. У мові C++ існують три 1) В тілі цикла обов’язково мусять бути оператори, які
оператори циклу: while, dowhile, for. змінюють значення виразу;
Оператор циклу з передумовою while виконується, якщо умова 2) Цикл не виконається ні разу, якщо з самого початку
перевіряється до початку циклу, і має вигляд: значення виразу дорівнює нулю;
while (<вираз>){ 3) Тип виразу повинен бути арифметичним або таким, що
<оператор>; приводить до нього;
} 4) Значення виразу обчислюється перед кожною ітерацією
Example: циклу;
S = 1+1+1+1….+1 5) Якщо в тілі цкла більше одного оператора, то потрібно
main(){ використовувати складений опер.;
int s = 0; i = 1; n = 15; 6) В () після while можна вводити описання змінної, областю
while ( i <= n){ дії якої є цикл.
s+=1; Оператор while зручно застосовувати у випадках, коли
i++;} кількість ітерацій заздалегідь не відома.
19. Оператори повтору С. Цикл з післяумовою.
Оператор циклу з післяумовою dowhile звичайно застосовується у У процесі виконання оператора do while спочатку здійснюється
випадках, коли тіло циклу виконується хоча б один раз, і має таку вхід до тіла циклу і виконується оператор, що являє собою тіло
форму запису: циклу (цей оператор може бути простим або складеним); далі
do { перевіряється вираз і, якщо він правдивий («істина»), — цикл
<оператор> повторюється, а коли вираз помилковий («неправда») —
}while(<вираз>); здійснюється вихід з циклу.
int = і;
for ([вир1; вир2; вирЗ]) оператор;,
for (; і < 4; i++)
де вир1 — вираз ініціювання, що використовується для встановлення
початкового значення параметра, це вираз присвоювання; .....................
вир2 — вираз умови, що визначає умову повторення циклу; Операторам циклів с параметром for слід віддати перевагу при
вирЗ — вираз ітерації, який визначає крок зміни параметра, що організації циклів з лічильниками.
керує циклом, після кожного виконання. Зауваження:
Вирази вир1, вир2 та вирЗ — необов’язкові параметри, які 1) може бути відсутній будь-який іх виразів, але крапки з комами
розділяються символом «;». лишаються;
Оператор циклу for реалізується таким чином: for(;;);
виконується вираз ініціювання (виконання цієї нотації може бути 2) якщо відсутній <вираз1>, то не відбувається ініціалізація змінної;
здійснено до оператора for); 3) якщо відсутній <вираз3>, то не відбувається зміна зманної циклу;
обчислюється вираз-умова; for ( i; i<=n){ s+=i;}
якщо умовний вираз приймає значення «істина» — виконуються 4) якщо відсутній вираз2, то немає етапу перевірки і цикл стає
оператори циклу; нескінченним. В цьому впадку за рез перевірки буде не нуль;
обчислюється вираз ітерації; 5) у виразі1 може бути записано декілька операторів розділених
знову перевіряється умова; комою;
як тільки умова прийме значення 0 («неправда»), керування 6) у виразі1 може бути виконане оголошення змінної, але лише однієї
передається оператору, що розташований за оператором (область дії змінної – тіло циклу)
циклу for. 7) ініціалізація виконується лише 1 раз на початку цикла;
8) вираз3 також може складатися з декількох операторів розділених 9) використання дійсних чисел може спричинити некеровані ітерації;
комою
Функція – це послідовність описів і операторів, яку можна викликає. Параметри, котрі зазначаються у заголовку опису
викликати певну кількість разів із будь-якого місця програми. функції, як відомо, називаються формальними, а параметри, які
Функція може повертати певне значення в точку виклику.Функція записані у операторах виклику функції — фактичними.
є підпрограмою, яка може міститися в основній програмі, а може Example:
бути створена окремо в бібліотеці. // функція MyFunction
Описання та виклик функції // параметр x - передається за значенням (параметр-значення)
// параметр y - передається за адресою
Як мінімум, у програмі завжди присутня функція main() // параметр z - передається за посиланням
оголошення повинне бути в тексті програми до її виклику. void MyFunction(int x, int* y, int& c)
Прототип (оголошення функції) задає імя, тип значення, що {
повертає функція, список параметрів, які може приймати функція, x = 8; // значення параметра змінюється тільки в межах тіла
пишемо його на початку програми, описуючи функцію функції
Визначення функції містить тіло функції (ті оператори, які *y = 8; // значення параметра змінюється також за межами
функції
реалізуються в функції). c = 8; // значення параметра змінюється також за межами функції
<клас памяті > <тип результату > < імя функції > (< список return;}
параметрів >) throw (список виключень){ Змінні, що описані у тілі функції, називаються локальними або
<тіло функції> автоматичними. Вони існують тільки під час роботи функції, а
} після реалізації функції система видаляє локальні змінні і звільняє
Виклик функції виконується наступним чином: funcName (arg1,..); пам’ять. Тобто між викликами функції вміст локальних змінних
де, funcName– ім'я функції; arg1,..- аргументи функції (значення знищується, тому ініціювання локальних змінних треба робити
або змінні) щоразу під час виклику функції. За необхідності збереження цих
Примітка: функції можуть не мати параметрів, тоді в круглих значень, їх треба описати як статичні за допомогою службового
дужках нічого писати не треба. слова static.
Дивимося приклад: Розрізняють системні (в складі систем програмування) і власні
1 // вызов функции синуса функції.
2 sin( 60 ); Системні функції зберігаються в стандартних бібліотеках, і
Виклик функції виконується записом її імені, а потім круглих користувачеві не потрібно вдаватися в подробиці їх
дужок (). Якщо функція приймає аргументи, то в круглих дужках реалізації. Досить знати лише їх сигнатуру. Прикладом
передаються аргументи, в порядку, зазначеному в оголошенні системних функцій, використовуваних раніше, є функції
функції. printf () і scanf ().
Механізм передачі параметрів є основним засобом обміну ін- Власні функції - це функції, написані користувачем для
формацією між функцією, що викликається, та функцією, яка вирішення конкретної підзадачі.
Розбиття програм на функції дає наступні переваги: Використання функцій полегшує читання і розуміння
Функцію можна викликати з різних місць програми, що програми і прискорює пошук і виправлення помилок.
дозволяє уникнути повторення програмного коду. З точки зору викликає програми функцію можна
Одну і ту ж функцію можна використовувати в різних представити як якийсь "чорний ящик", у якого є кілька
програмах. входів і один вихід. З точки зору викликає програми
Функції підвищують рівень модульності програми і неважливо, яким чином проводиться обробка інформації
полегшують її проектування. всередині функції. Для коректного використання функції
досить знати лише її сигнатуру.
Параметри, що вказуються в заголовку процедури(функції) при її Щоб функція могла змінити значення змінної, треба передавати
описі, називаються формальними параметрами. адресу цієї змінної. Тоді з функції можна буде звертатись за
Параметри, що вказуються при виклику функції, називаються вказаною адресою та оперувати безпосередньо з її значенням, а
фактичними параметрами. не копією занесеною в стек. Очевидно, що відповідний
Коректність передачі параметрів ґрунтується на їхньому порядку формальний параметр функції повинен бути вказівником,
перерахування в заголовку функції і сумісності по присвоюванню базовий тип якого збігається з типом змінної.
між відповідними фактичними і формальними параметрами. 1. При виклику функції:
Сфера дії імен параметрів такая ж, як і локальних даних.Багато а) виконується виділення пам'яті під формальні параметри і
функцій мають кілька параметрів. Задача програміста – локальні дані (у чи стеці в спеціальній області пам'яті для
переконатися, що параметри, що він указує при виклику локальних даних);
(фактичні параметри), відповідають за змістом формальним б) виконується копіювання значень фактичних параметрів у
параметрам. Компілятор може перевірити тільки очевидні пам'ять, виділену для формальних параметрів.
випадки — неправильне число чи параметрів несумісність типів. 2. Під час роботи функції:
По механізму передачі параметри розрізняються: а) зміна значень формальних параметрів не робить ніякого
а) передача за значенням (value); впливу на вміст комірок пам'яті фактичних параметрів.
В тілі функції опрацьовуються копії значень фактичних 3. При закінченні функції
параметрів, занесені в стек. А значення самих фактичних а) пам'ять, виділена під формальні параметри і локальні дані,
параметрів не змінюється очищається;
б) передача за адресою (по посиланню) б) нові значення формальних параметрів, отримані в процесі
роботи функції, губляться разом з очищенням пам'яті.
26.Прототипи функції.
Компілятор С контролює правильність звертання функції та void Print ( double, double, double);
застосування значення, яке вона повертає, тому опис функцій Дозволено також вказувати і прототипі імена параметрів,
повинен передувати звертаню до неї. Однак розташовувати відмінних від тих, що використовуються в описі функції.
функції програми в потрібному порядку (так, щоб кожну void Print ( double q, double l, double u);
функцію, яка викликає інші функції, записати після тих функцій, Стандарт мови С дозволяє записувати порожній список
які вона викликає) складно, а часто й зовсім неможливо (зокрема параметрів у прототипі функції
у разі перехресних викликів між функціями). Оскільки кожна Тип_значення_функції імя_функції ();
функція є автономною програмною одиницею, то вкладення Але практика показала, що таких оголошень треба уникати, бо
функцій не допускається. Крім цього, бажано, щоб першими в компілятор не отримує інформацію про кількість і склад
програмі були записані ті функції, які розкрвають алгоритм формальних параметрів, тому він не може проконтролювати
розв’язання задачі, а функції, які деталізують окремі кроки, правильність запису фактичних параметрів у викликах функцій
розміщувались після них. та у разі потреби перетворити їх до типів відповідних
Довільний порядок запису функцій у С-програмах забезпечується формальних параметрів.
використанням прототипів функцій. Прототип функції відтворює Прототипи бібліотечних функцій
рядок її заголовка і закінчується знаком крапка з комою, тобто Практично кожна С-програма використовує у своїй роботі ті чи
має таку форму: інші бібліотечні функції. Це функції, тексти яких попередньо
Тип_значення_функції імя_функції відкомпільовані, а їхні об’єктні коди зберігаються у стандартній
(оголошення_типів_параметрів); або користувацькій бібліотеці. Прототипи стандартних
Прототипи функцій треба вказувати перед першим звертанням до бібліотечних функції С поділені на окремі групи за призначенням
функцій. Найчастіше всі прототипи або їх більшу частину та записані у спеціальних заголовних файлах із розширенням *.h.
вказують на початку програми. Можна також вказувати Наприклад у файлы stdio.h зiбранi прототипи всiх функцsй
прототипи безпосередньо перед викликаючою функціє. Оскільки високорiвневого буферизованного введення-виведення даних, у
прототип функції надає повну інформацію про параметри та файл conio.h прототипи функцій для обміну данними через
значення, яке повертає, то компілятор може перевірити консольні пристої… У разі використання тих чи інших
правильність звертання до функції, опис яких у тексті пограми бібліотечних функцій необхідно підключити до тексту програми
розташовано нижче. У списку параметрів прототипу функції заготовочні файли, в яких записані прототипи тих функцій.
можна вказувати тільки типи параметрів, опускаючи їх імена. #include <time.h>
Наприклад: Зауваження:
1. Якщо функція нічого не повертає в прототипі указyвати 3. Якщо необхідно оголосити змінний список параметрів, то
void; використовується «…».
2. Визначення функцій має відповідати прототипу по
кількості, типу параметрів та смислу;
27.Передача багатовимірних масивів в функції.
При використанні аргумента-масива в функцію передається над оригіналом даних, тому вихідний масив (або значення
вказівник на його перший елемент, тобто масив завжди змінної) може бути змінено функцією, що викликається.
передається адресою.
У наступному прикладі за допомогою функції підраховується
Для передачі багатовимірного масива в функцію:
сума елементів двох двовимірних масивів. Розмірність масиву
- якщо є інформація про його розмір (що є константою), то відома на етапі компіляції.
проблем з передачею немає:
const int n=5, m=6;
void print34 ( int m[3][4] ) {
for ( int i=0; i<3; i++ ) int sum (const int *a, const int nrow,
for ( int j=0; j<4; j++ ) const int ncol)
printf ( “%d “, m[i][j] ) ; {
} int i, j, s = 0;
- якщо ж потрібно передавати кожного разу різні матриці в одну і for ( i = 0; I < nrow; i++ )
ту ж функцію, то рішення виду for ( j = 0; j < ncol; j++ )
s += a[ i * ncol + j ] ;
void print34 (int m[][], int n, int m) не працює.
return s;
Потрібно передавати масив як вказівник на масив } //sum ()
Для передачі масиву чисел в функцію потрібно передати як і у випадку з числами (п. 1).
покажчик на цей масив чисел. Рядок символів можна передавати у функцію двома способами:
Покажчиком на масив чисел є:
ім’я масиву; як char*;
адреса першого елементу масиву. як char[].
Використовують дві форми оголошення формального параметра Приклад. Функція, що повертає кількість символів ‘+’ (плюс) в
фукції, який повинен відповідати массиву: рядку. Ознакою кінця рядка є символ ‘\0’. Тому не потрібно
передавати у функцію довжину рядка.
1) тип елементів імя_масиву[], наприклад int vec[];
2) тип_елементів *імя_вказівника. Наприклад int *py; Спосіб 1. Визначення функції GetNPlus(). Передача рядка як char
*.
Обидві форми равнозначні та оголошують формальний
параметр,що є вказівнком на початок массиву. Перша форма // (char s[]) можна записати
візуально підкреслюює, що функція опрацьовує маисв, а друга
int GetNPlus(char *s) {
зазначає, що для робот из елементами массиву char *s2;
int n = 0; // кількість символів - результат
Приклад. Нехай потрібно описати функцію SumArrayInts(), що
s2 = s;
отримує масив з цілих чисел і знаходить суму елементів цього while (*s2!='\0'){
if (*s2=='+') n++;
масиву. Функція отримує 2 параметри:
s2++;
масив цілих чисел; }
return n;
кількість елементів у масиві.
}// Функція, що повертає кількість символів '+' в рядку
Спосіб 1. Передача масиву як int A[].
Спосіб 2. Визначення функції GetNPlus2(). Використання індексів
Спосіб 2. Передача масиву як int *A.
для доступу до символів рядка. // доступ до символів рядка за
Рядок символів є масивом елементів типу char. Тому, передача індексом
рядка символів у функцію в якості параметру виконується так само
int GetNPlus2(char *s){
int i=0; }
int n=0; return n;
while (s[i]!='\0') { }
if (s[i]=='+') n++;
i++;
29.Глобальні та локальні імена. Класи пам’яті, область видимості, тривалість існування.
Глобальні та локальні імена Зовнішній (external).
int i = 2; // глобальна змінна (помітна у кожному ділянці коду 1. Автоматичний (automatic)
програми) Зона дії автоматичної змінної обмежена блоком або функцією, де
int sum() вона описана. Вона починає існувати після звернення до функції та
{ зникає після виходу з неї. Автоматичні змінні не займають область
int k = 2; // локальна змінна (видна лише усередині функції sum()) пам'яті. Значення автоматичної змінної не може бути змінено
return i+k; іншими функціями і в цих функціях може бути змінні з таким же
} ім'ям.
Змінна k називається локальною, і її область видимості визначена
функції, що відкриває і закриває фігурними дужками sum() – {…}. 2. Зовнішній (external)
Змінна i - глобальна, вона описана поза будь-якими функціями у Зовнішні змінні вводяться як протилежні до автоматичного. Це
програмі. Її область видимості та дії – вся програма без глобальні змінні і до них можна звертатись іменами з будь-якої
обмеження. функції. Оскільки зовнішні змінні доступні скрізь, їх можна
**Функції в С-програмах можна описувати лише на зовнішньому використовувати зв'язок між функціями.
рівні, тому всі функції мають глобальний час існування. Клас пам'яті extern у Сі використовуємо у двох випадках:
-- якщо змінна оголошується у програмі нижче, ніж посилання неї;
Класи пам'яті - Якщо змінна оголошена в іншому модулі.
Клас пам'яті задає місце розташування об'єкта в оперативній #include <stdio.h>
пам'яті і встановлює для нього час існування, тобто час, протягом int x=145;/*Опис зовнішньої змінної*/
якого об'єкт зберігається в оперативній пам'яті, і область main()
видимості, яка визначає частину програми, де можна {
використовувати цей об'єкт. Клас пам'яті можна не вказувати, тоді extern int x,y;
він встановлюється компілятором автоматично за місцем printf("x=%d y=%d\n",x,y);
оголошення об'єкта в програмі. }
У мові Сі існує чотири класи пам'яті: int y=541; /*Опис зовнішньої змінної*/
Автоматичний (Automatic);
реєстровий (register); 3. Реєстровий (register)
Статичний (static);
Регістрову змінна розміщується в регістрі, а не в оперативній 3) Локальні - видимі у блоці, де оголошено об'єкт
пам'яті. Компілятор може зробити змінну регістрової, якщо
дозволяють умови (регістри не зайняті, і на думку компілятора це Тривалість існування
не призведе до збільшення витрат). Регістрові змінні визначаються 1) Глобальні – ці об'єкти існують протягом усього часу виконання
за допомогою службового слова register перед типом: програми;
register int x = 20; 2) Локальні - пам'ять для таких об'єктів виділяється з входом в
Оскільки реєстрова змінна немає адреси, то до неї не застосовна блок, де вони оголошені, коли ж завершуються виконання блоку -
операція взяття адреси. Аргументи функції також можуть бути ці об'єкти свою невизначені і пам'ять звільняється (локальні дані
задані як register. Усередині функції вони будуть поводитися так зберігаються в області пам'яті, яка називається стеком).
само, як і регістрові змінні.
Застосовувати register можна тільки до вказівників і цілого типу.
Використовувати register можна і за умови вказівки формальних
параметрів функцій.
Приклади:
register int nVar;
int func(register int var);
4. Статичний (static)
Статичні змінні, подібно до автоматичних, локальні в тій функції
або блоці, де вони описані. Різниця у тому, що статичні змінні не
зникають, коли функція (блок) завершує роботу, та його значення
зберігаються для наступних викликів функції.
Модифікатор static можна також застосовувати до глобальних
змінних. В цьому випадку область видимості такої змінної
обмежується файлом, в якому вона оголошена. Т. е. Якщо функція
оголошена як static, то вона видна лише у своєму файлі. З іншого
файлу до static функції не можна звернутися.
Область видимості
Область видимості змінної – це ділянка коду (функція, цикл,
простір імені), у якому ця змінна оголошена (прописана). Поза цією
ділянкою – компілятор її не бачить (вона недоступна).
За областю видимості:
1) Глобальні – видимі в межах однієї програми;
2) Частково глобальні – видимі в межах одного програмного
файлу;
30.Символи та рядки. Операції над рядками. Функції для роботи з рядками.
Символи та рядки Праворуч від знака присвоювання записано рядкову константу.
Символ - елементарна одиниця, певний набір, певний зміст. У Наприкінці рядка автоматично додається нуль ('\0'). Константи
мові програмування передбачено використання символьних символьних рядків поміщаються до класу статичної пам'яті.
констант. Третій спосіб:
Символьна константа - це ціле значення (типу int) представлено Неявна вказівка, що масив використовується. У лівій частині від
як символу, поміщеного в одинарні лапки, наприклад 'a'. знака привласнення вказується вказівник на символ:
Рядок у мові Сі є одномірним масивом символів, останнім char *s="Другий варіант ініціалізації";
елементом якого є символ кінця рядка – нуль. Усі бібліотечні функції, призначені для роботи з рядками, можна
char ім'я[довжина]; поділити на три групи:
**Завершальний нуль \0 є частиною рядка, тобто його останнім введення та виведення рядків;
символом.Тому необхідно оголошувати символьні масиви на один перетворення рядків;
символ більше, чим потрібно для самого рядка. обробка рядків.
**Примітка: Введення та виведення
1. Лапки не є елементом рядка. Для введення та виведення строкової інформації можна
2. Довжина порожнього рядка дорівнює 1 за рахунок використовувати функції форматованого введення та виведення
завершального нуля. (printf та scanf). Для цього в рядку формату під час введення або
3. Рядок може бути порожнім, а символ - ні. виведення строкової змінної необхідно вказати специфікатор типу
4. Максимальна довжина рядка – 255. %s.
**Якщо в оголошенні вказано розмір масиву, а довжина char str[31] = "";
ініціалізуючого рядка перевищує вказаний розмір, то зайві printf("Введіть рядок: ");
символи відкидаються: scanf("%30s",str);
char code [3] = "abcd"; // Тільки три перші символи заносяться до printf("Ви ввели: %s",str);
масиву, символ d і \ 0 відкидаються. Недоліком функції scanf при введенні рядкових даних є те, що
роздільниками цієї функції є:
Оголошення рядків переклад рядка,
Перший спосіб: табуляція;
Оголошення масиву символів (не забудьте додати місце для пробіл.
завершального нуля): Для введення та виведення рядків у бібліотеці stdio.h містяться
char s[40+1]; спеціалізовані функції gets та puts.
Другий спосіб: Функція gets призначена для введення рядків і має наступний
Присвоїти рядковій змінній початкове значення (при цьому заголовок:
довжину рядка компілятор може обчислити сам): char * gets (char * buffer);
char s[] = "Приклад ініціалізації рядка"; Функція puts призначена для виведення рядків і має наступний
заголовок:
int puts(const char *string); Функція Пояснення
Функція gets не контролює вихід за кордон. Замість неї
об'єднує рядок s2 з рядком s1. Результат
використовується функція fgets з трьома параметрами: strcat(S1, S2)
char*fgets(char*buffer, int size,stdin); зберігається в s1
де buffer – рядок для запису результату, size – максимальна об'єднує n символів рядка s2 з рядком s1.
кількість байт, яке запише функція fgets, stdin читання з клавіатури strncat(S1, S2, N)
Результат зберігається в s1
потрібно вказати.
char str[102] = ""; Порівняння рядків
printf("Введіть рядок: "); порівнює рядок s1 з рядком s2 і повертає
fgets(str, 102, stdin);
результат типу int: 0 - якщо рядки еквівалентні,
printf("Ви ввели:"); strcmp(S1, S2)
puts(str); >0 - якщо s1<s2, <0 – якщо s1>s2 З урахуванням
регістру
Перетворення рядків
порівнює n символів рядка s1 з рядком s2 і
double atof (const char *string); // Перетворення рядка в
число типу double повертає результат типу int: 0 - якщо рядки
strncmp(S1, S2, N)
int atoi (const char * string); // Перетворення рядка в число еквівалентні, >0 - якщо s1<s2, <0 – якщо s1>s2 З
типу int урахуванням регістру
long int atol (const char * string); // Перетворення рядка в
порівнює рядок s1 з рядком s2 і повертає
число типу long int
long long int atoll (const char *string); // Перетворення рядка результат типу int: 0 - якщо рядки еквівалентні,
stricmp(S1, S2)
в число типу long long int >0 - якщо s1<s2, <0 – якщо s1>s2 без урахування
Функція Пояснення регістру
визначає довжину вказаного рядка, без урахування порівнює n символів рядка s1 з рядком s2 і
StrLen(ім'я_рядка)
нуль-символу strnicmp(S1, S2, повертає результат типу int: 0 - якщо рядки
Копіювання рядків N) еквівалентні, >0 - якщо s1<s2, <0 – якщо s1>s2 без
виконує побайтне копіювання символів з рядка s2 урахування регістру
STRCPY(S1, S2)
в рядок s1 Обробка символів
виконує побайтное копіювання n символів з рядка повертає значення true, якщо с є буквою або
strncpy(S1, S2, N) isalnum(с)
s2 в рядок s1. повертає значення s1 цифрою, і false в інших випадках
Конкатенация строк ISALPHA(с) повертає значення true, якщо с є буквою, і false в
Функція Пояснення Функція Пояснення
інших випадках якого символу рядка s2 в рядку s1
повертає значення true, якщо с є цифрою, і false Функції перетворення
isdigit(с)
в інших випадках atof(S1) перетворить рядок s1 в тип double
повертає значення true, якщо с є буквою atoi(S1) перетворить рядок s1 в тип int
ISLOWER(с)
нижнього регістру, і false в інших випадках
atol(S1) перетворить рядок s1 в тип long int
повертає значення true, якщо с є буквою
ISUPPER(с) Функції стандартної бібліотеки вводу / виводу <stdio>
верхнього регістру, і false в інших випадках
зчитує символ с зі стандартного потоку введення,
повертає значення true, якщо с є пробілом, і falseGetChar(c)
isspace(с) повертає символ у форматі int
в інших випадках
зчитує потік символів зі стандартного пристрою
якщо символ с, є символом нижнього регістра, то
gets(s) введення в рядок s доти, поки не буде натиснута
функція повертає перетворений символ с у
ToUpper(с) клавіша ENTER
верхньому регістрі, інакше символ повертається
без змін.
Функції пошуку
пошук першого входження символа с в рядку s. У
разі вдалого пошуку повертає покажчик на місце
strchr(s,с)
першого входження символу с. Якщо символ не
знайдено, то повертається нуль.
визначає довжину початкового сегмента рядка s1,
strcspn(S1, S2)
який містить символи, що не входять в рядок s2
БІТОВІ ПОЛЯ
Бітові поля - це особливий вид полів структури (можуть бути будь-
якого типу). При роботі з бітовими полями кількість бітів, що
виділяється для зберігання кожного поля, відокремлюється від
імені двокрапкою.
тип імені: КількістьБіт
Об'єднаннями називають складний тип даних, що дозволяє елемента структури (. і - & gt;). Не виконуються операції
розміщувати в тому самому місці оперативної пам'яті дані різних порівняння,
типів. Розмір оперативної пам'яті, необхідний зберігання спроба порівняння наводити до синтаксичної помилки.
об'єднань, визначається розміром пам'яті, необхідним розміщення
даних типу, що вимагає максимальної кількості байт. Коли Примітки:
використовується елемент меншої довжини, ніж найдовший 1. Значення поточного елемента втрачається, коли другому
елемент об'єднання, цей елемент використовує тільки частина елементу об'єднання надається значення.
відведеної пам'яті. Всі елементи об'єднання зберігаються в одній 2. Жодне з полів об'єднання може бути оголошено з класом
області пам'яті, починаючи з однієї адреси. пам'яті static.
union Ім'яОб'єднання 3. Коли оголошується об'єднання, то з ним визначається набір
{ типів значень, які можуть зберігатися в цьому об'єднанні. У кожний
тип ИмяОбъекта1; момент часу об'єднання може зберігати значення лише одного
тип ИмяОбъекта2; типу з набору.
... 2. Контроль за тим, значення якого типу зберігається на даний
тип Ім'яОб'єкта; момент в об'єднанні, лежить на програмісті.
}; 3. Об'єднання використовують для економії пам'яті в тих випадках,
коли відомо, що більше одного поля одночасно не потрібне. Обсяг
Об'єднання застосовуються для таких цілей: пам'яті, виділеної під об'єднання, залежить від реалізації системи.
• для ініціалізації об'єкта, якщо в кожний момент часу лише один із 4. Значення потокового елемента втрачається, коли іншому
багатьох об'єктів є активним; елементу об'єднання присвоюється значення.
• для інтерпретації представлення одного типу даних як іншого 5. Результат звернення не до того елемента об'єднання, який був
типу. останнім розташований у пам'яті, невизначений.
Наприклад, зручно використовувати об'єднання, коли необхідно 6. Деякі об'єднання не можуть бути легко перенесені на інші
речове число типу float представити у вигляді сукупності байтів комп'ютерні платформи.
34.Графічні можливості С.
Знайомство з мовою програмування С не обмежується лише Якщо не заданий ніякий шлях, то пошук здійснюється в поточному
написанням звичайних консольних програм. Використовуючи каталозі.
графічні можливості, які в С підтримуються можна зробити Початок координат знаходиться у верхньому лівому куті, вісь 0х
программу більш наглядною. Для робот из графікою в С була направлена вліво, а вісь 0у вниз. Координати вираховуються в
розроблена бібліотека <graphics.h>. Дана бібліотека дозвляє легко пікселях
виводити графічні обєктти с потрібним дозволом та глубиною У бібліотеці міститься велика кількіть різних функцій:
кольору. Дана бібліотека дозволяє віводить на екран наступні gotoxy () поміщає курсор текстового екрану в точку з
елементи графіки: точки, прямі та ламані лінії, прямокутники, координатами х, у. Якщо хоча б одна з координат недійсна, то
многокутники, кола,еліпси, дуги, сектори, а також текстові ніяких дій не виконується.
надписи. setcolor () встановлює поточний колір малювання рівним
Для роботи в графічному режимі треба підключити бібліотеку: кольором, заданим параметром color. Список допустимих кольорів
#include <graphics.h> для кожного відеоадаптера може бути знайдений в описі функції
Функція initgraph () використовується для ініціалізації графічної setpalette ().
системи і завантаження відповідного графічного драйвера. ellipse () малює еліпс з використанням поточного кольору. Центр
Функція initgraph () завантажує в пам'ять графічний драйвер, що еліпса розташовується в точці х, у. Довжина радіусів за
відповідає номеру, на який вказує параметр driver. Без графічного напрямками х і у задається аргументами xr і yr. Та частина еліпса,
драйвера, завантаженого в пам'ять, ніякі графічні функції не яка фактично виводиться на екран, задається величинами start і
можуть виконуватися. Використовуваний графічними функціями end, вимірюється в градусах. Якщо параметр start дорівнює 0, a end
режим відео задається у вигляді числа, на яке вказує параметр - 360, то еліпс буде зображений цілком.
mode. Нарешті, шлях до драйвера може бути заданий в рядку path.
#include <graphics.h>
int main() circle(x, y, radius);
{ getch();
int gd = DETECT, gm; closegraph();
int x = 320, y = 240, radius; return 0;
}
initgraph(&gd, &gm, "C:\\TC\\BGI");
for ( radius = 25; radius <= 125 ; radius =
radius + 20)
Вказівки компілятора
Вказівки компілятора (прагма) – інструкції, записані у вихідному
тексті
програми та призначені для управління діями компілятора мови у
певних ситуаціях.