Тест

 " " " " " " " "
Ex Libris
• Вiдкрити змiст книги • Вiдвiдайте сайт дистанцiйного навчання •
© Технологiчний Унiверситет Подiлля. Центр Дистанцiйного навчання
Матерiали дистанцiйних курсiв розробки Центру дистанцiйного навчання захищенi дiючим законодавством з авторського права.
Несанкцiоноване розповcюдження матерiалiв курсiв призведе до цивiльної та кримiнальноi вiдповiдальностi.


line

1. Вычислительная система

1.1. Общая структура аппаратной части

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

В связи с вышесказанным, любая ЭВМ должна состоять из следующих основных частей:

Процессор — основа ЭВМ. Предназначен для обработки информации и управления работой всех остальных устройств. Состоит из 2-х основных частей: арифметико-логического устройства (АЛУ) и управляющего устройства (УУ).

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

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

Устройства ввода-вывода служат для ввода информации во внутреннее ЗУ с внешних носителей или непосредственно из внешней среды, а также для вывода на внешние носители или непосредственно во внешнюю среду. При этом одни устройства могут служить только для ввода или только для вывода, а другие, — как для ввода, так и для вывода (примеры: клавиатура – ввод, монитор – вывод, дисководы – ввод-вывод).

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

Вопросы для самостоятельной работы

1. Где находится программа, по которой работает процессор?

2. Какую роль играют контроллеры, и сколько их может быть в вычислительной системе?

3. Поясните по схеме, какие из основных функций вычислительной системы выполняет каждая из ее составных частей.

1.2. Обзор устройств ввода-вывода

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

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

Экран монитора может находиться в 2-х режимах: текстовом и графическом. В стандартном текстовом режиме экран представляет собой матрицу из маленьких прямоугольников размером 8 ´ 16 точек, располагающихся по 25 строкам в 80 колонках. В каждом прямоугольнике по специальным алгоритмам, находящимся в постоянном запоминающем устройстве (ПЗУ), может быть выведен один из символов стандартной кодовой таблицы. При этом обычно указывается, в какую строку и колонку осуществляется вывод. В графическом режиме весь экран представляется как сплошное поле точек с координатной системой, где за единицу измерения принята 1 точка – пиксель. В этом режиме на экран могут выводиться не только символы, но и любые графические фигуры. Хотя текстовый режим ограничен набором символов стандартной таблицы, скорость вывода в нем выше, чем в графическом режиме, поскольку в памяти компьютера хранятся уже готовые образы символов, а в графическом режиме все изображения приходится строить по точкам. Текстовый режим в основном используется в старых маломощных компьютерах. В современных высокопроизводительных системах преимущественно применяется графический режим различной степени разрешения.

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

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

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

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

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

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

Устройства на жестких магнитных дисках (винчестеры). Надежность хранения информации на флоппи-дисках невелика (ее легко можно повредить неосторожными внешними воздействиями), емкость также довольно мала, да и скорость чтения-записи одна из самых низких. Поэтому надежное длительное хранение важной информации на флоппи-дисках и ее частое использование практически исключаются. Для увеличения емкости можно повысить плотность записи на диск (нужен более качественный материал), а также собрать несколько дисков в одну стопку; для увеличения скорости чтения-записи нужно повысить скорость вращения дисков, при этом следует повысить жесткость самих дисков. Так появились устройства на жестких магнитных дисках (ЖМД) или HDD (hard disk device) — «винчестеры». Название пошло оттого, что первый HDD состоял из двух жестких дисков по 30 Мбайт каждый. Общая емкость обозначалась как 30/30, что сильно напоминало обозначение калибра знаменитого карабина винчестер. HDD состоят из нескольких алюминиевых дисков, покрытых высококачественным магнитным материалом, и расположенных один над другим на некотором расстоянии. Блок головок размещается между дисками в виде «гребенки» и может перемещаться в радиальном направлении. Высокая скорость вращения (несколько тысяч оборотов в мин.) и точность механизма требуют помещения всего устройства в герметичный корпус для защиты от пыли и внешних воздействий. Емкость HDD в настоящее время в сотни и даже тысячи раз превышает емкость флоппи-дисков. Надежность хранения информации также намного выше. Единственный недостаток — HDD практически используются как несъемные устройства, установленные внутри системного блока.

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

Вопросы для самостоятельной работы

1. Что такое «буфер клавиатуры» и каково его основное назначение?

2. В каких режимах может работать экран монитора? Какой из режимов имеет больше возможностей по построению различных изображений и почему?

3. Почему работа с помощью «мыши» более удобна и наглядна?

4. Что такое «порт ввода-вывода»?

5. Какая информация передается от компьютера к принтеру?

6. Почему надежность хранения информации на флоппи-дисках невелика?

7. Почему жесткие диски помещают в герметичные корпуса?

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

1.3. Виды и характеристики ЗУ

Запоминающие устройства делятся на оперативные (ОЗУ), постоянные (ПЗУ) и долговременные (ДЗУ).

ОЗУ представляет собой матрицу электронных ячеек, каждая из которых способна хранить 1 бит информации в виде электрического сигнала или заряда. Выполняется в виде электронных микросхем. Доступ к каждой ячейке памяти, состоящей из 8 бит и называемой байтом, осуществляется специальным контроллером памяти по так называемым адресным шинам. Время доступа к ячейке с любым адресом не зависит от самого адреса и составляет несколько наносекунд (1 нс = 10-9 с). Поэтому ОЗУ — самый быстрый вид памяти и используется для непосредственной оперативной работы с центральным процессором. Часто обозначается как RAM (Random Access Memory – память с произвольным доступом).

ОЗУ бывает 2-х видов: динамическое и статическое.

В динамическом ОЗУ каждый бит информации хранится в виде заряда очень маленького конденсатора. Его разрядка происходит уже через несколько миллисекунд. Поэтому для сохранения информации необходимо с соответствующей частотой осуществлять циклы восстановления: чтение информации в ОЗУ с последующей повторной записью в эти же ячейки. Подобные циклы подзарядки приводят к тому, что читать информацию из динамического ОЗУ или записывать туда новую информацию можно только в промежутках между восстановительными циклами, что, конечно же, замедляет работу с этим видом памяти. Основные достоинства — высокая компактность (до неск. Мбайт/см2) и дешевизна (< $10/Мбайт). Поэтому в настоящее время основная часть ОЗУ — динамическая, которая может составлять от 1 до 32 и более Мбайт (типично 8-16 Мбайт на момент написания материала, причем данный объем постоянно растет).

Каждая ячейка статического ОЗУ выполнена в виде триггера на 4 транзисторах. Триггер имеет два устойчивых состояния на выходе: 0 и 1 и не требует восстановительных циклов. Каждое состояние на выходе изменяется при поступлении на вход триггера короткого одиночного импульса (работа триггера напоминает работу ночного светильника: одно нажатие на кнопку — включение, следующее нажатие на эту же кнопку — выключение). Поэтому можно считать, что «включение» триггера эквивалентно записи в него единицы, а «выключение» — записи нуля, которые могут храниться сколь угодно долго до полного выключения питания.

Быстродействие статического ОЗУ выше, чем динамического. Однако статическое ОЗУ более дорогое и не такое компактное (4 транзистора требуют больше места, чем 1 конденсатор). Несколько сотен Кбайт статического ОЗУ эквивалентны по стоимости и размеру нескольким десяткам Мбайт динамического ОЗУ.

В связи с этим обычно ОЗУ делят на 2 уровня: КЭШ-память (Cache или SRAM – статическое) и обычное ОЗУ (DRAM – динамическое). Контроллер памяти по специальным алгоритмам периодически копирует блоки информации из ОЗУ в КЭШ и наоборот.

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

ПЗУ (ROM – Read Only Memory – память только для чтения) выполняется на специальных микросхемах либо методом прожигания специальных матриц, либо на микросхемах, выполненных по особой технологии и позволяющих хранить информацию в течении нескольких лет при отключенном питании. Обычно запись информации в ПЗУ осуществляется на заводе-изготовителе материнских плат. ПЗУ хранит начальные тестовые программы и начальный набор функций (программ) управления устройствами вычислительной системы. Благодаря этим программам компьютер при включении и совершенно «пустом» ОЗУ может правильно воспринимать вводимую информацию с клавиатуры, отображать необходимую информацию на экране монитора, «умеет» обращаться к магнитным дискам через соответствующие дисководы и загружать все необходимые программы для дальнейшей работы в ОЗУ. Благодаря ПЗУ компьютер после включения всегда выполняет одну и ту же жесткую последовательность действий, приводящую его к полной готовности для работы с пользователем. Если при выключении питания микросхемы ОЗУ полностью теряют находящуюся в них информацию, то ПЗУ может длительно хранить записанную в него информацию даже при полном отсутствии каких-либо источников энергии. Единственный недостаток ПЗУ — невозможность оперативно изменять его содержимое.

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

Вопросы для самостоятельной работы

1. Каковы основные виды оперативного запоминающего устройства? Чем они отличаются? Какой вид ОЗУ быстрее и почему?

2. Почему основной объем памяти составляет динамическое ОЗУ?

3. Деление ОЗУ на различные типы обуславливает специфическое построение общего ОЗУ. Каким образом процессор работает с различными типами такого «гибридного» ОЗУ?

4. Какова роль ПЗУ?

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

1.4. Принципы работы процессора

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

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

Процессор разделен на две части: операционное устройство (ОУ) и шинный интерфейс (ШИ). Роль ОУ заключается в выполнении команд, в то время как ШИ подготавливает команды и данные для выполнения. Операционное устройство содержит арифметико-логическое устройство (АЛУ), устройство управления (УУ) и десять регистров. Эти устройства обеспечивают выполнение команд, арифметические вычисления и логические операции (сравнение на больше, меньше или равно).

Вся оперативная память при работе процессора с программами делится на сегменты по 64 К (килобайт), поскольку каждый 16-битный регистр может оперировать числами от 0 до (216 – 1), что соответствует 210 ×26 = 1К×64 = 64 К адресов. Адресация в пределах 1 М (мегабайт) достигается тем, что любой адрес формируется 2-мя регистрами: один из них хранит начальный адрес сегмента, а другой — смещение внутри этого сегмента. Полный адрес вычисляется как сумма адреса сегментного регистра и смещения.

Регистр CS (Code Segment) содержит начальный адрес сегмента кода. Смещение на текущую команду содержится в командном указателе.

Регистр DS (Data Segment) содержит начальный адрес сегмента данных. Этот адрес плюс значение смещения, определенное в команде, указывают на конкретную ячейку в сегменте данных.

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

Регистр ES (Enhanced Segment) предназначен для специального использования и, в частности, для операций над строками. При этом ES адресует дополнительный сегмент данных. Смещение обычно берется в индексном регистре DI.

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

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

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

 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Flags | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
 |  |  |  |  |  |  |  |  | s | z |  |  |  |  |  | c

c — carry — флаг переноса; устанавливается в 1, если в результате операции происходит перенос бита в (заем из) несуществующий старший разряд; 0 — в противном случае;

z — zerro — флаг нулевого результата; устанавливается в 1, если результат операции равен 0; 0 — в противном случае;

s — sign — флаг знака; устанавливается в 1, если результат операции отрицательный; 0 — в противном случае.

Операции могут осуществляться как с ячейками памяти (данные в сегменте DS или ES), так и с регистрами общего назначения AX, BX, CX, DX. Причем с регистрами все операции выполняются намного быстрее. Поэтому основной принцип работы процессора заключается в следующем: данные перемещаются из памяти в регистры, затем над ними выполняются определенные операции, результаты вновь возвращаются в память.

Стек — это специально организованная область памяти, похожая на «стакан» или «колодец», которая используется как временное хранилище промежуточных данных, результатов и адресов возврата к предыдущим программам (или подпрограммам); работает по принципу «последним пришел — первым вышел» (LIFO — Last In First Out). Данные при записи в стек как бы «накладываются» сверху друг на друга, а забираются, естественно, в обратном порядке.

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

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

15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1

28 + 23 + 21 +20=256 + 8 + 2 + 1 = 267 (для обоих случаев)

15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0

без знака: 215 + 29 + 25 + 22 = 32768 + 512 + 32 + 4 = 33316

со знаком: – (29 + 25 + 22) = – (512 + 32 + 4) = –548

Каждый из регистров общего назначения может использоваться для операций с однобайтовыми (8-битовыми) данными. При этом каждая половина регистра будет рассматриваться как независимый однобайтовый регистр. Например, AX — 16-разрядный регистр; AH — старший байт; AL — младший байт. Это позволяет для данных байтового диапазона иметь фактически 8 регистров для операций.

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

  00111100          60

+ 00110101        + 53

  01110001         113

Вычитание выполняется при помощи сложения, преобразуя вычитаемое в двоичное дополнение (инверсия + 1). Двоичное дополнение — это число, которое при сложении с исходным числом во всех разрядах дает нули. Пример: 65 – 42 = 23.

42 ® 00101010;

      11010101  — инверсия

     +       1

      11010110  — двоичное дополнение

Тогда

  65:   01000001

– 42: + 11010110

     (1)00010111  = 24 + 22 + 21 + 20 = 16 + 4 + 2 + 1 = 23.

В этом примере произошел перенос единицы за пределы разрядной сетки (в несуществующий старший разряд).

Если при сложении двух положительных чисел происходит перенос 1 за пределы разрядной сетки, то флаг с (carry) флагового регистра устанавливается в 1.

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

Далее представлено несколько базовых команд процессора Intel-8086, которые мы будем использовать для демонстрации основных принципов работы программ обработки данных (условное обозначение операндов: R – регистр, M – память, C – константа):

MOV RM, RMC (move – переместить значение в RM из RMC)

ADD RM, RMC (добавить к RM значение RMC )

SUB RM, RMC (subtract – вычесть из RM значение RMC)

INC RM (increment – увеличить RM на 1)

DEC RM (decrement – уменьшить RM на 1)

SHR RM (сдвиг всех битов вправо на 1 позицию)

SHL RM (сдвиг всех битов влево на 1 позицию)

Для SHR (Shift Right) и SHL (Shift Left) уходящие биты теряются, а занимается всегда 0. Аналогично, как для десятичной системы сдвиг разрядов влево на одну позицию означает умножение на 10 (сравните, например, 3401 и 34010), а сдвиг вправо — целочисленное деление на 10 (сравните 3705 и 370), — так для двоичной системы подобные сдвиги будут эквивалентны умножению и делению на 2 (рассмотрите для двоичной системы аналогичные примеры самостоятельно). Таким образом, с помощью операций SHL и SHR можно осуществлять быстрое умножение и деление на число 2 и числа, кратные степени 2 (4, 8, 16, 32 и т.д.).

PUSH R (поместить значение регистра в стек)

POP R (поместить значение из стека в регистр)

HALT (останов программы)

CMP RMC, RMC (compare – сравнить первый операнд со вторым)

Для CMP происходит установка флагов s, z и с как результат вычитания 2-го операнда из 1-го, хотя на самом деле содержимое операндов не меняется.

Эти же флаги устанавливаются по результатам всех арифметических операций: ADD, SUB, INC, DEC, SHR и SHL.

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

JMP N (Jump — переход к команде с номером N безусловный)

JZ N (Jump if Zero — переход, если флаг z = 1, т.е. результат = 0)

JNZ N (Jump if Not Zero — переход, если флаг z = 0, т.е. результат не равен 0)

JA N (Jump if Above — переход, если c = 0 и z = 0, т.е. результат > 0)

JNA N (Jump if Not Above — переход, если флаг z = 1 или с = 1, т.е. результат £ (не больше) 0)

JB N (Jump if Below — переход, если c = 1, т.е. результат < 0)

JNB N (Jump if Not Below — переход, если c = 0, т.е. результат ³ (не меньше) 0).

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

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

1) Умножение двух чисел А и В: С = А×В.

Для исполнителя, не умеющего умножать, но умеющего складывать, надо просто указать, что нужно, например, B раз сложить число A. Суммирование осуществляется в отдельную ячейку, которую предварительно нужно обнулить. Исходные данные берутся из ячеек памяти A и B. Конечный результат требуется переслать в ячейку памяти C. Количество сложений можно считать по-разному. Например, до пяти можно считать так: 1, 2, 3, ..., каждый раз сравнивая, достигнут ли желаемый результат. Но можно и так: 5, 4, 3, ..., проверяя достижение нулевого результата. В данном примере удобнее использовать именно второй вариант.

Блок-схема: Программа:

1. SUB AX, AX

2. MOV BX, A

3. MOV CX, B

4. ADD AX, BX

5. DEC CX

6. JNZ 4

7. MOV C, AX

Пример показывает типовое использование регистров:

AX чаще всего служит для накопительных операций и поэтому называется аккумулятором;

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

2) Определить целочисленный результат деления (остаток игнорируется) A = B / C.

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

1. MOV AX, B

2. MOV BX, C

3. SUB CX, CX

4. CMP AX, BX

5. JB 9

6. SUB AX, BX

7. INC CX

8. JMP 4

9. MOV A, CX

3) Определить максимальное из двух чисел А и В. Результат оставить в АХ.

1. MOV AX, А

2. MOV ВX, В

3. СМР АХ, ВХ

4. JNВ 6

5. MOV AX, ВХ

6. HALT

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

4) Перемножение четырех чисел, находящихся в стеке:

A = S1 × S2 × S3 × S4;

1. MOV DX, 3 ;количество умножений

2. SUB AX, AX ;начало типовой схемы умножения

3. POP BX ;извлечение двух чисел из стека

4. POP CX

5. ADD AX, BX

6. DEC CX

7. JNZ 5

8. PUSH AX ;возврат результата умножения в стек

9. DEC DX ;уменьшение кол-ва умножений

10. JNZ 2 ;если есть еще — повторяем

11. POP AX ;забираем последний результат

12. MOV A, AX ;перемещение оконч. результата в A

Логика данного решения не очень сложна. Конечно же, можно было для каждого умножения воспользоваться типовой схемой (1-й пример) и получить программу, состоящую из трех подобных «кусков». Однако, это очень не экономно. А что делать, если подобных умножений было бы 10 или 20? Поэтому определен один универсальный алгоритм умножения двух чисел, находящихся в стеке, и реализовано трехкратное возвращение к этому алгоритму. Счетчик числа возвратов находится в регистре DX.

5) Определить наибольший общий делитель (НОД) двух чисел А и В. Результат поместить в С.

Используем алгоритм Эвклида:

пока А не равно В выполнять

начало цикла

большее из двух чисел заменить разностью большего и меньшего;

конец цикла;

любое из двух чисел является НОД.

1. MOV AX, А

2. MOV ВX, В

3. СМР АХ, ВХ

4. JZ 10

5. JA 8

6. SUB BX, AX

7. JМР 3

8. SUB AX, BX

9. JМР 3

10. MOV C, AX

Чтобы эта задача не казалась слишком абстрактной, вспомните, что НОД — это максимальное число, на которое можно сократить заданную пару чисел, и используется в арифметике для сокращения дробей. Чтобы найти, например, НОД чисел 35 и 14, нужно выполнить следующую цепочку преобразований:

35 ¹ 14

21 = (35–14) ¹ 14

7 = (21–14) ¹ 14

7 = 7 = (14–7)

НОД = 7

Именно эти действия и выполняет наш алгоритм при вычислении НОД двух целых чисел.

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

команде MOV BX, AX соответствует 1000101111011000,

а команде ADD BX, AX — 0000001111011000.

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

Сущность и обработка прерываний

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

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

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

Основные действия процессора при возникновении прерываний:

1) распознавание источника сигнала прерывания;

2) запоминание в ОЗУ состояния прерванной программы;

3) выполнение программы обработки прерывания;

4) восстановление состояния и продолжение прерванной программы.

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

Рассмотрим простой пример обработки прерывания от клавиатуры.

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

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

Для единообразного управления аппаратурой все функции управления всеми устройствами реализованы в виде функций обработки определенных прерываний. Так работу монитора обслуживает прерывание № 10, дисководов - № 13, 21, 25, 26 и т.д. Поскольку далеко не все устройства могут являться инициаторами аппаратных прерываний, существуют специальные команды процессора, позволяющие вызвать любое прерывание программным путем. Так, чтобы заставить дисковод выполнить определенную работу, нужно именно программным путем вызывать соответствующие прерывания (13, 21, 25 или 26), т.е. обратиться к нужной программе обработки.

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

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

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

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

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

Вопросы и задания для самостоятельной работы

1. Каково назначение операционного устройства и шинного интерфейса процессора?

2. Откуда непосредственно берет процессор информацию для своей работы?

3. Почему память (ОЗУ) для работы с программой делится на сегменты? Назовите эти сегменты. Каков размер сегментов?

4. Что такое стек? Укажите его назначение и принцип работы.

5. Назовите основные регистры операционного устройства и их назначение.

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

7. Для чего предназначена система прерываний? Какое устройство непосредственно следит за работой внешних устройств и сообщает процессору о необходимости прерывания текущей работы?

8. Что такое резидентные программы? Расскажите об основных принципах их работы.

9. Напишите программу вычисления выражения с использованием представленных выше команд процессора (ячейки памяти с исходными данными и результатами вычислений обозначены буквами A, B, C, D, E; ячейки стека обозначаются S1, S2, ...; результаты промежуточных вычислений рекомендуется запоминать в стеке; порядок выполнения операций соответствует математическим правилам):

a) E = (A + B) × (C + D);

b) A = B × C – D / E;

c) A = B/4 + 8×C;

d) D = 32×A + 16×B – 8×C;

e) A = S1 / S2 / S3;

f) A = B×C + D×E – B/E.

10. Определите минимальное из трех заданных чисел A, B и C. Результат поместите в D.

11. Для трех заданных чисел A, B, C увеличить C на единицу, если A превышает B более, чем на 3, или увеличить C вдвое в противном случае.

Примечание: для заданий 9c и 9d рекомендуется вспомнить операции сдвига (SHL, SHR). Так же, как и в математике, допускается выполнять предварительные преобразования, упрощающие выражения.

1.5. Разметка и размещение информации на магнитных дисках

Информация на диск записывается по концентрическим окружностям, называемым дорожками. Для ускорения поиска информации каждая дорожка делится на равное количество секторов специальными цифровыми метками. Поэтому чистый магнитный диск перед использованием подвергается специальной процедуре — форматированию, при которой на каждой дорожке прописываются секторные метки и на нулевой дорожке формируется специальная служебная информация (структура диска), в которой будет указываться месторасположение всех записанных на диск информационных объектов (файлов). Типовая разметка стандартного 3,5 дюймового флоппи-диска показана на рисунке. Каждая сторона диска разбивается на 80 дорожек (0-79) и 18 секторов (0-17). Нулевой сектор фиксируется с помощью специального маркера (обычно это маленькая дырочка вблизи основания диска). Один сектор содержит 512 байт = 0,5Кб. Тогда дорожка содержит 9Кб, сторона — 720Кб, весь диск — 1,44Мб.

Информация на диск пишется и читается не отдельными байтами, а целыми блоками, называемыми кластерами (cluster). Размер кластера зависит от емкости диска. Для ГМД 1 кластер = 1 сектор = 512 байт. Для жестких дисков размер кластера может принимать значения 4, 8, 16, 32 Кб и выбирается оптимальным с точки зрения объема диска и скорости чтения информации.

Дорожка 0 служит для размещения служебной информации. Сектор 0 этой дорожки носит название Boot-сектора (Boot — загрузка) и резервируется для размещения специальной программы, называемой загрузчиком ДОС. Далее несколько секторов (в зависимости от емкости диска) занимает специальная таблица, называемая FAT (File Allocation Table — таблица размещения файлов), в которой указываются номера кластеров, занимаемых каждым файлом. После FAT несколько секторов отводится для корневой (главной) директории (каталога). Здесь содержится информация о файлах и субдиректориях (подкаталогах) в виде 32-байтных записей. Остальное пространство предназначено для записи содержимого файлов информации.

В целях увеличения скорости чтения-записи информация записывается не последовательно на одной поверхности диска, а всеми головками по всем рабочим поверхностям одновременно. Если мысленно разрезать диск (стопку дисков для HDD) по какой-либо дорожке некоторым воображаемым цилиндром, то в сечении получим набор дорожек, одновременно обслуживаемых всеми головками и называемых цилиндром. Пока данные не заполнят весь цилиндр, головки не перемещаются. Для рассматриваемого ГМД цилиндр состоит из двух дорожек и занимает 36 секторов (0...35).

Таким образом

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

Имя | Рас | А | Резерв | Т | D | К | Размер |
8 | 3 | 1 | 10 | 2 | 2 | 2 | 4 | S=32 байт

Имя – имя файла (от 1 до 8 символов).

Рас – расширение файла (до 3 символов).

А – атрибут файла:

00 - обычный файл;

01 - можно только читать;

02 - «скрытый» файл;

04 - системный файл;

08 - метка тома (диска);

16 - подкаталог;

32 - архивный файл (для HDD).

Набор атрибутов составляет сумму кодов.

Резерв – зарезервировано для ДОС.

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

D – дата создания или последней корректировки.

К – начальный кластер.

Размер – размер файла в байтах.

По правилам операционной системы MS-DOS имя файла должно состоять не более чем из 8 символов без пробелов (как правило, английские буквы и цифры). Регистр букв (большие или маленькие) не различается. Поэтому имена Text1, TEXT1, text1 будут восприниматься как одинаковые. Для определения типа файла его имя расширяется небольшой добавкой (до 3 символов), которая так и называется — «расширение». При указании полного имени файла принято имя отделять от расширения точкой, например, text1.doc.

FAT представляет собой таблицу, в которой ведется учет распределения файлов по кластерам. Занятые кластера помечаются числами > 0, свободные — 0. Рассмотрим на примере, как происходит запись файлов на диск. Пусть необходимо записать на флоппи-диск некоторую финансовую ведомость vedom1.txt размером 800 байт и программу расчета этой ведомости размером 2200 байт — raschet.exe. Пусть FAT нашего диска выглядит следующим образом:

 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
0 |  |  |  |  |  |  |  |  |  |
10 |  |  |  |  |  |  |  |  |  |
20 |  |  |  |  |  |  |  |  |  |
30 |  |  |  |  |  |  |  |  |  |
40 |  |  |  |  |  |  |  |  |  |
50 |  |  |  |  |  |  |  |  |  |
... |  |  |  |  |  |  |  |  |  |

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

1) 800 : 512 = 1,56... = 2

2) 2200 : 512 = 4,29... = 5

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

· определяются номера первых двух свободных кластеров: 35 и 36; по номерам кластеров вычисляется номер дорожки и сектора, куда перемещаются головки и записывается содержимое первого файла;

· делается отметка в FAT: в начальном кластере № 35 ставится число 36 (номер следующего кластера), а в № 36 — признак конца файла — EOF (End Of File);

· в каталог записывается имя и расширение файла, время и дата его создания, начальный кластер (№ 35) и размер (800).

 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
0 |  |  |  |  |  |  |  |  |  |
10 |  |  |  |  |  |  |  |  |  |
20 |  |  |  |  |  |  |  |  |  |
30 |  |  |  |  |  | 36 | EOF |  |  |
40 |  |  |  |  |  |  |  |  |  |
50 |  |  |  |  |  |  |  |  |  |
... |  |  |  |  |  |  |  |  |  |

Аналогично записывается второй файл. Для него цепочка свободных кластеров: 37, 38, 51, 52, 53.

 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
0 |  |  |  |  |  |  |  |  |  |
10 |  |  |  |  |  |  |  |  |  |
20 |  |  |  |  |  |  |  |  |  |
30 |  |  |  |  |  | 36 | EOF | 38 | 51 |
40 |  |  |  |  |  |  |  |  |  |
50 |  | 52 | 53 | EOF |  |  |  |  |  |
... |  |  |  |  |  |  |  |  |  |

Обратите внимание, что в ячейке № 38 записывается номер следующего кластера, т.е. 51.

Если, затем, например, дать команду прочитать файл raschet.exe, то из учетной записи файла в каталоге будет определен начальный кластер, равный 37, а по FAT построена вся цепочка занятых файлом кластеров: 37, 38, 51, 52, 53. После чего головки будут перемещены на нужную дорожку, и устройство начнет читать данные из указанных кластеров.

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

Вопросы для самостоятельной работы

1. Для чего магнитные диски размечаются на секторы и дорожки?

2. Расскажите о разметке стандартного флоппи-диска.

3. Для чего предназначен каталог и какова структура его записей?

4. Что такое FAT и каково ее назначение?

5. Расскажите механизм записи файла на диск.

6. Расскажите механизм чтения файла.

7. Расскажите порядок удаления файла. Удаляется ли при этом содержимое самого файла?


line

2. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

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

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

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

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

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

ПО делится на следующие составные части:

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

Кроссовое ПО предназначено для работы с соответствующей ЭВМ и ее программами, но реализованное на вычислительных машинах других классов или типов. Например, может возникнуть необходимость на IBM-совместимом компьютере (процессор фирмы Intel) работать с программами, предназначенными для компьютеров Apple Macintosh (процессор фирмы Motorola). Для этого сначала понадобится загрузить специальную программу, эмулирующую работу процессора Motorola с помощью системы команд процессора Intel, а уже под этой программой можно будет запускать ПО компьютеров Macintosh. Подобные программы-эмуляторы как раз и относятся к разряду кроссового ПО.

Тестовое ПО — совокупность программ, предназначенных для проверки работоспособности устройств, входящих в состав ЭВМ на стадиях ее изготовления и эксплуатации.

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

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

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

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

2.1. Назначение и состав ОС

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

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

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

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

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

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

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

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

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

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

Примеры ОС:

– MS-DOS (Microsoft Disk Operation System) — в основном однозадачная система, но имеет средства для запуска многопрограммного режима;

– Windows 3.x (фирма Microsoft) — многопрограммная графическая среда, использующая в качестве базы MS-DOS;

– Windows 95 (фирма Microsoft) — многозадачная ОС с графическим интерфейсом пользователя;

– Windows NT (New Technology, фирма Microsoft), OS/2 (Operation System 2, фирма IBM), UNIX (различные производители) — мощные многозадачные ОС повышенной степени устойчивости, надежности и защищенности.

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

Рассмотрим состав и порядок функционирования MS-DOS, поскольку многие принципы ее работы характерны и для других ОС.

Состав MS-DOS:

1) BIOS (Basic Input-Output System) — базовая система ввода-вывода. Это набор функций (подпрограмм), осуществляющих ввод-вывод информации на конкретном оборудовании данной вычислительной системы. Набор функций BIOS обычно хранится в ПЗУ и является основой для работы всей ОС.

2) Расширенная система ввода-вывода. Это набор дополнительных и расширенных функций ввода-вывода. Хранится в файле IO.SYS. Дополнением служит набор файлов-драйверов для управления расширенными возможностями конкретных устройств (driver — водитель; в вычислительной технике — программа управления устройством).

3) Функции дисковой файловой системы. Содержатся в файле MSDOS.SYS и служат для организации файловой системы на магнитных дисках и выполнения любых операций с файлами.

4) Командный процессор. Обеспечивает выполнение встроенных команд, загрузку ОЗУ программами и запуск их на выполнение. Содержится в файле COMMAND.COM.

5) Утилиты. Набор дополнительных сервисных программ, запускаемых командным процессором, которые выполняют контрольные, проверочные и некоторые другие операции, необходимые для полноценного функционирования MS-DOS. Например, к ним относятся программы форматирования и проверки дисков, диагностики некоторых устройств.

В MS-DOS все дисковые устройства принято обозначать одной из букв латинского алфавита, за которой ставится двоеточие (чтобы отличить имя устройства от имени файла). Для флоппи-дисководов зарезервированы буквы А и В. Устройства HDD всегда начинаются с буквы С. Если HDD разбит на несколько логических дисков, то их имена продолжают алфавитный ряд после буквы С, т.е. D, E, F и т.д. Всем остальным устройствам присваивается обычно одна из оставшихся букв алфавита. Примеры обозначений: A:, D:, F:, H:.

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

CON: (console) — устройство ручного или визуального ввода-вывода; обычно для ввода — это клавиатура, а для вывода — монитор;

LPT1: — устройство печати, подключенное к порту LPT1;

LPT2: — устройство печати, подключенное к порту LPT2;

NUL: — вспомогательное «пустое» устройство, служащее для перенаправления потока информации с целью его игнорирования.

Примеры:

C:\>copy con: resume.txt — содержимое текста, введенного с клавиатуры, копировать в файл resume.txt;

C:\>copy resume.txt con: — содержимое файла resume.txt вывести (копировать) на экран монитора;

C:\>copy resume.txt lpt1: — распечатать содержимое указанного файла на принтере;

C:\>keyrus.com > nul: — запустить программу keyrus.com; любой вывод информации данной программы на экран монитора игнорировать (перенаправлять на устройство NUL:).

Вопросы для самостоятельной работы

1. Назовите известные вам виды программного обеспечения. Какой из них наиболее важен для пользователя?

2. Что такое операционная система и каково ее основное назначение?

3. Назовите особенности работы операционных систем в многопрограммном и многозадачном режиме.

4. Укажите состав операционной системы MS-DOS и назначение ее отдельных частей.

2.2. Порядок загрузки MS-DOS

Наследство, доставшееся от построения компьютеров на базе процессора Intel 8086, до сих пор заставляет организовывать оперативную память следующим образом. Поскольку для данных компьютеров общий объем памяти не превышал 1 Мб, то ОЗУ, предназначенное для DOS-программ, занимало первые 640 Кб, а оставшиеся 384 Кб адресов отводились для ПЗУ, видеопамяти и некоторых специальных целей. Многие DOS-программы до сих пор «не знают», что существует память выше 1 Мб. Появление более мощных процессоров и соответствующих программ заставило значительно расширить объемы оперативной памяти. Чтобы процессоры могли обращаться к ней при работе с DOS, были написаны специальные драйверы, позволяющие организовывать блоки (сегменты) памяти в верхнем и расширенном ОЗУ. Современные ОС (типа Windows) используют 32-разрядную организацию новых процессоров, что позволяет рассматривать ОЗУ как одно сплошное поле памяти без сегментации. Разделение памяти в основном организуется только между отдельными программами (задачами).

При включении ЭВМ процессор автоматически запускает на выполнение программу диагностики, находящуюся в ПЗУ. Эта программа осуществляет проверку исправности ОЗУ, контроллера клавиатуры, контроллера монитора, контроллера дисководов. Далее начинается загрузка ОС. Она может осуществляться только с дисков А: или С: (на некоторых компьютерах еще и с лазерного диска на устройстве CD-ROM). Если начальным загрузочным устройством является диск А:, то делается попытка загрузить в ОЗУ программу-загрузчик из Boot-сектора этого диска. Boot-сектор формируется только при специальном форматировании диска или специальной командой установки операционной системы на диск. Если же носитель в дисководе А: отсутствует, то аналогичный загрузчик считывается из Boot-сектора жесткого диска С:. После этого управление передается программе-загрузчику, которая начинает загружать DOS с того диска, с которого загрузилась сама. Первым ищется в корневом каталоге файл IO.SYS и подключается расширенная система ввода-вывода. Затем оттуда же считывается файл MSDOS.SYS с функциями файловой системы. Далее осуществляется попытка найти в корневом каталоге файл CONFIG.SYS, с помощью которого устанавливается конфигурация системы, т.е. подключаются драйверы для управления дополнительными возможностями и устройствами системы. Это текстовый файл, в котором указываются специальные команды операционной среды и подключаются драйверы командой вида

device = имя_файла_драйвера

Например, содержимое файла CONFIG.SYS может быть следующим:

dos = high, umb

device = c:\dos\himem.sys

device = c:\dos\emm386.exe NOEMS

files = 60

buffers = 80

Первая строка — это указание загружать файлы DOS в область верхней «теневой» памяти (свыше 640 Кб), а в области памяти выше 1 Мб поддерживать блочную структуру (Up Memory Blocks) для загрузки пользовательских программ.

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

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

Четвертая строка — указание DOS о возможности открывать одновременно до 60 файлов и соответствующем выделении памяти для этого.

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

Если файл CONFIG.SYS отсутствует, то конфигурирования системы не происходит, а файлы DOS загружаются в область базовой памяти (до 640 Кб).

Далее загружается командный процессор из файла COMMAND.COM. Он фактически обеспечивает диалог между пользователем и операционной системой. Пользователь вводит определенную команду в виде специальных слов, командный процессор распознает ее и дает задание системе с помощью функций файловой системы и системы ввода-вывода выполнить указанные действия. После этого в корневом каталоге ищется файл AUTOEXEC.BAT. Если он есть, то выполняются все команды, содержащиеся внутри этого файла. AUTOEXEC.BAT — текстовый файл, строки которого являются командами для командного процессора. Основное назначение файла AUTOEXEC.BAT — автоматическая загрузка необходимых программ при начальной загрузке DOS. Его примерное содержимое может быть следующим:

path c:\; c:\DOS; c:\NC; c:\UTIL

LH mouse.com

LH keyrus.com

nc

Первая строка задает список маршрутов по каталогам DOS для поиска запускаемых файлов.

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

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

Четвертая — загружает программную оболочку Norton Commander.

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

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

Если файл AUTOEXEC.BAT отсутствует, то командный процессор выдает на экран специальное сообщение (промпт) в виде имени текущего диска и текущего рабочего каталога, за которыми следует символ «>», являющийся приглашением пользователю к вводу команд (например, A:\> или C:\DOS>). На этом загрузка DOS заканчивается.

Вопросы для самостоятельной работы

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

2. Для чего предназначен файл config.sys?

3. Для чего предназначен файл autoexec.bat?

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

5. Командный процессор command.com играет в составе операционной системы примерно ту же роль, что и контроллеры в аппаратуре. Что или кого связывает command.com в вычислительном процессе?

2.3. Утилиты работы с дисками

В установочном комплекте MS DOS помимо основных трех файлов системы имеется еще большое количество драйверов различных устройств, специальные программы настройки системы и множество утилит, среди которых — программы разбивки жесткого диска FDISK и форматирования FORMAT, программа проверки (сканирования) дисков SCANDISK и программа дефрагментации дискового пространства DEFRAG.

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

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

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

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

Например, при удалении некоторого файла система успела пометить файл в каталоге как удаленный, и после этого произошло отключение питания. Естественно, что отметить в FAT-е кластеры, занимавшиеся этим файлом, как свободные, система не успела. Тогда при повторной перезагрузке компьютера мы получим ситуацию, когда некоторая цепочка кластеров помечена как занятая, но файлов, которые могли бы в них размещаться, уже не существует. В результате DOS не может больше использовать цепочку таких кластеров, которые называются «потерянными» (Lost clusters).

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

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

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

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

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

Все указанные неполадки можно контролировать утилитой scandisk.exe. Более качественным аналогом этой утилиты является ndd.exe — Norton Disk Doctor из комплекта Norton Utilities.

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

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

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

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

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

Для дефрагментации дисков применяется утилита Defrag.exe (SpeeDisk.exe в Norton Utilities).

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

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

В случае порчи нулевой дорожки (данная неисправность относится к полному разрушению структуры магнитного диска и является одной из самых серьезных) диск вообще не читается, т.к. и FAT и корневой каталог отсутствуют. Такой диск либо можно по-новому отформатировать и начать на нем накопление информации с нуля (рекомендуется, если есть архивные копии), либо попытаться восстановить специальной утилитой Unformat.com (и в DOS-утилитах, и в Norton-утилитах). Она формирует чистый FAT и чистый корневой каталог. Затем ищет файлы-подкаталоги по всему диску и заносит ссылки на них в корневой каталог под именами DIR0, DIR1, DIR2, ..., а в FAT заносится разметка о всех файлах в этих подкаталогах на основе номера первого кластера и размера файла так, как будто это непрерывные (нефрагментированные) файлы. Файлы и имена подкаталогов, находившихся в корневом каталоге, безвозвратно теряются. Однако в корневом каталоге обычно размещают только системные файлы. Их можно восстановить с резервных источников. Имена подкаталогов можно восстановить вручную, просматривая их содержимое после восстановления. Чем меньше диск фрагментирован, тем больше информации может быть восстановлено. Отсюда важное следствие: старайтесь как можно меньше файлов держать в корневом каталоге, а в основном распределять всю информацию по подкаталогам.

Практические советы:

1) Утилиту Defrag.exe (SpeeDisk.exe) необходимо запускать периодически примерно раз в месяц, а при интенсивной работе с большим количеством файлов — чаще (2-4 раза в месяц). Следите периодически за уровнем дефрагментации диска, которая не должна превышать 5-10%. Вообще-то утилиты Defrag.exe или SpeeDisk.exe сами при запуске анализируют состояние диска и выдают собственные рекомендации, которых следует придерживаться всем начинающим и малоопытным пользователям.

2) Рекомендуется сделать резервную системную дискету, на которую необходимо поместить дополнительно утилиты format.com, unformat.com, scandisk (ndd.exe). Это позволит восстанавливать диск в случае порчи нулевой дорожки.

Все сказанное в основном касается жестких дисков, поскольку неисправности на флоппи-дисках приносят гораздо меньше неприятностей. Для гибких дисков можно отметить, что при их неаккуратном использовании или из-за плохого качества отдельных дисководов на флоппи-дисках периодически появляются физические дефекты в виде царапин, загрязнений или перемагниченных участков. Такие дефекты рекомендуется обрабатывать утилитой scandisk.exe или ndd.exe, которые проверяют дискету специальным образом («тест поверхности» — surface test) и при невозможности использовать поврежденные кластеры заносят в ячейки FAT этих кластеров специальную метку (Bad Block), после чего данные кластеры исключаются из использования. При катастрофическом разрастании физических дефектов такую дискету лучше изъять из употребления. Категорически запрещается пользоваться дискетами, внутрь защитного корпуса которых попали песок, сахар или другие твердые частицы, которые могут поцарапать поверхность считывающих головок.

Вопросы для самостоятельной работы

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

2. Что такое фрагментация и из-за чего она происходит?

3. Для чего желательно устранение фрагментации магнитных дисков?

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

2.4. Вирусы и антивирусная профилактика

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

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

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

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

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

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

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

Обнаружение и лечение: используйте антивирусные программы DrWeb.exe и Aidstest.exe (лаборатории Данилова и Лозинского), VirusScan фирмы McAfee, а также Norton AntiVirus фирмы Symantec, которые находят вирусы по особенным характерным признакам их работы и могут восстановить зараженные файлы путем корректного отбрасывания тела вируса, а также ликвидировать резидентную программу вируса в памяти (если вирус не использует алгоритмов самомаскирования). Помните, что из-за постоянного появления новых вирусов антивирусные программы быстро устаревают. Поэтому требуется постоянно обновлять либо антивирусные базы данных, либо сами антивирусные программы.

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

Советы:

1) если вы только читаете информацию со своей дискеты на чужом (возможно зараженном) компьютере, то устанавливайте защиту от записи, — вирус не сможет инфицировать файлы на дискете;

2) не доверяйте чужим компьютерам! Прежде чем пользоваться дискетами, побывавшими на чужих компьютерах, проверьте их антивирусными программами;

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

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

Вопросы для самостоятельной работы

1. Что такое компьютерный вирус?

2. Откуда может попасть вирус на ваш компьютер?

3. Назовите основные задачи, решаемые компьютерными вирусами.

4. Каковы основные принципы заражения и механизм функционирования вирусов?

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

2.5. Архивирование информации

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

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

Кроме того, архиваторы позволяют архивировать целую группу файлов в один архивный файл. При этом сам архивный файл представляет собой структуру, чем-то напоминающую организацию магнитного диска: в начале архивного файла (архива) записывается оглавление, т.е. названия файлов, включенных в архив, их размер и смещение относительно начала архива, с которого они записаны в архиве, а далее располагаются сжатые архивные копии самих файлов. При этом эффект сжатия еще более усиливается из-за отсутствия «кластерных хвостов» (т.е. пустого пространства последних кластеров) между файлами внутри архива. В среднем коэффициент сжатия при архивировании составляет около двух. Однако для разных типов файлов он различен. Больше всего сжимаются текстовые файлы (в 4-5 раз) и файлы графических изображений (в 5-10 и даже более раз). Хуже сжимаются файлы исполняемых программ (в 1,1–2 раза) — com- и exe- файлы.

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

Одним из самых распространенных архиваторов, является архиватор ZIP, состоящий из утилит pkzip.exe (архиватор) и pkunzip.exe (разархиватор) фирмы Pkware. Некоторое время был очень популярен архиватор arj.exe (Robert Jung) среди непрофессиональных пользователей. Эта утилита совмещает в одной программе и архиватор и разархиватор, к тому же качество архивирования незначительно уступает pkzip. В среде Windows в последнее время очень популярны утилиты WinZIP (поддерживает стандарт ZIP) и RAR (Евгения Рошаля), имеющие очень удобные оконные оболочки для просмотра содержимого архивных файлов и выполнения любых операций с внутренними файлами. Очень многие оболочки работы с файлами (Norton Commander, Windows Commander, Volkov Commander, Far и многие другие) имеют встроенные средства для работы с архивными файлами, позволяют входить внутрь архивов, как в обычные каталоги, и выполнять различные операции наподобие утилит WinZIP и RAR.

Утилиты для DOS в основном запускаются с командной строки как команды с параметрами. В большинстве случаев формат команды архивирования следующий:

имя_архиватора [команда] имя_архива путь_к_файлам

Дополнительная команда после имени архиватора указывается для тех утилит, которые содержат и архиватор, и разархиватор в одной программе (как arj.exe).

Примеры архивирования:

pkzip.exe my_docs c:\doc\*.*

в результате в текущем каталоге будет создан архивный файл my_docs.zip, в который будут включены все файлы каталога C:\DOC;

arj.exe a b:my_docs c:\doc\*.txt

команда «а» означает, что архиватор должен архивировать (добавлять — add) файлы в архив; в результате на диске B: будет создан архивный файл my_docs.arj, в который будут включены все файлы с расширением txt из каталога C:\DOC.

Примеры разархивирования:

pkunzip.exe my_docs c:\temp

в результате все файлы из архива my_docs.zip, находящегося в текущем каталоге, будут распакованы в каталог C:\TEMP;

arj.exe e b:\my_docs c:\temp

команда «е» (extract – извлечь) указывает архиватору распаковать все файлы из архива my_docs.arj, находящегося в корневом каталоге диска B:, и поместить их в каталог C:\TEMP.

Архивирование стало настолько популярным способом хранения данных, что у некоторых фирм возникла идея сжатия всего дискового пространства методами, аналогичными для утилит-архиваторов. Чтобы процесс компрессии и декомпрессии файлов был незаметным, требовалось только создать резидентные программы-архиваторы, которые бы действовали наподобие вирусов: при считывании информации с диска автоматически бы ее разархивировали, а при записи на диск — автоматически сжимали. Одним из самых известных в этом направлении был проект фирмы Stacker. При установке ее программного обеспечения на диске оставались только стартовые системные файлы и резидентные программы компрессора-декомпрессора. Остальное пространство диска занимал огромный «архивный» файл, содержимое которого показывалось на экране так, как будто бы это был обычный диск. Таким образом, от пользователя скрывался факт работы со сжатыми (зашифрованными) данными. При этом объем для записи программ увеличивался примерно вдвое (средний коэффициент сжатия для всех файлов). Естественно, что скорость работы с таким диском заметно уменьшается. Поэтому установка программного обеспечения для сжатия дисков может быть оправдана катастрофической нехваткой дискового пространства и достаточной скоростью работы компьютера. Еще одна отрицательная сторона подобных программ заключается в том, что увеличивается вероятность потерять большое количество информации в случае неверной работы или сбоя резидентного компрессора, поскольку вся информация на диске хранится в одном огромном сжатом файле.

В настоящее время операционные системы Windows 95 (98) имеют встроенные драйверы Dblspace (double space — двойное пространство), действующие аналогично программам фирмы Stacker. Они могут быть установлены по желанию пользователя, как при установке операционной системы, так и в любой последующий момент времени. В операционной системе Windows NT эта же проблема решена еще более удобно: достаточно на любую папку-каталог установить свойство «сжатый», — и все ее содержимое будет храниться в сжатом состоянии, причем для пользователя этот процесс будет абсолютно не заметен. Рекомендуется устанавливать это свойство для тех папок, в которых содержится информация с высоким коэффициентом сжатия. При этом использование утилит-архиваторов остается только для внешних носителей как инструмент импорта или экспорта данных.

Вопросы для самостоятельной работы

1. Что такое архивирование и для чего оно предназначено?

2. На чем основана работа архиватора?

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

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

2.6. Установка программных пакетов

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

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

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

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

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

diskcopy /?

или

format /?

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

Вопросы для самостоятельной работы

1. Что такое инсталляция?

2. Почему в большинстве случаев процедура инсталляции программного обеспечения необходима?


line

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

3.1. Выбор средств

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

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

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

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

Имея многолетний опыт программирования на различных языках программирования, могу сказать следующее. Главное — научиться алгоритмическому мышлению для решения необходимых задач. Заложенные основы должны помогать вашему дальнейшему развитию в нужном или выбранном направлении, а не тормозить его. Изучение любого языка программирования обычно не представляет большой проблемы, поскольку большинство языков обладают весьма ограниченным словарем и еще меньшим набором различных алгоритмических конструкций. Изучить основные средства языка программирования при желании можно буквально за пару недель. Но научить составлять алгоритмы и писать программы… По моему убеждению, необходимо взять за основу такой язык программирования, который помог бы сформировать хороший стиль алгоритмического мышления, а далее — постоянная учеба и тренировка в практическом решении возможно большего количества различных классов задач. В дальнейшем вы всегда сможете подобрать любое новое средство программирования на свой вкус и достаточно быстро изучить его. При заложенных ранее навыках решения различных задач вы сразу же сможете писать качественные программы на новом языке. Обычно я поступаю таким образом. Анализируя поставленную задачу или возникшую проблему, я пытаюсь подобрать оптимальное средство для его решения. Если таким средством является новый язык программирования и выгоды от его применения перекрывают все затраты на его изучение, то он сразу же попадает в средства моего арсенала. Ни в коем случае не являюсь сторонником тезиса, что лучше знать один язык, но знать его досконально, хотя уважаю и такую точку зрения. Думаю, что сегодня просто не существует одного универсального средства на все случаи жизни. Хотя все больше встречаются случаи, когда люди специализируются в определенной области знаний и, естественно, выбирают для себя определенные инструментальные средства, которым отдают предпочтение на протяжении многих лет.

Итак, для начального обучения можно рекомендовать язык программирования Паскаль. Это средство было разработано в 60-х годах профессором швейцарского института информатики Никлаусом Виртом специально для целей обучения студентов программированию. Принципы, заложенные в этом языке, оказались настолько удачными, что позже стали достоянием классической теории и сейчас встречаются почти во всех других современных языках. Сам же Паскаль до сих пор является любимым средством программирования не только новичков, но огромной армии профессионалов. Полное описание языка Паскаль, представленное его создателями, занимало всего 49 страниц. Компилятор Паскаля до сих пор является самым быстрым и надежным средством при написании хороших профессинальных программ. К тому же обычно не возникает проблем при переходе с Паскаля на другие программные средства. У меня вызывает удивление, что до сих пор некоторые преподаватели используют для обучения старые версии языка Бейсик (Basic-A, GW-Basic), игнорируя полное отсутствие в них полноценного набора средств, отвечающих последним достижениям теории и практики программирования. Обычно образ мышления людей, воспитанных на старом Бейсике, позже приходится просто ломать, что далеко не каждому под силу. Недоумение вызывает также тенденция изучения многих языков программирования при подготовке определенных категорий специалистов, особенно, когда преследуется цель изучения этих языков как таковых, а не их практическое применение для решения конкретных задач.

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

3.2. Начальные сведения по языку Паскаль

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

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

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

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

1) больших латинских букв A...Z, малых латинских букв a...z и символа подчеркивания «_»; дополнительно можно добавить аналогичные наборы букв кириллицы А...Я, а...я, которые используются в основном для вывода различных сообщений и комментариев;

2) цифр от 0 до 9;

3) специальных символов + – * / = ( ) { } [ ] . , : ; # $ ^ & и др., назначение которых будем определять в каждом конкретном случае;

4) ключевых слов (begin, end, if, then, else, for, while и др.), которые интерпретируются как неразрывные символы со строго определенным смыслом; в тексте конспекта ключевые слова будут выделяться жирным шрифтом, а их смысл уточняться по мере изучения.

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

Для хранения вещественных (действительных) чисел используются специальные структуры, состоящие из нескольких байт и хранящие отдельно мантиссу и порядок числа в виде обычных целых чисел. Существуют специальные алгоритмы обработки таких структур. Обычно они сразу изначально закладываются в микропроцессор и позволяют оперировать с вещественными структурами как с единым числом. В Турбо Паскале также имеется несколько описателей вещественных типов, которые отличаются количеством занимаемых ячеек памяти, а, значит, диапазоном и точностью представления вещественных чисел. Для большинства решаемых задач в начале нам будет достаточно использовать только один тип real, занимающий в памяти шесть байт и способный хранить числа со знаком в диапазоне ±(2,9×10-39…1,7×1038) и 11-12 значащими цифрами в мантиссе.

С целыми и вещественными типами допускается выполнять следующие арифметические операции:

+ сложение;

– вычитание;

* умножение.

Для целых типов используются две операции целочисленного деления (результат — целое число):

div — целая часть результата деления;

mod — целый остаток от деления.

Примеры:

16 div 5 = 3

16 mod 5 = 1

Обратите внимание, что слова div и mod с обеих сторон отделяются пробелами.

Для вещественных чисел используется стандартная операция деления, обозначаемая символом «/». Результат этой операции — всегда вещественное число, даже если отсутствует дробная часть. Примеры:

16 / 5 = 3.2 20 / 4 = 5.0

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

6.25 7.0 -15.3333 0.01

Запись, в которой мантисса отделяется от порядка числа латинской буквой Е (или e), называется записью с плавающей точкой:

1.2Е07 = 1,2×107

-5Е+15 = -5×1015

0.01Е-4 = 0,01×10-4 = 10-6

8.754Е12 = 8,754×1012

Термин «плавающая» говорит о том, что хотя в мантиссе и указано положение десятичной точки, ее действительное положение зависит (плавает) от значения порядка.

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

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

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

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

1) 1Box, 2Text (начинаются с цифры)

2) Total sum, first big box (есть пробелы)

3) P-1, t-21, m&m (недопустимые символы)

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

1) Square1, Square2

2) Total_sum, first_big_box, _RedBlock

3) Triangle, TRIANGLE, triangle — один и тот же идентификатор

4) S, P1, t21, m3

Рекомендуется давать более информативные имена, как в первых 3-х примерах. Имена, аналогичные четвертому примеру, обычно используют в коротких программных блоках или для вспомогательных объектов. В больших программах вы просто рискуете забыть или запутаться, что такое, например m3 или m4, P5 или P6 и т.д.

Каждому имени переменной компилятор ставит в соответствие определенный адрес ОЗУ компьютера. Например, если ячейки переменных A, B и C компилятор распределил по адресам 30244, 30246 и 30248 соответственно, то выражение C = A + B будет откомпилировано примерно в следующие «машинные» команды:

1. В регистр AX переслать значение из ячейки с адресом 30244.

2. В регистр BX переслать значение из ячейки с адресом 30246.

3. К AX добавить BX.

4. Содержимое AX переслать по адресу 30248.

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

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

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

Итак, программа начинается с ключевого слова PROGRAM, за которым следует идентификатор программы:

Program Zarplata;

Program Letter_count;

Program SortOfNames;

Описание объектов-переменных начинается с ключевого слова Var (variable — переменная), за которым перечисляются имена всех используемых в программе переменных с указанием их типов, например:

var a: integer;

i, j: integer;

Sum, cena, kol: real;

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

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

Упрощенную структуру программы можно представить в виде

Program имя_программы;

Раздел описания данных и подпрограмм пользователя;

Begin

инструкция1;

...; тело программы

инструкцияN;

End.

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

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

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

Read (a); Read (kol, cena);

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

Операция присваивания обозначается символами двоеточие равно (без пробела) «:=» и позволяет ввести в переменную некоторое значение с помощью математического выражения или, точнее, вычислительной операции:

имя_переменной := выражение;

В простейшем случае выражение может быть обычной числовой константой или именем некоторой переменной. Примеры:

1) a := 5;

2) a := b;

3) a := b + c;

4) i := i + 1;

и т.п.

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

1) функции;

2) *, /, div, mod;

3) +, –

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

Sin(x) ® sin x

Cos(x) ® cos x

Arctan(x) ® arctg x

Sqrt(x) ®

Sqr(x) ® x2

Ln(x) ® ln x (натуральный логарифм)

Exp(x) ® ex (экспонента)

Abs(x) ® ½x½ (абсолютная величина)

Для других математических функций необходимо определять собственные подпрограммы-функции или вычислять их с помощью соответствующих математических формул, например, xy = ey×ln(x) ® exp(y*ln(x)). Примеры записи математических выражений в Паскале:

1) [image] ® x * (a + b) / (c – d) + y * (c + d) / (x * a – y * b);

2) [image] ® sqrt(sqr(sin(2*x*x + b)) / (sin(x – y) / cos(x – y)));

3) [image] ® ln(2*x + exp(x + y));

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

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

write (a+b, sqrt(x)); write(5); write(x, y);

Для вывода на экран монитора текстовых сообщений сам текст необходимо заключить в одиночные кавычки (апострофы):

write(¢Таблица результатов:¢);

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

writeln(sum);

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

Выражение:n:m,

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

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

Пусть курсор находится в начале первой строки. Рассмотрим примеры вывода, если

var a, b: integer;

x, y: real;

и а = 4, b = –2, x = 2.54, y = 1.3×103;

Инструкции

write (a, b); writeln(x, y)

выведут на экран:

4–22.54000000000Е+001.30000000000Е+03

и курсор перейдет на новую строку. А инструкции

Writeln (a:3, b:3); writeln(x:5:2, y:8:2);

выведут:

_ _ 4 _ -2

_ 2.54_1300.00

и курсор также перейдет на новую строку (символ _ означает пробел).

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

Вопросы и задания для самостоятельной работы

1. Что такое алфавит языка программирования? Из чего состоит алфавит Паскаля?

2. Для чего используется описание типов данных в программах на Паскале?

3. Как представляются вещественные числа в памяти компьютера?

4. Какие операции допустимы с целыми типами данных? Какие с вещественными?

5. Расскажите правила образования идентификаторов?

6. Объясните разницу между процедурами и функциями.

7. В чем заключается метод последовательного уточнения?

8. Приведите общую структуру программы на Паскале?

9. Каким образом можно ввести исходные данные для программы?

10. Укажите порядок выполнения оператора присваивания.

11. Запишите выражения на языке Паскаль:

a) [image] ;

b) [image] ;

c) [image] .

12. Запишите операторы вывода значения x и его синуса в следующем виде (считайте, что значение уже введено в ячейку x):

x = 2.154

sin x = 0.0376

13. Выведите на экран значения шести целых переменных a, b, c, d, e, f в две строки и три колонки, по 5 символов в каждой, так, чтобы значения первых трех переменных оказались в первой строке, а остальных трех — во второй.

3.3. Пример первой программы

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

Задача 1. Ввести длины трех сторон произвольного треугольника. На экран вывести значение его площади в формате с фиксированной точкой и одним знаком в дробной части.

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

Решение. Для вычисления применим формулу Герона:

где a, b, c — стороны треугольника; p — полупериметр треугольника. Формулы демонстрируют практически весь набор объектов-переменных, необходимых для составления программы.

Program Square_of_triangle;

Var a, b, c: real; {стороны треугольника}

p, S : real; {полупериметр и площадь}

Begin

Write (’Введите значения сторон a, b, c:’);

Read (a, b, c);

p := (a + b + c) / 2;

S := sqrt(p*(p-a)*(p-b)*(p-c));

Writeln (’S =’, S:6:1);

End.

Некоторые замечания. Программу принято записывать в виде блоков. Визуально блоки выделяются пробельными отступами. Ключевые слова, обозначающие начало и конец блока принято записывать на одном уровне (с одинаковых позиций), как, например, записаны слова Begin и End. Инструкции внутри блока обычно смещаются вправо относительно начала блока. Заголовок программы компилятором игнорируется, но сообщает человеку, читающему программу, название задачи. Поэтому старайтесь придумывать заголовки программ с соответствующим смыслом. Далее следует блок описания переменных. Их перечень соответствует математической модели решения, определяемой формулой Герона. Визуально, для удобства, переменные сгруппированы по назначению. Согласно указанному описанию, компилятор отведет по 6 байт памяти на каждую переменную. В фигурные скобки { и } заключен комментарий, т.е. пояснения к программе, которые компилятором игнорируются. После блока описаний следует основной программный блок, заключенный в слова Begin и End, часто называемый телом программы. Внутри блока последовательно выполняющиеся инструкции, записанные в разных строках, начинаются с одинакового отступа от начала строки. Первая инструкция write выводит на экран текстовое сообщение, заключенное в апострофы (одиночные кавычки). Такие сообщения принято называть подсказками, потому что они явно указывают на то, чего будет ожидать приостановленная программа. Инструкция read будет ожидать ввода с клавиатуры трех числовых значений. Их можно ввести в одной строке, отделив друг от друга пробелами и нажав в конце клавишу «Enter». Но можно вводить и по одному значению, нажимая «Enter» после каждого отдельного значения. Программа продолжит выполняться только после третьего ввода числового значения. Введенные числа будут помещены в ячейки указанных переменных в том порядке, в котором они записаны, т.е. первое введенное значение попадает в переменную a, второе — в b, третье — в c. Далее записана инструкция присваивания, согласно которой вычисленное значение полупериметра будет помещено в переменную p. Аналогично, вычисленное значение площади попадает в переменную S. Остается вывести это значение на экран. Сначала на экране будут напечатаны символы «S =», за которыми в 6 позиций будет выведено значение площади с одной цифрой после десятичной точки, например,

S =_ _ 25.6

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

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

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

a := b + c;

В этом примере записано две операции: присваивания и сложения. Для операции сложения левым операндом является переменная b, правым — c. Для операции присваивания левый операнд — переменная a, правый — все выражение b + c.

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

Вопросы и задания для самостоятельной работы

1. Для кого и чего предназначены комментарии в программе?

2. Поясните понятие «линейный алгоритм»?

3. Назовите все операторы в выражении a := sin(x) + cos(y) – exp(z). Укажите операнды для этих операторов.

4. Какие действия выполняет компилятор при чтении раздела описания переменных? При чтении тела программы?

5. Напишите программы для вычисления:

a) площади поверхности и объема шара по заданному радиусу;

b) площади кольца, внутренний радиус которого равен 5, а внешний — заданному числу r (r > 5);

c) общего сопротивления трех параллельно соединенных резисторов R1, R2, R3;

d) времени падения камня на поверхность земли с высоты h;

e) треугольник задан координатами своих вершин; найти периметр и площадь треугольника.

3.4. Ветвления

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

В Паскале всего две инструкции позволяют программировать альтернативы: if и case.

Первая из них — оператор ветвления if (если):

if условие then если условие то

операция1 операция1

else иначе

операция2; операция2;

Слова if, then и else в операторе ветвления являются ключевыми. В случае, если условие выполняется (является истинным), то далее выполнится операция1 и на этом выполнение оператора if закончится. В противном случае будет выполнена только операция2. Можно сказать, что операция1 является прямым путем решения, а операция2 – альтернативным. Пути решения поменяются местами, если условие сформулировать противоположным образом.

Если альтернативный путь решения не нужен, то используется сокращенный вариант оператора ветвления:

if условие then операция;

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

If условие1 then

операция1

else If условие2 then

операция2

else If условие3 then

операция3

…

else If условиеN then

операцияN

else

операция0;

Здесь выполняется только та операция, для которой первым окажется истинным соответствующее условие. Если не выполнится ни одно из условий, то будет выполнена операция0. Самый последний блок else может отсутствовать. Тогда при невыполнении всех условий ни одна из операций не выполнится. Данная конструкция напоминает ситуацию, когда мама посылает сына в магазин: «Купишь два белых батона, если батона нет, возьмешь один крендель с маком, если кренделя тоже нет, купишь три маленьких булочки, иначе можно купить грамм 300 галетного печенья. В противном случае ничего не бери. Хлеб у нас есть». Приоритет покупок соответствует порядку их перечисления так же, как и в приведенной конструкции, каждая предыдущая операция более приоритетная, чем следующая.

Обратите внимание, что каждая альтернатива содержит только одну операцию. А что же делать, если надо выполнить несколько? В Паскале есть правило, по которому везде, где используется одна операция, можно применить блок операций, заключенный в пару слов begin и end:

begin

операция1;

операция2;

... ;

операцияN

end;

Математически такой список можно записать в виде (операция1; операция2; …; операцияN);

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

Тогда стандартный вариант оператора if можно записать в виде:

If условие then

begin

oперация11;

операция12;

...;

операция1N

end

else

begin

oперация21;

операция22;

...;

операция2M

end;

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

case выражение of {выбор значения_выражения из}

список_значений_1: операция1;

список_значений_2: операция2;

…

список_значений_N: операцияN;

else операция0

end; {конец;}

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

Хотя оператор выбора применяется относительно редко, однако его использование позволяет получить более ясный алгоритм, а компилятор генерирует более эффективный машинный код. Поэтому по возможности старайтесь использовать оператор case вместо оператора if.

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

Рассмотрим пример программирования следующего алгоритма: если a превышает b на 1, то значение x уменьшить на 1; если a превышает b на величину от 2 до 5, то x увеличить на 1; если a превышает b на величину от 6 до 10 — x увеличить вдвое, в противном случае — поменять знак на противоположный (значения a и b — целые):

case a-b of

1: x := x-1;

2,3,4,5: x := x+1;

6,7,8,9,10: x := 2*x;

else x := -x

end;

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

n1..n2

Значение n1 в записи диапазона не должно превышать n2. Тогда приведенный пример можно записать короче:

case a-b of

1: x := x-1;

2..5: x := x+1;

6..10: x := 2*x;

else x := -x

end;

Условия в Паскале записываются при помощи математических символов сравнения:

> больше;

< меньше;

= равно;

< > не равно;

>= больше или равно (не меньше);

<= меньше или равно (не больше).

Операции сравнения имеют самый низкий приоритет в иерархии операций и располагаются после операций + и –. Значением условного выражения является логическая величина, которая принимает только два значения, обозначаемые ключевыми словами True (Истина) и False (Ложь). Компилятор кодирует значение False однобайтовым нулем, а True — любым однобайтовым ненулевым значением (обычно единица). Значение True говорит о том, что условие выполняется, False — не выполняется. К примеру, значением условного выражения

2 < a+b

будет True, если например, a=0 и b=3. Если же a=1 и b=1, то значением условия будет False.

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

На практике часто требуется программирование сложных условий, состоящих из нескольких простых. Например, требуется проверка одновременного выполнения двух отдельных условий (условие1 и условие2) или выполнения хотя бы одного из двух условий (условие1 или условие2). Операции и, или являются логическими операциями, которым соответствуют ключевые слова and (и) и or (или). Операцию and еще называют логическим умножением. По уровню приоритета она попадает в группу операций *, /, div, mod. Операцию or называют логическим сложением. Она попадает в группу операций + и –. Таким образом, операция and имеет более высокий приоритет, чем or. Результаты выполнения этих операций не трудно запомнить, используя следующие правила:

1) результат (выражение1 and выражение2) есть True (Истина), если истинны оба выражения (и первое, и второе); иначе — False (Ложь); можно еще представить результаты выражений нулем (Ложь) или единицей (Истина), которые после перемножения дадут искомый результат;

2) результат (выражение1 or выражение2) есть True (Истина), если истинно хотя бы одно из выражений (или первое, или второе), в противном случае результат — False (Ложь); аналогично, если сложить результаты выражений в виде нулей и единиц, то общий ненулевой результат даст общую истину, а нулевой — ложь.

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

(a+b > 2) and (y < 0)

(x > y) or (a = b)

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

Существует еще одна операция not (не), которая называется логическим отрицанием. Она позволяет менять значение следующего за ней операнда на противоположное. Например, если а = –2, то

not (a < 0)

даст значение False. Оператор not соответствует арифметическому унарному минусу (–а меняет знак значения a на противоположный) и так же, как и унарный минус, обладает высшим приоритетом, т.е. находится на вершине иерархии приоритетов операций.

Естественно, что можно конструировать и более сложные логические выражения. Для этого надо просто четко формулировать словесное условие, по которому легко записать логическое выражение. Например, требуется выполнить некоторую операцию только в том случае, если значения двух переменных a и b одновременно либо положительны, либо отрицательны, т.е.

a > 0 и b > 0 или a < 0 и b < 0.

Откуда логическое выражение будет выглядеть так:

(a > 0) and (b > 0) or (a < 0) and (b < 0)

Поскольку приоритет and выше, чем or, то сначала определяется результат одновременного выполнения «положительности» двух переменных, потом результат одновременного выполнения «отрицательности», после чего определяется окончательный результат всего выражения: либо они обе положительны, либо обе отрицательны, либо ни то ни другое.

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

Вспомнив примечание к этой задаче, можно записать решение:

Program Square_of_triangle_2;

Var a, b, c: real;

p, S : real;

Begin

write (’a, b, c: ’);

read (a, b, c);

if (a > b+c) or (b > a+c) or (c > a+b) then

writeln(’Числа не образуют треугольник’)

else begin

p := (a+b+c)/2;

S := sqrt(p*(p-a)*(p-b)*(p-c));

writeln (’S =’, S:6:1)

end;

End.

Задания для самостоятельной работы

1. Для приведенной программы Square_of_triangle_2 попробуйте изменить условие в операторе if на противоположное и записать новый вариант такого оператора. Это можно сделать двумя способами. Приведите оба.

2. Запишите условие, проверяющее попадание значения x в указанный диапазон:

a) x Î [2.5; 7.5);

b) x Î (–¥; –1] È [1; ¥);

c) x Î [–5; 0) È (0; 5];

d) x Î (–¥; 1) Ç (0; ¥);

e) x Î [0; 1] È (2; 3) È [4; 5).

3.5. Примеры решения задач с ветвлениями

Задача 2. Написать программу, моделирующую игру с подбрасыванием монеты: «Угадай, орел или решка?»

Решение. Значение «орел» будем моделировать числом 1, а «решка» — 0. Для генерирования случайных последовательностей чисел в Паскале используется специальная встроенная функция Random. Для ее работы в специальную область памяти перед началом работы программы загружается некоторое начальное числовое значение. Каждое новое обращение к функции Random позволяет встроенному алгоритму вычислить новое значение в зависимости от предыдущего. В результате получается последовательность чисел, которая в ходе одного сеанса работы программы выглядит как случайная. При новом запуске программы, если начальное значение функции Random не изменяется, получится опять такая же последовательность “случайных чисел”, поскольку начальное значение не изменилось, алгоритм вычисления тоже. Чтобы последовательность случайных чисел при каждом новом запуске программы была “более случайной”, нужно менять начальное значение функции Random. Это можно делать по специальной инструкции Randomize. Функцию Random часто называют “генератором случайных чисел”, а про оператор Randomize говорят, что он инициализирует (устанавливает начальное состояние) генератор случайных чисел. Существует две формы обращения к функции Random:

1) без аргумента: Random;

в этом случае функция возвращает случайное вещественное число в диапазоне от 0 до 1, точнее

0 £ Random < 1

2) с целым аргументом: Random(i);

функция возвращает случайное целое число в диапазоне от 0 до i, точнее

0 £ Random(i) < i

Как видно, верхняя граница в диапазон генерации не попадает.

Таким образом, для моделирования случайного подбрасывания монеты лучше в начале программы использовать оператор Randomize, а для получения значения “упавшей” монеты — вызов генератора случайных чисел с аргументом 2 (будет генерироваться случайная последовательность чисел 0 и 1).

Program Orel_reshka;

Var n: integer;

m: integer;

Begin

Randomize;

Writeln (’Подбрасываю монету…’);

n := Random(2);

Writeln (’Угадайте, орел (1) или решка (0)?’);

Read (m);

If n=m then

Writeln(’Поздравляю, вы угадали!’)

Else

Writeln (’К сожалению, вы не угадали.’);

End.

Это примитивная программа. Для каждого нового «подбрасывания» монеты требуется ее повторный запуск. Операция n:=Random(2) позволяет запомнить результат «подбрасывания» (генератора случайных чисел), а затем сравнить его с введенным вами значением.

Задача 3. Смоделировать игру в кости между человеком и компьютером.

Решение. Напомню, что кость — это кубик с нанесенными на его грани точками-очками. Их значения — от 1 до 6. Игроки обычно бросают пару костей.

Модель решения несложная. Сначала компьютер бросает пару костей, потом — вы. Очки на каждой кости моделируем генератором случайных чисел: Random(6) + 1. Функция выдает числа в диапазоне 0…5, а операция +1 корректирует их до 1…6. Поскольку фактически за сеанс игры бросаются 4 кости, необходимы 4 переменных для хранения их значений.

Program Kosti;

Var k1, k2, k3, k4: integer;

Begin

Randomize;

Writeln(’Бросаю кости…’);

k1 := Random(6)+1; k2 := Random(6)+1;

Writeln(k1, ’ и ’, k2);

Writeln(’Ваш ход. Для броска нажмите клавишу Enter’);

Read;

k3 := Random(6)+1; k4 := Random(6)+1;

Writeln(k3, ’ и ’, k4);

If k1+k2 > k3+k4 then

Writeln(’Я выиграл’)

Else If k1+k2 < k3+k4 then

Writeln(’Вы победили’)

Else

Writeln(’Переигровка. Запустите программу еще раз’);

End.

Главная задача пустого оператора Read — дождаться нажатия на клавиатуре клавиши «Enter». Никакие значения при этом никуда не помещаются.

Попробуйте ответить на простой вопрос: почему для моделирования броска кости нельзя использовать обращение к генератору случайных чисел в виде Random (7)?

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

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

Решение. Прежде всего, рассмотрим принцип работы шкалы подоходного налога. Исходным понятием является необлагаемый минимум (M), т.е. минимальная сумма заработка, от которой налог не берется. Эта величина определена законодательством Украины и составляла на 1 января 1999 г. M = 17 грн. Сама шкала (тоже определена законодательством) выглядит следующим образом:

1) с суммы заработка до 1 M включительно налог не берется;

2) с суммы свыше 1 M до 5 M включительно налог составляет 10%;

3) с суммы свыше 5 M до 10 M включительно — 15%;

4) с суммы свыше 10 M до 60 M включительно — 20%;

5) с суммы свыше 60 M до 100 M включительно — 30%;

6) с суммы свыше 100 M — 40%.

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

Предположим, нужно вычислить сумму подоходного налога (ПН) от суммы заработка 240 грн.:

Тогда ПН = (85–17)×0,1 + (170–85)×0,15 + (240–170)×0,2 = 6,8+12,75+14 = 33,55 грн.

Сама структура шкалы подоходного налога приспособлена для работы оператора выбора case. Поэтому возможен следующий алгоритм решения.

Program Nalog;

Const M = 17;

Var z: integer;

n: real;

Begin

writeln(’Введите целую сумму заработка: ’);

read(z);

case z of

0..M : n:=0;

(M+1)..5*M : n:=(z - M)*0.1;

(5*M+1)..(10*M) : n:=(z - 5*M)*0.15+ 0.4*M;

(10*M+1)..(60*M) : n:=(z - 10*M)*0.2 + 1.15*M;

(60*M+1)..(100*M): n:=(z - 60*M)*0.3 +11.15*M;

else n:=(z -100*M)*0.4 +23.15*M;

end;

writeln(’Сумма налога: ’, n:6:2);

End.

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

Задачи для самостоятельной работы

1. Определить максимальное из двух чисел x и y.

2. Определить минимальное из трех чисел a, b, c.

3. Даны действительные числа a, b, c, d. Если a £ b £ c £ d, то каждое число заменить наибольшим из них; если a > b > c > d, то числа оставить без изменения; в противном случае все числа заменяются их квадратами.

4. Даны положительные действительные числа x, y, z. Если треугольник с такими длинами сторон существует, то ответить, является ли он остроугольным.

5. Заданы целые положительные числа x и k, l, n, m. Определить, на какие из оставшихся чисел делится число x.

6. Пусть 1 января текущего года — пятница. Определить день недели для указанного дня d с номером месяца m.

3.6. Циклы

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

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

1) while условие do {пока условие выполнять}

операция;

Принято говорить, что от while до do расположен заголовок цикла, а далее размещается выполняемая часть (тело цикла). Как уже говорилось, вместо одной операции может присутствовать блок операций (составной оператор). В данном циклическом операторе сначала проверяется условие в заголовке цикла. Если оно выполняется, то выполняется операция в теле цикла. Если же условие не выполняется, то выполнение всего циклического оператора завершается. Однократное выполнение циклического оператора называется итерацией. Условие проверяется перед каждой итерацией цикла. Понятно, что невыполнение условия перед первой итерацией приведет к тому, что циклический оператор не выполнится вообще. Цикл while часто называют циклом с предусловием. Используйте его только тогда, когда вас устраивает только что описанная ситуация: возможен вариант невыполнения цикла вообще при начальном невыполнении условия цикла.

2) repeat {повторять }

операция

until условие; {до условие;}

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

repeat

операция1;

операция2;

…;

операцияN

until условие;

Цикл repeat иногда называют циклом с постусловием. Его использование целесообразно в тех случаях, когда необходимо выполнить некоторые инструкции, затем проверить, достигнут ли нужный результат, после чего либо снова повторять предыдущие инструкции, если результат не достигнут, либо завершить выполненные действия, если все в порядке. Простейший пример можно привести для случая, когда необходимо заставить пользователя программы ввести некоторые данные, отвечающие определенным условиям. Например, нужно ввести целое положительное число от 1 до 10. Словесный алгоритм ввода можно сформулировать так: «Повторять ввод числа до тех пор, пока оно не попадет в диапазон от 1 до 10».

Repeat

Write (’Введите число от 1 до 10: ’);

Read (a)

Until (a>=1) and (a<=10);

В данном примере, если пользователь по ошибке введет недопустимое число, то вновь будет повторен запрос на ввод числа. И так до тех пор, пока пользователь не введет значение в нужном диапазоне.

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

3) Вариант 1.

for i := n1 to n2 do {для i от n1 до n2 выполнить}

операция;

или

Вариант 2.

for i := n2 downto n1 do {для i от n2 вниз до n1}

операция; {выполнить ...}

Здесь перед началом выполнения цикла переменной i, играющей роль счетчика, присваивается начальное значение n1 или n2. Если n1 не превышает n2, то выполняется операция в теле цикла. Далее в переменную i помещается следующее порядковое значение (большее для первого варианта и меньшее для второго). Если текущее значение счетчика i оказывается не больше конечного значения для первого варианта и не меньше конечного значения для второго варианта, то операция в теле цикла выполняется, иначе цикл завершается. Примеры:

1) for i:=1 to 7 do операция; - операция повторяется 7 раз;

2) for j:=3 to 12 do операция; - операция выполнится 10 раз;

3) for k:=15 downto 10 do begin

операция1; операция2

end; - блок операций повторяется 6 раз;

4) for n:=5 to 5 do операция; - операция выполнится 1 раз;

5) for i:=5 to 4 do операция; - операция не выполнится ни разу;

6) for j:=2 downto 4 do

операция; - операция не выполнится ни разу;

Из примеров видно, что количество повторений цикла for равно n2–n1+1.

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

for i:=50 to 100 do begin

…

end;

Внутри такого цикла к каждому элементу массива можно обращаться по его порядковому номеру i.

И последние замечания к циклам. Для конструкций while и repeat существует опасность зацикливания, если в теле циклов не обеспечить соответствующего изменения объектов, проверяемых в условиях циклов. Например, при выводе значений квадратичной функции в виде:

x := 0;

while x <= 10 do begin

f := x*x;

writeln (f:5:2)

end;

произойдет зацикливание (бесконечное выполнение) для x=0. Подобная «забывчивость» типична для начинающих программистов. Для нормальной работы достаточно в теле цикла после вывода значения f на экран нарастить значение аргумента x, например:

x := x+0.5;

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

Вопросы и задания для самостоятельной работы

1. Что такое «зацикливание»?

2. Почему невозможно зациклить цикл for?

3. Запишите операторы, которые позволят вывести на экран 15 значений кубической функции f = x3 для x Î [–2; 2].

4. Задано действительное число a. Запишите операторы, позволяющие найти такое наименьшее число n, что 1 + 1/2 + ... + 1/n > a.

3.7. Примеры циклических программ

Задача 5. Определить количество цифр в натуральном числе.

Решение. Самый корректный способ — выделять из числа по одной цифре и считать их до тех пор, пока цифры не иссякнут. Выделение может быть основано на том, что при делении числа на 10 десятичная точка смещается влево на один знак (1507 / 10 = 150.7; 150.7 / 10 = 15.07 и т.д.), а при целочисленном делении вообще происходит отбрасывание последней цифры, поскольку остаток от деления не учитывается (1507 div 10 = 150; 150 div 10 = 15; 15 div 10 = 1 и т.д.). Если считать количество отбрасываний до тех пор, пока делимое не превратится в ноль, то как раз и получим количество цифр в числе. Последняя фраза подсказывает, что для циклического выделения цифр и их подсчета можно использовать конструкцию repeat...until.

Program Digit_count;

Var n, k: integer; {число и количество}

Begin

writeln (’Введите натуральное число: ’);

read (n);

k := 0; {начальное обнуление количества}

repeat {повторять}

n := n div 10; {отбрасывание цифры}

k := k + 1 {добавление 1 в количество}

until n = 0; {до тех пор, пока не получим 0}

writeln (’В числе ’, k, ’ цифр.’)

End.

Задача 6. Определить наибольший общий делитель двух натуральных чисел.

Решение. Эту задачу мы уже решали (см. п. 1.4) с использованием алгоритма Эвклида. Напомню его суть: «Пока числа не равны друг другу, большее из двух чисел заменять разностью большего и меньшего. По окончанию любое из двух чисел будет являться наибольшим общим делителем (НОД)». Опять же ключевая фраза алгоритма подсказывает, что в программе следует использовать циклическую конструкцию while (пока).

Program NOD;

Var a, b: integer;

Begin

write (’Введите два натуральных числа: ’);

read (a, b);

while a <> b do

if a > b then a := a – b

else b := b – a;

writeln (’НОД=’, a)

End.

Поскольку в тело цикла входит только один условный оператор, операторные скобки begin и end отсутствуют. Если будут введены два одинаковых числа, то цикл while не выполнится ни разу, и в качестве результата будет выдано одно их исходных чисел, что соответствует действительности.

Задача 7. Вычислить значение произведения [image] .

Решение. Вычислять можно методом накопления в ячейку некоторой переменной, с начальным значением, равным 1. Поскольку количество элементов произведения указано точно, то лучше всего использовать цикл for.

Program Multiply;

Var p: real;

i: integer;

Begin

p := 1;

for i := 2 to 100 do

p := p * (i+1) / (i+2);

writeln (’Произведение=’, p)

End.

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

Задачи для самостоятельной работы

1. Вычислить факториал натурального числа n. Факториал числа n обозначается как n! и означает 1×2×3×...×n.

2. Дано целое число m > 1. Получить наибольшее число k, при котором 4k < m.

3. Для чисел Фибоначчи u1, u2, ... справедливо соотношение u1=1; u2=1; uk=uk-1+uk-2 (k=3, 4, 5, ...). Определить заданное n-е число Фибоначчи.

4. Пусть n — натуральное число и пусть n!! означает 1×3×5×...×n для нечетного n и 2×4×...×n для четного n. Для заданного натурального n вычислить:

a) n!!;

b) (–1)n+1n!!

5. Определить, является ли заданное натуральное число палиндромом, т.е. его прямая и обратная запись совпадают (например, 12344321, 60506 и т.п.).

6. Задано натуральное число n. Найти все простые числа от 2 до n (простые числа делятся только сами на себя и на единицу).

7. Вычислить бесконечную сумму с заданной точностью e (e > 0). Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем e, — это и все последующие слагаемые можно не учитывать. Вычислить:

a) [image] ;

b) [image] ;

c) [image] .

3.8. Массивы

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

Зарплата

 | Сумма
Андреева | 175.40
Борисов | 212.38
... | ...
Шаповалов | 194.50
Яценко | 235.00

Итоги

 | Январь | Февраль | ... | Ноябрь | Декабрь
Андреева | 75 | 68 | ... | 73 | 42
Борисов | 105 | 118 | ... | 97 | 102
... | ... | ... | ... | ... | ...
Шаповалов | 72 | 85 | ... | 105 | 90
Яценко | 120 | 158 | ... | 110 | 145

Как видно, у таблицы должно быть имя («Зарплата», «Итоги»), по которому к ней можно было бы обращаться. Данные таблицы Зарплата состоят, по сути, из одного столбца цифр. Заголовок столбца «Сумма» мог бы, в принципе, и отсутствовать, поскольку и без него было бы понятно, что в ячейках таблицы находятся суммы зарплат сотрудников. А вот заголовки строк («Андреева», «Борисов», ...) — обязательны, потому что без них невозможно определить, к кому же относится конкретная сумма. Перед вами типичный пример одномерной таблицы, данные которой можно представить либо одним столбцом, либо одной строкой (кому как удобней). Данные таблицы Итоги представлены двухмерной таблицей (по строкам и столбцам), причем как заголовки строк, так и заголовки столбцов обязательны для того, чтобы можно было указать на любую ячейку этой таблицы, например, «данные Борисова за ноябрь».

Подведем итоги. У одномерных таблиц каждая ячейка должна иметь некоторое обозначение («этикетку»), по которому к этой ячейке можно было бы обратиться. У двухмерных таблиц подобные обозначения должны иметь все строки и все столбцы. Указав нужную строку и столбец, мы тем самым определяем ячейку, на пересечении которых она находится. Поскольку обращение к любой переменной осуществляется по имени, естественно, что необходимо еще указывать и имя таблицы, из которой извлекаются данные. Думается, нетрудно разобраться, обращение к каким данным предполагают следующие обозначения: Зарплата[Шаповалов] или Итоги[Яценко, Январь].

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

Массив в Паскале описывается в виде

array[диапазон_индексов] of тип_ячеек;

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

var A: array[1..10] of integer;

По этому описанию в памяти компьютера будет отведено место для десяти ячеек целого типа (т.е. 20 байт) с индексами (номерами) от 1 до 10:

A

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10

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

var b: array[1..3, 1..5] of real;

Для массива b в памяти будет отведено 15 ячеек вещественного типа (15 * 6 = 90 байт), которому можно поставить в соответствие таблицу из трех строк и пяти столбцов:

b | 1 | 2 | 3 | 4 | 5
1 |  |  |  |  |
2 |  |  |  |  |
3 |  |  |  |  |

При обращении к нужной ячейке также нужно указать имя массива с индексом необходимой строки и столбца, например: b[1, 4].

Обратите внимание, что диапазон значений индексов в описании массивов обозначается двумя стоящими подряд точками.

Если вернуться к примерам таблиц Зарплата и Итоги и, для примера, принять количество сотрудников равным 20, а также уточнить, что в итогах указывается количество штук некоторых изделий, то подобные таблицы в программе для обработки данных могли бы быть объявлены следующим образом:

var Zarp: array[1..20] of real;

Itog: array[1..20, 1..12] of integer;

Первый массив Zarp можно представлять в своем воображении либо одной строкой, либо одним столбцом, а массив Itog в виде таблицы из 20 строк и 12 столбцов. Небольшое неудобство заключается в том, что сотрудникам придется ставить в соответствие порядковые номера от 1 до 20, а месяцам — номера от 1 до 12.

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

Задача 8. В течение недели ежедневно проводились замеры наружной температуры воздуха. Определить среднюю дневную температуру.

Решение. Средняя температура = сумма всех температур / количество замеров. Можно, конечно же, сразу при вводе каждой температуры добавлять ее в некоторую переменную. По окончанию ввода будем иметь сумму всех температур и, разделив ее на количество дней, можно тут же выдать готовый результат. Поскольку ввод температур — циклический процесс, то, зная количество дней в неделе, можно воспользоваться циклом for:

program Temperatura1;

var sum, t: real;

i : integer;

begin

sum := 0;

for i := 1 to 7 do begin

write (’Температура ’, i, ’-го дня: ’);

read (t);

sum := sum + t;

end;

writeln (’Средняя t=’, sum/7:4:1)

end.

Заметьте, что в качестве результата указано выражение sum / 7, результат которого выводится в указанном формате. Однако в данном примере обработка получилась совмещенной с вводом данных. В реальности чаще всего ввод данных предшествует обработке и разделен с ней по времени. Например, один человек выполняет замеры температуры и заносит ее в таблицу, а другой человек после окончательного заполнения таблицы производит всю необходимую обработку. Поэтому самым корректным алгоритмом обработки будет тот, который сначала позволит ввести все исходные данные в некоторую таблицу, а затем обработает эту таблицу и выдаст конечный результат. Ясно, что таблица будет одномерной из 7 ячеек вещественного типа, а индексами ячеек будут порядковые номера дней недели. Для получения суммы придется просканировать таблицу. Поскольку обращение к каждой ячейке осуществляется по индексу, то для сканирования достаточно организовать циклическое изменение индекса от первого до последнего значения. Для этого самым подходящим является цикл for. Второй вариант программы:

program Temperatura2;

var sum: real;

i : integer;

t : array[1..7] of real;

begin

for i := 1 to 7 do begin

write (’Температура ’, i, ’-го дня: ’);

read (t[i]);

end;

sum := 0;

for i := 1 to 7 do

sum := sum + t[i];

sum := sum / 7;

writeln (’Средняя t=’, sum:4:1)

end.

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

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

const WeekDays=7; N=12;

K=20; M=N*K;

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

Задача 9. В линейном массиве подсчитать количество четных и отдельно количество отрицательных значений.

Решение. Судя по условию задачи, размер массива принципиальной роли не играет. Поэтому его можно задать любым. Поскольку термин «четный» применим только к целым числам, тип ячеек массива должен быть integer. Любое четное значение может быть как положительным, так и отрицательным, и наоборот. Поэтому каждую ячейку массива нужно отдельно проверять как на четность, так и на «отрицательность». Четность легко проверить как равенство нулю остатка от деления на 2 (операция mod).

program Count_of_not_odd_values;

const N=10; {размер массива}

M=2; {на это число будем делить}

var a: array[1..N] of integer;

i: integer; {счетчик для цикла}

k1, k2: integer; {количества}

begin

{ввод исходных данных в массив}

for i:=1 to N do begin

write (’a[’, i, ’]=’);

read (a[i]);

end;

k1:=0; k2:=0; {начальное обнуление}

{сканирование массива}

for i:=1 to N do begin

if (a[i]<>0) and (a[i] mod M = 0) then k1:=k1+1;

if a[i] < 0 then k2:=k2+1

end;

{вывод результатов}

writeln (’Кол.четных=’, k1, ’ Кол.отриц.=’, k2)

end.

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

Задача 10. В линейной таблице определить максимальное значение.

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

program Maximum;

const N=10; {размер массива}

var a: array[1..N] of real;

i, m: integer; {текущий и макс. индексы}

begin

{ввод данных в массив}

for i:=1 to N do begin

write(’a[’, i, ’]=’); read(a[i])

end;

m:=1; {пока максимум в 1-ой яч.}

for i:=2 to N do {сканирование}

if a[i] > a[m] then m:=i;

writeln(’Максимум=’, a[m]:4:1, ’ в ячейке No.’,m)

end.

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

Задача 11. Определить сумму значений элементов прямоугольной (двухмерной) таблицы.

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

program Tabl_sum;

const N=3; M=4; {кол-во строк и столбцов}

var a: array[1..N, 1..M] of real;

sum: real;

i, j: integer; {индексы строк и столбцов}

begin

{ввод данных в массив}

for i:=1 to N do {сканирование по строкам}

for j:=1 to M do begin {сканир-е по столбцам}

write(’a[’, i, ’,’, j, ’]=’);

read(a[i,j])

end;

{обработка}

sum:=0;

for i:=1 to N do

for j:=1 to M do

sum := sum + a[i,j];

writeln(’Сумма =’, sum:5:2)

end.

Постарайтесь вникнуть в технологию работы вложенных циклов. Цикл по j находится внутри цикла по i. Поэтому сначала устанавливается индекс строки, равный 1. Затем начинают сканироваться столбцы без изменения индекса строки, т.е. идет обращение к ячейкам a[1, 1], a[1, 2], ..., a[1, M]. Таким образом, после окончания цикла по j первая строка массива уже просканирована. Поскольку с окончанием цикла по j заканчивается и цикл по i, то далее выполняется вторая итерация первого цикла, т.е. для i=2. Это равносильно переходу ко 2-ой строке. Первый же оператор внутри этого цикла — это опять начало сканирования столбцов от 1 до M, т.е. идет обращение к ячейкам a[2, 1], a[2, 2], ..., a[2, M], и сканируется вторая строка. Последней будет просканирована строка a[N, 1], a[N, 2], ..., a[N, M].

Задача 12. В прямоугольную таблицу сведены итоговые данные четырех отделов с 1992 по 1998 годы. Итоги отражают объемы продукции каждого отдела в долларах. Определить отдел, имеющий максимальный общий объем за все годы.

Решение. Номера строк будут отражать номера отделов (с 1-го по 4-й), а номера столбцов (с 92-го по 98-й) — диапазон указанных лет. В Паскале индексы совсем не обязательно должны начинаться с единицы. Главное — чтобы диапазон значений занимал непрерывную числовую последовательность. По разности крайних индексов компилятор автоматически определяет количество столбцов, равное 7. Для данной задачи это весьма существенный момент, поскольку обозначение Itog[1, 93] более понятно, чем Itog[1, 2], если бы столбцы обозначались числами от 1 до 7. По общему принципу поиска максимумов, необходимо сначала отдельно обработать результаты 1-го отдела и запомнить его номер и общую сумму как максимальные. Далее сканируется массив со 2-й строки и в конце обработки каждой строки полученная сумма сравнивается с максимальной. Если она больше, то запоминается новый результат и, соответственно, номер этого отдела.

program Max_itog;

const N=4; {кол. отделов}

Y1=92; Y2=98; {диапазон лет}

var Itog: array[1..N, Y1..Y2] of real;

i, j: integer;

MaxSum: real; {макс. результат}

m: integer; {отдел с макс. рез-ом}

Sum: real; {для текущ. результатов}

begin

{ввод исходных данных}

for i:=1 to N do begin

writeln(i, ’-й отдел’);

for j:=Y1 to Y2 do begin

write(j, ’-й год: ’); read(Itog[i, j])

end;

end;

{обработка 1-го отдела}

Sum:=0;

for j:=Y1 to Y2 do Sum := Sum + Itog[1,j];

m:=1; MaxSum:=Sum;

{поиск максимальной суммы}

for i:=2 to N do begin

{обработка i-го отдела}

Sum:=0;

for j:=Y1 to Y2 do Sum := Sum + Itog[i, j];

if Sum > MaxSum then begin

m:=i; {запоминаем отдел}

MaxSum:=Sum {запоминаем его результат}

end;

end;

{вывод результата}

writeln(’Макс.результат=’, MaxSum:7:2, ’ для ’, m, ’-го отдела’)

end.

Обратите внимание, что переменная Sum обнуляется внутри цикла обработки каждой строки перед началом суммирования столбцов для i-го отдела. Для следующего отдела Sum опять будет обнулена, и начнется накопление итогов уже для этого отдела.

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

Постарайтесь не путать обозначения переменных типа a1, a2 и a[1], a[2]. Первый вариант — это просто имена отдельных переменных. Указывая цифры в составе имени, как бы подчеркивают однотипное назначение этих переменных, однако выполнение операций типа циклического суммирования, умножения и т.п. с ними не предполагается. Второй вариант — это обращение к первым двум ячейкам массива a. С назначением массивов мы уже немного разобрались. Специалисты иногда говорят, что первый вариант — это обычные переменные, а второй вариант — индексированные переменные, т.е. считают, что массив — это индексированная переменная.

При описании переменных-массивов можно использовать именованные константы, которые обязательно должны быть определены (описаны) до этого. Поскольку Паскаль является однопроходным построчным компилятором, общий принцип таков: если в очередной строке программы используется (не описывается!) какая-либо константа или переменная, она должна быть понятна компилятору, т.е. предварительно описана. В противном случае компилятор обычно выдает сообщение об ошибке типа “Unknown identifier” (Неизвестный идентификатор). Так, если оформить раздел описаний программы в виде

Var a: array[1..N] of real;

Const N=100;

то компилятор, остановившись в первой строке на идентификаторе N в обозначении [1..N], выдаст именно такое сообщение.

Задачи для самостоятельной работы

1. В линейном массиве определить количество значений, меньших среднего.

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

3. В прямоугольном массиве размером N ´ M обнулить все ячейки, находящиеся в K-ой строке и L-ом столбце, кроме ячейки, лежащей на пересечении этой строки и столбца.

4. Обнулить все элементы обеих диагоналей квадратной матрицы.

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

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

3.9. Стандартные простые типы данных

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

С числовыми стандартными типами integer и real мы уже знакомы. К стандартным также относятся еще два типа данных: char и boolean.

Литерный (символьный) тип char (от character — символ) предназначен для хранения одного символа из стандартной таблицы вычислительной системы. Такая таблица в MS-DOS содержит 256 строго упорядоченных символов (цифр, букв, специальных символов), каждый из которых кодируется целым числом — порядковым номером символа в таблице. Поскольку 256 = 28, т.е. требует 8 бит (один байт), то для кода любого символа, а, значит, и для типа char, требуется один байт памяти. Коды занимают диапазон 0..255. Таким образом, если в ячейке некоторой символьной переменной хранится некоторый числовой код, то Паскаль интерпретирует его как символ с этим кодом. Чтобы не запоминать коды всей стандартной таблицы, значения в переменные принято помещать прямо в виде символов, заключенных в апострофы:

a:=¢R¢; b:=¢w¢;

Компилятор при этом сам преобразует и хранит значения в виде соответствующих кодов. При выводе на экран монитора или принтер значений символьных переменных коды также будут преобразованы в изображения соответствующих символов. Желательно запомнить порядок расположения отдельных групп символов в стандартной таблице: ...пробел...0..9...A..Z...a..z...А..Я...а..я. В этой последовательности две точки .. используются как разделители диапазонов, а три точки ... указывают на то, что здесь могут размещаться различные группы специальных символов. Таким образом, пробел имеет самый меньший код по сравнению с цифрами и буквами, а малая буква кириллицы я — максимальный код. Большие и малые буквы имеют различные коды.

Для данных типа char допустимы только операция соединения («склейки»), обозначаемая символом «+», и операции сравнения. Например:

a:=¢G¢; b:=¢t¢;

writeln(a+b); {выведет на экран «Gt»}

if a > b then ... {условие ложно, т.к. ¢G¢ < ¢t¢}

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

Нужно четко различать числовые значения, например 5, и символьные значения, например ¢5¢. В первом случае это целое число (в двоичной системе 00000101), а во втором — это символ, код которого равен 53 (в двоичной системе 00110101). Причем операция + для значений этих типов выполняется по-разному, а, например, операции –, * разрешены для значений целого типа и запрещены (не имеют смысла) для значений символьного типа.

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

Логический (булевский) тип boolean (английский математик Дж. Буль считается основоположником алгебры логики) занимает в памяти один байт и принимает только два значения, обозначаемые ключевыми словами true (истина) и false (ложь). В памяти компьютера значение false кодируется числом 0, а true — любым ненулевым значением (обычно 1). Значения этого типа нельзя ввести с клавиатуры или вывести на экран. Переменные типа boolean предназначены только для запоминания результатов логических выражений, к которым также относятся выражения отношения (условия). Пример:

var a, b: integer;

u1, u2: boolean;

...

a := -5; b := -10;

u1 := a>b;

u2 := (a<0) and (b<0);

if u1 and u2 then a:=-a else b:=-b;

...

Здесь в переменную u1 запоминается результат операции сравнения a>b, т.е. true. В переменную u2 запоминается результат того, что a и b одновременно отрицательные, т.е. true. В операторе if логическое выражение означает одновременную истинность u1 и u2. Так как значение этого выражения также будет true (истина), то в результате значение переменной a поменяет свой знак.

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

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

–47; предыдущее –48; последующее –46;

¢П¢; предыдущее ¢О¢; последующее ¢Р¢;

False; предыдущее —нет; последующее True.

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

pred(x) — возвращает элемент, предшествующий x в списке значений типа; если предшествующего элемента не существует, то возникает ошибка с прерыванием программы;

succ(x) — возвращает значение, следующее за x в списке значений типа; если следующего элемента не существует, то возникает ошибка с прерыванием программы.

Примеры:

write(pred(12)); {на экран выведется «11»}

write(succ(¢s¢)); {на экран выведется «t»}

f1:=true; f2:=succ(f1); {ошибка с прерыванием программы}

Для объектов типа char можно использовать также стандартные функции ord(x), которая возвращает числовой код символьной величины x, и chr(n), которая, наоборот, возвращает символ по указанному коду n.

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

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

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

1. Что выведет на экран оператор write(¢2¢+¢1¢+¢3¢)?

2. Что выведет на экран оператор write(¢b¢ > ¢E¢)?

3. Определите значение переменной F после следующих операций: ch := ¢g¢; F := (ch >= ¢A¢) and (ch <= ¢Z¢) or (ch >= ¢0¢) and (ch <= ¢9¢).

4. Определите значение переменной G, если A := True; B := False; G:= A < B.

5. Напишите программу, которая обязательно потребует ввести любую заглавную латинскую букву и преобразует ее в соответствующую малую букву. Для преобразования можете воспользоваться разностью кодов любых соответствующих букв, например, ord(¢g¢) – ord(¢G¢). Такую разность можно ввести в программе как константу, например

const diff = ord(¢a¢)-ord(¢A¢);

3.10. Простые нестандартные типы данных

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

type имя_типа = описание_типа;

Здесь мы познакомимся с использованием двух простых типов данных: ограниченным и перечислимым.

Ограниченные типы

Если объект некоторого перечислимого типа принимает значения только в некотором ограниченном диапазоне, то имеет смысл объявить это в программе, указав нижнюю и верхнюю границы диапазона через разделитель диапазона «..» (две точки):

type имя_типа = Min..Max;

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

type year = 1900..2010;

numbers = 1..100;

letters = ¢A¢..¢Z¢;

index = 0..50;

matrix = array[index, index] of real;

var y: year;

n1, n2: numbers;

L: letters;

A: matrix;

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

Ограниченные типы ни в коей мере не экономят память компьютера (для переменной y будет отведено 2 байта так же, как и для типа integer, а для переменной L — один байт, как и для типа char). Однако они дают возможность компилятору в ходе работы программы более жестко контролировать работу с этими переменными и сообщать об ошибках в случаях выхода значений за пределы диапазона.

Перечислимые типы

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

type имя_типа = (имя1, имя2, ..., имяN);

Константы-идентификаторы имя1, имя2, ..., имяN образуются по общепринятым правилам имен идентификаторов. Примеры:

type day = (monday, tuesday, wednesday,

thursday, friday, saturday, sunday);

color = (red, orange, yellow, green, blue, violet);

figure = (triangle, square, circle);

transport = (train, bus, car, ship, airplain);

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

Во внутреннем представлении для кодирования значений перечислимого типа отводится один байт. Именам-идентификаторам присваиваются коды по порядку, начиная с нуля. Поэтому максимальное количество значений перечислимого типа равно 256 (от 0 до 255). К значениям перечислимого типа применимы только операции сравнения (>, <, =, <=, >=), которые осуществляются по значениям их кодов. Так

friday < sunday

circle > square

Если, к примеру, определены переменные

var d: day;

c: color;

f: figure;

t: transport;

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

d := monday;

c := green;

f := square;

t := airplain;

Очевидно, что они намного информативней, чем операции типа

d := 0; c := 3; f := 1; t := 4;

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

f := f + 1;

d := c + t;

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

succ(f) — след. значение;

pred(t) — пред. значение.

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

имя_типа(код);

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

figure(1) = square;

transport(0) = train.

Задача 13. Подсчитать недельный заработок работника при условии, что он работал 7 дней в неделю по 8 часов. Тариф (оплата за 1 час) = 1,20 в рабочие дни и в 2 раза выше в выходные дни.

Program Salary_Of_Week;

type day = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);

salary = real;

const tarif = 1.2;

workday = 8;

holiday = 2 * workday;

var d: day;

s: salary;

Begin

s := 0;

for d := Mon to Sun do begin

if d < Sat then

s := s + tarif * workday

else

s := s + tarif * holiday;

end;

writeln (’Зарплата за неделю = ’, s:6:2);

End.

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

Поскольку перечислимые значения упорядочены, компилятор четко «знает», что означает в цикле «от Mon до Sun». До пятницы (Fri) включительно значение зарплаты вычисляется по «норме» рабочего дня (workday), а в субботу и воскресенье — по «норме» выходного (holiday).

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

Очень часто значениями перечислимого типа индексируют массивы. Так, возможно объявление массива температур за неделю в виде var T: array[day] of real; (автоматически будет создан массив из семи вещественных ячеек). Тогда обращение к ячейке в виде T[Wed] — достаточно наглядно и информативно.

И последнее. Цикл for при изменении счетчика выполняет на самом деле не операции +1 или –1, а функции succ или pred.

Вопросы и задания для самостоятельной работы

1. Для типов данных day, color, figure, transport (п. 3.10.2) определите значения следующих выражений:

a) pred (saturday);

b) succ (green);

c) triangle > circle;

d) bus < ship.

2. Для чего предназначены ограниченные типы данных? Перечислимые?

3. Имеется набор фигур, например, cube (куб), ball (шар), pyramid (пирамида) и cylinder (цилиндр), а также набор темных и соответствующих им светлых цветов: Black, Grey, Blue, LightBlue, Brown, Yellow, Red, Rose (черный, серый, синий, голубой, коричневый, желтый, красный, розовый). Напишите программу, которая сформирует массив с раскраской фигур по дням недели. Для рабочих дней назначьте фигурам темные цвета, а для выходных — соответствующие светлые. Для выбора начального цвета каждой фигуры воспользуйтесь генератором случайных чисел. Будьте внимательны с диапазоном допустимых кодов. Выведите результаты в следующем виде:

Куб: рабочие – коричневый, выходные – желтый

Шар: рабочие – красный, выходные – розовый

...

Для вывода перечислимых значений пользуйтесь оператором if или case, например, if c = red then write(′красный′).

3.11. Тип данных String

Любые тексты обрабатываются в программах как строки символов. В стандартном Паскале (у Вирта) отсутствуют специальные структуры для работы с текстами, поэтому приходится конструировать данные как массивы символов (array[...] of char). В Турбо Паскале фирмы Борланд используется встроенный тип данных string (строка) и несколько встроенных функций и процедур для работы со строками, которые обеспечивают большие удобства для обработки текстов. Так же, как и массивы, тип string является составным типом, поскольку одновременно может хранить множество различных символов.

Строковая переменная объявляется следующим образом:

Var s: string[длина];

Здесь «длина» определяет максимальную длину переменной s и задается числом байтового диапазона. Поэтому длина строки в Паскале может находиться в пределах 0..255. Если длина при объявлении переменной опущена, то по умолчанию считается, что она максимальна и равна 255. Например:

Var s1, s2: string[30];

fragm1: string[255];

fragm2: string[45];

st: string;

В этих примерах максимальная длина строк fragm1 и st одинакова и равна 255.

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

s1 := ’Первый пример’;

то в памяти компьютера содержимое переменной s1 будет выглядеть примерно следующим образом:

Код 13 в нулевом байте строки говорит о том, что текущая длина строки равна 13 символам (хотя максимальная может достигать 30). От 14 до 30 элемента в символьном массиве может находиться любой «мусор» (любые коды, оставшиеся после неочищенной памяти). Во всех операциях с такой переменной учитываться будут только первые 13 символов, остальные будут игнорироваться. К любому символу строки можно обращаться как к элементу массива, т.е. s1[1]= ¢П¢, s1[2]= ¢е¢ и т.д. Значение строковой переменной может быть пустым, т.е. не содержать ни одного символа. В этом случае текущая длина переменной будет равна нулю. Пустую строку принято обозначать как ¢¢ (подряд два апострофа без пробела). Тогда, если s:=¢¢, то length(s)=0.

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

s1:=¢пере¢; s2:=¢ход¢;

s3:=s1+s2; {s3=¢переход¢}

s1:=¢120¢; s2:=¢250¢;

s3:=s2+s1; {s3=¢250120¢}

s1:=¢Петр¢; s2:=¢Роман¢;

s1 < s2 {Истина, т.к. ¢П¢ < ¢Р¢}

s1:=¢Артур¢; s2:=¢Артемида¢;

s1 < s2 {Ложь, т.к. ¢у¢ > ¢е¢}

s1:=¢¢; s2:=¢АБВГД¢;

s1 < s2 {Истина, т.к. ничто всегда <, чем что-то}

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

var s: string[15];

...

s := ¢Сидоров Александр Иванович¢;

{s получит значение ¢Сидоров Алексан¢}

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

В Турбо Паскале имеются следующие встроенные процедуры и функции для работы со строковыми данными:

length(s) — функция, возвращающая текущую длину строковой величины s; фактически функция возвращает значение ord(s[0]), т.е. код нулевого элемента;

copy(s, p, k) — функция, возвращающая фрагмент (копию) строки s, начиная с позиции p длиной k символов;

delete(s, p, k) — процедура, преобразующая строку s путем удаления из нее фрагмента, начинающегося с позиции p, длиной k символов;

insert(f, s, p) — процедура, преобразующая строку s путем вставки в нее фрагмента f, начиная с позиции p;

pos(f, s) — функция, обнаруживающая первое появление фрагмента f в строке s и возвращающая позицию первого символа фрагмента в строке; если фрагмент не найден, то возвращается 0;

str(x, s) — процедура, преобразующая числовое значение x в строковое и помещающая результат в строковую переменную s; например, если x=2.516, то после str(x:4:2, s) переменная s получит значение ¢2.52¢; как видно, форматирование числовой величины влияет на значение строковой величины;

val(s, x, code) — процедура, преобразующая символы, находящиеся в строковой величине s, в числовое значение, которое помещается в числовую переменную x; в целую переменную code помещается результат (код) преобразования, который равен нулю, если преобразование прошло успешно, или номеру первого ошибочного символа в строке s; например, если имеем

var s: string; n: integer; c: integer;

то после

s:=¢0705¢; val(s, n, c);

получим n=705 и c=0; а после

s:=¢28.5¢; val(s, n, c);

c=3 и содержимое n не изменится, поскольку n — целая величина и для нее символ «.» (точка) является ошибочным; аналогично, после

s:=¢1997г.¢; val(s, n, c);

c=5 и n также не изменится; а вот после

val(copy(s, 1, 4), n, c);

получим n=1997 и c=0.

Вопросы и задания для самостоятельной работы

1. Что находится в нулевом элементе строки: число или символ?

2. Какой может быть допустимая длина строки?

3. Какие операции допустимы со строками?

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

5. Каким будет значение строковой переменной Name с объявленной длиной = 10, если ей присвоить строку ¢Галина Ивановна¢?

6. Запишите операции, которые выделят число из строки s = ¢Оле исполнилось 12 лет¢, и поместят его в целую переменную age.

3.12. Примеры программ обработки строк

Задача 14. Подсчитать количество заданных символов в некоторой заданной строке текста.

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

Program Letter_count;

{подсчет количества символов}

Var s: string; {исходная строка текста}

c: char; {заданный символ}

i, k: integer; {счетчики цикла и символов}

Begin

writeln(¢Введите исходную строку текста:¢);

readln(s);

write(¢Введите символ: ¢); readln(c);

k := 0;

for i := 1 to length(s) do

if s[i] = c then k := k + 1;

writeln(¢В строке ¢, k, ¢ символов «¢, c, ¢».¢);

End.

В алгоритме используется цикл for, поскольку количество просматриваемых символов фиксировано. Функция length(s) возвращает длину строки, а, значит, и номер последнего символа.

Задача 15. В строке текста из всех одинаковых рядом стоящих символов оставить только по одному символу. Так, например, в строке ¢абвггг дее жжзик¢ должно остаться ¢абвг де жзик¢.

Решение. Одинаковые рядом стоящие символы — это когда находится символ, справа от которого (т.е. следующий) есть такой же. А теперь представьте себе, как бы вы выполняли эту же работу вручную с помощью текстового редактора: курсор устанавливается на первый из повторяющихся символов и нажимается клавиша «Delete» (удалить) до тех пор, пока справа еще есть символы и они совпадают с текущим. Продолжается это до тех пор, пока курсор не дойдет в поиске повторяющихся символов до конца строки. В данной задаче цикл for использовать нельзя, поскольку в процессе удаления символов длина строки уменьшается, причем заранее неизвестно насколько.

Program Repeatings_deletings;

{удаление повторов}

Var s: string;

i: integer;

Begin

writeln(¢Строка: ¢); readln(s);

i := 1; {стали на первый символ}

while i < length(s) do begin

if s[i] = s[i+1] then

delete(s, i, 1) {«нажимаем» Delete}

else

i := i + 1 {«переводим курсор вправо»}

end;

writeln(¢Результат:¢); writeln(s);

End.

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

Задача 16. В строке текста слова могут быть разделены произвольным числом пробелов. Подсчитать количество слов.

Решение. Если бы слова разделялись одиночными пробелами, то задача свелась бы к задаче 14, где надо было бы считать количество пробелов в строке. После завершения сканирования к счетчику пробелов нужно было бы еще добавить единицу (подумайте почему). Возможно решение, когда сначала реализуется решение задачи 15, только при удалении нужно дополнительно проверять, чтобы удаляемый символ был пробелом ((s[i]=s[i+1]) and (s[i]=¢ ¢)). А затем опять используется алгоритм задачи 14. Однако такое решение может оказаться неприемлемым, если ставится требование неизменности исходного текста. Попробуем рассмотреть модель строки в следующем виде:

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

Program Words_count;

{подсчет количества слов}

Var s: string;

i, k: integer;

Begin

writeln(¢Строка:¢); readln(s);

k := 0;

for i := 2 to Length(s) do

if (s[i]<>¢ ¢) and (s[i-1]=¢ ¢) then

k := k + 1;

{проверка первого слова}

if (Length(s)>0) and (s[1]<>¢ ¢) then k := k + 1;

writeln(¢Количество слов = ¢, k)

End.

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

Задача 17. В заданной строке текста все фрагменты f1 заменить на фрагменты f2.

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

Program Fragment_changing;

{замещение фрагментов}

Var s : string;

f1, f2: string;

p : integer; {позиция f1 в s}

L : integer; {длина f1}

Begin

writeln(¢Введите строку текста:¢); readln(s);

writeln(¢Какой фрагмент искать:¢); readln(f1);

writeln(¢Чем заменить:¢); readln(f2);

if f1 = f2 then

writeln(¢Фрагменты должны различаться.¢)

else begin

L := length(f1);

p := pos(f1, s);

while p > 0 do begin

delete(s, p, L);

insert(f2, s, p);

p := pos(f1, s);

end; {while}

writeln(¢Результат:¢); writeln(s);

end; {else}

End.

Обратите внимание, что позиция p фрагмента f1 в строке s вычисляется до начала цикла, чтобы заработало условие в заголовке цикла, а затем внутри цикла после замещения она каждый раз перевычисляется, чтобы определить позицию следующего такого же фрагмента. Если p станет равной 0, то это будет означать, что фрагментов f1 в строке s больше не осталось. Если в этой программе ввести, например, s = ¢Николай перешел на перевал вовремя¢, f1 = ¢пере¢, f2 = ¢при¢, то в результате получим s = ¢Николай пришел на привал вовремя¢.

Задача 18. Сформировать число, в котором порядок цифр — обратный по отношению к заданному натуральному числу N.

Решение. Эту задачу можно решить двумя способами. Первый основан на выделении цифр из числа при помощи целочисленных операций деления на 10. Выделение последней цифры из числа N можно осуществлять при помощи операции N mod 10, отбрасывание последней цифры — при помощи операции N div 10. Формирование нового числа — путем добавления последней выделенной из числа N цифры в конец результирующего числа. Например, N=123, результат M сначала равен 0. Выделяем последнюю цифру из N и дописываем ее к M, т.е. M=3. Отбрасываем последнюю цифру из N, N=12. Повторяем выделение последней цифры и дописывание ее к M, M=32. И т.д. «Дописывание» последней цифры можно выполнить при помощи умножения М на 10 и прибавления этой последней цифры (М=3, М*10=30 (как бы приписали ноль), 30+2=32, 32*10=320, 320+1=321).

Program Back_order1;

{число с обратным порядком цифр – вариант 1}

Var N, M: integer; {исходное число и результат}

i : integer; {для выделенной цифры}

Begin

write(’Введите целое число: ’); read(N);

M:=0; {начальное обнуление результата}

repeat {повторять}

{выделение последней цифры из числа N}

i:=N mod 10;

{“дописывание” 0 к М и прибавление последней цифры}

M:=M*10+i;

N:=N div 10; {отбрасывание последней цифры из N}

until N=0; {пока не закончатся цифры в N}

writeln(’Обратное число: ’, M);

End.

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

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

Если теперь сразу выполнить a:=b, то в обеих переменных будет одно и то же значение 8 (значение 5 потеряется). Чтобы этого не произошло, нужно использовать третью («буферную») переменную:

При этом порядок операций указан на схеме:

c:=a; a:=b; b:=c;

Второй вариант программы:

Program Back_order2;

{число с обратным порядком цифр – вариант 2}

Var N, M: integer; {исходное число и результат}

i : integer; {счетчик цикла}

s : string;

c : char; {буферный символ}

Begin

write(’Введите целое число: ’); read(N);

str(N, s); N:=length(s);

for i:=1 to (N div 2) do begin

c:=s[i]; s[i]:=s[N-i+1]; s[N-i+1]:=c

end;

val(s, M, i);

writeln(’Обратное число: ’, M);

End.

Кстати, если решать таким же способом задачу 5 (количество цифр в натуральном числе), то уже четвертая операция (N := length(s)) дает нужный результат. Здесь же, после преобразования числа в строковое значение, переменная N используется для запоминания длины строки, которая используется в цикле перестановки символов. В обратной функции преобразования val строкового значения в число код результата помещается в уже освободившуюся переменную i, которая далее не проверяется, поскольку в переменную s изначально помещались только цифры целого числа. Поэтому ошибка исключена (i=0 гарантируется). Выбор любого из приведенных способов решения — дело вкуса.

Задачи для самостоятельной работы

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

2. Дана строка текста. Найти наибольшее количество цифр, идущих подряд.

3. Для заданной строки текста указать количество каждого символа, встречающегося в строке, например: «П» – 1, «а» – 6, «р» – 3, и т.д.

4. Дано натуральное число n £ 1000. Записать это число словами.

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

6. Операция задана в виде строки текста, где сначала цифрами записано целое положительное число, затем идет один из четырех символов арифметических операций +, –, *, /, завершает операцию также целое положительное число. Символ операции может быть разделен пробелами. Выдать результат арифметической операции.

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

8. Какое по счету слово в заданной строке текста является самым длинным?

9. В заданной строке найти все слова, в которые буква «а» входит не менее двух раз.

10. В строке слов, разделенных пробелами или запятыми, все начальные буквы (приставки) слов «при» заменить «на». Так, в строке «Припев, радиоприемник, прирост, например» должно получиться «Напев, радиоприемник, нарост, например».

3.13. Множества

В Паскале понятие множества не так широко, как в математике. Обычно это набор некоторого количества связанных однотипных элементов. В Turbo Pascal количество элементов множества может быть от 0 (пустое множество) до 255. Тип каждого элемента, который называется базовым типом, может быть любым простым типом, кроме real. Множественный тип описывается следующим образом:

type T = set of To;

Значениями переменной x типа T являются множества элементов базового типа To. Примеры:

type numbers = set of 1..20;

charset = set of ’A’..’Z’;

primcolor = (red, green, blue);

var n1, n2 : numbers;

chars : charset;

c1,c2,c3: set of primcolor;

Здесь демонстрируются способы описания переменных как с помощью предварительного описания множественного типа (n1, n2, chars), так и непосредственно (c1, c2, c3). Каждая из описанных переменных является множеством. Множество складывается из элементов базового типа и может быть любым подмножеством полного базового множества, включая и пустое множество. Примеры допустимых операций присваивания:

n1 := [1..5, 7, 10..15]; n2:=[];

chars := [’A’, ’E’, ’I’, ’O’, ’U’, ’Y’];

c1 := [red, green];

c2 := [green, blue];

c3 := [red, green, blue];

[ ] — пустое множество.

Над множествами допустимы следующие операции:

* пересечение множеств;

+ объединение множеств;

– разность множеств;

in принадлежность множеству.

Примеры:

[1, 2] + [2, 3] = [1, 2, 3];

[1, 2] * [2, 3] = [2];

[1..20] - [12..16] = [1..11, 17..20];

Если имеем

var c: char;

то допустимо

if c in chars then

writeln (’гласный’)

else

writeln (’согласный’);

Т.е. операция in используется для проверки вхождения некоторого элемента в некоторое множество.

Множества можно сравнивать с помощью операций =, <>, <=, >=.

Логическое выражение s1 = s2, где s1 и s2 — однотипные множества, имеет значение TRUE, если s1 и s2 содержат одинаковые элементы, и FALSE, если s1 и s2 отличаются хотя бы одним элементом.

Значение TRUE имеют также выражения:

s1 <= s2, если множество s1 является подмножеством множества s2;

s1 >= s2, если множество s2 является подмножеством множества s1;

Примеры:

[1..3] = [1,2,3] дает TRUE;

[] <= [red, blue] дает TRUE;

[2] <= [3] дает FALSE;

[3..1] >= [2] дает FALSE;

[5,8,12] <= [1..20] дает TRUE;

В множестве [3..1] нарушен порядок для нижней и верхней границ диапазона, поэтому фактически [3..1] = [ ].

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

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

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

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

Program Chars_count;

{подсчет количеств символов разных групп}

type charset = set of char;

var s : string;

i : integer;

digits : charset;

glasn : charset;

soglasn : charset;

DigCount, GlCount, SoglCount: integer;

Begin

write (’Введите строку:’);

readln(s);

DigCount := 0; GlCount := 0; SoglCount := 0;

digits := [’0’..’9’];

glasn := [’A’, ’E’, ’I’, ’O’, ’U’, ’Y’];

soglasn := [’A’..’Z’] - glasn;

for i := 1 to length(s) do begin

if s[i] in digits then

DigCount := DigCount + 1

else if s[i] in glasn then

GlCount := GlCount + 1

else if s[i] in soglasn then

SoglCount := SoglCount + 1;

end;

writeln (’Кол. цифр: ’, DigCount);

writeln (’Кол. гласных: ’, GlCount);

writeln (’Кол. согласных: ’, SoglCount);

End.

Многовариантный оператор if позволяет в этой программе подсчитывать только символы заданных групп (множеств) и не учитывать такие символы как, например, пробелы и знаки пунктуации (точки, запятые, тире и т.п.). Сравните, насколько понятнее выглядит выражение s[i] in digits, чем аналогичное выражение, записанное с помощью операций сравнения: (s[i]>=’0’) and (s[i]<=’9’). Это уже не говоря о том, какое выражение с помощью операций сравнения пришлось бы построить для определения согласной буквы.

Вопросы и задания для самостоятельной работы

1. Каким образом можно ввести значения в множественную переменную?

2. Запишите множество, которое будет являться результатом операции:

a) [10..25, 40..60] + [32..39];

b) [17..33, 38..45] * [30..40];

c) [¢B¢..¢R¢] * [¢Q¢..¢T¢].

3. Массив из 100 целых чисел содержит значения в диапазоне 1..200. Определите количество значений, попадающих в каждый из следующих четырех диапазонов: 1..50, 51..100, 101..150, 151..200. Массив заполните с помощью генератора случайных чисел. Для проверок используйте операции с множествами.

4. Задан массив целых чисел. Составьте множество всех простых чисел в диапазоне от 2 до 100. С помощью данного множества определите количество простых чисел в массиве.

3.14. Записи

Записи, как и массивы, являются составными типами данных. В отличие от массива, который объединяет однотипные компоненты, запись может объединять компоненты различных типов. Поэтому записи считают наиболее общим способом организации составных типов данных. Обычно запись используется в тех случаях, когда требуется работа с несколькими разнотипными характеристиками или свойствами некоторых однотипных объектов. Например, работая с объектами типа товар (набор различных объектов, каждый из которых — товар), вам необходимо использовать такие характеристики, как название (string), цена (real), количество (integer). Обычно данные подобного рода принято хранить в дисковых файлах специальной структуры (базах данных), где характеристики каждого отдельного объекта записываются в отдельную строку таблицы и называются записью. Отсюда и пошло название этого типа данных. Характеристики объекта являются компонентами записи и называются полями. Формат для объявления типа данных record (запись) выглядит следующим образом:

Type имя_типа = record

имя_поля1 : тип;

имя_поля2 : тип;

...

имя_поляN : тип;

end;

Как уже принято, далее можно объявить переменные с указанным типом записи. Например:

Type automachine = record

Nomer : integer;

Marka : string[20];

FIO : string[40];

Adres : string[60];

end;

tovar = record

name : string[15];

cena : real;

kol : integer;

end;

Var m1, m2: automachine;

t1, t2, t3: tovar;

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

m1.Nomer := 1678;

m1.Marka := ¢ВАЗ-2108¢;

m1.FIO := ¢Петров А.Н.¢;

m1.Adres := ¢ул.Пушкина 15 кв.28¢;

read(m2.Nomer, m2.Marka, m2.FIO, m2.Adres);

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

with переменная_типа_запись do оператор;

Здесь в «операторе» можно использовать имена полей указанной переменной без предварительного имени переменной с точкой, например:

with t1 do begin

name := ¢Хлеб белый¢;

cena := 0.60;

kol := 5;

end;

В ряде задач бывает необходимо использовать целые массивы объектов, характеристики которых описываются записями. Здесь рекомендуется запомнить простой принцип: компонентами массивов или записей могут быть другие массивы или записи. Так возможны массивы массивов, массивы записей или записи, поля которых являются массивами. То есть данные типа массивов или записей являются своеобразными «матрешками», внутри которых могут находиться другие «матрешки». Например, для обработки требуется использовать массив, скажем, из 100 товаров, для которого требуются такие виды групповой обработки, как подсчет общего количества или суммарной стоимости. Тогда можно использовать (с учетом объявленного выше типа tovar) следующий фрагмент:

...

const N=100;

var tov: array[1..N] of tovar;

sum: real;

i : integer;

...

Begin

...

sum := 0;

for i := 1 to N do

with tov[i] do

sum := sum + cena*kol;

...

End.

В цикле for можно было бы записать также

for i := 1 to N do

sum := sum + tov[i].cena * tov[i].kol;

однако при этом компилятор сгенерирует менее эффективный код, поскольку здесь ему уже дважды придется вычислять адрес памяти индексированной переменной tov[i].

Задача 20. Для заданного количества сотрудников подсчитать количество людей пенсионного возраста (55 лет для женщин и 60 для мужчин).

Решение. Количество сотрудников будем определять константой N. Для описания сотрудника сконструируем запись, состоящую из следующих полей: FIO (Ф.И.О.), Sex (Пол), BirthDate (Дата рождения). В свою очередь BirthDate также будет являться записью, состоящей из полей Day (день), Month (месяц) и Year (год). При сканировании массива сотрудников нужно подсчитывать тех людей, которые одновременно принадлежат к женскому полу и имеют возраст не менее 55 лет, или принадлежат к мужскому полу и имеют возраст не менее 60 лет. Небольшая проблема заключается в определении возраста. Если разность текущего года и года рождения явно меньше или больше установленного предела, то проблема решена. Если же человеку только в этом году подходит пенсионный возраст, то разность лет даст неверный результат. Например, текущая дата 15.02.99, а дата рождения — 29.11.44. Для женщины разность в годах как раз дает 55, хотя на самом деле ей 54 года и около 2,5 месяцев. Говорят, что такой женщине 54 полных года. Для определения полных лет можно рекомендовать следующий способ. Если текущий день меньше дня рождения, то от текущего месяца отнимается единица (ведь придется при вычитании как бы занимать один месяц). Далее, если полученный текущий месяц меньше месяца рождения, то от текущего года аналогично отнимается единица. Разность между полученным текущим годом и годом рождения даст количество полных лет. Давайте проверим. Для приведенного выше примера 15 меньше 29, значит, уменьшаем текущий месяц до 01. Это значение меньше 11, — уменьшаем текущий год до 98. И в завершение 98 – 44 = 54.

Program Pensioner_count;

{количество пенсионеров}

Const N=10;

Type Date = record

day : 1..31;

month : 1..12;

year : 1900..2100;

end;

Person = record

FIO : string[25];

Sex : char;

BirthDate : Date;

end;

Employee = array[1..N] of Person; {служащие}

Var people: Employee; {массив служащих}

i, PensCount: integer; {счетчики}

p: integer; {кол. полных лет}

CurrentDate: Date; {текущая дата}

Begin

writeln(¢Введите данные о служащих¢);

for i := 1 to N do

with people[i] do begin

writeln(¢Служащий №¢, i);

write(¢Ф.И.О.: ¢); readln(FIO);

write(¢Пол (М или Ж): ¢); readln(Sex);

writeln(¢Дата рождения¢);

with BirthDate do begin

write(¢День: ¢); readln(day);

write(¢Месяц: ¢); readln(month);

write(¢Год: ¢); readln(year);

end;

end;

writeln(¢Введите текущую дату(день месяц год)¢);

with CurrentDate do begin

read(day); read(month); read(year);

end;

PensCount := 0;

for i := 1 to N do begin

p := CurrentDate.month;

if CurrentDate.day < people[i].BirthDate.day

then p := p – 1;

if p < people[i].BirthDate.month then

p := CurrentDate.year – 1

else

p := CurrentDate.year;

p := p – people[i].BirthDate.year;

if (people[i].Sex = ¢М¢) and (p >= 60) or

(people[i].Sex = ¢Ж¢) and (p >= 55)

then PensCount := PensCount + 1;

end; {for}

writeln(¢Кол. пенсионеров ¢, PensCount);

End.

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

Следует также обратить внимание, что год во всех датах необходимо вводить полностью, т.е. 1958, а не 58. Об этом свидетельствует описание данного поля (year). Аналогично, в данном варианте программы пол нужно вводить заглавными буквами «М» и «Ж», поскольку малые буквы «м» и «ж» — не то же самое.

Структуру записи типа Person можно представить в виде следующей схемы:

А структуру соответствующего массива записей people — в виде следующей таблицы:

people

 | Ф.И.О. | Пол | Дата рождения
 |  |  | день | месяц | год
1 |  |  |  |  |
2 |  |  |  |  |
... |  |  |  |  |
N |  |  |  |  |

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

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

Вопросы и задания для самостоятельной работы

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

2. Для чего используется оператор with?

3. Сколько байт занимает одна переменная типа Person в программе Pensioner_count (задача 20)?

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

5. Дан массив, содержащий различные даты. Найти:

a) год с наименьшим номером;

b) все зимние даты;

c) самую позднюю дату.

6. В некотором каталоге (массиве) содержатся сведения о книгах, а именно фамилия автора, название книги и год издания.

a) Найти названия книг данного автора, изданных с 1960 г.

b) Определить, имеется ли книга с названием «Информатика». Если да, то сообщить фамилию автора и год издания. Если таких книг несколько, то сообщить сведения обо всех книгах.

3.15. Процедуры и функции

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

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

· если нет достаточного опыта, то выполнить «анализ мнения знакомых»;

· произвести «поиск приемлемого варианта»;

· если цена очень низкая, то выполнить «экспертизу качества»;

· повторить «поиск приемлемого варианта» 3-4 раза;

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

· выполнить «оформление покупки».

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

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

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

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

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

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

В Турбо Паскале подпрограммы реализованы посредством процедур и функций.

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

Функция аналогична процедуре (вместо слова procedure пишется слово function), но имеются два отличия: функция передает в точку вызова скалярное (простое) значение; имя функции может входить в выражение как операнд.

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

Многие процедуры и функции для своей работы требуют некоторых исходных данных, называемых аргументами. Аргументы указываются после имени процедуры или функции в круглых скобках. Например, если вы написали процедуру Grafik, которая рисует на экране график функции y= ax + b, то для получения графика функции y= -3x + 5 нужно вызвать эту процедуру с соответствующими аргументами:

Grafik(-3, 5);

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

PROCEDURE имя(список_формальных_параметров);

раздел описания локальных данных;

BEGIN

тело процедуры

END;

Описание функции выглядит так:

FUNCTION имя(список_формальных_параметров):тип_функции;

раздел описания локальных данных;

BEGIN

тело функции

END;

Поскольку функция в точку своего вызова возвращает значение типа "тип_функции", то в теле функции хотя бы один раз должен встретиться оператор присваивания вида

имя_функции := выражение;

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

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

Procedure Grafik(a, b: real);

Function factorial(n: integer):integer;

Procedure PROCESS(a, b: integer; x, y: real; sym: char);

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

Grafik(13, -25.5);

k := Factorial(5) + 2 * n;

Process(k, n, x1, y1, ¢Y¢);

При вызове процедуры Process ее формальным параметрам a, b, x, y будут переданы соответствующие значения переменных k, n, x1, y1, а параметру sym будет передано значение символьной константы 'Y'. А теперь покажем небольшой пример разработки несложной задачи методом последовательного уточнения.

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

Решение. Пенсионный фонд (2%), профсоюзный взнос (1%) и фонд безработицы (0.5%) рассчитываются элементарно. Для расчета подоходного налога уже имеется соответствующий алгоритм (задача 4). Для определения данных одного сотрудника лучше использовать структуру типа записи. Тогда укрупненный алгоритм задачи будет выглядеть так:

· ввод исходных данных;

· расчет удержаний;

· вывод результатов.

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

PROGRAM Raschet_zarplaty;

Type Person = record

FIO: string[25];

Nachisl: real;

PodNalog: real;

PensFond: real;

ProfVznos: real;

FondBezrab: real;

end;

Const N=10; {кол. сотрудников}

Var empl: array[1..N] of Person;

{-------ввод исходных данных----------}

Procedure DataInput;

var i: integer;

Begin

writeln(’Ввод данных сотрудников’);

for i:=1 to N do

with empl[i] do begin

write(’Ф.И.О.: ’); readln(FIO);

write(’Начислено: ’); readln(Nachisl);

end;

End;

{---------вывод результатов-----------}

Procedure ResultOutput;

var i: integer;

Begin

writeln(’Ф.И.О.’:25,’Начисл.’:8,’Под.нал’:8,

’Пенс.’:8,’Проф.’:8,’Безраб.’:8,’На руки’:8);

for i:=1 to N do

with empl[i] do begin

write(FIO:25);

write(Nachisl:8:2);

write(PodNalog:8:2);

write(PensFond:8:2);

write(ProfVznos:8:2);

write(FondBezrab:8:2);

writeln(Nachisl-PodNalog-PensFond-

ProfVznos-FondBezrab:8:2);

end; {with и for}

End;

{--------расчет удержаний-------------}

Procedure Raschet_uderzhaniy;

function Nalog(z: integer): real;

const M=17;

begin

case z of

0..M: Nalog:=0;

(M+1)..5*M: Nalog:=(z-M)*0.1;

(5*M+1)..(10*M): Nalog:=(z-5*M)*0.15+0.4*M;

(10*M+1)..(60*M): Nalog:=(z-10*M)*0.2+1.15*M;

(60*M+1)..(100*M):Nalog:=(z-60*M)*0.3+11.15*M;

else Nalog:=(z-100*M)*0.4+23.15*M;

end;

end; {Nalog}

var i: integer;

Begin

for i:=1 to N do

with empl[i] do begin

PodNalog := Nalog(trunc(Nachisl));

PensFond := trunc(Nachisl) * 0.02;

ProfVznos := trunc(Nachisl) * 0.01;

FondBezrab:= trunc(Nachisl) * 0.005;

end;

End;

{==========основная программа============}

BEGIN

DataInput;

Raschet_uderzhaniy;

ResultOutput;

END.

В приведенной программе все подпрограммы очень удобно разделены строками с соответствующими комментариями. При разработке каждой процедуры можно сосредоточиться только на конкретной подзадаче, что позволяет не засорять голову лишними проблемами. Весь код неплохо читается, особенно в теле основной программы. Локальная функция для расчета подоходного налога входит внутрь процедуры расчета удержаний (подпрограмма в подпрограмме). Поскольку программе как бы запрещено «заглядывать» внутрь своих подпрограмм, данная функция может использоваться только внутри своего «родителя», т.е. в теле процедуры расчета удержаний. Для других подпрограмм она не видна, да и не нужна. Как видно, алгоритм задачи 4 очень легко преобразован в функцию: вместо ввода значения зарплаты используется ее передача через аргумент функции, а вместо вывода результата на экран используется возврат результата через имя функции Nalog. Поскольку аргумент функции требует параметра целого типа, в цикле расчета вещественное значение суммы начисления преобразуется в целое с помощью стандартной функции trunc (truncated – усеченный), которая усекает дробную часть и возвращает результат целого типа. Результаты выводятся в виде отформатированной таблицы с размером первого столбца 25 символов и по 8 символов остальные.

Задача 22. В заданной последовательности чисел найти максимальное и его тангенс, затем минимальное и его котангенс.

Решение.

НАЧАЛО

ввод данных;

поиск максимума;

вывод максимума; вывод tg(максимум);

поиск минимума;

вывод минимума; вывод ctg(минимум);

КОНЕЦ.

На все понятия, описанные в этом алгоритме составим процедуры и функции, поскольку даже встроенных tg и ctg в Паскале нет. На что же писать процедуры, а на что функции? Поскольку "ввод данных" и "вывод ..." — просто последовательности некоторых действий, то это будут процедуры. При поиске же максимума и минимума, а также вычислении tg и ctg должны быть получены конкретные числовые значения — это будут функции. Вот полный текст программы:

PROGRAM Search_and_Count;

CONST N=10;

VAR a : array[1..N] of real;

x : real;

{---ввод данных----------------------}

Procedure InputData;

var i : integer;

Begin

for i := 1 to N do begin

write(¢Введите ¢, i,¢ значение:¢);

readln(a[i]);

end; {for}

End;

{---вывод...----------------------------}

Procedure OutPut(a,b:real; flag:integer);

Begin

if flag = 0 then

writeln(¢Минимум=¢, a,¢ ctg(min)=¢,b)

else

writeln(¢Максимум=¢, a,¢ tg(max)=¢,b);

End;

{---поиск максимума---------------------}

Function Max : real;

var i : integer;

x : real;

Begin

x := a[1];

for i := 2 to N do

if a[i] > x then x := a[i];

Max := x;

End;

{---поиск минимума----------------------}

Function Min : real;

var i : integer;

x : real;

Begin

x := a[1];

for i := 2 to N do

if a[i] < x then x := a[i];

Min := x;

End;

{---вычисление тангенса-----------------}

Function tg(x:real) : real;

Begin

tg := sin(x) / cos(x)

End;

{---вычисление котангенса---------------}

Function ctg(x:real) : real;

Begin

ctg := cos(x) / sin(x);

End;

{===основная программа==================}

BEGIN

InputData;

x := Max;

OutPut (x, tg(x), 1);

x := Min;

OutPut (x, ctg(x), 0);

END.

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

Глобальные и локальные переменные

А теперь разберем некоторые технические детали. В разделе переменных основной программы объявлены вещественный массив a (для хранения вещественных значений) и вспомогательная вещественная переменная x. Первая процедура InputData без параметров. Внутри нее объявлена вспомогательная переменная i. Такие переменные называют локальными в отличие от переменных более высокого уровня (x, массив a), называемых глобальными. Глобальными для подпрограммы считаются все переменные, объявленные в основной программе и тех подпрограммах, которые участвовали в ее образовании (т.е. ее «мама», «бабушка», «прабабушка» и т.д.). Любая подпрограмма может использовать локальные и глобальные переменные. Ей недоступны только не свои локальные переменные, т.е. скрытые в ее собственных внутренних подпрограммах, или скрытые в тех подпрограммах, которые не участвовали в порождении данной (т.е. на своем уровне и выше подпрограмма или программа все «знает», а на других уровнях и в глубине их — нет). Локальные переменные обязательно должны быть объявлены внутри подпрограммы, к глобальным же можно обращаться без объявления, так как они уже объявлены в своем разделе. Это и демонстрируется в процедуре InputData. Процедура OutPut имеет три параметра, а вот локальные (вспомогательные) переменные ей не понадобились. Обратите внимание, как при помощи целочисленной переменной-флажка flag одна и та же процедура выводит или результаты минимумов, или результаты максимумов. Функция Max опять не имеет аргументов. В качестве исходных данных она берет глобальный массив a. А вот локальных переменных у нее две, и среди них почему-то x (ведь уже существует такая глобальная переменная!). Механизм локальных переменных таков, что позволяет внутри подпрограммы объявить и использовать любые переменные, не заботясь о том, существуют ли глобальные переменные с такими же именами или нет. Если в подпрограмме произошло обращение к какой-либо переменной и эта переменная объявлена в локальном разделе, то используется только эта переменная. Если же в локальном списке такой переменной нет, то она ищется в разделе глобальных переменных. Ну, а уж если и там ее нет, то выдается сообщение об ошибке. К локальным переменным относятся и переменные, объявленные в списках формальных параметров процедур и функций. Таким образом, глобальная x и все переменные x в функциях Min, Max, tg, ctg ничего общего друг с другом не имеют. Это позволяет сложные программы разрабатывать нескольким программистам сразу в виде отдельных подпрограмм, не заботясь о совпадении внутренних имен переменных. Главное — договориться о сути передаваемых параметров и возвращаемых значений. Локальные переменные каждой подпрограммы "порождаются" только при обращении к этой подпрограмме и "умирают" по ее завершении. Это экономит место в памяти, особенно, если обращения к подпрограммам очень часты. Глобальные переменные существуют в течение всего времени выполнения программы. Тип функции обычно определяют по типу тех значений, которые они должны возвращать в точку вызова. И еще один совет. Имя подпрограммы должно отражать суть выполняемых ею действий.

Механизм передачи параметров

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

function max(a,b:real) : real;

Теперь, если вы обратитесь к функции max, передав ей в качестве фактических параметров, например, значения переменных x и y, то произойдет следующее. Значения x и y будут скопированы в ячейки локальных переменных a и b, и далее функция max будет работать с этими копиями, выдав в качестве результата большее из них. Поскольку работа ведется не с самими переменными x и y, а с копиями их значений (передача по значению), то язык Паскаль гарантирует, что при любых изменениях значений переменных a и b внутри программы значения исходных величин x и y останутся неизменными. Этот механизм надежно предохраняет от нежелательной порчи обрабатываемых значений. Однако часто, наоборот, бывает нужно, чтобы изменения параметров внутри подпрограммы отразились на переменных, из которых эти параметры были переданы. К примеру, вам нужна процедура, которая обменивает между двумя переменными их значения. Алгоритм известен и прост:

Procedure Swap(a,b: real);

var buf: real;

Begin

buf := a; a := b; b := buf

End;

А теперь попробуйте обменять при помощи такой процедуры значения переменных х и y:

swap(x,y);

Но ведь Паскаль-то гарантирует (!!!) неизменность x и y при любых изменениях a и b внутри процедуры. Однако, если переменным a и b указать адреса переменных x и y (т.е. где они находятся в памяти), то, изменяясь сами, переменные a и b смогут изменить x и y. Делается это записью служебного слова var перед группой параметров в заголовке процедуры (функции):

Procedure Swap(var a,b: real);

Тем самым вы сообщите процедуре Swap, что для ее локальных параметров передаются не просто два вещественных значения, а адреса двух вещественных переменных, где эти значения находятся. Такие параметры называются параметрами-переменными, а механизм передачи — передачей по ссылке (параметры ссылаются на переменные). Теперь внутри процедуры под именами a и b вы на самом деле будете работать с переменными x и y. При вызове подпрограммы, использующей ссылочные параметры, нельзя использовать в качестве аргументов константы или выражения (подумайте почему).

Обменять значения x и y можно было, используя механизм глобальных переменных, записав процедуру Swap без параметров:

Procedure Swap;

var buf : real;

Begin

buf:=x; x:=y; y:=buf

End;

Но такая процедура будет обменивать значения только между x и y. В процедуру же с параметрами по ссылке мы могли передать как переменные x и y, так и, например, v и w, c и d, и т.д., то есть функция c параметрами (аргументами) универсальна. К тому же применение подпрограмм с параметрами уменьшает количество возможных ошибок. Подпрограмма может содержать одновременно и параметры, передаваемые по значению, и параметры, передаваемые по ссылке, например:

procedure print (s:string; var res:boolean; k:integer);

function MaxMin (a:real; var b:real) : real;

Здесь в процедуре параметром-переменной является только res, а в функции — b. Обычно, если подпрограмма по завершению работы возвращает одно значение, то используют функцию с передачей параметров по значению. Если же нужно вернуть более одного значения, то сделать это можно через параметры по ссылке. Показанная выше процедура Swap возвращала сразу два измененных значения, а функция MaxMin через имя функции может вернуть, например, максимальное значение, а через ссылочную переменную b — минимальное. Если параметр b изменять не нужно, то a и b передаются по значению, а в аргументы вводится третий параметр по ссылке:

function MaxMin (a,b:real; var c:real) : real;

В программе значения переменных max и min из переменных x и y можно получить так:

max := MaxMin(x, y, min);

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

Если все ваши процедуры и функции собраны, например, в файле SUB.PAS, то подключить их к основной программе можно в разделе объявлений (например, в том месте, где бы вы писали процедуры и функции) следующей директивой[1]:

Program Example;

var ...;

{$I sub.pas}

Begin

...

End.

Не путайте I (от include — вставить) с директивами I+ и I–. По директиве I транслятор просто вставляет текст указанного файла в то место программы, где записана эта директива. Данный способ позволяет также разбивать очень большие программы на отдельные файлы меньшего размера. С директивами I+ и I– мы познакомимся позже при изучении работы с файлами.

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

Вопросы и задания для самостоятельной работы

1. Для чего используются подпрограммы? Какие разновидности подпрограмм применяются в Паскале, и каковы их особенности?

2. Какие переменные называются глобальными, а какие локальными?

3. Для программы Search_and_Count задачи 22 укажите все локальные и глобальные переменные в процедуре OutPut и функции Max.

4. Для чего подпрограммам нужны параметры?

5. Объясните механизм передачи параметров по значению и по ссылке.

6. Запишите процедуру ввода с клавиатуры двух вещественных переменных x и y. Их значения должны будут возвращаться в вызывающую программу через параметры.

7. С помощью функции function max(a, b: real): real; запишите выражение, определяющее максимальное из четырех чисел, скажем, x1, x2, x3 и x4.

8. N-угольник задан координатами своих вершин x1, y1, ..., xN, yN. Определить площадь данного многоугольника. Примечание: используйте подпрограмму вычисления площади треугольника по формуле Герона (см. задачу 1 в п. 3.3).

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

10. Стандартная функция pos возвращает первую позицию фрагмента в строке, начиная поиск с начала строки (см. п. 3.11). Напишите собственную функцию function pos(f, s: string; p: integer): integer; которая выполняет аналогичный поиск, начиная с указанной позиции p. Продемонстрируйте ее работу с помощью программы, которая в заданной строке текста определяет количество заданных фрагментов.

3.16. Файлы

Если некоторая программа предназначена для обработки произвольных значений данных некоторого фундаментального типа, то они могут быть введены в память ЭВМ в основном двумя способами: либо с клавиатуры, либо с некоторого долговременного носителя с помощью соответствующего устройства ввода-вывода. При этом второй способ более предпочтительный, поскольку позволяет накапливать данные за длительные промежутки времени, запоминать их, передавать для обработки в другие места. Данные на носителях представляют собой последовательности компонент простого или составного типа с последовательным доступом. Доступ определяется в основном механической конструкцией таких устройств, в которых мимо считывающей головки движется «полосовая» область носителя, на которой последовательно одна за другой записаны все компоненты последовательности данных. Доступ к некоторой i-ой компоненте может быть получен только после того, как будут прочитаны предыдущие i–1 компонент. Такие последовательности компонент простого или составного типа со строго последовательным доступом называются последовательными файлами. Тип компонент называется базовым типом файла.

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

x = xL U xR

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

1) reset — сброс указателя на начало файла; готовность к чтению 1-ой компоненты:

2) read — читается 1-я компонента; указатель переходит к началу 2-ой компоненты:

и т.д.

Если происходит попытка прочитать компоненту файла для указателя, находящегося за последней компонентой, то возникает ошибка ввода-вывода. Чтобы этого можно было избежать, — существует специальная функция EOF (End-Of-File — конец файла), определяющая такое состояние указателя:

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

Общее определение файлового типа:

type T = file of T0;

Здесь файловый тип T состоит из компонент базового типа T0. Примеры:

type text = file of char;

people = file of person;

В Turbo Pascal тип файла text является встроенным и не требует предварительного объявления. Файлы типа text содержат символы, упорядоченные в строки, и используют специальные процедуры ввода-вывода.

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

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

Порядок работы с файлами

В разделе объявлений должна быть объявлена переменная файлового типа, например:

type DataFile = file of real;

var F: DataFile;

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

assign(F, имя_файла);

где имя_файла — текстовое значение, содержащее имя файла по правилам MS-DOS, например:

assign(F, ’mt2.dat’);

связывает файловую переменную F с файлом mt2.dat, расположенным в текущем каталоге текущего диска. Или

s := ’D:\DOCUM\LETTER.TXT’;

assign(F, S);

связывает переменную F с файлом LETTER.TXT, расположенным в каталоге DOCUM диска D.

Далее все операции с файлом ведутся через файловую переменную.

Для получения доступа к компонентам файл должен быть открыт либо процедурой

reset(F); – для чтения,

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

rewrite(F); – для записи,

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

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

По окончании работы с файлом его надо закрыть процедурой:

close(F);

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

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

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

{$I–} – отключает контроль ошибок ввода-вывода;

{$I+} – включает контроль ошибок ввода-вывода.

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

...

assign(F, ’my_file.txt’);

{$I-} {отключение контроля ошибок ввода-вывода для собственного использования}

reset (F); {попытка открыть файл}

if IOResult <> 0 then

writeln (’Файл не существует’)

else begin

{Обработка файла}

...

end;

{$I+} {восстановление контроля}

...

В Turbo Pascal существует три вида файлов: текстовые (тип text), типированные (тип file of тип_компонент) и нетипированные (тип file).

Текстовые файлы

Файл типа text представляет собой последовательность строк переменной длины, разделенных маркером конца строки (EOLN – end of line – два символа с кодами 13 «возврат каретки» и 10 «перевод строки»), а весь файл завершается маркером конца файла (EOF – end of file – символ с кодом 26).

При работе с текстовыми файлами принято использовать процедуры readln и writeln:

readln (F, S) — читает из файла F в переменную S типа string текущую строку символов до маркера конца строки EOLN, указатель перемещается на начало следующей строки за EOLN;

writeln (F, S) — записывает в файл F содержимое строковой переменной S, после чего записывается маркер конца строки EOLN, а указатель перемещается за последнюю компоненту.

Текстовый файл может быть открыт на добавление процедурой:

append(F);

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

С текстовыми файлами можно использовать функции EOLN(F) и EOF(F). Первая из них возвращает TRUE, если указатель файла находится перед маркером EOLN или EOF (в противном случае FALSE), а вторая возвращает TRUE, если указатель — перед маркером EOF или за последней компонентой (FALSE в противном случае).

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

Program Text_input;

var F : text;

FileName: string[50]:

s : string[80];

Begin

write(’Имя файла: ’);

readln(FileName);

assign(F, FileName);

rewrite(F);

writeln(’Введите текст для записи:’);

repeat

readln(S); {чтение строки с клавиатуры}

if s <> ’’ then

writeln(F, S); {запись в файл}

until S = ’’; {пока не введена пустая строка}

close(F); {сформировать файл на диске и закрыть}

writeln; {пропуск пустой строки на экране}

writeln(’Текст, прочитанный из файла:’);

reset (F); {открытие и сброс указателя на начало}

while not EOF(F) do begin

readln(F, S); {чтение строки из файла}

writeln(S); {вывод строки на экран}

end;

close(F); {закрыть файл}

End.

Типированные файлы

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

Процедуры для работы с типированными файлами:

rewrite(F); — особенностей нет;

reset(F); — открывает файл для чтения-записи; если указатель файла находится перед какой-либо компонентой, то ее можно как читать, так и перезаписывать; если указатель находится за последней компонентой (EOF(F) = True), то в файл можно дописывать новые компоненты процедурой write;

read(F, V1, V2, ..., VN); — читает компоненты файла F в соответствующие переменные, которые должны быть того же типа, что и базовый тип файла; указатель файла перемещается через все прочитанные компоненты;

write(F, V1, V2, ..., VN); — записывает значения переменных в файл F; тип переменных должен совпадать с базовым типом файла; если указатель находится за концом файла, то происходит добавление компонент, в противном случае переписываются существующие компоненты;

seek(F, n); — перемещает указатель файла перед n-ой компонентой (n – целое число); первая компонента имеет номер 0;

FileSize(F); — функция возвращает количество записей (элементов) в файле F.

Чтобы расширить файл, следует открыть его процедурой reset(F) и выполнить позиционирование указателя файла за последнюю компоненту:

seek(F, FileSize(F));

Поскольку нумерация компонент с 0, то позиция FileSize(F) окажется как раз за концом файла. После этого процедурой write можно добавлять новые компоненты.

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

Program Employee;

type Date = record

day : 1..31;

month: 1..12;

year : 1900..2100;

end;

type Person = record

code : integer;

name : string[20];

wdate: Date; {дата поступления на работу}

end;

EmployeeFile = file of Person;

var F: EmployeeFile;

P: Person;

C: char; K: integer;

CurrNum, MaxNum: integer; {текущ. и макс. номер}

procedure InputPerson (var P: Person);

begin

write(’Код: ’); readln(P.Code);

write(’Имя: ’); readln(P.name);

write(’Год приема на работу: ’);

readln(P.wdate.year);

write(’месяц: ’); readln(P.wdate.month);

write(’день: ’); readln(P.wdate.day);

end; {InputPerson}

procedure OutPutPerson (P: Person);

begin

with P do begin

writeln (code);

writeln (name);

with wdate do

writeln (day, ’.’, month, ’.’, year);

end;

end;

Begin

assign(F,’employee.dat’);

{$I-}

reset(F);

{$I+}

if IOResult = 0 then

MaxNum := FileSize(F)

else begin

rewrite(F); close(F);

reset(F); MaxNum := 0;

end;

repeat

writeln (’A-добавить, E-редактировать, S-поиск,

Q- выход’);

{ввод символа с клавиатуры}

readln(C);

case C of

’A’,’a’:

begin {добавление записи}

seek(F, MaxNum); {перейти на конец файла}

InputPerson(P); {ввод с клавиатуры}

write(F, P); {записать в файл}

MaxNum := MaxNum + 1;

end;

’E’,’e’:

begin {редактирование записи}

write(’Номер записи для ред.(Max = ’,

MaxNum, ’): ’);

readln(CurrNum);

if (CurrNum<=MaxNum) and (CurrNum>0) then

begin

seek(F, CurrNum - 1); {переход на запись}

InputPerson (P); {ввод с клавиатуры}

write(F, P); {записать в файл}

end;

end;

’S’,’s’:

begin {поиск записи}

write (’Код для поиска: ’);

read(K);

seek(F,0); CurrNum:=0; {переход на начало}

repeat {читать записи,пока не совпадет код}

read(F, P); CurrNum := CurrNum + 1;

until (P.code = K) or EOF(F);

if P.code = K then begin

writeln(’Запись №’, CurrNum);

OutputPerson(P)

end

else writeln(’Не найден’);

end;

until C in [’Q’, ’q’]; {пока не введены ’Q’ или ’q’}

close(F);

End.

Поскольку процедура InputPerson должна поместить результат ввода в переменную, указанную в качестве аргумента, то этот аргумент объявлен как параметр-переменная (по ссылке). Процедура OutputPerson, наоборот, не должна изменять свой параметр, и просто выводит указанные значения на экран. Цикл repeat периодически ждет ввода одного символа с клавиатуры, после чего выбирает одно из предложенных действий с помощью оператора case. Рекомендуется исправить данную программу так, чтобы каждый вариант действий определялся соответствующей процедурой (например, AppendPerson, EditPerson, SearchPerson и т.п.). Подумайте, в какое место раздела объявлений основной программы их вставить. Сравните читабельность предложенного варианта программы и исправленного вами.

Файлы без типа

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

Ввод-вывод в безтиповые файлы осуществляется специальными высокоскоростными процедурами BlockRead и BlockWrite. Кроме того, расширяется синтаксис процедур reset и rewrite. В остальном принципы работы те же, что и для файлов с типом.

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

reset(F) или rewrite(F),

то размер блока равен 128 байт. Если объем памяти компьютера достаточен, то размер блока лучше увеличить, т.к. в этом случае процесс чтения-записи, осуществляемый целыми блоками, будет проходить быстрее. Размер блока указывается во втором параметре процедур открытия файла, например:

reset(F, 1024) — устанавливает размер блока для процедуры BlockRead, равный 1 Кбайт;

rewrite(F, 2048) — для процедуры BlockWrite блок = 2 Кбайт.

Чтение из файла осуществляет процедура

BlockRead (F, Buf, NumBlock, Readed) — где F – файловая переменная; Buf – переменная (буфер), в которую за один раз считывается NumBlock блоков информации с диска; Readed – необязательная переменная, в которую помещается число реально считанных с диска блоков или код ошибки при ее возникновении. Эту переменную можно использовать для контроля правильности работы процедуры BlockRead.

Запись в файл осуществляет процедура

BlockWrite (F, Buf, NumBlock, Writed) — где F – файловая переменная; Buf – буферная переменная, из которой на диск считывается NumBlock блоков информации; Writed – переменная, назначение которой аналогично переменной Readed, в нее помещается количество реально записанных блоков.

Для нормальной работы процедур BlockRead и BlockWrite необходимо придерживаться следующего соотношения:

размер_буфера >= размер_блока * количество_блоков.

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

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

Program Copy;

Const NumBlock = 1024; {кол. блоков}

Var Source, Dest: file; {источник и цель}

Readed, Writed: integer;

Buf: Array [1..1024] of Char;

Name: string[40]; {для имен файлов}

Begin

write (’Копировать из: ’); readln(Name);

assign(Source, Name); {связываем с источником}

{$I-} reset(Source, 1); {$I+} {попытка открыть}

if IOResult <> 0 then

writeln(’Файл не найден’)

else begin

write(’в: ’); readln(Name);

assign(Dest, Name); {связываем с целевым файлом}

{$I-} rewrite(Dest, 1); {$I+} {попытка открыть}

if IOResult <> 0 then

writeln(’Ошибка записи’)

else begin {начало копирования}

repeat

BlockRead(Source, Buf, NumBlock, Readed);

BlockWrite(Dest, Buf, Readed, Writed);

until (Readed = 0) or (Readed <> Writed);

if Readed <> Writed then

writeln(’Нет места на диске’)

else writeln(’Файл скопирован’);

close(Source); close(Dest);

end;

end;

End.

Работа данной программы может выглядеть на экране следующим образом:

Копировать из: C:\DOS\command.com

в: A:\command.com

Файл скопирован

Размер блока, как для чтения, так и для записи, выбран равным 1 байту для того, чтобы копия файла совпадала с источником с точностью до байта. При копировании сначала читаются 1024 байта с источника в область памяти, располагающуюся с адреса массива Buf длиной также 1024 байта. Затем этот же участок памяти записывается в целевой файл. Процесс продолжается до тех пор, пока либо количество читаемых блоков Readed не окажется равным нулю (т.е. источник исчерпан), либо количество прочитанных Readed и количество записанных Writed блоков окажутся различными (обычно меньше записывается, чем читается при нехватке места на диске для записи).

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

В заключение следует сказать, что процедуры BlockRead и BlockWrite являются высокоскоростными, т.е. работают заметно быстрее обычных процедур Read и Write. Поэтому, хотя использование блочных процедур и сложнее обычных, целесообразность их применения часто бывает оправдана и даже необходима. В программе Copy можно поэкспериментировать с размерами блоков для чтения и записи. Только при этом очень внимательно нужно следить за размером буфера и количеством блоков. Так, например, при увеличении размера блока до 512 байт (reset(Source, 512) и rewrite(Dest, 512)) и неизменном размере буфера Buf (1024 байт) количество блоков NumBlock должно быть уменьшено до двух (512 * 2 = 1024). Обратите внимание на скорость копирования (лучше использовать в качестве целевого флоппи-диск) и итоговый размер целевого файла.

Вопросы и задания для самостоятельной работы

1. Какая структура данных называется последовательным файлом?

2. Расскажите порядок работы с файлами в программах.

3. Какие типы файлов используются в Паскале?

4. Почему в текстовых файлах невозможен произвольный доступ? Почему такой доступ возможен для файлов с типом и без типа?

5. Пусть тип переменной x соответствует базовому типу файла F. Запишите операторы, которые перепишут значение пятой по порядку компоненты файла значением переменной x.

6. Сформируйте файл из компонент целого типа (это можно сделать с помощью отдельной, написанной вами программы или простого текстового редактора, например, встроенного редактора Norton Commander’а в MS-DOS или редактора Блокнот в Windows, где нужно ввести числа, разделив их пробелами или «переводом строки»). Для указанного файла данных найти:

a) сумму всех компонент;

b) сумму четных (по значению) компонент;

c) произведение всех компонент, меньших пяти по абсолютному значению.

7. Дан исходный текстовый файл. Сформируйте новый файл, в котором из строк исходного текста будут удалены все цифры.

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

9. Заданы два текстовых файла. Определить, совпадает ли содержимое этих файлов. Если нет, то указать номер символа, на котором начинаются различия.

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

a) коды товаров с заданным названием;

b) общую стоимость товаров, цена которых превышает x;

c) количество и общую стоимость товаров с одинаковым названием.

d)

[1] Директива — указание компилятору включить или выключить то или иное средство обработки или контроля. Начинается символами {$ и заканчивается }. Полный перечень директив ищите в справочной системе Turbo Pascal.


line

4. Операционная система Windows

4.1. Начальные сведения

ОС Windows разработана американской корпорацией Microsoft. История этой системы начиналась во второй половине 80-х годов. Первые версии Windows 1.0, 2.0, 3.0 (3.1, 3.11) являлись обычными графическими оболочками для MS-DOS и предназначались для улучшения организации работы пользователей персональных компьютеров. Версии 1.0 и 2.0 являлись как бы графической альтернативой Norton Commander’у и большого распространения не получили. Начиная с версии 3.0, Windows получила признание массового пользователя, поскольку являлась уже не просто файловой оболочкой или очередным Commander’ом, а полноценной рабочей средой, которую можно было настроить на конкретные вкусы пользователя. Это была система со своими концепциями и идеологией, которые позволили ей не только выжить, но и развиваться дальше. Уже 3-я версия имела тенденцию к самостоятельности и после загрузки из DOS брала очень многие функции управления на себя, требовала загрузки собственных драйверов устройств, учитывающих особенности построения Windows. В четвертой версии Windows, названной Windows-95, разработчики соединили DOS и графическую среду Windows в единую систему. При загрузке Windows-95 сначала загружается DOS-часть операционной системы, в которую входят модули с набором низкоуровневых функций управления файловой системой. Далее загружается графическая оболочка и драйвера для управления всеми устройствами и ресурсами вычислительной системы. Полноценное управление системы обеспечивается только в графической среде. Режим, предназначенный для выгрузки графической оболочки и выхода в «чистый» DOS, отключает большинство драйверов, а, значит, и возможностей управления и предназначен в основном для ремонтно-восстановительных работ. Поскольку первоначально Windows развивалась как бы из недр DOS, она сохранила многие недостатки предыдущей системы, в частности, низко производительную файловую систему и возможность для многих программ бесконтрольно использовать аппаратные ресурсы вычислительной системы, что часто приводило к общим зависаниям системы или полному ее разрушению.

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

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

Вопросы для самостоятельной работы

1. Кем и когда были разработаны первые версии Windows?

2. С какой версии Windows считается полноценной операционной системой?

3. Чем отличается Windows NT от «обычных» версий Windows?

4.2. Структура Windows NT

Windows NT — многозадачная 32-разрядная ОС, обеспечивающая полностью защищенный режим работы.

В отличие от DOS, где используется файловая система FAT, для Windows NT “родной” является файловая система NTFS. В NTFS регистрационные записи каждого файла и каталога хранят информацию не только о месте размещения и размере соответствующих файлов, но и включают дополнительную информацию о различной степени доступа к этим файлам конкретных пользователей и групп пользователей.

Ядро Windows NT рассчитано на работу одно- и многопроцессорных систем в многозадачном режиме, а также включает в себя функции работы с файловой системой. Многозадачная работа основана на принципе квантования рабочего времени. То есть весь рабочий период делится на очень короткие (несколько мс) промежутки (кванты) времени Dt, в пределах которых общая последовательность действий системы повторяется. В пределах каждого кванта времени для каждой задачи выделяется определенная часть времени в соответствии с ее приоритетом.

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

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

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

Графический интерфейс пользователя практически повторяет интерфейс Windows-95.

Специально для работы DOS-программ в Windows NT существует так называемая DOS-сессия, для которой отводится отдельная защищенная область памяти, однако полный контроль со стороны самой ОС сохраняется.

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

Как утверждает фирма Microsoft (1996 – 1997 гг.), Windows NT Workstation 4.0 является наилучшей операционной системой для деловых вычислений. Она удачно сочетает легкость работы Windows-95 с мощностью и надежностью Windows NT. Система Windows NT Workstation 4.0 отвечает всем стандартам надежности, которые необходимы администраторам систем управления данными и другим опытным пользователям для работы с важными деловыми программами. Система также защищает прикладные программы от некорректных воздействий одной программы на другую.

Вопросы для самостоятельной работы

1. Укажите основные составные части (структуру) Windows NT и их назначение.

2. Изложите основные принципы многозадачной работы Windows NT.

3. Укажите порядок загрузки Windows NT.

4.3. Основные принципы работы

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

В первую очередь, это, конечно же, новый графический интерфейс пользователя, заимствованный Windows NT у Windows 95. Основополагающим моментом является концепция Рабочего Стола (Desktop), который отображается на экране и позволяет получить доступ ко всем источникам информации, расположенным как на данном компьютере, так и в распределенной локальной сети. Вместо понятия «файл» пользователю предлагается более понятное обозначение информационного объекта — «документ». Вместо понятий «каталог» и «подкаталог» (directory, subdirectory) используются понятия «папка» (folder) и «вложенная папка». Все элементы интерфейса являются специальными программными объектами, исполняемый код которых скомпонован в определенные модули. Каждый объект имеет набор свойств (характеристик) с помощью которых пользователь может настроить его поведение или внешний вид по своему усмотрению. Каждый объект может выполнять только строго определенные для него действия, называемые методами и хранимые в виде процедур в тех же программных модулях. Запуск любой программы происходит в отдельной области памяти. Визуально ее работа отображается в отдельном стандартном окне. При этом операционная система контролирует попытки данной программы воздействовать на другие области памяти и пресекает их, что обеспечивает безопасность работы всей системы. Обмен данными между различными программами осуществляется с помощью специальных механизмов, обеспечивающих целостность и безопасность данных. При этом очень широко используется специальный универсальный объект, называемый Буфером Обмена. Это отдельная область памяти, представляющая своеобразный «карман», в который можно «положить» любой объект (файл, фрагмент текста, картинку и т.д.), находясь в одной программе, а затем воспользоваться этим объектом (достать его из Буфера Обмена), переключившись в другую программу.

Windows NT предоставляет очень широкий набор различных настроек операционной среды с помощью специального объекта — Панели Управления (Control Panel). На Панели Управления расположено множество объектов, с помощью которых можно настроить любые устройства, программные службы или режимы работы операционной системы.

По умолчанию поверхность Рабочего Стола изображается в виде «зеленого сукна», на котором можно поместить пиктограммы («иконки») наиболее часто используемых папок, программ или объектов доступа к источникам информации. В нижней части Рабочего Стола находится полоса так называемой Панели Задач (Taskbar), на которой находится кнопка «Пуск» («Start») для разворачивания основного иерархического меню системы (Главное Меню), дающего доступ ко многим пользовательским программам и системным объектам. Каждая запущенная программа отображается на Панели Задач в виде клавиши с соответствующей надписью, что позволяет очень легко и удобно переключаться между различными одновременно работающими программами простым щелчком мышью по соответствующей клавише на Панели Задач.

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

Запуск любой программы или доступ к документу можно осуществлять различными способами. Это можно сделать как при помощи Проводника, так и при помощи Главного Меню или пиктограмм на рабочем столе, что обычно определяется вкусами и предпочтениями конкретного пользователя. Также имеется возможность определить некоторые действия с помощью определенных комбинаций клавиш, называемых в таком случае «горячими клавишами» (hot keys).

Для более удобного запуска одних и тех же программ или доступа к определенным объектам из различных локальных мест вычислительной системы используются специальные объекты — ярлыки (shortcuts). Ярлык — это маленький файл размером 1 Кбайт, внутрь которого помещается иконка связанного с ним объекта и прописывается путь, по которому располагается этот объект. При двойном щелчке мышью по ярлыку осуществляется доступ или запуск связанного с ярлыком объекта. Ярлык можно поместить на рабочий стол, в Главное меню или внутрь любой папки, т.е. любое место, где необходим быстрый запуск нужной программы или доступ к нужному объекту, физически расположенному в другом месте информационной структуры. Удаляя ярлык, вы как бы «срываете ненужную этикетку», оставляя нетронутым сам объект. Понятно, что ярлыки позволяют экономить дисковое пространство, поскольку не требуют размножения самих объектов доступа, и являются инструментом организации структуры информационного окружения.

Windows — документно-ориентированная система. Это означает, что главным рабочим принципом системы является работа с документом. В специальной системной базе данных хранится список типов различных файлов-документов (список файловых расширений), в соответствие которым поставлены определенные программы обработки этих документов. Пользователь имеет возможность незарегистрированные типы документов самостоятельно ассоциировать с необходимыми программами. При этом двойной щелчок мышью по имени документа в Проводнике или любому из его ярлыков автоматически запускает сначала нужную программу обработки, в которую сразу же загружается выбранный документ. Например, если подобным образом выбрать документ с расширением txt, то он будет загружен в приложение Блокнот, а документ типа doc — в текстовый процессор Microsoft Word (если он установлен) или системный редактор Wordpad. Данное свойство Windows значительно облегчает работу с любыми документами.

Для удаления файлов используется технология, уже давно опробованная на различных типах сетевых серверов. При этом в системе функционирует специальный объект Корзина (Recycle Bin). Ее иконка присутствует как на Рабочем Столе, так и в Проводнике. Для Корзины выделяется некоторый защищенный объем жесткого диска. При удалении файл сначала помещается в Корзину, из которой его можно легко восстановить на прежнее место. При переполнении Корзины новые удаляемые файлы вытесняют самые старые (по дате удаления) файлы, которые уже не подлежат восстановлению. Таким образом, пользователь всегда имеет возможность восстановить любые последние (в пределах объема Корзины) удаленные файлы. Правда, имеется возможность удаления файлов «мимо» Корзины, а также принудительная очистка самой Корзины. Такие файлы, как правило, восстановить уже невозможно даже с использованием специальных утилит. Поэтому настоятельно рекомендую как обычным, так и опытным пользователям, удалять файлы только в Корзину и никогда ее не очищать. Однажды такая «привычка» окажет неоценимую услугу в случае забывчивости или неосторожности при удалении какой-либо информации. Исключением может стать либо осознанная необходимость удаления файла с невозможностью его восстановления, либо резкая нехватка места на жестком диске. В этом случае можно получить дополнительный объем за счет очистки Корзины. При этом также рекомендуется предварительная проверка (просмотр) всех окончательно удаляемых файлов.

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

Windows NT позволяет объединять данные из нескольких приложений в одном составном документе с помощью специального механизма связывания и внедрения объектов (OLE – Object Linking and Embedding), применяемого в приложениях для Windows. Например, составной документ может содержать форматированный текст, рисунки, данные из электронной таблицы или базы данных, а также значки для проигрывания звукозаписей или файлов мультимедиа. При этом для изменения данных не обязательно знать, в каком приложении они были созданы, поскольку автоматически будет загружено нужное приложение для работы с выбранным объектом. Использование OLE технологии позволяет придать документам совершенно новое качество, недостижимое для обычных бумажных документов. Так, например, электронный документ может предоставить не только описание определенного объекта, но и показать изображение этого объекта в движении и даже рассказать о нем «живым» голосом.

В состав Windows NT включены несколько приложений, поддерживающих механизм OLE: система электронной почты Windows Messaging, окно просмотра папки обмена (Буфера Обмена), графический редактор Paintbrush, программа звукозаписи и текстовый редактор Wordpad.

Также широко используется технология Drag-and-Drop (перетащить-и-бросить). Любой объект, допускающий данную технологию, можно зацепить указателем мыши и перетащить на область экрана, занимаемую другим объектом. В зависимости от того, на каком объекте произойдет отпускание перемещаемого объекта, осуществится определенное действие. Например, если перетащить некоторый файл из Проводника и отпустить его на объекте Корзина, то произойдет удаление этого файла; при перетаскивании файлов с одного диска на другой происходит их копирование; при перетаскивании файлов из одной папки в другую в пределах одного диска происходит их перемещение и т.д. Изучение всех аспектов технологии drag-and-drop позволит во многих случаях сделать вашу работу более удобной и естественной, а также заметно увеличит ее производительность.

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

Включенные в состав Windows NT файлы справки являются основным источником сведений о системе. Чтобы вызвать справку, нужно на Панели Задач нажать кнопку «Пуск» и выбрать в Главном Меню команду «Справка». Вкладка «Содержание» отображает список разделов справки, сгруппированных по темам, а вкладки «Предметный указатель» и «Поиск» служат для поиска нужных справочных сведений.

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

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

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

В отличие от MS-DOS операционная система Windows NT допускает длинные имена файлов (до 255 символов), которые могут включать пробелы и некоторые знаки пунктуации. В связи с этим рекомендуется давать документам понятные длинные названия, отражающие их содержание. Например, не стоит давать файлу имя типа «Иванов.doc» (со временем вы забудете, что в нем находится), а лучше «Предложения по рациональному использованию ресурсов (Иванов).doc». Аналогичные замечания касаются названий папок любых уровней.

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

Вопросы для самостоятельной работы

1. Какие возможности предоставляет Рабочий Стол Windows? Укажите основные элементы Рабочего стола и их назначение.

2. Что такое программный объект и каковы основные принципы его функционирования?

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

4. Что такое Буфер Обмена и для чего он используется?

5. Для чего предназначена Панель Управления?

6. Укажите назначение Проводника и основные способы запуска различных программ или доступа к документам.

7. Какова технология удаления файлов в Windows?

8. Укажите определение и назначение механизма OLE.

9. Поясните основы технологии Drag-and-Drop.

10. Для чего используется правая кнопка мыши?

11. Расскажите об основных элементах справочной системы Windows.

12. Какие возможности предоставляют длинные имена папок и документов Windows?


line

5. Пакеты прикладных программ

5.1. Назначение и состав пакета Microsoft Office

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

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

В состав пакета входят следующие инструментальные средства:

1) Microsoft Word — мощный текстовый процессор (редактор) для подготовки практически любых видов текстовых документов.

2) Microsoft Excel — табличный процессор (редактор) для подготовки табличных данных, включает широкий набор средств обработки и анализа.

3) Microsoft Access — система управления базами данных — одна из лучших систем по организации и проектированию баз данных, включает полный набор средств сопровождения баз данных, в том числе и средства создания прикладных программ.

Указанные средства являются основными в офисном пакете. Все они имеют в своем составе единый прикладной язык программирования Visual Basic, с помощью которого можно программировать как нестандартные виды обработки данных, так и настоящие прикладные программы. Кроме того, в комплект Microsoft Office 97 входят:

4) Power Point — средство для создания презентационных видео роликов.

5) Microsoft OutLook — планировщик руководителя или делового человека, включающий средство планирования работы, встреч и многих других событий, средства просмотра и отправки электронной почты, средства оповещения пользователя о назначенных событиях в установленный срок и другие возможности.

Помимо указанных средств в Microsoft Office входит набор дополнительных компонент, выполненных в виде OLE-объектов и предназначенных для работы в составе всех средств Microsoft Office. К ним относятся объекты для построения различных графиков и диаграмм, редактор математических формул, средства проверки правописания и некоторые другие.

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

Вопросы для самостоятельной работы

1. Укажите назначение пакета прикладных программ Microsoft Office.

2. Укажите состав Microsoft Office и назначение его отдельных составных частей.

5.2. Текстовый процессор Microsoft Word

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

Редактор Word запускается в стандартном окне Windows. Сразу под заголовком окна располагается меню редактора, с помощью которого можно выполнить любую операцию редактора.

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

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

Редактор Word позволяет редактировать несколько различных текстов в отдельных окнах, переключение между которыми можно осуществлять с помощью пункта меню “Окно”.

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

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

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

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

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

Параметры страницы могут быть изменены через пункт меню “Файл” и команду “Параметры страницы…”.

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

На Украине и в России принято набирать тексты с абзацного отступа 1-2 см, выравниванием текста по ширине, переносом слов, без промежутков между абзацами.

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

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

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

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

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

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

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

Одна из интереснейших возможностей редактора Word – использование Visual Basic в качестве макроязыка. Это позволяет, во-первых, автоматизировать частые трудоемкие операции, а во-вторых, дает возможность алгоритмическим способом осуществлять сложную нестандартную обработку текстов, труднодоступную при использовании любых других средств программирования, поскольку Visual Basic может непосредственно работать с любыми объектами документов редактора Word.

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

Одна из основных особенностей думающего человека – это способность оценки своих возможностей по рациональному разделению работы на “ручную” часть и часть, поддающуюся автоматизации. Часто 2-3 часа, потраченные на изучение определенной возможности инструментальных средств, позволяют затем сэкономить несколько дней длительной рутинной работы.

Вопросы для самостоятельной работы

1. Укажите основные возможности текстового процессора Microsoft Word.

2. Что собой представляет документ редактора Word и каковы основные особенности и правила его оформления?

5.3. Табличный процессор Microsoft Excel

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

Колоссальный набор аналитических инструментов Excel может решить любые поставленные задачи по статистике, финансам, инженерии и др. Для правильного использования этих инструментов требуются специальные знания. Excel станет вашим настольным инструментом, если вы научитесь использовать скрытые стратегии, нестандартные способы управления данными и их анализ. При полноценной работе в Excel гораздо шире, чем в Microsoft Word, применяются макрокоманды на Visual Basic. Если большая часть вашего документа содержит таблицы, лучше всего делайте его на Excel.

Основные характеристики

Файл документа в Excel называется книгой и имеет расширение XLS. Книга делится на листы, обозначаемые именами. По умолчанию Excel называет листы именами «Лист1», «Лист2» и т.д. Их можно переименовать, щелкнув правой кнопкой мыши по закладке листа и выбрав команду «Переименовать». Имена листам желательно давать как можно более короткие, но отражающие смысл их содержимого. Например, книга «Зарплата за 1998 г.xls» может содержать 12 листов с названиями «Январь», «Февраль», …, «Декабрь», а книга «Анализ финансовой деятельности.xls» — листы с названиями отделов «Маркетинг», «Коммерческий», «Бухгалтерия» и т.п.

Каждый лист рабочей книги представляет собой электронную таблицу. Столбцы в таблице обозначаются буквами латинского алфавита: A, B, C, …, Y, Z, AA, AB, AC, …, AZ, BA, BB, …, BZ, …, IA, IB, …, IV. Таким образом, количество столбцов не может превышать 256 (28). Практически трудно даже представить себе таблицу с таким огромным числом столбцов, поскольку обычно данные заносятся в таблицы строками, а столбцы содержат определенные характеристики этих данных. Строки нумеруются цифрами по порядку. Их количество в таблице на одном листе может достигать 65536 (216). Адрес любой ячейки складывается из имени столбца и номера строки: А5, В8, АА12 и т.д.

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

· числовой (целые и дробные числа);

· текстовый (строки текста до 32000 символов);

· денежный (специальный формат для денежных единиц);

· дата (записи дат в общепринятых форматах);

· время (аналогично);

· общий (универсальный тип для хранения как текста, так и чисел).

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

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

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

При вводе в ячейку данных, длина которых превышает стандартную ширину ячейки, ее видимая ширина автоматически увеличивается, перекрывая соседние ячейки. Поэтому часто текстовые данные вводятся не во все соседние ячейки, а в те, которые не перекрываются.

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

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

Для изменения стиля границ используйте выделение нужных ячеек таблицы и выбора стиля на кнопке «Границы» панели инструментов «Стандартная» или после щелчка правой кнопкой мыши по выделенной области и выбора команды «Формат ячеек…» (закладка «Граница» в выводимом диалоговом окне).

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

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

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

Создание простых таблиц с использованием формул

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

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

При составлении формул к содержимому ячеек электронной таблицы можно обращаться по их адресам или именам. Адрес ячейки совпадает с ее обозначением и может быть относительным или абсолютным. Относительный адрес просто составляется из обозначения столбца и номера строки, например, A5, B11, C23 и т.д. Относительные адреса в формуле привязываются относительно адреса самой ячейки, в которую эта формула введена. Так, если в ячейку C2 введена формула «=A2+B2», то считается, что эта ячейка содержит сумму двух ячеек, расположенных непосредственно слева от нее. Если эта формула будет скопирована, например, в ячейку C5, то она автоматически примет вид «=A5+B5», а если в ячейку F4, — «=D4+E4». Таким образом, относительная связка (точнее разность) адресов сохраняется. Если же скопированная формула в новой ячейке должна ссылаться на те же самые ячейки, т.е. остаться неизменной, то необходимо использовать абсолютную адресацию или фиксацию столбцов и строк в адресе. Это выполняется с помощью символа «$» непосредственно перед соответствующим обозначением. Например, в обозначении $E$9 зафиксирован как столбец, так и номер строки. В обозначении $F15 зафиксирован только столбец, а в обозначении D$20 — только номер строки. Зафиксированные обозначения считаются абсолютными и при копировании формул не изменяются. Незафиксированные обозначения привязываются относительно адреса текущей ячейки (той, в которую вводится формула). Обращаться можно и к ячейкам на других листах рабочей книги, указав предварительно имя листа и отделив его от адреса ячейки символом «!», например, Лист2!$B$3 или Лист3!F8 и т.п.

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

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

Использование адресов ячеек в формулах заметно усложняет работу, особенно при поиске ошибок в расчетах, если количество формул на рабочем листе и их сложность возрастают. Программисты знают, что использование длинных и понятных имен переменных заметно облегчает понимание всей программы в целом. Аналогично, для этих же целей можно использовать понятные длинные имена при обозначении ячеек электронной таблицы. Сделать это, предварительно выделив нужную ячейку, можно с помощью команды главного меню «Вставка\Имя\Присвоить...» или просто ввести имя ячейки в элемент выпадающего списка «Имя» и (обязательно) нажать клавишу «Enter». Хотя второй вариант часто намного удобнее, однако просмотреть весь список имен в рабочей книге, каким конкретно ячейкам они назначены, удалить ненужные имена можно только выполнив указанную команду меню. Пусть, например, в ячейке A1 находится стоимость проекта, а в ячейке B2 — процент некоторых отчислений в городской бюджет. Тогда сумма отчислений может быть введена, например, в ячейку F5 в виде формулы «=$A$1*$B$2». При этом отдельно взятая формула мало что говорит о своем содержимом. Если же для ячейки A1 определить имя «СтоимостьПроекта», а для ячейки B2 — имя «ПроцОтчисл», то тогда в ячейку F5 можно ввести формулу в виде «=СтоимостьПроекта*ПроцОтчисл», что, конечно же, намного понятней, чем в первом варианте. Такие имена выступают как абсолютные адреса ячеек. Старайтесь более широко использовать понятные имена ячеек, особенно в крупных вычислительных проектах или работах. «Хорошие манеры», вошедшие в привычку, не раз окажут вам в будущем неоценимую услугу.

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

1) При перетаскивании маркера одиночной выделенной ячейки ее содержимое (если это не формула) копируется. Маркер выделенной области появляется в правом нижнем углу этой области в виде маленького черного квадратика.

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

3) Если размер выделенной области в направлении перетаскивания занимает более двух ячеек, то возможны две ситуации. Если разность между значениями двух любых соседних ячеек в выделенном направлении одинакова, то так же, как и в предыдущих двух примерах, строится ряд арифметической прогрессии. Это демонстрирует первый из двух приведенных примеров. Если же разность неодинакова, как во втором примере, то при перетаскивании маркера продолжает строиться ряд значений, основанный на линеаризации по методу наименьших квадратов. Более наглядно это показано на графике, где по оси X указаны номера точек, а по оси Y — значения в соответствующих ячейках. Из графика видно, что новые значения находятся на аппроксимированной прямой.

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

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

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

Рассмотрим простой пример создания прайс-листа некоторой вымышленной фирмы «Рога и копыта».

Самое ценное свойство электронной таблицы для прайс-листа — это автоматический пересчет гривневой цены товаров по указанному курсу доллара.

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

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

Обратите внимание, что числовое значение курса доллара не записано в строке вместе с текстом, а вынесено в отдельную ячейку C3. Этой же ячейке дано имя «КурсДол». Теперь по указанному имени можно ссылаться на курс доллара в расчетных формулах. Размеры столбцов и разметка таблицы выполняются такими, как это необходимо. Границы таблицы выделяются с помощью той же команды выпадающего меню по правой кнопке мыши «Формат ячеек...» на закладке «Граница». Текстовая информация заносится в столбцы A (Товар) и B (Ед. изм.). Долларовая цена товара вводится в столбец D (Цена ($)). В ячейки гривневой цены необходимо занести соответствующие формулы расчета. Быстрее всего это можно сделать так: в ячейку C7 вводится формула «=КурсДол*D7» (см. на рисунке), содержимое данной ячейки копируется в буфер, далее выделяются все остальные ячейки (выделить ячейки с разрывом можно, удерживая нажатой клавишу Ctrl), в которые должна быть помещена аналогичная формула, и выполняется вставка из буфера. Поскольку адрес D7 в формуле является относительным, то в остальных ячейках адрес автоматически изменится так, чтобы указывать на соответствующую ячейку справа от текущей. В завершение можно выделить все ячейки с денежными значениями и с помощью все той же команды «Формат ячеек...» установить для них числовой формат, например, «Финансовый». Это позволит просматривать все значения с двумя знаками после запятой независимо от количества цифр дробной части. Таблица готова. Теперь достаточно только изменить данные по курсу доллара, как все остальные значения таблицы будут автоматически пересчитаны по соответствующим формулам. Вид прайс-листа на бумаге при печати можно просмотреть с помощью кнопки «Предварительный просмотр» панели «Форматирование».

Вы, наверное, уже обратили внимание, что ввод формулы в ячейку всегда начинается с символа равенства «=». В противном случае это будет обычное значение (текстовое, числовое и т.д.) одного из приведенных ранее типов. В Excel существует масса различных встроенных функций для выполнения математических, финансовых, статистических и других расчетов. Их списком можно воспользоваться после того, как в ячейку введен начальный символ «=», из выпадающего списка элемента «Имя». Аналогичным списком можно пользоваться, если для ввода формулы в ячейку сразу же нажать кнопку «Вставка функции» fx на панели «Стандартная». Дополнительную информацию по каждой функции можно получить из справочной системы Excel, нажав клавишу F1 и введя ключевое слово «функции», после чего нужно найти раздел «функции листа – перечень». Многие функции требуют ввода различных аргументов, которые нужно набирать в строке формулы в круглых скобках после имени функции, отделяя аргументы символом точка с запятой «;» один от другого.

Использование диаграмм

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

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

Рассмотрим некоторые основные типы диаграмм, применяемых в Excel, и типичные случаи их применения.

1) Заполненная (объемная заполненная) или диаграмма с областями. Отображает общие данные в целом; обычно выражает зависимость от времени. Основное назначение: отображает количественные изменения. Пример: годовая продажа по отделу. Здесь общий объем определяется положением внешней (верхней) линии диаграммы, а относительный объем по категориям можно оценить по ширине областей в вертикальном сечении диаграммы.

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

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

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

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

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

7) График (объемный график). Похожа на заполненную диаграмму; отображает изменения данных за весь период. Основное назначение: отображает временные изменения данных, но не

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

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

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

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

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

Прогнозирование в таблицах данных

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

Одна входная величина и несколько формул

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

Фактически весь расчет состоит из двух небольших таблиц. Первая (строки с 3 по 7) содержит исходные данные. При этом в ячейку B5, естественно, вводится формула типа Цена*Количество, например, в виде «=B3*B4». Некоторым ячейкам для удобства дальнейших расчетов даются соответствующие имена (см. рисунок). Далее заполняются строки 9 и 10. При этом ячейки B10 и C10 содержат интересующие нас формулы и показывают итоговые значения согласно исходным данным первой таблицы.

Вторая таблица (прогнозируемые значения) формируется следующим образом. Сначала подготавливается пространство для будущей таблицы. Для этого в левый крайний столбец и верхнюю строку новой таблицы необходимо поместить вариации входного аргумента и интересующие формулы расчета. Так, в левый столбец (ячейки А11-А17) с помощью автозаполнения заносится диапазон значений для входной величины «Процент». Верхняя строка (ячейки B10, C10) уже содержит готовые формулы. Ячейка левого верхнего угла (A10) во внимание не берется и может содержать любые пояснительные надписи. Дальнейший расчет выполняется с помощью таблицы подстановки. Для этого нужно выделить необходимый диапазон ячеек будущей таблицы (А10:С17). Затем нужно выполнить команду меню «Данные\Таблица подстановки…». В диалоговом окне ввести:

После этого в ячейках В11:С17 появятся расчетные значения. Смысл последней операции заключается в том, что вы как бы указываете, что в каждой строке новой таблицы нужно взять значение аргумента в левом столбце и подставить его вместо того элемента формулы, который ссылается на ячейку B6, т.е. «Процент». По столбцам ничего подставлять не нужно, поскольку по столбцам осуществляются вычисления по формулам, находящимся вверху соответствующего столбца. Меняя любые входные данные из верхней таблицы (кроме Процента), можно в нижней таблице наблюдать зависимость выплат от процентных ставок. Если же, к примеру, вас больше интересуют размеры выплат в зависимости от срока, то можно в левый столбец ввести ряд значений, например от 12 до 36 месяцев с интервалом, скажем, в 2 месяца. Тогда в таблице подстановки придется сослаться на ячейку B7, а не B6.

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

Две входные величины и одна формула

При использовании двух входных переменных в Excel можно применять только одну формулу, поскольку при большем количестве формул требовалось бы построение 3-х и более мерных таблиц. Человек практически не способен воспринимать числовую информацию, значения которой «висели» бы в 3-х мерном пространстве. Ну а 4-х или 5-ти мерное пространство даже и вообразить-то невозможно. По этой же причине нельзя использовать более двух входных переменных. В любом случае информацию придется раскладывать на плоские проекции, т.е. обычные двухмерные таблицы.

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

Исходные данные показаны далее на рисунке в диапазоне ячеек А1:В15. Далее необходимо подготовить таблицу данных для расчета. Для этого в диапазоне ячеек D2:I8 в верхней строке введем диапазон аргументов для величины «ОбъемПродаж», а в левом столбце — диапазон аргументов для величины «ПроцентПрибыли». В левый верхний угол таблицы обязательно нужно поместить формулу расчета. Для этого в ячейку D2 просто копируется формула из ячейки В5 или вводится формула «=В5». Второй вариант предпочтительнее, поскольку исходная формула останется в единственном экземпляре, а в этом случае легче выполнять модификацию данной формулы. При изменении формулы в ячейке B5 ячейка D2 автоматически будет на нее ссылаться.

Выделив ячейки D2:I8 и выполнив команды меню «Данные\Таблица подстановки…», нужно ввести:

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

Для того, чтобы увидеть аналогичную зависимость для чистой прибыли, нужно построить еще одну таблицу, которую придется создавать несколько другим способом. Дело в том, что каждая ячейка этой таблицы должна рассчитываться по формуле «ВаловаяПрибыль – Расход». Значения соответствующих валовых прибылей находятся в только что созданной таблице «Валовая прибыль». Поэтому сначала левый столбец и верхнюю строку аргументов можно просто скопировать из таблицы «Валовая прибыль». Далее в первую ячейку новой таблицы Е12 вводится формула «=Е3-Расход». Затем оттяжкой маркера этой ячейки вправо с помощью автозаполнения заполняется вся строка.

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

Поскольку исходная формула «=Е3-Расход» содержала относительный адрес валовой прибыли, то все остальные ячейки чистой прибыли будут ссылаться на соответствующее значение валовой прибыли.

Значения некоторых величин, которые зависят от двух аргументов (как в таблицах валовой и чистой прибыли) иногда удобно демонстрировать в виде объемной диаграммы типа Поверхность. При этом по осям X и Y откладываются значения аргументов, а по оси Z — значения демонстрируемой величины.

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

Элементы статистики

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

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

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

Перечисляемые величины могут быть упорядочены. Обычно они представляются численно, но не могут быть проанализированы статистически. Например, можно упорядочить объекты по уровню сложности от 1 до 5. Можно утверждать, что объект 2-го уровня более сложен для изучения, чем объект 1-го уровня. Однако нельзя утверждать, что объект 2-го уровня, скажем в 2 раза сложнее, чем объект 1-уровня.

Интервальный тип также использует численные величины. Интервальное измерение содержит больше значений, чем перечисляемое. Интервальные данные не имеют абсолютного нуля, но имеют некоторое измерение. Например, разница между 50 и 60 градусами точно такая же, как и разница между 25 и 35 градусами. Однако нельзя, основываясь на интервальных данных, сказать, что при 25 градусах в 2 раза холоднее, чем при 50 градусах.

Рациональный тип подобен интервальному типу данных, но имеет абсолютный нуль. Такие значения, как возраст, вес, деньги имеют абсолютный нуль. Человек, которому 40 лет, вдвое старше того, кому 20. Тот, кто весит 90 кг, в 3 раза тяжелее того, кто весит 30 кг. У человека с $20 в 2 раза больше денег, чем у человека с $10.

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

Статистические определения

Среднее определяется суммированием ячеек некоторого диапазона и делением этой суммы на количество ячеек этого же диапазона. Для выполнения в Excel используется функция СРЗНАЧ. Среднее — это сглаживающая статистика. Необходимо уметь правильно интерпретировать средние значения, особенно, если они вступают в операции с другими средними значениями.

Медиана — это среднее число в группе величин, упорядоченных по значению. Это то значение, выше и ниже которого приходится половина всех чисел. Например, для ряда

1, 1, 2, 2, 24

среднее = 6, а медиана = 2. Если количество значений четное, то медиана будет равна среднему от двух величин, находящихся посредине. В Excel используется функция МЕДИАНА. Для интервальных значений, содержащих несколько очень маленьких величин или очень больших величин, медиана — лучший индикатор реальных значений (а не среднее).

Мода — чаще всего встречающаяся величина в указанном диапазоне. В Excel соответствующая функция — МОДА. Медиана и мода довольно редко используется в статистике.

Стандартное отклонение:

— вариация (или дисперсия),

где S — среднее выборки ai из N чисел.

— стандартное отклонение — среднее отклонение каждого числа от среднего значения. Иначе говоря, дисперсия — это среднеквадратичное отклонение всех значений в выборке от среднего значения, а стандартное отклонение — это корень из дисперсии. В Excel имеется встроенная функция СТАНДОТКЛОН.

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

Популяция — это законченная группа. Например, клиенты фирмы — популяция.

В основе практически всех статистических вычислений лежит случайный набор величин.

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

Случайный выбор, как это ни покажется странным, можно заранее запланировать. Например, чтобы сделать выборку 25 человек из 100 клиентов вашей фирмы, нужно каждому клиенту присвоить номер от 1 до 100, и затем использовать таблицу случайных чисел, чтобы выбрать тех клиентов, которые будут участвовать в исследованиях.

В начале исследования вероятность выбора одного конкретного клиента составляет 25 из 100 (0,25). Если выбрать этого клиента, а затем удалить его из списка, то при выборе последнего клиента шанс включения его в список упадет до 1 из 76 (0,0132). Такой выбор называется выбором без замещения. Чтобы решить проблему, необходимо после выбора клиента вернуть его в список. Если выбран клиент, который уже включен в список, то должен быть выбран следующий (по номеру) клиент. Такой выбор называется выбором с замещением.

Для генерации случайных чисел используются две функции: СЛЧИС и СЛУЧМЕЖДУ. СЛЧИС возвращает случайное число, большее или равное нулю, но меньшее или равное единице. Функция СЛУЧМЕЖДУ генерирует набор случайных чисел, расположенных между двумя значениями, которые вы указали. Каждый раз, когда рабочий лист пересчитывается, генерируются новые числа.

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

Если в меню «Сервис» присутствует команда «Анализ данных…», то, значит, данная надстройка уже установлена и подключена. В противном случае в меню «Сервис» надо выполнить подключение данной надстройки командой «Надстройки…», для чего в появившемся диалоговом окне необходимо установить флажок в строке «Пакет анализа» и нажать кнопку ОК. Если же указанная строка отсутствует, то необходимо запустить программу установки Microsoft Office и добавить для Microsoft Excel средство «Пакет анализа». При загрузке Excel все надстройки, отмеченные флажками в диалоговом окне подключения надстроек, загружаются в память. Поэтому временно ненужные надстройки рекомендуется отключить.

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

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

Вопросы для самостоятельной работы

1. Назовите основные возможности табличного процессора Microsoft Excel.

2. Какова структура документа в Excel?

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

4. Каковы особенности относительной и абсолютной адресации ячеек?

5. Как определяются имена ячеек и для чего они предназначены?

6. Назовите основные возможности режима автозаполнение.

7. Как изменится вид формулы, если

а) формула «=$D5–$A8» из ячейки E10 копируется в ячейку F12?

б) формула «=B9/C$8» из ячейки G15 копируется в ячейку F13?

в) формула «=E4*КолДней» из ячейки H9 копируется в ячейку J10?

Проверьте свои ответы с помощью Excel.

8. Для чего предназначены диаграммы?

9. Назовите основные типы диаграмм и их основное назначение.

10. Для чего используются таблицы подстановки?

11. Назовите перечень основных действий, используемых при прогнозировании данных по методу «одна входная величина и несколько формул».

12. То же самое назовите для метода «две входные величины и одна формула».

13. Какие категории статистических данных вы знаете? Назовите характеристики каждой из них.

14. Назовите основные статистические определения.

15. Укажите основной принцип статистической выборки.

16. Что такое выбор с замещением и выбор без замещения?

17. Что такое надстройки в Excel? Назовите некоторые из них и их основные возможности.

5.4. Система управления базами данных (СУБД) Microsoft Access

Для накопления и обработки данных в специальных структурах, называемых базами данных, в комплекте Microsoft Office используется СУБД Microsoft Access.

В СУБД Access реализованы самые передовые идеи и новейшие достижения, достигнутые в теоретической и практической областях исследований, касающихся накопления и обработки данных. Хотя и существует определенная категория людей, предпочитающих хранить и обрабатывать данные в электронных таблицах (таких как Microsoft Excel или Quattro Pro), следует подчеркнуть, что для действительно серьезной работы, связанной с накоплением достоверной информации, получением мощных средств поиска и обработки нужной информации, надежным хранением и восстановлением любой информации в случае аппаратных или программных сбоев, необходимо использовать специально предназначенные для этих целей СУБД. Надежность имеющихся на сегодняшний день систем такова, что все большее количество данных во всем мире хранится именно в базах данных. На их основе создают целые банки данных или знаний, которые позволяют в кратчайшие сроки воспользоваться уже накопленным опытом всего человечества.

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

Основной язык для создания приложений в Access — это Visual Basic. Основной язык для составления запросов к базе данных — SQL (Structured Query Language — структурированный язык запросов).

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

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

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

Структура данных СУБД

Практически в любой СУБД данные хранятся в виде прямоугольных таблиц.

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

Поэтому в специальном режиме конструктора пользователь может указанным выше способом описать структуру таблицы. После сохранения структуры Access автоматически создает пустую таблицу с заданной структурой. Открыв таблицу, можно добавлять новые записи, просматривать существующие записи или удалять ненужные, корректировать необходимые поля определенных записей. Можно даже изменить структуру уже существующей таблицы, в которой находятся некоторые данные. При этом СУБД произведет попытку соответствующим образом изменить существующие данные.

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

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

В СУБД используется еще более строгая типизация данных, чем в электронных таблицах. Например, в Access отсутствует такой тип данных как «Общий» (в Excel это могут быть данные любого типа и сам Excel автоматически будет разбираться, что это — число, дата или текст). СУБД четко должна «знать», какого типа данные вводятся в поле, чтобы иметь возможность быстро контролировать их правильность. Объемы данных очень часто составляют по несколько тысяч и даже более записей на таблицу. Поэтому указанное свойство СУБД просто необходимо для нормальной работы с данными.

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

Запросы

Запросы — это объекты СУБД, которые позволяют специальным образом формулировать запрос к базе данных на выборку или обработку определенных данных по определенным критериям.

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

Однако Access позволяет также формулировать запросы визуально в виде специальной схемы в режиме конструктора. Такие запросы принято называть QBE (Query By Example — запрос по образцу). Это дает возможность строить сложнейшие запросы, практически не зная языка SQL. К тому же схемы запросов достаточно понятны и легко осваиваются даже начинающими пользователями.

Например, имея общий список всех товаров, требуется получить список имеющихся товаров. Щелкнув по закладке объектов «Запросы» в окне текущей базы данных, нажмем кнопку «Создать» и в режиме конструктора создадим схему запроса, показанную далее на рисунке.

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

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

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

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

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

Основная информация хранится в таблице «Заказано». В таблице «Заказы» находится общая информация о каждом заказе, а в таблице «Заказано» — списки товаров по каждому заказу. Эти таблицы связаны по коду заказа. Марка товара уточняется по его коду из связанной таблицы «Товары». Категория каждой марки товара далее уточняется по коду типа товара из связанной таблицы «Типы». Затем в первой колонке бланка запроса указывается группировка по полю «Категория», которое берется из таблицы «Типы», но на самом деле это поле всего лишь уточняет данную информацию по товару, находящемуся в таблице «Заказано». Аналогично, во второй колонке бланка указывается группировка по полю «Марка» из таблицы «Товары». В третьей колонке необходимо вычислить общую сумму по каждой марке товара. Это определяется простым выражением. Операция суммирования всегда относится к предшествующей группе объектов, т.е. к марке. По дате заказа накладывается ограничение в виде соответствующего диапазона дат, который хотя и записан на английском языке, в переводе выглядит весьма просто: «Между #01.01.95# и #31.12.95#». Символы «#» являются специальными «кавычками» для дат. Перед вами типичный пример запроса, который не только осуществляет выборку (фильтрацию) данных по определенному критерию (дате заказа), но и выполняет конкретную обработку этих данных (группировку и суммирование). Несмотря на кажущуюся сложность приведенного примера, при соответствующей тренировке можно научиться за считанные минуты составлять достаточно сложные запросы к системе. Обратите внимание, что мы относительно понятными и простыми средствами решили довольно сложную задачу, на которую средствами традиционных языков программирования (Паскаль, Бейсик) пришлось бы потратить не один час времени. Результат сконструированного решения показан на следующем рисунке.

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

Таким образом, мы кратко рассмотрели основные средства построения структуры базы данных и средства решения задач с помощью создания запросов к СУБД. Для более удобного просмотра и работы с данными используются объекты форм. Формы представляют собой окна, в которых пользователь может задать расположение информационных элементов произвольным образом. Реакцию отдельных элементов можно программировать с помощью встроенного языка программирования. Объекты отчетов позволяют создавать макеты документов, которые предназначены для вывода на печать. Из совокупности всех рассмотренных объектов может быть построено приложение, предназначенное для решения определенного круга задач другими (менее квалифицированными) пользователями. В объектах макросов и модулей обычно содержатся наборы встроенных команд системы или программных процедур, которые вызываются для выполнения определенных действий с помощью элементов управления (чаще всего кнопок), находящихся на формах. Поэтому набор форм является основой для построения любого приложения. Для менее квалифицированного пользователя достаточно для решения своих задач создать структуру данных, сформировать набор нужных запросов, сконструировать набор простых форм и отчетов без знания языков программирования SQL и Visual Basic. Открывая нужные объекты, можно выполнять достаточно сложную работу, практически не прибегая к услугам программистов.

Вопросы для самостоятельной работы

1. Для чего предназначены СУБД?

2. Где используются СУБД?

3. Укажите структуру СУБД Access и назначение ее составных частей.

4. Какие объекты предназначены для хранения данных? Как определяется их структура?

5. Что такое схема данных? Для чего она предназначена?

6. Что такое запросы? На каком языке они формулируются?

7. Какие данные указываются на схеме QBE при формулировании простых запросов?

8. Из чего строятся приложения СУБД Access?


line
<h2>Заключение</h2>

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

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


line
<h2>Введение</h2>

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

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

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

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

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

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

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


line

Начальные сведения

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

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

Напомню принципы кодирования чисел в двоичной системе. Двоичная, так же, как и десятичная — позиционная система счисления. Здесь также вес цифры зависит от ее позиции в числе. Например, для десятичного числа 25057 можно записать

Вес | 104 | 103 | 102 | 101 | 100
Цифра | 2 | 5 | 0 | 5 | 7

т.е. с учетом весов цифр 25057 = 2×104 + 5×103 + 0×102 + 5×101 + 7×100. Как видно, одна и та же цифра 5 в одной позиции означает 5000, а в другой — 50. В двоичной системе, естественно, веса разрядов кратны двойке в соответствующей степени. Так, для двоичного числа 1011001 имеем

Вес | 26 | 25 | 24 | 23 | 22 | 21 | 20
Цифра | 1 | 0 | 1 | 1 | 0 | 0 | 1

т.е. 1011001 = 1×26 + 0×25 + 1×24 + 1×23 + 0×22 + 0×21 + 1×20 = 64 + 16 + 8 + 1 = 89. Таким образом, для преобразования двоичного числа в число привычной для нас десятичной системы надо просто сложить веса тех разрядов, где находятся единицы.

При добавлении к десятичному числу по единице, цифра в младшем разряде увеличивается до тех пор, пока не достигнет максимальной (девятки). После этого данный разряд обнуляется, и единица добавляется к следующему старшему разряду, т.е. 1+1=2, 2+1=3, ..., 9+1=10, 10+1=11, ..., 19+1=20 и т.д. Аналогично «работают» и двоичные числа. Только обнуление разряда и передача единицы в следующий разряд происходит уже при добавлении единицы к единице, поскольку это максимальная цифра в системе. Таким образом, в двоичной системе 1+1=10 (2), 10+1=11 (3), 11+1=100 (4), 100+1=101 (5), 101+1=110 (6), 110+1=111 (7), 111+1=1000 (8) и т.д.

Сколько же разрядов использует ЭВМ для хранения чисел? Смотря какие числа вам нужны. Память компьютера не безгранична, поэтому требует весьма экономного отношения. В свое время решено было использовать такие ячейки памяти, числа в которых позволяли бы кодировать один символ текстовой информации. Для этого было отведено 8 двоичных разрядов или бит (bit — bi nary digit — двоичная цифра), которые позволяют кодировать 28 = 256 чисел в диапазоне от 0 до 255, а, значит, и столько же символов. Набор из 8 бит называют байтом. Таким образом, стандартная кодовая таблица содержит 256 символов, в которые входят 26 больших латинских букв, 26 малых латинских букв, 10 цифр (от 0 до 9), все знаки пунктуации, множество математических символов, а также набор символов национального (не латинского) алфавита и некоторые специальные символы. Для кодирования чисел можно использовать один байт (от 0 до 255) или наборы из нескольких байт. Так, объединив два байта, можно кодировать 28+8 = 216 = 65536 чисел (от 0 до 65535), четыре байта — 232 = 4'294'967'295 чисел и т.д. Как видно, 32 двоичных разряда перекрываются десятью десятичными разрядами, т.е. двоичная система довольно расточительна. Однако распознаваемость электрических сигналов в такой системе близка к абсолютной, что резко повышает надежность цифровых вычислительных устройств, а это решающий голос за использование двоичной системы.

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

Таким образом, минимальная мера измерения информации — один бит (одна двоичная цифра 0 или 1). Однако компьютер предоставляет более крупный ресурс для кодирования информации — один байт (набор из 8 бит). Объединение нескольких байт в одну структуру позволяет кодировать достаточно большие для практики диапазоны числовых значений.

И последнее. Мы знаем, что «кило» — это тысяча, «мега» — миллион и т.д. В цифровой технике все, в том числе и указанные приставки, кратно степени двойки. Так, «кило» — это не 1000, а 210 = 1024, «мега» — не 1'000'000, а 220 = 1'048'576, «гига» = 230 и т.д. Таким образом, 1 килобайт = 1024 байт, 1 мегабайт = 1024 килобайт = 1'048'576 байт. Однако в приближенных оценках можно по-прежнему считать, что 1 килобайт » 1000 байт, 1 мегабайт » 1'000'000 байт, 1 гигабайт » 1 млрд. байт, учитывая, что они несколько занижены.

С некоторыми особенностями обработки двоичных чисел мы познакомимся чуть позже при изучении принципов работы процессора ЭВМ. А пока вы получили начальные сведения по представлению информации в вычислительных машинах.


line

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ ПОДІЛЛЯ

А. Ю. Мазарчук

С. А. Франчук

ІНФОРМАТИКА

Лабораторні роботи

Частина 1

Методичний посібник для виконання практичних і лабораторних робіт з курсів «Інформатика» і «Інформатика та комп’ютерна техніка» для спеціальностей 7.050201 «Менеджмент організацій» і 7.050102 «Економічна кібернетика»

Затверджено на засіданні кафедри автоматизованих систем і моделювання в економіці, протокол №10 від 29 червня 2000 р.

Хмельницький

ЗМІСТ

ОСНОВНІ ВИМОГИ ДО ВИКОНАННЯ РОБІТ.. 4

ЧАСТИНА 1. АПАРАТНЕ І ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ.. 5

Лабораторна робота 1.1. Структура обчислювальної системи. 5

Лабораторна робота 1.2. Клавіатурний тренажер. 9

Лабораторна робота 1.3. Редагування текстів. 18

Лабораторна робота 1.4. Команди ЦПП.. 26

Лабораторна робота 1.5. Команди MS-DOS. 32

Лабораторна робота 1.6. Оболонка операційної системи. 50

Лабораторна робота 1.7. Дискові утиліти. 57

Лабораторна робота 1.8. Архіватори й антивіруси. 69

ОСНОВНІ ВИМОГИ ДО ВИКОНАННЯ РОБІТ

Цикл лабораторних робіт даного посібника розрахований на три семестри з приблизним навантаженням 34-36 годин аудиторних занять на семестр. За наявністю достатнього комп'ютерного фонду окремі роботи за рішенням викладача можуть бути винесені на самостійну роботу.

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

При підготовці до роботи студент повинен записати в робочий зошит номер і назву роботи, мету роботи і список використовуваних засобів. При необхідності далі можуть бути коротко законспектовані основні положення теоретичного огляду. Далі повинен бути записаний план майбутньої роботи, котрий студент самостійно складає на підставі описаного «Ходу роботи». Якщо першим пунктом ходу роботи записано дати відповідь на контрольні питання, то далі в зошиті повинні бути записані відповіді на ці питання. Відповіді повинні бути стислими, але вичерпними. Попереднє виконання деяких практичних елементів викладач може визначити додатково.

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

Оформлені матеріали і файли з результатами роботи надаються викладачу для захисту. Для контролю якості і повноти виконання роботи викладач може скористатися контрольними питаннями і запитати пояснення ходу виконання конкретних елементів роботи.

ЧАСТИНА 1 АПАРАТНЕ І ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ

Лабораторна робота 1.1 Структура обчислювальної системи

Мета роботи: Ознайомитися зі структурою обчислювальної системи (комп'ютера), а також призначенням і розташуванням її окремих складових частин.

Засоби: Обладнання комп'ютерної лабораторії, навчальні програми, матеріали даної роботи, література.

Література: Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 1.1-1.3, с. 10-18.

Хід роботи

1. Вивчити інструкцію з техніки безпеки та правил поведінки в комп'ютерній лабораторії.

2. Вивчити структуру обладнання комп'ютерної лабораторії й окремої обчислювальної системи, використовуючи конспект лекцій, зауваження викладача і матеріали даної роботи.

3. Ознайомитися з роботою навчальних програм, запропонованих викладачем.

4. Накреслити в робочому зошиті розширену функціональну схему робочої станції, на якій повинні бути відображені всі вивчені пристрої та їхні контролери. Між окремими функціональними блоками повинні бути зазначені напрямки і характер інформації, що передається.

5. У робочому зошиті записати контрольні питання, які наведені в даній роботі, та відповіді на них.

6. Записати в робочому зошиті, що нового ви дізналися при виконанні даної роботи.

Теоретичні відомості

Комп'ютерна лабораторія складається з робочого місця (станції) викладача (інженера) та студентських робочих місць (станцій). Додатково в лабораторії може бути друкувальний пристрій (принтер), підключений до однієї з робочих станцій. Всі робочі станції з'єднані одна з одною в локальну мережу або за допомогою мережних концентраторів (hub), або за допомогою послідовних відрізків коаксіального кабелю. Комп'ютерні лабораторії об'єднані в єдину мережу факультету, в якій можуть бути присутніми декілька серверів — спеціальних комп'ютерів, що надають дискові й інформаційні ресурси для загального використання в усій локальній мережі факультету.

Робоча станція складається з системного блоку та консолі. Поняття консолі містить в собі усі пристрої вводу-виводу, за допомогою яких користувач «спілкується» з обчислювальною системою. У нашому випадку консоль складається з пристрою візуального виводу текстової і графічної інформації — монітора, а також пристроїв ручного введення символьної та командної інформації — клавіатури та маніпулятора «миша».

Системний блок об'єднує у своєму корпусі такі пристрої як «материнська» плата (mother board), дисководи (HDD і FDD) та блок живлення. На материнській платі розміщені центральний процесорний пристрій (ЦПП або просто процесор), ОЗП, контролери пам'яті, клавіатури та дисководів (у вигляді спеціальних чипів — великих інтегральних мікросхем), а також декілька спеціальних роз'ємів (слотів) для підключення до комп'ютера додаткових знімних контролерів, призначених для керування конкретними зовнішніми пристроями вводу-виводу. Зверніть увагу, що контролери для роботи з локальною мережею (мережна плата або мережний адаптер) і контролер монітору (відео плата) виконані, як правило, у вигляді окремих плат, вставлених у слоти материнської плати. Маніпулятор миша підключається до системного блоку через стандартний послідовний порт вводу-виводу. Всі порти вводу-виводу реалізовані на одному з чипів материнської плати. Принтер підключається до стандартного паралельного порту вводу-виводу однієї з робочих станцій лабораторії. Інші комп'ютери можуть одержати доступ до такого принтера, передаючи завдання на друк по кабелю локальної мережі на той комп'ютер, до якого приєднаний принтер. Спрощено послідовний порт можна уявити у вигляді одноканального електронного пристрою, через який послідовно один за одним передаються двійкові біти інформації з деякою тактовою частотою. Його перевага — простота, недолік — низька швидкість передачі інформації, оскільки взагалі послідовні порти використовуються для роботи таких повільних пристроїв, як модем або миша. Паралельні порти можна уявити як багатоканальні пристрої (як правило, вісім інформаційних і декілька службових управляючих каналів). Такі пристрої більш складні, але за один такт можна переслати відразу вісім бітів (один байт) інформації, тобто їх швидкість передачі інформації помітно вища, ніж у послідовних портів.

У зв’язку з інтенсивним виділенням тепла блоки живлення і ЦПП сучасних робочих станцій оснащуються додатковими вентиляторами.

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

Для впевненої роботи в обчислювальній системі важливо чітко розуміти й уявляти собі роботу і взаємодію кожної з складових частин системи. Так, пошкодження або неправильна робота будь-якого пристрою може статися через одну з таких причин:

· псування програмного забезпечення; для контролю можна перевірити правильність роботи пристрою за допомогою спеціалізованої тестової програми або будь-якої іншої програми, що використовує власні програмні модулі для роботи з даним пристроєм;

· пошкодження єднального кабелю; можна проконтролювати за допомогою зовнішнього огляду, а також «продзвонки» контактів за допомогою тестера;

· ушкодження контролера пристрою; можна визначити або шляхом заміни контролера на аналогічний непошкоджений контролер, або шляхом підключення пристрою до іншого комп'ютера, що має у своєму складі такий контролер;

· через власне пристрій (якщо причина пошкодження не усунута перевіркою попередніх пунктів); додатково можна переконатися в правильності свого висновку підключенням (якщо є така можливість) аналогічного непошкодженого пристрою за допомогою старих кабелів до свого комп'ютера.

Припустимо, що при черговому друкуванні документів принтер почав зненацька друкувати нісенітницю. За наявністю іншого аналогічного принтера простіше усього перевірити роботу функцій друку шляхом його підключення замість поточного принтера. Якщо несправність зникла, тоді можна спробувати підключити «несправний» принтер знову до поточного або до іншого комп'ютера. Причини несправностей часто виникають у місцях з'єднання кабелів і тому повторне підключення може усунути неполадки. Якщо ж несправність повторюється і на іншому (справному) принтері, то можна перевірити цілісність сигнального кабелю (часто це можна зробити, тільки розібравши кінцеві з'єднання кабелю й оглянувши місця пайки проводів до контактів з’єднань). Не поганий варіант — скористатися справним кабелем від іншого принтера. Якщо кабель справний, тоді залишається перевірити справність паралельного порту шляхом виключення з ланцюга друку драйвера принтера або тієї програми, за допомогою якої здійснюється друк. Простіше усього це можна зробити, видавши з командного рядка ДОС команду на копіювання будь-якого текстового файлу на принтер, наприклад: “copy autoexec.bat lpt1”. Несправність порту — неприємна річ, оскільки, як уже було сказано, порти реалізовані на чипах, які припаяні на материнську плату, і тому звичайно несправність усувається тільки заміною всієї материнської плати, або доводиться відмовлятися від функцій друку на даному конкретному комп'ютері. Іноді причина може бути через збої в роботі визначених електронних пристроїв. Тому позитивні результати може дати повторна ініціалізація всієї обчислювальної системи (вимикання комп'ютера і принтера, повторне вмикання і завантаження всієї системи). Не варто забувати про можливу роботу комп'ютерних вірусів. У зв'язку з цим одним із перших пунктів перевірки програмного забезпечення варто поставити контроль на наявність у системі будь-яких вірусів. Також варто нагадати, що відключення будь-якого пристрою або підключення нового пристрою потрібно виконувати тільки при вимкненій (знеструмленій) обчислювальній системі.

У системі можуть бути присутніми додаткові пристрої вводу-виводу, наприклад, сканери — для сканування паперових документів і введення в комп'ютер текстової і графічної інформації, модеми — для обміну інформацією між комп'ютерами на великих відстанях по телефонних каналах, пристрої читання-запису інформації на оптичні компакт-диски і деякі інші.

Контрольні питання

1. Яким чином можна збільшити об’єм оперативної пам'яті?

2. Що таке контролери і для чого вони призначені? В яких різноманітних видах (апаратному виконанні) подані контролери у вашій обчислювальній системі?

3. Які пристрої неможливо замінити окремо без заміни материнської плати? Чому?

4. Зазначте порядок визначення несправності, якщо: а) індикатори на клавіатурі світяться, але система не реагує ні на які натискання клавіш; б) курсор миші рухається тільки в горизонтальному напрямку; в) індикатор на моніторі показує (жовтий колір), що відеосигнал відсутній, екран погашений; г) при звертанні до флопі-диска система видає помилку, при цьому індикатор на дисководі не світиться.

5. Зазначте мінімально необхідний набір пристроїв вводу-виводу для можливості роботи з обчислювальною системою. Обґрунтуйте вашу відповідь.

Вказівки для викладача

Викладач на першому занятті повинен ознайомити студентів з інструкцією з техніки безпеки і правилами поведінки в комп'ютерній лабораторії.

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

По можливості при наявності макетів або неробочих примірників обладнання викладач демонструє студентам пристрій системного блоку, клавіатури, миши, дисководів, магнітних носіїв та ін.

Студенти повинні самостійно вивчити додатковий матеріал за допомогою навчальних програм.

По завершенню роботи виконайте загальний стислий розбір відповідей на контрольне питання №4.

Лабораторна робота 1.2 Клавіатурний тренажер

Мета роботи: Самостійно навчитися використовувати клавіатуру комп'ютера для введення будь-якої символьної інформації або команд у вигляді комбінацій необхідних клавіш, здобути навички для досягнення достатньої швидкості роботи.

Засоби: Обладнання стандартної робочої станції, матеріали даної роботи, література, навчальні програми klav1.exe і klav2.exe.

Література: Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 1.2 , с. 10-11.

Теоретичні відомості

Клавіатура комп'ютера доки що є основним засобом введення командно-символьної інформації, за допомогою якої користувач керує роботою обчислювальної системи. Тому дуже важливими моментами стають оволодіння основними прийомами та правилами роботи з клавіатурою, вивчення основних і спеціальних груп символів, способи їхнього набору, а також тренування для набуття достатніх навичок в роботі.

Тренажер побудований за допомогою двох навчальних програм, розроблених автором даного курсу інформатики на основі багаторічного досвіду викладання. Програма klav1.exe надає докладний опис структури стандартної клавіатури і прийомів роботи в різноманітних регістрах, тренувальні вправи для відпрацювання практичних навичок. Програма дозволяє багаторазово повертатися до певних фрагментів матеріалу, а також повторювати або пропускати деякі вправи. По закінченню роботи з програмою студент повинен одержати всі основні знання й навички роботи на клавіатурі. Друга програма klav2.exe замислювалася як інструмент для закріплення отриманих навичок і, одночасно, оцінки досягнутого рівня. Програма має певний словниковий запас, із якого формуються всі контрольні завдання за допомогою генератора випадкових чисел. Тому програму можна багаторазово використовувати як для тренування, так і для остаточного контролю отриманих навичок.

Програма klav1.exe розрахована на початківців, які практично не мають досвіду роботи на клавіатурі IBM PC. Для попереднього ознайомлення з навчальним текстом даної програми він в повному обсязі наведений нижче. Вказівки щодо натискання клавіш, що впливають на програму, виконувати, звичайно, не потрібно.

Данная программа поможет Вам овладеть основными приемами работы на клавиатуре IBM PC. Рекомендуется внимательно прочитать текст урока и кратко законспектировать основные понятия, записанные большими буквами, например, так: ФУНКЦИОНАЛЬНЫЕ КЛАВИШИ. Программа разбита на отдельные смысловые части-кадры. В правом нижнем углу появляются изображения стрелок ↑ и ↓. Это значит, что для смены следующего кадра нужно нажать клавишу со стрелкой ↓, а для возврата к предыдущему - клавишу ↑. Эти стрелки находятся на клавиатуре справа (отдельные четыре стрелки) или на дополнительной клавиатуре (там же, где цифры 2 и 8). Иногда потребуется нажать клавишу ПРОБЕЛА. Это самая длинная чистая клавиша внизу клавиатуры. Тренировочные упражнения рекомендуется обязательно отработать, хотя при желании тренировку можно пропустить, нажав одну из клавиш ↓ или ↑. Итак, для перехода к следующему кадру нажмите клавишу ↓.

Клавиатура IBM PC разбита на несколько основных групп клавиш. Самая большая сплошная масса клавиш называется ОСНОВНЫМ ПОЛЕМ клавиатуры:

╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗

║~   ║!   ║@  "║#  /║$   ║%  :║^  ,║&  .║*  ;║(  ?║)  %║_   ║+   ║|   ║    ║

║`   ║1   ║2   ║3   ║4   ║5   ║6   ║7   ║8   ║9   ║0   ║-   ║=   ║\   ║ ◄─ ║

╠════╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩════╣

║     ║Q   ║W   ║E   ║R   ║T   ║Y   ║U   ║I   ║O   ║P   ║{   ║}  Ї║        ║

║ Tab ║   Й║   Ц║   У║   К║   Е║   Н║   Г║   Ш║   Щ║   З║[  Х║]  Ъ║        ║

╠═════╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╩╦═══╝        ║

║ Caps ║A   ║S  I║D   ║F   ║G   ║H   ║J   ║K   ║L   ║:   ║"  Є║         │  ║

║ Lock ║   Ф║   Ы║   В║   А║   П║   Р║   О║   Л║   Д║;  Ж║'  Э║Enter ◄──┘  ║

╠══════╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩════════════╣

║        ║Z   ║X   ║C   ║V   ║B   ║N   ║M   ║<   ║>   ║?   ║               ║

║  Shift ║   Я║   Ч║   С║   М║   И║   Т║   Ь║,  Б║.  Ю║/   ║     Shift     ║

╠═════╦══╩╦═══╩╦═══╩════╩════╩════╩════╩════╩════╩════╩═══╦╩═══╦════╦══════╣

║     ║   ║    ║                                          ║    ║    ║      ║

║ Ctrl║   ║ Alt║                                          ║Alt ║    ║ Ctrl ║

╚═════╝   ╚════╩══════════════════════════════════════════╩════╝    ╚══════╝

Светлые клавиши на этой клавиатуре называются СИМВОЛЬНЫМИ. При нажатии на них на экране будут появляться изображения соответствующих символов. Темные клавиши (на рисунке выделены жирным шрифтом) называются УПРАВЛЯЮЩИМИ, так как они служат для управления различными режимами клавиатуры, обсуждаемыми ниже.

Группа клавиш в верхнем ряду с F1 по F10 (или F12) называется ФУНКЦИОНАЛЬНЫМИ КЛАВИШАМИ:

╔═════╦═════╦═════╦═════╗ ╔═════╦═════╦═════╦═════╗ ╔═════╦═════╦═════╦═════╗

║ F1  ║ F2  ║ F3  ║ F4  ║ ║ F5  ║ F6  ║ F7  ║ F8  ║ ║ F9  ║ F10 ║ F11 ║ F12 ║

╚═════╩═════╩═════╩═════╝ ╚═════╩═════╩═════╩═════╝ ╚═════╩═════╩═════╩═════╝

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

Отдельная группа цифровых клавиш справа на клавиатуре называется ДОПОЛНИТЕЛЬНЫМ ПОЛЕМ клавиатуры:

╔════╦════╦════╦════╗

║Num ║    ║    ║    ║

║Lock║ /  ║ *  ║ -  ║

╠════╬════╬════╬════╣

║ 7  ║ 8  ║ 9  ║    ║

║Home║ ↑  ║PgUp║    ║

╠════╬════╬════╣ +  ║

║ 4  ║ 5  ║ 6  ║    ║

║ ←  ║    ║ →  ║    ║

╠════╬════╬════╬════╣

║ 1  ║ 2  ║ 3  ║  E ║

║End ║ ↓  ║PgDn║  n ║

╠════╩════╬════╣  t ║

║ 0       ║ .  ║  e ║

║ Ins     ║ Del║  r ║

╚═════════╩════╩════╝

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

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

Включение клавиши NumLock на некоторых клавиатурах

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

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

╔══════╦══════╦══════╗

║Insert║ Home ║ Page ║

║      ║      ║  Up  ║

╚══════╩══════╩══════╝

╔══════╦══════╦══════╗

║Delete║ End  ║ Page ║

║      ║      ║ Down ║

╚══════╩══════╩══════╝

╔══════╗

║      ║

║  ↑   ║

╔══════╬══════╬══════╗

║      ║      ║      ║

║  ←   ║  ↓   ║  →   ║

╚══════╩══════╩══════╝

К примеру, ими лучше пользоваться для перемещения курсора, когда дополнительная клавиатура работает как цифровая в режиме калькулятора. Еще несколько клавиш (Print Screen, Scroll Lock, Pause, Esc) выполняют специальные функции, с которыми Вы познакомитесь позже.

А теперь поработаем с основным полем клавиатуры. Но сначала обсудим некоторые особенности. Пользуясь одной и той же символьной клавишей, можно получить от 2 до 6 различных символов. Каждая группа однотипных символов занимает один и тот же так называемый РЕГИСТР. Например, латинские буквы находятся в ЛАТИНСКОМ РЕГИСТРЕ, а русские - в РУССКОМ РЕГИСТРЕ, большие (заглавные) буквы занимают ВЕРХНИЙ РЕГИСТР, малые (строчные) - НИЖНИЙ РЕГИСТР. Клавиатура переключается между регистрами с помощью специальных клавиш. Размещение букв на клавиатуре исторически связанно с американской и русской пишущей машинками. На русской буквы расположены так: в центре сгруппированы более часто встречающиеся буквы, по краям - которые встречаются реже. Английские буквы размещены по обратному принципу. После некоторой тренировки такой клавиатурой пользоваться удобнее, чем если бы буквы были расположены в алфавитном порядке.

Для того, чтобы повторить какой-то символ несколько раз на экране, не нужно столько же раз нажимать эту клавишу, а достаточно удерживать ее нажатой более 0,5 секунды, и компьютер сам начнет "выстреливать" этот символ на экран как из пулемета. Поэтому, чтобы не было лишних выбросов символов, клавиши необходимо нажимать ЛЕГКИМИ и КОРОТКИМИ нажатиями.

Ну, а теперь потренируем свои глаза и руки в поиске и наборе латинских букв. Обычно при включении компьютера клавиатура находится в латинском нижнем регистре, т.е. будут набираться малые латинские буквы. С них и начнем. Пустые промежутки между буквами - это пробелы. Пробел для компьютера - такой же символ, как и любой другой. Для набора пробелов пользуйтесь клавишей ПРОБЕЛА.

Работа со многими программами имеет американские традиции. Так, если на какой-то вопрос нужно ответить ДА или НЕТ, - появляется подсказка: (Y/N). Это значит, что, нажав клавишу с буквой Y, вы ответите "Yes - Да", а нажав N - "No - Нет".

Упражнение 1. Клавиатура в ЛАТИНСКОМ НИЖНЕМ регистре. Набирайте:

abcd efgh ijkl mnop qrst uvwx yz

yes no name pie stop write up down bye count example

fast go high job key low month quit voice box zero

Большие (заглавные) буквы можно получить двумя способами: включить клавишу CAPS LOCK (управляющая клавиша с левого края). На некоторых клавиатурах в правом верхнем углу зажигается соответствующая лампочка. После этого буквы будут набираться большими. Еще раз переключите Caps Lock - клавиатура вернется в режим набора малых букв. Второй способ: с помощью клавиши СМЕНЫ РЕГИСТРА Shift. Таких клавиш две: слева и справа основного поля. Обе клавиши работают одинаково. Одна из них может быть удобна для "левшей", а другая - для "правшей". Эта клавиша действует, только пока она нажата. Если одной рукой удерживать любой Shift нажатым, а другой рукой набирать буквы, то вы получите заглавные буквы. Т. е. Shift меняет регистр на противоположный: с нижнего на верхний и наоборот. Клавишей Caps Lock удобнее устанавливать тот регистр,

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

Упражнение 2. Клавиша Caps Lock должна быть включена. Набирайте:

PRINT INPUT IF THEN ELSE FOR NEXT WHILE APPLICATE

Caps Lock отключена. Для больших букв

используйте клавишу Shift. Набирайте:

Arrow Browse Cancel Letter Peter Zoom Shift Caps Lock

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

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

А сейчас потренируемся в наборе русских и украинских слов. Одинаковые для русского и украинского алфавитов буквы можно набирать в любом из этих регистров, ну а "чисто" украинские буквы (і, ї, є) - конечно, только в украинском, как "чисто" русские (ы, э, ъ) - только в русском регистре.

Упражнение 3. Установите РУССКИЙ регистр. Клавиша Caps Lock включена. Набирайте:

АБВГ ДЕЖЗ ИЙКЛ МНОП РСТУ ФХЦЧ ШЩЪЫ ЬЭЮЯ

Caps Lock отключена. Для больших букв используйте клавишу Shift. Набирайте:

Чернигов Алушта Зеленоград Симферополь Киев Париж Цюрих

Используйте переключатели РУССКОГО и УКРАИНСКОГО

регистров. Набирайте:

Суспільство выход їхній Эфес Євангеліє подъем єдиний

Ну а теперь попробуем набирать цифры и специальные символы. Здесь технология набора немного посложнее. Если каждую символьную клавишу мысленно разрезать пополам по вертикали, то на левой половине останутся буквы и символы, которые набираются ТОЛЬКО в ЛАТИНСКОМ РЕГИСТРЕ, а на правой половине - которые набираются ТОЛЬКО в РУССКО-УКРАИНСКОМ РЕГИСТРЕ. Если на правой половине клавиши ничего нет (найдите, например, вверху справа клавишу с символами "+" и "="), то на такую клавишу латинский и русский регистры не влияют. Часто "латинская" и "русская" половины клавиши изображаются различными цветами. Если на какой-либо половине клавиши находятся небуквенные символы, то нижний символ набирается при непосредственном нажатии на эту клавишу, а верхний - только с нажатой клавишей Shift. На такие символы клавиша Caps Lock не действует. Обратите внимание, что некоторые символы (например .,;:"%?/) повторяются на других клавишах, но в разных регистрах: русском и латинском. Сделано это опять же для удобства, чтобы в русском регистре можно было набирать эти и некоторые другие символы, не переключаясь на латинский регистр. Из двух таких клавиш вы выбираете ту, которая в данный момент удобнее. И в заключение пара примеров (будьте внимательны):

1) В верхнем ряду клавиша с цифрой 8: в латинском регистре без Shift набирается <8> , с Shift - <*>; в русском регистре без Shift набирается <8>, с Shift - <;>

2) Клавиша с русской буквой Э: в латинском регистре без Shift - <'>, с Shift-<">; в русском регистре - буквы <Э> и <э> ;в украинском - буквы <Є> и <є>.

Упражнение 4. Удобнее переключиться на ЛАТИНСКИЙ РЕГИСТР. Набирайте:

2+5=7 (14-8)*6 23.6/90.34 (25%+17%)/5 9$-4$ 0&1=0

Переключатели РУССКОГО и ЛАТИНСКОГО регистров

используйте по необходимости. Набирайте:

масса=(b+d)/f, INPUT$, Нетто%+Тара%=Брутто, ^L=#12, array[1..27]

то; that; это; this; My_weight=65.7 кг, A:\MSDOS\command.com

Теперь вы знаете, как "достать" любой символ с любой клавиши. Если вы чувствуете себя еще не совсем уверенно, то можете отлистать несколько страниц назад и повторить все или некоторые упражнения еще раз. Далее можно переходить к выполнению контрольных заданий по клавиатуре, которые расположены в следующей программе. По договоренности с преподавателем можно, например, дважды выполнить контрольные задания как тренировочные, а в третий раз - на зачет. Итак, если готовы - удачи Вам! Клавиша Esc - в верхнем левом углу.

Хід роботи

1. У ході роботи з програмою klav1.exe законспектуйте в робочий зошит основні поняття та прийоми роботи з клавіатурою. Тренувальні вправи даної програми відпрацюйте стільки раз, щоб у вас не було жодних проблем із набором будь-якого символу, розташованого на основному полі клавіатури.

2. Для тренування виконайте програму klav2.exe стільки раз, скільки зазначить викладач. Кожне тренування виконуйте без поспіху, обмірковуючи дії. Перед початком кожного завдання програма робить паузу, протягом якої контрольний час не відраховується. Відповідно до змісту завдання, записаному в заголовку, можна спокійно підготувати клавіатуру до виконання, переключивши її на потрібні регістри. Натиснувши потім будь-яку символьну клавішу (наприклад, пробіл), ви одержуєте згенерований текст контрольного завдання і починаєте його виконувати. На набір будь-якого символу дається до 3 секунд, тобто всі завдання ви можете виконати в дуже спокійному темпі. Основне джерело помилок — квапливість і неуважність. Якщо будь-яке завдання виконувати вам важко, — не поспішайте займатися «довбанням». Краще обміркуйте причини своїх невдач, зосередьтеся і повторить тренування з урахуванням тих поправок, що ви вважали для себе прийнятними. У крайньому випадку, звертайтеся за порадою до викладача.

3. Здайте контрольні завдання викладачу на залікову оцінку.

4. Дайте відповідь на контрольні питання, які наведені нижче, і запишіть відповіді в робочий зошит.

5. Запишіть висновки щодо досягнутих результатів у робочий зошит.

Контрольні питання

1. Де розташовані функціональні клавіші і для чого вони призначені?

2. У яких режимах може працювати додаткова клавіатура і як вона переключається?

3. Коли зручно використовувати додаткову клавіатуру?

4. Що таке регістр? Вкажіть усі регістри комп'ютерної клавіатури.

5. У яких випадках для набору великих (заголовних) літер зручніше використовувати клавішу Caps Lock, а в яких — клавішу Shift?

6. Чому деякі спеціальні символи (наприклад, «?», «.», «:» і деякі інші) дублюються на різноманітних клавішах?

7. Для чого використовуються клавіші Ctrl і Alt?

Вказівки для викладача

Обов'язково перевірте особливості роботи драйвера клавіатури, який ви використовуєте, і дайте відповідні рекомендації студентам.

Зверніть увагу на типові випадки помилок при виконанні контрольних завдань і зауважте це усім студентам.

Після виконання студентами перших тренувальних спроб дайте пораду щодо раціональних прийомів роботи. Наприклад, при наборі тексту, що здебільшого складається з малих літер, студенти часто для набору заголовних літер використовують клавішу Caps Lock. Більш раціонально використовувати клавішу Shift. Дуже часто студенти звикають набирати деякі спеціальні символи («.», «,», «?», …) тільки в якомусь одному мовному регістрі (наприклад, англійському) і для набору цих символів в іншому регістрі (наприклад, російському) постійно переключають мовний регістр. Укажіть студентам на конкретні дублікати символів, що розташовані на різних клавішах, і поясніть раціональність їх використання без переключення регістра мови.

Зверніть увагу студентів на раціональність попередньої оцінки тексту, що набирається, для визначення оптимального режиму роботи. Наприклад, для набору тексту, який в основному складається з арифметичних виразів, зручно використовувати додаткову клавіатуру в цифровому режимі. Для набору текстів із переважною кількістю спеціальних символів краще переключити клавіатуру в англійський (латинський) регістр, оскільки не всі спеціальні символи присутні в російській (українській) розкладці.

Зверніть увагу студентів на вміння зосередитися на символах потрібного регістру клавіатури по певних зовнішніх ознаках. Наприклад, при роботі в російському регістрі, увагу на російських літерах можна активізувати, розрізняючи їх по кольору (наприклад, якщо такі літери виділені червоним кольором, то можна дати собі установку: «Реагуємо тільки на червоне»), по накресленню літер (якщо літери на клавішах виконані одним кольором, але різним шрифтом) або по розташуванню (якщо всі літери виконані в однаковому стилі, то можна спробувати зосередитися або на верхніх (лівих) половинках клавіш — англійських, або на нижніх (правих) — російських).

Основна задача студентів — не досягти швидкості і вміння «професіональної друкарки», а без поспіху, але упевнено вміти набрати будь-який необхідний символ або комбінацію клавіш. Зверніть увагу усіх на це. Максимально націльте усіх на самостійну роботу. Зупиняйте деяких студентів у їх звертаннях з будь-якого приводу до викладача або своїх товаришів.

Лабораторна робота 1.3 Редагування текстів

Мета роботи: Вивчити основні прийоми введення і редагування текстової інформації.

Засоби: Обладнання стандартної робочої станції, матеріали даної роботи, програма текстового редактора.

Теоретичні відомості

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

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

Текстовий документ вводиться з позиції курсору у вигляді послідовності рядків символів так саме, як ви відпрацьовували вправи клавіатурного тренажера. Документ розбивається на абзаци, кожний із яких починається з відступу, який називається «червоним рядком». Відступ звичайно має довжину 1-1,5 см і виконується або за допомогою спеціальних засобів редактора (наприклад, редактор Word), або виконується клавішею Tab, що переміщає курсор по стандартних позиціях табуляції, або введенням 4-5 пробілів. Заголовок тексту здебільшого відокремлюють від першого рядка тексту хоча б одним порожнім рядком.

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

Більшість розділових знаків ставлять впритул до останнього слова, за яким вони записуються. Це стосується крапки, коми, двокрапки, крапки з комою, знака оклику і знака питання, знака переносу слова (мінуса) і деяких інших. Просто зверніть увагу хоча б на даний текст, і ви переконаєтеся в цьому. Тире вважається замінником слова і тому з обох боків виділяється пробілами (як окреме слово). Дужки і лапки ставляться впритул до слів, що обрамовуються, тобто між дужкою (лапкою), що відкриває, і першим словом, а також між останнім словом і дужкою (лапкою), що закриває, пробіли відсутні. Між частинами слова, якщо це слово складається з кількох частин, що пишуться через дефіс (мінус), пробіли відсутні. Наприклад, «будь-який», «що-небудь», «старці-розбійники» та ін. З погляду редактора текст є ланцюжком символів, що утворюють слова. Словом вважається безперервний ланцюжок символів, включаючи розділові знаки, що приєднані до нього. Слова повинні розділятися пробільними інтервалами. Тому за розділовим знаком, що ставиться наприкінці слова, повинен обов'язково бути пробіл (якщо це не кінець абзацу або всього тексту). Вимоги подібних правил ви зрозумієте трохи пізніше, коли будете використовувати текстові редактори, які здатні автоматично розставляти переноси слів і здійснювати перерозподіл тексту між рядками. До того ж, дані правила є складовою частиною загальної культури оформлення друкарських текстів.

При редагуванні тексту варто мати на увазі, що редактор може працювати в двох режимах: у режимі «вставки» і режимі «заміни». Кожний із режимів відображується або за допомогою спеціального позначення на одній з панелей редактора, або формою курсору. Звичайно ці режими переключаються клавішею Insert («Вставити»). У режимі «вставки» текст вводиться в позицію курсору, відсовуючи ту частину тексту, що розташовується з позиції курсору (курсор у вигляді горизонтальної риски) або розташована за курсором (курсор у вигляді вертикальної риски). У режимі «заміни» переміщення тексту не відбувається, курсор пересувається прямо по символах існуючого тексту, замінюючи їх новими символами, що вводяться. Таким чином, у режимі «вставки» нові символи вставляються в існуючий текст, а в режимі «заміни» — заміняють існуючі символи. Звичайно по умовчанню редактор знаходиться в режимі «вставки». Це найбільш поширений режим роботи. Режим «заміни» використовується значно рідше. Деякі редактори взагалі не мають режиму «заміни», оскільки замінити деякі символи можна, видаливши старі і вставивши нові символи. Спробуйте переключати клавішу Insert і по зовнішніх ознаках визначати, у якому з режимів ви знаходитеся. Після кожного перемикання пробуйте набирати текст, коли курсор знаходиться усередині існуючого тексту. Якщо нові символи в обох випадках вставляються, це означає, що режим «заміни» у даному редакторі відсутній.

Видаляються непотрібні символи однаково в обох режимах — за допомогою клавіш Backspace («Забій») і Delete («Видалити»). Клавіша Backspace знаходиться зверху над клавішею Enter (звичайно у вигляді стрілки вліворуч) і дозволяє «забити» (видалити) символ, розташований ліворуч від курсору. Цю клавішу дуже зручно використовувати, коли ви припускаєтеся помилки при введенні і відразу ж це помічаєте. «Забивши» символ ліворуч, ви як би повертаєтеся назад і відразу продовжуєте правильний набір тексту. Клавіша Delete видаляє символ, розташований у позиції курсору або за курсором (якщо курсор — вертикальна риска). Цією клавішею зручно користуватися при видаленні символів у вже існуючому тексті. Підвели курсор до помилкового символу — і відразу видалили його клавішею Delete. При видаленні символів у будь-якому випадку існуючий текст зменшується, ліквідуючи пустоти, що утворилися. Якщо вам потрібно стерти слово, залишивши в цьому місці порожній проміжок (як за допомогою коректора на папері), то виконуйте це за допомогою пробілу в режимі «заміни» або спочатку видаляйте символи, а потім вставляйте пробіли.

Клавіша Enter звичайно вставляє в текст невидимі символи (коди) переведення рядка. Тому наприкінці тексту вона просто переводить курсор на новий рядок, а усередині тексту, вставляючи символи переводу рядка, Enter ніби розсікає поточний рядок на два рядки, переводячи символи за курсором на початок наступного рядка. Ліквідувати таке розбиття можна, ставши на кінець першого рядка і натиснувши клавішу Delete, або ставши на початок другого рядка і натиснувши клавішу Backspace. У будь-якому випадку для «склеювання» двох рядків потрібно просто видалити невидимі символи переведення рядка (до речі, у редакторі Microsoft Word є перемикач, що дозволяє зробити всі невидимі символи видимими). Деякі редактори в режимі «заміни» по клавіші Enter не вставляють символів переведення рядка, тому не забувайте переключатися в режим «вставки».

Багато редакторів дозволяють працювати з фрагментами тексту. Спочатку фрагмент потрібно виділити. Це можна зробити протягуванням курсору миші від першого до останнього символу фрагмента. При цьому фрагмент звичайно відображається інверсним кольором. Часто виділення фрагмента можна виконувати протягуванням текстового курсору. При цьому курсор встановлюється на перший символ фрагмента і, утримуючи натиснутою клавішу Shift, переміщається за останній символ фрагмента. Якщо фрагмент займає декілька рядків, то переміщення курсору раціональніше виконувати стрілкою вниз на останній рядок фрагмента, а потім підігнати по горизонталі за допомогою стрілок вправо-вліво. Замість протягування за допомогою клавіші Shift можуть використовуватися спеціальні клавіші маркірування фрагмента (потрібно уточнювати в довідковій системі редактора, що використовується). Наприклад, вмонтований редактор Norton Commander для маркірування початку і кінця фрагмента пропонує клавішу F3, причому не дозволяє включити у фрагмент частину рядка (Norton Commander версії 4.0). Інші прості редактори (наприклад, Блокнот у системі Windows) мають більш зручні засоби роботи, що практично є стандартом у багатьох подібних системах редагування текстів. Виділений фрагмент можна скопіювати в буфер (звичайно Ctrl-Insert або Ctrl-C), видалити (Ctrl-Delete або просто Delete) або видалити (вирізати) у буфер (Shift-Delete або Ctrl-X). Текст, що знаходиться в буфері, можна вставити в будь-яке місце тексту з позиції курсору або зверху над поточним виділеним фрагментом (Shift-Insert або Ctrl-V). Часто подібні операції з фрагментами тексту виконуються редакторами за допомогою команд меню «Правка» («Edit»). Проте користуватися комбінаціями клавіш набагато зручніше.

І на закінчення можна навести деякі загальновживані комбінації клавіш, що дозволяють швидко перемістити текстовий курсор у потрібну позицію. Запам'ятаєте, що клавіша Ctrl у комбінації з іншими клавішами переміщення курсору ніби посилює їхню дію. Отже,

«стрілка вліво» — на символ вліво;

Ctrl-«стрілка вліво» — на слово вліво;

«стрілка вправо» — на символ вправо;

Ctrl-«стрілка вправо» — на слово вправо;

«стрілка вгору» — на рядок вгору;

Ctrl-«стрілка вгору» — на початок абзацу;

«стрілка вниз» — на рядок вниз;

Ctrl-«стрілка вниз» — на початок наступного абзацу;

Home — на початок поточного рядка;

Ctrl-Home — на початок тексту (файла);

End — на кінець поточного рядка;

Ctrl-End — на кінець тексту (файла);

PageUp — на екран вгору;

Ctrl-PageUp — на сторінку вгору (якщо використовується розмітка сторінок); у деяких редакторах здійснює перехід на початок тексту;

PageDown — на екран вниз;

Ctrl-PageDown — на сторінку вниз (якщо використовується розмітка сторінок); у деяких редакторах здійснює перехід на кінець тексту.

Є редактори, в яких деякі з наведених комбінацій можуть не працювати. І остання порада. Якщо у вас проблема з запам'ятовуванням назв клавіш, їхніх комбінацій і функцій, які ними виконуються, — вивчіть переклад англійських назв клавіш, і тоді вам буде легше пригадати, для чого призначена та або інша клавіша. Іноді корисно для деякої «важкої» комбінації придумати будь-яку власну асоціацію. Докладіть зусилля кожну дію заповнити певним змістом, а не намагатися запам'ятати її суто механічно.

Хід роботи

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

2. Завантажте зазначену викладачем програму текстового редактора і виконайте набір наступного фрагмента тексту, дотримуючись правил оформлення заголовка й окремих абзаців (домагайтеся максимальної відповідності зовнішнього вигляду тексту, що набирається, наданому оригіналу):

МОДЕЛЮВАННЯ ПРОЦЕСІВ ПРАЦІ У ПЛАНУВАННІ ВИРОБНИЦТВОМ

Ринкові механізми, що розвиваються, передбачають найшвидше розв'язання проблем покращання якості управління і планування. Такого покращання неможливо досягти без наявності якісних систем нормування праці.

Існують три найбільші проблеми в сфері описів протікання процесів праці. Перша проблема стосується моделювання функціонування скелетно-м’язової системи людини; друга — моделювання функціонування системи “мозок”; третя проблема відноситься до вивчення взаємодії цих двох систем як основи функціонування організму людини.

В медицині, нейрокібернетиці, психофізіології праці, в теоріях описів "розуму" людини, а також штучного інтелекту одержані вагомі результати щодо розуміння суті процесів, що протікають. В той же час цих результатів зовсім не достатньо для розв'язання практичних задач проектування і, особливо, нормування праці. Центральною проблемою тут є відсутність даних про темпи виконання робіт, які здатний витримати працюючий, підтримуючи нормальний стан на протязі робочих змін.

Збережіть фрагмент як окремий текстовий файл під ім'ям “model.txt”.

3. Відчиніть нове вікно в редакторі і виконаєте набір наступного фрагмента:

Введение в систему Windows NT Workstation 4.0

В этом разделе перечислены наиболее важные свойства Windows NT Workstation 4.0, благодаря которым эта операционная система отвечает самым строгим требованиям современного делового мира.

Простота использования, быстродействие и совместимость

Система Windows NT Workstation 4.0 использует удобный интерфейс Windows 95, упрощающий и ускоряющий выполнение задач. Windows NT Workstation 4.0 обеспечивает высокое быстродействие 32-разрядных программ. Все 16-разрядные программы для Windows получают возможность использования преимуществ приоритетной многозадачности Windows NT Workstation 4.0 и могут выполняться в отдельном адресном пространстве для повышения скорости и надежности работы.

Поддержка рабочих групп и работы в сети

Встроенные возможности общего доступа к файлам и принтерам упрощают использование Windows NT Workstation в рабочих группах. В системе Windows NT Workstation 4.0 применен открытый сетевой системный интерфейс, совместимый с сетями Banyan VINES, NetWare, Novell, UNIX, Macintosh и LAN Manager 2.x, а также с системами Microsoft Windows для рабочих групп, Windows 95 и другими стандартными системами для процессоров типа x86. Компьютер под управлением Windows NT Workstation 4.0 может обслуживать до 10 одновременных подключений для общего доступа к файлам и принтерам.

Збережіть фрагмент як окремий текстовий файл під ім'ям “windows.txt”.

4. Самостійно відпрацюйте на створених вами текстах усі вивчені операції редагування:

· переміщення курсору по тексту;

· вставка нового слова усередину існуючого тексту;

· заміна одного слова іншим;

· видалення символів зліва від курсору;

· видалення символів, починаючи з позиції курсору;

· розбиття одного рядка на два;

· «склеювання» двох рядків в один;

· виділення фрагмента тексту;

· копіювання фрагмента в буфер;

· видалення фрагмента;

· видалення фрагмента в буфер;

· вставка фрагмента з буфера в позицію курсору;

· заміна одного фрагмента іншим;

· перенос фрагмента з одного місця в інше (подумайте, як це можна зробити за допомогою відомих операцій із фрагментами);

Примітка: якщо ваш редактор дозволяє виконати скасування хоча б останньої виконаної дії, то користуйтеся цим під час відпрацьовування, щоб потім відновити текст у початковий стан. Можна зробити простіше: по закінченню тренування просто закрити вікно з текстом, відмовившись від збереження змін. Текст залишиться в старому (не зміненому) стані.

5. У робочий зошит запишіть власні відповіді на контрольні питання, наведені нижче.

6. Проаналізуйте і запишіть у зошит висновки щодо досягнутих вами результатів, отриманих знань і вмінь.

7. Для здачі роботи пред'явіть створені вами текстові файли викладачу. На вибір викладача продемонструйте своє уміння виконувати будь-які операції по редагуванню тексту.

Контрольні питання

1. Назвіть режими роботи текстового редактора та їхні основні особливості.

2. Як зробити відступ між двома абзацами тексту в два порожні рядки?

3. Якими засобами можна видалити, наприклад, п'ять рядків тексту, що йдуть підряд?

4. Яким чином можна певне слово в тексті перемістити з одного місця на інше?

5. Опишіть послідовність дій, якщо необхідно перший і третій абзаци тексту поміняти місцями.

Вказівки для викладача

Рекомендується для проведення даної роботи використовувати системний текстовий редактор edit.com (працює в текстовому DOS‑режимі). Даний редактор присутній в усіх версіях MS-DOS, починаючи з версії 5.0, і в усіх версіях Windows, включаючи і Windows NT. До того ж, у русифікованих версіях систем є російська версія редактора з відповідним довідковим файлом (help-ом). Файл редактора звичайно розташовується в системному каталозі DOS або Windows і запускається з будь-якого місця системи введенням із командного рядка команди

C:\>edit

Як більшість редакторів, призначених для програмування, даний редактор при переведенні курсору на початок наступного рядка повторює початковий відступ попереднього рядка. При необхідності такий відступ можна ліквідувати клавішею Backspace. Не забудьте забезпечити роботу драйвером кирилиці (наприклад, keyrus.com), здатним виконувати набір російських і українських символів. Драйвер повинен бути завантажений до запуску редактора.

Якщо робота виконується в середовищі Windows, то прийнятним варіантом є використання системного редактора Блокнот, що запускається з головного меню системи. При цьому додатковий драйвер кирилиці не потрібний.

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

Звертайте увагу студентів на вміння аналізувати зроблену роботу і якість записаних висновків.

Контролюйте можливості конкретних студентів і швидкість їхньої роботи. Орієнтуйте їх на виконання максимального обсягу роботи. Проте, за необхідністю розміри текстів, що вводяться, можна скоротити або, навпаки, додати фрагменти текстів.

Лабораторна робота 1.4 Команди ЦПП

Мета роботи: Навчитися програмувати найпростіші обчислювальні алгоритми за допомогою команд, які безпосередньо виконуються центральним процесором.

Засоби: Обладнання стандартної робочої станції, матеріали даної роботи, конспект лекцій, література, навчальна програма cpu.exe.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 1.4, с. 19-35.

2. Абель П. Язык ассемблера для IBM PC и программирования: Пер. с англ. Ю. В. Сальникова. М.: Высшая школа, 1992, 448 с.

Теоретичні відомості

Для відпрацювання команд ЦПП автором даного курсу була розроблена проста програма-імітатор роботи процесора cpu.exe. Програма має дуже скромні можливості, дозволяючи ввести програму розміром до 20 команд і використовувати до 18 різноманітних команд процесора. Проте, при цьому можна запустити введену програму на виконання і переглянути результати її роботи в регістрах процесора і використовуваних комірок пам'яті. Також можна запустити програму в покроковому (відлагоджувальному) режимі, перевіряючи стан пам'яті і регістрів після кожної команди алгоритму. Мета роботи — одержати уявлення про принципи і механізм роботи процесора, що є основою будь-якого електронно-керуючого або обчислювального комплексу.

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

┌─────┬────────────────┬─────┐┌─┬─────┐Commands:              PROGRAM

│ Reg │     Binary     │ Dec ││M│Value│               ┌───┬───────┬─────┬─────┐

╞═════╪═══════╤╤═══════╪═════╡╞═╪═════╡MOV - перемест.│ N │Command│ Op1 │ Op2 │

│  AX │0000000000000000│    0││A│    0│ADD - добавить ├───┼───────┼─────┼─────┤

├─────┼───────┬┬───────┼─────┤├─┼─────┤SUB - вычесть  │   │       │     │     │

│  BX │0000000000000000│    0││B│    0│INC - добав.1  │   │       │     │     │

├─────┼───────┬┬───────┼─────┤├─┼─────┤DEC - вычесть 1│   │       │     │     │

│  CX │0000000000000000│    0││C│    0│SHL - сдв.влево│   │       │     │     │

├─────┼───────┬┬───────┼─────┤├─┼─────┤SHR - сдв.вправ│   │       │     │     │

│  DX │0000000000000000│    0││D│    0│PUSH- в стек   │   │       │     │     │

├─────┼────────────────┼─────┤├─┼─────┤POP - из стека │   │       │     │     │

│Flags│0000000000000000│     ││E│    0│CMP - сравнить │   │       │     │     │

└─────┴────────sz─────c┴─────┘└─┴─────┘HALT- останов  │   │       │     │     │

          A..E- значение в память                     │   │       │     │     │

┌─┬─────┐ Ins - добавить строку        Переходы:      │   │       │     │     │

│ │     │ Del - удалить строку                        │   │       │     │     │

│ │     │ F8  - запуск по шагам        JMP - безуслов.│   │       │     │     │

│ │     │     Esc    - прервать        JZ  - если =0  │   │       │     │     │

│ │     │     Пробел - шаг             JNZ - если <>0 │   │       │     │     │

│ │     │ F5 - запуск до конца         JA  - если >   │   │       │     │     │

├─┼─────┤ F2 - сброс регистров         JNA - если <=  │   │       │     │     │

│N│Stack│ Ctrl+C - очистка программы   JB  - если <   │   │       │     │     │

└─┴─────┘ F10- выход                   JNB - если >=  │   │       │     │     │

Команда:                                              │   │       │     │     │

                                                      └───┴───────┴─────┴─────┘

Зліва вгорі розташовується таблиця, що відображає вміст основних регістрів процесора. У колонку «Reg» зазначені імена регістрів, у колонку «Binary» — вміст регістра в двійковому коді, у колонку «Dec» — у десятковому. Для регістра Flags робочими є тільки 0-й, 6-й і 7-й біти (c, z, s). Праворуч від цієї таблиці розташовується ще одна таблиця, що надає можливість працювати з п'ятьма додатковими комірками ОЗП, позначеними для зручності латинськими літерами від A до E. Стовпчик «M» (Memory — пам'ять) містить імена комірок, стовпчик «Value» (значення) — десяткові значення 16-бітних комірок пам'яті.

Ліворуч знизу розташовується таблиця, що відображає верхні п'ять комірок програмного стеку (порядковий номер і вміст комірки стеку в десятковому коді). У правій частині екрана знаходиться таблиця, в яку вводиться програма у вигляді мнемонічних (асемблерних) кодів. Стовпчик «N» містить номер команди (ціле число), стовпчик «Command» — команду, стовпчики «Op1» і «Op2» — перший і другий операнди команди (якщо вони є). Місце екрана, що залишилось, займає довідкова інформація. Ліворуч — команди управління програмою, праворуч — повний список команд, що можна використовувати у програмі, що вводиться. Уважно вивчить цю інформацію і тоді ви зможете швидко і легко відпрацювати навчальні завдання.

Для попереднього введення значень у комірки пам'яті (A…E) необхідно, щоб курсор знаходився в рядку «Команда:», і натиснути клавішу з латинською літерою, що відповідає необхідній комірці. Наприклад, для введення в комірку A попереднього значення 8 потрібно натиснути клавішу [A] (курсор перейде в стовпчик «Value» комірки A) і ввести значення 8. Якщо у вас виникла ідея стерти значення з комірки пам'яті, то просто введіть у її комірку значення 0.

Для введення чергового рядка програми треба натиснути клавішу Ins (Insert) і ввести всі елементи рядка в таблицю «PROGRAM», щоразу після набору елемента натискаючи клавішу Enter. Для введення нового рядка треба знову натиснути клавішу Insert. Для видалення непотрібного рядка необхідно натиснути клавішу Del (Delete) і ввести номер рядка, що видаляється. Для вставки певного рядка між двома існуючими треба натиснути клавішу Insert і в останньому рядку ввести потрібний рядок програми з таким номером, який повинний потрапляти між номерами двох існуючих рядків. Після завершення введення рядок автоматично переміститься в потрібне місце. Саме тому для можливості вставляти додаткові або пропущені рядки в програму рекомендується присвоювати номери рядкам програми з деяким інтервалом один від одного (не 1, 2, 3, …, а 5, 10, 15, … або 10, 20, 30, …). Для виправлення певного рядка потрібно видалити старий рядок і ввести новий.

При відпрацюванні програми у покроковому режимі символ > у стовпчику «Command» вказує на ту команду, яку імітатор готовий виконати в даний момент. При натисканні клавіші пробілу ця команда виконується, і покажчик переходить до наступної команди. Якщо програма зациклюється або ви просто хочете її перервати, то зробити це можна, натиснувши клавішу Esc. Якщо в покроковому режимі ви потрапили в довгий цикл і загалом зрозуміли механізм його виконання, то можна натиснути клавішу F5, продовживши автоматичне виконання до кінця програми. Ця ж клавіша запускає програму з самого початку для повного автоматичного виконання. Пам'ятаєте, що в покроковому режимі програма реагує тільки на клавіші пробілу, F5 і Esc. Ознакою покрокового режиму є наявність символу > у стовпчику «Command».

Для того, щоб відпрацювати програму з іншими вхідними даними, треба ввести нові дані в необхідні комірки пам'яті (A…E), очистити регістри і стек клавішею F2, і знову запустити програму на виконання клавішею F5.

Для введення нової програми потрібно очистити дані попередньої програми за допомогою комбінації клавіш Ctrl-C.

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

Головне, що необхідно зрозуміти, це те, що при програмуванні обчислювального алгоритму ви не працюєте з конкретними числами (як на калькуляторі), а складаєте програму для цілого класу задач, які аналогічним чином працюють із будь-якими вхідними даними. Так, ви не просто перемножуєте два числа, а складаєте алгоритм перемножування будь-яких двох чисел, оперуючи не числами, а вмістом деяких комірок пам'яті (або регістрів) за допомогою їхніх імен (адрес). Вирішуючи задачу, ви повинні скласти алгоритм рішення саме класу подібних задач, проектуючи його в термінах тих команд, що надає обчислювальна система.

Хід роботи

1. Дайте відповіді на контрольні питання, які наведені нижче. Відповіді запишіть у робочий зошит.

2. Відпрацюйте всі лекційні приклади на програмі cpu.exe. Перевірте результати роботи кожного алгоритму, ввівши по два варіанти різноманітних вхідних даних (не використовуйте великих значень!). Рекомендується відпрацювання виконати в покроковому режимі, звертаючи увагу на значення регістрів процесора (особливо Flags) після виконання кожної команди алгоритму. Запишіть у робочий зошит тексти відпрацьованих програм, значення кожного варіанта вхідних даних і отримані результати.

3. Відповідно до варіанта, запропонованого викладачем, складіть блок-схеми й алгоритми обчислювальних прикладів. Перевірте правильність роботи кожного з них за допомогою трьох різноманітних варіантів вхідних даних. Блок-схеми, тексти працюючих програм, вхідні дані і результати запишіть у робочий зошит.

В усіх завданнях, де записано арифметичний вираз, необхідно обчислити його значення, використовуючи тільки операції додавання, віднімання, зсувів, порівняння і переходів. Результат слід помістити в зазначену у виразі комірку пам'яті, якщо не обговорений конкретний варіант.

Позначення: A, B, C, D, E – комірки пам'яті; S1, S2, S3, S4 – комірки стеку; AX, BX, CX, DX – регістри процесора; арифметичні операції: * множення, / ділення, + додавання, – віднімання.

Для оптимізації алгоритму припускається здійснювати у виразах еквівалентні математичні перетворення.

Варіанти завдань:

1) а) A = S1 + S2 + S3

б) E = A*B – C*D

2) а) A = S1 – S2 + S3 – S4

б) D = 4*B – A*C

3) а) Визначити мінімальне з трьох значень A, B, C. Результат залишити в регістрі AX.

б) E = A + B*C + D

4) а) A = 16*B

б) A = 4*D + 4*B + 4*C

5) а) C = 4*B – A

б) A = (B + C) * (C – D)

6) а) B = 4*A + 4*C

б) D = B*B + 2*A*C

7) а) C = 8*(A + B)

б) E = C*(A + B)*D

8) а) Визначити максимальне з чотирьох чисел, що знаходяться в стеку. Результат — в AX.

б) A = B + C / D

9) а) Якщо A ділиться на B, то залишити в AX значення 1, інакше — значення 0.

б) A = B * (C + D – E)

10) а) B = A / 32

б) E = (A – C) / (D + B)

11) а) A = S1 / S2 / S3

б) A = B*C – 8*D

12) а) A = 4 * (S1 – S2 – S3)

б) A = 2*B*(C +D)

13) а) C = 16*A – 8*B

б) E = (16*B – C*D) / 8

14) а) B = S1 – S2 + S3

б) A = B*B + C*D

15) а) A = (S1 + S2) – (S3 – S4)

б) D = B – 8*A*C

16) а) Визначити максимальне з чотирьох значень A, B, C, D. Результат — в регістр AX.

б) E = A + B / C + D

17) а) B = 32*A

б) A = 4*B – 4*C + 8*D

18) а) C = A – 4*B

б) A = (B – C) / (C + D)

19) а) A = 4*B – 4*C

б) D = C*C – 2*A / B

20) а) C = (A + B) / 16

б) A = C / (E + D)*B

21) а) Визначити мінімальне з трьох чисел, що знаходяться в стеку. Результат — в AX.

б) E = B*B + C / D

22) а) Залишок ділення A на B залишити в регістрі AX.

б) D = (4*C + B) / A

23) а) C = (A + B) * 32

б) A = (E + C) / (D + B)

24) а) A = S1 / S2 * S3

б) D = B*C + 16*A

25) а) A = (S1 – S2 + S3) * 8

б) A = 4*D*(C +B)

26) а) C = 8*A – 8*B

б) A = (32*D + B*C) / 8

4. Запишіть у робочий зошит висновки про зроблену роботу.

Контрольні питання

1. Чому краще значення з комірок пам'яті забирати в регістри процесора і лише потім виконувати з ними різноманітні операції?

2. Для чого використовується стек?

3. Що дозволяють робити операції зсувів (SHL і SHR)?

4. Звідки процесор бере інформацію, на підставі якої він виконує поточну команду умовного переходу?

5. Що таке переривання і для чого вони призначені?

6. Що таке резидентна програма і які основні принципи її роботи?

Вказівки для викладача

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

Лабораторна робота 1.5 Команди MS-DOS

Мета роботи: Вивчити основи роботи з дисковою операційною системою, навчитися використовувати її основні команди.

Засоби: Обладнання стандартної робочої станції, матеріали даної роботи, конспект лекцій, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 2.1-2.2, с. 41-48.

2. Нортон П. Справочное руководство по MS-DOS: Пер. с англ. – М.: «Радио и связь», 1992, 336 с.

Теоретичні відомості

Операційна система — це набір різноманітних програм, що надають функції управління різноманітними пристроями обчислювальної системи. До появи операційних систем оператор або інженер, що обслуговував ЕОМ, повинен був чітко знати не тільки як і куди потрібно підключати кожен з пристроїв обчислювальної системи, але і який сигнал і на який конкретно контакт необхідно подавати, за якими із сигналів потрібно стежити по індикаторних ліхтариках, що означає будь-яка з комбінацій таких індикаторів і що потрібно робити в тій або іншій ситуації, а також багато іншого. Управління головним чином було ручним, оператор торкався величезної кількості кнопок, тумблерів, штекерів, з’єднань, стежив за багатьма індикаторами та іншими елементами управління. Зрозуміло, що кваліфікація персоналу повинна була бути дуже високою. Простому користувачу прямий доступ до ЕОМ був закритий. Він міг тільки передати текст алгоритму розрахункової задачі обслуговуючому персоналу ЕОМ і через якийсь час одержати надруковані результати роботи свого алгоритму. Операційні системи докорінно змінюють ситуацію. З їхньою появою значно полегшується безпосередній доступ до обчислювальної техніки менш кваліфікованих користувачів, для яких уже не потрібно знати тонкощі роботи всіх електронних пристроїв. Тепер можна за допомогою клавіатури дати системі нормальну, «людську» команду, а відповідні програми операційної системи за допомогою центрального процесора самі підключать усі необхідні пристрої, подадуть на них усі необхідні сигнали і простежать за їхньою правильною роботою. Операційна система грає роль електронного обслуговуючого персоналу. Залишається зовсім трохи. Потрібно знати правила гри в обчислювальній системі, тобто основні команди і вказівки, що розуміє операційна система, і до якого кінцевого результату вони приведуть. А як і яким чином усе виконується — зрозуміти практично неможливо (для більшості користувачів) та й не потрібно.

Основними пристроями для вводу-виводу і збереження практично всієї інформації в сучасних системах є магнітні диски. Тому основними керуючими програмами операційної системи є програми управління дисковими пристроями і в багатьох операційних системах назви підкреслюють це, як, наприклад, в дискових операційних системах (ДОС).

Основа MS-DOS подана у вигляді трьох файлів:

· IO.SYS — містить набір програм-драйверів управління пристроями вводу-виводу (IO – input-output – ввід-вивід);

· MSDOS.SYS — ядро системи; містить програми, що реалізують логіку й організацію інформаційного сховища на магнітних дисках у вигляді ієрархічної файлової системи, а також алгоритми взаємодії пристроїв один з одним; це своєрідний «мозок», що «знає», як з усім працювати;

· COMMAND.COM — командний процесор; це «секретарка», що приймає від користувача команду у вигляді тексту на англійській (як правило) мові, розбирається, чи входить ця команда в перелік відомих їй інструкцій і, якщо усе збігається, викликає відому їй програму, що зберігається в «мозку» системи MSDOS.SYS, що і виконує конкретну роботу замовника (користувача); для управління кінцевими пристроями вводу-виводу така програма може, у свою чергу, використовувати відповідний драйвер, наприклад, із файла IO.SYS.

Так людський інтелект перекладає на електроніку, що програмується, основну частину нудної нетворчої роботи, залишаючи за самою людиною можливість вирішувати завдання на більш високому стратегічному рівні.

Отже, основним сховищем інформації є магнітний диск, структура якого організована достатньо просто. Можна провести аналогію зі звичайною бібліотекою. Так само, як і в бібліотеці, на диску є каталог і окремо сховище самої інформації. Спочатку в каталозі ви шукайте картку з потрібною вам книгою, шифр якої повідомляєте бібліотекарю. По шифру бібліотекар знаходить потрібну кімнату, стелаж і полицю, на якій знаходиться ця книга. Проте часто, особливо в невеличких бібліотеках, бібліотекар і без шифру може швидко знайти потрібну книгу, до того ж здебільшого кімнати сховища організовуються по тематиці, а книги на стелажах — за абеткою авторів. У дисковому сховищі роль каталогу більш важлива. Як відомо, інформація в обчислювальних системах представляється у вигляді ланцюжків двійкових кодів. Саме сховище на диску можна уявити у вигляді величезної стрічки, згорнутої спіраллю, здовж якої послідовно один за одним розташовані інформаційні блоки — файли. Файл — це кінцевий ланцюжок двійкових кодів, що містить певну, звичайно взаємозалежну, інформацію. Оскільки інформація в різноманітних файлах кодується по-різному (уявіть текстові, графічні, звукові файли), то просто так, йдучи уздовж стрічки сховища, дуже важко визначити, де починається і де закінчується визначений інформаційний файл і яку інформацію він містить. Основним путівником є каталог (який часто називається директорією). Інформація про файли зберігається в каталогах у вигляді облікових записів (картки в бібліотеці). У обліковому записі вказується ім'я і тип файла, дата і час його створення, розмір у байтах і номер блока (кластера), починаючи з якого файл розташовується в інформаційному сховищі. Тому, знайшовши обліковий запис файла в каталозі, можна відразу ж визначити місце розташування інформації на диску і витягти її звідти.

Каталог має ієрархічну структуру. Через головний вхід дискового пристрою ви потрапляєте в основний (кореневий) каталог, який часто просто називають коренем. У корені можуть розміщатися облікові записи звичайних файлів і облікові записи підкаталогів. Кожний підкаталог організований аналогічно кореневому каталогу. Тут знову можуть розташовуватися облікові записи файлів і інших вкладених підкаталогів. «Провалившись» у деякий підкаталог, ви часто можете перейти в наступний вкладений усередину нього підкаталог (якщо він є) або повернутися в попередній («батьківський») каталог. Така система дозволяє організовувати великі набори файлів у струнку і зручну ієрархічну структуру, що звичайно зображується як дерево, перевернене коренем догори (каталоги асоціюються з гілками, а файли — з листками):

КОРІНЬ

│

├── каталог1

│ ├── каталог1.1

│ │ ├── файл1.1.1

│ │ └── файл1.1.2

│ └── каталог1.2

│ ├── файл1.2.1

│ ├── файл1.2.2

│ └── файл1.2.3

├── каталог2

│ ├── каталог2.1

│ │ ├── каталог2.1.1

│ │ │ ├── файл2.1.1.1

│ │ │ └── файл2.1.1.2

│ │ └── каталог2.1.2

│ │ ├── файл2.1.2.1

│ │ └── файл2.1.2.2

│ ├── файл2.1

│ ├── файл2.2

│ └── файл2.3

├── файл1

├── файл2

├── файл3

└── файл4

Основними для роботи з дисковим інформаційним сховищем є команди переміщення по дереву каталогу і перегляду змісту будь-якого каталогу (підкаталогу):

cd (від Change Directory) — змінити поточну директорію (каталог) або перейти в зазначений каталог, наприклад:

cd docs — перейти з поточного каталогу у вкладений підкаталог docs (якщо він є; якщо немає — видається повідомлення про помилку);

cd .. — повернутися на попередній рівень (у «батьківський» каталог);

cd \ — перейти з будь-якого каталогу в корінь (символ \ означає «кореневий каталог»).

dir (від Directory — каталог) видає на екран зміст поточного або зазначеного каталогу, наприклад:

dir — вивести список файлів і підкаталогів, що знаходяться в поточному каталозі;

dir docs — вивести зміст вкладеного підкаталогу docs, що повинен знаходитися в поточному каталозі;

dir docs\sprav — вивести зміст підкаталогу sprav, що знаходиться усередині каталогу docs, що, у свою чергу, знаходиться усередині поточного каталогу;

dir \ — вивести зміст кореневого каталогу не зважаючи на те, де ви зараз знаходитеся;

dir \program\pascal — вивести зміст підкаталогу pascal, вкладеного в каталог program, що розташований у кореневому каталозі (не зважаючи на те, де ви зараз знаходитеся, оскільки зазначений точний шлях до цільового каталогу).

Отже, шлях (маршрут), заданий до цільового каталогу, є ланцюжком переходів по дереву каталогів, що розділяються символом \ (обернена нахилена риска або обернений слеш). Даний символ означає корінь дерева тільки тоді, коли стоїть на початку маршруту. Зазначені команди застосовуються лише щодо поточного дискового пристрою. Якщо ж у вас декілька дисків, наприклад один флопі-диск (A) і два жорстких диски (C і D), то для переходу з диска на диск потрібно просто ввести ім'я цього диска (з двокрапкою):

A: — перейти на диск A;

D: — перейти на диск D.

Можна вивести зміст деякого каталогу, що знаходиться на іншому диску без переходу на цей диск. Наприклад, знаходячись на диску C, можна видати команду

dir D:\Video\Animals — вивести зміст підкаталогу Animals, що знаходиться в каталозі Video, що розміщений у корені диска D.

Щоб визначити, на якому диску й у якому каталозі (підкаталозі) ви зараз знаходитеся, потрібно просто подивитися на заголовок командного рядка, який називається промптом. Промпт видається на екран операційною системою (а точніше, командним процесором COMMAND.COM) як запрошення користувачу до введення команд. Він є позначенням поточного диску і повного шляху до поточного каталогу. Завершується промпт символом «>»:

A:\> — ви зараз у корені диска A:

C:\docs> — ви в каталозі docs, розташованому в корені диска C:

D:\Video\Nature> — поточним є підкаталог Nature каталогу Video, розташованого в корені диска D:

Працювати з деяким каталогом зручніше, зробивши його поточним (за допомогою команди cd), інакше звертатися до файлів цього каталогу доведеться, вказуючи шлях до файла у вигляді ланцюжка переходів по каталогах від поточного каталогу або від кореня, наприклад:

leo.mpg — відеофайл leo.mpg, розташований у поточному каталозі;

Animals\leo.mpg — у поточному каталозі розташований підкаталог Animals, усередині якого знаходиться відеофайл leo.mpg;

D:\Video\Animals\leo.mpg — той же файл із зазначенням повного шляху до місця його розташування.

Ім'я файла складається з двох частин: власне імені файла і розширення (необов'язкова компонента, що зазначає тип файла). Довжина імені файла може знаходитися в межах від 1 до 8 символів, розширення — від 0 до 3 символів. Дозволені будь-які комбінації символів із наступних списків:

· літери абетки від A до Z (для русифікованих систем додатково дозволені літери кирилиці від А до Я);

· цифри від 0 до 9;

· спеціальні символи $ & # ! % ‘ _ ( ) -

Зверніть увагу, що пробіл в іменах системи MS-DOS не припустимий. Замість нього можна використовувати символ підкреслення «_».

Вибрати потрібну дію з файлом допомагає розширення, що дописується до імені файла через крапку. Знаючи тип файла, ви швидко визначите, що з ним можна робити. Розширення імені файла користувач може призначити самостійно (або не призначити взагалі, тобто розширення може бути відсутнім), але є деякі стандартні угоди по розширеннях. Ось список основних стандартних розширень імен файлів MS-DOS:

exe (від execute – виконати) – програма в машинних кодах процесора, що виконується;

com (від command – команда) – аналогічний exe-файлу, але має спрощену структуру і звичайно дозволяє розміщати програму тільки в одному сегменті оперативної пам'яті (до 64 Кбайт);

sys (від system – системний) – файли, що містять набори функцій (підпрограм) у машинних (що виконуються) кодах процесора; часто представляють драйвери пристроїв вводу-виводу і звичайно завантажуються в ОЗП при початковому завантаженні операційної системи;

txt (від text – текст) – файл містить певний текст у вигляді кодів стандартної кодованої таблиці DOS;

doc (від document – документ) – аналогічний txt, але підкреслює характер текстової інформації;

bat (від batch – пакет) – пакетний (командний) файл, що містить рядки тексту як команди операційної системи; дозволяє автоматизувати роботу в системі шляхом організації часто виконуваних наборів команд у вигляді пакетного файла, що запускається введенням одного імені такого файла;

bak (від backup – резервування) – резервна копія (десь повинен бути файл з аналогічним ім'ям, але з іншим розширенням);

tmp (від temporary – тимчасовий) – тимчасовий файл;

bas (від Basic) – текст програми на Бейсіку;

pas (від Pascal) – текст програми на Паскалі.

Приклади:

my_prog.exe – файл програми, що виконується;

g-mouse.sys – системний драйвер миші;

copyfiles.bat – пакетний файл для організації копіювання файлів;

zarp.pas – текст програми на Паскалі для розрахунку зарплати;

ved547.doc – файл документа, що містить відомість №547;

tp000017.$$$ – тимчасовий файл при роботі компілятора Турбо Паскаль.

Файли з розширеннями bak і tmp, а також розширеннями, що починаються із символу $, створюються багатьма програмами під час певного сеансу роботи як тимчасові або допоміжні і звичайно по закінченню сеансу роботи повинні цією програмою видалитися. Накопичення подібних файлів у деякому каталозі звичайно свідчить про некоректне завершення визначених програм або про їхню некоректну роботу. Такі файли, як правило, можна цілком вільно видаляти із системи.

Існує ще безліч різноманітних розширень. У кожній сфері застосування комп'ютерної техніки є свої традиції й угоди. Тому згодом у конкретних областях роботи ви познайомитеся і будете знати використовувані там типи файлів і відповідні розширення.

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

1) Запуск на виконання

Перше слово введеної користувачем фрази командний процесор завжди намагається розпізнати як команду, що необхідно виконати, наприклад:

C:\>edit

Спочатку система намагається знайти в поточному каталозі файл, що виконується, edit.com і запустити його як програму, що містить безпосередні команди процесора. Якщо такого файла немає, то продовжується спроба знайти і запустити файл із таким же ім'ям, але розширенням exe. Якщо і такого файлу немає, то система намагається знайти пакетний файл edit.bat, що повинен містити текстові рядки, кожен з яких є однією з команд MS-DOS так, ніби ви вводили їх із командного рядка (без промптів!). Якщо нічого подібного не знайдено, то система намагається продовжити пошук зазначених файлів у каталогах, список яких зазначений у системній змінній path. Так, якщо у файлі autoexec.bat є рядок

path c:\;c:\dos;c:\nc;c:\util

отже, при запуску системи змінна path була визначена і пошук буде послідовно продовжений по каталогах: корінь диска C, потім dos, nc і util, тобто саме в тому порядку, що заданий для змінної path. Якщо і тут даний файл не знайдений, а в списку вмонтованих команд командного процесора команда edit відсутня, то буде видане повідомлення про те, що файл не знайдений або це невідома команда. Якщо ж у каталозі відразу присутні всі типи файлів, що виконуються, то для запуску конкретного файла краще зазначити його ім'я з розширенням (щоб не згадувати наведений вище порядок), наприклад:

C:\>edit.bat

Таким чином, набір файлів, що виконуються (com, exe, bat) ніби розширює список вмонтованих команд операційної системи. При створенні власних програм ви завжди розширюєте можливості комп'ютера для вирішення визначеної задачі.

Вже розглянуті команди cd і dir є вмонтованими (список вмонтованих команд зберігається усередині програми COMMAND.COM). Розглянуті далі команди також є вмонтованими. Якщо ж будь-яка команда реалізована у вигляді зовнішньої програми (com- або exe-файла), то на це буде особливо зауважуватися.

2) Копіювання файлів (copy — копіювати)

copy що куди

Якщо не зазначено, куди потрібно копіювати, то по замовчуванню копіювання виконується в поточний каталог. Приклади:

C:\util>copy a:text1.txt — файл text1.txt із поточного каталогу диска A копіюється в поточний каталог, тобто в C:\util;

C:\>copy a:\docs\ved15.doc d:\zarp\ved_zarp.txt — ім'я поточного каталогу не має значення, оскільки зазначені повні шляхи джерела і місця призначення, причому навіть зазначено, у який файл виконувати копіювання, тобто на диску D у каталозі zarp з'явиться копія файла ved15.doc, але з ім'ям ved_zarp.txt;

C:\>copy config.sys a: — із поточного каталогу файл config.sys копіюється на диск A з тим же ім'ям.

Для копіювання груп файлів використовуються спеціальні символи (підстановочні або узагальнюючі символи):

* заміняє будь-яку групу символів, у тому числі і порожню;

? заміняє будь-який один символ.

Приклади:

A:\>copy *.exe c:\util — із поточного каталогу диска A скопіювати усі (будь-які) exe-файли в зазначений каталог диска C.

C:\nc>copy *.* a: — скопіювати усі файли поточного каталогу (будь-які імена з будь-якими розширеннями) на диск A.

C:\nc>copy nc*.* b: — із поточного каталогу на диск B скопіювати усі файли, що починаються на «nc» (після цих символів може бути як щось, так і нічого).

C:\util>copy *vt*.$* a: — на диск A копіюються файли, у яких у будь-якому місці імені (у тому числі на початку і наприкінці) є літери «vt», а розширення починається із символу «$».

C:\util>copy *.?? c:\temp — у temp каталог диска C із поточного каталогу копіюються усі файли з дволітерними розширеннями.

Ці ж символи можна використовувати й в інших командах. Так, якщо ви бажаєте подивитися інформацію про усі файли поточного каталогу типу pr0.pas, pr1.pas, …, pr9.pas, то виконати це можна за допомогою команди

C:\program>dir pr?.pas

оскільки команда dir виводить інформацію або про зазначені каталоги, або про зазначені файли. Якщо символів після літер «pr» може бути декілька, то замість символу «?» використовуйте «*».

3) Перейменування файлів або каталогів (rename — перейменувати)

ren поточне_ім'я нове_ім'я

Перед виконанням операції «поточне_ім'я» повинно бути присутнім у каталозі, а «нове_ім'я» — навпаки, відсутнім. Перейменування краще виконувати з об'єктами поточного каталогу. Приклади:

C:\program>ren pr1.pas zarp.pas

C:\>ren program prog

Оскільки по зовнішньому вигляду імен здебільшого неможливо визначити, що це, файл або каталог (каталоги теж можуть мати розширення, а файли — ні!), то з'ясовуйте типи об'єктів за допомогою команди dir.

4) Видалення файлів (delete — видалити)

del ім'я

Приклади:

C:\>del a:\docs\t1.doc

C:\>del temp\*.$*

C:\>del program\*.*

В останньому випадку система попередить про те, що видаляються усі файли в зазначеному каталозі, і з'явиться запит на підтвердження.

5) Перегляд змісту файлів (type — друкувати)

type ім'я_текстового_файла

Якщо кількість рядків виведеного тексту перевищує розмір екрана, то автоматично включається прокручування тексту. Тому ви можете побачити лише останні 24 рядка тексту (висота екрана звичайно складає 25 рядків). Причому рядки, ширина яких перевищує ширину екрана (звичайно 80 символів) автоматично розбиваються на декілька рядків із максимальною шириною, що не перевищує ширину екрана. Якщо у вашому системному каталозі MS-DOS є утиліта more.com (more — більше, ще), то можна модифікувати команду type таким чином:

type ім'я_текстового_файла |more

Зверніть увагу, що перед more ставиться вертикальна риска |. При цьому вміст файла буде виводитися на екран окремими сторінками (по 24 рядки), після кожної із яких система буде припиняти виведення, очікуючи натискання клавіші пробілу. Виведення можна перервати в будь-який момент комбінацією клавіш Ctrl-Break.

Приклади:

A:\>type autoexec.bat

C:\>type docs\vedomost.doc |more

C:\>type a:\config.sys

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

6) Опрацювання інформаційних файлів

Інформаційні файли створюються, редагуються й опрацьовуються спеціально призначеними для цього програмами. Звичайно це всілякі редактори (текстовий редактор, графічний редактор, звуковий редактор і т.д.), “програвачі” або “переглядачі”. Частіше завантажити файл у програму опрацювання можна двома способами. Можна спочатку запустити програму самого редактора, а потім за допомогою команд цього редактора або меню відкрити необхідний інформаційний файл. Якщо ж програма редактора спроможна сприймати параметри з командного рядка DOS, то можна відразу завантажити редактор разом з інформаційним файлом, вказавши ім'я цього файла як параметр програми-редактора (звичайно через пробіл після імені редактора). Наприклад, якщо в системі є текстовий редактор edit.com, то можлива наступна команда запуску:

C:\>edit docs\my_doc.txt

Створення і видалення каталогів виконується за допомогою спеціальних команд.

7) Створення каталогу (Make Directory — створити директорію)

md ім'я_каталогу

Зрозуміло, що зазначене ім'я повинно бути унікальним для того каталогу, всередині якого ви виконуєте створення нового каталогу. Приклади:

C:\>md program — у корені диска C створити каталог program.

C:\>md program\pas — усередині тільки що створеного каталогу program створити підкаталог pas.

C:\>md a:\dos — у корені диска A створити каталог dos.

Звичайно, можна працювати із однієї поточної директорії, набираючи щоразу для команди md повний або відносний шлях для утворюваного каталогу. Але можна й увесь час працювати тільки усередині поточного каталогу, сполучаючи команди cd і md (рекомендується).

8) Видалення каталогу (Remove Directory — видалити директорію)

rd ім'я_каталогу

При видаленні каталогу MS-DOS вимагає, щоб цей каталог був порожнім. Таким чином, необхідно попередньо усередині каталогу, що видаляється, видалити усі файли і підкаталоги, а потім видалити і його. Приклад:

C:\>rd c:\program\basic   — буде видалений підкаталог basic усередині каталогу program.

Рекомендується для запобігання зайвих помилок працювати усередині того каталогу, об'єкти якого ви збираєтеся видаляти. Таким чином «порядок» наводиться не дистанційно, а безпосередньо усередині тієї «кімнати», де прибирається «сміття». Тому краще зробити так:

C:\>cd program

C:\program>rd basic

Існує дуже простий засіб перенаправлення потоку інформації з певного пристрою у файл або навпаки. Це дозволяє дуже просто й оригінально вирішити деякі проблеми. Для перенаправлення інформації у файл замість певного стандартного пристрою (наприклад, консолі) використовується символ «>», що як стрілка показує, куди спрямовувати потік інформації:

C:\>copy docs\t1.txt con      — копіювання текстового файла на консоль (екран), що еквівалентно роботі команди type.

C:\>copy autoexec.bat lpt1    — копіювання тексту пакетного файла на принтер, підключений до порту LPT1, тобто друк цього тексту на принтері.

C:\>dir /? > c:\temp\dir.txt  — довідка команди dir (див. нижче) буде виведена не на екран, а в текстовий файл dir.txt, що буде створений у каталозі temp диска C. Після цього з файлом зручно працювати в текстовому редакторі.

C:\>dir /? > lpt1 —друк цієї ж інформації на принтері.

Отже, були наведені основні вмонтовані команди, що можуть знадобитися вам при роботі з MS-DOS у режимі командного рядка. Про інші команди можна дізнатися з довідкової системи MS-DOS (наприклад, по команді help, якщо є відповідна утиліта в системному каталозі) або з додаткової літератури (див. [2]). Проте, режим командного рядка в сучасних обчислювальних системах використовується відносно рідко і, як правило, лише при початковій інсталяції MS-DOS на цілком «голий» комп'ютер. Далі прийнято використовувати різноманітні програми-оболонки типу Norton Commander.

Додаткову інформацію про формат будь-якої команди або утиліти можна одержати, ввівши таку команду з параметром /?, наприклад:

C:\>dir /?

C:\>copy /?

C:\>utils\format.com /?

Після цього на екран буде видана стисла довідкова інформація з зазначеної команди або програми. Зверніть увагу, що між командою і параметром повинний бути пробіл. Деякі програми параметра /? не підтримують, якщо програміст, що створював програму, не передбачив виводу довідкової інформації (розпізнавання параметрів завжди покладається на програму, що запускається). Існують загальноприйняті угоди, згідно з якими у довідковій інформації необов'язкові параметри або елементи розташовують у квадратних дужках. Ось приклад виводу довідки команди dir:

C:\>dir /?

Displays a list of files and subdirectories in a directory.

DIR [drive:][path][filename] [/P] [/W] [/A[[:]attribs]] [/O[[:]sortord]]

    [/S] [/B] [/L] [/C[H]]

  [drive:][path][filename]   Specifies drive, directory, and/or files to list.

  /P      Pauses after each screenful of information.

  /W      Uses wide list format.

  /A      Displays files with specified attributes.

  attribs   D  Directories   R  Read-only files         H  Hidden files

            S  System files  A  Files ready to archive  -  Prefix meaning "not"

  /O      List by files in sorted order.

  sortord   N  By name (alphabetic)       S  By size (smallest first)

            E  By extension (alphabetic)  D  By date & time (earliest first)

            G  Group directories first    -  Prefix to reverse order

            C  By compression ratio (smallest first)

  /S      Displays files in specified directory and all subdirectories.

  /B      Uses bare format (no heading information or summary).

  /L      Uses lowercase.

  /C[H]   Displays file compression ratio; /CH uses host allocation unit size.

Switches may be preset in the DIRCMD environment variable.  Override

preset switches by prefixing any switch with - (hyphen)--for example, /-W.

Вивід списку файлів і підкаталогів із зазначеного каталогу.

DIR [диск:][шлях][ім'я_файла] [/P] [/W] [/A[[:]атрибути]] [/O[[:]порядок]]

    [/S] [/B] [/L] [/C[H]]

[диск:][шлях][ім'я_файла] Диск, каталог і/або файли, що варто включити до списку.

/P        Пауза після заповнення кожного екрана.

/W        Вивід списку в декілька стовпчиків.

/A        Вивід файлів із зазначеними атрибутами.

атрибути  D  Каталоги           R  Доступні тільки для читання

              H  Сховані файли      A  Файли для архівації

              S  Системні файли     Префікс "-" має значення НІ

/O        Сортування списку файлів.

порядок   N  По імені (алфавітна)         S  По розміру (спочатку менші)

              E  По розширенню (алфавітна)    D  По даті (спочатку більш старі)

              G  Почати список із каталогів   Префікс "-" обертає порядок

              C  По коефіцієнту стиснення (спочатку менші)

/S        Вивід списку файлів із зазначеного каталогу і його підкаталогів.

/B        Вивід тільки імен файлів.

/L        Використання нижнього регістра для імен файлів.

/C[H]     Вивід коефіцієнта стиснення для файлів; /CH використовується для

               визначення розміру диска (при використанні драйверів стиснення).

Стандартний набір ключів можна записати в змінну середовища DIRCMD.  Для скасування їхньої дії введіть у команді ті ж ключі з префіксом "-", наприклад: /-W.

Множина додаткових параметрів (або ключів) значно розширює можливості використовуваних команд. Так, якщо усередині поточного каталогу розміщено декілька сотень файлів, і ви просто хочете переглянути список наявних програм, то зручно вивести спрощений список у вигляді декількох стовпчиків, відсортованих по іменах файлів і розбитих на декілька екранів (more):

C:\>dir windows\system /O:N /W |more

Замість «|more» можна використовувати параметр «/P».

Як додаткові вмонтовані команди MS-DOS можна навести наступні прості команди:

date – виводить на екран поточну системну дату і дозволяє її змінити (щоб залишити існуючу дату, треба замість введення нової дати просто натиснути клавішу Enter);

time – виводить поточний системний час і дозволяє його змінити (аналогічно команді date);

ver – виводить поточну версію MS-DOS;

cls – (від clear screen – очистити екран) очищення екрана.

Деякі команди дублюються у дещо іншому написанні, що пов'язано з історичним розвитком MS-DOS. Наприклад, del - erase, cd - chdir, md - mkdir, rd - rmdir, ren - rename. Що краще використовувати — справа смаку.

Дуже багато додаткових команд MS-DOS реалізовано у вигляді зовнішніх програм-утіліт (com- і exe-файлів). Тому вивчайте інформацію довідкової системи і наявність відповідних файлів у системних каталогах DOS (назва системних каталогів можна уточнити у викладача або обслуговуючого персоналу обчислювальної системи).

Якщо ви працюєте з MS-DOS, завантаженої з дискети в мінімальній конфігурації (DOS подана тільки файлами io.sys, msdos.sys і command.com), то вам будуть доступні тільки вмонтовані команди системи. Проте їх буває цілком достатньо для виконання основних маніпуляцій із файлами і каталогами.

Хід роботи

1. Коротко законспектуйте інформацію про всі основні команди MS-DOS, які наведені у теоретичному огляді даної роботи.

2. Запишіть у робочий зошит відповіді на контрольні питання, які наведені нижче.

3. Усередині свого робочого каталогу створіть структуру каталогів на основі варіанта, запропонованого викладачем. Для імен каталогів використовуйте англійські скорочення, які записані в дужках. Контролюйте виконувану роботу за допомогою команди dir.

Приклади варіантів:

1) картинки (pictures)                          2) музыка (music)

    ├─живопись (painting)                           ├─украинская (ukrain)

    │  ├─абстракционизм (abstract)                  │  ├─народная (folk)

    │  ├─классика (classics)              │  ├─лирическая (lyric)

    │  └─модерн (modern)                            │  └─современная (modern)

    ├─графика (graphics)                            ├─русская (russian)

    │  ├─бумага (paper)                             │  ├─поп-музыка (pop)

    │  ├─дерево (wood)                              │  ├─рок-музыка (rock)

    │  └─металл (metal)                             │  └─разное (misc)

    └─фото (photo)                        └─зарубежная (foreign)

       ├─природа (nature)                              ├─поп (pop)

       ├─животные (animals)                  ├─диско (disco)

       ├─люди (people)                                 ├─рок-н-рол (rocknrol)

       ├─наука (science)                               ├─рок (rock)

       └─производство (manufact)                       ├─тяжелый рок (heavy)

                                                       └─романтика (romantic)

3) литература (literat)                         4) искусство (art)

    ├─история (history)                             ├─музыка (music)

    │  ├─украинская (ukrain)              │  ├─классика (classics)

    │  └─зарубежная (foreign)                       │  └─эстрадная (variety)

    │     ├─древний мир (ancient)        ├─живопись (painting)

    │     ├─средние века (medieval)       │  ├─реализм (realism)

    │     ├─возрождение (renaiss)                   │  ├─импресс-зм (impress)

    │     └─новая история (modern)        │  └─абстрак-зм (abstract)

    ├─приключения (adventur)               ├─литература (literat)

    │  ├─отечественная (native)                    │  ├─приключения(adventur)

    │  └─зарубежная (foreign)                      │  ├─фантастика (fiction)

    ├─фантастика (fiction)                │  └─детектив (detectiv)

    │  ├─отечественная (native)           └─архитектура (architec)

    │  └─зарубежная (foreign)                          ├─готика (gothic)

    └─детектив (detectiv)                     ├─барокко (baroque)

       ├─отечественный (native)                        └─современная (modern)

       └─зарубежный (foreign)

4. Усередині окремих підкаталогів створіть зазначені нижче по варіантах інформаційні файли. Створення імітуйте за допомогою копіювання деякого файла, зазначеного викладачем, під тим цільовим ім'ям, що необхідно. Наприклад, якщо потрібно (1 варіант) у каталозі «природа» створити файл forest.pic, а усередині вашого каталогу (IVANOV) є файл model.txt, то можна зробити так:

C:\users\ivanov>copy model.txt pictures\photo\nature\forest.pic

Створити наступні файли (по варіантах):

1) vangog.pic в каталозі «классика»;

leonardo.gif в каталозі «классика»;

pitcher.jpg в каталозі «металл»;

teacher.bmp в каталозі «люди»;

farmer.pic в каталозі «люди»;

chemical.tif в каталозі «наука»;

2) bilyk.wav в каталозі «украинская\современная»;

song27.wav в каталозі «украинская\лирическая»;

eagles.mp3 в каталозі «зарубежная\романтика»;

machine.mp3 в каталозі «русская\рок-музыка»;

mtalking.wav в каталозі «зарубежная\диско»;

3) spartak.txt в каталозі «древний мир»;

2w_war.doc в каталозі «новая история»;

ostrov.txt в каталозі «фантастика\отечественная»;

azimov.txt в каталозі «фантастика\зарубежная»;

kristi.txt в каталозі «детектив\зарубежный»;

4) bach.wav в каталозі «музыка\классика»;

9th_beth.wav в каталозі «музыка\классика»;

gogen.pic в каталозі «живопись\импрессионизм»;

koeln.cad в каталозі «архитектура\готика»;

france.jpg в каталозі «архитектура\барокко»;

holand.jpg в каталозі «архитектура\барокко».

5. Запишіть у робочий зошит виводи про зроблену роботу.

6. Продемонструйте викладачу зроблену роботу, а також своє уміння перейменовувати і видаляти файли і каталоги, переглядати вміст текстових файлів (на вибір викладача).

Контрольні питання

1. Для чого призначена MS-DOS?

2. Зазначте склад MS-DOS.

3. Зазначте порядок завантаження MS-DOS.

4. Для чого призначений режим командного рядка?

5. Назвіть імена основних стандартних пристроїв MS-DOS.

6. Як запустити на виконання файл mouse.sys, якщо точно відомо, що він має формат, що виконується (наприклад, як у com-файлів)?

7. Як можна створити невеличкий текстовий файл (наприклад, пакетний файл, що містить два рядки з командами MS-DOS), не маючи програми текстового редактора?

Вказівки для викладача

Викладач на свій розсуд може розширити набір досліджуваних команд MS-DOS за рахунок специфіки використовуваної системи (наприклад, у середовищі Windows) або додаткового набору утиліт. Не рекомендується використання нестандартних утиліт.

Для підготовлених студентів можна видати «позаштатний» варіант завдання, визначив тематику файлового сховища, кількість рівнів вкладеності (глибину дерева), зразкову кількість підкаталогів на кожному рівні. У цьому випадку студенти повинні самі спроектувати структуру каталогів і реалізувати її. Можливий набір тем для файлових сховищ: кінофільми, кухонні або медичні рецепти, спортивні сюжети, колекція ігрових програм, особисте листування, технічна документація (з будь-якого напрямку), географічні карти і т.п. Можливо формування імен каталогів і файлів на рідній мові (літерами кирилиці в русифікованих системах або англійськими літерами). Для цього необхідно забезпечити роботу відповідним драйвером клавіатури.

Якщо система дозволяє використовувати довгі імена об'єктів, то самостійно відпрацюйте цю можливість практично, поясніть студентам можливі нюанси й обов'язково змусьте їх широко користуватися даними можливостями.

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

Зверніть увагу на уміння студентів аналізувати у висновках результати своєї роботи.

Лабораторна робота 1.6 Оболонка операційної системи

Мета роботи: Самостійно вивчити і навчитися використовувати одну з найбільш поширених програм-оболонок для роботи в MS-DOS.

Засоби: Обладнання стандартної робочої станції, матеріали даної роботи, пакет із програмою-оболонкою, що вивчається, додатково можливе використання навчальної програми.

Теоретичні відомості

Якщо ви збираєтеся дуже інтенсивно працювати з файловою системою (переміщатися по численних каталогах, переглядати й опрацьовувати десятки, а то і сотні файлів), то використання режиму командного рядка MS-DOS — не найкраще рішення, оскільки при цьому виконання відносно простих операцій може перетворитися в дійсний жах.

Вже давно мільйони користувачів персональних комп'ютерів використовують спеціальні програми, що надають зручні засоби переміщення по різноманітних пристроях та їхніх каталогах, дозволяють переглядати зміст каталогів, виконувати будь-які операції операційної системи і при цьому практично не знати численних команд MS-DOS. Всі засоби надає сама програма.

Оскільки такі програми є своєрідними надбудовами (або оболонками) над операційною системою, то їх так звичайно і називають — оболонки ДОС. При виконанні операцій з файлами і каталогами програма-оболонка звичайно напряму звертається до функцій (підпрограм) ядра системи MSDOS.SYS без посередництва COMMAND.COM. Командний процесор головним чином контролює роботу самої програми-оболонки й інших програм, що запускаються з неї.

Класичною програмою-оболонкою, яку використовують мільйони користувачів у різноманітних операційних системах (а не тільки MS-DOS!), є легендарний Norton Commander. У залежності від того, яку операційну систему ви використовуєте, вам буде запропоновано вивчити або Norton Commander, або Far, створений Євгеном Рошалем для операційних систем Windows. Обидві програми працюють у текстовому екранному режимі, мають практично ідентичний інтерфейс, а також русифіковані версії інтерфейсу, що є важливим фактором для користувачів, що відчувають ускладнення з англійською мовою. Стартовою програмою для пакета Norton Commander є nc.exe, для Far — far.exe. Команда для автоматичного запуску оболонки (у MS-DOS) часто вставляється в пакетний файл autoexec.bat. Тоді при початковому завантаженні система готує комп'ютер до роботи, завершуючи завантаження стандартних програм і модулів запуском командної оболонки.

Вивчення можна здійснювати самостійно, скориставшись стислим додатковим матеріалом, що викладається нижче. Можна також для ознайомлення з основами роботи Norton Commander скористатися демонстраційною навчальною програмою, яка запропонована викладачем.

Спочатку коротко ознайомимося з концепцією командних оболонок.

У стандартному режимі екран оболонки складається з двох файлових панелей (лівої і правої), у яких може відображатися зміст двох різноманітних каталогів. Одна з панелей є активною (поточною), інша — допоміжною. Активність панелей переключається за допомогою клавіші Tab. Панельний курсор має вигляд смужки, що переміщується по іменах файлів і каталогів активної панелі за допомогою курсорних клавіш.

╔════════════╤ C:\MSSQL7 ═╤════════════╗╔═══════════ D:\PIC\IMAGES ════════════╗

║    Имя     │    Имя     │    Имя     ║║    Имя     │    Имя     │    Имя     ║

║..          │            │            ║║..          │BOAT        │CLOTHING    ║

║BACKUP      │            │            ║║ABSTRACT    │BORDERS     │COMMEDIA    ║

║BINN        │            │            ║║AGNCYSYM    │BUILDING    │COMP        ║

║BOOKS       │            │            ║║AGRICULT    │BUILDNGS    │COMPERPH    ║

║DATA        │            │            ║║AIR         │BUSINESS    │COMPKEYS    ║

║DEVTOOLS    │            │            ║║AIRFORCE    │BUTTONS     │COMPTRS     ║

║HTML        │            │            ║║ALPHABET    │CALDESGN    │COMPUTRS    ║

║INSTALL     │            │            ║║ANIMALS     │CALENDR     │COMUNCAT    ║

║JOBS        │            │            ║║ANIMLDOM    │CARS        │CONGOODS    ║

║LOG         │            │            ║║ARMY        │CARTOON1    │CONSTRUC    ║

║REPLDATA    │            │            ║║ARROWS      │CARTOON2    │CONTAINR    ║

║sqlsun   dll│            │            ║║ARTS&ENT    │CARTOONS    │COOKING     ║

║sqlsunin ini│            │            ║║AUDIO       │CASLALPH    │CRIME       ║

║uninst   isu│            │            ║║AUTO        │CATS        │CROSSES     ║

║            │            │            ║║AWARDS      │CHILDREN    │DESIGNS     ║

║            │            │            ║║BEVERAGE    │CHRISTIA    │DINOSAUR    ║

║            │            │            ║║BIRDS       │CHRSTPIC    │DOGS        ║

║            │            │            ║║BIRDS2      │CLOCKS      │EDUCATE     ║

╟────────────┴────────────┴────────────╢╟────────────┴────────────┴────────────╢

║sqlsun.dll      106496 13.11.98   1:23║║..           ►КАТАЛОГ◄ 18.05.00  21:11║

╚══════════════════════════════════════╝╚══════════════════════════════════════╝

C:\MSSQL7>

1Помощь 2Вызов  3Чтение 4Правка 5Копия  6Имя    7Новый  8Удал-е 9Меню   10Выход

Використовувати дві панелі дуже зручно при порівнянні змісту двох каталогів, а також при копіюванні або переміщенні файлів. Більшість операцій за умовчанням в ролі джерела використовують активну панель, а в ролі цільового пункту призначення — допоміжну панель. Панелі можуть прибиратися (як штори) або встановлюватися знову за допомогою комбінацій клавіш Ctrl-F1 (ліва панель), Ctrl-F2 (права), Ctrl-O (обидві відразу), які працюють як перемикачі. В усіх керуючих комбінаціях використовуються тільки латинські літери. Забравши панелі, ви раптом виявите, що під ними оболонка зберігає системний екран, що вам знайомий по роботі в режимі командного рядка. На ньому з'являються різноманітні повідомлення, які виводить ДОС та інші програми на консоль.

Практично усі команди всередині оболонки виконуються за допомогою функціональних клавіш або керуючих комбінацій (клавіша Ctrl, Alt, Shift у сполученні з функціональними, символьними або курсорними клавішами), або за допомогою команд меню. Миттєво можна перейти в режим командного рядка, що звичайно розташовується відразу під файловими панелями. Для цього просто необхідно почати набирати команду символами на клавіатурі (Esc — скидання команди). Піднявши шторки панелей (Ctrl-O), ви практично будете працювати в режимі командного рядка, але в будь-який момент матимете під руками потужний набір засобів командної оболонки. У самому нижньому рядку оболонки звичайно зображуються значення перших десятьох функціональних клавіш F1…F10 (спеціально для забудькуватих користувачів!).

Вигляд оболонки можна злегка змінити за допомогою меню «Настройки» («Параметры»). Так, можна відключити нижній рядок із підказуваннями функціональних клавіш і командного рядка, збільшивши за їхній рахунок висоту файлових панелей, змінити повноту виведеної інформації на файлові панелі, включити або відключити виведення маси допоміжної інформації і багато чого іншого. Якщо ви працюєте на своєму особистому комп'ютері, то можна витратити іноді півдня на настроювання командера за власним смаком. Якщо ж ви працюєте на комп'ютері загального користування, то краще не торкайте цих настроювань. Будь-які відхилення від «стандартного» вигляду будуть дратувати або вас, або інших користувачів.

От і все. Тепер достатньо вивчити декілька основних операцій і можна комфортно працювати в операційній системі. Для вивчення краще скористатися довідковою системою оболонки, що викликається клавішею F1, або скористатися методом спроб і помилок, покладаючись на власну інтуїцію. Навряд чи ви будете постійно використовувати всі команди оболонки, оскільки, по-перше, їх багато і просто тяжко усе запам'ятати, а, по-друге, багато команд використовуються досить рідко, і ви постійно будете їх забувати. Тому пропонується такий підхід. Можна засвоїти основні і часто вживані команди, переглянути команди меню і довідкову інформацію для ознайомлення з можливостями командної оболонки і починати працювати. При необхідності скористатися деякою рідкісною для вас функцією можна завжди знайти її в складі команд меню або за допомогою довідки уточнити засоби її виконання. Головне, щоб ви просто пригадали, що ця можливість десь є у вашій командній оболонці.

Отже, ключові команди виконуються за допомогою функціональних клавіш F1…F10, а підказка завжди у вас перед очима у самому нижньому рядку.

F1 — викликання вікна з довідковою інформацією. Текст довідки прокручується за допомогою стрілок вгору-вниз, вхід в обраний за допомогою курсору пункт змісту по клавіші Enter. Переходи по розділах довідки — або за допомогою вибору курсором потрібної команди в нижній частині вікна довідки і виконання її клавішею Enter (Norton Commander), або за допомогою вибору висвітлених понять (гіперпосилань) курсором, переходу до описів цих понять за допомогою клавіші Enter і повернення за допомогою клавіші Backspace (Far). Вікно довідки закривається клавішею Esc.

F2 — виклик меню користувача. Звичайно набори команд, що використовуються, об'єднуються у вигляді пакетних bat-файлів. У командерах це робиться аналогічно, але більш елегантно і зручно. Під командою меню користувача можна також «сховати» цілий набір команд, що часто використовуються, а меню — завжди під руками. Як формувати меню користувача — подивіться в довідці.

F3 — перегляд вмісту обраного файла (на якому знаходиться курсор в активній панелі) у текстовому вигляді. Аналогія команди type, але перегляд ведеться у вікні, де текст можна прокручувати вгору-вниз і ліворуч-праворуч клавішами курсору. Команда зручна ще й тим, що до цієї клавіші можна підключити й інші програми-переглядачі, що реагують на відповідні розширення файлів. Так, підключивши програму dbview.exe до файлів з розширенням dbf, можна, якщо виділити будь-який dbf-файл (таблиця бази даних), переглянути його зміст у вигляді таблиці. І при цьому не потрібно мати громіздкого пакета системи управління базами даних, щоб просто переглянути зміст деяких файлів.

F4 — завантаження виділеного текстового файла в простий текстовий редактор для коригування. Звичайно можливості такого редактора невеликі (розмір тексту може не перевищувати 50-60 Кбайт), але він дуже зручний для створення і коригування невеличких текстів і пакетних bat-файлів. Створити в поточному каталозі (який відображає активна панель) новий текстовий файл можна, натиснувши комбінацію Shift-F4 і ввівши ім'я нового файла з потрібним розширенням.

F5 — копіювання відмічених файлів і каталогів з активної панелі в допоміжну панель. Відміченим рахується файл, на якому знаходиться панельний курсор, або група файлів, відмічених за допомогою клавіші Insert (Ins) або шаблонів по клавішах [*], [+] і [-] на додатковій цифровій клавіатурі. Опрацюйте це на дозвіллі, оскільки шаблони швидко дозволяють виділити усі файли активної панелі або, наприклад, тільки exe-файли, або, навпаки, зняти встановлені позначки.

F6 — використовується для переміщення файлів і перейменування. Якщо панелей дві, то відбувається переміщення виділених файлів і каталогів з активної в допоміжну панель (переміщення — копіювання з наступним видаленням джерела). Якщо ж допоміжна панель відключена (Ctrl-F1 або Ctrl-F2), то буде запропоновано ввести нове ім'я виділеного файла або каталога для перейменування.

F7 — створення нового каталога всередині поточного.

F8 — видалення виділених файлів і каталогів активної панелі. За допомогою цієї команди можна видалити не тільки звичайні, але і приховані, системні і файли з атрибутом «тільки для читання», проте командер зажадає додаткового підтвердження. Будьте особливо уважні при видаленні каталогів, оскільки можете безповоротно загубити важливу інформацію.

F9 — дає доступ до операційного меню командера, розташованого у верхньому рядку вікна. Подальше переміщення по пунктах меню, вхід у підменю і виконання команд меню — за допомогою курсорних клавіш і клавіші Enter. Вихід із меню — по клавіші Esc.

F10 — вихід із командера. При цьому оболонка закінчує свою роботу, і ви опиняєтеся в операційній системі. Команда зручна тоді, коли ви користуєтеся оболонкою не постійно, а лише для спеціальних операцій з файлами або каталогами (наприклад, у системі Windows).

Вибрати дисковий пристрій для файлової панелі можна за допомогою комбінації клавіш Alt-F1 (для лівої) і Alt-F2 (для правої). Увійти в обраний підкаталог можна за допомогою клавіші Enter. Вихід (повернення) у батьківський каталог позначається на файлових панелях за допомогою двох підряд розташованих крапок (..).

Щоб запустити файл, що виконується, потрібно навести панельний курсор на цей файл і натиснути клавішу Enter. Після завершення роботи з програмою операційна система знову поверне вас у командну оболонку.

Додаткові можливості оболонки можна вивчати поступово в процесі засвоєння основних команд.

Хід роботи

1. Коротко законспектуйте дію основних функціональних клавіш і комбінацій клавіш для роботи в наданій програмі-оболонці.

2. За вказівкою викладача виконайте один із варіантів завдання лабораторної роботи 1.5 за допомогою командної оболонки.

3. За допомогою операційного меню оболонки (F9) перевірте можливість установки для кожної панелі різноманітних форматів відображення інформації і можливості сортування файлових списків по різноманітних параметрах. Зверніть увагу на те, як відображається інформація про файли в кожному з форматів, і з чого вона складається. Результати законспектуйте в робочий зошит.

4. Відповіді на контрольні питання також запишіть у робочий зошит.

5. Запишіть у зошит висновки про зроблену роботу.

6. Надайте викладачу результати зробленої роботи. На вибір викладача продемонструйте свої уміння по виконанню визначених операцій за допомогою командної оболонки.

Контрольні питання

1. Для чого призначена програма-оболонка операційної системи?

2. Чому працювати в командній оболонці зручніше, ніж у командному рядку операційної системи?

3. Чи можна виконати копіювання файлів, якщо обидві панелі відображають той же каталог? Чому?

4. Як повернутися в командну оболонку, якщо ви помилково завершили роботу клавішею F10?

5. Як можна переглянути і змінити атрибути певного файла? Скористайтеся довідковою інформацією або перегляньте операційне меню.

6. Як відключити або включити можливість бачити на панелі деяку групу файлів (фільтр) по деякому атрибуту як критерію? По розширенню?

7. Як працює командер, якщо одну з панелей включити в режим відображення дерева каталогів?

8. Як переглянути інформацію про поточний дисковий пристрій (ємність диска, обсяг вільного простору, мітка тому)? Як забрати цю інформацію?

Вказівки для викладача

Для надання студентам індивідуального варіанта завдання з лабораторної роботи 1.5 можна скористатися наданими варіантами, запропонувавши попередньо за допомогою командера видалити колишню структуру (проконтролюйте). Можна запропонувати реалізувати іншу структуру з іншого варіанта (рекомендується). Тоді в робочому каталозі студента будуть обидві реалізовані структури.

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

Зверніть увагу, що відповіді на контрольні питання 5-8 студенти повинні знайти самостійно, використовуючи меню або довідкову інформацію командної оболонки.

Лабораторна робота 1.7 Дискові утиліти

Мета роботи: Ознайомитися з роботою основних дискових утиліт MS-DOS для підтримки структури магнітних дисків у справному стані або відновлення інформації.

Засоби: Обладнання стандартної робочої станції, матеріали даної роботи, література, утиліти MS-DOS scandisk.exe, defrag.exe, undelete.exe, дві чисті 3,5-дюймові дискети.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 2.3, с. 48-53.

2. Нортон П. Справочное руководство по MS-DOS: Пер. с англ. – М.: «Радио и связь», 1992, 336 с.

Теоретичні відомості

Для відновлення інформації і її структури у випадках збоїв або невірних дій користувача використовуються здебільшого утиліти UNDELETE і SCANDISK. Ви вивчіть і зможете застосовувати дані утиліти в кожному конкретному випадку. Проте, якщо на диску є цілий комплекс несправностей, то якість відновлення буде залежати від порядку застосування дискових утиліт. Цей порядок ви повинні будете визначити експериментально. Спочатку познайомимося з призначенням і структурою самих утиліт.

Утиліта SCANDISK (файл scandisk.exe) призначена для контролю цілісності і відновлення у випадках ушкодження таблиць розміщення файлів (File allocation table – FAT), структури каталогів (Directory structure), файлової системи (File system), а також фізичної поверхні дисків (Surface). Докладну довідку про роботу з будь-якою утилітою (в тому числі і SCANDISK) можна одержати, викликавши довідкову систему з ім'ям утиліти, якою цікавитесь, як параметра, наприклад:

C:\>help scandisk

Приклади запуску утиліти SCANDISK:

C:\>scandisk         - сканувати структуру поточного диска, тобто C;

C:\>scandisk D:      - сканувати структуру диска D;

C:\>scandisk /ALL    - сканувати структуру всіх локальних дисків;

C:\>scandisk /?      - одержати підказку по параметрах запуску утиліти.

Після запуску SCANDISK перевіряє для зазначеного диска сектор, що містить тип і основні параметри диска (Media descriptor). Якщо інформацію в цьому секторі розпізнати неможливо, то диск вважається цілком зіпсованим і подальше його відновлення можливе тільки за допомогою спеціальних утиліт (наприклад, diskedit.exe або unformat.exe). Для цього потрібна дуже висока кваліфікація користувача. Якщо ж початковий етап перевірки пройшов успішно, то на екрані будуть відображатися етапи перевірки інших складових частин структури диска:

ScanDisk is now checking the following areas of drive A:

(ScanDisk перевіряє зараз такі області пристрою A:)

√ Media descriptor

√ File allocation table

√ Directory structure

√ File system

  Surface scan

Внизу екрана відображаються керуючі кнопки «Pause» (Пауза), «More Info» (Додаткова інформація) і «Exit» (Вихід). Переміщення по кнопках — за допомогою курсорних клавіш ліворуч-праворуч, натискання — клавішею Enter.

Оскільки перевірка фізичної поверхні диска є тривалою процедурою (для жорстких дисків часто проводити не слід), то після перевірки файлової системи на екран видається таке повідомлення:

ScanDisk has finished testing the file structure of drive A.

If you want, ScanDisk can also perform a surface scan on this drive. During a surface scan, ScanDisk checks the physical surface of the disk and identifies any areas that may be failing. In most cases, ScanDisk can recover the data from such areas.

A surface scan on drive A will take about 5 minutes. You can stop the scan at any time by choosing Exit.

Do you want to perform a surface scan now?

ScanDisk закінчив тестування файлової структури пристрою A.

Якщо ви бажаєте, ScanDisk зможе також виконати сканування поверхні на цьому пристрої. У процесі сканування поверхні ScanDisk перевіряє наявність помилок, що містяться в будь-яких областях поверхні диска. У більшості випадків ScanDisk може відновити дані з таких областей.

Сканування поверхні пристрою A займе біля 5 хвилин. Ви зможете зупинити сканування в будь-який момент, обравши «Exit» (Вихід).

Ви бажаєте провести сканування поверхні зараз?

Обравши кнопку Yes (Так), ви запускаєте тест поверхні, No (Ні) — завершуєте роботу утиліти ScanDisk.

Тест поверхні для жорстких дисків варто проводити один раз у 1-2 місяця. Для флопі-дисків даний тест є засобом виявлення фізичних дефектів. При запуску тесту на екрані відображається загальна схема розподілу інформації на диску (ліворуч вгорі), загальна інформація про пристрій (праворуч вгорі), що містить повну кількість кластерів, лічильник кількості перевірених кластерів (examined), кількість знайдених дефектних кластерів (found bad). Праворуч внизу відображається легенда (умовні позначення), де зазначена кількість кластерів в одному блоці (блок — один «кубик» на схемі). На легенді використовуються такі позначення: unused clusters — невикористані кластери, some used clusters — деякі кластери використані (у блоці), used clusters — використані кластери, some bad clusters — деякі кластери дефектні (у блоці). Якщо тест виявляє дефектний кластер (здебільшого знижений рівень намагніченості), то ScanDisk намагається (за необхідністю багаторазово) прочитати інформацію в такому кластері, перезаписати її і знову прочитати, контролюючи рівень записаного сигналу. Якщо рівень відновлюється, то тест продовжується далі, у противному випадку в FAT диска на такий кластер ставиться спеціальна позначка, що говорить про його дефектність (символ B на схемі). У майбутньому при записі або читанні інформації дефектні кластери не використовуються. Всю інформацію, що раніше знаходилася в дефектному кластері, ScanDisk намагається прочитати (як доведеться) і перезаписати її на нове місце.

При виявленні помилок у файловій системі або структурі диска ScanDisk видає відповідне повідомлення щодо знайденої проблеми. Наприклад, при виникненні перехресних посилань повідомлення починається словами:

One or more files on drive A are stored incorrectly, and are overwriting each other's data. Some of these files probably contain invalid data. To find out which files are involved, choose More Info.

Один або більше файлів на пристрої A збережені некоректно і перекривають дані один одного. Деякі з цих файлів, мабуть, містять невірні дані. Щоб визначити файли, які залучені в дану помилку, виберіть «More Info» (Додаткова інформація).

А повідомлення про загублені кластери починається зі слів:

ScanDisk found 103,424 bytes of data on drive A that might be one or more lost files of directories, but which is probably just taking up space.

ScanDisk знайшов (наприклад) 103424 байта даних на пристрої A, що можуть належати одному або декільком загубленим файлам або каталогам, проте, мабуть, просто займають місце.

Під повідомленням про помилку розміщені три кнопки, що дозволяють вибрати одну з таких дій: Fix It — зафіксувати її (проблему), тобто виправити помилки, Don't Fix It — не фіксувати проблему, тобто залишити без змін, More Info — додаткова інформація.

При виявленні загублених кластерів ScanDisk пропонує зберегти їх у вигляді файлів типу file0001.chk, file0002.chk, … (Save), видалити (Delete) або не фіксувати помилку (Don't Fix It). Кількість файлів відповідає кількості окремих фрагментів. Якщо ви дійсно загубили деяку інформацію, то, можливо, після перегляду збережених файлів зможете її знайти. Цей варіант рекомендується, оскільки навіть якщо у файлах не виявиться нічого корисного — їх вільно можна буде видалити. Якщо ж загублена інформація вас не цікавить, то можна ліквідувати (видалити) загублені кластери. У цьому випадку вони просто будуть позначені як вільні і зможуть надалі використовуватися іншими файлами.

Не фіксувати проблему може знадобиться тільки тоді, коли ви вирішите усунути її за допомогою інших засобів. Звичайно варто покластися на досвід розроблювачів утиліти і дозволити їй самостійно усунути всі помилки. При цьому використовуються визначені евристичні алгоритми, ефективність котрих сильно залежить від рівня фрагментації диска. Що менша фрагментація диска перед виникненням помилки, то якісніше виконується процес відновлення.

Після завершення роботи ScanDisk видає підсумкові повідомлення, наприклад:

ScanDisk did not find any problem on drive A.

ScanDisk не знайшов ніяких проблем на пристрої A.

Або:

ScanDisk found and fixed the following problems on drive A:

  1 crosslink was corrected.

202 lost clusters were saved as files.

ScanDisk знайшов і усунув такі проблеми на пристрої A:

1 перехресний зв'язок скоригований.

202 загублені кластери збережені у вигляді файлів.

Після цього можна переглянути додаткову інформацію (More Info), звіт роботи утиліти ScanDisk (View Log) і вийти з програми (Exit).

Утиліта UNDELETE (файл undelete.exe) дозволяє відновлювати помилково видалені файли, а також реалізує трьохрівневу політику видалення файлів у системі. Докладну довідку можна одержати з довідкової системи по команді:

C:\>help undelete

Утиліта працює тільки з командного рядка, проте має дуже широкі можливості. Для реалізації першого рівня захисту в пам'ять може бути завантажена резидентна частина утиліти UNDELETE (запуск файла undelete.exe з відповідними параметрами), що організує (якщо він відсутній) спеціальний прихований каталог Sentry, а також контролює всі операції видалення. Будь-який файл при видаленні спочатку переміщується в каталог Sentry. Ємність цього каталогу по умовчанню обмежена 7% обсягу жорсткого диска. Після заповнення каталога Sentry нові файли надходять до нього за тимчасовим принципом витиснення, тобто для звільнення місця остаточно видаляться найдавніші (за часом видалення) файли. Таким чином, реалізується стратегія, відома в сучасних Windows-системах як «видалення в Кошик». Відновляються файли з каталога Sentry за допомогою утиліти UNDELETE, яка запускається за допомогою спеціальних ключів (параметрів). При цьому в межах обсягу зазначеного каталога можна відновити будь-які видалені файли незалежно від рівня фрагментації диска.

Другий рівень передбачає захист файлів, що видаляються, від накладення нової інформації. При цьому в пам'ять також завантажується спеціальний резидентний трасувальник (файл undelete.exe із відповідними параметрами), що контролює всі процеси видалення і запису нової інформації. У цьому випадку нові файли завжди записуються тільки у вільні кластери або в ті кластери, у яких розташовуються найдавніші з видалених файлів. Принаймні, можна відновити усі видалені файли, що займають вільне місце диска, яке залишилося. Відновлення, як і раніше, здійснюється за допомогою утиліти undelete.exe, запущеної з відповідними параметрами.

Третій рівень — стандартний, не потребує завантаження резидентних модулів і додаткового простору. Цей режим роботи найпростіший, але найменш ефективний. Для відновлення видалених файлів просто запускається утиліта undelete.exe із зазначенням каталога, у якому необхідно провести відновлення, наприклад:

A:\>undelete   — відновлювати усі файли поточного каталогу, тобто кореня диска A;

A:\>undelete c:\dos\*.exe     — відновлювати тільки exe-файли в каталозі DOS диска C.

Після запуску UNDELETE аналізує інформацію каталога і FAT диска і видає на екран, наприклад, такі дані:

Directory: A:\

File Specifications: *. *

    Delete Sentry control file not found.

    Deletion-tracking file not found.

    MS-DOS directory contains   10 deleted files.

    Of those,    4 files may be recovered.

Using the MS-DOS directory method.

Каталог: A:\

Файлова специфікація: *.*

Керуючий файл Sentry не знайдений.

Керуючий файл трасувальника не знайдений.

MS-DOS каталог містить 10 видалених файлів.

З них 4 файли можуть бути відновлені.

Використовується метод MS-DOS каталога.

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

Як відомо, перша літера в іменах видалених файлів заміняється спеціальним кодом 229 (шістнадцятирічне E5). Тому у виведеному рядку замість першого символу імені файла ставиться знак питання (?), наприклад:

?ORE     COM    2545    5-31-94    6:22a  .... Undelete (Y/N)?

Тут відображене ім'я файла (так виглядає ім'я «more»), розширення, розмір файла в байтах, дата створення файла (тут у форматі «Місяць-День-Рік»), час створення файла (часто номер версії) і питання: Відновити (Так/Ні)? Далі необхідно натиснути відповідно клавішу із символом «Y» (Yes – Так) або «N» (No – Ні). Якщо ви побажаєте відновити файл, то з'явиться додатковий запит (Please type the first character for ?ORE.COM) на введення першого символу імені файла, оскільки для стандартного рівня захисту ця інформація ніде не зберігається. Після натискання на клавішу з потрібним символом файл відновлюється як нефрагментована ділянка і з'являється повідомлення «File successfully undeleted» (Файл успішно відновлений). Якщо ж файл фрагментований, то розмір першого фрагмента буде менше загального розміру файла, і утиліта відмовиться його відновлювати, видавши повідомлення «Could not successfully undelete the file» (Неможливо успішно відновити файл). Для ручного або часткового відновлення можна скористатися іншими утилітами, наприклад, diskedit.exe або unerase.exe із пакета Нортон утиліт (Norton Utilities).

Якщо ж на кластерах видаленого файла вже записані інші файли, то UNDELETE просто виводить про такий файл, наприклад chkdsk.exe, таке повідомлення:

   ** ?HKDSK   EXE    12241  5-31-94  6:22a ... .

Starting cluster is unavailable. This file cannot be recovered

with the UNDELETE command.  Press any key to continue.

Початковий кластер недоступний. Цей файл неможливо відновити командою UNDELETE. Натисніть будь-яку клавішу для продовження.

Таким чином, для роботи в системі MS-DOS на жорсткі диски рекомендується встановлювати захист від видалення першого рівня (у крайньому випадку — другого). У цих режимах цілком зберігається як інформація у файлах, так і про імена файлів, що були видалені і ще не перезаписані іншою інформацією. Причому, перезапис відбувається тільки в тому випадку, коли немає іншого виходу. Стандартний режим роботи утиліти UNDELETE можна використовувати як запасний варіант, а також для флопі-дисків. Практика показує, що в стандартному режимі відновити можна в основному тільки ті файли, що були нефрагментовані і видалені безпосередньо перед відновленням (іншої інформації на цей диск поки що не записувалося).

Утиліта DEFRAG (файл defrag.exe) призначена для дефрагментації файлів і вільного простору. В основному необхідно стежити за рівнем фрагментації файлів, який не повинен перевищувати 5-10%. Фрагментація вільного простору може сприяти тільки тому, що нові файли, які записуються на диск, розподіляться по різних фрагментах, тобто відразу виявляться фрагментованими. Дефрагментація дисків проводиться для збільшення швидкості роботи з файлами, а також для підвищення можливості відновлення інформації у випадках збоїв або помилкового видалення. Тому головним чином ця утиліта використовується для обслуговування жорстких дисків. Як і для всіх утиліт MS-DOS, довідку можна одержати по команді:

C:\>help defrag

Відразу після запуску утиліта пропонує вибрати дисковий пристрій для дефрагментації. Для цього необхідно у вікні, що з'явилося (Select the drive you wish to optimize – Виберіть пристрій для оптимізації), курсорними клавішами вгору-вниз вибрати в списку потрібний диск і натиснути клавішу Enter (Esc – скасування). Програма просканує зазначений диск і видасть власні рекомендації, наприклад:

Recommendation

99% of drive A: is not fragmented.

Recommended optimization method:

No optimization necessary

(або: Full optimization

або: Unfragment Files Only)

Рекомендація

99% пристрою A: не фрагментовано.

Метод оптимізації, що рекомендується:

Оптимізація не потрібна

(або: Повна оптимізація

або: Тільки дефрагментація файлів)

Якщо оптимізація не потрібна, то, натиснувши кнопку ОК, можна вийти в меню програми і продовжити роботу або вийти з програми, обравши в меню Optimize команду eXit (або комбінація клавіш Alt-X). Велика літера, яка виділена в командах меню, підказує, що команду можна виконати комбінацією Alt-[виділена літера меню]. За допомогою меню Optimize (Оптимізація) можна виконати такі команди: Begin optimization (Почати оптимізацію), Drive…( Вибрати інший пристрій), Optimization Method…( Вибрати метод оптимізації), File sort…( Встановити порядок сортування файлів), Map Legend…( Перегляд детальної карти легенди), About Defrag…( Інформація про утиліту Defrag), eXit (Вихід).

Утиліта пропонує тільки два методи оптимізації: «Повна оптимізація» (дефрагментуються і файли, і вільний простір) і «Тільки дефрагментація файлів» (частіше цілком достатньо і виконується швидше). Пам'ятайте, що при видаленні файлів на цілком оптимізованому пристрої вільний простір, як правило, відразу ж фрагментується. Сортування файлів при оптимізації вибирається тоді, коли у вас є стійкі групи файлів, які вам зручніше переглядати саме в обраному вами порядку. Можливі значення критерію сортування: Unsorted (Без сортування), Name (По імені), Extension (По розширенню), Date & Time (По даті і часу), Size (По розміру). Можливі значення порядку сортування: Ascending (По зростанню), Descending (По убуванню).

Якщо запропонована рекомендація вас не влаштовує, то можна вийти в меню для конфігурації (встановлення власних параметрів) оптимізації (кнопка Configure), а потім виконати команду запуску дефрагментації (терміни «оптимізація» і «дефрагментація» використовуються тут як синоніми). Проте, для більшості користувачів краще виконувати рекомендації утиліти і запропоновані дії (кнопка Optimize). При цьому контроль над дефрагментацією перетворюється просто в запуск утиліти і підтвердження результатів її аналізу.

Зверніть увагу, що в рекомендації вказується відсоток не фрагментованого простору. Тому критичним буде рівень 95-90% і нижче.

При виконанні дефрагментації в центральній частині екрана відображається схема пристрою аналогічно утиліті ScanDisk при виконанні тесту поверхні. Ліворуч внизу відображується процентна смуга оптимізації і час, що минув від початку процесу. Праворуч внизу розміщується легенда, на якій використовуються такі позначення: Used (використаний блок), Unused (невикористаний), Reading (блок, який у поточний момент читається програмою), Writing (блок, який у поточний момент записується програмою), Bad («поганий» або дефектний блок), Unmovable (блок, що не переміщується; звичайно утиліта не може перемістити блоки файлів, що мають атрибути «системний» і «тільки для читання» ).

Після завершення дефрагментації утиліта DEFRAG повідомляє результати і пропонує вибрати одну з наступних дій: Another Drive (Вибрати інший пристрій), Configure (Конфігурувати — встановити інші параметри оптимізації), Exit DEFRAG (Вихід із DEFRAG).

Дефрагментація диска може бути проведена тільки після усунення всіх помилок у структурі диска за допомогою утиліти ScanDisk (DEFRAG просто відмовляється працювати за наявністю помилок у структурі диска). Відновлення видалених файлів також необхідно проводити до дефрагментації, оскільки при оптимізації, як правило, відбувається переміщення інформації існуючих файлів на вільне місце так, щоб із декількох фрагментів утворилася одна суцільна ділянка. Інформація видалених файлів, що знаходилися на вільних ділянках, при цьому звичайно знищується, а каталог очищується від облікових записів видалених файлів.

Хід роботи

Для виконання даної роботи необхідно мати дві власні чисті 3,5-дюймові дискети. Для перевірки роботи утиліт спеціальним чином підготовлений макет «пошкодженої» дискети, що містить такі дефекти, як «загублені кластери» і «перехресні посилання». Крім цього некоректно було видалено декілька файлів, які необхідно спробувати відновити. На обидві дискети переноситься образ того самого підготовленого макета. Студенти повинні спробувати двома різними засобами провести ремонтно-відбудовні роботи з метою визначення найбільш ефективного засобу.

Нижче наведений повний (контрольний) список файлів, що знаходилися на робочій дискеті до появи пошкоджень (зазначені імена і розширення, розміри в байтах і стислий опис кожного файла):

io.sys        40774 Прихований системний файл

msdos.sys     38138 Прихований системний файл

command.com   54869 Файл командного процесора, що виконується

winzip.txt     5461 Текст англійською мовою, укладений у спец. рамку

defrag.exe    79065 Утиліта DEFRAG

edit.com        413 Файл текстового редактора, що запускається

help.com        413 Файл довідкової системи MS-DOS, що запускається

help.hlp     301961 Містить упаковану інформацію довідкової системи

more.com       2545 Утиліта, запускається тільки в складі інших команд

qbasic.exe   194309 Файл інтерпретатора QBASIC, що запускається

qbasic.hlp   130881 Довідковий файл QBASIC

scandisk.exe 124262 Утиліта SCANDISK

scandisk.ini   6920 Текстовий файл, містить опис конфігурації

undelete.exe  26416 Утиліта UNDELETE

diskedit.exe 131223 Утиліта DISKEDIT із пакета Нортон утиліт

nlib200.rtl  200650 Містить набір загальних функцій пакета Нортон утиліт

objects.htm  104960 Текстовий файл Інтернет-оглядача (фрагментований)

Усього 17 файлів, із них 2 файла сховані, системні.

1. Законспектуйте всі основні повідомлення, команди і параметри утиліт, які вам знадобляться в практичній роботі.

2. Відповіді на контрольні питання запишіть у робочий зошит.

3. Передайте викладачу дискети для переносу на них образу досліджуваної «пошкодженої» дискети.

4. Перегляньте зміст дискет. Визначте їхню повну місткість. Порівняйте поточний зміст із контрольним списком файлів. На першій дискеті починайте відбудовні операції в порядку: 1) Scandisk, 2) Undelete. На другій — у зворотному порядку. Ведіть протокол роботи, послідовно записуючи стан інформації на дисках до початку будь-яких операцій, самі операції і стан інформації після їхнього завершення. При виникненні пошкоджень «перехресні посилання» визначте файли (кнопка More Info перед фіксацією помилки або View Log — після), що беруть участь у перехресних зв'язках. Пам'ятаєте, що тільки один із таких файлів може бути нормально відновлений самою утилітою. При виявленні загублених кластерів обов'язково збережіть їх у вигляді файлів, які потім переглянете і визначите, до якого з файлів відноситься інформація, що знаходиться в них. Рішення приймайте лише щодо текстової інформації. Файли з незрозумілими кодами краще видалити. Перевірте усі файли, що піддалися відновленню. Текстові файли перегляньте і відредагуйте (за необхідністю), файли, що виконуються, перевірте на працездатність за допомогою звичайного запуску. Для контролю скористайтеся наведеним у даній роботі контрольним списком файлів на досліджуваній дискеті. При виявленні фрагментів тексту, що належать одному файлу, але знаходяться у різних файлах, за допомогою текстового редактора скомпонуйте вихідний файл інформації.

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

6. Визначте засіб і дискету, яка відновлена більш ефективно. Надалі вважайте цю дискету робочою.

7. Виконайте дефрагментацію відновленої робочої дискети. Запишіть до протоколу рівень фрагментації до і після оптимізації, а також запропонований утилітою метод. Перевірте роботу утиліти UNDELETE після дефрагментації.

8. Перевірте, чи можна завантажити з відновленої дискети операційну систему MS-DOS?

9. Запишіть висновки по зробленій роботі. Що вдалося відновити, а що ні? Який, на вашу думку, кращий порядок застосування утиліт для відновлення інформації?

10. Надайте викладачу результати своєї роботи і відновлену робочу дискету.

Примітка: 1) «Склеїти» два текстових файли в один можна за допомогою команди copy, наприклад: copy file1+file2 file3. При цьому вміст file2 приєднується до кінця file1, результат записується в file3. Аналогічно можна склеїти декілька файлів в один: copy file1+file2+…+fileN file (см. довідку по команді copy /?).

2) По умовчанню команда dir не показує сховані системні файли. Щоб побачити їх, необхідно або в командері включити відповідний фільтр, або ввести команду dir із параметром «/A:HS» (скористайтеся довідкою по команді dir /?).

Контрольні питання

1. Назвіть види пошкоджень структури магнітних дисків для системи MS-DOS.

2. Які утиліти MS-DOS використовуються для відновлення інформації? Зазначте утиліти для усунення кожної конкретної помилки.

3. Що таке фрагментація і як вона впливає на роботу з файлами або відновлення інформації? Яка утиліта використовується для дефрагментації?

4. Що необхідно зробити, якщо на дискеті з'явилися фізичні дефекти, через які деякі файли перестали читатися?

5. Чотири файли беруть участь у перехресному зв'язку. Скільки з них можна відновити?

6. Як відновити текстовий файл, якщо його інформація потрапила в загублені кластери?

7. Який рівень захисту від видалення файлів найкращий для жорстких дисків і чому?

Вказівки для викладача

Образ досліджуваної дискети може бути підготовлений за допомогою програми diskdupe.exe (працює під MS-DOS) або winimage.exe (працює майже під усіма Windows). На підготування однієї дискети витрачається приблизно 1,5-2 хвилини.

Рекомендується організувати попередній збір дискет для підготування практичного матеріалу перед початком роботи.

У крайньому випадку, припускається наявність у студента однієї дискети (повторна копія виконується в процесі роботи). Проте при цьому можуть виникнути певні незручності, зокрема, пов'язані з нестачею часу і неможливістю повернутися до попереднього стану після відновлення першим способом.

Студенти в змозі виконати роботу так, що невідновленими залишаться тільки два файли: diskedit.exe (бере участь у перехресних зв'язках) і objects.htm (фрагментований і видалений). Проконтролюйте усі відновлені файли.

При організації роботи зробіть акцент на самостійність студентів. Для цього максимальні вимоги пред'являйте до їх підготовки.

Лабораторна робота 1.8 Архіватори й антивіруси

Мета роботи: Ознайомитися з роботою антивірусних програм, дослідити коефіцієнти стиснення при архівації різноманітних типів інформації.

Засоби: Обладнання стандартної робочої станції, матеріали даної роботи, література, антивірусні програми AIDSTEST і Doctor WEB, архіватори ZIP, ARJ і RAR.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 2.4-2.5, с. 53-59. Повторить с. 30-34.

2. Нортон П. Справочное руководство по MS-DOS: Пер. с англ. – М.: «Радио и связь», 1992, 336 с.

Теоретичні відомості

Прислів'я говорить, що є люди, котрим завжди погано, коли іншим добре. От і працюють деякі програмісти над створенням програм-вірусів, здатних знищити працю інших людей. Іронія долі полягає в тому, що для створення вірусної програми потрібна дуже висока кваліфікація. Тому витончені алгоритми маскування і знищення чужої інформації придумують люди достатньо талановиті, але не обтяжені мораллю. На противагу їм інші люди (не менш талановиті) придумують програми, здатні виявити в пам'яті комп'ютера несанкціоновані програми або несанкціоновані програмні модулі, які пристиковані до інших файлів, і коректно їх знищити. Такі програми називають антивірусами.

Нині більшість комп'ютерних систем пов'язані одна з одною в мережах, що функціонують цілодобово. Тому багато вірусів можуть існувати в такому середовищі майже як живі істоти, які мігрують від одних систем до інших, зникаючи на одних комп'ютерах і з'являючись на інших. Оскільки виготовлювачі вірусів завжди на крок випереджають антивірусників, новий вірус може накоїти багато лиха, поки для нього буде придумана протиотрута. Багато вірусів уражають комп'ютерні системи, не дивлячись на те, що існуючі антивірусні засоби в змозі чудово з ними впоратись. Відбувається це частіше через те, що користувачі ігнорують профілактичні заходи, думаючи, що прикрості обминуть їх. Проте лихо завжди з’являється зненацька, і наслідки бувають часом дуже руйнівними. Головне — навчитися регулярно користуватися антивірусними засобами, причому в основному з профілактичними цілями, а не для лікування. Пам'ятаєте, що деякі віруси можуть дуже сильно ушкодити вашу інформацію раніше, ніж ви встигнете їх нейтралізувати. При цьому відновити інформацію звичайно не вдасться ніякими утилітами.

Для запобігання попадання вірусів у вашу систему необхідно обов'язково перевіряти будь-яку інформацію, яка надходить до вас, за допомогою антивірусних програм. Більшість вірусів використовує дискети як засіб розмноження. Їхня головна ціль — інформація на жорстких дисках. Для розмноження віруси «чіпляються» до будь-яких доступних файлів або завантажувального сектора на будь-яких носіях, проте знищення або псування інформації здійснюють в основному на жорстких дисках.

У багатьох країнах створення вірусних програм переслідується законом. Не зважаючи на це, потік нових вірусів не припиняється і вливається часом у такі сфери діяльності, що раніше ніколи не піддавалися вірусним атакам. Тому треба бути завжди напоготові.

Численні виробники програмного забезпечення створюють і удосконалюють антивірусні засоби, організують в Інтернеті «гарячі лінії» із користувачами для виявлення і нейтралізації нових або модернізованих вірусів. Ми ознайомимося лише з двома простими антивірусними програмами, що можна застосовувати в системі MS-DOS і деяких системах Windows.

Антивірусна програма AIDSTEST (один файл aidstest.exe), розроблена в лабораторії Дмитра Лозинського (м. Москва), є одним із найстаріших і популярних антивірусів, що використовуються в системі MS-DOS. Номер версії даної програми відповідає кількості вірусів, що вона розпізнає. Основний принцип роботи — виявлення уражених джерел за допомогою сигнатур відомих вірусів. Програма має дуже простий інтерфейс і працює з командного рядка. Для одержання довідки по роботі з програмою необхідно просто запустити файл aidstest.exe. Для виконання перевірки програмі необхідно зазначити шлях до джерела сканування, наприклад:

C:\>aidstest a:   — перевірити диск A із усіма його підкаталогами;

C:\>aidstest c:\dos     — перевірити каталог DOS диска C із усіма вкладеними підкаталогами.

Спочатку антивірус сканує ОЗП комп'ютера на можливу наявність резидентного вірусу, потім перевіряє завантажувальний Boot-сектор зазначеного диска і тільки потім — файли зазначеного джерела. У процесі і по закінченні сканування на екран виводиться звіт про роботу програми. Необхідний режим роботи задається за допомогою численних параметрів при запуску.

Антивірус Doctor WEB розроблений лабораторією Ігоря Данилова (м. Санкт-Петербург) і складається з файла програми drweb.exe і декількох допоміжних файлів, імена яких починаються на «web». Такі файли містять антивірусні бази із сигнатурами й алгоритмами виявлення вірусів. Програма зручна тим, що розширення можливостей по виявленню нових вірусів виконується простим додаванням нового файла антивірусної бази. Унікальні можливості надає вмонтований евристичний аналізатор — спеціальний алгоритм виявлення невідомих вірусів або вірусів, які мутують, що хоча і дещо уповільнює роботу програми, але значно збільшує цінність антивірусу в тих випадках, коли інші засоби виявляються неспроможними. Doctor WEB за ефективністю роботи займає одне з провідних місць у рейтингах світових антивірусних виробників. Після запуску програма надає простий віконний інтерфейс. У вікні відразу ж відображаються результати тестування пам'яті і звіт про підключення додаткових файлів антивірусної бази. За допомогою меню можна визначити необхідні режими роботи і виконати основні дії по опрацюванню джерел інформації. Програма працює в двох основних режимах: «Тестування» (F5) і «Лікування» (Ctrl-F5). Перший режим призначений для швидкого сканування й інформування користувача про зараження джерела і, зокрема, компакт-дисків, що не перезаписуються. Другий режим дозволяє виконати сканування і ліквідацію вірусів при виявленні. Після лікування зараженого джерела рекомендується виконати повторне тестування для контролю. При запуску одного з режимів сканування виводиться діалогове вікно, у якому необхідно ввести шлях до джерела, за допомогою клавіші Tab переміститися на потрібний елемент управління (перемикач або кнопку) і виконати необхідну дію. Так само, як і програма AIDSTEST, Doctor WEB спочатку сканує завантажувальний сектор джерела, а потім файли на зазначеному шляху.

На закінчення хочеться відзначити, що результат роботи вірусів часто здається несправністю комп'ютера. Тому завжди при виникненні неполадок спробуйте спочатку протестувати пам'ять і жорсткі диски на наявність вірусів і лише потім — на справність структури дисків і апаратних модулів.

Для тривалого збереження рідко використовуваної інформації використовується упаковування одного або декількох вихідних файлів в один зжатий (архівний) файл за допомогою спеціальних програм-архіваторів. Для повторного використання упакованої інформації її необхідно розпакувати за допомогою аналогічних програм.

Архіватор ZIP фірми Pkware поданий двома файлами: pkzip.exe (пакувальник) і pkunzip.exe (розпакувальник). Обидві програми мають численні параметри для настроювання режимів роботи, проте легко виконують упаковування і розпакування інформації без додаткових параметрів. Довідкову інформацію щодо будь-якої із програм можна одержати, запустивши відповідний файл без параметрів. Для створення архіву програмі pkzip.exe необхідно зазначити два параметри: ім'я файла утворюваного архіву і шаблон для файлів, що упаковуються, наприклад:

C:\>pkzip a:\docs c:\docs\*.doc     – у корені диска A буде створений архівний файл docs.zip, у який будуть упаковані усі файли з розширенням doc із каталогу DOCS диска C;

C:\temp>pkzip dos c:\dos\*.*  – у поточному каталозі (TEMP диска C) буде створений архів dos.zip, у який будуть упаковані усі файли з каталогу DOS диска C.

Аналогічно працює розпакувальник pkunzip.exe, котрому потрібно зазначити ім'я архіву і шлях для файлів, що розпаковуються, наприклад:

C:\>pkunzip a:\docs c:\temp   – усі файли з архіву docs.zip, розташованого в корені диска A, будуть розпаковані в каталог TEMP диска C;

C:\temp>pkunzip dos c:\dos\*.exe    – у каталог DOS диска C будуть розпаковані всі exe-файли, які будуть вилучені з архіву dos.zip, розташованого в поточному каталозі.

Архіватор ARJ (програміст Robert Jang) поданий одним файлом arj.exe і реалізує функції упаковування і розпакування за допомогою спеціальних параметрів у командному рядку. Коротку довідку по програмі можна одержати, запустивши архіватор без параметрів, докладну довідку — запустивши архіватор із параметром «‑?»:

C:\>arj -?

Основний формат використання архіватора:

arj команда [параметри] архів [шлях для файлів]

Компоненти, зазначені в квадратних дужках — необов'язкові. Для основних режимів роботи можна використовувати дві команди: a — (від add) додати файли в архів, тобто упакувати; e — (від extract) витягти файли з архіву, тобто розпакувати. У іншому робота архіватора ARJ аналогічна роботі архіватора ZIP. Приклади:

C:\>arj a a:\docs c:\docs\*.doc     – у корені диска A буде створений архівний файл docs.arj, у який будуть упаковані усі файли з розширенням doc із каталогу DOCS диска C;

C:\temp>arj e dos c:\dos\*.exe      – у каталог DOS диска C будуть розпаковані всі exe-файли, що будуть витягнуті з архіву dos.arj, розташованого в поточному каталозі;

C:\>arj a d:\work       – у корені диска D буде створений архівний файл work.arj, у який будуть упаковані усі файли поточного каталогу.

Архіватор RAR (програміст Євген Рошаль) поданий одним файлом rar.exe і може працювати в двох режимах: із командного рядка й у режимі оболонки (на зразок Norton Commander). При роботі з командного рядка використовуються такі ж команди і параметри, як для архіватора ARJ, тому даний режим ми розглядати не будемо. Для запуску архіватора в режимі оболонки потрібно запустити програму без параметрів. У результаті перед вами з'явиться оболонка, яка нагадує Norton Commander. На лівій панелі відображується зміст поточного каталогу, на правій — параметри архіватора або архіву. Вибір диска — по комбінації клавіш Alt-D, переходи по каталогах — аналогічно Norton Commander. Усередину архівного файла можна увійти як у звичайний каталог. Для архівації потрібно на файловій панелі клавішею Insert відзначити необхідні файли, натиснути F2 (Add) і ввести ім'я архіву. Для розпакування потрібно увійти всередину архіву, клавішею Insert відзначити необхідні файли і натиснути F4 (Extract) для витягу файлів у поточний каталог або Shift-F4 і зазначити каталог, у який будуть розпаковуватися відмічені файли.

Більшість командних оболонок розуміють заголовну інформацію багатьох популярних форматів архівів. Так, Norton Commander може увійти усередину zip- і arj-архівів як у каталог, а Far — ще й у rar-архів. Проте, для упаковування файлів (звичайно Alt-F5) або розпакування (звичайно Alt-F6) командери повинні мати доступ до файлів програм оригінальних архіваторів. Звичайно проблем не виникає, якщо всі архіватори (pkzip.exe, pkunzip.exe, arj.exe, rar.exe) знаходяться в одному з каталогів, зазначених у системній змінній path (див. лабораторну роботу 1.5).

Хід роботи

1. Законспектуйте в робочий зошит особливості і режими роботи використовуваних антивірусних програм і архіваторів.

2. Запишіть у робочий зошит відповіді на контрольні питання.

3. Перепишіть у свій робочий каталог зазначений викладачем каталог із контрольними файлами.

4. Виконайте тестування контрольних файлів за допомогою антивірусів AIDSTEST і Doctor WEB. Звіти про роботу програм запишіть у робочий зошит.

5. Виконайте аналогічні перевірки на віруси всього жорсткого диска C. Звіти запишіть у робочий зошит.

6. Виконайте архівацію окремо кожного з зазначених викладачем каталогів із визначеним типом інформаційних файлів за допомогою кожного з поданих архіваторів. Архіви розташуйте у своєму робочому каталозі.

7. Виконайте умовний розрахунок коефіцієнтів стиснення для кожного типу інформації і кожного архіватора. Обчислите загальний середній коефіцієнт стиснення для кожного архіватора. Висновки запишіть у робочий зошит.

8. З будь-якого архіву, який містить текстову інформацію, розпакуйте в окремий каталог (який можна створити самостійно) усі файли з розширенням txt.

9. На вибір викладача продемонструйте уміння працювати з визначеною антивірусною програмою або архіватором при тестуванні, упакуванні або розпакуванні необхідної інформації.

10. Надайте викладачу результати своєї роботи.

Контрольні питання

1. Що таке резидентна програма?

2. Що таке комп'ютерний вірус?

3. Який механізм зараження інформаційних сховищ комп'ютерними вірусами?

4. На чому грунтується принцип архівації інформації?

Вказівки для викладача

Для демонстрації роботи антивірусних програм найкраще підготувати набір файлів-документів Microsoft Word, уражених будь-яким макровірусом. Дуже гарний варіант, якщо вдасться дістати деякі системні файли (із розширенням sys), уражені будь-яким відомим вірусом. Дана «колекція» буде достатньо безпечною в плані несанкціонованого поширення вірусів у системі. Бережіться використовувати будь-які файли, що виконуються, які уражені вірусами. Набір файлів для тестування можна розташувати, наприклад, у каталозі FOR_TEST. Перевірте, якщо після лікування файли змінюють свій розмір, то запропонуйте студентам звернути на це увагу і відзначити даний факт у своїх висновках. Категорично забороніть будь-які дії з цими файлами, крім тестування і лікування. Найкраща послідовність дій, якщо спочатку за допомогою DrWeb виконати тестування (віруси виявляються, але не лікуються), потім провести початкове лікування за допомогою AidsTest і на завершення — контрольне лікування знову за допомогою DrWeb. При цьому можна порівняти й оцінити якість роботи обох антивірусів.

Для демонстрації роботи архіваторів найкраще підготувати чотири каталоги, наприклад, TEXTS із текстовою інформацією (txt- і doc-файли), GRAFIKA із графічною інформацією (краще bmp-файли), PROGRAMS з програмами, що виконуються (exe- і com-файли), MISC зі змішаною інформацією. Якщо виникне проблема з визначенням коефіцієнта стиснення, то запропонуєте обчислити його як ділення вихідного сумарного розміру файлів на розмір архіву.


line

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ ПОДІЛЛЯ

А. Ю. Мазарчук

С. А. Франчук

ІНФОРМАТИКА

Лабораторні роботи

Частина 2

Методичний посібник для виконання практичних і лабораторних робіт з курсів «Інформатика» і «Інформатика та комп’ютерна техніка» для спеціальностей 7.050201 «Менеджмент організацій» і 7.050102 «Економічна кібернетика»

Затверджено на засіданні кафедри автоматизованих систем і моделювання в економіці, протокол №10 від 29 червня 2000 р.

Хмельницький

2000

ЗМІСТ

ОСНОВНІ ВИМОГИ ДО ВИКОНАННЯ РОБІТ.. 4

ЧАСТИНА 2. АЛГОРИТМІЗАЦІЯ ТА ПРОГРАМУВАННЯ.. 5

Лабораторна робота 2.1. Лінійні алгоритми. 5

Лабораторна робота 2.2. Розгалуження. 16

Лабораторна робота 2.3. Цикли. 18

Лабораторна робота 2.4. Масиви. 23

Лабораторна робота 2.5. Прості нестандартні типи даних. 33

Лабораторна робота 2.6. Рядки. 39

Лабораторна робота 2.7. Множини і записи. 44

Лабораторна робота 2.8. Процедури і функції 50

Лабораторна робота 2.9. Файли. 56

ОСНОВНІ ВИМОГИ ДО ВИКОНАННЯ РОБІТ

Цикл лабораторних робіт даного посібника розрахований на три семестри з приблизним навантаженням 34-36 годин аудиторних занять на семестр. За наявністю достатнього комп'ютерного фонду окремі роботи за рішенням викладача можуть бути винесені на самостійну роботу.

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

При підготовці до роботи студент повинен записати в робочий зошит номер і назву роботи, мету роботи і список використовуваних засобів. При необхідності далі можуть бути коротко законспектовані основні положення теоретичного огляду. Далі повинен бути записаний план майбутньої роботи, котрий студент самостійно складає на підставі описаного «Ходу роботи». Якщо першим пунктом ходу роботи записано дати відповідь на контрольні питання, то далі в зошиті повинні бути записані відповіді на ці питання. Відповіді повинні бути стислими, але вичерпними. Попереднє виконання деяких практичних елементів викладач може визначити додатково.

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

Оформлені матеріали і файли з результатами роботи надаються викладачу для захисту. Для контролю якості і повноти виконання роботи викладач може скористатися контрольними питаннями і запитати пояснення ходу виконання конкретних елементів роботи.

ЧАСТИНА 2 АЛГОРИТМІЗАЦІЯ ТА ПРОГРАМУВАННЯ

Лабораторна робота 2.1 Лінійні алгоритми

Мета роботи: Ознайомитися зі структурою середовища програмування Turbo Pascal, відпрацювати оператори вводу-виводу і присвоювання на лінійних алгоритмах.

Засоби: Інтегроване середовище програмування Turbo Pascal 7.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 3.1-3.3, с. 61-77.

2. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие. Мн.: Выш. шк.: БФ ГИТМП «Ника», 1991, с. 5-36.

Теоретичні відомості

Інтегроване середовище програмування Turbo Pascal 7.0 фірми Borland — це пакет, що складається з таких основних компонентів: головного програмного модуля, що містить віконну оболонку і систему меню, за допомогою якої викликаються вбудований текстовий редактор, компілятор і відлагоджувальник (turbo.exe), файла довідкової системи (turbo.tph) і файла бібліотечних функцій (turbo.tpl). У процесі роботи в каталозі, що був поточним, при запуску Turbo Pascal автоматично формуються файл конфігурації середовища програмування (turbo.tp) і файл, що зберігає параметри робочого оточення (turbo.dsk), тобто в turbo.tp зберігаються параметри налагоджень компілятора, редактора й відлагоджувальника, а в turbo.dsk — імена усіх робочих файлів, що були завантажені при виході з середовища, а також розміри і розташування усіх вікон. За допомогою цих файлів кожному користувачу надається можливість у своєму власному каталозі організувати середовище програмування, враховуючи свої переваги.

Вихід у будь-який пункт головного меню виконується традиційним засобом: або за допомогою миші, або комбінацією клавіш Alt-[виділена літера пункту меню]. Розглянемо призначення основних пунктів меню й окремих команд.

File — робота з файлами, каталогами і принтером:

New — відкрити нове вікно;

Open — відкрити існуючий файл в окремому вікні;

Save — зберегти зміст поточного вікна;

Save as — зберегти зміст поточного вікна під іншим ім'ям;

Save all — зберегти зміст усіх відкритих вікон;

Change dir — змінити поточний робочий каталог;

Print — виведення на друк вмісту поточного вікна;

Printer setup — налагодження параметрів друку;

DOS shell — тимчасовий вихід в оболонку MS-DOS (для повернення назад необхідно з командного рядка видати команду exit);

Exit — вихід із середовища програмування зі збереженням параметрів оточення у файлі turbo.dsk.

Edit — набір основних операцій текстового редактора:

Undo — скасування попередньої операції редагування;

Redo — повернення до попередньої скасованої операції;

Cut — вирізати поточний виділений фрагмент у буфер;

Copy — копіювати поточний виділений фрагмент у буфер;

Paste — вставити вміст буфера з позиції курсору;

Clear — видалити (очистити) поточний виділений фрагмент без розташування в буфер;

Show clipboard — показати вміст буфера.

Search — пошук текстових фрагментів у вікнах текстового редактора:

Find — визначити фрагмент для пошуку; параметри діалогового вікна (установлюються за допомогою миші або клавіш Tab і Пробіл): Case sensitive — враховувати регістр (великі та малі літери), Whole words only — тільки слова цілком; Regular expression — регулярний вираз (у рядку пошуку використовуються символи шаблона — див. довідку по F1); Forward — шукати вперед; Backward — шукати назад; Global — шукати скрізь; Selected text — шукати тільки у виділеному тексті; From cursor — шукати від курсору; Entire scope — шукати у всьому тексті;

Replace — пошук і заміна; параметри: Text to find — текст для пошуку; New text — новий текст (для заміни); Prompt on replace — запит на заміну; інші параметри аналогічні пункту Find; кнопка OK виконує одну заміну для найближчого знайденого фрагмента, кнопка Change all — для всіх знайдених фрагментів;

Search again — повторити пошук з останніми заданими умовами (еквівалентна комбінація Ctrl-L);

Go to line number — перейти до заданого номера рядка;

Show last compiler error — показати останню помилку компілятора;

Find error — пошук помилок компілятора (коли їх багато);

Find procedure — знайти процедуру (функцію).

Run — запуск і налагодження програм:

Run (Ctrl-F9) — запуск на виконання програми, розташованої в поточному вікні; якщо після останньої зміни тексту програми компіляція не виконувалася, тоді здійснюється попередня компіляція;

Step over (F8) — виконання однієї команди в режимі відлагоджувальника без входу усередину процедур;

Trace into (F7) — виконання однієї команди в режимі відлагоджувальника; якщо при виконанні команди викликається процедура або функція, то виконується вхід усередину підпрограми, де і продовжується покрокове налагодження;

Go to cursor (F4) — виконати програму до позиції курсору, після чого виконання припиняється в режимі відлагоджувальника; далі можна продовжити налагодження по кроках (F7 або F8);

Program reset (Ctrl-F2) — скидання режиму відлагодження (точка налагодження повертається на початок програми);

Parameters — задати параметри програми для запуску; якщо ваша програма компілюється у файл pr.exe, а в рядку параметрів ви введете «file1 file2», тоді запуск програми комбінацією Ctrl-F9 тотожний запуску з командного рядка MS-DOS: «pr file1 file2».

Compile — компіляція програм і модулів:

Compile (Alt-F9) — компіляція тексту поточного вікна (можна використовувати для виявлення синтаксичних помилок);

Make (F9) — компілювати головний файл проекту й інші модифіковані файли;

Build — примусово перекомпілювати всі файли проекту, включаючи й файли модулів;

Destination — (місце призначення) переключається з Disk на Memory, тобто компіляція виконується або в exe-файл поточного каталогу (на диск), або в спеціальний буфер ОЗП (у пам'ять); останній варіант використовується тільки для пробного відпрацьовування програм, при цьому прискорюється робота при частих перекомпіляціях, але витрачається додаткова пам'ять; для створення exe-файла потрібно обов'язково переключитися на Disk;

Primary file — (первинний файл) установлює головний файл проекту для команд Make і Build;

Clear primary file — скидає (очищає) попередню установку;

Information — показує інформацію про стан поточного проекту (кількість відкомпільованих рядків, розміри коду, даних і стека, розмір хіпа, розподіл програми й інтегрованого середовища в оперативній пам'яті).

Debug — встановлення параметрів відлагодження:

Breakpoints — (точки відлагодження) модифікація списку точок відлагодження;

Call stack — показати вікно стека процедур, які програма викликає для досягнення поточної точки;

Register — показати вікно з вмістом регістрів центрального процесора;

Watch — показати вікно спостереження; у цьому вікні відображаються значення усіх установлених вами змінних для спостереження в процесі відлагодження;

Output — відкрити вікно виведення; фактично це вікно DOS, на яке здійснюється виведення інформації всіма працюючими програмами; зручно використовувати саме при налагодженні програм;

User screen (Alt-F5) — (екран користувача) переключає зображення в DOS-екран для перегляду результатів роботи програми в повноекранному режимі (повернення по натисканню будь-якої клавіші);

Evaluate/modify — перегляд значень виразів або змінних і їхня модифікація при відлагодженні;

Add watch (Ctrl-F7) — додати вираз або змінну у вікно спостереження;

Add breakpoint — додати точки переривання у програму.

Tools — додаткові засоби:

Messages — відкрити вікно повідомлень компілятора;

Go to next — перейти до наступного повідомлення;

Go to previous — перейти до попереднього повідомлення;

Далі йде підменю виклику додаткових утиліт і засобів, що формується командою меню «Options \ Tools…».

Options — налагодження параметрів компілятора, редактора, відлагоджувальника і середовища оточення:

Compiler — установка директив компілятора по умовчанню й умовних параметрів компіляції:

– Force far calls — усі виклики підпрограм компілювати у виді міжсегментних (4‑байтових) адрес (звичайно в межах одного сегмента адреса виклику складається з 2 байт зсуву, 4-байтовий містить ще й адресу сегмента), оскільки іноді компілятор може неправильно визначити, які виклики здійснюються в межах одного сегмента, а які — між сегментами; рекомендується встановлювати при компіляції багатомодульних програм, хоча при цьому розмір коду трохи збільшується;

– Overlays allowed — припускаються оверлеї (процедури, що динамічно перевантажуються); використовуються при недостатній оперативній пам'яті для програм великого обсягу;

– Word align data — вирівнювання даних за словами (слово — два байти), тобто по межах парних адрес; при цьому дані читаються програмою швидше;

– 286 instructions — дозволити генерацію команд процесора 80286; в іншому разі генеруються команди процесора 8086;

– Range checking — додається код для перевірки виходу за межі діапазонів (для обмежених типів даних, масивів і т.п.);

– Stack checking — додається код для контролю переповнення стека при вході в процедури;

– I/O checking — додається код для контролю помилок вводу-виводу;

– Overflow checking — додається код для контролю переповнення арифметичних операцій;

– Strict var-strings — потребує ідентичності типів при передачі процедурам рядкових параметрів по посиланню; наприклад, якщо формальний параметр оголошений як var a:string[15], тоді фактичний параметр (наприклад, b) при виклику процедури повинен також мати тип string[15]; при відключеному параметрі подібний контроль не виконується;

– Complete boolean eval — потребує повного обчислення логічних виразів; у противному разі для виразу, наприклад, expr1 and expr2 компонента expr2 обчислюватися не буде, якщо expr1 = False;

– Extended syntax — припускається розширений синтаксис, що дозволяє використовувати функції як процедури (без урахування значень, які повертаються, як у мові С);

– Typed @ operator — потребує перевірку типів даних при використанні оператора витягу адреси @;

– Open parameters — припускає використання відкритих рядкових параметрів для процедур і функцій, тобто формальні параметри максимального розміру (просто string) приводяться у відповідність із довжиною фактичних параметрів;

– Debug information — включає в код програми відлагоджувальні коди, що дозволяють виконувати покрокове налагодження по тексту програми;

– Local symbols — включає локальні символи в відлагоджувальний код (для можливості налагодження підпрограм при вході усередину по F7);

– 8087/80287 — генерувати коди співпроцесора 8087 для математичних операцій;

– Emulation — використовувати емулятор (набір програмних функцій) за відсутністю апаратного математичного співпроцесора;

Для фіксації установлених параметрів необхідно обов'язково натиснути кнопку OK, а для скасування — Cancel;

Memory sizes — установлення розмірів стека і хіпа (рекомендується змінювати лише за необхідністю);

Linker — установлення параметрів компонувальника (для досвідчених програмістів);

Debugger — установлення параметрів відлагоджувальника (для досвідчених програмістів);

Directories — установлення маршрутів до робочих каталогів: EXE & TPU — каталог для компіляції exe- і tpu-файлів, Include — каталог для пошуку inc-файлів, Unit — каталог для пошуку pas-файлів, що містять тексти модулів, Object — каталог для пошуку obj-файлів;

Tools — формування підменю Tools, що містить виклики додаткових утиліт;

Environment — підменю для налагодження параметрів оточення: Preferences — параметри преваг, Editor — редактора, Mouse — миші, Startup — установлення стартових операцій при початковому завантаженні інтегрованого середовища, Colors — установлення кольорів різноманітних функціональних елементів текстового редактора і відлагоджувальника; дані параметри рекомендується залишити по умовчанню або змінювати їх тільки після додаткового вивчення;

Open — відкрити файл конфігурації інтегрованого середовища (файл з розширенням tp) і завантажити збережені там командою Save… параметри;

Save TURBO.TP — зберегти поточні установки у файлі turbo.tp у поточному каталозі;

Save as — зберегти поточні установки в іншому файлі.

Window — команди для роботи з вікнами:

Tile — розташувати вікна «черепицею»;

Cascade — розташувати вікна каскадом;

Close all — закрити усі вікна;

Refresh display — обновити (перемалювати) екран, якщо через якусь причину цього не зроблено автоматично;

Size / Move (Ctrl-F5) — переключитися в режим зміни розмірів або переміщення поточного вікна (курсорні стрілки переміщають вікно, а ці ж стрілки з клавішею Shift змінюють розміри вікна); вихід із режиму — по клавіші Enter;

Zoom (F5) — (масштаб) змінює розміри вікна від поточних до максимальних і навпаки;

Next (F6) — переключитися в наступне вікно;

Previous (Shift-F6) — переключитися в попереднє вікно;

Close (Alt-F3) — закрити поточне вікно;

List (Alt-0) — вивести список відкритих вікон; при цьому є можливість вибрати і переключитися в будь-яке вікно.

Help — довідкова система Turbo Pascal:

Contents — зміст;

Index — алфавітний список ключових слів і тем;

Topic search (Ctrl-F1) — контекстний пошук (у довідковій системі шукається слово, на якому зараз знаходиться текстовий курсор);

Previous topic (Alt-F1) — перехід до попередньої теми довідки;

Using help — правила користування довідковою системою;

Files — підключення додаткових файлів довідкової системи;

Compiler directives — директиви компілятора;

Reserved words — зарезервовані слова;

Standard units — інформація про стандартні модулі;

Turbo Pascal Language — довідка по мові Turbo Pascal;

Error messages — повідомлення про помилки;

About — інформація про версію і права розробників Turbo Pascal.

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

Для того, щоб працювати в режимі відлагоджувальника, необхідно попередньо переконатися, що опції (параметри) Debug information і Local symbols у меню Options \ Compiler… включені. Відлагоджувальник призначений для того, щоб мати можливість виявити складні логічні помилки в режимі покрокового виконання. У цьому режимі ви можете переглядати значення змінних, що вас зацікавили, на будь-якому кроці, а також спостерігати порядок виконання операторів у будь-якому фрагменті програми.

Для запуску програми в режимі налагодження необхідно спочатку відкомпілювати програму (Alt-F9), а потім натиснути клавішу F7 або F8 (різницю див. вище). Після цього спеціальний маркер зеленого кольору встановлюється на початок програми. Подальші натискання на ці ж клавіші приводять до виконання всіх операторів того рядка, на якому знаходиться маркер, а сам маркер переміщується на наступний рядок.

Для спостереження значень змінних у процесі налагодження необхідно відкрити вікно спостережень (Watches) за допомогою команди меню Debug \ Watch. Далі можна додавати змінні в це вікно. Для цього треба натиснути Ctrl-F7 або виконати команду меню Debug \ Add watch… і в діалоговому вікні, що з'явиться, ввести ім'я змінної для спостереження. Для видалення змінної з вікна спостережень необхідно встановити маркер на рядок з цією змінною і натиснути клавішу Delete. Результати виведення програмою інформації на консоль можна переглядати або по комбінації Alt-F5, або відкрити вікно виведення по команді меню Debug \ Output.

Програми великої тривалості можна відлагодити за допомогою точок переривання. Наприклад, вас не цікавить порядок виконання програми в покроковому режимі, але ви бажаєте переглянути значення визначених змінних у визначених точках програми. У таких місцях програми потрібно встановити точки переривання. Для цього на потрібний рядок програми встановлюється текстовий курсор і натискається комбінація Ctrl-F8. Повторне натискання цієї ж комбінації знімає точку переривання. Точка переривання позначається червоним маркером. Тепер можна запускати програму комбінацією Ctrl-F9. Програма починає виконуватися і зупиняється на першій точці переривання, не виконуючи команд, розташованих на самій точці переривання. Тут ви можете переглянути значення змінних, що вас зацікавили, або спробувати попрацювати в покроковому режимі (F7 або F8). Наступне натискання Ctrl-F9 продовжить виконання програми до наступної точки переривання. І так далі до кінця програми.

Скидання режиму налагодження можна здійснити в будь-який момент комбінацією Ctrl-F2. Проте, усі точки переривання залишаються. Щоб зняти усі точки переривання, потрібно або пройтися по відповідних рядках і відключити їх за допомогою Ctrl-F8, або виконати команду меню Debug \ Breakpoints… і в діалоговому вікні, що з'явиться, натиснути кнопку Clear all. У цьому ж вікні можна спостерігати компактний список усіх точок переривання, видаляти непотрібні (кнопка Delete видаляє поточну в списку точку переривання) або модифікувати існуючі (кнопка Edit).

Для зручності роботи в режимі налагодження варто навчитися правильно розміщати на екрані декілька робочих вікон та вміти швидко переміщатися між ними. При наявності миші розміри вікна легко змінюються перетягуванням правого нижнього кута вікна, а саме вікно переміщається перетягуванням за заголовок вікна. Рекомендується у відлагоджувальнику основні вікна (особливо текст програми і вікно спостереження) розміщати так, щоб їхні межі не перекривались.

Якщо ваша програма призначена для роботи поза інтегрованою оболонкою Turbo Pascal, тоді після остаточного налагодження необхідно виконати завершальну компіляцію в exe-файл (див. меню Compile). Перед цим рекомендується в меню Options \ Compiler… відключити усі опції секції Debugging і окремі опції секції Runtime errors (залежить від того, чи може ваша програма обробляти відповідні помилки). Оскільки при цьому з програми будуть видалені зайві фрагменти коду, обсяг програми зменшиться, а швидкість роботи дещо збільшиться.

При написанні текстів програм структурні відступи рекомендується виконувати за допомогою двох пробілів на кожний рівень або за допомогою табуляції (клавіша Tab). Для повернення до попереднього відступу на новому рядку використовуйте клавішу Backspace.

Хід роботи

1. Запишіть у робочий зошит відповіді на контрольні питання, подані нижче.

2. Вивчите структуру інтегрованого середовища. Зверніть увагу на такі основні моменти:

1) Як створити текст нової програми?

2) Як завантажити текст існуючої програми?

3) Як відкомпілювати програму?

4) Як запустити програму?

5) Як переглянути результати роботи програми?

6) Як зберегти текст програми?

7) Як створити exe-файл?

8) Як завершити роботу?

9) Для чого потрібний режим налагодження?

10) Основні прийоми роботи у відлагоджувальнику.

3. Відпрацюйте лекційний приклад (Задача №1 – обчислення площі трикутника) у звичайному режимі і режимі відлагоджувальника. Організуйте спостереження значень усіх змінних у покроковому режимі і результатів виведення на консоль.

4. Заздалегідь підготуйте формули для рішення простих математичних задач, наведених нижче.

5. Написати програми для обчислення:

1) площі кільця, внутрішній радіус якого дорівнює 5, а зовнішній — заданому числу r (r > 5);

2) загального опору трьох паралельно з’єднаних резисторів R1, R2, R3;

3) часу падіння каменю на поверхню землі з висоти h.

6. По заданих сторонах трикутника a, b, c напишіть програму для обчислення (по варіантах):

1) висоти трикутника;

2) медіани трикутника;

3) бісектриси трикутника;

4) радіуса вписаної окружності;

5) радіуса описаної окружності;

6) косинуса кута a, синуса кута a;

7) суми косинуса і синуса кута b;

8) суми косинусів кутів трикутника;

9) синуса кута a+b;

10) косинуса кута a–b;

11) синуса кута a–b;

12) косинуса кута 2b;

13) синуса кута b+g;

14) площі поверхні й обсягу кулі по заданому радіусі.

7. Запишіть у зошит тексти всіх створених робочих програм. Підберіть для кожної програми по два варіанти вхідних даних. Запишіть ці вхідні дані і результати, отримані при роботі програм.

8. Запишіть висновки про зроблену роботу.

9. Надайте викладачу отримані результати.

Контрольні питання

1. Які операції можна виконувати з цілими типами даних? Які з дійсними?

2. Яким чином можна ввести вхідні дані для програми?

3. Запишіть оператори виводу на екран значень шести цілих змінних a, b, c, d, e, f у два рядки і три стовпчики, по 5 символів у кожному, так, щоб значення перших трьох змінних опинилися у першому рядку, а інших трьох — у другому.

4. Назвіть усі оператори у виразі a := sin(x) + cos(y) – exp(z). Зазначте операнди для цих операторів.

Вказівки для викладача

Дану роботу доцільно розбити на два заняття. Перше можна присвятити вивченню інтегрованого середовища Turbo Pascal і відпрацюванню лекційної задачі в режимі відлагоджувальника. Друге — розв’язанню задач, наведених у даній роботі.

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

Лабораторна робота 2.2 Розгалуження

Мета роботи: Набути навичок практичної роботи при програмуванні процесів, що розгалужуються (альтернатив).

Засоби: Інтегроване середовище програмування Turbo Pascal 7.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 3.4-3.5, с. 78-88.

2. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие. Мн.: Выш. шк.: БФ ГИТМП «Ника», 1991, с. 36-39.

3. Абрамов С. А., Гнездилова Г. Г., Капустина Е. Н., Селюн М. И. Задачи по программированию. М.: Наука. Гл. ред. физ.-мат. лит., 1988, 224 с.

Теоретичні відомості

Альтернативи дозволяють програмувати логіку будь-якої задачі. Цілком впевнено можна сказати, що за допомогою розгалужень створюється машинний інтелект.

Хоча конструкцій альтернатив і небагато (класичні оператори розгалуження і вибору існують практично в будь-якій мові), але усе «розумне», що створюється в програмуванні, створюється саме за їхньою допомогою.

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

Для самостійного вирішення простих задач з розгалуженнями рекомендується використовувати джерело [3] із списку літератури даної роботи (§2, с. 8-14).

Хід роботи

1. Запишіть у робочому зошиті відповіді на контрольні питання.

2. Відпрацюйте лекційні задачі (№2, №3, №4) у режимі відлагоджувальника. Для кожної програми використовуйте два-три запуски з різноманітними вхідними даними. У вікні спостереження контролюйте усі вирази, які записані в операторі розгалуження або вибору.

3. Напишіть програми для розв'язання таких задач:

1) Дано дійсні числа a, b, c, d. Якщо a <= b <= c <= d, тоді кожне число замінити найбільшим із них; якщо a > b > c > d, тоді числа залишити без зміни; у противному разі усі числа змінити на їх квадрати.

2) Задані цілі додатні числа x і k, l, m, n. Визначити, на які з чисел, що залишилися, ділиться число x.

3) Задано біквадратне рівняння ax4 + bx2 + c = 0. Знайти корені рівняння.

4. Напишіть програму для розв'язання наступної задачі (по варіантах):

1) змінній k присвоїти номер квадранта координатної площини, якому належить точка (x, y);

2) відомо, що з 5 чисел a1, a2, a3, a4, a5 одне відмінне від чотирьох інших, рівних між собою. Знайти номер цього числа;

3) Дано числа a, b, c. Визначити, який трикутник (прямокутний, гострокутний, тупокутний) можна побудувати з такими довжинами сторін.

4) Дано числа a, b, c. Знайти суму найбільшого і найменшого.

5) Дано числа a, b, c. Надрукувати їх у порядку зменшування.

6) Дано числа a, b, c. Визначити, скільки серед них мають нульове значення.

7) Дано числа a, b, c. Визначити, скільки серед них від’ємних.

8) Дано числа a, b, c. Перевірити, чи є трикутник із такими довжинами сторін рівностороннім, рівнобедреним, довільним.

9) Дано числа a, b, c. Перевірити, чи можна скласти з них арифметичну прогресію.

10) Дано числа a, b, c. Визначити, скільки серед них однакових.

11) Дано тризначне число N. Перевірити, чи усі його цифри різні.

12) Дано чотиризначне число N. Перевірити, чи входить у запис числа цифра 9.

13) Дано тризначне число N. Перевірити, чи входить у запис числа дві однакові цифри.

14) Дано числа a, b, c. Перевірити, чи можна скласти з них геометричну прогресію.

5. Запишіть у зошит тексти всіх створених робочих програм. Підберіть для кожної програми по два варіанти вхідних даних. Запишіть ці вхідні дані і результати, отримані при роботі програм.

6. Запишіть висновки про зроблену роботу.

7. Надайте викладачу отримані результати.

Контрольні питання

1. Які інструкції дозволяють програмувати альтернативи?

2. Який пріоритет в ієрархії операцій мають операції порівняння?

3. Що є значенням умовного виразу?

4. Яку операцію називають логічним множенням? Що є результатом виконання цієї операції?

5. Яку операцію називають логічним додаванням? Що є результатом виконання цієї операції?

6. Який пріоритет мають операції and та or.

Вказівки для викладача

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

Лабораторна робота 2.3 Цикли

Мета роботи: Навчитися використовувати оператори циклу (while, repeat, for) для програмування найпростіших алгоритмів із повторюваними обчисленнями.

Засоби: Інтегроване середовище програмування Turbo Pascal 7.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 3.6-3.7, с. 89-95.

2. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие. Мн.: Выш. шк.: БФ ГИТМП «Ника», 1991, с. 39-43.

3. Абрамов С. А., Гнездилова Г. Г., Капустина Е. Н., Селюн М. И. Задачи по программированию. М.: Наука. Гл. ред. физ.-мат. лит. , 1988, 224 с.

Теоретичні відомості

Циклічні оператори дозволяють за допомогою 2-3 рядків програми виконувати будь-яку кількість однотипних операторів. Цикли — це міцність ваших програм. Намагайтеся розпізнати в розв'язуваній задачі такі фрагменти, що можна вирішити за допомогою однотипного алгоритму, але з різноманітними (за значенням) однотипними параметрами. Такий алгоритм можна оформити у вигляді циклу, скоротивши масу дорогоцінного часу.

Для самостійної роботи з розв'язання простих задач, що використовують цикли, рекомендується використовувати джерело [3] із списку літератури даної роботи (§4, с. 16-23).

Хід роботи

1. Запишіть у робочому зошиті відповіді на контрольні питання.

2. Відпрацюйте лекційні задачі (№5, №6, №7) у режимі відлагоджувальника. Для кожної програми використовуйте два-три запуски з різними вхідними даними. У вікні спостереження контролюйте лічильник циклу або вираз, записаний в умові циклу. Встановіть точку переривання на перший оператор, що розташований відразу за циклом. Перевірте значення змінних, що обчислюються за допомогою циклу. Спробуйте відпрацювати початок програми за допомогою покрокового режиму, продовживши виконання після 3-4 ітерацій комбінацією Ctrl-F9 до найближчої точки переривання.

3. Напишіть програми для розв'язання таких задач:

Варіант 1.

1) Дано послідовність із N цілих чисел. Визначити, із скількох додатних чисел вона починається.

2) Дано послідовність із N цілих чисел. Визначити, чи є вона спадаючою.

Варіант 2.

1) Дано послідовність із N цілих чисел, серед яких є нуль. Визначити, скільки чисел розташовано до нуля.

2) Дано послідовність натуральних чисел, яка завершується нулем. Знайти середнє геометричне чисел, які більші п'яти.

Варіант 3.

1) Дано послідовність натуральних чисел, яка завершується нулем. Знайти суму всіх чисел.

2) Дано послідовність чисел, серед яких є хоча б два нулі. Визначити, скільки чисел знаходиться між першими двома нулями.

Варіант 4. *

1) Дано ціле число N. Знайти суму парних цифр цього числа.

2) Дано послідовність із N чисел. Знайти найбільше з чисел, які по модулю менші двох.

Варіант 5.

1) Дано ціле число N. Знайти першу цифру цього числа.

2) Дано послідовність із N цілих чисел. Визначити, чи є в ній число, яке дорівнює першому з цієї послідовності.

Варіант 6. *

1) Дано натуральне число N. Знайти найбільше ціле число K, за якого виконується умова 2K < N.

2) Дано послідовність із N чисел. Визначити, чи є в ній два однакових числа, які розташовані поруч.

Варіант 7. *

1) Дано ціле число N. Поміняти місцями першу й останню цифри цього числа.

2) Дано послідовність натуральних чисел, яка завершується нулем. Знайти частку найбільшого і найменшого з них.

Варіант 8. *

1) Яку мінімальну кількість послідовних непарних чисел, починаючи з N, потрібно додати, щоб їхня сума стала більша 150.

2) Дано два натуральних числа N і M. Визначити кількість однакових цифр, що стоять на однакових місцях (в однакових розрядах).

Варіант 9.

1) Дано послідовність із N нулів і одиниць (N >= 20). Визначити, кількість яких цифр раніш досягне 10.

2) Дано послідовність натуральних чисел, яка завершується нулем. Перевірити, чи є послідовність зростаючою.

Варіант 10.

1) Дано послідовність додатних і від’ємних чисел. Визначити, сума яких чисел (по модулю) раніше перевищить 20.

2) Дано натуральне число N, за ним послідовність із N дійсних чисел. Знайти і надрукувати найбільшу різницю по модулю між двома сусідніми числами.

Варіант 11. *

1) Дано послідовність чисел. Визначити, скільки додатних чисел між першими двома від’ємними.

2) Дано натуральне число N, за ним послідовність із N дійсних чисел. Визначити, скільки чисел має найбільше значення.

Варіант 12. *

1) Дано дійсні числа a і b. Визначити перше ціле число, що належить інтервалу (a, b), яке ділиться на 5.

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

Варіант 13.

1) Визначити, для якого натурального n вираз (n2–12n–17) стане більшим нуля (n = 1, 2, 3, …).

2) Дано натуральне число N, за ним — послідовність із N дійсних чисел. Знайти номер найбільшого з них.

Варіант 14. *

1) Дано послідовність дійсних чисел x0, a0, a1, …, aN і ціле N > 0. Обчислити значення похідної багаточлена a0 + a1x +…+aNxN у точці x = x0.

2) Дано натуральне число N, за ним — послідовність із N дійсних чисел. Знайти добуток максимального і мінімального чисел.

4. Запишіть у зошит тексти усіх створених робочих програм. Підберіть для кожної програми по два варіанти вхідних даних. Запишіть ці вхідні дані і результати, отримані при роботі програм.

5. Запишіть висновки про зроблену роботу.

6. Надайте викладачу отримані результати.

Додаткові задачі

(на розсуд викладача)

1. Обчислити факторіал натурального числа n. Факторіал числа n позначається як n! і означає 1×2×3×... ×n.

2. Дано ціле число m > 1. Одержати найбільше ціле число k, за якого 4k < m.

3. Нехай n — натуральне число і нехай n!! означає 1×3×5×... ×n для непарного n і 2×4×... ×n для парного n. Для заданого натурального n обчислити:

а) n!!;

б) (-1)n+1n!!

4. Для чисел Фібоначчі u1, u2, ... справедливо співвідношення u1=1; u2=1; uk=uk-1+uk-2 (k = 3, 4, 5, …). Визначити задане n-е число Фібоначчі.

5. Видати на екран усі натуральні прості числа, які не перевищують 100. Виведення організувати рядками по 5 стовпчиків у кожному.

6. Визначити, чи є задане натуральне число паліндромом (числа, у яких прямий запис збігається з оберненим, наприклад, 12344321, 1305031 і т.д.).

Контрольні питання

1. Дати характеристику циклічних операторів (while, repeat, for).

2. Що таке «зациклювання»?

3. Чому неможливо зациклити цикл for?

Вказівки для викладача

Зверніть увагу на уміння студентів працювати з точками переривання.

Зірочками позначені варіанти завдань, що рекомендуються для більш підготовлених студентів.

Додаткові задачі можна використовувати для студентів із кращими навичками й уміннями, а також як можливі замінники завдань в окремих варіантах.

Вкажіть студентам (особливо більш підготовленим) на те, що всі задачі повинні бути розв’язані без використання масивів.

Лабораторна робота 2.4 Масиви

Мета роботи: Відпрацювати алгоритми опрацювання лінійних і двомірних масивів.

Засоби: Інтегроване середовище програмування Turbo Pascal 7.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 3.8, с. 95-106.

2. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие. Мн.: Выш. шк.: БФ ГИТМП «Ника», 1991, с. 60-64.

Теоретичні відомості

Масиви дозволяють опрацьовувати величезні кількості даних, використовуючи для цього компактні циклічні алгоритми.

Певну проблему при відпрацьовуванні алгоритмів із масивами складають вхідні дані. Звідки їх брати? Якщо видумувати з голови і вводити руками з клавіатури, то працювати з масивами великого розміру практично неможливо. Можна мати заздалегідь підготовлені ланцюжки даних у текстових або типізованих файлах і вводити їх звідти в програму, але ми ще не вміємо працювати з файлами. Тому найбільш прийнятний варіант саме для відпрацьовування алгоритмів із масивами надто великого розміру — генерувати ці дані за допомогою самої ж програми. Для повторення опису генератора випадкових чисел зверніться до джерела [1] даної роботи на стор. 84-85.

Розглянемо, як можна згенерувати випадкове ціле число з певного інтервалу. Нехай, наприклад, потрібно одержати число з інтервалу [–50; 50]. Пригадаємо, що функція Random може генерувати число від нуля до зазначеного числа. Тому наш інтервал потрібно привести до нижньої нульової межі, тобто до обох меж додати по 50: [0; 100]. Щоб одержати випадкове число в цьому інтервалі, потрібно використовувати функцію Random(101). А тепер просто повернемо збільшені межі назад: Random(101) – 50. За допомогою даного виразу ви одержите послідовність випадкових цілих чисел у діапазоні [–50; 50].

Тепер неважко одержати вирази для генерації цілих чисел у діапазоні, наприклад, [20; 75]. Приведемо до нижньої нульової межі: [0; 55]. Це буде Random(56). Повернемо межі назад: Random(56) + 20.

Цим принципом можна скористатися для генерації дійсних чисел. Не забувайте, що функція Random без аргументів видає дійсні числа в діапазоні від 0 до 1. Отже, одержимо вираз для інтервалу, наприклад, [–2.6; 17.1]. Приводимо до нижньої нульової межі: [0; 19.7]. Це буде вираз (Random * 19.7). І, як звичайно, повернемо межі назад: (Random * 19.7 – 2.6). І останній приклад: дійсне число в інтервалі [3.5; 12.5]. Приводимо до нижньої нульової межі: [0; 9]. Цьому відповідає вираз (Random * 9). Остаточно одержимо: (Random * 9 + 3.5).

Якщо не ініціалізувати генератор випадкових чисел процедурою Randomize, то при кожному новому запуску програми ви будете одержувати послідовність випадкових чисел, яка буде повторюватись. Іноді це не має істотного значення, іноді саме це і потрібно. Але часто існує інтуїтивне бажання щораз одержувати цілком непередбачену послідовність чисел. У таких випадках не забувайте ще до використання функції Random викликати процедуру Randomize. Причому звичайно це достатньо зробити лише раз на самому початку алгоритму.

Хід роботи

1. Запишіть у робочому зошиті відповіді на контрольні питання.

2. Відпрацюйте лекційні задачі (№8…№12)... Для задачі №11 змініть вхідні дані так: N=30, M=40, дані вводити не з клавіатури, а генерувати дійсні числа за допомогою генератора випадкових чисел в інтервалі [–10; 15]. Хід виконання задач №10 і №12 обов'язково перевірте у відлагоджувальнику в покроковому режимі. Перед початком запуску режиму налагодження помістіть у вікно спостереження усі змінні програми, включаючи і змінну-масив. Результати роботи програм запишіть у робочий зошит.

3. Напишіть програми для розв'язання таких задач (по умовчанню вважається, що одномірний масив ви організуєте у вигляді вектора A, а двомірний — у вигляді матриці A):

Варіант 1.

1) Дана послідовність із N цілих чисел. Числа вводяться з клавіатури в інтервалі від –10 до 10 або за допомогою генератора випадкових чисел. Знайти найменше з чисел із парним номером. Крім результату вивести вхідні дані вектора А по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел в інтервалі від ‑30 до 30. Знайти в якому рядку є максимальна сума елементів по абсолютній величині. Крім результату вивести вхідні дані матриці А у вигляді M x N.

Варіант 2.

1) Дано послідовність із N цілих чисел. Числа вводяться з клавіатури в інтервалі від –10 до 10 або за допомогою генератора випадкових чисел. Знайти найбільше з чисел із непарним номером. Крім результату вивести вхідні дані вектора А по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑10 до 10. Знайти в якому стовпчику є максимальна сума елементів по абсолютній величині. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 3.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Знайти найменший із квадратів цих чисел. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑40 до 40. Знайти найбільший елемент матриці і видалити рядок, у якому він знаходиться (видалення проводьте методом зсуву рядків, що залишилися, і обнулінням останнього рядка). Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 4.

1) Дана послідовність із N цілих чисел. Числа вводяться з клавіатури. Знайти найбільше з послідовності а1, а2/2, …, а N/N. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑30 до 30. Знайти найменший елемент матриці і видалити стовпчик, у якому він знаходиться (видалення проводьте методом зсуву стовпчиків, що залишилися, і обнулінням останнього стовпчика). Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 5.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑60 до 60. Знайти найближче число до середнього арифметичного цих чисел. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Знайти найменший елемент матриці і надрукувати відповідний рядок. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 6.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑40 до 40. Знайти кількість непарних чисел. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑60 до 60. Знайти найбільший елемент матриці і надрукувати відповідний стовпчик. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 7.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑5 до 10. Знайти добуток від’ємних чисел. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑80 до 50. Знайти суму невід’ємних елементів матриці. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 8.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑10 до 100. Знайти кількість невід’ємних чисел. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑4 до 15. Знайти добуток від’ємних елементів матриці. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 9.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 30. Знайти суму квадратів парних чисел. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Знайти рядок із найбільшим по модулю елементом матриці і поміняти його місцями з першим рядком. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 10.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑60 до 60. Знайти різницю між сумою додатних і сумою від’ємних чисел. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑100 до 100. Знайти стовпчик із найменшим по модулю елементом матриці і поміняти його місцями з останнім стовпчиком. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 11.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 90. Знайти кількість чисел, які більші середнього арифметичного. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Знайти суму елементів k-го стовпчика і розділити на неї всі елементи k-го рядка. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 12.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑100 до 100. Знайти суму чисел, які менше середнього арифметичного. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑20 до 20. Знайти суму елементів k-го рядка і поділити на неї всі елементи k-го стовпчика. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 13.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 20. Знайти, чи є в цій послідовності число, яке дорівнює середньому арифметичному. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності N x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Знайти суму діагональних елементів матриці і поділити на неї останній рядок. Крім результату вивести вхідні дані матриці A у вигляді N x N.

Варіант 14.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑100 до 100. Знайти кількість додатних чисел, які менші свого номера, тобто відповідають умові 0 < ai < i. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності N x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 5. Знайти суму квадратів діагональних елементів матриці і поділити на неї перший стовпчик. Крім результату вивести вхідні дані матриці A у вигляді N x N.

Варіант 15.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 30. Знайти добуток непарних чисел. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑100 до 100. Знайти різницю між кількістю додатних і від’ємних елементів матриці. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 16.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 50. Знайти кількість чисел, які кратні 3 і некратні 5. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності N x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Знайти суму елементів, що розташовані вище головної діагоналі. Крім результату вивести вхідні дані матриці A у вигляді N x N.

Варіант 17.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 40. Знайти кількість чисел, що при діленні на 7 дають залишок 1 або 5. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑10 до 10. Записати всі елементи матриці в одномірний масив відповідного розміру. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 18.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑10 до 10. Знайти кількість чисел, що належать відрізку [0; 5]. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑90 до 90. Знайти перший від’ємний елемент і видалити стовпчик, у якому він знаходиться (видалення проводьте методом зсуву стовпчиків, що залишилися, і обнулінням останнього стовпчика). Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 19.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 10. Знайти кількість чисел, що не належать відрізку [1; 7]. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності N x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 50. Поміняти місцями перший рядок і перший стовпчик. Крім результату вивести вхідні дані матриці A у вигляді N x N.

Варіант 20.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑100 до 100. Знайти кількість чисел, що відповідають умові i < ai < 2i. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності N x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑20 до 50. Знайти добуток елементів, що розміщені нижче головної діагоналі. Крім результату вивести вхідні дані матриці A у вигляді N x N.

Варіант 21.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑100 до 100. Знайти кількість чисел, що відповідають умові ai < (ai-1 + ai+1)/2, (1 < i < N). Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Знайти суму елементів кожного рядка. Результат помістити в одномірному масиві. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 22.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 100. Знайти суму чисел, кратних 5. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності N x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑20 до 40. Поміняти місцями останній рядок і перший стовпчик. Крім результату вивести вхідні дані матриці A у вигляді N x N.

Варіант 23.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑100 до 100. Знайти суму чисел, що мають парні порядкові номери і є непарними. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності N x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 20. Знайти скалярний добуток першого рядка й останнього стовпчика. Крім результату вивести вхідні дані матриці A у вигляді N x N.

Варіант 24.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑100 до 100. Знайти суму чисел, що належать відрізку [0; 10]. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑10 до 10. Знайти суму елементів кожного стовпчика. Результат помістити в одномірному масиві. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 25.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від 0 до 10. Знайти суму чисел, що не належать відрізку [2; 8]. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано цілу матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Знайти кількість парних елементів матриці. Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 26.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑20 до 20. Знайти кількість чисел, що є подвоєними непарними числами. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності N x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Поміняти місцями перший рядок і другий стовпчик. Крім результату вивести вхідні дані матриці A у вигляді N x N.

Варіант 27.

1) Дана послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑20 до 20. Знайти кількість непарних чисел, кратних 3. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності M x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑40 до 40. Знайти перший елемент, кратний 5, і видалити рядок, у якому він знаходиться (видалення проводьте методом зсуву рядків, що залишилися, і обнулінням останнього рядка). Крім результату вивести вхідні дані матриці A у вигляді M x N.

Варіант 28.

1) Дано послідовність із N цілих чисел. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑30 до 40. Знайти суму парних чисел, кратних 4. Крім результату вивести вхідні дані вектора A по 10 елементів у рядку.

2) Дано матрицю розмірності N x N. Числа вводяться за допомогою генератора випадкових чисел у діапазоні від ‑50 до 50. Поміняти місцями відповідні елементи головної і допоміжної діагоналей матриці. Крім результату вивести вхідні дані матриці A у вигляді N x N.

4. Запишіть у зошит тексти усіх створених робочих програм. Запишіть вхідні дані і результати, отримані при роботі програм.

5. Запишіть висновки про зроблену роботу.

6. Надайте викладачу отримані результати.

Додаткові задачі

(на розсуд викладача)

1. У прямокутному масиві розміром M x N обнулити всі комірки, що знаходяться в К-ому рядку і L-ому стовпчику, крім комірки, яка знаходиться на перетині цього рядка і стовпчика.

2. У квадратній матриці значення всіх комірок, розташованих вище обох діагоналей, замінити одиницею, а комірок, розташованих нижче обох діагоналей — нулем.

3. Для матриці розміром N x M одержати транспоновану матрицю, тобто матрицю розміром M x N, рядки якої заповнюються вмістом відповідних стовпчиків першої матриці.

Контрольні питання

1. Дайте визначення масиву. У яких випадках використовуються масиви?

2. Як оголошуються масиви в блоці опису змінних?

3. Яким чином функція генератора випадкових чисел отримує чергове (нове) значення?

4. Запишіть оператор, який помістить у i-ую комірку масиву будь-яке випадкове число.

Вказівки для викладача

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

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

За наявності в програмах студентів логічних помилок рекомендуйте шукати їх спочатку шляхом уважного послідовного перегляду всіх операторів програми («налагодження в уяві»), і якщо це не дає результатів — покрокову прогонку у відлагоджувальнику.

Лабораторна робота 2.5 Прості нестандартні типи даних

Мета роботи: Навчитися застосовувати прості нестандартні типи даних при розв'язанні задач мовою програмування Паскаль.

Засоби: Інтегроване середовище програмування Turbo Pascal 7.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 3.9-3.10, с. 107-115.

2. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие. Мн.: Выш. шк.: БФ ГИТМП «Ника», 1991, с. 8-12.

Теоретичні відомості

Деякі мови програмування (зокрема, Паскаль) надають можливість абстрагуватися від машинних чисел і піднятися на більш високий рівень людських понять. Так, замість чисел, що кодують кольори, тварин або місяці, можна в програмі безпосередньо оперувати значеннями, поданими звичайними людськими словами «червоний, сірий, зелений», «миша, кішка, собака», «січень, лютий, березень» і т.д. У Паскалі, на жаль, це можливо лише англійською мовою. Зрозуміло, що на своєму машинному рівні комп'ютер все одно перекладає ці поняття в цифрові значення, але людині працювати набагато легше! А якщо так, то і помилок він припускатиметься значно менше. Особливо це стосується великих програмних проектів, коли значення різноманітних об'єктів набувають безпосереднього змісту і не потрібно напружуватися, щоб визначити, що в даному місці число 3 означає «зелений», а в іншому місці це ж число може означати «березень».

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

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

Запам'ятаєте, що обмежені (інтервальні) типи даних сприяють тільки посиленню контролю над коректністю роботи програми з боку компілятора. При цьому опція Range checking компілятора повинна бути включена (меню Options \ Compiler…)... Таке самообмеження на етапі обмірковування і проектування даних дуже знадобиться вам згодом, коли ви більше уваги будете приділяти логіці роботи алгоритму і можете забути про конкретні особливості даних. Застосування ж перелічувальних типів даних сприяє поліпшенню стилю програмування і підвищенню чіткості програм, а це означає і зменшення потенційних помилок, особливо в програмах великого обсягу або алгоритмах, до яких ви змушені будете звертатися повторно, але досить рідко.

Зверніть увагу, що з клавіатури можна вводити тільки символьні (текстові) дані. Якщо текст записаний по правилах цілого або дійсного числа, то компілятор може перетворити його у відповідне числове значення. У всіх інших випадках перетворення потрібно проводити вручну. Не можна безпосередньо ввести з клавіатури (у Паскалі) дані логічного і перелічувального типів, оскільки при компіляції від таких значень залишаються тільки числові коди, а ідентифікатори (назви) значень ліквідуються (адже процесор розуміє тільки цифрові коди, а назви потрібні для людини). Якщо для запровадження логічного значення «Істина» ви спробуєте ввести з клавіатури слово «True», тоді воно буде сприйматися саме як слово, тобто значення текстового (точніше, строкового типу), і компілятор видаватиме помилку про невідповідність типів даних (спроба текстове значення помістити в логічне). Взагалі логічні і перелічувальні типи даних не призначені для вводу їхніх значень із клавіатури. Вони використовуються усередині програми для допоміжних цілей. Але якщо все ж введення подібних значень знадобиться, тоді можна запропонувати найпростіші види перекодувань, наприклад:

var cont: Boolean;

    color: (red, green, blue);

    c: char;

…

  write(’Продовжити розв’’язання (y/n)?’);

  readln(c);

  if c = ’y’ then cont := True else cont := False;

  …

  if not cont then Exit; { вихід із програми}

  …

  write(’Зазначте колір (r-червоний, g-зелений, b-синій): ’);

  readln(c);

  case c of

    ’r’: color := red;

    ’g’: color := green;

    ’b’: color := blue;

  end;

…

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

…

  case color of

    red: write(’червоний’);

    green: write(’зелений’);

    blue: write(’синій’);

  end;

…

У Turbo Pascal є дуже зручний засіб для початкової ініціалізації змінних, що називають типізованими константами. Розглянемо приклади:

type WeekDays = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);

     Matrix = array[1..3, 1..5] of integer;

const Start: WeekDays = Sun;

      Tarif: real = 1.25;

      Tabel: array[WeekDays] of integer = (8,8,8,8,8,7,0);

      Plan: array[Mon..Fri] of real = (2.1, 2, 2.3, 2.4, 2);

      Vowels: array[1..5] of char = (’a’, ’e’, ’i’, ’o’, ’u’);

      Digits: array[0..9] of char = ’0123456789’;

      A: Matrix = ((1,2,3,4,5),

                   (2,3,4,5,6),

                   (3,4,5,6,7));

Типізовані константи оголошуються в розділі констант і ініціалізуються як константи. Проте є суттєвий момент: у типізованих констант вказується тип (як у змінних) і насправді вони і є змінними, тобто в ході роботи програми їхні значення можна змінювати. Зверніть увагу, що значення елементів масивів вказуються один за одним через кому, вся група значень масиву дається в круглих дужках. Для багатовимірних масивів група значень кожного окремого виміру також береться в круглі дужки (матриця A). Символьні масиви можна ініціалізувати стандартним чином, тобто списком символьних значень (масив Vowels — голосні), але можна і просто символьним рядком (масив Digits — цифри). Значення матриці A можна було записати й в один рядок, але в тому вигляді, як це подано в прикладі, значення зручніше переглядати і модифікувати по рядках і стовпчиках. Таким чином, типізовані константи — це змінні, що до початку виконання програми вже мають деякі початкові значення.

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

Хід роботи

1. Запишіть у робочому зошиті відповіді на контрольні питання.

2. Відпрацюйте лекційну задачу №13. Обов'язково перевірте хід її виконання у відлагоджувальнику в покроковому режимі. Перед початком запуску відлагоджувального режиму помістіть у вікно спостереження всі змінні програми, а також логічний вираз, що записаний в умові оператора if.

3. Напишіть програми для розв'язання задач:

Варіант 1.

1) Нехай є дані: Type Edinitsa = (mm, cm, dm, m, km);      Dlina = real; Var x: Dlina;     p: Edinitsa; Значення змінної х, що означає деяку довжину в одиницях р, замінити на розмір цієї ж довжини в метрах.

2) Вважати, що рік високосний і його 1 січня збігається з днем тижня wd1. Визначити всі дати (день і місяць), що відповідають 13 числу і дню тижня п'ятниця (див. задачу №2 для 5-го варіанта).

Варіант 2.

1) Для цілого числа k від 1 до 99 надрукувати фразу «мені k років». Майте на увазі, що при деяких значеннях k слово «років» треба замінити словом «рік» або «роки».

2) Вважати, що рік невисокосний і його 1 січня збігається з днем тижня wd1. Визначити wd — день тижня, який відповідає дню із датою d, m (наприклад: 25, квітень). Примітка: див. задачу №2 для 5-го варіанта.

Варіант 3.

1) Нехай є дані: Type Kurs = (north, east, south, west); {північ, схід, південь, захід} Prikaz = (forward, right, back, left); {вперед, вправо, назад, вліво} Var k1, k2: Kurs; P: Prikaz; Корабель йшов за курсом k1, а потім його курс був змінений згідно з наказом P. Визначити k2 — новий курс корабля.

2) Для двох цілих чисел і знака арифметичної операції (додавання, віднімання, множення, ділення) визначити результат операції. Примітка: ділення на нуль повинно оброблятися коректно.

Варіант 4.

1) Є описи даних: Type Month = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); Var d: 28..31; m: Month; Визначити кількість днів d у місяці m (рік вважати невисокосним).

2) По заданому символу визначити його тип. Результат вивести у вигляді одного з таких варіантів: – цифра; – велика латинська літера; – мала латинська літера; – велика літера кирилиці; – мала літера кирилиці; – спеціальний символ.

Варіант 5.

1) Музичні інтервали. Нехай є такі типи даних: Type Nota = (do, re, mi, fa, sol, la, si); Interval = (secunda, tercia, quarta, quinta, seksta, septima); Var n1, n2: Nota; i: Interval; Визначити інтервал, утворений нотами n1 і n2 (n1 ≠ n2). Значення нот повинні бути введені з клавіатури (самостійно придумайте засіб). Примітка: секунда — це інтервал із двох сусідніх (по колу) нот (наприклад, ре і мі, сі і до), терція — інтервал через ноту (фа і ля, сі і ре), кварта — через дві ноти і т.д.

2) Нехай є дані: Type Month = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); Var k: 1..366; d: 1..31; m: Month; Визначити k — порядковий номер того дня високосного року, що має дату d, m (наприклад: 12, серпень). Примітка: організуйте масив для збереження тривалостей місяців.

4. Запишіть у зошит тексти всіх створених робочих програм. Підберіть для кожної програми по два варіанти вхідних даних. Запишіть ці вхідні дані і результати, отримані при роботі програм.

5. Запишіть висновки про зроблену роботу.

6. Надайте викладачу отримані результати.

Задачі підвищеної складності

(на розсуд викладача)

1. У старояпонському календарі був прийнятий 60-літній цикл, що складається з 12-літніх підциклів. Підцикли позначалися назвами кольору: зелений, червоний, жовтий, білий, чорний. Усередині кожного підцикла рік позначався назвою тварини: пацюк, корова, тигр, заєць, дракон, змія, кінь, вівця, мавпа, курка, собака, свиня. Так 1984 рік — рік зеленого пацюка — був початком чергового циклу. Написати програму, що вводить будь-який рік нашої ери і друкує його назву по старояпонському календарю.

2. По старому (юліанському) календарю високосним є рік, номер якого ділиться на 4 (без винятку). По сучасному (григоріанському) календарю номер високосного року повинен або ділитися на 400, або ділитися на 4 і не ділитися на 100. Нехай задані три цілих числа, що визначають певну дату нашої ери (день, місяць, рік) по григоріанському календарю. Визначити відповідну дату по юліанському календарю. Примітка: у високосному році в обох календарях лютий має 29 днів, у невисокосному — 28.

Контрольні питання

1. Для чого призначені обмежені (інтервальні) типи даних?

2. Для чого призначені перелічувальні типи даних?

3. Які операції можна виконувати з обмеженими типами даних?

4. Які операції можна виконувати з перелічувальними типами даних?

5. Чи можна безпосередньо з клавіатури ввести дані обмеженого типу? Перелічувального?

Вказівки для викладача

Для вводу значень перелічувального типу можна порекомендувати або символьне перекодування (як у рекомендаціях даної роботи), або введення цифрових кодів значень з їхнім наступним перетворенням конструкцією ім'я_типу(код) (див. [1], c. 113).

Для більш підготовлених студентів можна запропонувати одну задачу підвищеної складності замість штатного варіанта завдань.

Лабораторна робота 2.6 Рядки

Мета роботи: Навчитися здійснювати різноманітні види обробки текстових даних.

Засоби: Інтегроване середовище програмування Turbo Pascal 7.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 3.11-3.12, с. 116-127.

2. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие. Мн.: Выш. шк.: БФ ГИТМП «Ника», 1991, с. 56-60.

Хід роботи

1. Запишіть у робочому зошиті відповіді на контрольні питання.

2. Відпрацюйте лекційні задачі №14…№18. Роботу задач №15, №17 і №18 перевірте в покроковому відлагоджувальному режимі. У вікно спостережень введіть всі змінні кожної задачі та всі умовні вирази (для циклів або операторів розгалуження). Запишіть у робочий зошит по два варіанти підібраних вами вхідних даних для кожної задачі і результати роботи програм.

3. Напишіть програми для розв'язання наступних задач (по умовчанню вважається, що слова в рядку можуть розділятися довільним числом пробілів):

Варіант 1.

1) Ввести своє прізвище, ім'я і по батькові одним рядком. Визначити, які літери зустрічаються частіше — голосні або приголосні.

2) Надрукувати всі числа, що входять до складу заданого рядка.

Варіант 2.

1) Дано рядок тексту. Знайти найбільшу кількість цифр, що розташовані поруч.

2) У заданому рядку, який є виразом, що містить тільки цілі числа і знаки "+", обчислити значення виразу.

Варіант 3.

1) У заданому рядку визначити слова, розміщені в круглих дужках.

2) У заданому рядку замінити групи пробілів, що розміщені поруч, одним пробілом.

Варіант 4.

1) У заданому рядку визначити найдовше слово і надрукувати його.

2) У заданому рядку, слова якого розділені одним пробілом, визначити, чи є в ньому слова, що збігаються з останнім словом.

Варіант 5.

1) У заданому рядку визначити кількість слів, що починаються з заданої літери.

2) У заданому рядку замінити в кожному слові першу літеру, якщо вона мала, на велику.

Варіант 6.

1) У заданому рядку знайти найкоротше слово.

2) У заданому рядку, слова якого розділені одним пробілом, надрукувати всі слова, що містять задану послідовність літер.

Варіант 7.

1) У заданому рядку для кожного слова зазначити його довжину.

2) Визначити, яке за номером слово в заданому рядку тексту є найдовшим.

Варіант 8.

1) У заданому рядку визначити кількість слів, довжина яких не перевищує 3 символів.

2) У заданому рядку тексту зазначити кількість кожного символу, що зустрічається в рядку, наприклад: «П» – 1, «а» – 6, «р» – 3 і т.д.

Варіант 9.

1) У заданому рядку визначити, скільки разів зустрічається задане слово (якщо слово є складовою інших слів — це не рахувати).

2) У заданому рядку знайти всі слова, що починаються і закінчуються однаковою літерою (наприклад, «зараз», «Анапа» і т.п.).

Варіант 10.

1) У заданому рядку слова розділені довільним числом пробілів. Замінити всі пробіли комою та пробілом.

2) У заданому рядку містяться подвійні лапки ". Надрукувати всі слова, взяті в лапки.

Варіант 11.

1) У заданому рядку визначити кількість подвоєних приголосних.

2) У заданому рядку замінити всі малі літери великими і навпаки.

Варіант 12.

1) У заданому рядку визначити число слів, що містять задану літеру більше одного разу.

2) У заданому рядку, слова якого розділені або пробілом, або комою, визначити кількість слів.

Варіант 13.

1) У заданому рядку знайти всі слова, в яких літера «а» зустрічається лише раз.

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

Варіант 14.

1) Визначити, чи є в рядку S усі літери, що входять до складу заданого слова F.

2) У заданому рядку всі слова розділені одним пробілом. З кожних двох однакових слів, які розташовані поруч, видалити зайве.

4. Запишіть у зошит тексти всіх створених робочих програм. Підберіть для кожної програми по два варіанти вхідних даних. Запишіть ці вхідні дані та результати, отримані при роботі програм.

5. Запишіть висновки про зроблену роботу.

6. Надайте викладачу отримані результати.

Додаткові задачі

(на розсуд викладача)

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

2. Визначити, чи є заданий текст десятковим записом числа (цілого або дійсного).

3. Задано натуральне число N ≤ 1000. Записати це число прописом.

4. Заданий рядок містить текст англійською мовою. Знайти слова з максимальною кількістю голосних літер (a, e, i, o, u, y).

5. У заданому рядку англійського тексту визначте всі пари слів, які читаються незручно. Такими будемо вважати слова, на початку або в кінці яких знаходиться більше трьох розташованих підряд приголосних або голосних літер, наприклад «first street» (наприкінці першого і початку другого слова ідуть підряд 6 приголосних літер або 5 звуків). У цій же задачі (за бажанням) можна замість англійської використовувати російську або українську мову («текст програми» і т.п.).

6. Задано стартове слово й окремо рядок слів, розділених пробілами. Побудувати ланцюжок слів, що починаються зі стартового, де кожне таке слово починається з такої ж літери, на яку закінчується попереднє (ланцюжок будувати поки це можливо). Наприклад: стартове слово «стіна», рядок слів «укол прокат абрикос питання стоп табу». Тоді результуючий ланцюжок — «стіна абрикос стоп прокат табу укол».

7. Вираз заданий у вигляді рядка тексту, що містить цілі додатні числа, розділені одним із чотирьох символів арифметичних операцій +, –, *, /. Видати результат виразу з урахуванням порядку виконання арифметичних операцій.

8. У заданому рядку тексту знайдіть і виведіть на екран усі дати. Для дати можна визначити свій або взяти загальновживаний формат, наприклад, «число1.число2.число3», де (1 ≤ число1 ≤ 31), (1 ≤ число2 ≤ 12), (1 ≤ число3 ≤ 2100). Визначте, чи є дати коректними, наприклад, 29.2.1999 або 31.6.2000 – некоректні дати.

9. Текст програми мовою Паскаль заданий у вигляді масиву з N рядків. Знайти і видалити з тексту усі коментарі. Не забувайте, що коментар може займати кілька рядків.

10. Просте форматування тексту. Задані: текст у вигляді масиву з N рядків і ширина M. Довжина тексту в кожному рядку не перевищує M. Відформатувати текст так, щоб права межа кожного рядка дорівнювала M. Для цього між словами кожного рядка необхідно рівномірно розподілити додаткові пробіли. Довжини всіх пробільних проміжків одного рядка не повинні відрізнятися один від одного більш, ніж на 1. Останній рядок не форматується.

11. Складне форматування тексту. Умова попередньої задачі змінюється таким чином: поточна довжина будь-якого рядка може перевищувати M, всі слова в рядках записані без переносів. При форматуванні всі слова кожного рядка, що не поміщаються в границях межі M, перенести на початок наступного рядка, слова, що залишилися, розсунути за допомогою пробілів по заданій ширині. Інші умови аналогічні попередній задачі.

Контрольні питання

1. Яка структура рядка в пам'яті комп'ютера?

2. Яка максимально можлива довжина рядка?

3. Перерахуйте всі припустимі операції з рядками.

4. Як можна звернутися до окремого символу рядка?

5. Як витягти з рядка декілька символів одночасно?

6. Як замінити один окремо взятий символ рядка?

7. Як замінити в рядку один фрагмент довільної довжини іншим довільним фрагментом?

8. Для чого використовуються стандартні функції str і val?

Вказівки для викладача

При виникненні у студентів труднощів з розумінням алгоритмів обробки рядків змусьте їх ще раз відпрацювати всі лекційні приклади з обов'язковим використанням покрокового відлагоджувального режиму. Якщо для деяких задач виникнуть проблеми зі знаходженням оригінального шляху розв'язання, порадьте поетапний пошук, коли на кожному етапі можна використовувати вже відомий готовий розв'язок. Пояснюйте, що іноді зручно використовувати додаткову модифікацію даних (наприклад, додавання зайвого пробілу на початок або в кінець рядка). При цьому подальший хід алгоритму значно спрощується. Не слід в таких випадках забувати про усунення подібних модифікацій в остаточних результатах програми.

Слід по можливості уникати алгоритмів, коли для розв'язання використовується додатковий рядок або масив. У цих випадках алгоритми часто спрощуються. Проте, пояснюйте студентам, що їхня головна мета — знайти розв'язок за допомогою інтелектуального ресурсу, а не матеріального.

Лабораторна робота 2.7 Множини і записи

Мета роботи: Навчитися використовувати дані типу множин і записів для розв’язання прикладних задач.

Засоби: Інтегроване середовище програмування Turbo Pascal 7.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 3.13-3.14, с. 127-137.

2. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие. Мн.: Выш. шк.: БФ ГИТМП «Ника», 1991, с. 64-70.

Теоретичні відомості

Множина (set) — це структурований тип даних, який, на жаль, є далеко не в усіх мовах програмування. Проте з його допомогою можна створювати унікальні за красою й ефективністю алгоритми. Основна сфера застосування множин — це перевірка деякого елемента або об'єкта на належність до визначеної групи (множині) елементів або об'єктів.

Множина — це бітовий масив, де кожний біт показує — є даний елемент у множині або немає. Максимальне число елементів у множині дорівнює 256. Тому множина ніколи не займає більш ніж 32 байти (32 x 8 = 256). Число байтів, які займаються множиною, обчислюється як

ByteSize = (Max div 8) - (Min div 8) + 1,

де Min і Max — нижня і верхня межа базового типу цієї множини. Елемент із значенням E займає байт з номером:

ByteNumber = (E - Min) div 8,

а позиція біта усередині байта:

BitNumber = (E - Min) mod 8.

Необхідно пам'ятати, що при оголошенні змінної типу множини, наприклад

var s1: set of 10..30;

після початку роботи програми в пам'яті для змінної s1 буде відведена порожня комірка (усі біти = 0) розміром (30 div 8) – (10 div 8) + 1 = 3 байта. Тепер у це сховище можна поміщати цілі числа в діапазоні від 10 до 30. Так, щоб помістити в дану множину елементи 10, 11, 12, 23, 24, необхідно виконати операцію

s1 := [10..12, 23, 24];

при цьому в комірці змінної s1 біти з номерами 0, 1, 2, 13, 14 будуть встановлені в одиницю:

 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

 1  1  1  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Дані в змінну множинного типу не можна ввести безпосередньо з клавіатури або вивести на екран. Тому механізм роботи аналогічний роботі зі змінними логічного або перелічувального типу (див. роботу 2.5), наприклад:

const N1=1; N2=30;

var Team: set of N1..N2;  {команда}

    Player: 0..N2;        {номер гравця}

begin

  repeat   {введення гравця в команду}

    write(’Введіть номер гравця (0 - стоп): ’);

    read(Player);

    if Player in [N1..N2] then

      Team := Team + [Player];

  until Player = 0;

  …

  {вивід складу команди}

  writeln(’Номери гравців команди:’);

  for Player := N1 to N2 do

    if Player in Team then write(Player:3);

  writeln;

end.

Майте на увазі, що перевірка на невходження елемента в деяку множину здійснюється не конструкцією Elem not in AnySet (дві операції, що розташовані підряд), а виразом типу not (Elem in AnySet).

Тип даних record (запис) завжди використовується там, де доводиться працювати з різнотипними характеристиками однотипних об'єктів. Наприклад: однотипні об'єкти — товари, їхні різнотипні характеристики — найменування, ціна, кількість; об'єкти — люди, характеристики — ім'я, прізвище, дата народження, оклад і т.д.

Якщо характеристики об'єкта однотипні (наприклад, тільки група кількісних показників), то краще використовувати масиви, тому що в цьому випадку доступ до характеристик (елементів масиву) можна здійснювати по індексах і при цьому писати компактні циклічні алгоритми обробки.

Хочеться відзначити, що при обробці реальних складних об'єктів дуже часто доводить моделювати їх за допомогою записів.

Оскільки при обробці запису ви завжди звертаєтесь до конкретного поля визначеного типу, — команди обробки нічим особливим не відрізняються від команд обробки простих типів даних. Необхідно тільки звикнути до особливостей синтаксичного запису і потренуватися в розв’язанні конкретних задач.

Хід роботи

1. Запишіть у робочому зошиті відповіді на контрольні питання.

2. Відпрацюйте лекційні задачі №19 і №20. Обов'язково перегляньте хід виконання цих задач у покроковому відлагоджувальному режимі. У вікно спостережень вводьте всі змінні кожної задачі і всі умовні вирази (для циклів або операторів розгалуження). Запишіть у робочі зошити по два варіанти підібраних вами вхідних даних для кожної задачі і результати роботи програм.

3. Напишіть програми для розв’язання наступних задач:

Варіант 1.

1) Масив із 100 цілих чисел містить значення в діапазоні 1..200. Визначте кількість значень, які потрапляють у кожний із таких чотирьох діапазонів: 1..50, 51..100, 101..150, 151..200. Масив заповніть за допомогою генератора випадкових чисел. Для перевірок використовуйте операції з множинами.

2) В базу даних введені товари, для яких вказані код товару, назва, ціна, кількість, дата закінчення терміну зберігання. Підрахуйте збитки, якщо доведеться вилучити товари з терміном зберігання, що закінчився. Примітка: товари введіть в деякий масив довільного розміру. Для покращення порівняння дати можна перетворити на числа: рік*10000 + місяць*100 + день. Тоді дати, наприклад 5.09.2000 та 27.03.2000, легко порівняти, оскільки 20000905 > 20000327 (для таких чисел використовуйте тип Longint).

Варіант 2.

1) Задано масив із N цілих чисел. Складіть множину всіх простих чисел у діапазоні від 2 до 100. За допомогою даної множини визначте кількість простих чисел у масиві. Примітка: простими називаються цілі числа, що неможливо розкласти на цілі співмножники (діляться тільки самі на себе і на 1).

2) В деякому каталозі (масиві) містяться відомості про книги: прізвище автора, назва книги та рік видання. Знайти назву книги заданого автора, які видані, починаючи з N-го року.

Варіант 3.

1) Обчислити суму тих елементів цілої матриці розміром M x N, номера рядків і стовпчиків яких належать відповідно непустим множинам s1 і s2. Усі вхідні дані одержати за допомогою генератора випадкових чисел. Стежте, щоб елементи множин входили в діапазони рядків і стовпчиків відповідно. Примітка: множини s1 і s2 можна сформувати за допомогою типізованих констант.

2) Визначте структуру даних, яка описує студента і включає такі дані: прізвище, стать, зріст, група. Побудуйте базу даних (масив) з N студентів, для якої визначте: а) найвищого студента, б) найвищого хлопця (дівчину), в) середній зріст усіх хлопців (дівчат), г) середній зріст студентів кожної групи.

Варіант 4.

1) Скласти множину цифр, що входять у запис заданого натурального числа N. Виписати в зростаючому порядку всі цифри, що не входять у запис цього числа.

2) Організуйте масив, який містить деякі дати. Випишіть: а) всі зимові дати, б) всі дати, які менші певної заданої, в) всі помилкові дати (див. примітку до 2-ї задачі 1-го варіанту, а також додаткову задачу №8 з лабораторної роботи 2.6).

Варіант 5.

1) Для діапазону цілих чисел 1..100 скласти три множини: а) числа, кратні 3, б) числа, кратні 5, в) числа, сума цифр яких дорівнює 10. У лінійному масиві з N цілих чисел знайти: а) всі числа, що входять тільки в одну з зазначених множин, б) всі числа, що входять у будь-які дві множини, в) всі числа, що не входять у жодну з множин.

2) Організуйте дані, які описують учнів деякої школи та містять: прізвище, клас, оцінки з будь-яких п’яти предметів. Для масиву з N учнів визначте: а) учня з максимальною (мінімальною) середньою оцінкою, б) клас, який має найбільше число відмінних оцінок.

Варіант 6.

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

2) Музична колекція. Організуйте структуру для збереження відомостей про музичні твори: виконавець, альбом (збірник), час звучання, рік випуску. Введіть масив із N творами. Визначите: а) всі твори зазначеного виконавця, б) всі твори, що входять у зазначений збірник, в) твір з максимальним часом звучання, г) сумарний час звучання зазначеного збірника.

Варіант 7. *

1) Нехай визначені такі типи даних: type food = (bread, butter, milk, meat, fish, salt,              cheese, wurst, sugar, tea, coffee);     {продукти = (хліб,масло,молоко,м’ясо,риба,сіль,                  сир,ковбаса,цукор,чай,кава}      choice = set of food;  {вибір, асортимент}      shops = array[1..7] of choice;   {магазини} За допомогою типізованих констант створіть масив магазинів, із указівкою конкретного набору продуктів для кожного магазину. Визначите: а) множину продуктів, що є в усіх магазинах; б) множину продуктів, кожний із яких є хоча б в одному магазині; в) множину продуктів, котрих немає в жодному магазині.

2) Телефонний довідник. Організуйте дані для телефонного довідника, що повинні включати: прізвище, ім'я, по батькові, номер телефону (тип Longint), адресу (вулиця, будинок, квартира). Створіть масив із N записів. Визначте: а) номер телефону по заданому прізвищу; б) всі дані для абонентів із зазначеною вулицею; в) прізвище і телефон по зазначеній адресі.

4. Запишіть у зошит тексти усіх створених робочих програм. Підберіть для кожної програми деякі вхідні дані. Запишіть ці вхідні дані і результати, які будуть отримані при роботі програм.

5. Запишіть висновки про зроблену роботу.

6. Надайте викладачу отримані результати.

Контрольні питання

1. Що означають операції об'єднання, перетинання, віднімання множин?

2. Яким чином можна ввести (вивести) дані множинного типу?

3. Де варто використовувати дані множинних типів?

4. Коли застосовуються дані типу запис?

5. Як звернутися до поля змінної типу запис?

6. Як звернутися до поля змінної, що, у свою чергу, є полем іншої змінної типу запис?

7. Для чого використовується оператор with?

Вказівки для викладача

Зверніть увагу на уміння студентів використовувати операції з множинами (особливо об'єднання, перетинання і віднімання).

Зверніть увагу, що для другої задачі 1-го, 6-го і 7-го варіантів необхідно визначити дані, у яких полем запису є ще один запис (дата, час, адреса). Для обробки таких даних доцільно використовувати перетворення на зразок тих, що зазначені для 1-го варіанта (для часу це може бути, наприклад, загальний час у секундах).

Порекомендуйте (де використовується ручне введення) для етапу налагодження визначати вхідні дані у виді типізованих констант. У остаточному варіанті типізовані константи можна закоментувати і використовувати введення даних у змінні з клавіатури.

Рекомендується 7-й варіант використовувати для більш підготовлених студентів.

Лабораторна робота 2.8 Процедури і функції

Мета роботи: Навчитися використовувати підпрограми для структуризації складних рішень.

Засоби: Інтегроване середовище програмування Turbo Pascal 7.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 3.15, с. 138-152.

2. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие. Мн.: Выш. шк.: БФ ГИТМП «Ника», 1991, с. 44-55.

Теоретичні відомості

При розв’язуванні певних задач дуже важливим є уміння розділяти задачу на окремі закінчені підзадачі, які потім можуть бути пов'язані в єдине рішення. Тут виявляються аналітичні властивості вашого мислення, і головним засобом його реалізації в комп'ютерних програмах є процедури і функції.

Навчіться мислити такими категоріями (підзадачами), щоб рішення задачі складалося у вас суто з кількох речень. Після цього вирішуйте кожну використану вами категорію як окрему задачу, для якої визначте вхідні дані й отримувані результати. Якщо подібних категорій чимало і ви ризикуєте заплутатися в остаточному виборі, — обов'язково складайте схему побудови рішення у вигляді ієрархічного дерева. Наприклад:

Звісно ж, замість умовних позначень підзадач вам краще писати назви за змістом виконуваних ними дій. Якщо підзадача просто виконує деякі дії, то це — процедура. Якщо ж в результаті рішення підзадачі повинно бути отримане деяке значення простого типу — це функція. Вхідні дані для рішення підзадач — це їхні параметри (непогано їх також позначити на схемі). Якщо результатів, які повертаються, декілька, то їх оформляють у вигляді параметрів, які передаються по посиланню (у цьому випадку може використовуватися як функція, так і процедура). Формальними параметрами вважаються ті, що ви використовуєте для написання алгоритму процедури або функції (вони ще не мають конкретних значень). Фактичні параметри підставляються у виклики процедур або функцій уже при їхньому використанні в інших алгоритмах.

Відгалуження від підзадачі відсутні, якщо всі засоби для її розв’язання вже є (наприклад, вмонтовані або бібліотечні підпрограми). Вважається, що така підзадача вирішена. Загальне рішення закінчується, коли вирішені всі підзадачі.

Фактично описана побудова рішення складної задачі виконується методом послідовного уточнення.

Реалізація даного методу рішення завжди здійснюється в зворотному порядку, тобто знизу вгору. Спочатку в тексті програми записуються підпрограми найнижчого рівня (1.3.1 і 1.3.2), потім із їхньою допомогою конструюються підпрограми наступного рівня (1.1, 1.2, 1.3, 3.1, 3.2). На завершення пишуться підпрограми останнього підрівня (1, 2 і 3). Остаточне рішення «збирається» у тілі основної програми тільки за допомогою останніх трьох підпрограм.

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

Хід роботи

1. Запишіть у робочому зошиті відповіді на контрольні питання.

2. Відпрацюйте лекційні задачі №21 і №22. Хід виконання задачі №22 перегляньте в покроковому відлагоджувальному режимі. Спочатку використовуйте тільки клавішу F8 (без заходу в підпрограми; процедура або функція виконується за один крок налагодження), а потім повторно перегляньте хід виконання програми за допомогою клавіші F7 (при виконанні підпрограми здійснюється вхід усередину її алгоритму). Спробуйте вводити у вікно спостереження як глобальні, так і локальні змінні й умовні вирази. Зверніть увагу, як відображає відлагоджувальник значення локальних змінних при виході з відповідних процедур. Особливу увагу зверніть на значення тих змінних, чиї імена в глобальних і локальних списках збігаються (для задачі №22 це a і x). Запишіть у робочі зошити по два варіанти підібраних вами вхідних даних для кожної задачі і результати роботи програм.

3. Напишіть програми для вирішення наступних задач (намагайтеся максимально розділити задачу на підпрограми так, щоб тіло основної програми складалося тільки з викликів цих підпрограм, як, наприклад, у лекційних задачах №21 і №22):

Варіант 1.

1) Дано відрізки a, b, c, d. Для кожної трійки цих відрізків визначити можливість побудови трикутника і вивести його площу на екран. При виведенні результатів повинно бути зрозуміло, із яких же відрізків будувався трикутник.

2) Визначити найбільший загальний дільник (НЗД) трьох цілих чисел. Примітка: використовуйте функцію НЗД для двох цілих чисел. Результат виведіть у вигляді «НЗД = … для …, … и …». Продумайте механізм передачі параметрів.

Варіант 2.

1) Для заданого x обчислити sh(x)∙tg(x+1)–tg2(2+sh(x–1)). Примітка: гіперболічний синус sh x = (ex–e–x)/2.

2) Нехай процедура cancellation(a,b,p,q) від цілих параметрів (b ≠ 0) робить дріб a/b нескоротним p/q. Напишіть програму, яка реалізує дану процедуру для скорочення простих дробів. Примітка 1: для скорочення дробів використовуйте функцію найбільшого загального дільника (НЗД). Примітка 2: Подумайте, які параметри є вхідними даними, а які — результатами. Який механізм передачі параметрів при цьому використовувати?

Варіант 3.

1) Нехай процедура maxmin(x,y) надає параметру x більше з дійсних чисел x і y, а параметру y — менше. Напишіть програму, що за допомогою даної процедури перерозподіляє вхідні значення трьох дійсних змінних a, b і c так, щоб стало a ≥ b ≥ c. Див. примітку 2 до 2-й задачі 2-го варіанта.

2) Створити для дійсного x і натурального n функцію, яка обчислює xn за допомогою множення. Обчисліть за допомогою даної функції вираз b = 2.7k+(a+1)-5.

Варіант 4.

1) Нехай є дані: const n = 100; type  vector = array[1..n] of real; var   a, b, c, d: vector; Нехай процедура sum(x, y, z) надає вектору z суму векторів x і y. Напишіть програму, що обчислить вираз d = a + b + c. Примітка: для введення вхідних даних використовуйте генератор випадкових чисел. Під сумою векторів слід також розуміти вектор, в якому кожний елемент дорівнює сумі відповідних елементів масивів. Додатково див. примітку 2 до 2-ї задачі 2-го варіанта.

2) Дано довжини a, b і c сторін деякого трикутника. Знайти медіани трикутника, які утворюються з медіан початкового трикутника. Примітка: довжина медіани, проведеної до сторони a, дорівнює [image] .

Варіант 5.

1) Скільки квитків спортлото (5 із 36 або 6 із 49) необхідно придбати, щоб одержати максимальний виграш із 100% ймовірністю? Примітка: визначте функцію, яка обчислює число сполучень із n по m ( [image] , де n! = 1∙2∙3∙…∙n — факторіал числа n).

2) У заданому рядку z замінити усі фрагменти x на фрагменти y. Для рішення використовуйте власну функцію pos(f, s, p), що повертає позицію першого входження фрагмента f у рядок s, коли пошук починається з p-го символу рядка s.

Варіант 6.

1) Якщо координати вершин трикутника в прямокутній системі координат дорівнюють (x1, y1), (x2, y2), (x3, y3), то площа цього трикутника дорівнює 0.5·|x1y2+x2y3+x3y1–x1y3–x2y1–x3y2|. Використовуючи цю властивість, напишіть програму для обчислення площі чотирикутника, заданого координатами своїх вершин.

2) Задано ціле число в інтервалі 1…999999999. Записати дане число прописом, використовуючи функції для визначення сотень, десятків і одиниць. Додатково (на розсуд викладача): домагайтесь чіткої відповідності закінчень у таких сполученнях, як, наприклад, «сорок один мільйон», «двісті одинадцять мільйонів», «п'ятдесят чотири мільйони» і т.п. У противному разі можна просто використовувати «… мільйонів … тисяч …». Додатково можна додати назву грошової одиниці.

Варіант 7.

1) Дано координати вершин трикутника і координати деякої точки усередині нього. Знайти відстань від даної точки до найближчої сторони трикутника. Примітка: при визначенні відстаней врахувати, що площа трикутника обчислюється через три його сторони, а також через основу і висоту. Визначте функції для обчислення довжини відрізка по координатах його кінців, площі по трьох сторонах (по формулі Герона), висоти (відстані) до протилежної сторони, мінімального з двох чисел. Використовуйте ці функції для побудови рішення.

2) У інтервалі натуральних чисел n…2n визначити усі «числа-близнюки». Примітка: «близнюками» називають пару простих чисел, різниця між якими дорівнює двом (наприклад, 41 і 43). Див. примітку до 1-ої задачі 2-го варіанта лабораторної роботи 2.7.

4. Запишіть у зошит тексти всіх створених робочих програм. Підберіть для кожної програми деякі вхідні дані. Запишіть ці вхідні дані і результати, отримані при роботі програм.

5. Запишіть висновки про зроблену роботу.

6. Надайте викладачу отримані результати.

Контрольні питання

1. Для чого потрібні підпрограми?

2. Назвіть різновиди підпрограм, що використовуються у Паскалі. У чому їхні особливості?

3. Для чого підпрограмам потрібні параметри?

4. Які параметри називаються формальними, а які фактичними?

5. У чому суть передачі параметрів за значенням і по посиланню?

6. У чому полягає метод послідовного уточнення?

7. Поясніть суть глобальних і локальних змінних.

8. Що таке директиви компілятора? Поясніть призначення директиви I. Як її правильно записати?

Вказівки для викладача

Вважайте, що варіанти завдань у цій роботі розташовані за зростанням рівня складності.

Звертайте увагу на спроможність студентів виділяти з наданої задачі окремі підзадачі. Бажано, щоб у тілі основної програми були відсутні допоміжні важкозрозумілі фрагменти коду.

Студенти повинні самостійно розібратися, які дані є вхідними, і їх необхідно ввести в програму тим або іншим способом, а що є результатом, і як він повинен бути відображений. Діалог із програмою повинен бути таким, щоб навіть сторонній людині було зрозуміло, що вона повинна ввести і які результати вивела програма.

Лабораторна робота 2.9 Файли

Мета роботи: Навчитися використовувати ввід-вивід даних із магнітних носіїв як основний засіб обміну даними в системах.

Засоби: Інтегроване середовище програмування Turbo Pascal 7.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 3.16, с. 152-165.

2. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие. Мн.: Выш. шк.: БФ ГИТМП «Ника», 1991, с. 71-92.

Теоретичні відомості

Дотепер ви працювали і не підозрювали, що будь-який ввід-вивід даних ваші програми на Паскалі виконували за допомогою файлів. Дійсно, стандартні оператори вводу-виводу read і write по умовчанню зв'язуються з текстовим файлом, що асоціюється з консоллю. З клавіатурою пов'язаний текстовий файл Input, а з екраном — Output. Саме тому оператор read приймає символьні дані з клавіатури (із файла Input), а оператор write виводить аналогічні символьні дані на екран монітора (у файл Output). Якщо ж ввід-вивід потрібно зв'язати з іншим файлом, то це необхідно зазначити вручну.

Будь-яка робота з файлом здійснюється за допомогою файлової змінної. Файлова змінна є структурою типу запис. Такий запис містить множину полів, що дають повну інформацію про файл. Тому з файловою змінною зручніше працювати. Не потрібно щоразу для правильного вводу-виводу повідомляти ім'я файла, де він знаходиться, який його розмір і розмір окремої компоненти, де розташований поточний покажчик. Лише раз усе це записується у файлову змінну (за допомогою процедури assign), а потім в операторах вводу-виводу вказується ця файлова змінна, і потік інформації замість консолі спрямовується до потрібного джерела.

Запис типізованих і нетипізованих файлів займає 128 байт і має таку структуру (описана в системній бібліотеці в модулі, відповідальному за роботу з MS-DOS):

type

  FileRec = record

              Handle: Word;

              Mode: Word;

              RecSize: Word;

              Private: array[1..26] of Byte;

              UserData: array[1..16] of Byte;

              Name: array[0..79] of Char;

            end;

Запис текстового файла займає 256 байт і має структуру:

type

  TextBuf = array[0..127] of Char;

  TextRec = record

              Handle: Word;

              Mode: Word;

              BufSize: Word;

              Private: Word;

              BufPos: Word;

              BufEnd: Word;

              BufPtr: ^TextBuf;

              OpenFunc: Pointer;

              InOutFunc: Pointer;

              FlushFunc: Pointer;

              CloseFunc: Pointer;

              UserData: array[1..16] of Byte;

              Name: array[0..79] of Char;

              Buffer: TextBuf;

            end;

Handle містить оброблювач файла, який повертається з DOS. Поле Mode (режим) може приймати одне зі значень:

const

  fmClosed = $D7B0; {файл закритий}

  fmInput  = $D7B1; {файл відкритий для вводу (Reset)}

  fmOutput = $D7B2; {файл відкритий для виводу                      (Rewrite)}

  fmInOut  = $D7B3; {відкритий для вводу-виводу (для                 типізованих і нетипізованих файлів)}

Всі інші значення означають, що файлова змінна не була ініціалізована (за допомогою assign).

Поле UserData ніколи не використовується Turbo Pascal і може вільно використовуватися програмістом.

Поле Name містить ім'я файла, яке подано послідовністю символів (включаючи шлях до файла), яка завершується символом із нульовим кодом (#0).

Для типізованих і нетипізованих файлів поле RecSize містить довжину запису в байтах. Поле Private не використовується, але зарезервовано.

Для текстових файлів BufPtr — покажчик на буфер довжиною BufSize байт, BufPos — індекс наступного символу в буфері для читання або запису, BufEnd — кількість символів, що залишилися у буфері. OpenFunc, InOutFunc, FlushFunc, CloseFunc — покажчики на програми вводу-виводу, що управляють файлом.

Взагалі знати повні структури файлових записів не обов'язково. Наведена інформація в основному призначена для допитливих студентів і для того, щоб краще уявляти механізми роботи з файлами.

Далі цілком очевидний порядок роботи з будь-яким файлом:

1) Файлова змінна зв'язується з фізичним файлом за допомогою процедури assign. При цьому вся інформація про файл компактно розміщується в полях файлової змінної.

2) Оскільки всі операції з файлами виконує MS-DOS, необхідно зв'язатися з відповідними модулями операційної системи і повідомити їм із яким файлом ви хочете працювати і що саме ви хочете з ним робити. Для цього і використовуються процедури відкриття файла reset і rewrite. Вказуючи їм файлову змінну як аргумент, ви цим даєте DOS повну інформацію для роботи з файлом.

3) Тепер можна обмінюватися інформацією з файлом. Оскільки можна одночасно працювати відразу з декількома файлами, для операторів read і write потрібно конкретно вказувати, із яким файлом виконується робота. Щоб із тексту програми визначити, куди ж направляється ввід-вивід, потрібно просто подивитися на першу змінну в списку аргументів операторів read і write, а потім по розділу оголошень (секція var) визначити її тип. Якщо це файловий тип — шукайте процедуру assign, щоб визначити ім'я файла і місце його розташування. Якщо ж перша змінна не файлового типу, то ввід-вивід здійснюється з консолі. От і все. Отримавши інформацію, ви обробляєте її на свій розсуд. Для зберігання результатів обробки ви спрямовуєте цю інформацію у відповідний файл.

4) У будь-якій роботі важливо правильно її закінчити. Тому, завершивши операції вводу-виводу інформації, потрібно сповістити про це DOS. Це і виконується за допомогою оператора закриття файла close із зазначенням йому файлової змінної як аргументу. Роботу з файлами DOS завжди буферізує, оскільки це значно збільшує швидкість роботи з таким відносно інерційним пристроєм, як дисковод. Тому при закритті DOS звільняє відповідний оброблювач файла (Handle) і перевіряє, якщо виконувався вивід інформації у файл, то примусово здійснює запис вмісту буфера цього файла на диск. Оброблювач файла є тими програмними засобами DOS, які система повинна задіяти в роботі з конкретним файлом. Тому для звільнення оброблювача файл завжди потрібно коректно закривати, навіть якщо при цьому використовувалося тільки читання інформації.

Оскільки після закриття файла інформація про нього у файлової змінної зберігається, можна знову відкрити цей же файл за допомогою цієї ж змінної. Звичайно, якщо обробка інформації триває достатньо довго без звертань до файла, то доцільно відкрити файл для читання, завантажити з нього інформацію (наприклад, у змінну-масив) і закрити файл. Після закінчення опрацювання можна знову відчинити файл для відновлення, записати в нього результати і закрити. Це забезпечує додаткову безпеку роботи з файлом у випадку яких-небудь збоїв.

Якщо ж інформація у файловій змінній більше не потрібна, то файлову змінну можна зв'язати з іншим фізичним файлом і почати з ним роботу. При цьому попередня інформація в полях файлової змінної заміняється на нову.

Зверніть увагу, що тільки текстові файли мають послідовний механізм доступу, оскільки розмір кожній компоненти (рядка) заздалегідь не відомий. Саме тому текстовий файл може бути відкритий або тільки для читання (доступ до N-го рядка здійснюється тільки після прочитання попередніх N – 1 рядків), або тільки для запису (дозапису). При цьому запис завжди здійснюється в кінець файла. Неможливо перезаписати рядок усередині файла. Якщо ж таке необхідно, то усі внутрішні зміни виконуються при обробці в пам'яті комп'ютера, а потім файл цілком перезаписується.

Типізовані і нетипізовані файли завдяки фіксованій довжині компонент (у нетипізованих файлах компонентою є блок) дозволяють працювати з інформацією в режимі довільного доступу. Це означає, що можна в будь-який момент перемістити покажчик файла до будь-якої компоненти як вперед, так і назад, а також довільно чергувати операції читання і запису компонент. Саме тому в цих файлах відсутня процедура дозапису (append), оскільки у файлі, відкритому процедурою reset, можна перезаписувати поточну компоненту або додавати нову, перемістившись на кінець файла.

Хід роботи

1. Запишіть у робочий зошит відповіді на контрольні питання.

2. Відпрацюйте лекційні демонстраційні програми Text_input і Employee (програму Copy — на розсуд викладача). Відлагоджувальник використовуйте за необхідністю. Зверніть увагу, що результуючий файл ці програми створюють у вашому поточному робочому каталозі (із якого запускалась система Turbo Pascal). Файли переглядайте за допомогою вмонтованих засобів командної оболонки. Якщо виникнуть проблеми з розумінням механізму роботи з файлом, то спробуйте відпрацювати програму у відлагоджувальнику, спостерігаючи файлову змінну і змінну, в яку читається або за допомогою якої записується інформація. На жаль, досліджувати функцію EOF Turbo Pascal не надає можливості. Майте на увазі, що при повторному запуску програми Text_input і введенні такого ж імені файла його попередній вміст буде очищено (через команду rewrite). При перегляді у командері результуючого файла, створеного програмою Employee, ви виявите, що числові поля переглянути в зручному вигляді неможливо, оскільки числові дані комп'ютер завжди кодує у двійковій системі, а також багатобайтові числові структури (integer — 2 байта, real — 6 байт) розташовує навпаки: спочатку молодші байти, потім — старші. Переглядач інтерпретує всі байти як символьні коди. Результати відпрацювання проаналізуйте і запишіть у робочий зошит.

3. Для виконання більшості із наступних завдань необхідно попередньо підготувати файл із вхідною інформацією. Рекомендується робити це за допомогою або вмонтованого текстового редактора командної оболонки (Shift-F4), або системного текстового редактора (Edit — у MS-DOS, Блокнот — у Windows). Для формування файла з числовою послідовністю зробіть так. За допомогою текстового редактора створіть новий файл, дайте йому ім'я (наприклад, info.dat). Введіть числа (для десяткового знака використовуйте точку), відділяючи їх друг від друга пробілом або переведенням рядка (клавіша Enter). Можна комбінувати: декілька рядків чисел, розділених пробілами. Після останнього числа не вводьте нічого (ні пробілу, ні Enter). Збережіть файл. Після цього можете підключати його в програму за допомогою процедури assign. Працювати з таким файлом необхідно як із текстовим. При цьому введення даних у числові змінні здійснюється процедурою read, як при введенні їх з клавіатури. Тобто ваш файл заміняє консольний текстовий файл Input. За необхідністю мати типізований файл із вхідними даними формуйте його за допомогою окремої допоміжної програми і генератора випадкових чисел.

4. Напишіть програми для вирішення таких задач (по варіантах):

1) Вхідний файл містить послідовність дійсних чисел. Визначити суму додатних, суму від’ємних і кількість нульових елементів.

2) Дано файл, що складається з цілих чисел. Визначити порядковий номер і розмір максимальної і мінімальної компоненти.

3) Компонентами вхідного файла є цілі числа. Визначити кількість парних чисел, кількість подвоєних непарних чисел, кількість непарних чисел, які кратні 3.

4) Задано довільний текстовий файл. Вивести на екран рядок максимальної довжини.

5) Задано довільний текстовий файл. Підрахувати кількість порожніх рядків у цьому файлі. Сформувати новий файл, у якому порожні рядки повинні бути відсутніми.

6) Надрукувати на екрані зміст заданого текстового файла, вставляючи на початок кожного рядка, який друкується, його порядковий номер (він повинен займати 4 позиції) і пробіл.

7) У вхідному текстовому файлі визначити рядки, у яких задана фраза повторюється не менше двох разів.

8) Дано текстовий файл. Сформувати з нього новий файл, у якому всі символи будуть розташовуватися в зворотному порядку. Примітка: робота значно спроститься, якщо працювати з текстовим файлом як з типізованим символьним файлом.

9) Існує файл дійсних чисел. Визначити найдовшу послідовність, що не убуває, і видати її колонками по 10 елементів у рядку на екран.

10) «Трапеція». По заданих числах M і N сформувати текстовий файл, що складається з M рядків, кожний символ яких є зірочкою *. Довжина першого рядка дорівнює N. Довжина кожного наступного рядка на одиницю більша за довжину попереднього.

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

12) У вихідному текстовому файлі знайти всі числа (а не їх окремі цифри!) і сформувати з них новий типізований файл із компонентами дійсного типу.

13) Нехай заданий текстовий файл, слова в рядках якого розділені одним пробілом. Знайти всі слова, що починаються з заданої літери. З цих слів сформувати новий файл так, щоб кожне слово починалося з окремого рядка.

14) Дано два текстових файли. У першому знаходиться довільний текст, у другому — один рядок слів, розділених одним пробілом. Визначити, скільки разів кожне слово другого файла зустрічається в першому файлі. Примітка: процедура reset, яка застосовується до відкритого файла, просто скидає покажчик файла на початок.

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

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

17) Задано текстовий файл, у якому кожний абзац починається як мінімум із трьох пробілів. Підрахувати загальну кількість символів у файлі, кількість непустих символів, тобто літер, цифр і розділових знаків, кількість рядків і кількість абзаців.

18) Вхідний файл складається з натуральних чисел. Перші два числа визначають розміри екрана (по X і по Y). Кількість чисел, що залишилися, кратна 4. Перші два числа кожної четвірки задають положення (x, y) лівого верхнього кута прямокутника, наступні два числа — положення правого нижнього кута. Видати на екран дані про всі прямокутники, що потрапляють у верхню половину екрана. Примітка: вісь Y на екрані монітора повернена униз, початок координат — у лівому верхньому куті.

19) Задано файл із N цілих компонент. Сформувати новий файл, що буде складатися з сум компонент a1+aN, a2+aN–1, a3+aN–2, …, ak+am для k ≤ m. Видати вміст отриманого файла на екран.

20) Дано файл із текстом англійською мовою. Підрахувати кількість кожної із літер у файлі. Результат вивести на екран п'ятьма стовпчиками, наприклад a - 28  b - 9   c - 14  d - 7   e - 21 f - 6   g - 0   h - 7   … … Примітка: скористайтеся масивом, який проіндексований символами англійського алфавіту.

21) Напишіть дві програми. Перша формує файл із даними про здачу студентами сесії, кожний запис якого містить прізвище студента, групу і 5 оцінок по дисциплінам, що здаються. Друга програма читає файл даних, виводить усі відомості про студентів, які мають заборгованості і створює другий файл, у який повинні потрапити дані про студентів, що успішно здали сесію.

22) Дано файл, що містить інформацію про багаж декількох пасажирів. Кожна пара чисел містить дані про багаж одного пасажира: кількість речей і загальна вага речей. Знайти: а) кількість пасажирів, що мають більш 3 речей; б) чи існує пасажир, у якого і число речей, і їхня загальна вага більше, ніж у всіх інших; в) кількість пасажирів, у яких середня вага однієї речі не менше заданого x.

23) Напишіть дві програми. Перша формує файл даних про учнів деякої школи: прізвище, ім'я, клас (номер класу й окремо літера). За допомогою другої програми визначте: а) чи є в школі учні з однаковими прізвищами; б) кількість учнів у кожному класі; в) вивести список учнів заданого класу у форматі «И. Прізвище»; г) в яких класах (1-их, 5-их, 9-их і т.п.) найбільше учнів.

24) За допомогою однієї програми сформуйте дані про кубики: довжина ребра в сантиметрах, колір (червоний, жовтий, зелений або синій) і матеріал (дерев'яний, металевий, картонний). За допомогою іншої програми визначте: а) кількість кубиків кожного з перерахованих кольорів і їхній сумарний обсяг; б) кількість дерев'яних кубиків із ребром 3 см і кількість металевих кубиків із ребром, більшим ніж 5 см.

5. Запишіть у зошит тексти всіх створених робочих програм. Підберіть для кожного завдання деякі вхідні дані. Запишіть ці вхідні дані і результати, отримані при роботі програм.

6. Запишіть висновки про зроблену роботу.

7. Надайте викладачу отримані результати.

Контрольні питання

1. Що таке файл?

2. Для чого потрібні файли?

3. Які типи файлів використовуються в Turbo Pascal?

4. Які файли використовують механізм послідовного, а які — механізм довільного доступу? Чому?

5. Викладіть загальний порядок роботи з будь-яким файлом.

6. Які процедури можна використовувати при роботі з текстовим файлом, відкритим процедурою reset, rewrite, append?

7. Які процедури можна використовувати при роботі з типізованим файлом, відкритим процедурою reset, rewrite?

8. У яких випадках використовують файли без типу (нетипізовані)?

Вказівки для викладача

Залежно від рівня підготовки студентів можна формувати завдання з одного або декількох варіантів задач.

Варіанти приблизно розташовані по зростанню рівня складності.

Простежте, щоб студенти розібралися, у якому вигляді представити вхідні дані, а в якому — кінцеві результати.

Найбільш поширена помилка при переміщеннях по компонентах типізованих файлів полягає в тому, що студенти забувають про нумерацію компонент файла з нуля. При цьому кількість компонент від першої до поточної на одиницю більша номера поточної компоненти.


line

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ ПОДІЛЛЯ

А. Ю. Мазарчук

С. А. Франчук

ІНФОРМАТИКА

Лабораторні роботи

Частина 3

Методичний посібник для виконання практичних і лабораторних робіт з курсів «Інформатика» і «Інформатика та комп’ютерна техніка» для спеціальностей 7.050201 «Менеджмент організацій» і 7.050102 «Економічна кібернетика»

Затверджено на засіданні кафедри автоматизованих систем і моделювання в економіці, протокол №10 від 29 червня 2000 р.

Хмельницький

2000

ЗМІСТ

ОСНОВНІ ВИМОГИ ДО ВИКОНАННЯ РОБІТ.. 4

ЧАСТИНА 3. РОБОТА КОРИСТУВАЧА В ОС WINDOWS.. 5

Лабораторна робота 3.1. Windows-практикум.. 5

Лабораторна робота 3.2. Прості текстові документи. 49

Лабораторна робота 3.3. Редактор формул. 53

Лабораторна робота 3.4. Документи з ілюстраціями. 56

Лабораторна робота 3.5. Табличні документи. 61

Лабораторна робота 3.6. Прості електронні таблиці 64

Лабораторна робота 3.7. Діаграми. 69

Лабораторна робота 3.8. Таблиці підстановки для прогнозування. 75

Лабораторна робота 3.9. Проста база даних. 79

ОСНОВНІ ВИМОГИ ДО ВИКОНАННЯ РОБІТ

Цикл лабораторних робіт даного посібника розрахований на три семестри з приблизним навантаженням 34-36 годин аудиторних занять на семестр. За наявністю достатнього комп'ютерного фонду окремі роботи за рішенням викладача можуть бути винесені на самостійну роботу.

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

При підготовці до роботи студент повинен записати в робочий зошит номер і назву роботи, мету роботи і список використовуваних засобів. При необхідності далі можуть бути коротко законспектовані основні положення теоретичного огляду. Далі повинен бути записаний план майбутньої роботи, котрий студент самостійно складає на підставі описаного «Ходу роботи». Якщо першим пунктом ходу роботи записано дати відповідь на контрольні питання, то далі в зошиті повинні бути записані відповіді на ці питання. Відповіді повинні бути стислими, але вичерпними. Попереднє виконання деяких практичних елементів викладач може визначити додатково.

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

Оформлені матеріали і файли з результатами роботи надаються викладачу для захисту. Для контролю якості і повноти виконання роботи викладач може скористатися контрольними питаннями і запитати пояснення ходу виконання конкретних елементів роботи.

ЧАСТИНА 3 РОБОТА КОРИСТУВАЧА В ОС WINDOWS

Лабораторна робота 3.1 Windows-практикум

Мета роботи: Ознайомитися з основними прийомами роботи в графічному середовищі користувача операційної системи Windows.

Засоби: Операційна система Windows NT Workstation 4.0, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 4.1-4.3, с. 166-175.

2. Первое знакомство с Windows NT Workstation: руководство пользователя. Корпорация Microsoft. 1997. – Электронный вариант.

Теоретичні відомості

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

Для того, щоб виконати завдання конкретної роботи, вам доведеться, скориставшись базовими поняттями лекційного матеріалу, самостійно знайти шляхи рішення за допомогою визначеного програмного інструмента. Тому особливу увагу рекомендується приділити роботі з довідковою системою Windows, навчитися визначати ключові слова проблеми, з якою ви працюєте, і знаходити з їхньою допомогою потрібну інформацію. Якщо вас спіткала невдача, спробуйте сформулювати близькі поняття або підібрати синоніми. Якщо і це не допомагає — можливо ви просто мислите іншими категоріями. У цьому випадку можна скористатися змістом довідки того інструмента, у якому ви працюєте, де чітко і послідовно викладаються основи всіх понять і можливостей, що вам можуть знадобитися. Зрозумівши суть справи, ви зможете набагато краще провести пошук з будь-якого питання, яке вас цікавить. Зверніть увагу, що навіть навчитися працювати в Windows вам може допомогти сама Windows. Потрібно лише вміти це робити.

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

Даний практикум головним чином призначений для тих, хто раніш не мав можливості ознайомитися з роботою в графічному інтерфейсі Windows, а також для тих, хто бажає надолужити згаяне у власних навичках. У Windows одну і ту ж роботу часто можна виконати кількома різноманітними засобами. Згодом у вас з’являться преваги, завдяки яким ви кожну конкретну роботу будете виконувати певним конкретним способом. Проте, навіть для людей із уже сформованими поглядами буває корисно часом ще раз переглянути інші можливості виконання тієї або іншої роботи, оскільки раніше ви, можливо, просто не звертали уваги на деякі моменти, що тепер можуть виявитися для вас привабливими.

Нижче наведені фрагменти оригінальної документації фірми Microsoft для керівництва користувача в операційній системі Windows NT Workstation російською мовою. Рекомендується уважно вивчити даний матеріал або скористатися довідковою системою Windows для того, щоб достатньою мірою опанувати прийоми ефективної роботи з основними засобами графічної оболонки даної операційної системи.

Введение в систему Windows NT Workstation 4.0

В этом разделе перечислены наиболее важные свойства Windows NT Workstation 4.0, благодаря которым эта операционная система отвечает самым строгим требованиям современного делового мира.

Простота использования, быстродействие и совместимость

Система Windows NT Workstation 4.0 использует удобный интерфейс Windows 95, упрощающий и ускоряющий выполнение задач. Windows NT Workstation 4.0 обеспечивает высокое быстродействие 32-разрядных программ. Все 16-разрядные программы для Windows получают возможность использования преимуществ приоритетной многозадачности Windows NT Workstation 4.0 и могут выполняться в отдельном адресном пространстве для повышения скорости и надежности работы.

Вход в Windows NT и выход из системы

В этом разделе рассказывается, как войти в систему Windows NT и начать работу, а также как завершить работу системы.

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

Чтобы войти в систему Windows NT

1. После запуска компьютера и появления на экране диалогового окна Добро пожаловать нажмите клавиши CTRL+ALT+DeLETE.

На экран выводится диалоговое окно Вход в систему.

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

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

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

3. В окне приветствия Windows NT нажмите одну из следующих кнопок:

· Кнопка «Новые возможности» выводит ответы на вопросы, наиболее часто задаваемые пользователями Windows NT.

· Кнопка «Справка» позволяет найти нужные справочные сведения по теме, названию раздела или отдельным словам и фразам.

· Кнопка «Следующий совет» отображает следующий совет в окне приветствия.

· Кнопка «Закрыть» закрывает окно приветствия и позволяет начать работу с Windows NT.

Чтобы начать работу в Windows NT

· Нажмите кнопку «Пуск» для открытия главного меню Windows NT.

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

Чтобы завершить работу Windows NT перед отключением компьютера

1. Нажмите кнопку «Пуск» и выберите команду Завершение работы.

2. Установите переключатель «Выключить компьютер» и нажмите кнопку «Да».

Если вы забыли сохранить внесенные в документы изменения, Windows NT предложит вам сделать это.

Когда компьютер можно будет безопасно отключить, на экране появится соответствующее сообщение.

Осторожно! Перед отключением питания или перезапуском компьютера необходимо всегда завершать работу Windows NT. Это гарантирует, что проделанная работа будет сохранена на жестком диске.

Получение справочных сведений

Справочная система является основным источником сведений о Windows NT.

Windows NT содержит справочные сведения двух типов:

· сведения о выполнении отдельных задач;

· сведения об элементах экрана и диалоговых окон.

Если справка вызвана с помощью кнопки «Пуск» либо меню Справка (?) папки «Мой компьютер» или других папок, на экран выводятся справочные сведения о системе Windows NT. При использовании меню Справка (?) программы, например текстового редактора Wordpad, графического редактора Paint или текстового процессора Microsoft Word, на экран выводятся справочные сведения об этой программе.

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

1. Нажмите кнопку «Пуск» и выберите команду Справка.

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

3. Вкладка «Содержание» окна справки предназначена для поиска нужного раздела по теме, а вкладки «Предметный указатель» и «Поиск» позволяют найти справочные сведения по ключевым словам и названиям разделов или по отдельным словам и фразам.

4. Некоторые разделы справки содержат слова и фразы, выделенные зеленым цветом и подчеркиванием. Чтобы увидеть определение выделенного термина, укажите на него и нажмите кнопку мыши.

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

Чтобы найти нужные справочные сведения с помощью содержания

Выберите вкладку «Содержание». На экране появится список разделов справки, упорядоченный по темам.

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

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

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

Выберите вкладку «Поиск». На экране появится список всех разделов, содержащих указанное слово или фразу.

Кнопка «Что это такое?» в правом верхнем углу окна позволяет легко получить сведения об элементе диалогового окна.

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

1. Нажмите кнопку «Что это такое?». Указатель мыши изменит вид.

2. Укажите на элемент диалогового окна, о котором нужно получить справку, и нажмите кнопку мыши. На экране появится всплывающее описание элемента.

3. Чтобы убрать описание с экрана, нажмите кнопку мыши.

Рабочий стол Windows NT

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

Новые элементы экрана Windows NT

Набор элементов, появляющийся на рабочем столе при запуске Windows NT, зависит от настройки компьютера. Самыми важными из новых элементов Windows NT являются кнопка «Пуск» и значки «Мой компьютер», «Сетевое окружение» и «Корзина».

Мой компьютер

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

Сетевое окружение

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

Internet Explorer

Этот значок используется для просмотра страниц Web в локальной сети и/или Интернете.

Корзина

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

Чтобы удалить файл, перетащите его с помощью мыши на значок корзины.

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

Важно! Если удалить файл в окне командной строки или с гибкого диска, он не сохраняется в корзине, а уничтожается без возможности восстановления.

Портфель

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

Входящие

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

Кнопка «Пуск»

При первом запуске Windows NT кнопка «Пуск» и панель задач расположены в нижней части экрана. По умолчанию они отображаются на экране в течение всего сеанса работы с Windows NT. Кнопка «Пуск» позволяет запустить программу, открыть документ, изменить настройку системы, найти нужный файл, получить справочные сведения и многое другое.

Чтобы открыть главное меню Windows NT, которое содержит все необходимое для начала работы с системой, нажмите кнопку «Пуск». Ниже приведено краткое описание всех команд главного меню.

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

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

Если вы работали с Windows NT раньше…

Некоторые компоненты операционной системы Windows NT, хорошо знакомые пользователям предыдущих версий, были изменены в данной версии Windows NT. В этом разделе описаны изменения, затрагивающие диспетчер программ (Program Manager), диспетчер файлов (File Manager), сеанс MS-DOS, панель управления (Control Panel), диспетчер печати (Print Manager), команду выполнения программ, способ перемещения между окнами и кнопку закрытия окна.

Диспетчер программ (Program Manager)

Чтобы найти старые группы программ, нажмите кнопку «Пуск», а затем откройте меню Программы. Существующие группы программ отображаются в этом меню в виде папок.

Диспетчер файлов (File Manager)

Чтобы выполнить какую-либо операцию с файлами, нажмите кнопку «Пуск», а затем выберите в меню Программы команду Проводник. Каталоги файловой системы отображаются на экране в виде папок.

Сеанс MS-DOS

Чтобы открыть окно MS-DOS, нажмите кнопку «Пуск», а затем выберите в меню Программы команду Командная строка.

Панель управления (Control Panel)

Чтобы открыть панель управления, нажмите кнопку «Пуск», а затем выберите в меню Настройка команду Панель управления.

Диспетчер печати (Print Manager)

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

Команда «Выполнить»

Эта команда позволяет запускать программы для MS-DOS® и Windows, открывать папки и подключаться к сетевым ресурсам. Нажмите кнопку «Пуск», выберите команду Выполнить и введите имя и путь нужной программы или просто ее имя.

Перемещение между окнами

Чтобы перейти из одного открытого окна в другое, нажмите на панели задач Windows NT кнопку нужного окна. Можно также использовать клавиши alt+tab, как и в предыдущих версиях Windows NT.

Кнопка закрытия окна

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

Запуск и закрытие программ, переходы между ними

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

Чтобы запустить программу и завершить ее работу с помощью меню «Программы»

1. Для запуска программы нажмите кнопку «Пуск» и выберите команду Программы. Все группы программ из предыдущей версии Windows NT, были преобразованы в папки при обновлении версии Windows NT.

2. Выберите папку с нужной программой, а затем саму программу.

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

Чтобы запустить программу и завершить ее работу с помощью команды «Выполнить»

1. Для запуска программы нажмите кнопку «Пуск» и выберите команду Выполнить.

2. Введите имя нужной программы, папки или документа. Кнопка «Обзор» позволяет найти нужный объект на диске.

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

3. Для просмотра введенных ранее команд нажмите кнопку со стрелкой раскрывающегося списка «Открыть».

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

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

Чтобы перейти от одной программы к другой

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

Окно выбранной программы появится на экране поверх остальных окон.

Просмотр содержимого компьютера

Существует два способа просмотра программ, документов и файлов данных на компьютере: с помощью значка «Мой компьютер» на рабочем столе Windows NT либо с помощью проводника Windows NT, вызываемого через подменю Программы главного меню.

Чтобы просмотреть содержимое компьютера с помощью значка «Мой компьютер»

1. Дважды щелкните значок «Мой компьютер» на рабочем столе. На экране появится окно, содержащее несколько значков.

2. Выберите нужный значок двойным щелчком мыши.

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

Значок |  | Назначение
 | Диск 3,5 (A:) | Просмотр содержимого гибкого диска 3,5 дюйма при наличии подходящего устройства.
 | Диск 5,25 (B:) | Просмотр содержимого гибкого диска 5,25 дюйма при наличии подходящего устройства.
 | Диск C: | Просмотр содержимого жесткого диска компьютера.
 | Компакт-диск D: | Просмотр содержимого компакт-диска при наличии подходящего устройства.
 | Сетевой диск E: | Просмотр содержимого сетевого диска, если компьютер подключен к сети.
 | Панель управления | Изменение настройки компьютера.
 | Принтеры | Установка и настройка принтеров, просмотр сведений о принтерах и печатаемых документах.

После выбора значка устройства в папке «Мой компьютер» на экране появится окно, похожее на изображенное ниже.

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

Значок | Изображаемый объект
 | Папка, которая может содержать файлы и другие папки. Каталоги на диске изображаются в виде папок.
 | Общая папка. Если сделать папку общей, другие пользователи сети получат доступ к ее содержимому.
 | Файл, основная единица хранения данных в Windows NT. Файлами являются как создаваемые документы, так и используемые программы. Различные типы файлов отображаются с помощью разных значков. Этот стандартный значок используется для всех типов файлов, с которыми не сопоставлены особые значки.
 | Документ, созданный с помощью текстового редактора WordPad, поставляемого в составе Windows NT.

Чтобы просмотреть содержимое компьютера с помощью проводника Windows NT

1. Нажмите кнопку «Пуск» и выберите в меню Программы команду Проводник.

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

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

Эффективное использование мыши

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

Ниже описаны некоторые обычные действия, выполняемые мышью:

Перемещение объектов. Чтобы переместить объект, укажите на него, нажмите левую или правую кнопку мыши и, не отпуская кнопку, перетащите объект в нужное место.

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

Получение справки. Чтобы получить справочные сведения о любом элементе экрана, нажмите кнопку «Что это такое», а затем щелкните нужный элемент.

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

Работа с файлами и папками

В данном разделе рассматриваются основные приемы работы с файлами и папками. Описанные ниже операции основаны на использовании папки «Мой компьютер», однако их можно выполнить и с помощью проводника Windows NT.

Чтобы создать новую папку

1. Дважды щелкните значок «Мой компьютер» на рабочем столе, а затем откройте папку или диск, где следует разместить новую папку.

2. Укажите в меню Файл на команду Создать и выберите строку Папка.

3. Введите имя новой папки и нажмите клавишу ENTER.

Чтобы переместить или скопировать файл или папку

1. Дважды щелкните значок «Мой компьютер» на рабочем столе. Найдите и выберите файл или папку, которые следует переместить или скопировать.

2. Откройте меню Правка. Чтобы переместить файл, выберите команду Вырезать. Чтобы создать копию файла, выберите команду Копировать.

3. Откройте папку, в которую следует поместить файл, и выберите в меню Правка команду Вставить.

Чтобы удалить файл или папку

1. Дважды щелкните значок «Мой компьютер» на рабочем столе. Найдите и выберите файл или папку, которые следует удалить.

2. Выберите в меню Файл команду Удалить.

Чтобы скопировать файл на гибкий диск

1. Дважды щелкните значок «Мой компьютер» на рабочем столе. Найдите и выберите файл или папку, которые следует скопировать.

2. Укажите в меню Файл на команду Отправить и выберите имя диска, на который следует копировать файл или папку.

Использование перетаскивания для перемещения данных

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

Чтобы переместить или скопировать файл с помощью перетаскивания

1. В проводнике Windows NT откройте папку, содержащую файл или другую папку, которые требуется переместить или скопировать.

2. Перетащите при нажатой правой кнопке мыши значок объекта в нужную папку, после чего отпустите кнопку мыши.

3. Выберите команду Переместить или Копировать.

Установка программ

Установка на компьютер программного обеспечения проводится в Windows NT быстро и легко. Для этого используется значок «Установка и удаление программ» панели управления.

Чтобы установить программы

1. Нажмите кнопку «Пуск» и выберите в меню Настройка команду Панель управления.

2. Дважды щелкните значок «Установка и удаление программ».

3. На экран выводится окно свойств установки и удаления программ. Следуйте выводимым на экран указаниям.

Настройка системы

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

Изменение вида рабочего стола

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

Чтобы изменить вид экрана

1. Нажмите кнопку «Пуск» и выберите в меню Настройка команду Панель управления.

2. Дважды щелкните значок «Экран».

3. Для вывода других параметров выберите нужную вкладку свойств экрана.

Ускорение доступа к программам и документам

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

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

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

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

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

Чтобы создать ярлык для документа на рабочем столе

1. С помощью значка «Мой компьютер» найдите объект, для которого следует создать ярлык.

2. Перетащите объект на рабочий стол при нажатой правой кнопке мыши. Во время перетаскивания на значок объекта добавляется стрелка. Когда значок окажется на рабочем столе, отпустите кнопку мыши.

3. В появившемся контекстном меню выберите команду Создать ярлык(и).

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

Автоматический запуск программ

Наиболее часто используемые программы удобно запускать автоматически при входе в систему Windows NT. Для этого следует создать ярлык для программы и поместить его в папку «Автозагрузка».

Чтобы автоматически запускать программу при входе в Windows NT

1. Нажмите кнопку «Пуск» и выберите в меню Поиск команду Файлы и папки.

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

3. Выберите команду Создать ярлык.

4. На экране появится сообщение с предложением создать ярлык на рабочем столе. Нажмите кнопку «Да».

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

5. С помощью команды Поиск найдите на компьютере папку «Автозагрузка».

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

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

Открытие документа из главного меню

Ярлык для открытия документа можно поместить прямо в главное меню Windows NT. При этом значок ярлыка появится в верхней части меню.

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

· С помощью папки «Мой компьютер» или проводника Windows NT перетащите нужный документ при нажатой правой кнопке мыши на кнопку «Пуск». В верхней части меню появится значок ярлыка. Теперь для открытия документа достаточно выбрать команду главного меню.

Настройка работы и вида Windows NT

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

Чтобы открыть панель управления

· Нажмите кнопку «Пуск» и выберите в меню Настройка команду Панель управления.

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

Значок |  | Назначение
 | Дата/время |  | Изменение текущей даты и времени для системы, выбор часового пояса.
 | Звук |  | Назначение звуков для системных событий, включение и отключение предупреждающих и системных звуков.
 | ИБП |  | Установка параметров источника бесперебойного питания.
 | Клавиатура |  | Настройка задержки и скорости повтора клавиш, добавление специальных раскладок клавиатуры для других языков.
 | Командная строка |  | Настройка вида окна командной строки (MS‑DOS) за счет изменения набора цветов, размера и положения окна, шрифтов, размера курсора и т.д.
 | Контроллеры SCSI |  | Просмотр списка адаптеров и устройств SCSI, подключенных к компьютеру.
 | Магнитная лента |  | Просмотр, добавление и удаление накопителей на магнитных лентах.
 | Модемы |  | Добавление модемов с помощью специальной программы пошаговой установки (мастера).
 | Мультимедиа |  | Настройка параметров воспроизведения аудио- и видеозаписей, музыкальных компакт-дисков и файлов MIDI, добавление и удаление устройств мультимедиа.
 | Мышь |  | Настройка скорости перемещения и функций кнопок указывающего устройства.
 | Платы PC (PCMCIA) |  | Просмотр ресурсов, используемых установленными платами PC (при наличии подобных устройств).
 | Порты |  | Установка параметров, добавление и удаление портов последовательной связи.
 | Принтеры |  | Добавление и удаление принтеров с помощью специальной программы пошаговой установки (мастера).
 | Сервер |  | Просмотр сведений о пользователях и общих ресурсах.
 | Сеть |  | Настройка сетевых плат, служб и протоколов, подключение к рабочей группе или домену.
 | Система |  | Выбор загружаемой по умолчанию операционной системы, изменение переменных среды пользователя, определение размера файла подкачки.
 | Службы |  | Запуск, остановка или приостановка имеющихся на компьютере служб, настройка параметров их запуска.
 | Специальные возможности |  | Изменение свойств экрана, мыши, клавиатуры и использования звуков, чтобы сделать Windows NT более доступной для людей с нарушениями слуха, зрения и двигательных функций.
 | Телефонная сеть |  | Просмотр, добавление и удаление драйверов для работы с телефонной сетью. Изменение свойств телефонных соединений. Настройка свойств телефонных соединений при подключении компьютера к доку или отключении от него.
 | Установка и удаление программ |  | Автоматическая установка и удаление программного обеспечения, добавление или удаление компонентов Windows NT.
 | Устройства |  | Запуск, остановка и настройка типа запуска драйверов устройств.
 | Шрифты |  | Добавление или удаление шрифтов: экранных, векторных, TrueType и Type 1. Некоторые шрифты принтеров устанавливаются автоматически вместе с принтером, в то время как другие следует установить отдельно с помощью специальной программы от изготовителя шрифтов.
 | Экран |  | Настройка вида экрана за счет изменения цветов, шрифтов, вида и размера окон, значков, выбора фоновых рисунков или узоров и других визуальных параметров.
 | Язык и стандарты |  | Изменение представления дат, времени, денежных величин и чисел в соответствии с национальными стандартами.

Для успішного виконання завдання тим студентам, що раніше не працювали в графічних віконних системах, необхідно чітко засвоїти навички роботи з мишею і стандартними вікнами Windows.

Основна проблема з мишею у починаючих користувачів звичайно виникає з правильним утриманням самого пристрою кистю руки і виконанням подвійного клацання.

Для зручної роботи мишею необхідно, щоб основа кисті руки (у зап'ястя) не висіла у повітрі, а спиралася на поверхню столу. Великий палець зліва, мізинець і безіменний палець справа утримують корпус миші за бічні поверхні, поверхня долоні легко лежить на корпусі миші, випрямлені вказівний і середній пальці лежать на лівій і правій кнопці миші так, щоб кнопки були в ненатиснутому стані. Ви готові до роботи. Бічні рухи краще виконувати поворотом кисті відносно зап'ястя, яке спирається, а подовжні — за допомогою сгинання або вирівнювання пальців, що утримують корпус за бокові поверхні. Увагу зосередьте на екранному курсорі миші. Його активна точка розташована на вістрі стрілки. Наведіть вістрю стрілки на потрібний об'єкт і, не відриваючи уваги від екрана, клацайте або лівою кнопкою (вказівним пальцем), або правою (середнім пальцем).

Одноразове клацання звичайно перекладає фокус на зазначений об'єкт і робить його активним (виділеним). Для запуску або відкриття об'єкта виконується подвійне клацання по об'єкту. Подвійне клацання — це два підряд виконані клацання (звичайно з інтервалом не більш 0,5 секунди). Схоже на те, як ви робите два швидких стуки в двері. У крайньому разі, запуск можна виконати так: зробити об'єкт активним (одним клацанням) і натиснути клавішу Enter (майже як у Norton Commander). Проте, якщо у вас проблеми психологічного плану і подвійне клацання часто перетворюється в два окремих, відчиніть Панель управління і запустіть значок “Мышь”. У діалоговому вікні ви знайдете область настроювання подвійного клацання. Можна збільшити інтервал між клацаннями, установивши більш низьку швидкість виконання операції, і навпаки. На зображенні “магічної” коробочки з обертовою ручкою можна потренуватися з виконанням суто подвійного клацання. При нормальному виконанні з коробочки буде вискакувати лялька або, навпаки, ховатися. Рекомендується повзунок регулятора швидкості лишити в середньому положенні (по умовчанню), а у випадку проблем просто потренуватися в правильному виконанні подвійного клацання.

Виконання двох клацань замість подвійного на імені об'єкта призводить до того, що ви потрапляєте в режим перейменування цього об'єкта (ім'я перетворюється в текстове поле з виділеним текстом і мерехтливим текстовим курсором). Якщо ви помилково потрапили в такий режим — натисніть клавішу Esc або просто клацніть мишкою по іншому об'єкту. Якщо ж вам спеціально потрібно перейменувати об'єкт, то пам'ятайте, перше одноразове клацання по значку об'єкта або його імені робить об'єкт активним, а друге одноразове клацання на імені (з інтервалом хоча б в одну секунду) переводить у режим перейменування. По закінченню перейменування для фіксації змін необхідно або натиснути Enter, або клацнути мишею по будь-якому іншому об'єкту. Для скасування змін до фіксації треба натиснути клавішу Esc. Як будь-яка культурна людина використовуйте перейменування тільки для тих об'єктів, що створювали ви самі (на робочому столі або у своїй особистій папці). Наводити “порядки” в інших місцях не слід, навіть якщо і з'являється така можливість.

Не забувайте, що для запам'ятовування встановлених параметрів у діалогових вікнах Панелі управління необхідно обов'язково натиснути кнопку «ОК» цього вікна. Якщо ви просто закриваєте вікно або натискаєте кнопку «Отмена», зміни параметрів не зберігаються.

Місце розташування будь-якого вікна можна змінити, перемістивши його мишею за межі заголовка на нове місце. Якщо ви не знаєте, як змінити розміри вікна, самостійно знайдіть інформацію в довідці Windows по ключовому слову «окна», обравши потім потрібний підрозділ.

Хід роботи

1. Дайте відповідь на контрольні питання, які наведені нижче. Відповіді запишіть у робочий зошит.

2. При першому вході в систему необхідно виконати її настроювання для більш зручної роботи надалі. Насамперед уточніть порядок переключення регістрів (мовних розкладок) клавіатури. Змініть початковий пароль входу в систему на той, що вважатимете потрібним. Поставтесь до цього дуже серйозно, оскільки від цього залежить цілісність і безпека ваших даних у системі. Для зміни пароля натисніть клавіші Ctrl‑Alt‑Delete і у вікні системи безпеки, що з'явилося, клацніть по кнопці «Смена пароля». Вам буде спочатку запропоновано ввести поточний (старий) пароль (щоб вам випадково не змінив пароль хтось інший), а потім ввести і підтвердити новий. Після повернення у вікно системи безпеки натисніть клавішу Esc (Скасування) для повернення в систему або натисніть відповідну кнопку для завершення роботи. Оскільки регістри клавіатури при цьому враховуються, а на екрані паролі відображаються у вигляді зірочок, будьте надзвичайно уважними і запам'ятайте, у якому стані знаходилася клавіатура (російському або англійському регістрі, чи не була випадково включена клавіша Caps Lock). Знайте, що при вашому бажанні цей пароль знати ніхто не буде, навіть системний адміністратор (хоча змінити ваш пароль на інший адміністратор може). Тому постарайтеся не забувати свої паролі, щоб не заважати додатковими проханнями адміністратору системи. При найменшій підозрі на те, що ваш пароль став комусь відомий, відразу ж змінюйте його. Відкидайте удавану скромність і сором’язливість, вимагайте, щоб при введенні пароля в систему вам ніхто не заважав. Цей же прийом (Ctrl‑Alt‑Delete) використовуйте для блокування комп'ютера (кнопка «Блокировка»), якщо вам на декілька хвилин потрібно відійти від свого робочого місця.

3. При першому вході система звичайно встановлює дві мовні розкладки клавіатури: російську й англійську. Для додавання української розкладки увійдіть у Панель управління і запустіть об'єкт “Клавиатура”. На закладці “Языки и раскладки” діалогового вікна, що з'явилося, ви зможете додати потрібну мову розкладки. Перемикач розкладок можна, на жаль, змінювати тільки між Ctrl‑Shift і Alt‑Shift. Виберіть більш зручну комбінацію для себе. На інших користувачів це не впливає. Не забудьте натиснути кнопку ОК після завершення установок.

4. Створіть на Робочому столі ярлик для своєї особистої папки, розташованої на мережному серверу. Відкрийте вікно цієї папки подвійним клацанням по створеному ярлику і настройте його таким чином: за допомогою меню “Вид” включіть Панель інструментів. На Панелі інструментів натисніть кнопку “Список” для представлення об'єктів усередині вікна у вигляді списку. За допомогою меню “Вид” змініть параметри вікна так, щоб при відкритті будь-якої папки в цьому вікні її вміст відображався в цьому ж вікні (по умовчанню відкривається нове вікно). Розташування і розміри вікна встановіть на власний розсуд.

5. Створіть у своїй особистій папці (на серверу) структуру папок для робіт із різноманітних дисциплін, наприклад, Інформатика, Статистика і т.п. Надалі усі свої документи ви будете зберігати саме тут. Вхід усередину папок по подвійному клацанню (або виділити і Enter), повернення назад — по клацанню кнопки “На уровень вверх” на Панелі інструментів або по клавіші Backspace. Дуже зручно для створення об'єктів усередині папки використовувати клацання правою кнопкою миші.

6. Додатково усередині особистої папки створіть папку з ім'ям “Тренировка”.

7. Усередині папки “Тренировка” створіть декілька порожніх текстових файлів. Найпростіше це можна зробити, клацнувши правою кнопкою миші усередині цієї папки, вибрати команду “Создать \ Текстовый документ” і ввести ім'я нового файла. Далі потренуйтесь переміщати і копіювати папку “Тренировка” із усім вмістом, окремо тільки деякі файли, групи файлів в інші створені вами папки. Про те, як виділити групу файлів, спробуйте знайти в довідковій системі по слову “выделение”. Відпрацюйте дані операції за допомогою перетягування і за допомогою Буфера обміну. Відпрацюйте операції перейменування. При необхідності не забувайте користуватися довідковою системою.

8. Створіть на робочому столі ярлик на папку “Тренировка”, а також ярлик на один із створених вами порожніх файлів. Відкрийте цей файл за допомогою ярлика, запишіть у нього пару рядків довільного тексту, збережіть. Зверніть увагу, за допомогою якої програми відкрився цей документ. Створіть також ярлик на цей файл усередині папки “Інформатика”.

9. Продемонструйте викладачу створений вами текстовий файл, уміння створювати ярлики для необхідних об'єктів, свої навички в копіюванні, переміщенні і перейменуванні файлів і папок (на папці “Тренировка” і створених вами порожніх файлах). Продемонструйте вміння користуватися довідковою системою і переключатися з однієї запущеної задачі на іншу і навпаки. Видалите папку “Тренировка”, всі тренувальні файли і ярлики зі своєї особистої папки і Робочого столу. Пам'ятаєте, що видалення всіх об'єктів на мережних сховищах (у тому числі і на серверу) відбувається без їхнього переміщення в Кошик. Кошик працює тільки на вашому локальному комп'ютері. Тому будьте надзвичайно уважні при видаленні інформації, особливо у своїй особистій папці, яка розташована на серверу.

10. Запишіть виводи про зроблену роботу в робочий зошит.

Контрольні питання

1. Опишіть загальну структуру Windows NT.

2. Яким чином система забезпечує багатозадачний режим роботи?

3. Що таке програмний об'єкт і які принципи його функціонування?

4. Що таке Буфер обміну і для чого він використовується?

5. Для чого призначена Панель управління?

6. Що таке OLE-технологія і для чого вона призначена?

7. Опишіть основи технології Drag-and-Drop.

8. Для чого призначена права кнопка миші?

Вказівки для викладача

Постарайтеся заздалегідь підготувати списки студентів навчальних груп і передайте їх системному адміністратору для створення облікових записів і особистих папок на файловому серверу.

Коротко розкажіть студентам про структуру локальної мережі і розподіл основних інформаційних сховищ.

Зазначте студентам спосіб доступу до їхніх особистих папок.

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

Для додаткової роботи по створенню структури папок можна запропонувати усередині папки “Тренировка” створити структуру одного з варіантів лабораторної роботи 1.5 (Команди MS-DOS). Поясніть, що в даному випадку можна цілком використовувати угоду про довгі імена (у тому числі і на рідній мові) у назвах папок (каталогів) і документів (файлів).

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

Лабораторна робота 3.2 Прості текстові документи

Мета роботи: Ознайомитися з основними прийомами набору і коригування простих текстів, визначення параметрів сторінки й абзацу, виділення фрагментів тексту різноманітними шрифтами.

Засоби: Операційна система Windows NT Workstation 4.0, текстовий процесор Microsoft Word, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 5.1-5.2, с. 176-181.

2. Бойс Дж., Фаллер С., Гилген Р. и др. Использование Microsoft Office 97, профессиональный выпуск: Пер. с англ. – К.; М.; СПб.: Издат. дом «Вильямс», 1998.

Теоретичні відомості

Для того, щоб мати можливість попереднього перегляду документа при виведенні на друк, а також безпосередньо виконувати функції друку, — необхідно підключити мережний принтер. Зробити це можна за допомогою кнопки Робочого столу “Пуск” і пункту Головного меню “Настройка \ Принтеры”. Скористайтеся вказівками викладача.

Перед початком роботи з Microsoft Word насамперед необхідно виконати попереднє настроювання параметрів редактора. Для початку настройте місце розташування папок для збереження документів, шаблонів і словників. Для цього відчиніть пункт меню “Сервис \ Параметры…” і виберіть закладку “Расположение”. Змініть розташування для типів файлів “документы” і “шаблоны пользователя” так, щоб шляхи вказували на вашу особисту папку (або вкладені папки), що знаходиться на файловому серверу. Перейдіть на закладку “Правописание” і натисніть кнопку “Словари…”. Відключіть існуючий допоміжний словник і створіть новий так, щоб він розташовувався усередині вашої особистої папки на файловому серверу. По закінченні настроювань натисніть кнопку “ОК”.

Викличте довідкову систему Microsoft Word і перейдіть на закладку “Содержание”. Прочитайте ті розділи довідки, що вам знадобляться для виконання поточної роботи. Особливу увагу зверніть на відомості по зовнішньому вигляду сторінок (“Разметка страницы”) і засоби зміни їхніх параметрів. Відомості по настроюванню шрифтів і параметрів абзаців шукайте в розділі “Форматирование”.

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

Зверніть увагу на гарнітуру (зовнішній вигляд) основних шрифтів Times New Roman, Arial, Courier New, а також у сполученні з такими атрибутами, як жирність: Times New Roman, Arial, Courier New; курсив (похилий): Times New Roman, Arial, Courier New; жирний курсив: Times New Roman, Arial, Courier New. Це вам знадобиться при розпізнаванні гарнітур із друкованого аркуша. Основна відмінність шрифтів Times New Roman і Arial полягає в тому, що перший використовується з зарубками (рисочки на кінцях символів), а другий — без них. Обидва шрифти пропорційно розподіляють літери і порожні інтервали усередині слова. Шрифт Courier New характерний тим, що ширина місця під будь-який символ у нього однакова (як у текстовому режимі екрана). Тому всі символи рівномірно розподіляються по ширині рядка. Перші два шрифти іноді ще називають пропорційними, а останній — рівномірним.

Не виконуйте відступи і вирівнювання тексту за допомогою пробілів (як у простих редакторах). Для цього використовуйте параметри абзацу (відступи і вирівнювання), що також зручно задаються за допомогою Панелі інструментів Word і верхньої горизонтальної лінійки.

Хід роботи

1. Дайте відповідь на контрольні питання. Відповіді запишіть у робочий зошит.

2. Набір і коригування тексту з заданими параметрами. Отримайте у викладача Текст №1 (із помилками) і наберіть його без виправлень. Параметри сторінки і тексту:

· Формат листа A4;

· Верхнє і нижнє поля — 2 см, ліве поле — 3 см, праве — 1,5см;

· Абзацний відступ — 1,25 см;

· Вирівнювання — по ширині;

· Міжрядковий інтервал — одинарний;

· Шрифт — Times New Roman 12.

3. Збережіть набраний текст у своїй робочій папці як документ Word під ім'ям Текст1.doc.

4. Отримайте зразок виправленого Тексту №1 і внесіть усі виправлення у файл Текст1.doc. Пред'явіть закінчену роботу викладачу для здачі.

5. Підготовка тексту з різноманітними параметрами шрифтів. Отримайте у викладача Текст №2 (із помилками) і наберіть його без виправлень. Параметри сторінки і тексту:

· Формат листа A4;

· Всі поля — по 2 см;

· Абзацний відступ — 1,25 см;

· Вирівнювання — по ширині;

· Міжрядковий інтервал — полуторний;

· Шрифт — Times New Roman 14.

6. Збережіть набраний текст у своїй робочій папці як документ Word під ім'ям Текст2.doc.

7. Отримайте зразок виправленого Тексту №2 і внесіть усі виправлення у файл Текст2.doc. Виділення шрифтів виконуйте за допомогою властивостей Жирний, Курсив і Підкреслення.

8. Об'єднайте тексти з файлів Текст1.doc і Текст2.doc в один документ, який збережіть під ім'ям Текст3.doc (можна скористатися пунктом меню “Вставка \ Файл…”). Параметри сторінки повинні відповідати параметрам Тексту №2. Придумайте тексту заголовок, який оформіть з вирівнюванням по центру жирним шрифтом із підкресленням.

9. Запишіть висновки про зроблену роботу.

10. Пред'явіть закінчену роботу викладачу для здачі.

Після закінчення роботи студенти повинні вміти задавати параметри сторінки документа, параметри абзацу, змінювати властивості шрифту, виконувати елементарне редагування тексту, копіювання фрагментів тексту в буфер, вставку тексту з буфера, виконувати переміщення фрагмента тексту з одного місця на інше, об'єднувати тексти з різних файлів.

Контрольні питання

1. Яким чином виконується набір кожного абзацу тексту в Microsoft Word?

2. Назвіть параметри вирівнювання тексту і що вони означають.

3. Як визначити параметри сторінки?

4. Як визначити параметри абзацу?

5. Як виділити фрагмент тексту іншим шрифтом?

6. Як скопіювати деякий фрагмент тексту в інше місце?

7. Як видалити фрагмент тексту?

8. Як перемістити фрагмент тексту в інше місце?

9. Як об'єднати тексти з двох різноманітних файлів в один?

Вказівки для викладача

Зверніть увагу і дайте поради щодо найбільш раціональних прийомів, що можуть використовуватися при виконанні даної роботи.

Лабораторна робота 3.3 Редактор формул

Мета роботи: Ознайомитися з можливостями вмонтованого в Microsoft Word редактора математичних формул для створення спеціалізованих документів і звітів.

Засоби: Операційна система Windows NT Workstation 4.0, текстовий процесор Microsoft Word, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 5.2, с. 177-181.

2. Бойс Дж., Фаллер С., Гилген Р. и др. Использование Microsoft Office 97, профессиональный выпуск: Пер. с англ. – К.; М.; СПб.: Издат. дом «Вильямс», 1998.

Теоретичні відомості

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

Для вставки формул у документ Word застосовується спеціальний редактор формул Microsoft Equation, що виконаний у вигляді OLE-об'єкта. Це означає, що самостійно редактор не використовується, а може бути викликаний тільки у складі інших інструментів Microsoft Office або програм, що підтримують OLE-технологію.

Формула конструюється у вигляді блоків із різноманітним розташуванням один відносно іншого. Кожний блок може складатися з будь-якої послідовності символів або математичних елементів, вставлених за допомогою панелі інструментів редактора формул. Блоки можна вставляти один в одний, створюючи складні ієрархічні структури.

Перед початком роботи з редактором формул необхідно переконатися, що даний засіб установлений. Для цього потрібно виконати пункт меню “Вставка \ Объект…” і знайти у списку діалогового вікна, що з'явилось, пункт «Microsoft Equation». Якщо такий пункт відсутній, то засіб необхідно довстановити, запустивши програму встановлення пакета Microsoft Office і додавши необхідний компонент. При роботі в організації необхідно звернутися до системного адміністратора. Додаткові відомості спробуйте знайти в довідковій системі Word по ключовому слову “формула”.

Вставити об'єкт Microsoft Equation у документ Word можна двома способами. У першому випадку ви виконуєте вже знайомий вам пункт меню “Вставка \ Объект…”, вибираєте в списку об'єкт Microsoft Equation і тиснете кнопку “ОК”. В другому випадку попередньо потрібно настроїти Панель інструментів редактора Word. Для цього можна клацнути правою кнопкою миші по Панелі інструментів і вибрати команду “Настройка…”. У діалоговому вікні слід переключитися на закладку “Команды” і вибрати категорію “Вставка”. У секції “Команды” потрібно знайти редактор формул і перетягнути його мишею в зручне місце Панелі інструментів. Після цього діалогове вікно “Настройка” можна закрити. Тепер, щоб вставити об'єкт редактора формул у позицію текстового курсору, достатньо клацнути мишею по відповідній кнопці Панелі інструментів.

Знаходячись в об'єкті редактора формул, ви можете викликати довідку й ознайомитися з порядком створення і редагування математичних формул.

Видалити непотрібний об'єкт формул можна так само, як і будь-який фрагмент тексту, тобто виділити і натиснути клавішу Delete.

Оскільки всі елементи формул вводяться на основі шаблонів, змінити розміри або шрифт окремого елемента можна, змінивши установки відповідного шаблона за допомогою пунктів меню редактора формул “Стиль” і “Размер”. Шукайте також інформацію в довідці редактора формул.

Для завершення роботи з редактором формул необхідно просто клацнути мишею по документу Word (поза об'єктом з формулою).

При подвійному клацанні миші по вже створеному об'єкту формул автоматично завантажується редактор формул для редагування, тобто спрацьовує стандартна OLE-технологія.

Хід роботи

1. У окремому чистому документі потренуйтесь у створенні простих математичних формул:

· [image] ;

· [image] ;

· [image] ;

· [image] ;

· [image] ;

· [image] ;

· [image] ;

2. Відповіді на контрольні питання запишіть у робочий зошит.

3. Отримайте у викладача Текст №3 і наберіть його, використовуючи для набору математичних формул вмонтований редактор формул. Параметри сторінки і тексту:

· Формат A4;

· Верхнє, нижнє і праве поля — 2 см; ліве поле — 3 см;

· Абзацний відступ — 1,25 см;

· Вирівнювання — по лівому краю;

· Міжрядковий інтервал — полуторний;

· Шрифт — Times New Roman 14.

4. Придумайте заголовок до тексту. Виконайте його шрифтом Arial 16, жирний, по центру.

5. Збережіть набраний текст у своїй робочій папці як документ Word під ім'ям “Текст с формулами 1.doc”.

6. На розсуд викладача можна виконати аналогічну роботу з Текстом №4.

7. Запишіть висновки про зроблену роботу в робочий зошит.

8. Надайте закінчену роботу викладачу для здачі.

По закінченню роботи студенти повинні вміти користуватися об'єктом Microsoft Equation для створення і редагування математичних формул.

Контрольні питання

1. Що таке редактор формул, для чого він призначений, як перевірити його установку і як він викликається?

2. Як вставляється окремий елемент формули, наприклад, квадратний корінь або інтеграл?

3. Як змінити шрифти різноманітних елементів формули?

4. Як змінити вже створену формулу, знаходячись поза редактором формул?

Вказівки для викладача

Як правило, у студентів виникає на початкових етапах навчання проблема з введенням чергового елемента формули або з переміщенням на потрібний елемент. Порадьте переміщатися по елементах за допомогою курсорних клавіш із стрілками, хоча інтуїтивно багато хто знаходить спосіб за допомогою клацання миші. Для того ж, щоб визначити, який елемент можна просто ввести у вигляді символів із клавіатури, а який — за допомогою панелі інструментів Формула, порадьте уважно переглянути всі елементи цієї панелі і навіть спробувати кожний елемент при введенні.

Іноді при роботі об'єкта Equation відбуваються збої, після чого деякі елементи починають відображатися непередбаченим чином. У таких випадках радьте видалити зіпсований об'єкт і набрати його знову або набрати його якось інакше (іноді збої бувають при невдалому сполученні деяких елементів).

За необхідністю вставити у формулу порожній проміжок (пробіл) можна порадити вставку зайвого порожнього блока.

Порадьте уникати введення у формулах текстових пояснень. Їх можна ввести вже поза формулами як звичайний текст. Для вирівнювання формул і текстів пояснень рівними стовпчиками можна використовувати таблиці з прозорою межею.

Лабораторна робота 3.4 Документи з ілюстраціями

Мета роботи: Навчитися створювати виразні документи, які наділені пояснювальними малюнками, схемами й ілюстраціями.

Засоби: Операційна система Windows NT Workstation 4.0, текстовий процесор Microsoft Word, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 5.2, с. 177-181.

2. Бойс Дж., Фаллер С., Гилген Р. и др. Использование Microsoft Office 97, профессиональный выпуск: Пер. с англ. – К.; М.; СПб.: Издат. дом «Вильямс», 1998.

Теоретичні відомості

Для створення малюнка рекомендується використовувати вмонтований редактор малюнків Microsoft Word або системний графічний редактор Paintbrush. Для виклику вмонтованого редактора можна скористатися кнопкою “Рисование” на панелі інструментів “Стандартная” (значок у вигляді літери A із кубиком і циліндром) або за допомогою меню, обравши в головному меню команду “Вставка”, потім “Объект...”. У діалоговому вікні, що з'явилося, на закладці “Создание” виділіть об'єкт “Рисунок Microsoft Word” і натисніть кнопку ОК. Для використання графічного редактора Paintbrush потрібно скористатися меню “Вставка \ Объект...” і вибрати тип об'єкта “Растровый рисунок” (або “Рисунок Paintbrush”, або “Точечный рисунок Paintbrush”). Докладну довідку по створенню малюнків у Microsoft Word можна одержати з довідкової системи по ключовому слову “рисование”.

Для вставки готового малюнка з графічного файла скористуйтеся командою меню “Вставка \ Рисунок \ Из файла...”. У діалоговому вікні, що з'явилося, необхідно знайти зазначений файл із малюнком, виділити його і натиснути кнопку “Добавить” (або “Вставка”). Використовуючи габаритні обмежувачі малюнка, можна пропорційно зменшити його розміри, а за допомогою команди контекстного меню “Формат рисунка…” (по правій кнопці миші) — установити параметри, що визначають положення малюнка й обтікання його текстом.

Різниця між точковими малюнками і малюнками Microsoft Word полягає в тому, що перші створюються, як правило, за допомогою окремих растрових графічних редакторів, а потім вставляються усередину документа. Структура таких малюнків — це набір дрібних кольорових графічних точок (растр). Розмір малюнка дуже залежить від його габаритів і складності кольорової палітри. Малюнки Microsoft Word — це набори об'єктів, що вмонтовані в самий текстовий редактор. Малюнки такого типу часто називають векторними, оскільки вони — не набори точок, а описи графічних об'єктів по координатах, розмірах і напрямках. У цих випадках Word щоразу для показу таких малюнків просто сам малює їх прямо в тексті відповідно до наявних описів. Векторні малюнки на відміну від растрових займають у документі значно менше місця і набагато легше модифікуються. Вигідно використовувати растрові малюнки тільки тоді, коли вони прості у виконанні і малі за розміром. При вставці в документ растровий малюнок цілком вставляється усередину документа і є його органічною частиною, хоча можна тримати малюнки в окремих файлах, зв’язавши їх з основним документом. Розмір векторного малюнка не залежить від його габаритів, оскільки в цьому випадку змінюються тільки розміри об'єктів у їхньому описі. Тому векторні малюнки дуже легко масштабуються без втрати якості зображення. Як векторні малюнки зручно створювати різноманітні схеми або прості малюнки, що складаються з набору ліній. Як растрові звичайно використовуються фотографії, фрагменти екранних зображень або просто малюнки з уже готових растрових файлів (із розширеннями bmp, gif, jpg, pic, tif і т.д.).

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

Хід роботи

1. Запишіть відповіді на контрольні питання в робочому зошиті.

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

Параметри сторінки:

· Формат A4;

· Верхнє і нижнє поля — 2 см;

· ліве поле — 3 см;

· праве поле — 1,5 см.

Параметри фрагмента I:

· Абзацний відступ — 1 см;

· Вирівнювання — по ширині;

· Міжрядковий інтервал — одинарний;

· Шрифт — Times New Roman 10.

Параметри фрагмента II:

· Абзацного відступу немає;

· Вирівнювання — по лівому краю;

· Міжрядковий інтервал — одинарний;

· Шрифт — Arial 14.

Верхні і нижні індекси математичних позначень рекомендується виконувати не за допомогою редактора формул, а за допомогою стандартного форматування (пункт меню “Формат \ Шрифт…”, закладка “Шрифт”, секція “Видоизменение”). Якщо індекси використовуються часто, то краще додати відповідні елементи на Панель інструментів (клацання правою кнопкою миші на Панелі інструментів, команда “Настройка…”, закладка “Команды”, категорія “Формат”, команди “Верхний индекс” і “Нижний индекс” перетягти на Панель інструментів).

3. Малюнок фрагмента I створіть за допомогою вмонтованого векторного редактора Microsoft Word. Обов'язково згрупуйте всі елементи малюнка і встановіть потрібні параметри обтікання і вирівнювання.

4. Малюнок фрагмента II вставте в документ із файла flower.wmf. Використовуючи габаритні обмежувачі малюнка, пропорційно зменшіть його розміри, а для формату малюнка “Обтекание” встановіть “вокруг рамки” і “текст справа”.

5. Збережіть набраний текст у своїй робочій папці як документ Word з ім'ям “Текст с рисунками 1.doc”.

6. На розсуд викладача можна додатково виконати таку роботу:

Створіть власну інструкцію з вставки готових малюнків із файлів, ілюструючи її наочними малюнками. Для цього необхідно в текст помістити два малюнки: 1) зображення розгорнутого меню “Вставка \ Рисунок \ Из файла...” і 2) зображення діалогового вікна для пошуку файлів. Для цього можна за допомогою самого редактора Microsoft Word домогтися появи відповідних зображень на екрані і натиснути на клавіатурі клавішу “Print Screen”, після чого копія вашого екрана буде поміщена в буфер Windows. Далі скасуйте незакінчені дії і поверніться у текст документа. За допомогою кнопки “Вставить” панелі інструментів “Стандартная” або меню “Правка \ Вставить” вставте в позицію текстового курсору малюнок із копією вашого екрана. Виконайте необхідну, на ваш погляд, пропорційну зміну розмірів малюнків і параметри обтікання. Збережіть документ з ім'ям “Инструкция.doc”.

7. Запишіть висновки про зроблену роботу.

8. Надайте закінчену роботу викладачу для здачі.

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

Контрольні питання

1. Які типи малюнків можна вставляти в документ Word?

2. Як виконати малюнок у документі?

3. Як вставити готовий малюнок із файла?

4. Як змінити параметри малюнка і його положення в тексті?

Вказівки для викладача

Зверніть увагу студентів на однотипне настроювання практично усіх векторних об'єктів редактора Word.

Зверніть увагу на те, щоб написи на малюнках створювалися за допомогою об'єкта “Надпись”. Заповнення і межу прямокутника напису доцільно зробити прозорими або прибрати взагалі (що однаково).

Зверніть увагу студентів на вид курсору при наведенні на лінії об'єкта. Саме в цьому стані об'єкт можна вибрати, клацнувши по ньому мишею.

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

Зазначте на доцільність створення однотипних об'єктів шляхом копіювання їх через буфер обміну, оскільки при цьому всі настроювання зберігаються, а змінити текст напису або розміри об'єкта набагато простіше, ніж повторно настроювати кожний об'єкт.

Зазначте на необхідність угруповання всіх об'єктів векторного малюнка, включаючи й об'єкти написів, оскільки при редагуванні великих документів часто спостерігається ефект “розпаду” об'єктів незгрупованого малюнка. Саме на згруповану область надалі встановлюються властивості вирівнювання й обтікання. Для зміни елементів згрупованого малюнка його необхідно попередньо розгрупувати. Новий елемент можна просто додати до згрупованого малюнка, але потім потрібно знову виконати загальне угруповання (групується попередня група об'єктів із новим елементом).

Лабораторна робота 3.5 Табличні документи

Мета роботи: Навчитися створювати документи з використанням таблиць.

Засоби: Операційна система Windows NT Workstation 4.0, текстовий процесор Microsoft Word, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 5.2, с. 177-181.

2. Бойс Дж., Фаллер С., Гилген Р. и др. Использование Microsoft Office 97, профессиональный выпуск: Пер. с англ. – К.; М.; СПб.: Издат. дом «Вильямс», 1998.

Теоретичні відомості

Таблиця складається з рядків і стовпчиків комірок, що можуть містити текст і малюнки. Звичайно таблиці використовуються для упорядкування й представлення даних, проте можливості таблиць цим не обмежуються. Таблиці дозволяють вишикувати числа в стовпчики, а потім відсортувати їх, а також виконати різноманітні обчислення. Крім того, за допомогою таблиць неважко створити привабливі макети сторінок, розташувавши потрібним чином фрагменти тексту і малюнки.

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

Хід роботи

1. Запишіть відповіді на контрольні питання.

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

Параметри сторінки:

· Формат A4;

· Верхнє і нижнє поля — 2 см;

· ліве поле — 3 см;

· праве поле — 1,5 см.

Визначте самостійно стилі і назви шрифтів для використання в документі. В оригіналі використовувалися Times New Roman 18 і 10, Arial 14 і 8 із застосуванням в окремих випадках стилю курсив і жирний.

У виді стильових ліній у заголовку документа використовувалися готові малюнки з файлів contline.gif і profline.gif (див. у каталозі для завдань). Для емблеми фірми використовуйте малюнок із файла yinyang.wmf.

Основна мета при створенні першої таблиці полягає в правильному використанні стилів меж і шрифтів для комірок таблиці. Стилі меж встановлюються після клацання правою кнопкою миші на виділених комірках і вибору в контекстному меню команди “Границы и заливка...”. Майте на увазі, що таблиця виглядає на екрані не зовсім так, як на друкарському документі. Межі комірок, які зображені на екрані «пригашеним» сірим кольором, на друк виводитися не будуть. У цьому можна переконатися, продивившись макет документа натисканням кнопки “Предварительный просмотр” на панелі інструментів “Стандартная”. Текст і числові значення першої таблиці наберіть вручну. Ваш макет для друку повинен виглядати ідентично отриманому зразку документа.

Основна мета при створенні другої таблиці полягає в одержанні навичок використання формул для комірок таблиці, що обчислюються. Довідкову інформацію з даного питання можна одержати в довідці Microsoft Word по ключових словах “таблицы, вычисления”. Всі комірки першого праворуч стовпчика таблиці повинні підраховувати суму в рядку зліва, а всі комірки першого знизу рядка — суму в стовпчику зверху. Переконайтеся, що створені підсумкові комірки правильно працюють. Для цього змініть декілька значень у вхідних комірках (по яким здійснюється підсумовування), станьте на поле підсумкової комірки і натисніть клавішу F9 (перерахунок).

3. Збережіть набраний текст у своїй робочій папці як документ Word з ім'ям “Текст с таблицами 1.doc”.

4. На розсуд викладача можна додатково виконати таку роботу:

Визначте формули для всіх комірок першої таблиці, що обчислюються, попередньо видаливши із них значення, які введені з клавіатури. Комірки рядка “Валовая прибыль” є різницею комірки “Выручка от реализации” і комірки “Затраты на сбыт”. Комірки рядка “Суммарные затраты” повинні обчислювати суму по комірках “Торговый персонал”, “Реклама”, “Косвенные затраты”. Комірки рядка “Произв. прибыль” обчислюють різницю між комірками “Валовая прибыль” і “Суммарные затраты”. Комірки рядка “Норма прибыли” — це процент відношення комірки “Произв. прибыль” до “Выручка от реализации”. Всі комірки стовпчика “Всего” обчислюють суми по відповідних рядках, крім найнижчої комірки. Підсумкове значення норми прибутку обчислюється як середнє значення норм прибутку по всіх кварталах (функція AVERAGE). Під документом замість наявного прізвища поставте власне. Підпис створіть за допомогою вставки малюнка Paintbrush (просто намалюйте її інструментом “карандаш”).

5. Запишіть висновки про зроблену роботу.

6. Надайте закінчену роботу викладачу для здачі.

Контрольні питання

1. Для чого призначені таблиці?

2. Як вставити в документ таблицю потрібного розміру?

3. Як змінити стиль меж таблиці? Окремої комірки?

4. Як вставити формулу в певну комірку таблиці?

5. Як посилатися у формулі на зміст інших комірок цієї ж таблиці?

6. Як змінити напрямок тексту в комірці таблиці (наприклад, боком зверху вниз або боком знизу вгору)?

Вказівки для викладача

Основна проблема у студентів виникає звичайно з установкою розмірів таблиці і стилів її меж.

Просту таблицю (прямокутну, із рівномірним розподілом рядків і стовпчиків) зручніше вставляти за допомогою шаблона, запропонованого меню або Панеллю інструментів. Складну таблицю з розбивкою окремих комірок зручніше створювати в режимі малювання (“карандашом”), хоча основний каркас буває також зручно створити за допомогою шаблона.

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

Установку стилів меж краще починати з загальних і зовнішніх, продовжуючи змінювати окремі лінії усередині таблиці. Зверніть увагу на вміння виділяти окремі комірки і групи комірок таблиць.

Лабораторна робота 3.6 Прості електронні таблиці

Мета роботи: Отримання навичок по створенню простих електронних таблиць у Microsoft Excel із використанням формул.

Засоби: Операційна система Windows NT Workstation 4.0, табличний процесор Microsoft Excel, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999 г., п. 5.3, с. 181-189.

2. Бойс Дж., Фаллер С., Гилген Р. и др. Использование Microsoft Office 97, профессиональный выпуск: Пер. с англ. – К.; М.; СПб.: Издат. дом «Вильямс», 1998.

Теоретичні відомості

Якщо ви раніше ніколи не працювали в Excel, то рекомендується засвоїти ази роботи з електронними таблицями шляхом відпрацювання лекційного матеріалу, а також шляхом використання довідкової системи Microsoft Excel (закладка “Содержание”).

Таблиці в Excel нагадують аналогічні таблиці Word, проте володіють значно потужнішими математичними можливостями. По умовчанню лінії сітки таблиці «пригашені» (виконані сірим кольором), тобто не відображаються при друці. Проте, стиль меж легко змінюється так, як і в Word.

Необхідно навчитися правильно об'єднувати комірки і розміщати в них відповідну інформацію. Зверніть увагу, що зміну розмірів рядка або стовпчика доцільно виконувати тільки тоді, коли це потрібно для всього документа. Якщо ж в іншому місці робочого листа розташовуються фрагменти документа, яким заважає подібне розширення, то краще використовуйте лише об'єднання комірок.

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

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

Для ефективної роботи в Excel необхідно навчитися широко використовувати режим автозаповнення і копіювання як для даних, так і для формул.

Хід роботи

1. Запишіть у зошит відповіді на контрольні питання.

2. Отримайте у викладача табличний документ, що відображає результат розрахунку зарплати співробітників деякої організації або підрозділу за один місяць. Поданий розрахунок заробітної плати не претендує на відповідність наведених розрахунків реальним бухгалтерським процедурам і призначений тільки для демонстрації роботи електронної таблиці.

3. Підготуйте в Excel аналогічний документ, використовуючи як список співробітників будь-які вигадані прізвища або студентів своєї групи.

Значення тривалості робочого дня (8 годин) і розмір премії (30%) є вхідними розрахунковими даними і тому повинні бути введені в окремі комірки. Значення премії вказується як 0.3 із процентним форматом без дрібної частини (або просто вводиться як 30%). На основі даного документа складіть каркас таблиці без введення даних. Потім введіть порядкові номери і прізвища співробітників (12-15 чоловік). Потім по стовпчиках введіть вхідну інформацію приблизно так, як показано на зразку в комірках, виділених сірим фоном. Стовпчик “Отраб.” представляє кількість робочих днів, відпрацьованих кожним співробітником у поточному місяці. “Тариф” — вартість однієї години роботи конкретного співробітника (залежить від кваліфікації і стажу роботи). Дані в інших комірках визначаються по формулах на підставі таких відомостей:

– “Часы” — кількість годин, відпрацьованих у поточному місяці: «Продолжительность раб.дня» * «Отраб.»;

– “Оклад” — сума, яку заробив співробітник відповідно до тарифу: «Тариф» * «Часы»;

– “Премия” — відсоток надбавки до окладу за успішне виконання підрозділом робочого плану: «Оклад» * «Процент премии»;

– “Начислено” — сума окладу і премії: «Оклад» + «Премия»;

– “Проф.взн.” — відрахування на профспілкові внески (1% від загального нарахування): «Начислено» * 0.01;

– “Пенс.фонд” — відрахування в пенсійний фонд (1% від загального нарахування): «Начислено» * 0.01;

– “Под.налог” — прибутковий податок, обчислюється по так званій “прогресивній” шкалі; для спрощення обчислюйте як 15% від загального нарахування: «Начислено» * 0.15;

– “Удержано” = «Проф.взн.» + «Пенс.фонд» + «Под.налог»;

– “На руки” = «Начислено» – «Удержано»;

– у рядку “Итого” — суми відповідних стовпчиків.

Відрахування підприємства:

– “Отчисления в фонд Чернобыля” = 20% від Итого (Начислено);

– “Налог на заработную плату” = 22% від Итого (Начислено);

– “Отчисления в пенсионный фонд” = 9% від Итого (Начислено);

“Общий фонд заработной платы” = «Итого(Начислено)» + «Отчисления в фонд Чернобыля» + «Налог на заработную плату» + «Отчисления в пенсионный фонд».

Всі комірки, що містять грошові суми, повинні мати числовий формат із двома знаками в дробовій частині.

4. Змінить назву поточного листа робочої книги на “Июнь”. Інші порожні листи видаліть (використовуйте клацання правою кнопкою миші по закладці листа).

5. Створіть аналогічний документ на наступний місяць. Для цього, клацнувши правою кнопкою миші по закладці листа, виберіть команду “Переместить/Скопировать...”, потім виберіть “(переместить в конец)” і обов'язково встановіть позначку “Создавать копию”. Задайте відповідне ім'я новому листу документа. У зарплаті на новий місяць (липень) змініть “Раб.дней” на 23, “Премия” — 40%, а також усі вихідні дані в стовпчику “Отраб.”. Розмір “Тарифа” можна збільшити для окремих співробітників. Додайте в кінець таблиці дані нового співробітника шляхом копіювання рядка останнього співробітника. Змініть його вхідні дані.

6. Збережіть книгу Excel у своєму робочому каталозі з ім'ям “Зарплата.xls”.

7. На розсуд викладача можна додатково виконати таку роботу:

Прибутковий податок береться не від усієї суми заробітку разом, а від її частин по прогресуючих відсотках. Від нижніх відрізків суми беруться менші відсотки, від верхніх — більші. Визначте розрахунок прибуткового податку за такою прогресивною шкалою:

– до 17 грн. прибутковий податок не береться (мінімум, що не оподатковується — МНО);

– понад одного до 5 МНО — 10%;

– понад 5 до 10 МНО — 15%;

– понад 10 до 20 МНО — 20%;

– понад 20 МНО — 25%.

Для реалізації даного алгоритму може бути написана функція користувача в модулі Visual Basic вашої робочої книги. Для цього виконайте команди меню “Сервис \ Макрос \ Редактор Visual Basic” (або Alt-F11). За допомогою меню Visual Basic виконайте команду “Вставка \ Модуль”. Далі у вікні редактора введіть текст наступного алгоритму:

Public Function ПодНалог(Сум)

Const НеоблМин = 17

If Сум > НеоблМин And Сум <= 5 * НеоблМин Then

       ПодНалог = (Сум - НеоблМин) * 0.1

ElseIf Сум > 5 * НеоблМин And Сум <= 10 * НеоблМин Then

       ПодНалог = (Сум - 5 * НеоблМин) * 0.15 + (5 * _                    НеоблМин - НеоблМин) * 0.1

ElseIf Сум > 10 * НеоблМин And Сум <= 20 * НеоблМин Then

       ПодНалог = (Сум - 10 * НеоблМин) * 0.2 + (10 * _                    НеоблМин - 5 * НеоблМин) * 0.15 + _                    (5 * НеоблМин - НеоблМин) * 0.1

ElseIf Сум > 20 * НеоблМин Then

       ПодНалог = (Сум - 20 * НеоблМин) * 0.25 + _                    (20 * НеоблМин - 10 * НеоблМин) * _

                  0.2 + (10 * НеоблМин - 5 * НеоблМин) * _                    0.15 + (5 * НеоблМин - НеоблМин) * 0.1

Else

       ПодНалог = 0

End If

End Function

Після набору тексту функції виконайте команди меню “Файл \ Закрыть и вернуться в Microsoft Excel”. Після цього виправте формули для стовпчика “Под.налог”. Для однієї з комірок формула може мати вигляд: ПодНалог(H7), де H7 — комірка стовпчика “Начислено”.

8. Запишіть висновки про зроблену роботу.

9. Надайте готову роботу для здачі викладачу.

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

Контрольні питання

1. Яка структура документа в Excel?

2. Назвіть типи даних, які використовуються в Excel.

3. Назвіть основні типи числових форматів і спосіб, яким можна змінити формат відображення числа в комірці.

4. Назвіть типи адрес комірок і їхнє призначення.

5. Як визначити власне ім'я комірки і для чого воно використовується?

6. Як ввести формулу в комірку таблиці?

7. Що таке автозаповнення?

8. Як працює автозаповнення при копіюванні формул?

Вказівки для викладача

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

Обов'язково проконтролюйте вірність формул у комірках для сум і загальних відрахувань, оскільки іноді студенти неправильно розуміють зміст обчислень.

При виникненні проблем із підсумовуванням групи комірок або обчисленням значень відповідно до визначених математичних або статистичних функцій порекомендуйте звернутися до довідки Excel у розділ змісту “Создание формул и проверка книг” або скористатися предметним покажчиком по ключових словах “функции листа”.

Відсотки у формулах можна вводити в будь-якому припустимому форматі, наприклад, “=G22*0,09” або “=G22*9%”.

Часто студенти за звичкою використовують крапку як роздільник дробової частини числа. Зверніть увагу студентів, що даний момент відображається у системі Windows (Панель управления, Язык и стандарты). За умовчанням встановлюється символ “кома”. У цьому випадку при використанні крапки в дробових числах Excel автоматично встановлює формат дати, після чого дані відображаються неправильно. Для вирішення проблеми необхідно змінити формат комірки на загальний або числовий, оскільки навіть при видаленні даних формат комірки зберігається.

Лабораторна робота 3.7 Діаграми

Мета роботи: Відпрацювання навичок по створенню і настроюванню різноманітних типів діаграм на основі існуючих табличних даних.

Засоби: Операційна система Windows NT Workstation 4.0, табличний процесор Microsoft Excel, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 5.3, с. 189-195.

2. Бойс Дж., Фаллер С., Гилген Р. и др. Использование Microsoft Office 97, профессиональный выпуск: Пер. с англ. – К.; М.; СПб.: Издат. дом «Вильямс», 1998.

Теоретичні відомості

Пам'ятайте, що діаграми призначені для аналізу даних і повинні бути максимально простими і зрозумілими. Для побудови всіх діаграм рекомендується використовувати майстер діаграм (кнопка на панелі інструментів “Стандартная” із зображенням об'ємної гістограми).

Діаграма будується за допомогою спеціального вмонтованого об'єкта Excel, якому як вхідні дані потрібна вже готова таблиця в робочій книзі Excel. Перед викликом майстра діаграм необхідно виділити ту область таблиці, по якій буде будуватися графік або діаграма. У найпростішому випадку виділяється область із числовими даними, а також заголовки рядків і стовпчиків, оскільки Excel вірно сприймає дану інформацію і використовує її для підписів даних на осях діаграми. Якщо ж для побудови графіка вимагаються тільки окремі дані, що розташовуються в таблиці з розривом, то їх можна виділити протягуванням миші, утримуючи натиснутою клавішу Ctrl.

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

Перший крок дозволяє вибрати тип діаграми. Дві закладки ділять усі типи графіків на дві групи: стандартні і нестандартні. Після вибору потрібного типу варто зазначити вид діаграми. Частіше усього види діляться на плоскі (верхній ряд) і об'ємні (нижній ряд), що вибираються в залежності від конкретних цілей або смаків користувача. Кожний із видів здебільшого ділиться на три категорії: звичайні (кожний ряд даних будується без урахування інших рядів), із накопиченням (при побудові лінії такого ряду її дані сумуються з даними попередніх рядів), нормовані (це діаграми з накопиченням, нормовані по загальному сумарному рівню у відсотках). Вибирається вид діаграми, найбільш зручний для аналізу даних. Зразок вигляду діаграми можна переглянути, утримуючи натиснутою кнопку “Просмотр результата”. Для переходу до наступного кроку слід натиснути кнопку “Далее”. Проте, якщо зразок вигляду діаграми вас влаштовує і ви розраховуєте на наступне детальне настроювання, — можете відразу натиснути кнопку “Готово”.

На другому кроці визначається джерело даних. На закладці “Диапазон данных” можна змінити розташування рядів даних (у рядках або стовпчиках), якщо ви розташували їх нетрадиційним чином. Тут же можна змінити діапазон комірок даних, якщо попереднє виділення було помилковим. За допомогою закладки “Ряд” можна визначити дані і підписи для кожного окремого ряду діаграми. Якщо ви відчуваєте труднощі з використанням окремих елементів майстра, викликайте помічника (кнопка знизу вікна з зображенням знака питання на жовтому транспаранті) або скористайтеся довідковою системою Excel. Часто даний крок пропускається.

Третій крок надає найбагатшу колекцію настроювань параметрів діаграми. Загалом це різноманітні підписи, осі, лінії сітки, легенда і таблиця даних. Рекомендується один раз докладно проглянути всі елементи і поекспериментувати з їхніми значеннями. Надалі вам буде легше використовувати їх у будь-яких інших видах діаграм. Зразок зовнішнього вигляду змінюється практично відразу після зміни будь-якого параметра. Тому вам буде дуже легко спостерігати, наскільки доцільне застосування того або іншого елемента. Якщо ви розташовуєте діаграму на поточному листі, то можна натискати кнопку “Готово”.

Заключний четвертий крок дозволяє вибрати лист для розміщення діаграми. По умовчанню пропонується помістити діаграму на наявний (поточний) лист.

Залишається натиснути кнопку “Готово”, після чого об'єкт із зображенням діаграми поміщається на зазначений лист. Фактично діаграма — це векторний малюнок, пов'язаний з областю даних у таблиці. При будь-яких змінах даних вони відразу ж відображаються і на діаграмі.

Детальне настроювання діаграми не є складним, якщо ви будете пам'ятати, що кожний елемент діаграми є об'єктом векторного малюнка. Виділяйте клацанням миші потрібний елемент і змінюйте будь-які його властивості: розміри (розтяжкою габаритних квадратиків), шрифт (для написів), колір, товщину і тип ліній або заповнених областей. Не можна окремо змінювати розміри тих елементів, що прив'язані до координатної сітки. Не забувайте про призначення клацання правою кнопкою миші для об'єкта. Будь-який елемент можна перетягнути в будь-яке зручне для вас місце діаграми. Якщо для додаткового настроювання діаграми вам зручніше скористатися майстром (наприклад, забули додати легенду), то виділіть будь-який об'єкт діаграми (важливо, щоб ви просто знаходилися на діаграмі) і натисніть кнопку майстра. За допомогою кнопок “Назад” і “Далее” перейдіть до потрібного кроку, виконайте необхідні настроювання і натисніть кнопку “Готово”.

Якщо документ призначається для друку на кольоровому принтері, то можна підібрати будь-який виразний колір для елементів діаграми. Проте, по умовчанню елементам призначаються такі кольори, що оптимально трансформуються у відтінки сірого кольору для чорно-білих принтерів. Іноді гарне на ваш погляд сполучення кольорів може злитися при друці в суцільну темну пляму.

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

Навчіться чітко виділяти потрібний елемент діаграми і виконувати його настроювання. Іноді використовується поетапне виділення. Наприклад, перше клацання по сегменту кругової діаграми виділяє всі сегменти діаграми, а друге клацання по цьому ж сегменту переміщує виділення тільки на даний сегмент. Тепер його можна висунути або змінити колір. Якщо потрібно виділити не сегменти, а область кругової діаграми (для зміни її розмірів), то клацайте не по сегментах, а в куток уявлюваного прямокутника, описаного навколо сегментів.

Оскільки для кожного типу діаграм можуть використовуватися специфічні особливості настроювання, намагайтеся спочатку ширше використовувати довідкову інформацію Excel. Загальні питання можна легко розв'язати, якщо використовувати зміст довідки. Там ви знайдете розділ, цілком присвячений роботі з діаграмами.

Хід роботи

1. Запишіть відповіді на контрольні питання в робочий зошит.

2. Скопіюйте з папки “Для заданий” файл “Таблицы для диаграмм.xls” у свою робочу папку. Всі наступні завдання виконуйте тільки в зазначеному файлі своєї робочої папки! Результати аналізу кожної діаграми записуйте в робочому файлі в зручному місці робочого листа.

3. На “Листе1” для таблиці “Продажи видеофильмов за первую неделю октября 1998 г.” створіть діаграму заповненого типу. Для цього виділіть ділянку таблиці, що містить заголовки рядків і стовпчиків, а також комірки з даними. Натисніть кнопку майстра діаграм. На першому кроці на закладці “Стандартные” виберіть тип “С областями”, вид “Диаграмма с областями с накоплением”. На другому кроці переконайтеся, що ряди даних установлені “В строках”. На третьому кроці введіть назву діаграми, наприклад “Продажи видеофильмов”, підписи до осей лишіть порожніми; осі включені, вісь Х установлюється як вісь часу; для ліній сітки, як по Х, так і по Y, включіть основні лінії; легенда нехай розташовується вгорі над діаграмою; підписів даних немає; таблиця даних відсутня. Після 4-го кроку необхідно розмістити діаграму на наявному робочому листі “Лист1” знизу під таблицею з даними. Встановіть загальні розміри діаграми так, щоб усі підписи були помітні, а дані можна було оцінювати кількісно. Які висновки можна зробити на основі отриманої діаграми? Запишіть їх по пунктах під діаграмою. Який параметр на діаграмі може вказувати на стабільність продажів визначеної категорії відеофільмів. Зазначте цю категорію.

4. Перейдіть на “Лист2”. Для таблиці “Валовой сбор с/х продукции” побудуйте діаграму типу “Линейчатая”, виду “Объемный вариант обычной линейчатой диаграммы с накоплением”. Дані розташовуються в стовпчиках. Інші параметри настройте самостійно. Діаграму розташуйте справа від таблиці з даними. Вертикальний розмір встановіть так, щоб були значні назви всіх країн. Запишіть свої висновки з приводу як загального обсягу продукції по країнах, так і відносного обсягу по категоріях продукції. Чи можна оцінити можливості України по експорту с/г продукції в інші країни? Якщо так, то яким чином? Якщо ні, то яких даних не вистачає?

5. Перейдіть на “Лист3”. Для таблиці “Оплата коммунальных услуг во 2-м квартале” створіть гістограму виду “Обычная”. Оцініть по гістограмі зміну оплати за послуги, як у цілому, так і по категоріях у кожному окремому місяці.

6. На “Листе4” виділіть частину таблиці, що містить тільки заголовки рядків і дані по території, і створіть кругову діаграму звичайного виду для оцінки внеску кожної частини світу в загальну територію земної суші. Не включайте у виділену область підсумковий рядок “Весь мир”! Визначте назву діаграми. Підпис даних зазначте як “Категория и доля”. Легенду можна прибрати. Діаграму розташуйте під таблицею.

На цьому ж листі створіть другу діаграму — кільцеву. Для цього у виділену раніше область таблиці включіть дані по населенню. Для даної діаграми визначте назву, розташування легенди задайте справа від діаграми, для підпису даних виберіть “Доля”. Діаграму розташуйте справа від першої діаграми. Зазначте, яким чином по другій діаграмі можна оцінити густоту населення будь-якого континенту? Запишіть свої оцінки під діаграмою.

На розсуд викладача: спробуйте самостійно створити кругову діаграму, аналогічну першій, але по населенню.

7. На “Листе5” спробуйте за допомогою змішаних діаграм визначити, які з зовнішніх факторів реально впливали на кількість серцево-судинних захворювань в одній з міських лікарень. Оскільки крім кількості захворювань у таблиці ще зазначені дані зміни 4 різноманітних факторів, необхідно побудувати 4 діаграми. Для створення кожної діаграми виділяйте за допомогою протягування мишею і клавіші Ctrl рядок заголовка таблиці, рядок із даними по захворюваннях і рядок з одним із зовнішніх факторів. На першому кроці майстра діаграм переключіться на закладку “Нестандартные” і виберіть “График | гистограмма 2”. Якщо вид діаграми на зразку вас влаштовує, можете відразу натиснути кнопку “Готово”. Як правило, настроювання подальших параметрів мінімальні. Діаграми розміщайте знизу одну під одною. Настройте необхідну ширину і висоту діаграм. Визначте періоди різкого збільшення захворювань. Які з факторів мають подібний характер змін? Які з факторів, на ваш погляд, могли мати додатковий вплив на загальну кількість захворювань? Результати аналізу запишіть під діаграмами.

Примітка: для виявлення закономірностей аналізуйте не тільки співвідношення підйомів і спадів для відповідних величин, але й їхню динаміку, тобто підйому або спаду однієї величини може відповідати часта зміна або відносна стабільність іншої величини.

8. На “Листе6” побудуйте діаграму у вигляді графіка за даними таблиці результатів продажів 4-х менеджерів. Для цього виберіть стандартний тип “График” і перший вид звичайних графіків. Запишіть свої міркування з щодо того, кого зі співробітників слід заохотити і чому.

9. На “Листе7” необхідно винести рішення про розташування місця нової філії фірми в одному із заданих міст. Для цього виберіть тип діаграми “Лепестковая”, вид “Лепестковая диаграмма без маркеров”. На другому кроці зазначте, що ряди даних знаходяться у стовпчиках. Задайте заголовок, наприклад “Анализ места расположения нового филиала”. Легенду краще розташувати знизу або вгорі діаграми. Виконуючи клацання правою кнопкою миші по межі будь-якого з пелюстків діаграми й обираючи команду “Формат рядов данных…” в контекстному меню, спробуйте оптимально настроїти вид діаграми так, щоб результат, на ваш погляд, виглядав максимально очевидним.

За цими ж даними побудуйте ще одну діаграму типу “Поверхность”. Клацнувши по одному з кутів паралелепіпеда діаграми, домогтися, щоб курсор набув виду хрестика. Далі можна захопити цим курсором куток і обертати об'ємну область діаграми по будь-якій із трьох координат. Надайте діаграмі максимально зручний вид. Спробуйте визначити, у “перерізі” якого з міст більше “високогірних” ділянок. Як співвідносяться ваші висновки по першій і другій діаграмам?

Запишіть свої висновки про проведений аналіз.

10. На розсуд викладача виконайте таку роботу:

Перейдіть на “Лист8”. Для заданої таблиці необхідно проаналізувати внесок кожного району в загальний об'єм виробництва по роках, а також динаміку зміни сумарного виробництва м'яса в районах по місяцях за задані три роки (тобто як співвідносяться всі січневі обсяги по районах, лютневі, березневі і т.п.).

За необхідністю доповніть таблицю додатковими стовпчиками і/або рядками і заповніть їх відсутніми розрахунковими даними. Спробуйте використовувати різноманітні типи діаграм для аналізу. Виберіть найбільш схожі, непотрібні видаліть. Виділяйте стовпчики або рядки, необхідні для побудови діаграм, за допомогою протягування мишею і клавіші Ctrl.

11. Запишіть у зошиті висновки про зроблену роботу.

12. Результати роботи надайте для здачі викладачу.

По закінченню роботи студенти повинні вміти створювати різноманітні діаграми по табличних даних, вміти визначати оптимальний тип діаграм, робити по них нескладний аналіз.

Контрольні питання

1. Для чого призначені діаграми?

2. Назвіть основні типи діаграм і їхнє призначення.

3. Чому важливий вибір правильного типу діаграми?

4. Коротко зазначте порядок створення діаграм.

Вказівки для викладача

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

Лабораторна робота 3.8 Таблиці підстановки для прогнозування

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

Засоби: Операційна система Windows NT Workstation 4.0, табличний процесор Microsoft Excel, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 5.3, с. 195-204.

2. Бернс П., Николсон Дж. Секреты Excel для Windows 95. К.: Диалектика, 1996, 576 с. (с. 378-406).

Теоретичні відомості

Власне прогноз у Excel не є якимось винятковим явищем. Якщо потрібно дізнатися, яке зростання виробництва необхідно, щоб протягом року підвищити зарплату співробітникам, наприклад, на 10%, потрібно просто знати формули і методику розрахунку. Excel у даному випадку виступає звичайним інструментом. Проте, якщо результат залежить від багатьох факторів, які можуть приймати різноманітні значення в деяких діапазонах, то простий ручний розрахунок, по-перше, вимагатиме значних витрат часу, а, по-друге, не дасть чіткої картини у випадках роботи з великими масивами даних.

Excel містить достатньо потужні засоби отримання додаткової інформації, що дозволяє приймати більш продумані й обґрунтовані рішення.

Одним із таких засобів є таблиці підстановки, що дозволяють виконувати обчислення декількох величин відразу. Найбільш важливим є те, що цей засіб виводить на екран декілька рішень, що дозволяють побачити, яким чином величини впливають одна на одну при їхньому варіюванні.

Таблиці підстановки використовуються, щоб побачити зміни однієї визначеної величини або взаємодію двох величин. Таблиці даних оперують тільки однією або двома величинами одночасно.

Хід роботи

1. Запишіть відповіді на контрольні питання.

2. Відпрацюйте лекційні приклади в окремому файлі, який збережіть з ім'ям “Лекционные примеры.xls”.

3. Для наступних завдань створіть новий робочий файл “Таблицы подстановки.xls”. Кожне завдання виконуйте на окремому листі. Листам дайте відповідні імена.

4. Використовуючи таблицю підстановки, складіть таблицю значень багаточлена ax4+bx3+cx2+d на відрізку [x1; x2] із кроком s. Значення параметрів виберіть із наступної таблиці відповідно до варіанта:

Вариант | a | b | c | d | x1 | x2 | s
1 | 2 | -1,4 | -3,5 | 4 | 0 | 3 | 0,2
2 | -3 | 2,1 | 2 | -5,4 | -1 | 1 | 0,1
3 | 1,3 | -3 | -3,5 | 3,1 | -2 | 4 | 0,5
4 | -1,8 | -1,1 | 4,2 | -2 | 1 | 3 | 0,2
5 | 2,5 | 1,3 | -3,7 | -7 | -1,5 | 1,5 | 0,25
6 | -2,9 | 3,2 | 1,9 | -3,8 | 0 | 2 | 0,1
7 | 0,75 | -1,5 | -0,4 | 2,5 | -0,5 | 1 | 0,1
8 | -3,4 | -0,3 | 5,6 | 9 | -1 | 2 | 0,25
9 | 1,6 | -2,2 | -2,8 | 4,7 | 0 | 2 | 0,2
10 | -5 | 2,8 | 6 | -14 | -2 | 2 | 0,25
11 | 0,51 | -2,7 | 0,2 | -1,9 | 0 | 2,5 | 0,1
12 | -0,8 | 1,75 | 1,34 | -3 | -1 | 1 | 0,1
13 | 1,1 | 0,15 | -2,92 | -3,6 | 0 | 2 | 0,2
14 | -1,7 | 2,41 | 1,4 | -5,3 | -2 | 2 | 0,25
15 | 1 | -2,25 | -1,7 | 5,7 | 1 | 3 | 0,2

Примітка: Для піднесення до ступеня використовуйте математичну функцію Excel СТЕПЕНЬ(число; степень).

Створіть діаграму для графіка функції вказаного багаточлена. Визначте, чи має дана функція точки екстремуму на вказаному відрізку. Якщо екстремум відсутній, але є очевидна тенденція до його отримання за межами інтервалу, то створіть нову таблицю підстановки для нового інтервалу варіації аргументу x. Запишіть свої висновки в робочому файлі.

5. За допомогою таблиць підстановки досліджуйте параметри руху деякого тіла, кинутого вгору з висоти d із початковою швидкістю c. Необхідно побудувати графіки залежності висоти і швидкості руху тіла від часу руху. Нагадаємо, що в цьому випадку висота змінюється за законом h(t) = d + ct – gt2/2, де g = 9,81 м/с2, а швидкість — за законом v(t) = c – gt. Підберіть інтервал і крок варіації часу таким чином, щоб можна було визначити час падіння тіла на землю. Запишіть цей час, а також значення максимальної висоти у своєму робочому файлі. Значення вхідних параметрів виберіть із наступної таблиці:

Варіант | d (м) | c (м/с)
1 | 2 | 10
2 | 3 | 6,5
3 | 0,8 | 2
4 | 3,5 | 12
5 | 1 | 7,4
6 | 4,4 | 11,5
7 | 8 | 1,5
8 | 15 | 3,7
9 | 6,3 | 21
10 | 2,7 | 0,94
11 | 5 | 6,9
12 | 1,75 | 15,2
13 | 9 | 3,3
14 | 5,1 | 6,2
15 | 12 | 7,8

6. Побудуйте об'ємну діаграму сфери, скориставшись рівнянням сфери R2 = x2+y2+z2. Конкретне значення радіуса можна задати довільно (наприклад, 5 або 7). За допомогою таблиці підстановки обчисліть значення однієї координати (наприклад, z) у залежності від зміни двох інших. Інтервали зміни координат задавайте в діапазоні [–R; R] із кроком, що дає приблизно 15-20 точок на інтервалі кожної координати. Оскільки кожній парі координат відповідають два значення третьої координати (додатне і від’ємне), — реально ви зможете зобразити тільки верхню півсферу. Не звертайте уваги на повідомлення про помилку в тих комірках таблиці, де здійснювалася спроба обчислення квадратного кореня від від’ємного числа, — діаграма буде відображатися коректно по всій області таблиці.

7. Запишіть у зошит висновки про зроблену роботу.

8. Для здачі надайте викладачу два файли “Лекционные примеры.xls” і “Таблицы подстановки.xls”, а також матеріали поточної роботи.

По закінченню роботи студенти повинні вміти швидко створювати таблиці даних для різноманітних видів аналізу за допомогою таблиць підстановки.

Контрольні питання

1. Для чого використовуються таблиці підстановки?

2. Назвіть основні засоби прогнозування за допомогою таблиць підстановки.

3. Чому не використовуються таблиці підстановки з трьома і більше вхідними величинами?

4. Опишіть порядок створення таблиці підстановки з однією вхідною величиною і декількома результуючими формулами.

5. Опишіть порядок створення таблиці підстановки з двома вхідними величинами й однією формулою.

Вказівки для викладача

Звичайно проблеми у студентів із таблицями підстановки виникають тільки в тому випадку, якщо вони недостатньо уважно відпрацюють лекційні приклади.

Лабораторна робота 3.9 Проста база даних

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

Засоби: Операційна система Windows NT Workstation 4.0, система управління базами даних Microsoft Access, матеріали даної роботи, література.

Література:

1. Мазарчук А.Ю. Информатика: конспект лекций. Хмельницкий, «Эврика», 1999, п. 5.4, с. 204-212.

2. Бойс Дж., Фаллер С., Гилген Р. и др. Использование Microsoft Office 97, профессиональный выпуск: Пер. с англ. – К.; М.; СПб.: Издат. дом «Вильямс», 1998.

Теоретичні відомості

Звичайно, основні відомості по роботі із системою управління базами даних (СУБД) Microsoft Access можна одержати з її довідкової системи.

Вся база даних Microsoft Access упаковується в один файл із розширенням mdb. При початковому створенні файла бази даних усередині нього організується структура для збереження усіх майбутніх об'єктів бази даних. Після відкриття файла можна створювати і модифікувати будь-які об'єкти для розв’язання визначеної задачі.

Більшість задач, розв'язуваних СУБД, розбивають вирішення на два основних етапи: 1) організація структури і накопичення вхідних даних, 2) обробка й подання результатів.

Вхідні дані звичайно розбивають на окремі інформаційні об'єкти, відомості про які розміщають в окремі таблиці. Наприклад, при вирішенні задачі складського обліку можна представити три основних об'єкти: товар, надходження і витрати. Кожний з об'єктів має ряд властивих йому характеристик, наприклад: товар — код, найменування, тип, ціна; надходження — номер, дата, товар, кількість; витрати аналогічні надходженням. Такий поділ дуже важливий для зручного накопичення інформації та її обробки. Для кожного об'єкта створюється окрема таблиця. Рядок (запис) таблиці зберігає дані про окремий примірник об'єкта (конкретний товар, надходження або витрати), а стовпчики (поля) — характеристики цього об'єкта. Для кожного з об'єктів можна знайти відповідну асоціацію: товар — каталог або список можливих товарів, надходження і витрати — накладні на одержання або відпуск товарів. Тепер із такої бази даних можна отримати інформацію про наявність будь-яких товарів на будь-який момент часу, про кількість усіх товарів, одержаних або відпущених за визначений період, список товарів, на які найвищий попит, і багато інше. Якщо ви вважаєте, що до складу основних об'єктів входять додаткові об'єкти (наприклад, тип для товару), то можна створити для них додаткові таблиці. Розподіл інформації по окремих об'єктах сприяє зменшенню інформації, що дублюється, а це означає і загальне зменшення помилок при введені даних. Так, при отриманні того ж товару не потрібно щоразу записувати до надходження однакові назви і ціни, можна просто зазначити код потрібного товару. Потім дуже легко дати команду СУБД, щоб вона для кожного коду товару в надходженнях або витратах знайшла відповідне найменування і ціну в каталозі товарів. Обробка по кодах товарів виконується набагато надійніше, ніж якби ви щоразу вводили найменування (найменування можна записати так, що воно буде схожим, але чимось відрізнятися). Якщо найменування відрізняються хоча б на один символ, то система сприймає їх як різні.

У даній роботі ви створите просту базу даних з однією таблицею і навчитеся одержувати з неї різноманітну інформацію за допомогою запитів.

Необхідно організувати базу даних для обліку успішності учнів деякої школи. Облік ведеться щодня і заноситься в таку таблицю:

N | Дата | Прізвище Ім'я | Клас | Предмет | Оцінка
1 | 25.09.2000 | Сидоров Коля | 7-Б | Біологія | 3
2 | 27.09.2000 | Жаркова Оля | 8-А | Математика | 5
… | … | … | … | … | …

Таким чином, структуру таблиці можна описати у такий спосіб:

Имя поля | Тип данных | Описание
N | Счетчик | Номер записи
Дата | Дата/время | Дата записи
Фамилия Имя | Текстовый, 30 | Фамилия и имя ученика
Класс | Текстовый, 4 | Класс ученика
Предмет | Текстовый, 20 | Учебная дисциплина
Оценка | Числовой, байт | Текущая оценка

Структуру таблиці рекомендується створювати в режимі конструктора. Розміри полів (текстового і числового) визначаються у властивостях поля (нижня таблиця конструктора). Стовпчик “Описание” у структурі не обов'язковий і має функцію своєрідного коментарю. Імена полів можуть складатися з кількох слів, розділених пробілами. Не слід в іменах використовувати розділові знаки (крапка, кома, апостроф). У такій таблиці рекомендується встановити позначку ключа на поле “N”. Це змусить систему дотримуватися унікальності значень у даному полі і не дозволить ввести повторний запис з таким же номером. Для встановлення ключа треба виділити в конструкторі рядок з потрібним полем і натиснути на Панелі інструментів кнопку з зображенням ключа. При закритті конструктора система запропонує зберегти структуру створеної таблиці. Дайте їй ім'я “Успеваемость”.

Щоб мати можливість виконати будь-яку обробку інформації, необхідно спочатку ввести деякі вхідні дані у створену таблицю.

Обробка проводиться у вигляді запитів, які формулюються до даних в режимі конструктора. Деякі види обробки розглянемо на прикладах.

1) Фільтрація даних.

Вивести всі записи, що не мають позитивних оцінок.

На бланку результату необхідно зазначити, що виводиться інформація з усіх полів, на поле “Оценка” накладається обмеження на величину. Відбувається своєрідна фільтрація даних по величині оцінки.

Успеваемость |
*
N
Дата
Фамилия Имя
Класс
Предмет
Оценка
Поле: | Успеваемость.* | Оценка
Имя таблицы: | Успеваемость | Успеваемость
Сортировка: |  |
Вывод на экран: | √ |
Условие отбора: |  | < 3
или: |  |

Як можливі критерії для умови відбору по різноманітних полях можна навести такий список значень:

Критерій | Умова відбору
Дорівнює двом | 2
Від 3 до 4 включно | Between 3 And 4
По 5-В класу | “5-В”
По біології | “Біологія”
По алгебрі та геометрії (або Алгебра, або Геометрія) | “Алгебра” OR “Геометрія”
За перший тиждень вересня 2000 г. | Between #01.09.2000# And #07.09.2000#
Не раніше 01.10.2000 г. | >= #01.10.2000#

Кожна частина логічного виразу з АБО (OR) може записуватися в окремому рядку “или” бланка запиту (починаючи з рядка “Условие отбора”).

2) Обчислення по групах записів.

Підрахувати суму оцінок кожного учня по всіх предметах за 1-у чверть 2000 р. (вересень-жовтень).

Конструктор запиту переключаємо в режим групування (на Панелі інструментів необхідно зафіксувати кнопку ∑). При цьому в бланку запиту з'явиться додатковий рядок “Групповая операция”. Якщо подумки уявити собі кожний запис таблиці, оформлений на окремій картці, то групування ототожнюється з розкладанням карток на купки за однаковими значеннями поля, що групується. Тому для вирішення задачі необхідно спочатку розкласти картки купками по прізвищах учнів (Іванов в одну стопку, Петров — в іншу і т.д.), а потім порахувати суму всіх оцінок в кожній купці. Результат очевидний — список прізвищ учнів із сумою балів навпроти кожного прізвища. Побудова запиту аналогічна. Вказуємо групування по полю “Фамилия Имя”, а далі вказуємо підсумовування по полю “Оценка”. На поле “Дата” накладається обмеження у вигляді умови. Оскільки по даті групування не проводиться, у рядку “Групповая операция” для цього поля потрібно встановити значення “Условие”.

Успеваемость |
*
N
Дата
Фамилия Имя
Класс
Предмет
Оценка
Поле: | Фамилия Имя | Оценка | Дата
Имя таблицы: | Успеваемость | Успеваемость | Успеваемость
Групповая операция: | Группировка | Sum | Условие
Сортировка: |  |  |
Вывод на экран: | √ | √ |
Условие отбора: |  |  | Between #01.09.2000# And #31.10.2000#
или: |  |  |

У запитах з групуваннями для полів, що визначають тільки умову відбору, позначка виводу на екран відключається.

3) Обчислення з додатковими групуваннями.

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

Тут спочатку треба “розкласти картки в купки” по прізвищах учнів (групування по полю “Фамилия Имя”). Потім купку карток кожного учня треба розкласти на купки по предметах (групування від групування), із яких слід вибрати або хімію, або біологію. У купках по предметах потрібно обчислити середню оцінку. Обмеження по даті відсутнє, але на предмети, що групуються, накладається додаткова умова (фільтр).

Успеваемость |
*
N
Дата
Фамилия Имя
Класс
Предмет
Оценка
Поле: | Фамилия Имя | Предмет | Оценка
Имя таблицы: | Успеваемость | Успеваемость | Успеваемость
Групповая операция: | Группировка | Группировка | Avg
Сортировка: |  |  |
Вывод на экран: | √ | √ | √
Условие отбора: |  | “Хімія” |
или: |  | “Біологія” |

Групування завжди виконується покаскадно, тобто спочатку — групування по прізвищах, а потім для кожного прізвища здійснюється окреме групування по предметах. Групова функція (Avg – average – середнє) завжди застосовується до останнього рівня групування, тобто до предмета.

Нижче наводиться список найчастише використовуваних функцій для групових операцій:

§ Sum — сума числових значень по групі;

§ Avg — середнє значення числового поля в групі;

§ Min — мінімальне значення в групі;

§ Max — максимальне значення в групі;

§ Count — кількість записів із непустим значенням поля.

Кожний запит може бути збережений у базі даних з визначеним ім'ям. Імена слід давати так, щоб вони відбивали суть розв'язуваної задачі, наприклад, “Суммарная оценка учеников за 1 четверть” або “Средняя оценка учеников по предметам”. Надалі збережений запит буде своєрідним шаблоном обробки даних. Після доповнення таблиці новими даними запит завжди видає правильний результат з обліком усіх даних, що надійшли.

Хід роботи

1. Запишіть відповіді на контрольні питання в робочий зошит.

2. У своїй робочій папці створіть базу даних з ім'ям “Школа”.

3. Створіть таблицю “Успеваемость” відповідно до опису даної роботи. Обов'язково зверніть увагу на установку ключа.

4. Відкрийте таблицю і введіть у неї 30 записів. У цих записах повинні відбиватися дані 6 учнів із 2 різних класів. У кожного учня повинно бути по 5 записів з оцінками по різних предметах. Всі дати повинні потрапляти в діапазон від 4.09.2000 до 8.09.2000. Прізвища, класи, предмети й оцінки придумайте самостійно. Стежте за тим, щоб значення однакових прізвищ, класів і предметів у різних записах були ідентичними (аж до пробілів і регістра літер).

5. Відпрацюйте три приклади з запитами, наведеними в описі даної роботи, і збережіть їх з відповідними іменами.

6. Створіть запити для вирішення таких задач:

Вариант 1.

1) Визначте середню оцінку кожного класу.

2) Визначте кількість оцінок кожного класу по кожному предмету.

Вариант 2.

1) Визначте середню оцінку в школі за кожний день.

2) Визначте мінімальну і максимальну оцінку кожного учня по кожному предмету.

Вариант 3.

1) Визначте суму оцінок по кожному предмету.

2) Визначте кількість оцінок кожного учня по кожному предмету.

Вариант 4.

1) Визначте мінімальну оцінку по кожному предмету.

2) Визначте кількість відмінних оцінок за кожний день по кожному предмету.

7. У робочому зошиті накресліть схеми запитів у режимі конструктора, а також таблиці отриманих результатів для кожної закінченої задачі.

8. Запишіть у зошиті вивсновки про зроблену роботу.

9. Надайте готову роботу викладачу для здачі.

Контрольні питання

1. Що таке бази даних?

2. Що таке СУБД і для чого вони призначені?

3. Опишіть структуру СУБД Microsoft Access.

4. Як визначається структура таблиць?

5. Що таке запит і який результат його дії?

Вказівки для викладача

При виникненні проблем із запитами порекомендуйте студентам ще раз переглянути теоретичні відомості даної роботи. Намагайтеся для вирішення задач мобілізувати асоціативну уяву студентів, пропонуючи їм хоча б варіант із картками та їх розкладанням по купках.

Підкажіть студентам, що значення дуже багатьох полів у конструкторі запитів, таблиць або властивостях різноманітних елементів можна вибрати зі списку, що випадає. Щоб визначити таку можливість, потрібно клацнути мишкою по полю. Якщо в цьому полі справа з'являється кнопка списку, що випадає, то це означає, що така можливість існує.

Можна нагадати студентам, що порядок виконання практично будь-якої операції в СУБД описаний у її довідковій системі. Викликавши довідку за допомогою клавіші F1, можна швидко і правильно виконати всі необхідні дії.


line
<h1>Інформатика та ком'пютерна технiка</h1>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("intro1")>Введение</span>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("intro2")>Начальные сведения</span>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("01")>1. Вычислительная система</span>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("02")>2. Программное обеспечение</span>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("03")>3. Основы алгоритмизации и программирования</span>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("04")>4. Операционная система Windows</span>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("05")>5. Пакеты прикладных программ</span>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("end")>Заключение</span>

<hr>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("l01")>Лабораторні роботи. Частина 1</span>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("l02")>Лабораторні роботи. Частина 2</span>

<span class=normal onmouseover=doOv(this) onmouseout=doOu(this) onclick=doCl("l03")>Лабораторні роботи. Частина 3</span>