Автор работы: Пользователь скрыл имя, 15 Сентября 2013 в 21:10, реферат
Алгоритм – це скінчена послідовність вказівок (команд), виконання яких дозволяє за обмежений час отримати розв’язок задачі.
Сам термін “алгоритм” утворився в результаті перекладу на європейські мови імені арабського математика ІХ століття Аль-Хорезмі, який описав правила (алгоритми) виконання основних арифметичних операцій у десятковій системі числення.
Алгоритми,їх основні властивості.
Способи представлення алгоритмів.
Блок-схеми. Приклади створення блок-схем
Поняття про криптографію.
Методи кодування інформації.
Приклади криптографічних задач.
Поняття рекурсії. Рекурсія в синтаксичних правилах.
Задача про Ханойські вежі.
2. Перемістити N-1 диск на другий (середній) сердечник;
3. Перемістити прямо N-ий диск з третього сердечника на перший (лівий);
4. Перемістити N-1 диск з другого на третій;
5. Перемістити N-ий диск прямо з першого на третій сердечник.
Поділ слів на склади.
На прикладі розв’язання
цієї задачі продемонструємо
можливості Прологу при
Для розв’язання задачі
ділення слів на склади, будемо
використовувати простий
Наприклад, розглянемо дві послідовності:
1) приголосна - голосна - приголосна. В цьому випадку, слово ділится після першої голосної:
ruler ---> ru-ler
prolog ---> pro-log
2) голосна - приголосна -
приголосна. В цьому випадку ,
слово ділиться між двома
number ---> num-ber
panter ---> pan-ter
Ці два правила добре застосовуються для більшості слів, але не працюють для слів типу handbook и hungry, які не підходять до жодного правила.
Такі слова програма
повинна обробляти спеціальним
чином, наприклад
ПРАКТИЧНА ЧАСТИНА
Приклад 1:
domains
loc = right;
middle;
left
predicates
hanoi(integer)
move(integer, loc, loc, loc)
inform(loc, loc)
clauses
hanoi(N) :- move(N, left, middle, right).
move(1, A, _, C) :- inform(A, C), !.
move(N, A, B, C) :- N1=N-1,
move(N1, A, C, B),
inform(A, C),
move(N1, B, A, C).
inform(Loc1, Loc2) :-
write("\nMove a disk from ", Loc1, "to", Loc2).
Приклад 2:
domains
letter = char
word = letter*
predicates
divide(word, word, word, word)
vocal(letter)
consonant(letter)
string_word(string, word)
append(word, word, word)
repeat
goal
clearwindow,
repeat,
write("Write a multi-syllable word: "),
readln(S),
string_word(S, Word),
divide([], Word, Part1, Part2),
string_word(Syllable1, Part1),
string_word(Syllable2, Part2),
write("Division: ",Syllable1,"-",Syllable2),nl,
fail.
clauses
divide(Start, [T1, T2, T3|Rest], D1, [T2, T3|Rest]):- vocal(T1), consonant(T2), vocal(T3), append(Start, [T1], D1).
divide(Start, [T1, T2, T3, T4|Rest], D1,[T3, T4|Rest]):- vocal(T1), consonant(T2), consonant(T3), vocal(T4), append(Start, [T1, T2], D1).
divide(Start, [T1|Rest], D1, D2):- append(Start, [T1], S), divide(S, Rest, D1, D2).
vocal('a').vocal('e').vocal('
vocal('o').vocal('u').vocal('
consonant(B):- not(vocal(B)), B <= 'z', 'a' <= B.
string_word("", []):-!.
string_word(Str, [H|T]):- bound(Str), frontchar(Str, H, S), string_word(S, T).
string_word(Str, [H|T]):- free(Str), bound(H), string_word(S,T),
frontchar(Str,H,S).
append([], L, L):-!.
append([X|L1], L2, [X|L3]) :- append(L1, L2, L3).
repeat.
repeat :- repeat.
Література: