Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФОРМАТИКА 2-15.doc
Скачиваний:
21
Добавлен:
26.10.2018
Размер:
804.35 Кб
Скачать

[Править] Вычислительная сложность «быстрой» сортировки

Общий анализ эффективности «быстрой» сортировки достаточно труден. Будет лучше показать ее вычислительную сложность, подсчитав число сравнений при некоторых идеальных допущениях. Допустим, что n – степень двойки, n = 2k (k = log2n), а центральный элемент располагается точно посередине каждого списка и разбивает его на два подсписка примерно одинаковой длины.

Рис.7 Сравнение сортировок порядка O(n2).

Сортировка пузырьком

Алгоритм состоит в повторяющихся проходах по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При проходе алгоритма, элемент, стоящий не на своём месте, «всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма.

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

Идея этого метода заключается в следующем. Множество элементов просматривается последовательно в некотором порядке, гарантирующем, что будут просмотрены все элементы множества (например, слева направо). Если в ходе просмотра множества будет найден искомый элемент, просмотр прекращается с положительным результатом; если же будет просмотрено все множество, а элемент не будет найден, алгоритм должен выдать отрицательный результат.

Алгоритм последовательного поиска

Шаг 1. Полагаем, что значение переменной цикла i=0.

Шаг 2. Если значение элемента массива x[i] равно значению ключа key, то возвращаем значение, равное номеру искомого элемента, и алгоритм завершает работу. В противном случае значение переменной цикла увеличивается на единицу i=i+1.

Шаг 3. Если i<k, где k – число элементов массива x, то выполняется Шаг 2, в противном случае – работа алгоритма завершена и возвращается значение равное -1.

При наличии в массиве нескольких элементов со значением key данный алгоритм находит только первый из них (с наименьшим индексом).

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

Бинарный поиск применяется к отсортированным множествам и заключается в последовательном разбиении множества пополам и поиска элемента только в одной половине на каждой итерации.

Алгоритм бинарного поиска

Шаг 1. Определить номер среднего элемента массива middle=(high+low)/2.

Шаг 2. Если значение среднего элемента массива равно искомому, то возвращаем значение, равное номеру искомого элемента, и алгоритм завершает работу.

Шаг 3. Если искомое значение больше значения среднего элемента, то возьмем в качестве массива все элементы справа от среднего, иначе возьмем в качестве массива все элементы слева от среднего (в зависимости от характера упорядоченности). Перейдем к Шагу 1.

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

Достоинством данного алгоритма является относительная быстрота выполнения поиска, по сравнению с алгоритмом последовательного поиска. Недостаток заключается в том, что бинарный поиск может применяться только на упорядоченном множестве.

10.Основные задачи системного программирования. Ресурсы компьютера. Операционные системы (ОС) как средство распределения и управления ресурсами. Развитие и основные функции ОС. Состав ОС: внутренние (встроенные) и внешние (программы-утилиты). Команды ОС. Сетевые ОС.

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

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

Операционная система обычно хранится во внешней памяти компьютера — на диске. При включении компьютера она считывается с дисковой памяти и размещается в ОЗУ.

Этот процесс называется загрузкой операционной системы.

В функции операционной системы входит:

  • осуществление диалога с пользователем;

  • ввод-вывод и управление данными;

  • планирование и организация процесса обработки программ;

  • распределение ресурсов (оперативной памяти и кэша, процессора, внешних устройств);

  • запуск программ на выполнение;

  • всевозможные вспомогательные операции обслуживания;

  • передача информации между различными внутренними устройствами;

  • программная поддержка работы периферийных устройств (дисплея, клавиатуры, дисковых накопителей, принтера и др.).

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

В зависимости от количества одновременно обрабатываемых задач и числа пользователей, которых могут обслуживать ОС, различают четыре основных класса операционных систем:

  1. однопользовательские однозадачные, которые поддерживают одну клавиатуру и могут работать только с одной (в данный момент) задачей;

  2. однопользовательские однозадачные с фоновой печатью, которые позволяют помимо основной задачи запускать одну дополнительную задачу, ориентированную, как правило, на вывод информации на печать. Это ускоряет работу при выдаче больших объёмов информации на печать;

  3. однопользовательские многозадачные, которые обеспечивают одному пользователю параллельную обработку нескольких задач. Например, к одному компьютеру можно подключить несколько принтеров, каждый из которых будет работать на "свою" задачу;

  4. многопользовательские многозадачные, позволяющие на одном компьютере запускать несколько задач нескольким пользователям. Эти ОС очень сложны и требуют значительных машинных ресурсов.

Операционная система для персонального компьютера, ориентированного на профессиональное применение, должна содержать следующие основные компоненты:

  • программы управления вводом/выводом;

  • программы, управляющие файловой системой и планирующие задания для компьютера;

  • процессор командного языка, который принимает, анализирует и выполняет команды, адресованные операционной системе.

Каждая операционная система имеет свой командный язык, который позволяет пользователю выполнять те или иные действия:

  • обращаться к каталогу;

  • выполнять разметку внешних носителей;

  • запускать программы;

  • ... другие действия.

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

Для управления внешними устройствами компьютера используются специальные системные программы — драйверы. Драйверы стандартных устройств образуют в совокупности базовую систему ввода-вывода (BIOS), которая обычно заносится в постоянное ЗУ компьютера.

Файл (англ.file,папка) — это место постоянного хранения информации: программ, данных для их работы, текстов, закодированных изображений, звуков и др.

Файловая система — это средство для организации хранения файлов на каком-либо носителе.

Файлы физически реализуются как участки памяти на внешних носителях — магнитных дисках или CD-ROM.

Каждый файл занимает некоторое количество блоков дисковой памяти. Обычная длина блока — 512 байт.

Обслуживает файлы специальный модуль операционной системы, называемый драйвером файловой системы. Каждый файл имеет имя, зарегистрированное в каталоге — оглавлении файлов.

Каталог (иногда называется директорией или папкой) доступен пользователю через командный язык операционной системы.

Его можно просматривать, переименовывать зарегистрированные в нем файлы, переносить их содержимое на новое место и удалять.

Каталог может иметь собственное имя и храниться в другом каталоге наряду с обычными файлами: так образуются иерархические файловые структуры.

Что происходит, когда пользователь подает операционной системе команду "открыть файл ...", в которой указано имя файла и имя каталога, в котором размещён этот файл?

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

При выполнении команды "сохранить файл" драйвер файловой системы ищет на диске незанятые блоки, отмечает их, как распределённые для вновь созданного файла, и передаёт драйверу диска запрос на запись в эти блоки данных пользователя.

Драйвер файловой системы обеспечивает доступ к информации, записанной на магнитный диск, по имени файла и распределяет пространство на магнитном диске между файлами.

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

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

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

Структура файловой системы и структура хранения данных на внешних магнитных носителях определяет удобство работы пользователя, скорость доступа к файлам и т.д.

Операционная система MS DOS (Microsoft Disk Operating System) — самая распространенная ОС на 16-разрядных персональных компьютерах. Она состоит из следующих основных модулей:

  • базовая система ввода/вывода (BIOS);

  • блок начальной загрузки (Boot Record);

  • модуль расширения базовой системы ввода/вывода (IO.SYS);

  • модуль обработки прерываний (MSDOS.SYS);

  • командный процессор (COMMAND.COM);

  • утилиты MS DOS.

Каждый из указанных модулей выполняет определенную часть функций, возложенных на ОС. Места постоянного размещения этих модулей различны. Так, базовая система ввода/вывода находится в постоянном запоминающем устройстве (ПЗУ), а не на дисках, как все остальные модули.

Базовая система ввода/вывода (BIOS) выполняет наиболее простые и универсальные услуги операционной системы, связанные с осуществлением ввода-вывода. В функции BIOS входит также автоматическое тестирование основных аппаратных компонентов (оперативной памяти и др.) при включении машины и вызов блока начальной загрузки DOS.

Блок начальной загрузки (или просто загрузчик) — это очень короткая программа, единственная функция которой заключается в считывании с диска в оперативную память двух других частей DOS — модуля расширения базовой системы ввода/вывода и модуля обработки прерываний.

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

Модуль обработки прерываний реализует основные высокоуровневые услуги DOS, поэтому его и называют основным.

Командный процессор DOS обрабатывает команды, вводимые пользователем.

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

Основные команды MS-DOS:

Наиболее часто употребляемые команды работы с файлами - это dir, copy, del, rename и print.

Команда DIR

Чтобы узнать, какие файлы находятся на том или ином диске, вам необходимо ввести команду dir, за которой через пробел следует имя дисковода с двоеточием:

dir b:

Если вы не укажете имя дисковода, то на экран будет выведен список файлов, находящихся на текущем дисководе:

dir

Если вы забыли повернуть ручку замка активного (указанного или текущего) дисковода, то после нажатия ВВОД (все введенные команды начинают выполняться после нажатия ВВОД) на экране появится сообщение:

Not ready error reading drive A

Abort, Retry, Fail?

Закройте замок дисковода и нажмите R.

Вывод списка (листинг) файлов диска можно приостановить, если выводимые файлы не помещаются в рамки экрана. Для этого нажмите одновременно клавиши Ctrl и S (CONTROL+S).

Повторное нажатие этих клавиш продолжит вывод содержимого диска.

Команда Copy

Эту команду вы можете использовать для копирования одного или нескольких файлов как на тот же самый диск, так и с одного диска на другой.

Пример:

Для копирования файла oldfile.doc на тот же диск и присвоения новому файлу имени newfile.doc нужно выполнить следующие действия:

1. Убедитесь, что диск с файлом находится в дисководе А, и что дисковод А является текущим.

2. Введите команду:

copy oldfile.doc newfile.doc

3. Нажмите ВВОД.

Обратите внимание на то, что имя нового файла не должно совпадать с именем копируемого файла, если копирование выполняется на тот же диск. Для создания второй копии файла с тем же именем, но уже на диске В, введите команду:

copy a:oldfile.doc b:oldfile.doc

Примечание:

Так как текущим является дисковод А (как мы условились в начале), то при спецификации источника можно опускать имя дисковода. Таким образом, нижеприведенные команды равнозначны:

copy a:oldfile.doc b:oldfile.doc

copy oldfile.doc b:oldfile.doc

copy oldfile.doc b:

Команда Delete

Эту команду вы можете использовать для удаления файлов, ставших вам ненужными. Например, вы хотите удалить файл oldfile.doc с диска, находящегося в текущем дисководе:

1. Убедитесь, что соответствующий диск находится в текущем дисководе.

2. Введите команду:

del oldfile.doc

3. Нажмите ВВОД.

Примечание:

Вместо мнемоники del можно указывать и мнемонику erase.

Команда Rename

Эту команду вы можете использовать для переименования файлов. Чтобы переименовать файл newfile.doc в oldfile.doc вам следует выполнить следующие действия:

1. Убедитесь, что соответствующий диск находится в текущем дисководе.

2. Введите команду:

rename newfile.doc oldfile.doc

3. Нажмите ВВОД.

Команда Type

Эту команду вы можете использовать для вывода содержимого файла на экран. Так, для вывода содержимого файла oldfile.doc вам необходимо выполнить следующие действия:

1. Убедитесь, что соответствующий диск находится в текущем дисководе. (Разумеется, он может находится и

не в текущем дисководе, но тогда вам придется

указывать еще и имя дисковода.)

2. Введите команду:

type oldfile.txt

3. Нажмите ВВОД.

Примечание:

Имеет смысл выводить на экран только текстовые файлы, т.к. прочие файлы (например, файлы с расширениями .com и .exe) будут создавать на экране причудливые, нечитаемые символы и знаки. Кроме того, если файл не помещается весь на экране, то лучше добавлять в хвост командной строки опцию /р. В этом случае, команды, выводящие некоторую информацию на экран (dir и type, например), будут выводить ее постранично. Для вывода следующей страницы достаточно нажать любую клавишу:

type oldfile.doc/p

Команда Print

Команда print предназначена для вывода содержимого файла на печать. Например, для распечатки файла oldfile.doc, находящегося на диске в дисководе В необходимо выполнить следующие действия:

1. Убедитесь, что принтер готов к печати.

2. Введите команду:

print b:oldfile.txt

3. Нажмите ВВОД.

Примечание:

На текущем диске должна находится система. После нажатия ВВОД на экране появится запрос на имя устройства печати. Нужно либо ввести имя устройства, либо просто нажать ВВОД, если печать будет выполняться на текущем принтере. Кроме этого, во время печати вы можете запускать свои программы, однако время их выполнения будет больше обычного.

Команды работы с диском

Наиболее часто используемые команды работы с диском - это команды format и diskcopy. Команда format предназначена для форматирования дисков. Кроме того, во время выполнения этой команды

на дискете выявляются дефектные сектора. Например, для

форматирования нового диска, вставленного в дисковод В,

необходимо ввести следующую командную строку:

format b:

Если у вас только один дисковод, то система попросит вас вставить форматируемый диск. Если вы форматируете диск, который впоследствии будет использоваться как системный диск, то в хвост командной строки следует добавить опцию /s. Во время форматирования система выведет на экран сообщение:

Volume lable (11 characters, ENTER for none)?

Нажмите ВВОД, если нет необходимости присваивать содержимому диска некоторое общее название (метку тома), иначе введите несколько символов (например - data disk) и нажмите ВВОД. На экране появится новое сообщение:

format another? (Y,N)

Введите N, если вы не будете форматировать следующую дискету. Необходимо помнить, что командой format уничтожаются все файлы на форматируемой дискете.

Кроме MS-DOS существуют другие операционные системы (PC-DOS, UNIX, LINUX, SYSTEM7 и др.), но они не получили такого широкого распространения, как MS-DOS. Кроме того, есть ОС фирмы Microsoft линейки NT: Windows NT, 2000, XP, 2003.