Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инфтех ответы полные.docx
Скачиваний:
12
Добавлен:
09.12.2018
Размер:
1.86 Mб
Скачать

15.Архитектурная организация процессора. Организация памяти компьютера. Классификация компьютеров по сферам применения.

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

Укрупненная схема центрального процессора (ЦП) некоторой формальной ЭВМ представлена на рисунке, где изображены только основные его блоки управляющие регист­ры (УР), устройство управления (УУ), ПЗУ, арифметико-логическое устройство (АЛУ), ре­гистровая память (РП), кэш-память и интерфейсный блок (ИБ). Наряду с перечисленными ЦП содержит ряд других блоков (прерывания, защиты ОП, контроля и диагностики и др.), структура и назначение которых здесь не рассматриваются. Блок УУ вырабатывает последо­вательность управляющих сигналов, инициирующих выполнение соответствующей последо­вательности микрокоманд (находящихся в ПЗУ), реализующей текущую команду. Наряду с этим УУ координирует функционирование всех устройств ЭВМ посредством посылки управляющих сигналов обмен данными ЦП <-> ОП, хранение и обработка информации, ин­терфейс с пользователем, тестирование и диагностика и др. Поэтому УУ целесообразно рас­сматривать как отдельный блок ЦП; однако на практике большинство управляющих схем распределены по всей ЭВМ. Они связаны большим числом управляющих линий, передаю­щих сигналы для синхронизации операции во всех устройствах ЭВМ и принимающих сигна­лы об их состоянии. Блок УР предназначен для временного хранения управляющей информации и содержит регистры и счетчики, участвующие совместно с УУ в управлении вычислительным процессом регистр состояния ЦП, программы (ССП), счетчик команд (СК) представляет со­бой регистр, хранящий в ОП адрес выполняемой команды (в период выполнения текущей команды его содержимое обновляется на адрес следующей команды), регистр команд (РК) содержит выполняемую команду (его выходы связаны с управляющими схемами, генери­рующими распределенные во времени сигналы, необходимые для выполнения команд)

Блок РП содержит регистры сверхоперативной памяти (более высокого быстродейст­вия, чем ОП) небольшого объема, позволяющие повысить быстродействие и логические воз­можности ЦП. Эти регистры используются в командах путем сокращенной регистровой ад­ресации (указываются только номера регистров) и служат для хранения операндов, результа­тов операций, в качестве базовых и индексных регистров, указателей стэка и др. В некото­рых ЦП базовые и индексные регистры входят в состав блока УТ, как правило, РП выполня­ется в виде быстродействующих полупроводниковых интегральных запоминающих уст­ройствСумматор соединен с вентильными схемами для выполнения необходимых операций над его содержимым и содержимым других регистров. Некоторые ЭВМ имеют несколько сумматоров, при количестве, большем 4, они выделяются в специальную группу регистров общего назначения (РОН). Конструктивно АЛУ выполняется на одном или нескольких БИС/СБИС, при этом ЦП может иметь одно АЛУ универсального назначения или несколько специализированных для отдельных видов операции. В по­следнем случае увеличивается структурная сложность ЦП, но повышается его быстродейст­вие за счет специализации и упрощения схем вычисления отдельных операций. Такой под­ход широко используется в современных ЭВМ общего назначения и супер-ЭВМ для повы­шения их производительности Несмотря на различные классы ЭВМ, их АЛУ используют общие принципы выполнения арифметико-логических операции. Различия касаются схемо­технических решений организации АЛУ и принципов реализации операции, обеспечиваю­щих ускорение их выполнения.

С учетом сказанного представим общую схему выполнения программ процессором. Выполнение программы, находящейся в ОП, начинается с того, что в СК засылается адрес первой ее команды, содержимое СК пересылается в РАП и в ОП посылается сигнал управле­ния считыванием. Через некоторое время (соответствующее времени доступа к ОП) адре­суемое слово (в данном случае первая команда программы) извлекается из ОП и загружается в РДП, затем содержимое РДП пересылается в СК. На этой стадии команда готова для деко­дирования ее УУ и выполнения. Если команда содержит операцию, которая должна быть выполнена АЛУ, то необходимо получить требуемые операнды. Если операнд находится в ОП (а он может быть также в УР), его необходимо выбрать из памяти. Для этого в РАП пере­сылается адрес операнда и начинается цикл чтения Операнд, выбранный из памяти в РДП, может быть передан в АЛУ. Выбрав таким образом один или несколько операндов, АЛУ может выполнить требуемую операцию, сохранив ее результат в одном из РОН. Если резуль­тат операции необходимо запомнить в ОП, он должен быть послан в РДП Адрес ячейки, в которую необходимо поместить результат, пересылается в РАП и начинается цикл записи. Между тем содержимое СК увеличивается, указывая следующую команду, которая должна выполняться. Таким образом, как только завершится выполнение текущей команды, может сразу же начаться выборка на выполнение следующей команды программы.

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

Билет 16. Функциональная организация персонального компьютера. Центральный процессор. Оперативное запоминающее устройство. Внешние запоминающие устройства. Внешние устройства. Центральный процессор (ЦП) — функционально-законченное программно-управляемое устройство обработки информации, выполненное на одной или нескольких СБИС. В современных персональных компьютерах разных фирм применяются процессоры двух основных архитектур:

• полная система команд переменной длины — Complex Instruction Set Computer (CISC);

• сокращенный набор команд фиксированной длины — Reduced Instruction Set Computer (RISC). Весь ряд процессоров фирмы Intel, устанавливаемых в персональные компьютеры IBM, имеют архитектуру CISC, а процессоры Motorola, используемые фирмой Apple для своих персональных компьютеров, имеют архитектуру RISC. Обе архитектуры имеют свои преимущества и недостатки. Так CISC-процессоры имеют обширный набор команд (до 400), из которых программист может выбрать команду, наиболее подходящую ему в данном случае. Недостатком этой

архитектуры является то, что большой набор команд усложняет внутреннее устройство управления процессором, увеличивает время исполнения команды на микропрограммном уровне. Команды имеют различную длину и время исполнения. RISC-архитектура имеет ограниченный набор команд и каждая команда выполняется за один такт работы процессора. Небольшое число команд упрощает устройство управления процессора. К недостаткам RISC-архитектуры можно отнести то, что если требуемой команды в наборе нет, программист вынужден реализовать ее с помощью нескольких команд из имеющегося набора, увеличивая размер программного кода. Упрощенная схема процессора, отражающая основные особенности архитектуры микроуровня, сложным функциональным устройством процессора является устройство управления выполнением команд. Оно содержит: • буфер команд, который хранит одну или несколько очередных команд программы; читает следующие команды из запоминающего устройства, пока выполняется очередная команда, уменьшая время ее выборки из памяти; • дешифратор команд расшифровывает код операции очередной команды и преобразует его в адрес начала микропрограммы, которая реализует исполнение команды; • управление выборкой очередной микрокоманды представляет собой небольшой процессор, работающий по принципу фон Неймана, имеет свой счетчик микрокоманд, который автоматически выбирает очередную микрокоманду из ПЗУ микрокоманд; • постоянное запоминающее устройство (ПЗУ) микрокоманд — это запоминающее устройство, в которое информация записывается однократно и затем может только считываться; отличительной особенностью ПЗУ является то, что записанная в него информация сохраняется сколь угодно долго и не требует постоянного питающего напряжения. Выборка очередной микрокоманды осуществляется через определенный интервал времени, который, в свою очередь, зависит от времени выполнения предыдущей микрокоманды. Частота, с которой осуществляется выборка микрокоманд, называется тактовой частотой процессора. Тактовая частота является важной характеристикой процессора, так как определяет скорость выполнения процессором команд, и, в конечном итоге, быстродействие процессора. Арифметико-логическое устройство (АЛУ) предназначено для выполнения арифметических и логических операций преобразования информации. Функционально АЛУ состоит из нескольких специальных регистров, полноразрядного сумматора и схем местного управления. Регистры общего назначения (РОН) используются для временного хранения операндов исполняемой команды и результатов вычислений, а также хранят адреса ячеек памяти или портов ввода-вывода для команд, обращающихся к памяти и внешним устройствам. Необходимо отметить, что если операнды команды хранятся в РОН, то время выполнения команды значительно сокращается. Одна из причин, почему программисты иногда обращаются к программированию на языке машинных команд, это наиболее полное использование РОН для получения максимального быстродействия при выполнении программ, критичных по времени. Рассмотрим кратко характеристики процессоров, используемых в современных ПК типа IBM PC. Процессоры для этих ПК выпускают многие фирмы, но законодателем моды здесь является фирма Intel. Ее последней разработкой является процессор Intel Core, выпуск которого начат в начале 2006 г. К основным особенностям архитектуры Intel Core можно отнести следующие: — имеется специальный внутренний КЭШ размером 2 Мбайта; — добавлена арбитражная шина, которая уменьшает нагрузку

системной шины; — внутренняя микроархитектура процессора базируется на двух ядрах — параллельно работающих конвейерах команд {суперскалярная архитектура), которые исполняют сразу несколько команд в 12 разных фазах обработки (чтение, дешифрация, загрузка операндов, исполнение и т.д.). Конвейеры заканчиваются двумя АЛУ: АЛУ, работающим на удвоенной частоте

процессора для коротких арифметических и логических команд, и АЛУ для выполнения медленных команд; — введено управление питанием ядра, которое включает в себя блок температурного контроля, способный управлять отдельно питанием каждого ядра. Фирма Intel поставляет упрощенные варианты процессоров Pentium 4 под названием Celeron, который в два раза дешевле базового варианта процессора. Однако следует отметить, что последние модели процессора Celeron ни в чем не уступают «старшему брату» и даже в некоторых случаях превосходят его. Фирма AMD {Advanced Micro Devices) выпускает процессоры, совместимые по системе команд с Intel Pentium 4 — Athlon (K7). Этот процессор выполнен по суперскалярной архитектуре с тремя конвейерами команд, работающими параллельно и способными обрабатывать до девяти инструкций за один цикл работы процессора. Тестирование процессора К7 и его сравнение с Pentium 4 показывает, что К7 не уступает ему и даже превосходит его в некоторых случаях. Стоимость процессора Athlon на 20—30 % дешевле процессора Intel. Процессор К7 требует для своей работы собственной шины, несовместимой с шиной процессора Pentium 4. Поэтому замена одного типа процессора другим требует и замены системной платы, на которой расположен набор микросхем основных функциональных устройств ПК. Другим важным функциональным узлом компьютера является

запоминающее устройство, или память. Память, в которой хранятся исполняемые программы и данные, называется оперативным запоминающим устройством (ОЗУ), или RAM (Random Access Memory) — памятью со свободным доступом. ОЗУ позволяет записывать и считывать информацию из ячейки, обращаясь к ней по ее номеру или адресу. Ячейка памяти имеет стандартное число двоичных разрядов. В настоящее время стандартный размер ячейки ОЗУ равняется одному байту. Информация в ОЗУ сохраняется все время, пока на схемы памяти подается питание, т.е. она является энергозависимой. Существует два вида ОЗУ, отличающиеся техническими характеристиками: динамическое ОЗУ, или DRAM (Dynamic RAM), и статическое ОЗУ, или SRAM (Static RAM). Разряд динамического ОЗУ построен на одном транзисторе и конденсаторе, наличие или отсутствие заряда на котором определяет значение, записанное в данном бите. При записи или чтении информации из такой ячейки требуется время для накопления (стекания) заряда на конденсаторе. Поэтому быстродействие динамического ОЗУ на порядок ниже, чем у статического ОЗУ, разряд которого представляет собой триггер на четырех или шести транзисторах. Однако из-за большего числа

элементов на один разряд в одну СБИС статического ОЗУ помещается гораздо меньше элементов, чем у динамического ОЗУ. Например, современные СБИС динамических ОЗУ способны хранить 256—1024 Мбайт информации, а схемы статических ОЗУ только 256—512 Кбайт. Кроме этого статические ОЗУ более энергоемки и значительно дороже. Обычно, в качестве оперативной или видеопамяти используется динамическое ОЗУ. Статическое ОЗУ используется в качестве небольшой буферной сверхбыстродействующей памяти. В кэш-память из динамической памяти заносятся команды и данные, которые процессор будет выполнять в данный момент. Скорость работы ОЗУ ниже, чем быстродействие процессора, поэтому применяются различные методы для повышения ее производительности. Одним из способов увеличения быстродействия динамического ОЗУ является размещение в одном корпусе микросхемы СБИС нескольких модулей памяти с чередованием адресов. Байт с нулевым адресом находится в первом модуле, байт с первым адресом во втором модуле, байт со вторым адресом в первом модуле и т.д. Поскольку обращение к памяти состоит из нескольких этапов: установка адреса, выбор ячейки, чтение, восстановление, то эти этапы можно совместить во времени для разных модулей. Другим способом увеличения быстродействия является чтение из памяти содержимого ячейки с заданным адресом и нескольких ячеек, расположенных рядом. Они сохраняются в специальных регистрах — защелках. Если следующий адрес указывает на одну из уже считанных ячеек, то ее содержимое читается из защелки. Несмотря на разработку новых типов схем динамических ОЗУ, снижающую время обращения к ним, это время все еще остается значительным и сдерживает дальнейшее увеличение производительности процессора. Для уменьшения влияния времени обращения процессора к ОЗУ и увеличения производительности компьютера дополнительно устанавливается сверхбыстродействующая буферная память, выполненная на микросхемах статической памяти. Эта память называется кэш-памятью (от англ. cache — запас). Время обращения к данным в кэш-памяти на порядок ниже, чем у ОЗУ, и сравним со скоростью работы самого процессора. Запись в кэш-память осуществляется параллельно с запросом процессора к ОЗУ. Данные, выбираемые процессором, одновременно копируются и в кэш-память. Если процессор повторно обратится к тем же данным, то они будут считаны уже из кэш-памяти. Такая же операция происходит и при записи процессором данных в память. Они записываются в кэш-память, а затем в интервалы, когда шина свободна, переписываются в ОЗУ. Современные процессоры имеют встроенную кэш-память, которая находится внутри процессора, кроме этого есть кэш-память и на системной плате. Чтобы их различать, кэш-память делится на уровни. На кристалле самого процессора находится кэш-память первого уровня, она имеет объем порядка 16—128 Кбайт и самую высокую скорость обмена данными. В корпусе процессора, но на отдельном кристалле находится кэшпамять второго уровня, которая имеет объем порядка 256 Кбайт — 4 Мбайта. И, наконец, кэш-память третьего уровня расположена на системной плате, ее объем может составлять 2—24 Мбайта. Управление записью и считыванием данных в кэш-память выполняется автоматически. Когда кэш-память полностью заполняется, то для записи последующих данных устройство управления кэшпамяти по специальному алгоритму автоматически удаляет те данные, которые реже всего использовались процессором на текущий момент.

Использование процессором кэш-памяти увеличивает производительность процессора, особенно в тех случаях, когда происходит по-следовательное преобразование относительно небольшого числа

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

(ПЗУ) или ROM (Read Only Memory). Постоянные запоминающие устройства можно разделить по способу записи в них информации на следующие категории: — ПЗУ, программируемые однократно. Программируются при изготовлении и не позволяют изменять записанную в них

информацию. — Перепрограммируемые ПЗУ (ППЗУ). Позволяют перепрограммировать их многократно. Стирание хранящейся в ППЗУ информации осуществляется или засветкой полупроводникового кристалла ультрафиолетовым излучением, или электрическим сигналом повышенной мощности, для этого в корпусе микросхемы предусматривается специальное окно, закрытое кварцевым. В отличие от оперативного запоминающего устройства, внешние запоминающие устройства (ВЗУ) обладают большим объемом сохраняемой информации и являются энергонезависимыми. Наибольшее распространение в настоящее время получили дисковые ВЗУ,

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

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

может быть считана информация с одной дорожки. Общее время доступа к информации на диске складывается из времени перемещения головки на нужную дорожку и времени одного оборота диска. Каждая дорожка дополнительно разбивается на ряд участков — секторов. Сектор содержит минимальный блок информации, который может быть записан или считан с диска. Чтение и запись на диск осуществляется блоками, поэтому дисководы называют блочными устройствами. Дисководы магнитных дисков делятся на дисководы для сменных носителей (дискет) и дисководы жестких дисков (винчестеры), которые устанавливаются в системном блоке компьютера. Сменные магнитные диски изготавливаются на основе гибкого синтетического материала, на который с обеих сторон нанесен слой магнитного материала. Такие гибкие диски имеют объем хранимой информации 1,44—2,88 Мбайт. Все сменные носители на дисках, в том числе и рассмотренные далее оптические диски, характеризуются своим диаметром, или форм-фактором. Наибольшее распространение получили гибкие магнитные диски с форм-фактором 3,5 дюйма. Но существуют диски с форм-фактором 5,25 дюйма и 1,8 дюйма. Оптический компакт-диск {Compact Disk {CD)), который был предложен в 1982 г. фирмами Philips и Sony первоначально для записи звуковой информации, произвел переворот и в компьютерной технике, так как идеально подходил для записи цифровой информации больших объемов на сменном носителе. Объем информации, записанной на компакт-диске, составляет 600—700 Мбайт. К достоинствам компакт-диска можно отнести и его относительную дешевизну в массовом производстве, высокую надежность и долговечность,

нечувствительность к загрязнению и воздействию магнитных полей. Новый тип памяти получил название флэш-память (Flash- memory). Флэш-память представляет собой микросхему перепрограммируемого постоянного запоминающего устройства (ППЗУ) с неограниченным числом циклов перезаписи. В ППЗУ флэш-памяти использован новый принцип записи и считывания, отличный от того, который используется в известных схемах ППЗУ. Кристалл схемы флэш-памяти состоит из трех слоев. Средний слой, имеющий толщину порядка 1,5 нм, изготовлен из ферроэлектрического материала. Две крайние пластины представляют собой матрицу проводников для подачи напряжения на средний слой. При подаче напряжения, на пересечении проводников, возникает напряжение, достаточное для изменения направления магнитного момента атомов его кристаллической решетки, расположенной под местом пересечения проводников. Направление магнитного поля сохраняется и после снятия внешнего электрического поля. Изменение направления магнитного поля ферроэлектрика изменяет сопротивления этого участка слоя. При считывании, на один крайний слой подается напряжение, а на втором слое замеряется напряжение, прошедшее через ферроэлектрик, которое будет иметь разное значение для участков с разным направлением магнитного момента. Такой тип флэш-памяти получил название FRAM (ферроэлектрическая память с произвольным доступом). Видеотерминалы предназначены для оперативного отображения

текстовой и графической информации в целях визуального восприятия ее пользователем. Видеотерминал состоит из видеомонитора {дисплея) и видеоконтроллера. Для персональных компьютеров используются мониторы следующих типов: • на основе электроннолучевой трубки (ЭЛТ); • на основе жидкокристаллических индикаторов (ЖКИ, LCD — Liquid Crystal Display); • плазменные мониторы (PDP — Plasma Display Panels); • электролюминесцентные мониторы (FED — Field Emission Display); • самоизлучающие мониторы (LEP — Light Emission Plastics).

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

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

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

Базовое программное обеспечение Базовое ПО, или BIOS, представляет программа, которая

отвечает за управление всеми компонентами, установленными на материнской плате. Фактически BIOS является неотъемлемой составляющей системной платы и поэтому может быть отнесена к особой категории компьютерных компонентов, занимающих промежуточное положение между аппаратурой и программным обеспечением. Аббревиатура BIOS расшифровывается как Basic Input/Output System — базовая система ввода/вывода. Раньше в системе IBM PCосновным назначением BIOS была поддержка функций ввода-вывода за счет предоставления ОС интерфейса для взаимодействия с аппаратурой. В последнее время ее назначение и функции значительно расширились. Второй важной функцией BIOS является процедура тестирования (POST — Power On Self Test) всего установленного на материнской плате оборудования (за исключением дополнительных плат расширения), проводимая после каждого включения компьютера.

В процедуру тестирования входят: • проверка работоспособности системы управления электропитанием; • инициализация системных ресурсов и регистров микросхем; • тестирование оперативной памяти; • подключение клавиатуры; • тестирование портов; • инициализация контроллеров, определение и подключение жестких дисков. В процессе инициализации и тестирования оборудования BIOS сравнивает данные системной конфигурации с информацией, хранящейся в CMOS — специальной энергозависимой памяти, расположенной на системной плате. Хранение данных в CMOS поддерживается специальной батарейкой, а информация обновляется всякий раз при изменении каких-либо настроек BIOS. Именно эта память хранит последние сведения о системных компонентах, текущую дату и время, а также пароль на вход в BIOS или загрузку операционной системы (если он установлен). При выходе из строя, повреждении или удалении батарейки все данные в CMOS-памяти обнуляются. Третьей важной функцией, которую BIOS выполняет со времен IBM PC, является загрузка ОС. Современные BIOS позволяют загружать операционную систему не только с гибкого или жесткого диска, но и с приводов CD-ROM, ZIP, LS-120, SCSI-контроллеров. Определив тип устройства загрузки, BIOS приступает к поиску программы — загрузчика ОС на носителе или переадресует запрос на загрузку на BIOS другого устройства. Когда ответ получен, программа загрузки помещается в оперативную память, откуда и происходит

загрузка системной конфигурации и драйверов устройств операционной системы. С появлением процессоров Pentium BIOS стала выполнять еще одну функцию — управление потребляемой мощностью, а с появлением материнских плат форм-фактора (стандартизированный размер) ATX (Advanced Technology extended — расширенная продвинутая технология) — и функцию включения и выключения источника питания в соответствии со спецификацией ACPI (Advanced Configuration and Power Interface — продвинутый интерфейс конфигурирования и управления потребляемой мощностью). Существует также спецификация АРМ (Advanced Power Management — продвинутое

управление потребляемой мощностью). Отличие их состоит в том, что ACPI выполняется в основном средствами ОС, а АРМ — средствами BIOS. Фирм, занимающихся разработкой программного обеспечения для BIOS, очень мало. Из наиболее известных можно выделить три:

Award Software (Award BIOS), American Megatrends, Inc. (AMI BIOS) и Microid Research (MR BIOS). Но на подавляющем большинстве компьютеров сегодня применяются различные версии BIOS

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

Билет 18. Операционные системы. Операционная система предназначена для того, чтобы скрыть от

пользователя все эти сложности. Этот уровень АПС является программным обеспечением, управляющим всеми электронными компонентами компьютера, распределяющим его ресурсы, организующим вычислительный процесс и предоставляющим пользователю удобный интерфейс, избавляющий его от необходимости непосредственного общения с аппаратурой. Действие чтения файла в этом случае становится намного более простым, чем когда нужно заботиться о перемещении головок диска, ждать, пока они установятся на нужное место, и т. д. Над ОС в структуре аппаратно-программных средств компьютера расположены остальные системные программы. Здесь находятся интерпретатор команд, системы окон, компиляторы и редакторы кода. Компиляторы — это ПО, переводящее программу с языка программирования высокого уровня на машинный язык. После этого программа записывается в ОЗУ и затем выполняется. Интерпретаторы — это ПО, переводящее операторы программы на машинный язык по очереди и немедленно выполняющее их. Очень важно

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

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

работы с графикой, технических расчетов или создания системы управления базой данных. Операционные системы выполняют две основные функции — расширение возможностей машины и управление ее ресурсами. Как уже упоминалось, архитектура (система команд, организация памяти, ввод/вывод данных и структура шин) компьютера на уровне машинного языка неудобна для работы с программами, особенно при вводе/выводе данных. Так, процедура ввода/вывода данных с гибкого диска выполняется через микросхемы контроллера. Контроллер имеет 16 команд. Каждая задается передачей от 1 до 9 байт в регистр устройства. Это команды чтения и записи данных, перемещения головки диска, форматирования дорожек, инициализации, распознавания, установки в исходное положение и калибровки контроллера и приводов. Основные команды read и write (чтение и запись). Каждая из них требует 13 параметров, которые определяют адрес блока на диске, количество секторов на дорожке, физический режим записи, расстановку промежутков между секторами. Программист при работе с гибким диском должен также постоянно знать, включен двигатель или нет. Если двигатель выключен, его следует включить прежде, чем данные будут прочитаны или записаны. Двигатель не может оставаться включенным слишком долго, так как гибкий диск изнашивается. Поэтому программист вынужден выбирать между длинными задержками во время загрузки и изнашивающимися гибкими дисками. Отсюда ясно, что обыкновенный пользователь не захочет сталкиваться с такими трудностями во время работы с дискетой или жестким диском, процедуры управления которым еще сложнее. Ему нужны простые высокоуровневые операции. В случае работы с дисками типичной операцией является выбор файла из списка файлов, содержащихся на диске. Каждый файл может быть открыт для чтения или записи, прочитан или записан, а потом закрыт. А детали этих операций должны быть скрыты от пользователя. Программа, скрывающая истину об аппаратном обеспечении и представляющая простой список файлов, которые можно читать и записывать, называется операционной системой. Операционная система не только устраняет необходимость работы непосредственно с дисками и предоставляет простой, ориентированный на работу с файлами интерфейс, но и скрывает множество неприятной работы

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

Ввод-вывод. Одной из важнейших функций ОС является управление устройствами ввода-вывода компьютера. Операционная система дает этим устройствам команды, перехватывает прерывания и обрабатывает ошибки. Она должна обеспечить простой и удобный интерфейс между устройствами и остальной частью системы. Интерфейс должен быть одинаковым для всех устройств с целью достижения независимости от применяемой аппаратуры. Программное обеспечение ввода-вывода составляет существенную часть операционной системы. Устройства ввода-вывода можно разделить на две категории: блочные устройства и символьные устройства. Блочные устройства хранят информацию в виде блоков фиксированного размера, причем у каждого блока имеется свой адрес. Размеры блоков колеблются от 521 до 32 768 байт. Важное свойство блочного устройства состоит в

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

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

электронной частей. Механический компонент находится в самом устройстве. Электронный компонент устройства называется контроллером или адаптером. В современных компьютерах контроллеры встраиваются в материнскую плату или располагаются на самом устройстве ввода-вывода. Многие контроллеры способны управлять несколькими идентичными устройствами. Если интерфейс между контроллером и устройством является официальным стандартом ANSI, IEEE или ISO либо фактическим стандартом, то различные производители могут выпускать отдельно устройства и контроллеры, удовлетворяющие данному интерфейсу. Так производятся жесткие диски, соответствующие интерфейсу IDE (Integrated Drive Electronics — встроенный интерфейс накопителей) или SCSI (Small Computer System Interface — системный интерфейс малых компьютеров). Еще одним аспектом ПО ввода-вывода является буферизация. Часто данные, поступающие с устройства, не могут быть сохранены там, куда они направлены. Например, когда пакет приходит по сети, ОС не знает, куда его поместить, пока не будет проанализировано его содержимое. Буферизация предполагает копирование данных в больших количествах, что часто является основным фактором снижения производительности операций ввода-вывода. И последним понятием, которое связано с вводом-выводом, является понятие выделенных устройств и устройств коллективного использования. С некоторыми устройствами, такими как диски, может одновременно работать большое количество пользователей. При этом не должно возникать проблем при одновременном открытии на одном и том же диске нескольких файлов. Другие устройства, такие как

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

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

прерываниями ввод-вывод, при котором ЦП начинает передачу ввода-вывода для символа или слова, после чего переключается на другой процесс, пока прерывание от устройства не сообщит ему об окончании операции ввода-вывода. Третий способ заключается в использовании прямого доступа к памяти (DMA — Direct Memory Access), при котором отдельная микросхема управляет переносом целого блока данных и инициирует прерывание только после окончания операции переноса блока.

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

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

символов. В большинстве операционных систем определены два стандартных интерфейса, один из которых должны поддерживать все блочные драйверы, а второй — все символьные драйверы. Эти

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

1) обработку абстрактных запросов чтения и записи независимого от устройств и расположенного над ними программного обеспечения; 2) инициализацию устройства; 3) управление энергопотреблением устройства и регистрацией событий; 4) проверку входных параметров. Если они не удовлетворяют определенным критериям, драйвер возвращает ошибку. В противном случае драйвер преобразует абстрактные термины в конкретные. Например, дисковый драйвер может преобразовывать линейный номер блока в номера головки, дорожки и секторы; 5) проверку использования устройства в данный момент. Если устройство занято, запрос может быть поставлен в очередь. Если устройство свободно, проверяется его состояние. Возможно, требуется включить устройство или запустить двигатель, прежде чем начнется перенос данных. Как только устройство готово, может начинаться собственно управление устройством. Драйверам не разрешается обращаться к системным вызовам, но им часто бывает необходимо взаимодействовать с остальным ядром. Для этого драйверам можно вызывать некоторые системные процедуры, например, для выделения им аппаратно фиксированных страниц памяти в качестве буферов, а также для возвращения этих страниц обратно ядру. Кроме того, драйверы пользуются вызовами, управляющими диспетчером памяти, таймерами, контроллером DMA, контроллером прерываний и т. п.

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

Прикладное программное обеспечение. Прикладное программное обеспечение (ППО) составляют

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

Билет 20. Классификация прикладного программного обеспечения. Программы, обрабатывающие тексты. К ним относятся текстовые редакторы, текстовые процессоры. Граница между ними весьма условна. Текстовые редакторы (NotePad — разработка Microsoft), как будет показано ниже, способны выполнять основные функции редактирования: набор, внесение исправлений, сохранение, работа с фрагментами. Текстовые процессоры (Word — разработка Microsoft), кроме того, имеют возможности разнообразного оформления, а некоторые позволяют создавать документы, предназначенные для просмотра не в бумажном виде, а на компьютере (электронные документы). На уровне специального ППО, программы, обрабатывающие тексты, представлены специализированными текстовыми редакторами (MultiEdit — разработка American Cybernetic, TgX) и издательскими системами, которые автоматизируют процесс верстки

полиграфических изданий. Издательские системы отличаются расширенными средствами управления взаимодействия текста с параметрами страницы и графическими объектами, но имеют более слабые возможности по автоматизации ввода и редактирования текста. Их целесообразно применять к документам, которые предварительно обработаны в текстовых процессорах и графических редакторах. Электронные таблицы. Основное назначение электронных таблиц — обработка различных типов данных, представляющихся в табличной форме, например, планово-финансовые, бухгалтерские документы, небольшие инженерные расчеты (Excel — разработка Microsoft, Lotus 1-2-3 — разработка Lotus). Основное преимущество электронных таблиц, в сравнении с текстовыми процессорами (где тоже могут вестись таблицы, производиться небольшие вычисления и сортировка), в том, что содержание одних ячеек может меняться автоматически в соответствии с изменением содержания других. Иными словами, ячейки могут быть функционально зависимы. Кроме того, табличные процессоры имеют возможности ведения небольших баз данных и

визуализации данных в виде различных таблиц, диаграмм и графиков, т.е. средства ведения таблиц, средства табличных расчетов подкрепляются возможностями создания наглядных отчетов. Они находят широкое применение в бухгалтерском учете, анализе финансовых и торговых рынков, средствах обработки результатов научных и экономических экспериментов, т.е. в автоматизации регулярно повторяемых вычислений больших объемов числовых и текстовых данных, представляющих табличные структуры. Системы управления базами данных (СУБД). Программы этого класса (Access разработка Microsoft) позволяют работать с большими объемами структурированных данных — базами данных (как правило, это табличные структуры). В функции СУБД входит: описание данных, доступ к данным, поиск, отбор данных по определенным критериям. Большинство современных СУБД позволяют создавать небольшие программы обработки данных на встроенных языках, имеют оформительские возможности, позволяющие на основе собранных и обработанных данных создать отчет. Множество СУБД, также как и текстовые процессоры, имеют своих представителей и в ППО общего и в ППО специального назначения. На уровне ППО общего назначения — это настольные СУБД, на уровне специальном — это большие СУБД, составляющие основу информационных систем и позволяющие работать в компьютерных сетях. Графические системы. Это программы, предназначенные для работы с графическими изображениями. К ним относятся редакторы растровой и векторной графики, программы обработки трехмерной графики (ЗD-редакторы). Растровые редакторы для представления изображений используют растры (см. главу 1), т.е. совокупности точек, имеющих свой цвет и яркость. В них удобно обрабатывать фотографии и объекты, имеющие мягкие цветовые переходы. Основа векторного представления — линия (ее уравнение). Векторные редакторы удобны для работы с чертежами и рисованными картинками. Редакторы трехмерной графики используются для создания пространственных графических композиций, позволяют проследить взаимодействия трехмерных объектов между собой и трехмерных объектов с источником света. Интегрированные программные средства. Отдельные программы, являясь мощным средством решения круга прикладных задач, не

могут в полной мере удовлетворить пользователя. Например, выборку данных, предоставленную СУБД, бывает удобно обработать с помощью электронных таблиц, результаты, оформленные в виде наглядных таблиц, поместить в отчет, представляющий собой текстовый документ, который был составлен в текстовом процессоре. Для совместной работы нескольких программ требуется и унификация форматов обрабатываемых файлов. Такие программные пакеты называются интегрированными программными средствами. Наиболее распространенный продукт этого класса — пакет MS Office (разработка Microsoft), который кроме текстового процессора MS Word, табличного процессора MS Excel и СУБД MS Access интегрирует в себе такие офисные программные средства, как система разработки презентаций MS Power Point, электронный организатор MS Outlook и др. Программные средства для решения прикладных математических (статистических) задач позволяют производить математические расчеты: решение уравнений и систем уравнений и т.д., некоторые пакеты позволяют производить аналитические (символьные) вычисления: дифференцирование, интегрирование и т.д. Переводчики. Игры. Развлечения. Это класс популярных программ, не требующий больших комментариев. Переводчики обычно работают резидентно, т.е. в любом тексте на иностранном языке можно выделить переводимый фрагмент и после нажатия определенной комбинации клавиш предъявляется окно с переводом или возможные варианты перевода слова. Игры очень распространены, их создано огромное количество. Среди них можно выделить следующие типовые сценарии: игры на опережение (на мастерство), азартные игры, логические игры, обучающие игры. Развлечения — прикладные программы, позволяющие осуществлять просмотр слайдов, прослушивание звуковых файлов, видеофайлов. Решает более узкие задачи, а также задачи профессионального характера в различных предметных областях. Информационныесистемы (ИС), предоставляющие широкие возможности в: • управлении предприятием — это склад, документооборот офиса; • бухгалтерском учете — это системы, имеющие функции текстовых, табличных редакторов и СУБД. Предназначены для автоматизации подготовки начальных бухгалтерских документов предприятия и их учета, регулярных отчетов по итогам производственной, хозяйственной и финансовой деятельности в форме, приемлемой для налоговых органов, внебюджетных фондов и органов статистического учета; • анализе экономической и финансовой деятельности; их используют в банковских и биржевых структурах. Они позволяют контролировать и прогнозировать ситуацию на финансовых, торговых рынках и рынках сырья, выполнять анализ текущих событий, готовить отчеты. Экспертные системы представляют собой дальнейшее развитие систем управления базами данных. Они предназначены для анализа данных, хранящихся в базах знаний. В отличие от СУБД, позволяющих производить операции манипуляции данными, экспертные системы производят логический анализ данных, имеют функции самообучения. Системы автоматизированного проектирования — предназначены для автоматизации процессов конструирования, применяются в машиностроении, строительстве, архитектуре. Они позволяют создавать чертежную документацию, адаптированную в конкретной

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

Билет 21. Текстовые редакторы процессоры. Важным элементом в текстовых документах является выделение

смысловых фрагментов, таких как слово, предложение, абзац,

колонтитул, колонцифра, колонки, стили оформления. Кратко опишем их.

187

Символ — это отдельный знак (литера) в тексте, ему в

соответствие ставится код; для буквенных символов указывается

национальная принадлежность.

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

подчеркнуть важную мысль, высказываемую в тексте, слово или

несколько слов могут выделяться шрифтом.

Предложение — часть текста между двумя точками. Мелкие

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

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

Абзац — часть текста между двумя символами перевод строки (в

редакторах это соответствует нажатию клавиши Enter).

Если документ большой и предназначен для печати, то

используются средства структурирования текста: главы, параграфы.

Названия их могут выноситься в колонтитулы. Колонтитулы — это

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

вверху или внизу (например, на каждой левой странице книги в

колонтитуле может быть название главы, на каждой правой —

название параграфа). Номер страницы — это разновидность колонтитула,

называемая колонцифрой. В печатных документах вышеописанные

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

Примечание — пояснение к отдельному слову или предложению,

размещаемое в нижней части страницы.

Сноска — комментарий, содержащий ссылку на другой

литературный источник.

Кадр — рамка, служащая для размещения текста, рисунка,

таблицы; может обтекаться текстом.

Стиль — набор способов оформления фрагментов документа.

Раздел — отдельная часть документа, в пределах которой можно

установить поля, колонтитулы.

Научные тексты, как правило, сопровождаются таблицами,

формулами, диаграммами. Современные информационные технологии

предоставляют возможность создания текстового документа,

ориентированного не на печатную страницу, а на просмотр документа с

экрана монитора. Такие документы называются электронными, они

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

фотографий еще и различные анимационные картинки, звуковые

файлы, гиперссылки (т.е. ссылки на файл в собственном компьютере или

в Интернете). В связи с многообразием возможностей создания и оформления

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

программных продуктов по работе с этими документами. Условно их

можно разбить на текстовые редакторы и текстовые процессоры. Текстовые процессоры — это программы, предоставляющие более

широкий круг (в сравнении с редакторами) возможностей

форматирования (шрифты, таблицы, формулы), создания документов,

содержащих данные разных типов (вставка графических, звуковых дан-

ных), создания электронных документов. Типичным представителем

этой группы является текстовый процессор Word.

Существует еще одна отдельная группа текстовых

процессоров — это настольные издательские системы. В чем-то они похожи

на обычные текстовые процессоры, позволяют набирать и

форматировать документ, но, как правило, используются для верстки.

Издательские системы имеют широкий спектр читаемых форматов, т.е.

возможность работать с файлами, созданными во многих других

программах: текстовых, графических, чертежных. Текст легко можно

вставить внутрь любого рисунка, и рисунок можно вставить в текст;

кроме того, имеются средства для рисования простых фигур внутри

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

с цветовой гаммой, в полиграфии это называют разложением цвета

на отдельные составляющие.

Текстовый процессор Word. Текстовый процессор Word сейчас один из самых популярных

программных продуктов в мире. Его последние версии

представляют мощный программный конгломерат, объединяющий около

тысячи различных возможностей по работе с текстовыми и

электронными документами. Ранние версии (а именно — до Word 5.0) работали

под управлением операционной системы MS-DOS. Начиная с

версии Word6.0 был воплощен принцип эквивалентности экранного и

печатного изображения WYSIWYG.

Седьмая версия (она же Word 95) вышла уже не как

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

пакета программ Microsoft Office офисного назначения. Восьмая версия

(Word 8.0 или 97) вышла в составе пакета Microsoft Office 97, была

ориентирована на использование кодировки Unicode, там же

появились средства по работе с электронными документами.

Версия Word 9.0 или Word 2000 (она рассматривается в

настоящей книге) входит в состав пакета Microsoft Office 2000. В ней

расширены возможности работы в сети, т.е. появились средства работы

группы разработчиков, работающих в корпоративной компьютерной

сети над одним проектом. В Word любой документ создается на основе некоторого

образца, называемого шаблоном. Шаблон — это именованная совокупность

параметров (страниц, абзацев, шрифтов и д.р.) для создания

документа, сохраняемая в библиотеке шаблонов. Например, при

создании документа по умолчанию (пиктограмма Q на панели

инструментов СТАНДАРТНАЯ) автоматически применяется шаблон

ОБЫЧНЫЙ, который предполагает: шрифтПтез New Roman,

размером 12 пунктов, выравнивание слева, одинарный интервал между

строками, запрет висячих строк. Но если создавать документ с

помощью меню ФАЙЛ ► СОЗДАТЬ... то откроется многостраничное

диалоговое окно «Создание документа», представляющее библиотеку

шаблонов. Там хранятся шаблоны различных документов, записок,

отчетов, факсов, WEB-страниц и др. Причем отдельные виды

шаблонов имеют значок с волшебной палочкой — это Мастера. Текстовый процессор Word, как известно, является многооконным

приложением, что создает удобства при одновременной работе с

несколькими документами, например, при создании документа на

основе нескольких источников. Для этого Word (как и все приложения

Windows) использует временную область памяти — Буфер Обмена.

В него помещаются перемещаемые и копируемые данные. Обмен

данными можно производить между разными приложениями

Windows, и эти данные могут быть в текстовом, графическом или

смешанном виде.

Билет 22. Электронные таблицы. Решение ряда экономических задач часто приводит к обработке

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

Применение для таких задач средств алгоритмических языков

высокого уровня оказалось во многих случаях не эффективно. Текстовые

процессоры дают возможность ведения и форматирования таблиц, но

они плохо приспособлены для вычислений. Вышеуказанные

причины вызвали появление программ, называемых электронными

таблицами, объединяющими в себе возможности:

• текстовых процессоров по созданию и форматированию таблиц;

• математической обработки табличных данных;

• визуализации результатов в форме таблиц, диаграмм, графиков.

История развития программ обработки электронных таблиц

насчитывает около двадцати лет, налицо огромный прогресс в этой

области программного обеспечения. Примерами программ

электронных таблиц являются Lotus 1-2-3 (Lotus), Microsoft Excel. В настоящее

время наибольшее распространение получил программный комплекс

Microsoft Excel. Далее мы подробно рассмотрим его. Современные

программные продукты этого вида имеют:

• калькуляционный (вычислительный) модуль, с помощью

которого происходит обработка данных (текстовых или числовых) в

таблицах;

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

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

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

типов;

• модуль базы данных, реализующий доступ к внешним базам

данных.

Электронные таблицы можно использовать для решения задач

учета, составления бланков, планирования производства, расчета

налогов и заработной платы, учета кадров и др. Благодаря мощным

математическим функциям, имеющимся в электронных таблицах, с

их помощью можно решать множество задач в области естественных

и технических наук.

Общие сведения о табличном процессоре Excel. Документом Excel является рабочая книга — это файл с произвольным именем и расширением .xls. Рабочая книга состоит из

рабочих листов (в количестве от 1 до 256, каждый имеет свое имя). Один

из рабочих листов является активным, т.е. в настоящий момент с ним

работает пользователь. Рабочий лист представляет собой таблицу, в

которой может содержаться до 65536 строк и до 256 столбцов.

Строки нумеруются числами (от 1 до 65536), столбцы — латинскими

буквами А, В, С, ..., Y, Z, АА, АВ, АС, .., AZ, ВА, ..., IV. Ячейки. На пересечении столбцов и строк находятся ячейки.

Каждая ячейка имеет адрес, состоящий из указания столбца и строки, на

пересечении которых она находится, например Al, B5, АВ234.

Адреса ячеек используются при обращении к их содержимому. Одна из

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

нижнем углу которой находится маркер заполнения (черный

квадратик). Ввод данных производится в активную ячейку. Перемещение

активной ячейки осуществляется клавишами управления курсором:

PageUp, Page Down, Home, End или щелчком мыши.

Диапазоны. Иногда в Excel требуется работать не с одной

ячейкой, а с группой ячеек в виде прямоугольника, такая группа

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

выделить. Выделяется диапазон протягиванием мышью по диагонали

диапазона. Выделенный диапазон на рабочем поле показывается

инверсным цветом, вокруг него располагается рамка с маркером

заполнения, как на активной ячейке.

Элементы управления. Окно Excel (рис 4.8) содержит заголовок,

строку меню, панели инструментов «Стандартная» и

«Форматирование», рабочее поле, строку состояния. Назначение этих элементов

аналогично назначению таких же элементов Word. Панели инструментов Excel можно настраивать: добавлять и

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

инструментов, а также отображать, скрывать и перемещать

существующие панели инструментов, совершенно аналогично Word. Работа с листами в Excel. Принцип работы с листами

напоминает обычную работу с деловыми блокнотами в офисе. В каждом

рабочем блокноте можно поместить всю информацию,

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

наглядность рабочих документов.

Корешки отдельных рабочих листов одной рабочей книги

расположены в нижней части экрана (именной указатель листов), по

умолчанию они называются «Лист 1», «Лист 2», «Лист 3»; щелкая по

ним мышью, можно переходить с одного листа на другой. Корешок

активного рабочего листа маркируется белым цветом.

Создание таблиц. Ввод данных в ячейку и в диапазон. В любой ячейке Excel может

содержаться текстовая строка, число или формула. Тип данного

определяется автоматически при вводе. Если ввод начинается со знака

равенства, то процессором это понимается как формула. Далее мы

подробно опишем правила построения формул, сейчас же заметим,

что формулы содержат обычные арифметические операторы,

например, + (плюс), — (минус), • (умножить), / (разделить). Кроме того,

они могут использовать специально встроенные функции, которые

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

щелчком по ячейке. При этом она переводит ее в режим

редактирования содержимого, т.е. в поле ячейки появляется курсор,

изменения вносятся с клавиатуры, как в текстовых редакторах. Завершаем

редактирование нажатием клавиши Enter или щелчком на

пиктограмме в строке формул. Автозаполнение. Если необходимо продублировать какое-либо

данное (числовое или текстовое) в ряд смежных ячеек в строке или

столбце, то можно ввести одно данное, затем перетащить маркер

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

произойдет автоматическое копирование содержимого ячейки.

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

но похожими данными, например, «1 блок», «2 блок», «3 блок» или

«ряд 1», «ряд 2», «ряд 3». Делается это также с помощью маркера

заполнения, т.е. в ячейку вводится первое данное («1 блок»), затем

ячейка протягивается за маркер заполнения.

Копирование ячеек, содержащих данные. Чтобы скопировать

содержимое ячейки или диапазона, нужно активизировать ячейку или

выделить диапазон, вызвать меню ПРАВКА ► КОПИРОВАТЬ или

правой кнопкой мыши вызвать контекстное меню пункт КОПИРОВАТЬ,

активизировать ячейку, являющуюся началом диапазона, куда

должны быть скопированы данные, меню ПРАВКА ► ВСТАВИТЬ или

контекстное меню пункт ВСТАВИТЬ, затем нажать клавишу [Enter].

Форматирование ячеек. Форматирование в Excel предполагает ряд

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

выравнивания, границ, заливки.

Форматируемые ячейки или диапазон должны быть выделены,

затем меню ФОРМАТ ► ЯЧЕЙКИ вызывает диалоговое окно

«Формат ячейки», имеющее шесть вкладок: ЧИСЛО, ВЫРАВНИВАНИЕ,

ШРИФТ, ГРАНИЦА, ВИД, ЗАЩИТА устанавливаются необходимые

параметры.

Вкладка ЧИСЛО позволяет установить формат ячейки как

числовой. В поле «Числовые форматы» приведены различные типы

форматов, которые выбираются щелчком мыши или с помощью клавиш

управления курсором. Опишем числовые форматы.

«Числовой» — устанавливает число знаков после запятой, при

необходимости разделитель групп разрядов (три разряда — пробел,

начиная от запятой) удобен для представления чисел с

фиксированной запятой, применимы все арифметические операции.

«Денежный» — как числовой, но число сопровождается знаком

валюты р., $, €, ¥ и т.д. С точки зрения общего формата запись в

ячейке 12,34$ является текстом, но если формат ячейки объявлен как

денежный, то это число, с которым могут производиться

арифметические действия. Удобен формат для денежных расчетов.

«Финансовый» — то же, что и денежный, но выравнивание в

столбцах происходит по запятой; удобен тем, что длина записи

числа отражает ее величину, это снижает вероятность ошибки при

просмотре документа.

«Дата» — позволяет отобразить дату по одному из шаблонов. Дата

есть число дней, прошедших от 1-го января 1900 г. С датой можно

работать как с числом, т.е. если в ячейке А1 содержится дата 01.05.04,

а в ячейке В1 мы наберем формулу = А1 + 1, то результат

получится 02.05.04, но если ячейку А1 переформатировать в числовой

формат, то получится 38108, т.е. количество дней, прошедших с 1-го

января 1900 г.

«Время» — служит для отображения времени по одному из

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

время — это доля суток от 0 часов, т.е. число 0,25 в формате «дата-

время» даст 6 часов утра, 0,5 — 12 часов.

«Процентный» — число в ячейке умножается на 100 и

добавляется символ %.

«Дробный» — число представляется в виде обыкновенной дроби

(приближенно) по шаблону

«Экспоненциальный» — число представляется в виде мантиссы

и порядка; удобен для приближенных вычислений с плавающей

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

«Текстовый» — содержимое, каким бы оно ни было,

воспринимается процессором как текст. Арифметические операции

недопустимы.

«Дополнительный» — то же, что и текстовый, но текст

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

Вкладка ВЫРАВНИВАНИЕ. Некоторые команды этой вкладки

дублируются на панели инструментов «Форматирование», техника

аналогична Word.

Вкладка ШРИФТ аналогична диалоговым окнам выбора

шрифта Word.

Вкладка ГРАНИЦА — позволяет установить толщину, форму, цвет

линий границ любых ячеек. Сначала устанавливается «тип линии» и

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

их применить.

Вкладка ВИД — определяет цвет и узор заливки ячеек.

Вкладка ЗАЩИТА — позволяет снять защиту с выделенного

диапазона. Обычно это делается перед тем как защищать весь лист, т.е.

если на рабочем листе сделаны расчеты, то с исходных данных

защиту снимают, а весь лист с формулами и промежуточными

результатами защищается (меню СЕРВИС ► ЗАЩИТА ► ЗАЩИТИТЬ

ЛИСТ...). Работа с формулами, диаграммами, списками. Ввод формул. Возможность работы с формулами и встроенными функциями является важнейшей особенностью электронных таблиц. Логика использования табличного процессора требует применять формулы везде, где значения одних ячеек зависят от значений других, так как если значения ячеек с исходными данными изменяются, то автоматически изменяются значения всех зависимых ячеек. Например, пусть в ячейке А1 содержится число 10, в ячейке В1

число 20, в ячейку С1 введем формулу =А1+В1+2. После

завершения ввода (нажатие Enter) в ячейке С1 появится результат сложения

чисел, содержащихся в ячейках А1 и В1, увеличенный на 2, т.е. 32.

Если изменить число, хранящееся в ячейке А1, например заменить

на 20, то наличие формулы в ячейке С1 автоматически изменит ее

значение на 42.

Ссылки А1 и В1 в формуле можно делать, непосредственно

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

щелчок по ячейке А1 (в формуле появится ссылка А1), набрать знак

+ , сделать щелчок по В1, снова + , набрать 2. Автозаполнение ячеек формулами. Активизируем ячейку С1 из предыдущего примера и протянем ее за маркер заполнения вниз по

столбцу. В ячейку С2 автоматически введется формула =А2+В2+2, в

СЗ =АЗ+ВЗ+2 и т.д. При протягивании по столбцу номер столбца

увеличивается. Вернемся в ячейку С1 и протянем ее по строке,

получим: в ячейке D1 =В1+С1 , в El =C1+D1 и т.д., при

протягивании по строке номер строки увеличивается. Таким образом, при

протягивании формулы ссылки А1 и В1 модифицируются, такие ссылки

называются относительными. Чтобы ссылки не модифицировались

при протягивании по строке, ее следует записать как С$1; запретить

модификацию по столбцу можно, применив ссылку $С1. Ссылка

будет неизменна при любом протягивании в виде $С$1. Такие ссылки

называются абсолютными. Ссылки на другие листы и книги. Для обращения к значению

ячейки, расположенной на другом рабочем листе, нужно указать имя

этого листа вместе с адресом соответствующей ячейки. Например,

находясь на листе 1, можно ввести в ячейку А1 формулу =ЛИСТ4!ВЗ+1 для

обращения к ячейке ВЗ на рабочем листе ЛИСТ4. Если в названии

листа есть пробелы, то оно (название) заключается в кавычки.

Связывание двух ячеек можно упростить, для чего на листе 1 в ячейке А1

набрать знак = , затем через корешок обратиться к листу 4 и щелкнуть

по ячейке ВЗ.

Копирование ячеек, содержащих формулы. Техника копирования,

перемещения, удаления ячеек, содержащих формулы, такая же, как

и ячеек, содержащих данные (см. 4.2.2.) Но если в формуле

содержатся относительные ссылки, то при копировании и перемещении

они модифицируются. Рассмотрим на примере. Пусть в ячейке СЗ

содержится формула = A1+$B1+C$1+$D$1. Перенесем или

скопируем ее в ячейку Е6, т.е. на два столбца правей и на три строки ниже.

Тогда все относительные адреса формулы в ячейке Е6 увеличатся на

два по столбцу, на три по строке. В результате в ячейке Е6 получим

формулу =C4+$B4+E$1+$D$1. Работа с функциями. Excel позволяет использовать в формулах

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

функций. Функции объединяют несколько вычислительных операций для

решения определенной задачи, имеют один или несколько

аргументов. В качестве аргументов функций выступают числовые значения

и/или адреса ячеек. Диаграмма — это представление данных таблицы в графическом

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

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

полос, столбиков, секторов и в другой форме. Группы элементов

данных, отражающих содержимое ячеек одной строки или столбца на

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

помощью Мастера диаграмм. Вызывается через меню ВСТАВКА ►

ДИАГРАММА или нажатием кнопки на панели инструментов

«Стандартная». Мастер имеет четыре шага, где выясняются вопросы о виде диаграммы, особенностях оформления и размещения, затем

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

упорядоченными наборами данных, имеющих одинаковую структуру

Например, списком является телефонный справочник, в котором в

большом количестве строк приведены фамилии абонентов и номера их

телефонов. Каждый элемент списка занимает одну строку, в которой

данные распределяются по нескольким полям (столбцам). В

табличном процессоре имеются операции для их обработки (сортировка,

фильтрация). В первой строке рабочего листа обычно помещаются названия

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

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

Для быстрого заполнения таблицы можно обратиться к меню

ДАННЫЕ ► ФОРМА, которое откроет диалоговое окно для ввода

данных, в котором каждому полю списка соответствует поле ввода.

Как только все поля ввода будут заполнены данными, щелкнем по

командной кнопке ДОБАВИТЬ. Затем можно начать ввод

следующего элемента данных и т.д., пока не будут введены все элементы

списка. В заключение закроем окно щелчком по командной кнопке

ЗАКРЫТЬ. Каждый новый список следует создавать на отдельном

рабочем листе.

Билет 23. Системы компьютерной графики. Системы компьютерной графики — это отдельные программы и аппаратно-программные комплексы, создающие и обрабатывающие

различные изображения на экране монитора. Как уже было

сказано, все изображения, создаваемые с помощью компьютеров, можно

разделить на два класса — растровые и векторные.

В растровой графике изображение какого-либо графического

объекта описывается конкретным расположением и цветом точек

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

создается, как в мозаике. Чем больше точек и чем они мельче, тем

визуально качественнее изображение (и больше размер файла). Одна и

та же картинка может быть представлена с лучшим или худшим

качеством в соответствии с разрешением, т.е. количеством точек на

единицу длины. Разрешение обычно измеряется в точках на дюйм —

dpi или в пикселях на дюйм — ppi.При редактировании растровых графических объектов

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

устройства с более низким разрешением, чем разрешение самого

изображения, понизит его качество. В векторной графике изображения описываются с помощью

кривых линий, называемых векторами (каждая кривая аппроксимируется

многочленом третьего порядка, т.е. массивом коэффициентов —

многомерным вектором), а также параметров, описывающих их цвета и

расположение. Например, изображение какой-либо фигуры на

экране описывается точками, через которые проходит линия контура

фигуры. Цвет фигуры задается цветом контура и цветом области

внутри этого контура. При редактировании элементов векторной графики можно

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

объектов, можно переносить их, менять размер, форму (это делается

математическими преобразованиями), цвет, но это не отразится на

качестве их визуального представления. Векторная графика не

зависит от разрешения, т.е. может быть показана в разнообразных

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

Растровый редактор Paint. Paint — простейший графический редактор (разработчик

Microsoft), предназначенный для создания и редактирования растровых

графических изображений в основном формате Windows (BMP) и

форматах Интернета (GIF и JPEG). Он приемлем для создания

простейших графических иллюстраций, в основном схем, диаграмм и

графиков, которые можно встраивать в текстовые документы. В Paint

можно создавать рекламу, буклеты, объявления, приглашения,

поздравления и др.

242

Основные возможности Paint:

• Проведение прямых и кривых линий различной толщины и

цвета.

• Использование кистей различной формы, ширины и цвета.

• Построение различных фигур — прямоугольников,

многоугольников, овалов, эллипсов — закрашенных и незакрашенных.

• Помещение текста на рисунок.

• Использование преобразований — поворотов, отражений,

растяжений и наклона. Начало работы с Paint. Графический редактор Paint встроен в

операционную систему Windows. Для запуска его применяется

следующий способ: кнопка ПУСК ► ПРОГРАММЫ ► СТАНДАРТНЫЕ

► PAINT Для окончания работы с Paint можно использовать

пункты меню ФАЙЛ, и далее ВЫХОД.

Окно графического редактора Paint имеет стандартный вид (рис.

4.18). В меню редактора входят команды ФАЙЛ, ПРАВКА, ВИД,

РИСУНОК, ПАЛИТРА. Процесс рисования. Для того чтобы рисовать, закрашивать,

менять цвет, делать надписи, стирать и т.д., в Paint необходимо

выбрать нужный инструмент. Для этого используется палитра

инструментов. Необходимо щелкнуть на кнопке с нужным инструментом.

После этого выбранная кнопка будет находиться в нажатом

состоянии. Курсор мыши также изменит свою форму. Перемещение

курсора по рабочей области при нажатой левой кнопке мыши приводит

к использованию инструмента и изменению рисунка. При отжатой

кнопке мыши происходит простое перемещение курсора без

изменения рисунка. Редактирование рисунка. Инструмент «Выделение произвольной

области» позволяет выделить фрагмент — произвольную область

рисунка, ограниченную построенной линией. Для этого требуется

активизировать инструмент, а затем при нажатой левой кнопке

нарисовать замкнутую область произвольной формы. Инструмент

«выделение» позволяет выделить произвольную прямоугольную

область. Преобразование рисунка. С помощью команд подменю РИСУНОК

можно отражать, растягивать, сжимать, увеличивать или наклонять

выделенные фрагменты рисунка. С помощью команды ОТРАЗИТЬ/

ПОВЕРНУТЬ можно отразить выделенный фрагмент относительно

вертикальной или горизонтальной оси. Для этого в диалоговом окне

есть переключатели «Отразить слева направо», «Отразить сверху

вниз» и «Повернуть на угол 90, 180 и 270 градусов». Предварительный просмотр, печать. Полученный рисунок можно напечатать на принтере через подменю ФАЙЛ ► ПЕЧАТЬ. Из-за

различий между разрешающей способностью экрана и принтера,

один и тот же рисунок на экране и на бумаге может выглядеть по-

разному. Чтобы заранее проверить, как будет выглядеть рисунок в

отпечатанном виде, используют подменю ФАЙЛ ►

ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР. Далее с помощью кнопок «Крупнее» и

«Мельче» можно подобрать подходящий масштаб изображения.

Используя подменю ФАЙЛ ► МАКЕТ СТРАНИЦЫ, можно изменить

размер страницы рисунка и используемый принтер.

Билет 24. Элементы языка Си. Язык программирования С (Си) был разработан в лаборатории

Bell для реализации операционной системы UNIX в начале 70-х гг.

и не рассматривался как массовый. Он планировался для замены

Ассемблера, чтобы иметь возможность создавать столь же

эффективные и компактные программы, и в то же время не зависеть от

конкретного типа процессора. По набору управляющих конструкций и

структур данных С имеет возможности, присущие высокоуровневым

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

обращения к функциональным узлам компьютера. Синтаксис языка С

позволяет создавать лаконичный программный код. Одна из

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

состоит в том, что различия между выражениями и операторами

сглаживаются. Например, выражения, являющиеся операторами

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

Использование подпрограмм основано на понятии функции, которая

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

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

программы. Отсутствие строгой типизации данных, возможность в

одном выражении сочетать несколько действий делает этот язык

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

возможности, но не способствует надежности создаваемых программ.

Язык С популярен и широко используется профессиональными

программистами. В настоящее время он реализован для большинства

компьютерных платформ. Синтаксис языков C++ и Java практически полностью

совпадает. Принципиальным различием является то, что язык C++

компилируемый в машинный код, a Java — в платформо-независимый байт-

код (каждая команда занимает один байт), этот байт-код может

выполняться с помощью интерпретатора — виртуальной

Java-машины (Java Virtual Machine), версии которой созданы сегодня для

любых платформ. С точки зрения возможностей

объектно-ориентируемых средств, Java имеет ряд преимуществ перед C++. Язык Java

имеет более гибкую и мощную систему инкапсуляции информации.

Механизм наследования, реализованный в Java, обязывает к более

строгому подходу к программированию, что способствует

надежности и читабельности кода. Язык C++ обладает сложной неадекватной

и трудной для понимания системой наследования. Возможности

динамического связывания объектов одинаково хорошо представлены в обоих языках, но синтаксическая избыточность C++ и здесь

принуждает к выбору языка Java. Сегодня Java по популярности

занимает второе место в мире после Бейсика.

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

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

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

Примеры описаний:

char a,b; /* Переменные а и b имеют тип

char */ int х; /* Переменная х - типа int

*/ char sym; /" Описаны переменные sym типа char;

*/ int count.num; /* num и count типа int */

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

Примеры: char backch = '\0';

int i = 0;

Рассмотрим основные типы в языке Си.

int - целый ("integer"). Значения этого типа - целые числа из некоторого ограниченного диапазона (обычно от- 32768 до 32767). Диапазон определяется размером ячейки для типа и зависит от конкретного компьютера. Кроме того, имеются служебные слова, которые можно использовать с типом int: short int («short integer» - «короткое целое»), unsigned int («unsigned integer» - «целое без знака»), long int («длинное целое»), которые сокращают или, наоборот, расширяют диапазон представления чисел.

char - символьный («character»). Допустимое значение для этого типа — один символ (не путать с текстом!). Символ записывается в апострофах.

Примеры: 'х"2"?'

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

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

float - вещественный (с плавающей точкой). Значения этого типа - числа, но, в отличии от char и int, не обязательно целые.

Примеры:

12.87 -316.12 -3.345е5 12.345e-15

double - вещественные числа двойной точности. Этот тип аналогичен типу float, но имеет значительно больший диапазон значений (например, для системы программирования Borland-C от 1.7Е-308 до 1.7Е+308 вместо диапазона от 3.4Е-38 до 3.4Е+38 для типа float). Однако увеличение диапазона и точности представления чисел ведет к снижению скорости выполнения программ и неэкономному использованию оперативной памяти компьютера.

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

Необходимо отметить, что последним элементом массива является символ \0. Это «нуль-символ», и в языке Си он используется для того, чтобы отмечать конец строки. Нуль-символ не цифра 0; он не выводится на печать и в таблице кодов ASCII имеет номер 0. Наличие нуль-символа означает, что количество ячеек массива должно быть. по крайней мере, на одну больше, чем число символов, которые необходимо размещать в памяти.

Приведем пример использования строк.

Программа 84

# include<stdio.h> main()

{

char string[31] ;

scanf("%s",string) ;

printf("%s",string);

}

В этом примере описан массив из 31 ячейки памяти, в 30 из которых можно поместить один элемент типа char. Он вводится при вызове функции scanf("%s",string); "&"отсутствует при указании массива символов.

Указатели. Указатель - некоторое символическое представление адреса ячейки памяти, отведенной для переменной.

Например, &name - указатель на переменную name;

Здесь & - операция получения адреса. Фактический адрес - это число, а символическое представление адреса &name является константой типа «указатель».

В языке Си имеются и переменные типа указатель. Точно так же, как значением переменной типа char является символ, а значением переменной типа int - целое число, значением переменной типа указатель служит адрес некоторой величины.

Если мы дадим указателю имя ptr, то сможем написать такой оператор:

ptr = &name;/* присваивает адрес name переменной ptr */

Мы говорим в этом случае, что prt «указатель на» name. Различие между двумя формами записи: ptr и &name - в том, что prt - это переменная, в то время как &name - константа. В случае необходимости можно сделать так, чтобы переменная ptr указывала на какой-нибудь другой объект:

ptr = &bah; /* ptr указывает на bah, а не на name */

Теперь значением переменной prt является адрес переменной bah. Предположим, мы знаем, что в переменной ptr содержится ссылка на переменную bah. Тогда для доступа к значению этой переменной можно воспользоваться операцией «косвенной адресации» * :

val = *ptr; /* определение значения, на которое указывает ptr */ Последние два оператора, взятые вместе, эквивалентны следующему:

val = bah;

Итак, когда за знаком & следует имя переменной, результатом операции является адрес указанной переменной; &nurse дает адрес переменной nurse; когда за знаком * следует указатель на переменную, результатом операции является величина, помещенная в ячейку памяти с указанным адресом.

Пример: nurse = 22;

ptr = &nuse; /* указатель на nurse */

val = *ptr;

Результат- присваивание значения 22 переменной val.

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

Примеры правильного описания указателей: int *pi; char *pc;

Спецификация типа задает тип переменной, на которую ссылается указатель, а символ * определяет саму переменную как указатель. Описание вида int *pi; говорит, что pi - это указатель и что *pi - величина типа int.

В языке Си предусмотрена возможность определения имен типов данных. Любому типу данных с помощью определения typedef можно присвоить имя и использовать это имя в дальнейшем при описании объектов.

Формат: typedef <старый тип> <новый тип> Пример: typedef long LARGE; /* определяется тип large, эквивалентный типу long */

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

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

Операции. Язык Си отличается большим разнообразием операций (более 40). Здесь мы рассмотрим лишь основные из них, табл. 3.3.

Арифметические операции. К ним относят

• сложение(+),

• вычитание (бинарное) (-),

• умножение (*),

• деление (/),

• остаток от деления нацело (%),

• вычитание (унарное) (-) .

В языке Си принято правило: если делимое и делитель имеют тип int, то деление производится нацело, т е. дробная часть результата отбрасывается.

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

Программа 85

#include<stdio.h>

main()

(

int s;

5 = -3 + 4 * 5 - 6; printf("%d\n",s);

s = -3 + 4%5 - 6; printf("%d\n",s);

s = -3 * 4% - 6/5; printf("%d\n",s);

s= (7 + 6)%5/2; printf("%d\n",s);

}

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

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

• переменные типа char интерпретируются как целые без знака (unsigned);

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

• если один из операндов имеет тип int, то другой (другие) также преобразуется к типу int и результат имеет тип int;

• если один из операндов имеет тип char, то другой (другие) также преобразуется к типу char и результат имеет тип char;

• во время операции присваивания значение правой части преобразуется к типу левой части, который и становится типом результата;

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

Например: z=(int)x+(int)y;

Билет 26. Константы в Си. Перечислим основные символы языка Си, образующие его алфавит:

1) строчные латинские буквы

abcdefghijklmnopqrstuvwxyz

2) прописные латинские буквы

ABCDEFGHIJKLMNOPQRSTUVWXYZ

3) арабские цифры

0123456789

4) специальные символы

* звездочка

_ подчеркивание

+ плюс

( круглая скобка левая

  • минус

) круглая скобка правая

/ дробная черта

< меньше

\ обратная дробная черта

> больше

% процент

^ стрелка вверх

! восклицательный знак

[ квадратная скобка левая

= знак равенства ] квадратная скобка правая

? вопросительный знак

# номер

: двоеточие

{ фигурная скобка левая

; точка с запятой

} фигурная скобка правая

& коммерческое ''и"(амперсанд)

| вертикальная черта

' апостроф

~ черта сверху (тильда)

. точка

" кавычки

, запятая пробел

5) управляющие символы

\t горизонтальная табуляция

\n перевод строки и возврат каретки

\r возврат каретки

\f перевод страницы

\b возврат на шаг (на один символ)

Множество основных символов расширено буквами русского алфавита (строчными и прописными). Они могут быть использованы только в комментариях, символьных константах и строках.

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

Идентификатор - это последовательность латинских букв, цифр и символа ''_", начинающаяся с буквы или символа "_".

Прописные и строчные латинские буквы считаются различными! Например, у и Y - это разные имена. Рекомендуется в именах переменных использовать только строчные буквы.

Примеры правильных идентификаторов:

schetchik get_line a 12 Parami _ab

Примеры неправильных идентификаторов:

%ab 12abc -x вася

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

Примеры.

I* Целые десятичные литералы */

57 32000001 /* длинный*/ 2е3 5ЕЗ

/* Вещественные десятичные литералы */

0.00 5.37.1е-3 6.34Е-2 .21е+56

Лидирующий нуль (0) указывает на числовой восьмеричный литерал:

030 /* Десятичное 24 */

040 /* Десятичное 32 - символ пробел */

Лидирующий 0х указывает на числовой шестнадцатиричный литерал:

0х22 /* Десятичное 34 - символ "*/

0х6С /* Десятичное 108 - символ i */

Символьный литерал - это один символ, заключенный в одинарные кавычки:

-'c"*"q'-

"\007" /* Звонок, восьмеричный код после \ */

"\х0а" /* Перевод на новую строку, шестнадцатиричный код после \х */

Последовательность символов, заключенных в двойные кавычки, называется строковым литералом. Примеры:

"STRING\n"

"" /* Строчный литерал состоит из одного символа "\0" */

"Очень,"\

"очень,"\

"очень длинный строковый литерал!"

Следующие зарезервированные служебные (ключевые) слова языка запрещено использовать в качестве идентификаторов.

auto - автоматический;

default - по умолчанию;

break -завершить;

do -выполнить;

case -вариант;

double -двойной точности;

char -символьный;

else -иначе;

continue - продолжить;

entry - вход;

extern -внешний;

short -короткий;

for - для;

sizeof - размер;

float -плавающее;

static -статический;

goto - перейти;

struct - структура;

if — если;

switch - переключатель;

int - целое; '

typedef - определение типа;

long -длинное;

union -объединение;

register -регистровый;

unsigned -без знака;

return - возврат;

while - пока.

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

Тип_функцни Имя (<список аргументов>)

<описания аргументов>

{

<описания>

<операторы>

}

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

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

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

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

Программа 97

#include<stdio.h>

main ()

(

int i,print() ;

for (i=l;i<=15;i++) print();

{

print() /* вызываемая функция без аргументов */)

printf ("Простая функция без аргументов\n»);

}

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

Следует различать формальные аргументы, используемые при описании функций, и фактические, задаваемые при вызове функций. Формальный аргумент - переменная в вызываемой программе, а фактический аргумент - конкретное значение, присвоенное этой переменной вызывающей программой. Фактический аргумент может быть константой, переменной или даже более сложным выражением. Независимо от типа фактического аргумента он вначале вычисляется, а затем его величина (в данном случае некоторое целое число) передается функции (см. программу 97). Можно задавать список аргументов, разделенных запятыми. Пример: программа 98, которая находит числа х, у, z, принадлежащие отрезку [1;20] и удовлетворяющие условию x^2 = у^2 + z^2.

Программа 98

#include<stdio.h>

main()

(

int х, у, z, zero() ;

char p, q, ch() ;

x=2; y=45; z=0;

q=’o’;

printf("х» "); zero(x);

printf("x+y+(x+y)^z= "); zero(x+y+(x+y)^z) ;

printf("q= "); ch(q);

}

int zero(u)

int u;

(

printf("%d\n",u);

)

char ch(u)

char u;

{

printf("%c\n",u);

)

Результат работы программы:

x=2

x+y+(x+y)^z= 94

q=0

Программа 99

#include<stdio.h>

main()

(

int x,y,z;

int zero();

printf("Следующие величины могут быть сторонами прямоугольного треугольника:\n");

for (х=1;х<=20;х++)

for (у=1;у<=20;у++)

for (z=l;z<=20;z++)

if (y*y+z*z==x*x)

zero(x,у,z);

}

int zero(f,g,h)

int f,g,h;

(

printf ("x= %d, y= %d, 2=%d\n",f,g,h);

)

Результат работы программы:

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

х= 5, у= 3, z= 4

х= 5, у= 4, z= 3 x= 10, y= 6, z= 8

x= 10, y=8, z=6 x= 13, y=5, z= 12

x= 13, y= 12, z= 5 x= 15, y= 9, z= 12

x= 15, y= 12, z=9 x=17, y=8, z=15 x= 17, y= 15,

z=8 x=20, y=12, z=16

x=20, y= 16, z= 12

Завершает выполнение данной функции и передает управление вызывающей функции оператор return; в главной функции main он же вызывает завершение выполнения всей программы. Оператор return может содержать любое выражение:

return (<выражение>);

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

Достижение «конца» функции (правой закрывающей фигурной скобки) эквивалентно выполнению оператора return без возвращаемого значения (т.е. оператор return в конце функции может быть опущен).

Пример. Данная программа вычисляет факториал, если число меньше 8; если вводимое число больше или равно 8, то выводится сообщение «Очень большое число».

Программа 100

#include<stdio.h>

main()

{

int n, s() ;

printf("Введите число ");

scant("%d", &n) ;

if (n<8) printf(=%d", s(n)) ;

else printf("Очень большое число");

)

int s(x) /* определение функции с параметром */

int x;

{

int y,p=l;

for (y=x; y>0; y- ) p*=y;

return(p); /* Возвращает в основную программу значение р */

}

Результат работы программы:

1. Введите число 4

р=24

2.Введите число 9

Очень большое число

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

Программа 101

#include<stdio.h>

main()

(

int а, Ь, x, у, z;

int odd() ;

printf("\nВведите x, у через пробел: ");

scanf("%d %d", &х, &у); а=х; Ь=у; z=l;

while (b!=0)

if (odd(b))

{ z=z*a; b- -;}

else

( a=a*a; b=b/2;}

printf("\n%d", z);

}

int odd(t)

int t;

(

return((t%2==0)? 0:1);

)

Результат работы программы:

Введите x, у через пробел: 15 2

225

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

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

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

function 1(х);

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

function2(&x);

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

function l(num)

int num;

Вторая форма обращения требует, чтобы определение функции включало в себя формальный аргумент, являющийся указателем на один из объектов соответствующего типа:

function2(x)

int *x;

Обычно пользуются первой формой, если входное значение необходимо функции для некоторых вычислений или действий, и второй формой, если функция должна будет изменять значения переменных в вызывающей программе. Выше вторая форма вызова \же применялась при обращении к ф\нкции scanf(). Когда мы хотим ввести некоторое значение в переменную num, мы пишем scanf(''%d",&num). Данная функция читает значение, затем, используя адрес, который ей дается, помещает это значение в память.

Пример: пусть необходимо поменять местами заданные значения переменных х и у.

Программа 102

#include<stdio.h>

main()

{

int х, у;

int interchange(); /* описание функции типа int */

x=l; y=3;

printf("Имели... x=l y=3\n") ;

interchange(&x, &y); /* обращение к функции (в данном случае передаются адреса переменных) */

printf("Получили... x=%d y=%d", х, у);

}

/* вызываемая функция */

int interchange(u, v)

int *u, *v;

(

int p;

p=*\i; *u=*v; *v=p;

}

Результат работы программы:

Имели х=1 у=3

Получили х=3 у=1

В этой программе в вызове функции interchange(&x,&y) вместо передачи значений х и у мы передаем их адреса. Это означает, что формальные аргументы и и v, имеющиеся в спецификации interchanage(u,v), при обращении будут заменены адресами и, следовательно, они должны быть описаны как указатели.

Поскольку х и у целого типа, u и v являются указателями на переменные целого типа, и мы вводим следующее описание:

int *u,*v; int p;

Оператор описания используется с целью резервирования памяти. Мы хотим поместить значение переменной х в переменную р, поэтому пишем: р=*u; Вспомните, что значение переменной u - это &х, поэтому переменная и ссылается на х. Это означает, что операция *u дает значение х, которое как раз нам и требуется. Мы не должны писать, например, так:

р = u; /* неправильно */

поскольку при этом происходит запоминание адреса переменной х, а не ее значения. Аналогично, оператор *u = *v соответствует оператору х = у.

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

1. Описать тип функции в ее определении:

char pun(ch,n) /* функция возвращает символ */

int n;

char ch;

2. Описать тип функции также в вызывающей программе. Описание функции должно быть проведено наряду с описаниями переменных программы; необходимо только указать скобки (но не аргументы) для идентификации данного объекта как функции.

main()

{

char rch,pun();

Билет 27. Рекурсия в Си.

Рекурсия

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

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

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

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

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

Рекурсия на СИ.

Пример. Рекурсия на СИ. Факториал. Рекурсивными называются процедуры и функции, которые вызывают сами себя. Функцию вычисления факториала можно записать так:

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

int Factorial ( int n )

{

if ( n <= 0 ) return 1;

else return n*Factorial(n-1);

}

void Factorial ( int n, int &fact )

{

if ( n == 0 ) fact = 1;

else {

Factorial ( n-1, fact );

fact *= n;

}

}

Билет 28. Основы алгоритмизации и технологии программирования. Элементарные шаги алгоритма можно объединить в следующие алгоритмические конструкции: линейные (последовательные), разветвляющиеся, циклические и рекурсивные. Линейной называют алгоритмическую конструкцию, реализованную в виде последовательности действий (шагов), в которой каждое действие (шаг) алгоритма выполняется ровно один раз, причем после каждого

/-го действия (шага) выполняется (/+1)-е действие (шаг), если /-е действие — не конец алгоритма.

Пример 6.1. Опишем алгоритм сложения двух чисел на псевдокоде в виде

блок-схемы. Псевдокод: 1. Ввод двух чисел a, b. 2. Вычисляем сумму S = а + b. 3. Вывод S. 4. Конец.

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

Полное ветвление на одной ветви (то), вторая ветвь отсутствует, т.е. для одного из результатов проверки никаких действий выполнять не надо, управление сразу переходит к точке слияния. Пример 6.2. Вывести значение наибольшего из двух чисел. Псевдокод: 1. Ввод двух чисел а, Ь. 2.ЕСЛИ а > Ь, ТО «выводим а», ИНАЧЕ «выводим Ь». 3. Конец. В данном примере реализовано полное ветвление. ЕСЛИ значения входных данных таковы, что а >b, ТО выполняется линейный алгоритм: 1. Ввод двух чисел а, b. 2. Вывод а. ИНАЧЕ, когда а <b, выполняется линейный алгоритм: 1. Ввод двух чисел а, b. 2. Вывод b. Вывод: алгоритм является разветвляющимся и состоит из двух ветвей. Рассмотрим стандартный алгоритм поиска наибольшего (наименьшего) значения среди нескольких заданных. Основная идея алгоритма сводится к следующему: за наибольшее (наименьшее) принимаем значение любого из данных. Поочередно сравниваем оставшиеся данные с наибольшим (наименьшим). Если окажется, что очередное значение входного данного больше(меньше) наибольшего (наименьшего), то наибольшему (наименьшему) присваиваем это значение. Таким образом, сравнив все входные данные, найдем наибольшее (наименьшее) среди них. Алгоритм использует неполное ветвление. Пример 6.3. Заданы три числа. Найти значение наименьшего из них. Заданные числа обозначим: а, b, с; результирующее наименьшее - min.

Билет 29. Понятие алгоритма и его свойства. Алгоритм — описанная на некотором языке точная конечная

система правил, определяющая содержание и порядок действий над

некоторыми объектами, строгое выполнение которых дает решение

поставленной задачи. Понятие алгоритма, являющееся

фундаментальным в математике и информатике, возникло задолго до

появления средств вычислительной техники. Слово «алгоритм» появилось

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

выполнения арифметических действий в десятичной системе счисления,

описанными узбекским математиком Муххамедом бен Аль-Хорезми

(«аль-Хорезми» — человек из города Хорезми; в настоящее время

город Хива в Хорезмской области Узбекистана). Слово алгоритм — есть

результат европейского произношения слов аль-Хорезми.

Первоначально под алгоритмом понимали способ выполнения

арифметических действий над десятичными числами. В дальнейшем это понятие

стали использовать для обозначения любой последовательности

действий, приводящей к решению поставленной задачи.

Любой алгоритм существует не сам по себе, а предназначен для

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

программирования и т.д.). Свойством, характеризующим любого

исполнителя, является то, что он умеет выполнять некоторые

команды. Совокупность команд, которые данный исполнитель умеет

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

описывается в командах исполнителя, который будет его реализовы-

вать. Объекты, над которыми исполнитель может совершать

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

данные и результаты любого алгоритма всегда принадлежат среде того

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

Значение слова «алгоритм» очень схоже со значениями слов

«рецепт», «метод», «процесс». Однако, в отличие от рецепта или

процесса, алгоритм характеризуется следующими свойствами:

дискретностью, массовостью, определенностью, результативностью,

формальностью.

Дискретность (разрывность — противоположно непрерывности)—

это свойство алгоритма, характеризующее его структуру: каждый

алгоритм состоит из отдельных законченных действий, говорят:

«Делится на шаги».

Массовость — применимость алгоритма ко всем задачам

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

решения квадратного уравнения в области действительных чисел

должен содержать все возможные исходы решения, т.е., рассмотрев

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

корня уравнения, либо два равных, либо делает вывод о том, что

действительных корней нет.

Определенность (детерминированность, точность) — свойство

алгоритма, указывающее на то, что каждый шаг алгоритма должен быть

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

должен быть определен порядок выполнения отдельных шагов.

Помните сказку про Ивана-царевича? «Шел Иван-царевич по дороге,

дошел до развилки. Видит большой камень, на нем надпись:

«Прямо пойдешь - голову потеряешь, направо пойдешь — жену найдешь,

налево пойдешь — разбогатеешь». Стоит Иван и думает, что дальше

делать». Таких инструкций алгоритм содержать не может.

Результативность — свойство, состоящее в том, что любой

алгоритм должен завершаться за конечное (может быть очень большое)

число шагов. Вопрос о рассмотрении бесконечных алгоритмов

остается за рамками теории алгоритмов.

Формальность - это свойство указывает на то, что любой

исполнитель, способный воспринимать и выполнять инструкции

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

поставленной задачи и лишь строго выполняет инструкции. Рассуждать «что,

как и почему?» должен разработчик алгоритма, а исполнитель фор-

мально (не думая) поочередно исполняет предложенные команды и

получает необходимый результат.

Билет 30. Способы описания алгоритмов.

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

описание, псевдокод, блок-схема, программа.

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

естественном языке. Например, любой прибор бытовой техники (утюг,

электропила, дрель и т.п.) имеет инструкцию по эксплуатации, т.е.

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

прибор должен использоваться.

Никаких правил составления словесного описания не

существует. Запись алгоритма осуществляется в произвольной форме на

естественном, например, русском языке. Этот способ описания не

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

«формальным» понимается то, что описание абсолютно полное и

учитывает все возможные ситуации, которые могут возникнуть в ходе

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

некоторых действий; страдает многословностью.

Псевдокод — описание структуры алгоритма на естественном,

частично формализованном языке, позволяющее выявить основные

этапы решения задачи, перед точной его записью на языке

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

конструкции и общепринятая математическая символика.

Строгих синтаксических правил для записи псевдокода не

существует. Это облегчает запись алгоритма при проектировании и

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

псевдокоде обычно используются некоторые конструкции, присущие

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

алгоритма на языке программирования. Единого или формального

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

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

конструкций.

Блок-схема — описание структуры алгоритма с помощью

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

выполнения отдельных инструкций. Этот способ имеет ряд

преимуществ. Благодаря наглядности, он обеспечивает «читаемость»

алгоритма и явно отображает порядок выполнения отдельных

команд. В блок-схеме каждой формальной конструкции соответствует

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

совокупность фигур.

Рассмотрим некоторые основные конструкции,

использующиеся для построения блок-схем.

Блок, характеризующий

начало/конец алгоритма (для

подпрограмм — вызов/возврат):

Блок — процесс,

предназначенный для описания отдельных

действий:

Начало

Конец

Блок — предопределенный

процесс, предназначенный для

обращения к вспомогательным алгоритмам

(подпрограммам):

Блок — ввода/вывода с

неопределенного носителя'.

Блок — ввод с клавиатуры'.

Блок — вывод на монитор:

Блок — вывод на печатающее

устройство'.

<Действие>

Блок — решение (проверка

условия или условный блок):

Блок, описывающий цикл с

параметром'.

Блок — границы цикла,

описывающий циклические процессы типа:

«цикл с предусловием», «цикл с

постусловием»:

Соединительные блоки

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

виде блок-схемы допускают некоторый произвол при изображении

команд. Вместе с тем она настолько достаточна, что позволяет

человеку понять суть дела и исполнить алгоритм. На практике

исполнителями алгоритмов выступают компьютеры. Поэтому алгоритм,

предназначенный для исполнения на компьютере, должен быть записан

на «понятном» ему языке, такой формализованный язык называют

языком программирования.

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

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

«программа» нельзя трактовать только таким образом, как уже говорилось в

главе 5 (п. 5.5.2), программа на языке декларативного

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

содержит явного алгоритма исполнения.

К основным способам описания алгоритмов можно отнести следующие: словесно-формульный (на естественном языке); структурный или блок-схемный; с использованием специальных алгоритмических языков; с помощью граф-схем (граф - совокупность точек и линий, в которой каждая линия соединяет две точки. Точки называются вершинами, линии - рёбрами); с помощью сетей Петри. Перед составлением программ чаще всего используются словесно-формульный и блок-схемный способы. Иногда перед составлением программ на низкоуровневых языках программирования типа языка Ассемблера алгоритм программы записывают, пользуясь конструкциями некоторого высокоуровнего языка программирования. Удобно использовать программное описание алгоритмов функционирования сложных программных систем. Так, для описания принципов функционирования ОС использовался Алголо-подобный высокоуровневый язык программирования.

Словесно-формульный способ.

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

у=2а-(х+6).

Словесно-формульным способом алгоритм решения этой задачи может быть записан в следующем виде:

1.Ввести значения а и х.

2.Сложить х и 6.

3.Умножить а на 2.

4.Вычесть из 2а сумму (х+6).

5.Вывести у как результат вычисления выражения.

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

Блок-схемы.

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

блоках записывается последовательность действий.

Начало и конец алгоритма

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

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

Решение. Выбор направления выполнения алгоритма в зависимости от некоторых переменных условии.

Предопределенный процесс. Использование ранее созданных и отдельно написанных программ (подпрограмм).

Документ. Вывод данных на бумажный носитель.

Магнитный диск. Ввод-вывод данных, носителем которых служит магнитный диск.

Пуск-останов. Начало, конец, прерывание процесса обработки данных.

Соединитель. Указание связи между прерванными линиями, соединяющими блоки.

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

Комментарий. Связь между элементом схемы и пояснением.

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

Программа- описание структуры алгоритма на языке алгоритмического программирования.