Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C _Учебник_МОНУ

.pdf
Скачиваний:
199
Добавлен:
12.05.2015
Размер:
11.12 Mб
Скачать

Середовище програмування C++ Builder

59

2.2 Робота у консолі

2.2.1 Основні функції роботи у консольному режимі

Консольний додаток – це програма, для якої пристроєм введення інформації є клавіатура, а пристроєм виведення – монітор у символьному режимі.

Консольний режим − це режим створювання програм користувача без використання графічного інтерфейсу, а з відображенням лише символьної інформації. В операційній системі робота у консольному режимі здійснюється засобами командного рядка.

Виконування консольного додатка відбувається у чорному консольному екрані. Для введення даних слід використовувати спеціальні команди. Під час виконування вони скомандують програмі зупинитися й очікувати, допоки користувач уведе значення і натисне клавішу <Enter>. Виведення даних виконується у теж само чорне вікно і завжди потребує вказівок та пояснень для користувача.

Виведення означає, що певний текст чи то значення певних змінних висвітяться на екрані і користувач зможе їх прочитати. Введення означає, що користувач задає значення змінної, яке буде використано у програмі.

Перед тим як розпочати створювання консольного програмного додатка, слід розглянути функції, які забезпечують введення даних з клавіатури та виведення результатів на екран.

Для виведення тексту у С++ найчастіш використовується команда cout<< з текстом, який записується у подвійних лапках, наприклад:

cout << "Текст ";

Для виведення значення змінної також використовується команда cout<< із зазначенням імені змінної без лапок. Наприклад, щоб вивести значення змінної х, слід написати:

cout << x;

Для виведення значення змінної х з коментарем слід написати: cout << "Значення змінної x: " << x;

Після кожного виведення курсор залишається на тому ж самому рядку і наступне виведення виконується поряд з попереднім. Якщо треба перемістити курсор на новий рядок після виведення даних, слід написати <<endl наприкінці команди:

cout << " Значення змінної x: " << x << endl;

Для введення значення змінної зазвичай використовується команда cin>>: cin >> x;

Після того як програма завершила свою роботу, чорне вікно закривається. Зазвичай це трапляється настільки швидко, що користувач не встигає побачити результати виконання програми. Щоб зупинити програму і надати користувачу можливість прочитати результати, використовується функція getch(), яка очікує на натиснення будь-якої клавіші, наприкінці програми перед return 0:

getch();

60

Розділ 2

Аналогічну дію виконує функція сin.get().

Зверніть увагу! Щоб у програмі можна було використовувати команди cin та cout, на початку програми слід написати:

#include <iostream.h>

Для використання функції getch() слід на початку програми написати:

#include <conio.h>

Наступна програма демонструє консольне виведення:

Текст програми:

1//Програма використовує команду cout

2#include <iostream.h>

3int main()

4{

5cout<<"Привіт!\n";

6cout<<"Це 5: " << 5 << "\n";

7cout<<"Маніпулятор endl переводить курсор на новий рядок"<<endl;

8cout<<"Велике число:\t" << 70000 << endl;

9cout<<"Сума 8 + 5:\t" << 8+5 << endl;

10cout<<"Дріб:\t\t" << (float) 5/8 << endl;

11cout<<"Дуже велике число:\t" << (double) 7000*7000 <<endl;

12cin.get();

13return 0;

14}

Результати виконання програми:

Привіт!

Це 5: 5

Маніпулятор endl переводить курсор на новий рядок

Велике число:

70000

Сума 8 + 5:

13

Дріб:

0.625

Дуже велике число:

4.9e+07

Розглянемо детальніше наведену програму.

У рядку 2: інструкція #include <iostream.h> долучає файл iostream.h

до коду програми. Це потрібно для використання cout та пов‟язаних з ним функцій.

Рядок 3 містить заголовок функції main(). Доволі часто у консолі функція main() не має аргументів, однак, якщо треба при викликанні програми передати їй якісь параметри, синтаксис функції матиме вигляд

int main(int argc, char* argv[])

Тут перший аргумент argc задає кількість передаваних параметрів, а другий, argv, є вказівником на масив символьних рядків, які містять ці аргументи. За замовчуванням у консольному додаткові С++ Builder функція main() має саме такий синтаксис. Для наведених у посібнику прикладів консольних програм синтаксис цієї функції є несуттєвим, тобто обидва синтаксиси є працездатними.

Середовище програмування C++ Builder

61

Урядку 5 показано найпростіший спосіб виведення рядка cout. Символ \n є спеціальним форматним знаком. Він вказує cout перейти на новий рядок (аналогічно до endl).

Урядку 6 команді cout передаються три значення і кожне з них відокремлюється знаками <<. Перше значення – рядок "Це 5: ". Зверніть увагу на пробіл після двокрапки. Цей пробіл є часткою рядка. Далі йде значення 5 і символ переведення рядка (завжди у подвійних чи одинарних лапках). Внаслідок цього на екран виводиться:

Це 5: 5

Урядку 7 виводиться на екран інформаційне повідомлення (рядок), після чого використано маніпулятор endl для переведення курсора на новий рядок.

Урядку 8 використовується ще один форматний символ: \t. Він вставляє табуляцію (пропуск у рядку до певної позиції). Рядок 9 показує, що можна виводити не лише цілі, а й довгі цілі числа.

Рядок 9 ілюструє можливість виконання обчислення суми при виведенні

за допомогою cout. Обчислюється результат суми 8+5, і cout виводить на екран значення 13.

Урядку 10 виконується обчислення і виведення виразу 5/8. Перед цим написано (float), яке повідомляє cout, що йдеться про дійсне число з десятковою крапкою.

Урядку 11 обчислюється і виводиться результат виразу 7000*7000 і (double) повідомляє cout, що результат слід вивести в експоненціальному вигляді. У наведеній програмі 4.9е+07 означає число 4.9*107=49000000.

Окрім специфічних команд С++: cin та cout (вони мають назву команд потокового введення/виведення), – існують команди для введення/виведення, які прийшли до С++ з С: scanf та printf. Ці команди мають назву команд форматного введення/виведення.

Для того щоб програма могла використовувати згадані команди, на поча-

тку програми слід долучити директиву #include <stdio.h> .

У загальному вигляді функція scanf для введення значення однієї змінної виглядає як

scanf(<формат>, &<змінна>);

де: формат − рядок специфікаторів формату у подвійних лапках. Найбільш поширеними специфікаторами є: %i − для введення цілих чисел, %f − для введення дійсних чисел, %s − для введення рядка символів;

змінна − це ім‟я змінної, значення якої вводиться.

Знак & є елементом синтаксису і означає операцію отримання адреси змінної у пам‟яті. Докладніше про адреси змінних див. у розд. 6.

Наприклад, функція scanf("%i", &kol) вводить значення цілої змінної kol, а функція scanf("%i %f", &kol, &vart) − значення цілої змінної kol і

дійсної змінної vart.

При виконуванні функції scanf() відбувається таке. Програма призупиняє роботу і очікує, допоки користувач набере на клавіатурі рядок символів та

gets() і puts().

62

Розділ 2

натисне клавішу <Enter>. Після натиснення клавіші <Enter> функція scanf() перетворює введений рядок відповідно до специфікаторів формату на дані й записує їх до змінних, адреси яких зазначено. Приміром, після виконання функції

scanf("%f", &cena);

і введення з клавіатури рядка 34.76 змінна cena набуде значення 34.76.

Для форматного виведення інформації в консольному режимі є функція printf(). Загальний вигляд функції є такий:

printf(<формат>, <список_змінних>);

Тут формат задає пояснювальний текст та вигляд значень змінних, імена яких задає параметр список_змінних. Параметр список_змінних не є обов‟язковим і являє собою послідовність розділених комами змінних, значення яких виводяться. Наприклад, функція printf("x=%7.3f", x) виводить дійсне число х у заданому форматі з трьома цифрами дійсної частини числа після десяткової крапки.

Специфікатор формату задає вигляд виведеного результату. В табл. 2.7 наведено найбільш поширені специфікатори формату. Необов‟язковий параметр специфікатора n, замість якого слід підставити десяткове число, задає розмір поля виведення; параметр m − розмір поля для виведення цифр дійсної частини.

 

 

Таблиця 2.7

 

Спеціфікатори формату

 

 

 

Специфікатор

Тип змінної

Формат виведення

%nd

int

десяткове зі знаком

%n.mf

float чи double

дійсне з фіксованою крапкою

%ne

float чи double

дійсне з рухомою крапкою

%nc

char

символ

%ns

char*

рядок

Існує ще одна пара функцій С для введення-виведення: Використовуються ці функції лише для рядків.

Функцію puts() часто використовують для виведення на екран повідомлень. Вона після виведення автоматично переводить курсор на початок наступного рядка. Функція puts() має лише один параметр − текст повідомлення. Наприклад, функція

puts("Введіть значення, \n змінної x ");

виведе два рядки:

Введіть значення змінної x

і переведе курсор на початок наступного рядка. Для обмеження рядків застосовується спеціальна послідовність символів.

Докладніше про введення/виведення рядків див. у розд. 7.

Середовище програмування C++ Builder

63

2.2.2Послідовність створювання консольного програмного додатка

Щоби створити в С++ Builder консольний програмний додаток, слід виконати такі дії. Спочатку в меню File слід обрати команду New… і на багаторядковій панелі New Items діалогового вікна (див. рис. 2.7) клацнути по значкові

Console Wizard.

Рис. 2.7. Діалогове вікно New Items

Унаслідок виконаних дій на екрані з‟явиться вікно Console Wizard (див. рис. 2.8). У цьому вікні можна обрати мову програмування і зазначити, чи буде використовуватись та чи інша бібліотека. Після того як буде задано параметри створюваного консольного додатка, слід клацнути по кнопці ОК.

Рис. 2.8. Вікно Console Wizard

Як наслідок С++ Builder створить проект консольного додатка – і на екрані з‟явиться вікно редактора коду Unit1.cpp (див. рис. 2.9), в якому буде створено шаблон консольного додатка чи то функція main().

64

Розділ 2

Рис. 2.9. Вікно редактора коду Unit1.cpp

Розпочинається консольний додаток директивою #pragma hdrstop, яка забороняє виконування попередньої компіляції долучених файлів.

Після цієї директиви можна вставити директиви #include, які забезпечують долучення потрібних заголовних файлів. Наприклад #include <stdio.h> долучає заголовний файл, який містить прототипи функцій введення/виведення, у тому числі printf(). Файл conio.h потрібен, оскільки для очікування натиснення клавіші було застосовано функцію введення символу getch().

Директива #pragma arqsused скасовує попередження компіляції про те, що аргументи, зазначені у заголовку функції, не використовуються.

Функція main() є присутня у кожній програмі, саме через неї передається керування після завантаження та ініціалізації програми.

Слід звернути увагу на те, що консольний додаток розробляється у Windows, а виконується як програма DOS. Оскільки в DOS та Windows літери кирилиці мають різні коди, це призводить до того, що консольний додаток замість повідомлень на кирилиці виводить “абракадабру”.

Для зберігання проекту слід обрати у головному меню File/Save Project asі зберегти файли проекту в окремому каталозі (теці).

Для компіляції та запуску програми на виконання треба натиснути кнопку

Run на інструментальній панелі чи функціональну клавішу <F9>, після чого на екрані з‟явиться прототип вікна MS DOS.

Якщо натиснути будь-яку клавішу на клавіатурі, – програма завершиться й її вікно закриється.

Середовище програмування C++ Builder

65

Приклад програми в консольному режимі

Приклад 2.4 Написати консольну програму для переведення певного введеного дійсного числа з клавіатури до грошового формату. Наприклад, число 23.5 має бути приведено до вигляду 23 грн. 50 коп.

Розв‟язок. Для виведення повідомлень використовуватимемо функції printf та сprintf; для введення даних з клавіатури – функцію scanf, а для виведення результатів − функцію printf. Функція сprintf, на відміну від printf, дозволяє задавати колір літер попередньо заданою функцією textcolor і колір фону літер – функцією textbackground. Функція clrscr(); очищує екран.

Вигляд вікна редактора коду з текстом програми:

Результати роботи програми у консольному додатку:

66

Розділ 2

Питання та завдання для самоконтролю

1)Поясніть поняття RAD, GUI та IDE.

2)З яких двох етапів складається створення програм у С++ Builder?

3)Перелічіть елементи вікна середовища C++ Builder.

4)Для чого потрібна форма проекту?

5)Яке призначення властивостей, подій та методів компонентів?

6)Яке вікно С++ Builder призначене для записування текстів програм?

7)В який спосіб можна здійснювати перемикання поміж вікнами форми

йредактора коду?

8)Для чого потрібна палітра компонентів?

9)Перелічіть компоненти, які Ви вже знаєте.

10)Для чого потрібний інспектор об‟єктів?

11)В якому вікні задають властивості компонентів?

12)Назвіть основне призначення сторінки подій Events.

13)Перелічіть події, які Ви вже знаєте.

14)Назвіть основні властивості, притаманні більшості компонентів.

15)Вкажіть основні методи стандартних компонентів.

16)З яких основних файлів складається програмний проект у С++ Builder?

17)Яке ім‟я за замовчуванням надається головному файлу програми?

18)Назвіть основне призначення заголовного файла та файла реалізації.

19)За допомогою якої директиви препроцесора до програми долучають бібліотечні модулі (заголовні файли)?

20)В яких бібліотеках містяться математичні функції?

21)Яке призначення мають фігурні та круглі дужки в С++?

22)Назвіть послідовність створювання програмного проекту у C++

Builder.

23)В який спосіб можна зберегти програмний проект?

24)В які способи можна запустити проект на виконання?

25)В які способи можна здійснити перехід поміж вікном форми і вікном редактора коду?

26)Що таке консольна програма?

27)Які функції введення-виведення даних у консольному режимі Вам ві-

домі?

28)Які заголовні файли слід долучити для використання функцій введен- ня-виведення?

29)Вкажіть призначення і можливий синтаксис функції main().

30)Назвіть послідовність створювання консольного проекту в C++ Builder.

Розділ 3

Елементи мови С++

3.1 Історія С++

Мова програмування − формалізована мова, призначена для описування алгоритмів розв‟язування задач на ЕОМ. Мова програмування потрібна, щоб записувати алгоритм у термінах, зрозумілих компіляторові, який, своєю чергою, перекладе його на зрозумілу процесорові машинну мову. Як і кожна людська мова, мова програмування складається з алфавіту (вживаних символів), слів (елементарних конструкцій, які називають лексемами), словосполучень (виразів) та речень (операторів). Лексеми утворюються із символів, вирази – із лексем та символів, а оператори – із символів, виразів та лексем.

C++ є результатом еволюції мови С, створеної Денісом Рітчі та Брайаном Керніганом. Ще на початку 70-х років минулого сторіччя С набула широкої популярності як мова розробляння операційної системи UNIX. Сьогодні більшість операційних систем написано мовою С та/чи С++. Мова С є доступною для більшості систем, до того ж вона є машинонезалежною. За ретельного проектування можна писати С-програми, які можна переносити на більшість комп‟ютерів.

Широке використання С на комп‟ютерах різних апаратних платформ призвело до появи різноманітних варіацій мови. Це зумовило потребу стандартизації мови і 1990 року відповідний документ стандарту ANSI/ISO 9899: 1990 було розроблено.

Мову С++ розробив Бьєрн Страуструп на початку 80-х років минулого сторіччя. Порівняно з С, мова С++ набула багато “прикрас”, головною з яких є можливість об‟єктно-орієнтованого програмування. Об‟єкти є за своєю суттю програмними компонентами, які моделюють предмети реального світу. Модульний, об‟єктно-орієнтований підхід до проектування та реалізації програмного забезпечення дозволили полегшити написання складних потужних програмних проектів. Об‟єктно-орієнтовані програми є набагато простіші для розуміння, виправлення та модифікації.

1991 року на основі С і С++ фірмою Sun, а саме Джеймсом Гослінгом, було створено мову Java. Метою Java на початку було керування інтелектуальною побутовою технікою, а згодом, завдячуючи шаленому вибухові популярності Word Wide Web, її швидко було перекваліфіковано і представлено 1995 року як потужний засіб розробляння програм для розв‟язування різноманітних сучасних задач. Сьогодні Java використовується для створювання динамічного й інтерактивного вмісту Web-сторінок, розширювання можливостей Webсерверів, створювання програм для мобільних телефонів та побутових пристроїв, розробляння широкомасштабних програмних додатків на підприємствах тощо. Подібні можливості мають сучасні версії С++, як-от Microsoft® Visual C++®.NET та Borland® C++ BuilderТМ. На основі С++ і Java для платформи .NET

68

Розділ 3

було розроблено мову С#, яка, подібно до Microsoft® Visual C++®.NET та Visual Basic.NET, дозволяє інтегрувати в програмні додатки можливості Internet та Web, писати компоненти програмного забезпечення мовою, яку знає розроблювач, а потім будувати додатки, комбінуючи ці компоненти з компонентами, написаними будь-якою іншою .NET мовою.

Еволюція C++ Builder розпочинається з 1997 року, і майже кожного року випускаються оновлені й оптимізовані версії. Приміром, 2002 року вийшла вер-

сія C++ Builder Builder Enterprise 6.0 for Windows NT\2000\XP + Update, як по-

тужний і якісний інструмент реалізації RAD-стилю (Rapid Application Development – швидке розробляння додатків) стосовно самих різних класів задач, включаючи роботу з Internet, ActiveX, з проектами рівня підприємств, і все це – з використанням стандартного C++. Borland C++ Builder тісно інтегрований з обома базовими технологіями створення розподілених систем – CORBA та COM. Крім того, Borland C++ Builder є сумісний з Visual C++ та підтримує більшість технологій сучасної розробки. 2005 року Borland випустила Borland Developer Studio 2006, який включає у себе Borland C++ Builder 2006 з оптимі-

зованим керуванням конфігурацією та налагодження. Borland Developer Studio 2006 є повноцінним комплектом, який містить Delphi, C++Builder та C#Builder. 2007 року CodeGear випустила C++ Builder 2007, в якому реалізувала повну підтримку API Microsoft Windows Vista, збільшила повноту відповідності стандартові ANSI C++, прискорила розробку до 5-ти разів, долучила підтримку MSBuild, архітектур баз даних DBX4 та “VCL для Web”, яка підтримує AJAX. Підтримка API Microsoft Windows Vista включила додатки, оформлені у стилі

Vista, і підтримку VCL для Aero та Vista Desktop. CodeGear RAD Studio 2007 містить C++ Builder 2007 та Delphi. Також 2007 року CodeGear відродила марку “Turbo” і випустила дві “Turbo” версії C++ Builder: Turbo C++ Professional та Turbo C++ Explorer (безкоштовна), основаних на Borland C++ Builder 2006. На-

прикінці 2008 року компанія CodeGear випустила нову версію RAD Studio, до якої увійшли Delphi 2009 та С++ Builder 2009. У складі RAD Studio 2009 року вийшов C++ Builder 2010, а 2010 року вийшла RAD Studio XE, яка дозволяє швидко і наочно розробляти додатки з графічним інтерфейсом для Windows,

.NET, PHP та веб-додатків. У C++ Builder XE можна створювати динамічні додатки для будь-яких задач: від активної взаємодії з базами даних до проектування додатків з графічним інтерфейсом для керованих СУБД багатоланкових систем, настільних систем, сенсорних екранів, веб-додатків, веб-служб та багато ін.

Зауважимо, що C++ Builder спочатку створювалася тільки для платформи Microsoft Windows. Пізні версії, які містять кросплатформову компонентну бібліотеку Borland, підтримують і Windows і Linux.

Отже, С++ – потужна, лаконічна, гнучка, мобільна і жива мова, яка розвивається і в різних своїх версіях набуває нових сучасних можливостей.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]