- •1. Загальні відомості 7
- •1. Загальні відомості
- •1.1. Структура програми
- •1.2. Типи даних
- •2. Лабораторна робота 1. «Обчислення арифметичних виразів» (2 год.)
- •2.1. Теоретичні відомості
- •2.2.1. Приведення типів
- •2.2. Постановка задачі
- •2.3. Варіанти
- •2.4. Методичні вказівки
- •Постановка задачі.
- •3.1. Теоретичні відомості
- •3.1.1. Умовний оператор if-else
- •3.1.2. Оператор вибору switch
- •3.1.3. Оператори циклу
- •3.1.4. Приклад. Побудова геометричної фігури
- •3.2. Постановка задачі
- •3.3. Варіанти
- •3.4. Методичні вказівки
- •Постановка задачі.
- •4. Лабораторна робота 3. «Обчислення ряду. Форматне введення-виведення даних» (2 год.)
- •4.1. Теоретичні відомості
- •4.1.1. Поняття ряду. Ітераційний процес
- •4.1.2.Форматне виведення даних
- •4.1.3.Форматне введення
- •4.1.4. Приклад. Програма обчислення ряду
- •4.2. Постановка задачі
- •4.3. Варіанти
- •4.4. Методичні вказівки
- •Постановка задачі.
- •5. Лабораторна робота 4. «Функції. Ітераційні процеси» (4 год.)
- •5.1. Теоретичні відомості
- •5.1.1.Ступеневі ряди
- •5.2. Постановка задачі
- •5.3. Варіанти
- •5.4. Методичні вказівки
- •Постановка задачі.
- •6. Лабораторна робота 5. «Масиви й покажчики. Введення й виведення елементів» (2 год.)
- •6.1. Теоретичні відомості
- •6.1.1. Оголошення масиву
- •6.1.2. Масиви й покажчики
- •6.1.3. Записи «покажчик-зсув» і «покажчик-індекс»
- •6.1.4. Пошук найменшого й найбільшого елементів масиву
- •6.2. Постановка задачі
- •6.3. Варіанти
- •Постановка задачі.
- •7.1.2. Масив випадкових чисел
- •7.1.3. Видалення елемента із масиву
- •7.1.4. Вставка елемента в масив
- •7.1.5. Перестановка двох елементів
- •7.1.6. Циклічна перестановка елементів
- •7.2. Постановка задачі
- •7.3. Варіанти
- •Постановка задачі.
- •8.1.2. Передача масиву у функцію
- •8.1.3. Приклад. Функції введення й виведення елементів матриці
- •8.2. Постановка задачі
- •8.3. Варіанти
- •8.4. Методичні вказівки
- •Постановка задачі.
- •9. Лабораторна робота 8. «Сортування масивів» (4 год.)
- •9.1. Теоретичні відомості
- •9.1.1. Метод обміну (бульбашковий)
- •9.1.2. Метод прямого вибору
- •9.1.3. Метод вставок
- •9.1.4. Порівняння ефективності алгоритмів сортування
- •9.1.5. Генерація псевдовипадкових чисел
- •9.2. Постановка задачі
- •9.3. Методичні вказівки
- •Постановка задачі.
- •10. Лабораторна робота 9. «Рядки» (4 рік.)
- •10.1. Теоретичні відомості
- •10.1.1. Функції для роботи із символами
- •10.1.2. Строкові константи
- •10.1.3. Рядки як масиви
- •10.1.4. Передача рядка у функцію
- •10.1.4. Уведення/виведення символів і рядків
- •10.1.4. Функції обробки рядків
- •10.2. Постановка задачі
- •10.3. Варіанти
- •10.4. Методичні вказівки
- •Постановка задачі.
- •Література
10.1.3. Рядки як масиви
У мові С рядок подається як одновимірний масив змінних типу char, останнім елементом якого автоматично є нульовий символ '\0'. Можливі кілька видів оголошень масиву символів. По-перше, це може бути абстрактний рядок без вказівки розміру масиву:
char name[] = "Andrey";
Тут число елементів масиву визначається автоматично й дорівнює 7 (з урахуванням останнього елемента '\0'). По-друге, масив символів може мати більше елементів, чим містить абстрактний рядок:
char name[10] = "Andrey";
Тут три останніх елементи масиву не використовуються. Нарешті, рядок може бути оголошений за допомогою покажчика. Перед використанням покажчика рядок вже повинен існувати, наприклад:
char name[] = "Andrey";
char *namePtr;
namePtr = name;
Відзначимо, що при присвоєнні покажчику адреси масиву не потрібно використати адресний оператор &, тому що ім'я масиву поводить себе подібно адреси.
10.1.4. Передача рядка у функцію
Якщо потрібно передати в деяку функцію рядок, то передається як параметр ім'я рядка-масиву або покажчик на рядок.
Використання імені масиву. Запишемо визначення функції, що друкує рядок, і виклик цієї функції:
void print(char client[]){
cout << "Name of client: " << client << endl;
}
...
int main(){
char client1[] = "Serg";
...
print(client1);
...
Використання покажчика на рядок. Якщо є покажчик на масив-рядок:
char *client1Ptr= client1;
то можна передати у функцію покажчик:
print(client1Ptr);
Результат буде тим же, як і при передачі імені масиву, оскільки масив передається у функцію через посилання, тобто через покажчик.
10.1.4. Уведення/виведення символів і рядків
Розглянемо функції, які призначені для уведення/виведення символів і рядків і належать до стандартної бібліотеки (заголовний файл stdio.h).
Уведення по одному символу з потоку введення – здійснюється із клавіатури за допомогою функції getchar(), що повертає код уведеного символу:
int getchar(void);
Виведення одного символу на екран – здійснюється функцією putchar(), параметром якої є код виведеного символу:
int putchar(int ch);
Уведення символу без відображення на екрані – здійснюється функцією getch() з бібліотеки conio. (заголовний файл conio.h).
char getch(void);
У цієї функції, як і в getchar немає параметру. Крім того, значення, що повертається функцією, може бути присвоєно символьній змінній типу char.
Уведення рядка символів із клавіатури – здійснюється функцією gets(), параметром якої є покажчик на початок того рядка, у який вводяться дані. Функція повертає той же самий покажчик:
char *gets(char *string);
Функція gets читає все, що набирається доти, поки не натиснута клавіша Enter. Ця функція дозволяє вводити пробіли, чим відрізняється від іншої функції введення scanf, що читає всі символи доти, поки не зустрінеться пробіл (табуляція, кінець рядка).
Виведення рядка символів на екран – здійснюється функцією puts(), параметром якої є покажчик на початок того рядка, з якого виводяться дані. Функція повертає кількість виведених символів:
int puts(char *string);
10.1.4. Функції обробки рядків
Для обробки рядків призначені функції, прототипи яких утримуються у файлі string.h. Найбільш популярні з них наведені в таблиці 10.2.
Табл. 10.2. Функції обробки рядків
Прототип |
Опис |
int strlen(char*s) |
довжина рядка, але без нуль-символу кінця рядка |
char *strcmp(char*s1, char*s2) |
порівнює рядки s1 і s2, повертає 0 (рівні), < 0 (s1<s2), > 0 (s1 > s2) |
char *strcpy(char*s1, char*s2) |
копіювання рядка s2 у рядок s1; повертає s2 |
char *strcat(char*s1, char*s2) |
додає s2 до рядка s1; перший символ s2 записується поверх нуль-символу s1; повертає s1 |
char *strchr (char*s, char ch) |
пошук у рядку s першого входження символу ch |