Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LabC++ №1.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
443 Кб
Скачать
☆

2.8. Відлагодження програми

У системі програмування є відладчик, який працює на рівні текстового коду. Використовуючи його, Ви можете виконувати програму в покроковому режимі, установлювати точки призупинення виконання й стежити за поточними значеннями змінних програми.

Відкрийте в текстовому редакторі файл myfile.c.

Виконайте: Головне Меню -> Debug -> Watches -> Add watch (або натисніть комбінацію клавіш Ctrl+F7). У вікні Add Watch, яке з'явиться на екрані, уведіть у полі Watch Expression ім'я змінної а. "Натисніть" кнопку OK. У нижній частині екрану з'явиться вікно Watch, а в ньому - "а: Undefined symbol 'a'".

Повторіть ці дії кілька разів, вводячи в полі Watch Expression імена b, с, d. У вікні Watch додаватимуться аналогічні повідомлення. Цими діями ми даємо системі програмування інструкцію відстежувати й відображати у вікні Watch поточні значення вибраних змінних програми. Оскільки програма ще не виконується, ці змінні поки що "невідомі" системі програмування, про що й свідчать повідомлення.

Зробіть активним вікно редактора й натисніть клавішу F8. У вікні редактора кольором (швидше за все - голубим) буде виділений рядок 2 тексту програми. Це ми почали відладку нашої програми в покроковому режимі. Ще раз натисніть клавішу F8. Виділення зміститься на рядок 4, а у вікні відображатимуться якісь значення змінних. Виконання програми почалося й ці змінні вже "відомі", але їхні значення ще не встановлені, тому вони - якісь випадкові числа. З наступним натисненням клавіші F8 значення змінної а зміниться на 1. Кожне наступне натиснення клавіші F8 просуватиме виконання програми на оператор вперед, і відповідно до виконання операторів програми мінятимуться значення змінних.

Зверніть увагу на те, що після рядка 8 виконання зразу ж "перестрибне" на рядок 13. Оскільки умова в умовному операторі 8 не виконується, виконання обходить рядки 9 - 12. Якщо Ви зміните:

4a=2;

і знову виконаєте програму в покроковому режимі, умова в рядку 8 виконуватиметься, отже, і виконання програми пройде через рядки 9-10-11 і обійде рядки 12-15.

Закінчивши виконання програми, установіть курсор на рядок 8 і виконайте: Головне Меню -> Debug -> Toggle breakpoint (або натисніть комбінацію клавіш (Ctrl+F8). Рядок 8 виділиться кольором (швидше за все - червоним). Цим ми задали точку призупинення програми. Тепер запустіть програму на виконання (F9). Виконання зупиниться на рядку 8. При цьому у вікні Watch відображатимуться поточні значення змінних. Ви можете продовжити виконання в покроковому (F8) або в автоматичному режимі (F9).

Те меню, яке "випадає" по Головне Меню -> Debug, дає можливість повністю управляти стеженням за значеннями й точками призупинення.

2.9. Структура програми

Кожна програма на С++ у своєму складі повинна мати головну функцію main(). Саме функція main() забезпечує створення точки входу в об’єктний модуль.

Крім функції main(), до програми може входити будь-яка кількість функцій. Кожна функція по відношенню до іншої є зовнішньою. Для того, щоб функція була доступна, необхідно, щоб до її виклику про неї було відомо компілятору.

Операції і вирази задають певну послідовність дій. Прості вирази містять знак операції і операнди. Прикладом простого виразу з бінарною операцією є віднімання: 3.4 – x.

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

Основні арифметичні операції:

+, -, *, / — знаки бінарних операцій додавання, віднімання, множення і ділення відповідно. Існує два види операції ділення: цілочисельне ділення (ділення з остачею) і ділення без остачі (результат дійсне число).

Для цілих чисел визначена операція % — ділення по модулю (знаходження остачі від ділення). Наприклад, 5%2 = 1.

Прикладом унарної арифметичної операції є операція зміни знака числа.

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

С

Програма на С++

труктура програми на мові С++:

#Заголовок

Директиви препроцесора

Функції

main( )

складаються

Оператори

з операторів

Функція a( )

Оператори

Функція b( )

Оператори

Виклик функції – це вказівка імені функції, за якою у круглих дужках міститься список аргументів (можливо порожній). При­клад виразу із викликом функції:

a*sin(x+k)+b*cos(x-k) pow(2, n+l)-l

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

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

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

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

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

У мові С++ передбачені дві нетрадиційні операції ++ і -- відповідно для збільшення і зменшення на одиницю значення операнда (унарні операції інкременту та декременту). Їх можна вказувати перед операндом і після операнда. У першому випадку (++x або --x) значення операнда x змінюється перед його використанням у виразі, а у другому (x++ або x--) — після його використання. Наприклад:

b=bl=3; c=cl=5;a=b+c++; /* b=3; c=5+l=6; a=3+5=8 */

al=bl+(++cl);/* bl=3; cl=5+l=6 ; al=3+6=9 */

<, >, ==, >=, <=, != — це знаки операцій відношення (менше, більше, дорівнює, більше або дорівнює, менше або дорівнює, не дорівнює), які використовуються в логічних виразах;

&&, ||,! — знаки логічних операцій «І», «АБО» і «НЕ»;

&, |, ^, <<, >>, ~ — знаки порозрядних логічних операцій, які виконуються над однойменними бітами машинного слова: «І», «АБО», виключаюче «АБО», зсув вліво, зсув вправо, інверсія;

?,: — знаки, які використовуються в умовній тернарній операції. Наприклад, результатом виразу (a>0) ? a : 0 буде значення а, якщо а>0 і нульове значення — в іншому випадку.

*, & — знаки адресних операцій.

[і] — квадратні дужки - операція, що використовуються для задання розмірів масиву і доступу до елементу масиву;

(і) — дужки використовуються для зміни черговості виконання операцій у виразах і при вказівці аргументів функцій;

sizeof (ім'я_тип) або sizeof вираз — операція обчислення розміру типу значення в байтах.

Зручні у використанні наступні складені операції присвоювання:

*=, /=, %=, +=, -=, «=, »=, &=, ^=, |=

Вони застосовуються для компактного запису операторів присвоювання. Наприклад, при виконанні одного з двох операторів а=а+b та a+=b отримують однаковий результат.

Оператори так само, як операції і вирази, задають певну послідовність дій компілятора або обчислювальної машини, але, на відміну від виразів, є закінченими пропозиціями мови. Вони можуть містити декілька виразів, розділених комами. Наприклад, оператор введення-виведення, який містить два вирази:

cout<<"Введіть значення x:", cin>>x;

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

Оператори можуть бути позначені ідентифікатором, що називається міткою і закінчується двокрапкою. Мітки використовуються для переходу до них за допомогою оператора goto (безумовного переходу).

Приклади коду, що працює

Приклад 1. Знайти мінімум з двох чисел x та y.

…

if(x<y) min=x;

else min=y;

cout<<"min="<<min;

…

Приклад 2. Перевірка коректності вводу змінної, яка повинна знаходитися у діапазоні від 1 до 31.

…

cin>>den;

if(den<l||den>31) соut<<"Помилка вхідних даних";

…

Приклад 3. Пошук максимуму з трьох чисел a, b, с.

…

if(a>b&&a>c) max=a;

else if(b>c) max=b;

else max=c;

cout<<"max="<<max;

…

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