Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции полностью

.pdf
Скачиваний:
32
Добавлен:
12.02.2015
Размер:
2.76 Mб
Скачать

Информатика

Пчелинцева Е.Г.

3.9.2. Доступ к файловой системе в Windows

Windows полностью обходит проблему доступа к диску в реальном режиме, потому что в этой операционной системе все функции включены в 32-разрядную архитектуру. Компания Microsoft называет эту технологию интерфейсом VFAT. Ее полное название звучит как файловая система FAT защищенного режима (protected mode FAT system). Использование драйверов защищенного режима означает, что у приложения меньше шансов вызвать сбой системы, так как Windows никогда не остается в реальном режиме на время, достаточное для вызова сбоя - она всегда выполняется в защищенном режиме. (Исключением из этого правила являются ситуации, когда при помощи файла CONFIG.SYS загружается драйвер реального режима для поддержки старомодного устройства, такого как CD-ROM. Windows переключает процессор в виртуальный режим 8086, чтобы получить доступ к этому устройству, которое использует драйвер реального режима.) Использование защищенного режима означает, что операционная система постоянно следит за всеми событиями, происходящими на компьютере. За ней остается последнее слово прежде, чем произойдет определенное событие. Эта новая система выполняется полностью в защищенной области памяти и уменьшает возможность сбоя системы, связанного с доступом к диску, почти до нуля и значительно повышает скорость доступа к диску.

Существует несколько отдельных компонентов, составляющих файловую систему Windows. Компания Microsoft называет эти компоненты слоями (layers). Потенциально в файловой системе Windows существует 32 слоя. (Текущая конфигурация не использует все 32 слоя.) Слой 0 наиболее близок к подсистеме ввода/вывода, в то время как слой 31 наиболее близок к аппаратному обеспечению. Текущая версия Windows требует для своей работы только некоторое количество этих слоев (обычно 12). Остальные слои зарезервированы. Каждый слой предоставляет место для поставщиков программного обеспечения, используемого для поддержки специальных файловых систем и устройств. Например, добавление нового сетевого драйвера к слою файловой системы позволяет получать доступ к дискам, расположенным на других компьютерах. В отличие от предыдущих версий Windows, поставщик может изменить файловую систему Windows таким образом, что она будет поддерживать некоторые дополнительные возможности.

Информатика

Пчелинцева Е.Г.

4. Основы алгоритмизации и программирования

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

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

Рисунок 10. Схема создания программ

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

цель или назначение задачи, ее место и связи с другими задачами;

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

содержание функций обработки входной информации при решении задачи;

требования к периодичности решения задачи;

ограничение по срокам и точности выходной информации;

состав и форма представления выходной информации;

источники входной информации для решения задачи;

пользователи задачи (кто осуществляет ее решение и пользуется результатами решения).

Алгоритмизация решения задачи – разработка и описание алгоритма

решения задачи.

Программирование – написание и отладка программы для ЭВМ.

4.1. Алгоритмы. Алгоритмизация. Алгоритмические языки

Слово «алгоритм» связано с именем арабского математика Мухаммеда бен Мусы аль-Хорезми, предложившего в IX веке первые алгоритмы решения арифметических задач. Алгоритм - одно из основных понятий информатики и математики.

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

Информатика

Пчелинцева Е.Г.

В середине XVIII века в математике назрела необходимость уточнения этого понятия. Однако задача оказалась достаточно трудной, и решить ее удалось только в середине XX века. Точные определения алгоритма были даны несколькими математиками (Э.Л. Постом, А.М.Тьюрингом, А.А.Марковым, А.Н. Колмогоровым). Эти определения, различные по форме, впоследствии оказались эквивалентными.

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

Алгоpитм - точное и понятное пpедписание исполнителю совеpшить последовательность действий, направленных на решение поставленной задачи.

Алгоритм описывает процесс преобразования, т.е. какие-то действия. Действие всегда предполагает объект действия (то, на что направлено, с чем выполняется действие) и субъект действия (кто или что выполняет эти действия). Объектами действия в алгоритмах являются информационные объекты (данные). Субъектами действия являются исполнители алгоритмов. В качестве исполнителя могут выступать человек или машина.

Исполнитель алгоритма - это некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом.

Исполнителя хаpактеpизуют:

сpеда;

элементаpные действия;

cистема команд;

отказы.

Сpеда (или обстановка) - это «место обитания» исполнителя.

Совокупность команд, понятных исполнителю, называют системой команд исполнителя. Для каждой команды должны быть заданы условия пpименимости (в каких состояниях сpеды может быть выполнена команда) и описаны pезультаты выполнения команды. После вызова команды исполнитель совеpшает соответствующее элементаpное действие.

Отказы исполнителя возникают, если команда вызывается пpи недопустимом для нее состоянии сpеды.

Алгоритм должен обладать совокупностью следующих свойств:

дискретностью,

определенностью,

точностью,

выполнимостью (результативностью),

массовостью,

понятностью для исполнителю,

Информатика

Пчелинцева Е.Г.

Дискретность (прерывность, раздельность) означает, что алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (этапов). Говорят, инструкции алгоритма должны быть доступны исполнителю. Для исполнителя-человека инструкции алгоритма формулируются в виде повелительных предложений с глаголом совершенного вида в неопределенной форме. Например: «Вычислить выражение…», «Проверить условие…», «Выполнить вспомогательный алгоритм…».

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

Определенность означает, что инструкции алгоритма должны формулироваться предельно точно и не должны допускать неоднозначного толкования. Среди инструкций алгоритма могут присутствовать инструкции, регламентирующие порядок (очередность) выполнения шагов алгоритма. Например: «Перейти к инструкции №…«. Из свойства определенности вытекает еще одно очень важное свойство алгоритмов – возможность формального выполнения алгоритмов. Только благодаря этому свойству выполнение алгоритмов и может быть доверено машине.

Точность – строго определенная последовательность шагов.

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

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

Понятность для исполнителя, - т.е. исполнитель алгоритма должен знать, как его выполнять.

На практике наиболее распространены следующие формы представления алгоритмов:

словесная (записи на естественном языке);

графическая (изображения из графических символов);

псевдокоды (полуформализованные описания алгоритмов на условном

алгоритмическом языке, включающие в себя как элементы языка

Информатика Пчелинцева Е.Г.

программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);

программная (тексты на языках программирования).

Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке.

Словесный способ не имеет широкого распространения по следующим причинам:

такие описания строго не формализуемы;

страдают многословностью записей;

допускают неоднозначность толкования отдельных предписаний.

Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным.

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

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

ввиде блочного символа. Блочные символы соединяются линиями переходов,

определяющими очередность выполнения действий.

Втабл. 1 приведены наиболее часто употребляемые символы.

Таблица 1

 

 

 

 

 

 

 

 

Название символа

 

Обозначение и пример

 

Пояснение

 

 

 

заполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Процесс

 

 

 

Вычислительное действие или

 

 

 

 

 

последовательность действий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решение

 

 

 

Проверка условий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Модификация

 

 

 

Начало цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Предопределенный

 

 

 

Вычисления по подпрограмме,

 

 

процесс

 

 

 

стандартной подпрограмме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод-вывод

 

 

 

Ввод-вывод в общем виде

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пуск-останов

 

 

 

Начало, конец алгоритма, вход в

 

 

 

 

 

подпрограмму и выход из нее

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Информатика

Пчелинцева Е.Г.

 

 

 

 

 

 

 

 

Документ

 

 

 

Вывод результатов на печать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

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

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

В псевдокоде не приняты строгие синтаксические правила для записи команд,

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

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

Информатика

Пчелинцева Е.Г.

предназначенный для исполнения на компьютере, должен быть записан на «понятном» ему языке. И здесь на первый план выдвигается необходимость точной записи команд, не оставляющей места для произвольного толкования их исполнителем. Следовательно, язык для записи алгоритмов должен быть формализован. Такой язык принято называть языком программирования, а запись алгоритма на этом языке - программой для компьютера.

4.2. Базовые алгоритмические структуры

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

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

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

1. Базовая структура следование. Образуется из последовательности действий, следующих одно за другим:

действие 1

действие 2

Алгоритмический язык: Язык блок-схем:

действие 1 действие 2

. . . . . . . . .

действие n

действие n

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

Структура ветвление существует в четырех основных вариантах:

1)если - то;

2)если - то - иначе;

3)выбор;

4)выбор - иначе.

 

 

Алгоритмический язык

Язык блок-схем

 

 

 

 

Информатика

Пчелинцева Е.Г.

1. ЕСЛИ - ТО

если условие то действия

все

2. ЕСЛИ - ТО - ИНАЧЕ

если условие то действия 1

иначе действия 2

все

3. ВЫБОР

выбор при условии 1: действия 1

при условии 2: действия 2

. . . . . . . . . . . .

при условии N: действия N

все

4. ВЫБОР - ИНАЧЕ

выбор при условии 1: действия 1

при условии 2: действия 2

. . . . . . . . . . . .

при условии N: действия N иначе действия N+1

все

Информатика

Пчелинцева Е.Г.

Примеры команды если

Алгоритмический язык

 

Язык блок-схем

 

 

 

 

 

 

если x > 0

 

 

то

y := sin(x)

 

 

все

 

 

 

 

 

 

 

 

 

 

 

если

a > b

 

 

то

a := 2*a; b := 1

 

 

иначе b := 2*b

 

 

все

 

 

 

 

 

 

 

выбор

при n = 1: y := sin(x) при n = 2: y := cos(x) при n = 3: y := 0

все

выбор

при a > 5: i := i+1 при a = 0: j := j+1 иначе i := 10; j:=0

все

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

Цикл типа пока предписывает выполнять тело цикла до тех пор, пока

выполняется условие, записанное после слова «пока».

 

Алгоритмический язык:

Язык блок-схем:

нц пока условие

 

тело цикла

 

(последовательность действий)

 

кц

 

2. Цикл типа для предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне.

Алгоритмический язык: Язык блок-схем:

нц для i от i1 до i2

тело цикла (последовательность действий)

кц

Примеры команд пока и для

Алгоритмический язык Язык блок-схем

нц пока i <= 5 S := S+A[i] i := i+1

кц

нц для i от 1 до 5 X[i] := i*i*i Y[i] := X[i]/2

кц

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

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

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

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