Язык программирования - средство записи алгоритмов для компьютеров
Введение в понятие алгоритма
Понятие алгоритма
Считается, что однозначного определения алгоритма нет, хотя в основном различные источники дают очень близкие определения.
В школьном курсе информатики присутствуют следующие составляющие определения алгоритма:
Алгоритм – это
· конечная последовательность указаний …
· на языке понятном исполнителю, …
· задающая процесс решения задач определенного типа …
· ведущая к получению результата, однозначно определяемого допустимыми исходными данными.
В последнем пункте определения говорится о том, что результат выполнения алгоритма напрямую зависит от исходных данных. Т.е. один и тот же алгоритм при одних и тех же исходных данных должен выдать один и тот же результат.
Слово «алгоритм» происходит от имени ученого IX века Муххамеда бен Аль-Хорезми («аль-хорезми» -> «алгоритм»), который описал правила выполнения арифметических действий в десятичной системе счисления.
Словом «алгоритм» потом и стали обозначать правила вычислений. Однако, с течением времени понятие алгоритма видоизменялось и в XX веке под ним стали понимать какую-либо последовательность действий, приводящую к решению поставленной задачи.
В настоящее время алгоритм является одним из главных понятий информатики.
Свойства алгоритма
1) Дискретность и упорядоченность. Алгоритм должен состоять из отдельных действий, которые выполняются последовательно друг за другом.
2) Детерминированность (однозначная определенность). Многократное применение одного алгоритма к одному и тому же набору исходных данных всегда дает один и тот же результат.
3) Формальность. Алгоритм не должен допускать неоднозначности толкования действий для исполнителя.
4) Результативность и конечность. Работа алгоритма должна завершаться за определенное число шагов, при этом задача должна быть решена.
5) Массовость. Определенный алгоритм должен быть применим ко всем однотипным задачам.
Исполнитель и разработчик алгоритма
Разрабатывать, придумывать алгоритмы могут только разумные существа (например, человек). А вот формально (не думая и не оценивая) исполнять, могут какие-либо машины (например, компьютеры, бытовые приборы). В чем польза такого разделения труда? Дело в том, что человек освобождается от рутинной деятельности, которая часто может занимать много времени, и поручает ее машинам.
Однако машины не люди: приборы понимают лишь ограниченное число команд и могут обрабатывать данные строго определенных типов. Отсюда следует, что разработчик алгоритма в конечном итоге должен описать алгоритм в допустимых командах определенного исполнителя (той машины, которой будет поручено выполнение алгоритма).
Совокупность команд, которые данный исполнитель может выполнять, называется системой команд исполнителя. Данные (объекты), над которыми исполнитель может выполнять действия, формируют среду исполнителя.
Язык программирования - средство записи алгоритмов для компьютеров
Компьютер – универсальный исполнитель алгоритма. С его помощью можно выполнять разнообразные по видам алгоритмы:
· делать математические вычисления,
· обрабатывать текстовые данные,
· редактировать фотографии;
· распознавать образы
и др.
Компьютер может делать многое, что и человек, а некоторые вещи намного быстрее.
Однако человек и компьютер «разговаривают» на совершенно разных языках: один – на естественном (русском, английском и др.), а другой – на формальном (машинном) языке.
Фрагмент кода программы на машинном языке (слева) и на языке ассемблера (справа) |
Разработав алгоритм, человек должен как-то «объяснить» его компьютеру. Для этих целей служат языки программирования, а результатом записи алгоритма на них является программа.
Фрагмент кода той же программы на универсальном алгоритмическом языке |
В настоящее время язык программирования – это посредник между человеком и вычислительной машиной.
Программа, написанная на языке программирования, переводится на машинный язык транслятором.
Язык блок-схем
Алгоритм можно описать разными способами: словами, на языке программирования, а также с помощью блок-схем.
На языке блок-схем каждый шаг алгоритма описывается с помощью соответствующей фигуры, а последовательность выполнения шагов определяется линиями-связями. Блок схемы читаются сверху вниз и слева направо.
Блок-схемы полезны тем, что обеспечивают легкую «читаемость» алгоритма. Однако это не всегда так: стоит попытаться нарисовать блок-схему для более-менее сложного алгоритма, как она разрастается до невероятных размеров и теряет все свое наглядное преимущество. Поэтому блок-схемы хороши в структурном программировании для описания коротких алгоритмов.
Язык блок-схем:
· Прямоугольник – выполнение действия (например, c = a + b)
· Ромб – проверка условия (например, a > b). Если условие выполняется, то алгоритм идет по линии «да», если не выполняется – то по линии «нет».
· Скругленный прямоугольник – начало и конец алгоритма
· Скошенный прямоугольник – ввод-вывод данных (например, получение значения переменной, вывод результата на экран монитора).
Это не полное описание языка блок-схем. Полное описание установлено Государственным Стандартом (ГОСТ) ГОСТ 19.701-90 ЕСПД Схемы алгоритмов, программ, данных и систем.
Алгоритмические структуры (типы алгоритмов)
В рамках структурного программирования задачи, имеющие алгоритмическое решение, могут быть описаны с использованием следующих алгоритмических структур:
Следование. Предполагает последовательное выполнение команд сверху вниз. Если алгоритм состоит только из структур следования, то он является линейным.
Ветвление. Выполнение программы идет по одной из двух, нескольких или множества ветвей. Выбор ветви зависит от условия на входе ветвления и поступивших сюда данных.
Цикл. Предполагает возможность многократного повторения определенных действий. Количество повторений зависит от условия цикла.
Функция (подпрограмма). Команды, отделенные от основной программы, выполняются лишь в случае их вызова из основной программы (из любого ее места). Одна и та же функция может вызываться из основной программы сколь угодно раз.