Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

Редактирование связей (компоновка)

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

После завершения этапа адреса объектов представляют собой смещения относительно начала единого загрузочного модуля, т.е. являются, по-прежнему, относительными.

Загрузка

Процесс загрузки программы был описан выше, поэтому отметим лишь основные функции данного этапа:

- определение и выделение необходимой памяти под программу и данные;

- загрузка программы в выделенную область с формированием абсолютных адресов; абсолютные адреса получаются суммированием относительных адресов загрузочного модуля с начальным адресом выделенной области;

- передача управления первой инструкции главной процедуры.

Выполнение

По сути содержание этого этапа заключается во вводе исходных данных, выполнении инструкций программы и выводе результатов на некоторый внешний носитель. Во время выполнения могут выявлены ошибки реализации типа деления на 0 или извлечения корня квадратного из отрицательного числа.

Типы вычислительных процессов

Известно, что любой сколь угодно сложный алгоритм можно записать с помощью 3 типов вычислительных процессов: следования, развилки и цикла. Их также называют базовыми структурами.

Следование

Структура представляет собой последовательное выполнение произвольного числа инструкций, не включающих в себя развилок и передач управления.

Пример.

y=a+b z=2*y*y+a*y+b print(z)

Развилка

Это двухальтернативный выбор, который на псевдокоде можно записать так:

если <условие> то

<действие 1>

[иначе

<действие 2>]

конец если

Как <действие 1>, так и <действие 2> могут являться комбинацией всех 3 базовых структур, поэтому с помощью данной структуры можно организовать более двух ветвей алгоритма. Квадратные скобки вокруг альтернативы иначе означают необязательность этой ветви.

Пример. Найти x=max(a, b), y=min(a, b).

Вариант 1.

если a>b то

x=a

y=b

иначе

x=b

y=a

конец если

Вариант 2.

x=a

y=b

если a<b то

x=b

y=a

конец если

Цикл

Это последовательность действий, повторяющаяся до тех пор, пока выполняется некоторое условие. Цикл в общем случае состоит из 4 блоков: инициализации цикла; логического блока, содержащего условие продолжения или окончания цикла; тела цикла – последовательности инструкций, выполняемых при каждом повторении, и блока, в котором производится изменение условия продолжения (или окончания) цикла. В зависимости от того, как расположен блок условия по отношению к телу цикла, различают цикл с предусловием (условие проверяется до выполнения тела цикла) и цикл с постусловием (условие проверяется после выполнения тела цикла). В первом случае тело цикла может ни разу не выполниться, во втором – оно выполнится хотя бы 1 раз. На рисунке показаны обобщенные блок-схемы цикла каждого вида. В некоторых частных случаях отдельные блоки могут отсутствовать.

Цикл с предусловием Цикл с постусловием

Пример. Сортировка массива методом "пузырька" {ai}, i=1...n.

k=1 Исходный массив: {24, -12, 0, 123, -2, 57}

пока k>0 делать Результат: {-12, -2, 0, 24, 57, 123}

k=0

для i от 1 до n-1 выполнить

если ai > ai+1 то

b=ai

ai=ai+1

ai+1=b

k=1

конец если

конец для

конец пока