
- •Задание 1
- •Задание 2
- •4. Варианты индивидуальных заданий Задание 1
- •5. Примеры решения задач (вариант 00)
- •5.1. Задание 1
- •5.1.1. Разработка алгоритма решения.
- •5.1.2. Определение переменных программы
- •5.1.3. Разработка текста программы
- •5.1.4. Отладка программы
- •5.1.5. Результаты работы программы
- •5.2. Задание 2
- •5.2.1. Разработка спецификаций функции.
- •5.2.2. Разработка алгоритма решения.
- •5.2.3. Функция substr(). Текст программы.
- •5.2.4. Функция main()
- •5.2.4.1. Переменные функции main()
- •5.2.4.2. Текст функции main()
- •5.4.3. Общие объявления
- •5.2.5. Отладка программы
- •5.2.6. Результаты работы программы
5.4.3. Общие объявления
В функции main() применяются библиотечные функции ввода-вывода и функция сравнения строк, так что включим в программу файлы stdio.h и string.h. Кроме того, следует включить и описание функции substr(). Хотя все эти описания нужны только для функции main(), стиль программирования на языке C требует размещения их в начале программы, вне программных блоков.
5.2.5. Отладка программы
При отладке программы в пошаговом режиме следует отслеживать:
правильность передачи параметров функции,
правильность выхода на начальный символ подстроки,
правильность контроля параметров,
правильность копирования символов,
правильность окончательного формирования строки-результата (достаточно распространенной ошибкой является отсутствие признака конца в строке-результате).
Следует отметить, что при наличии некоторых ошибок отладка может быть несколько неудобной за счет того, что в функции применены очень мощные операторы цикла, которые занимают одну строку. В пошаговом режиме все итерации такого цикла выполняются за один шаг. При наличии ошибок в цикле, возможно, нужно будет "разгружать" оператор цикла - переносить часть действий из заголовка цикла в его тело.
Очень важно подобрать для отладки такие входные данные, которые позволили бы убедиться в правильном функционировании программы на всех ветвях ее алгоритма. Мы при отладке этой работы использовали во всех случаях строку-источник вида: "0123456789". Такой вид позволяет легко установить по выводу на экран, какое преобразование было выполнено функцией. Параметры pos и len мы задавали в таких вариантах:
pos=2, len=3 |
- проверка правильности работы при правильных заданиях параметров |
pos=0,len=4 |
- подстрока начинается с начала строки |
pos=6, len=4 |
- подстрока заканчивается на конце строки |
pos=0, len=10 |
- подстрока захватывает всю строку |
pos=3, len=0 |
- подстрока нулевой длины |
pos=8, len=4 |
- особый случай: подстрока будет иметь меньшую длину, чем задано |
pos=3, len=-2 |
- ошибка: отрицательная длина |
pos=-1, len=3 |
- ошибка: отрицательная начальная позиция |
pos=10, len=3 |
- ошибка: позиция начала больше длины источника |
5.2.6. Результаты работы программы
Результаты работы программы при приведенных выше входных данных такие:
pos=2, len=3
s2=>>0123456789<<
s1=>>234<<
R=0
pos=0, len=4
s2=>>0123456789<<
s1=>>0123<<
R=0
pos=6, len=4
s2=>>0123456789<<
s1=>>6789<<
R=0
pos=0, len=10
s2=>>0123456789<<
s1=>>0123456789<<
R=0
pos=3, len=0
s2=>>0123456789<<
s1=>><<
R=0
pos=8, len=4
s2=>>0123456789<<
s1=>>89<<
R=1
pos=3, len=-2
s2=>>0123456789<<
s1=>><<
R=-1
pos=-1, len=3
s2=>>0123456789<<
s1=>><<
R=-1
pos=10, len=3
s2=>>0123456789<<
s1=>><<
R=1