Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CП_Ответы.doc
Скачиваний:
15
Добавлен:
27.09.2019
Размер:
281.09 Кб
Скачать
  1. Дайте определение понятию «таблица», «прямой табличный доступ». Опишите, как происходит процесс прямого табличного доступа в таблице.

Таблица - последовательность элементов имеющих одинаковую размерность.

Прямой табличный доступ, это доступ к элементу таблицы по индексу. (Непосредственное вычисление адреса необходимого элемента в таблице и обращение к нему.)

Предположим, что пользователь ввел номер месяца — 03 и программа должна преобразовать этот номер в алфавитное значение March.

Программа для выполнения такого преобразования включает определение таблицы алфавитных названий месяцев, имеющих одинаковую длину. Так как самое длинное название — September, то таблица имеет следующий вид:

MONTBL DB 'January..' DB 'February.' DB 'March....'

Каждый элемент таблицы имеет длину 9 байт. Адрес элемента 'January' — MONTBL+0, 'February' — MONTBL+9, 'March' — MONTBL+18. Для локализации месяца 03, программа должна выполнить следующее:

  1. Преобразовать введенный номер месяца из ASCII 33h в двоичное 03;

  2. Вычесть единицу из номера месяца: 03-1 = 02;

  3. Умножить результат на длину элемента (9): 02 х 9 = 18;

  4. Прибавить произведение (18) к адресу MONTBL. В результате получится адрес требуемого названия месяца: MONTBL+18.

  1. Дайте определение понятиям ‘транслятор’, ‘компилятор’. Опишите назначение трансляторов, компиляторов. Назовите отличие компилятора от транслятора. Приведите примеры реализации трансляторов и компиляторов.

Транслятор – это программа, которая переводит входную программу на исходном (входном) языке в эквивалентную ей выходную программу на результирующем (выходном) языке. Назначение транслятора - преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.

Компилятор – это транслятор, осуществляющий перевод исходной программы в эквивалентную ей объектную программу на языке ассемблера. Отличие компилятора от транслятора состоит в том, его входная (результирующая) программа должна быть написана на языке машинных команд или на ассемблере. Результат работы транслятора может быть написан на любом языке.

Пример реализации транслятора: перевод кода с языка Pascal на язык С/С++.

Пример реализации компилятора: перевод кода с языка C# в машинный код.

  1. Дайте определение понятия ‘интерпретатор’. Опишите назначение интерпретатора. Укажите различие между интерпретаторами и трансляторами. Перечислите особенности построения интерпретаторов. Приведите примеры реализации интерпретаторов.

Интерпретатор – это программа, которая воспринимает входную программу на исходном языке и выполняет ее. Интерпретатор преобразует небольшой фрагмент исходной программы в машинные команды и, лишь дождавшись, когда компьютер их выполнит, переходит к обработке следующего фрагмента. Интерпретатор в отличие от транслятора не выдает результирующую программу или код. После анализа текста исходной программы интерпретатор сразу же ее выполняет в соответствии с ее смыслом. Особенность: Интерпретатор преобразует исходную программу в машинные коды, которые не доступны пользователю. Машинные коды порождаются интерпретатором, исполняются и уничтожаются.

Пример реализации:

Java Virtual Machine (JVM) – виртуальная машина Java, часть среды исполнения Java, выполняющая интерпретацию Java байт-кода. Java Virtual Machine специфицируется набором команд байт-кода, набором регистров, стеком, сборщиком мусора и пространством хранения методов.

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

  1. Назовите API-функции Windows, которые осуществляют форматирование строки по заданным параметрам. Опишите их формат с указанием передаваемых параметров в функцию и возвращаемого значения. Приведите пример форматирование строки.

Функция которая осуществляет форматирование строки является: wsprintf Записывает отформатированные данные в указанный буфер. Любые аргументы преобразуются и копируются в выходной буфер в соответствии с соответствующей спецификации формата в строке формата. Функция добавляет завершающий нулевой символ символов он пишет, но возвращаемое значение не включает нулевой символ в его букв.

Int wsprintf (

LPTSTR lpOut, / / ​​указатель на буфер для вывода

LPCTSTR lpFmt, / / ​​указатель на управления форматом строки

... / / Один или несколько необязательных аргументов. Число и тип аргументов параметры зависят от соответствующего управления форматом спецификации в lpFmt параметра

);

Пример:

lpbuffer_output_add db 128 dup(?)

szformat_failed db 0Dh, 0Ah, "значение ", "%d", " не равно 0 ", 0

mov edx, 5

invoke wsprintf, OFFSET lpbuffer_output_add, OFFSET szformat_failed, edx

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]