- •Обчислювальна техніка та алгоритмічні мови Методичні вказівки до лабораторних робіт
- •Загальні відомості
- •Структура програми
- •Типи даних
- •Умовний оператор if-else
- •Оператор вибору switch
- •Оператори циклу
- •Варіанти
- •Методичні вказівки
- •Лабораторна робота 3. «Функції. Форматне введення-виведення даних»(2 год.)
- •Теоретичні відомості
- •Алгоритм обчислення ряду
- •Постановка задачі
- •Ступеневі ряди
- •Форматне виведення даних в с
- •Форматне введення в с
- •Постановка задачі
- •Варіанти
- •Методичні вказівки
- •Лабораторна робота 4.«Одновимірні масиви.Покажчики. Рядки»(4 год.)
- •Теоретичні відомості Масиви й покажчики
- •Записи «покажчик-зсув» і «покажчик-індекс»
- •Рядки як одновимірні масиви
- •Передача рядка у функцію
- •Введення/виведення символів і рядків
- •Бібліотечні функції для роботи з символами та рядками
- •Постановка задачі
- •Варіанти
- •Передача масиву у функцію
- •Постановка задачі
- •Варіанти
- •Методичні вказівки
- •Лабораторна робота6. «Динамічні одновимірні масиви»(2 год.)
- •Теоретичні відомості Динамічні масиви
- •Видалення елемента із масиву
- •Вставка елемента в масив
- •Перестановка двох елементів
- •Циклічна перестановка елементів
- •Постановка задачі
- •Варіанти
- •Методичні вказівки
- •Лабораторна робота7. "Структури: складені типи даних"(2 год.)
- •Теоретичні відомості
- •Постановка задачі
- •Варіанти
- •Методичні вказівки
- •Література
Передача рядка у функцію
Якщо потрібно передати в деяку функцію рядок, то передається як параметр ім'я рядка-масиву або покажчик на рядок.
Використання імені масиву. Запишемо визначення функції, що друкує рядок, і виклик цієї функції:
void print(char client[]){
cout << "Name of client: " << client << endl;
}
...
int main(){
char client1[] = "Serg";
...
print(client1);
...
Використання покажчика на рядок. Якщо є покажчик на масив-рядок:
char *client1Ptr= client1;
то можна передати у функцію покажчик:
print(client1Ptr);
Результат буде тим же, як і при передачі імені масиву, оскільки масив передається у функцію через посилання, тобто через покажчик.
Введення/виведення символів і рядків
Розглянемо функції, якіпризначені для введення/виведення символів і рядків і належать до стандартної бібліотеки (заголовний файл 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);
Бібліотечні функції для роботи з символами та рядками
У мовах С/С++ передбачені спеціальні функції, призначені для роботи із символами (табл. 1). Частина функцій перевіряють одиночні символи й повертають ненульове значення (true) або нуль (false). Наприклад, isdigit(c) дозволяє перевірити, чи є зміннаc однієї із цифр між 0 і 9. Інша частина функцій у таблиці 10.1 забезпечує конвертування регістра букв. Так, tolower(c) повертає версію букви c у нижньому регістрі, тобто малу літеру. Наприклад, інструкція cout <<tolower('F') виведе на екран символ f.
Наступний фрагмент коду використовується як елемент циклу do-while, у якому користувач для продовження циклу повинен увести 'Y'. Цикл буде виконуватися незалежно від того, у якому регістрі уведений символ: 'y' або 'Y'.
do{ // тіло циклу
}
while (toupper(choice) == 'Y')
Параметром функцій у таблиці 5.1 є змінна c типу char або int, а для звертання до функцій підключається заголовний файл ctype.h.
Табл. 1. Функції для роботи із символами
Тип |
Функція |
Опис |
int |
isalnum(c) |
повертає true, якщо c – буква або цифра |
int |
isalpha(c) |
повертає true, якщо c – буква |
int |
isblank(c) |
повертає true, якщо c – пробіл або символ табуляції |
int |
isdigit(c) |
повертає true, якщо c – цифра |
int |
islower(c) |
повертає true, якщо c – символ у нижньому регістрі |
int |
isupper(c) |
повертає true, якщо c – символ у верхньому регістрі |
int |
isspace(c) |
повертає true, якщо c – пробіл, табуляція, повернення каретки, новий рядок |
int |
tolower(c) |
повертає символ c у нижньому регістрі |
int |
toupper(c) |
повертає символ c у верхньому регістрі |
Для обробки рядків призначені функції, прототипи яких утримуються у файлі string.h. Найбільш популярні з них наведені в таблиці 2.
Табл. 2. Функції обробки рядків
Прототип |
Опис |
int strlen(char*s) |
Довжина рядка, але без нуль-символу кінця рядка |
int 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 |
