
2.2.2. Hello World — консольна програма
Консольна програма Windows подібна до прогами DOS, але тільки зовнішньо. Вона працює у “вікні MS-DOS”, яке насправді у 32-бітних системах Windows таким не є. Консольна програма – 32- бітова і запустити її звичайною 16-бітовою DOS неможливо. Але подібно до примітивної програми DOS, вона орієнтована на символьний ввід-вивід, що робить консольні програми корисними при вивченні стандартних функцій вводу-виводу мови С і класів стандартних потоків C++.
Щоб створити в C++Builder консольну програму, виконаємо наступні дії:
Виберіть у головному меню File / New...; на екрані зявиться багатосторінкова діалогова панель New Items (рис. 9). Цей діалог є інтерфейсом так званого сховища обєктів C++Builder (Object Repository). Крім існуючих обєктів тут можна зберігати свої власні форми, діалогові панелі та інші елементи, необхідні для повторного використання у нових програмах.
На сторінці New виберіть Console Wizard і натисніть кнопку ОК. Для 4-ої версії компілятора, на панелі “консольного майстра” залиште установки по замовчування і натисніть кнопку Finish. Якщо ви працюєте у C++Builder 5, зафіксуйте стан прапорців у відповідності з рис. 9 (внизу). C++Builder створить проект консольної програми і відкриє вікно редактора коду з файлом Project1.cpp або Unit1.cpp (Unit1.c) в залежності від версії.
Рис. 9 Діалог New Items.
Виберіть у головному меню File / Save Project as... і збережіть файли проекту в окремому каталозі (папці). Назвіть проект і модуль, наприклад HWConsole – необхідні розширення файлів C++Builder добавить автоматично. Для нашого випадку вхідний файл має такий вигляд:
#pragma hdrstop
#include <condefs.h>
//--------------------------
#pragma argsused
int main(int argc, char* argv[ ])
{
return 0;
}
Стрічка #include <condefs.h> необхідна тільки для C++Builder 4-ї версії. Для C++Builder 5 вона не потрібна. Модифікуйте код файлу HWConsole.срр так, щоб він мав наступний вигляд (стрічки, які потрібно ввести, відмічено жирним шрифтом).
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <condefs.h>
//------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
printf("Hello World from Console!\n");
printf("Press any key...");
getch() ;
return 0;
}
Збережіть файл (File Save в головному меню) і натисніть кнопку Run на панелі інструментів (кнопка із зеленою стрілкою). C++Builder компілює вхідний файл, здійснює компонування файлу для виконання і запускає програму. На екрані з’являється вікно MS-DOS, показане на рис. 10. Якщо ви натиснете довільну клавішу на клавіатурі, програма завершиться і її вікно закриється. Закрийте проект (File / Close All в головному меню).
На цьому створення консольної програми завершено. Для цього потрібно було ввести вручну п’ять стрічок коду на С.
Перші дві з них – директиви #include для включення у програму два заголовочних файли стандартної бібліотеки. Файл stdio.h містить прототипи загальновживаних функцій буферизованого вводу-виводу (тут використовувалась функція prinf () – форматований вивід на консоль). Файл соnio.h необхідний для включення очікування натискання клавіші для низькорівневої функції вводу-виводу символа getch (), символ, який повертає функція, ми ігнорували.
Рис. 10. Вікно програми HWConsole.exe
Функція main () присутня (інколи неявно) в кожній програмі C/C++ і є її вхідно. точкою. Саме цій функції передається управління після завантаження та ініціалізації програми. Директива препроцесора #pragma в принципі не обов’язкова, але в деяких випадках її відсутність приводить до сповільнення роботи програми. Стрічки, які починаються із символів //, є коментарями і не враховуються при компіляції файла.
Зауваження
Написана програма є, по-суті, програмою на мові С. У 5-ій версії компілятора при можливості можна написати справжню програму на С і скомпілювати її як таку, проблем при цьому не виникає – вхідна мова задається прямо на панелі консольного майстра. В 4-ій версії ситуація трохи складніша. Справа в тому, що в C++Builder 4 основний вхідний файл консольної програми повинен бути обовязково срр-файлом і визначати функцію main. Коли необхідно в якості головної програми використогвувати саме с-файл, необхідно зробити деякі додаткові процедури. А саме, створити з допомогою Console Wizard новий проект. Видалити з вхідного файлу функцію main() і додати директиву #define main, щоб файл прийняв наступний вигляд:
#pragma hdrstop
#include <condefs.h>
#define main
Виберіть у головному меню File / New...(або натисніть кнопку New – чистий лист на панелі інструментів), появиться діалог New Items. Виберіть на сторінці New значок Unit; до проекту буде додано новий модуль початкового коду з іменем Unit1.cpp.). (Можна відкрити менеджер проекту, щоб було видно всі зміни в складі вхідних файлів – для цього необхідно вибрати в меню View / Project Manager). Видаліть із файлу все, крім директиви hdrstop, і введіть код програми:
//---------------------------------
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
//----------------------------
main ()
{
printf("Hello World - С main file.\n");
getch();
return 0;
}
Збережіть файл під яким-небудь іншим іменем, явно вказавши розширення .с в діалозі Save As... Компілюйте і запускайте програму, натиснувши кнопку Run панелі інструментів. Ще раз зауважимо, що ця додаткова процедура необхідна тільки для 4-ої версії. C++Builder 5 здійснює вказані операції автоматично.