1. Понятие алгоритма. Свойства алгоритма. Исполнители алгоритмов (назначение, среда, режим работы, система команд). Компьютер как формальный исполнитель алгоритмов (программ).
2. Позиционные и непозиционные системы счисления. Запись чисел в позиционных системах счисления.
3. Практическое задание. Решение простейшей оптимизационной задачи в среде электронных таблиц. |
I________________________________________________I
1. Понятие алгоритма. Свойства алгоритма. Исполнители алгоритмов (назначение, среда, режим работы, система команд). Компьютер как формальный исполнитель алгоритмов (программ)
Базовые понятия
Алгоритм — понятное и точное указание исполнителю совершить последовательность действий, направленных на решение поставленной задачи.
Свойства алгоритма: дискретность, понятность, определенность, результативность, корректность, массовость.
Исполнитель — человек или автоматическое устройство, которое выполняет алгоритмы.
Система команд, режим работы исполнителя.
Обязательно изложить
Наша жизнь буквально насыщена алгоритмами. Вспомним кулинарные рецепты, инструкции к сложной бытовой технике, умножение "столбиком" и деление "уголком", перевод из десятичной системы в двоичную и множество других примеров.
Алгоритм — это правила, описывающие процесс преобразования исходных данных в требуемый результат. Чтобы произвольные правила действительно были алгоритмом, они должны обладать следующими свойствами.
Дискретность. Процесс решения задачи должен быть разбит на четкую последовательность отдельных шагов, каждый из которых принято называть командой.
Понятность. Каждая команда алгоритма должна быть понятна тому, кто исполняет алгоритм; в противном случае она (и, следовательно, весь алгоритм в целом) не может быть выполнена. В информатике часто говорят, что все команды алгоритма должны входить в систему команд исполнителя.
Определенность. Команды, образующие алгоритм, должны быть предельно четкими и однозначными, все
г. Пермь
возможности должны быть заранее предусмотрены и оговорены. Для заданных исходных данных результат не может зависеть от какой-либо дополнительной информации извне алгоритма.
Результативность. Правильный алгоритм не может обрываться безрезультатно из-за какого-либо непреодолимого препятствия в ходе выполнения. Кроме того, любой алгоритм должен завершиться за конечное число шагов.
Корректность. Решение должно быть правильным для любых допустимых исходных данных.
Массовость. Алгоритм имеет смысл разрабатывать только в том случае, когда он будет применяться многократно для различных наборов исходных данных.
Исполнитель — фундаментальное понятие информатики. Оно входит в определение алгоритма.
Исполнители алгоритмов необычайно разнообразны. Исполнителем словесных инструкций (алгоритмов) является человек. Многие окружающие нас автоматические устройства тоже действуют в соответствии с определенными алгоритмами (выключающийся по достижении определенной температуры воды электрический чайник, турникет в метро, современная многопрограммная стиральная машина и многие другие). Компьютер тоже является исполнителем, возможности которого необычайно широки.
Каковы наиболее важные черты исполнителей?
Во-первых, состояние каждого исполнителя описывается определенными характеристиками. Полный набор характеристик, описывающий состояние исполнителя, и обстановка, в которой он действует, принято называть средой данного исполнителя.
Во-вторых, любой исполнитель имеет собственный строго определенный набор команд. В учебниках его обычно называют системой команд исполнителя, или сокращенно СКИ. Исполнитель не способен выполнить ни одной команды, которая не попадает в его СКИ, даже если введенная команда отличается от существующей всего лишь единственной неправильно написанной буквой.
Но и синтаксически правильная команда при некоторых условиях не может быть выполнена. Например, невозможно произвести деление, если делитель равен нулю, или нельзя осуществить команду движения вперед, когда робот уперся в стену. Отказ в подобной ситуации можно сформулировать как "не могу" (в отличие от "не понимаю" в случае синтаксической ошибки в записи команды). Следовательно, каждая команда в СКИ должна иметь четко оговоренные условия ее выполнения; все случаи аварийного прерывания команды из-за нарушения этих условий должны быть тщательно оговорены.
Третьей важной особенностью исполнителей является наличие различных режимов его работы; перечень режимов у каждого исполнителя, естественно, свой. Для большинства учебных исполнителей особо выделяют режимы непосредственного и программного управления1. В первом случае исполнитель ожидает команд от человека и каждую немедленно выполняет. Во втором исполнителю сначала задается полная последовательность команд (программа), а затем он исполняет ее в автоматическом режиме. Большинство исполнителей могут работать в обоих режимах.
И в заключение небольшое замечание по последней части вопроса. Если внимательно проанализировать свойства алгоритмов, то становится очевидным, что для выполнения алгоритма вовсе не требуется ею понимание, а правильный результат может быть получен путем формального и чисто механического следования алгоритму. Отсюда вытекает очень важное практическое следствие: поскольку осознавать содержание алгоритма не требуется, его исполнение вполне можно доверить автомату или ЭВМ. Таким образом, составление алгоритма является обязательным этапом автоматизации любого процесса. Как только разработан алгоритм, машина может исполнять его лучше человека.
Желательно изложить
Термин "алгоритм" имеет интересное историческое происхождение. В IX веке великий узбекский математик аль-Хорезми разработал правила арифметических действий над десятичными числами, которые в Европе стали называть "алгоризмами". Впоследствии слово трансформировалось до известного нам сейчас вида и, кроме того, расширило свое значение: алгоритмом стали называть любую последовательность действий (не только арифметических), которая приводит к решению той или иной задачи.
Помимо простейших "бытовых" алгоритмов, можно выделить еще три крупных разновидности алгоритмов: вычислительные, информационные и управляющие. Первые, как правило, работают с простыми видами данных (числа, векторы, матрицы), но зато процесс вычисления может быть длинным и сложным. Информационные алгоритмы, напротив, реализуют сравнительно небольшие процедуры обработки (например, поиск элементов, удовлетворяющих определенному признаку), но для больших объемов информации. Наконец, управляющие алгоритмы непрерывно анализируют информацию, поступающую от тех или иных источников, и выдают результирующие сигналы, управляющие работой тех или иных устройств.
Компьютер имеет не только собственную систему команд, но и свой алгоритм работы. Рассмотрим подробнее, как он выполняет отдельные операции и как реализуется вся программа в целом.
Каждая программа состоит из отдельных машинных команд. Каждая машинная команда, в свою очередь, делится на ряд элементарных унифицированных состав-
1 Аналогичные режимы издавна существовали в языке Бейсик, где строка без номера немедленно исполнялась интерпретатором, а с номером — заносилась в память для последующего исполнения; нечто похожее существует и в более поздних версиях под MS-DOS, реализованных в виде компиляторов.
ных частей, которые принято называть тактами (помните термин "тактовая частота процессора" ? — он происходит именно отсюда!). В зависимости от сложности команды, она может быть реализована за разное количество тактов.
При выполнении каждой команды ЭВМ проделывает определенные стандартные действия, описанные ниже.
1. Согласно содержимому счетчика адреса команд (специального регистра, постоянно указывающего на ячейку памяти, в которой хранится следующая команда) считывается очередная команда программы.
2. Счетчик команд автоматически изменяется так, чтобы в нем содержался адрес следующей команды. В простейшем случае для этой цели достаточно к текущему значению счетчика прибавить некоторую константу, определяющуюся длиной команды.
3. Считанная операция расшифровывается, извлекаются необходимые данные, над ними выполняются требуемые действия и, если это предусмотрено операцией, производится запись результата в ОЗУ.
4. Все описанные действия циклически повторяются с п. 1.
Рассмотренный основной алгоритм работы ЭВМ позволяет шаг за шагом выполнить хранящуюся в ОЗУ программу.
Примечания для учителей
Данный вопрос по сравнению с экзаменом 9-го класса объединяет два билета — об алгоритмах и об исполнителях. Поэтому в конце данных материалов вы увидите две ссылки на предыдущие публикации.
В отличие от экзамена в 9-м классе, выпускников можно с некоторой осторожностью спрашивать не о конкретном исполнителе, но об их общих свойствах. Об осторожности говорю потому, что умение обобщать есть достаточно сложный навык, и, к сожалению, в окружающей нас повседневной жизни, где логика видна все меньше, он развивается все слабее и слабее.
Возможно, не все учителя считают нужным излагать материал об основном алгоритме работы ЭВМ. Тем не менее, обосновывая формальность исполнения программы, о нем желательно сказать.
Примечания для учеников
Вопрос о свойствах алгоритма имеет фундаментальное значение в курсе информатики любого уровня. Поэтому при подготовке данного вопроса мы рекомендуем заучить названия всех свойств2. В то же время объяснение всех свойств, как обычно, необходимо разобрать и дополнить примерами.
При подготовке вопроса обязательно повторите особенности и систему команд исполнителей и языков программирования, которые вы изучали на уроках. Сопоставьте эти сведения с приведенным выше материалом и подберите примеры, которые вы включите в свой экзаменационный ответ.