|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.11.2012, 12:39 | #41 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Пример разработки программы по методологии экстремального программирования (Test-driven development)
Покажу на простом примере. Нужно написать функцию, которая переводит все символы строки в верхний регистр (верхний регистр - это все символы строки "с большой буквы") Например мы вводим: Hello, World! А получаем: HELLO, WORLD! Итак приступим. Добавим к проекту следующие файлы (не забываем подключить CuTest.h и CuTest.c (скачать с этого сайта: http://cutest.sourceforge.net/)): main.c Код:
Код:
Вызываем StrToUpper и выполняем сравнение: Код:
expected - это строка с ожидаемыми данными actual - это выходными данными от исследуемой программы То есть мы передаём в функцию StrToUpper строку "hello world" и ожидаем получить строку "HELLO WORLD". Но так как функция StrToUpper в данном исполнении просто возвращает то, что приняла, то мы на выходе этой функции получим "hello world", что и будет замечено при запуске тестов: Наша задача избавиться от этого сообщения путём исправления функции StrToUpper. Но сначала добавим ещё тестов: И запустим тестирование: Исправить ситуацию можно только написанием правильной функции StrToUpper: Код:
Заказчику можно поставлять ПО прямо с модульными тестами. А запускать модульное тестирование, например, с ключом --test. Удобно производить доработку и контролировать ПО с помощью запуска тестирования. Всегда можно добавлять дополнительные тесты. При добавлении нового файла к проекту, функции этого файла также тестируются, как и в рассмотреном примере. Более подробно написано в файле README.TXT framework'a CuTest с сайта: http://cutest.sourceforge.net/ Пример использования ключа -t для запуска модульного тестирования: main.c Код:
Код:
Последний раз редактировалось 8Observer8; 17.11.2012 в 14:51. Причина: добавил содержимое файла StrUtil.h |
17.11.2012, 13:14 | #42 | ||
Пользователь
Регистрация: 05.11.2012
Сообщений: 16
|
Цитата:
Цитата:
В общем то цель моих работ - использовать только командную строку без ГУЁв и пообвыкнуть в консоли. А в идеале если была бы настоящая PDP-11 и первая редакция этой книги я бы использовал именно такую комбинацию. Но за неимением... Быть может я когда нибудь и буду участвовать в разработке каких либо приложений, тогда безусловно мне понадобятся среды разработки и прочие удобства, а пока только для удовольствия. Все же GDB изучить думаю необходимо, но на экране монитора читать неудобно, думаю должны быть печатные книги. |
||
17.11.2012, 13:37 | #43 |
Пользователь
Регистрация: 05.11.2012
Сообщений: 16
|
ну а последнее сообщение скорее всего не для меня адресовано :D
в коде я не разобрался, есть символы звездочки я не знаю что это. Мне пока рано прикручивать дополнительные процедуры из внешних файлов и использовать их. Я пока на уровне упражнения 1.22 |
17.11.2012, 13:46 | #44 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Не обращайте внимания. Это и для вас тоже. Но только для будущего. У вас хороший темп. И модульное тестирование вам совсем не нужно сейчас. Я его буду использовать для тестирования ваших решений. Это я больше для себя написал, чтобы не забыть. Работайте так, как задумано в учебнике. Авторы не зря так преподносят материал. Ничего лишнего! Используйте только то, что "известно" к моменту выполнения задания.
P.S. Git (не EGit) - консольный. Eго Linus Torvalds придумал. Для совместных разработок - это очень необходимая вещь. POSIX - значит git есть для всех unix-подобных систем. Последний раз редактировалось 8Observer8; 17.11.2012 в 14:12. |
19.11.2012, 12:14 | #45 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Комментарий к сообщению о TDD
После фразы: Цитата:
Код:
|
|
22.11.2012, 17:04 | #46 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Решил потренироваться на упражнениях из книги K&R в разработке по TDD. В TDD принцип такой: пишем заглушку для функции, потом - тесты. Естественно, что первый запуск тестов даст отрицательный результат. И мы пишем тело нашей функции, чтобы тесты стали положительные.
Инструментарий - среда NetBeans 7.1.2 http://netbeans.org/downloads/ (можно, наверное, сразу для С и С++ скачать, но я так не пробовал, так как мне и Java нужна) - CuTest http://cutest.sourceforge.net/ (к каждому своему проекту нужно подключать два файла: CuTest.h и CuTest.c) Плагин С и С++ для NetBeans Для разработки программ в NetBeans на C и С++ нужно поставить плагин. На стартовой странице есть ссылка, где описано, как поставить плагин и отладчик dbg (см. рисунок ниже) Для удобства, вот эта ссылка: http://netbeans.org/kb/trails/cnd.ht...gn=welcomepage CUnit Я ещё поставил CUnit. Как я понял, эта основа подходит и для разработки C++ классов. Описание, того, как поставить CUnit в NetBeans находится по ссылке выше, в секции: Developing C and C++ Projects (см. рисунок ниже) Для удобства, вот эта ссылка: http://netbeans.org/kb/docs/cnd/c-unit-test.html Я сразу не до конца понял, как ставить CUnit. Ответы на все свои вопросы я нашёл здесь (см. сообщения от ysim, особенно последнее): http://forums.netbeans.org/post-91875.html CuTest Я буду использовать CuTest (эта основа только для С программ). Ещё раз повторюсь: CuTest http://cutest.sourceforge.net/ (к каждому своему проекту нужно подключать два файла: CuTest.h и CuTest.c) Git В NetBeans есть Git. Очень удобно сохранять версии разрабатываемой программы. В меню: Team->Git->Initialize->выбираем хранилище. Теперь, чтобы сохранить файл в хранилище, нужно в меню: Team->Summit->вводим комментарий->нажимаем Commit Установка аргументов командной строки File->Project Properties (project name)->Run->Run Command->дописываем после "${OUTPUT_PATH}" аргументы командной строки, например: -t Последний раз редактировалось 8Observer8; 22.11.2012 в 17:06. |
22.11.2012, 17:24 | #47 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Упражнение 1.20. Напишите программу detab, которая бы заменяла символы табуляции во входном потоке соответствующим количеством пробелов до следующей границы табуляции. Предположим, что табуляция имеет фиксированную ширину n столбцов. Следует ли сделать n переменной или символическим параметром?
Мне понравился следующий ответ, там detab сделали отдельной функцией: http://clc-wiki.net/wiki/K%26R2_solu..._1:Exercise_20 Detab.h Код:
Detab.c Код:
main.c Код:
P.S. Для запуска тестов нужен ключ: -t |
09.07.2015, 00:50 | #48 |
Новичок
Джуниор
Регистрация: 09.07.2015
Сообщений: 1
|
Упражнение 1.14 выводит частоту ввода символов снизу вверх
Код:
Последний раз редактировалось Stilet; 09.07.2015 в 08:27. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Упражнения c# | veter48 | Помощь студентам | 0 | 12.07.2011 18:53 |
[Си] Упражнения | Fobo5 | Помощь студентам | 1 | 02.02.2011 21:22 |
(С) Простое упражнение из Кернигана, Ричи. Пробелы | Матвейка | Помощь студентам | 1 | 07.06.2009 12:37 |
Упражнения делфи | MAKEDON | Свободное общение | 1 | 26.08.2008 02:31 |