Студопедия

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

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

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






  • Псевдокод






    Псевдокод нагадує існуючі мови програмування (такі, як 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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.