Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Псевдокод






Псевдокод нагадує існуючі мови програмування (такі, як Pascal або C) та на відміну від них є простішим і більш компактним. Крім того, у псевдокоді інколи можна записувати дії алгоритму своїми словами, якщо так ясніше.

На відміну від конкретної мови програмування псевдокод дозволяє опустити несуттєві технічні подробиці, такі як обробка помилок, що необхідно у реальній програмі але заважає вивченню алгоритмів.

Коментар у псевдокоді починається з // і йде до кінця рядка.

Програма на псевдокоді складається з процедур

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).






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.