Алгоритм Мухаммед аль - Хорезми (IX век н.э.)
Описание алгоритма Алгоритм – совокупность четко определенных правил для решения задачи за конечное число шагов. Примеры алгоритмов : рецепт приготовления блюда, решение квадратного уравнения, правила по русскому языку и др. АЛГОРИТМИЗАЦИЯ – процесс разработки алгоритма (плана действий) для решения задачи.
ОСНОВНЫЕ СТРУКТУРЫ АЛГОРИТМОВ: линейные алгоритмы разветвляющиеся алгоритмы циклические алгоритмы
СВОЙСТВА АЛГОРИТМОВ АЛГОРИТМ ДИСКРЕТНОСТЬ РЕЗУЛЬТАТИВНОСТЬ ДЕТЕРМИНИРОВАННОСТЬ (ОДНОЗНАЧНОСТЬ) МАССОВОСТЬКОНЕЧНОСТЬ
ДИСКРЕТНОСТЬ (от лат.discretus –разделенный, прерывистый)., указывает, что любой алгоритм должен состоять из конкретных действий, следующих в определённом порядке. РЕЗУЛЬТАТИВНОСТЬ требует, чтобы в алгоритме не было ошибок и каждый его шаг приводил к конкретному результату. ДЕТЕРМИНИРОВАННОСТЬ (ОДНОЗНАЧНОСТЬ) (от лат. Determinate – определённость, точность) указывает, что любое действие алгоритма должно быть строго и недвусмысленно определено в каждом случае. МАССОВОСТЬ показывает, что один и тот же алгоритм можно использовать с разными исходными данными. КОНЕЧНОСТЬ определяет, что каждое действие в отдельности и алгоритм в целом должны иметь возможность завершения.
Исполнитель алгоритма Исполнитель – тот, кто будет выполнять алгоритм. Например: человек, автомат, компьютер, солдат. Система команд исполнителя – команды, «понятные» данному исполнителю. Формальное выполнение алгоритма – строгое выполнение последовательности действий алгоритма без понимания целей решения задачи.
Способы записи алгоритмов Словесный Табличный Графический (блок- схема) Алгоритмический язык
Основные блоки блок-схемы Блок начала и конца блок-схемы Математический блок Блок вывода на печать Направление вычисления Ввод/вывод данных с/на любой носитель Ввод данных с клавиатуры
Основные блоки блок-схемы Логический блок Вызов процедуры или функции Для циклов с параметром Для описательных комментариев или пояснительных записей в целях объяснения или примечаний
Виды алгоритмов Линейный (последовательный) Разветвляющийся (ветвление) Циклический (цикл).
Линейный алгоритм Линейный алгоритм – это набор команд, выполняемых последовательно во времени, друг за другом. В линейных алгоритмических конструкциях используются три оператора: оператор ввода ; оператор присваивания ; оператор вывода информации
Алгоритм программы с линейной структурой может быть представлен следующим образом: начало Ввод исходных данных Обработка (вычисления) Вывод результата конец
Оператор ВВОДА данных Ввод данных – это передача исходных данных программы в оперативную память компьютера для обработки. Основные устройства ввода – клавиатура и дисковый файл Процедуры ввода с клавиатуры Read (a,b,c,d, …) ; - после ввода курсор остается в той же строке. ReadLn (a,b,c,d, …) ; - после ввода курсор переводится в начало следующей строки. где a,b,c,d,… - список ввода, содержащий имена переменных допустимых типов (integer, real, char, string). Следует знать: процедура ReadLn предпочтительнее Read, т.к. полностью освобождает буфер клавиатуры – рабочую область памяти, в которой временно хранятся введенные с клавиатуры символы. Процедура Read оставляет в буфере клавиатуры код клавиши, нажатие которой завершает процесс ввода.
в одной процедуре Read или ReadLn можно записать несколько переменных. Для того, чтобы отделить их значения друг от друга, при вводе можно использовать пробел либо символ табуляции ( клавиша ) или нажимать клавишу после ввода каждого из значений процедура ReadLn;(без переменных) обычно записывается в конце программы и служит для создания паузы, которая длится до нажатия пользователем клавиши. В противном случае, по окончании программы окно с текстом программы закроет экран с полученными результатами; тип данных, вводимых во время работы программы, должен соответствовать типу переменной, указанной в инструкции ввода; в случае несоответствия введённых данных типу переменной, значение которой вводится с клавиатуры, программа завершит работу, и на экран выводится сообщение об ошибке ввода/вывода.
ВЫВОД данных Вывод данных – это передача данных после обработки из оперативной памяти на внешнее устройство (экран, принтер, файл на диске Процедуры вывода на экран Следует знать: процедуры Write и WriteLn предназначены для вывода констант различных типов, значений переменных или выражений. Число параметров – произвольно; из констант наиболее часто выводятся строки текста (строковые константы заключаются в апострофы); если в инструкции вывода записано выражение, то сначала оно будет вычислено, а затем выполнен вывод полученного результата; процедура вывода WriteLn аналогична Write. Отличие заключается в том, что после вывода последней переменной из списка, курсор автоматически переходит в начало следующей строки; Write (a,b,c,d,…) ; WriteLn (a,b,c,d,…) ; где a, b, c, d,… - список вывода
инструкция WriteLn ; (без параметров) переводит курсор в начало следующей строки. Таким способом можно, например, отделять результаты работы программы друг от друга одной или несколькими пустыми строками.
Форматы вывода Для представления на экране значений целого типа по умолчанию выделяется столько позиций экрана (разрядов), сколько требуется для записи числа для изменения количества позиций под запись целого числа используется следующий формат вывода: Write( a:n ); WriteLn( a:n ); где a:n – выводится десятичное представление величины a в крайние правые позиции поля шириной n. Пример: … a:=34; b:=65; WriteLn(a); WriteLn(b); WriteLn(a,b); Write(a); Write(b);WriteLn; Write(a:4); Write(b:4);WriteLn Экран: _ _34_ _65
Для представления на экране значений вещественного типа по умолчанию значение вещественного типа будет выведено в экспоненциальной форме: Например, …a:=34.5; Write(a);…ЭКРАН: E+01 для определения ширины поля вывода: Write( a :l:d); где l задает общую ширину поля вывода; d – место под дробную часть; (l, d -константы или выражения целого типа). Пример: … a:=34.5; WriteLn(a:10:2);… ЭКРАН: _ _ _ _ _ 34.50
Задача на линейный алгоритм Вводятся объём и масса тела. Определить плотность материала этого тела. Входные данные: V – объём тела (real); m - масса тела (real); Выходные данные: p – плотность тела (real). БЛОК-СХЕМА начало V,m P=m/v p конец Паскаль-программа Program z1; uses crt; Var V,m,p:real; BEGIN Clrscr; Write(Введите значения объёма и массы тела: ) ; ReadLn(v,m) ; P := m/V; Write(Плотность тела объёмом,V:7:1, и массой,m:7:1, равна,p:8:2) ; ReadLn; END.