
- •Что изучает информатика? Структура информатики.
- •Раскрыть понятие «Данные». В чем сложность изучения информатики?
- •Структура эвм. Дать классификацию системным ресурсам эвм.
- •Дать классификацию и перечислить характеристику внешних интерфейсов эвм.
- •Дать классификацию и перечислить характеристики шин расширения эвм
- •Коммуникационные средства. Дать обзор оборудования локальных сетей.
- •Типы данных в эвм. Кодирование целых вещественных чисел.
- •Системы счисления. Перевод из одной системы счисления в другую.
- •Быстрый перевод чисел из 2-ой в 16-ую систему и обратно
- •Арифметические операции над целыми знаковыми двоичными числами. Привести пример вычисления.
- •Логические битовые операции. Перечислить и привести примеры их использования.
- •Упакованные и неупакованные dcd числа. Преимущества и недостатки работы в bcd формате.
- •Сложение bcd чисел. Привести пример.
- •Прерывания в эвм. Назначения аппаратных и программных прерываний.
- •Реальный режим работы процессора i386. Дать характеристики работы процессора в реальном режиме.
- •Защищенный режим работы процессора i386. Дать характеристики работы процессора в защищенном режиме.
- •Раскрыть понятие «Алгоритм». Виды алгоритмов.
- •Дать понятие «Цифровая подпись». Объясните принципы ее применения.
- •Сортировка данных. Основные методы. Сравнения.
- •Быстрый алгоритм сортировки. Дайте сравнение производительности метода с «пузырьковым» методом.
- •Понятие ос, её основные функции. Основные семейства операционных систем.
- •Каталоги. Объясните их назначение. Типы доступа к файлам.
- •Разъяснить процессы компиляции и линкования исходного кода программ.
Сортировка данных. Основные методы. Сравнения.
Пусть есть последовательность а0, а1, …, аn и функция сравнения, которая на любых двух элементах последовательности принимает одно из трех значений: меньше, больше, равно. Задача сортировки состоит в перестановке членов последовательности таким образом, чтобы выполнялось условие аi аi + 1, для всех i от 0 до n.
Сортировка выбором.
Идея метода состоит в том, чтобы создавать отсортированную последовательность путем присоединения к ней одного элемента за другим в правильном порядке.
Будем строить, начиная с левого конца массива. Алгоритм состоит из n последовательных шагов, начиная от нулевого и заканчивая (n-1)-вым.
На i-том шаге выбираем наименьший из элементов а[i]…a[n] и меняем его местами с а[i]. Таким образом , так как число обменов будет всегда меньше числа сравнения, время сортировки растет квадратично относительно количества элементов О(n2).
Сортировка пузырьком.
Расположим массив сверху вниз, от 0-го элемента к последнему.
Идея метода: шаг сортировки состоит в проходе снизу вверх по массиву. По пути просматриваются пары соседних элементов. Если элементы некоторой пары находятся в неправильном порядке, то меняем их местами.
4 4 4 4 2
9 9 9 2 4
7 7 2 9 9
6 2 7 7 7
2 6 6 6 6
3 3 3 3 3
После нулевого прохода по массиву «вверху оказывается» самый «легкий» элемент, отсюда аналогия с пузырьком. Следующий проход делается до второго сверху элемента, то второй по величине элемент поднимается на правильную позицию. Среднее число сравнений и обменов имеют квадратичный порядок роста: Theta (n2), отсюда можно заключить, что алгоритм пузырька очень медленный малоэффективен.
Быстрая сортировка.
Метод основан на подходе «разделяй и властвуй». Общая схема такова: из массива выбирается некоторый опорный элемент а[i], запускается процедура разделения массива, которая перемещает все ключи, меньшего, либо равные a[i], влево от него, а все ключи, большие, либо равные a[i] – вправо, теперь массив состоит из двух подмножеств, причем левое меньше.
Для обоих подмассивов: если в подмассиве более двух элементов, рекурсивно запускаем для него ту же процедуру. В конце получаем полностью отсортированную последовательность.
На входе массив a[0] … a[n] и опорный элемент р, по которому будет производиться разделение.
Введем два указателя: i и j. В начале алгоритма они соответственно указывают на левый и правый конец последовательности.
Будем двигать указатель i c шагом в 1 элемент по направлению к концу массива ,пока не будет найден элемент a[i]p. Затем начнем двигать указатель j от конца массива к началу, пока не будет найден a[j] p.
Далее, если i j, меняем a[i] и а[j] местами и продолжаем двигаться i, j, по тем же правилам. Повторяя шаг 3, пока i j.
Каждое разделение требует, очевидно, Theta(n) операций. Количество шагов деления (глубина рекурсии) составляет приблизительно log n, если массив делится на более – менее равные части. Таким образом общее быстродействие: О (n log n), что и имеет место на практике.