Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
30.04.2013
Размер:
183.81 Кб
Скачать

Алгоритм SortAll

Входные данные:

a[1..n] : вещ {массив}

n : цел {число элементов в массиве}

Выходные данные:

a[1..n] : вещ {массив}

Внутренние переменные:

k : цел {номер текущего элемента}

kmin : цел {номер минимального элемента}

j : цел {номер проверяемого элемента}

Temp : вещ {буфер обмена}

Начало

цикл-от k:=1 до (n-1)

{Найти-минимальный-элемент}

kmin := k

цикл-от j:=k+1 до n

если a[j] < a[kmin] то

kmin] := j

все

кцикл

{Переместить-мин.-элемент-на-позицию-k}

Temp := a[k]

a[k] := a[kmin]

a[kmin] := Temp

кцикл

Конец

И, наконец, можно закодировать полученный текст на языке программирования. Текст подпрограммы сортировки на языке Турбо-Паскаль в форме процедуры (procedure), приведен на следующей странице.

Отметим, что ее испытания на компьютере можно начать только после того, как будет установлено, что вызывающая программа (в нашем случае программа Sorting , разработанная выше) работает правильно. А для испытаний процедуры SortAll достаточно одного приведенного выше теста.

И еще одно замечание. Для того чтобы транслировать и выполнить подпрограмму, по правилам языка Паскаль ее надо либо вставить в текст программы в область деклараций, либо поместить в отдельный файл, оформив его как файл типа Unitи включить ссылку на него в текст главной программы. Как это сделать, будет показано в одной из следующих глав.

procedure SortAll(var a : Arr1; n : integer);

var

k : integer; {номер текущего элемента}

kmin : integer; {номер минимального элемента}

j : integer; {номер проверяемого элемента}

Temp : real; {буфер обмена}

begin

for k:=1 to (n-1) do begin

{Найти-минимальный-элемент}

kmin := k;

for j:=k+1 to n do

if a[j] < a[kmin] then

kmin] := j;

{все}

{кцикл}

{Переместить-мин.-элемент-на-позицию-k}

Temp := a[k];

a[k] := a[kmin];

a[kmin] := Temp;

end; {кцикл}

end;

4.5. Вопросы для самоконтроля

  1. Какова структура главного и вспомогательного алгоритма?

  2. В чем отличие внутренних переменных и входных или выходных переменных?

  3. Какие переменные называются глобальными?

  4. Когда отдельные действия алгоритма целесообразно оформлять в виде вспомогательных алгоритмов?

  5. В какой форме будет представлена часть алгоритма, которая при разработке оформляется как план алгоритма?

  6. Что означает термин «трассировка»?

  7. Как выполнить обратную подстановку?

  8. В какой форме в алгоритме можно записать ссылку на вспомогательный алгоритм?

  9. На каком этапе правильно разрабатывать тесты?

Соседние файлы в папке лекции