
- •Основи програмування методичні вказівки та індивідуальні завдання
- •В ступ
- •Порядок виконання лабораторних робіт
- •Завдання до лабораторних робіт Лабораторна робота № 1
- •Лабораторна робота № 2
- •Лабораторна робота № 3
- •Int SumaCyfr(long c); /* оголошення функцій */
- •Лабораторна робота № 4
- •Лабораторна робота № 5
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 6
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 7
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 8
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 9
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 10
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 11
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 12
- •Варіанти індивідуальних завдань
- •Література
Лабораторна робота № 3
Тема роботи: Налагодження програми, контроль за процесом її виконання
Мета роботи: розширити знання про структуру С-програм; оволодіти основними прийомами налагодження програми через застосування контролю за ходом її виконання.
Завдання лабораторної роботи. 1. Прочитати текст програми, поданої нижче. Ця програма визначає із введеної послідовності довгих цілих чисел перше число, що має найбільшу суму цифр. Для обчислення суми цифр числа використано окрему функцію SumaCyfr(), яка визначає і повертає суму цифр заданого числа. Ще дві користувацькі функції програми LiniaRamky1() та LiniaRamky2() призначені для формування рамки, якою виділяється результат виконання програми. Параметр цих функцій задає довжину лінії рамки. Введення чисел, запис суми їхніх цифр та перевірка, чи ця сума перевищує найбільшу зі знайдених раніше, організовано за допомогою оператора do-while як циклічний процес у функції main(). Коли введення завершено (його можна перервати ввівши 0 замість числа), програма виводить результат: знайдену максимальну суму цифр, номер і значення шуканого числа.
Набрати текст програми, зберігаючи стиль її запису. Записати текст програми у файл в особистому каталозі. Відкомпілювати програму, виправити всі помилки і запустити її на виконання.
Ввести послідовність цілих чисел, які аналізуватиме програма. Кожне число може мати не більше десяти цифр. Числа найкраще набирати в одному рядку, відокремлюючи пробілами або табуляціями. Можна ввести MAXN чисел, або зупинити введення нулем. Переписати у звіт введені числа і результати виконання програми.
Відкрити діалогове вікно замін Replace Text (розділ головного меню Search/Replace…) і переглянути призначення усіх його опцій. Встановити опції, які потрібні для заміни ідентифікаторів змінних у всьому тексті програми. Поміняти імена декількох змінних на вказані нові, наприклад:
chysl numb ; n nom ; c cyfr.
Перевірити правильність замін і виконати змінену програму. Відзначити, чи вплинули внесені зміни на результат роботи програми.
Ознайомитись із основними засобами інтегрованого середовища, призначеними для контролю за ходом виконання програми, пошуку та виявлення помилок на етапі її реалізації (розділи меню Run та Debug ).
Повернутись до першої версії програми. Встановити курсор на одному із символів оператора (рядка) if усередині тіла циклу do-while. Запустити програму на виконання до досягнення вибраного рядка Go to cursor ( F4 ).
Відкрити вікно спостереження Watch і вивести в нього поточні значення основних змінних циклу (n, chysl, sumc, maxsum та ін.). Записати їх у звіт.
Перейти в режим покрокового виконання програми Step over ( F8 ). Виконати в цьому режимі декілька проходів по циклу, фіксуючи зміни в значеннях змінних. За якої умови змінюються значення maxsum, nmax та chmax ?
Потім перейти в режим трасування програми Trace in ( F7 ) і знову зробити декілька проходів по циклу. При вході у функцію SumaCyfr() доповнити вікно спостереження внутрішніми змінними функції c та sum і зафіксувати їхні значення. У чому відмінність команд F7 і F8 ?
Встановити точку зупинки на одному з операторів (рядків) тіла циклу, застосувавши команду Toggle breakpoint – перемикання точок зупинки ( Ctrl+F8 ). Продовжити виконання програми командою Run ( Ctrl+F9 ), записуючи значення змінних циклу після кожної зупинки програми.
Зняти встановлену точку зупинки через вікно Breakpoints або командою ( Ctrl+F8 ) і перенести її на інший оператор. Проаналізувати і записати проміжкові результати та завершити роботу програми ( Ctrl+F9).
Повторно провести контроль ходу виконання програми (п. п. 6 . .11), запустивши її для інших значень вхідних чисел. Режими зупинки і покрокового виконання можна комбінувати різними способами. Занотувати проміжкові та кінцеві результати виконання програми.
Ще раз запустити програму, встановивши точку зупинки на одному з операторів. Після зупинки перейти у вікно редактора і внести довільну (логічно і синтаксично правильну) зміну в текст програми. Спробувати продовжити виконання програми, проаналізувати повідомлення, яке висвітлюється у цьому випадку.
Перезапустити змінену версію програми, зберігши точку зупинки. Переглянути та занотувати поточні значення змінних, відображені у вікні спостереження. Наприкінці записати результати виконання програми.
Оформити звіт про виконання лабораторної роботи, в якому навести текст програми, вказати, що було зроблено на кожному кроці роботи, які засоби для цього використовувалися, які результати зафіксовано. Зробити висновок.
Програма для опрацювання:
/* Пошук числа з найбільшою сумою цифр */
#include <stdio.h>
#define MAXN 10 /* максимальна кількість чисел */