Функції користувача і класи пам'яті.
Тип String в консольних додатках.
Б) Перетворення з String в просту змінну типу char.
А) Перетворення з масиву char в String і навпаки.
Як згадувалося вище, для перетворення масиву char до типу String досить просто привласнити його змінної типу String:
Зворотне ж перетворення автоматично не робиться. Для його здійснення використовується метод c_str () типу String. Він створює тимчасовий масив char, який створюється тільки на час виполненіяоператора. що містить цей метод:
// WinExec - запуск програми з заданим ім'ям
// Функція WinExec вимагає, щоб ім'я було масивом char
Якщо ж потрібно використовувати отриманий масив char в подальшій програмі, його треба скопіювати в "постійний" (оголошений) масив char:
Таким чином, для введення масивів char в віконних додатках необхідно використовувати функцію strcpy і метод c_str ():
При такому присвоєнні потрібно вказати номер символу в рядку, який буде присвоєно:
Зворотне ж присвоювання не викликає труднощів:
в) Перетворення String і числових типів.
Функції перетворення були описані вище в темі "Функції введення-виведення, Введення-виведення в віконних додатках":
String IntToStr (int x); - int à String
int StrToInt (String S); - String à int
double StrToFloat (String S); - String à double
String FloatToStr (double x); - double à String
String FloatToStrF (double x, Format, int p, int d);
- double à String із зазначенням формату і точності.
int i = StrToInt (s); // i = 123; автоматичного
// перетворення String в тип int не відбувається
// (хоча навпаки - відбувається)
Приклад 2: Вивести в один рядок Memo1 змінні N1 і N2 типу int, розділяючи їх пропуском:
// явне перетворення типів необхідно,
// інакше знак + не був би витлумачений по типу String
У командному додатку використання типу String вимагає підключення бібліотек (досить бібліотеки vcl):
(Цей рядок може бути додана автоматично).
Для консольного вводу-виводу String повинен бути перетворений в масив char і / або навпаки (див. Вище). Зокрема, введення з консолі краще проводити спочатку в допоміжний масив char, а вже звідти (якщо потрібно) - в String.
Завдання 9. У введеної з консолі рядку замінити всі прогалини на символи підкреслення, використовуючи тип String.
puts ( "Vvedite stroku s probelami:");
for (i = 1; i<=t.Length(); i++)
Зі збільшенням обсягу програми її код стає все більш складним. Одним із способів боротьби зі складністю будь-якого завдання є її розбиття на частини.
В мові програмування С, як і в будь-якій мові програмування високого рівня, завдання може бути розбита на більш прості підзадачі за допомогою підпрограм-функцій. Після цього програму можна розглядати в більш укрупненому вигляді - на рівні взаємодії створених підпрограм. Використання підпрограм в коді програми веде до спрощення її структури.
Поділ програми на підзадачі дозволяє також уникнути надмірності коду, оскільки функцію записують один раз, а викликати її на виконання можна багаторазово з різних точок програми. Крім того, спрощується процес налагодження програми, що містить підпрограми. Часто використовувані функції можна поміщати в окремі бібліотеки.
Наступним кроком може бути угруповання функцій і пов'язаних з ними даних в окремі файли (модулі), компільовані окремо. Утворені в результаті компіляції об'єктні модулі об'єднуються в виконувану програму за допомогою компоновщика (Linker). Розбиття на модулі зменшує час перекомпіляції і полегшує процес налагодження, приховуючи несуттєві деталі за інтерфейсом модуля, що дозволяє налагоджувати програму по частинах. Для того щоб використовувати модуль, досить знати тільки його інтерфейс (назви функцій і їх параметри), а не всі деталі його реалізації.
Поділ програми на максимально відокремлені частини (підпрограми) є досить складним завданням, які мають вирішуватися на етапі проектування програми.
На відміну від інших мов програмування високого рівня в мові Сі немає поділу на підпрограми-процедури та підпрограми-функції, тут будь-яка підпрограма є функцією.
Функція - це іменована послідовність інструкцій, що виконує будь-яке закінчила дію, до якої можна звернутися, передавши через параметри вихідні дані і отримавши один або кілька результатів його роботи.
"Основна частина" програми в мові Сі також вважається функцією - функцією main (основна, головна), з якої і починається виконання програми. Функціями є і обробники подій (наприклад, Button1Click) в віконних додатках. Таким чином, будь-яка програма на мові програмування С складається з функцій.