Дипломная работа: Мова програмування С++
Задачею препроцесора є перетворення (доповнення) тексту програми до початку її компіляції. Правила препроцесорної обробки визначаються програмістом за допомогою директив препроцесора. Директива починається з ”#” (¢дієс¢, ¢шарп¢). Наприклад,
1) #define - визначає правила заміни в тексті:
#define ZERO 0.0
Це означає, що кожне використання у програмі імені ZERO буде замінюватися на 0.0.
2) #include< ім¢я заголовного файла> - передбачена для залучення до тексту програми тексту файлу з каталогу “Заголовних файлів” INCLUDE , які постачаються разом зі стандартними бібліотеками. Кожна бібліотечна функція чи об¢єкт С++ має відповідний опис в одному з заголовних файлів (наприклад, iostream.h, stdio.h, conio.h, math.h ). Список заголовних файлів визначається стандартом мови. Використання директиви include не під¢єднує відповідну стандартну бібліотеку, а лише дозволяє долучити до тексту програми описи із зазначеного заголовного файлу. В нашому випадку препроцесор обробляє директиву #include <iostream.h> і під’єднує до вихідного тексту програми засоби для обміну з дисплеєм. Далі файл передається на компіляцію, у ньому виявляються синтаксичні помилки, які потрібно усунути програмістові. Після безпомилкової компіляції текст програми перекладається компілятором на машинну мову, далі отримуємо об’єктний файл з розширенням *.obj .Підключення об ¢єктних кодів файлів з визначеннями необхідних стандартних функцій і об¢єктів з бібліотеки відбувається на етапі компоновки, тобто після компіляції. У об¢єктному коді створюваної програми ніби замуровуються дірки за допомогою кодів стандартних функцій. Хоча в заголовних файлах містяться всі описи стандартних функцій, до коду програми залучаються лише функції й об¢єкти, які використовуються в програмі.
Після компоновки утворюється модуль програми з розширенням *.ехе .
Отже, в нашому випадку, виконавши директиви, препроцесор сформує повний текст програми, компілятор створить об’єктний файл welcome.obj , за замовчуванням обравши для нього зазначене ім’я, а компоновщик (редактор зв’язків Linker) доповить програму бібліотечними функціями, наприклад, для роботи з об’єктом cout і побудує модуль welcome.exe , запустивши, який ми одержуємо на екрані бажану фразу. Схема етапів виконання програми наведена на рис. 1.1.
1.3 ПОРЯДОК ЗАПУСКУ ПРОГРАМИ
1. Відкрийте нове вікно редагування (File > New) і надайте йому ім’я Welcome (File > Save As);
2. У новому вікні наберіть текст програми, що наводиться у Прикладі 1.
3. Відкомпілюйте програму (Compile > Compile або (Alt+F9 )). В разі повідомлень про помилку, перевірте текст програми і усуньте невідповідності. Щоразу, вносячи зміни у вихідний текст програми, зберігайте файл (File > Save або F2 ). Після чого змінену програму слід відкомпілювати;
4. Запуск відкомпільованої програми здійснюється за командою (Run > Run або Ctrl+F9 ). Якщо з моменту останньої компіляції вихідний код було модифіковано, ця команда виконає послідовно компіляцію і компоновку. Результат виконання програми можна переглянути, натиснувши комбінацію клавіш Alt+F5 .
2. Форматний ввід/вивід у мові С/С++
2.1 ФУНКЦІЇ ВВОДУ/ВИВОДУ МОВИ С
У мові С++ немає вбудованих засобів вводу/виводу – вони здійснюються за допомогою функцій, типів та об’єктів, що містяться у стандартних бібліотеках. Використовується два способи: функції, успадковані з мови С та об’єкти С++.
Основні функції вводу/виводу в стилі С, опис яких міститься у заголовному файлі <stdio.h> :
рrintf (<керуючий рядок>, <список аргументів>);
Керуючий рядок береться у лапки і вказує компілятору вигляд інформації, що виводиться. Вона може містити специфікації перетворення і керуючи або escape-символи.
Специфікація перетворення має такий вигляд:
% <прапор > <розмір поля . точність > специфікація ,
де прапор може набувати наступних значень:
- вирівнювання вліво числа, що виводиться (за замовчуванням виконується вирівнювання вправо);
+ виводиться знак додатного числа;
розмір поля – задає мінімальну ширину поля, тобто довжину числа. Якщо ширини поля недостатня, автоматично виконується його розширення;
точність – задає точність числа, тобто кількість цифр його дробової частини;
специфікація вказує на вигляд інформації, що виводиться. У таблиці 2.1 наведено основні формати функції друку.
Таблиця 2.1
Формат | Тип інформації, що виводиться |
%d | десяткове ціле число |
% і | для виведення цілих чисел зі знаком (printf (“a=%i”, -3)); |
%u | для виводу беззнакових цілих чисел (printf(“s=%u”, s)) |
%c | один символ |
%s | рядок символів |
%e | число з плаваючою крапкою (експоненційний запис) |
%f | число з плаваючою крапкою (десятковий запис) (printf(“b=%f\n, c=%f\n, d=%f\n”, 3.55, 82.2, 0.555 )); |
%u | десяткове число без знака |
Керуючий рядок може містити наступні керуючі символи:
\n – перехід на новий рядок;
\t – горизонтальна і \v – вертикальна табуляція;
\b – повернення назад на один символ;
\r – повернення на початок рядка;