L4_Общее понятие алгоритма.ppt
- Количество слайдов: 14
Общее понятие алгоритма
Понятие «алгоритм» Понятие алгоритма - одно из основных понятий программирования и математики. Алгоритм - это последовательность команд, предназначенная исполнителю, в результате выполнения которой он должен решить поставленную задачу.
Уточним понятие «алгоритм» • записывается на формальном языке, исключающем неоднозначность толкования. • запись алгоритма на формальном языке называется программой. • Исполнитель - это человек, компьютер, автоматическое устройство, которое работает механически, «не задумываясь» .
Псевдокод Большинство используемых в программировании алгоритмических языков имеют общие черты. В то же время, при изложении идеи алгоритма, например, при публикации в научной статье, не всегда целесообразно пользоваться каким-либо конкретным языком программирования, чтобы не загромождать изложение несущественными деталями. В таких случаях применяется неформальный алгоритмический язык, максимально приближенный к естественному. Язык такого типа называют псевдокодом.
Пример программы «Hello, world» алг HELLOWORLD нач вывод ('Hello, World') кон алг HELLOWORLD
Способы представления алгоритмов • • • Словесное описание Описание в виде таблицы Последовательность шагов С помощью языка программирования Блок-схемы
Словесное описание Алгоритм Евклида для нахождения НОД двух натуральных чисел заключается в следующем: большее из чисел делится на меньшее, затем делитель делится на полученный остаток до тех пор пока остаток не станет равным нулю. Последний ненулевой остаток дает НОД чисел. Пример: НОД(12, 5)=НОД(5, 2)=НОД(2, 1)=НОД(1, 0)=1 Пример: НОД(21, 12)=НОД(12, 9)=НОД(9, 3)=НОД(3, 0)=3
Описание в виде таблицы В общем случае содержит в левой части таблицы исходные данные, в шапке – выходные данные, в основной части таблицы – правила преобразования исходных данных к выходным данным. Для данного алгоритма не является удобным.
Последовательность шагов 1. Найти среди a и b наибольшее число. Обозначим его a. 2. Разделить a на b с остатком. Если остаток нулевой, то п. 4, иначе п. 3. 3. b = остаток от деления a на b ; a: = b; п. 2. 4. НОД = b
На языке программирования • • #include <iostream> #include <conio. h> #include <math. h> using namespace std; • • • int main() { float a, b, buf; cin >> a; cin >> b; if (a<b) {buf=a; a=b; b=buf; } • • do { buf = fmod(a, b); a=b; b=buf; } while (b!=0); • cout << "NOD = " << a << endl; • • • _getch(); return 0; }
Графическое описание (например, в виде блок-схем). F нет P да - предикатная вершина (один вход, два выхода) - функциональная вершина (один вход, один выход) F - объединяющая вершина (два входа, один выход) - функциональная вершина (один вход, один выход)
В математике доказано, что для записи любого алгоритма достаточно трех видов алгоритмических конструкций: следование, выбор, цикл. F 1 F 2 а) следование Р F в 1) цикл (с предусловием) Р F 1 Р F 2 б) выбор (альтернатива) F 1 б 1) неполный выбор (выполнение одной альтернативы) F пер. цкла Р F в 2) цикл (с постусловием) в 3) цикл со счетчиком
ввод данных начало a, b условие Нет обмен значениями Блок-схема алгоритма Евклида a<b Да buf = a a=b b = buf = a mod b a=b b = buf Нет b=0 пока остаток не равен нулю вывод значения Да a конец
L4_Общее понятие алгоритма.ppt