Рис 10
Contents / Search... / Index
Ці стандартні команди надають доступ до інтерактивної довідкової системи програми.
UseExtensionHelp
Коли включена дана опція, як довідкова система викликається розширений файл довідки, а не MSDN.
KeyboardMap..
Дана команда виводить список і опис всіх команд VisualC++ з переліком пов'язаних з ними поєднань клавіш.
Tip of the Day..
Команда TipoftheDay... виводить вікно з різними порадами, що стосуються роботи в середовищі VisualC++.
TechnicalSupport
Дана команда відображує розділ довідкової системи, присвячений питанням технічної підтримки.
Microsoft on the Web
У цьому підміню містяться команди переходу до Web-страницам в Internet, присвяченим VisualC++ і різним технічним питанням.
About Visual C++
About... — стандартна команда всіх застосувань Windows - відображує інформацію про версію програми, авторські права, зареєстрованого користувача і встановлених додаткових компонентах
Створення вашої першої програми
Збереження файлу
Створення виконуваного файлу
Додавання файлів у проект
Побудову програми
Відладка програми
Застережливі повідомлення
Перше повідомлення про помилку
Використання команд Find і Replace
Швидке виявлення помилкових рядків
Продовження відладки
Запуск програми
Використання вбудованого відладчика
Додаткові засоби відладки
Робота з точками останову
Вікно QuickWatch
Написання, компіляція і відладка простої програми
Створення першої програми
Перше, що необхідно зробити, приступаючи до роботи над новою програмою, — це створити новий проект. Для цього в меню File задайте команду New..., а в діалоговому вікні New, що відкрилося, виберіть вкладку Projects (рис. 1)
Рис 1. Вибір типа проекту
Тепер необхідно ввести ім'я файлу проекту. Віднесіться до даного моменту серйозно, оскільки це ім'я згодом буде використано при побудові виконуваного файлу застосування.
Наступний крок полягає у вказівці типа проекту. У нашому випадку це буде просте консольне застосування — Win32 ConsoleApplication. У текстовому полі Location вкажіть теку, яку система автоматично створить для файлів нового проекту.
Далі необхідно вказати платформу, для якої створюється проект. Для 32-розрядної версії компілятора VisualC++ в полі Platforms за умовчанням задана опція Win32.
Після того, як ви натискуватимете кнопку ОК, відображуватиметься вікно майстра з набором опцій (рис. 2).
Рис. 2. Вікно, що з'являється після вибору типа проекту Win32 Console Application Оскільки ми створюватимемо проект з нуля, виберіть опцію Anempty project і клацніть на кнопці Finish. Далі можете просто клацнути на кнопці, розташованій першій зліва на стандартній панелі інструментів. Коли перед вами відкриється нове вікно редагування, введіть такий код:
/* ПРИМІТКА: дана програма містить помилки */
/* введені з метою виучити вас использованию*/
/* засобів відладки */
#include <stdio.h>
/* Наступна константа визначає розмір масиву */
#define SIZE 5
/* Прототип функції */
void print_them(int offset, char continue, -int iarray[SIZE]);
void main( void ){
intoffset; /* індекс елементу масиву */
int iarray[SIZE]; /* масив чисел */
charcontinue= 0; /* містить відповідь користувача */
/* Перший раз функція виводить значення неініціалізованих змінних
*/ print_them(offset,continue, iarray);
/* Запрошення для користувача */
Printf(\n\nWelcome to а trace demonstration!");
printf("\nWould you like to continue (Y/N)");
scanf("%c",continue);
/* Користувач вводить нові значення в массив*/
if (continue== 'Y' )
for (offset=0; offset < SIZE, offset++) { printf ("\nPlease enter an
integer: "); scanf("%d",siarray [of f set] );
/* Другий раз функція відображує значення, введені користувачем */
print_them{offset, continue, iarray) ;
/* Функція, що виводить значення елементів масиву */
void print_them(int offset, char continue, int iarray[SIZE])
{
printf("\n\n%d",offset);
printf("\n\n%d",continue);
for(offset=0; offset < SIZE, offset++)
printf("\n%d",iarray[offset]); }
Якщо ви добре знайомі з мовою З, то напевно відмітили в програмі помилки. Не виправляйте їх. Вони були допущені спеціально, з метою виучити вас використанню різних засобів відладки.
Збереження файлу
Бажано зберегти файл до того, як ви приступите до його компіляції і компоновки, а тим більше до того, як спробуєте запустити програму на виконання. Дослідні програмісти можуть розповісти багато сумних історій про тих, хто намагався запустити на виконання незбережені файли, після чого, унаслідок непередбачених фатальних помилок, роботу над застосуванням доводилося починати спочатку.
Аби зберегти введений тільки що код, ви можете або клацнути на третій кнопці зліва на стандартній панелі інструментів, або вибрати в меню File команду Save, або натискувати [Ctrl+S]. Коли ви вперше вибираєте команду Save, відкривається діалогове вікно Save.
Збережете файл під ім'ям ERROR.C
На рис. 3 вікно редагування показане до збереження файлу. Після збереження в рядку заголовка вікна відображуватиметься нове ім'я файлу.

Рис 3. Вікно редагування до того, як його вміст буде збережений у файлі
Створення виконуваного файлу
Як правило, проекти для Windows 3.x, Windows95/98 і Windows, NT включають велике число файлів. Але зараз ми почали роботу над простою програмою, що складається з єдиного файлу. Цього цілком достатньо, аби розібратися з основними етапами створення повноцінного застосування на C/C++.
Додавання файлів в проект
Після того, як проект створений, в нього можна відразу ж додавати нові файли. Перейдіть на вкладку FileView і клацніть правою кнопкою миші на елементі ERRORfiles. Контекстне меню з виділеною командою AddFilestoProject..., яке при цьому відкриється, показано на рис. 4.
При виборі даної команди з'являється вікно InsertFilesintoProject, де ви можете відзначити файли, що підлягають включенню в проект. Одне зауваження з приводу типа файлів: файли заголовків (з розширенням Н) не включаються в список файлів проекту, а додаються в проект безпосередньо під час побудови програми за допомогою директив препроцесора #include.
У нашому випадку потрібно знайти створений раніше файл ERROR.C і виконати на нім подвійне клацання, внаслідок чого файл автоматично буде доданий в проект.

Рис 4. Меню, що містить команду Add files to Project ..
Рис. 5. Додавання файлу ERROR.C у проект
Побудова програми
Після створення вихідного файлу можна приступити до створення файлу виконуваного.
Згідно термінології розробників VisualC++, цей процес називається побудовою програми. Звернемося до показаного на рис.6 меню Build з виділеною командою.
RebuildAll
Єдина відмінність між командами Build і RebuildAll, як ви пам'ятаєте, полягає в тому, що команда RebuildAllне перевіряє дату створення використовуваних в проекті файлів, т.е компілює і компонує всі файли проекту, незалежно від того, коли вони були створені .
Аби уникнути непорозумінь, пов'язаних з тим, що системний час комп'ютера може бути легко змінений, при роботі з невеликими застосуваннями рекомендується використовувати команду RebuildAll.

Рис. 6. Команда RebuildAll виконає компіляцію і компоновку файлів нового застосування
Відладка програми
Якщо в програмі були допущені синтаксичні помилки, при виконанні команд Build і RebuildAll повідомлення про них відображуватимуться на вкладці Build вікна Output (мал.7).
Мал. 7. Виведення повідомлень про помилки у вікні VisualC++
Кожне повідомлення починається з вказівки імені файлу. Оскільки застосування Windows зазвичай містять багато файлів, це дуже коштовна властивість. Відразу за ім'ям файлу, в круглих дужках, вказаний номер рядка, в якому була виявлена помилка. У нашому випадку перша помилка знайдена у восьмому рядку. Після номера рядка, за двокрапкою, йдуть слово error або warning і номер помилки. Різниця між повідомленнями error і warning полягає в тому, що програми з попередженнями можуть бути виконані, а застосування з помилками обов'язково вимагають виправлень. В кінці кожного рядка повідомлення дається короткий опис виявленої помилки.
Застережливі повідомлення
Застережливі повідомлення можуть з'являтися в тих випадках, коли компілятор автоматично виконує деякі стандартні перетворення і повідомляє про це програміста. Наприклад, якщо змінній типа int (ціле число) буде привласнено дробове значення, то автоматично станеться округлення. Це не означає, що в програмі допущена помилка, але оскільки перетворення типів даних відбувається непомітно для програміста, компілятор вважає своїм обов'язком повідомити про це. Наведемо ще один приклад. Більшість функцій, оголошених у файлі МАТН.Н, приймають аргументи і повертають значення типа double (дійсне число подвійної точності). Якщо програма передасть одній з таких функцій аргумент типа float(дійсне число одинарної точності), компілятор, перш ніж направити дані в стек аргументів функції, виведе застережливе повідомлення про те, що тип даних float був перетворений в double.
Ви можете запобігти появі застережливих повідомлень, якщо явно перетворюватимете типів даних змінних відповідно до правил, прийнятих в мові С.
Так, в даному випадку явне приведення аргументів до типа даних double перед виконанням функції запобіжить появі застережливого повідомлення.
Перше повідомлення про помилку
Повідомлення про помилку, представлене на мал. 3.7, є сповна типовим. Найчастіше з ним доводиться стикатися тим, хто лише освоює нову мову програмування. В даному випадку програміст спробував задати змінній ім'я, зарезервоване для ключового слова. Це хороший принцип — привласнювати змінним імена, співзвучні з їх призначенням, проте вибране нами ім'я вступило в конфлікт з ключовим словом continue, що існує в C/C++.
Використання команд Find і Replace
Досить часто в процесі програмування виникають ситуації, коли вам потрібно знайти і замінити якесь слово в тексті програми. Ви, звичайно ж, можете зробити це за допомогою діалогового вікна, що відкривається командою Replace... з меню Edit, але є і швидший спосіб. Розглянете уважно панель інструментів, показану на рис.8, і знайдіть в полі списку Find слово continue.
Аби скористатися цим засобом пошуку, клацніть мишею в полі і введіть слово, яке хочете знайти, після чого натискуйте [Enter]. На рис. 8 показаний результат такого пошуку. У тексті програми виділено слово continue, виявлене першим.
Рис. 8. Використання засобів швидкого пошуку
Даний метод досить зручний для пошуку потрібного слова. Але наше завдання цим не обмежується, оскільки ім'я змінної continue нам необхідно замінити у всій програмі іншим ім'ям. В такому разі доцільніше скористатися командою Replace... з меню Edit (рис.9).
Рис. 9. Вікно пошуку
Наша мета полягає в тому, аби замінити ім'я змінної continue словом, також вказувало б на призначення цією змінною. З цією метою введемо в поле Replacewith слово continuе. Але залишилася маленька проблема. У програмі є рядок "\nWould you like to continue (Y/N)". Якщо ви виконаєте автоматичну заміну у всьому файлі, клацнувши на кнопці ReplaceAll, то повідомлення, що видається програмою, міститиме, граматичну помилку. Тому заміну слід проводити послідовно, переходячи від слова до слова, а у вказаному місці клацнути на кнопці FindNext.
Швидке виявлення помилкових рядків
Тепер необхідно виконати повторну компіляцію програми, після якої вікно повідомлень виглядатиме так, як показано на рис.10.
Існує досить швидкий спосіб переходу від вікна повідомлень до вікна редагування, і ми вам про нього розповімо. Помістите курсор на рядку повідомлення, що цікавить вас, наприклад на першому попередженні: warning. C4013: 'Printf undefined;..,
А тепер просто натискуйте [Enter]. Курсор у вікні редагування буде автоматично поміщений в рядок програми, що викликав появу повідомлення про помилку, а зліва від рядка з'явиться стрілка (рис. 11).
Як ви вже знаєте, мови C/C++ чутливі до регістра символів. Тому компілятор абсолютно точно встановив причину помилки. Перша буква функції printf() у нашій програмі помилково була введена у верхньому регістрі. Компілятор, звичайно ж, не зміг знайти в бібліотеці функцію Printf().Эту помилку неважко виправити — досить замінити букву Р буквою р. Потім обов'язково збережете файл.

Рис. 11. Помічений стрілкою рядок програмного коду, що містить помилку
Продовження відладки
Після того, як ви внесли виправлення, програма готова до нової спроби побудувати виконуваний файл. Перейдіть в меню Project і знов виберіть команду RebuildAll. На рис. 12 показано оновлене вікно повідомлень.
Рис.12. Вікно повідомлень під час третьої спроби побудувати виконуваний файл.
Тепер виявляємо, що той же рядок, який містив некоректне ім'я функції (Printf()),заключает в собі ще одну помилку. У C/C++ всі строкові значення повинні братися в подвійні лапки. Значить, в нашому випадку відкриваючі лапки у функції printf () слід поставити відразу після відкриваючої круглої дужки, тобто рядок повинен починатися таким чином: printf(". Збережете файл і спробуйте ще раз побудувати програму. Як виглядає вікно повідомлень після чергового оновлення, показано на рис. 13.

Рис. 3.13. Вікно повідомлень під час четвертої спроби побудувати виконуваний файл Цього разу видається таке повідомлення про помилку:
syntax error: missing ';'before ')'
У C/C++, на відміну від Pascal, символ крапки з комою використовується для позначення закінчення вираження, а не як роздільник. Таким чином, в кінці другої перевірки в циклі for необхідно ввести крапку з комою. Після виправлення збережете файл і знов виконаєте команду RebuildAll.
Все гаразд? Судячи по вікну повідомлень, в компілятора немає більше претензій до вашої програми, і команда RebuildAll успішно згенерувала виконуваний файл ERROR.EXE.
У вікні повідомлень мають бути відсутніми повідомлення про помилки, але бути присутнім одне попередження, яке можна проігнорувати. Якщо це не так, значить, ви допустили помилки при введенні програми. Перевірте програмний код і виправіть його.
Запуск програми
Аби запустити програму, просто виберіть в меню Project команду Execute. Якщо у відповідь на запит програми Would you like to continue(Y/N) ви натискуватимете клавішу [Y], а потім [Enter], на екрані відображуватиметься наступне:
-858993460
0
-858993460
-858993460
-858993460
-858993460
-858993460
Welcome to а trace demonstration! Would you like to continue (Y/N) в
На рис.14 показано, що станеться далі.

Рис. 14. Повідомлення про помилку виконання програми
Використання вбудованого відладчика
Створена нами програма на початку своєї роботи відображує на екрані вихідний вміст масиву даних, після чого запитує, чи хочете ви продовжити роботу. Відповідь Y (yes— так) сигналізує про те, що ви хочете заповнити масив власними даними і відображувати їх на екрані.