"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович
Постановка задачи — первый этап решения задачи на компьютере. На нём выясняют, какой результат нужен, какие сведения уже известны и какие условия ограничивают их значения. Это помогает не составить программу, которая решает не тот вопрос или работает не для всех предусмотренных случаев. Чёткая постановка служит основой для математической модели, алгоритма и проверки результата.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Постановка задачи — первый этап решения задачи на компьютере: нужно точно определить, что дано и какой результат требуется получить. Иными словами, сначала задачу переводят из словесного условия в ясное описание входа и выхода. Это нужно, чтобы алгоритм и программа решали именно поставленную задачу.
Исходные данные — сведения, известные до решения и передаваемые для обработки. Ими могут быть числа, текст или другие значения, которые вводит пользователь либо получает программа. Их выделяют, чтобы понять, с какой информацией предстоит работать.
Результативные данные — сведения, которые требуется получить в результате решения. Это может быть одно число, несколько величин или текстовый ответ. Их точное описание позволяет определить, какой результат должна выдать программа.
Ограничения — условия, которым должны удовлетворять исходные данные или искомый результат. Например, длина стороны может быть только положительной, а число оценок — заранее заданным. Ограничения нужны, чтобы определить допустимые случаи и не применять алгоритм там, где его условия не выполняются.
Постановка задачи предшествует составлению алгоритма и программы: сначала нужно понять задачу, иначе можно автоматизировать не то, что требуется. Даже правильно работающая программа окажется бесполезной, если она выдаёт не тот ответ. Поэтому до выбора действий для компьютера уточняют цель и ожидаемый результат.
Условие задачи следует внимательно прочитать и выяснить, какие сведения в нём заданы, а какие нужно найти. Это не всегда очевидно: слова могут описывать ситуацию, но не называть прямо входные и выходные величины. Полезно спросить себя: «Что уже известно?» и «На какой вопрос нужно ответить?». Так легче не принять промежуточную величину за конечный результат.
Исходные и результативные данные удобно перечислить отдельно, указывая смысл каждой величины и, когда это важно, её тип и единицы измерения. Например, число и строка требуют разной обработки, а длину нельзя путать с площадью. Такая запись заранее проясняет, что будет вводить пользователь и что программа должна сформировать. Единицы помогают обнаружить несогласованность: например, складывать метры и секунды нельзя.
Ограничения уточняют допустимые значения данных и помогают определить, какие случаи должен учитывать будущий алгоритм. Если длина может быть только положительной, для нуля и отрицательных значений задача может быть не определена. Если допустимы все целые числа, нельзя незаметно предполагать, что они положительны. Записанные ограничения позволяют выбрать способ решения и обозначить случаи, которые программа должна проверять отдельно.
Постановку считают достаточно ясной, если по ней можно однозначно определить входные сведения, требуемый результат и условия задачи. Однозначность важна потому, что разные толкования одного условия могут привести к разным программам. Проверить формулировку можно так: сможет ли другой человек, не задавая уточняющих вопросов, назвать данные на входе и ожидаемый ответ? Если нет, постановку следует дополнить.
| Элемент постановки | На какой вопрос отвечает | Что указать |
|---|---|---|
| Цель задачи | Что требуется получить? | Точный искомый результат или действие |
| Исходные данные | Что известно до решения? | Величины на входе, их смысл и при необходимости тип и единицы |
| Результативные данные | Что должно быть получено? | Выходные величины и их смысл |
| Ограничения | Какие условия должны выполняться? | Допустимые значения данных и условия для результата |
Заполняй таблицу, читая условие и отдельно отвечая на вопрос каждого столбца. Если для какого-то элемента сведений нет, проверь, не нужно ли уточнить условие или явно записать, что ограничений не задано. После заполнения должно быть понятно, что программа получает и что обязана выдать.
Условие: даны длина и ширина прямоугольника, нужно определить его площадь. Сначала уточняем, какие значения известны, а какое требуется найти. Площадь — именно искомая величина, а не сами размеры фигуры.
Ответ: входные данные — положительные длина и ширина, результат — площадь S = a · b. Единицы результата должны быть квадратными. Такое описание уже показывает, что вводить и что выводить.
Условие: известны три оценки ученика, требуется найти средний балл. Слово «средний» здесь следует понимать как среднее арифметическое, а не как оценку, выбранную из трёх. Число исходных значений условием зафиксировано.
Ответ: исходные данные — три оценки, результативные данные — их среднее арифметическое. Формулировка числа оценок как ограничения не даёт спутать эту задачу с поиском среднего по произвольному набору. Результат не обязан совпадать с одной из исходных оценок.
Условие: даны координаты двух точек на плоскости, нужно найти расстояние между ними. Важно назвать результат именно расстоянием, поскольку вычисление может дать и связанную с ним величину — квадрат расстояния. Эти ответы не взаимозаменяемы.
Ответ: входом служат координаты двух точек, выходом — расстояние между ними. Если вывести только (x₂ − x₁)² + (y₂ − y₁)², будет найден квадрат расстояния, а не то, что просит условие. Явное описание результата помогает заметить эту подмену ещё до написания программы.
Сразу переходить к алгоритму. Тогда можно увлечься вычислениями и не заметить, что требуется другая величина. Так поступают, когда условие кажется знакомым и его читают слишком быстро. Проверь себя вопросом: можешь ли ты одним предложением назвать требуемый результат?
Смешивать исходные и результативные данные. Если не разделить то, что вводят, и то, что вычисляют, становится неясно, что должна делать программа. Ошибка часто возникает, когда все числа из условия записывают одним списком. Подпиши для каждой величины её роль: «вход» или «выход».
Не указывать ограничения на данные. Из-за этого алгоритм может оказаться неверным для некоторых допустимых случаев, например при нулевом значении, которое не было учтено. Ограничения пропускают, если считают их само собой разумеющимися. Проверь условие и отдельно спроси себя, какие значения возможны и какие запрещены.
Записывать результат неопределённо. Формулировка вроде «найти характеристики» не сообщает, что именно нужно вычислить, поэтому нельзя проверить правильность ответа. Так пишут, когда не уточняют цель задачи. Замени общее слово названием конкретной величины и проверь, можно ли однозначно понять требуемый вывод.
Для постановки задачи нужно внимательно читать условие, отличать известные величины от неизвестных и понимать их смысл. Затем на основе постановки строят математическую модель, алгоритм и программу: каждый следующий этап опирается на предыдущий. Чёткое описание входных и выходных данных помогает при тестировании, потому что заранее известно, какие значения подавать и какой результат ожидать. Если проверка показывает расхождение, можно выяснить, неверна ли постановка, алгоритм или программа.
Зачем формулировать постановку задачи, если условие уже дано?
Условие часто описывает ситуацию словами, а для решения нужно точно разделить известные сведения и то, что требуется получить. Такая формулировка помогает выбрать верный способ решения и не написать программу для другой задачи.
Чем исходные данные отличаются от результативных?
Исходные данные известны до решения и поступают на вход программы. Результативные данные — это то, что программа должна вычислить или сформировать.
Нужно ли указывать ограничения на входные данные?
Да, если условие задаёт допустимые значения или особые случаи. Ограничения помогают выбрать подходящий алгоритм и понять, для каких данных результат будет верным.
Могут ли результативные данные совпадать с исходными?
В простых задачах обычно различают то, что вводят, и то, что получают. Но программа может также вывести исходные сведения вместе с результатом или преобразовать их; важно точно указать, что именно требуется получить.
Как понять, что задача поставлена достаточно точно?
По постановке должно быть понятно, какие данные подаются на вход, что нужно получить и каким условиям они подчиняются. Если два человека могут по-разному понять требуемый результат, формулировку нужно уточнить.
28.1. Постановка задачи (этап 1)