- •Лабораторна робота №1
- •1.Назва: Робота в інтегрованому середовищі програмування Borland с
- •2.1 Підготовка каталога і запуск системи програмування
- •2.3 Налагодження робочого середовища
- •2.3.1. Встановлення каталогів
- •2.3.2. Параметри компіляції
- •3.6. Збереження параметрів середовища
- •2.4. Використання підказки
- •2.3.3. Параметри програми Make
- •2.3.4. Параметри компонувальника
- •2.3.5. Параметри відладчика
- •2.5. Створення, редагування й збереження програми
- •2.6. Компіляція й виконання програми
- •2.7. Діагностика помилок і попередження компілятора й компонувальника
- •2.8. Відлагодження програми
- •2.9. Структура програми
- •4.Приклад
- •3.Виконання роботи
- •Варіанти завдань
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;
…
