"Информатика (углублённый уровень)", Калинин И.А., Самылкина Н.Н.
Программирование — это создание, проверка и исправление программ, которые помогают компьютеру решать задачи. Чтобы получить нужный результат, задачу сначала описывают через входные данные и ожидаемый ответ, затем составляют способ решения и записывают его командами на языке программирования. Транслятор обрабатывает исходный код, а компьютер выполняет полученные команды. Программу проверяют на разных данных, чтобы найти ошибки в записи и логике.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Программирование — процесс создания, проверки и исправления программ для решения задач с помощью компьютера. Оно нужно, чтобы превращать замысел решения в последовательность действий, которые компьютер способен выполнить. Проверка помогает убедиться, что результат соответствует условию, а исправление устраняет найденные ошибки.
Программа — точная последовательность команд, которую компьютер может выполнить для получения результата. В отличие от общего описания решения, команды программы должны быть записаны в форме, понятной выбранному языку. Программа нужна, чтобы компьютер выполнял шаги задачи автоматически и в установленном порядке.
Язык программирования — система правил записи команд и определения их смысла. Эти правила помогают программисту точно выразить действия, а транслятору — обработать исходный код. Язык нужен для однозначного описания решения: компьютер не должен угадывать, что имелось в виду.
Транслятор — программа, которая переводит текст программы в форму, пригодную для выполнения компьютером. Он обрабатывает исходный код, написанный на языке программирования. Без такой обработки компьютер не сможет непосредственно выполнить команды, записанные человеком.
Сначала задачу разбирают: выделяют входные данные и определяют, какой результат требуется получить. Это нужно, чтобы не смешать условия задачи с деталями будущей записи программы. Затем выбирают способ решения и описывают порядок действий — так становится понятно, какие команды понадобятся.
Компьютер не выполняет произвольный текст, потому что ему нужны однозначные инструкции. Команды должны соответствовать синтаксису языка — правилам их записи, примерно как грамматика задаёт устройство фразы. Кроме того, у команд есть смысл, поэтому формально верная запись ещё не гарантирует, что решение задачи выбрано правильно.
Записанный текст программы называют исходным кодом. Транслятор обрабатывает его и переводит команды в форму, которую может выполнить компьютер. После этого компьютер выполняет их с данными и получает результат; именно поэтому между замыслом программиста и ответом задачи есть этап перевода.
Программа должна учитывать данные, поступающие при запуске, а не содержать только заранее заготовленный ответ. Если значение на входе меняется, нужные вычисления или проверки тоже могут измениться. Для этого в программе задают действия над данными и варианты развития решения, например выбор одной из ветвей в зависимости от условия.
Даже тщательно составленный код может содержать ошибку, поэтому его запускают на тестовых данных. Сравнение результата с ожидаемым показывает, выполняет ли программа условие задачи. Если ответ неверен, выясняют причину, исправляют код и проверяют снова; несколько разных тестов нужны, чтобы обнаружить ошибки в отдельных случаях.
| Характеристика | Компиляция | Интерпретация |
|---|---|---|
| Как обрабатывается исходный код | Переводится заранее, обычно целиком | Команды переводятся по мере выполнения |
| Когда обнаруживаются ошибки | Ошибки, найденные при переводе, выявляются до запуска полученной программы | Ошибки выявляются при обработке соответствующих команд |
| Что происходит перед запуском | Создаётся исполняемая программа или другой подготовленный результат перевода | Отдельный исполняемый файл обычно не готовится заранее |
| Как выполняется программа | Запускается результат предварительного перевода | Интерпретатор переводит команду и выполняет её по ходу работы |
Таблица показывает различие прежде всего во времени перевода: заранее или во время выполнения. При этом ни один способ сам по себе не гарантирует правильную логику программы. Чтобы оценить решение, всё равно нужно проверить его на подходящих данных.
Условие. Составить программу, которая выводит сумму двух заданных чисел. Нужно использовать значения, поступающие на вход, поэтому ответ нельзя просто заранее записать в код. Ход решения состоит из чтения данных, сложения и вывода результата.
Ответ. Программа должна прочитать два числа, сложить их и вывести полученную сумму. Для выбранного примера результат равен 8. Такой тест проверяет обычный случай, но для полной проверки стоит взять и другие значения.
Условие. Составить программу, которая по введённому числу определяет, является ли оно чётным. Одного вычисления недостаточно: ответ зависит от того, какое значение введено. Поэтому алгоритм должен проверить условие и предусмотреть оба возможных результата.
Ответ. Программа выводит «чётное» при нулевом остатке и «нечётное» в остальных случаях. На числе 8 срабатывает первая ветвь, а на числе 7 — вторая. Проверка обоих результатов помогает убедиться, что ни один вариант не забыт.
Условие. Составить программу, которая находит сумму целых чисел от 1 до n. Здесь нужно учесть не только входное значение, но и повторяющееся действие — добавление очередного числа. Границы повторения важны, иначе программа может пропустить n или прибавить лишнее число.
Ответ. Цикл должен начинаться с 1 и включать n, а накопленная сумма после завершения равна искомому результату. Для n = 4 программа должна вывести 10. Сравнение с ручным вычислением помогает заметить ошибку в границах цикла.
Для программирования нужны знания об алгоритме, входных данных и результате решения задачи. Алгоритм задаёт способ действий, а программа выражает его командами языка; понимание входа и результата помогает правильно поставить задачу. Без этого трудно определить, что именно должна делать программа и как проверить ответ.
Навыки программирования пригодятся при изучении алгоритмов и структур данных — способов организовать решение и хранение информации. Они также позволяют автоматизировать вычисления: поручить компьютеру повторять однотипные действия, работать с разными данными и быстрее получать результат. Поэтому программирование связывает теоретическое решение задачи с его выполнением.
Чем программа отличается от алгоритма?
Алгоритм — это описание способа решения задачи: шаги и правила их выполнения. Программа записывает этот способ командами конкретного языка, чтобы компьютер мог его выполнить.
Почему компьютер не может выполнить обычный текст?
Обычный текст допускает неоднозначные формулировки, а компьютер выполняет только команды с точно заданными правилами. Поэтому код должен соответствовать синтаксису и смыслу выбранного языка программирования.
Что делает транслятор?
Транслятор преобразует исходный код в форму, пригодную для выполнения компьютером. В зависимости от способа перевода он может заранее обработать программу целиком или переводить команды по мере выполнения.
Чем ошибка в записи программы отличается от ошибки в алгоритме?
Ошибка в записи нарушает правила языка: например, пропущен знак или неверно оформлена команда. При ошибке в алгоритме программа может быть записана правильно, но выполнять неверный способ решения.
Зачем проверять программу на разных данных?
Разные данные помогают проверить обычные случаи, границы допустимых значений и разные ветви решения. Один удачный запуск не доказывает, что программа верно работает во всех ситуациях.
§ 17. Программирование