Основы программирования с Java
Шрифт:
Документация также помогает поддерживать решение в случае, если оно нуждается в пересмотре или обновлении для возможных будущих изменений.
Используем пример поиска способа путешествовать из Москвы в Лондон.
Предположим, что вы турагент, и определение задачи может быть что-то вроде "Найти лучший способ для вашего клиента, чтобы проехать из центра Москвы в Лондон в Великобритании".
Анализируя эту задачу, вам придется узнать у клиента, что он или она имеет в виду под самым лучшим способом, это кратчайшее расстояние
Эскизный проект может начаться с рассмотрения всех возможных маршрутов и видов транспорта, возможно, с помощью Google Maps или других сайтов туристических услуг.
И чтобы уточнить решение, нужно оценить различные маршруты и виды транспорта, а затем выбрать маршрут, который наилучшим образом соответствует вашей цели, например, самый короткий маршрут или самый дешевый по стоимости.
Как только вы создали решение, тестирование может быть трудным для этой конкретной задачи, если вы не можете фактически проделать это путешествие.
Если вы не можете выполнить эту поездку, тогда вы можете оценить решение, проверив записи определенных рейсов, чтобы убедиться, что есть достаточно времени для соединения рейсов, если это необходимо.
Или опросить кого-нибудь с предыдущим опытом создания подобной поездки.
Затем вам нужно будет задокументировать свое решение, предоставляя простые инструкции вашему клиенту, чтобы он не упустил соединение рейсов или чтобы было достаточно местной валюты для использования общественного транспорта.
После того как ваш клиент завершил поездку, вы сможете получить обратную связь от него, чтобы можно было вести учет того, был ли положительным опыт или пересмотреть решение, если ваш клиент не был доволен.
И это эквивалентные шаги при попытке запрограммировать компьютер как процесс решения задач.
При определении задачи для компьютера, мы должны придумать очень точные спецификации задачи.
И одним из распространенных подходов, является придумать спецификацию для начального состояния или входную спецификацию и итоговую спецификацию для конечного состояния или выходную спецификацию для задачи.
Это полезно, потому что путь пользователя для взаимодействия с компьютером часто лежит через устройства ввода/вывода.
Вам также необходимо определить, какая дополнительная информация нужна для решения задачи.
Используя предыдущую задачу в качестве примера, вам, возможно, придется узнать, во сколько вы должны прибыть в пункт назначения и сколько денег вы готовы потратить.
Когда мы разрабатываем решения для реальных жизненных задач, мы часто записываем шаги на определенном языке, таком как русский или английский.
При решении задач с помощью компьютера, мы также хотим перечислить шаги на языке, который могут легко понять все те, кто участвует в решении проблемы, это особенно важно, если вы работаете в команде. Такую последовательность шагов часто называют алгоритмом.
В общем, алгоритм представляет собой последовательность точных шагов на английском или другом человеческом языке для выполнения определенных функций.
Очень часто, алгоритм разрабатывается на разных уровнях детализации с помощью интерактивного процесса. Такой подход часто называют пошаговым уточнением.
Выше были приведены подготовительные шаги перед тем, как вы на самом деле реализуете программу или начнете программировать решение задачи.
Можно подумать, что реализация программы является наиболее трудным шагом, но, если вы проделали хорошую работу в процессе подготовки, шаг кодирования будет сделан просто, и перевод с очень хорошо продуманного алгоритма может быть самой легкой частью среди всех этих шагов.
Поэтому, когда вы решаете компактную проблему, мы советуем вам удержаться от соблазна начать кодирование, прежде чем вы получите отчетливое понимание решения задачи.
Еще одно решение, которое нужно сделать в процессе реализации, это нужно определить, какой язык программирования использовать и какое представление будет использоваться для различных аспектов задачи.
После окончания кодирования программы, она должна быть скомпилирована в исполняемый код компьютера, и она должна быть протестирована, используя различные сценарии, чтобы проверить все ли в порядке при различных условиях.
Если возникают ошибки, или если программа не работает, как задумано, нужно отследить ошибки. Этот шаг часто называют шагом отладки.
Для исторической справки. Термин отладки (debugging) используется, потому что первая известная компьютерная ошибка была найдена в 1947 году, когда мотылек (насекомое – bug) был пойман в ловушку в реле компьютера.
Насекомое было записано на пленку в журнале учета Грейс Хоппер и в настоящее время хранится в Смитсоновском музее.
Для сложных проблем, важно протестировать программу в рамках различных сценариев, так как программа, которая работала в одном случае, не означает, что она будет работать для всех случаев.
И полезно придумать план тестирования, чтобы охватить набор общих случаев, которые можно было бы ожидать при работе программы.
Тесты могут привести к двум распространенным типам ошибок, а именно синтаксической ошибки или семантической ошибки.
Также важно документировать и поддерживать программу, особенно для программ, жизнь которых, как ожидается, продлится в течение длительного времени, и для повторного использования, и программ, которые могут быть пересмотрены или изменены другими пользователями.