На Горох
Информатика, 11 класс

§ 7. Запись алгоритмов на языках программирования

"Информатика. Базовый уровень", Босова Л.Л., Босова А.Ю.

Объяснение темы В оглавлении: § 7. Запись алгоритмов на языках программирования

Кратко о теме

Чтобы компьютер выполнил алгоритм, его записывают на формальном языке с заданными символами и правилами. Такая запись называется программой: действия, условия и повторения в ней представлены командами выбранного языка. Одной правильной записи команд недостаточно: нужно учитывать их смысл и проверить, решает ли программа нужную задачу. Перед запуском программу обрабатывает транслятор — компилятор или интерпретатор.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Язык программирования — формальная система знаков и правил для записи алгоритмов и программ. Он задаёт, какие символы и конструкции можно использовать. Благодаря этому автор и компьютер одинаково понимают запись.

Программа — запись алгоритма на языке программирования, предназначенная для выполнения компьютером. В ней каждый шаг представлен командами, которые можно обработать. Программа позволяет автоматизировать решение задачи и повторять его на разных исходных данных.

Синтаксис языка программирования — правила построения допустимых выражений и команд. Они определяют, например, как записывать присваивание или условие. Соблюдение синтаксиса нужно, чтобы транслятор мог распознать структуру программы.

Семантика языка программирования — смысл команд и конструкций программы. Она объясняет, какое действие выполнит компьютер при встрече с конкретной командой. Понимание семантики помогает проверить, соответствует ли программа задуманному алгоритму.

Как это устроено

При переводе алгоритма в программу его шаги заменяют командами выбранного языка. Действия становятся командами вычисления и присваивания, ввод и вывод оформляются специальными средствами, условия — конструкциями ветвления, а повторяющиеся действия — циклами. Такой перевод нужен, потому что компьютер выполняет точные команды, а не понимает бытовое описание решения.

Произвольное описание алгоритма компьютер выполнить не может: слова и рисунки могут быть неоднозначными, а машина должна однозначно распознавать инструкции. Поэтому программа использует символы алфавита языка и соблюдает его синтаксис. Если пропустить скобку или записать команду не по правилам, транслятор не сможет правильно разобрать программу.

Правильность программы зависит и от синтаксиса, и от семантики. Синтаксическая ошибка означает, что конструкция записана с нарушением правил языка; такую запись обычно удаётся обнаружить при обработке. Но формально правильные команды могут быть соединены неверно: например, программа может сравнивать не те величины. Тогда она запускается, но даёт неправильный ответ — это логическая ошибка.

Перед выполнением исходный текст обрабатывает транслятор — программа, переводящая запись на язык программирования в форму, пригодную для исполнения. При компиляции исходную программу заранее преобразуют, а при интерпретации её анализируют и выполняют в ходе работы. Способы различаются тем, когда выполняется обработка, когда проявляются многие ошибки и что сохраняется для запуска.

Язык выбирают с учётом задачи: в одном случае важны нужные конструкции, в другом — удобство записи или способ запуска. Если алгоритм содержит циклы и ветвления, в языке должны быть подходящие средства для их выражения. Выбор влияет на форму программы и её выполнение, но не должен менять логику самого алгоритма.

Сравнение компиляции и интерпретации программ

ПризнакКомпиляцияИнтерпретация
Что происходит с исходной программойЗаранее преобразуется целиком или крупными частямиАнализируется в ходе выполнения
Когда обнаруживаются многие ошибкиПри компиляции, до запуска полученной программыПри анализе соответствующих команд во время работы
Как выполняются командыВыполняется заранее подготовленный кодКоманды анализируются и выполняются по ходу работы
Что получается в результате обработкиПреобразованный код или исполняемый файлКак правило, отдельный исполняемый файл не создаётся
Особенности повторного запускаПодготовленную программу можно запускать повторноОбычно интерпретатор снова обрабатывает исходный текст
Преимущества и ограниченияПовторный запуск может быть быстрым; перед запуском требуется компиляцияУдобно выполнять программу без отдельной предварительной сборки; интерпретация может занимать дополнительное время

Сравнивай способы по тому, когда обрабатывается программа и что требуется для повторного запуска. На практике детали зависят от конкретного языка и среды, поэтому таблица показывает общее различие, а не неизменное правило для всех систем.

Разбор задач

Периметр прямоугольника

Условие. Записать программу, которая вводит длины двух сторон прямоугольника и выводит его периметр. Обозначим стороны a и b, а периметр — p. Формула p = 2 · (a + b) непосредственно задаёт вычисление после ввода данных.

  1. Определяем входные данные: две стороны a и b; результатом будет p.
  2. Записываем команду ввода a и b, затем присваиваем p значение выражения 2 · (a + b).
  3. Добавляем вывод p и проверяем, что каждая переменная получила значение до использования.

Ответ. Программа должна выполнить ввод сторон, вычислить p = 2 · (a + b) и вывести p. Для проверки можно взять a = 3 и b = 5: результат равен 16.

Наибольшее из трёх чисел

Условие. По введённым числам a, b и c вывести наибольшее. Нужно учесть равенство чисел, поэтому проверка строится через «больше или равно». Сначала проверим, не является ли a наибольшим, затем сравним b с c.

  1. Вводим a, b, c и выбираем переменную m для ответа.
  2. Если a ≥ b и a ≥ c, присваиваем m значение a.
  3. Иначе, если b ≥ c, присваиваем m значение b; во всех остальных случаях присваиваем m значение c.
  4. Выводим m и проверяем случаи, когда наибольшим оказывается каждое из чисел, а также когда есть равные значения.

Ответ. Условные операторы выбирают одно из трёх значений для m. Например, при 4, 9 и 6 программа выведет 9.

Сумма чисел от 1 до n

Условие. Составить программу для вычисления суммы целых чисел от 1 до введённого n. Повторять одно и то же сложение удобнее циклом, чем записывать отдельную команду для каждого числа. Счётчик i будет по очереди принимать значения от 1 до n.

  1. Вводим n, присваиваем сумме s начальное значение 0, а счётчику i — значение 1.
  2. Пока i ≤ n, прибавляем i к s, затем увеличиваем i на 1.
  3. После завершения цикла выводим s; проверяем, что счётчик изменяется и цикл заканчивается.

Ответ. При n = 4 последовательно складываются 1, 2, 3 и 4, поэтому программа выведет 10. Начальное значение суммы, условие i ≤ n и увеличение счётчика обеспечивают включение всех чисел от 1 до n.

Типичные ошибки

Путать синтаксическую и логическую ошибки. Программист может считать любую неудачу ошибкой записи, хотя иногда команды написаны правильно, но неверно решают задачу. Это происходит, когда проверяют только возможность запуска. Проверь ожидаемый результат вручную на простых входных данных и сравни его с ответом программы.

Записывать команды в произвольной форме. Привычные слова или знаки могут не соответствовать синтаксису выбранного языка, поэтому транслятор не распознает команду. Ошибку допускают, когда переносят в код обычные фразы алгоритма без перевода в конструкции языка. Сверяй каждую команду с правилами языка и сообщениями об ошибках.

Смешивать обозначения разных языков. Похожие команды в разных языках могут записываться по-разному, и соединение их правил делает программу непонятной для транслятора. Так бывает при копировании примеров из разных источников. Проверяй, что все команды, знаки и правила оформления взяты из одного языка.

Неполно переводить алгоритм. Если забыть начальное значение переменной, условие цикла или ветвь, некоторые входные данные обработаются неверно либо цикл не завершится. Часто ошибка возникает, когда сразу пишут код и теряют шаги исходного решения. Сопоставь команды с алгоритмом и проверь границы цикла и все возможные случаи ветвления.

Связь с другими темами

Для изучения записи программ нужны понятия алгоритма, исполнителя и команды, а также представления о величинах и присваивании. Ветвление и цикл помогают выразить выбор действий и повторение в коде. Без этих основ трудно понять, как отдельные команды превращаются в работающую программу.

Дальше эти знания применяются при изучении переменных, типов данных, подпрограмм и массивов. Они нужны и для практического программирования: чем сложнее задача, тем важнее точно описать данные и порядок действий. Освоение базовых конструкций создаёт основу для составления больших программ.

Представление о трансляции помогает разобраться, почему программа запускается или сообщает об ошибке. Это связано с отладкой — поиском и исправлением ошибок в коде. Различая синтаксические и логические проблемы, проще выбрать способ проверки и понять, на каком этапе возникла трудность.

Что запомнить

  • Язык программирования задаёт алфавит, синтаксис и смысл конструкций.
  • Программа является записью алгоритма, понятной компьютеру после обработки транслятором.
  • Синтаксис определяет, как записывать конструкции языка.
  • Семантика определяет, что означает записанная конструкция.
  • Компилятор заранее преобразует программу, а интерпретатор выполняет её в процессе анализа.
  • При переводе алгоритма в программу нужно сохранять порядок действий и условия их выполнения.

Частые вопросы по теме

Чем алгоритм отличается от программы?

Алгоритм — это описание последовательности действий для решения задачи, не обязательно записанное на языке компьютера. Программа представляет этот алгоритм в форме, которую компьютер может обработать и выполнить.

Почему программа может быть синтаксически правильной, но давать неверный ответ?

Синтаксис проверяет, правильно ли записаны команды, но не гарантирует, что выбран верный способ решения задачи. Например, можно без ошибок языка сложить не те числа или неверно задать условие.

В чём разница между компилятором и интерпретатором?

Компилятор заранее преобразует исходную программу, обычно в код, который затем выполняет компьютер. Интерпретатор анализирует и выполняет программу в процессе работы, поэтому обработка и выполнение связаны.

Можно ли записать один алгоритм на разных языках программирования?

Да, один и тот же алгоритм можно выразить на разных языках, используя их собственные команды и правила. Логика решения останется прежней, но запись и способ её запуска могут отличаться.

Почему нельзя смешивать правила разных языков в одной программе?

У каждого языка свои алфавит, синтаксис и обозначения, поэтому команда одного языка может быть непонятна транслятору другого. Для одной программы нужно выбрать язык и придерживаться его правил.

Спросить по теме параграфа

§ 7. Запись алгоритмов на языках программирования

Учебник

Оглавление →
Предмет
Информатика
Класс
11 класс
Учебник
"Информатика. Базовый уровень", Босова Л.Л., Босова А.Ю.