Алгоритм и его формальное исполнение
Алгоритм и его свойства. Алгоритмы могут описывать процессы преобразования самых разных объектов. Широкое распространение получили вычислительные алгоритмы, которые описывают преобразование числовых данных. Само слово «алгоритм» происходит от algorithmi — латинской формы написания имени выдающегося математика IX века аль-Хорезми, который сформулировал правила выполнения арифметических операций.
Алгоритм - это строго детерминированная последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью понятных исполнителю команд.
Выберем в качестве объекта текст и построим алгоритм, описывающий процесс его редактирования.
Для того чтобы изменить состояние объекта (значения его свойств), необходимо выполнить над ним определенную последовательность действий (операций). Выполняющий такие операции объект называется исполнителем. Исполнителем редактирования текста может быть человек, компьютер и др.
Алгоритмы состоят из отдельных команд, которые исполнитель выполняет одну за другой в определенной последовательности. Разделение информационного процесса в алго
ритме на отдельные команды является важным свойством алгоритма и называется дискретностью.
Процесс преобразования текста необходимо разбить на отдельные операции, которые должны быть записаны в виде отдельных команд исполнителю.
Каждый исполнитель обладает определенным набором, системой команд, которые он может выполнить. Алгоритм должен быть понятен исполнителю, то есть должен содержать только те команды, которые входят в систему его команд.
В процессе редактирования текста возможны различные операции: удаление, копирование, перемещение или замена его фрагментов. Исполнитель редактирования текста должен быть в состоянии выполнить эти операции.
Запись алгоритма должна быть такова, чтобы, выполнив очередную команду, исполнитель точно знал, какую команду необходимо исполнять следующей. Это свойство алгоритма называется детерминированностью.
Должны быть определены начальное состояние объекта и его конечное состояние (цель преобразования). Алгоритм должен обеспечивать преобразование объекта из начального состояния в конечное за конечное число шагов. Такое свойство алгоритма называется результативностью.
Следовательно, для текста необходимо задать начальную последовательность символов и конечную последовательность, которая должна быть получена после редактирования.
формальное выполнение алгоритма. Алгоритм позволяет формализовать выполнение информационного процесса. Если исполнителем является человек, то он может выполнять алгоритм формально, не вникая в содержание поставленной задачи, а только строго выполняя последовательность действий, предусмотренную алгоритмом.
Рассмотрим работу пользователя, например, в среде текстового редактора Word. Word предоставляет пользователю возможность работы в мире своих объектов, которыми являются документ, фрагмент документа, символ и так далее.
Предположим, что пользователю необходимо провести редактирование текста. Пусть у нас есть объект — фрагмент. Надо перевести его из исходного состояния (содержание фрагмента — текст «информационная модель», курсор находится перед первым символом) в конечное состояние (текст «модель информационная», курсор находится после последнего символа) — рис. 4.1.
' 1 ' 2 ' 3 ' | модель информационна^
ли
Рис. 4.1. Начальное и конечное состояния объекта
Необходимую для реализации такого преобразования последовательность действий, то есть алгоритм, запишем на естественном языке, который понятен пользователю компьютера:
1. Выделить слово «информационная» + пробел.
2. Вырезать этот фрагмент и поместить его в буфер обмена.
3. Установить курсор на позицию после слова «модель» + пробел.
4. Вставить вырезанный фрагмент текста.
Каждая команда алгоритма должна однозначно определять действие исполнителя, для этого необходимо формализовать запись алгоритма и заменить содержательную модель текста на его формальную модель. Формальная модель представляет текст делящимся на страницы, состоящие из определенного количество строк, которые, в свою очередь, включают определенное количество знакомест (символов).
Наш текст состоит из одной страницы, которая содержит одну строку. Команде Выделить слово «информационная» + пробел на формальном языке соответствует команда Выделить символы с 1 по 15, а команде Установить курсор после слова «модель» + пробел соответствует команда Установить курсор после 7-го символа.
1. Выделить символы с 1 по 15.
2. Вырезать этот фрагмент и поместить его в буфер обмена.
3. Установить курсор на позицию после 7-го символа.
4. Вставить вырезанный фрагмент текста.
щ Реаактиро«&ни».(*ос |
Теперь этот алгоритм «Редактирование» пользователь может выполнять формально. В процессе выполнения алгоритма на компьютере пользователь будет выполнять команды алгоритма с помощью клавиатуры и мыши. Фактически же пользователь будет давать команды объектам программной среды Windows&Office, которые будут действительными исполнителями алгоритма.
Компьютер — автоматический исполнитель алгоритмов.
Представление информационного процесса в форме алгоритма позволяет поручить его автоматическое исполнение различным техническим устройствам, среди которых особое место занимает компьютер. При этом говорят, что компьютер исполняет программу (последовательность команд), реализующую алгоритм.
Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой.
Развитие языков программирования. Информацию в компьютере обрабатывает процессор, следовательно, алгоритм должен быть записан на языке, «понятном» для процессора, то есть на машинном языке, представляющем собой логические последовательности нулей и единиц.
На заре компьютерной эры, в 50-е годы XX века, программы писались на машинном языке и представляли собой очень длинные последовательности нулей и единиц. Составление и отладка таких программ было чрезвычайно трудоемким делом.
В 60-70-е годы для облегчения труда программистов начали создаваться языки программирования высокого уровня, формальные языки, кодирующие алгоритмы в привычном для человека виде (в виде предложений). Такие языки программирования строились на основе использования определенного алфавита и строгих правил построения предложений (синтаксиса).
Наиболее широко распространенным типом языков программирования высокого уровня являются процедурные языки. В таких языках широко используются управляющие конструкции (операторы), которые позволяют закодировать различные алгоритмические структуры (линейную, ветвление, цикл).
Одним из первых процедурных языков программирования был известный всем Бейсик (Basic), созданный в 1964 году. В течение последующего времени Бейсик развивался, появлялись его различные версии (MSX-Basic, Бейсик-Агат, QBasic и др.). Другим широко распространенным языком программирования алгоритмического типа является Pascal.
В настоящее время наибольшей популярностью пользуются системы объектно-ориентированного визуального программирования Microsoft Visual Basic и Borland Delphi. Для создания приложений в среде Windows&Office используется язык программирования Visual Basic for Applications (VBA).
Вопросы для размышления
1. Какие из нижеперечисленных правил являются алгоритмами? Ответ обоснуйте:
• орфографические правила;
• правила выполнения арифметических операций;
• правила техники безопасности;
• правила перевода чисел из одной системы счисления в другую.
2. В чем состоит различие между естественными языками и языками программирования?
Задания
4.1. Составьте алгоритм преобразования слова «информатика» в слово «форма».