"Информатика (в 2-х частях)", Горячев А.В., Островский С.Л., Паволоцкий А.В., Семёнов А.А., Чернышёва Т.Л., Широков Д.В.
Алгоритмизация — это создание точных последовательностей действий для решения задач. Алгоритм помогает понять, какие данные нужны, что требуется получить и как перейти от исходных данных к результату. Его выполняет человек или устройство, способное понимать заданные команды. Основу алгоритмов составляют три конструкции: следование, ветвление и повторение. Когда алгоритм записан на языке программирования и предназначен для компьютера, он становится программой.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Алгоритм — точная последовательность команд, которая приводит к решению задачи. Команды должны быть понятными исполнителю, выполнимыми и расположенными в таком порядке, чтобы получался нужный результат. Это не просто перечень действий: в алгоритме заранее определено, что и когда делать.
Исполнитель алгоритма — человек или устройство, которое выполняет команды. У исполнителя есть определённые возможности и система команд — набор действий, которые он умеет выполнять. Поэтому команда должна быть записана на понятном ему языке: компьютер, например, не может сам догадаться, что означает расплывчатое указание.
Программа — алгоритм, записанный на языке программирования так, чтобы его мог выполнить компьютер. Язык программирования задаёт правила записи команд и позволяет компьютеру их распознавать. Программа нужна, чтобы компьютер последовательно выполнил решение, которое человек заранее описал.
Алгоритмическая конструкция — типовая форма организации команд. К основным конструкциям относятся следование, ветвление и повторение. С их помощью можно описать прямой порядок действий, выбор между вариантами и многократное выполнение команд.
Решение начинается с постановки цели, потому что без неё нельзя понять, какие действия нужны. Сначала выделяют исходные данные: например, длину и ширину прямоугольника. Затем определяют требуемый результат — в этом случае периметр. После этого находят способ связать данные и результат, чтобы шаги алгоритма решали именно поставленную задачу.
Команды записывают точно и так, чтобы исполнитель мог их выполнить. Неопределённое указание вроде «изменить число» не сообщает, какое действие требуется, а команда «прибавить 1 к счётчику» задаёт его однозначно. Возможности исполнителя тоже имеют значение: человек способен понять обычную речь, а компьютер выполняет только команды, представленные в его системе. Поэтому один и тот же замысел приходится записывать по-разному для разных исполнителей.
Следование — конструкция, в которой команды выполняются одна за другой в заданном порядке. Порядок важен, потому что результат одного действия может стать данными для следующего. Если сначала вычислить сумму двух чисел, а затем умножить её на 2, получится не то же самое, что сначала умножить одно число и только потом сложить. Поэтому, переставляя команды, нужно проверять, не меняют ли они промежуточные значения.
Ветвление нужно, когда дальнейший ход решения зависит от условия. Сначала исполнитель проверяет условие, которое может оказаться истинным или ложным, а затем выбирает соответствующую ветвь команд. Например, при проверке числа n команда «если n > 0» направляет положительное число в одну ветвь, а остальные значения — в другую. Если возможны несколько случаев, условия составляют так, чтобы ни один из них не остался без обработки.
Повторение, или цикл, позволяет не записывать одно и то же действие много раз. Цикл с условием продолжается, пока выполняется заданное условие, либо заканчивается, когда оно перестаёт выполняться. В цикле, повторяемом заданное число раз, количество повторений задают заранее счётчиком. Счётчик или данные, от которых зависит условие, должны изменяться: иначе цикл может не остановиться или выполниться не столько раз, сколько требуется.
| Конструкция | Как выполняется | Когда применяется | Пример действия |
|---|---|---|---|
| Следование | Команды выполняются одна за другой в записанном порядке. | Когда каждый следующий шаг нужен после предыдущего. | Ввести длину и ширину, вычислить периметр, вывести результат. |
| Ветвление | Проверяется условие, затем выполняется подходящая ветвь. | Когда действие зависит от данных или ситуации. | Если число больше нуля — сообщить «положительное», иначе проверить другие случаи. |
| Повторение с условием | Команды повторяются, пока условие цикла выполняется или до его нарушения. | Когда заранее неизвестно, сколько повторений потребуется. | Запрашивать ответ, пока он не совпадёт с правильным. |
| Повторение заданное число раз | Команды выполняются указанное количество раз, обычно со счётчиком. | Когда число повторений известно заранее. | Пять раз увеличить счётчик и вывести его значение. |
Чтобы выбрать конструкцию, спроси себя, нужны ли действия просто по порядку, выбор по условию или повторение. В задаче могут сочетаться несколько конструкций: например, цикл может содержать ветвление. Проверяй, что условие выбора охватывает нужные случаи, а цикл имеет понятный способ завершения.
Условие. Даны длина a и ширина b прямоугольника. Нужно вычислить его периметр. Периметр равен сумме длин всех сторон, поэтому обе пары равных сторон можно учесть одной формулой.
Ответ. Алгоритм состоит из ввода двух значений, вычисления P = 2(a + b) и вывода результата. Например, при a = 5 и b = 3 получаем P = 2(5 + 3) = 16. Команды идут по порядку, потому что вычисление нельзя выполнить до ввода данных.
Условие. Введено целое число n. Нужно определить, положительное оно, отрицательное или равно нулю. Здесь недостаточно одного вычисления: результат зависит от того, какое условие выполняется.
Ответ. Для n = 7 первая проверка истинна, и алгоритм сообщает «положительное». Для n = −4 первая проверка ложна, вторая истинна, а при n = 0 ложны обе проверки. Три ветви вместе охватывают все целые числа.
Условие. Дано натуральное число N. Требуется найти сумму всех целых чисел от 1 до N включительно. Поскольку количество слагаемых может быть большим, удобно использовать цикл, счётчик и накопитель суммы.
Ответ. При N = 4 сначала S = 0 и i = 1. После повторений сумма меняется так: 1, 3, 6, 10; затем i = 5, условие i ≤ 4 ложно. Алгоритм выводит 10 — сумму чисел 1 + 2 + 3 + 4.
Неоднозначная команда вроде «сделать красиво» не задаёт конкретного действия. Её допускают, когда описывают намерение обычными словами, забывая, что исполнитель не должен угадывать смысл. Проверь каждую команду вопросом: можно ли точно сказать, какое действие выполнить и какой результат получить? Если возможны разные толкования, уточни команду.
Перестановка команд следования может изменить промежуточные данные и итог. Кажется, что шаги взаимозаменяемы, если они записаны коротко, но один из них может использовать результат другого. Проверь алгоритм на небольшом примере и проследи значения переменных после каждого шага. Так станет видно, зависит ли команда от предыдущей.
Если не предусмотреть одну из ветвей условия, часть входных данных останется без ответа. Это часто случается, когда проверяют только привычный случай и забывают, например, ноль. Составь список возможных случаев и проверь, к какой ветви относится каждый из них. Для знака числа нужно отдельно учесть положительные числа, отрицательные и ноль.
Если забыть изменить счётчик или данные, влияющие на условие цикла, повторение может не закончиться. Иногда счётчик меняют, но не в ту сторону, и цикл выполняется неправильное число раз. Проследи значения условия и счётчика на нескольких повторениях, включая последнее. Убедись, что условие завершения обязательно наступит и нужное действие выполнится ровно столько раз, сколько требуется.
Для составления алгоритмов нужны навыки точного описания действий: они помогают превратить замысел в однозначные команды. Работа с числами нужна, чтобы определить исходные данные, выполнить вычисления и проверить результат. Логические условия позволяют сравнивать значения и выбирать ветвь или момент остановки цикла.
Алгоритмизация лежит в основе программирования: программу создают, описывая решение задачи командами, понятными компьютеру. Те же принципы применяются при обработке данных, когда нужно выполнять действия по заданным правилам. Автоматизация повторяющихся действий тоже опирается на алгоритмы: один раз заданная последовательность может многократно выполняться устройством.
Чем алгоритм отличается от программы?
Алгоритм — это план решения задачи, записанный в виде точных команд. Программа — такой алгоритм, который записан на языке программирования и может быть выполнен компьютером.
Почему одна и та же команда может быть понятна одному исполнителю и непонятна другому?
У каждого исполнителя есть своя система команд и свои возможности. Например, команда, понятная человеку, может быть неизвестна компьютеру, если она не записана на подходящем языке.
Когда вместо следования нужно использовать ветвление?
Ветвление нужно, если дальнейшие действия зависят от условия или значения данных. Оно помогает выбрать подходящий путь, например отдельно обработать положительное и отрицательное числа.
Как определить, сколько раз выполнится цикл?
У цикла с заданным числом повторений это число известно заранее. В цикле с условием нужно проследить, как меняются данные и когда условие завершения станет истинным или ложным.
Почему цикл может не завершиться?
Цикл может продолжаться бесконечно, если его условие выхода никогда не выполняется. Например, счётчик не изменяется или изменяется в неверном направлении.
Модуль 1. Алгоритмизация и программирование