- •О.Ф.Тарасов, о.В.Алтухов
- •1 Заняття № 1 Вивчення інтегрованого середовища с
- •1.1 Теоретичні відомості
- •1.2 Хід роботи
- •1.3 Вимоги до звітів
- •1.4 Питання для контролю і самостійної роботи
- •2 Заняття № 2 Функції введення/виведення даних printf( ), scanf( ). Лінійні обчислювальні процеси
- •2.1 Теоретичні відомості
- •2.2 Хід роботи
- •2.3 Індивідуальне завдання до заняття №2
- •2.4 Питання для контролю і самостійної роботи
- •3 Заняття № 3 Розробка програм зі скалярними типами даних
- •3.1 Теоретичні відомості
- •Приклад
- •3.2 Хід роботи
- •3.3 Індивідуальне завдання до заняття № 3
- •3.4 Питання для контролю і самостійної роботи
- •4 Заняття № 4 Розробка програм з циклічними обчислювальними процесами
- •4.1 Теоретичні відомості
- •Алгоритм роботи оператора циклу for ( )
- •4.2 Хід роботи
- •4.3 Індивідуальне завдання до заняття № 4
- •4.4 Питання для контролю і самостійної роботи
- •5 Заняття № 5
- •Розгалуження обчислювального процесу.
- •Оператори, які реалізують розгалуження: if... Else, switch,
- •Умовна операція ( ? : )
- •5.1 Теоретичні відомості
- •Умовна тернарна операція ( ? : )
- •Оператор варіанта switch
- •Приклад
- •5.2 Хід роботи
- •5.3 Індивідуальне завдання до заняття № 5
- •5.4 Питання для контролю і самостійної роботи
- •6 Заняття № 6 Операції с, їхні пріоритети і використання. Перетворення типів
- •Пріоритет операцій і порядок виконання (асоційованість)
- •(Новий_тип) Операнд
- •Приклад
- •6.2 Хід роботи
- •6.3 Індивідуальне завдання до заняття № 6
- •6.4 Питання для контролю і самостійної роботи
- •7 Заняття № 7
- •7.1 Теоретичні відомості
- •Оголошення функцій (створення прототипів)
- •([ Список_типів_параметрів ])
- •Синтаксис визначення функцій
- •[ Return Значення_типу_що_повертається ]
- •Використання локальних і глобальних перемінних у функціях. Виклик функції
- •Приклад
- •7.2 Хід роботи
- •7.3 Індивідуальне завдання до заняття № 7
- •7.4 Питання для контролю і самостійної роботи
- •8 Заняття № 8
- •8.1 Теоретичні відомості
- •Основні операції з покажчиками
- •Покажчики і цілі величини
- •Динамічне розміщення покажчиків у пам'яті
- •Приклад
- •Приклад
- •8.2 Хід роботи
- •8.3 Індивідуальне завдання до заняття № 8
- •8.4 Питання для контролю і самостійної роботи
- •9 Заняття № 9
- •9.1 Теоретичні відомості
- •Приклад
- •9.2 Хід роботи
- •9.3 Індивідуальне завдання до заняття №9
- •9.4 Питання для контролю і самостійної роботи
- •10 Заняття № 10
- •10.1 Теоретичні відомості
- •Приклад
- •10.2 Хід роботи
- •10.3 Індивідуальне завдання до заняття № 10
- •10.4 Питання для контролю і самостійної роботи
- •Заняття №11 Обробка символьних даних
- •Теоретичні відомості
- •Індивідуальне завдання до заняття №11
- •Питання для контролю і самостійної роботи
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Теоретичні відомості
- •Приклад
- •Індивідуальне завдання до завдання №13
- •Питання для контролю і самостійної роботи
- •Заняття № 14 Розробка програм зі складеними типами даних
- •Структури
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Заняття № 15 Використання покажчиків для роботи зі складеними типами даних (2години)
- •Теоретичні відомості
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Використання покажчиків для роботи з функціями
- •Покажчики як параметри функції
- •[Const ] Тип * Ім'я_покажчика
- •Приклад
- •Хід роботи
- •Індивідуальне завдання до заняття №16
- •Питання для контролю і самостійної роботи
- •Використання функцій високого і низького рівня для роботи з потоками (файлами)
- •Функції для роботи з файлами
- •Хід роботи
- •Індивідуальне завдання до заняття №17
- •Питання для контролю і самостійної роботи
- •Розробка програм із багатофайловою структурою. Заголовочні файли. Класи пам'яті перемінних і функцій
- •Керування многофайловими проектами
- •Використання адміністратора проектів
- •Приклад
- •Основний файл проекту
- •Заголовний файл
- •Хід роботи
- •Індивідуальне завдання до заняття №18
- •Питання для контролю і самостійної роботи
- •Графічні функції
- •Графічні примітиви
- •Хід роботи
- •Індивідуальне завдання до заняття №19
- •Питання для контролю і самостійної роботи
- •Заняття№20 Розробка програм з використанням класів
- •Теоретичні відомості
- •Оголошення і визначення класу
- •Тіло класу
- •Інкапсуляція. Керування доступом до членів класу
- •Використання даних-членів класу
- •Хід роботи
- •Індивідуальне завдання до заняття №20
- •Питання для контролю і самостійної роботи
- •Заняття№21 Використання конструкторів і деструкторів у класах
- •Теоретичні відомості
- •Ініціалізація об'єктів класу
- •Деструктори
- •Виклик деструкторів
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •"Друзі" класів (friend)
- •Хід роботи
- •Індивідуальне завдання до заняття №22
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Питання для контролю і самостійної роботи
Укажіть способи оголошення символьних рядків (перемінних і констант).
Який символ ставиться наприкінці рядка ?
Скільки пам'яті займає один символ рядка ?
Скільки пам'яті займає рядок (слово) з 6 букв?
Чи можна використовувати покажчики для адресації символьних рядків, що містяться в масивах ?
Скільки покажчиків можна використовувати для роботи з масивами ?
Який об'єкт адресується покажчиком, зміщеним відносно початку рядка на n байтів?
Яка функція дозволяє визначити довжину рядка ?
Які операції застосовні до покажчиків і необхідні для роботи з рядками ?
Чи можна виконувати ініціалізацію масивів з даними типу char рядками символів ?
Чи можна виконувати ініціалізацію покажчиків на тип char рядками символів ?
Які символьні послідовності називають керуючими, що вони означають ?
Заняття № 12
Використання бібліотечних функцій для роботи із символьними даними
(2 години)
Ціль роботи: виробити практичні навички в написанні програм з використанням бібліотечних функцій для роботи із символьними даними.
Теоретичні відомості
Функції для роботи із символьними даними
Для роботи із символьними даними розроблений ряд бібліотечних функцій. Розглянемо деякі з них:
char *strcat(char *dest, const char *src); - додає копію рядка src у кінець dest. Довжина рядка, що є результатом роботи функції дорівнює strlen(dest)+strlen(src). Функція strcat( ) повертає покажчик на рядок dest, що є результатом її роботи.
Функція char *strchr(const char *s, int c1); - переглядає рядок у прямому напрямку для відшукання в ньому заданого символу. Функція strchr( ) шукає перше входження символу с1 у рядок s і повертає покажчик на перше входження символу с1 в s. Якщо c1 не виявлений у s, то strchr( ) повертає нуль. Символ кінця рядка вважається частиною рядка, тому strchr(strs, 0) поверне значення покажчика на нульовий кінцевий символ рядка strs.
int strcmp(const char *s1, const char *s2); - здійснює беззнакове порівняння рядків s1 і s2, починаючи з першого символу кожного рядка, доти, поки чергові відповідні символи в рядках не будуть різні чи поки не будуть досягнуті кінці рядків. Функція strcmp() повертає значення:
< 0 якщо s1 менше ніж s2;
= = 0 якщо s1 дорівнює s2;
> 0 якщо s1 більше ніж s2.
int strcmpi(const char *s1, const char *s2); - порівнює один рядок з іншим аналогічно strcmp( ), але без урахування великих і маленьких букв (регістру). Функція strcmpi( ) визначена як макрос у <string.h> і перетворює виклики strcmpi( ) до викликів strcmp( ). Макрос забезпечує сумісність з іншими компіляторами С.
int strncmp(const char *s1, const char *s2, size_t maxlen); - порівнює частину одного рядка з частиною іншого. Функція strncmp( ) робить таке ж беззнакове порівняння, як і strcmp( ), але переглядає не більш, ніж maxlen символів. Вона починає з першого символу кожного рядка і закінчує, коли чергові символи в рядках різні чи коли перевірено maxlen символів. Функція strncmp( ) повертає значення типу int, зміст якого аналогічний strcmp( ).
char *strcpy(char *dest, const char *src); - копіює рядок src у dest, завершуючи роботу після копіювання символу закінчення рядка. Функція strcpy( ) повертає покажчик на рядок з результатом (dest).
size_t strcspn(const char *s1, const char *s2); - шукає в рядку перший сегмент, що не містить жодного символу з заданого набору символів. Функція strcspn( ) повертає довжину першого сегмента рядка s1, що складається тільки із символів, що не входять у рядок s2.
size_t strlen(const char *s); - обчислює довжину рядка s. Функція strlen() повертає число символів у s, не враховуючи символ кінця рядка (‘ /0 ’).
char *strlwr(char *s); - перетворює букви верхнього регістра (А - Z) рядка s у букви нижнього регістра (a - z). Інші символи не змінюються. Функція strlwr( ) повертає покажчик на змінений рядок s.
char *strnset(char *s, int ch, size_t n); - заміняє задану кількість символів n у рядку s на зазначений символ ch. Функція strnset( ) копіює символ ch у перші n байтів рядка s. Якщо n > strlen(s), тоді strnset( ) заміняє усі символи і зупиняється, коли досягає кінця рядка (виявляє нульовий символ). Функція strnset() повертає покажчик на змінений рядок s.
char *strpbrk(const char *s1, const char *s2); - шукає в рядку s1 перше входження будь-якого символу з переданого набору символів s2. Функція strpbrk( ) здійснює пошук у рядку s1 першого входження кожного із символів, обумовлених рядком s2. Функція strpbrk( ) повертає покажчик на перше входження будь-якого символу з рядка s2. Якщо жоден символ із символів рядка s2 не виявлений у s1, то функція повертає нуль.
char *strrchr(const char *s, int ch); - шукає в рядку s останнє входження заданого символу ch. Функція strrchr( ) перевіряє рядок s у зворотньому напрямку, роблячи пошук заданого символу. Передбачається, що символ закінчення рядка є частиною рядка. Функція strrchr( ) повертає покажчик на останнє входження символу ch. Якщо символ ch не виявлений у s, то функція strrchr( ) повертає нуль.
char *strrev(char *s); - перевертає рядок. Функція strrev( ), переустановлює всі символи в рядку в зворотньому порядку, за винятком завершального нульового символу. Наприклад, слово "порядок\0" буде перетворене в "кодяроп\0". Функція strrev( ) повертає покажчик на перевернений рядок.
char *strset(char *s, int ch); - заміняє всі символи рядка s на заданий символ ch, закінчуючи роботу при виявленні символу кінця рядка. Функція strset() повертає покажчик на змінений рядок s, що є результатом.
char *strstr(const char *s1, const char *s2); - здійснює пошук у рядку s2 перше входження в нього підрядка s1. Функція strstr( ) повертає покажчик на елемент у рядку s2, з якого починається s1 (покажчик на s1 у s2). Якщо s1 не виявлена в s2, то strstr( ) повертає нуль.
