Тема роботи: ознайомлення з компілятором Visual Studio 6.0. Проста консольна програма з використанням типових засобів “C”. Оператори циклу.
Мета роботи: ознайомитись з компілятором Visual Studio 6.0. Створити, та відлагодити просту консольну програму з використанням оператори циклу.
Теоретична частина:
ЗапускVisual C++
Запуск оболонки Visual++ не складе для вас праці. На мал. 2.1 представлене початкове вікно з довільно обираною порадою дня, що відкривається при цьому.
Доступ до контекстної довідки
Доступ до довідкової системи Visual++ полегшений завдяки тому, що вся інформація надається в інтерактивному режимі. Щоб одержати довідку, досить навести покажчик на інструмент, що цікавить вас, і нажати клавішу [F1]. Рис 2.1. Слід зазначити, що використання контекстної довідки не обмежується елементами інтерфейсу. Якщо ви наведете покажчик на елемент програмного коду C/C++ і натиснете [F1], то одержите довідку про синтаксис обраної вами конструкції.
Виклик команд меню
Перш ніж перейти до опису окремих команд і опцій, зупинимось на деяких моментах, загальних для всіх меню. Згадаємо, наприклад, про те, що існує два способи вибору команд із меню. Більше розповсюджений з них полягає в тому, що ви встановлюєте покажчик миші й клацаєте на потрібних командах меню лівою кнопкою миші. Другий спосіб полягає у використанні клавіш швидкого виклику, які виділяються підкресленням у назвах команд. Так, меню File можна розкрити, нажавши одночасно [Alt+F].
Існує ще один спосіб виклику окремих команд у будь-який момент часу, а саме за допомогою попередньо заданих "гарячих" клавіш. Якщо для команди визначене сполучення клавіш, то це сполучення буде зазначено в меню праворуч від відповідного пункту. Наприклад, у меню File є команда New..., яку можна викликати, просто нажавши [Ctrl+N].
Команда меню, показана сірими кольорами, є в цей момент недоступною - імовірно, відсутні деякі умови, необхідні для її виконання. Наприклад, команда Slave з меню File буде недоступною, якщо в редактор нічого не завантажене. Програма "розуміє", що в цей момент зберігати просто нема чого, і нагадує вам про цьому, відключивши команду збереження.
Багато команд меню представлені також кнопками на панелях інструментів і можуть бути викликані простим щигликом миші. Панелі інструментів звичайно розміщаються у вікні програми безпосередньо під рядком меню.
Переміщувані панелі інструментів
Будь-які панелі інструментів Visual++ можна зробити закріпленими або плаваючими. Закріплені панелі інструментів фіксуються уздовж одного із чотирьох країв вікна програми. Змінити розмір такої панелі ви не можете.
Плаваюча панель інструментів має власний рядок заголовка й може перебувати в будь-якому місці. Плаваючі панелі завжди розташовуються поверх інших компонентів вікна програми. Ви можете вільно змінювати як розмір, так і місце розташування плаваючих панелей інструментів.
Щоб перетворити закріплену панель інструментів у плаваючу, вам необхідно виконати такі дії:
клацнути лівою кнопкою миші на вільному просторі панелі інструментів;
утримуючи кнопку миші натиснутої, перетягнути панель інструментів у необхідне місце.
А щоб закріпити плаваючу панель - такі:
клацнути лівою кнопкою миші на рядку заголовка або вільному просторі панелі інструментів;
утримуючи кнопку миші натиснутої, перетягнути панель інструментів до одному із чотирьох країв вікна програми.
При необхідності розмістити плаваючу панель інструментів поверх закріпленої ви повинні:
клацнути лівою кнопкою миші на рядку заголовка або вільному просторі панелі інструментів;
утримуючи кнопку миші, нажати клавішу [Ctrl] і перетягнути панель інструментів у потрібне місце.
Меню File
В Visual++ у меню File зібраний стандартний для багатьох додатків Windows набір команд, призначених для маніпулювання файлами (мал. 2.2).
Рис. 2.2.
New...
По команді New... відкривається вікно для вибору типу створюваного файлу, проекту або робочого простору. Саме із цієї команди звичайно починається робота над новим додатком. Visual++ автоматично привласнює назву й номер кожному створюваному файлу (але не проекту), якщо тільки ви не зробили цього самостійно. Нумерація файлів починається з 1. Таким чином, перший файл завжди буде мати ім'я xxxl, другий — ххх2 і т.д. Тут ххх позначає стандартне ім'я, що міняється залежно від типу створюваного файлу (програмний файл, файл заголовків, значок, покажчик миші й т.п.).
Якщо ви створите шість файлів з іменами від xxx1 до ххх6, а потім закриєте файл xxx1, то при наступному виборі команди New... програма не відновить відсутню назву (у цьому випадку ххх2), але автоматично привласнить файлу наступний порядковий номер після найбільшого номера файлу, відкритого на даний момент. Тобто в нашому випадку новому файлу буде привласнене ім'я xxx1.
Open...
На відміну від команди New..., призначеної для створення нового файлу, команда Open... відкриває діалогове вікно, за допомогою якого ви можете вибрати кожної раніше збережений файл. Вікно OpenFile має стандартний вигляд для всіх додатків Windows. У випадку спроби відкрити вже відкритий файл буде поданий звуковий сигнал і показано попереджуюче повідомлення.
Друга ліворуч кнопка на стандартній панелі інструментів є альтернативою команді Open....
Close
Команда Close призначена для закриття раніше відкритого файлу. Якщо у вас у даний момент відкрито кілька файлів, дана команда закриє активне, тобто поточне вікно. Якщо ви помилково спробуєте закрити незбережений файл, програма попередить про те, що ви ризикуєте втратити інформацію, і запропонує зберегти її прямо зараз.
Save
Команда Save зберыгаэ вміст поточного вікна у відповідному файлі. По рядку заголовка вікна можна визначити, чи відповідає активному вікну який-небудь файл на жорсткому диску. Якщо ви відкрили нове вікно й ще не зберігали його, то в рядку заголовка буде показане стандартне ім'я виду xxxl. При спробі зберегти інформацію з вікна, якому не відповідає жоден файл, автоматично буде відкрите діалогове вікно SaveAs.
Для збереження файлу можна також використати розташовану на панелі інструментів кнопку Save (третя ліворуч). Якщо файл був відкритий у режимі тільки для читання, то команда Save буде недоступною.
SaveAs...
Команда SaveAs... дозволяє зберегти вміст вікна у файлі під новим ім'ям. Припустимо, ви тільки що закінчили роботу над проектом і, маючи цілком працездатну програму, хочете спробувати внести деякі зміни. З метою безпеки поточну версію програми потрібно зберегти. Для цього ви вибираєте команду SaveAs і зберігаєте проект під новим ім'ям, після чого можете спокійно експериментувати з дублікатом. Якщо експерименти приведуть до ушкодження програми, ви завжди зможете повернутися до вихідної версії.
SaveAll
Якщо вам ніколи раніше не доводилося займатися програмуванням на C/C++ в Windows95,98 або NT, то спочатку ви будете приголомшені достатком файлів, залучених у проект. Незручність команди Save полягає в тому, що вона зберігає вміст тільки одного, що в текучому. За допомогою команди SaveAll можна зберегти всі відкриті на даний момент файли. Якщо вміст якихось вікон раніше не зберігалося у файлах, то для них автоматично буде відкриватися вікно SaveAs, де ви зможете вводити імена нових файлів.
PageSetup...
Дану команду звичайно використають перед виводом файлу на друк.
Команди форматування, які можна використати при настроюванні колонтитулів, перераховані в табл. 2.1.
Таблиця 2.1. Команди форматування використовувані в діалоговому вікні Page Setup

Команда форматування
Призначення


Центрування тексту

&d
Додавання поточної системної дати

&f
Додавання імені файлу

&1
Вирівнювання тексту по лівому краї


Нумерація сторінок


Вирівнювання тексту по правому краї

&t
Додавання поточного системного часу


Print...
Щоб вивести на друк вміст активного вікна, потрібно вибрати з меню File команду Print.... Відкриється діалогове вікно Print, у якому ви зможете встановити необхідні параметри друку. Насамперед необхідно вирішити, хочете ви вивести на друк весь уміст файлу або тільки попередньо виділену частину. Якщо в активному вікні був виділений блок, то у вікні Print стане доступною опція Selection групи PrintRange (у противному випадку перемикач виявиться недоступним). Якщо до комп'ютера підключено кілька пристроїв виводу, ви можете вибрати потрібний принтер і зробити налаштування параметрів друку, клацнувши на кнопці Setup.
Recent Files і Recent Workspaces
Exit
Команда Exit закриває вікно Visual++. Не турбуйтеся, якщо ви забули зберегти вміст якого-небудь файлу. Програма автоматично видасть попереджуючі повідомлення для кожного незбереженого файлу.
Меню Edit
Команди меню Edit (мал. 2.3) дозволяють редагувати текст і проводити пошук по ключових словах у програмному коді, відображуваному в активному вікні. Робота цих команд заснована на тих же принципах, що й робота аналогічних команд у більшості текстових редакторів.
Рис. 2.3.
Undo
Команда Undo дозволяє скасовувати останні виконані операції редагування. Дана можливість доступна також і через відповідну кнопку стандартної панелі інструментів (восьма ліворуч).
Redo
Після того як ви скасували останню дію за допомогою команди Undo, ви можете повторити операцію, скориставшись командою Redo. Цій команді відповідає дев'ята ліворуч кнопка стандартної панелі інструментів.
Cut
Команда Cut копіює виділений блок тексту з активного вікна в буфер обміну, після чого видаляє цей блок з вікна. Команду Cut звичайно використають у сполученні з командою Paste для переміщення блоку тексту з одного місця в інше. На стандартній панелі інструментів їй відповідає п'ята кнопка ліворуч.
Copy
Як і команда Cut, команда копіює й поміщає виділений блок тексту в буфер обміну, але цей блок зберігається в активному вікні. Команду звичайно використають у сполученні з командою Paste при необхідності скопіювати блок тексту з одного місця в інше. Їй відповідає шоста ліворуч кнопка стандартної панелі інструментів.
Paste
Команда Paste призначена для вставки інформації з буфера обміну в поточний документ (у місце розташування текстового курсору). На стандартній панелі інструментів їй відповідає сьома ліворуч кнопка.
Delete
Щоб видалити виділений блок тексту, не копіюючи його в буфер обміну, можна скористатися командою Delete. Хоча вилучений текст і не буде скопійований у буфер обміну, ви однаково зможете відновити його, якщо відразу після видалення виберете в меню Edit команду Undo.
Select All
Команда SelectAll використається для виділення всього вмісту активного вікна з метою наступного вирізання, копіювання або видалення.
Find...
Модуль пошуку, що запускає командою Find..., працює приблизно так само, як і аналогічний засіб пошуку в більшості текстових редакторів. Оскільки мови C/C++ чутливі до регістра символів, опції діалогового вікна Find дозволять вам організувати пошук як з урахуванням, так і без урахування регістра, а також пошук слова цілком. Можна задати й напрямок пошуку – вгору, або вниз від поточного положення курсору.
Однією зі зручних особливостей команди Find... є можливість застосування регулярних виразів. У табл. 2.2 наведені метасимволи, які можна для цієї мети вводити в поле Findwhat діалогового вікна Find.
Таблиця 2.2 Метасимволи використовувані з командою Find

Метасимволы
Призначення

*
Заміняє будь-яку кількість символів, у тому числі нульовий Приклад: Data*1 Результат пошуку: Data1, Dataln1, DataOut1

.
Заміняє будь-який окремий символ Приклад: Data.Результат пошуку: Data1l і Data2, але не Dataln1

^
Пошук ключових слів тільки на початку рядків Приклад: Ado Результат пошуку: всі рядки, що починаються з "do"

+     
Заміняє будь-яке число символів, починаючи з одиниці Приклад: +value Результат пошуку: i_value, fvalue, lng_value

$     
Пошук ключових слів тільки наприкінці рядків Приклад: end;$ Результат пошуку: всі рядки, що закінчуються на "end;"

[ ]  
Пошук значень, що відповідають зазначеному діапазону Приклад: Data[A...Z] Результат пошуку: Data, але не Datal Приклад: Data[1248] Результат пошуку: Data2, але не Data3

\   
Скасовує спеціальне призначення наступних за ним метасимволів Приклад: 100\$ Результат пошуку: "100$" (на відміну від самого шаблона 100$, що означає пошук зразка "100" наприкінці рядка)

\{\}  
Пошук   ключових   слів, що    починаються    з    комбінації    символів, укладених у фігурні дужки Приклад: \{no\}*_answer Результат пошуку: answer, no_answer, nono_answer, nonono_answer

Find in Files...
При виборі команди Find in Files... ви одержуєте у своє розпорядження всі засоби команди Find... і можливість проводити пошук ключових слів відразу в декількох файлах. Ви можете запитати: "З якої статі я стану шукати що-небудь відразу в декількох файлах?" Щоб відповісти на це питання, згадаємо, що проект, написаний на C/C++, складається з безлічі взаємозалежних файлів. Припустимо, у процесі програмування ви зрозумієте, що якусь часто використовувану в додатку конструкцію краще замінити більше компактної. У такому випадку, виконавши команду Find in Files..., ви будете впевнені, що зробили заміну у всіх файлах проекту. Якщо над якимось більшим проектом працює група людей, то за допомогою команди FindinFiles... ви зможете відібрати файли, автором яких є певний співробітник. Крім того, помнете, що можливості команди FindinFiles... не обмежені однією папкою або навіть одним диском. За допомогою цієї команди ви можете вести пошук у локальній мережі, в інтранет і навіть в Internet, відшукуючи задані імена, рядки, ключові слова, методи й багато чого іншого.
Replace...
При виборі команди Replace... відкривається діалогове вікно, за допомогою якого можна міняти рядки тексту. Для цього потрібно ввести у відповідні поля текст для пошуку й текст для заміни, після чого встановити критерії пошуку. Ви можете проводити пошук з обліком або без обліку регістра символів, шукати слова цілком і використати регулярні вирази, які ми розглянули вище, при знайомстві з командою Find....
Гарненько подумайте, перш ніж клацнути на кнопці ReplaceAll, оскільки результат виконання цієї команди може виявитися руйнівним для вашої програми. Пам”ятайте, що ви можете скасувати результати операції заміни, якщо відразу виберете команду Undo.
GoTo...
За допомогою команди GoTo... можна швидко перемістити курсор до певного місця поточного документа. Після вибору цієї команди відкриється діалогове вікно, у якому можна задати номер рядка програми, куди варто перейти. Якщо ви введете значення, що перевищує число рядків програми, то курсор буде переміщений у кінець файлу.
Bookmarks...
Команда Bookmarks... дозволяє поміщати закладки в тих місцях програми, до яких ви часто звертаєтеся. Після того як закладка буде встановлена, ви зможете швидко перейти до неї за допомогою команди меню або певного сполучення клавіш. Закладку, що більше не знадобиться, можна в будь-який момент видалити. Ви можете створювати як іменовані (вони будуть зберігатися між сеансами редагування), так і безіменні закладки. До іменованої закладки можна перейти в будь-який час, навіть якщо файл, до якого вона ставиться, у цей момент не відкритий. Іменована закладка зберігає як номер рядка, так і позицію курсору на рядку, що він займав під час її створення. Причому позиція буде автоматично обновлятися в міру редагування файлу. Навіть видаливши всі символи навколо закладки, ви однаково зможете перейти до зазначеного місця у файлі.
Breakpoints...
Дана команда дозволяє встановлювати точки зупинки в різних місцях програми.
ListMembers
Команда ListMembers відображає список доступних змінних-членів або функцій обраного класу або структури.
TypeInfo
Дана   команда  відображає  вікно  підказки, що   містить   опис   всіх ідентифікаторів.
ParameterInfo
Ця команда відображає повний опис (включаючи список параметрів) функції, ім'я якої розташоване ліворуч від курсору. Параметр, виділений напівжирним шрифтом, відповідає тому параметру, що ви повинні ввести в даний момент.
CompleteWord
При виборі команди CompleteWord програма автоматично допише замість вас назву функції або ім'я змінної, котру ви тільки почали вводити. Ця опція здатна помітно зберегти ваш час, позбавивши від необхідності щораз уводити із клавіатури довгі, часто повторювані імена. Меню View
Меню View(мал. 2.4) містить команди, що дозволяють настроїти зовнішній вигляд робочого простору. Рис. 2.4 ClassWizard... Майстер ClassWizard полегшить виконання таких повторюваних завдань, як створення нових класів і оброблювачів повідомлень, перевизначення віртуальних функцій MFC і збір даних від елементів керування діалогових вікон. Одне дуже важливе зауваження: ClassWizard працює тільки з додатками, що використають бібліотеку MFC, що відрізняє його від таких засобів, як ClassView і WizardBar, що працюють із MFC, ATL і вашими власними похідними класами. До того ж ClassView не розпізнає класи, якщо вони не зареєстровані у файлі бази даних ClassView(файл із розширенням CLW). За допомогою майстра ClassWizard можна виконувати наступні дії:
додавати до нового класу методи й властивості;
породжувати нові класи від базових класів MFC;
створювати нові оброблювачі повідомлень;
повідомляти змінн-члени, які автоматично інициаліують, збирають і перевіряють дані, що вводять у діалогових вікнах або формах;
видаляти існуючі оброблювачі повідомлень;
визначати, які повідомлення вже пов'язані з оброблювачами, і переглядати їхній код;
працювати з існуючими класами й бібліотеками типів.
Resource Symbols... і Resource Includes...
Ви дуже швидко переконаєтеся в тім, що в міру збільшення й ускладнення коду вашого додатка стрімко зростає й число задіяних у проекті ресурсів, усе сутужніше стає відслідковувати постійно зростаюче число ідентифікаторів ресурсів, розкиданих по численних файлах проекту. Команди ResourceSymbols... і ResourceIncludes... істотно полегшать процес контролю за ресурсами. Перелічимо операції, які можна виконати з їхньою допомогою:
зміна імен і значень символічних ідентифікаторів, які в цей момент не використовуються;
визначення нових ідентифікаторів;
видалення непотрібних ідентифікаторів;
швидке завантаження у відповідний редактор ресурсів;
перегляд описів існуючих ідентифікаторів і визначення ресурсів, пов'язаних з кожним ідентифікатором.
FullScreen
Подібно більшості програмістів, ви в процесі програмування напевно хочете бачити на екрані якнайбільше коду. У цьому вам допоможе команда FullScreen, при виборі якої вікно редагування буде розгорнуто на весь екран.
Workspace
При виборі команди Workspace на екрані з'являється панель Workspace(звичайно в лівій частині робочого вікна), за допомогою якої можна звертатися до поточних класів, файлам, ресурсам. Ви можете переходити від списку до списку, клацаючи на вкладках, розташованих у нижній частині панелі.
Output
По команді Output відкривається вікно Output, у якому відображається хід виконання таких процесів, як компіляція й компонування програми. У це вікно виводяться також всі попереджуючі повідомлення й повідомлення про помилки, згенеровані компілятором і компонувальником.
Debug Windows
У підменю Debug Windows утримуються команди виклику різних вікон відладчика, включаючи Watch, Call Stack, Memory, Variables, Registers і Disassembly.
Refresh
Команда Refresh призначена для відновлення виду поточного вікна - аналогічно тому, як за допомогою клавіші [F5] ми оновлюємо зовнішній вигляд вікна програми Explorer (Провідник) в Windows.
Properties
При виборі цієї команди виводяться дані про поточний файл, такі як дата створення, розмір, тип файлу, особливості редагування й багато чого іншого, що залежить від типу файлу.
Меню Insert
Меню Insert(мал. 2.5) містить команди, що дозволяють вставляти в проект нові файли, ресурси, об'єкти й т.д. Рис 2.5.
NewClass...
При виборі даної команди відкривається діалогове вікно NewClass, у якому можна задати ім'я нового класу (таким може бути клас бібліотек MFC і ATL або клас загального призначення) і вказати його базовий клас. У результаті створюється файл заголовків і файл реалізації нового класу.
Resource...
Ця команда дозволяє додати в проект нові ресурси, включаючи гарячі клавіші, растрові зображення, покажчики миші, діалогові вікна, значки, HTML-файли, меню, таблицю рядків, панелі інструментів і ідентифікатор версії.
ResourceCopy...
Visual++ дає можливість створити копію ресурсу при зміні мови його опису. Мова ресурсу вибирається в списку Language вікна InsertResourceCopy. У полі Condition можна задати символічний ідентифікатор, наявність якого в даній конфігурації проекту є умовою для підключення ресурсу. Мова ресурсу відображається у вікні Workspace після імені ресурсу.
File As Text...
Дана команда застосовується для додавання в проект тексту зазначеного файлу. Перед вибором команди необхідно відкрити вікно редагування й установити курсор у місці уведення тексту.
New ATL Object...
Дана команда дозволяє додати в існуючий проект ATL-клас. ATL-об'єкти являють собою шаблонні класи C++, які реалізують основні засоби СОМ, включаючи інтерфейси IUnknown, IClassFactory, IClassFactory2 і IDispatch, підтримку двонаправлених інтерфейсів, що відключають, інтерфейсів перерахування (lEnumXXXX), точок підключення, елементів керування Active і багато чого іншого.
Меню Project
Команди меню Project(мал. 2.6) дозволяють управляти відкритими проектами.
Рис 2.6.
SetActiveProject
У даному підменю відображається список завантажених проектів, з яких можна вибрати активний.
AddtoProject
Це підміню складається з команд, призначених для додавання в проект нових компонентів.
Dependencies
Якщо ваш великий проект розбитий на кілька підпроектів, то для відображення ієрархічних зв'язків між ними варто використати команду Dependencies.
Settings...
При виборі команди Settings... відкривається досить складне діалогове вікно, що дозволяє встановлювати практично всі параметри конфігурації проекту, включаючи опції компілятора й компоновщика.
ExportMakefile...
За допомогою цієї команди можна зберегти у файлі всю інформацію, необхідну для побудови проекту. Файл, створений із застосуванням команди ExportMakefile..., зберігає всі установки, які ви зробили в середовищі Visual++.
Insert Project Into Workspace...
Дана команда додає існуючий проект у ваш робочий простір. Сказане може звучати трохи дивно, якщо ви нечітко представляєте, яка різниця між проектом і робочим простором. Останнє являє собою область, що містить сукупність проектів і їхніх конфігурацій. Проектом називається група файлів, що дозволяють побудувати програму або вихідний двійковий файл (файли). Робочий простір може містити кілька проектів, причому ці проекти часто відносяться до різних типів.
Меню Build
У меню Build(мал. 2.7) містяться всілякі команди, призначені для генерації коду додатки, налагодження й запуску створеної вами програми.
Рис 2.7.
Compile
Вибір цієї команди приводить до компіляції вмісту поточного вікна.
Biuld
Звичайно проекти, написані на C/C++, містять у собі багато файлів. Оскільки почергова компіляція всіх файлів займе багато часу, корисною виявиться команда Build, що автоматично проаналізує файли проекту, компілюючи тільки ті з них, які були створені пізніше, ніж виконаний файл проекту.
Перш ніж вибрати команду Build, вам належить прийняти рішення, чи треба в кінцевий файл включати відлагодочну інформацію (конфігурація Debug) або ж виключити ці дані з файлу (конфігурація Release). Щоб установити той або інший режим, необхідно в меню Build вибрати.команду Set Active Configuration.... Якщо ви закінчили роботу над програмою й переконалися в її працездатності, відлагодочну інформацію з вихідного файлу доцільно виключити — у такому випадку він стане значно компактнішим.
Повідомлення про компонування помилках, що виявляють у процесі компіляції й, будуть з'являтися у вікні Output.
RebuildAll
Розходження між командами Build і RebuildAll полягає в тому, що остання не звертає уваги на дату й час створення файлів і компілює всі файли проекту.
Якщо при виконанні команди RebuildAll будуть виявлені синтаксичні помилки, як фатальні, так і потенційно небезпечні, то попередження й повідомлення про них з'являться у вікні Output.
BatchBuild...
Ця команда аналогічна команді Build, але з її допомогою можна обробити відразу кілька конфігурацій одного проекту.
Clean
За допомогою команди Clean із всіх конфігурацій поточного проекту видаляються проміжні файли. Побудувати файли заново можна шляхом вибору команди Build.
StartDebug
Дане підменю містить команди, призначені для виконання програми в режимі налагодження: до курсору або до заданої точки зупину.
Debugger Remote Connection...
Завдяки наявності цієї команди можна здійснювати налагодження проекту, що виконується.
Execute
Якщо компіляція пройшла успішно, виберіть команду Execute, і побудована програма буде запущена.
Set Active Configuration...
Якщо ви трудитеся над більшим проектом, що складається з декількох подів-проектів, кожний з яких має власний виконува файл, що, то перед вибором команди Build або RebuildAll вам належить указати, з яким файлом, що виконує саме, ви збираєтеся працювати в цей момент. Для виконання цього завдання скористайтеся командою SetActiveConfiguration..., що дозволяє вибрати необхідну конфігурацію проекту.
Configurations...
Команда Configurations... дозволяє додавати або видаляти конфігурації поточного проекту. Наприклад, якщо ви почали роботу тільки з конфігурацією Debug(, те тепер можете додати конфігурацію Release(фінальна версія програми).
Profile...
Дана команда представлена тільки в професійній і корпоративній версіях Visual++. Але щоб нею можна було скористатися, необхідно при створенні проекту встановити опцію, що задає підключення профілювальника (опція Enable profiling категорії General вкладки Link діалогового вікна Project Settings). Профілювальник використовується для аналізу роботи програми під час її виконання. У процесі профілювання у вікні Output відображаеться інформація, на підставі якої ви можете з'ясувати, які частини вашого програмного коду працюють ефективно, а які не виконуються або вимагають більших тимчасових витрат.
Меню Tools
Меню Tools(мал. 2.8) містить команди виклику допоміжних утиліт, програмування макросів і настроювання середовища Visual++. Рис. 2.8.
SourceBrowser...
Цією командою можна скористатися при необхідності переглянути інформацію про вихідні файли. Ви можете доручити компіляторові створювати по допоміжному SBR-файлі для кожного об'єктного (OBJ) файлу, що буде зустрічатися в процесі компіляції. Коли ви створюєте або обновляєте основний інформаційний BSC-файл, всі SBR-файли проекту повинні бути представлені на диску. Для того щоб створити SBR-файл, що містить всю можливу інформацію, встановіть опцію Generate browse info в категорії Listing Files вкладки C/C++ діалогового вікна Project Settings. Якщо з файлу необхідно виключити інформацію про локальні змінні, задайте там же опцію Exclude local variables from browse info.
Close Source Browser File
Дана команда закриває поточний SBR-файл.
ErrorLookup
Утиліту ErrorLookup використають при необхідності одержання текстових повідомлень, пов'язаних з кодами системних помилок. Уведіть код помилки в поле Value, і в поле ErrorMessage автоматично відобразить пов'язане з ним повідомлення.
Active Control Test Container
Дана утиліта призначена для тестування елементів керування Active. Вона дозволяє міняти властивості елемента керування, викликати його методи, моделювати виникнення необхідних подій і багато чого іншого.
OLE/COM Object Viewer
Ця утиліта відображає відомості про всі об'єкти ActiveX і OLE, встановлених на вашому комп'ютері, а також про підтримувані ними інтерфейси. Вона також дозволяє редагувати реєстр і переглядати бібліотеки типів.
Spy++
Утиліта Spy++ виводить інформацію про системні процеси, що виконуються, і потоки. Зазначена утиліта також надає набір інструментів, що полегшують пошук потрібних процесів, потоків і вікон.
MFCTracer
Додаткові можливості для налагодження віконних додатків, побудованих на основі MFC, надає утиліта MFCTracer. Ця утиліта відображає у вікні налагодження повідомлення про виконання операцій, пов'язаних з використанням бібліотеки MFC, а також попередження про помилки, якщо при виконанні додатка відбуваються які-небудь збої.
VisualComponentManager
Дана утиліта призначена для ведення бази даних готових програмних компонентів.  RegisterControl
Елементи керування OLE, як і інші OLE-сервери, можуть використовуватись різними додатками, що підтримують технологію OLE. Але для цього необхідно зареєструвати бібліотеку типів і клас елемента керування, що саме й виконує команда RegisterControl.
Customize...
При виборі даної команди відкривається діалогове вікно Customize, що дозволяє побудувати меню й панелі інструментів, а також призначати різним командам сполучення клавіш.
Options...
Дана команда відкриває вікно Options, у якому задаються різні параметри середовища Visual++.
Macro... / Record... / Play...
Ці команди використовуються для створення й відтворення макросів на VBScript. Макроси являють собою невеликі процедури, що містять команди VBScriptи не приймаючі параметрів. Макроси дозволяють значно спростити й прискорити роботу в середовищі Visual++. Наприклад, ви можете записати у вигляді макросу деяку часто виконувану послідовність команд, у результаті чого для здійснення того ж самого завдання вам досить буде ввести просту комбінацію клавіш або нажати єдину кнопку панелі інструментів.
Меню Window
Всі команди меню Window(мал. 2.9), за винятком команди DockingView, впринципі відповідають стандартному набору команд даного меню у всіх додатках Windows.
Рис 2.9.
NewWindow
Дана команда створює нове вікно редагування для поточного проекту.
Split
Команда Split дозволяє розбити вікно редагування на кілька частин.
DockingView
За допомогою цієї команди можна закріпити панель інструментів у будь-якого краю батьківського вікна або зробити її вільно переміщуваною.
Close
Дана команда закриває активне вікно. Якщо вміст вікна не було попередньо збережене, то буде видане попереджуюче повідомлення.
CloseAll
Ця команда закриває всі відкриті вікна. Якщо вміст хоча б одного з вікон не було попередньо збережено у файлі, буде видане попереджуюче повідомлення.
Next
За допомогою команди Next, меню Window, можна перемикатися між відкритими вікнами.
Previous
Ця команда аналогічна команді Next, але на відміну від останньої здійснює переходи між вікнами у зворотному порядку.
Cascade
Дана команда відображає на екрані всі відкриті вікна каскадом, що дає можливість користувачам бачити імена файлів у заголовках всіх вікон.
TileHorizontally
Ця команда розташовує всі відкриті вікна одне над іншим. Такий вид відображення зручний для порівняння вихідного й модифікованого тексту програм.

TileVertically
Команда Тilе Vertically розташовує всі відкриті вікна поруч один з одним. Такий вид відображення зручний при необхідності зробити порівняння ієрархічних структур.
Список відкритих вікон
У нижній частині меню показаний динамічно обновлюваний список всіх відкритих на даний момент вікон. Ви можете зробити активним будь-яке вікно, клацнувши на його імені в списку.
Меню Help
Меню Help(мал. 2.10) містить стандартні для додатків Windows команди Contents, Search і Index, а також деякі додаткові команди. Рис 2.10
Contents / Search... / Index
Ці стандартні команди надають доступ до інтерактивної довідкової системи програми.
UseExtensionHelp
Коли включена дана опція, як довідкова система викликається розширений файл довідки, а не MSDN.
KeyboardMap...
Дана команда виводить список і опис всіх команд Visual++ з переліком пов'язаних з ними сполучень клавіш.
Tip of the Day...
Команда TipoftheDay... виводить вікно з різними радами, що стосуються роботи в середовищі Visual++.
TechnicalSupport
Дана команда відображає розділ довідкової системи, присвячений питанням технічної підтримки.
Microsoft on the Web
У цьому підменю втримуються команди переходу до Web-сторінок в Internet, присвяченої Visual++ і різним технічним питанням.
About Visual C++
About... - стандартна команда всіх додатків Windows - відображає інформацію про версії програми, авторських правах, зареєстрованому користувачеві й установлених додаткових компонентах.
 Написання, компіляція й налагодження найпростішої програми
Створення вашої першої програми
Перше, що ви повинні зробити, приступаючи до роботи над новою програмою, — це створити новий проект. Для цього в меню File задайте команду New..., а в діалоговому вікні, що відкрилося, Newв виберіть вкладку Projects(мал. 3.1). Рис 3.1. Вибір типу проекту
Тепер необхідно ввести ім'я файлу проекту. Поставтеся до даного моменту серйозно, тому що це ім'я згодом буде використано при побудові файлу додатка, що виконується.
Наступний крок складається у вказуванні типу проекту. У нашому випадку це буде простий консольний додаток — Win32 ConsoleApplication. У текстовому полі Location вкажіть папку, що система автоматично створить для файлів нового проекту.
Далі необхідно вказати платформу, для якої створюється проект. Для 32-розрядної версії компілятора Visual++ у поле Platforms за замовчуванням задана опція Win32.
Після того як ви натиснете кнопку ОК, відобразиться вікно майстра з набором опцій (мал. 3.2).
Рис. 3.2. Вікно, що з'являється після вибору типу проекту Win32 Console Application
Оскільки ми будемо створювати проект із нуля, виберіть опцію An empty 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 a 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]); }
Якщо ви добре знайомі з мовою “C”, то напевно помітили в програмі помилки. Не виправляйте їх. Вони були допущені спеціально, з метою навчити вас використанню різних засобів налагодження.
Збереження файлу
Бажано зберегти файл до того, як ви приступите до його компіляції й компонування, а тим більше до того, як спробуєте запустити програму на виконання. Досвідчені програмісти можуть розповісти багато сумних історій про тих, хто намагався запустити на виконання незбережені файли, після чого, внаслідок непередбачених фатальних помилок, роботу над додатком доводилося починати спочатку.
Щоб зберегти уведений тільки що код, ви можете або клацнути на третій кнопці ліворуч на стандартній панелі інструментів, або вибрати в меню File команду Save, або натиснути [Ctrl+S]. Коли ви перший раз вибираєте команду Save, відкривається діалогове вікно Save. Збережіть файл під ім'ям ERROR. С.
На мал. 3.3 вікно редагування показане до збереження файлу. Після збереження в рядку заголовка вікна відобразиться нове ім'я файлу.
Рис 3.3. Вікно редагування до того, як його вміст буде збережено у файлі
Створення файлу, що виконується
Як правило, проекти для Windows 3.x, Windows95/98 і Windows, NT включають велику кількість файлів. Але зараз ми почали роботу над найпростішою програмою, що складається з єдиного файлу. Цього цілком достатньо, щоб розібратися з основними етапами створення повноцінного додатка на C/C++.
Додавання файлів у проект
Після того як проект створений, у нього можна відразу ж додавати нові файли. Перейдіть на вкладку FileView і клацніть правою кнопкою миші на елементі ERRORfiles. Контекстне меню з виділеною командою AddFilestoProject..., що при цьому відкриється, показане на мал. 3.4.
При виборі даної команди з'являється вікно InsertFilesintoProject, де ви можете відзначити файли, що підлягають включенню в проект. Одне зауваження із приводу типу файлів: файли заголовків (з розширенням Н) не включаються в список файлів проекту, а додаються в проект безпосередньо під час побудови програми за допомогою директив препроцесора #include.
У нашому випадку потрібно знайти створений раніше файл ERROR.C і виконати на ньому подвійний клік, у результаті чого файл автоматично буде доданий у проект.
Рис 3.4. Меню, що містить команду Add files to Project ... Рис. 3.5. Додавання файлу ERROR.C у проект
Побудова програми
Після створення вихідного файлу можна приступити до створення файлу що виконується. Відповідно до термінології розроблювачів Visual++, цей процес називається побудовою програми. Звернемося до показаного на мал. 3.6 меню Build з виділеною командою RebuildAll.
Єдине розходження між командами Build і RebuildAll, як ви пам'ятаєте, полягає в тому, що команда RebuildAllне перевіряє дату створення використовуваних у проекті файлів, тобто компілює й компонує всі файли проекту, незалежно від того, коли вони були створені. Щоб уникнути непорозумінь, пов'язаних з тим, що системний час комп'ютера може бути легко змінено, при роботі з невеликими додатками рекомендується використати команду RebuildAll.
Рис. 3.6. Команда RebuildAll виконає компіляцію й компонування файлів нового додатка
Налагодження програми
Якщо в програмі були допущені синтаксичні помилки, при виконанні команд Build і RebuildAll повідомлення про неї будуть відображатися на вкладці Build вікна Output(мал. 3.7). Рис. 3.7. Вивід повідомлень про помилки у вікні Visual++
Кожне повідомлення починається із вказівки імені файлу. Оскільки додатки Windows звичайно містять багато файлів, це дуже цінна властивість.
Відразу за ім'ям файлу, у круглих дужках, зазначений номер рядка, у якому була виявлена помилка. У нашому випадку перша помилка знайдена у восьмому рядку. Після номера рядка, за двокрапкою, ідуть слово error або warning і номер помилки.
Різниця між повідомленнями error і warning полягає в тому, що програми з попередженнями можуть бути виконані, а додатки з помилками обов'язково вимагають виправлень. Наприкінці кожного рядка повідомлення дається короткий опис виявленої помилки.
Попереджуючі повідомлення
Попереджуючі повідомлення можуть з'являтися в тих випадках, коли компілятор автоматично виконує деякі стандартні перетворення й сповіщає про це програмістові. Наприклад, якщо змінної типу int(ціле число) буде привласнене дробове значення, то автоматично відбудеться округлення. Це не означає, що в програмі допущена помилка, але оскільки перетворення типів даних відбувається непомітно для програміста, компілятор вважає своїм обов'язком сповістити про це.
Приведемо ще один приклад. Більшість функцій, оголошених у файлі МАТН.Н, приймають аргументи й повертають значення типу double(дійсне число подвійної точності). Якщо програма передасть одній з таких функцій аргумент типу float(дійсне число одинарної точності), компілятор, перш ніж направити дані в стек аргументів функції, виведе попереджуюче повідомлення про те, що тип даних float був перетворений в double.
Ви можете запобігти появі попереджуючих повідомлень, якщо будете явно перетворювати типи даних змінних відповідно до правил, прийнятими в мові С. Так, у розглянутому випадку явне приведення аргументів до типу даних double перед виконанням функції запобігатиме появі попереджуючого повідомлення.
Перше повідомлення про помилку
Повідомлення про помилку, представлене на мал. 3.7, є цілком типовим. Найбільше часто з ним доводиться зіштовхуватися тим, хто тільки освоює нову мову програмування. У цьому випадку програміст спробував задати змінної ім'я, зарезервоване для ключового слова. Це гарний принцип — привласнювати змінним імена, співзвучні з їхнім призначенням, однак обране нами ім'я вступило в конфлікт із ключовим словом continue, що існує в C/C++.
Використання команд Find і Replace
Досить часто в процесі програмування виникають ситуації, коли вам потрібно знайти й замінити якесь слово в тексті програми. Ви, звичайно ж, можете зробити це за допомогою діалогового вікна, що відкриває командою Replace... з меню Edit, але є й більше швидкий спосіб. Розглянете уважно панель інструментів, показану на мал. 3.8, і знайдіть у полі списку Find слово continue.
Щоб скористатися цим засобом пошуку, клацніть мишею в поле й уведіть слово, що хочете знайти, після чого натисніть [Enter]. На мал. 3.8 показаний результат такого пошуку. У тексті програми виділене слово continue, виявлене першим. Рис. 3.8. Використання засобів швидкого пошуку
Даний метод досить зручний для пошуку потрібного слова. Але наше завдання цим не обмежується, оскільки ім'я змінної continue нам необхідно замінити у всій програмі іншим ім'ям. У такому випадку доцільніше скористатися командою Replace... з меню Edit(мал. 3.9). Рис. 3.9. Вікно пошуку
Наша мета полягає в тому, щоб замінити ім'я змінної continue словом, також указувало б на призначення цієї змінної, але відрізнялося б від зарезервованих імен. Із цією метою введемо в поле Replacewith слово continu. Але залишилася маленька проблема. У програмі є рядок "\nWould you like to continue (Y/N)". Якщо ви виконаєте автоматичну заміну у всьому файлі, клацнувши на кнопці ReplaceAll, то повідомлення, видаване програмою, буде містити, граматичну помилку. Тому заміну варто проводити послідовно, переходячи від слова до слова, а в зазначеному місці клацнути на кнопці FindNext.
Швидке виявлення помилкових рядків
Тепер необхідно виконати повторну компіляцію програми, після якої вікно повідомлень буде виглядати так, як показано на мал. 3.10. Рис. 3.10 Оновлене вікно повідомлень
Існує досить швидкий спосіб переходу від вікна повідомлень до вікна редагування, і ми вам про нього розкажем. Помістіть курсор на рядку повідомлення, наприклад на першому попередженні:
warning. C4013: 'Printf undefined;..,
А тепер просто натисніть [Enter]. Курсор у вікні редагування буде автоматично поміщений у рядок програми, що викликала появу повідомлення про помилку, а ліворуч від рядка з'явиться стрілка (мал. 3.11).
Як ви вже знаєте, мови C/C++ чутливі до регістра символів. Тому компілятор зовсім точно встановив причину помилки. Перша буква функції printf() у нашій програмі помилково була уведена у верхньому регістрі. Компілятор, звичайно ж, не зміг знайти в бібліотеці функцію Printf().Цю помилку неважко виправити — досить замінити букву Р буквою р. Потім обов'язково збережіть файл. Рис. 3.11. Помічений стрілкою рядок програмного коду, що містить помилку
Продовження налагодження
Після того як ви внесли виправлення, програма готова до нової спроби побудувати виконуваний файл. Перейдіть у меню Project і знову виберіть команду RebuildAll. На мал. 3.12 показане обновлене вікно повідомлень.
Рис.3.12. Вікно повідомлень під час третьої спроби побудувати виконує файл
Тепер виявляємо, що той же рядок, що містив некоректне ім'я функції (Printf()),містить у собі ще одну помилку. В C/C++ всі строкові значення повинні братися в подвійні лапки. Виходить, у нашому випадку відкриваючі лапки у функції printf () варто поставити відразу після відкриваючої круглої дужки, тобто рядок повинна починатися в такий спосіб: printf(".
Збережіть файл і спробуйте ще раз побудувати програму. Як виглядає вікно повідомлень після чергового відновлення, показане на мал. 3.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 a trace demonstration! Would you like to continue (Y/N)в
На мал. 3.14 показано, що відбудеться далі. Рис. 3.14. Повідомлення про помилку виконання програми
Використання вбудованого відладчика
Створена нами програма на початку своєї роботи відображає на екрані вихідний вміст масиву даних, після чого запитує, чи хочете ви продовжити роботу. Відповідь Y (yes- так) сигналізує про те, що ви хочете заповнити масив власними даними й відобразити їх на екрані.
З мал. 3.14 можна зробити висновок про те, що хоча програмний код набраний зовсім правильно, тобто в ньому немає синтаксичних помилок, програма працює не так, як нам би хотілося. Помилки такого роду називаються логічними. На щастя, вбудований в Visual++ відладчик містить ряд засобів, які послужать для вас рятувальним кругом у подібній ситуації. По-перше, ви можете виконувати програму покроково, рядок за рядком. По-друге, вам надається можливість аналізувати значення змінних у будь-який момент виконання програми.
Різниця між командами StepInto і StepOver
Коли ви починаєте процес налагодження, з'являється панель інструментів Debug. З безлічі представлених на ній кнопок найбільше часто задіюється StepInto (четверта праворуч у верхньому ряді) і StepOver(третя праворуч). В обох випадках програма буде запущена на виконання в покроковому режимі, а в тексті програми виділяється той рядок, що зараз буде виконана.
Розходження між командами StepInto і StepOver проявляються тільки тоді, коли в програмі зустрічається виклик функції. Якщо вибрати команду StepInto, то відладчик увійде у функцію й почне виконувати крок за кроком всі її оператори. При виборі команди StepOver відладчик виконає функцію як єдине ціле й перейде до рядка, що випливає за викликом функції. Цю команду зручно застосовувати в тих випадках, коли в програмі робиться звертання до стандартної функції або створеної вами підпрограмі, що вже була протестована.
Давайте виконаємо покрокове налагодження нашої програми.
Як видно з мал. 3.15, у вікні редагування з'явилася стрілка (її називають індикатором трасування), що вказує на рядок програми, що буде виконана на наступному кроці. У цей момент вона вказує на функцію print_them(). Рис. 3.15. Вікно редагування після того, як тричі була виконана команда StepInto або StepOver
Має сенс виконати цю функцію як одне ціле. Для цього виберемо команду StepOver. Функція буде виконана, і індикатор трасування вкаже на перший виклик функції printf(). Тепер три рази натисніть клавішу [F10], поки стрільця не зупиниться напроти функції scanf().У цей момент вам потрібно перейти у вікно програми й у відповідь на запрошення Would you like to continue(Y/N) увести Y і нажати [Enter] (мал. 3.16).Відразу після цього на екрані з'явиться повідомлення про помилку (мал. 3.17).Це повідомлення було згенеровано програмою після спроби виконає функцію scanf(). Давайте спробуємо розібратися, у чому, власне, складається проблема.
Рис. 3.16. Уведіть "Y" і натисніть [Enter], щоб продовжити виконання програми Рис. 3.17. Відладчик повідомляє про помилку в програмі
Помилка пов'язана з некоректним використанням функції scanf(). Функція scanf() очікує вказівки адреси комірки пам'яті для заповнення. Розглянемо такий вираз:
scanf("%C", continu); Як бачите, тут вказується не адреса змінної, а сама змінна. Щоб вказати адресу, потрібно помістити оператор взяття адреси (&) перед continu. Внесіть виправлення у вираз, щоб він виглядав так:
scanf("%C", &continu);
Збережіть файл і знову виберіть команду RebuildAll.
Додаткові засоби налагодження
Ви, мабуть, чули про точки зупину, які застосовуються в програмі при необхідності перервати її виконання в певних місцях. Зміст використання точок зупину полягає в тому, що відладчик не витрачає часу на покрокове виконання програми аж до зазначеної точки, по досягненні якої переходить у покроковий режим.
Точки зупину найпростіше розставляти за допомогою кнопки Breakpoint (перша праворуч) панелі інструментів Build. Для цього досить установити курсор на потрібному рядку програми й клацнути на зазначеній кнопці. Якщо ж виділений рядок уже містить точку зупину, то після кліка на кнопці Breakpoint вона буде вилучена. При виборі команди Go програма буде виконуватися від поточного місця розташування курсору до найближчої точки зупину.
звернемось до нашої програми. Ми знаємо, що всі рядки програми до виклику функції scanf() відмінно працюють. Щоб не витрачати час на покрокове виконання всіх рядків, які вже були перевірені раніше, поставимо точку зупину на 20-й рядку, що містить виклик функції scanf().
Є й інший спосіб завдання точку зупину — за допомогою діалогового вікна Breakpoints(мал. 3.18), викликаного командою Breakpoints... з меню Edit. За замовчуванням при кліку на кнопці зі стрілкою відкривається контекстне меню, у якому першим пунктом вказується команда створення точку зупину на тім рядку, де в цей момент у вікні редагування перебуває курсор. У нашому випадку це рядок 20. Рис. 3.18. Завдання точки зупину
Робота із точками зупину
Припустимо, що ви поставили точку зупину в рядку програми, що містить виклик функції scanf{). Тепер виберіть команду Go- або з меню, або нажавши клавішу [F5]. Зверніть увагу, що виконання програми переривається не на першому рядку програми, а на рядку, що містить точку зупину.
Далі можна продовжити виконання програми в покроковому режимі або проаналізувати поточні значення змінних. Нас цікавить, чи буде функція scanf() працювати коректно після того, як у програмний код були внесені зміни. Виберіть команду StepOver, перейдіть до вікна програми, введіть букву Y у верхньому регістрі й натисніть клавішу [Enter]. (Ми застосували команду StepOver для того, щоб уникнути покрокового аналізу відладчиком всіх операторів функції scanf(). При виборі команди StepIn з'являється пропозиція вказати місцезнаходження файлу SCANF.C) Відладчик не видав вікна з повідомленням про помилку. Але чи означає це, що всі проблеми дозволені? Щоб відповісти на це питання, досить буде проаналізувати поточне значення змінної continu.
Вікно QuickWatch
Команда QuickWatch... відкриває діалогове вікно QuickWatch(мал. 3.19), що дозволяє по ходу виконання програми аналізувати значення змінних. Найпростіший спосіб визначити значення змінної за допомогою даного вікна полягає в тому, що курсор міститься на імені змінної у вікні редагування, а потім натискається комбінація клавіш [Shift+F9]. Проробіть зазначену операцію зі змінної continu. Рис. 3.19. Діалогове вікно QuickWatch
Тепер, коли ми визначили, що змінна continu має правильне значення, можна продовжити виконання програми до кінця, вибравши в меню Debug команду Go(мал. 3.20).
Рис. 3.20. Виправлена версія програми
Написати консольну програму реалізації вказаних завдань згідно варіантів. Розвязок завдань повинен містити три управляючі структури: послідовну, циклу та повторення.
Завдання:
Знайти максимальне і мінімальне число масиву цілих чисел. Чисел повинно бути стільки, скільки букв у фамілії * 2, та вивести на екран вхідний та вихідний масив. Вони повинні генеруватися випадковим чином.
(варіанти 1,6,11,16,21,26)
Видалити з масиву всі парні числа. Чисел повинно бути стільки, скільки букв у фамілії * 3, та вивести на екран вхідний та вихідний масив. Вони повинні генеруватися випадковим чином.
(варіанти 2,7,12,17,22,27)
Видалити з масиву числа кратні 3. Чисел повинно бути стільки, скільки букв у фамілії * 5. Вони повинні генеруватися випадковим чином. (варіанти 3,8,13,18,23,28)
Із вхідної стрічки розміром не більше < (Номер варіанту%5)*(Кількість букв в фамілії)> cимволів , видалити комбінацію символів xyz. Та вивести стрічку на екран.
(варіанти 4,9,14,19,24,29)
Із вхідної стрічки розміром більше < (Номер варіанту%8)*(Кількість букв в фамілії)> cимволів, видалити комбінацію символів xz та yx. Та вивести стрічку на екран.
(варіанти 5,10,15,20,25,30)