Коментар у псевдокоді починається з // і йде до кінця рядка.
Програма на псевдокоді складається з процедур
Insertion_Sort(A):
...
end
Кожна процедура починається з імені, після якого у дужках ідуть імена аргументів процедури (якщо є), і двокрапка. Починаючи з наступного рядка, записується тіло процедури, яке завершується інструкцією end. Рядки у тілі процедури нумеруються для полегшення посилань на окрему конструкцію в алгоритмі.
Змінні вважаються локальними стосовно процедури, якщо не зазначене інше.
Типи змінних не вказуються (якщо не сказано інакше, вважається, що прості змінні мають тип „дійсне число”).
Присвоювання позначається операцією ‘:=’ : x := y.
Часто використовуються масиви та об’єкти, які складаються з кількох полів, або атрибутів. Значення атрибута записується Object_Name.Attibute_Name. Наприклад, довжина масиву вважається його атрибутом і записується як A.length.
Індекс масиву записується у квадратних дужках ‘[‘ і ‘]’. Операція ‘..’ виділяє частину масиву: A[i .. j] (A[i], [i+1], … , A[j]).
Змінна, що позначає масив або об’єкт, вважаться посиланням (покажчиком) на дані, що його складають. Наприклад, якщо ми маємо об’єкти x та y, то після виконання операції присвоювання y := x для будь-якого поля f виконується умова x.f = y.f.
Більше того, якщо ми далі виконаємо операцію y.f := 3, то і y.f = 3, і x.f = 3, тому що після виконання y := x обидві змінні вказують на один і той самий об’єкт.
Параметри до процедур передаються за значенням: процедура одержує власну копію параметрів і будь-яку зміну параметра всередині процедури ззовні не видно. Але масиви і об’єкти передаються через посилання, тобто процедура одержує копію покажчика, а не копію даних, на які він указує. Тобто, якщо всередині процедури виконується A[j] := 10 або y.f := 3, це помітно ззовні.
Приклад: неможливо написати процедуру, яка міняє місцями свої параметри.
Swap(x, y):
t := x
x := y
y := t
end
a := 5
b := 7
Swap(a, b)
print a, b // 5 7
Але можна написати процедуру, яка міняє місцями два елементи масиву, якщо передати сам масив та індекси елементів, які необхідно поміняти місцями:
Swap(A, i, j):
t := A[i]
A[i] := A[j]
A[j] := t
end
Кожна інструкція у тілі процедури записується на окремому рядку. Інколи бажано розмістити більше однієї інструкції в одному рядку, в такому разі між ними ставлять ;.
Інструкції записуються з відступами, для позначення рівня вкладеності однієї інструкції в іншу.
Перелік інструкцій:
if умова then
інструкція
інструкція
elseif умова then
інструкція
інструкція
else
інструкція
інструкція
fi
Частини elseif … та else — необов’язкові, але в будь-якому разі необхідно завершувати інструкцію командою fi.
while умова do
інструкція
інструкція
done
repeat
інструкція
інструкція
until умова
for змінна := початок to кінець do
інструкція
інструкція
done
for змінна := кінець downto початок do
інструкція
інструкція
done
Зазначимо, що немає потреби у спеціальних командах begin та end для позначення початку та кінця блоку, тому що кожна інструкція є також блоком, що охоплює інструкції всередині неї. Тому необхідно завершувати інструкції спеціальними командами на зразок fi у інструкції if then else fi.
Умови можуть складатися з порівнянь на зразок ‘=’, ‘<>’, ‘<’, ‘<=’, ‘>’, ‘>=’ та булевих операцій not, and, or. Порівняння мають більш високий пріоритет (тобто виконується раніше), ніж булеві операції, тому немає потреби писати дужки навколо порівнянь (на відміну від Pascal).
· abs() – абсолютна величина аргумента
· return() – перериває виконання функції і повертає її значення
· sqrt() – квадратний корінь
· sqr() – квадрат числа
· factorial() – повертає факторіал аргумента
· div – цілочислове ділення
· round() – округлення до найближчого цілого
· Дійсні операції інкременту та декременту (наприклад, i++ та i--), а також операції +=, -=, *=.
· A.lengthI, A.lengthJ – кількість рядків і стовпців матриці відповідно. Але в деяких алгоритмах для цих цілей можуть використовуватися деякі змінні (n і m, наприклад) для зручності написання коду.
· Імена масивів бажано позначати великими літерами
· Алгоритми можуть використовувати функції з попередніх алгоритмів без їх попереднього опису
· Індекс масиву може починатися як з 0, так і з 1.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.