Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные билеты по информатике.doc
Скачиваний:
64
Добавлен:
10.05.2014
Размер:
277.5 Кб
Скачать

1) Массивы и строки в с

Массив– это тип данных, описывающий упорядоченный набор однотипных элементов.

Массив задается так: int a[10]; // массив из 10 целых чисел. Нумеруется от 0 до 9 Статическиемассивы можно объявлять синициализацией, перечисляя значения их элементов в {} через запятую. Если задано меньше элементов, чем длина массива остальные элементы считаются нулями:

int a10[10] = { 1, 2, 3, 4 }; /* и 6 нулей */

Строка в Си - это последовательность байт (букв, символов), завершающаяся в конце специальным признаком - байтом '\0'.

char s[размер строки]

2)Стек– область памяти, работа с которойможетосуществляться по особым правилам. Чтобы записать нечто в стек используются командыpushиpushd(pushдля 16-битных иpushdдля 32-битных. 8-битные операнды класть в стек нельзя):

pushd eax

pushd 1

pushd [x]

Чтобы извлечь переменную из стека используются команды popиpopd.

Последнее значение, положенное в стек, извлекается первым. В этом смысл существования стека, именно это свойство делает стек стеком

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

type

plist_entry = ^list_entry;

list_entry = record

next: plist_entry;

value: integer;

End;

В линейномсписке признаком последнего элемента служитнулевой указатель. Вкольцевомсписке последний элемент указывает на первый.

Для перечисления элементов списка используется следующий шаблон:

var current, head: ^list_entry;

...

current := head;

while current <> nil do begin

{ работа с элементом current }

current := current^.next;

end;

Головойсписка называется первый его элемент.Хвостомсписка называется последний его элемент. Очевидно, что все элементы списка доступны через его голову, поэтому список характеризуется указателем на его голову

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

Билет 6

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

type

plist_entry = ^list_entry;

list_entry = record

next: plist_entry;

value:integer;

End;

В линейномсписке признаком последнего элемента служитнулевой указатель. Вкольцевомсписке последний элемент указывает на первый.

Для перечисления элементов списка используется следующий шаблон:

var current, head: ^list_entry;

...

current := head;

while current <> nil do begin

{ работа с элементом current }

current := current^.next;

end;

Головойсписка называется первый его элемент.Хвостомсписка называется последний его элемент. Очевидно, что все элементы списка доступны через его голову, поэтому список характеризуется указателем на его голову

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

2) Процедурыпредставляют собой просто кусок кода. Чтобы вызвать процедуру используется командаcall, чтобы выйти из процедуры –ret. Командаcallделает две вещи:

  • Кладет на стек адрес команды, следующей за ней

  • Передаёт управление на метку

Команда retберет со стека адрес возврата и передает на него управление

Параметры процедурам могут передаваться через регистры и через стек.

Пример:

format binary

org 100h

mov eax, 1

mov ebx, 2

call add eax,ebx ; вызов процедуры

mov eax, 3

mov ebx, 4

call add eax,ebx

int 20h

add eax,ebx:

add eax, ebx

ret

Соглашение о вызове– это способ, которым функциям передаются параметры.

Cdecl- Аргументы передаются через стек, справа налево. Очистку стека производитвызывающаяподпрограмма. Это основной способ вызова функций с переменным числом аргументов

Stdcall- Аргументы передаются через стек, справа налево. Очистку стека производитвызываемаяподпрограмма.

; пролог

pushd ebp

mov ebp, esp

; первый параметр теперь всегда [ebp + 8], второй – [ebp + 12], и т.д.

; сохранение регистров

pushd esi

pushd edi

; тело функции

; восстановление регистров

popd edi

popd esi

; эпилог

popd ebp

ret ; для cdecl, или retn (4 * число параметров) для stdcall

Соседние файлы в предмете Информатика