Учебник Информатика 10 класс Профильный уровень Угринович

На сайте Учебники-тетради-читать.ком ученик найдет электронные учебники ФГОС и рабочие тетради в формате pdf (пдф). Данные книги можно бесплатно скачать для ознакомления, а также читать онлайн с компьютера или планшета (смартфона, телефона).
Учебник Информатика 10 класс Профильный уровень Угринович - 2014-2015-2016-2017 год:


Читать онлайн (cкачать в формате PDF) - Щелкни!
<Вернуться> | <Пояснение: Как скачать?>

Текст из книги:
Н. Д. Угринович V БИНОМ ОРОйи/]ЛЬНЬИ/1 У^~ЮЧЕИЬ Н. Д. Угринович ИНФОРМАТИКА иИКТ Учебник ДЛЯ 10 класса 3-е издание, исправленное Допущено Министерством образования и науки Российской Федерации к использованию в образовательном процессе в образовательных учреждениях, реализующих образовательные программы общего образования Москва БИНОМ. Лаборатория знаний 2008 УДК 004.9 ББК 32.97 У27 Угринович Н. Д. У27 Информатика и ИКТ. Профильный уровень : учебник для 10 класса / Н. Д, Угринович. — 3-е изд., испр. — М. : БИНОМ. Лаборатория знаний, 2008. — 387 с. : ил. ISBN 978-5-94774-828-4 Учебник по курсу «Информатика и ИКТ» ориентирован на информационно-технологический и физико-математический профили обучения в общеобразовательных учреждениях. Учебник полностью соответствует новому образовательному стандарту и примерной программе профильного обучения, утвержденным Министерством образования и науки РФ. Содержание учебника соответствует программе вступительных экзаменов по информатике в вузы, и он может быть использован для подготовки к экзаменам. Рассматриваются архитектура компьютера и методы защиты информации, понятие «информация» и системы счисления, основы логики и логические основы компьютера, а также объектно-ориентированное программирования на. четырех яаыках; Visual Basic, BelpUl, Visual C# и Visual J#. Bee необходимое для преподавания курса программное обеспечение содержится на CD-дисках, которые входят в состав методического пособия для учителя. УДК 004.9 ББК 32.97 По вопросам приобретения обращаться: «БИНОМ. Лаборатория знаний» (499) 157-52-72, e-mail: [email protected] https://www.Lbz.ru ISBN 978-5-94774-828-4 © Угринович Н. Д., 2008 © БИНОМ. Лаборатория знаний, 2008 Оглавление Рекомендации по использованию учебника.................7 Глава 1. Архитектура компьютера и защита информации...........................9 1.1. Магистрально-модульный принцип построения компьютера.............................10 1.2. Процессор и оперативная память...................16 1.2.1. Процессор..................................16 1.2.2. Оперативная память.........................23 1.3. Внешняя (долговременная) память..................29 1.3.1. Магнитная память...........................29 1.3.2. Оптическая память..........................31 1.3.3. Флэш-память................................34 1.4. Файл и файловые системы..........................37 1.4.1. Логическая структура носителя информации...37 1.4.2. Файл.......................................44 1.4.3. Иерархическая файловая система.............49 1.0. Операционная система.............................54 1.5.1. Назначение и состав операционной системы...54 1.5.2. Загрузка операционной системы..............59 1.6. Защита информации от вредоносных программ........61 1.6.1. Вредоносные программы и антивирусные программы...................................61 1.6.2. Компьютерные вирусы и защита от них........64 1.6.3. Сетевые черви и защита от них..............71 1.6.4. Троянские программы и защита от них........75 1.6.5. Рекламные и шпионские программы и защита от них.............................79 1.6.6. Спам и защита от него......................84 1.6.7. Хакерские утилиты и защита от них..........88 Глава. 2. Информация. Системы счисления...............94 2.1. Понятие «информация» в науках о неживой и живой природе, обществе и технике...............94 2.1.1. Информация в физике........................94 2.1.2. Информация в биологии......................99 2.1.3. Информация в общественных науках..........101 2.1.4. Информация в кибернетике...................ЮЗ Огдавлещ^е 2.2. Количество информации как мера уменьшения неопределенности знания...........................105 2.3. Алфавитный подход к определению количества информации........................................110 2.4. Формула Шеннона..................................111 2.5. Кодирование текстовой, графической и звуковой информации........................................115 2.6. Хранение информации..............................119 2.7. Кодирование числовой информации. Системы счисления.................................121 2.7.1. Непозиционные системы счисления............121 2.Т.2. Позиционные системы счисления............ 125 2.8. Перевод чисел из одной системы счисления в другую. . . 129 2.8.1. Перевод целых чисел из десятичной системы в двоичную, восьмеричную и шестнадцатеричную. , . 129 2.8.2. Перевод дробей из десятичной системы в двоичную, восьмеричную и шестнадцатеричную............133 2.8.3. Перевод чисел из двоичной системы в восьмеричную и шестнадцатеричную и обратно . . . 136 2.9. Арифметические операции в позиционных системах счисления................................140 2.10. Представление чисел в компьютере................143 2.10.1. Представление чисел в формате с фиксированной запятой.....................143 2.10.2. Представление чисел в формате с плавающей запятой.........................148 Глава. 3. Основы логики и логические основы компьютера...................................151 3.1. Формы мышления...................................151 3.2. Алгебра логики................................. 156 3.2.1. Логическое умножение, сложение и отрицание.156 3.2.2. Логические выражения.......................164 3.2.3. Логические функции.........................169 3.2.4. Логические законы и правила преобразования логических выражений........................174 3.2.5. Решение логических задач...................177 3.3. Логические основы устройства компьютера..........180 3.3.1. Базовые логические элементы................180 3.3.2. Сумматор двоичных чисел....................183 3.3.3. Триггер....................................188 Оглавление Алгоритмизация и основы объектно-ориентированного программирования............................190 4.1. Алгоритм и кодирование основных алгоритмических структур.........................................190 4.1.1. Алгоритм и его свойства...................190 4.1.2. Алгоритмические структуры «ветвление» и «выбор»......................192 4.1.3. Алгоритмическая структура «цикл»..........195 4.2. История развития языков программирования........197 4.3. Введение в объектно-ориентированное визуальное программирование.................................201 4.3.1. Объекты: свойства и методы.............. 201 4.3.2. События...................................203 4.3.3. Проекты и приложения......................205 4.4. Система объектно-ориентированного программирования Microsoft Visual Studio .NET.....................208 4.4.1. Платформа .NET Framework..................208 4.4.2. Интегрированная среда разработки языков Visual Basic .NET, Visual C# и Visual J# ..212 4.5. Система объектно-ориентированного программирования Turbo Delphi.....................................216 4.6. Переменные......................................221 4.7. Графический интерфейс...........................226 4.8. Пространство имен .NET..........................237 4.9. Процедуры и функции.............................243 4.9.1. Процедуры.................................243 4.9.2. Функции...................................248 4.10. Итерация и рекурсия............................252 4.11. Делегаты.......................................257 4.12. Алгоритмы перевода чисел и их кодирование на языках объектно- ориентированного программирования.................................262 4.12.1. Алгоритм перевода целых чисел............262 4.12.2. Алгоритм перевода дробных чисел.....272 4.13. Графика в объектно-ориентированных языках программирования.................................281 4.13.1. Графика в языках программирования Visual Basic .NET, Visual C# и Visual J#..281 4.13.2. Графика в языке программирования Turbo Delphi .............................300 Оглавление 4.13.3. Компьютерная и математическая системы координат.........................311 4Л3.4. Анимация................................316 4.14. Модульный принцип построения решений (групп) и проектов.....................................320 4.15. Чтение и запись данных в файлы................329 4.16. Массивы.......................................332 4.16.1. Заполнение массивов....................332 4.16.2. Поиск элемента в массивах..............341 4.16.3. Сортировка числовых массивов...........344 4.16.4. Сортировка строковых массивов. . . ....354 Глава. 5. Практические задания для тематического и итогового контроля.......................359 Тема «Архитектура компьютера и защита информации»> . . 359 Тема «Информация. Системы счисления»................367 Тема «Логика и логические основы компьютера»........368 Тема «Алгоритмизация и основы объектно- ориентированного программирования».............369 Ответы и решения....................................375 Плакаты.............................................377 Таблица 1. Процессоры...............................377 Таблица 2. Элементы управления для ввода и вывода данных....................................379 Таблица 3. Элементы управления для организации интерактивного диалога....................380 Таблица 4. Элементы управления, не отображаемые на форме в процессе выполнения проекта....381 Таблица 5. Типы переменных..........................382 Таблица 6. Встроенные функции (методы)..............383 Таблица 7. Кодирование алгоритмических структур «ветвление» и «выбор».....................384 Таблица 8. Кодирование алгоритмической структуры «цикл»..........................385 Словарь компьютерных терминов.......................386 Рекомендации по использованию учебника 1, Учебник «Информатика и ИКТ-10. Профильный уровень» обеспечивает изучение профильного курса «Информатика и ИКТ» в 10 классе на профильном уровне в соответствии с образовательным стандартом. Учебник входит в состав учебно-программного комплекса, включающего: • учебники для основной школы: «Информатика и ИКТ-8» и «Информатика и ИКТ-9»; • учебники по профильному курсу для старшей школы на базовом уровне; «Информатика и ИКТ-10. Базовый уровень» и «Информатика и ИКТ-11. Базовый уровень»; • учебники по профильному курсу для старшей школы на профильном уровне: «Информатика и ИКТ-10. Профильный уровень» и «Информатика и ИКТ-11. Профильный уровень»; • учебное пособие и CD-ROM по элективному курсу для старшей школы «Исследование информационных моделей»; • методическое пособие для учителей «Преподавание курса «Информатика и ИКТ» в основной и старшей школе»; • Windows-CD, содержащий программную поддержку курса, готовые компьютерные проекты, рассмотренные в учебниках, тесты и методические материалы для учителей; • Visual Studio-CD (выпускается по лицензии корпорации Microsoft), содержащий дистрибутивы систем объектно-ориентированного программирования языков Visual Basic .NET, Visual C# и Visual J#; • Linux-DVD (выпускается no лицензии компании Alt-Linux), содержащий операционную систему Linux и программную поддержку курса; • TurboDelphi-CD (выпускается по лицензии компании Borland), содержащий систему объектно-ориентированного программирования TurboDelphi. 2. В практических работах указано необходимое для их выполнения программное обеспечение, которое обозначается значком приложения. 3, В учебнике используются ссылки на внешние источники информации (учебники, CD-диски и Интернет), а также на параграфы и пункты самого учебника. 4. В тексте пособия приняты следующие выделения: • Шрифтом Arial выделены имена программ, файлов и Интернет-адреса. Рекомендации по использованию учебника • Шрифтом Courier New выделены программы на языках программирования. • Курсивом выделены названия диалоговых окон, пунктов меню и элементов управления (текстовых полей, кнопок и т. д.) графического интерфейса операционных систем и приложений. • Полужирным шрифтом выделены важные термины и понятия. • Подчеркиванием выделены термины, краткое объяснение которых содержится в Словаре компьютерных терминов. 5. Важная информация выделена в текстеувосклицательным знаком, а формулы — цифровым обозначением. 6. Абзацы, содержащие дополнительную интересную информацию, выделены значком 7. Проекты создаются в системах объектно-ориентированного программирования Visual Basic .Net, Visual С#, Visual J# и Turbo Delphi и хранятся на CD-дисках Windows-CD и TurboDelphi-CD. 8, Дополнительные материалы и интерактивные тесты для проверки усвоения материала находятся в Интернете по адресу: http;//iit.metodist.ru Глава 1________________ Архитектура компьютера и защита информации Windows-CD В процессе изучения данной темы рекомендуется установить программное обеспечение в операционной системе Windows: программы тестирования компьютера SiSoft Sandra, CPU-Z, EasyTune, SIV; • файловый менеджер Total Commander; • архиватор 7-Zip; • программу записи CD- и DVD-дисков: DeepBurner; • браузеры Internet Explorer и SeaMonkey; • антивирусные программы: avast! и Antivir Personal Edition: • программу удаления рекламных и шпионских программ: Ad-Aware; • программу восстановления системы: CCleaner; межсетевой экран: Outpost Firewall. 10 Глава 1 1.1. Магистрально-модульный принцип построения компьютера В основу архитектуры современных персональных компьютеров положен магистрально-модульный принцип. Этот принцип предусматривает построение компьютера из функциональных блоков, взаимодействуюш;их посредством общего канала (каналов) — щины. В сочетании с открытой (общеизвестной) архитектурой это позволяет потребителю собирать машину нужной конфигурации. Магистраль включает в себя три многоразрядные шины: шину данных, шину адреса и шину управления, которые представляют собой мносопроводные линии (рис. 1.1). К магистрали подключаются процессор и оперативная память, а также периферийные устройства ввода, вывода и хранения информации, которые обмениваются информацией в форме последовательностей нулей и единиц, реализованных в виде электрических импульсов. Шина данных. По этой шине данные передаются между различными устройствами. Например, считанные из оперативной памяти данные могут быть переданы процессору для обработки, а затем полученные данные могут быть отправлены обратно в оперативную память для хранения. Таким образом, данные по шине данных могут передаваться от' устройства к устройству через области оперативной памяти. Разрядность шины данных определяется разрядностью процессора, т. е. количеством двоичных разрядов, которые процессор обрабатывает за один такт. Разрядность процессоров постоянно увеличивалась по мере развития компьютерной техники и в настоящее время составляет 64 бита. Шина данных (8, 16. 32, 64 бита) Шина адреса (16, 20, 24, 32, 36, 64 бита) Шина управления Магистраль Рис. 1.1. Магистрально-модульное устройство компьютера Архитектура К01мпьютера и защита информации 11 Шина адреса. Выбор устройства или ячейки памяти, куда пересылаются или откуда считываются данные по шине данных, производит процессор. Каждое устройство или ячейка оперативной памяти имеет свой адрес. Адрес передается по адресной шине, причем сигналы по ней передаются в одном направлении от процессора к оперативной памяти и устройствам (однонаправленная шина). Разрядность шины адреса определяет объем адресуемой памяти, т. е. количество ячеек оперативной памяти, которые могут иметь уникальные адреса. Количество адресуемых ячеек памяти можно рассчитать по формуле: N = 2^, где I — разрядность шины адреса. Разрядность шины адреса постоянно увеличивалась и в процессорах Pentium Extreme Edition составляет 64 бита. Таким образом, количество адресуемых ячеек памяти в таких процессорах равно: N = 2®'^ ячеек. Шина управления. По шине управления передаются сигналы, определяюш;ие характер обмена информацией по магистрали. Сигналы управления определяют, какую операцию — считывание или запись информации из памяти нужно производить, синхронизируют обмен информацией между устройствами и т. д. Системная плата. Важнейшим аппаратным компонентом компьютера является системная плата (рис. 1.2, 1.3). На системной плате реализована магистраль обмена информацией, имеются разъемы для установки процессора, слоты для уста- Разъем для процессора Слот шины AGP Слоты шины PCI Северный мост Разъемы (слоты) для модулей памяти Разъемы шин РАТА Южный мост Микросхема цифрового звука Рис. 1.2. Системная плата 12 Глава 1 Монитор Проектор Видеоплата И- \ AGP PCI Express Л Шина памяти Жесткие диски , РАТА , л ^ CD-дисководы DVD-дисководы ; SATA ; Микрофон Колонки Наушники ГЗвуковая ^ микросхема Оперативная память Сетевая карта Внутренний модем Сетевой адаптер Wi-Fi / Koнтpo;tлep IEEE 1394 1/ Звуковая плата .Принтер ]/ Сканер Цифровая камера Web-камера Модем Цифровая видеокамера Рис. 1.3. Логическая схема системной платы новки оперативной памяти, а также контроллеров внешних устройств. Пропускная способность. Быстродействие yc']fpoйcтвa зависит от тактовой частоты тактового генератора (обычно измеряется в мегагерцах — МГц) и разрядности, т. е. количества битов данных, которые устройство может обрабатывать или передавать одновременно (измеряется в битах). Дополнительно в устройствах используется внутреннее умножение частоты с разными коэффициентами. Соответственно, скорость передачи данных (пропускная способность) соединяюш;их эти устройства шин также Должна различаться. Пропускная способность шины данных (измеряется в бит/с) равна произведению разрядности шины (измеряется в битах) и частоты шины (измеряется в Гц = 1/с); Пропускная способность шины = = Разрядность шины х Частота шины- Северный и южный мосты. Для согласования тактовой частоты и разрядности устройств на системной плате устанавливаются специальные микросхемы (их набор называется чипсетом), включающие в себя контроллер оперативной памяти и видеопамяти (так называемый северный мост) и контроллер периферийных устройств (южный мост). Архитектура компьютера и защита информации 13 Частота процессора. Северный мост обеспечивает обмен данными с процессором, оперативной памятью и видеопамятью. Частота процессора в несколько раз больше, чем базовая частота магистрали (иногда ее называют шиной FSB от англ. Frontside Bus). Например, в наиболее быстрых компьютерах (2006 год) частота шины FSB составляет 266 МГц, коэффициент умножения частоты 14, следовательно, частота процессора 266 МГц X 14 ^ 3,7 ГГц. Системная шина. Между северным мостом и процессором данные передаются по системной шине с частотой, которая в четыре раза больше частоты шины PSB. Таким образом, процессор может получать и передавать данные с частотой 266 МГц X 4 = 1064 МГц. Так как разрядность системной шины равна разрядности процессора и составляет 64 бита, то пропускная способность системной шины равна: 64 бит X 1064 МГц ^ 66 Гбит/с 68 096 Мбит/с 8 Гбайт/с. Шина памяти. Обмен данными между процессором и оперативной памятью производится по шине памяти, частота которой может быть меньше, чем частота шины процессора. Например, частота шины памяти может составлять 533 МГц, т. е. оперативная память получает данные в два раза реже, чем процессор. Так как разрядность шины памяти равна разрядности процессора и составляет 64 бита, то пропускная способность шины памяти равна: 64 бит X 533 МГц 33 Гбит/с 34 112 Мбит/с » 4 Гбайт/с. Шины AGP и PCI Express. По мере усложнения графики приложений требования к быстродействию шины, связывающей видеопамять с процессором и оперативной памятью, возрастают. Для подключения видеоплаты к северному мосту может использоваться 32-битовая шина AGP (Accelerated Graphic Port — ускоренный графический порт). Эта шина первоначально передавала данные с частотой 66 МГц, в настоящее время возможно использование шины AGPx8, частота которой 66 МГц X 8 = 528 МГц. В этом случае пропускная способность шины видеоданных составляет: 32 бит X 528 МГц = 16 896 Мбит/с = = 16,5 Гбит/с == 2 Гбайт/с. В настоящее время для подключения видеоплаты к северному мосту все большее распространение получает шина PCI 14 Глава 1 Express (Peripherial Component Interconnect bus Express — ускоренная шина взаимодействия периферийных устройств). Пропускная способность этой шины значительно выше пропускной способности PCI и AGP. К видеоплате с помощью аналогового разъема VGA (Video Graphics Array — графический видеоадаптер) или цифрового разъема DVI (Digital Visual Interface — цифровой видеоинтерфейс) подключается электронно-лучевой или жидко- кристаллический монитор или проектор. Шина PCI. К северному мосту подключается по специальной шине южный мост, к которому, в свою очередь, подключаются периферийные устройства. Шина PCI (Peripherial Component Interconnect bus — шина взаимодействия периферийных устройств) обеспечивает обмен информацией с контроллерами периферийных устройств, которые устанавливаются в слоты расширения системной платы. Наиболее часто эта шина используется для установки устройств доступа к локальной сети (сетевая карта), глобальной сети Интернет (встроенный модем) и беспроводной сети (сетевой адаптер Wi-Fi, произносится «вай-фай», сокр. от Wireless Fidelity — протокол и стандарт на оборудование для широкополосной радиосвязи). Разрядность шины PCI может составлять 32 бита или 64 бита, а частота — 33 МГц или 66 МГц. Таким образом, максимальная пропускная способность шины PCI составляет; 64 бит X 66 МГц = 4224 Мбит/с = 528 Мбайт/с. Шина IEEE 1394 (другие названия FireWire, i-Link). Последовательная высокоскоррстная шина, предназначенная для обмена цифровой информацией между компьютером и цифровыми устройствами (цифровыми видеокамерами, DVD-плеерами и др.) без потери качества изображения и звука. (Эту функцию может выполнять также контроллер IEEE 1394, который подключается к шине PCI.) Скорость йередачи данных по этой шине может достигать 200 Мбайт/с и более. Шина АТА. Устройства внешней памяти (жесткие диски, CD- и DVD-дисководы) подключаются к южному мосту по шине АТА (англ. Advanced Technology Attachment — шина подключения накопителей). Ранее использовалась параллельная шина РАТА (англ. Parallel АТА), скорость передачи данных по которой может достигать 133 Мбайт/с. В настоящее время широкое распространение получила последовательная шина SATA (англ. Serial АТА), скорость передачи данных по которой может достигать 300 Мбайт/с. Архитектура компьютера и защита информации 15 Шина USB. Для подключения принтеров, сканеров, цифровых камер и других периферийных устройств обычно используется шина USB (Universal Serial Bus — универсальная последовательная шина). Эта шина обладает пропускной способностью до 60 Мбайт/с и обеспечивает подключение к компьютеру одновременно нескольких периферийных устройств (принтер, сканер, цифровая камера, Web-камера, модем и др.). Клавиатура и мышь. Клавиатура и мышь подключаются с помощью порта PS/2 или шины USB (в том числе с помощью беспроводного адаптера). Звук. К южному мосту может подключаться интегрированная в системную плату микросхема, которая обеспечивает обработку цифрового звука (эту функцию может выполнять также звуковая плата, которая подключается к шине PCI). С помощью аудиоразъемов к системной плате могут подключаться микрофон, колонки или наушники. Практическое задание «Тестирование системной платы». С помощью программы тестирования EasyTune определить у вашего компьютера частоту шины FSB, коэффициент умножения частоты процессора, частоту процессора, частоту шины памяти, частоту шин AGP и PCI Express и частоту шины PCI. Вычислить пропускную способность шины памяти. Су Тестирование системной платы 1. Запустить программу тестирования EasyTuneS и выбрать вкладку Advanced Mode, На панели отобразятся параметры компьютера, в данном случае (рис. 1.4): • частота шины FSB — 133 МГц; • коэффициент умножения частоты процессора — 20; • частота процессора — 2680 МГц; • частота шины памяти — 266 МГц; • частота шин AGP и PCI Express — 66 МГц; • частота шины PCI — 33 МГц. 2. Пропускная способность шины памяти ^ 64 бита х X 266 МГц = 17024 Мбит/с = 2128 Мбайт/с ^ 2 Гбайт/с. 16 Глава 1 Рис. 1.4. Тестирование системной платы Контрольные вопросы 1, Что определяют разрядности шины данных и шины адреса? 2. Почему различаются скорости передачи данных по шине FSB, системной шине, шине памяти, шинам AGP и PCI Express и шине PCI? Компьютерный практикум WIndows-CD 1.1. С помощью программы тестирования компьютера EasyTune выполнить практическое задание «Тестирование системной платы». Cv 1.2. Процессор и оперативная память 1.2.1. Процессор Логическая схема процессора (рис. 1.5). Процессор является центральным устройством компьютера и выполняет команды программы, которая хранится в оперативной памяти. Команда программы поступает в процессор по шине данных и декодируется, т. е. определяется, какие действия необходимо выполнить и какие данные для этого требуются. Архитектура компьютера и защита информации 17 Данные запрашиваются из оперативной памяти, для этого по шине адреса передаются их адреса, а по шине управления — сигнал на считывание. Считанные данные передаются в процессор по шине данных. Декодированная команда и данные передаются в АЛУ (арифметико-логическое устройство), где отдельно обрабатываются целочисленные данные, и отдельно — данные в форме чисел с плаваюш;ей запятой. 2.10. Представление чисел в компьютере Результаты обработки передаются по шине данных в оперативную память, одновременно по шине адреса передаются адреса ячеек памяти, куда данные необходимо записать, а по шине управления передается сигнал на запись. Быстродействие процессора существенно больше быстродействия оперативной памяти, поэтому процессор часть времени простаивает в ожидании данных. Чтобы этого не происходило, в современные процессоры встроена более быстрая, чем оперативная, кэш-память. Кэш-память разделена на два уровня. В кэш-память 2-го уровня (большую по объему и менее быстродействующую) считывается из оперативной памяти очередная порция команд и данных. Кэш-память 1-го уровня (меньшая по объему, но более быстродействующая) разделена на две части, в одну часть считываются наиболее нужные процессору данные, а в другую часть — наиболее нужные процессору команды. Рис. 1.5. Упрощенная логическая схема одноядерного процессора 18 Глава 1 Практическое задание «Определение объемов кэш-памя-ти процессора». С помощью программы тестирования CPU-Z определить объемы кэш-памяти 1-го и 2-го уровней вашего процессора. Определение объемов кэш-памяти процессора 1. Запустить программу тестирования CPU-Z и выбрать вкладку Cache (рис. 1.6). На панели отобразятся параметры кэш-памяти, в данном случае: • кэш-память данных 1-го уровня — 8 Кбайт; кэш-память команд 1-го уровня — 12 Кбайт; • кэш-память 2-го уровня — 128 Кбайт. й>и. - L1 peifi Ca^—-------—~ U TMiceCacfte 4-way \ ‘ Аз&осММу' j ' Line Si2;e CortexiMOde ;-L2C«^ ----- I Location [ I sue Г Aasddetivfty 2-wey i UneSiie 64 Bytes ■ /Siie ? A$sopi^iv% (. Frequency 26507 h«z PreWchLqg^ f fes (ihsrv Г*' CPU-Z I OK ■]: Рис. 1.6. Определение объемов кэш-памяти процессора Технология. Процессор является большой (в смысле количества размещенных на ней элементов) полупроводниковой микросхемой. Процессоры создаются на основе кремниевых подложек, которые вырезаются из слитка чистого кремния. Кремний является полупроводником, который в разных условиях может вести себя и как проводник электрического тока, и как изолятор. физика-11 Сначала на кремниевой подложке под воздействием высокой температуры и кислорода формируется слой диоксида кремния. Этот процесс очень похож на возникновение ржавчины на железе, погруженном в воду. Разница заключается в том, что слой диоксида кремния формируется на подложке Архитектура компьютера и защита информации 19 гораздо быстрее и не виден невооруженным глазом (из-за того, что очень тонок). ______ Химия-9 Затем кремниевая подложка покрывается фотослоем. В процессе фотолитографии ультрафиолетовое излучение, проходя сквозь маску (которая выполняет функцию шаблона), формирует на подложке рисунок электрической схемы. Засвеченные участки фотослоя и диоксида кремния полностью удаляются с помош;ью растворителя. С помош;ью процесса ионной имплантации области кремниевой подложки, обработанные ультрафиолетом, бомбардируются ионами различных примесей. Ионы проникают в подложку, обеспечивая необходимую электрическую проводимость этих областей. В результате на кремниевой подложке создается электрическая схема. После этого наносится слой поликристаллического кремния и еще один фотослой. Наложение новых слоев с последующим вытравливанием схемы осуществляется несколько раз, при этом для межслойных соединений в слоях оставляются «окна». Эти «окна» заполняются атомами металла (алюминия или меди). Так устанавливаются связи между несколькими десятками слоев, формирующими сложную трехмерную электрическую схему. На конечном этапе процессор встраивается в защитный корпус (для электрического соединения кремниевой микросхемы с корпусом используется золото), который обеспечивает электрическое соединение процессора с системной платой. В первом процессоре 4004 (1971 год) размеры каждого элемента составляли 10 мк = 10“^ м (были сравнимы с толщиной человеческого волоса), а их количество было равно 2300. В современных процессорах (2006 год) размеры каждого элемента сосга.вляют всего 65 нм (нанометров) — 0,065 мк — = 6,5 * 10"® м (сравнимы с размерами нескольких десятков атомов), а их количество равно 376 000 000. Плакаты. Таблица 1 «Процессоры» Производительность. Производительность процессора является его интегральной характеристикой и характеризует скорость выполнения приложений. Производительность процессора прямо пропорциональна разрядности процессора, его частоте, а также количеству команд, выполняемых за один такт: Производительность - Разрядность х Частота х X Кол-во команд за такт. 20 Глава 1 Разрядность процессора определяется количеством двоичных разрядов, которые процессор обрабатывает за один такт. С момента появления первого процессора 4004 (за 35 лет) разрядность процессоров увеличилась в 16 раз (с 4 битов до 64 битов). Однако в настоящее время увеличение разрядности процессоров (а следовательно, производительности) практически нецелесообразно, так как только сейчас происходит переход от 32-битовых операционных систем и приложений к 64-битовым. Частота соответствует количеству тактов обработки данных, которые процессор производит за 1 секунду. С момента появления первого процессора частота процессоров увеличилась в 37 000 раз (с 0,1 МГц до 3700 МГц). Однако увеличение производительности процессоров за счет увеличения частоты имеет свой предел из-за тепловыделения. Выделение процессором теплоты Q пропорционально потребляемой мощности Р, которая, в свою очередь, пропорциональна квадрату частоты v^: Q ^ Р - v^. Уже в настоящее время (2006 год) для отвода тепла от процессора используются массивные воздупхные системы охлаждения (их называют кулерами) (рис. 1.7), состоящие из вентилятора и металлических теплоотводящих ребер. Разрабатываются и применяются также водяные систе- ^ ^ Кулео мы охлаждения процессоров. процессора Практическое задание «Определение температуры процессора». С помощью программы тестирования SIV определить температуру процессора и скорость вращения кулера процессора. Определение температуры процессора 1. Запустить программу тестирования SIV и выбрать вкладку Hardware Monitor (рис. 1.8). На панели отобразится температура процессора и количество оборотов в минуту кулера процессора, в данном случае: Архитектура компьютера и защита информации 21 ’ SIV for GBT (System Inf< НгкМа1б Мопйо» | H«d Drive Space j Memory Resource j XJ Voftage Dascripbon 1 lament (KSCeseOp... Nojrnal ДК+1Л' ®X+5vr (Щ+3.?^' (SEVCoteA +12170VO +5.120 Volt +3.310 Volt +1 600 VoR J -iJ DesCTpbon 1 Cutrent (EE CPU A T emp. 40 degree A F«i; DesCT^ion I Current m System Fen ORPM (IKCPUAFan 5113RPM Jj OK DmeHd Рис. 1.8. Определение температуры процессора температура процессора — 40 градусов по Цельсию; количество оборотов в минуту кулера процессора — 5 113 об/мин. В настоящее время производительность процессоров увеличивается путем совершенствования архитектуры процессора. Во-первых, в структуру процессора вводится кэш-память 1-го и 2-го уровней, которая позволяет ускорить выборку команд и данных и тем самым уменьшить время выполнения одной команды. Во-вторых, вместо одного ядра процессора (АЛУ и др.) используется два ядра, что позволяет повысить производительность процессора примерно на 80%. Производительность процессора нельзя вычислить, она определяется в процессе тестирования, по скорости выполнения процессором определенных операций в какой-либо программной среде. Практическое задание «Производительность процессора». С помощью программы тестирования SiSoft Sandra определить производительность вашего процессора и сравнить ее с производительностью: • аналогичного процессора; • высокопроизводительного двухъядерного процессора фирмы Intel; • высокопроизводительного двухъядерного процессора фирмы AMD; • процессора Pentium начального уровня. 22 Глава 1 Производительность процессора 1. Запустить программу тестирования SiSoft Sandra и выбрать тестирующий ^лодулъ Арифметический тест процессора, 2. Из списка Эталонный процессор 1 выбрать аналогичный процессор. 3. Из списка Эталонный процессор 2 выбрать высокопроизводительный двухъядерный процессор фирмы Intel. 4. Из списка Эталонный процессор 3 выбрать высокопроизводительный двухъядерный процессор фирмы AMD. 5. Из списка Эталонный процессор 4 выбрать процессор Pentium начального уровня. 6. Щелкнуть по кнопке Обновить, и через несколько секунд появится информация о производительности вашего процессора. 7. Для каждого процессора будут графически и численно выведены производительности (рис. 1.9): • количество целочисленных операций, выраженных в MIPS (Million Instructions Per Second — миллионах операций в секунду); • количество операций с плавающей точкой, выраженных в MFLOPS (Million FLoat Operations Per Second — миллионах операций с плавающей точкой в секунду). * А1}ифме1ичеа<ий гео процессора - SiSoftware SanciTi Это oicMo показывает производительность вашего фоавссора при еыполнвмии арифметический вычислений и операций с плаавюшай запятой, в сраанвиии с другими Ttimi4ht»«w систаиаии. Текущий процессор DhrystoneAtUTtesi;^? Этал1>1мь1Й процессор I )1пее1Р№Ршл~4'>В Z66G^ х86) ^ MFLOP5 Эталонный процессор 2 [Intel PenPjnr 4-ХЕ Г2 Со7е,~4 SMT] 840 3^GHz » | [AMDAthlon64Х2 4800+ [2Corf]2.4СНг2x1 Л у/ Эталон№1Й процессср 4 pfTxburti 66НН2 (?Viri3 Whebtorie I5SE2 jjJiO? WFL'DF’S Wfietstone iSSES 9970 WLOPS Рис. 1.9. Производительность процессора Архитектура компьютера и защита информации 23 Контрольные вопросы 1. Чем будет отличаться упрощенная логическая схема двухъядерного процессора от упрощенной логической схемы одноядерного процессора? 2. Опишите технологию производства процессоров. 3. Какие факторы влияют на производительность процессоров и как можно ее увеличить? Компьюте^ый |йрактикум Windows-CD 1.2. Ознакомиться с историей развития процес- http;//www.intel.ru соров, используя материалы виртуального музея фирмы Intel, 1.3. С помощью программы тестирования компьютера CPU-Z выполнить практическое задание «Определение объемов кэш-памяти процессора». 1.4. С помощью программы тестирования компьютера SIV выполнить практическое задание «Определение температуры процессора». 1.5. С помощью программы тестирования компьютера SiSoft Sandra выполнить практическое задание «Производительность процессора». 1.2.2. Оперативная память Логическая структура оперативной памяти. Оперативная память представляет собой множество ячеек, причем каждая ячейка имеет свой уникальный адрес (нумерация ячеек начинается с нуля). Каждая ячейка памяти имеет объем 1 байт, следовательно, максимальный объем адресуемой памяти равен произведению количества ячеек Л'' на 1 байт. Для процессоров Pentium 4, у которых разрядность шины адреса составляет 36 битов, максимальный объем адресуемой памяти равен (см. табл. 1.1): N X 1 байт = 2^ х 1 байт = 2^^ х 1 байт = - 6S 719 476 736 байт = 67 108 864 Кбайт = “ 65 536 Мбайт = 64 Гбайт. 24 Глава 1 Таблица 1.1. Оперативная память Объем памяти Ячейки Десятичный адрес ячейки Шестнадцатеричный адрес ячейки 64 Гбайт 10101010 68 719 476 735 FFFFFFFFF 4 Гбайт 10101010 4 294 967 295 FFFFFFFF 10101010 0 0 Рис. 1.10. Модули памяти DDR и DDR2 Модули оперативной памяти. Оперативная память предназначена для хранения информации. Изготавливается в виде модулей памяти. Модули памяти представляют собой пластины с рядами контактов, на которых размещаются микросхемы памяти. Модули памяти (DDR, DDR2 и др., рис. 1.10) устанавливаются в специальные разъемы на системной плате и могут различаться между собой по количеству контактов, по быстродействию, по информационной емкости и т. д. В персональных компьютерах величина адресного пространства процессора (объем адресуемой памяти) и величина фактически установленной оперативной памяти (модулей оперативной памяти) практически всегда различаются. Хотя объем адресуемой памяти у большинства современных процессоров равен 64 Гбайт, величина фактически установленной оперативной памяти может быть значительно меньше, например, может быть установлено 4 модуля памяти по 1 Гбайт («всего» 4 Гбайт). Пропускная способность. Важнейшей характеристикой модулей оперативной памяти является пропускная способность, которая равна произведению разрядности шины данных и частоты операций записи или считывания информации из ячеек памяти: Пропускная способность = = Разрядность шины данных х Частота. Разрядность шины данных составляет 64 бита, а максимально возможная в настоящее время (2006 год) частота шины данных совпадает с частотой системной шины и равна 1064 МГц. Тогда пропускная способность модулей памяти, подключенных к этой шине, равна: Архитектура компьютера и защита информации 25 О пропускная способность = 64 бита х 1064 МГц -= 68 096 Мбит/с = 8512 Мбайт/с ^ 8 Гбайт/с. Модули памяти маркируются своей пропускной способностью, выраженной в Мбайт/с: РС3200, РС4200, РС8500 и др. Физическая и виртуальная память. Объем используемой программами памяти можно увеличить путем добавления к физической памяти (модулям оперативной памяти) виртуальной памяти. Виртуальная память выделяется в форме области жесткого диска. В ОС Windows это файл подкачки. По своей логической организации виртуальная память является частью оперативной памяти. Размер файла подкачки и его размещение в иерархической файловой системе можно изменять. Однако необходимо учитывать, что быстродействие жесткого диска и, соответственно, виртуальной памяти существенно меньше быстродействия модулей оперативной памяти. Замедление быстродействия виртуальной памяти может происходить в результате фрагментации данных в файле. Для того чтобы этого не происходило, рекомендуется произвести дефрагментацию диска и установить для файла подкачки постоянный размер. Практическое задание «Виртуальная память». В операционной системе Windows и с использованием программы тестирования компьютера: • установить объем виртуальной памяти и местоположение файла подкачки; • определить объем виртуальной памяти и местоположение файла подкачки; • определить загруженность процессора и объем используемой виртуальной памяти. О Виртуальная память 1. Щелкнуть правой кнопкой мыши по значку Мой компьютер и в контекстном меню активизировать пункт Свойства. 2. В диалоговом окне Свойства системы выбрать вкладку Дополнительно и в разделе Быстродействие щелкнуть по кнопке Параметры. 3. В появившемся диалоговом окне Параметры быстродействия выбрать ькладну Дополнительно. В разделе Виртуальная память щелкнуть по кнопке Изменить. 26 Глава 1 4. В появившемся диалоговом окне Виртуальная память (рис. 1.11) выбрать место размехцения файла подкачки. Диск [летке тона] по^ачю1 (№) D: [IDocuments] Е: [2Windows-CD v.6.0] F: (1 Microsoft-СО] G: [IMultimedie] H: [20RIGINAL] ' файла пбдк»й<и ДЛЯ В(^$>анн«эт'одно(а ~ fyvxi . С. |1 Wrjdows ХР] Свободно; 8S29№ ^ Осо6ый|«»*вр; Ис«0Д|«йрв5мч>(^’в)г 120^ Jji£j Макф1НвИЫ*»й рзз»^ (^Тб): I 2046 ^ рая«ефпои>гборур1ст»ял fes файла п0|!и<а'«:и Задать [^С%нЙ обгаи файла подка*^ на 'ехш диска:!с' гт ■ Р^рмвмдуется: - .2эог1ИБ ;■ i ^ 0К \ . otHBMa 1 Рис. 1.11. Установка размера и местоположения виртуальной памяти 5. Для предотвраш;ения фрагментации файла подкачки установить одинаковые значения для его исходного и максимального размеров. Важное значение для производительности компьютера имеет объем оперативной памяти, причем не только объем установленных модулей оперативной памяти, но и общий объем системной оперативной памяти с учетом объема файла подкачки C:\pagefile.sys. Виртуальная память 6. Запустить программу тестирования SiSoft Sandra и выбрать информационный модуль Информация о памяти Windows, В окне появится информация об объемах памяти тестируемого компьютера, например (рис. 1.12); всего физической памяти — 1,5 Гбайт; файл подкачки — C:\pagefile.sys 2046 2046. Архитектура компьютера и защита информации 27 Информация о памяти Window tp Это ОКНО содвр)Ю1т тфорнвцию о систвинсм ресурсах, драйверах ПЛ1ЯТИ, состо«»#1И пдаяти, а также другую ин«|юрмаиню, ce»sereiy>o с Физическая паня1^ 1! Ф^ подкачки :■ Эагруэ(« выделе*«м^ Эленент ^рИ^Сводмая информация о системной памяти ^ Всего физической памяти ^ Свободно физической памяти ^ Максимальный размер файла подкачки ^ Свободно виртуальной памяти ^Фаил подкачки 1.SG6 1.1GB, 71% 3.4GB 3GB, 89% CiiDaoePite.svs 2046 2046 ак к) оо -ii Рис. 1.12. Определение размера и местоположения виртуальной памяти Производительность компьютера зависит не только от частоты процессора и объема системной оперативной памяти, но и от загрузки процессора и процента использования виртуальной памяти. Производительность компьютера уменьшается, если загрузка процессора достигает 100%, а также начинает использоваться более медленная, чем физическая, виртуальная память на жестком диске. Загрузку процессора и использование виртуальной памяти в операционной системе Windows 9х/Ме можно наблюдать с помощью служебной программы Системный монитор, а в операционной системе Windows NT/2000/XP для этого используется Диспетчер задач Windows. Виртуальная память 7. Для вызова диспетчера задач одновременно нажать три клавиши {Ctrl}+{Alt}-\-{Del}. На диалоговой панели Диспетчер задач Windows (рис. 1.13) выбрать вкладку Быстродействие и наблюдать с помощью гистограмм и графиков изменение во времени загрузки процессора и использования виртуальной памяти. 28 Глава 1 Диспетчер задач Windows' -lal X Файл Псраметры Вид Эа^)шенив работы Спраакэ Прило*»»1я j r^xweccw ‘I Сеть | Пользователи | rSafpyjreUn; - Хронология загрудаад Файл подкач1си ыиц вания фа>1ла подкачки' НО 'Хронология использования фа>1ла подкачки' г Фи»«васая п®4Ятъ (КБ) -- 1!473 I Всего 1572336 477 (Доступе 1126720 38 101стен^^кзш 604416 Г Всего--- I Деск^шторс* Пот(ЖОв [Псхмессов Выделе*» памяти (КБ) ; Память ядра (НВ) ; Всего 277392 j Всего 72964 (Предел ^17312 |Выгруж»ная 54260 i Пик 279W2 Н»ьгружа»*ая 16704 irt^scDDB: 38 Загрузка ЦП; 8% ©ыдешниэ памяти: 270К® , ^ Рис. 1.13. Определение загруженности процессора и использования виртуальной памяти Контрольные вопросы 1. в чем состоит различие между максимальным объемом адресуемой оперативной памяти и физически установленной оперативной памятью? 2. В чем состоит различие между физически установленной оперативной памятью и виртуальной памятью? 3. От каких факторов зависит пропускная способность модулей оперативной памяти? 3 а 19ги я 1.1. Вычислить частоту шины памяти, к которой подключены модули оперативной памяти РС3200. Архитектура компьютера и защита информации 29 Компьюте^ый|[рактикум Windows-CD 1.6. В операционной системе Windows выполнить первую часть практического задания «Виртуальная память» — установить объем виртуальной памяти и местоположение файла подкачки. 1.7. С помощью программы тестирования компьютера SiSoft Sandra выполнить вторую часть практического задания «Виртуальная память» — определить объем виртуальной памяти и местоположение файла подкачки. 1.8. В операционной системе Windows выполнить третью часть практического задания «Виртуальная память» — определить загруженность процессора и объем используемой виртуальной памяти. 1.3. Внешняя (долговременная) память 1.3.1. Магнитная память Основной функцией внешней памяти компьютера является долговременное хранение большого объема информации (программы, документы, аудио- и видеоклипы и т, д.). Устройство, которое обеспечивает запись/считывание информации, называется накопителем или дисководом, а хранится информация на носителях (например, дисках). Магнитный принцип записи и считывания информации. В накопителях на гибких магнитных дисках (НГМД) и накопителях на жестких магнитных дисках (НЖМД), или «винчестерах», в основу записи информации положено намагничивание ферромагнетиков в магнитном поле, хранение информации основывается на сохранении намагниченности, а считывание информации базируется на явлении электромагнитной индукции. Физика-10 В процессе записи информации на гибкие и жесткие магнитные диски головка дисковода с сердечником из магнитомягкого материала (малая остаточная намагниченность) перемещается вдоль магнитного слоя магнитожесткого носителя (большая остаточная намагниченность). Д1а магнитную головку поступают последовательности электрических импу- 30 Глава 1 льсов (последовательности логических единиц и нулей), которые создают в головке магнитное поле. В результате последовательно намагничиваются (логическая единица) или не намагничиваются (логический нуль) элементы поверхности носителя. При считывании информации при движении магнитной головки над поверхностью носителя намагниченные участки носителя вызывают в ней импульсы тока (явление электромагнитной индукции). Последовательности таких импульсов передаются по магистрали в оперативную память компьютера. В отсутствие сильных магнитных полей и высоких температур элементы носителя могут сохранять свою намагниченность в течение долгого времени (лет и десятилетий). Гибкие магнитные диски. Гибкие магнитные диски помещаются в пластмассовый корпус. Такой носитель информации называется дискетой. В центре дискеты имеется приспособление для захвата и обеспечения вращения диска внутри пластмассового корпуса. Дискета вставляется в дисковод, который вращает диск с постоянной угловой скоростью. При этом магнитная головка дисковода устанавливается на определенную концентрическую дорожку диска, на которую и производится запись или с которой производится считывание информации. Информационная емкость современной дискеты невелика и составляет всего 1,44 Мбайт. Скорость записи и считывания информации также мала (составляет всего около 50 Кбайт/с) из-за медленного вращения диска (360 об/мин). В целях сохранения информации гибкие магнитные диски необходимо предохранять от воздействия сильных магнитных полей и нагревания, так как такие физические воздействия могут привести к размагничиванию носителя и потере информации. Жесткие магнитные диски. Жесткие магнитные диски (рис. 1.14) представляют собой несколько дисковых магнитных пластин, размещенных на одной оси, заключенных в металлический корпус и вращающихся с большой угловой скоростью. Обе стороны каждой пластины покрыты тонким слоем намагничиваемого материала. Рис. 1.14. Жесткий диск Архитектура компьютера и защита информации 31 У каждой магнитной стороны каждой пластины есть своя магнитная головка чтения/записи, головки также соединены вместе и движутся радиально по отношению к магнитным пластинам, обеспечивая, таким образом, доступ к любой дорожке любой пластины. Встроенная электроника предназначена для управления движением магнитных головок чтения/записи. За счет использования нескольких дисковых магнитных пластин и гораздо большего количества дорожек на каждой стороне магнитных пластин информационная емкость жестких дисков может в сотни тысяч раз превышать информационную емкость дискет и достигать 500 Гбайт. Скорость записи и считывания информации на жестких дисках может достигать 300 Мбайт/с (по шине SATA) за счет быстрого позиционирования магнитной головки и высокой скорости вращения дисков (до 7200 об/мин). В жестких дисках используются достаточно хрупкие и миниатюрные элементы (магнитные пластины носителей, магнитные головки и т. д.), поэтому в целях сохранения информации и работоспособности жесткие диски необходимо оберегать от ударов и резких изменений пространственной ориентации в процессе работы. Контрольные вопросы 1. Почему сердечник магнитной головки изготавливается из магнитомягкого материала, а магнитный слой носителя — из магнитожесткого материала? 2. Как можно увеличить информационную емкость жестких дисков? 1.3.2. Оптическая память Оптический принцип записи и считывания информации. В лазерных CD- и DVD-дисководах используется оптический принцип записи и считывания информации. Физика-11 В процессе записи информации на оптические диски для создания участков поверхности с различными коэффициентами отражения применяются различные технологии: от простой штамповки до изменения отражающей способности участков поверхности диска с помощью мощного лазера. 32 Глава 1 Информация на лазерном диске записывается на одну спиралевидную дорожку, начинающуюся от центра диска и содержащую чередующиеся участки с различной отражающей способностью. В процессе считывания информации с оптических дисков луч лазера, установленного в дисководе, падает на поверхность вращающегося диска и отражается. Так как поверхность оптического диска имеет участки с различными коэффициентами отражения, то отраженный луч также меняет свою интенсивность (логический О или 1). Затем отраженные световые импульсы преобразуются с помощью фотоэлементов в электрические импульсы и по магистрали передаются в оперативную память. При соблюдении правил хранения (хранения в футлярах в вертикальном иоложеиии) и эксплуатации (без нанесения царапин и загрязнений) оптические носители могут сохранять информацию в течение десятков лет. Оптические диски (рис. 1.15). Оптические СР-диски рассчитаны на использование инфракрасного лазера с длиной волны 780 нм и имеют информационную емкость 700 Мбайт. Оптические DVD-диски рассчитаны на использование красного лазера с длиной волны 650 нм. Они имеют большую информационную емкость по сравнению с CD-дисками (4,7 Гбайт) за счет меньшей ширины и более плотного размещения оптических дорожек. DVD-диски могут быть двухслойными (емкость 8,5 Гбайт), при этом оба слоя имеют отражающую поверхность, несущую информацию. й ш i-V Рис. 1.15. CD- и DVD-диски В настоящее время (2006 год) на рынок поступили оптические диски (HDJDVD и Blu-Ray), информационная емкость которых в 3-5 раз превосходит информационную емкость DVD-дисков за счет использования синего лазера с длиной волны 405 нанометров. Архитектура компьютера и защита информации 33 На дисках CD-ROM и DVD-ROM хранится информация, которая была записана на них в процессе изготовления. Запись на них новой информации невозможна, что отражено во второй части их названий: ROM (Read Only Memory — память только для чтения). Производятся такие диски путем штамповки на дорожке микроскопических физических углублений (участков с плохой отражающей способностью). На дисках CD-R и DVD±R (R — recordable, записываемый) информация может быть записана, но только один раз. Данные записываются на диск лучом лазера повышенной мощности, который разрушает органический краситель записывающего слоя и меняет его отражательные свойства. Управляя мощностью лазера, на записывающем слое получают чередование темных и светлых пятен, которые при чтении интерпретируются как логические О и 1. На дисках CD-RW и DVD±RW (RW — Rewritable, перезаписываемый) информация может быть записана и стерта многократно. Записывающий слой изготавливается из специального сплава, который можно нагреванием приводить в два различных устойчивых агрегатных состояния — аморфное и кристаллическое. При записи (или стирании) луч лазера нагревает участок дорожки и переводит его в одно из устойчивых агрегатных состояний, которые характеризуются различной степенью прозрачности. При чтении луч лазера имеет меньшую мощность и не изменяет состояние записывающего слоя, а чередующиеся участки с различной прозрачностью интерпретируются как логические О и 1. Оптические дисководы. Оптические CD- и DVD-дисково-ды используют лазер для чтения или записи информации. Скорость чтения/записи информации в оптических дисководах зависит от скорости вращения диска. Первые CD-дисководы были односкоростными и обеспечивали скорость считывания информации 150 Кбайт/с. В настоящее время широкое распространение получили CD-дисководы, которые обеспечивают в 52 раза большую скорость чтения и записи дисков CD-R (до 7,8 Мбайт/с). Запись CD-RW дисков производится на меньшей скорости (например, 32-кратной), поэтому CD-дисководы маркируются тремя числами «скорость чтения X скорость записи CD-R х скорость записи CD-RW» (например, «52x52x32»). Первое поколение DVD-накопителей обеспечивало скорость считывания информации примерно 1,3 Мбайт/с. В настоящее время широкое распространение получили DVD-дис- 2 Информатика и ИКТ, Юкл 34 Глава 1 ководы, которые обеспечивают в 16 раз большую скорость чтения (примерно 21 Мбайт/с), в 8 раз большую скорость записи DVD±R дисков и в б раз большую скорость записи DVD±RW дисков. DVD-дисководы маркируются тремя числами (например, «16x8x6»). Контрольные вопросы 1. Почему в CD-дисководах используется инфракрасный лазер, в DVD-дисководах — красный лазер, а в HD DVD- и Blu-Ray-диско-водах — синий лазер? 2. В чем состоит различие между дисками CD-ROM, CD-R и CD-RW? 3. Что означают числа маркировки DVD-дисководов? 1.3.3. Флэш-память Флэш-память — особый вид полупроводниковой энергонезависимой перезаписываемой памяти: • полупроводниковая (твердотельная) — не содержащая механически движущихся частей (как обычные жесткие диски или CD), построенная на основе полупроводниковых микросхем; • энергонезависимая — не требующая дополнительной энергии для хранения данных (энергия требуется только для записи); • перезаписываемая — допускающая изменение (перезапись) хранимых в ней данных. о Название флэш-памяти было дано во время разработки первых микросхем (в начале 1980-х годов) как характеристика скорости стирания флэш-памяти (от англ, «in а flash» — в мгновение ока). Принцип записи и считывания информации на картах флэш-памяти. Во флэш-памяти для записи и считывания информации используются электрические сигналы. Физика-11 В простейшем случае каждая ячейка флэш-памяти хранит один бит информации и состоит из одного полевого транзистора со специальной электрически изолированной областью («плавающим» затвором) (рис. 1.16). Архитектура компьютера и защита информации 35 линия управления линия данных | Управляющий затвор Г“Плав£йощий затвор" Диэлектрик О или 1 V Сток . / Подложка Рис. 1.16. Ячейка флэш-памяти на полевом транзисторе При отсутствии сигнала на линии управления (на управляющем затворе) ячейка памяти хранит один бит информации (О или 1) на стоке полевого транзистора. Между стоком и истоком ток не идет. При записи данных на линию управления подается положительное напряжение и электроны в результате эффекта туннелирования попадают на плавающий затвор. Между стоком и истоком возникает электрический ток и в результате на стоке полевого транзистора записывается один бит данных. о Эффект туннелирования — один из квантомеханических эффектов, использующих волновые свойства электрона. В полевом транзисторе этот эффект заключается в «перескакивании» электрона через слой диэлектрика между стоком и «плавающим» затвором под действием электрического поля. Карты флэш-памяти (рис. 1.17). Флэш-память представляет собой микросхему, помещенную в миниатюрный плоский корпус. Микросхемы флэш-памяти могут содержать миллиарды ячеек, каждая из которых хранит 1 бит информации. Информационная емкость карт флэш-памяти может достигать 4 Гбайт (2006 год). Информация, записанная на флэш-память, может храниться очень длительное время (от 20 до 100 лет) и способна выдерживать значительные механические нагрузки (в 5-10 раз превышающие предельно допустимые для жестких дисков). Флэш-память компактнее и потребляет значительно меньше энергии (примерно в 10-20 раз), чем магнитные и оптические дисководы. 36 Глава 1 4У : Рис. 1.17. Карты флэш-памяти и картридер Благодаря низкому энергопотреблению, компактности, долговечности и относительно высокому быстродействию, флэш-память идеально подходит для использования в качестве носителя информации в портативных устройствах: цифровых фото- и видеокамерах, сотовых телефонах, портативных компьютерах, МРЗ-плеерах и цифровых диктофонах. К недостаткам флэш-памяти следует отнести то, что не существует единого стандарта и различные производители изготавливают несовместимые друг с другом по размерам и электрическим параметрам карты памяти (Memory Stick, MultiMedia Card, Secure Digital, xD-Picture и др.). Для считывания или записи информации карта памяти вставляется в специальные накопители (картридеры), встроенные в мобильные устройства или подключаемые к компьютеру через USB-порт. USB флэш-диски (рис. 1.18). Накопители на флэш- памяти представляет собой микросхему флэш-памяти, дополненную контроллером USB, и подключаются к последовательно- Архитектура компьютера и защита информации 37 му порту USB. USB флэш-диски могут использоваться в качестве внешнего сменного носителя информации. USB флэш-диски могут содержать переключатель защиты от записи, поддерживать парольную защиту, а также могут быть загрузочными. Некоторые USB флэш-диски имеют кроме индикатора работы жидкокристаллический экранчик, на котором отображается, сколько свободного места осталось на диске. Контрольные вопросы 1. в чем состоит отличие микросхем флэш-памяти от микросхем оперативной памяти? 2. В чем состоит преимущество флэш-памяти перед магнитной и оптической долговременной памятью? 1.4. Файл и файловые системы 1.4.1. Логическая структура носителя информации 2.3.2. Файловая система Информатика-8 Логическая структура носителя информации в распро^ страненной файловой системе FAT имеет следующие разделы: • загрузочный кластер; • таблицу размещения файлов, которая содержит в своих ячейках цепочку номеров кластеров для каждого файла; • корневой каталог; • файлы. В файловой системе FAT используется следующая организация хранения. Минимальным адресуемым элементом носителя информации является кластер, который может включать в себя несколько секторов (объем сектора составляет 512 байтов). Размер кластера (от 512 байтов до 64 Кбайт) зависит от типа используемой файловой системы. Кластеры нумеруются в линейной последовательности (на магнитных дисках от первого кластера нулевой дорожки до последнего кластера последней дорожки). Файловая система организует кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Файловая система отслеживает, ка- 38 Глава 1 кие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные. При записи файлов будет занято всегда целое количество кластеров, соответственно минимальный размер файла равен размеру одного кластера, а максимальный соответствует общему количеству кластеров на диске. Файл записывается в произвольные свободные кластеры. Например, Файл_1 может занимать кластеры 34, 35 и 47, 48, а Файл_2 — кластеры 36 и 49 (табл. 1.2). Таблица 1.2. Логическая структура носителя информации N2 кластера 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49^ 50 51 52 53 54 Таблица размещения файлов. Полная информация о кластерах, которые занимают файлы, содержится в таблице размещения файлов FAT. В целях более надежного сохранения информации о размещении файлов таблица FAT хранится на носителе информации в двух идентичных копиях. Количество ячеек FAT соответствует количеству кластеров на диске, а значениями ячеек являются цепочки размещения файлов, т. е. последовательности адресов кластеров, в которых хранятся файлы. Например, для двух рассмотренных выше файлов таблица FAT с 1-й по 54-ю ячейку принимает следующий вид (табл. 1.3). Таблица 1.3. Фрагмент FAT 35 47 48 К § Цепочка размещения для файла Файл_1 выглядит следующим образом: в начальной 34-й ячейке FAT хранится адрес следующего кластера (35), соответственно, в следующей 35-й ячейке хранится 47, в 47-й — 48, в 48-й — знак конца файла (К). FAT12. Файловая система для операционной системы Windows. Выделяет 12 битов для хранения адреса кластера. Архитектура компьютера и защита информации 39 соответственно, она может адресовать 2^^ = 4096 кластеров. Объем кластера по умолчанию равен размеру одного сектора (512 байтов), и поэтому FAT12 не может использоваться для носителей информации объемом более: 512 байт X 4096 = 2 097 152 байт = = 2048 Кбайт = 2 Мбайт. Такой объем имеют дискеты, поэтому FAT 12 используется именно для дискет. FAT16. Файловая система для операционной системы Windows. Выделяет 16 битов для хранения адреса кластера, соответственно, она может адресовать 2^® = 65 536 кластеров. Объем кластера не может быть более 128 секторов (64 Кбайт), и поэтому FAT 16 не может использоваться для носителей информации объемом более: 64 Кбайт X 65 536 = 4 194 304 Кбайт = = 4096 Мбайт = 4 Гбайт. В настоящее время такой объем имеет флэш-память, поэтому FAT16 используется именно для флэш-памяти. FAT32. Файловая система для операционной системы Windows. Выделяет 32 бита для хранения адреса кластера, соответственно, она может адресовать 2^^ = 4 294 967 296 кластеров. Объем кластера по умолчанию составляет 8 секторов (4 Кбайт), и поэтому FAT32 может использоваться для носителей информации объемом: 4 Кбайт X 4 294 967 296 = 17 179 869 184 Кбайт = = 16 777 216 Мбайт = 16 384 Гбайт = 16 Тбайт. Таким образом, FAT32 может использоваться для жестких дисков самого большого объема. NTFS. Файловая система для операционной системы Windows. Позволяет устанавливать различный объем кластера (от 512 байтов до 64 Кбайт, по умолчанию 4 Кбайт). NTFS по сравнению с FAT32 увеличивает надежность и эффективность использования дискового пространства. NTFS использует систему журналирования для повышения надежности файловой системы. Журналируемая файловая система сохраняет список изменений, которые она будет проводить с файловой системой, перед фактической записью изменений. Эти записи хранятся в отдельной части файловой системы, называемой «журналом» или «логом». Как только изменения файловой системы будут внесены в журнал, журналируемая файловая система применит эти изменения к файлам. 40 Глава 1 ext3 и ReiserFS. Журналируемые файловые системы для операционных систем Unix. ReiserFS — высоконадежная файловая система, хорошо приспособленная для хранения большого количества маленьких файлов. Блок (кластер) ext3 может иметь размер от 1 до 8 Кбайт, а в ReiserFS в одном блоке могут быть размеш;ены данные нескольких файлов. С файлами большого размера файловая система ReiserFS также справляется весьма уверенно, максимальный размер файловой системы составляет 16 Тбайт. HFS. Иерархическая журналируемая файловая система, разработанная Apple Computer для использования на компьютерах, работающих под управлением операционной системы Мае OS. CDFS. Файловая система для работы с оптическими CD- и DVD-дисками, базирующаяся на стандарте ISO 9660, согласно которому имя файла не может превышать 32 символа и глубина вложения папок — не более 8 уровней. UDF. Мультисистемная файловая система для работы с файлами на оптических дисках позволяет на перезаписываемых CD-RW и DVD+RW дисках удалять, копировать и сохранять отдельные файлы. Практическое задание «Объем файла в различных файловых системах». В операционной системе Windows создать текстовый файл и последовательно сохранить его на гибком диске, на флэш-диске и на жестком диске. Ознакомиться с объемом текстового файла и занимаемым им объемом на дисках с различными файловыми системами. Объем файла в различных файловых системах 1. Запустить Блокнот командой [Программы-Стандарт-ные-Блокнот]. Ввести текст в файл, например «информатика». 2. Сохранить файл на гибком диске, на флэш-диске и на жестком диске. На каждом диске определить объем, занимаемый файлом. 3. Последовательно в контекстном меню дисков активизировать пункт Свойства. В появившихся диалоговых окнах ознакомиться с объемом текстового файла и занимаемым им объемом на дисках (рис. 1.19). Архитектура компьютера и защита информации 41 Информационный объем текста равен: 1 байт X 11 = 11 байт. На гибком диске используется файловая система FAT12, и этот файл будет занимать один сектор, т. е. 512 байтов. На флэш-диске используется файловая система FAT16, и этот файл будет занимать один кластер, объем которого равен 32 Кбайт. На жестком диске используется файловая система FAT32 или NTFS, и этот файл будет занимать один кластер, объем которого равен 4 Кбайт, А?\ Размер? На диске: Разйещен(«: U бейт (Пбайт) 512 б^ (512 байт) ^ т ^ падитсабф-) ; ^\тт ад ёЩ: Рис. 1.19. Объем файла на дисках с различными файловыми системами Форматирование носителей информации. Для того чтобы на носителе можно было хранить информацию, он должен быть отформатирован, т. е. создана логическая структура в соответствии с определенной файловой системой. о Жесткие диски должны быть предварительно физически отформатированы (это делается на заводе-изготови-теле). Формирование физической структуры диска состоит в создании на диске концентрических дорожек, которые, в свою очередь, делятся на секторы (в определенных местах диска расставляются метки дорожек и секторов). Большие по объему жесткие диски рекомендуется разбивать на разделы, т. е. независимые области на диске. Разделы могут быть отформатированы в различных файловых системах, и, таким образом, созданы логические диски. Логическим дискам ставятся в соответствие заглавные буквы латинского алфавита (С:, D: и т. д,). На один физический диск в разные разделы могут быть установлены различные операционные системы. Интерфейс командной строки. Давным-давно (в 80-е годы XX века), когда еш;е не был разработан графический интерфейс операционных систем, форматирование дисков и другие операции с файлами проводились с использованием командной строки операционной системы MS-DOS. В операционной 42 Глава 1 системе Windows предусмотрен режим работы с интерфейсом командной строки. Б ответ на приглашение системы можно вводить команды с клавиатуры, в том числе: • команды работы с дисками (format, defrag и др.); • команды работы с файлами (сору, del, rename и др.); • команды работы с каталогами (cd, dir и др.)» Каждая команда имеет свой формат, параметры которого запомнить достаточно трудно. Для того чтобы получить справочную информацию о команде, необходимо после имени команды ввести ключ /?. Практическое задание Форматирование из командной строки^>. в операционной системе Windows в командной строке с помощ;ью команды format отформатировать дискету с нестандартным размером кластера (например, 1024 байта). Предварительно получить справку о формате команды format. Форматирование из командной строки 1. Ввести команду [Программы-Стандартные-Командная строка]. Появится окно командной строки. 2. В ответ на приглашение системы перейти в каталог C:\Windows с помош;ью команды CD: C:\Documents and Зейгпд\НДУ>С0 C:\Windows 3. Получить справку о формате команды format (рис. 1.20): C:\Windows>format /? О:-UIK!)Oy5;>roi*n.->t гнрои<'^нмс диска пал р<иг(1тм с FOKHftl !«п: ^сигтрпл! 1/U_^MerKaJ_ fvQ.l Г/й -раамср 1 I/CJ___________[/XI А. lii d Рис. 1.20. Получение справки по формату команды 4, Отформатировать дискету с нестандартным размером кластера 1024 байта: C:\Windows>format А:/ А: 1024 После окончания форматирования можно узнать количество кластеров, количество байтов в кластере, разрядность ячейки FAT и другие параметры форматирования дискеты (рис. 1.21). Архитектура компьютера и защита информации 43 Рис. 1.21. Форматирование дискеты в командной строке Контрольные вопросы 1. Какую последовательность кластеров занимает файл Файл_2 из приведенного примера на носителе информации? 2. Чем различаются таблицы размещения файлов FAT12, FAT16 и FAT32? 3. Почему журналируемые файловые системы обеспечивают большую надежность хранения файлов? Компьюте^ый ^1рактикум W)ndows-CD 1.9. С помощью средств операционной системы Windows определить для диска С: тип файловой системы, размер кластера и количество кластеров. 1.10. В операционной системе Windows выполнить практическое задание «Объем файла в различных файловых системах». 1.11. В операционной системе Windows выполнить практическое задание «Форматирование из командной строки». 44 Глава 1 1.4.2. Файл Все программы и данные хранятся в долговременной па- мяти компьютера в виде файлов. 2.3.1. Файл Информатика-8 Файл обязательно имеет имя, формат которого определяется используемой файловой системой. Имя файла состоит из двух частей, разделенных точкой: собственно имени файла и расширения, определяющего тип файла (табл. 1.4). Расширение файла обычно дописывается к имени приложением, в котором этот файл создается. Приложение, с которым связан файл, можно изменить (например, файлы архивов с расширением zip можно связать с различными архиваторами). Таблица 1.4. Некоторые типы файлов и расширений Тип файла Расширения Исполнимые файлы ехе Текстовые файлы txt. doc Web-страницы htm, html Г рафические файлы bmp, gjf, png, jpg Звуковые файлы wav, mid Видеофайлы avi, wmf Архивы zip, 7z Файл в каталоге описывается записью, в которой указывается его имя, размер, дата и время создания, а также набор атрибутов: • «только для чтения» (от англ, «read only») — файл с таким атрибутом доступен операционной системе и приложениям только для чтения, т. е. в нем нельзя сохранить какие-либо исправления; • «скрытый» (от англ, «hidden») — файл с данным атрибутом не выводится при показе содержимого папок; • «системный» (от англ, «system») — файлы с таким атрибутом относятся к системным файлам операционной системы, которые нельзя удалять или изменять; • «архивный» (от англ, «archive») — этот атрибут указывает программам архивации файлы, предназначенные для резервного копирования. Архитектура компьютера и защита информации 45 Файл — это некоторая информация (программа или данные), имеющая имя и хранящаяся в долговременной (внешней) памяти. Практическое задание «Расширение и атрибуты файлам. В операционной системе Windows файлы архивов с расширением zip связать с файловым менеджером Total Commander, а затем с помощью этого файлового менеджера изменить атрибуты и дату/время создания файла архива. Расширение и атрибуты файла 1. Щелкнуть правой кнопкой мыши по имени файла и в контекстном меню активизировать пункт Открыть с помо' щью. 2. Если в появившемся меню нужное приложение отсутствует, выбрать пункт Выбрать программу,., 3. В появившемся диалоговом окне Выбор программы (рис. 1.22) выбрать программу из списка. Вы6о|) программы - Шберителрогрлийу^стфм^ . архив.» ■nsxrppfm ~ --••-------------------------—‘‘V- ^ Рекоиемдувмые программы; Ш 7 •Zip File Manager 1^ The Ultimate CO/DVD Recovery tool Q Totai<:'32»irit«meltihaly«ntov in Сжатые ЛР-пагжи ^ Другие программы; §Ц ABBYY FineReader И Adobe Photoshop Elements ^ Adobe Reader 7.0 15 AutoRuT ii______________----------------_J Использовать е» для воех файле» такого типа Обзор... ЕСЛИ нужная программе отсутствует на этом »ед*«мотврв, можно выполнить поиск пиятждая в Интеомете. Рис. 1.22. Выбор приложения для открытия файла 4. В случае отсутствия нужного приложения в списке щелкнуть по кнопке Обзор и выбрать приложение в иерархической файловой системе. 46 Глава 1 5. Установить флажок Использовать ее для всех файлов такого типа. Расширение и атрибуты файла 1. 2. 3. 4. Запустить файловый менеджер Total Commander, На панели выбрать файл, например apxMB.zip, В меню ввести команду [Файл- Изменить атрибуты,,,], В появившемся диалоговом окне Изменение атрибутов (рис. 1.23) установить флажок Скрытый, Файл перестанет отображаться на панели. г И9м«н«»в вгриб||Го6; • 't- I 9 ^ j n t ТолькоДЯЙЧГ»«Й I P h Офышй * Г s С^вь«»1й {С9рь^*“6в9 и»1»1вния, «ьфаН*ЗСГ»100ИТЬ огрибуг) м й i г Иаме1внивдвгь1Лч>ем»*С'' |ю 06 2006 -Мрвмя; . |16:00:36 QK 1 ' ( Сгчимса 1 Рис. 1.23. Изменение атрибутов и даты/времени создания файла 5. Установить текущие дату и время создания файла, для этого щелкнуть по кнопке Текущие, Архивация файлов. Для уменьшения места, занимаемого файлами, с целью долговременного хранения или передачи по компьютерным сетям файлы архивируются (сжимаются) с помощью файловых менеджеров или специализированных приложений — архиваторов. Существуют различные алгоритмы архивации данных без потери информации, при которых при разархивации данные будут восстановлены в исходном виде. Самый простой алгоритм сжатия данных основан на замене повторяющихся битов (в тексте может иметься последовательность одинаковых символов, в графическом файле — закрашенная одним цветом область и т. д.) более короткой последовательностью битов. Например, в тексте подряд идут 10 пробелов, которые кодируются 10 байтами. При архивации они заменяются 3 байтами (первый байт кодирует заменяемый символ; второй байт — это Архитектура компьютера и защита информации 47 специальный байт «флажка» архивации, который указывает на необходимость развернуть первый байт в последовательность байтов; третий байт указывает количество повторяющихся байтов). Алгоритм кодирования одинаковых последовательностей символов ищет в текстовых файлах одинаковые подстроки, а в графических — близкие по цвету последовательности пикселей. Каждый такой фрагмент файла представляется более коротким кодом (последовательностью битов) и в процессе архивации при повторных появлениях заменяется ссылкой на первичный код. Лучпте всего сжимаются текстовые и графические файлы, практически не сжимаются файлы архивов и исполнимые файлы. Существуют различные архиваторы файлов (ZIP, 7-Zip, RAR и ДР-)? которые используют вышеописанные и другие алгоритмы архивации. Архиваторы различаются степенью сжатия файлов, скоростью выполнения и другими параметрами. При создании нового архива нужно задать параметры архивации: • задать имя архивного файла и место его сохранения на диске; • выбрать формат архивации ZIP, 7z, RAR или др.; • выбрать степень сжатия файлов (от Без сжатия — файлы не сжимаются, до Максимальный для получения наилучшего сжатия); • выбрать размер словаря и слова (чем больше их размер, тем больше, но медленнее сжатие); • можно создать многотомный архив, т. е. архив, состоящий из нескольких частей, которые используются для сохранения большого архива на нескольких дискетах или других сменных носителях; • можно создать непрерывный (от англ, solid) архив (в архиваторе RAR), что позволяет добиться максимальной степени сжатия нескольких файлов; • можно создать самораспаковывающийся архив SFX, который является исполнимым файлом и имеет расширение ехе. Для разархивации такого архива не нужен архиватор, достаточно з£шустить файл архива на выполнение. Для разархивации файлов необходимо открыть файл архива в архиваторе и ввести соответствующую команду. Практическое задание «Архивация файлов». С помощью архиватора 7-Zip осуществить архивацию файлов. 48 Глава 1 Архивация файлов 1. Запустить архиватор 7-Zip. Выделить файлы и в контекстном меню ввести команду [7-Zip-Добавить в архив.,.]. 2. В окне Добавить к архиву (рис. 1.24) задать параметры архивации: • имя архивного файла; • место хранения архива на диске; • формат архива; • метод сжатия; • размер словаря и слова; • размер тома для многотомного архива; • метод обновления архива; • непрерывность архива. Добавить к архиву |грхив.7г 3 —1 zi PexowHs-feiMBHw 3 . •' |lzma 3 ! 1 Г Созвмпгь .„■У Размер оломря |32 МВ 3 '-Парел». --T- слова. |б4 zi il j 0<^ем 17ВМ8ГМ для угжоа)^ Oi($b^ лэмши АЛЯ рас^)аковюс 389 MB 34 MS ■ r~ Покаавл^пфоль 1 P ШиФр<»а1ъ'1«лоив файлов 1' , Р. Соааать 8оИ РаэФиъ на тома размером (в ба^ах)^ |l 457Б64 • 3.5" ftopp)i( “3 П^^яметры: 1 j OK 1 Отмена j Помощь | | j Рис. 1.24. Параметры архивации 3. Для извлечения файлов из архива необходимо выбрать файл архива и в контекстном меню ввести команду [ 7-Zip-PacnaKoeamb]. Архитектура компьютера и защита информации 49 Контрольные вопросы 1. Как связаны между собой расширение файла и приложение, в котором этот файл был создан? 2. Какие параметры архивации влияют на степень сжатия файлов? I .< /'f Компьюте]^ый практикум Windows-CD СЖ 1.12. В операционной системе Windows с помощью файлового менеджера Total Commander выполнить практическое задание «Расширение и атрибуты файла». 1.13. С помощью архиватора 7-Zip выполнить практическое задание «Архивация файлов». 1.4.3. Иерархическая файловая система На каждом носителе информации (магнитном или оптическом диске, карте флэш-памяти) может храниться большое количество файлов. Для того чтобы можно было найти файл по его имени, на диске создают разделы (тома), а в каждом томе — каталоги. Информатика-11 Каталог. Каждый том носителя информации содержит корневой каталог (базовый, основной), в котором перечислены хранящиеся на носителе файлы и папки. В простейшем случае, когда файлов мало, каталог представляет собой линейную последовательность записей о файлах. В разных файловых системах файлы описываются по-разному. Далее рассмотрим файловую систему FAT. Запись о файле в каталоге содержит (табл. 1.5) имя файла, адрес первого кластера, с которого начинается файл, раз-ь^ер файла, дату и время его создания, а также атрибуты файла (а — архивный, г — только для чтения, h — скрытый, s — системный). 50 Глава 1 Таблица 1.5. Структура записей в каталоге Имя файла Адрес первого кластера Объем файла (Кбайт) Дата создания Время создания Атри- буты Файл_1 34 2 14.01.2006 14.29 аг Файл_2 36 1 20.03.2006 19.45 hs Если на диске хранятся сотни и тысячи файлов, то для удобства поиска файлы хранятся в многоуровневой иерархической файловой системе, которая имеет древовидную структуру (рис. 1.25). Корневая папка содержит вложенные папки 1-го уровня (например, папки Архив и Документы), в свою очередь, каждая из них может содержать вложенные папки 2-го уровня (например, папка Документы содержит папки \Л/еЬ'Страницы, Видео, Звук и Изображения) и т, д. Необходимо отметить, что в папках всех уровней могут храниться файлы. Путь к файлу. Для того чтобы найти файл в иерархии каталогов, необходимо указать путь к файлу. Путь к файлу начинается с логического имени диска, затем записывается последовательность имен вложенных друг в друга папок, в последней из которых содержится A:\C2 РЗ Архив _^apxHB.zip ^[^apxMB-7z ф-[“Р Документы “Си Web-страницы I—^ index.htm -Lp Видео —Q] video ,wmv video-avi О audio.wav audio.mid Изображения Simage.png image.jpg image gif image.bmp f—QnporpaMMa-exe Рис. 1.25. Пример иерархической файловой системы нужный файл. Имена диска и папок записываются через разделитель «\». Например, путь к файлу image.bmp можно записать следующим образом: А:\Документы\Изображения\1таде.Ьтр Восстановление файлов и файловой системы, В процессе работы компьютера случаются сбои («зависание» программ, внезапное отключение питания и др.), в результате происходит неправильное завершение работы приложений и операционной системы, что может приводить к повреждению отдельных кластеров и файлов. Могут появиться сбойные Архитектура компьютера и защита информации 51 (нечитаемые) кластеры, в каталогах могут быть изменены имена файлов, а в FAT могут появиться нарушения в цепочках размещения файлов (некоторые цепочки могут быть оборваны, один и тот же кластер может принадлежать различным файлам и др.)- Для восстановления файловой системы используются специальные программы, В операционной системе Windows такой программой является служебная программа Проверка диска, которая автоматически запускается при загрузке Windows после неправильного завершения работы или может быть при необходимости запущена пользователем в произвольный момент. Практическое задание «Проверка файловой системы диска». В операционной системе Windows осуществить проверку файловой системы диска. Проверка файловой системы диска 1. В контекстном меню проверяемого диска (например. С:) выбрать пункт Свойства. В появившемся диалоговом окне Свойства выбрать вкладку Сервис (рис. 1.26) и щелкнуть по кнопке Выполнить проверку... Свойства: IWiridcws ХР (С Лоспт Бвзагтвдсть С^эвис I I Кв<1га рГ^юв€?жацисжв“ ВьИсМыигь .. Д^^1мгменгаимяш«ка------- •- - ........... ^ . ДеФра>»»я-а««1«|«йяов.}дааняшихсянвэтом томе. Выгюянтъде<|>рагм»1гац«о.. Ар:«иваиия файлов, хрзняш4хоя на эт№1 т<яне. бьоотт» ар»«аи«о... I—Отмана | Рис. 1.26. Вкладка Сервис 52 Глава 1 2. В появившемся диалоговом окне Проверка диска (рис. 1.27) с помощью флажков установить требуемые параметры и щелкнуть по кнопке Запуск. Проверка диска Win Л!Л1 -jTepaHew проверки ДИСК» — - - - !7 Авт1»<9'п»4ескииспрм'птьсиа«н>« ouHSr» Р г^х»«рятъивоссгана»1'»еатъпоереждо|»цесект^ Запуск I Отйвна Рис. 1.27. Процесс проверки диска 3. Проверка диска будет выполнена в три этапа. После окончания проверки и восстановления сбойных кластеров и файлов появится окно с информацией о состоянии диска после проверки. Дефрагментация дисков. Замедление скорости обмена данными с носителем информации может происходить в результате фрагментации файлов. Если запись производится на незаполненный диск, то кластеры, принадлежащие одному файлу, записываются подряд. Если диск переполнен, на нем может не быть непрерывной области, достаточной для размещения файла, и файл запишется в виде нескольких фрагментов, Фрагментация файлов (фрагменты файлов хранятся в различных, удаленных друг от друга кластерах) возрастает с течением времени, в процессе удаления одних файлов и записи других. Так как на диске могут храниться сотни и тысячи файлов в сотнях тысяч кластеров, то фрагментированность файлов будет существенно замедлять доступ к ним (магнитным головкам придется постоянно перемещаться с дорожки на дорожку) и в конечном итоге приводить к преждевременному износу жесткого диска. Рекомендуется периодически проводить дефрагментацию диска, в процессе которой файлы записываются в кластеры, последовательно идущие друг за другом. Практическое задание «Дефрагментация диска». В операционной системе Windows осуществить дефрагментацию диска. Архитектура компьютера и защита информации 53 Дефрагментация диска 1. Для запуска программы Дефрагментация диска необходимо ввести команду [Стандартные-Служебные- Дефрагментация диска\. 2. Диалоговое окно Дефрагментация диска (рис. 1.28) позволяет выбрать диск, нуждающийся в процедуре де- фрагментации. После нажатия кнопки Дефрагментация начнется процесс дефрагментации, который можно визуально наблюдать. Вертикальные полосы красного цвета отображают фрагментированные файлы, синего цвета — нефрагментиро-ванные файлы, зеленого цвета — неперемещаемые файлы и, наконец, белого цвета — свободные кластеры. Консоль Дейпвие Вив Справка Том СостоМ« сеанса I^TFS П1 =; 7d ГС о-э SJlWindows ХР (С:) IDixi.mients (D:' Дефрзгиентироеано NTF^ 24,01... 5,74 ГБ 6,00 ГБ 1,46 ГЕ 23 % Оц8н<а иоюшзоважя /^ка до д«^агме>нтдц(«1; • » СН^чса иаЮльзования пс»:лв дефэап^юмтации^ '~шятттшш 4F Анашз Двфрагментса^ия- nsyia I Вывести отчет В Ф^загм»чтировднные файлы Я Нефрагйвнтирс^анныв файлы О нег^ремещаемые (файлы ОсК1б0(!И? Рис. 1.28. Дефрагментация диска Контрольные вопросы 1* в чем состоит различие между папками и каталогами? 2. Почему происходит фрагментация файлов? 54 Глава 1 1,2, Записать пути к файлам иерархической файловой системы, изображенной на рис. 1.25. Компьюте ;пный п “F—jj-jd рактикум Windows-CD 1.14. В операционной системе Windows выполнить практическое задание «Проверка файловой системы диска». 1.15. В операционной системе Windows выполнить практическое задание «Дефрагментация диска». 1.5. Операционная система 1.5.1. Назначение и состав операционной системы Операционная система является базовой и необходимой составляющей программного обеспечения компьютера. ©Операционная система обеспечивает совместное функционирование всех устройств компьютера и предоставляет пользователю доступ к его ресурсам. Современные операционные системы имеют сложную структуру, каждый элемент которой выполняет определенные функции по управлению компьютером. Управление файловой системой. В операционной системе имеются программные модули, управляющие файловой системой. В процессе работы на компьютере наиболее часто над файлами производятся следующие операции; • копирование (копия файла помещается в другую папку); • перемещение (сам файл перемещается в другую папку); • удаление (запись о файле удаляется из папки); • переименование (изменяется имя файла). Командный процессор. В состав операционной системы входит специальная программа — командный процессор, которая запрашивает у пользователя команды и выполняет их. Архитектура компьютера и защита информации 55 Пользователь может дать команду запуска программы, выполнения какой-либо операции над файлами (копирование, удаление, переименование), вывода документа на печать и т. д. Операционная система должна эту команду выполнить. Практическое задание «Копирование файлов». В операционной системе Windows осуществить копирование файлов с использованием графического интерфейса и с помощью командной строки. Копирование файлов 1. Скопировать файл с использованием графического интерфейса (копированием из папки в папку или с помощью Проводника). 2. Ввести команду [Программы-Стандартные-Командная строка]. Появится окно командной строки. 3. В ответ на приглашение системы перейти в каталог C:\Windows с помощью команды CD: C:\Docuinents and Setting\Hfly>CD C:\Windows 4. Получить справку о формате команды сору: C:\Windows>copy /? 5. Ввести команду (рис. 1.29): C:\Windows>copy A:\npo6a.doc D: Командная СТ; Рис. 1.29. Копирование файла в командной строке Драйверы устройств. К магистрали компьютера подключаются различные устройства (дисководы, монитор, клавиатура, мышь, принтер и др.). Каждое устройство выполняет определенную функцию (ввод информации, хранение информации, вывод информации), при этом техническая реализация устройств существенно различается. Драйверы устройств — специальные программы, которые обеспечивают управление работой устройств и согласование информационного обмена с другими устройствами, а также позволяют производить настройку некоторых их параметров. Каждому типу устройств соответствует свой драйвер. В процессе установки операционная система определяет тип и конкретную модель установленного устройства и подключает необходимые для их функционирования драйверы. При включении компьютера производится загрузка драйверов в оперативную память. Пользователь имеет возможность вручную установить или переустановить драйверы. 56 Глава 1 Графический интерфейс. Для упрощения работы пользователя в состав современных операционных систем входят программные модули, создающие графический пользовательский интерфейс. В операционных системах с графическим интерфейсом пользователь может вводить команды с помощью диалоговых окон, тогда как в режиме командной строки необходимо вводить команды с помощью клавиатуры. Диалоговые окна могут включать в себя разнообразные элементы управления: • вкладки, которые позволяют использовать «страницы» внутри диалогового окна; • кнопки, которые обеспечивают выполнение тех или иных действий; • текстовые поля, которые позволяют ввести информацию; • списки, которые представляют собой наборы предлагаемых на выбор значений; • переключатели, которые служат для выбора одного из взаимоисключающих вариантов; • флажки, которые обеспечивают присваивание каким-либо параметрам определенных значений; • счетчики, которые представляют собой пару стрелок и позволяют увеличивать или уменьшать значение в связанном с ними поле; • ползунки, которые позволяют плавно изменять значения каких-либо параметров; • контекстные меню, которые позволяют ознакомиться со свойствами объектов, а также выполнить над ними разрешенные операции. Такие же элементы управления используются в системах объектно-ориентированного программирования, что позволяет создавать в них приложения с использованием графического интерфейса операционной системы. «=^11 Глава 4. Алгоритмизация и объектно-ориентированное программирование Сервисные программы. В состав операционной системы входят также сервисные программы, или утилиты. Такие программы позволяют обслуживать диски (проверять, сжимать, дефрагментировать и т, д.), выполнять операции с файлами (архивировать и т. д.), работать в компьютерных сетях и т. д. Архитектура компьютера и защита информации 57 Системный реестр Windows. Системный реестр операционной системы Windows является иерархической базой данных, в которой хранится информация о конфигурации Windows. В реестре содержатся сведения об оборудовании системы, установленных программах и параметрах настройки, к которым операционная система постоянно обращается во время работы. В операционную систему Windows входит редактор реестра — программа regedit.exe. Практическое задание «Ознакомление с системным реестром Windows». Ознакомиться с реестром на примере установки в редакторе реестра цвета надписей на кнопках графического интерфейса. Ознакомление с системным реестром Windows 1. Ввести команду [Выполнить]. В появившемся диалоговом окне Запуск программы (рис. 1.30) ввести в список имя программы — редактора реестра и щелкнуть по кнопке ОК. пажи; •в, Щ: ■ OnviiM^pege^ OK. Рис. 1.30. Запуск редактора реестра 2. В появившемся диалоговом окне Редактор реестра (рис. 1.31) в иерархическом дереве реестра открыть пункт Редактор реестра Г|рю<а вид Иэ6|»н?в- Р Мой компьютер К Q HKEY_aASSES_ROOT В □ HKEY_CURRBTr_USER В СЗ AppEventS СЗ Console 3 СЗ Control Panel Я- Accessbility В и Appearance Sectors ^ Current ■^'1 Cursors Мс?й кDмrъютepV♦CEY^al?RE^^T_uSER\Cor^trof PanelScofcrs SlButtonHilight REG.SZ g}Buttor4.ight R£G_SZ ■glB^ttonShactow REG_SZ ^ДйВЯЯД REG_SZ SjCradlentActiveTitle REG.SZ SiGradientInactiveTitle REG_SZ SflGrayText REG.SZ ®Hilight REG.SZ IjJlH.li^tText REG.SZ '! Экачвмв 255 255 255 212 208 2X 128 128 128 000 166 202 240 192 192 192 128 128 128 10 36 106 255 255 255 J Рис. 1.31. Редактор реестра 58 Глава 1 HKEY_CURRENT_USEIi, а затем открыть вложенный пункт Control Panel и в нем активизировать пункт Colors. В правой части окна редактора реестра в списке параметров выделить параметр ButtonText. 3. В диалоговом окне Изменение строкового параметра (рис. 1.32) ввести новое значение параметра ButtonText (например, 255 0 0 — красный цвет надписей на кнопках). 4. Для того чтобы изменение вступило в силу, выйти из редактора реестра командой [Файл-Выход] и перезагрузить компьютер. Категорически не рекомендуется изменять параметры реестра без четкого понимания производимых действий, так как ошибка при изменении реестра может серьезно повредить систему. Если повреждена информация об устройствах, то соответствующий раздел реестра можно исправить или восстановить в том виде, который он имел в момент последнего удачного запуска компьютера. Для этого необходимо перезагрузить компьютер, в процессе загрузки нажать клавишу {ES} и выбрать вариант загрузки Загрузка последней удачной конфигурации. Современные версии операционной системы Windows содержат средство восстановления системы, которое может восстановить системный реестр, существовавший на определенную дату, если ранее была сохранена резервная копия этих данных. Справочная система. Для удобства пользователя в состав операционной системы обычно входит также справочная система. Справочная система позволяет оперативно получить необходимую информацию как о функционировании операционной системы в целом, так и о работе ее отдельных модулей. Архитектура компьютера и защита информации 59 Контрольные вопросы 1. Каковы основные компоненты операционной системы и каково их назначение? КомпьютешыйЬрактикум Windows-CD 1.16. В операционной системе Windows выполнить практическое задание «Копирование файлов». 1.17. В операционной системе Windows выполнить практическое задание «Ознакомление с системным реестром Windows». 1,5,2. Загрузка операционной системы Самотестирование компьютера. После включения компьютера или перезагрузки операционной системы процессор начинает считывать и выполнять микропрограммы тестирования компьютера и первого этапа загрузки операционной системы, которые хранятся в микросхеме BIOS. ©Включение компьютера осупдествляется включением питания (кнопка Power на системном блоке). Перезагрузка операционной системы производится нажатием кнопки Reset на системном блоке компьютера или одновременным нажатием комбинации клавиш {CtH}+ +{Alt}+{Del) на клавиатуре. Прежде всего начинает выполняться программа тестирования POST, которая проверяет работоспособность основных устройств компьютера: процессора, видеоадаптера, оперативной памяти, дисководов, контроллеров жестких дисков и клавиатуры. В случае обнаружения неисправностей выдаются диагностические сообщения в виде различных последовательностей коротких и длинных звуковых сигналов (например, в award BIOS: 1 длинный и 3 коротких сигнала — не подключен монитор, 5 коротких — ошибка процессора и т. д.) Или в виде текстовых сообщений. После успешной инициализации видеоплаты краткие диагностические сообщения выводятся на экран монитора. 60 Глава 1 BIOS Setup. Пользователь может установить новые параметры конфигурации компьютера и запомнить их в специальной микросхеме памяти, которая при выключенном компьютере питается от батарейки, установленной на системной плате. Для этого в процессе выполнения самотестирования обычно необходимо нажать клавишу {Del}. Загрузится системная утилита BIOS Setup, имеюш.ая интерфейс в виде системы иерархических меню. В случае выхода из строя батарейки конфигурационные параметры теряются, и компьютер перестает нормально загружаться. Загрузка операционной системы (рис. 1.33), Файлы операционной системы хранятся во внешней, долговременной памяти (на магнитных, оптических или флэш-дисках). Однако программы могут выполняться, только если они находятся в оперативной памяти, поэтому файлы операционной системы необходимо загрузить в оперативную память. Разрешение этого противоречия состоит в последовательной, поэтапной загрузке операционной системы. Диск, на котором находятся файлы операционной системы и с которого производится ее загрузка, называется системным. После проведения самотестирования специальная программа, содержаш;аяся в BIOS, начинает поиск загрузчика операционной системы. Современные версии BIOS позволяют загружать операционную систему не только с магнитных и оптических дисков, но и с USB флэш-дисков. Если диск системный и программа-загрузчик оказывается на месте, то она загружается в оперативную память и ей передается управление работой компьютера. Программа иш;ет файлы операционной системы на системном диске и загружает их в оперативную память в качестве программных модулей. Оперативная память Системный диск Программные модули операционной системы Файлы операционной системы ► Загрузчик операционной системы Загрузчик операционной системы BIOS Рис. 1.33. Процесс загрузки операционной системы Архитектура компьютера и защита (шформации 61 Если системные диски в компьютере отсутствуют, на экране монитора появляется сообщение «Non system disk», и компьютер «зависает», т, е. загрузка операционной системы прекращается и компьютер остается неработоспособным. В процессе загрузки можно выбрать в том числе вариант загрузки без графического интерфейса (для вывода меню вариантов загрузки нужно нажать клавишу {ES}). В случае использования интерфейса командной строки на экране появляется приглашение системы к вводу команд. Приглашение представляет собой последовательность символов, сообщающую о текущем диске и папке. Например, если загрузка операционной системы была произведена с диска С:, а операционная система была установлена в папку C:\WINDOWS, то появится приглашение: C:\WINDOWS> В случае загрузки графического интерфейса операционной системы команды могут вводиться с использованием элементов управления. Контрольные вопросы 1. Каковы основные этапы загрузки операционной системы? 1.6. Защита информации от вредоносных программ 1.6.1. Вредоносные программы и антивирусные программы Типы вредоносных программ. Вредоносными программами являются программы, наносящие вред данным и программам, хранящимся на компьютере. Основными типами вредоносных программ являются: • компьютерные вирусы; • сетевые черви; • троянские программы; • программы показа рекламы (от англ, adware) и программы-шпионы, занимающиеся сбором персональной информации о компьютере и пользователе (от англ, spy-ware); • хакерские утилиты. 62 Глава 1 Прообразом вредоносных программ была компьютерная игра «Дарвин», созданная в 1961 году в научно-исследовательских целях. Несколько компьютерных программ, названных «организмами», загружались в память ЭВМ, причем организмы, созданные одним игроком (т. е. принадлежащие к одному виду), должны были уничтожать представителей другого вида и захватывать оперативную память. За создание, использование и распространение вредоносных программ в России и большинстве стран предусмотрена уголовная ответственность. Антивирусные программы. Принцип работы антивирусных программ основан на проверке файлов, загрузочных секторов дисков и оперативной памяти и поиске в них известных и новых вирусов. Для поиска известных вирусов используются сигнатуры, т. е. некоторые постоянные последовательности двоичного кода, специфичные для этого конкретного вируса. Если антивирусная программа обнаружит такую последовательность в каком-либо файле, то файл считается зараженным вирусом и подлежит лечению. Для поиска новых вирусов используются алгоритмы эвристического сканирования, т. е. анализ последовательности команд в проверяемом объекте. Если «подозрительная» последовательность команд обнаруживается, то антивирусная программа выдает сообщение о возможном заражении объекта. Большинство антивирусных программ сочетает в себе функции постоянной защиты (антивирусный монитор) и функции защиты по требованию пользователя (антивирусный сканер). Антивирусный монитор запускается автоматически при старте операционной системы и работает в качестве фонового системного процесса, проверяя на вредоносность совершаемые другими программами действия. Основная задача антивирусного монитора состоит в обеспечении максимальной защиты от вредоносных программ при минимальном замедлении работы компьютера. Антивирусный сканер запускается по заранее выбранному расписанию или в произвольный момент пользователем. Антивирусный сканер производит поиск вредоносных программ в оперативной памяти, а также на жестких и сетевых дисках компьютера. Архитектура компьютера и защита информации 63 К недостаткам антивирусных программ можно отнести большие размеры используемых ими антивирусных баз данных, которые должны содержать информацию о максимально возможном количестве вирусов (в настоящее время десятках тысяч), что, в свою очередь, приводит к относительно небольшой скорости поиска вирусов. Признаки заражения компьютера. Есть ряд признаков, свидетельствующих о проникновении на компьютер вредоносных программ: • вывод на экран непредусмотренных сообщений или изображений; • подача непредусмотренных звуковых сигналов; • неожиданное открытие и закрытие лотка CD/DVD дисковода; • произвольный запуск на компьютере каких-либо программ; •^частые «зависания» и сбои в работе компьютера; • медленная работа компьютера при запуске программ; • исчезновение или изменение файлов и папок; • частое обращение к жесткому диску (часто мигает лампочка на системном блоке); • «зависание» или неожиданное поведение браузера (например, окно программы невозможно закрыть). Кроме того, есть некоторые характерные признаки поражения сетевым вирусом через электронную почту: • друзья или знакомые говорят о полученных от вас сообщениях, которые вы не отправляли; • в вашем прчтовом ящике находится большое количество сообщений без обратного адреса и заголовка. Действия при наличии признаков заражения компьютера. Прежде чем предпринимать какие-либо действия, необходимо сохранить результаты работы на внешнем носителе (дискете, CD- или DVD-диске, флэш-карте и пр.). Далее необходимо: • отключить компьютер от локальной сети и Интернета, если он к ним был подключен; • если симптом заражения состоит в том, что невозможно загрузиться с жесткого диска компьютера (компьютер выдает ошибку, когда вы его включаете), попробовать загрузиться в режиме защиты от сбоев или с диска аварийной загрузки Windows; • запустить антивирусную программу. 64 Глава 1 Контрольные вопросы 1. К каким последствиям может привести заражение компьютерными вирусами? 2. Какие существуют признаки заражения компьютера вирусом? 3. Что необходимо сделать в первую очередь в случае заражения компьютера вирусом? 1.6.2. Компьютерные вирусы и защита от них Обязательным свойством компьютерного вируса является способность к размножению (самокопированию). Вирусы могут также незаметно для пользователя внедряться в испол-нияемые файлы, загрузочные секторы дисков и документы. Название «вирус» по отношению к компьютерным программам пришло из биологии именно по признаку способности к саморазмножению. После заражения компьютера вирус может начать выполнение вредоносных действий и распространение своих копий, а также заставить компьютер выполнять какие-либо действия. Активизация вируса может быть связана с различными событиями (наступлением определенной даты или дня недели, запуском программы, открытием документа и т. д.). Компьютерные вирусы являются вредоносными программами, которые могут «размножаться» и скрытно внедрять свои копии в исполнимые файлы, загрузочные секторы дисков и документы. Активизация компьютерного вируса может вызывать уничтожение программ и данных. Разнообразны последствия действия вирусов. По величине вредных воздействий вирусы можно разделить на: • неопасные, влияние которых ограничивается уменьшением свободной памяти на диске, графическими, звуковыми и другими внешними эффектами; • опасные, которые могут привести к сбоям и «зависаниям» при работе компьютера; • очень опасные, активизация которых может привести к потере программ и данных (изменению или удалению файлов и каталогов), форматированию винчестера и т. д. В настоящее время известно несколько десятков тысяч вирусов, заражающих компьютеры различных операционных Архитектура компьютера и защита информации 65 систем. По способу сохранения и исполнения своего кода вирусы можно разделить на загрузочные, файловые, макро-вирусы и скрипт-вирусы. Загрузочные вирусы. Загрузочные вирусы заражают загрузочный сектор гибкого или жесткого диска. Принцип действия загрузочных вирусов основан на алгоритмах запуска операционной системы при включении или перезагрузке компьютера. После необходимых тестов установленного оборудования программа системной загрузки считывает первый физический сектор загрузочного диска (гибкого, жесткого, оптического или флэш-диска в зависимости от параметров, установленных в BIOS Setup) и передает на него управление. При заражении дисков загрузочные вирусы «подставляют» свой код вместо программы, получающей управление при загрузке системы, и отдают управление не оригинальному коду загрузчика, а коду вируса. При инфицировании диска виру(5 в большинстве случаев переносит оригинальный загрузочный сектор в какой-либо другой сектор диска (например, в первый свободный). о Первая эпидемия загрузочного компьютерного вируса произошла в 1986 году, когда вирус «Brain» «заражал» загрузочный сектор дискет для персональных компьютеров. Вирус «Brain» являлся также и первым вирусом-невидимкой, так как при попытке обнаружения зараженного загрузочного сектора вирус незаметно «подставлял» его незараженный оригинал. Профилактическая защита от таких вирусов состоит в отказе от загрузки операционной системы с гибких дисков и установке в BIOS вашего компьютера защиты загрузочного сектора от изменений. С помощью программы BIOS Setup можно провести настройку BIOS таким образом, что будет запрещена (заблокирована) любая запись в загрузочный сектор диска и компьютер будет защищен от заражения загрузочными вирусами. Файловые вирусы. Файловые вирусы различными способами внедряются в исполнимые файлы (командные файлы *.bat, программы *.ехе, системные файлы *.сот и *.sys, программные библиотеки *.dll и др.) и обычно активизируются при их запуске. После запуска зараженного файла вирус находится в оперативной памяти компьютера и является активным (т. е. может заражать другие файлы) вплоть до момента выключения Компьютера или перезагрузки операционной системы. 66 Глава 1 По способу заражения файловые вирусы разделяют на: • перезаписывающие вирусы, которые записывают свой код вместо кода программы, не изменяя названия исполнимого файла. При запуске программы выполняется код вируса, а не сама программа,* • вирусы-компаньоны, которые, как и перезаписывающие вирусы, создают свою копию на месте заражаемой программы, но в отличие от перезаписываемых не уничтожают оригинальный файл, а переименовывают или перемещают его. При запуске программы вначале выполняется код вируса, а затем управление передается оригинальной программе; • паразитические вирусы — это файловые вирусы, изменяющие содержимое файла, добавляя в него свой код. Код может внедряться в начало, середину или конец программы и выполняется перед, вместе или после программы. При этом зараженная программа сохраняет полную или частичную работоспособность. В 1999 году произошла эпидемия очень опасного файлового вируса Win95.CIH, названного «Чернобыль» из-за даты активации 26 апреля. Вирус уничтожал данные на жестком диске, а на системных платах стирал содержимое BIOS, что приводило к необходимости их замены. Практически все загрузочные и файловые вирусы резидентны, т. е. они находятся в оперативной памяти компьютера, и в процессе работы пользователя могут осуществлять опасные действия (стирать данные на дисках, изменять названия и другие атрибуты файлов и т. д.). Лечение от резидентных вирусов затруднено, так как даже после удаления зараженных файлов с дисков вирус остается в оперативной памяти и возможно повторное заражение файлов. Профилактическая защита от файловых вирусов состоит в том, что не рекомендуется запускать на исполнение файлы, полученные из сомнительного источника и предварительно не проверенные антивирусными программами. Макро-вирусы. Наибольшее распространение получили макро-вирусы для интегрированного офисного приложения Microsoft Office (Word, Excel, PowerPoint и Access). Макро-вирусы фактически являются макрокомандами (макросами) на встроенном языке программирования Visual Basic for Applications (VBA), которые помещаются в документ. При работе с документом пользователь выполняет различные действия: открывает документ, сохраняет, печатает, за- дрхитектура компьютера и защита информации 67 крывает и т. д. При этом приложение ищет и выполняет соответствующие стандартные макросы. Макро-вирусы содержат стандартные макросы, вызываются вместо них и заражают каждый открываемый или сохраняемый документ. Вредные действия макро-вирусов реализуются с помощью встроенных макросов (вставки текстов, запрета выполнения команд меню приложения и т. д.). Макро-вирусы являются ограниченно резидентными, т. е. они находятся в оперативной памяти и заражают документы, пока открыто приложение. Кроме того, макро-вирусы заражают шаблоны документов и поэтому активизируются уже при запуске зараженного приложения. В августе 1995 года началась эпидемия первого макровируса «Concept» для текстового процессора Microsoft Word. Макро-вирус «Concept» до сих пор имеет широкое распространение, и на сегодняшний момент извест- ^ но около 100 его модификаций. Профилактическая защита от макро-вирусов состоит в предотвращении запуска вируса. При открытии документа в приложениях Microsoft Office сообщается о присутствии в них макросов (потенциальных вирусов) и предлагается запретить их загрузку. Выбор запрета на загрузку макросов надежно защитит ваш компьютер от заражения макро-вирусами, однако отключит и полезные макросы, содержащиеся в документе. Скрипт-вирусы. Особой разновидностью вирусов являются активные элементы (программы) на языках JavaScript или VBScript, которые могут содержаться в файлах Web- страниц. Заражение локального компьютера происходит при их передаче по Всемирной паутине с серверов Интернета в браузер локального компьютера. ©В ноябре 1998 года появился первый скрипт-вирус VBScript.Rabbit, заражающий скрипты Web-страниц, а через полтора года, в мае 2000 года грянула глобальная эпидемия скрипт-вируса «LoveLetter». Сейчас этот тип вирусов прочно удерживает первое место в списке наиболее распространенных и опасных вирусов. Профилактическая защита от скрипт-вирусов состоит в том, что в браузере можно запретить получение активных элементов на локальный компьютер. Практическое задание «Защита от компьютерных вирусов». С помощью антивирусной программы (например, AntiVir Personal Edition) проверить компьютер на наличие вирусов и при их обнаружении вылечить или удалить зараженные файлы. 68 Глава 1 а. Защита от компьютерных вирусов Прежде всего, необходимо через Интернет обновить саму антивирусную программу и вирусную базу данных, 1. Соединиться с Интернетом. На панели задач в контекстном меню значка антивирусной программы AntiVir Personal Edition выбрать пункт Start Update. В появившемся диалоговом окне (рис. 1.34) будет отображаться процесс обновления антивирусной программы и вирусной базы данных. (^Avira AntiVir PersonalEdition ^AntiVir' 9 bslc Swtus: 0own(o4ding.. Current f^: ave$vc.exe gz Т 1п>е elapsed 00.58 mm Transmilted: 1168 kBytes Timeiemariing. 03 39 min Remaining 10924 kGytes Download speed' 51 кВЛес -tPR^ucB « Ij Рис. 1.34. Обновление антивирусной программы Настроим параметры антивирусного монитора (Guard) и сканера (Scanner). 2, В контекстном меню значка антивирусной программы выбрать пункт Configure AntiVir, В появившемся диалоговом окне (рис. 1.35) выбрать экспертный режим, установив флажок Expert mode. В левой части окна в иерархическом меню выбрать пункт Guard, а в правой установить необходимые параметры антивирусного монитора. Для выбора типов проверяемых файлов щелкнуть по кнопке File extensions и в появившемся раскрывающемся списке добавить или удалить типы файлов. Архитектура компьютера и защита информации 69 (Z Avira AntiVir PayTOnaiSdltipit Cliiii ^AntiVif P EKpatmode sQ Scarri^ : 2 €1 Guard ; I -ascah: I I • Й Action on fj j Э Exception i ; Heuristic ' I S3 Report 12 Q General €1 Scan 0BSb ~ Scan mode --------------- C Scenwtwnreedng n Sce^w^wriirg (• Seen vdwnfeedmg and wiing Drive*---------- P Local drive* Fle*- I Alflet I ! n Uce melt extentiom & UteHeOirieratonbt il£ 2l Wth the aid of thi$ button, a dtolog window dtpleyed that are scanned Ш the Use file № theeiOenslons, but ...for more information ШШЩШШ П Рис. 1.35. Настройка параметров антивирусного монитора (Guard) 3. В иерархическом меню выбрать пункт Scan (рис. 1.36), а в правой части окна установить необходимые параметры антивирусного сканера. ^ Avira AntiVir PersonalEd[tionJ3lassic Configuratli^n ^AntiVir' Р ЕзгреЛ inode ! R g Scanner ■^®ИИ_ I rAlfiw й Action on Г. j ^ Usesm«te>den«ons g Scan , Fie*-- C Archives Э Exception P Hetristic 0 Report ■♦j g Guard R g Genera! U*e 1*0 extension Ы Pile extension* f • Adcftioral Mttre* .......- -........... P Scan boot sector* of selected drive* P Scan memory P Ignore offline He* - Scan process ---------------- P Alow stopprrg the scanner Sc^mer prioiiy jlow T3 Desoipticin - 2i Рис. 1.36. Настройка параметров антивирусного сканера (Scanner) 70 Глава 1 Проведем проверку на вирусы выбранных дисков. 4. В контекстном меню значка антивирусной программы выбрать пункт Start AntiVir, В появившемся диалоговом окне (рис. 1.37) выбрать вкладку Scanner. В иерархической файловой системе отметить флажком диски, выбранные для проверки. Щелкнуть по кнопке Start scan. C^Avira AntiVir PersonalEdltion Classic --v File View Extras Update bielp isLxj ^AntiVir' 0 3 Hftto ^ Local Diives @ Loca’Haid Disks Removable Olives ^ Wndows System DseclO'y . My Documents E Q Manual Selection 3 /<• ком-гьютер 1 Документы (D ) l 'J'4# V/indows-CO (E.) □<1** Model-CD (F 1 Miciosoft-CD (G 1 DvD/CO RWдисковой [H 1 Рис. 1.37. Проверка на вирусы выбранных дисков 5. Появится диалоговое окно, в котором будет отображаться процесс антивирусной проверки файлов на выбранном диске. Для получения результатов проверки ш;елкнуть по кнопке Report. Контрольные вопросы 1. Какие типы компьютерных вирусов существуют, чем они отличаются друг от друга и какова должна быть профилактика заражения? 2. Почему даже чистая отформатированная дискета может стать источником заражения вирусом? Архитектура компьютера и защита информации 71 Г Компьюте^ый |[рактикум Windows-CD 1.18. С помощью антивирусной программы (например, AntiVir Personal Edition) выполнить практическое задание «Защита от компьютерных вирусов». 1.19. С использованием Вирусной энциклопедии ознакомиться с классификацией вирусов и методами антивирусной защиты. https://www.viruslist.com 1.6.3. Сетевые черви и защита от них К сетевым червям (от англ, worm) относятся вредоносные программы, распространяющие свои копии по локальным и/или глобальным сетям. Для своего распространения сетевые черви используют разнообразные сервисы глобальных и локальных компьютерных сетей: Всемирную паутину, электронную почту, интерактивное общение, файлообмеиные сети и т. д. Основным признаком, по которому типы червей различаются между собой, является способ распространения червя — каким способом он передает свою копию на удаленные компьютеры. Однако многие сетевые черви используют более одного способа распространения своих копий по компьютерам локальных и глобальных сетей. Сетевые черви являются вредоносными программами, которые проникают на компьютер, используя сервисы компьютерных сетей. Активизация сетевого червя может вызывать уничтожение программ и данных, а также похищение персональных данных пользователя. Почтовые черви. Почтовые черви для своего распространения используют электронную почту. Червь отсылает либо свою копию в виде вложения в электронное письмо, либо ссылку на свой файл, расположенный на каком-либо сетевом ресурсе. В первом случае код червя активизируется при открытии (запуске) зараженного вложения, во втором — при открытии ссылки на зараженный файл. В обоих случаях эффект одинаков — активизируется код червя. 72 Глава 1 Лавинообразная цепная реакция распространения почтового червя базируется на том, что червь после заражения компьютера начинает рассылать себя по всем адресам электронной почты, которые имеются в адресной книге пользователя. Профилактическая защита от почтовых червей состоит в том, что не рекомендуется открывать вложенные в почтовые сообщения файлы, полученные из сомнительных источников. Черви, использующие «уязвимости» программного обеспечения. Червь ищет в сети компьютеры, на которых используются операционная система и приложения, содержащие критические уязвимости. Для заражения уязвимых компьютеров червь посылает специально оформленный сетевой пакет или запрос, в результате чего код (или часть кода) червя проникает на компьютер-жертву. Если сетевой пакет содержит только часть кода червя, он затем скачивает основной файл и запускает его на исполнение на зараженном компьютере. Профилактическая защита от таких червей состоит в том, что рекомендуется своевременно скачивать из Интернета и устанавливать обновления системы безопасности операционной системы и приложений. Черви, использующие файлообменные сети. Механизм работы подобных червей достаточно прост — для внедрения в файлообменную сеть червю достаточно скопировать себя в папку обмена файлами на одном из компьютеров. Всю остальную работу по распространению червя файлообменная сеть берет на себя — при поиске файлов в сети она сообщит удаленным пользователям о данном файле-черве и предоставит его для скачивания. В сентябре 2001 года началась стремительное «расползание» сетевого червя «Nimda», который мог атаковать компьютеры сразу несколькими способами: через сообщения электронной почты, через открытые ресурсы локальных сетей, а также используя уязвимости в системе безопасности операционной системы серверов Интернета. Сетевые черви кроме вредоносных действий, которыми обладают и классические компьютерные вирусы, могут выполнять шпионскую функцию троянских программ. о 1.6.4. Троянские программы и защита от них Практическое задание «Защита от сетевых червей», С помощью антивирусной программы (например, avast!) проверить компьютер на заражение сетевыми червями и при их обнаружении вылечить или удалить зараженные файлы. Архитектура компьютера и защита информации 73 0 Защита от сетевых червей Прежде всего необходимо через Интернет обновить саму антивирусную программу и вирусную базу данных. 1. Соединиться с Интернетом. На панели задач в контекстном меню значка антивирусной программы avast! выбрать сначала пункт [Обновление-Обновление программы}, а затем пункт [Обновление-Обновление базы данных iAVS], В появляющихся диалоговых окнах будет отображаться процесс обновления антивирусной программы и вирусной базы данных. Настроим параметры резидентного антивирусного монитора (авторы программы называют его сканером доступа). Можно отдельно настроить параметры сканера доступа на наличие сетевых червей в электронной почте, Web-страницах, мгновенных сообщениях интерактивного общения, локальных и файлообменных сетях (авторы программы называют эти сервисы компьютерных сетей провайдерами). 2. В контекстном меню значка антивирусной программы выбрать пункт Настройка сканера доступа. В левой части появившегося диалогового окна (рис. 1.38) выбрать провайдера, например Электронная почта. ^ Сканер доступа avast! ^ jjaiisi Ыст»ювл«ны Электронная почта Провд(Ыер сейчас аыпойняется. Сетевой экран Версия 4 7-044 - К0Н4^«Т|рвиия 1р0в^С(М Чввствгпепьность. Стандартный экран Версия 4,7-044 Экран P2P Версия 4 7-044 ------------------ Электронная почте Версия 4 7-844 Нормальная Вькткдя Вруояю ■ Иесятхшь,,.-|} ..........................-г-гга --------Д^СТВЙЯ npOB^taepei ___I Па^»аа Земри»<п> Последим;^ >1»вер«Ф*.в% Послваь&о< зэражежоА Проверено: О Зеражено: 0 Имя мдвния Время работы. Р'еэиаентая >аиита 5:5929 3«и«тейост‘зп*-вча«1*.оонсм«вмйтек,нвго»аемал'.рвг'/йе«гнькл{»ввРйвр*;у Рееиадатгныв провайдеры является спеииа/ьньми ьваалж»», к.сгт<фь.в испольэ-^ется для эащить! специфически^ поаснетем коквтьютера. тa^иJ^ k«i Файловая система илиэлаттронная почта << Мю*»шв деталей ОК Рис. 1.38. Настройка параметров антивирусного монитора (сканера доступа) 74 Глава 1 В правой части окна установить необходимые параметры проверки входящей почты. Проверим входящую почту на наличие почтовых червей. 3. Запустить почтовую программу и начать получение входящих сообщений. В случае обнаружения в сообщении почтового червя раздастся голосовое предупреждение и будет выведено диалоговое окно Обнаружен вирус! (рис. 1.39). dva^l • Предупреждение Обнаружен вирус! Нет гфич№в»1 avas^ остажэвил mdware лрежае. чаи он ь кдэмгъюгер. гежааэчо ^в4жa. Имя Файла: Внодлщая почта ‘O^ivei}» faiterf От: 'The Posl Office" Ни«го делап»’’. соо&цадие бдает зат>Я»вно в ваш тючговьй ящик, вместе с опас»в>1м httpi/iWv.avastcom Затотиите ссрбшение о вирусе иа наием сайте. что&1 гюмочь Рис. 1.39. Обнаружение почтового червя В окне будет указано, какое сообщение инфнци- ровано, имя вируса (например, Win32 Му doom-L) и тип вируса (например, Вирус1Червъ). Пользователь может выбрать одно из следующих действий щелчком по соответствующей кнопке: Переименовать, Удалить, В хранилище. Ничего не делать. Проведем проверку на вирусы выбранных дисков. 4. В контекстном меню значка антивирусной программы выбрать пункт Запустить антивирус avast!. В появившемся диалоговом окне с помощью кнопок справа выбрать диски для сканирования. Щелкнуть по кнопке Запустить. Архитектура компьютера и защита информации 75 В диалоговом окне будет отображаться процесс антивирусной проверки файлов на выбранном диске (рис. 1.40). Г ^ LIULlTN # ,|«:ил-н1И1Ш1.усноГ|да... i- •.t архивные файлы: Отклн>чен Тип текущего сканиров.тнмя: Полное сканмр.. : проверенные файлы: ?60 C;‘Qocumei.iits .ш<1 Settitujs AU Useto Applic.xtiou 0».1)а компьютера и защита информации 77 Троянские программы, ворующие информацию. Такие троянские программы воруют различную информацию с зара-ясенного компьютера. При запуске они ищут файлы, хранящие конфиденциальную информацию о пользователе (банковские реквизиты, пароли доступа к Интернету и др.) и отсылают ее по указанному в коде троянца электронному адресу или адресам. Троянцы данного типа также сообщают информацию о зараженном компьютере (размер памяти и дискового пространства, версию операционной системы, IP-адрес и т. п.). Некоторые троянцы воруют регистрационную информацию к программному обеспечению. Троянские программы — инсталляторы вредоносных программ. Троянские программы этого класса скрытно инсталлируют другие вредоносные программ и используются для «подсовывания» на компьютер-жертву вирусов или других троянских программ. Загруженные без ведома пользователя из Интернета программы затем либо запускаются на выполнение, либо включаются троянцем в автозагрузку операционной системы. Троянские программы — шпионы. Данные троянцы осуществляют электронный шпионаж за пользователем зараженного компьютера: вводимая с клавиатуры информация, снимки экрана, список активных приложений и действия пользователя с ними сохраняются в каком-либо файле на диске и периодически отправляются злоумышленнику. Троянские программы этого типа часто используются для кражи информации пользователей различных систем онлайновых платежей и банковских систем. Троянские программы часто изменяют записи системного реестра операционной системы, поэтому для их удаления необходимо в том числе восстановление системного реестра. Практическое задание «Защита от троянских программ». С помощью программы восстановления системы (например, CCleaner) исправить ошибки системного реестра. Защита от троянских программ Исправим записи системного реестра, в которые троянские программы могли внести изменения. 1. Запустить программу восстановления системы CCleaner. В левой части окна приложения (рис. 1.41) щелкнуть по кнопке Неполадки, 78 Глава 1 CCleaner ^g|xt гНастртки n»(Q(« чшполмок Наполадки :Ч «д>» : CipBMc ' 2 : НасФойси I Помоть-онллйн [^Целостность реестра Р1 Отсутствующие общие DLL Р1 Неверные расширения файлов [71 Ошибки ActiveX и Class [71 Приложения [71 Шрифты 13 Пути приложений [71 Файлы справки [71 Установленные приложения [71 Отсутствующие приложения 0 Запуск с Windows [7| Упорядочивание меню Пуск [71 Цененные файлы MUI [71 Целостность файлов [71 Ярлыки в главном меню [71 Ярлыки рабочего стола -Слггояжв Проблема 1 flat*teie [71 Ошибки ActiveX/COM [7J Невернь1й или пустой клас. В Ошибки ActiveX/COM [71 Ошибки ActiveX/COM [71 Ошибки ActiveX/COM [71 Неверный или пустой клас. [71 Ошибки ActiveX/COM [71 Ошибки ActiveX/COM [3 Ошибки ActiveX/COM I •tga j 602Text - -{45068E6I-1257-1018-897A-0-—• | AGCRoll I ACM.ACMFactory • •(A9AAE1AB-9688-42C I ACM.ACMFactory.l • ^A9AAElAB-9688-4 Adobe.SVGCtl.l • -{6DE3F233-D6E6-nd2-APSFile Atlas.eProtOCOl • {82184935-B894-4A82‘? Attr.Attr.l • {5BOBBAF0-3E3D-nd3-9O2C bestsoft51205.eProtocol - ^82184935-88‘ Иар(шт> f Проверить обиобления. Рис. 1.41. Исправление записей системного реестра В списке Настройка поиска неполадок отметить флажками нужные пункты. Щелкнуть по кнопке Поиск проблем, в правой части окна будут показаны проблемы реестра и соответствующие записи реестра. Отметить флажками нужные записи и щелкнуть по кнопке Исправить отмеченные,.. Произойдет исправление выбранных записей системного реестра. Контрольные вопросы 1. Какие типы троянских программ существуют и каковы их вредоносные действия? Компьюте рактикум Windows-CD 1,21. С помощью программы восстановления системы (например, CCleaner) выполнить практическое задание «Защита от троянских программ». Архитектура компьютера и защита информации 79 1.6.5. Рекламные и шпионские программы и защита от них Рекламные программы. Рекламные программы (от англ. Adware: Advertisement — реклама и Software — программное обеспечение) встраивают рекламу в основную полезную программу. Часто рекламные программы входят в состав официально поставляемых условно бесплатных версий программного обеспечения. Реклама демонстрируется пользователю в процессе работы основной программы в виде графических баннеров или бегущей строки. Обычно после покупки и/или регистрации основной программы рекламная вставка удашяется и показ рекламы прекращается. Шпионские программы. Шпионские программы (от англ. Spyware: Spy — шпион и Software — программное обеспечение) скрытно собирают различную информацию о пользователе компьютера и затем отправляют ее злоумышленнику. Эти программы иногда проникают на компьютер под видом рекламных программ и не имеют возможности деинсталляции пользователем без нарушения функционирования использующей их программы. Иногда шпионские программы обнаруживаются в распространенных программных продуктах известных на рынке производителей. В марте 2005 года под видом поисковой панели для браузера Internet Explorer начала распространяться рекламно-шпионская программа «mwsbar». Программа регистрирует себя в системном реестре и добавляет в автозагрузку, что приводит к изменению настроек браузера и перенаправлению результатов поиска в Интернете на сайт злоумышленника. Практическое задание «Защита от рекламных и шпионских программ». С помощью программы удаления рекламных и шпионских программ (например, Ad-Adware) очистить компьютер от adware и spyware программ. Защита от рекламных и шпионских программ 1. Запустить программу Ad-Adware, которая удаляет рекламные и шпионские программы. В окне приложения (рис. 1.42) щелкнуть по кнопке Start, 80 Глава 1 М\ Aware SL / ". i-'' ’ ‘i- Jr J n.X5-T".K- - О Status /7 Qsetrinew / QAd-vvatch rQ Add-ons .... J / i i / / Ad-Aware SE Status Initialization Status Definitions file SE1R116 24 07.20C6 Loaded Details Usage Statistics 1 Ad-Watch status i Last system scan ; Objects removed total 1 Total Ad-Aware scans [ Objects in ignore list I Objects quarantined Not uvail.iblv: 17.06 2006 23.07:18 2103 20 n Onen innore list T796 Onen Quarantine list Reset St,mis ok Ad-Aware SE initialized Chprk fnr uodatss now Reedy .' J Ad-Aware SE Persorwl, Build 1.05 Рис. 1.42. Окно программы Ad-Adware 2. В появившемся диалоговом окне (рис. 1.43) выбрать тип сканирования (например. Perform smart system scan — Интеллектуальное сканирование). Щелкнуть по кнопке Next. Л(1 Aw.'^re SI IV^rsonat ъ\ггив s;9 щщд[щ f/ Q Status Ч S2 QAd-WUch О Add-one ri^ Preparing System Scan Seen Mod» i > Please choose a scan mode, then click "next" to continue Select a scan mode: Perform smart system scan Perform Ы system seen Г Use custom scanning options Customize Scan volume for AOS Select Search for negligibie risk errtriae Reedy Ad-Aware SE Personed, BuU 1.05 Рис. 1.43. Выбор типа сканирования 3. В течение некоторого времени будет происходить сканирование, процесс которого будет отображаться в диалоговом окне. Архитектура компьютера и защита информации 81 4. С результатами сканирования можно ознакомиться в следующем диалоговом окне с использованием вкладок. Активизировать вкладку Critical Objects (рис. 1.44) и в контекстном меню выбрать пункт Select all objects — Вы‘ делить все объекты. В данном случае будут выделены файлы cookies (см. ниже). Лс1 Aware SI- Personal ' ^ 1.1^ / ' CD't..,. J 4'... Соок1е;мду@$ру1од.со1П/ Cookie: нду@увкгеа(1 com/ Cookie:HAy®liet ru/ Cookie:HAy@data .coremetr... jdl Rigti-dck «TV lent more ojAions, OcMMedtck to shovy (Mate. 12M4 Objects йиагапНпе^^ j Ad-Aware SE Personal, Buttd 1.05 Рис. 1.44. Список найденных критических объектов 5. Активизировать вкладку Negligible Objects (рис. 1.45) и в контекстном меню выбрать пункт Select all objects — Выделить все объекты. U _ist most recent appicationt... HKEY_USERS:S-1-5-21-2052.. 1 H •|0^ H^tU.isI most recent appTcattont... rtнвта. Высока • Бяокиз^сгся В05 ‘‘co<*ie‘', ке даовлятюряющие политике комФтенииальности • 5шоф(ротся все "cookie*'. ис^льэ;рощие без вашего $«н(го сс^лжия Цаяы... j Инитарт... j ^an&^wre. окон."’' |у Блокм(юм!Тъ В1яи«аеею\цие QK ОК J Отмена Применить Рис. 1.46. Защита от cookies в браузере Internet Explorer Контрольные вопросы 1. Каковы вредоносные действия рекламных и шпионских программ? 2. Что такое куки (cookies)? В чем состоит их польза и вред? Компьюте рактикум Windows-CD 1.22. С помощью программы удаления рекламных и шпионских программ (например, Ad-Adware) выполнить практическое задание «Защита от рекламных и шпионских программ». 1-23. В браузерах выполнить практическое зада-ние «Упорядочение использования файлов cookies». т 84 Глава 1 1.6.6. Спам и защита от него Спам (от англ, spam) — это массовая автоматическая рассылка рекламных электронных сообщений, со скрытым или фальсифицированным обратным адресом. Спам распространяется по компьютерным сетям с использованием электронной почты и систем интерактивного общения (типа ICQ), а также по мобильным сетям с использованием службы SMS-сообщений. Спам — массово рассылаемая корреспонденция рекламного или иного характера, отправляемая людям, не выразившим желание ее получать. В первую очередь термин «спам» относится к рекламным электронным письмам. Спам приходит потому, что электронный адрес получателя стал известен спамерам (рассыльщикам спама). Чаще всего владелец почтового ящика сам указывает электронный почтовый адрес при регистрации на каком-либо сайте и его обнаруживает специальный робот, «бродящий» по сайтам наподобие индексирующего робота поисковых систем. Спамеры стремятся получить подтверждение, что почтовый адрес действительно используется (в этом случае поток спама может увеличиться многократно). Чтобы убедиться, что спамовое сообщение получено и прочитано, спамеры применяют различные уловки: • требуется подтверждение о получении сообщения; • предлагается активизировать ссылку на Web-страницу, на которой предлагается получить дополнительную информацию; • предлагается отменить подписку на эту рассылку, послав письмо по указанному адресу. Рекламный спам. Некоторые компании, занимающиеся легальным бизнесом, рекламируют свои товары или услуги с помощью спама. Они могут осуществлять его рассылку самостоятельно, но чаще заказывают ее тем компаниям (или лицам), которые на этом специализируются. Привлекательность такой рекламы заключается в ее сравнительно низкой стоимости и большом охвате потенциальных клиентов. С помощью спама часто рекламируют продукцию, о которой нельзя сообщить другими способами, например оружие, порнографию, лекарственные средства с ограничениями по обороту, ворованную информацию (базы данных), контрафактное программное обеспечение и т. п. Архитектура компьютера и защита информации 85 «Нигерийские письма». Иногда спам используется для того, чтобы выманить деньги у получателя письма. Наиболее распространенный способ получил название «нигерийские письма», потому что большое количество таких писем приходило из Нигерии. Такое письмо содержит сообщение о том, что получатель письма может получить большую сумму денег, а отправитель может ему в этом помочь. Затем отправитель письма просит перевести ему немного денег под предлогом, например, оформления документов или открытия счета. Выманивание этой суммы и является целью мошенников. Фишинг. Фишинг (от англ, fishing — рыбалка) — еще один способ мошенничества путем обмана пользователей. Он представляет собой попытку выманить у получателя письма данные, которые можно использовать для получения выгоды: номера его кредитных карточек или пароли доступа к системам онлайновых платежей. Такое письмо обычно маскируется под официальное сообщение от администрации банка. В нем говорится, что получатель должен подтвердить сведения о себе, иначе его счет будет заблокирован, и приводится адрес сайта (принадлежащего спамерам) с формой, которую надо заполнить. Среди данных, которые требуется сообщить, присутствуют и те, которые нужны мошенникам. Для того чтобы жертва не догадалась об обмане, оформление этого сайта имитирует оформление официального сайта банка. Защита от спама. В силу массового характера спамовые почтовые рассылки затрудняют работу информационных систем и ресурсов, создавая для них бесполезную нагрузку. Пользователи сети вынуждены ежедневно тратить время на обработку бесполезных рекламных сообщений, а провайдерам спам приносит неудобства вследствие повышения нагрузки на почтовые серверы и каналы связи. Для борьбы со спамом используются антиспамовые фильтры, которые могут быть установлены как на локальных компьютерах пользователей, так и на почтовых серверах провайдеров. Антиспамовые фильтры анализируют содержание письма или пытаются опознать спамера по электронному адресу. Если письмо классифицировано как спам, оно может быть помечено, перемещено в другую папку или даже удалено. Для затруднения автоматической фильтрации спамовые сообщения часто искажаются, вместо букв используются похожие по начертанию цифры, русские буквы заменяются на латинские, а в случайных местах добавляются пробелы. 86 Глава 1 Практическое задание «Защита от спама». В почтовых программах (например. Outlook Express и SeaMonkey) создать антиспамовый фильтр (правила для работы с почтой), который будет защищать от получения рекламных сообщений: • от конкретных отправителей; • при наличии определенных слов в сообщении. Защита от спама Создадим антиспамовый фильтр в почтовой программе Outlook Express. 1. Запустить почтовую программу Outlook Express. Ввести команду [Сервис-Правила для сообщений-Почта..,], 2. В появившемся диалоговом окне Правила для сообщений выбрать вкладку Правила для почты и щелкнуть по кнопке Создать, 3. Появившееся диалоговое окно Создать правило для почты (рис. 1.47) содержит три списка и текстовое поде, В первом списке необходимо выбрать условия применения правила, в данном случае Искать сообщения, содержащие адресатов в поле «От» и Искать сообщения, содержащие заданные слова. Создать правило для почты 0 Искать сообщения, содержащие аарессгтов в поле' От " Q Искать сообщения, содержащие заданные слова в поле "Тема " 0 Искать сообщения, содержащие заданные слова П Искать сообщения, содержащие адресатов в поле "Кому." 2 выбермгедвйст^длйд»««хо правила: - d :з □ Ответить заданным сообщением D Прекращение выполнения дополнительнык правил D Не загружать с сервера 0 2 0гмс»»1в правила (ДЛй ще/книге по гхшч^жнутс^ вели^мне^ ё Применить данное правило при получении сообщения Искать сообщения; содержащие адресатов в поле "От:" и Искать сообщения; содержащие заданные слова Удалить с сервера 4. Нвзв»*« гр^»ияа; _________ }Правило для почть! Я1 ОК Отмена Рис. 1.47. Создание антиспамового фильтра в почтовой программе Outlook Express Архитектура компьютера и защита информации 87 4. Во втором списке необходимо выбрать действие над сообщениями для данного правила, в данном случае Удалить с сервера. 5. В третьем списке необходимо уточнить порядок действия данного правила. Щелчком по ссылке содержащие адресатов вызвать диалоговое окно Выбор получателей и ввести почтовые адреса спамеров, от которых почтовые сообщения не будут получаться. Щелчком по ссылке содержащие заданные слова вызвать диалоговое окно Ввод ключевых слов и ввести ключевые слова, при наличии которых в почтовых сообщениях эти сообщения будут получаться. 6. Текстовое поле содержит название и номер созданного правила. После щелчка по кнопке ОК правило вступает в действие. Создать антиспамовый фильтр в почтовой программе SeaMonkey. 1, Запустить почтовую программу SeaMonkey. Ввести команду [Инструменты-Фильтры сообщений...]. 2. В появившемся диалоговом окне Правила фильтрации (рис. 1.48) в текстовое поле ввести имя фильтра (например, Антиспамовый фильтр). Правила фильтрации |Антиспамовый фильтр Отправитель 3\ содержит 31 содержит 3 Вьтпнятъ с/»д)»адив дайсгеия: Удалить с сервера POP 3 ОК Отмена Справка Рис. 1.48. Создание антиспамового фильтра в почтовой программе SeaMonkey 88 Глава 1 3. Во втором поле добавить условия применения фильтра щелчком по кнопке +. В первом условии ввести почтовые адреса спамеров, от которых почтовые сообщения не будут получаться. Во втором условии ввести ключевые слова, при наличии которых в почтовых сообщениях эти сообщения не будут получаться, 4. В третьем поле необходимо выбрать действие над сообщениями для данного фильтра, в данном случае Удалить с сервера POP. Контрольные вопросы 1. Каковы вредные последствия спама? 2. Какие существуют основные типы спамовых сообщений? Компьюте рактикум Windows-CD 1]^^ 1.24, В почтовых программах (например, Outlook Express и SeaMonkey) выполнить практическое задание «Защита от спама». 1.6.7. Хакерские утилиты и защита от них в тех случаях, когда затруднения в работе или утере данных возникает в результате направленных действий, говорят о сетевых атаках. Сетевые атаки. Сетевые атаки на удаленные серверы реализуются с помощью специальных программ, которые посылают на них специфические запросы. Это приводит к отказу в обслуживании («зависанию» сервера), если ресурсы атакуемого сервера недостаточны для обработки всех поступающих запросов. DoS-программы (от англ. Denial of Service — отказ в обслуживании) реализуют атаку с одного компьютера с ведома пользователя. DoS-программы обычно наносят ущерб удаленным компьютерам и сетям, не нарушая работоспособность зараженного компьютера, DDoS-программы (от англ. Distributed DoS — распределенный DoS) реализуют распределенные атаки с разных компьютеров, причем без ведома пользователей зараженных компьютеров. Для этого DDoS-программа засылается на Архитектура компьютера и защита информации 89 компьютеры «жертв-посредников» и после запуска в зависимости от текущей даты или по команде от хакера начинает сетевую атаку на указанный сервер в сети. Некоторые сетевые черви содержат в себе DoS-процеду-xJf ры, атакующие сайты, которые по каким-либо причинам «невзлюбил» автор червя. Так, червь «Codered» 20 августа 2001 года организовал успешную атаку на официальный сайт президента США, а червь «Mydoom» 1 февраля 2004 года «выключил» сайт компании — производителя дистрибутивов UNIX. Некоторые хакерские утилиты реализуют фатальные сетевые атаки. Такие утилиты используют уязвимости в операционных системах и приложениях и отправляют специально оформленные запросы на атакуемые компьютеры в сети. В результате сетевой запрос специального вида вызывает критическую ошибку в атакуемом приложении, и система прекращает работу. Утилиты «взлома» удаленных компьютеров. Утилиты «взлома» удаленных компьютеров предназначены для проникновения в удаленные компьютеры с целью дальнейшего управления ими (используя методы троянских программ типа утилит удаленного администрирования) или для внедрения во «взломанную» систему других вредоносных программ. Утилиты «взлома» удаленных компьютеров обычно используют уязвимости в операционных системах или приложениях, установленных на атакуемом компьютере. Профилактическая защита от таких хакерских утилит состоит в своевременной загрузке из Интернета обновлений системы безопасности операционной системы и приложений. Руткиты. Руткит (от англ, root kit — «набор для получения прав root») — программа или набор программ для скрытного взятия под контроль «взломанной» системы. Термин «rootkit» исторически пришел из мира операционной системы UNIX, и под этим термином понимается набор утилит, которые хакер устанавливает на «взломанном» им компьютере после получения первоначального доступа. В операционной системе Windows под rootkit принято подразумевать программу, которая внедряется в систему и перехватывает системные функции. Перехват и модификация низкоуровневых функций, в первую очередь, позволяет такой программе достаточно качественно маскировать свое присутствие в системе. Кроме того, как правило, rootkit может маскировать присутствие в системе любых описанных в его кон- 90 Глава 1 фигурации процессов, каталогов и файлов на диске, ключей в реестре. Многие rootkit устанавливают в систему свои драйверы и службы (они, естественно, также являются «невидимыми»). Защита от хакерских атак и сетевых червей. Защита компьютерных сетей или отдельных компьютеров от несанК' ционированного доступа может осуществляться с помощью межсетевого экрана, или брандмауэра (от англ, firewall). Межсетевой экран может быть реализован как аппаратно, так и программно. Межсетевой экран позволяет: • блокировать хакерские DoS-атаки, не пропуская на защищаемый компьютер сетевые пакеты с определенных серверов (определенных IP-адресов или доменных имен); • не допускать проникновение на защищаемый компьютер сетевых червей (почтовых, Web и др.); • препятствовать троянским программам отправлять конфиденциальную информацию о пользователе и компьютере. Практическое задание «Настройка межсетевого экрана». Установить и настроить межсетевой экран (например, Agnitum Outpost). Настройка межсетевого экрана Установим политику защиты сетевого экрана, которая определяет, какие сетевые соединения разрешены или запрещены: • Блокировать все — запрет любых сетевых взаимодействий; • Режим блокировки — запрет всех сетевых взаимодействий, кроме явно разрешенных; • Режим обучения — пользователь может принять решение о возможности или запрете выхода в сеть для приложения. Межсетевой экран выдает диалоговое окно предупреждения о первом сетевом взаимодействии для данного приложения, котором можно настроить правила доступа данного приложения в сеть (эта политика задается по умолчанию); • Режим бездействия — разрешение любых сетевых взаимодействий; • Режим разрешения — разрешение всех сетевых взаимодействий, кроме явно запрещенных. 1. Запустить межсетевой экран Agnitum Outpost. Ввести команду [Параметры-Политики..,], j^pvHTeKTVpajtOMnbtOTepa и защита информации 91 2. В появившемся диалоговом окне Параметры активизировать вкладку Политики (рис. 1,49) и выбрать политику защиты сетевого экрана. Щелкнуть по кнопке ОК. Параметры Шт.- . ■ JJisJ Обшив] Прияожвжя) Систвь«ые выберите потгмс!) брвнси>«)дарв О # Разрешать Обученкр о о Блокировать Запрещать Отключить Промает »ас через процесс аззоания правила для соеаинешя лх<$егог^ xoropo»^e^fiм^onиcaмoлpaвмлд^в( (!ч>аиа1:лву»ра Создв^ое немедленно аэд^гвжано брШ№<'ау>ром для о^мботки соединений. ОК I Отмена I ' Пр-..;мен^гь | СгЧ**та Рис. 1.49. Установка политики межсетевого экрана При установленной политике Режим обучения каждое приложение будет запрашивать усч:аповление индивидуальной политики доступа к Интернету. 3, При попытке получения электронной почты появится диалоговое окно, запрашивающее разрешение д^аппому приложению на доступ к Интернету (рис. 1.50). Со.{д.п1.11рдиияо для ASHMAISV.eXE «ум^ в44аЯ Sewiner Sarv«:e «влцммишг вхоайШМ еовщиметв с Удаленней служба: Р0РЗ(ТСР:11(8 ЦАвл1»»1ьАа|Ц)ес pop.iMo{u Двйртаий Oulpoel Гм«в1: ^ Раарваш^зтС1муприложвнм0№^лнйгь/1Пбыедейсгвия С Затратив атому га»моя»нню выполнять кмив-^цбо действия <' Соайатьгравиярмоснове статартого (biovvsw^ ^ fj *гг< v^er<. сД1 , >f, ОК I Рис. 1.50. Запрос на разрешение доступа к Интернету Можно получить информацию о разрешенных и заблоки-данных приложениях. 92 Глава 1 4, Открыть окно межсетевого экрана (рис. 1.51) и в левой его части в иерархическом меню выбрать интересующий тип приложений. В правой части окна межсетевого экрана будет выведен список приложений с дополнительной информацией о типе соединения. Вид Пуанетры Спраака Моя сеть $1 Все соединения (2) ■Э Gener;c '-'ost Process for 3 System Sj Р<ишисмныв ^ Звблонировенные Ч ^ noAK/iTO4aet^ мсдупи Рекламе Ф Содержимое ^DNS Активное содержимое Защита файлов ^ Летектор атак J 2} Ганина Alow OutgorgCHiCP Browser PASV ftp connsctiOrT Browse'’ PASV FTP connection Browser PASV FTP comectior Browse'" PASV FTP connection ICMP Traffic iCfvP Traff-c ICMP Traffic ICMP Traffic ICMP Traffic ICMP Traffic ICMP Traffic fCMP Traffic ^1 гг»тпожение | Удаленный адрес I Удагминь» порт i По»дчд|днив SVCHOST.EXS AvAST.SETCP AVAST.SETtjP AVAST.SETUP AVAST.SETUP n/a n/a n/a n/a n/a n/a n/a n/a 255.255,255.255 down'oadSl avastc... downloadSlavastc... downtoadlO.avastc... downbadBl avastc.,, downloacM.avastcom downloacH. avast CO m aQwnioa(i4.avastcorr> downfoad4.avastcom download«i.avastcom downioad4.avast.com dovi^load4.avdstcom down (cad4.avast.com 67 HTTP HTTP HTTP HTTP эхо-ответ/0 эхо-ответ/D зхо-запрос,'0 э*о-эапрос/0 эхо-отеет/0 эко-отеет/0 >хо-эапрос/0 ахо-запрсс/0 Гогов fw292. WebO Исходящее иаодАцее Исходящее Исходящее ВходАнее Входящее Входящее ИСКОЛЯщед Исходящее Входящее Входящее исходящее Исходящее J Jj Рис. 1.51. Разрешенные приложения С помощью межсетевого экрана можно установить уровень тревоги и заблокировать хакерские DoS-атаки. 5. Ввести команду [Параметры-Подключаемые модули,..], В появившемся диалоговом окне выбрать подключаемый модуль Детектор атак и щелкнуть по кнопке Параметры.,. В появившемся диалоговом окне Параметры (рис. 1.52) с Лй1 Уроеень тревош Завейте урм»егь треесги с помошыо полз<^а Преа<1пре>(вать, если ос^естеляется скамфсвеже нескояькьж пэртов или портов с блжировка втек ..................... ■ ■■—• ' ’ ■" — Р Бп|жмроввгьвсвма jlO мит^яы (7 Бполироввгьатакдющегока |SQ -Й г-вежры Ги Т«(жебпоки0(ватьпоасеть«так(аощего DOS-лтака Блоюфйватъ локелыяяй поит, если обнер;рк8н« DOS-атака Рис. 1.52. Установка параметров защиты от DoS-атак Архитектура компьютера и защита информации 93 ПОМОЩЬЮ вертикального ползунка выбрать уровень тревоги. Установить флажки в разделе Блокировка атак и с помощью счетчиков установить время блокировки. Открыть окно межсетевого экрана и в левой его части в иерархическом меню выбрать пункт Детектор атак (рис 1.53). fijaiiiiim>iiiui]LWij.iui.i Файл Вид С^звис Параметры 0' 1S ^ _ - ф Моя сеть i Тип araw УИирмация 0 cKawtpoeaHw портов *11 '* Все соединения :z) 29.07.2006 21-25:32 Запрос на соединение 216.14 216 109 ТСР(4662) ■ '£] Разрешенные 29.07,2006 21 25-02 Запрос на соедикение 216.109.27.1S1 иОР(4672) Заблонироевнныв 29.07.2006 21.23:35 Запрос на соединение 01.195.7.225 ТСР(4662) - 'зй Годключаемые модули 29.07.2006 21:23:32 Запрос на соединение 212.1б8.<1 10 UDP(1026) Реклама 29.07.2006 21:22:30 Запрос на соединение 70.84.93.242 ТСР(1050) ф Содержимое 29.07.2006 21:22:29 Запрос на соединение 67.15.189.12 ТСР(1049) ^ DNS 29.07.2006 21.22.21 Запрос на соедумение 207.44.102.35 ТСР(1048) Актувкое содержимое 29.07.2006 21-22:21 Запрос на соедуыение 212.188.4.10 J0P(1026) Защита файлов 9 Детектор «так 29.07.2006 21:22:20 Запрос на соедкыемне 209.855.41 ТСР(1047) 29.07.2006 21-21:00 29.07.2006 21 20:35 29.07 2006 21:20:10 Запрос на соедине^ме Запрос на соединение Запрос на соединение 124.97 146.60 124 156.1.09 212.180.4.10 UDP (55049) иОР(14Э4) UDP(1026) ll ijJ 29.07.2006 21:19:48 Запрос на соединение 71.230.41.6 ТСР(4662) 1 Г5Т0Ш 289> vv«p 0 ■9 Рис. 1.53. Детектор DoS-атак В правой части окна межсетевого экрана будет выведен список атак с дополнительной информацией о каждой атаке. Контрольные вопросы 1. Каковы основные хакерские утилиты и их злонамеренное использование? 2, В каких целях используются межсетевые экраны? Компьютегаый^рактикум Windows-CD 1.25. С помощью межсетевого экрана (например, Agnitum Outpost) выполнить практическое задание «Настройка межсетевого экрана». Глава 2__________ Информация. Системы счисления Windows-CD В процессе изучения данной темы рекомендуется установить программное обеспечение в операционной системе Windows: • компьютерные калькуляторы Wise Calculator и NumLock Calculator; • программа перевода единиц измерения различных величин, в том числе информации. 2.1. Понятие «информация» в науках о неживой и живой природе, обществе и технике Слово «информация» происходит от латинского слова «in-formatio», что в переводе означает сведение, разъяснение, ознакомление. Понятие «информация» является базовым в курсе информатики, невозможно дать его определение через другие, более «простые» понятия, В геометрии, например, невозможно выразить содержание базовых понятий «точка», «луч», «плоскость» через более простые понятия. Содержание основных, базовых понятий в любой науке должно быть пояснено на примерах или выявлено путем их сопоставления с содержанием других понятий. В слз;^ае с понятием «информация» проблема его определения еще более сложная, так как оно является общенаучным понятием. Понятие «информация» используется в различных науках (информатике, кибернетике, биологии, физике и др.), при этом в каждой науке понятие «информация» связано с различными системами понятий. 2.1.1. Информация в физике в физике информация рассматривается как антиэнтропия, или энтропия с обратным знаком. Энтропия системы яв- Информация. Системы счисления 95 ляется мерой беспорядка, хаоса, тогда как информация (антиэнтропия) является мерой упорядоченности и организованности системы. Информация в замкнутых системах. Согласно второму началу термодинамики, замкнутая система, т. е. система, не обменивающаяся веществом и энергией с внешней средой, стремится к тепловому равновесию. Энтропия замкнутой системы может лишь возрастать (соответственно информация может лишь убывать). Статистическая физика обосновывает второе начало термодинамики, базируясь на вероятностях микроскопических состояний и понятии необратимости процесса. Термодинамические процессы идут в одном направлении от менее вероятных состояний (более упорядоченных, с меньшей энтропией и большей информацией) к более вероятным (более хаотичным, с большей энтропией и меньшей информацией). Действительно, если имеются два сосуда, один из которых заполнен газом, а другой пуст, то после открытия соединяющего их крана оба сосуда будут более или менее равномерно заполнены газом (рис. 2.1). Переход из первого, менее вероятного, состояния газа во второе, более вероятное, необратим, так как обратный процесс (сосредоточение молекул газа в одном сосуде) никогда не наблюдается. I V ч увеличение энтропии уменьшение информации вероятность состояния Рис. 2.1. Энтропия и информация в замкнутой системе Из вышесказанного следует, что замкнутые системы, стремящиеся к состоянию теплового равновесия, не могут хранить информацию. Рассмотрим в качестве примера данный учебник. На первый взгляд, учебник находится в тепловом равновесии — ведь мы даже можем измерить его температуру. Однако полного теплового равновесия учебник достигнет лишь после того, как типографская краска продиффундирует и расплывется по каждой странице. Однако когда текст исчезнет, исчезнет и информация. 96 Глава 2 Информация в открытых системах. Современная физика рассматривает открытые системы, которые обмениваются энергией или веществом с окружающей средой и увеличивают свою организованность. По мере увеличения организованности системы величина энтропии уменьшается и величина информации увеличивается, В открытых системах в результате самоорганизации могут возникнуть пространственные или временные структуры, хранящие информацию. Примерами могут служить лазер, создающий когерентное излучение, жидкости, образующие пространственные или временные структуры при нагревании, или химические реакции, в которых наблюдаются периодические пространственные спирали или концентрические волны. Процессы самоорганизации в открытых системах изучаются синергетикой. Информация в микро- и мегамире. В конце XIX века в классической физике рассматривали нашу Вселенную как замкнутую систему и предсказывали, что ее ждет «тепловая смерть», когда молекулы и атомы равномерно распределятся в пространстве и какие-либо изменения и развитие прекратятся. Однако современная наука установила, что некоторые законы классической физики, справедливые для макротел, нельзя применять для микро- и мегамира. Согласно современным научным представлениям, наша Вселенная является динамически развивающейся системой, в которой постоянно происходят процессы усложнения структуры. Астрономия-11 Согласно теории Большого взрыва, Вселенная образовалась около 15 миллиардов лет назад в результате взрыва «первоматерии» (рис. 2.2). В первые мгновения материя существовала фактически в форме энергии, а затем на протяжении долей секунды начало образовываться вещество в форме элементарных частиц (электронов, протонов, нейтронов и др.). В следующий миллион лет основные события развивались в микромире. Из разлетающихся во все стороны элементарных частиц образовывались атомы, то есть из хаоса возникали системы с более сложной структурой. Сначала образовывались атомы самых легких химических элементов (водорода и гелия), а затем и более тяжелых элементов (рис. 2.3). В мегамире в течение последующих миллиардов лет под действием сил гравитационного притяжения из хаоса гигант- Информация. Системы счисления 97 скйх облаков пыли и газа формировались сложные структуры — галактики (рис. 2.4). Краткая история вселенной \ Хл v- 4 s J egaSSS* - #.*" ‘4SfSat ‘ ;■ •' •• '4» Рис. 2.2. Развитие Вселенной 4 we увеличение хаос порядок Рис. 2.3. Переход от хаоса к порядку в микромире увеличение хаос порядок Рис. 2.4. Переход от хаоса к порядку в макромире 98 Глава 2 Наша солнечная система, в которую входит планета Земля, образовалась около 5 миллиардов лет назад и вместе с сотнями миллионов других звезд образует нашу галактику Млечный Путь. На поверхности планет стали происходить химические реакции, в результате которых из атомов образовывались более сложные системы — молекулы веществ, В том числе молекула воды, которая состоит из двух атомов водорода и одного атома кислорода. Химия 9 11^^ Таким образом, с одной стороны, в неживой природе в замкнутых системах идут процессы в направлении от порядка к хаосу (в них информация уменьшается). С другой стороны, в открытых системах может происходить усложнение структуры и, следовательно, информация, являющаяся мерой упорядоченности элементов системы, возрастает. Мы живем в макромире, т. е, в мире, который состоит из объектов, по своим размерам сравнимых с человеком (рис. 2.5). Обычно макрообъекты разделяют на неживые (камень, льдина и т. д.), живые (растения, животные, сам человек) и искусственные (здания, средства транспорта, станки и механизмы, компьютеры и т. д.). Макрообъекты состоят из молекул и атомов, которые, в свою очередь, состоят из элементарных частиц, размеры которых чрезвычайно малы. Этот мир называется микромиром (рис. 2.6). Рис. 2.5. Макромир. Гулливер в стране лилипутов к. Рис. 2.6. Микромир. Атом водорода и молекула воды 11нформация. Системы счисления 99 Мы живем на планете Земля, которая входит в солнечную систему, Солнце вместе с сотнями миллионов других звезд образует нашу галактику Млечный Путь, а миллиарды галактик образуют Вселенную. Все эти объекты имеют громадные размеры и образуют мегамир (рис. 2.7). Рис. 2.7. Мегамир. Солнечная система Контрольные вопросы 1. Приведите примеры перехода от хаоса к порядку (увеличения информации) в окружающем мире. 2. Приведите примеры перехода от порядка к хаосу (уменьшения информации) в окружающем мире. 2.1.2. Информация в биологии Процесс увеличения информации характерен для открытых, обменивающихся веществом и энергией с окружающей средой, саморазвивающихся систем живой пртхроды (белковых молекул, организмов, популяций животных и т. д.). В процессе эволюции живой природы идет саморазвитие, т. е. повышение сложности и разнообразия живых организмов, а следовательно, увеличение информации, понимаемой как Мера упорядоченности элементов системы. 100 Глава 2 Информационные сигналы. В биологии, которая изучает живую природу, понятие «информация» связывается с целесообразным поведением живых организмов. Такое поведение строится на основе получения и использования организмом информации об окружающей среде в форме информационных сигналов. Информационные сигналы могут иметь различную физическую или химическую природу; звук, свет, запах и другие. Простейшие (например, амеба) могут получать информацию лишь о химическом составе и температуре окружающей среды. Причем информация может быть получена только о ближайших областях окружающей среды путем непосредственного контакта простейшего со средой. Человек воспринимает информацию об окружающем мире с помощью органов чувств (зрения, слуха, обоняния, осязания и вкуса), причем может это делать на большом расстоянии. Чувствительные нервные окончания органов чувств (рецепторы) воспринимают воздействие (например, на глазном дне колбочки и палочки реагируют на воздействие световых лучей) и передают его нейронам (нервным клеткам), цепи которых составляют нервную систему. Нейрон может находиться в двух состояниях: невозбужденном или возбужденном. Возбужденный нейрон генерирует электрический импульс, который передается по нервной системе. В нервной системе происходит кодирование и передача информации с помощью двух состояний нейрона: нет импульса, есть импульс. В этом случае сами состояния нейрона можно рассматривать как знаки некоторого алфавита нервной системы, с помощью которого происходит передача информации. Генетическая информация. Понятие «информация» в биологии используется также в связи с исследованиями механизмов наследственности. Генетическая информация передается по наследству и хранится во всех клетках живых организмов. Гены представляют собой сложные молекулярные структуры, содержащие информацию о строении живых организмов. Последнее обстоятельство позволило проводить научные эксперименты по клонированию, т. е. созданию точных копий организмов из одной клетки. Общая биология 10-11 Генетическая информация определяет строение и развитие живых организмов и передается по наследству. Информация. Системы счисления 101 Хранится генетическая информация в клетках организмов в структуре молекул ДНК (дезоксирибонуклеиновой кислоты). Молекула ДНК (рис. 2.8) состоит из двух скрученных друг с другом в спираль цепей, построенных из четырех нуклеотидов: А, G, Т и С, которые образуют генетический код. W . -в «■ ядро клетка ДНК .tP'* ЛУ ■% Рис. 2.8. Молекула ДНК Молекула ДНК человека включает в себя около 3 миллиардов пар нуклеотидов. В ней закодирована вся информация об организме человека: его внешность, предрасположенность к болезням, способности и т. д. В живых организмах информация передается и хранится с помощью объектов различной физической природы (состояние нейрона, нуклеотиды в молекуле ДНК), которые могут рассматриваться как знаки биологических алфавитов. Контрольные вопросы 1. Какова физическая природа знака при представлении информации в нервной системе? В генетическом коде? 2.1.3. Информация в общественных науках Социально-значимые свойства информации. Человек — существо социальное, для общения с другими людьми он должен обмениваться с ними информацией, причем обмен информацией всегда производится на определенном языке: русском, английском и т. д. Участники дискуссии должны владеть тем язы-1^ом, на котором ведется общение, тогда информация будет понятной всем участникам обмена информацией. 102 Глава 2 Информация должна быть полезной, тогда дискуссия приобретает практическую ценность. Бесполезная информация создает информационный шум, который затрудняет восприятие полезной информации. Примерами передачи и получения бесполезной информации могут служить некоторые конференции и чаты в Интернете. Широко известен термин «средства массовой информации» (газеты, радио, телевидение), которые доводят информацию до каждого члена обш;ества. Такая информация должна быть достоверной и актуальной. Недостоверная информация вводит членов общества в заблуждение и может быть причиной возникновения социальных потрясений. Неактуальная информация бесполезна и поэтому никто, кроме историков, не читает прошлогодних газет. Для того чтобы человек мог правильно ориентироваться в окружающем мире, информация должна быть полной и точной. Задача получения полной и точной информации стоит перед наукой. Овладение научными знаниями в процессе обучения позволяет человеку получать полную и точную информацию о природе, обществе и технике. Информация и знания. Человек получает информацию из окружающего мира с помощью органов чувств, анализирует ее и выявляет существенные закономерности с помощью мышления, хранит полученную информацию в памяти. Процесс систематического научного познания окружающего мира приводит к накоплению информации в форме знаний (фактов, научных теорий и т. д.). Таким образом, с точки зрения процесса познания информация может рассматриваться как знания. Процесс познания можно наглядно изобразить в виде расширяющегося круга знания (такой способ придумали еще древние греки). Вне этого круга лежит область незнания, а окружность является границей между знанием и незнанием (рис. 2.9). Парадокс состоит в том, что чем большим объемом знаний обладает человек, чем шире круг знаний, тем больше процесс познания Рис. 2.9. Знание и незнание Информация. Системы счисления 103 ОН ощущает недостаток знаний, и тем больше граница нашего незнания, мерой которого в этой модели является длина окружности. Так, объем знаний выпускника школы гораздо больше, чем объем знаний первоклассника, однако и граница его незнания существенно больше. Действительно, первоклассник ничего не знает о законах физики и его это не очень волнует, тогда как выпускник школы при подготовке к экзаменам по физике может обнаружить, что существуют физические законы, которые он не знает или не понимает. Информацию, которую получает человек, можно считать мерой уменьшения неопределенности знания. Если некоторое сообщение приводит к уменьшению неопределенности нашего знания, то можно говорить, что такое сообщение содержит информацию. Например, после сдачи экзамена по информатике вы мучаетесь неопределенностью, вы не знаете, какую оценку получили. Наконец, экзаменационная комиссия объявляет результаты экзамена и вы получаете сообщение, которое приносит полную определенность, теперь вы знаете свою оценку. Происходит переход от незнания к полному знанию, значит сообщение экзаменационной комиссии содержит информацию. Контрольные вопросы 1. Какие социально-значимые свойства информации можно вьаделить? 2. Как можно представить процесс познания? 2.1.4. Информация в кибернетике в кибернетике (науке об управлении) понятие «информация» используется для описания процессов управления в сложных системах (живых организмах или технических устройствах). Жизнедеятельность любого организма или нормальное функционирование технического устройства связано с процессами управления, благодаря которым поддерживаются в необходимых пределах значения его параметров. Так для поддержания своей жизнедеятельности любой живой организм ’ постоянно получает информацию из внешнего мира с Помощью органов чувств, обрабатывает ее и управляет своим Поведением (например, перемещаясь в пространстве, избегает опасности). 104 Глава 2 Процессы управления включают в себя получение, хранение, преобразование и передачу информации. В процессе управления полетом самолета в режиме автопилота бортовой компьютер получает информацию от датчиков (скорости, высоты и т. д,)» обрабатывает ее и передает команды на исполнительные механизмы, изменяющие режим полета (закрылки, клапаны, регулирующие работу двигателей, и т- д.). В любом процессе управления всегда происходит взаимодействие двух объектов — управляющего и управляемого, которые соединены каналами прямой и обратной связи. По каналу прямой связи передаются управляющие сигналы, а по каналу обратной связи — информация о состоянии управляемого объекта. Разомкнутые системы управления. Если в процессе управления не учитывается состояние управляемого объекта и обеспечивается управление только по прямому каналу (от управляющего объекта к управляемому), то такие системы управления называются разомкнутыми. Информационную модель разомкнутой системы управления можно наглядно представить с помощью следующей схемы (рис. 2.10). Управляющий объект канал управления Управляемый объект Рис. 2.10. Разомкнутая система управления В качестве примера разомкнутой системы управления рассмотрим процесс записи информации на гибкий диск, в котором управляющий объект Контроллер дисковода изменяет состояние управляемого объекта Магнитной головки. Для того чтобы информация могла быть записана, необходимо установить магнитную головку дисковода над определенной концентрической дорожкой диска. При записи информации на гибкие диски не требуется особой точности установки (имеется всего 80 дорожек) и можно не учитывать возможные (например, от нагревания) механические деформации носителя, поэтому управляющий объект {Контроллер дисковода) просто перемещает управляемый объект {Магнитную головку) на определенное расстояние вдоль радиуса дискеты. Информация. Системы счисления 105 Замкнутые системы управления. В замкнутых системах управления управляющий объект по прямому каналу управления производит необходимые действия над объектом управления, а по каналу обратной связи получает информацию о его реальных параметрах (рис. 2.11). Это позволяет осуществлять управление с гораздо большей точностью. Управляющий объект канал управления канал обратной связи Управляемый объект Рис, 2.11. Замкнутая система управления Информационную модель замкнутой системы управления можно наглядно представить с помощью следующей схемы: Примером использования замкнутой системы управления являются жесткие диски. При записи информации на жесткие диски требуется особая точность установки магнитных головок, так как на рабочей поверхности носителя имеются десятки тысяч дорожек и необходимо учитывать механические деформации магнитного носителя (например, в результате изменения температуры). Управляющий объект (Контроллер жесткого диска) постоянно получает информацию о реальном положении управляемого объекта (Магнитных головок) по каналу обратной связи, а по прямому каналу выставляет головки над поверхностью носителя с большой точностью. Контрольные вопросы 1. в чем состоит различие между разомкнутыми и замкнутыми системами управления? Приведите примеры. 2.2. Количество информации как мера уменьшения неопределенности знания 1.3.1. Количество информации как мера уменьшения неопределенности знания Информатика-8 Уменьшение неопределенности знания. Получение информации можно связать с уменьшением неопределенности 106 Глава 2 знания. Это позволяет количественно измерять информацию, что чрезвычайно важно для информатики. Рассмотрим вопрос об определении количества информации более подробно на конкретных примерах. Пусть у нас имеется монета, которую мы бросаем на ровную поверхность. С равной вероятностью произойдет одно из двух возможных событий — монета окажется в одном из двух положений: «орел» или «решка». О Можно говорить, что события равновероятны, если при возрастаюш;ем числе опытов количества выпадений «орла» и «решки» постепенно сближаются. Например, если мы бросим монету 10 раз, то «орел» может выпасть 7 раз, а решка — 3 раза, если бросим монету 100 раз, то «орел» может выпасть 60 раз, а «решка» — 40 раз, если бросим монету 1000 раз, то «орел» выпадет 520 раз, а «решка» — 480 и т. д. В итоге при очень большой серии опытов количества выпадений «орла» и «решки» практически сравняются. Перед броском существует неопределенность нашего знания (возможны два события), и как упадет монета, предсказать невозможно. После броска наступает полная определенность, так как мы видим (получаем зрительное сообщение), что монета в данный момент находится в определенном положении (например, «орел»). Это сообщение приводит к уменьшению неопределенности нашего знания в два раза, так как из двух возможных равновероятных событий реализовалось одно (рис. 2.12). В окружающей действительности достаточно часто встречаются ситуации, когда может произойти некоторое количество Информация. Системы счисления 107 равновероятных событий. Так, при бросании равносторонней четырехгранной пирамиды существуют 4 равновероятных события, а при бросании шестигранного игрального кубика — 6 равновероятных событий. Чем больше количество возможных событий, тем больше начальная неопределенность нашего знания и соответственно тем большее количество информации будет содержать сообщение о результатах опыта. Единицы измерения количества информации. Для количественного выражения любой величины необходимо определить единицу измерения. Так, для измерения длины в качестве единицы выбран метр, для измерения массы — килограмм и т. д. Аналогично, для определения количества информации необходимо ввести единицу измерения. 1.3.2. Определение количества информации Информатика и ИКТ-8 За единицу количества информации принимается такое количество информации, которое содержит сообщение, уменьшающее неопределенность знания в два раза. Такая единица названа бит. Если вернуться к опыту с бросанием монеты, то здесь н-еопределенность как раз уменьшается в два раза (из двух возможных событий реализуется одно) и, следовательно, количество полученной информации равно 1 биту. Минимальной единицей измерения количества информации является бит, а следующей по величине единицей — байт, причем 1 байт = 2^ битов = 8 битов. В информатике система образования кратных единиц измерения количества информации несколько отличается от принятых в большинстве наук. Традиционные метрические системы единиц, например Международная система единиц СИ, в качестве множителей кратных единиц использует коэффициент 10^, где /г = 3, 6, 9 и т. д., что соответствует десятичным приставкам «кило» (10^), «мега» (10®), «гига» (10®) и т. д. Компьютер оперирует числами не в десятичной, а в двоичной системе счисления, поэтому в кратных единицах измерения количества информации используется коэффициент 2^. 108 Глава 2 Так, кратные байту единицы измерения количества информации вводятся следующим образом: 1 Кбайт = 2^® байт = 1024 байт; 1 Мбайт = 210 Кбайт = 1024 Кбайт; 1 Гбайт = 210 Мбайт = 1024 Мбайт. Практическое задание «Перевод единиц измерения количества информации^. Произвести перевод количества информации с помощью специализированной программы перевода единиц измерения (например, VersaVerter). Перевод единиц измерения количества информации 1. Запустить программу VersaVerter (Перевод единиц измерения). 2. В открывшемся диалоговом окне программы выбрать вкладку Data, 3. В левом окне диалогового окна выбрать исходную единицу измерения (например, gigabyte) и в текстовом поле ввести числовое значение (например, 1). После выбора в правом окне конечной единицы измерения (например, byte) в тестовом поле появится числовое значение (в данном случае, 1 073 741 824) (рис. 2.13). а block (Ык) Й kilobit СкЬ) а kilobit (by S) def.) (кЬ(50) a megabit (Mb) Ш megabit (by SI def.) CMb(SI)) Ш gigabit (Gb) Й gigabit (by SI def.) (Gb(SI)) Ш terabit (Tb) В terabit (by Stdef.)CTb(Sl)) ® kilobyte (кВ) Ш kilobyte (by SI def .) (kB(SI)) В megabyte (MB) В megabyte (by SI def .) (MB(SI)) В flljUbyteW В gigabyte (by SI def.) (G0(SI)) В terabyte (TB) В terabyte (by SI def .) (TBCSD) zJ Э Bit(b) В nibble (nb) ® SBEB В double word (dword) В word (w) В block (bik) В kilobit (kb) a kilobit (by SI def .) (kb(SI)) В megabit (Mb) В megabit (by SI def .) (Mb(SI)) В gigabit (Gb) a gigaiMt (toy S! del.) (Gb(S!)) a terabit (Tb) В terabit (by SI def.) (Tb(SI)) iii • kilobyte (кВ) a kilobyte (by SI def.) (kB(Sl)) В megabyte (MB) zJ » |1(?Г3741824 В Рис. 2.13. Перевод единиц измерения количества информации Количество возможных событий и количество информации. Существует формула, которая связывает между собой количество возможных событий N и количество информации I: N = 2^ (2.1) Информация. Системы счисления 109 По этой формуле можно легко определить количество возможных событий, если известно количество информации. Например, если мы получили 4 бита информации, то количество возможных событий составляло дг = 24 = 16. Наоборот, для определения количества информации, если известно количество событий, необходимо решить показательное уравнение относительно I, Задание «Определение количества информации». Определить количество информации, полученной вторым игроком после первого хода первого игрока, в игре «крестики-нолики» на поле размером 8x8 клеток. Перед первым ходом существует 64 возможных события (64 различных вариантов расположения «крестика»), тогда уравнение (2.1) принимает вид: 64 = Так как 64 = 2®, то 26 = 2^. Таким образом, 1 = 6 битов, т. е. количество информации, полученной вторым игроком после первого хода первого игрока, составляет 6 битов. Контрольн]^ вопросы 1. Приведите примеры уменьшения неопределенности знания после получения информации о произошедшем событии. 2. Как зависит количество информаций от количества возможных событий? 2.1. В рулетке общее количество лунок равно 128. Какое количество информации мы получаем в зрительном сообщения об остановке шарика в одной из лунок? Компьюте рактикум WindowS"CD 2.1. С помощью программы перевода единиц измерения выполнить практическое задание «Перевод единиц измерения количества информации». 110 Глава 2 2.2. Заполнить пропуски числами и проверить правильность вычислений с помощью программы перевода единиц измерения: а) 5 Кбайт = _ байт = __ бит; б) Кбайт = байт = 12 288 бит; в) Кбайт = байт = 2*^ бит; г) _Гбайт =1536 Мбайт = __ Кбайт; д) 512 Кбайт = 2_ байт = 2__ бит. 2.3. Алфавитный подход к определению количества информации Определение количества информации на основе уменьшения неопределенности нашего знания рассматривает информацию с точки зрения содержания, ее понятности и новизны для человека. С этой точки зрения в опыте по бросанию монеты одинаковое количество информации содержится и в зрительном образе упавшей монеты, и в коротком сообш;ении «Орел», и в длинной фразе «Монета упала на поверхность земли той стороной вверх, на которой изображен орел». Однако при хранении и передаче информации с помощью технических устройств целесообразно отвлечься от содержания информации и рассматривать ее как последовательность символов — знаков (букв, цифр, кодов цветов точек изображения и т. д.). Набор символов знаковой системы (алфавит) можно рассматривать как различные возможные состояния (события). Тогда, если считать, что появление символов в сообщении равновероятно, по формуле (2.1) можно рассчитать, какое количество информации несет каждый символ. Информационная емкость знаков зависит от их количества в алфавите (мощности алфавита): чем больше их количество, тем большее количество информации несет один знак. Так, информационная емкость буквы в русском алфавите, если не использовать букву «ё», составляет: 32 = 2^, т. е. I = 5 битов. На основании алфавитного подхода можно подсчитать количество информации в сообщении 7^, для этого необходимо умножить количество информации, которое несет один символ 7, на количество символов К в сообщении: 1^ = I X К, (2.2) Информация. Системы счисления 111 Задание «Определение количества информации в тексте». Система оптического распознавания символов позволяет преобразовывать отсканированные изображения страниц документа в текстовый формат со скоростью 4 страницы в минуту и использует алфавит мощностью 65 536 символов. Какое количество информации будет нести текстовый документ, каждая страница которого содержит 40 строк по 50 символов, после 10 минут работы приложения? По формуле (2.1) определим информационную емкость символа алфавита: 65 536 - 2^ => 216 = 2^ - 16 битов. По формуле (2.2) определим количество информации на странице: 16 битов X 40 X 50 ^ 32 000 битов = 4000 байтов. Определим количество информации, которое будет нести текстовый документ: 4000 байтов X 4 X 10 = 160 000 байтов » 156 Кбайт. 3 аСШ' -у .^vS’ м я 2.2. Пользователь компьютера может вводить в минуту 200 знаков. Мощность используемого алфавита равна 256. Какое количество информации может ввести пользователь в компьютер за 5 минут? 2.4. Формула Шеннона Существует множество ситуаций, когда возможные события имеют различные вероятности реализации. Например, если монета несимметрична (одна сторона тяжелее другой), то при ее бросании вероятности выпадения «орла» и «решки» будут различаться. Формулу для вычисления количества информации для событий с различными вероятностями предложил К. Шеннон в 1948 году. В этом случае количество информации определяется по формуле: N (2.3) /=1 где I — количество информации, N — количество возможных событий, Pi — вероятности отдельных событий. 112 Глава 2 Логарифмы Алгебра-11 Для частного, но широко распространенного и рассмотренного выше случая, когда события равновероятны (р- = 1/Л^), величину количества информации I можно рассчитать по формуле; N л л I = -У—logo — - log2 N, (2.4) Задание «Бросание пирамидки». Определить количество информации, которую мы получаем в результате бросания несимметричной и симметричной пирамидок. При бросании несимметричной четырехгранной пирамидки вероятности отдельных событий равны: Pi = 1/2, Р2 == 1/4, Рз ^ 1/8» Ра = 1/8- Количество информации, которую мы получим после бросания несимметричной пирамидки, можно рассчитать по формуле (2.3); / = - (l/2'log2l/2 + l/4*log2l/4 + l/S'loggl/S + l/S-loggl/S) битов -= (l/2*log22 + l/44og24 + l/S-loggS + l/8-log28) битов = = (1/2 + 2/4 н- 3/8 -н 3/8) битов = 14/8 битов = 1,75 бита. При бросании симметричной четырехгранной пирамидки вероятности отдельных событий равны между собой: Р\ = ?2 ^ Рз = Pi ^ 1/4- Количество информации, которую мы получим после бросания симметричной пирамидки, можно рассчитать по формуле (2.4): I = log24 = 2 бита. Таким образом, при бросании симметричной пирамидки, когда события равновероятны, мы получим большее количество информации (2 бита), чем при бросании несимметричной пирамидки, когда события неравновероятны (1,75 бита). о Количество информации, которую мы получаем, достигает максимального значения, если события равновероятны. В теории информации доказано, что максимальное количество информации несет сообщение, в котором вероятности появления всех знаков одинаковы. Информация. Системы счисления 113 Количество информации, которое несет знак, зависит от вероятности его получения. Если получатель заранее точно знает, какой знак придет, то полученное количество информации будет равно 0. Наоборот, чем менее вероятно получение знака, тем больше его информационная емкость. В русской письменной речи частота использования букв в тексте различна, так в среднем на 1000 знаков осмысленного текста приходится 200 букв «а» и в сто раз меньшее количество буквы «ф» (всего 2). Таким образом, с точки зрения теории информации, информационная емкость знаков русского г^лфавита различна (у буквы «а» она наименьшая, а у буквы «ф» — наибольшая). Выбор правильной стратегии в игре «Угадай число». На получении максимального количества информации строится выбор правильной стратегии в игре «Угадай число», в которой первый участник загадывает целое число (например, 3) из заданного интервала (например, от 1 до 16), а второй должен «угадать» задуманное число. Если рассмотреть эту игру с информационной точки зрения, то начальная неопределенность знания для второго участника составляет 16 возможных событий (вариантов загаданных чисел). При правильной стратегии интервал чисел всегда должен делиться пополам, тогда количество возможных событий (чисел) в каждом из полученных интервалов будет одинаково и их отгадывание равновероятно. В этом случае на каждом шаге ответ первого игрока («Да» или «Нет») будет нести максимальное количество информации (1 бит). Как видно из табл. 2.1, угадывание числа 3 произошло за четыре шага, на каждом из которых неопределенность знания второго участника уменьшалась в два раза за счет получения сообщения от первого участника, содержащего 1 бит информации. Таким образом, количество информации, необходимой для отгадывания одного из 16 чисел, составило 4 бита. Таблица 2.1. Информационная модель игры «Угадай число» Вопрос второго участника Ответ первого участника Неопределенность знания(количество возможных событий) Полученное количество информации 16 Число больше 8? Нет 8 1 бит Число больше 4? Нет 4 1 бит Число больше 2? Да 2 1 бит Это число 3? Да 1 1 бит 114 Глава 2 Практическое задание «Определение количества информации». В непрозрачном мешочке хранятся 10 белых, 20 красных, 30 синих и 40 зеленых шариков. Какое количество информации будет содержать зрительное сообщение о цвете вынутого шарика? Так как количество шариков различных цветов неодинаково, то вероятности зрительных сообщений о цвете вынутого из мешочка шарика также различаются и равны количеству шариков данного цвета, деленному на общее количество шариков: Pg = 0,1; = 0,2; = 0,3; р^ - 0,4. События неравновероятны, поэтому для определения количества информации, содержащейся в сообщении о цвете шарика, воспользуемся формулой (2.3): I = -(0,1-1о^2 0,1 + 0,2*log2 0,2 + + 0,3-log2 0,3 + 0,4'log2 0,4) битов. Для вычисления этого выражения, содержащего логариф-мы, воспользуемся компьютерным калькулятором. S.- л Определение количества информации 1. Запустить компьютерный калькулятор Wise Calculator. 2. Ввести выражение и получить результат (рис. 2.14). Таким образом, I ^ 1,85 бита. -(0.1*log(2,0.1)-KD.2*log(2,0.2)+0.3*log(2,0.3)+0,4*log(2,0.4)) Result: 1.846439344671015 Рис. 2.14. Вычисление количества информации Контрольные вопросы 1. в каком случае количество информации, полученной о событии, достигает максимального значения? 3 а и и я 2.3. Какое количество вопросов достаточно задать вашему собеседнику, чтобы наверняка определить: Информация. Системы счисления 115 • день недели, в котором он родился; • месяц, в котором он родился; • число, в которое он родился? Компьюте н рактикум Windows-CD 2.3. Выполнить практическое задание «Определение количества информации» для следующих данных: ' а) 25 белых, 25 красных, 25 синих и 25 зеленых шариков; б) 30 белых, 30 красных, 30 синих и 10 зеленых шариков. 2.5. Кодирование текстовой, графической и звуковой информации Двоичное кодирование текстовой информации в компьютере Для представления текстовой информации (прописные и строчные буквы русского и латинского алфавитов, цифры, знаки и математические символы) достаточно 256 различных знаков. По формуле (2.1) можно вычислить, какое количество информации необходимо, чтобы закодировать каждый знак: АГ - 2^ ^ 256 - 2^ ^ 2^ = 2^ / = 8 битов. Для обработки текстовой информации на компьютере необходимо представить ее в двоичной знаковой системе. Каждому знаку необходимо поставить в соответствие уникальный 8-бито-вый двоичный код, значения которого находятся в интервале от 00000000 до 11111111 (в десятичном коде от 0 до 255). Присвоение знаку конкретного двоичного кода — это вопрос соглашения, которое фиксируется в кодовой таблице. К сожалению, в настоящее время существуют пять различных кодовых таблиц для русских букв {Windows, MS-DOS, КОИ-8, Mac, ISO), поэтому тексты, созданные в одной кодировке, не будут правильно отображаться в другой. В последние годы широкое распространение получил новый международный стандарт кодирования текстовых символов Unicode, который отводит на каждый символ 2 байта (16 битов). По формуле (2.1) можно определить количество символов, которые можно закодировать: дг = 2^ = 216 = 65 536. 116 Глава 2 Такого количества символов оказалось достаточно, чтобы закодировать не только русский и латинский алфавиты, цифры, знаки и математические символы, но и греческий, арабский, иврит и другие алфавиты. Двоичное кодирование графической информации в компьютере Графические изображения из аналоговой (непрерывной) формы в цифровую (дискретную) преобразуются путем пространственной дискретизации. Изображение разбивается на отдельные маленькие фрагменты (точки, или пиксели), причем каждый элемент может иметь свой цвет (красный, зеленый, синий и т. д.). Пиксель — минимальный участок изображения, которому независимым образом можно задать цвет. В результате пространственной дискретизации графическая информация представляется в виде растрового изображения, которое формируется из определенного количества строк, которые, в свою очередь, содержат определенное количество точек. Важнейшей характеристикой качества растрового изображения является разрешаюш;ая способность. Разрешающая способность растрового изображения определяется количеством точек по горизонтали и вертикали на единицу длины изображения. При одних и тех же размерах экрана чем меньше размер точки, тем больше разрешаюш;ая способность (больше количество строк растра и точек в строке), и, соответственно, выше качество изображения. Величина разрешаюш;ей способности обычно выражается в dpi (dot per inch — точек на дюйм), т. е. в количестве точек в полоске изображения длиной один дюйм (1 дюйм = 2,54 см). В процессе дискретизации могут использоваться различные палитры цветов, т. е. наборы цветов, которые могут принимать точки изображения. Каждый цвет можно рассматривать как возможное состояние точки. Количество цветов N в палитре и количество информации /, необходимое для кодирования цвета каждой точки, связаны между собой и могут быть вычислены по формуле (2.1). Информация. Системы счисления 117 Количество информации, которое используется при кодировании цвета точек изображения, называется глубиной цвета. Наиболее распространенными значениями глубины цвета при кодировании цветных изображений являются 4, 8, 16 или 24 бита на точку. Можно определить количество цветов в 24-битовой палитре: АГ = 2^ = 224 = IQ rjrjrj 216, Двоичное кодирование звуковой информации в компьютере Звук представляет собой распространяющуюся в воздухе, воде или другой среде волну с непрерывно меняющейся интенсивностью и частотой. Человек воспринимает звуковые волны (колебания воздуха) с помощью слуха в форме звуков различной громкости и тона, чем больше интенсивность звуковой волны, тем громче звук, чем больше частота волны, тем выше тон звука. Для того чтобы компьютер мог обрабатывать реальный (записанный) звук, непрерывный звуковой сигнал должен быть преобразован в цифровую дискретную форму с помощью временной дискретизации. Непрерывная звуковая волна разбивается на отдельные маленькие временные участки, причем для каждого такого участка устанавливается определенная величина интенсивности звука. Для записи аналогового звука и его преобразования в цифровую форму используется микрофон, подключенный к звуковой плате. Качество полученного цифрового звука зависит от количества измерений уровня громкости звука в единицу времени, т. е. частоты дискретизации. Чем большее количество измерений производится за 1 секунду (чем больше частота дискретизации), тем точнее «лесенка» цифрового звукового сигнала повторяет кривую аналогового сигнала. Частота дискретизации звука — это количество измерений громкости звука за одну секунду. Частота дискретизации звука может лежать в диапазоне от 8000 до 48 000 измерений громкости звука за одну секунду. Каждому уровню дискретизации присваивается определенное значение уровня громкости звука. Уровни громкости 118 Глава 2 звука можно рассматривать как набор возможных состояний N, для кодирования которых необходимо определенное количество информации 7, которое называется глубиной кодирования звука. Глубина кодирования звука — это количество информации, которое необходимо для кодирования дискретных уровней громкости цифрового звука. Если известна глубина кодирования, то количество уровней громкости цифрового звука можно рассчитать по формуле (2,1). Пусть глубина кодирования звука составляет 16 битов, тогда количество уровней громкости звука равно дг = 2^ = 216 - 65 536. Чем больше частота дискретизации и глубина кодирования звука, тем более качественным будет звучание оцифрованного звука. Самое низкое качество оцифрованного звука, соответствующее качеству телефонной связи, будет при частоте дискретизации 8000 раз в секунду, глубине кодирования 8 битов и записи одной звуковой дорожки (режим моно). Высокое качество оцифрованного звука, соответствующее качеству аудио-CD, обеспечивается при частоте дискретизации 48 000 раз в секунду, глубине кодирования 16 битов и записи двух звуковых дорожек (режим стерео). Контрольные вопросы 1. Чем различаются между собой кодировки русского алфавита? 2. Объясните, как разрешение и глубина цвета влияют на качество изображения. 3. Объясните, как частота дискретизации и глубина кодирования влияют на качество цифрового звука. 2.4. Представьте в форме десятичного кода слово «бит» в кодировках Windows, MS-DOS, КОИ-8, Mac, ISO. Воспользуйтесь Win-dows-CD для получения кодировочных таблиц. 2.5. Сканируется цветное изображение стандартного размера А4 (21x29,7 см). Разрешающая способность сканера 1200 dpi, глубина цвета 24 бита. Какой информационный объем будет иметь полученный графический файл? Информация. Системы счисления 119 2.6. Определить длительность звукового файла, который уместится на гибкой дискете 3,5" (для хранения данных на дискете выделяется 2847 секторов объемом 512 байтов каждый): • при низком качестве звука: моно, 8 битов, 8 кГц; • при высоком качестве звука: стерео, 16 битов, 48 кГц. 2.6. Хранение информации Информация, закодированная с помощью естественных и формальных языков, а также информация в форме зрительных и звуковых образов хранится в памяти человека. Однако для долговременного хранения информации, ее накопления и передачи из поколения в поколение используются носители информации. Материальная природа носителей информации может быть различной: молекулы ДНК, которые хранят генетическую информацию; бумага, на которой хранятся тексты и изображения; магнитная лента, на которой хранится звуковая информация; фото- и кинопленки, на которых хранится графическая информация; микросхемы памяти, магнитные и оптические диски, на которых хранятся программы и данные в компьютере, и т. д. По оценкам специалистов, объем информации, фиксируемой на различных носителях, превышает один эксабайт в год (10^® байт/год). Примерно 80% всей этой информации хранится в цифровой форме на магнитных и оптических носителях и только 20% — на аналоговых носителях (бумага, магнитные ленты, фото- и кинопленки). Если всю записанную в 2005 году информацию распределить на всех жителей планеты, то на каждого человека придется по 300 Мбайт. Информационная емкость носителей информации. Носители информации характеризуются информационной емкостью, т. е. количеством информации, которое они могут хранить. Наиболее информационно емкими являются молекулы ДНК, которые имеют очень малый размер и плотно упакованы. Это позволяет хранить огромное количество информации (до lO^i бит в 1 см^), что дает возможность организму развиваться из одной-единственной клетки, содержащей всю необходимую генетическую информацию. Современные микросхемы памяти позволяют хранить в 1 см^ до 10^® битов информации, однако это в 100 миллиардов раз меньше, чем в ДНК. Можно сказать, что современные технологии пока существенно проигрывают биологической эволюции. 120 Глава 2 Однако если сравнивать информационную емкость традиционных носителей информации (книг) и современных компьютерных носителей, то прогресс очевиден. На каждом гибком магнитном диске может храниться книга объемом около 600 страниц, а на жестком магнитном диске или DVD — целая библиотека, включающая десятки тысяч книг. Надежность и долговременность хранения информации. Большое значение имеет надежность и долговременность хранения информации. Большую устойчивость к возможным повреждениям имеют молекулы ДНК, так как существует механизм обнаружения повреждений ее структуры (мутаций) и самовосстановления. Надежность (устойчивость к повреждениям) достаточно высока у аналоговых носителей, повреждение которых приводит к потери информации только на поврежденном участке. Поврежденная часть фотографии не лишает возможности видеть оставшуюся часть, повреждение участка магнитной ленты приводит лишь к временному пропаданию звука и т. д. Цифровые носители гораздо более чувствительны к повреждениям, даже утеря одного бита данных на магнитном или оптическом дисках может привести к невозможности считать файл, т. е. к потере большого объема данных. Именно поэтому необходимо соблюдать правила эксплуатации и хранения цифровых носителей информации. Наиболее долговременным носителем информации является молекула ДНК, которая в течение десятков тысяч лет (человек) и миллионов лет (некоторые живые организмы) сохраняет генетическую информацию данного вида. Аналоговые носители способны сохранять информацию в течение тысяч лет (египетские иатш^усы и шумерские глиняные таблички), сотен лет (бумага) и десятков лет (магнитная лента, фото- и кинопленка). Цифровые носители появились сравнительно недавно, и поэтому об их долговременности можно судить только по оценкам специалистов. По экспертным оценкам, при правильном хранении оптические носители способны хранить информацию сотни лет, а магнитные — десятки лет. Контрольна вопросы 1. Какие достоинства и недостатки имеют аналоговые и цифровые носители информации? Информация. Системы счисления 121 2.7. Кодирование числовой информации. Системы счисления «Всё есть ЧИСЛО», — говорили древнегреческие философы, ученики Пифагора, подчеркивая необычайно важную роль чисел в практической деятельности. Известно множество способов представления чисел. Числа записываются с использованием особых знаковых систем, которые называются системами счисления. Алфавит систем счисления состоит из символов, которые называются цифрами. Система счисления — это знаковая система, в которой числа записываются по определенным правилам с помощью символов некоторого алфавита, называемых цифрами. Все системы счисления делятся на две большие группы: непозиционные и позиционные. 2.7.1. Непозиционные системы счисления в непозицйонных системах счисления количественный эквивалент каждой цифры не зависит от ее положения (места, позиции) в записи числа. Единичная система счисления. Как только люди начали считать, у них появилась потребность в записи чисел. Находки археологов на стоянках первобытных людей свидетельствуют о том, что первоначально количество предметов отображали равным количеством каких-либо значков (бирок): зарубок, черточек, точек. Позже, для облегчения счета, эти значки стали группировать по три или по пять. Такая система записи чисел называется единичной (унарной), так как любое число в ней образуется путем повторения одного знака, символизирующего единицу. Отголоски единичной системы счисления встречаются и сегодня. Так, чтобы узнать, на каком курсе учится курсант военного училища, нужно сосчитать, какое количество полосок нашито на его рукаве. Древнеегипетская непозиционная система счисления. Примерно в третьем тысячелетии до нашей эры древние египтяне придумали свою числовую систему, в которой для 122 Глава 2 ! J . единицы П ' - десятки f - сотни _L тысячи Рис. 2.15. Алфавит древнеегипетской системы счисления обозначения ключевых чисел 1, 10, 100 и т. д. использовались специальные значки — иероглифы (рис. 2,15). Все остальные числа составлялись из этих ключевых при помощи операции сложения. Система счисления Древнего Египта является десятичной, но непозиционной. Например, чтобы изобразить число 3252, рисовали три цветка лотоса (три тысячи), два свернутых пальмовых листа (две сотни), пять дуг (пять десятков) и два шеста (две единицы). Величина числа не зависела от того, в каком порядке располагались составляющие его знаки: их можно было записывать сверху вниз, справа налево или в произвольном порядке. Римская система счисления. Примером непозиционной системы, которая сохранилась до наших дней, может служить система счисления, которая применялась более двух с половиной тысяч лет назад в Древнем Риме. В основе римской системы счисления лежали знаки I (один палец) для числа 1, V (раскрытая ладонь) для числа 5, X (две сложенные ладони) для 10, а для обозначения чисел 100, 500 и 1000 стали применять первые буквы соответствующих латинских слов (Centum — сто, Demimille — половина тысячи, Mille — тысяча). Чтобы записать число, римляне разлагали его на сумму тысяч, полутысяч, сотен, полусотен, десятков, пятков, единиц. Например, десятичное число 28 представляется следующим образом: XXVIII -10+10 + 5 + 1 + 1 + 1 (два десятка, пяток, три единицы). Для записи чисел римляне использовали не только сложение, но и вычитание. При этом применялось следующее правило: каждый меньший знак, поставленный справа от большего, прибавляется к его значению, а каждый меньший знак, поставленный слева от большего, вычитается из него. Например, IX — обозначает 9, XI — обозначает 11. Десятичное число 99 имеет следующее представление: XCIX - -10 + 100 - 1 + 10. Практическое задание «Римская система счисления». Перевести числа из римской системы счисления в десятичную и из десятичной в римскую с использованием компьютерного калькулятора NumLock Calculator. Информация. Системы счисления 123 Римская система счисления 1. Запустить компьютерный калькулятор NumLock Calculator. 2. Установить минималистский вид калькулятора командой [Вид калькулятора-Универсальныи\. 3. Установить формат исходных данных командой [Формат чисел в выражении-Римский] и формат результата командой [Формат результата-Десятичный'], 4. В окне ввода данных ввести римское число, например XXVIII, и нажать клавишу со знаком «-». Появится результат, число 28, записанное в десятичной системе счисления (рис. 2.16). jJ ЫитЬ0ск Caicala0r jXXVIll = 28 V Ш SJffiJ ,:1Щ] , J, Рис. 2.16. Перевод из римской в десятичную систему счисления 5. Установить формат исходных данных командой [Формат чисел в выраженииДесятичный] и формат результата командой [Формат результата-Римский], 6. В окне ввода данных ввести десятичное число, например 99, и нажать клавишу со знаком « = ». Появится результат, число XCIX, записанное в римской системе счисления (рис. 2.17). [99-XCIX V. Рис. 2.17. Перевод из десятичной в римскую систему счисления Римскими цифрами пользовались очень долго. Еще 200 лет назад в деловых бумагах числа должны были обозначаться римскими цифрами (считалось, что обычные арабские цифры легко подделать). Римская система счисления сегодня используется в основном для наименования знаменательных дат, томов, разделов и глав в книгах. Алфавитные системы счисления. Более совершенными непозиционными системами счисления были алфавитные сис- 124 Глава 2 темы. К числу таких систем счисления относились греческая, славянская, финикийская и другие. В них числа от 1 до 9, десятки (от 10 до 90) и сотни (от 100 до 900) обозначались буквами алфавита. В алфавитной системе счисления Древней Греции числа 1, 2, ...» 9 обозначались первыми девятью буквами греческого алфавита, например а = 1, р = 2, у = 3 и т. д. Для обозначения чисел 10, 20, ..., 90 применялись следующие 9 букв (i = 10, к = 20, X = 30, ц = 4 и т. д.), а для обозначения чисел 100, 200, ..., 900 — последние 9 букв (р = 100, а = 200, х = 300 и т. д.). Например, число 141 обозначалось рра. У славянских народов числовые значения букв установились в порядке славянского алфавита, который использовал сначала глаголицу, а затем кириллицу (рис. 2.18). Буквы кириллицы Цифровое значение кириллицы Буквы глаголицы Цифровое значение глаголицы Кириллическое название д 1 + 1 Аэъ к Р 2 Буки Е 2 V 3 В^и г 3 Зо 4 Глаголь А 4 л 5 Добро f 5 э 6 Беть Ж л 7 Живете S в ♦ 8 3%яо 7 0" 9 Земля н 8 т 10 Иже 1 10 б 20 I Рис. 2.18. Древнерусская алфавитная система счисления В России славянская нумерация сохранилась до конца XVII века. При Петре I возобладала так называемая арабская нумерация, которой мы пользуемся и сейчас. Славянская нумерация сохранилась только в богослужебных книгах. Непозиционные системы счисления имеют ряд существенных недостатков: 1. Существует постоянная потребность введения новых знаков для записи больших чисел. Информация. Системы счисления 125 2. Невозможно представлять дробные и отрицательные числа. 3. Сложно выполнять арифметические операции, так как не существует алгоритмов их выполнения. Контрольные вопросы 1. Существуют ли алгоритмы проведения арифметических действий в непозиционных системах счисления? 3 а д а йг й я 2.7. Некоторые римские цифры легко изобразить, используя палочки или спички. Ниже написано несколько неверных равенств. Как можно получить из них верные равенства, если разрешается переложить с одного места на другое только одну спичку (палочку)? VII - V = XI VI - IX = III IX - V = VI VIII - III = X Компьютещиый практикум Windows-CD 2.4. С помощью компьютерного калькулятора (например, NumLock Calculator) выполнить практическое задание «Римская система счисления». 2.7.2. Позиционные системы счисления в позиционных системах счисления количественный эквивалент (значение) цифры зависит от ее места (позиции) в записи числа- Позиция цифры в числе называется разрядом. Разряд числа возрастает справа налево, от младших разрядов к старшим. Основанием позиционной системы счисления называется целое число, которое равно количеству цифр, используемых для изображения чисел в данной системе счисления. Основание показывает, во сколько раз изменяется количественное значение цифры при перемещении ее в младший или старший разряд. 126 Глава 2 Позиционные системы с произвольным основанием. Возможно использование множества позиционных систем счисления, основание которых равно или больше 2. В системах счисления с основанием q (^-ичная система счисления) числа в развернутой форме записываются в виде суммы ряда степеней основания q с коэффициентами, в качестве которых выступают цифры О, 1, ^-1. Для записи дробей используются разряды с отрицательными значениями степеней основания. В развернутой форме число в системе счисления с основанием q (^-ичная система счисления) записывается следуюш;им образом: = а^-1 -сГ ^ + «„-2'(f ^+-+ +•••+ (2.5) или п-1 (2.6) Здесь: - q — ЧИСЛО в QT-ичнои системе счисления, основание системы счисления. а. —цифры, принадлежащие алфавиту данной системы счисления, п — число целых разрядов числа, т — число дробных разрядов числа. Коэффициенты а. в этой записи являются цифрами числа, записанного в д-ичной системе счисления. Свернутой формой записи числа называется запись в виде: ,ajao,a_j...a^^. (2.7) Свернутой формой записи чисел мы и пользуемся в повседневной жизни, ее называют естественной или цифровой. Десятичная система счисления Основание: q = 10. Алфавит: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Число в десятичной системе счисления записывается в виде суммы числового ряда степеней основания (в данном случае 10), в качестве коэффициентов которых выступают цифры данного числа. В развернутой форме запись числа A^q, которое содержит п целых разрядов числа и т дробных разрядов числа, производится следующим образом: ^10 'л-1 + 10^-1 + а_г10 -1 4- 10^-2 + ,. + а „ 10 ао‘100 (2.8) Информация. Системы счисления 127 Коэффициенты а. в этой записи являются цифрами десятичного числа, которое в свернутой форме записывается следующим образом: •10 (2.9) Например, десятичное число 555,55^0 в развернутой форме будет записываться следующим образом: 555,55ю = 5-102 + 5.101 + 5.190 + 5.Ю-1 + 5*10-2. Умножение или деление десятичного числа на 10 (величину основания) приводит к перемещению запятой, отделяющей целую часть от дробной на один разряд вправо или влево. Например: 555,55ю • 10 = 5555,5^; 555,55ю : 10 = 55,555io. Двоичная система счисления Основание: q = 2. Алфавит: 0, 1. Число в двоичной системе счисления записывается в виде суммы числового ряда степеней основания (в данном случае 2), в качестве коэффициентов которых выступают цифры данного числа. В развернутой форме запись числа А2, которое содержит п целых разрядов числа и т дробных разрядов числа, производится следующим образом: ^2 = + а„_2-2-2 + ... + + (2.Ю) + а_1-2-1 + ... + а_„-2--. Коэффициенты в этой записи являются цифрами двоичного числа (0 или 1), которое в свернутой форме записывается следующим образом: ^2 = (2.11) Умножение или деление двоичного числа на 2 (величину основания) приводит к перемещению запятой, отделяющей целую часть от дробной на один разряд вправо или влево. Например: 101,012 ■ 2 = 1010,12; 101,01, 10,101.. Восьмеричная система счисления Основание: 7 = 8. Алфавит: 0, 1, 2, 3, 4, 5, 6, 7. Число в восьмеричной системе счисления записывается в виде суммы числового ряда степеней основания (в данном 128 Глава 2 случае 8), в качестве коэффициентов которых выступают цифры данного числа. В развернутой форме запись числа Ag, которое содержит п целых разрядов числа и т дробных разрядов числа, производится следующим образом: (2Л2) + • + ^0*8® + ^8 = + + ... + Коэффициенты а- в этой записи являются цифрами восьмеричного числа, которое в свернутой форме записывается следующим образом: л = (2-13) Умножение или деление восьмеричного числа на 8 (величину основания) приводит к перемещению запятой, отделяющей целую часть от дробной на один разряд вправо или влево. Например: 567,12g • 8 = 5671,2g; 567,12g : 8 - 56,712g. Шестнадцатеричная система счисления Основание: q = 16. Алфавит: О, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F. Здесь только десять цифр из шестнадцати имеют общепринятое обозначение О, 1, ..., 9. Для записи остальных цифр (10, 11, 12, 13, 14 и 15) обычно используются первые шесть букв латинского алфавита. Число в шестнадцатеричной системе счисления записывается в виде суммы числового ряда степеней основания (в данном случае 16), в качестве коэффициентов которых выступают цифры данного числа. В развернутой форме запись числа A^q, которое содержит п целых разрядов числа и т дробных разрядов числа, производится следующим образом: А^б = + а„_2*16«-2 + ... + а0*1бо -h (2.14) а_^*16 ^ + Коэффициенты а- в этой записи являются цифрами восьмеричного числа, которое в свернутой форме записывается следующим образом: Аб = (2.15) Умножение или деление шестнадцатеричного числа на 16 (величину основания) приводит к перемещению запятой, отделяющей целую часть от дробной на один разряд вправо или влево. Например: Йнформация. Системы счисления 129 ABC,DEig * 16 = ABCD,Eig; ABC,DEjg : 16 = AB,CDE^g. Контрольные вопросы 1. Чем отличаются позиционные системы счисления от непозиционных? 2. Какое количество цифр используется в д-ичной системе счисления? 3 д я 2.8. Во сколько раз увеличатся числа 10,1,^,, 10,1^, 64,5^,, 39,F^g при переносе запятой на один знак вправо? 2.9. При переносе запятой на два знака вправо число 11,11,. увеличилось в 4 раза. Чему равен х1 2.8. Перевод чисел из одной системы счисления в другую 2.8.1. Перевод целых чисел из десятичной системы в двоичную, восьмеричную и шестнадцатеричную Перевод чисел из десятичной системы в двоичную, восьмеричную и шестнадцатеричную может осуш;ествляться различными способами. Рассмотрим один из алгоритмов перевода на примере перевода чисел из десятичной системы в двоичную, при этом необходимо учитывать, что алгоритмы перевода целых чисел и правильных дробей будут различаться. Вывод алгоритма перевода целых десятичных чисел в двоичную систему счисления Пусть — целое десятичное число, разложим его в ряд по основанию 2. Получим запись в развернутой форме двоичного целого числа, так как в этой записи будут отсутствовать отрицательные степени основания, т. е. числа 2: ^цд = ... + ai-21 + ао-20. 130 Глава 2 На первом шаге разделим число на основание двоичной системы, т. е. на 2. Частное от деления будет равно: а„_1-2"-2 + а„_2'2"-з + а 1> а остаток равен Aq. На втором шаге целое частное опять разделим на 2, остаток от деления будет теперь равен а^. Если продолжать этот процесс деления, то после л-го шага получим последовательность остатков: ^0’ ^1’ а п-1* Легко заметить, что их последовательность совпадает с обратной последовательностью цифр целого двоичного числа, записанного в свернутой форме: •ЦД а п~1 Таким образом, достаточно записать остатки в обратной последовательности, чтобы получить искомое двоичное число. Аналогичные рассуждения могут быть проведены и для перевода целых десятичных чисел в восьмеричную и шестнадцатеричную системы счисления. Алгоритм перевода целых десятичных чисел в двоичную, восьмеричную и шестнадцатеричную системы счисления. Алгоритм перевода целого десятичного числа в целое двоичное, восьмеричное или шестнадцатеричное число будет следующим: 1. Последовательно выполнять деление исходного целого десятичного числа и получаемых целых частных на основание системы (на 2, 8 или 16) до тех пор, пока не получим частное, равное нулю. 2. Получить искомое двоичное, восьмеричное или шестнадцатеричное число, для чего записать полученные остатки в обратной последовательности. Практическое задание «Перевод целого десятичного числа в целое двоичное, восьмеричное и шестнадцатеричное чис-ла>>. Осуществить перевод десятичного числа (например, числа 19^о) в двоичную, восьмеричную и шестнадцатеричную системы счисления с помощью алгоритма перевода и с помощью компьютерного калькулятора NurnLock Calculator. Информация. Системы счисления 131 У’ Перевод целого десятичного числа в целые двоичное, восьмеричное и шестнадцатеричное числа Применить алгоритм перевода целого десятичного числа в целое двоичное и записать результаты в таблицу. Десятичное число/целое частное Делитель (основание системы) Остаток Цифры двоичного числа 19 2 1 ^0 i к 9 2 1 4 2 0 «2 2 2 0 ^3 1 2 1 ^4 0 В результате получаем двоичное число: А2 = ^ IOOII2. Применить алгоритм перевода целого десятичного числа в целое восьмеричное и записать результаты в таблицу. Десятичное число/целое частное Делитель (основание системы) Остаток Цифры восьмеричного числа 19 8 3 “о 1 2 8 2 а, 0 В результате получаем восьмеричное число: Ag = ^1^0 “ ^^8- Применить алгоритм перевода целого десятичного числа в целое шестнадцатеричное и записать результаты в таблицу. Десятичное Делитель Цифры число/целое (основание Остаток шестнадцатеричного частное системы) числа 19 16 3 «0 А 1 16 1 \ 0 В результате получаем шестнадцатеричное число; 16 ^1^0 ^^16' 132 Глава 2 Перевод целого десятичного числа в целые двоичное, восьмеричное и шестнадцатеричное числа 1. Запустить компьютерный калькулятор NumLock Calculator. 2. Установить минималистский вид калькулятора командой [Вид калькулятора-УниверсальныЩ, 3. Установить формат исходных данных командой [Формат чисел в выражении-Десятичный] и формат результата командой [Формат результата-Двоичный], 4. В окне ввода данных ввести десятичное число^ например 19, и нажать клавишу со знаком «=», Появится результат— двоичное число 10011 (рис. 2.19). JVwnLocUCaicislaiar |l 9^ 10011 iJ*} Рис. 2.19. Перевод из десятичной системы счисления в двоичную 5. Установить формат исходных данных командой [Формат чисел в выражении Десятичный] и формат результата командой [Формат результата-Восъмеричный]. 6. В окне ввода данных ввести десятичное число, например 19, и нажать клавишу со знаком «=». Появится результат — восьмеричное число 23 (рис. 2.20). jJ NmmLock СЫешЫог j19 = 23 Рис. 2.20. Перевод из десятичной системы счисления в восьмеричную 7, Установить формат исходных данных командой [Форл1агп чисел в выражении-Десятичный] и формат результата командой [Формат результата-Шестнадцатеричный]. 8. В окне ввода данных ввести десятичное число, например 19, и нажать клавишу со знаком «=». Появится результат — шестнадцатеричное число 13 (рис. 2.21). Информация. Системы счисления 133 _zl NumLock CdUsiiaior |19 = 13 Dec I Deg | Неж | _ ^_j Рис. 2.21. Перевод из десятичной системы счисления в шестнадцатеричную Контрольные вопросы 1. Сформулируйте алгоритм перевода целых десятичных чисел в двоичную, восьмеричную и шестнадцатеричную системы счисления. 3 ас й 4 я 2.10. Заполните таблицу, в каждой строке которой одно и то же целое число должно быть записано в различных системах счисления: Двоичная Восьмеричная Десятичная Шестнадцатеричная 101010 127 269 9В Компьютепныи практикум Windows-CD 2.5. Выполнить практическое задание «Перевод целого десятичного числа в целые двоичное, восьмеричное и шестнадцатеричное числа» (для нескольких чисел). 2.8.2. Перевод дробей из десятичной системы в двоичную, восьмеричную и шестнадцатеричную Вывод алгоритма перевода десятичных дробей в двоичную систему счисления Пусть — десятичная дробь, разложим ее в ряд по основанию 2. Получим запись в развернутой форме двоичной 134 Глава 2 дроби, так как в этой записи будут отсутствовать положительные степени основания, т. е. числа 2: = а_1*2“1 + а_2*2“2 + ... На первом шаге умножим число на основание двоичной системы, т. е. на 2. Произведение будет равно: а '-1 а_2*2 ^ Целая часть равна а_^, именно это число и является значением первого дробного разряда двоичного числа. На втором шаге оставшуюся дробную часть опять умножим на 2, получим целую часть, равную а_2» именно это число и является значением второго дробного разряда двоичного числа. Описанный процесс необходимо продолжать до тех пор, пока в результате умножения мы не получим нулевую дробную часть или не будет достигнута требуемая точность вычислений. Легко заметить, что последовательность полученных чисел совпадает с последовательностью цифр дробного двоичного числа, записанного в свернутой форме: Лд = «-1«-2 - Аналогичные рассуждения могут быть проведены и для перевода дробных десятичных чисел в восьмеричную и шестнадцатеричную системы счисления. Алгоритм перевода дробных десятичных чисел в двоичную, восьмеричную и шестнадцатеричную системы счисления. Алгоритм перевода десятичной дроби в двоичную, восьмеричную или шестнадцатеричную дробь будет следуюш;им: 1. Последовательно выполнять умножение исходной десятичной дроби и получаемых дробей на основание системы счисления (на 2, 8 или 16) до тех пор, пока не получим нулевую дробную часть или не будет достигнута требуемая точность вычислений. 2. Получить искомую двоичную, восьмеричную или шестнадцатеричную дробь, записав полученные целые части произведения в прямой последовательности. Задание «Перевод десятичной дроби в двоичную, восьмеричную и шестнадцатеричную дроби». Осуш;ествить перевод десятичной дроби (например, числа 0,65625^q) в двоичную, восьмеричную и шестнадцатеричную системы счисления с помощью алгоритма перевода. Информация. Системы счисления 135 Перевод десятичной дроби в двоичную, восьмеричную и шестнадцатеричную дроби Применить алгоритм перевода дробного десятичного числа в дробное двоичное и записать результаты в таблицу. Десятичная дробь/ дробная часть произведения Множитель (основание системы) Целая часть произведения Цифры двоичной дроби 0,65625 2 1 : 0.3125 2 0 а_2 0,625 2 1 а-з 0,25 2 0 а-4 0,5 2 1 а-5 Т 0,0 В результате получаем двоичную дробь: Аз = 0,а_^а_2а = 0,101012- Применить алгоритм перевода дробного десятичного числа в дробное восьмеричное и записать результаты в таблицу. Десятичная дробь/ дробная часть произведения Множитель (основание системы) Целая часть произведения Цифры восьмеричной дроби 0,65625 8 5 а-1 0,25 8 2 3-2 Т 0,0 В результате получаем восьмеричную дробь: Ag = 0,а_^а_2 = 0,52g. Применить алгоритм перевода дробного десятичного числа в дробное шестнадцатеричное и записать результаты в таблицу. Десятичная дробь/ Множитель Целая часть Цифры шест- дробная часть (основание произ- надцатерич- произведения системы) ведения ной дроби 0,65625 16 10(A) 3-1 0,5 16 8 а_2 Т 0,0 136 Глава 2 В результате получаем шестнадцатеричную дробь; Перевод чисел, содержащих и целую, и дробную части, производится в два этапа. Отдельно переводится по соответствующему алгоритму целая часть и отдельно — дробная. В итоговой записи полученного числа целая часть от дробной отделяется запятой. Контрольные вопросы 1. Сформулируйте алгоритм перевода целых десятичных чисел в двоичную, восьмеричную и шестнадцатеричную системы счисления. 3 я 2.11. Выполнить задание «Перевод десятичной дроби в двоичную, восьмеричную и шестнадцатеричную дроби» (для нескольких дробей). 2.12. Заполнить таблицу, в каждой строке которой одно и то же дробное число должно быть записано в различных системах счисления: Двоичная Восьмеричная Десятичная Шестнадцатеричная 0,101 0,6 0,125 0,4 2.8.3. Перевод чисел из двоичной системы в восьмеричную и шестнадцатеричную и обратно Перевод чисел между системами счисления, основания которых являются степенями числа 2 = 2^), может произво- диться по более простым алгоритмам. Такие алгоритмы могут применяться для перевода чисел между двоичной (q = 2^), восьмеричной {д = 2^) и шестнадцатеричной {д = 2^) системами счисления. Перевод чисел из двоичной системы счисления в восьмеричную Для записи двоичных чисел используются две цифры, е. в каждом разряде числа возможны два варианта записи. Информация. Системы счисления 137 Для определения количества информации, которое содержит один двоичный разряд, воспользуемся формулой (2.2). Решаем показательное уравнение: 2 == 2^, так как 2 = 2^ то / = 1 бит. Каждый разряд двоичного числа содержит 1 бит. Для записи восьмеричных чисел используются восемь цифр, т. е. в каждом разряде числа возможны восемь вариантов записи. Решаем показательное уравнение: 8 = 2^, так как 8 = 2^, то / = 3 бита. Каждый разряд восьмеричного числа содержит 3 бита. Таким образом, для перевода двоичного числа в восьмеричное двоичное число нужно разбить на группы по три цифры. Для упрогцения перевода можно заранее подготовить таблицу преобразования двоичных триад (групп по 3 цифры) в восьмеричные цифры (табл. 2.1). Таблица 2.2. Двоичные триады Двоичные триады 000 001 010 110 100 101 110 111 Шестнадцатеричные цифры 0 1 2 3 4 5 6 7 Перевод целых чисел. Для перевода целого двоичного числа в восьмеричное двоичное число нужно разбить на группы по три цифры, справа налево; если в последней левой группе окажется меньше чем три разряда, то необходимо ее дополнить слева нулями. Затем надо преобразовать каждую группу в восьмеричную цифру. Переведем таким способом двоичное число lOlOOlg в восьмеричное число. Получаем: 101 OOlg = 5ig. Перевод дробей. Для перевода дробного двоичного числа в восьмеричное необходимо разбР1ть двоичное число на триады слева направо; если в последней правой группе окажется меньше разрядов, надо дополнить ее справа нулями. Далее следует триады заменить на восьмеричные числа. Например, преобразуем дробное двоичное число = OjllOlOlgB восьмеричную систему счисления. Получаем: 0,1101012 = 0,35g. Например, преобразуем дробное двоичное число ^2 ^ 0,1101012 В восьмеричную систему счисления. Получаем: 0,1101012 = 0,35g. 138 Глава 2 Перевод чисел из двоичной системы счисления в шестнадцатеричную Для записи шестнадцатеричных чисел используются шестнадцать цифр, т, е. в каждом разряде числа возможны шестнадцать вариантов записи. Решаем показательное уравнение: 16 = 2^, так как 16 = 2^, то / = 4 бита. Каждый разряд шестнадцатеричного числа содержит 4 бита. Таким образом, для перевода двоичного числа в шестнадцатеричное двоичное число нужно разбить на группы по четыре цифры. Для упрогцения перевода можно заранее подготовить таблицу преобразования двоичных тетрад (групп по 4 цифры) в шестнадцатеричные цифры (табл. 2.3). Таблица 2.3. Двоичные тетрады Двоичные тетрады 0000 0001 0010 0110 0100 0101 0110 0111 Шестнад- цатеричные цифры 0 1 2 3 4 5 6 7 Двоичные тетрады 1000 1001 1010 1011 1100 1101 1110 1111 Шестнад- цатеричные цифры 8 9 А в с D Е F Перевод целых чисел. Для перевода целого двоичного числа в шестнадцатеричное его нужно разбить на группы по четыре цифры (тетрады), начиная справа; если в последней левой группе окажется меньше разрядов, надо дополнить ее слева нулями. Переведем целое двоичное число А2 = lOlOOlg в шестнадцатеричное: 0010 IOOI2 = Перевод дробей. Для перевода дробного двоичного числа в шестнадцатеричное необходимо разбить его на тетрады слева направо; если в последней правой группе окажется меньше чем четыре разряда, необходимо ее дополнить справа нулями. Переведем дробное двоичное число Ag = 0,1101012 ® шестнадцатеричную систему счисления: 0,1101 OIOO2 = 0,D4ig. Для того чтобы преобразовать любое двоичное число в восьмеричную или шестнадцатеричную системы счисления, не- Информация. Системы счисления 139 обходимо произвести преобразования по рассмотренным выше алгоритмам отдельно для его целой и дробной частей. Перевод чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную Для перевода чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную необходимо цифры числа преобразовать в группы двоичных чисел. Для перевода из восьмеричной системы в двоичную каждую цифру числа надо преобразовать в группу из трех двоичных разрядов (триаду), а при преобразовании шестнадцатеричного числа — в группу из четырех разрядов (тетраду). Например, преобразуем дробное восьмеричное число Ag= 0,47g в двоичную систему счисления: 0,47g = 0,1001112. Переведем целое шестнадцатеричное число A^q = в двоичную систему счисления: AB^g = IOIOIOII2. Контрольные вопросы 1. Сформулируйте алгоритм перевода целых двоичных чисел в восьмеричную и шестнадцатеричную системы счисления. 2, Сформулируйте алгоритм перевода дробных двоичных чисел в восьмеричную и шестнадцатеричную системы счисления. 3 я 2.13. Заполнить таблицу, в каждой строке которой одно и то же произвольное число (число может содержать как целую, так и дробную часть) должно быть записано в различных системах счисления: Двоичная Восьмеричная Шестнадцатеричная 111101,1 233,5 59,В 140 Глава 2 2.9. Арифметические операции в позиционных системах счисления Арифметические операции во всех позиционных системах счисления выполняются по одним и тем же хорошо известным правилам. Сложение. Рассмотрим сложение чисел в двоичной системе счисления. В его основе лежит таблица сложения одноразрядных двоичных чисел: 0 f о = О 0+1=1 1 + о = 1 1 + 1 = 10 Важно обратить внимание на то, что при сложении двух единиц происходит переполнение разряда и производится перенос в старший разряд. Переполнение разряда наступает тогда, когда величина числа в нем становится равной или большей основания системы счисления. Для двоичной системы счисления эта величина равна двум. Сложение многоразрядных двоичных чисел происходит в соответствии с вышеприведенной таблицей сложения с учетом возможных переносов из младших разрядов в старшие. В качестве примера сложим в столбик двоичные числа llOg и llg. IIO2 Но 1001 Проверим правильность вычислений сложением в десятичной системе счисления. Переведем двоичные числа в десятичную систему счисления и затем их сложим. IIO2 = 1-22 + 1-2^ + 0-20 = 610; Из = 1*21 + 1-20 = 3^0 ; ^10 ^10 9 10 Теперь переведем результат двоичного сложения в десятичное число. IOOI2 = 1*23 + 0*22 + 0*21 + 1.20 ^ ^ Сравним результаты, сложение выполнено правильно. Вычитание. Рассмотрим вычитание двоичных чисел. В его основе лежит таблица вычитания одноразрядных двоичных чисел. При вычитании из мецьшего числа (0) большего (1) производится заем из старшего разряда. В таблице заем обозначен 1 с чертой. Информация. Системы счисления 141 О - О - _0 О - 1 = 11 1-0=1 1-1=0 Вычитание многоразрядных двоичных чисел происходит в соответствии с вышеприведенной таблицей вычитания с учетом возможных заемов в старших разрядах. В качестве примера произведем вычитание двоичных чисел llOg и Из- 1102 11, 112 Умножение. В основе умножения лежит таблица умножения одноразрядных двоичных чисел: 0-0 = 0 0-1 = 0 1-0 = 0 1-1 = 1 Умножение многоразрядных двоичных чисел происходит в соответствии с вышеприведенной таблицей умножения по обычной схеме, применяемой в десятичной системе счисления, с последовательным умножением множимого на очередную цифру множителя. В качестве примера произведем умножение двоичных чисел 11О2 и II2. 1102 X ___11^ 110 110 100102 Деление. Операция деления выполняется по алгоритму, подобному алгоритму выполнения операции деления в десятичной системе счисления. В качестве примера произведем деление двоичного числа 110, на 11 2- 110. 11 " о 11. 10. Арифметические операции в восьмеричной и шестнадцатеричной системах счисления. Аналогично можно выполнять арифметические действия в восьмеричной и шестнадцатерич- 142 Глава 2 НОЙ системах счисления. Необходимо только помнить, что перенос в следующий разряд при сложении и заем из старшего разряда при вычитании определяется величиной основания системы счисления: 37; 25, 9С 16 78 16 64 24 16 Для проведения арифметических операций над числами, выраженными в различных системах счисления, необходимо предварительно перевести их в одну и ту же систему. Практическое задание «Арифметические операции в позиционных системах счисления». Выполнить сложение, вычитание, умножение и деление чисел, выраженных в различных системах счисления (например, 12g и 64^g), с помощью компьютерного калькулятора Wise Calculator. Арифметические операции в позиционных системах счисления 1. Запустить Wise Calculator и ввести команду [Tools-Multi-Base Calculator,,.]. В режиме Multi-Base Calculator появляется многооконная панель, позволяющая ввести число в любой системе счисления и автоматически получить значения этого числа в других системах счисления. В режиме Multi-Base Calculator возможно проведение арифметических операций (сложение, вычитание, умножение и деление) в различных системах счисления. Для этого в окна операндов А и В необходимо ввести числа (можно в различных системах счисления) и выбрать в группе переключателей Operation арифметическую операцию. 2. На появившейся многооконной панели Multi-Base Calculator (рис. 2.22) ввести пару чисел в окна операндов А и Б. Например, шестнадцатеричное число 64jgB окно HEX (операнд А) и восьмеричное число 12g в окно ОСТ (операнд В). 3. Выбрать в группе переключателей Operation, например операцию умножения А*В. 4. В окнах Result появится результат выполнения арифметической операции одновременно в четырех системах счисления: DEC (1000J, BIN (IIIIIOIOOO2), ОСТ (1750^) и HEX (3E8,g). Информация. Системы счисления 143 Multi-Base Calculator Edft Close! oecFoo P100100 ост(ш N£X 64 rOpetetoiT- — • ..... - |- r A>B r AJj г|а“ R«ut- DEC 1000 BIN 1111101000 OCT 1750 I HEX |3E8 XJ ^ Adwl AmodB C AendB C A«B ^ Aw»8 Рис. 2.22. Умножение чисел в различных системах счисления 5. Последовательно выбрать в группе переключателей Operation операции сложения А+В, вычитания А-В и деления А div В. Компьюте рактикум Windows-CD 2.6. Выполнить с использованием компьютерного калькулятора Wise Calculator практическое задание «Арифметические операции в позиционных системах счисления». 2.10. Представление чисел в компьютере 2.10.1. Представление чисел в формате с фиксированной запятой Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. В этом случае каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а запятая находится справа после младшего разряда, т. е. вне разрядной сетки. Достоинствами представления чисел в формате с фиксированной запятой являются простота и наглядность представления чисел, а также простота алгоритмов реализации арифметических операций (вычитание благодаря использованию дополнительного кода (см. ниже) для представления отрицательных чисел сводится к сложению). Недостатком представления чисел в формате с фиксированной запятой является конечный диапазон представления 144 Глава 2 величин, недостаточный для решения математических, физических, экономических и других задач, в которых используются как очень малые, так и очень большие числа. Целые неотрицательные числа. Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов). Например, число Ag = lOlOlOlOg будет храниться в ячейке памяти следующим образом: 1 0 1 0 1 0 1 0 Минимальное число соответствует восьми нулям, хранящимся в восьми ячейках памяти, и равно нулю. Максимальное значение целого неотрицательного числа достигается в случае, когда во всех ячейках хранятся единицы. Для /г-разрядного представления оно будет равно 2^ - 1. Задание «Диапазон хранения целых неотрицательных чисел». Определить диапазон чисел, которые могут храниться в оперативной памяти в формате целого неотрицательного числа. Минимальное число равно 0. Максимальное число соответствует восьми единицам, хранящимся в ячейках памяти, и равно: А = 1-27 -н1*2б-ь1-25 + 1*24 -h 1*23 -ь 1*22-ь -ь = Ь2^-1 = 255^^, Диапазон изменения целых неотрицательных чисел — от о до 255. Целые числа со знаком. Для хранения целых чисел со знаком отводится две 51чейки памяти (16 битов), а для хранения больших целых чисел со знаком отводится четыре ячейки памяти (32 бита). Старший (левый) разряд отводится под знак числа (если число положительное, то в знаковый разряд записывается о, если число отрицательное — записывается 1). Представление в компьютере положительных чисел с использованием формата «знак-величина» называется прямым кодом числа. Например, число 2002^q = lllllOlOOlOg будет представлено в 1б-разрядном представлении следующим образом: 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 При представлении целых чисел в л-разрядном представлении со знаком максимальное положительное число (с учетом выделения одного разряда на знак) равно А = 2^-1 - 1. Информация. Системы счисления 146 Минимальное отрицательное число равно А - -2^'^ Задание «Диапазон хранения целых чисел со знаком и больших целых чисел со знаком». Определить диапазон чисел, которые могут храниться в оперативной памяти в формате: • целых чисел со знаком; • больших целых чисел со знаком, а) Максимальное положительное целое число в формате целых чисел со знаком равно: Ал = 215-1 32 767 10 " ■ 10-Минимальное отрицательное целое число равно ■10 -215 = -^32768 10' б) Максимальное положительное целое число в больших целых чисел со знаком равно формате А 10 2^1 - 1 = 2 147 483 647 10' Минимальное отрицательное целое число равно •10 -231 = _2 147 483 648 10* Дополнительный код. Для представления отрицательных чисел используется дополнительный код. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие. Дополнительный код отрицательного числа А, хранящегося в п ячейках, равен 2" - \А\. Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, поэтому в п-разрядной компьютерной арифметике: 2^ - |А| + 1Л| = 0. Это равенство тождественно справедливо, так как в компьютерной л-разрядной арифметике 2^ = 0. Действительно, двоичная запись такого числа состоит из одной единицы и п нулей, а в л-разрядную ячейку может уместиться только л младших разрядов, т. е. л нулей. Задание «Дополнительный код числа». Записать дополнительный код отрицательного числа -2002 для 16-разрядно-го компьютерного представления. 146 Глава 2 Проведем вычисления в соответствии с определением дополнительного кода: 216 = IOOOOOOOOOOOOOOOO2 65536^0 2002,0 = 000001IIIIOIOOIO2 2002,0 2'б- 12002,о| = 11111000001011102 63534^0 Проведем проверку с использованием десятичной системы счисления. Дополнительный код 63 534^^ в сумме с модулем отрицательного числа 2002^q равен 65 536jq, т. е. дополнительный код дополняет модуль отрицательного числа до 2^® (до нуля 16-разрядной компьютерной арифметики). Алгоритм получения дополнительного кода. Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм: 1. Модуль числа записать прямым кодом в п двоичных разрядах. 2. Получить обратный код числа, для этого значения всех битов инвертировать (все единицы заменить на нули и все нули заменить на единицы). 3. К полученному обратному коду прибавить единицу. Задание «Вычисление дополнительного кода числа с использованием обратного кода». Вычислить дополнительный код отрицательного числа -2002 для 16-разрядного компьютерного представления с использованием алгоритма. Прямой код |-2002,о1 OOOOOIIIIIOIOOIO2 Обратный код Инвертирование IIIIIOOOOOIOIIOI2 Прибавление единицы Ш1100000101IOI2 00000000000000012 Дополнительный код 11111000001011102 Задание «Арифметическое действие». Выполнить арифметическое действие 3000^^ - 5000jq в 16-разрядном компьютерном представлении. Представим положительное число в прямом, а отрицательное число — в дополнительном коде: Информация. Системы счисления 147 Десятичное число Прямой код Обратный код Дополнительный код 3000 0000101110111000 -5000 0001001110001000 1110110001110111 1110110001110111 0000000000000001 1110110001111000 Сложим прямой код положительного числа с дополнительным кодом отрицательного числа. Получим результат в дополнительном коде: 3000-5000 1111100000110000 Переведем полученный дополнительный код в десятичное число: 1) Инвертируем дополнительный код: 0000011111001111, 2) Прибавим к полученному коду 1 и получим модуль отрицательного числа: 0000011111001111 + 0000000000000001 0000011111010000 3) Переведем в десятичное число и припишем знак отрицательного числа: -2000. Контрольные вопросы 1. Чем различаются обратный и дополнительный коды числа в компьютерном представлении отрицательных чисел? 3 я 2.14. Заполнить таблицу, записав отрицательные десятичные числа в прямом, обратном и дополнительном кодах в 16-разрядном представлении: Десятичные числа Обратный код Дополнительный код -10 -100 -1000 -10000 148 Глава 2 2.15. Выполнить арифметическое действие 20^^ компьютерном представлении. 60JQ в 16-разрядном 2.10.2. Представление чисел в формате с плавающей запятой Вещественные числа (конечные и бесконечные десятичные дроби) хранятся и обрабатываются в компьютере в формате с плавающей запятой. В этом случае положение запятой в записи числа может изменяться. Формат чисел с плавающей запятой базируется на экспоненциальной форме записи, в которой может быть представлено любой число. Так число А может быть представлено в виде: А = т X (2.16) где т — мантисса числа, q — основание системы счисления, п — порядок числа. Для однозначности представления чисел с плавающей запятой используется нормализованная форма, при которой мантисса отвечает условию: 1/п < \т\ < 1, Это означает, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля. Задание «Приведение числа с плавающей запятой к нормализованной форме». Преобразовать десятичное число 888,888, записанное в естественной форме, в экспоненциальную форму с нормализованной мантиссой. 888,888 = 0,888888 х Ю^. Нормализованная мантисса т 0,888888, порядок д = 3. Число в форме с плавающей запятой занимает в памяти компьютера четыре байта {число обычной точности) или восемь байтов {число двойной точности). При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы. Диапазон изменения чисел определяется количеством разрядов, отведенных для хранения порядка числа, а точность (количество значащих цифр) определяется количеством разрядов, отведенных для хранения мантиссы. Задание «Определение максимального числа и его точности». Определить максимальное число и его точность для формата чисел обычной точности, если для хранения порядка и Информация. Системы счисления 149 его знака отводится 8 разрядов, а для хранения мантиссы и ее знака 24 — разряда. 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 знак и порядок знак и мантисса Максимальное значение числа составит 1111111.^ = 127,п» следовательно, максимальное число: порядка 21^^= 1,7014118346046923173168730371588 х 10^8. Точность вычислений определяется количеством разрядов, отведенных для хранения мантиссы чисел. Максимальное значение положительной мантиссы равно: 223 - 1 ^ 223 _ 200x2,3) ^ 10002-3 10(3x2.3) ^ 10'^. Таким образом, максимальное значение чисел обычной точности с учетом возможной точности вычислений составит 1,701411 X 1033 (уюлпчество значащих цифр десятичного числа в данном случае ограничено 7 разрядами). Сложение и вычитание чисел в формате с плавающей запятой. При сложении и вычитании чисел в формате с плавающей запятой сначала производится подготовительная операция выравнивания порядков. Меньший по модулю порядок числа увеличивается до величины большего по модулю порядка числа. Для того чтобы величина числа не изменилась, мантисса уменьшается в такое же количество раз (сдвигается в ячейке памяти вправо на количество разрядов, равное разности порядков чисел). После выполнения операции выравнивания одинаковые разряды чисел оказываются расположенными в одних и тех же разрядах ячеек памяти. Теперь операции сложения и вычитания чисел сводятся к сложению или вычитанию мантисс. При умножении чисел в формате с плавающей запятой порядки складываются, а мантиссы перемножаются. При делении из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя. После выполнения арифметической операции для приведения полученного числа к стандартному формату с плавающей запятой производится нормализация, т. е. мантисса сдвигается влево или вправо так, чтобы ее первая значащая цифра попала в первый разряд после запятой. Задание «Арифметические операции с числами в формате с плавающей запятой»>. Произвести с числами 0,1 х 2^ и 0,1 X 23 в формате с плавающей запятой: 150 Глава 2 • сложение и вычитание; • умножение и деление. а) Произведем выравнивание порядков, сложение или вычитание мантисс, а также нормализацию (если это необходимо): Сложение 0,100 X 25 + 0,001 X 25 0,101 X 25 Вычитание 0,100 X 25 0,001 X 2® 0,010 X 25 0,10 X 24 б) Произведем умножение или деление мантисс, сложение или вычитание порядков, а также нормализацию (если это необходимо): Умножение 0,1 X 25 ' 0,1 X 23 0,01 X 2» = 0,1 27 Деление 0,1 X 25 0,1 X 2^ 1 X 22 = 0,1 X 23 Контрольные вопросы 1. От чего зависит максимальное значение порядка числа и его точность в формате с плавающей запятой? 3 а ^ «а и й я 2.16. Определить максимальное число и его точность для формата чисел двойной точности, если для хранения порядка и его знака отводится 11 разрядов, а для хранения мантиссы и ее знака — 53 разряда, 2.17. Произвести сложение, вычитание, умножение и деление чисел 0,1 X 2^ и 0,1 X 2‘^ в формате с плавающей запятой. Глава 3____________________ Основы логики и логические основы компьютера Windows-CD В процессе изучения данной темы рекомендуется использовать программное обеспечение для операционной системы Windows: • компьютерный калькулятор NumLock Calculator; • электронные таблицы OpenOffice.org Calc; • редактор электрических и логических схем sPlan; • конструктор электрических схем Начала электроники; \ Дистрибутив Microsoft Office • электронные таблицы Microsoft Excel. 3.1. Формы мышления Первые учения о формах и способах рассуждений возникли в странах Древнего Востока (Китай, Индия), но в основе современной логики лежат учения, созданные древнегреческими мыслителями. Основы формальной логики заложил Аристотель, который впервые отделил логические формы мышления (речи) от его содержания. G Логика — это наука о формах и способах мыпгле-ния. 152 Глава 3 Законы логики отражают в сознании человека свойства, связи и отношения объектов окружающего мира. Логика позволяет строить формальные модели окружающего мира, отвлекаясь от содержательной стороны. Мышление всегда осуществляется в каких-то формах. Основными формами мышления являются понятие, высказывание (суждение) и умозаключение. Понятие. Понятие — это форма мышления, отражающая наиболее существенные признаки предмета, отличающие его от других предметов. В структуре каждого понятия нужно различать две стороны: содержание и объем. Содержание понятия составляет совокупность существенных признаков предмета. Чтобы раскрыть содержание понятия, следует выделить признаки, необходимые и достаточные для выделения данного объекта по отношению к другим объектам. Например, понятие «компьютер» объединяет множество электронных устройств, которые предназначены для обработки информации и обладают монитором и клавиатурой. Даже по этому короткому описанию компьютер трудно спутать с другими объектами, например с механизмами, служащими для перемещения по дорогам и хранящимися в гаражах, которые объединяются понятием «автомобиль». Объем понятия определяется совокупностью предметов, на которую понятие распространяется. Объем понятия «компьютер» выражает всю совокупность существовавших, существующих и могущих существовать в будущем компьютеров. Объем и содержание понятия связаны между собой, и эта связь выражается следующим законом: чем больше объем понятия, тем меньше его содержание, и наоборот, чем больше содержание понятия, тем меньше его объем. Иначе говоря, чем меньшее количество вещей мыслится в данном понятии, тем больше оно сообщает об этих вещах. Например, понятие «карманный компьютер» охватывает меньший объем, чем понятие «компьютер», но обладает большим содержанием. Понятие — это форма мышления, фиксирующая основные, существенные признаки объекта. о Алгебра множеств, одна из основополагающих современных математических теорий, позволяет исследовать отношения между множествами и, соответственно, объемами понятий. Основы логики и логические основы компьютера 153 Для наглядной геометрической иллюстрации объемов понятий и соотношений между ними используются диаграммы Эйлера—Венна. Если имеются какие-либо понятия А, Б, С и т. д., то объем каждого понятия (множество) можно представить в виде круга, а отношения между этими объемами (множествами) — в виде пересекаюш;ихся кругов. Отобразим с помош,ью диаграммы Эйлера-Венна соотношение между объемами понятий «натуральные числа» и «четные числа». Объем понятия «натуральные числа» включает в себя множество целых положительных чисел А, а объем понятия «четные числа» включает в себя множество отрицательных и положительных четных чисел Б. Эти множества пересекаются, так как оба включают в себя множество положительных четных чисел С (рис. 3.1). Рис. 3.1. Представление объемов понятий с использованием диаграммы Эйлера-Венна Высказывание. Высказывание (суждение) — это форма мышления, выраженная с помощью понятий, посредством которой что-либо утверждают или отрицают о предметах, их свойствах и отношениях между ними. О предметах можно судить верно или неверно, т. е. высказывание может быть истинным или ложным. Истинным будет высказывание, в котором связь понятий правильно отражает свойства и отношения реальных вещей. Ложным высказывание будет в том случае, когда связь понятий искажает объективные отношения, не соответствует реальной действительности. Обоснование истинности или ложности простых высказываний решается вне алгебры логики. Например, истинность или ложность высказывания «Сумма углов треугольника равна 180 градусам» устанавливается геометрией, причем в геометрии Евклида это высказывание является истинным, а в геометрии Лобачевского — ложным. На естественном языке высказывания выражаются повествовательными предложениями. Высказывание не может быть выражено повелительным или вопросительным предложением, потому что невозможна оценка их истинности или ложности. Высказывания могут быть выражены не только с помощью естественных языков, но и с помощью формальных языков. Из двух числовых выражений можно составить высказы- 154 Глава 3 вания, соединив их знаками равенства или неравенства. Например, высказывание на естественном языке имеет вид «Два умножить на два равно четырем», а на формальном, ма^ тематическом языке оно записывается в виде «2x2 = 4». mJ Высказывание — это форма мышления, в которой что-либо утверждается или отрицается о реальных предметах, их свойствах и отношениях между ними. Высказывание может быть либо истинно, либо ложно. Высказывание называется простым, если никакая его часть сама не является высказыванием. Высказывание, состоящее из простых высказываний, называются составным (сложным). Высказывание состоит из понятий, и его можно срав^ нить с арифметическим выражением, в котором все числа заданы. В математической логике рассматриваются предикаты, т. е. функциональные зависимости от неопределенных понятий (терминов), которые можно сравнить с переменными в уравнении. В предикатах первого порядка один из терминов является неопределенным понятием (например, «х — человек»). В предикатах второго порядка два термина не определены (например, «х любит у»). В предикатах третьего порядка неопределенны три термина (например, «г — сын х и у»). Преобразуем рассмотренные выше предикаты в высказывания путем подстановки вместо переменных соответствующих понятий: X = «Сократ», у = «Ксантиппа», z = «Софро-ниск». Получим высказывания: «Сократ — человек»; «Ксантиппа любит Сократа»; «Софрониск — сын Сократа и Ксантиппы», Умозаключение. Умозаключение — это форма мыптле-ния, посредством которой из одного или нескольких высказываний, называемых посылками, по определенным правилам логического вывода получается новое знание о предметах реального мира (вывод). Умозаключения бывают дедуктивные, индуктивные и по аналогии. В дедуктивных умозаключениях рассуждения ведутся от общего к частному. Например, из двух суждений: «Все металлы электропроводны» и «Ртуть является металлом» — путем умозаключения можно сделать вывод: «Ртуть электропроводна ». Основы логики и логические основы компьютера 155 В индуктивных умозаключениях рассуждения ведутся от частного к общему. Например, установив, что отдельные металлы — железо, медь, цинк, алюминий и т. д. — обладают свойством электропроводности, можно сделать вывод, что все металлы электропроводны. Умозаключение по аналогии представляет собой движение мысли от общности одних свойств и отношений у сравниваемых предметов или процессов к общности других свойств и отношений. Например, химический состав Солнца и Земли сходен по многим показателям, поэтому когда на Солнце обнаружили неизвестный еще на Земле химический элемент гелий, то по аналогии заключили: такой элемент есть и на Земле. Умозаключение — это форма мышления, с помощью которой из одного или нескольких высказываний (посылок) может быть получено новое высказывание (вывод). Доказательство. Доказательство есть мыслительный процесс, направленный на подтверждение или опровержение какого-либо положения посредством других несомненных, ранее обоснованных доводов. Доказательство по своей логической форме не отличается от умозаключения. Однако, если в умозаключении заранее исходят из истинности посылок и следят только за правильностью логического вывода, в доказательстве подвергается логической проверке истинность самих посылок. Примером умозаключений могут быть геометрические доказательства. Например, если мы имеем суждение «Все углы треугольника равны», то мы можем путем умозаключения доказать, что в этом случае справедливо суждение «Этот треугольник равносторонний». Контрольные вопросы 1. в чем состоит разница между содержанием и объемом понятия? Связаны ли между собой содержание и объем понятия? Приведите примеры. 2. Как определяется истинность или ложность простого высказыва- мт/тст9 156 Fwiaea 3 Задания 3.1. привести примеры понятий, высказываний, умозаключений и доказательств из различных наук: математики; информатики; физики и химии. 3.2. Представить с использованием диаграммы Эйлера-Венна соотношение между объемами понятий «четные числа» и «нечетные числа». 3.3. Построить высказывания на основе предиката второго порядка «X состоит из у». 3.2. Алгебра логики 3.2.1. Логическое умножение, сложение и отрицание Алгебра в широком смысле этого слова — наука об общих операциях, аналогичных сложению и умножению, которые могут выполняться над различными математическими объектами (алгебра переменных и функций, алгебра векторов, алгебра множеств и т. д.). Объектами алгебры логики являются высказывания. Алгебра логики отвлекается от смысловой содержательности высказываний. Ее интересует только один факт — истинно или ложно данное высказывание, что дает возможность определять истинность или ложность составных высказываний алгебраическими методами. Логические переменные. Простые высказывания в алгебре логики обозначаются прописными латинскими буквами. Высказывания, как уже говорилось ранее, могут быть истинными или ложными. Истинному высказыванию соответствует значение логической переменной 1, а ложному - значение 0. а В алгебре логики высказывания обозначаются именами логических переменных, которые могут принимать лишь два значения: «истина» (1) и «ложь» (0). Рассмотрим два простых высказывания: А — «Два умножить на два равно четырем». В — «Два умножить на два равно пяти». Первое высказывание истинно {А = 1), а второе ложно (В = 0). Основы логики и логические основы компьютера 157 Составные высказывания на естественном языке образуются с помощью связок «и», «или», «не», которые в алгебре логики заменяются на логические операции. Логические операции задаются таблицами истинности. Логическое умножение (конъюнкция). Объединение двух (или нескольких) высказываний в одно с помощью союза «и» называется операцией логического умножения или конъюнкцией. Составное высказывание, образованное в результате операции логического умножения (конъюнкции), истинно тогда и только тогда, когда истинны все входящие в него простые высказывания. Из приведенных ниже четырех составных высказываний, образованных с помощью операции логического умножения, истинно только четвертое, так как в первых трех составных высказываниях хотя бы одно из простых высказываний ложно: 1) «2 X 2 - Г) и 3 X 3 = 10»; 2) «2 X 2 - 5 и 3 X 3 = 9»; 3) «2 X 2 - 4 и 3 X 3 - 10»; 4) «2х2 = 4и3х3^9». Перейдем теперь от записи высказываний на естественном языке к их записи на формальном языке алгебры логики. Операцию логического умножения (конъюнкцию) принято обозначать значком «&» (амперсенд). Операция логического умножения, аргументами которой являются логические переменные А и Б, записывается следующей формулой: А & Б. (3.1) Значение логической операции логического умножения задается с помощью таблицы истинности. Таблица истинности показывает, какие значения дает логическая операция при всех возможных наборах ее аргументов (табл. 3.1). Результатом операции логического умножения является «истина» (1) тогда и только тогда, когда оба аргумента принимают значения «истина» (1). Таблица 3.1. Таблица истинности конъюнкции (логического умножения) А В А&В 0 0 0 0 1 0 1 0 0 1 1 1 158 Глава 3 По таблице истинности легко определить истинность составного высказывания, образованного с помощью операции логического умножения. Рассмотрим, например, составное высказывание «2х2 = 4иЗхЗ = 10». Первое простое высказывание истинно (А = 1), а второе высказывание ложно (Б = 0), с использованием таблицы истинности логического умножения определяем, что данное составное высказывание ложно. Логическое сложение (дизъюнкция). Объединение двух (или нескольких) высказываний с помощью союза «или» называется операцией логического сложения или дизъюнкцией. Составное высказывание, образованное в результате логического сложения (дизъюнкции), истинно тогда и только тогда, когда истинно хотя бы одно из входящих в него простых высказываний. Так, из приведенных ниже четырех составных высказываний, образованных с помощью операции логического сложения, ложно только первое, так как в последних трех составных высказываниях хотя бы одно из простых высказываний истинно: 1) «2 X 2 = 5 или 3x3 = 10»; 2) «2 X 2 = 5 или 3x3 = 9»; 3) «2 X 2 = 4 или 3x3 = 10»; 4) «2 X 2 = 4 или 3x3 = 9». Запишем теперь операцию логического сложения на формальном языке алгебры логики. Операцию логического сложения (дизъюнкцию) принято обозначать значком «V». Операция логического сложения, аргументами которой являются логические переменные А и В, записывается следующей формулой: Л V Б. (3.2) Значение логической операции логического сложения задается с помощью таблицы истинности (табл. 3.2). Результатом операции логического сложения является «ложь» (0) тогда и только тогда, когда оба аргумента принимают значения «ложь» (0). Таблица 3.2. Таблица истинности дизъюнкции (логического сложения) А В 4 V Б 0 0 0 0 1 1 1 0 1 1 1 1 Основы логики и логические основы компьютера 159 По таблице истинности легко определить истинность составного высказывания, образованного с помощью операции логического сложения. Рассмотрим, например, составное высказывание «2x2 = 4 или 3 X 3 = 10». Первое простое высказывание истинно (А = 1), а второе высказывание ложно (Б = 0), с помощью таблицы истинности логического сложения определяем, что данное составное высказывание истинно. Логическое отрицание (инверсия). Присоединение частицы «не» к высказыванию называется операцией логического отрицания или инверсией. Логическое отрицание (инверсия) получает из истинного высказывания ложное и, наоборот, из ложного — истинное. Высказывание «Два умножить на два равно четырем» истинно, а высказывание, образованное с помощью операции логического отрицания, «Два умножить на два не равно четырем» — ложно. Запишем теперь операцию логического отрицания на формальном языке алгебры логики. Операцию логического отрицания (инверсию) над логическим высказыванием А принято обозначать А. Операция логического отрицания, аргументом которой является логическая переменная А, записывается следующей формулой: А. (3.3) Значение логической операции отрицания задается с помощью таблицы истинности (табл. 3.3). Результатом операции логического отрицания является «истина» (1), когда аргумент принимает значение «ложь» (0), и значение «ложь» (0), когда аргумент принимает значение «истина» (1). Таблица 3.3. Таблица истинности инверсии (логического отрицания) А А 0 1 1 0 Истинность высказывания, образованного с помощью операции логического отрицания, можно легко определить с помощью таблицы истинности. Например, высказывание «Два 160 Глава 3 умножить на два не равно четырем» ложно {А = 0), а полученное из него в результате логического отрицания высказывание «Два умножить на два равно четырем» истинно (1). Практическое задание «Таблицы истинности». Получить таблицы истинности операций логического умножения, логического сложения и логического отрицания с использованием электронных таблиц. Получение таблиц истинности операций логического умножения, логического сложения и логического отрицания с использованием электронных таблиц 1. На листе JIucml создать заготовку таблиц истинности базовых логических операций. Создать заголовки и ввести в столбцы А и В, Е и F, I значения логических аргументов, а в столбцы С, G, J соответствующие логические операции. Электронные таблицы обладают встроенными логическими функциями. Функция логического умножения Щлогиче-ское значение!;логическое значение2;...) дает значение TRUE (1) тогда и только тогда, когда все логические аргументы имеют значение TRUE (1). Функция логического сложения ИЛИ(логическое значение! ;логическое значение2;...) дает значение TRUE (!) тогда и только тогда, когда хотя бы один логический аргумент имеет значение TRUE (!). Функция логического отрицания НЕ(логическое значение) дает значение TRUE (!), когда логический аргумент имеет значение FALSE (0) и, наоборот, значение FALSE (0), когда логический аргумент имеет значение TRUE (!). Ввод логических функций с использованием электронных таблиц Microsoft Excel 2. Для ввода логических функций воспользоваться командой [Вставка- Функция,,,]. В появившемся диалоговом окне Мастер функций (рис. 3.2) в раскрывающемся списке Кате- гории выбрать Логические, а в окне Выберите функцию: — функцию. Щелкнуть по кнопке Далее, 3. В диалоговом окне Аргументы функции (рис. 3.3) в текстовых полях Логическое значение 1 и Логическое значение 2 выбрать имена ячеек, в которых хранятся аргументы логической функции. Щелкнуть по кнопке ОК, Основы логики и логические основы компьютера 161 Мастер функций - шаг Гиз:^ Г^кюс функцж: Jjxl Введите краткое описание действия, которое нужно выполнить, и нажмите кнопку "Найти" К!атегория: j Логические Выбейте функц^вс: и ЕСЛИ fsm в ИЛИ HCTWA ЛОЖЬ НЕ И(1югическте_^ачение1;1югическве_?нвче1«е2^.) Г^юведяет, все ли аргументы имеют sHanewte ИСТЖА, и еозврвщавт значение УСТША, ест ист»*№ы все а(гуп«тгы. Справка по этой d?VMKUv»i { Рис. 3.2, Выбор логической функции Аргументы функции гИ- 1Ън-ическое_;жачение1 Лотшесков_,знач»«1е2 }в2 3J“ ЛОЖЬ ЛОЖЬ Г^роеерягг, все т адгуненты имеют »ианете ИСТЖА, и возврай»т зна'«^ ИСТИНА, есЛ1 истт»| все вргу»«нты. Ло>1ческое_»нечеим:1: Л)гичво<ов_знвчеже1;поп«ва«»_знвчениег;... от I до^ гчлжеряе>ых ycnoew, которые могут пригнать »1дч»«е тбо кКТША, жбо ЛОЖЬ - ож могут бнть лотческм»1 : нассгазаж или ссылками. Справка по этой Функции Зм»^afi1вlПO)W> KJ 0тчео<овзкачен«2; ... ) Воз^эащает значение ИСТИНА, «тли все вргут-янты сооттетстеуют значен« ИСТкЯА. Формула Рвэу«»тат |оши6ка;520 С<12эвка << уазэд Qanee » OK Рис. 3.4. Выбор логической функции 3. В диалоговом окне Мастер:Функции в текстовых полях Логическое значение 1 и Логическое значение 2 выбрать имена ячеек, в которых хранятся аргументы логической функции (рис. 3.5). Щелкнуть по кнопке ОК. Мастер: Функции Функции Структура I Структура Г” Массив AND Результат фунй*ии |Л0ЖЬ Воэврскдсют ИСТЖД, есп4 все эр/уменгы соотаетсгеуют - ' эначэ-ш) ИСТЖД. /Ъги^ясное 1(о6язат8тн№Й) Логи^юсмое значоФте 1, логичжкое значение 2,... от 1 до прсшряемьАс ^:по»4й, катср:^ могут ииэть »»чение HQTVNA. ли6>.. /кн-ичвсное зна^кие 1 [li ,® Лсгич^кое 2 fit fz 13 Логическое изменив 3 fi 1 га Лзгическсю эеича'ме 4 fi 1 га Формула Результат |л0ЖЬ Спва»<а I Отмаха Рис. 3.5. Ввод аргументов логической функции Основы логики и логические основы компьютера 163 Сохранение файла электронных таблиц 4. После ввода аргументов функций и их формул на листе появятся таблицы истинности трех базовых логических функций (рис. 3.6). Iog.xls - OpenOffice.org Сак Фс^ Пэавка ^ Вставип> Формат CBf3&AC Окно Справка X : «и. : r-i ' в {i и . vi) v' W s ; jAria) 3 ^ X Н S S S S ^ •'e ^ ^ |с2 fw 2. |=AND(A2;B2) 1 В шмтш _р_] Fj ^ I Н I 1 i 3 [7 1 ! 1 Конъюнкция Дизъюнкция Инверсия Й 0 01 ЛОЖЬ) 0 0 ложь 0 hcthhaJ 3 0 1 ложь 0 1 ИСТИНА 1 ЛОЖЬ 4: 1 0 ложь 1 0 ИСТИНА 5- ■ 1 1 ИСТИНА 1 1 ИСТИНА rl жз [ 1 и К Логические опеоации / Та6;м13 исп<ннос1м / Логичеа<кю еЬ^шии /ПРербмэоЫН >1 NcT l i4 lPa8eSt^JTow40CW« cin0pai#w jitxm Г Сумма-ложь Рис. 3.6. Таблицы истинности базовых логических функций в электронных таблицах 5. Переименовать лист JIucml в Логические операции. Сохранить в электронных таблицах Microsoft Excel или OpenOffice.org Calc файл log.xls в универсальном формате. Сохранить в электронных таблицах OpenOffice.org Calc файл log.ods в собственном формате. Контрольцю1е вопросы 1. Перечислите связки в составных высказываниях, знаки логических операций и функции в электронных таблицах, реализующие логические операции умножения, сложения и отрицания. 3.4. Определить, при каких значениях числа х предикат первого порядка не ((х > 8) или (х < -3)) примет значение; а) ложь; б) истина. 164 Глава 3 3.5. Изобразить в декартовой прямоугольной системе координат область, в которой и только в которой истинен предикат второго порядка (|х|<1)и(|г/|< 1). Компьютерный практикум Windows-CD 11^^ 3.1. В электронных таблицах выполнить практиче-ское задание «Таблицы истинности». \informatika10\logic\log.* 3.2.2. Логические выражения Логические выражения. Каждое составное высказывание можно выразить в виде формулы (логического выражения), в которую войдут логические переменные, обозначающие высказывания, и знаки логических операций. Для записи составных высказываний в виде логических выражений на формальном языке (языке алгебры логики) в составном высказывании нужно выделить простые высказывания и логические связи между ними. Запишем в форме логического выражения составное высказывание «(2 X 2 = 5 или 2x2 = 4) и (2x2^5 или 2 x2 т:: 4)». Проанализируем составное высказывание. Оно содержит два простых высказывания: А = {2 X 2 = 5} — ложно (0); Б = {2 X 2 = 4} — истинно (1). Теперь необходимо записать высказывание в форме логического выражения с учетом последовательности выполнения логических операций. При выполнении логических операций определен следующий порядок их выполнения: инверсия, конъюнкция, дизъюнкция. Для изменения указанного порядка могут использоваться скобки: _ _ (А V В) & (А V Б). Истинность или ложность составных высказываний можно определять формально, руководствуясь законами алгебры логики, не обращаясь к смысловому содержанию высказываний. Основы логики и логические основы компьютера 165 Практическое задание «Определение истинности логического выражения». Определить истинность логического выражения (А V В) & (А V В) с использованием таблиц истинности базовых логических операций и с использованием программного калькулятора. Подставим в логическое выражение значения логических переменных и, используя таблицы истинности базовых логических операций, долучим значение логического выражения: (А V В) & (А V Б) - (О V 1) & (1 V 0) = 1 & 1 = 1. Определение истинности логического выражения с использованием компьютерного калькулятора 1. Запустить компьютерный калькулятор NumLock Calculator. 2. Установить удобный вид калькулятора командой [Вид кальку лятора-ПрограммистскиЩ, 3. Ввести логическое выражение, подставив в него значения логических переменных. 4. Нажать на клавиатуре клавишу {Enter), получим значение логического выражения (рис. 3.7), которое совпадает со значением, вычисленным с использованием таблиц истинности. NumLock Cidcufator 0»с or 1} and (1 or 0) = 1 C D m 8 9 MS. j mat т <в JS&. >в ) 1 Рис. 3.7. Определение истинности логического выражения с использованием калькулятора Построение таблиц истинности логических выражений. Для каждого логического выражения можно построить таблицу истинности, которая определяет его истинность или ложность при всех возможных комбинациях исходных значений логических переменных. При построении таблиц истинности целесообразно руководствоваться определенной последовательностью действий. 166 Глава 3 Во-первых, необходимо определить количество строк в таблице истинности, которое равно количеству возможных комбинаций значений логических переменных, входящих в логическое выражение. Если количество логических переменных л, то: Количество строк = 2”. В нашем случае логическое выражение (^4 v В) & (А v В) имеет две переменные и, следовательно, количество строк в таблице истинности должно быть равно: Количество строк = 2^ = 2^ = 4. Во-вторых, необходимо определить количество столбцов в таблице истинности, которое равно количеству логических переменных плюс количество логических операций (при желании можно сократить количество столбцов, объединив несколько логических операций в одном столбце). В нашем случае количество переменных равно двум, а количество логических операций равно пяти, т. е. количество столбцов таблицы истинности равно: Количество столбцов = 2 + 5 = 7. В-третьих, необходимо построить таблицу истинности с указанным количеством строк и столбцов, обозначить столбцы и внести все возможные наборы значений логических переменных. Наборы входных переменных, во избежание ошибок, рекомендуют вводить следующим образом: 1) разделить столбец значений первой переменной пополам и заполнить верхнюю часть колонки нулями, а нижнюю — единицами; 2) разделить столбец значений второй переменной на четыре части и заполнить четверти чередующимися группами нулей и единиц, начиная с группы нулей; 3) продолжать деление слолбцов значений последующих переменных на 8, 16 и т. д. частей и заполнение их группами нулей или единиц до тех пор, пока группа нулей (единиц) не будет состоять из одного символа. В-четвертых, необходимо заполнить таблицу истинности по столбцам, выполняя базовые логические операции в необходимой последовательности и в соответствии с их таблицами истинности. Теперь мы можем определить значение логической функции для любого набора значений логических переменных. Построим таблицу истинности для рассмотренного логического выражения (табл. 3.4). Основы логики и логические основы компьютера 167 Таблица 3.4. Таблица истинности логического выражения (AvS)&(^vB) А В AvB А в AvB {Av B)8^{A^y В) 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0 Задание «Таблица истинности логического выражения» Для логического выражения А & (Б v Б & С) построить таблицу истинности. Количество логических переменных равно трем, следовательно, количество строк в таблице истинности должно быть: Количество строк = 2” = 2^ = 8. Количество логических операций равно пяти, следовательно, количество столбцов в таблице истинности должно быть: Количество столбцов = 3 + 5 = 8. Построим таблицу истинности (табл. 3.5). Таблица 3.5. Таблица и_стинности логического выражения A&{Bv В &В) А в с в с Б& с Bv{B&C) А& (В V Б & С) 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 . 0 0 1 1 0 0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 Равносильные логические выражения. Логические выражения, у которых таблицы истинности совпадают, называются равносильными. Для обозначения равносильных логических выражений используется знак « = ». Задание «Равносильность логических выражений». До- казать, что логические выражения А&Б и AvБ равносильны. Построим CJ^aчaлa таблицу истинности для логического выражения А&В (табл. 3.6). 168 Глава 3 Таблица 3,6, Таблица истинности логического выражения 4 & Б А В А в 4&Б 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 0 Построим теперь таблицу истинности для логического выражения AvB (табл. 3.7), Таблица 3.7. Таблица истинности логического выражения ЛТВ А в AvB AvB 0 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 Таблицы истинности совпадают, следовательно, логические выражения равносильны: А&В = AvB, Контрольные вопросы 1. Что содержат таблицы истинности и каков порядок их построения? 2. Какие логические выражения называются равносильными? Я ' - 3.6. Записать составное высказывание «(2х2 = 4иЗхЗ = 9) или {2х2^4иЗхЗф 9)» в форме логического выражения. Определить его истинность. 3.7. Доказать, используя таблицы истинности, что логические выражения AvB и А&В равносильны. Основы логики и логические основы компьютера 169 Компьютерный |[рактикум Windows-CD 3.2. С использованием программного калькулятора опреде лить истинность составного высказывания (см. зада ние 3.6). 3.3. В электронных таблицах построить таблицу истинности логических выраж^ий_ (А V В) & (А V В) и А & (В V В & С). ij \informatika10\logic\log.* 3.4. В электронных таблицах доказать с использова- _____ ~к нием таблиц истинности равносильность выра- 1ЭД жений (А V В V С) & (А V В V С) и (В & А & С). \informatika10\logic\log."' 3.2.3, Логические функции Любое логическое выражение можно рассматривать как логическую функцию F{X^, Xg,... Х^), аргументами которой являются логические переменные Хр Xg,... Х^. Сама функция и аргументы могут принимать только два различных значения: «истина» (1) и «ложь» (0). Каждая логическая функция двух аргументов имеет четыре возможных значения. Каждое значение функции несет 1 бит информации, так как может быть либо 0, либо 1. Следовательно, каждая функция несет 4 бита информации и по формуле (2.1) можно определить, какое количество различных логических функций двух аргументов может существовать: N = 2^ = 2^ = 16. Таким образом, существует 16 различных логических функций двух аргументов, каждая из которых задается собственной таблицей истинности (табл. 3.8). Таблица 3.8, Таблицы истинности логических функций двух аргументов Аргу- менты Логические функции А В А А А А А А А А А '^10 /^11 ^12 ^13 '^14 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 170 Глава 3 Легко заметить, что логическая функция является функцией логического умножения, — функцией логического сложения, — функцией логического отрицания для аргумента А и — функцией логического отрицания для аргумента В, В обыденной и научной речи кроме базовых логических связок «и», «или», «не» используются и некоторые другие: «если... то ,..», «тогда... и только тогда, когда ...» и др. Некоторые из них имеют свое название и свой символ, и им соответствуют определенные логические функции. Логическое следование (импликация). Логическое следование (импликация) образуется соединением двух высказываний в одно с помощью оборота речи «если ..., то ...». Логическая операция импликации «если А, то В» обозначается А -> Б и выражается с помощью логической функции которая задается соответствующей таблицей истинности (табл. 3.9). Таблица 3.9. Таблица истинности логической функции «импликация» А В Fu = A~^ в 0 0 1 0 1 1 1 0 0 1 1 1 Составное высказывание, образованное с помощью операции логического следования (импликации), ложно тогда и только тогда, когда из истинной посылки (первого высказывания) следует ложный вывод (второе высказывание). Например, высказывание «Если число делится на 10, то оно делится на 5» истинно, так как истинны и первое высказывание (посылка), и второе высказывание (вывод). Высказывание «Если число делится на 10, то оно делится на 3» ложно, так как из истинной посылки делается ложный вывод. Однако операция логического следования несколько отличается от обычного понимания слова «следует». Если первое высказывание (посылка) ложно, то вне зависимости от истинности или ложности второго высказывания (вывода) состав- Основы логики и логические основы компьютера 171 ное высказывание истинно. Это можно понимать таким образом, что из неверной посылки может следовать что угодно. В алгебре логики все логические функции могут быть выражены путем логических преобразований через три базовые: логическое умножение, логическое сложение и логическое отрицание. Практическое задание «Функция импликации». Выразить функцию импликации через базовые логические функции. Доказать методом сравнения таблиц истинности, что функция импликации равносильна логическому выражению А V В. Построить таблицу истинности функции импликации в электронных таблицах. Построим таблицу истинности логического выражения А V В (табл. 3.10). Таблица 3.10. Таблица истинности логического выражения Av В А В А ~Av В 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 Таблицы истинности функции_ импликации (см. табл. 3.9) и логического выражения А v В (см. табл. 3.10) совпадают, что и требовалось доказать. Ы Получение таблицы истинности функции импликации 1. В электронных таблицах создать заготовку таблицы истинности функции импликации: создать заголовки и ввести в столбцы А и В значения логических аргументов. 2. В столбце выразить логическую функцию F^^=Av В через логические функции электронных таблиц Microsoft Excel =ИЛИ(НЕ(А2);В2) (в OpenOffice.org Calc =OR(NOT(A2);B2). Логическое равенство (эквивалентность). Логическое равенство (эквивалентность) образуется соединением двух высказываний в одно с помощью оборота речи «... тогда и только тогда, когда ...». Логическая операция эквивалентности «А эквивалентно В» обозначается А-В и выражается с помощью логической функции которая задается соответствующей таблицей истинности (табл. 3.11). 172 Глава 3 Таблица 3.11. Таблица истинности логической функции эквивалентности А В F,o = A~B 0 0 1 0 1 0 1 0 0 1 1 1 Составное высказывание, образованное с помощью логической операции эквивалентности, истинно тогда и только тогда, когда оба высказывания одновременно либо ложны, либо истинны. Рассмотрим, например, два высказывания: А = «Компьютер может производить вычисления» и Б = «Компьютер включен». Составное высказывание, полученное с помощью операции эквивалентности, истинно, когда оба высказывания либо истинны, либо ложны: «Компьютер может производить вычисления тогда и только тогда, когда компьютер включен». «Компьютер не может производить вычисления тогда и только тогда, когда компьютер не включен». Составное высказывание, полученное с помощью операции эквивалентности, ложно, когда одно высказывание истинно, а другое ложно: «Компьютер может производить вычисления тогда и только тогда, когда компьютер не включен». «Компьютер не может производить вычисления тогда и только тогда, когда компьютер включен». Практическое задание «Функция эквивалентности». Выразить функцию эквивалентности F^q через базовые логические функции. Доказать методом сравнения таблиц истинности, что фун1Щия_эквивалентности равносильна логическому выражению (А & В) v (А & Б). Построить таблицу истинности функция эквивалентности в электронных таблицах, _ Построим таблицу истинности логического выражения (А&В) V (А & В) (табл. 3.12). Таблица 3.12. Таблица истинности логического выражения (4& Б) V (4& Б) А в А Б 4& Б 4& Б (Л& Б) V (А&В) 0 0 1 1 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 1 Основы логики и логические основы компьютера 173 Таблицы истинности функции экви^алеотности F^q (см. табл. 3.11) и логического выражения (А & Б) v (А & В) (см. табл. 3.12) совпадают, что и требовалось доказать. Получение таблицы истинности функции эквивалентности 1. В электронных таблицах создать заготовку таблиц истинности функции эквивалентности: создать заголовки и ввести в столбцы А и Б значения логических аргументов. 2. В столбце ^ыразить логическую функцию = (А & Б) V (А & Б) через логические функции электронных таблиц Microsoft Excel =ИЛИ(И(НЕ(А2);НЕ(В2)); И(А2;В2)) (в OpenOffice.org Calc =OR(AND(NOT(A2);NOT(B2); AND(A2;B2)). Контрольные вопросы 1. Какое количество логических функций двух аргументов существует и почему? 2. Какие названия логических функций двух аргументов вы знаете? 3. Какое существует количество логических функций трех аргументов? 3 я 3.8. Доказать с использованием таблиц истинности правильность выражения логических функций через базовые логические функции (конъюнкцию, дизъюнкцию и отрицание): F^(A,B)=A&A; F^{A,B)=A&B; F^(A,B)=AvB; F,^(A,B)^A; F^{A,B)=A&B; F^{A.B)=B; F^^{A,B)=iA&B)v{A&B); F^^{A,B)=AvB; F^(A,B)=A&.B; F^{A,B)=iA&.B)viA&B); F^^{A,B)=B; F^^(A,B)=A&B; F^{A,B)=A; F^(A,B)=A~B-, FJAM)=AvB; Компьюте^ый ррактикум Windows-CD 3.5. В электронных таблицах построить таблицы ис- gpA тинности всех логических функций двух пере- ' | ilCX^ менных. !—-J \informatika1 O\logic\log.* 174 Глава 3 liHHMIlillHI ^ фавк» Вид всг^вха Форе^зт Сдзвис Данные Оннэ £.правкэ ^ J Й ^ J а ' А ' S1 а •. I. АГ0| »ИЛИСИ(НЕ(А2) НЕ(В2)),И(А2,В2)) Ж je 3. шштт ■» - iJ X ■А- I F5 F6 F7 F8 F9 F10 ......... • V. С р_ложь ложь ложь гож;ь 'лскь гсжь гсжь ложь ИО’"ИНа|иС^Щи:'ИиА I-C’/M истина И-.-'’/ma .хтина истина _4_ о ' ложь ложь ложь ложь ИСТИНА'истина истина истина ложь ложь * ложь ИСТИНА I' ‘ИМ» /СТИНА ИСТИНА _4_ 1 о ЛСЖЬ лскь истина истина ложь ложь ИСТИНА ИСТИНА ложь ложь ИС*1'мА ИС’ИНА ложь "ГЖь ИЛТИКА истина 8 ' 1 ЛСЖЬ ИСТИНА ЛОЖЬ истина'’ЛОЖь ИСТИНА ложь ИСТИНА ложь истина '’ОЖь ИС’ИНА ложь 1’'’’ИмА ложь ИСТИНА ,1 и 4 >'~нХ Посинеояеооерац>*1 /ТабгиаисТинносли\Л(Хичеоо1е (^^нкцни/~гу»^|4| .1 JJT Г«чк> Рис. 3.8. Таблицы истинности логических функций 3.2.4. Логические законы и правила преобразования логических выражений Законы логики отражают наиболее важные закономерно-сти логического мышления. В алгебре логики законы логики записываются в виде формул, которые позволяют проводить равносильные преобразования логических выражений. Закон непротиворечия. Высказывание не может быть одновременно истинным и ложным. Если высказывание А истинно, то его отрицание не А должно быть ложным. Следовательно, логическое произведение высказывания и его отрицания должно быть ложно: А&А = 0 Закон исключенного третьего. Высказывание может быть либо истинным, либо ложным, третьего не дано. Это означает, что результат логического сложения высказывания и его отрицания всегда принимает значение истина: AvA=^ Закон двойного отрицания. Если дважды отрицать некоторое высказывание, то в результате мы получим исходное высказывание: А = А Основы логики и логические основы компьютера 175 Законы де Моргана (законы общей инверсии для логического сложения и для логического умножения). Общая инверсия двух логических слагаемых равносильна логическому умножению инвертированных переменных: А V В = А В Общая инверсия двух логических сомножителей равносильна логическому сложению инвертированных переменных: А &. В = А V В Кроме логических законов важное значение для выполнения преобразований логических выражений имеют правила алгебраических преобразований. Многие из них имеют аналоги в знакомой вам алгебре переменных и функций. Правило коммутативности. В алгебре переменных и функций слагаемые и множители можно менять местами. В алгебре логики можно менять местами логические переменные при операциях логического умножения и логического сложения: Логическое умножение Логическое сложение А&В= В8.А А V В = А V В Правило ассоциативности. Если в логическом выражении используется только операция логического умножения или только операция логического сложения, то можно пренебрегать скобками или произвольно их расставлять: Логическое умножение Логическое сложение (4 & Б) & с = л & (в & С) (Д V S) V С = Д V (Б V С) Правило дистрибутивности. В отличие от алгебры переменных и функций, где за скобки можно выносить только общие множители, в алгебре логики за скобки можно выносить как общие множители, так и общие слагаемые: Дистрибутивность умножения относительно сложения Дистрибутивность сложения относительно умножения аЬ+ ас= а{Ь+с) — в алгебре (Д & Б) V (Д & С) = Д & (В V С) {A-V В) &(Av С) = Av{B & С) 176 Глава 3 Правила равносильности. Это правила отсутствия показателей степени у результатов логического сложения и умножения переменных. Для логического сложения: А V А ^ А. Для логического умножения: А & А ^ А, Правила исключения констант Для логического сложения: А V 1 = 1, А V О == А, Для логического умножения: А&1=Л, А<&0 = 0. Рассмотрим примеры применения законов логики и правил алгебры логики для преобразования логических выражений. Задание «Преобразование логического выражения». Упростить логическое выражение (А & Б) v (А & 5). Воспользуемся правилом дистрибутивности и вынесем за скобки А: (А & Б) V (А & Б) - А & (Б V Б). По закону исключенного третьего Б v Б = 1, следовательно; А & (Б V Б) - А & 1. По правилу исключения констант: А & 1 = А. Задание «Решение логического уравнения». Найти значение логической переменной X из логического уравнения X V В V Xv А = В. В соответствии с приоритетами выполнения логических операций расставим скобки в левой части логического уравнения: _____ __________ (X V Б) V (X V А) = Б. Для преобразования левой части уравнения воспользуемся для первых и вторых скобок законом де Моргана для логического сложения и для вторых скобок законом двойного отрицания: _ _ _ (X & А) V (X & А) = Б. Согласно распределите;^ному закону для логического сложения, можно вынести X за скобки: X & (А V А) = Б. Основы логики и логические основы компьютера 177 Согласно закону исключенного третьего, (А v А) = 1 и уравнение примет вид: X & 1 = В, __ _ Согласно правилу исключения констант, X & 1 = X и уравнение примет вид: X = В. Инвертируем левую и правую части уравнения и получим решение уравнения: X = В. Контрольные вопросы 1. Какие правила преобразования логических выражений справедливы и при преобразовании алгебраических выражений? 3 д ^ и я 3.9. Доказать справедливость первого AvB=A&Eh второго А&В=А V В законов де Моргана, используя таблицы истинности, 3.10. Упростить логическое выражение: (А v В) & (Л v В). 3.11. Решить логическое уравнение: X & В 8с Х8сВ = А. 3.2.5. Решение логических задач Логические задачи обычно формулируются на естественном языке. В первую очередь их необходимо формализовать, т. е. записать на языке алгебры логики. Полученные логические выражения необходимо упростить и проанализировать. Для этого иногда бывает необходимо построить таблицу истинности полученного логического выражения. Задание «Логическая задача». В школе в каждой из двух аудиторий может находиться либо кабинет информатики, либо кабинет физики. На аудиториях повесили шутливые таблички, про которые известно, что они либо обе истинны, либо обе ложны. На первой аудитории повесили табличку «По крайней мере, в одной из этих аудиторий размещается кабинет информатики», а на второй аудитории — табличку с 178 Глава 3 надписью «Кабинет физики находится в другой аудитории Определите, какой кабинет размещается в каждой из аудиторий. Переведем условие задачи на язык алгебры логики. Так как в каждой из аудиторий может находиться кабинет информатики, то пусть: А — «В первой аудитории находится кабинет информатики». В — «Во второй аудитории находится кабинет информатики». Поскольку в каждой аудитории обязательно размещается какой-либо из этих двух кабинетов, отрицания этих высказываний будут соответствовать: А — «В первой аудитории находится кабинет физики». В — «Во второй аудитории находится кабинет физики». Высказывание, содержащееся на табличке первой аудитории, соответствует логическому выражению: X == А V В, Высказывание, содержащееся на табличке второй аудитории, соответствует логическому выражению: Y = А. Содержащееся в условии задачи утверждение о том, что надписи на табличках либо одновременно истинные, либо одновременно ложные, соответствует истинности функции эквивалентности: (X ^ Y) = 1, Выразим функцию эквивалентности через базовые логические функции и получим: (X & Y) V (X & У) = 1. Подставим вместо X и Y соответствующие логические выражения: _ _______ = ((А V В) & А) V ((А V В) & А) = 1. Упростим сначала первое слагаемое. В соответствии с правилом дистрибутивности умножения относительно сложения: ((А V В) & А) = (А & А) V (В & А). В соответствии с законом непротиворечия: (А & А) V (В & А) = О V (В & А). В соответствии с правилом исключения констант: О V (В & А) = (В & А). Основы логики и логические основы компьютера 179 Упростим теперь второе слагаемое. В соответствии с первым законом де Моргана и законом двойного отрицания: {{А W В) & А) = {А & В & А) = (А & А & В). В соответствии с законом непротиворечия: (А & А & Б) = (О & Б) = 0. В результате преобразований первого и второго слагаемых получаем: _ (Б & А) V о - 1. В соответствии с правилом исключения констант: Б & А = 1. Полученное логическое выражение оказалось простым, и поэтому его можно проанализировать без построения таблицы истинности. Для того чтобы выполнялось равенство, обе логические переменные должны быть равны 1, а соответствующие им высказывания истинны: Б — «Во второй аудитории находится кабинет информатики», А — «В первой аудитории находится кабинет физики». Таким образом, логическая задача решена: в первой аудитории находится кабинет физики, а во второй — кабинет информатики. ^ К Компьюте№ый практикум Windows-CD 3.6. Решить приведенную в параграфе логическую задачу методом построения в электронных таблицах таблицы истинности логического уравнения. \informatika10\logic\log.* 13 Microsoft excel - log.xis • файл 0раэ<а Вставка Фсч:^<ат Сервис Данные Оправка ■ J J я л ^ ^ г . а I ^ 10 ' iT \2 ^ =ИЛИ{Е2.Н2) ш в X : В С и._.А В F G : н _—^ 4 \ 1 ^ А В 1 AvB (А \/В)&А ЖГв А (Л vS)&^^ -.fi'l&A'i-vfCA V S') fit 0 0 ИСТИНА ложь ЛОЖЬ ИСТИНА ложь ложь 1_ ложь 1 0 1 ИСТИНА ИСТИНА ИСТИНА ложь ложь ложь ИСТИНА 3 ЛСЖЬ ИСТИНА ЛОЖЬ ЛОЖЬ ИСТИНА ложь ложь 1 ЛОЖЬ ИСТИНА ложь ложь ИСТИНА ложь ложь Н 4 и1/ Логические фумоу« / Равносильность выоаж»^ \л1 А 1 180 Глава 3 3.3. Логические основы устройства компьютера 3.3.1. Базовые логические элементы Дискретный преобразователь, который после обработки входных двоичных сигналов выдает на выходе сигнал, являющийся значением одной из логических операций, называется логическим элементом. Базовые логические элементы реализуют три базовые логические операции: • логический элемент «И» (конъюнктор) — логическое умножение; • логический элемент «ИЛИ» (дизъюнктор) — логическое сложение; • логический элемент «НЕ» (инвертор) — инверсию. Любая логическая операция может быть представлена в виде комбинации трех базовых, поэтому любые устройства компьютера, производящие обработку или хранение информации (сумматоры в процессоре, ячейки памяти в оперативной памяти и др.), могут быть собраны из базовых логических элементов, как из кирпичиков. Логические элементы компьютера оперируют с сигналами, представляющими собой электрические импульсы. Есть импульс — логическое значение сигнала 1, нет импульса — значение 0. На вход логического элемента поступают сигналы-аргументы, на выходе появляется сигнал-функция. Преобразование сигнала логическим элементом задается таблицей состояния, которая фактически является таблицей истинности, соответствующей логической функции. Логический элемент «И». На входы А и Б логического элемента последовательно подаются четыре пары сигналов, а на выходе получается последовательность из четырех сигналов, значения которых определяются в соответствии с таблицей истинности операции логического умножения. На рис. 3.8 изображена логическая схема элемента «И». Простейшей моделью логического элемента «И» может быть электрическая схема, состоящая из источника тока, лампочки и двух выключателей. Данную схему можно со- А(0,0Д,1) В (0,1,ОД) F (0,0,0,1) Рис. 3.8. Логический элемент «И» Основы логики и логические основы компьютера 181 брать из реальных электрических элементов или с использованием компьютерного конструктора «Начала электроники» (рис. 3.9). Т..' . ^ ‘i*»’ - Рис. 3.9. Электрическая схема модели логического элемента «И» и ее реализация в компьютерном конструкторе «Начала электроники» Из схемы видно, что если оба выключателя замкнуты (на обоих входах 1), по цепи идет ток и лампочка горит (на выходе 1). Если хотя бы один выключатель разомкнут (на одном из входов 0), то тока нет и лампочка не горит (на выходе 0). Логический элемент «ИЛИ» (рис. 3.10). На входы А и В логического элемента последовательно подаются четыре пары сигналов, а на выходе получается последовательность из четырех сигналов, значения которых определяются в соответствии с таблицей истинности операции логического сложения. А (0,0,1,1) В (0,1,0,1) в (0,1,1,1) Рис. 3.10. Логический элемент «ИЛИ» Простейшей моделью логического элемента «ИЛИ» может быть электрическая схема, которую можно собрать из реальных электрических элементов или с использованием компьютерного конструктора «Начала электроники» (рис. 3.11). Рис. 3.11. Электрическая схема модели логического элемента «ИЛИ» и ее реализация в компьютерном конструкторе «Начала электроники» 182 Глава 3 Из схемы видно, что, если хотя бы один выключатель замкнут (на входе 1), по цепи идет ток и лампочка горит (на выходе 1). Логический элемент «НЕ» (рис. 3.12). На вход А логического элемента последовательно подаются два сигнала, на выходе получается последовательность из двух сигналов, значения которых определяются в соответствии с таблицей истинности логической инверсии. А (ОД) НЕ f (1,0) Рис. 3.12. Логический элемент «НЕ» Простейшей моделью логического элемента «НЕ» может быть электрическая схема — инвертор, которую можно собрать из реальных электрических элементов или с использованием компьютерного конструктора «Начала электроники» (рис. 3.13). Рис. 3.13. Электрическая схема модели логического элемента «НЕ» и ее реализация в компьютерном конструкторе «Начала электроники» В схеме инвертора один вход и один выход. Когда переключатель не замкнут (на входе 0), лампочка горит (на выходе 1). Наоборот, когда кнопку переключателя замыкают (на входе 1), лампочка гаснет (на выходе 0). Контрольные вопросы 1. Объясните действие электрических схем, реализующих модели логических элементов, с точки зрения законов постоянного тока. Основы логики и логические основы компьютера 183 4 & В) А в 4vB 4& в А & в (4v В)&(А & В) 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 Основы логики и логические основы компьютера 185 Теперь, на основе полученных логических выражений, можно построить из базовых логических элементов схему полусумматора. По логической формуле переноса легко определить, что для получения переноса необходимо использовать логический элемент «И». Анализ логической формулы для суммы показывает, что на выходе должен стоять элемент логического умножения «И», который имеет два входа. На один из входов подается результат логического сложения исходных величин А v Б, т. е. на него должен подаваться сигнал с элемента логического сложения «ИЛИ». На второй вход требуется подать результат инвертированного логического умножения исходных сигналов А & В, т. е. на второй вход подается сигнал с элемента «НЕ», на вход которого, в свою очередь, поступает сигнал с элемента логического умножения «И» (рис. 3.14). И ИЛИ А&В л&в НЕ <> AvB Р =А&В И 5 ={AvB)&{A&B) Рис. 3.14. Полусумматор двоичных чисел Данная схема называется полусумматором, так как реализует суммирование одноразрядных двоичных чисел без учета переноса из младшего разряда. Полный одноразрядный сумматор. Рассмотрим схему сложения двух д-разрядных двоичных чисел ...a,a.^i...aQ и Ъп Pi Pj-l а^.,. Si S-_^...Sq При сложении цифр i-ro разряда складываются а. и Ь., а также — перенос из /-1-го разряда. Результатом будет S- —сумма и Pj — перенос в старший разряд. Одноразрядный двоичный сумматор — это устройство с тремя входами и двумя выходами. 186 FwiaBa 3 Таким образом, полный одноразрядный сумматор должен иметь три входа: А, В — слагаемые и — перенос из младшего разряда и два выхода: сумму S и перенос Р. Таблица сложения в этом случае будет иметь следующий вид (табл. 3.15). Таблица 3.15. Таблица сложения одноразрядных двоичных чисел с учетом переноса из младшего разряда Слагаемые Перенос из младшего разряда Перенос Сумма А в Ро Р $ 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 Идея построения полного сумматора точно такая же, как и полусумматора. Из таблицы сложения видно, что перенос (логическая переменная Р) принимает значение 1 тогда, когда хотя бы две входные логические переменные одновременно принимают значение 1. Таким образом, перенос реализуется путем логического сложения результатов попарного логического умножения входных переменных А, В, Р^. Формула переноса получает следующий вид: Р = {А & В) V {А & Pq) V (В ^ Pq). Для получения значения суммы (логическая переменная S) необходимо результат логического сложения входных переменных А, В, Pq умножить на инвертированный перенос Р: S ^{Av Bv Р^)8сР. Данное логическое выражение дает правильные значения суммы во всех случаях, кроме одного, когда все входные логические переменные принимают значение 1. Действительно: Р = (1 & 1) V (1 & 1) V (1 & 1) = 1, S = (1 V 1 V 1) & Р - 1 & О - 0. Для получения правильного значения суммы (для данного случая переменная S должна принимать значение 1) необ- Основы логики и логические основы компьютера 187 ходимо СЛОЖИТЬ полученное выше выражение для суммы с результатом логического умножения входных переменных А, Б, Pq* в результате логическое выражение для вычисления суммы в полном сумматоре принимает следующий вид: S = [А V В V Р^) {А & В & Pq). Теперь можно построить логическую схему полного одноразрядного сумматора (рис* 3*15)* В И И или Р = (А & В) V (>1 & р ) V (В & р ) И или ^ НЕ И И или S = (AvBvP)&Pv(A&B&P) Рис. 3.15. Сумматор двоичных чисел Многоразрядный сумматор процессора состоит из полных одноразрядных сумматоров. На каждый разряд ставится одноразрядный сумматор, причем выход (перенос) сумматора младшего разряда подключен ко входу сумматора старшего разряда. Контрольные вопросы 1. Какие значения будут иметь перенос и сумма при суммировании одноразрядных двоичных чисел и переноса из младшего разряда, равных 1? Проследите по логической схеме сумматора. Компьюте рактикум 3.10. в редакторе схем нарисовать логические схемы полусумматора и сумматора одноразрядных двоичных чисел. \informatika10\logic\log.spl Windows-CD \ 188 Глава 3 3.3.3. Триггер Важнейшей структурной единицей оперативной памяти компьютера, а также внутренних регистров процессора является триггер. Триггер может находиться в одном из двух устойчивых состояний, что позволяет запоминать, хранить и считывать 1 бит информации. Триггер можно построить из двух логических элементов «ИЛИ» и двух элементов «НЕ». При этом выход первого элемента «НЕ» соединен со входом второго элемента «ИЛИ», а выход второго элемента «НЕ» соединен со входом первого элемента «ИЛИ». Триггер имеет установочный вход S (от англ, set — установка) и вход сброса R (от англ, reset — сброс), а также выход Q (рис. 3.16). Рис. 3.16. Триггер Для записи 1 бита на вход S (установочный) подается сигнал 1. Последовательно рассмотрев по логической схеме прохождение сигнала, видим, что на выходе триггера Q устанавливается 1. Триггер переходит в это состояние и будет находиться в нем и после того, как сигнал на входе S исчезнет. Таким образом, триггер будет устойчиво хранить 1 бит. Для того чтобы сбросить бит данных и подготовиться к приему нового бита, подается сигнал 1 на вход Е (сброс), после чего триггер возвратится к исходному «нулевому» состоянию. Подача на оба входа S и R логической единицы может привести к неоднозначному результату, поэтому такая комбинация входных сигналов запрещена (табл. 3.16). Таблица 3.16. Таблица состояний входов и выходов триггера Входы Выход О 5 R 0 0 Q 1 0 1 0 1 0 Основы логики и логические основы компьютера 189 Контрольные вопросы 1. Проследите по логической схеме триггера, что происходит после поступления сигнала 1 на вход R (сброс). р: Компьютертый ррактикум 3.11. в редакторе схем нарисовать логическую схему триггера. Windows-CD \ \informatika10UogicUog.spl Глава 4_________________ Алгоритмизация и основы объектно-ориентированного программирования VisualStudio-CD В процессе изучения данной темы рекомендуется использовать программное обеспечение для операционной системы Windows: • систему объектно-ориентированного программирования Visual Basic 2005; • систему объектно-ориентированного программирования Visual С#; • систему объектно-ориентированного программирования Visual J#. TurboDelphi-CD • систему объектно-ориентированного программирования Turbo Delphi. 4.1. Алгоритм и кодирование основных алгоритмических структур 4.1.1. Алгоритм и его свойства Алгоритмы могут описывать процессы преобразования самых разных объектов. Широкое распространение получили вычислительные алгоритмы, которые описывают преобразование числовых данных. Само слово «алгоритм» происходит от «algorithmi» — латинской формы написания имени выдающегося математика IX века аль-Хорезми, который сформулировал правила выполнения арифметических операций. Результативность и дискретность. Алгоритм должен обеспечивать преобразование объекта из начального состояния в конечное состояние за определенное число дискретных шагов. Алгоритмизация и основы объектно-ориентированного программирования 191 Массовость. Один и тот же алгоритм может применяться к большому количеству однотипных объектов. Детерминированность. Исполнитель должен выполнять команды алгоритма в строго определенной последовательности. Выполнимость и понятность команд. Алгоритм должен содержать команды, входящие в систему команд исполнителя и записанные на понятном для исполнителя языке. ■.а- Алгоритм — это строго детерминированная последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью понятных исполнителю команд. Блок-схемы алгоритмов. Блок-схема позволяет сделать алгоритм более наглядным и выделяет в алгоритме основные алгоритмические структуры (линейная, ветвление, выбор и цикл). Если исполнителем алгоритма является человек, то он может по блок-схеме легко проследить выполнение алгоритма, так как элементы блок-схем соединены стрелками, указывающими шаги выполнения алгоритма. Элементы алгоритма изображаются на блок-схеме с помощью различных геометрических фигур, внутри которых записывается программный код (табл. 4.1). Таблица 4.1. Элементы блок-схем Элемент блок-схемы Назначение элемента блок-схемы ^ Начало ^ Прямоугольник с закругленными углами, применяется для обозначения начала или конца алгоритма анные Параллелограмм, предназначен для опи' сания ввода или вывода данных, имеет один вход вверху и один выход внизу i [Последовательность I команд Прямоугольник, применяется для описания линейной последовательности команд, имеет один вход вверху и один выход внизу I 192 Глава 4 Элемент блок-схемы Назначение элемента блок-схемы I Нет Ромб, служит для обозначения условий в алгоритмических структурах «ветвление» и «выбор», имеет один вход верху и два выхода (налево, если условие истинно, и направо, если условие ложно) Подпрограмма Прямоугольник в прямоугольнике, применяется для вызова отдельно описанного алгоритма (подпрограммы) Объявление переменных Прямоугольник со срезанным углом, применяется для объявления переменных или ввода комментариев Контрольные вопросы 1. Какие ИЗ нижеперечисленных правил являются алгоритмами? Ответ обоснуйте: • орфографические правила; • правила выполнения арифметических операций; • правила техники безопасности; • правила перевода чисел из одной системы счисления в другую. 4.1.2. Алгоритмические структуры «ветвление» и «выбор» Алгоритмическая структура «ветвление». В отличие от линейных алгоритмов, в которых команды выполняются последовательно одна за другой, в алгоритмическую структуру «ветвление» входит условие, в случае истинности условия реализуется последовательность команд Серия 1, в случае ложности — последовательность команд Серия 2, В алгоритмической структуре «ветвление» одна или другая серия команд выполняется в зависимости от истинности условия. Алгоритмическая структура «ветвление» может быть зафиксирована графически, с помощью блок-схемы (рис. 4.1). Алгоритмизация и основы объектно-ориентированного программирования 193 На языках объектно-ориентированного программирования алгоритмическая структура «ветвление» кодируется с использованием оператора if. После первого ключевого слова if должно быть размещено условие. После ключевого слова Then (в языках Visual C# и Visual J# оно отсутствует) идет последовательность команд (Серия 1), которая должна выполняться, если условие принимает значение «истина». После ключевого слова Else размещается последовательность команд (Серия 2), которая должна выполняться, если условие принимает значение «ложь». В сокращенной форме оператора ключевое слово Else отсутствует. (Необязательные части оператора записываются в квадратных скобках.) Тогда, если условие ложно, выполнение оператора условного перехода заканчивается и выполняется следующая строка программы. Рис. 4.1. Алгоритмическая структура «ветвление» Плакаты. Таблица 7 «Кодирование алгоритмических структур «ветвление» и «выбор» Алгоритмическая структура «выбор». Алгоритмическая структура «выбор» применяется для реализации ветвления со многими вариантами серий команд. В структуру выбора входят несколько условий, проверка которых осуществляется в последовательности их записи в структуре выбора. При истинности одного из условий (Условие 1 или Условие 2 и т. д.) выполняется соответствующая последовательность команд (Серия I или Серия 2 и т. д.). Если ни одно из условий не будет истинно, то будет выполнена последовательность команд Серия. д О В алгоритмической структуре «выбор» выполняется одна из нескольких последовательностей команд при истинности соответствующего условия. Алгоритмическая структура «выбор» может быть зафиксирована графически, с помощью блок-схемы (рис. 4.2). На языках объектно-ориентированного программирования алгоритмическая структура «выбор» кодируется с использо- 194 Глава 4 Рис. 4.2. Алгоритмическая структура «выбор» ванием оператора выбора. На языке программирования Visual Basic .NET оператор выбора начинается с ключевых слов Select Case, на языках Visual C# и Visual J# — с ключевого слова switch, а на языке Turbo Delphi — с ключевого слова Case, После ключевого слова записывается выражение (переменная или арифметическое выражение). Заданное выражение сравнивается с определенными значениями (или условиями). При истинности одного из условий начинает выполняться соответствующая серия команд. Если ни одно из условий не истинно, то будет выполнена серия команд после ключевого слова Else (в языках Visual Basic .NET и Turbo Delphi) или ключевого слова default (в языках Visual C# и Visual J#). В сокращенной форме оператора ключевое слово Else (default) отсутствует. (Необязательные части оператора записываются в квадратных скобках.) Тогда, если все условия ложны, выполнение оператора выбора заканчивается и выполняется следующая строка программы. Плакаты. Таблица 7 «Кодирование алгоритмических структур «ветвление» и «выбор» 3 ад а и и я 4.1. Составить и зафиксировать в форме блок-схемы алгоритм тестирования. практическая работа 4.2. Проект «Тест» 4.2. Составить и зафиксировать в форме блок-схемы алгоритм выставления отметки в зависимости от количества ошибок. Графический интерфейс. Проект «Отметка» Алгоритмизация и основы объектно-ориентированного программирования 195 4.1.3. Алгоритмическая структура «цикл» В алгоритмическую структуру «цикл» входит серия команд, выполняемая многократно. Такая последовательность команд называется телом цикла. 0 В алгоритмической структуре «цикл» серия команд (тело цикла) выполняется многократно. Циклические алгоритмические структуры бывают двух типов: • циклы со счетчиком, в которых тело цикла выполняется определенное количество раз; • циклы по условию, в которых тело цикла выполняется, пока истинно условие. Цикл со счетчиком. Цикл со счетчиком используется, когда заранее известно, какое число повторений тела цикла необходимо выполнить. Количество повторений задается с использованием счетчика. Когда заранее известно, какое число повторений тела цикла необходимо выполнить, можно воспользоваться оператором цикла со счетчиком For. В заголовке цикла устанавливается начальное значение переменной Счетчик, определяется величина ее конечного значения и величина изменения значения за один шаг. Затем располагаются многократно выполняющиеся операторы, являющиеся телом цикла. Плакаты. Таблица 8 «Кодирование алгоритмической структуры «цикл» Цикл с условием. Цикл с условием используется, когда заранее неизвестно, какое количество раз должно повториться тело цикла. В таких случаях количество повторений зависит от некоторого условия. Цикл называется циклом с предусловием, если условие выхода из цикла стоит в начале, перед телом цикла. Цикл с предусловием не выполняется даже один раз в случае ложности условия. Цикл с предусловием реализуется с помощью инструкций While (в языке Visual Basic .NET Do While). Проверка условия выхода из цикла проводится до начала цикла с помощью ключевого слова While. Ключевое слово While обеспечивает выполнение цикла, пока истинно условие. Как только условие примет значение «ложь», выполнение цикла закончится. 196 Глава 4 В языке Visual Basic .NET используется также ключевое слово Until. Ключевое слово Until обеспечивает выполнение цикла до тех пор, пока условие не станет истинным, т, е. пока условие имеет значение «ложь». Как только условие примет значение «истина», выполнение цикла закончится. Цикл называется циклом с постусловием, если условие выхода из цикла стоит в конце, после тела цикла. Цикл с постусловием выполняется обязательно, как минимум, один раз, независимо от того, истинно условие или нет. Цикл с постусловием реализуется с помощью инструкций Do (в языке Turbo Delphi Repeat). Проверка условия выхода из цикла проводится после цикла с помощью ключевого слова While (в языке Turbo Delphi Until). Как только условие примет значение «ложь», выполнение цикла закончится. В языке Visual Basic .NET используется также ключевое слово Until. Плакаты. Таблица 8 «Кодирование алгоритмической структуры «цикл» Алгоритмическая структура «цикл» может быть зафиксирована графически, с помощью блок-схемы. Рис. 4.3. Алгоритмическая структура «цикл» Вспомогательные алгоритмы. При разработке сложного алгоритма целесообразно стараться выделить в нем последовательности действий, которые выполняют решение каких-либо подзадач и могут многократно вызываться из основного алгоритма. Такие алгоритмы называются вспомогательными и в алгоритмических языках программирования реализуются в форме подпрограмм, процедур или функций, которые вызываются из основной программы. Алгоритмизация и основы объектно-ориентированного программирования 197 Задания 4.3. Составить и зафиксировать в форме блок-схемы алгоритм вычисления факториала числа. 4.10. Итерация и рекурсия. Проект «Факториал» 4.4. Составить и зафиксировать в форме блок-схемы алгоритм определения максимального элемента в массиве. 4.16.2. Поиск элемента в массивах. Проект «Поиск максимального элемента» 4.2. История развития языков программирования Выполнение алгоритма может быть автоматически реализовано техническими устройствами, среди которых особое место занимает компьютер. При этом говорят, что компьютер исполняет программу (последовательность команд), реализующую алгоритм. 0 Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Машинный язык. На заре компьютерной эры, в 40-50-е годы XX века, программы писались на машинном языке (computer language) и представляли собой очень длинные последовательности нулей и единиц. Составление и отладка таких программ были чрезвычайно трудоемким делом. Программы на машинных языках были машинно зависимыми, т. е. для каждой ЭВМ необходимо было создавать свою собственную программу, так как в ней в явной форме учитывались аппаратные ресурсы ЭВМ. Ассемблер. В начале 50-х годов XX века были созданы языки программирования ассемблеры (assembly language). Вместо одних только нулей и единиц программисты теперь могли пользоваться операторами (MOV, A0D, SUB и т. д.), которые были похожи на слова английского языка. Для преобразования текста программы на ассемблере в понятный компьютеру машинный код использовался компилятор, который 198 Глава 4 загружался в оперативную память ЭВМ, Программы на ассемблере были также машинно зависимыми, т. е. ассемблеры для различных процессоров существенно различались между собой. Первые языки програ1Ммирования высокого уровня, С середины 50-х годов XX века начали создаваться первые языки программирования высокого уровня (high-level languages). Эти языки были машинно независимыми языками программирования, так как использовали универсальную компьютерную логику и не были привязаны к типу ЭВМ. Однако для каждого языка и каждого типа ЭВМ должны были быть разработаны собственные компиляторы, которые загружались в оперативную память. Языки программирования высокого уровня создавались и использовались для решения разных задач: • язык FORTRAN (расшифровывается FORmula TRANs-lator — транслятор формул) был предназначен для научных и технических расчетов; • язык COBOL (Common Business-Oriented Language — стандартный язык для делового применения) в основном предназначался для коммерческих приложений, обрабатывавших большие объемы нечисловых данных; • язык BASIC (Beginner’s All-Purpose Symbolic Instruction Code — универсальный язык символьных инструкций для начинающих) отличается простотой изучения и был ориентирован на начинающих программистов. Алгоритмические языки программирования. С начала 80-х годов XX века начали создаваться алгоритмические языки программирования, которые позволили программистам перейти к структурному программированию. Отличительной чертой этих языков было использование операторов ветвления, выбора и цикла и отказ от хаотического использования оператора goto. Наибольшее влияние на переход к структурному алгоритмическому программированию оказали: • язык Pascal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля) — алгоритмический язык, который позволяет легко кодировать основные алгоритмические структуры; • язык С («Си»), позволяющий создавать быстро и эффективно выполняющийся программный код. Языки объектно-ориентированного программирования. С 90-х годов XX века начали создаваться объектно-ориентированные языки программирования. В основу этих языков Алгоритмизация и основы объектно-ориентированного программирования 199 были положены программные объекты, которые объединяли данные и методы их обработки. Необходимо подчеркнуть, что в языках объектно-ориентированного программирования сохранялся алгоритмический стиль программирования. С течением времени для этих языков были разработаны интегрированные среды разработки, позволяющие визуально конструировать графический интерфейс приложений: • язык C++ является прямым потомком алгоритмического языка С; • язык Object Pascal был разработан компанией Borland на основе алгоритмического языка Pascal. После создания интегрированной среды разработки система программирования получила название Delphi, а свободно распространяемая версия — Turbo Delphi; • язык Visual Basic был создан корпорацией Microsoft на основе языка QBasic для разработки приложений с графическим интерфейсом в среде операционной системы Windows. Языки программирования для компьютерных сетей, В 90-е годы XX века в связи с бурным развитием Интернета были созданы языки, обеспечивающие межплатформенную совместимость. На подключенных к Интернету компьютерах с различными операционными системами (Windows, Linux, Mac OS и др.) могли выполняться одни и те же программы. Исходная программа на таких языках компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной: • язык Java, полноценный объектно-ориентированный язык, был разработан фирмой Sun Microsystems для создания сетевого программного обеспечения; • язык JavaScript, язык сценариев Web-страниц, разработан компанией Netscape. Языки программирования на платформе .NET. В настоящее время многие программисты выбирают интегрированную систему программирования Visual Studio .NET на платформе .NET Framework, разработанной корпорацией Microsoft. Эта платформа предоставляет возможность создавать приложения в различных системах объектно-ориентированного программирования, в которых для создания программного кода используются объектно-ориентированные языки программирования, в том числе; 200 Глава 4 • на языке Visual Basic .NET, созданном на основе языка Visual Basic и сохраняющем простоту своих предшественников; • на языке Visual C# (читается С-шарп), созданном на основе языков C++ и Java; • на языке Visual J# (читается J-шарп), созданном на основе языков Java и JavaScript. История развития языков программирования JavaScript. 1995 Visual J#. 2003 Java,1995 С, 1971 Visual С#. 2003 C++,1983 Object Pascal, 1989 Pascal, 1970 Delphi, 1995 Turbo Delphi, 2006 BASIC, 1964 j-».| QBAStC, 1975 —»jv^suat Basic, 199l|-» V^suat Basic .Net, 2003 COBOL, 1959 FORTRAN. 1954 Ассемблер, 1951 Машинный язык, 1945 1945 1955 1965 1975 1985 1995 2005 Рис. 4.4. История развития языков программирования Контрольные вопросы 1. в чем состоит преимущество языков высокого уровня перед машинным языком и ассемблером? 2. Каковы характерные особенности алгоритмических языков программирования? Объектно-ориентированных языков программирования? 3. Какими причинами было обусловлено появление языков Java и JavaScript? 4. На основе каких языков возникли языки программирования на платформе .NET? Алгоритмизация и основы объектно-ориентированного программирования 201 4.3. Введение в объектно-ориентированное визуальное программирование 4.3.1. Объекты: свойства и методы Объекты (Objects). Основной единицей в объектно-ориентированном программировании является программный объект, который объединяет в себе как описывающие его свойства, так и действия объекта (процедуры) — методы. Если говорить образно, то объекты — это существительные, свойства объекта — это прилагательные, а методы объекта — это глаголы. Программные объекты обладают свойствами, имеют методы, для них можно описать реакцию на события. Классы объектов являются «шаблонами», определяющими наборы свойств, методов и событий, по которым создаются объекты. Основными классами объектов являются объекты, реализующие графический интерфейс проектов. Объект, созданный по «шаблону» класса объектов, является экземпляром класса и наследует весь набор свойств, методов и событий данного класса. Каждый экземпляр класса имеет уникальное для данного класса имя. Различные экземпляры класса обладают одинаковым набором свойств, однако значения свойств у них могут отличаться. Свойства объектов (Properties). Каждый объект обладает определенным набором свойств. Существует несколько основных ситуаций, в которых можно менять свойства объектов. Во время разработки проекта [design] можно установить первоначальные значения свойств объекта. В режиме выполнения проекта ;run] можно установить значения свойств объекта с использованием программного кода. Для присваивания свойству объекта нового значения в левой части строки программного кода необходимо указать имя объекта и затем название свойства. В правой части строки необходимо записать конкретное значение свойства. Например, программный код вывода на надпись текста в различных языках программирования будет выглядеть следующим образом. 202 Глава 4 0 Язык Visual Basic .NET: Label 1. Text = "Текс'г" Язык Visual C#; labe1. Text - "Текст"; Язык Turbo Delphi: Labell.Caption := 'Текст' В программном коде для доступа к свойствам и методам используется точечная нотация (Dot-запись), при которой имена объектов, свойств и методов отделяются друг от друга знаком точка «.». Методы объектов (Methods). Для того чтобы объект выполнил какую-либо операцию, необходимо применить метод, которым он обладает. Многие методы имеют аргументы, которые позволяют задать параметры выполняемых действий. Обратиться к методу объекта можно также с использованием точечной нотации, причем аргументы метода заключаются в скобки. Например, для добавления элемента в список в языках объектно-ориентированного программирования используется метод Add (). 0 Язык Visual Basic .NET: ListBoxl. Items . Add {"Э.ломснт списка") Язык Visual С#: iistEoxl. Items .Add ("Элсмс1:с списка") ; Язык Visual J#: xistEoxl .get_ Items () . Add ("Э.л'емент сг’.иска") Язык Turbo Delphi: Li St.Box') . : :.em:S . Add {'3j:eM(Vr-;'r списка') ; Контрольные вопросы 1. Чем различаются понятия «класс объектов» и «экземпляр класса»? 2, В экземпляре класса можно изменить можно набор свойств? Набор методов? Значения свойств? Алгоритмизация и основы объектно-ориентированного программирования 203 4.3.2. События События (Events). Событие представляет собой изменение некоторого состояния, распознаваемое объектом. Для реакции на это изменение могут быть описаны некоторые методы — обработчики, обрабатывающие события в программном коде. Событие может создаваться пользователем (например, щелчок мышью или нажатие клавиши) или быть результатом воздействия других программных объектов. Каждый элемент управления может реагировать на различные события, однако есть события (например, Click — щелчок), на которые реагирует большинство типов элементов управления. Обработчик события. Для каждого события можно запрограммировать обработчик события (событийную процедуру). Если пользователь производит какое-либо воздействие на элемент графического интерфейса (например, щелчок), в качестве обработчика выполняется некоторая последовательность действий в форме процедуры. Каждый обработчик события представляет собой процедуру, которая реализует определенный алгоритм. Создание программного кода обработчика события производится с использованием алгоритмических структур различных типов (линейная, ветвление, выбор или цикл). Обработчик события представляет собой процедуру, которая начинает выполняться после реализации определенного события. с? Имя обработчика события (событийной процедуры) включает в себя имя объекта и имя события. После имени событийной процедуры в скобках указываются параметры, которые позволяют правильно обработать событие. В событийной процедуре на языках .NET существует два параметра, а в языке Turbo Delphi — один параметр. Ниже на четырех языках программирования показан пустой обработчик события г. элемента управления СП 204 Глава 4 Язык Visual Basic .NET: Private Sub Buttor. 1_C 1 ick (ByVal ser.der As System.Object, ByVal e As System.EvertArgs) Handles Buttons.Click End Sub Язык Visual C#: private void buttonl System.EventArgs e) ick(object sender. Язык Visual J#: private void buttonl_ClicK (Object sender, System.EventArgs e) Язык Turbo Delphi: procedure TForml.Buttonl: begin end; dick(Sender: TObject); Первый параметр, sender, предоставляет ссылку на объект, который вызывает событие. Например, при щелчке мышью по кнопке наступает событие Click данной кнопки и ее адрес передается обработчику события и сохраняется в аргументе sender, В языках программирования на платформе .NET используется и второй параметр е, который передает данные, характерные для обрабатываемого события. Этот параметр обычно имеет тип System.EventArgs, однако существуют события, которые требуют особый тип данных. Например, если обрабатываются события мыши, то используется параметр MouseEventArgs. С помощью этого параметра можно получить сведения о координатах мыши, какая была нажата кнопка и сколько было сделано щелчков. Для вывода всех свойств аргумента е (рис. 4.5) достаточно ввести в процедуре обработчика события: sj [^i Button. Clicks ^ Delta ^ Empty 4 GetType EfX Y Рис. 4.5. Возможные свойства аргумента е Алгоритмизация и основы объектно-ориентированного программирования 205 4.13.1. Графика в языках программирования Visual Basic .NET, Visual C# и Visual J# Контрольные вопросы 1. В чем состоит различие между обработчиками событий в языках программирования на платформе .NET и событийными процедурами в языке Turbo Delphi? 4.3.3. Проекты и приложения Проект (Project). С одной стороны, система объектно-ориентированного визуального программирования является системой программирования, так как позволяет кодировать алгоритмы на данном языке. С другой стороны, система объектно-ориентированного визуального программирования является средой проектирования, так как позволяет осуществлять визуальное конструирование графического интерфейса. Результатом процессов программирования и проектирования является проект, который объединяет в себе программный код и графический интерфейс. В объектно-ориентированном программировании проект может включать несколько форм, причем каждой форме, с помощью которой реализуется графический интерфейс проекта, соответствует свой программный модуль формы. Кроме того, в состав проекта могут входить отдельные самостоятельные программные модули. Проект включает в себя программные модули форм и самостоятельные программные модули в виде отдельных файлов. Проект может быть запущен на выполнение только из системы объектно- ориентированного программирования. Решения (Solution). В системах объектно-ориентированного программирования Visual Basic .NET, Visual C# и Visual J# проекты объединяются в решения, а в системе Turbo Delphi — в группы. Решение (группа) включает один или несколько проектов, которые в упорядоченном виде в системах Visual Basic .NET, Visual C# и Visual J# отображаются в Обозрева-теле решений (рис. 4.8), а системе Turbo Delphi — в окне 206 Глава 4 Project Manager (рис. 4.11). Решение (группа) создается автоматически при создании нового проекта и при необходимости к решению можно добавлять новые проекты. Решения (группы) позволяют работать с несколькими проектами в пределах одного экземпляра системы объектно-ориентированного программирования. Интерпретаторы и компиляторы. Для того чтобы процессор мог выполнить программу, эта программа и данные, с которыми она работает, должны быть загружены в оперативную память. Итак, мы создали программу на языке программирования (некоторый текст) и загрузили ее в оперативную память. Теперь мы хотим, чтобы процессор ее выполнил, однако процессор «понимает» команды на машинном языке, а наша программа написана на языке программирования. Как быть? Необходимо, чтобы в оперативной памяти находилась программа-переводчик (транслятор), автоматически переводящая с языка программирования на машинный язык. Компьютер может выполнять программы, написанные только на том языке программирования, транслятор которого размещен в оперативной памяти компьютера. Трансляторы языков программирования бывают двух типов: интерпретаторы и компиляторы. Интерпретатор — это программа, которая обеспечивает последовательный «перевод» инструкций программы на машинный язык с одновременным их выполнением. Поэтому при каждом запуске программы на выполнение эта процедура повторяется. Достоинством интерпретаторов является удобство отладки программы (поиска в ней ошибок), так как возможно «пошаговое» ее исполнение, а недостатком — сравнр1тельно малая скорость выполнения. Компилятор действует иначе, он переводит весь текст программы на машинный язык и сохраняет его в исполнимом файле (обычно с расширением ехе). Затем этот уже готовый к исполнению файл, записанный на машинном языке, можно запускать на исполнение многократно. Достоинством компиляторов является большая скорость выполнения программы, а недостатком — трудоемкость отладки, так как невозможно пошаговое выполнение программы. Системы объектно-ориентированного программирования позволяют программисту контролировать в интегрированной среде выполнение программ с помощью отладчика. Это дает возможность отлаживать программу пошагово. Алгоритмизация и основы объектно-ориентированного программирования 207 Приложение интегрирует программный код и графический интерфейс в одном исполнимом файле, который может запускаться непосредственно в операционной системе. Этапы разработки проектов. Создание проектов и приложений в системах объектно-ориентированного программирования можно условно разделить на несколько этапов: 1. Создание графического интерфейса проекта. На форму помещаются элементы управления, которые должны обеспечить взаимодействие проекта с пользователем. 2. Установка значений свойств объектов графического интерфейса. В режиме конструирования задаются значения свойств формы и элементов управления, помещенных ранее на форму. 3. Создание и редактирование программного кода. Создаются заготовки обработчиков событий (двойной щелчок мышью по элементу управления вызывает заготовку обработчика того события, которое является для данного элемента управления наиболее часто используемым). Затем в редакторе программного кода производится ввод и редактирование программного кода обработчиков событий. 4. Сохранение проекта. Так как проекты включают в себя несколько файлов, рекомендуется для каждого проекта создать отдельную папку на диске. Сохранение проекта производится с помощью пунктов меню Файл. 5. Компиляция проекта в приложение. Сохраненный проект может выполняться только в самой системе программирования. Для того чтобы преобразовать проект в приложение, которое может выполняться непосредственно в среде операционной системы, необходимо выполнить компиляцию проекта, в процессе которой приложение сохраняется в исполнимом файле (с расширением ехе). Контрольные вопросы 1. в чем состоит различие между интерпретаторами и компиляторами? 2. В чем состоит различие между проектом и приложением? 208 Глава 4 4.4. Система объектно-ориентированного программирования Microsoft Visual Studio .NET 4.4.1. Платформа .NET Framework Платформа .NET Framework является основой системы программирования Microsoft Visual Studio .NET. Она позволяет программировать на различных языках (Visual Basic .NET, Visual С#, Visual J# и др.) и достаточно легко переносить приложения с одного языка программирования на другой. Платформа .NET Framework существует в двух версиях: • .NET Framework 1.1 входит в состав Visual Studio .NET 2003; • .NET Framework 2.0 входит в состав Visual Studio 2005 Express Edition. Общеязыковая среда выполнения программ. Основным компонентом .NET Framework является общеязыковая среда выполнения программ (CLR — Common Language Runtime), которая обеспечивает компиляцию программ в два этапа. Сначала программа, написанная на объектно-ориентированном языке, компилируется в промежуточный код на общем промежуточном языке (CIL — Common Intermediate Language), а затем он компилируется в машинный код. @ Язык CIL по своему назначению и набору команд похож на язык ассемблер, однако он ориентирован не на систему команд конкретного кремниевого процессора, а на систему команд общеязыковой среды выполнения программ CLR. Проект «Консольное приложение». На платформе .NET Framework с использованием языков программирования Visual Basic .NET, Visual C# и Visual J# создать консольное приложение (т. е. приложение, не имеющее графического интерфейса), которое выводит название языка программирования. Алгоритмизация и основы объектно-ориентированного программирования 209 Проект «Консольное приложение» на языке программирования Visual Basic .NET 1. В простом текстовом редакторе, например в Блокноте, введем программный код консольного приложения. Imports System Class HelloVB Shared Sub Main() Console.Write("Язык программирования Visual Basic") End Sub End Class 2. Сохранить программный код консольного приложения в файле HelloVB.vb на жестком диске, например в папке D:\He)loVB\. Для компиляции программного кода необходимо использовать компилятор командной строки языка программирования Visual Basic .NET vbc.exe, который входит в состав платформы .NET Framework. Компилятор находится в папке C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322. 3. Скопировать компилятор командной строки vbc.exe в папку D:\HelloVB\. Создадим исполнимый файл консольного приложения HelloVB.exe. 4. Запустить окно командной строки командой [Пуск-Программы-Стандартные'Командная строка], 5. В окне командной строки перейти на диск D:, а затем с использованием команды CD (change directory) перейти в папку D:VHelloVB\, где хранятся файл с программным кодом консольного приложения и компилятор программной строки. 6. В окне командной строки ввести команду: D:\HelloVB>vbc.exe HelloVB.vb Теперь можно запустить полученный исполнимый файл консольного приложения HeiloVB.exe. 7. Ввести команду: D:\HelioVB>HelloVB.exe 8. В окне командной строки будет напечатано (рис. 4.6): Язык программирования Visual Basic 210 Глава 4 Id : SH е 1 Хо U Б >И е П pU Б. е 1 |Язык прогрлмнйрования Uisual Basic " . . . i и ■ и i 1 3 Рис. 4.6. Создание и запуск консольного приложения Проект «Консольное приложение» на языке программирования C# 1. В текстовом редакторе Блокнот ввести программный код консольного приложения: using System; class HelloC static void Main(string[ ] args) I Console . Wri Le ("Язык прох‘'раммирсзания С#") ; } i 2. Сохранить программный код консольного приложения в файле HelloC.CS на жестком диске, например в папке D;\Hel)oC\. Для компиляции программного кода необходимо использовать компилятор командной строки языка программирования C# csc.exe, который входит в состав платформы .NET Framework. Компилятор находится в папке C:\WINDOWS\ Microsoft.NET\Framework\v1.1.4322. Создадим исполнимый файл консольного приложения HelloC.exe. 3. Запустить окно командной строки командой [Пуск-Программы-Стандартные-Командная строка]. 4. В окне командной строки перейти на диск D:, а затем с использованием команды CD (change directory) перейти в Алгоритмизация и основы объектно-ориентированного программирования 211 папку D:\HelloC\, где хранится файл с программным кодом консольного приложения. 5. Ввести команду компиляции: D:\HelloC>C:\wrNDOWS\Microsoft.NET\Framework\v1.1.4322\ csc.exe HelloC.cs Теперь можно запустить полученный исполнимый файл консольного приложения HelloC.exe. 6. В окне командной строки ввести команду: D:\HelloC>HelloC.exe 7. В окне командной строки будет напечатано: Язык программирования C# Проект «Консольное приложение» на языке программирования J# 1. В текстовом редакторе Блокнот ввести программный код консольного приложения: import System; Console.Write ("Язык программирования J#") ; 2. Сохранить программный код консольного приложения в файле HelloJ.jsl на жестком диске, например в папке D;\He!loJ\. 3. Запустить окно командной строки командой [Пуск-Программы-Стандартные-Командная строка]. 4. В окне командной строки перейти на диск D:, а затем с использованием команды CD (change directory) перейти в папку D:\HelloJ\, где хранится файл с программным кодом консольного приложения. 5. Ввести команду компиляции: D:\HelloJ>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\ jsc.exe HelloJ.jsl 6. В окне командной строки ввести команду: D:\HelloJ>HelloJ.exe 7. В окне командной строки будет напечатано: Язык программирсзания J# 212 Глава 4 Компьюте рактикум 4.1, Создать в текстовом редакторе проект «Консольное приложение». Windows-CD \informatika10\...\Hello*\ 4.4.2. Интегрированная среда разработки языков Visual Basic .NET, Visual C# и Visual J# Состав Visual Studio .NET. Microsoft Visual Studio .NET — это инструмент разработки программ, позволяющий писать программы на нескольких языках программирования .NET. В состав Visual Studio .NET входят следующие языки программирования (рис. 4.7): • Visual Basic .NET; • Visual C# (произносится Си-шарп); • Visual J# (произносится Джей-шарп); • Visual С+н- (произносится С плюс плюс); • ASP.NET (Web Developer); • Справочная система. Создать проект Типы гроектсе: 3^ шаблоны: П1>.'<>ть Вз'А’ _J Visual C# Projects D Visual 3# Projects •• D Visual C++ Projects CJ Проекть' установки и раэеертьеания ». 'U Другие гроекты ;_i Решения Visual Studio Г^зиложе,.. Библиотека Библиотека Windows классов элементе... Smart Веб-при... Зеб-служба Device А... ASP.NET ASP NET Ггьоект д^-^’аедзания фйложения с ^1гкР^57нгерфейсом noibsoeerem Имя: Расположение: zl I Windows Арр icatioTij |E:\inforrriatikalO ГЬоект будет создан в: E:\infcrfrMaiO\V^lrdowsAppSjC£iicril. и Обзор... ТЁольше ОК Отмена Справка 4.7. Выбор языка программирования в Visual Studio.NET при создании нового проекта Алгоритмизация и основы объектно-ориентированного программирования 213 Русскоязычная справка по Visual Studio .NET https://msdn.microsoft. comflibrary/rus/ о Система объектно-ориентированного программировав ния Visual Studio .NET существует в двух версиях: • Visual Studio .NET 2003 — полностью локализован^ ная русскоязычная версия; • Visual Studio 2005 Express Edition — англоязычная свободно распространяемая версия для начинающих программистов. Интегрированная среда разработки. Visual Studio .NET является системой визуального объектно-ориентированного программирования на платформе .NET Framework. Система программирования Visual Studio .NET предоставляет пользователю для работы со всеми языками .NET удобный, причем одинаковый, графический интерфейс IDE (Integrated Development Environment — Интегрированная среда разработки) (рис. 4.8). Визуальное конструирование графического интерфейса проекта выполняется в Конструкторе форм {Windows -П(Хфоенид Отоадкд ' Фсре^зт С^яис Орйвка ‘"т Ш ! »Debug „ Я' i i: %х ______ ' ■ ' 4 > Обоз^готь paiie^- WxtoyoVT'xl • ’з :: WindowsApplicationl - Microsoft Visual Basic .NET rd^ign] • l=dnni.ybi U IS ^ '' ____ Cofflpoogks : ^ Указатель Alab^ ; • Д LlnkL4?^ . Ш MemMeou. O\e даполиишл№1ые Р Сеедежя о параметрах Пэдза^еТры ......... • •'' ••• • " •.... F Ксючить В1фтуаш«е простр^стео Г Паденосить то CTOBW Опйрдакенме ---------------------- ------- Р Номера спяк Р Открьватъ URL-адреса о#о<рап«>вч Г - .... ОК Отмена { Справка Рис. 4.10. Установка параметров Редактора программного кода 216 Глава 4 Преобразование проектов из формата Visual Basic 5.0 или 6.0 в формат Visual Basic .NET 2003. Для преобразования проектов более ранних версий языка (VB 5.0 ССЕ, Visual Basic 6.0) в проекты на Visual Basic .NET используется Мастер обновлений. Для преобразования проекта необходимо ввести команду [Файл-Открыть-Проект,,,], найти в папке проекта на языке Visual Basic 5.0 или 6.0 файл с расширением vbp и следовать указаниям пяти диалоговых окон Мастера Visual Basic, Преобразование проектов из формата Visual Basic .NET 2003 в формат Visual Basic 2005 Express Edition. Для преобразования проекта необходимо ввести команду [File-OpemProject,,,], найти в папке проекта на языке Visual Basic .NET 2003 файл с расширением vbproj и следовать указаниям пяти диалоговых окон Visual Basic Upgrade Wizard, Компьютешьш практикум Windows-CD 4.2. Создать в системе программирования г-дии шт— Visual Studio проект «Консольное прило- жение». — ..Ainformatika10\...\Hello*\ 4.5. Система объектно-ориентированного программирования Turbo Delphi Система объектно-ориентированного программирования Turbo Delphi позволяет визуально создавать графический интерфейс к проектам на языке программирования Object Pascal. Окно системы программирования Turbo Delphi. Система программирования Turbo Delphi предоставляет пользователю удобный графический интерфейс в процессе разработки проекта. После запуска Turbo Delphi появится окно системы программирования Turbo Delphi, которое включает в себя (рис. 4.11): • Строку заголовка Turbo Delphi; • строку Главного меню под строкой заголовка; Алгоритмизация и основы объектно-ориентированного программирования 217 КНОПКИ с пиктограммами наиболее часто используемых команд под строкой Главного меню слева. . projectl - Turbo Delphi File Edit Search View Refactor Project Run Component Tools Window Help Э ^ ^ ^ ’ Ы ^ - li m ' ^ j PK>JecU.bdtpro)-Pre>W Meoa.i. 9 X — 1d1 xi ^ '3^**®®* ii^_:________ _- . - . .. . j£p ProiectGroupl H ^Projectlлив ] '£ ^йя«.р4$ Vtsirle True BiDreg, Drop entf Docking OregCurseoCyeg CragKind :d4>dg (>egModedrr>Mv»jel B Hctp and Hints . Heipcofttc ;*j ~lfloPwtadty.. r^Hadelv ^ ^DaiaE. ■ Ц(Тоо1(^вПв 9 X !3>remej — U. •.# Hi TPopupMeou Tlabe» G3 ТЕЛ . TMeew j mjtton Рис. 4.11. Система программирования Turbo Delphi Окно Конструктор форм. В центре располагается окно Конструктор форм. Для создания нового проекта необходимо ввести команду [File-Neiv-VCL Form Aplication]. Окно представляет собой форму (в данном случае Forml), на которой происходит визуальное конструирование графического интерфейса разрабатываемого проекта. Размеры формы можно менять, перетаскивая мышью правую или нижнюю границу формы. Окно Конструктор форм вызывается командой [View-Toggle Form/Unit], Первоначально форма пуста, в дальнейшем, в процессе создания графического интерфейса проекта, на ней размещаются элементы управления. Окно Программный код. С формой связан программный модуль, содержащий программные коды процедур. Для ввода и редактирования текста программы служит окно Программный код (в данном случае UnitLpas), которое вызывается командой [View-Toggle Form/Unit^. Окно элементов управления. Справа внизу располагается Окно элементов управления (Tool Palette), содержащее пиктограммы элементов управления. Стандартный 218 Глава 4 набор элементов управления размещается на вкладке Standard и включает в себя 16 классов объектов — это командная кнопка TButton, текстовое поле TEdit, надпись TLabel и т. д. На вкладках Addihional, Win32 и других располагаются дополнительные элементы управления: графическое поле TImage, список изображений TImageList и др. Выбрав щелчком мыши в окне элементов управления Tool Palette нужный элемент, мы можем поместить его на форму проектируемого приложения. Процесс размещения на форме элементов управления аналогичен рисованию графических примитивов с использованием графического редактора. Фактически мы размещаем на форме экземпляры определенных классов объектов. Например, выбрав класс объектов TButton, мы можем разместить на форме неограниченное количество экземпляров этого класса, т. е. командных кнопок Buttonl, Button2, Buttons и т. д. Окно Инспектор объектов. Слева внизу располагается окно Инспектор объектов (Object Inspector). В верхней части окна размещается раскрывающийся список объектов, на вкладке Свойства (Properties) содержится список свойств, а на вкладке События (Events) — перечень событий, относящихся к выбранному объекту (форме или элементу управления на форме). На рисунке выбран объект Buttonl из класса TButton, Вкладка Свойства (Properties) разделена на две колонки. В левой колонке находятся имена свойств, а в правой — их значения. Установленные по умолчанию значения могут быть изменены. Свойством объекта является количественная или качественная характеристика этого объекта (размеры, цвет, шрифт и др.)* Для некоторых свойств предусмотрена возможность выбора из раскрывающегося списка значений, например, из списка можно выбрать значение цвета фона элемента управления (свойство Color). Вкладка События (Events) также разделена на две колонки. В левой колонке находятся имена событий, а в правой можно ввести их значения. Окно Object Inspector вызывается командой [View-Object Inspector]. Окно Менеджер проектов. Окно Менеджер проектов (Project Manager) располагается в верхнем правом углу. Оно отображает в виде иерархического каталога все составные части текущего проекта (в данном случае Projectl.exe) и позволяет переключаться между ними. Длгоритмизация и основы объектно-ориентированного программирования 219 Окно Менеджер проектов вызывается командой [View^ Project Manager], Окно Дерево объектов, В верхнем левом углу располагается окно Дерево объектов (Structure), отображающее перечень объектов графического интерфейса проекта (форму и размещенные на форме элементы управления). Окно Дерево объектов (Structure) вызывается командой [View-Structure], Консольное приложение. В системе объектно-ориентированного программирования Turbo Delphi создадим консольное приложение, т. е. приложение, не имеющее графического интерфейса. Приложение должно выводить название языка программирования в окне командной строки и с помощью диалогового окна. Проект «Консольное приложение» на языке программирования Turbo Delphi 1. Запустить систему программирования командой [Пуск-Программы-Borland Developer Studio 2006-Turbo Delphi], 2. Создать новый проект командой [File-Other,,,], В появившемся диалоговом окне New Items выбрать тип приложения Console Application, В окне Программный код появится заготовка программы. Ввести программный код пользователя между служебными словами begin и end. Для вывода текста в окно программной строки использовать оператор writeln(). 220 Глава 4 Для вывода диалогового окна с текстом использовать функцию MessageDig () , для использования которой необходимо подключить модуль диалогов с использованием инструкции uses Dialogs. 3. program Project louses Dialogs; /$APPTYPE CONSOLE} begin writein ('Program language Delphi') ; MessageDig ('Язык программирования Turbo Delphi', Mtlnformation,[mbOk],0); end. 4. Сохранить программный код консольного приложения на жестком диске в папке ...\HelioDelphi\ командой [File-Save As...]. Теперь можно запустить консольное приложение. 5. Ввести команду [Run-Run], 6. В окне командной строки будет выведено (рис. 4.12): Program language Turbo Delphi В диалоговом окне будет выведено (см. рис. 4.12): Язык программирования Turbo Delphi Рис. 4.12. Создание и запуск консольного приложения г Компьюте^ый^рактикум ... TurboDelphi-CD 4.3. Создать в системе программирования Turbo Delphi проект «Консольное приложение». ...\Projects\HelloDelphi\ Алгоритмизация и основы объектно-ориентированного программирования 221 4.6. Переменные Тип переменной. Тип переменной определяется типом данных, которые могут быть значениями переменной. В объектно-ориентированных языках программирования переменные могут быть различных типов: • в типах Byte, Short (Smallint в Turbo Delphi), Integer (Int в Visual C# и Visual J#) и Long (Int64 в Turbo Delphi) значениями являются целые числа; • в типах Single (float в Visual C# и Visual J#), Double и Decimal (в Visual Basic .NET и Visual C#), значениями являются числа с плавающей запятой; • в типах Char и String значениями являются символы и последовательности символов; • в типе Boolean (bool в Visual С#) логическими значениями являются истина True или ложь False. Различные типы переменных требуют для своего хранения в оперативной памяти компьютера различное количество ячеек (байтов) и могут принимать различные диапазоны значений. Плакаты. Таблица 5 «Типы переменных» Имя переменной. Имя каждой переменной (идентификатор) уникально и не может меняться в процессе выполнения программы. Имя переменной: • должно начинаться с буквенного символа или с подчеркивания «_»; • может содержать только буквенные символы, десятичные цифры и подчеркивания; • должно содержать, по крайней мере, один буквенный или цифровой символ, если оно начинается с подчеркивания; • не должно составлять более чем 1023 знака. Рекомендуется для большей понятности текстов программ для программиста в имена переменных включать приставку, которая обозначает тип переменной. Тогда имена целочисленных переменных будут начинаться с приставок byt, int и Ing, содержащих числа с плавающей запятой — sng и dbl, строковых chr и str, и логических — Ып. Объявление переменной. Важно, чтобы исполнитель программы (компьютер) «понимал», переменные какого типа 222 Глава 4 используются В программе. При объявлении переменной используется ключевое слово и указывается ее тип. Область действия переменной. Область действия переменной, т. е. область, в которой она доступна для использования, может быть локальной или глобальной. Локальная переменная доступна только внутри процедуры или программного модуля, и к ней невозможно обращение из другой процедуры или модуля. Если переменная определена внутри процедуры, то она может быть вызвана только в этой процедуре, если она определена внутри программного модуля, то она может быть вызвана только в этом модуле. К глобальным переменным может быть произведено обращение из всех программных модулей проекта. Присваивание переменным значений. Переменная может получить или изменить значение с помощью оператора присваивания. В языках объектно-ориентированного программирования Visual Basic .NET, Visual C# и Visual J# в качестве оператора присваивания используется знак «равно» « = », а в языке Turbo Delphi — знаки «двоеточие» и «равно» «:=^». При выполнении оператора присваивания переменная, имя которой указано слева от знака равенства, получает значение, равное значению правой части. Это может быть, как в алгоритмических языках, выражение (арифметическое, строковое или логическое), а также значение свойства объекта или результат выполнения метода. Проект «Переменные». Создать проект, который позволит продемонстрировать использование различных типов переменных, арифметических, строковых и логических выражений и операции присваивания. Каждый тип переменных разместить на отдельной вкладке. В окне Конструктор форм с использованием панели Об-ластъ элементов на форму поместим элементы управления, которые црлжны обеспечить взаимодействие проекта с пользователем. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Для создания вкладок на форме элемент управления Tab-Ccr>,roil (PageConrroll в Turbo Delphi). Длгоритмизация и основы объектно-ориентированного программирования 223 Создание вкладок на языках Visual Basic .NET, Visual C# и Visual J# 2. Выделить элемент управления PageControll и в окне Свойства у свойства TabPages активизировать значение (Коллекция). 3. В появившемся окне Редактор коллекции TabPages (рис. 4.13) создать три вкладки на панели инструментов, нажав три раза кнопку Добавить. В списке Свойства TabPagesl: в свойстве Text ввести названия вкладок: Числовые, Строковые, Логические. Редактор коллекции TafcPage Члены: ш ТаЬРадс-1 1 jj TabPage2 ]^TabPage3 Добавил» 1 Удвшть 1 л1 СвоРствз TabP^i: J3 вид BdLKCubr ,• Bdi-kgroundlmage i BDfderStyle 1 cursor it3 Forit ForeCola RightToLeft Ш Данг^е Ш (DataBindings) \ Tag |B (DynamicPropertiesj IB M'We! ^UtO'oCrQ'l js AutoScro'IMargm ;Ш AutoScrollMinSize I I Control I i (отсутствует) Ncrre Default Microsoft Sans Serif; 8,25i: H ControlText No I Числовые False 0; D 0: 0 oc Ormm CrpasKi J В Рис. 4.13. Редактор коллекции вкладок Создание вкладок на языке Turbo Delphi 2. Выделить элемент управления PageControll, щелкнуть правой кнопкой мыши и в контекстном меню выбрать пункт New Page. Проделать эти действия три раза. 3. В окне Object Inspector в свойстве Caption ввести названия вкладок: Числовые, Строковые, Логические. 224 Глава 4 4. На вкладке TabPagesl {TabSheetsl в Turbo Delphi) разместить: • для ввода чисел два текстовых поля TextBoxl (Editl в Turbo Delphi) и TextBox2 (Edit2 в Turbo Delphi); • для вывода чисел надписи Labell, Label2 и LabelS; • для создания обработчика события кнопку Buttonl; • для вывода поясняющих текстов пять надписей. 5. На вкладке TabPages2 (TabSheets2 в Turbo Delphi) разместить: • для ввода символа и строки два текстовых поля Text-ВохЗ (Edits в Turbo Delphi) и TextBox4 (Edit4 в Turbo Delphi); • для вывода строки надпись Label 10; • для создания обработчика события кнопку Button2; • для вывода поясняющих текстов три надписи. 6. На вкладке TabPagesS {TabSheetsS в Turbo Delphi) разместить: • для вывода логического значения надпись Label20; • для создания обработчика события кнопку ButtonS; • для вывода поясняющих текстов пять надписей. На языке программирования Visual Basic .NET создадим обработчик события, реализующий вывод значений числовых переменных. Создание программного кода на языке программирования Visual Basic .NET 7. Dim bytA, bytB As Byte, intC As Integer, sngD As Single, dblE As Double Private Sub Buttonl__Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonl.Click bytA = Val(TextBoxl.Text) bytB = CByte(TextBox2.Text) intC = bytA / bytB sngD = bytA / bytB dblE = bytA / bytB Labell.Text = intC Labels.Text - sngD Labels.Text - dblE End Sub Ha языке программирования Visual C# создадим обработчик события, реализующий вывод значений строкового выражения. Алгоритмизация и основы объектно-ориентированного программирования 225 Создание программного кода на языке программирования Visual C# 7. char chrS; String strS; private void button2_ System.EventArgs e) {chrS = Convert.ToChar(t' strS = texrBox4.Text; iabellO.Text ^ chrS + Click(object sender, xtBoxS.Text); s t r S ; Ha языке программирования Turbo Delphi создадим обработчик события, реализующий вывод значений логического выражения. Создание программного кода на языке программирования Turbo Delphi 7. var blnLl: boolean; boolean; boolean; TForml.ButtonSClick(Sender: TObject); blnL2 blnL3 procedure begin blnLl blnL2 blnL3 Label20.Caption end; = 5 > 3 ; = 2 * 2 = 5 ; ^ blnLl and blnL2; ^ BoolToStr(blnL3,True); Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi 8. Ввести команду [Отладка-Начать] (на языке Turbo Delphi [Run-Run]) или щелкнуть по кнопке ► на панели инструментов окна интегрированной среды разработки. 9. На вкладке Числовые в текстовые поля ввести числа и щелкнуть по кнопке Вычислить bytA/bytB, На надписи будут выведены значения числовых переменных различных типов (рис. 4.14). На вкладке Строковые в текстовые поля ввести символ и строку и щелкнуть по кнопке Вывести chrS+strS. На надпись будет выведена строка (см. рис. 4.14). 226 Глава 4 На вкладке Логические щелкнуть по кнопке Определить lblLl+lblL2, На надпись будет выведено'значение логического выражения (см. рис. 4.14). ВШШЗШГ: ^^ислоеь» I Стромеые | ЛогмчеокИв | bytA I 2 ЬуГБ I into ' sngD С,6666667 dbit 0,666666666666667 Вьмисяить Числовые Сфоковые I Погичесм<е I cbrs |5Г strS [байт cbrS^strS Кбайт Числс^ыв) Сфокоеые Логические [ bIL’, 5>3 •Ы12 2*2=5 1ЬП And IbIL False Вь»всти dirS+strS Определит!» !ЫЬТ And IbR^ Рис. 4.14. Проект «Переменные^ Контрольные вопросы 1. В чем СОСТОИТ разница между типом, именем и значением переменной? 2. Что происходит в процессе объявления переменной в оперативной памяти компьютера? Компьютерный практикум Wjndows-CD 4.4. Создать проект «Переменные». TurboDelphi-CD .. .\Projects\Variables\ 4.7. Графический интерфейс Система объектно-ориентированного программирования позволяет визуализировать процесс создания графического интерфейса разрабатываемого проекта. Графический интер- Алгоритмизация и основы объектно-ориентированного программирования 227 фейс необходим для реализации интерактивного диалога пользователя с исполняемым проектом. Форма. Основой для создания графического интерфейса разрабатываемого проекта является форма, которая представляет собой окно, в котором размещаются элементы управления. Необходимо отметить, что графический интерфейс проекта может включать в себя несколько форм. Форма — это объект, представляющий собой окно на экране, в котором размещаются элементы управления. Элементы управления. Визуальное конструирование графического интерфейса проекта состоит в том, что на форму с помощью мыши помещаются и «рисуются» те или иные элементы управления. Перечислим классы элементов управления, они имеют различное назначение в графическом интерфейсе проекта: • текстовые поля TextBox (Edit в языке Turbo Delphi), надписи Label и списки ListBox и ComboBox для ввода и вывода данных; • графические поля PictureBox (Image в языке Turbo Delphi) для вывода графики, • командные кнопки Button, переключатели RadioBut-ton и флажки CheckBox для организации интерактивного диалога пользователя с проектом; • главное меню MainMenu для создания меню формы; • панель инструментов TcolBar для создания панели инструментов формы; • коллекция изображений ImageList для хранения изображений; • диалоги ColorDialog и FontDialog для выбора цвета и шрифта; • диалоги OpenFileDialog и SaveFileDialog для выбора файла при открытии и сохранении. Плакаты. Таблицы 2-4 «Элементы управления: свойства, методы и события» На форму может быть помещено несколько экземпляров одного класса элементов управления. Например, несколько 228 Глава 4 КНОПОК, каждая из которых обладает индивидуальными значениями свойств (надпись, размеры и др.)* Элементы управления — это объекты, являющиеся элементами графического интерфейса проекта и реагирующие на события, производимые пользователем или другими программными объектами. Форма и каждый класс элементов управления обладают определенным набором свойств, методов и событий. Однако есть свойства, методы и события, которыми обладают формы и большинство элементов управления. С помощью свойств Width и Height устанавливается размер формы или элемента управления, с помощью метода Show() можно показать форму или элемент управления, на событие Click они реагируют. Системы объектно-ориентированного программирования Visual Basic .NET, Visual C# и Visual J# имеют одинаковый набор элементов управления, который практически совпадает с набором элементов управления языка Turbo Delphi. Это позволяет конструировать практически одинаковые графические интерфейсы проектов во всех вышеперечисленных системах объектно-ориентированного программирования. Автоматическая генерация кода элементов графического интерфейса. При размещении на форме элементов управления в системах объектно-ориентированного программирования производится автоматическая генерация программного кода. Устанавливаются значения свойств формы и элементов управления, которые определяют местоположение элемента графического интерфейса, его размеры, цвет, параметры шрифта и др. В языках программирования Visual Basic .NET, Visual C# и Visual J# этот программный код сохраняется в файле программного кода формы в разделе Код, автоматически созданный конструктором форм Windows. В языке Turbo Delphi этот программный код сохраняется в отдельном файле Unitl.dfm, связанном с формой. В качестве примера приведем автоматическую генерацию программного кода, возникающего при размещении на форме кнопки. Алгоритмизация и основы объектно-ориентированного программирования 229 Язык Visual Basic .NET: Me.Buttonl.BackColor = System.Drawing. SystemCoiors.Control Me.Buttonl.Font = New System.Drawing.Font ("Microsoft Sans Serif", 12.0) Me.Buttonl.Location ^ New System.Drawing. Point (104, 64) Me.Buttonl.Name = "Buttonl" Me.Buttonl.Size = New System.Drawing.Size (152, 32) Me.Buttonl.Text = "Вычислить" Язык Visual C#: this.buttonl.BackColor = System.Drawing. SystemCoiors.Control/ this.buttonl Point(88, 12\ this.buttonl this.buttonl Size(192, 40 this.buttonl Location = new System.Drawing. r Name = "buttonl"; Size = new Systern.Drawing. r Text = "Вычислить"; Язык Visual J#: this.buttonl.set_BackColor(System.Drawing. SystemCoiors.get_Control {)); this.buttonl.set_Font(new System.Drawing. Font ("Microsoft Sans Serif", 12F) ; this.buttonl.set_Location (new System.Drawing Point {104, 64)); this . buttonl. set_Name ("buttonl") ; this.buttonl.set_Size(new System.Drawing. Size (132, 32)} ; this.buttonl.set Text ("Вычислить") ; Язык Turbo Delphi: object Buttonl: TButton Left = 68 Top = 59 Width = 156 Height = 30 Font.Color = Font.Height clWindowText -16 Font.Name = 'MS Sans Serif' Графический интерфейс проектов на языках программирования Visual Basic .NET, Visual J#, Visual C# и Turbo Delphi будет практически одинаковым, так как в этих языках используется одинаковый набор элементов управления (табл. 4.2). орые элементы управления в языках i\ Basic .NET, Visual С#, Visual J# и Turbo Delphi ЖИЯ Visual Basic .NET Visual C# Visual J# Text. Boxl IGXLBOXI tcxlBoxl Kd Labe 1 1 label 1 label] I.d Li sLBox1 li sLBoxl 1 1 St. Sox’. i Cornboiiox 1 comboBcxi coniboBox 1 Co Numer ic'JpDown i numer i c'JpDownl r.'ar.or ic'JpDownl Up T racklJar 1 L rackBa r LrackBarl Tr Rad i oBut Lonl radioB'jtton] rad.loBut t.onl Ra Алгоритмизация и основы объектно-ориентированного программирования 231 Проект «Отметка». Создать проект, который в зависимости от количества ошибок, введенных с использованием различных элементов управления (списка, поля со списком, текстового поля, счетчика, ползунка и переключателей), выводит на надпись отметку. В окне Конструктор форм с использованием панели Обмастъ элементов на форму поместим элементы управления, которые должны обеспечить взаимодействие проекта с пользователем. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Разместить на форме (рис. 4.15): • для ввода количества ошибок список ListBoxl, поле со списком CoT.boBoxi, текстовое поле TextBoxl, счетчик NumericUpDownl, ползунок TrackBarl и переключатели Rad.i oButtonl, RadioButton2, RadioButtonB, RadioButton4, RadioButton5; • для вывода отметки надпись Labell; • для вывода поясняющих текстов надписи Labe 12 и Label3. Сделаем графический интерфейс более привлекательным. Установка значений свойств объектов графического интерфейса на языках Visual Basic .NET, Visual С #, Visual J # и Turbo Delphi 2. Присвоить форме и элементам управления новые значения свойств с помощью диалогового окна Свойства {Object Inspector в Turbo Delphi). Для каждого элемента управления существует одно событие (событие по умолчанию), чаще всего возникающее для данного элемента управления (табл. 4.3). После двойного щелчка по элементу управления в редакторе программного кода открывается заготовка процедуры обработки такого события. ИЯ по умолчанию некоторых элементов управления в языках Visual Basic i\ J# и Turbo Delphi Visual Basic .NET Visual C# Visual J# TextChangod TextChanqed TextChanqed Click Click Click SelecLedli^dexChanqed SelecLedIndexChanqed Se lectedIndexChar.ged Se 1 ecr.edIndexChanged SelectedIndexChanged Se lected 1 ndexClianged ValueChanqed Va 1ucChanged ValucChangcd Scrol 1. Scroll Scroll ChecKGdChanqed CheckedChanged CheckedChanged Длгоритмизация и основы объектно-ориентированного программирования 233 На языке программирования Visual Basic .NET объявим переменную и создадим обработчик события, реализующий вывод отметки на надпись в зависимости от количества ошибок, выбранных в списке. Создадим заготовку обработчика события щелчком по списку и введем программный код. Для преобразования количества ошибок, выбранного как элемент списка строкового типа, в целое число используем функцию CByte () . Для реализации выбора отметки используем оператор Select Case. Создание программного кода на языке программирования Visual Basic ,NET 3. Dim N As Byte Private Sub ListBoxl_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles ListBoxl.SelectedIndexChanged N = CByte(ListBoxl.Text) Select Case N Case 0 Labell.Text = "Отлично" Case 1 Labell.Text = Case 2 Labell.Text = Case 3 Labell.Text = "Плохо" Case Else Labell.Text End Select End Sub Хорошо" Удовлетворительно" = "Очень плохо' На языке программирования Turbo Delphi объявим переменную и создадим обработчик события, реализующий вывод отметки на надпись в зависимости от количества ошибок, введенных в текстовое поле. Для преобразования введенного в текстовое поле количества ошибок строкового типа в целое число используем функцию StrToInc () . Для реализации выбора отметки используем оператор Case. Создание программного кода на языке программирования Turbo Delphi 3. var N: byte; procedure TForml.Edit!Change(Sender; TObject); 234 Глава 4 begin N := StrToInt (Editl.Text) ; Case N Of 0 : Labell.Caption : = 'Отлхчно'; 1: Labell.Caption : = 'Хорошо'; 2 : Labell.Caption := 'Удовлетворительно'; 3: Labell.Caption := 'Плохо'; Else Labell.Caption := 'Очень плохо'; end; end; Ha языке программирования Visual C# объявим переменную и создадим обработчик события, реализующий вывод отметки на надпись в зависимости от количества ошибок, введенных с помощью ползунка. Так как свойство ползунка Value имеет тип int, объявим переменную такого же типа. Для реализации выбора отметки используем оператор switch. Создание программного кода на языке программирования Visual C# 3. int n; private void trackBarl_Scroll(object sender. System.EventArgs e) {n = trackBarl .Val.ue; switch (п) {case 0: labell.Text ^ "Отлично"; break; case 1; labell.Text "Хорошо"; break; case 2 : labell.Text = "Удовлетворительно"; break; case 3: labell.Text = "Плохо"; break; default: labell.Text = "Очень плохо"; break; } Ha языке программирования Visual J# создадим обработчики событий, реализующие вывод отметки на надпись в за- Алгоритмизация и основы объектно-ориентированного программирования 235 висймости от количества ошибок, введенных с помощью переключателей. Для каждого переключателя создадим обработчик событий, выполняющийся при выборе этого переключателя. Создание программного кода на языке программирования Visual J# 3. private void radioButtonl_CheckedChanged {Object sender, System.EventArgs e) { labell. set_Text (''Отлично'') ; } private void radioButton2_CheckedChanged (Object sender, System.EventArgs e) labell. set_Text ("Хорошо") ; } private void radioButton3_CheckedChanged (Object sender. System.EventArgs e) { labe]1.set _Text("Удовлетворительно") ; } private void radioButton4_CheckedChanged (Object sender. System.EventArgs e) { labell . set _Text ("Плохо") ; } private void radioButton5_CheckedChanged (Object sender, System.EventArgs e) { labell. set_Text ("Очень плохо") ; } Выполнение проекта. Загрузка проекта в систему объектно-ориентированного программирования производится путем активизации в папке проекта основного файла проекта: • язык Visual Basic .NET — файл с расширением vbproj; • язык Visual C# — файл с расширением csproj; • язык Visual J# — файл с расширением vjsproj; • язык Turbo Delphi — файл с расширением dpr. Запустим проект, после этого система программирования переходит в режим выполнения проекта [run], в котором редактирование графического интерфейса или программного кода невозможно. 236 Глава 4 ^Ув В Запуск проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 4. Ввести команду [Отладка-Начать] ([Run-Run] на языке Turbo Delphi) или щелкнуть по кнопке ► на панели инструментов окна интегрированной среды разработки. 5. Ввести количество ошибок (например, 2) с использованием элементов управления: • списка; • поля со списком; • текстового поля; • счетчика; • ползунка; • одного из переключателей. На надпись будет выведена отметка (в данном случае «Удовлетворительно») (см. рис. 4.15). |У д о в л е твори те ль но ||! Рис. 4.15. Проект «Отметка^ Контрольные вопросы 1. Какие элементы управления целесообразно использовать при конструировании графического интерфейса проекта, если необходимо: вводить и выводить данные? Организовать диалог с пользователем? Алгоритмизация и основы объектно-ориентированного программирования 237 2. Что происходит в системе программирования после помещения на форму элемента управления? Компьютерный практикум Windows-CD 4.5. Создать проект «Отметка». TurboDelphi-CD .. .\Projects\Grade\ 4.8. Пространство имен .NET Важный компонент платформы .NET — общая для всех языков программирования библиотека классов. Ее наличие позволяет разработчикам использовать единую систему программных объектов для языков программирования платформы .NET. Пространство имен .NET включает более 7000 имен и поэтому организовано в иерархическую систему имен (табл. 4.4). Таблица 4.4. Некоторые наиболее значимые ветви пространства Ветвь пространства имен Содержание System.Console Методы и функции работы с консольным окном S'/ s t О гг.. У а t г. Математические методы и функции Systerr,. “rawi.ng Графические методы и функции System.:с Методы и функции работы с файлами 5ysterr,.Wi.ndows . Forms Элементы графического интерфейса Microsolt.VisualBas ic Методы и функции языка Visual Basic 238 Глава 4 Для использования в программном коде имени программного объекта необходимо указывать полный путь к нему в пространстве имен с рхспользованием точечной нотации. Например, чтобы вывести в консольном окне текст, необходимо записать полный путь к функции Write () в пространстве имен .NET: System.Console.Write ("Текст”) Однако удобнее указать один раз в начале программного кода вызов ветви пространства имен System. На языке программирования Visual Basic .NET: Imports System Ha языке программирования С#; using Systemi; Ha языке программирования J#: import System.*; '"^31 4.4.1. Платформа .NET Framework He все ветви пространства имен системой программирования загружаются по умолчанию. Например, для использования методов и функций языка Visual Basic в языках Visual C# и Visual C# необходимо подключить пространство имен Microsoft .VisualBasic. Для этого в проекте надо добавить ссылку на библиотеку Microsoft. VisualBasic . dll. Одной из наиболее часто встречающихся операцией в программировании является преобразование типов данных. Проект «Функции преобразования типов». Создать проект, в котором число, вводимое в текстовое поле, преобразуется из строкового типа в числовой тип, а затем при выводе на надписи оно же преобразуется из числового типа в строковый. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Разместить на форме (рис. 4.18): • текстовое поле TextBoxl (Editl в Turbo Delphi) для ввода числа; • три надписи Label1, Labels и Labels (две надписи в Visual C# и одну надпись в Visual J# и Turbo Delphi) для вывода числа; Алгоритмизация и основы объектно-ориентированного программирования 239 . кнопку But ton 1 ДЛЯ создания процедуры-обработчика события. Преобразование типов данных на языке Visual Basic .NET возможно с помощью функций трех различных типов: . во-первых, это функции Val {) , Str {) и др., которые использовались и в предыдущих версиях языка программирования Basic; . во-вторых, это функции CDbl () , CStr () и др., которые используются в последних версиях языка программирования Visual Basic; • в-третьих, это функции TcDouble О, ToString О и др., которые используются на платформе .NET и принадлежат ветви системы имен System.Convert. В программном коде используем функции преобразования типов данных всех трех типов. Создание программного кода на языке программирования Visual Basic .NET 2. Dim A, В, С As Double Private Sub Buttonl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonl.Click * Преобразование из строкового типа в числовой Л = Val(TextBoxl.Text) В = System.Convert.ToDouble(TextBox1.Text) C = CDbl(TextBoxl.Text) 'преобразование из числового типа в строковый Labell.Text = Str(А) Labels.Text = System.Convert.ToString(В) Labels.Text = CStr(C) End Sub Преобразование типов данных на языке Visual C# возможно с помощью функций двух различных типов; • во-первых, это функции Val(), Str{) и др., которые используются в языке Visual Basic и принадлежат ветви системы имен Microsoft.VisualBasic. Conversion; • во-вторых, это функции ToDoubleO, ToString {) и др., которые используются на платформе .NET и принадлежат ветви системы имен System,.Convert. В программном коде используем функции преобразования типов данных двух типов. 240 Глава 4 Создание программного кода на языке программирования Visual C# На языке Visual C# для преобразования типов данных с использованием функций Val () , Str () необходимо подключить и использовать пространство имен Microsoft. Visual-Basic. 2.1. Ввести команду [Проект-Добавить ссылкуД, В появившемся диалоговом окне Add Reference (рис. 4.16) на вкладке ,NET из списка выбрать имя компонента Mic-rosoftyisualBasic.NET Runtime и ш;елкнуть по кнопке Выбрать. Выбранный компонент добавится в поле Выбранные компоненты: Щелкнуть по кнопке ОК, Acid Reference ,ШХ | с0М 111х»екгы ■й1вШ ! Эера^я 1путь, -^1 ISymWrapper Managed С # Compiler MCppCodeDomParser MCppCodeDomProvider Microsoft Visual Base .NET Compati.. Microsoft Visual Basic .NET Compati.. 1.0. 5000.0 7.0. 5000.0 O.O.O.O 7-0.5000.0 7.0. 5000.0 7.0. 5000.0 C: \WINDOWS\Microsoft .NET\F.,. C:\WINDOWS\MicrDSoft.NET\F.,. C:\PrQgram Fi!es\Microsoft Visu... | C:\Program FiIes\Microsoft Visu.., C; \ WINDO WS\Microsoft .NET\F.. C:\WINDOWS\Microsoft.NET\F... MicrosoftJScnpt MiCIDSOft.TDSyitirfi Microsoft.stdformat Mirroenfr V/iMJC70SDft .JSfET... C:\Program Files\Microsoft.NET.., i r-\WIMnnWC\Mirmcnft MPT\p -Tl _I ]2У Выб|з»#4ые гампон^ты: СЖ Вь>6рк:^ь .^#1ямомпРнента Тип Источник i Werosoft Visual Basic .NET Runtime ЖГ CДWI^ШWS\№osDft.NET\Fram8wtзrk\v^.:,... ~| Отмена I Справка Рис. 4.16. Диалоговое окно выбора ветвей пространства имен 2.2. В Обозревателе решений в проекте convert в разделе ссылок References добавится ссылка Microsoft.VisualBasic на соответствующее пространство имен (рис. 4.17). длгоритмизация и основы объектно-ориентированного программирования 241 001:1:;реватель решений - arrayl 3 J sa "ЗГрешение "arrayl" (проектов: 1) £ S3 arrayl !r: References ^ [ШШОМЙГЩЙ! ■ System System,Data проект, в котором: Создать в вызываемой процедуре один параметр передается по ссылке, а другой — по значению и значения переменных внутри процедуры изменяются; в вызывающей процедуре-обработчике события переменным присваиваются начальные значения, вызывается процедура, а затем значения переменных выводятся на надписи. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual C# и Turbo Delphi 1. Разместить на форме (рис. 4.19): • текстовые поля ТехгВох! и TextBox2 для ввода начального значения переменных; • надписи Label 1 и Labe 12 для вывода конечного значения переменных; • кнопку Buttonl для создания процедуры-обработчика события; • четыре надписи для вывода поясняющих текстов. В программных кодах процедур на языках Visual Basic .NET и Turbo Delphi, a также программных кодах метода на языке Visual C# первый параметр X передается по ссылке, а второй параметр Y передается по значению. 246 Глава 4 Создадим программный код проекта, в котором: • объявим две переменные; • создадим процедуру, умножающую значения переменных, передаваемых по ссылке и по значению, на коэффициент 5; • создадим обработчик события, реализующий присваивание переменным начальных значений, вызов первой процедуры и осуществляющий вывод конечных значений переменных на надписи. Создание программного кода на языке программирования Visual Basic .NET 2. Объявить переменные и создать код вызываемой процедуры: Dim Ref А, ValB As Byte Sub RefVal(ByRef RefA, ByVal ValB) RefA = RefA * 5 ValB = ValB * 5 End Sub 3. Создать код вызывающей процедуры-обработчика события: Private Sub Buttonl_Click(ByVal sender As System Object, ByVal e As System.EventArgs) Handles But-tonl.Click RefA = Val(TextBoxl.Text) ValB = Val(TextBoxC.Text) RefVal(RefA, ValB) Labell.Text = Str(RefA) Label2.Text = Str(ValB) End Sub Создание программного кода на языке программирования Visual C# 2. Объявить переменные и создать код вызываемой процедуры: int RefA; int ValB; void RefVal (ref int RefA, int ValB) {RefA = RefA*5; ValB = ValB*5; } 3. Создать код вызывающей процедуры-обработчика события: private void buttcnl_Click(object sender. System. EventArgs e) Алгоритмизация и основы объектно-ориентированного программирования 247 :RefА = Convert.ToInt32(textBox1.Text); ValB = Convert.ToInt32(rextBox2.Text)/ RefVal(ref RefA, ValB); label1.Text = Convert.ToString(RefA); label2.Text = Convert.ToString(ValB); Создание программного кода на языке программирования Turbo Delphi 2, Объявить переменные и создать код вызываемой процедуры: var RefA, ValB: byte; procedure P.efVal(var RefA: byte; ValB: byte) ; begin RefA ;= RefA * 5; ValB ;= ValB * 5; end; Создать код вызывающей процедуры-обработчика события: procedure TForml.ButtonlClick(Sender: TObject); begin RefA := StrToInt(Editl.Text); ValB := StrToInt(Edits.Text); RefVal(RefA, ValB); Label1.Caption : = IntToStr(RefA); Labels.Caption : = IntToStr(ValB); end; Запуск проекта на языках Visual Basic .NET, Visual C# и Turbo Delphi Запустить проект на выполнение и ввести в текстовые поля начальные значения переменных (например, 3). На надписи будут выведены конечные значения переменной, передаваемой по ссылке (в данном случае, 15), и переменной, передаваемой по значению (в данном случае 3) (см. рис. 4.19), Что и требовалось показать! 248 Глава 4 Рис. 4.19. Проект «Передача по ссылке и по значению» Контрольные вопросы 1. В чем СОСТОИТ разница при передаче значений по значению и по ссылке? Компьютедаый црактикум Г -Jj --.. . Windows-CD 4.7. Создать проект «Передача по ссылке и по значе- нию». TurboDelphi-CD ,. .\Projects\RefVal\ 4.9.2. Функции Функции являются подпрограммами, которые возвращают значения и поэтому могут использоваться в выражениях. Наиболее широко используются встроенные функции: математические, преобразования типов данных, обработки строк, даты и времени и др. Плакаты. Таблица 6 «Встроенные функции (методы)» Программист может создать свои функции. В языках Visual Basic .NET и Turbo Delphi функция начинается с ключевого слова function, затем следует имя функции и в Алгоритмизация и основы объектно-ориентированного программирования 249 скобках СПИСОК ее параметров (аргументов). Тип возвращаемого функцией значения указывается после списка параметров. В языках Visual C# и Visual J# функции реализуются с помощью методов и начинаются с ключевого слова, определяющего тип возвращаемого методом значения (int, doxoble и т. д.)* Затем следует имя метода и в скобках список его параметров (аргументов). Для определения возвращаемого функцией (методом) значения может использоваться как имя функции, так и переменная result, которой в программном коде присваивается значение функции. Для возврата значения функции с помощью переменной result используется ключевое слово return. Функция представляет собой подпрограмму, которая возвращает значение и может входить в состав выражений. Проект «Функция». Создать проект, в котором определяется функция (например, умножения двух чисел F = х ^ у), выводится на надпись значение выражения, в которое входит функция (например, -ь F). Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Разместить на форме (рис. 4.20): • для ввода значений аргументов функции два текстовых поля TextBoxl и TextBox2 (Edit! и Edit2 в Turbo Delphi); • для вывода значения функции надпись Labell; •для создания обработчика события кнопку Button!. Создание программного кода на языке программирования Visual Basic .NET 2. Создать код вызываемой функции: Function F(ByVal X, ByVal Y) As Integer F = X * Y End Function 3. Импортировать ветвь пространства имен System.Math, которая необходима для использования математических 250 Глава 4 функций, объявить переменные и создать код вызывающей процедуры-обработчика события: Inserts System.Math Dim X, Y As Integer Private Sub Buttonl_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttonl.Click X = Val(TextBoxl.Text) Y = Val(TextBox2.Text) Labell.Text = Str (Sqrt (Pow (F (X, Y) , 2) + F(X, Y) ) ) End S\ib Создание программного кода на языке программирования Visual C# 2. Создать код вызываемой функции: pxiblic int F(int X, int У) {int result; result = X * Y; return result; } 3. Объявить переменные и создать код вызывающей процедуры-обработчика события; int X,Y; private void buttonl_Click(object sender. System. EventArgs e) {X = Convert.ToInt32(textBoxl.Text); Y = Convert.ToInt32(textBox2.Text); labell.Text = Convert.ToString(Math.Sqrt(Math. Pow(F(X,Y),2)+F(X,Y))); Ж1Ш Создание программного кода на языке программирования Visual J# 2. Создать код вызываемой функции: public int F(int X, int Y) {int result; result = X * Y; return result; } 3. Объявить переменные и создать код вызывающей процедуры-обработчика события: int X,Y; private void buttonl_Click (Object sender, System. EventArgs e) длгоритмизахщя и основы объектно-ориентированного программирования 251 {X = System.Convert.ToInt32(textBoxl,get_TextО); Y = System.Convert.ToInt32(textBox2.get_Text{)); labell.set_Text(System.Convert.ToString (System. Math.Sqrt(System.Math.Pow(F(X, Y),2) + F(X, Y)))); } Создание программного кода на языке программирования Turbo Delphi 2. Создать код вызываемой процедуры: function F(X,Y:integer) : int64; begin F X*Y; end; 3. Импортировать модуль Math, который необходим для использования математических функций, объявить переменные и создать код вызывающей процедуры-обработчика события: uses Math; var X, Y: integer; procedure TForml.ButtonIClick(Sender: TObject) ; begin X := StrToInt(Editl.Text); Y := StrToInt(Edit2.Text); Labell.Caption := FloatToStr(Sqrt(Power(F(X, Y), 2) + FIX, Y))); end; Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi 4. Запустить проект на выполнение и ввести в текстовые поля значения переменных (например, 2 и 3). На надписи будет выведено вычисленное значение выражения (см. рис. 4.20). 2 Y Вьнислить 6.4807406984 Рис. 4.20. Проект «Функция» 252 Глава 4 Контрольные вопросы 1. В чем СОСТОИТ различие между процедурами и функциями? 2, Может ли входить в состав выражения процедура? Функция? Компьютешый Ьрактикум 4.8. Создать проект «Функция». Windows-CD ^^9В1 ...\mformatika10\...\Function\ TurboDelphi-CD .. .\Projects\Function\ 4.10. Итерация и рекурсия Функция (метод в языках программирования Visual C# и Visual J#), которая обращается сама к себе, называется рекурсивной функцией. Одну и ту же задачу можно часто решить двумя способами: с помощью рекурсии (с использованием рекурсивной функции) и с помощью итерации (с использованием цикла). Однако использование рекурсии позволяет экономить оперативную память компьютера. Вычисление факториала числа — это классический пример, на котором можно показать использование итерации и рекурсии. Факториал целого положительного числа N — это произведение целых чисел от 1 до N, обозначается как N1: iV! = 1 X 2 X 3 Х...Х (N-1) X N. Проект «Факториал (итерация)». Создать проект, в котором факториал числа вычисляется с использованием цикла. Будем вводить число в текстовое поле и выводить шаги вычисления факториала этого числа в список. Алгоритмизация и основы объектно-ориентированного программирования 253 Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Разместить на форме (рис. 4.21): • текстовое поле ТехtBox 1 для ввода числа; • список ListBoxl для вывода шагов вычисления факториала в качестве элементов списка; • надписи для вывода поясняюш;их текстов. Для вычисления факториала числа (переменная N) воспользуемся циклом со счетчиком, в котором счетчик цикла (переменная I) будет принимать значения от минимгшьного (1) до максимального (значение переменной N). В теле цикла будем последовательно в каждом шаге цикла умножать факториал (переменная F) на значение счетчика (переменная I) и выводить их значения в список. Создание программного кода на языке программирования Visual Basic .NET 2. Объявить переменные, ш;елчком по текстовому полю создать заготовку процедуры-обработчика события и ввести программный код: Dim I As Byte, F As Long Private Sub TextBoxl_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBoxl.TextChanged ListBoxl.Items.Clear() N = Val(TextBoxl.Text) F = 1 For I = 1 To N F = F * I ListBoxl.Items.Add{Str(I) & "! =" & Str{F)) Next I End Sub __ Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi 3. Запустить проект на выполнение и ввести в текстовое поле число (например, 20). 254 Глава 4 В списке будут выведены шаги вычисления факториала введенного числа (см. рис. 4.21). Рис. 4.21. Проект «Факториал (итерация)» Проект «Факториал (рекурсия)». Создать проект, в котором факториал числа вычисляется с использованием рекурсивной функции. Будем вводить число в текстовое поле и выводить шаги вычисления факториала этого числа в список. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Разместить на форме (рис. 4.22): • текстовое поле Editl для ввода числа; • список ListBoxl для вывода шагов вычисления факториала в качестве элементов списка; • надписи для вывода поясняющих текстов. Формулу для вычисления факториала можно записать следующим образом: N1 = N X (N-1) X (N-2) Х...Х 2 X 1 = N X (N-1)! Следовательно, факториал числа N1 равен произведению числа N на факториал числа (N-1)!. В свою очередь, факториал числа (N-1)! — это произведение числа N-1 на факториал числа (N-2)! и т. д. Алгоритмизация и основы объектно-ориентированного программирования 255 Таким образом, если вычисление факториала числа N1 реализовать как функцию, то в теле этой функции должен быть вызов функции вычисления факториала числа (7V-1)!, т. е. получим рекурсивную функцию, так как она вызывает сама себя. Создание программного кода на языке программирования Turbo Delphi Для вычисления факториала числа создадим рекурсивную функцию Factorial {N: byte) , аргументом которой является число N. В зависимости от значения числа N с использованием оператора ветвления if...then...else будем вычислять значение функции. Если функция вызывается с аргументом, равным 1, то она возвращает значение 1, в противном случае она обращается к самой себе и возвращает произведение N^Factorial(N-1). 2. Создать рекурсивную функцию, реализующую вычисление факториала: function Factorial (N:byte) : int64; begin if N = 1 then Factorial 1 else Factorial N*Factorial(N-1); end; Для вывода шагов вычисления факториала воспользуемся циклом со счетчиком, в котором счетчик цикла (переменная I) будет принимать значения от минимального (1) до максимального (значение переменной^Ы), В теле цикла будем вызывать рекурсивную функцию, вычисляющую факториал, и выводить значения счетчика цикла и функции в список. 3. Объявить переменные, щелчком по текстовому полю создать заготовку процедуры-обработчика события и ввести программный код: var I: byte; N: byte; procedure TForml.Edit1Change(Sender: TObj ect); begin N ;= StrToInt(Editl.Text); ListBoxl. I terns .Clear; For I := 1 To N Do 256 Глава 4 begin ListBoxl. I teiT.s . Add {IntToSt r (I) IntToStr(Factorial(I)) ) ; end; end; Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi 4. Запустить проект на выполнение и ввести в текстовое поле число (например, 20). В списке будут выведены шаги вычисления факториала введенного числа (см, рис. 4,22). шщтш ' fed 'фйш 11-1 21=2 3!=6 4! -24 51-120 61-720 71 -504C fli =4m?n Число|20 9'-362880 101-3628800 111-39916800 121-479001600 131-6227020800 141=8717829120C 151=1307674368000 16!=20922789888000 171-355687428096000 181=6402373705728000 19!=121645100408832000 201-2432902008176540000 Рис. 4.22. Проект «Факториал (рекурсия)» Контрольные вопросы 1. Почему не удается в вышерассмотренных проектах на языках объектно-ориентированного программирования вычислить факториал числа, большего 20? Алгоритмизация и основы объектно-ориентированного программирования 257 Компьютетаый практикум Windows-CD 4.9. Создать проект ♦Факториал (итерация)». TurboDelphi-CD .. .\Projects\Factorial1 \ 4.10. Создать проект ♦Факториал (рекурсия)». \mformatika10\...\Factorlal2\ TurboDelphi-CD .. .\Projects\Factorial2\ 4.11. Делегаты Делегаты. Делегаты используются в среде .NET Framework для построения механизмов обработки событий. Когда возникает событие, делегат вызывает соответствующий обработчик события. Делегат по умолчанию автоматически связывается с одним обработчиком события. В программном коде языков •NET это реализуется по-разному. В языке Visual Basic .NET непосредственно в заготовке обработчика события делегат указывается после служебного слова Handles, например обработчик события 3uttonl_Click вызывается делегатом Buttonl. Click. Делегат события может вызывать несколько различных обработчиков событий. Групповой делегат обеспечивает уведомление «один делегат ко многим обработчикам событий», т. е, последовательно вызывает несколько обработчиков событий из списка вызова. 258 Глава 4 Обработчик событий может вызываться делегатами различных событий, т. е. обеспечивается уведомление «многие делегаты к одному обработчику события». В этом случае связь между делегатами и обработчиками событий устанавливается программистом вручную. Например, событие, возникающее при нажатии кнопки, и событие, возникающее при щелчке по команде меню, могут использовать делегаты, которые затем вызовут один и тот же обработчик событий для одинаковой обработки этих разных событий. Делегаты используются в среде .NET Framework для вызова процедур-обработчиков событий. Механизм действия делегатов следующий: событие — создание делегата события — вызов процедур-обработчиков событий. По умолчанию событие создает «свой» делегат, который автоматически вызывает «свой» обработчик события. Например, щелчок по кнопке Buttonl соответствует событию Click, которое создает делегат Buttonl .Click, вызывающий процедуру-обработчик событий Buttonl_Click. При создании процедуры-обработчика события (метода) делегат автоматически записывается: • на языке Visual Basic .NET в строке имени процедуры после ключевого слова Handles (англ, «управляемый»); • на языках Visual C# и Visual J# в разделе программного кода Windows Form Designer generated code, после ключевого слова this (англ. «этот»). Язык Visual Basic .NET: Private Sub Buttonl_Click(ByVal sender As System.Object^ ByVal e As System.EventArgs) Handles Buttonl.Click Язык Visual C#: this.buttonl.Click += new System. EventHandler(this.buttonl Click); Язык Visual J#: this.buttonl.add_Click(new System. EventHandler(this.buttonl Click)); Проект «Делегаты». Создать проект, в котором один делегат вызывает два обработчика событий, а обработчик события вызывается тремя разными делегатами. Делегаты событий «щелчок по кнопке», «щелчок по пункту меню» и «щелчок длгоритмизация и основы объектно-ориентированного программирования 259 ПО кнопке на панели инструментов» вызывают два обработчика событий «изменение текста», которые по умолчанию создаются для списка и текстового поля со списком, В результате после щелчка по кнопке, пункту меню и кнопке на панели инструментов должен выводиться текст «Событие произошло»/ в качестве элемента списка в поле списка и в текстовом поле со списком. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual C# и Visual J# 1. Разместить на форме (рис. 4.23): • список ListBoxl и поле со списком ComboBoxl для вывода текста «Событие произошло» в качестве элементов списка; • кнопку Buttonl, меню Menulteml и панель инструментов ToolBarl для создания делегатов событий. Щелчком по списку создать заготовку по умолчанию обработчика события ListBoxl_SelectedIndexChanged. Щелчком по текстовому полю со списком создать заготовку по умолчанию обработчика события ComboBoxl_ Selected! ndexChanged. Введем код обработчиков событий, который выводит текст «Событие произошло» в качестве элемента списка в поле списка и в текстовое поле со списком. В языке Visual Basic .NET делегаты вводятся непосредственно в заготовки обработчиков событий. Для этого после ключевого слова Handles необходимо ввести делегаты событий «щелчок по кнопке» Buttonl .Click, «щелчок по пункту меню» Menulteml .Click и «щелчок по кнопке на панели инструментов» ToolBarl.Click. Создание программного кода процедур-обработчиков событий и делегатов на языке программирования Visual Basic .NET 2. Private Sub ListBoxl_SelectedIndexChanged{ByVal sender As System.Object, ByVal e As System. Even-tArgs) Handles Buttonl.Click, Menulteml.Click, ToolBarl.Click listBoxl.Items.Add ("Событие произошло") End Sub 260 Глава 4 Private Sub ComboBoxl_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System. Even-tArgs) Handles Buttonl.Click, Menulteml.Click, ToolBarl.Click ComboBoxl.Items .Add ("Событие произошло") End Sub В языках Visual C# и Visual J# делегаты вводятся в разделе программного кода Windows Form Designer generated в области описания соответствующего элемента управления. Создание делегатов на языке программирования Visual C# 2, Ввести делегаты события «щелчок по кнопке» buttonl. Click для обработчиков событий listBoxl_Selected IndexChanged и comboBoxl_SelectedIndexChanged: this.buttonl.Click += new System.EventHandler (this.listBoxl_SelectedIndexChanged); this.buttonl.Click += new System.EventHandler (this.comboBoxl_SelectedIndexChanged); 3. Ввести делегаты для события «щелчок по пункту меню» menultemll .Click для обработчиков событий listboxl__SelectedIndexChanged и comboBoxl_Selected-IndexChanged: this.menulteml.Click += new System.EventHandler (this.listBoxl_SelectedIndexChanged); this.menulteml.Click += new System.EventHandler(this.comboBoxl_ SelectedIndexChanged); Создание делегатов на языке программирования Visual J# 2. В разделе программного кода Windows Form Designer generated code ввести делегаты события «щелчок по кнопке» buttonl .Click для обработчиков событий list-Boxl_SelectedIndexChanged и comboBoxl_ SelectedIndexChanged: this.buttonl.add_Click(new System.EventHandler (this.listBoxl_SelectedIndexChanged)); this.buttonl,add_Click(new System.EventHandler (this.comboBoxl_SelectedIndexChanged))/ 3, Ввести делегаты для события «щелчок по пункту меню» menultemll.add Click: ддгоритмизация и основы объектно-ориентированного программирования 261 this.menulteml.add_Click(new System.EventHandler (this.listBoxl_SelectedIndexChanged)); this.menulteml.add_Click(new System.EventHandler (this.comboBoxl_SelectedIndexChanged)); Запуск проекта на языках Visual Basic .NET, Visual C# и Visual J# 4. Запустить проект на выполнение и щелкнуть по кнопке, пункту меню и кнопке панели инструментов. В списке и поле со списком будут выведены тексты «Событие произошло» (см. рис. 4.23). Меню (чмопса Собь(тие произошло Собьггие произошло Собьггие произошло Событие произошло Событие произошло Собьггие произошло Рис. 4.23. Проект «Делегаты» Контрольные вопросы 1. Может ли один и тот же делегат вызывать различные обработчики событий? Может ли один и тот же обработчик события вызываться различными делегатами? Компьюте^ый§1рактикум ЗечЛ,-' Windows-CD 4.11, Создать проект «Делегаты». ...\informatika10\...\Delegate\ 262 Глава 4 4.12. Алгоритмы перевода чисел и их кодирование на языках объектно-ориентированного программирования 4.12.1. Алгоритм перевода целых чисел 2.8.1. Перевод целых чисел из десятичной системы в двоичную, восьмеричную и шестнадцатеричную Алгоритм позволяет формализовать решение задачи. Запись алгоритма должна производиться на языке, понятном исполнителю. Если исполнителем алгоритма является человек, то алгоритм может быть записан на естественном языке (русском, английском, китайском и др.). Для того чтобы сделать алгоритм более наглядным, часто используют блок-схемы. На блок-схеме хорошо видна структура алгоритма, по которой исполнителю (человеку) удобно отслеживать процесс его выполнения. Для того чтобы этот алгоритм мог автоматически выполнить исполнитель компьютер, он должен быть записан на понятном для этого исполнителя языке, т. е. на языке программирования. Реализуем алгоритмы перевода чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления в форме проекта на языках объектно-ориентированного программирования. Последовательно запишем эти алгоритмы на естественном языке, в форме блок-схемы и на языках программирования. Проект «Перевод целых чисел». Создать проект, реализующий перевод целых десятичных чисел в двоичную, восьмеричную и шестнадцатеричную системы счисления. D Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Разместить на форме (рис. 4.27): • текстовое поле TextBoxl для ввода целого числа в десятичной системе счисления; • надпись Labe 11 для вывода целого двоичного числа; длгоритмизация и основы объектно-ориентированного программирования 263 • надпись Labe 12 для вывода целого восьмеричного числа; • надпись Labels для вывода целого пхестнадцатеричного числа; • кнопку Button 1 для создания обработчика события, реализующего перевод целых чисел в двоичную систему счисления; • кнопку Buttons для создания обработчика события, реализующего перевод целых чисел в восьмеричную систему счисления; • кнопку Buttons для создания обработчика события, реализующего перевод целых чисел в шестнадцатеричную систему счисления. 2. Сделать графический интерфейс более привлекательным. Присвоить элементам управления новые значения свойств с помощью диалогового окна Свойства. Алгоритм перевода целых десятичных чисел в двоичную систему счисления на естественном языке: 1) Ввести десятичное целое число. 2) В цикле с предусловием, пока исходное целое десятичное число или целое частное больше О, выполнить вычисления: 2.1) Вычислить остаток от деления исходного целого десятичного числа или целого частного на основание новой системы (на 2). 2.2) Выполнить целочисленное деление целого десятичного числа или целого частного на основание новой системы (на 2). 2.3) Записать полученный остаток от деления слева от двоичного числа (остатки, записанные в обратном порядке, образуют двоичное число). 3) Вывести двоичное целое число. Алгоритм перевода целых десятичных чисел в двоичную систему счисления в форме блок-схемы (с использованием языка Visual Basic .NET). Программный код удобнее записывать на том языке программирования, на котором будет кодироваться алгоритм для его выполнения на компьютере (рис. 4.24). Кодирование алгоритма на языке программирования Visual Basic .NET. Алгоритм, записанный на естественном языке и изображенный в виде блок-схемы, рассчитан на исполнителя человека. Для того чтобы алгоритм исполнил компьютер, он должен быть закодирован на языке программирования. 264 Глава 4 Рис. 4.24. Блок-схема алгоритма перевода целых десятичных чисел в двоичную систему счисления Кодирование алгоритма существенно упростится, если использовать записанный на естественном языке алгоритм в качестве комментариев в программе. Комментарии не используются компьютером, так как не компилируются вместе с программой и не выполняются. Однако комментарии существенно облегчают понимание хода выполнения программы человеком. Алгоритм на естественном языке можно скопировать и вставить в программу, поместив соответствующий символ в начале каждой строки алгоритма, чтобы превратить ее в комментарий. Затем программный код на языке программирования из блок-схемы можно разместить под каждой строкой комментария, и получится программа, которая уже документирована. о В языке программирования Visual Basic .NET комментарий в строке начинается с символа апостроф «’». В языках программирования Turbo Delphi, Visual C# и Visual J# строки комментария начинаются с двух символов косой черты «//». Алгоритмизация и основы объектно-ориентированного программирования 265 Создание обработчика события, реализующего перевод целых десятичных чисел в двоичную систему счисления, на языке программирования Visual Basic .NET 3. Объявить переменные: Dim N As Integer 'десятичное число Dim R As Integer 'остаток от деления исходного 'целого десятичного числа или целого частного на 'основание новой системы Dim Bin As String 'двоичное число в строковой 'форме 4. Создать обработчик события: Private Sxib Buttonl_Click (ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttonl.Click '1.Ввести десятичное целое число и другие 'начальные значения N = Val(TextBoxl,Text) Label 1. Text = "" Bin ^ "" '2, В цикле с предусловием^ пока исходное целое 'десятичное число или целое частное больше 0, 'выполнить вычисления. Do While N > О '2Л.Вычислить остаток от деления исходного 'целого десятичного числа или целого частного на 'основание новой системы (на 2) . R = Ы Mod 2 '2.2.Выполнить целочисленное деление целого 'десятичного числа или целого частного на 'основание новой системы (на 2). N = N \ 2 '2.3. Записать полученный остаток от деления 'слева от двоичного числа (остатки, записанные в 'обратном порядке^ образуют двоичное число), 'Bin - CStr{R) + Bin Loop '3.Вывести двоичное целое число Labell.Text = Bin £nd Sub 266 Глава 4 Создание обработчика события, реализующего перевод целых десятичных чисел в двоичную систему счисления, на языке программирования Turbo Delphi 3. Объявить переменные: var N, R: integer; Bin: string; 4. Создать обработчик события: procedure TForml.ButtonlClick(Sender: TObject); begin N := StrToInt(Editl.Text); Labell.Caption := Bin := ' '; while N > 0 Do begin R : = N mod 2; N : = N div 2 ; Bin := FloatToStr(R) + Bin; end; Labell.Caption := Bin; end; Алгоритм перевода целых десятичных чисел в восьмеричную систему счисления на естественном языке: 1) Ввести десятичное целое число. 2) В цикле с предусловием, пока исходное целое десятичное число или целое частное больше О, выполнить вычисления: 2.1) Вычислить остаток от деления исходного целого десятичного числа или целого частного на основание новой системы (на 8). 2.2) Выполнить целочисленное деление целого десятичного числа или целого частного на основание новой системы (на 8). 2.3) Записать полученный остаток от деления слева от восьмеричного числа (остатки, записанные в обратном порядке, образуют восьмеричное число). 3) Вывести восьмеричное целое число. Алгоритмизация и основы объектно-ориентированного программирования 267 Алгоритм перевода целых десятичных чисел в восьмеричную систему счисления в форме блок-схемы (с использованием языка Visual С#) (рис. 4.25): Рис. 4.25. Блок-схема алгоритма перевода целых десятичных чисел в восьмеричную систему счисления Создание обработчика события, реализующего перевод целых десятичных чисел в восьмеричную систему счисления, на языке программирования Visual C# 3. Объявить переменные: int N; //десятичное число int R; //остаток от деления исходного целого //десятичного числа или целого частного //на основание новой системы string Oct; //восьмеричное число в строковой //форме 4. Создать обработчик события: private void button2_Clic}c (object sender. System. EventArgs e) {//1.Ввести десятичное целое число и другие //начальные данные. N = Convert.ToInt32(textBox1.Text); label2.Text = Oct = 268 Глава 4 //2.Б цикле с предусловием, пока исходное целое //десятичное число или целое частное больше О, //выполнить вычисления: while (М > 0) {//2.1. Вычислить остаток от деления исходного //целого десятичного числа или целого частного //на основание новой системы (на 8) , R = N % 8; //2.2. Выполнить целочисленное деление целого //десятичного числа или целого частного на //основание новой системы (на 8), N = Convert.ToInt32(N/8) ; //2,2. Записать полученный остаток от деления //слева от двоичного числа (остатки, записанные //в обратном порядке, образуют восьмеричное //число). Oct = Convert.ToString(R) + Oct; } //3.Вывести восьмеричное целое число. label2.Text = Oct; Алгоритм перевода целых десятичных чисел в шестнадцатеричную систему счисления на естественном языке: 1) Ввести десятичное целое число. 2) В цикле с предусловием, пока исходное целое десятичное число или целое частное больше О, выполнить вычисления: 2.1) Вычислить остаток от деления исходного целого десятичного числа или целого частного на основание новой системы (на 16). 2.2) Выполнить целочисленное деление целого десятичного числа или целого частного на основание новой системы (на 16). 2.3) Выразить остатки от деления цифрами новой системы счисления. 2.4) Записать полученный остаток от деления слева от шестнадцатеричного числа (остатки, записанные в обратном порядке, образуют шестнадцатеричное число). 3) Вывести шестнадцатеричное целое число. ддгоритмизация и основы объектно-ориентированного програмш1рования 269 Алгоритм перевода целых десятичных чисел в шестнадцатеричную систему счисления в форме блок-схемы (с использованием языка Visual J#) (рис. 4.26). Рис. 4.26. Блок-схема алгоритма перевода целых десятичных чисел в шестнадцатеричную систему счисления Создание обработчика события, реализующего перевод целых десятичных чисел в шестнадцатеричную систему счисления, на языке программирования Visual J# 3. Объявить переменные: int N; //десятичное число int R; //остаток от деления исходного целого //десятичного числа или целого частного //на основание новой системы String Hex; //шестнадцатеричное число //в строковой форме 270 Глава 4 String Н; //разряд шестнадцатеричного числа //в строковой форме Создать обработчик события: private void buttonl_Click (Object sender, System. EventArgs e) {//1.Ввести десятичное целое число и другие //на чальные данные. N = System.Convert.ToInt32(textBoxl.get_Text0); labels , set Text {"”) ; Hex = //2. В цикле с предусловием^ пока исходное целое //десятичное число или целое частное больше О, //выполнить вычисления: while (N > 0) {//2.1, Вычислить остаток от деления исходного //целого десятичного числа или целого частного //на основание новой системы (на 16). R = N % 16; //2.2. Выполнить целочисленное деление целого //десятичного числа или целого частного //на основание новой системы (на 16). N = System.Convert.ToInt32(N / 16); //2.3. Выразить остатки от деления цифрами //новой системы счисления. Н = System.Convert.ToString(R); switch (R) {case 10: H = "A" ; break; case 11: H = "B''; break; case 12: H = "C"; break; case 13: H = "D"; break; case 14: H = "E"; break; case 15: H = "F"; break; } Алгоритмизация и основы объектно-ориентированного программирования 271 //2,4. Записач^ь полученный остаток от деления //слева от шестнадцатеричного числа (остатки, //записанные в обратном порядке, образуют //шестнадцатеричное число) . Hex = Н + Hex; } //3.Вывести шестнадцатеричное целое число. labels.set Text(Hex); Запуск проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 5. Запустить проект на выполнение и ввести в текстовое поле десятичное число (например, 255). Щелкнуть по кнопкам, на надписи будут выведены результаты перевода, т, е. двоичное, восьмеричное и шестнадцатеричное числа (см. рис, 4.27). Е Перевод целых чисел ^ Х^и<«ай смог»-1в 255 6осьие(М^«ай система Шестнаааэт^>»1дй система 1П11Ш 377 FF Рис. 4.27. Проект «Перевод целых чисел» Компьюте рактикум 4.12. Создать проект «Перевод целых чисел». Windows-CD ...\informatika10\...\lntegerNumber\ TurboDelphi-CD D ..\ProJects\lntegerNumber\ 272 Глава 4 4.12.2. Алгоритм перевода дробных чисел 2.8.2. Перевод дробей из десятичной системы в двоичную, восьмеричную и шестнадцатеричную Проект «Перевод дробных чисел»* Создать проект, реализующий перевод дробных десятичных чисел в двоичную, восьмеричную и шестнадцатеричную системы счисления. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Разместить на форме (рис. 4.31); • текстовое поле TextBoxl для ввода дробного числа в десятичной системе счисления; • надпись Labe II для вывода дробного двоичного числа; • надпись Labe 12 для вывода дробного восьмеричного числа; • надпись Labels для вывода дробного шестнадцатеричного числа; • кнопку Buttonl для создания обработчика события, реализующего перевод дробных чисел в двоичную систему счисления; • кнопку But ton 2 для создания обработчика события, реализующего перевод дробных чисел в восьмеричную систему счисления; • кнопку Buttons для создания обработчика события, реализующего перевод дробных чисел в шестнадцатеричную систему счисления. 2. Сделать графический интерфейс более привлекательным. Присвоить элементам управления новые значения свойств с помощью диалогового окна Свойства, Алгоритм перевода дробного десятичного числа в двоичную систему счисления на естественном языке: 1) Ввести десятичное дробное число. 2) В цикле с предусловием, пока исходная дробь или дробная часть произведения не станет равной нулю или не будет достигнута требуемая точность представления числа, выполнить вычисления: 2.1) Выполнить умножение десятичной дроби или полученной дробной части на основание новой системы счисления (на 2). Алгоритмизация и основы объектно-ориентированного программирования 273 2.2) Вычислить дробную часть произведения. 2.3) Записать полученную целую часть произведения справа от двоичного числа (целые части произведения, записанные в прямом порядке, образуют двоичное число). 3) Вывести двоичное дробное число. Алгоритм перевода дробного десятичного числа в двоичную систему счисления в форме блок-схемы (с использованием языка Visual Basic .NET). Программный код удобнее записывать на том языке программирования, на котором будет кодироваться алгоритм для его выполнения на компьютере (рис. 4.28): Рис. 4.28. Блок-схема алгоритма перевода дробных десятичных чисел в двоичную систему счисления Кодирование алгоритма на языке программирования Visual Basic .NET. При реализации второго шага алгоритма цикл с предусловием может иметь бесконечное число шагов, в результате получается бесконечная периодическая дробь. Однако при реализации алгоритма на компьютере количество шагов ограничивается типом переменной, в которой хранится дробная часть произведения и которая входит в предусловие. Если дробная часть произведения хранится в переменной N, которая имеет тип Single, то ее значение может хранить 7-8 значаш;их цифр в десятичной системе счисления, что соответствует 23-25 значаш,им цифрам в двоичной системе счисления. 274 Глава 4 Создание обработчика события, реализующего перевод дробных десятичных чисел в двоичную систему счисления, на языке программирования Visual Basic .NET 3. Объявить переменные: Dim N As Single 'десятичная дробь Dim М As Single 'произведение десятичной дроби 'или полученной дробной части на основание новой 'системы счисления Dim Bin As String 'двоичная дробь в строковой 'форме 4. Создать обработчик события: Private Sub Buttonl_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttonl.Click '1,Ввести десятичное дробное число и другие 'начальные данные. N = Val(TextBoxl.Text) Labell.Text = "0." Bin = "" '2. В цикле с предусловием^ пока исходная дробь 'или дробная часть произведения не станет равной 'нулю или не будет достигнута требуемая точность 'представления числа ^ выполнить вычисления: Do While N > 0 '2.1.Выполнить умножение десятичной дроби или 'полученной дробной части на основание новой 'системы счисления (на 2) . М = N * 2 '2.2.Вычислить дробную часть произведения. N = М - Int(М) '2,3.Записать полученную целую часть произведения 'справа от двоичного числа (целые части 'произведенияf записанные в прямом порядке, 'образуют двоичное число) . Bin = Bin + CStr(Int(M)) Loop Алгоритмизация и основы объектно-ориентированного программирования 275 '3,Вывести двоичное дробное число, Labell.Text = Labell.Text + Bin End Sub _ Создание обработчика события, реализующего перевод дробных десятичных чисел в двоичную систему счисления, на языке программирования Turbo Delphi 3. Объявить переменные: var N, М: single; Bin: string; 4. Создать обработчик события: procedure TForml.Button1Click(Sender: TObject); begin N := StrToFloat(Editl.Text); Labell. Caption := '0.'; Bin := ' while IS] > 0 Do begin M := N * 2; N : = Frac(M) ; Bin : Bin + FloatToStr (Int (M) ) ; end; Labell.Caption ;= Labell,Caption + Bin; end; Алгоритм перевода дробного десятичного числа в восьмеричную систему счисления на естественном языке: 1) Ввести десятичное дробное число. 2) В цикле с предусловием, пока не будет достигнуто определенное количество знаков восьмеричного дробного числа, выполнить вычисления: 2.1) Выполнять умножение десятичной дроби или полученной дробной части на основание новой системы счисления (на 8). 2.2) Вычислять дробную часть произведения. 2.3) Записать полученную целую часть произведения справа от восьмеричного числа (целые части произведения, записанные в прямом порядке, образуют восьмеричное число). 3) Вывести восьмеричное дробное число. 276 Глава 4 Алгоритм перевода дробного десятичного числа в восьмеричную систему счисления в форме блок-схемы (с использованием языка Visual С#) (рис. 4.29): Рис. 4.29. Блок-схема алгоритма перевода дробных десятичных чисел в восьмеричную систему счисления Кодирование алгоритма на языке программирования Visual С#. При реализации второго шага алгоритма в цикле с предусловием в качестве условия используем сравнение длины восьмеричной дроби с заданным числом. Цикл будет выполняться до тех пор, пока количество знаков в восьмеричной дроби не достигнет заданного количества. Создание обработчика события, реализующего перевод дробных десятичных чисел в восьмеричную систему счисления, на языке программирования Visual C# 3. Объявить переменные: float N; //десятичная дробь float М; //произведение десятичной дроби или //полученной дробной части на основание новой //системы счисления string Oct; //восьмеричная дробь в строковой //форме 4. Создать обработчик события: private void button2_Click{object sender EventArgs e) System. длгоритмизация и основы объектно-ориентированного программирования 277 {//1.Ввести десятичное дробное число и другие //начальные данные, N = Convert.ToSingle{textBox1.Text) ; label2.Text = "0."; Oct = //2, В цикле с предусловием^ пока не получим //восьмеричную дробь заданной длины, произвести // вычисления: while {Oct. Length < 9) {//2.1. Выполнить умножение исходной десятичной //дроби или полученной дроби на основание новой //системы (на 8)-М = N * 8 ; //2.2.Вычислить дробную часть произведения. N = М - (int)iyi; //2.3.Записать полученную целую ча сть //произведения справа от восьмеричного числа //(целые части произведения, записанные в прямом //порядке, образуют восьмеричное число). Oct = Oct + Convert.ToString((int)М); } //3.Вывести восьмеричное дробное число. label2.Text = label2.Text + Oct;} } Алгоритм перевода дробного десятичного числа в шестнадцатеричную систему счисления на естественном языке: 1) Ввести десятичное дробное число. 2) В цикле со счетчиком определенное количество раз выполнить вычисления: 2.1) Выполнить умножение десятичной дроби или полученной дробной части на основание новой системы счисления (на 16). 2.2) Вычислить дробную часть произведения. 2.3) Записать полученную целую часть произведения справа от шестнадцатеричного числа (целые части произведения, записанные в прямом порядке, образуют шестнадцатеричное число). 3) Вывести шестнадцатеричное дробное число. 278 Глава 4 Алгоритм перевода дробного десятинного числа в шестнадцатеричную систему счисления в форме блок-схемы (с использованием языка Visual J#) (рис. 4.30): Рис. 4.30. Блок-схема алгоритма перевода дробных десятичных чисел в шестнадцатеричную систему счисления Кодирование алгоритма на языке программирования Visual J#. Реализуем второй шаг алгоритма в форме цикла со счетчиком, т. е. вычисление шестнадцатеричной дроби произведем определенное количество раз. Алгоритмизация и основы объектно-ориентированного программирования 279 Создание обработчика события, реализующего перевод дробных десятичных чисел в шестнадцатеричную систему счисления, на языке программирования Visual J# 3. Объявить переменные: float N; //десятичная дробь float У1; //произведение десятичной дроби или //полученной дробной части на основание новой //системы счисления String Hex; //шестнадцатеричная дробь //в строковой форме String Н; //разряд шестнадцатеричной дроби в //строковой форме byte I; //счетчик цикла 4. Создать обработчик события: private void button3_Click (Object sender, System. EventArgs e) {//1 .Ввести десятичное дробное число и другие //начальные данные. = System.Convert .ToSingle (textBoxl .get_Text О ) ; labels. set^Text ("0.") ; Hex = //2. В цикле со счетчиком определенное //количество раз произвести вычисления: for (I = 1; I <= б; I++) {//2.1.Выполнить умножение десятичной дроби или //полученной дробной части на основание новой //системы счисления (на 16). М = N * 16; //2.2.Вычислить дробную часть произведения. N = М - (int)M; //2.3.Выразить целые части произведений цифрами //новой системы счисления. Н = System.Convert.ToString((int)М); switch ((int)M) {case 10: H = "A" ; break; case 11: H - "B"; 280 Глава 4 break; case 12: Н = "С"; break; case 13: Н = "D"; break; case 14: H = "E"; break; case 15: H = "F"; break; } //2,4.Записать полученную целую часть //произведения справа от шестнадцатеричного //числа (целые части произведения, записанные в //прямом порядке, образуют шестнадцатеричное число) . Hex = Hex + Н; } //3,Вывести шестнадцатеричное дробное число, labels.set_Text(labels.get Text() + Hex); Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi 5. Запустить проект на выполнение и ввести в текстовое поле десятичную дробь (например, 0,7). Щелкнуть по кнопкам, на надписи будет выведен результат перевода, т. е. двоичная, восьмеричная и шестнадцатеричная дроби (см. рис. 4.31). Т" Г1е{)ео()д дробш^1х ' |исел Двоичная сист«г<^ [од Воо>ме{»1чиая система Шестнасцатериччва система о 10110011 ООП ООП ООП 00'1 0 546314630 о вззззз Рис. 4.31. Проект «Перевод дробных чисел» Алгоритмизация и основы объектно-ориентированного программирования 281 Компьютедрый |1рактикум Windows-CD 4.13. Создать проект «Перевод дробных чисел». ...Mnformatika10\...\FractionNumber\ TurboDelphi-CD ...\Projects\FractionNumber\ 4.13. Графика в объектно-ориентированных языках программирования 4.13.1. Графика в языках программирования Visual Basic .NET, Visual C# и Visual J# Интегрированная система программирования Visual Studio для создания рисунков, рисования текста и отображения графических изображений на формах и элементах управления использует GDI (Graphics Device Interface — графический интерфейс устройств). Объект Graphics (Область рисования). Для использования GDI сначала необходимо создать область рисования, т. е. объект Graphics. Объект Graphics можно создать тремя различными способами. Первый способ состоит в использовании метода Create-Graphics {) формы или элемента управления, на котором надо отобразить графику. Например, создадим объект Graphl типа Graphics для графического поля PictureBoxl. со '~а.- Язык Visual Basic .NET: Dim Graphl As Graphics CreateGraohics () P: ct.creBox Языки Visual C# и Visual J#: Graphics Graphl ^ piccureBox. CreateGraphics () ; 282 Глава 4 Второй способ используется для создания растрового изображения, которое можно сохранить как графический файл. Сначала необходимо объявить создание растрового изображения Image 1 определенного размера, затем объявить создание объекта Graphl типа Graphics из растрового изображения Image 1 и, наконец, присвоить свойству Image формы или элемента управления (например, PictureBoxl. Image) значение Imagel, Язык Visual Basic .NET: Dim Imagel As New Bitmap (200, 200) Dim Graphl As Graphics = Graphics. Fromlmage(Imagel) PictureBoxl.Image ^ Imagel Язык Visual C#: Bitmap Imagel = new Bitmap(200,200); Graphics Graphl = Graphics.Fromlmage(imagel); pictureBoxl. Image imagel; Язык Visual J#: Bitmap imagel = new Bitmap(200,200); Graphics Graphl = Graphics.Fromlmage (imagel); pictureBoxl.set_Image(imagel); Третий способ использует событие Paint формы или элемента управления, которое происходит при их создании или обновлении. В обработчике этого события одним из аргументов является, е типа System.Windows.Forms.PaintEventArgs. В программном коде обработчика события можно объявить создание объекта Graphl типа Graphics как свойства аргумента е. 1Ш Язык Visual Basic .NET: Private Sub PictureBoxl_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms . PaintEventArgs) Handles PictureBoxl.Paint Dim Graphl As Graphics = e.Graphics End Sub Язык Visual C#: private void pictureBoxl_Paint (object sender, System.Windows.Forms.PaintEventArgs e) { Graphics Graphl = €j.Graphics; Алгоритмизация и основы объектно-ориентированного программирования 283 Язык Visual J#: private void pict:ureBoxl_Paint (Object sender, System.Windows.Forms.PaintEventArgs e) iraphics Graphl = e.get Graphics!); Перо. Объект Pen (Перо) определяет цвет и ширину линии рисования. В разделе объявления переменных необходимо определить имя объекта (например, Penl), установить цвет (например, красный Color .Red) и ширину линии в пикселях (например, 3). Язык Visual Basic .NET: Dim Penl As New Pen (Color. Red, 3) Язык Visual C#: Pen Penl = new Pen (Color . Red, 3) ; Язык Visual J#; Pen Penl ^ new Pen(Color.get Red(},3); Кисть. Объект Brush (кисть) определяет цвет и стиль закрашивания прямоугольников, окружностей и других замкнутых фигур. В разделе объявления переменных необходимо определить имя объекта (например, Brush 1) и установить тип закраски и цвет (например, сплошная закраска синего цвета SolidBrush (Color . Blue) ). Язык Visual Basic .NET: Dim Brushl As New SolidBrush (Color.Blue) Язык Visual C#: SolidBrush Brushl = new SolidBrush(Color.Blue); Язык Visual J#: SolidBrush Brushl = new SolidBrush(Color. get_Blue ()); Цвет. Цвет устанавливается как значение свойства Color. Можно установить цвет с использованием нескольких десят-цветовых констант. Ниже приведены примеры установки 284 Глава 4 зеленого цвета для объекта ?еп1 (перо) и желтого цвета для объекта Brushl (кисть). Языки Visual Basic .NET и Язык Visual С#: ?еп1.Color = Color.Green Brushl.Color = Color.Yellow Язык Visual J#: Penl.set_Color(Color.get^Green()); Brushl.set Color(Color.get Yellow()); Для установки цвета в 24-битовой палитре цветов RGB используется метод Color. FromArgb (Red, Green, Blue), аргументами которого являются три числа в диапазонах О до 255 (интенсивности красного, зеленого и синего цветов). Например, так можно установить пурпурный цвет для кисти Brushl. Языки Visual Basic .NET и Язык Visual С#: Brushl.Color “ Color.FromArgb(255,О,255) Язык Visual J#: Brushl.set Color(Color.FromArgb(255,0,255)); Цвет пера или кисти можно также установить с использованием элемента управления ColorDialog, Для этого данный элемент управления необходимо поместить на форму и ввести в программный код следующие строки; Языки Visual Basic .NET и Язык Visual С#: ColorDialogl.ShowDialog () Peni.Color = ColorDialogl.Color Язык Visual J#: ColorDialogl.ShowDialog(); Penl.set Colcr(ColorDialogl,get_Color()); После выполнения первой строки программного кода появится диалоговое окно Цвет (рис. 4.32). Вторая строка программного кода присваивает перу цвет, который можно выбрать в диалоговом окне Цвет с помощью мыши из палитры Алгоритмизация и основы объектно-ориентированного программирования 285 48 ОСНОВНЫХ цветов. После щелчка по кнопке Определить цвет в раскрывшемся диалоговом окне цвет можно выбрать из полной палитры 16 777 216 цветов, а также установить путем ввода в текстовые поля интенсивностей базовых цветов в системе цветопередачи RGB или оттенка, контрастности и яркости в системе цветопередачи HSB. 1.1.3. Палитры цветов в системах цветопередачи RGB, CMYK и HSB Информатика-9 OowBMb»ubwar. тггггтш-а тггггттт [ rf ■ ргиянаяп ■■ ITf Mf ■■ ЙВ ■■ Mi Шй ■ МНВ1м1ВНР1 Г'Г ■■ ■ ■■ВВЯ1ГВГ г*^'' Lr l^•v' 'Z Дополнитвл?ныв иввта; j»*»— m гггггггг ! Jjxj tli •l чьет OK Отм^ OneHOfcjlSO fF~* Контраст, fo Звпвыь1й: [7 Цевт[Звоивкв flpKOctbifo^ Сж1^й:[Г" Добмиг» Б на&ф { Рис. 4.32. Диалоговое окно Цвет Графические методы. Графические фигуры рисуются с использованием графических методов. Замкнутые фигуры, такие как прямоугольники или эллипсы, состоят из двух частей — контура и внутренней области. Контур рисуется с использованием заданного пера, а внутренняя область закрашивается с использованием заданной кисти. В языках Visual C# и Visual J# строки программного кода заканчиваются знаком точка с запятой «;». DrawLine () — метод рисования линии, аргументами которого являются перо определенного цвета и толщины (например, Peril), а также координаты концов линии XI, Y1 и Х2, Y2. I if / Языки Visual Basic .NET, Visual C# и Visual J#: .i Graphl. DrawLine (Penl, XI, Yl, X2, Y2) DrawRectangle () — метод рисования прямоугольника, аргументами которого являются перо определенного цвета и 286 Глава 4 ТОЛЩИНЫ (например, Penl), а также координаты левого верхнего угла XI, Y1, ширина width и высота Height. Языки Visual Basic .NET, Visual C# и Visual J#: Graphl.DrawRectangle (Penl, XI, Yl, Widch, Height) FillRectangle {) — метод закраски прямоугольника с использованием кисти определенного цвета. Языки Visual Basic .NET, Visual C# и Visual J#: Graphl.FillRectangle(Brushl, XI, У1, Width, Height) DrawEllipse () — метод рисования окружности или эллипса, аргументами которого являются перо определенного цвета и толщины (например, Penl), а также координаты левого верхнего угла описанного прямоугольника XI, У1, ширина Width и высота Height. Языки Visual Basic .NET, Visual C# и Visual J#: Graphl.DrawEllipse (Penl, XI, Yl, Width, Height) FillEllipse () — метод закраски окружности или эллипса с использованием кисти определенного цвета. Языки Visual Basic .NET, Visual C# и Visual J#: Graphl.FillEllipse(Brushl, XI, Yl, Width, Height) Для рисования точки с заданными координатами XI и Y1 можно использовать методы DrawRectangle (Penl, XI, Yl, 1, 1) или DrawEllipse(Penl, XI, Yl, 1, 1), в которых аргументы IWidth и Height равны 1. Graphl. Clear () — метод, заданным цветом (например, белым) стирающий изображения в области рисования. Языки Visual Basic .NET и Visual С#; Graphl.Clear(Color.White) Язык Visual J#: Graphl.Clear(Color.geo White()); Алгоритмизация и основы о&ъектно-ориентированного программирования 287 Рисование текста. Метод Drawstring () позволяет выводить текст в область рисования. Аргументами метода является строка текста, шрифт, кисть и координаты начгита строки. Объекты шрифт (например, drawFont) и кисть (например, drawBrush) необходимо объявить. Язык Visual Basic .NET: Dim drawFont As New Font ("Arial", 12) Dim drawBrush As New SolidBrush(Color.Black) Язык Visual C#: Font drawFont = new Font ("Arial", 12); Brush drawBrush = new SolidBrush(Color.Black); Язык Visual J#: Font drawFont = new Font ("Arial", 12); Brush drawBrush = new SolidBrush(Color.get_ Black ()); Рисование текста в левом верхнем углу области рисования можно осуществить так: Языки Visual Basic .NET, Visual C# и Visual J#: Graphl.Drawstring ("Текст", drawFont, drawBrush, 0, 0) Проект «Графический редактор». Создать проект, который позволит рисовать линии, прямоугольники, закрашенные прямоугольники, окружности и закрашенные окружности. Ввод координат осуществлять щелчками по графическому полю. Для рисования фигур использовать меню и панель инструментов. Обеспечить возможность установки для пера и кисти любого цвета из полной палитры цветов. Обеспечить возможность открытия и сохранения графических файлов. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual C# Й Visual J# 1. Поместить на форму (рис. 4.36); • графическое поле PictureBoxl, которое будет использоваться в качестве области рисования; 288 Глава 4 О • четыре надписи Labell, Label2, Labels и Label4 для вывода координат; • четыре надписи для вывода имен координат; • меню MainMenul для создания меню проекта; • панель инструментов ToolBarl для создания шести кнопок, обеспечивающих рисование графических примитивов и очистку поля рисования; • коллекцию изображений ImageLis11 для хранения изображений, которые будут помещены на кнопки панели инструментов; • диалог ColorDialogl, который позволяет выбрать цвет с использованием диалогового окна Цвет; • диалог OpenFileDialogl, который позволяет выбрать файл для открытия с использованием диалогового окна Открыть; • диалог SaveFileDlalogl, который позволяет выбрать имя файла при его сохранении с использованием диалогового окна Сохранить. Элементы управления MainMenul, ImageListl, ColorDialogl, OpenFileDialogl и SaveFileDialogl будут видны только в процессе создания проекта (рис. 4.33). MainMenul Ш ImageListl ColorDialogl S OpenFileDialogl Ш SaveFileDialogl Рис. 4.33. Элементы управления, которые не видны 8 процессе выполнения проекта Объявление переменных и объектов и создание обработчика событий на языке Visual Basic .NET Объявить переменные, которые будут содержать координаты двух точек, а также перо и кисть, которые будут использоваться для рисования графических примитивов. Dim XI, Y1, Х2, Y2 As Integer Dim Penl As New Pen (Color. Black, 5) Dim Brushl As New SolidBrush(Color.Red) 3. Создать программный код обработчика события, который обеспечивает запоминание и вывод на надписи координат щелчков левой и правой кнопками мыши по графическому полю. Использовать оператор выбора, который в зависимости от условия (значения аргумента обработчика со- Алгоритмизация и основы объектно-ориентированного про^аммировання 289 бытия е. Button) запоминает и выводит ту или иную пару координат. private Sub PictureBoxl_Click(ByVal sender As Object, ByVal e As System.Windows.Forms. MouseEventArgs) Handles PictureBoxl.MouseDown Select Case e.Button Case MouseButtons.Deft XI - e.X Y1 = e.Y Labell.Text ~ XI Label2.Text = Y1 Case MouseButtons.Right X2 = e.X Y2 = e.Y Labels.Text = X2 Label4.Text = Y2 End Select End Sub Создадим меню графического редактора, для чего используем элемент управления mainMenul: Файл Графические примитивы Цвет Открыть Линия Перо Сохранить Прямоугольник Кисть Закрашенный прямоугольник Окружность Закрашенная окружность Очистить Создание меню и обработчиков событий рисования графических примитивов на языке Visual C# 4. Разместить на форме элемент управления mainMenul. 5. В появившемся в левом верхнем углу формы в редакторе меню создать заголовок первого уровня. В поле Прототип для текста внести пункт меню Графические примитивы, 6. Для создания пункта меню перейти на следующую строку в редакторе меню. Ввести пункты меню Линия, Прямоугольник, Закрашенный прямоугольник. Окружность, Закрашенная окружность и Очистить. 290 Глава 4 7. Аналогично создать пункты меню верхнего уровня Файл и Цвет и их подпункты. 8. Использовать второй способ для создания области рисования с использованием растрового изображения image 1, которое можно сохранить как графический файл. Объявить image 1 как растровое изображение. Bitmap imagel = new Bitmap{300,300); 9. Двойным щелчком по пунктам меню последовательно создать заготовки обработчиков событий. Ввести программный код обработчика события рисования линии. private void menuItem2_Click{object sender. System. EventArgs e) {Graphics Graphl = Graphics.Fromimage(imagel); pictureBoxl.Image = imagel; Graphl. DrawLine (Penl, XI, Yl, X2, Y2); } 10. Создать программный код обработчика события рисования прямоугольника. Для вычисления ширины и высоты прямоугольника использовать абсолютное значение разности соответствующих координат. private void menuItem2_Click(object sender. System. EventArgs e) {Graphics Graphl = Graphics.Fromimage(imagel); pictureBoxl.Image = imagel; Graphl.DrawRectangle(Penl, XI, Yl, Math.Abs(X2-X1), Math.Abs(Y2-Y1));} 11. Создать программный код обработчика события рисования закрашенного прямоугольника. private void menuItem2_Click(object sender. System. EventArgs e) {Graphics Graphl = Graphics.Fromimage(imagel); pictureBoxl.Image = imagel; Graphl.DrawRectangle(Penl, XI, Yl, Math.Abs(X2-X1), Math.Abs(Y2-Y1)>; Graphl.FillRectangle(Brushl, XI, Yl,Math.Abs(X2-X1), Math.Abs(Y2-Y1)); } 12. Создать программный код обработчика события рисования окружности. private void menuItem2_Click(object sender. System. EventArgs e) {Graphics Graphl = Graphics.Fromimage(imagel) ; Алгоритмизация и основы объектно'ориентированного программирования 291 pictureBoxl.Image = imagel; Graphi.DrawEllipse(Penl, XI, Yl, Math.Abs(X2 - XI), Math.Abs(Y2 - Yl)); 13. Создать программный код обработчика события рисования закрашенной окружности. private void menuItem2_Click(object sender, System. EventArgs e) {Graphics Graphi = Graphics.Fromimage(imagel); pictureBoxl.Image = imagel; Graphi.DrawEllipse(Penl, XI, Yl, Math.Abs(X2 - XI), Math.Abs(Y2 - Yl)); Graphi.EillEllipse(Brushl, XI, Yl, Math.Abs(X2-X1), Math.Abs(Y2 - Yl)); } 14. Создать программный код обработчика события очистки области рисования. private void menuItem2_Click(object sender. System. EventArgs e) {Graphics Graphi = Graphics.Fromimage(imagel) ; pictureBoxl.Image = imagel; Graphi.Clear(Color.White); Создадим панель инструментов графического редактора. В панель инструментов должны входить кнопки Линия, Прямоугольник, Закрашенный прямоугольник. Окружность, Закрашенная окружность и Очистить. Для создания панели инструментов используем элемент управления toolBarl. Создание панели инструментов и обработчиков со-бытий рисования графических примитивов на языке Visual J# 15. Разместить на форме элемент управления toolBarl. 16. Выделить элемент управления toolBarl и в окне Свойства у свойства Buttons активизировать значение ( Коллекция ), 17. В появившемся окне Редактор коллекции ToolBarButton (рис. 4.34) создать шесть кнопок на панели инструментов, нажав шесть раз кнопку Добавить. 292 Глава 4 Редок fop Ron^oKi ivt^Topl Члены.' Ц| toolB.arButtonl (^ойст&а toolBar&JttcT)!; toolBarButton2 toolBarButtonS toolBarButton4 tooJBarButtonS tGolBarButton6 В Tag В Ко№|>игур^ии Ш (DynamicProperties) Н Проскгиривание (Name) Modifiers S Рэйнор DropDownMenu Enabled PartialPush Pushed |Ш Ke;. 1'яГ|у!й Style Text ToolTipText Visible toolBarButtonl Private (нет) True Ы 0 [ (отсутствует) Ш Отненз': Рис. 4.34. Редактор коллекции кнопок на панели инструментов На каждой кнопке панели инструментов разместим соответствующее изображение, которое хранится в коллекции изображений в элементе управления imageListl. 18. Разместить на форме элемент управления imageListl. 19. Выделить элемент управления imageListl и в окне Свойства у свойства Images активизировать значение (Коллекция ). 20. В появившемся окне Редактор коллекции Image (рис. 4.35) добавить шесть изображений для размеш;ения на кнопках панели инструментов, нажав шесть раз кнопку Добавить. Установим соответствие между коллекцией кнопок на панели инструментов toolBarl и коллекцией изображений imageListl, 21. Выделить элемент управления toolBarl и в окне Свойства у свойства ImageList установить значение imageListl. длгоритмизация и основы объектно-ориентированного программирования 293 Редактор коллекции Image Члены: SY:te!iTi.Dravving.Bit;rridp |И System.Drawing.Bitmap т System.Drawing.Bitmap I System.Drawjng.Bitmap Щ System. Drawing. Bitmap j[^ System.Drawing,Bitmap Свойства System.Orawfrig.atmap: ^ I |в"ражое j Hof!2Dr(taib^...u:.ion 06 I I Pi’VSicaCrnersion (v^oih-нр:апт-к ■ ^<5 v’/FO( t Ш . '-'ert'r.diReSCA^'iJ: 16, It fijo6smb. Удалить СЖ Ш ОтИна Рис. 4.35. Редактор коллекции изображений для кнопок панели инструментов 22, Использовать для создания области рисования первый способ, т. е. применить метод CreateGraphics () к графическому полю. Создать программный код обработчика события щелчка по кнопке панели инструментов. С помощью оператора выбора в зависимости от выбранной кнопки осуществить рисование графических примитивов или очистку графического поля. private void toolBarl_ButtonClick (Object sender. System.Windows.Forms.ToolBarButtonClickEventArgs e) {Graphics Graph2 = pictureBoxl,CreateGraphics() ; switch (toolBarl.get_Buttons() . IndexOf(e.get_Button{) ) ) {case 0: Graph2 . DrawLine (Penl, XI, Yl, X2, Y2); break; case 1: Graph2.DrawRectangle(Penl,XI,Yl,System.Math. Abs(X2-X1), System.Math.Abs(Y2-Y1)); break; case 2: 294 Глава 4 Graph2.DrawRectangle(Penl^ Yl^ System.Math. Abs (X2-X1), System.Math.Abs (Y2 - Yl)); Graphs.FiiiRectangle(Brushl, XI, Yl, System. Math.Abs(X2-X1), System.Math.Abs(Y2-Y1))/ break; case 3: Graphs.DrawEllipse (Penl, XI, Yl, Abs(X2-Xl), System.Math.Abs(Y2 break; case 4 : Graphs . DrawEllipse (Peril, XI, Yl, Abs(X2-X1), System.Math.Abs (Y2 Graphs.FiilEilipse(Brushl, XI, Yl Abs(X2-X1), System.Math.Abs(Y2 break; case 5: Graph2. Clear (Color. get_l^hite () ) ; break; ) System.Math Yl) ) ; System.Math. Yl) ) ; System.Math. YD); Двойным щелчком по пунктам меню Цвет последовательно создадим заготовки обработчиков событий и введем их программный код. Для выбора цвета используем диалог ColorDiaiogl, а для вывода диалогового окна Цвет — метод ShowDialog(). Создание обработчиков событий установки цвета пера и кисти на языке Visual Basic .NET 23. Создать обработчик события установки цвета пера. Private Sub MenuItem9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Menultem9.Click ColorDiaiogl.ShowDialog() Penl.Color = ColorDiaiogl.Color End Sub 24. Создать обработчик события установки цвета кисти. Private Sub MenuItemlO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenultemlO.Click ColorDiaiogl.ShowDialog() Brushl.Color = ColorDiaiogl.Color End Sub Алгоритмизация и основы объектно-ориентированного программирования 295 Двойным щелчком по пунктам меню Файл последовательно создадим заготовки обработчиков событий и введем их программный код. Для вывода диалоговых окон используем диалоги cpenFiieDialogl и saveFileDialogl и метод Shovv’Dialog () . Создание обработчиков событии открытия и сохранения графических файлов на языке Visual C# 25. Создать обработчик события открытия растрового графического файла. private void menuIteml2_Clic]c (object sender, System.EventArgs e) {openFi1eDialog1.ShowDialog(); pictureBoxl.Image = Image.FromFile(openFileDialogl. FileName); 26. Создать обработчик события сохранения растрового графического файла. private void menuIteml3_Click(object sender, System.EventArgs e) {saveFileDialogl.Filter = "BMP (*.bmp)I*.bmp"; saveFileDialogl.ShowDialog(); imagel.Save(saveFileDialogl.Filename, System. Drawing.Imaging.ImageFormat.Bmp); Запуск проекта на языках Visual Basic .NET, Visual C# и Visual J# 27. Запустить проект. Осуществить щелчки левой и правой кнопками мыши по графическому полю. На надписи будут выведены координаты двух точек (см. рис. 4.36). С использованием меню Цвет установить цвета пера и кисти. С использованием меню Графические примитивы нарисовать графические фигуры. С использованием меню Файл сохранить рисунок как растровый графический файл. 296 Глава 4 Графический lsjjli Файл Графич8ск;1е пр ^^-итивы Цвет i :jI о! C'i о| ■'* Рис. 4.36. Проект «Графический редактор- Проект «Треугольник». Создать проект, который позволяет нарисовать по заданным трем точкам треугольник, вычислить его периметр и площадь. Ввод координат вершин треугольника осуществлять щелчками по графическому полю. Вывод координат вершин треугольника осуществлять методом рисования текста в графическом поле. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual C# и Visual J# 1. Поместить на форму (рис. 4.37): • графическое поле PietureBoxl, которое будет использоваться в качестве области рисования; • две надписи Label! и Labe 12 для вывода периметра и площади треугольника; • две надписи для вывода поясняющих текстов; • меню MainMenul для создания меню проекта. Объявление переменных и объектов и создание обработчика событий запоминания координат на языке Visual C# 2. Объявить переменные, которые будут содержать координаты вершин треугольника, длины его сторон, а также периметр и площадь. Кроме того, объявить область рисования, перо, которым будут рисоваться стороны треугольника. Алгоритмизация и основы объектыо-ориентироваш1ого программирования 297 а также шрифт и кисть, которые будут использоваться для рисования значений координат в графическом поле. int Х1,Х2,Y1,Y2,X3, Y3; double LI,L2,L3,?,S; Graphics Graphl; Pen Penl ^ new Pen (Color . Black, 2) ; Font drawFont = new Font ("Arial", 12); Brush drawBrush = new SolidBrush(Color.Blue); 3. Создать программный код обработчика события, который обеспечивает запоминание координат ш;елчков левой, правой и средней кнопками мыши по графическому полю. Использовать оператор выбора, который в зависимости от условия (значения аргумента обработчика события е.Button) запоминает ту или иную пару координат, private void pictureBoxl_Click(object sender, System.Windows.Forms.MouseEventArgs e) {switch (e.Button) {case MouseButtons.Left: XI = e.X; Y1 = e.Y; break; case MouseButtons.Right: X2 = e.X; Y2 = e.Y; break; case MouseButtons.Middle: X3 = e.X; Y3 = e.Y; break; 1г*Ув Создание обработчиков событий рисования треугольника на языке Visual Basic .NET Использовать третий способ для создания области рисования. В программном коде обработчика события Paint графического поля объявим создание объекта Graphl типа Graphics как свойства аргумента е. Для вызова события Paint обновить графическое поле в обработчике события ш;елчка по форме. В обработчике события Paint графического поля вывести значения координат вершин треугольника и нарисовать 298 Глава 4 стороны треугольника, соединив координаты вершин прямыми линиями. Private Sub Forml_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click PictureBoxl.Refresh() End Sub Private Sub PictureBoxl_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.Paint-EventArgs) Handles PictureBoxl.Paint Dim Graphl As Graphics = e,Graphics Graphl. DrawLine {Penl, XI, У1, X2, Y2) Graphl. DrawLine (Penl, XI, Yl, X3, Y3) Graphl. DrawLine (Penl, X2, Y2, X3, Y3) Graphl.Drawstring(Convert.ToString(XI)+","+ Convert.ToString(Yl),drawFont,drawBrush,XI,Yl) Graphl.Drawstring(Convert.ToString(X2)+","+ Convert.ToString(Y2),drawFont,drawBrush,X2,Y2) Graphl.Drawstring(Convert.ToString(X3),"+ Convert.ToString(Y3),drawFont,drawBrush,X3,Y3) End Sub Создадим меню графического редактора, для чего используем элемент управления таiпМепи 1: Треугольник Периметр Площадь Очистить Создание меню и обработчиков событий вычисления периметра и площади треугольника, а также очистки графического поля на языке Visual J# 5. Разместить на форме элемент управления mainMenul. 6. В появившемся в левом верхнем углу формы в редакторе меню создать заголовок первого уровня. В поле Прототип для текста внести пункт меню Треугольник. 7. Для создания пункта меню перейти на следуюш;ую строку в редакторе меню. Ввести пункты меню Периметр, Площадь и Очистить. 8. Создать обработчик события, реализуюгций вычисление периметра треугольника. Алгоритмизация и основы объектно-ориентированного программирования 299 private void menulterr.2_Click (Object sender, Sysrem.EventArgs e) Visual C# и Visual J# для преобразования компьютерной системы координат области рисования в математическую систему координат используется метод масштабирования и поворота осей ScaleTransf оггп () и метод сдвига начала координат Trans-lateTransform (), Поворот оси У: Graphl.ScaleTransform(1, -1) Сдвиг по оси X на 150 точек вправо и сдвиг по оси У на 100 точек вниз: Graph1.TranSlateTransform(150, -100) В языке Turbo Delphi компьютерная система координат холста остается неизменной, но можно рисовать графики в математической системе координат путем масштабирования и поворота осей, а также сдвига начала координат путем математических преобразований самих координат. Проект «Система координат». Проект должен обеспечить рисование осей и вывод шкал в компьютерной системе координат (см. рис. 4.42) и математической системе координат (см. рис. 4,43), 2.7.1 — проект «Система координат» на языке Visual Basic .NET Информатика-9 № Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Поместить на форму: • графическое поле PictureBoxl (в Turbo Delphi Imagel), которое будет использоваться в качестве области рисования (холста); • кнопки Buttonl и Button2 для создания обработчиков событий рисования осей и вывода шкал в компьютерной и математической системах координат. 2. Установить размеры графического поля PicrureBoxl (Imagel): присвоить свойству Width значение 300, а свойству Height — значение 200. Алгоритмизация и основы объектно-ориентированного программирования 313 Объявление переменных и создание обработчика событий рисования осей компьютерной системы координат на языке Visual C# 3. //Объявление переменных Graphics Graphl; Pen Penl = new Pen (Color . Red, 3) ; Font drawFont = new Font ("Arial", 12); Brush drawBrush = new SolidBrush(Color.Black) ; 4. Создать обработчик события рисования осей и вывода шкал в компьютерной системе координат. private void buttonl_Click(object sender, System. EventArgs e) {Graphl = this.pictureBoxl.CreateGraphics (); Graphl.Clear(Color.White); //Ось X Graphl.DrawLine(Penl, 0, 0, 300, 0); //Ось Y Graphl.DrawLine(Penl, 0, 0, 0, 200) ; for (int X = 0; X < 300 r x+= 50) {//Засечки на оси X Graphl.DrawLine(Penl, X, 0, X, 10) ; drawFont, drawFon- //Вывод шкалы оси X Graphl.Drawstring(Convert.ToString(X) drawBrush, X, 10); } for (int Y = 0; Y < 200; Y+=50) {//Засечки на оси Y Graphl.DrawLine(Penl, 0, Y, 10, Y) ; //Вывод шкалы оси Y Graphl.Drawstring(Convert.ToString(Y) drawBrush, 10, Y) ; } } Создание обработчика событий рисования осей математической системы координат на языке Visual J# 5. private void butron2_Click (Object sender. System. EventArgs e) {Graphl = this.pictureBoxl-CreateGraphics (); Graphl.Clear(Color.get_White()); //Вывод шкал математической системы координат в //компьютерной системе координат 314 Глава 4 for (int X = -150; X < 150; X+=50) {Graph1.Drawstring(System.Convert.ToString(X), drawFont, drawBrush, X + 150, 80); } for (int Y = 0; Y <= 200; Y+=50) {Graphl.Drawstring(System.Convert.ToString(Y - 100), drawFont, drawBrush, 150, 200 - Y) ; } //Преобразование компьютерной системы координат //в математическую систему координат Graphl.ScaleTransform(1, -1); //Поворот оси Y Graphl.TranslateTransform(150, -100);//Сдвиг по //осям X и Y //Рисование //координат Graphl.DrawLine(Penl, -150, 0, Graphl.DrawLine (Penl, 0, -100, //Засечки на оси X < 150; X+=50) X, -5, X, 5) , осей в математической системе 150, 0);//Ось X о, 100);//Ось Y for (int X = -150; X {Graphl.DrawLine(Penl, } //Засечки на оси Y for (int Y = -100; Y (Graphl.DrawLine(Penl, < 100; -5, Y, Y+^ 5, =50) Y) . ^■Ij^ Создание событийной процедуры рисования осей математической системы координат на языке Turbo Delphi 5. procedure TForml.Button2Click(Sender; TObject) begin X;=0; Y:=0; Image1.Canvas.Pen.Color : = clWhite; Image1.Canvas.Brush.Color : = clWhite; Image1.Canvas.Rectangle(0,0,300,200); Image1.Canvas.Pen.Color : = clRed; Imagel.Canvas.Pen.Width := 3; //Ось X Imagel.Canvas.MoveTo(0, 100) ; Imagel.Canvas.LineTo(300,100) ; //Ось Y Imagel.Canvas.MoveTo(150, 0) ; Алгоритмизация и основы объектно-ориентированного программирования 315 Image1.Canvas.LineTo(150,200); //Шкала оси X while X <= 300 Do begin Image1.Canvas.MoveTo(X,95); Image1.Canvas.LineTo(X,105); Image1.Canvas.TextOut(X,105,IntToStr(X'150)); X := X + 50; end; //Шкала оси Y while Y <= 200 Do begin Y Y + 50; Imagel.Canvas.MoveTo(145,Y); Image1.Canvas.LineTo{155,Y); Imagel.Canvas.TextOut(155,Y-15,IntToStr(100-Y) ) ; end; end; Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi 6. Запустить проект. Осуществить щелчок по первой кнопке, появятся оси со шкалами компьютерной системы координат (см. рис. 4.42). Осуществить щелчок по второй кнопке, появятся оси со шкалами, математической системы координат (см. рис. 4.43). Компьютедный ррактикум Windows-CD 4.18. Создать проект «Система координат TurboDelphi-CD .\Projects\Coordinates\ 316 Глава 4 4.13.4. Анимация Для создания анимации (иллюзии движения на экране какого-либо объекта) применяется принцип смены кадров (изображений), как это делается в мультипликации. Программа, имитирующая движение, должна реализовывать следующие этапы: • создание изображения в области рисования; • реализация временной паузы для того, чтобы глаз зафиксировал изображение; • проведение коррекции изображения. Анимация часто используется для изображения движения объектов. Для регулирования скорости движения объекта используют пустой цикл, чем большее количество раз он будет выполняться, тем медленнее будет двигаться объект. Проект «Часы». Создать проект, реализующий работу стрелочных и электронных часов. Стрелки (часовая, минутная и секундная) должны вращаться с использованием эффекта анимации синхронно с системным временем компьютера. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Поместить на форму (рис, 4.44): • графическое поле PictureBoxl (в Turbo Delphi Imagel), которое будет использоваться в качестве области рисования (холста) для рисования стрелочных часов; • надпись Labe 11 для вывода времени цифровых часов; • таймер Timerl для создания обработчика события рисования вывода стрелочных и электронных часов, 2. Установить размеры графического поля PictureBoxl (Imagel): присвоить свойствам Width и Height значение 250. Для периодического обновления значения времени используем объект Timerl. Объект Timerl не отображается на форме в процессе выполнения программы и выполняет всего одну функцию — проверяет показания системных часов по событию Tick, Периодичность события Tick может быть задана в свойстве Interval, измеряемом в миллисекундах (может изменяться от О до 65 535). Для того чтобы событие Tick происходило Алгоритмизация и основы объектно-ориентированного программирования 317 каждую секунду, необходимо свойству значение 1000. Interval присвоить 3. Выделить объект Timer и присвоить свойству Interval значение 1000. Объявление переменных и создание обработчика события вывода показаний цифровых и стрелочных часов на языке Visual Basic ,NET 4. Dim XT, YT As Integer ’Координаты цифр 'на стрелочных часах Dim XI, Y1 As Integer ’Координаты секундной 'стрелки Dim Х2, Y2 As Integer 'Координаты минутной 'стрелки Dim ХЗ, Y3 As Integer 'Координаты часовой стрелки Dim N As Double Dim Т As Double, I As Byte 'Счетчики циклов Dim Graphl As Graphics Dim Penl As New Pen (Color. Red, 1) 'Перо, рисующее 'секундную стрелку Dim Реп2 As New Pen (Color. Green, 2) 'Перо, рисующее минутную стрелку Dim РепЗ As New Pen (Color.Blue, 3) 'Перо, рисующее 'часовую стрелку Dim drawFont As New Font ('"Arial^', 16) Dim dravjBrush As New SolidBrush (Color .Black) 5. В обработчике события Timerl_Tick каждую секунду: • выводить значение текущей даты и времени на надпись с использованием объекта DateTime и его свойства Now; • рисовать циферблат стрелочных часов с использованием цикла со счетчиком I; • рисовать в часовой системе координат секундную, минутную и часовую стрелки, угол поворота которых увеличивается с каждым «тиком» (значение переменной N делится соответственно на 60, 3600 и 21 600); • делать паузу с использованием цикла со счетчиком Т (пауза должна быть достаточной, чтобы глаз зафиксировал положение стрелок, но не должна превышать времени одного «тика», т. е. 1 секунды); • осуществлять стирание рисунка стрелочных часов, чтобы подготовиться к рисованию их положения в следующем «тике» (в следующую секунду). Private Sub Timerl_Tick(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Timer1.Tick 318 Глава 4 'Цифровые часы Labell.Text = DateTime.Now 'Циферблат стрелочных часов Graph1 = Me.PictureBoxl.CreateGraphics{) For I = 1 To 12 XT = 115 + RounddOO * Sin(6,28 * 30 * I / 360)) YT = 115 - RounddOO * Cos(6.28 * 30 * I / 360)) Graphl,Drawstring (I, drawFont, drawBrush, XT, YT) Next I 'Преобразование компьютерной системы координат в ' "часовую" систему координат Graphl.ScaleTransform(1, -1) Graph1.Trans1ateTransform(125, -125) 'Рисование стрелок N = N + 1 'Секундная стрелка XI - Round(90 * Sin(6.28 ★ N / 60) ) Y1 = Round(90 * Cos(6.28 * N / 60)) Graphl.DrawLine (Penl, 0, 'Минутная стрелка 0, XI / Yl) X2 = Round(60 * Sin{6.28 ★ N / 3600)) Y2 = Round(60 * Cos(6.28 * N / 3600)) Graphl.DrawLine (Pen2, 0, 'Часовая стрелка 0, X2 f Y2) ХЗ = Round(40 * Sin(6.28 •к N / 216000) Y3 = Round(40 * Cos (6.28 ★ N / 216000) Graphl.DrawLine (Pen3, 0, 'Пауза 0, X3 f Y3) For Т = 1 То 20000000 Next Т 'Стирание циферблата и стрелок Graphl.Clear(Color.White) End Sub Ж Дополнение графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 6. Поместить на форму (см. рис 4.44): • элемент управления MonthCalendarl, который будет выводить календарь с выделенной текущей датой; • элемент управления DateTimePickerl, который будет выводить дату, день недели и время запуска проекта. Алгоритмизация и основы объектно-ориентированного программирования 319 Запуск проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 7. Запустить проект (см. рис. 4.44). Цифровые часы будут показывать текущие дату и время. Стрелочные часы будут показывать время, прошедшее с момента запуска проекта. Календарь будет показывать текущую дату. Поле вывода даты и времени будет показывать дату и время запуска проекта. ^ЙЧасы П' I 9 1 8 11 12 I/ ^т ||Ш]::г‘24 02 2006 22:45;58 . штшшвл ■ Пн Бт Ср Чт Пт С6 Вс 6 , и ^ ,о 13 14 15 16 17 3 4 10 11 5 12 18 19 20 21 22 23 Щ]Ь 25 26 ri 27 28 ,raxxv , ^Сегодня; 24.02.: ‘Л 2006года- пэтиица 22:40:34 Рис. 4.44. Проект «Часы» Компьюте^ый к ^Ь1Й jip актикум 4.19. Создать проект «Часы». Windows-CD TurboDelphi-CD [1^ ...\Projects\Clock\ 320 Глава 4 4.14. Модульный принцип построения решений (групп) и проектов В системах объектно-ориентированного программирования проекты включают в себя программные модули (программные модули форм и самостоятельные программные модули) и другие файлы. В системе объектно-ориентированного программирования Visual Studio проекты, в свою очередь, входят в состав решений, а в системе Turbo Delphi — в состав групп. 4.3.3. Проекты и приложения Решения (группы) и проекты. В системе Visual Studio состав решения содержится в файле с расширением sin (по умолчанию в файле WindowsApplicationl.sin). Состав проекта содержится: • в системе программирования Visual Basic .NET в файле с расширением vbproj (по умолчанию в файле WincJows-Applicationl.vbproj); • в системе программирования Visual C# в файле с расширением csproj (по умолчанию в файле WindowsApplicationl .csproj); • в системе программирования Visual J# в файле с расширением vjsproj (по умолчанию в файле WindowsApplicationl .vjsproj); В системе Turbo Delphi состав группы содержится в файле с расширением bdsgroup (по умолчанию в файле Project-Group1.b которые входят в состав решения и проекта Domiki: • программные модули форм Forml.vb и Form2.vb; • самостоятельные программные модули Modulel.vb и Module2.vb; • приложение Domiki.exe; • база данных отладочной информации Domiki.pdb; • ресурсы форм Formi.resx и Form2.resx; • сборка Assemblyinfo.vb; • ссылки на пространства имен, используемые в проекте. 1|&С1г;рееатепь решений - Решен!^^ (проектов: 1) В iFHBS S Ссылки i bin : Domiki.exe ...] Domiki.pdb ..j obj 0 Assemblyinfo.vb Ш Forml.vb . Щ Formi.resx Ш Form2,vb '■ ■■ Щ Form2.resx 0 Modulel.vb 0 Module2.vb Рис. 4.47. Состав решения Domiki в- ш- в в- По умолчанию выполнение проекта начинается с загрузки первой формы, но можно начать выполнение проекта с любой формы. В Visual Studio можно начать выполнение проекта и с самостоятельного программного модуля, если в него поместить процедуру (метод) Main{). В проект входят четыре программных модуля (два программных модуля форм и два самостоятельных программных модуля), поэтому необходимо выбрать модуль, с которого начинается выполнение проекта. Алгоритмизация и основы объектно-ориентированного программирования 325 4. В окне Обозреватель решений выделить имя проекта Do-miki и в контекстном меню выбрать пункт Свойства. В появившемся диалоговом окне (рис. 4.48) из раскрывающегося списка Начальный объект: выбрать Sub Main и щелкнуть по кнопке ОК. Страницы свойств; Domiki ■т- jcj Рис. 4.48. Выбор начального модуля выполнения проекта Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Поместить на первую форму (рис. 4.49): • графическое поле PictureBoxl (Imagel в Turbo Delphi), которое будет использоваться в качестве области рисования (холста) для рисования домиков; • кнопки Button! и Button2 для создания обработчиков событий. Поместить на вторую форму (см. рис 4.49): • графическое поле PictureBox2 (Image2 в Turbo Delphi), которое будет использоваться в качестве области рисования (холста) для рисования домиков; • кнопки Button! и Button2 для создания обработчиков ТГГ1ТТТУ 326 Глава 4 7. Установить размеры графических полей PictureBoxl (Imagel) и PictureBox2 (Imagc2): присвоить свойствам Width и Height значение 200. В первом программном модуле объявим глобальные переменные, в которых будут храниться координаты, ширина и высота, а также две области рисования и два пера для рисования домиков на первой и второй формах. Создадим процедуру Main () , в которой объявим две переменные для идентификации форм, а затем обеспечим их вызов с использованием метода ShowDialog () . ^ >^1 Создание программного кода проекта на языке Visual Basic .NET 8. Module Module1 Public X, Y, W, H As Single РгдЬИс Graphl, Graph2 As Graphics Pxiblic Penl As New Pen (Color. Red, 1) Pxiblic Pen2 As New Pen (Color. Blue, 1) Sub MainO Dim FI As New Forml Dim F2 As New Form2 FI.ShowDialog() F2.ShowDialog() End Sub End Module Создадим программный модуль первой формы. В процедуре описывается рисование домика из прямоугольника (стена) и двух линий (крыша), а в обработчике события она вызывается три раза с разными наборами параметров. Для перехода на вторую форму закроем первую форму. Осуществится переход на первый самостоятельный программный модуль, в котором будет выполнена строка программного кода, открывающая вторую форму. 9. 'Первая процедура рисования домика Sub Domikl(ByVal X, ByVal Y, ByVal W, ByVal H) Graphl.DrawRectangle (Penl, X, Y, W, H) Graphl.DrawLine (Penl, X, Y + H, X + W\2, Y + H + H \ 2) Graphl . DrawLine (Penl, X-bW\2, Y + H + H\2, X + W, Y -f- H) End Sub Алгоритмизация и основы объектно-ориентированного программирования 327 'Обработчик события, в котором рисуются три домика Private Sub Buttonl__Click (ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttonl.Click Graph1 = Me.PictureBoxl.CreateGraphics () Graphl.ScaleTransform(1, -1) Graph1.TranslateTransform(0, -200) Call Domikl(10, 20, 60, 50) Call Domikl(120, 20, 50, 70) Call Domikl(30, 110, 90, 50) End Sub 'Обработчик события, в котором закрывается 'первая форма Private Sub Button2_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Button2.Click Me.C1о s e () End Sub Bo втором самостоятельном программном модуле создадим вторую процедуру рисования домика из прямоугольника (стена) и двух линий (крыша). 10. 'Вторая процедура рисования домика Module Module2 Sub Domik2 (ByVal X, ByVal Y, ByVal W, ByVal H) Graph2.DrawRectangle(Pen2, X, Y, W, H) Graph2 . DrawLine (Pen2, X, Y + H, X +. W \ 2, Y + H + H \ 2) Graph2.DrawLine (Pen2, X + W\2, Y + H + H\2, X + W, Y + H) End Sub End Module Создадим программный модуль второй формы. В обработчике события вторая процедура рисования домика, которая находится во втором самостоятельном программном модуле, вызывается три раза с разными наборами параметров. 11. 'Обработчик события, в котором рисуются три домика Private Sub Buttonl_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttonl.Click Graph2 = Me.PictureBoxZ.CreateGraphics () Graphs.ScaleTransform(1, -1) 328 Глава 4 Graph2.TranslateTransform(О, -200) Call Module2 . Domik2 (10, 20, 100, 80) Call Module2. Оол11к2 (120, 20, 50, 50) Call Module2.Domik2 (80, 130, 80, 40) End S^^b 'Обработчик события, в котором осуществляется 'выход из проекта Private ЗгдЬ Button2_Click (ByVal sender As System. Object, ByVal 'e As System.EventArgs) Handles Button2.Click End End Sub Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi 12. Запустить проект (см. рис. 4.49). На появившейся первой форме хцелкнуть по кнопке Нарисовать домики, в области рисования будут нарисованы три разных домика. Щелкнуть по кнопке Закрыть форму, на появившейся второй форме ш,елкнуть по кнопке Нарисовать домики, в области рисования будут нарисованы три других разных домика. Щелкнуть по кнопке Закрыть проект. Нарисовать Закрыть 1 Нариаэвать Закрыть аомиим ДОНИКИ проект Рис. 4.49. Проект «Домики» Алгоритмизация и основы объектио-ориентированного программирования 329 Контрольные вопросы 1. В чем СОСТОИТ различие между локальными и глобальными процедурами? Компьютерный |[рактикум Windows-CD 4.20. Создать проект «Домики». TurboDelphi-CD .. .\Projects\Domiki\ 4.15. Чтение и запись данных в файлы По способу доступа к данным различаются файлы последовательного доступа и произвольного доступа. В файлах последовательного доступа запись или чтение данных осуществляется последовательно от начала до конца файла, а в файлах произвольного доступа — в произвольном порядке. Файлы последовательного доступа состоят из последовательности символов (букв, цифр или других знаков) и часто называются текстовыми файлами. Языки программирования Visual Basic .NET, Visual C# и Visual J#. В языках программирования Visual Basic .NET, Visual C# и Visual J# для записи последовательности символов (ее часто называют потоком символов или просто потоком) в файл последовательного доступа предназначен класс объектов StreamWriter. Для чтения последовательности символов из файла последовательного доступа предназначен класс объектов StreamReader. Прежде чем создать объект доступа к данным, необходимо объявить переменную, хранящую в памяти его адрес. Объ- 13 Ииформягика и И КТ, IOK-i 330 Глава 4 екты StreamWriter и StreamReader входят в пространство имен System. 10, поэтому необходимо это указать при использовании данных объектов. Это можно сделать непосредственно в строке программного кода System. 10. StreamWriter или в начале программного модуля с использованием директив Imports System. 10 в языке Visual Basic .NET, using System. 10 в языке Visual C# и import System. 10. * в языке Visual J#. Язык Visual Basic .NET: Dim sw As System.Г0.StreamWriter Dim sr As System.10.StreamReader Язык Visual C#: using System.10; StreamWriter sw; StreamReader sr; Язык Visual J#: import System.10.* StreamWriter sw; StreamReader sr; Для создания объектов StreamWriter и StreamReader достаточно в обработчике события присвоить значение соответствующей переменной. Для создания файла используется метод CreateText {), а для открытия файла — метод Open-Text О , аргументом которых является имя создаваемого или открываемого файла. Если файл не хранится в папке проекта, необходимо указать к нему полный путь. Языки Visual Basic .NET: sw = System.10.File.CreateText {"file^name' sr = System^. 10. File .OpenText ("file_name") Язык Visual C# и Visual J#: sw = File.CreateText ("file_name") ; sr = File.OpenText ("file name"); Для записи данных в файл используются методы Write () и WriteLine (). При использовании метода Write {) файл запи- Алгоритмизация и основы объектно-ориентированного программирования 331 сывается целиком, а при использовании метода WriteLine () — построчно (например, из переменной Line). Для чтения данных из файла используются методы Read О и ReadLine{). При использовании метода Read() файл считывается целиком, а при использовании метода ReadLineO — построчно (например, в переменную Line). Языки Visual Basic .NET, Visual C# и Visual J# sw.WriteLine(Line) Line = sr.ReadLine() После записи или чтения данных из файла необходимо эти файлы закрыть. Языки Visual Basic .NET, Visual C# и Visual J#: sw.Close{) sr.Close () Язык программирования Turbo Delphi. Файл для записи или чтения должен быть объявлен в разделе описания переменных. Необходимо объявить файловую переменную, хранящую в памяти адрес текстового файла. var f: TextFile; Объявление файловой переменной задает только тип файла. Для того чтобы можно было выводить данные в файл или считывать данные из файла, необходимо связать имя файловой переменной с именем файла. Если файл не хранится в папке проекта, необходимо указать к нему полный путь, включая имя диска и папок. Для создания файла используется метод Rewrite {), а для открытия файла — метод Reset (), аргументом которых является имя файловой переменной, связанной с создаваемым или открываемым файлом. As sign Rile (f, 'f ile_name') ; Rewrite (f); Reset (f); 332 Глава 4 Для записи данных в файл используются методы Write () HWriteln{). При использовании метода Write () файл записывается целиком, а при использовании метода Writeln () — построчно (например, из переменной Line). Для чтения данных из файла используются методы Read () и Readln (). При использовании метода Read () файл считывается целиком, а при использовании метода Readln () — построчно (например, в переменную Line). writeln(f,Line); Readln(f, Line); После записи или чтения данных из файла необходимо эти файлы закрыть. CloseFile (f); ^"^3 4.16.4. Сортировка строковых массивов Контрольн^1е вопросы 1. Какими способами в языках программирования .NET можно задать пространство имен System. 10? 2. В чем состоит различие в использовании методов записи данных в файлы Write () и WriteLine {), а также методов чтения данных из файлов Read () и ReadLine () ? 4.16. Массивы 4.16.1. Заполнение массивов Типы массивов и объявление массива. Массив является набором переменных одного типа, объединенных одним именем. Массивы, как и переменные, могут быть различных типов: числовые, строковые и т. д. Массив состоит из пронумерованной последовательности элементов. Номера в этой последовательности называются индексом; индекс может принимать целочисленные значения. Алгоритмизация и основы объектно-ориентированного програ1Имирования 333 Каждый из этих элементов является переменной, т. е. обладает именем и значением, и поэтому массив можно назвать переменной с индексом. Массив может быть одномерным или многомерным. Размерность массива соответствует числу индексов, необходимых для идентификации отдельного элемента. Можно задать до 32 индексов, хотя случаи использования более трех индексов очень редки. Например, одномерный строковый массив, содержащий 33 буквы русского алфавита, можно представить себе в виде табл. 4.5. Таблица 4.5. Одномерный строковый массив Индекс 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Элементы массива а б в г Д в ё ж 3 и й к л м н О п Индекс 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Элементы массива Р с т У Ф X Ц ч ш Щ ъ ы ь э ю я Индекс может принимать целочисленные значения от минимального до максимального индекса (в данном массиве от О до 32). Каждый элемент массива обладает собственным значением (в данном массиве значением элемента с индексом 4 является строка «д»). Размер массива определяется количеством элементов в массиве (в данном массиве 33 элемента). Объявление массива производится аналогично объявлению переменных, необходимо только дополнительно указать максимальный индекс или диапазон изменения индекса. Объявим одномерный целочисленный массив, содержащий 10 элементов, и одномерный строковый массив, содержащий 33 элемента. Язык Visual Basic .NET Dim N(9) As Byte, 3(32) As String Языки Visual C# и Visual J# int I ] N = new int [10] ; String[] В = new String[33]; Язык Turbo Delphi Ы; array[Q..9] of integer; B: array[0..32] of string; 334 Глава 4 Обрахцение к элементу массива производится по его имени, состоящему из имени массива и значения индекса, например N (5) . Заполнение массива. Для начала работы с массивом необходимо его предварительно заполнить, т. е, присвоить элементам массива определенные значения. Это можно сделать различными способами: • заполнить массив случайными числами; • заполнить массив символами с клавиатуры; • заполнить массив из файла. Проект «Заполнение массива». Заполнить числовой массив десятью случайными числами, строковый массив пятью символами, введенными с клавиатуры, и строковый массив буквами русского алфавита из текстового файла. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Поместить на форму (рис. 4,51): • список ListBoxl, который будет использоваться для вывода целочисленного массива, заполненного случайными числами; • список ListBox2, который будет использоваться для вывода строкового массива, заполненного символами с клавиатуры; • список ListBoxB, который будет использоваться для вывода строкового массива, заполненного символами алфавита из файла; • кнопки Buttonl, Button2 и Buttons для создания обработчиков событий. Заполним числовой массив N (I) целыми случайными числами в интервале от 1 до 100. На языке Visual Basic .NET для генерации последовательности случайных чисел используем функцию Rnd {) . При запуске программы функция Rnd() дает псевдослучайную (т. е. каждый раз повторяющуюся) последовательность чисел в интервале О < X < 1. Для получения последовательности случайных чисел в заданном интервале А < X < В необходимо использовать следующую формулу: (В ' A)*Rnd{) + А. Алгоритмизация и основы объектно-ориентированного программирования 335 Тогда получение целочисленной последовательности случайных чисел на интервале О < X < 100 достигается использованием функции выделения целой части числа: Int (Rnd О * 100) . Для генерации различающихся между собой последовательностей случайных чисел рекомендуется использовать оператор Randomize () . Оператор Randomize {) использует аргумент для инициализации генератора случайных чисел функции Rnd О , задавая его новое начальное значение. Если аргумент опущен, то в качестве нового значения используется значение, возвращаемое системным таймером. Создание обработчика события заполнения массива случайными числами на языке Visual Basic .NET 2. Dim 1, N{9) As Byte Private Sub Buttonl_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttonl.Click Randomize() ListBoxl.Iterns.Clear() For I = 0 To 9 N(I) - Int(Rnd() * 100) ListBoxl.Items.Add(Str (M (I))) Next I End Sub Ha языках Visual C# и Visual J# для генерации псевдослучайных последовательностей используется экземпляр класса Random (например, rnd). Для генерации случайного числа можно использовать метод rnd.Next (100), который генерирует случайные числа, большие или равные нулю, но меньшие или равные значению аргумента (в данном случае 100). Общий размер массива можно получить с помощью свойства Length, которое возвращает количество элементов в массиве. Создание обработчика события заполнения массива случайными числами на языках Visual C# и Visual J# 2. Random rnd = new Random () ; int [ ] N = new int[10]; int I; 336 Глава 4 private void buttonl_Click(object sender. System.EventArgs e) {listBoxl.Items.Clear() ; for (I = 0; I < N.Length; I + +) {N[I]= rnd.Next(100) ; listBoxl.Items.Add(Convert.ToString(N[I])); } } Ha языке Turbo Delphi для генерации псевдослучайных последовательностей используется функция Random (). Эта функция генерирует случайные числа, большие или равные нулю, но меньшие или равные значению аргумента. Для генерации различаюш;ихся между собой последовательностей случайных чисел можно использовать оператор Randomize. Создание обработчика события заполнения массива случайными числами на языке Turbo Delphi 2. var N: array[0..9] of integer; I: integer; procedure TForml.ButtonlClick(Sender: TObject) ; begin ListBoxl.Items.Clear{); Randomize; For I 0 To 9 Do begin N[I] := Random(100); ListBoxl.Items.Add(IntToStr (N[1])) ; end; end; Для ввода элементов массива с клавиатуры можно использовать функцию InputBox О . Аргументами этой функции являются две строки, которые отображаются в диалоговом окне ввода, а значением функции — символ, введенный пользователем. 1.5.4. и 2.5.4. Функции ввода и вывода данных Исследование информационных моделей Алгоритмизация и основы объектно-ориентированного программирования 337 Создание обработчика события заполнения массива с клавиатуры на языке Visual Basic .NET As String Private ЗглЬ Button2_Click (ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttons.Click For I = 0 To 4 A (I) = InputBox ("Введите элемент массива", "Ввод элементов массива с клавиатуры") ListBoxS.Items.Add(А(I)) Next I End Sub Создание обработчика события заполнения массива с клавиатуры на языке Turbo Delphi 3. var А: array[0..4] of string; procedure TForml.ButtonSClick(Sender: TObject); begin ListBoxS.Items.Clear{); For I := 0 To 4 Do begin A [I] := InputBox ('Ввод элементов массива с клавиатуры','Введите элемент массива',' ') ; ListBoxS.Items.Add(А[I])/ end; end; Ha языках Visual C# и Visual J# для ввода элементов массива с клавиатуры с использованием функции InputBox () необходимо подключить и использовать пространство имен Mi сгоsoft.VisualBasic. Создание обработчика события заполнения массива с клавиатуры на языках Visual C# и Visual J# 3.1. Ввести команду [ПроекгП'Добавить ссылку,,,]. В появившемся диалоговом окне Add Reference на вкладке .NET из списка выбрать имя компонента Microsoft, Visual Basic.NET Runtime и щелкнуть по кнопке Выбрать. Выбранный компонент добавится в поле Выбранные компоненты: Щелкнуть по кнопке ОК. 338 Глава 4 3.2, В Обозревателе решений в проекте arrayl в разделе ссылок References добавится ссылка Microsoft.VisualBasic на соответствующее пространство имен. Теперь можно добавить ссылку на пространство имен и обработчик события в программный код. Необходимо учесть, что параметрами функции InputBoxO также являются значение функции по умолчанию и координаты верхнего левого угла диалогового окна функции. 3.3, using Microsoft. VisualBasic; String new String[5]; Click(object sender, private void buttons System.EventArgs e) {for (I = 0; I < 5; I + + ) Interaction. InputBox (''Введите элемент "Ввод элементов массива с клавиатуры", 500) ; (А[1] = массива", 500, listBoxS.Items.Add(А[I]); } Заполним строковый массив буквами русского алфавита из текстового файла. Создадим текстовый файл, содержащий буквы русского алфавита. Такие текстовые файлы должны содержать только коды самих символов (не должны содержать управляющие коды форматирования текста, тэги языка HTML и т. д.) и, следовательно, должны создаваться в простейших текстовых редакторах типа Блокнот (рис. 4.50). 4.15. Чтение и запись данных в файлы Рис. 4.50. Текстовый файл, содержащий русский алфавит Алгоритмизация и основы объектно-ориентированного программирования 339 4. Создать в текстовом редакторе файл и ввести буквы русского алфавита по одной букве в строке (рис. 4.50). Сохранить файл alphabet.txt в кодировке Unicode, На языках Visual Basic .NET, Visual C# и Visual J# объявим массив и переменную, хранящую в памяти адрес объекта StreamReader. В обработчике события присвоим переменной значение с использованием метода открытия файла OpenText (), аргументом которого является имя открываемого файла alphabet.txt. В цикле со счетчиком произведем чтение букв алфавита из файла с использованием метода ReadLine () и выведем буквы в список. Создание обработчика события заполнения массива из файла на языке Visual Basic .NET 5. Dim I As Byte, В (32) As String Dim sr As System.10.StreamReader Private Sub Button3_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttons.Click sr = System.10.File.OpenText ("alphabet.txt") For I = 0 To 32 B(I) = sr.ReadLine() ListBoxS.Items.Add(B(I)) Next I End Sizb Создание обработчика события заполнения массива из файла на языках Visual C# и Visual J# 5. String [] В = new StreamReader sr; String[33]; private void button2_Click(object sender. System EventArgs e) {sr = File.OpenText ("alphabet.txt") ; for (I - 0; I < 33; I + + ) (B[I] = sr.ReadLine(); listBox3.I terns.Add(B[I]); 340 Глава 4 На языке Turbo Delphi объявим массив и файловую переменную. В событийной процедуре с помощью метода AssignFile () свяжем имя файловой переменной с именем файла. Для открытия файла используем метод Reset {), аргументом которого является имя файловой переменной. В цикле со счетчиком произведем чтение букв алфавита из файла с использованием метода ReadlnO и выведем буквы в список. Создание событийной процедуры заполнения массива из файла на языке Turbo Delphi 5. var В: array[О..32] of string; f: TextFile; procedure TForml.ButtonSClick(Sender: TObject); begin ListBoxS . I terns . Clear () ; As sign File (f, 'alphabet. txt') ; Reset (f)/ For I ;= 0 To 32 Do begin Readln{f, В [I]) ; ListBox3.Items.Add(B[I]); end; end; Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi 6. Запустить проект (см. рис. 4.51). Щелкнуть по кнопке Заполнение массива случайными числамиу в первый список будут выведены элементы массива, заполненного случайными числами. Щелкнуть по кнопке Заполнение массива с клавиатуры, во второй список будут выведены элементы массива, заполненного символами, введенными с клавиатуры. Щелкнуть по кнопке Заполнение массива из файла, в третий список будут выведены элементы массива, заполненного буквами русского алфавита из файла. Так как не все элементы массива помещаются в список, появляется вертикальная полоса прокрутки. Алгоритмизация и основы объектно-ориентированного программирования 341 Заполнение массива 89 а 95 6 32 й е А ц г А у А 55 к е 68 е ё 74 ж 85 3 59 и jJ гз«у}эде»мвмвос»«а 1 Эитолмц»!^ массим Зтолнетб масс(«а из4«йла Рис. 4.51. Проект «Заполнение массива» Компьюте рактикум Windows-CD 4.21, Создать проект ♦Заполнение массива». ...\informatika10\...\Array1\ TurboDelphi-CD ...\Projects\Array1\ 4,16.2. Поиск элемента в массивах Поиск в строковых массивах обычно реализуется в форме поиска индекса элемента массива, для которого значение элемента совпадает с заданным. В числовых массивах обычно производится поиск минимального или максимального элемента. Проект <сПоиск в массиве». Разработать проект, в котором числовой массив, содержащий 10 элементов, заполняется случайными числами в диапазоне от 0 до 100. Осуществить в этом числовом массиве поиск максимального элемента и его индекса. 342 Глава 4 ь Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Поместить на форму (рис. 4.52); • список ListBoxl для вывода значений индекса элементов массива; • список ListBox2 для вывода значений элементов массива; • надпись Label 1 для вывода индекса максимального элемента; • надпись Label2 для вывода значения максимального элемента; • кнопку Buttonl для создания обработчика события; • две надписи для вывода поясняющих текстов. Создадим обработчик события для заполнения целочисленного массива случайными числами и поиска максимального элемента и его индекса: 1) Объявим целочисленные переменные I и Мах, а также целочисленный массив А (9) , содержащий десять элементов. 2) Заполним массив целыми случайными числами от О до 100, 3) Будем считать, что сначала максимальный элемент равен первому элементу массива, т. е. Мах = О и А (Мах) = А (0). 4) Затем в цикле со счетчиком I с использованием оператора ветвления последовательно сравним максимальный элемент массива (элемент массива с индексом 0) со всеми остальными элементами. Если какой-либо элемент окажется больше, присвоим переменной Мах индекс этого элемента. 5) Результат поиска, т. е. индекс максимального элемента и сам максимальный элемент, выведем на надписи. Создание обработчика события на языке Visual Basic .NET 2. Dim A (9), I, Max As Byte Private Sub 3uttonl_Click (ByVal sender As Systerr.. Object, ByVal e As System.EventArgs) Handles Buttonl. Click ListBoxl.Items.Clear f) ListBox2.Iterns.Clear{) 'Заполнение массива Randomi ze () Алгоритмизация и основы объектно-ориентированного программирования 343 For I - О То 9 А(1) = Int(Rnd{) * 100) ListBoxl.Iterns.Add(I) ListBox2.T terns.Add(A(I)) Next I ’Поиск максимального элемента Max = о A(0) 1 To 9 A (Max) Then A (Max) = A( A (Max) = For I = If A(I) > Next I Labell.Text = Label2.Text = End Slab ) : Max = Max A(Max) Запуск проекта на языках Visual Basic •NET, Visual C#, Visual J# и Turbo Delphi ЕВШШВШШ'' 3. Запустить проект (см, рис. 4.52), Щелкнуть по кнопке Заполнить и найти несколько раз. На надписи будут выводиться результаты поиска индекса максимального элемента и сам максимальный элемент для различных вариантов заполнения массива. 0 ' 53 1 56 2 65 3 29 4 38 5 98 6 ' 77 7 11 8 65 9 ■ 26 Индекс элемента ' 5 Макс элемент 98 Заполнить и найти Рис. 4.52. Проект «Поиск в массиве» Компьюте^шй ррактикум 4.22, Создать проект «Поиск в массиве». Windows-CD ...\fnformatika10\...\arrayMax\ TurboDelphi-CD В .. .\ProJects\arrayMax\ 344 Глава 4 4.16.3. Сортировка числовых массивов Под сортировкой числового массива понимается процесс перестановки числовых значений элементов массива, целью которого является размещение элементов массива по возрастанию (или по убыванию) Пусть у нас имеется целочисленный массив, состоящий из десяти элементов и заполненный случайными числами от О до 100. Представим массив и процесс его сортировки в виде таблицы (табл. 4.6). Индексы элементов массива разместим в первом вертикальном столбце таблицы, а сами элементы — во втором вертикальном столбце. Алгоритм сортировки массива по убыванию состоит в следующем: 1) На первом шаге сортировки провести поиск максимального элемента в массиве с 0 по 9 элемент. Поменять местами найденный максимальный элемент с элементом, имеющим индекс, равный нулю. Если максимальный элемент имеет индекс о, то оставить его на месте. 2) На втором шаге сортировки провести поиск максимального элемента с 1 по 9 элемент. Поменять местами найденный максимальный элемент с элементом, имеющим индекс, равный единице. 3) Повторить шаги сортировки еще семь раз. На каждом шаге осуществить поиск максимального элемента среди оставшихся неупорядоченных элементов и сделать перестановку элементов. Таблица 4.6. Алгоритм сортировки массива по убыванию Ин- декс Мас- сив Шаг сортировки 1 2 3 4 5 б 7 8 9 0 44 А 84 84 84 84 84 84 84 84 84 1 9 9 а79 79 79 79 79 79 79 79 2 39 39 39 А69 69 69 69 69 69 69 3 69 69 69 ▼39 А 46 4 46 46 46 46 46 4 41 41 41 41 41 ▼44 44 44 44 44 5 84 ▼ 44 44 44 44 41 41 41 41 41 6 46 46 46 46 ▼ 39 39 39 4 41 41 41 7 79 79 ▼ 9 9 9 9 9 9 А 39 39 8 41 41 41 41 41 41 41 ▼ 39 ^ 9 А 15 9 15 15 15 15 15 15 15 15 15 ^ 9 AviropHTMHsauHH и основы объектно-ориентированного программирования 345 В таблице каждый шаг сортировки массива разместим в вертикальном столбце, отображающем порядок элементов массива. Перестановку элементов массива отобразим стрелками. Проект «Сортировка числового массива». Заполнить числовой массив, содержащий 10 элементов, случайными числами в диапазоне от 0 до 100. Осуществить сортировку числового массива по убыванию. Поиск максимального элемента осуществить различными способами: • с помощью процедуры; • с помощью функции; • во вложенном цикле. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual C# и Visual J# 1, Поместить на форму (рис. 4,53): • список ListBoxl, который будет использоваться для вывода значений индекса целочисленного массива; • список ListBox2, который будет использоваться для вывода числового массива, заполненного случайными числами; • списки ListBoxS — ListBoxll, которые будут использоваться для вывода шагов сортировки массива; • кнопки Buttonl и But.ton2 для создания обработчиков событий заполнения массива и сортировки; • надпись Label 1 для вывода нумерации шагов сортировки. На языке Visual Basic .NET будем искать максимальный элемент с использованием процедуры. Программный модуль проекта будет содержать: • обработчик события заполнения массива случайными числами; • обработчик события сортировки массива; • процедуру поиска максимального элемента. Создание программного кода проекта на языке Visual Basic .NET Объявим переменные для использования в программном модуле и создадим обработчик события заполнения целочисленного массива случайными числами. 346 Глава 4 2. Dim А ( 9 I. К, R, Max As Byte Private Sub Buttonl_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttonl.Click 'Очистка полей списков индексов элементов 'и значений элементов массива ListBoxl.Items.Clear() ListBox2.Items,Clear() 'Заполнение массива случайными числами Randomize{) For К - О To 9 А(К) = Int(Rnd{) * 100) ListBoxl.Items.Add(K) ListBox2.Items.Add(Str(A(K))) Next К End Sub Процедура поиска максимального элемента МаксЭлемент (ByVal I, ByRef Max) будет многократно вызываться из обработчика события сортировки и будет содержать входной и выходной параметры: I — входной параметр (индекс максимального элемента массива после предыдущего шага); Мах — выходной параметр (индекс максимального элемента массива после данного шага). 3. 'Процедура поиска индекса максимального элемента 'массива Sub МаксЭлемент (ByVal I, ByRef Max) Max = I For J = I + 1 To 9 If A(J) > A (Max) Then Max = J Next J End Sub Создадим обработчик события сортировки массива, который будет включать: • очистку полей списков шагов сортировки; • цикл со счетчиком I, в котором осуществляется пошаговая сортировка массива по убыванию и который, в свою очередь, будет включать: — вызов процедуры поиска индекса максимального элемента; — перестановку элементов массива; Алгоритмизация и основы объектно-ориентированного программирования 347 ВЫВОД массива для каждого шага сортировки в списки с использованием цикла со счетчиком и оператора выбора. 4. Private ЗгдЬ Button2_Click_l (ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Button2.Click 'Очистка полей списков шагов сортировки ListBoxS . Item.s . Clear () ListBoxl1.1terns.Clear() Labell.Text = " " 'Сортировка For I - 0 To 8 Labell.Text = Labell.Text + " " + Str(I + 1) + " " 'Вызов процедуры поиска индекса максимального 'элемента МаксЭлемент{I, Мах) 'Перестановка элементов массива R = А(1) А{1) - А(Мах) А (Мах) = R 'Вывод массива для каждого шага сортировки For К - О То 9 Select Case I Case О ListBox3.Items.Add(Str(A(K))) Case 8 ListBoxll.Items.Add(Str(A(K))) End Select Next К Next I End Sub Ha языке Visual J# максимальный элемент будем искать с использованием функции. Программный модуль проекта будет содержать: • обработчик события заполнения массива случайными числами; • обработчик события сортировки массива; • функцию поиска максимального элемента. Создание программного кода проекта на языке Visual J# Объявим переменные для использования в программном модуле и создадим обработчик события заполнения целочисленного массива случайными числами. 348 Глава 4 2, Random rnd = new Random (); int [ ] A = new int [10] ; int I, Jf Max, K, R; private void buttonl_Ciick (Object sender. System EventArgs e) {listBoxl.get_Iterns{) .Clear (); listBox2.get_Iterns() .Clear {); //Заполнение массива for (К = 0; К <= 9; K++) {A[К]=rnd.Next(100); listBoxl.get_Iterns().Add(System.Convert. ToString (K)); listBoxC.get_Items().Add(System.Convert. ToString(A[K])); } Функция поиска максимального элемента MaxEl (int I) будет многократно вызываться из обработчика события сортировки. Функция содержит входной параметр I (индекс максимального элемента массива после предыдущего шага). Возвращаемое функцией значение — result (индекс максимального элемента массива после данного шага). 3. //Поиск максимального элемента int MaxEl(int I) {int result; result = I; for (J - I + l; J <= 9; J^ + ) {if (A[J] > A[result]) {result = J; } } return } result; Создадим обработчик события сортировки массива. 4. private void button2_Click (Object sender. System. EventArgs e) {//Очистка полей списков шагов сортировки listBoxS.get_Iterns().Clear() ; listBoxll.get Items() .Clear (); labell.set_Text Г"); //Сортировка Алгоритмизация и основы объектно-ориентированного программирования 349 for (I = 0; 1 <= 8; 1+^) {labell.set_Text (labell.geu_Text() + " " + System. Convert.ToString (1 + 1) + " "] ; //Вызов процедуры поиска номера максимального //элемента Мах - MaxEi(I); //Перестановка элементов массива R = А [ I ] ; А[1] = А[Мах]; А [Мах] = R; //Вывод массива для каждого шага сортировки for (К - С; К <= 9; К + +) {switch (I) {case 0: 1istBoxS.get_Iterns{).Add(System.Convert. ToString(A[K])); break; case 8: iistBoxl1.get_Iterns().Add(System.Convert. ToString(A[K])); break; } Ha языке Visual C# максимальный элемент будем искать с иснользованием вложенного цикла. Программный модуль проекта будет содержать: • обработчик события заполнения массива случайными числами; • обработчик события сортировки массива, в котором поиск максимального элемента осуществляется во вложенном цикле. Создание программного кода проекта на языке Visual C# Объявим переменные для использования в программном модуле и создадим обработчик события заполнения целочисленного массива случайными числами. 2. Randoim rnd = new Random (); int [ ] A = new int [10] / int I, S, Max, K, R; private void buttonl_Click(object sender, System. EventArgs e) 350 Глава 4 {labeil .Text listBoxl.Items.Clear{); listBox2.Items.Clear(); //Заполнение массива for (К = 0; К < A.Length; K+ + ) {A[К]=rnd.Next(100); listBoxl.Items.Add(Convert.ToString(K)); listBox2.Items.Add(Convert.ToString(A[K])); Создадим обработчик события сортировки массива. 4. private void button2_Click(object sender, System. EventArgs e) {//Очистка полей списков шагов сортировки listBox3.Items.Clear() ; listBoxl1.Items.Clear() ; //Сортировка for (I = 0; I < A. Length-1; I + +) {labeil.Text = labeil.Text + " " + Convert. ToString(I+l) + " //Поиск максимального элемента Max = I ; for (J I + l; J < A.Length; J+ + ) {if (A[J] > A[Max]) {Max = J; } } //Перестановка элементов массива R = A[I]; A[I] = A[Max]; A[Max] = R; //Вывод массива для каждого шага сортировки for (К = 0; К < А. Length; К++) {switch (I) {case о: listBoxS.Items.Add(Convert.ToString(A[K])); break; case 8: listBoxll.Items.Add(Convert,ToString(A[K])); break; Алгоритмизация и основы объектно-ориентированного программирования 351 Запуск проекта на языках Visual Basic .NET, Visual C# и Visual J# 5. Запустить проект (см. рис. 4.53). Щелкнуть по кнопке Заполнить массив. В первый список будут выведены значения индекса массива, а во второй список — значения элементов массива — случайные числа. Щелкнуть по кнопке Сортировать. В списках с третьего по одиннадцатый будет реализована пошаговая визуализация процесса сортировки числового массива. На надпись будут выведены номера шагов сортировки. ■ ■ В н В! в в б 7 8 9 0 . 26': 98 98: 98 98:: 982 ‘98':'^ 98 98- "98:2 1 78. 78 81 ■ 81 8Г 81 81 81 81 81 :: 2 . 59 . 59. 59.:' 78 78, 78 78.: 78. 78, 78. . 3 ■ 1 :: 1 . 1 1 ■ 76-: 76^ 7б2 Ж] 76-: 76.4 4 ■ 442 44- 44 : 44.' 44- 59 59-:] 59-: 59 - 59:2 5 53 53> 53: 53 . 53-; 53 542 54- 54 , 54. 6 70 76 76 76 1 1 1 : 53 53' 53 .. 7 54 54 54 54 544 54 53 2 1 44 ■ 44.■. 8 98 26- 26^ 26 2б.| 26: 26 ! 26" 26 26'^ 9 81 81 i 78^ 59 59-] 44.. 44 ; 44 . 1 1 -2 Заполнить массив Сортировать ■ят1«ччнт^^ Рис. 4.53. Проект «Сортировка числового массива- Создание графического интерфейса проекта на языке Turbo Delphi 1. Поместить на форму (рис. 4.54); • таблицу StringGridl, которая будет использоваться для вывода значений индекса целочисленного массива, номеров шагов сортировки, числового массива, заполненного случайными числами, а также состояния массива после каждого шага сортировки; • кнопки Buttonl и ButtonZ для создания обработчиков событий заполнения массива и сортировки. Программный модуль проекта будет содержать: • обработчик события заполнения массива случайными числами; 352 Глава 4 • обработчик события сортировки массива, в котором поиск максимального элемента осуществляется во вложенном цикле. Объявим переменные для использования в программном модуле и создадим обработчик события заполнения целочисленного массива случайными числами. of integer; 2. var A: array[1..10 I: integer; J: integer; K: integer; R: integer; Max : integer; procedure TForml.Button1Click(Sender: TObject); begin //Заполнение массива Randomize; for i:=0 to 9 do begin for j:-0 to 9 do begin StringGridl.Cells[i+2,0] := IntToStr (i + 1); StringGridl.Cells[0,j+1] IntToStr {j); A[j] := Random(100); StringGridl.Cells[l,j+1] := IntToStr(A[j]); end; end; end; Создадим обработчик события сортировки массива. 4. procedure TForml.ButtonSClick(Sender; TObject); begin //Сортировка For I := 0 To 8 Do begin //Поиск индекса максимального элемента Max : = I ; For J:-I + lTolODo begin If A[J] > A[Max] Then Max := J; end; //Перестановка Алгоритмизация и основы объектно-ориентированного программирования 353 R : = Л [ I ] ; А[1] А[Мах]; А [ Ма X ] : R; //Вывод массива в таблицу для каждого шага //сортиров км For К : - О То 9 Do StringGridl.Cells [ i + 2, к-1 ] : ^ IntToStr(A[к]) ; end; end; 5. Запустить проект (см. рис. 4.54). Щелкнуть по кнопке Заполнить массив, В нулевой столбец таблицы будут выведены значения индекса массива, в нулевую строку — нумерация шагов сортировки, а в первый столбец — значения элементов массива (случайные числа). Щелкнуть по кнопке Сортировать массив, В столбцах таблицы будет реализована пошаговая визуализация процесса сортировки числового массива. СорТ^4Х5В1<.а 4HLW»Or ^ . 3 4; 5 6 8 [9 -I |94 94 94 У4 94 94 94 94 94 38 38 53 63 6S 63 63 63 63 63 ; 1 1 1 60 50 60 60 60 60 60 ! 59 59 59 59 5-^ 59 59 59 59 59 : 24 24 24 24 24 55 55 ■>. 55 1 Ф 63 63 38 38 38 38 33 38 33 га 5 5 5 5 5 5 5 24 24 24 Г л 55 55 55 55 55 24 24 5 20 20 и 20 20 20 22 20 20 20 5 5 94 60 50 ' 1 ) Г*п Запопнить иассие 1|Сортирове(Ть нвссме! Рис. 4.54. Проект «Сортировка числового массива» на языке Turbo Delphi Компьюте^ый ippaKTHKyivi 4.23. Создать проект «Сортировка числового массива». Windows-CD 354 Глава 4 TurboDelphi-CD .. .\Projects\array ByteSort*\ 4.16.4. Сортировка строковых массивов Под сортировкой строкового массива понимается процесс перестановки значений элементов массива, целью которого является размещение строковых значений элементов массива по возрастанию (или по убыванию) (сначала по первым символам, затем по вторым и т, д.). При сортировке строкового массива по возрастанию его элементы располагаются в прямом порядке (числа, латинский алфавит от А до Z, русский алфавит от А до Я), а при сортировке по убыванию — в обратном порядке (русский алфавит от Я до А, латинский алфавит от Z до А, числа). Проект «Сортировка строкового массива». Заполнить строковые массивы буквами русского алфавита и компьютерными терминами из текстовых файлов. Отсортировать массив, содержащий компьютерные термины, по возрастанию и сохранить его в текстовом файле. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi 1. Поместить на форму (рис. 4.55): • надпись Label 1, которая будет использоваться для вывода элементов строкового массива, заполненного из текстового файла буквами русского алфавита; • список ListBoxl, который будет использоваться для вывода строкового массива, заполненного из текстового файла компьютерными терминами; • список ListBox2, который будет использоваться для вывода отсортированного строкового массива, содержащего компьютерные термины; • кнопки Buttonl — Buttons для создания обработчиков событий заполнения строковых массивов, сортировки, вывода и сохранения отсортированного массива компьютерных терминов. Алгоритмизация и основы объектно-ориентированного программирования 355 Создадим текстовые файлы, содержащие буквы русского алфавита и компьютерные термины. 2. Создать в текстовом редакторе файл и ввести буквы русского алфавита по одной букве в строке. Сохранить файл alphabet.txt в кодировке Unicode. 3. Создать в текстовом редакторе файл и ввести компьютерные термины по одному в строке. Сохранить файл term.txt в кодировке Unicode. Создание программного кода проекта на языке Visual Basic .NET Объявим переменные для использования в программном модуле: • счетчики циклов; • строковый массив, состоящий из 33 элементов, значениями которых будут буквы русского алфавита; • строковый массив, состоящий из 10 элементов, значениями которых будут компьютерные термины до сортировки; • строковый массив, состоящий из 10 элементов, значениями которых будут компьютерные термины после сортировки. 4. DimI, К, J As Byte, А (32), В (9), С (9) As String Объявим переменную, хранящую в памяти адрес объекта StreamReader. Создадим обработчик события заполнения строкового массива из текстового файла, содержащего буквы русского алфавита. ' 5. Dim sra As StreamReader Private Sub Buttonl_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Buttonl.Click TextBoxl. Text = "" sra = File . OpenText ('"alphabet. txt") For I = 0 To 32 A(I) = sra.ReadLine() TextBoxl.Text = TextBoxl.Text + A(I) Next I sra.Close () End Sub Объявим переменную, хранящую в памяти адрес объекта StreamReader. Создадим обработчик события заполнения строкового массива из текстового файла, содержащего компьютерные термины. 356 Глава 4 6. Dim srt As StreamReader Private Sub Button2_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Button2.Click srt = File . OpenText {"term. txt") For К = 0 To 9 B(K) = srt.ReadLine0 ListBoxl.Items.Add(B(K)) Next К srt.Close () End Sub Создадим обработчик события сортировки массива. В исходном строковом массиве В [ ] компьютерные термины хранятся в неупорядоченном виде. Сравним последовательно во внутреннем цикле со счетчиком К букву «а» алфавита с первыми символами терминов, в случае их совпадения присвоим первому элементу результирующего строкового массива С [ ] значение, равное этому термину. Повторим эту процедуру последовательно для всех букв алфавита с записью в очередной элемент массива С [ ]. Получим упорядоченный строковый массив С [ ] . Создание обработчика события сортировки строкового массива на языках Visual C# и Visual J# 7. private void button3_Click(object sender, System. EventArgs e) {J 0; for (I - 0; I < 33; I + + ) {for (K = 0; К < 10; K++) {if (A[I] == 3[K] .Substring (0,1)) {C[J] - B[K]; J - J + 1 ; } Создадим обработчик события вывода отсортированного строкового массива, содержащего компьютерные термины, в список. 8. private void button4_Click(object sender. System. EventArgs e) {for (K = 0; К < 10; K+ + ) Алгоритмизация и основы объектно-ориентированного программирования 357 list3ox2.Items.Add(С[К]); Создадим обработчик события сохранения отсортированного строкового массива, содержащего компьютерные термины, в текстовом файле. Создание обработчика события сохранения отсортированного строкового массива на языке Turbo Delphi 9. var f3: TextFile; procedure TForml.ButtonSClick(Sender: TObject); begin AssignFile{f3, 'terml. txt') ; Rewrite(f3); For I := 1 To 10 Do begin writeln (f3, C [I]); end; CloseFile(f3); end; Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi 10. Запустить проект (см. рис. 4.55). Щелкнуть по кнопке Считать алфавит. На надпись будут выведены буквы русского алфавита. Щелкнуть по кнопке Считать термины. В первый список будут выведены неотсортированные компьютерные термины. Щелкнуть по кнопке Сортировать. Компьютерные термины будут отсортированы. Щелкнуть по кнопке Показать термины. Во второй список будут выведены отсортированные компьютерные термины. Щелкнуть по кнопке Записать в файл. В текстовом файле будут сохранены отсортированные компьютерные термины. 358 Глава 4 -Ini xi )|абвгдеёжзий^к^^/1нопрстуфх'ц^^ *| Сч^аггь алфавк<г Г Считать термины *л< ■ *- «1 Сортировать J Покмать 1 тврми«»1 > Записать в ^ файл компьютер Г' алгоритм 1 алгоритм !' байт 1 процессор 1 винчестер | модем \ дискета \ дискета | информатика [ байт г компьютер 5 тэг 1 ■ модем Г информатика f ' объект ■ объект процессор • винчестер д' тэг Рис. 4.55. Проект «Сортировка строкового массива» Компьютерный ррактикум Windows-CD 1Щ" 4,24. Создать проект «Сортировка строкового массива». ...\informatika10\...\arrayStringSort\ TurboDelphi-CD .. .\Projects\arrayStri ngSort\ Глава 5_____________________ Практические задания для тематического и итогового контроля Тема «Архитектура компьютера и защита информации» Практическая работа 1.1 Создание логического диска и его форматирование Задание. В операционной системе Windows произвести создание логического диска и его форматирование в определенной файловой системе. Варианты выполнения работы: • создание логического диска с использованием различных файловых систем (FAT32 или NTFS) и различных размеров кластера. Создание логического диска и его форматирование 1. Ввести команду [Программы-Администрирование- Управление компьютером^. В появившемся диалоговом окне Управление компьютером в меню консоли выбрать пункт Управление дисками. Угцэавление комп1ж?.тером * к<холь Дд>^г&ие Вид <уче> Спрша ■«Ий yt ip^/tei i/e комг1ыоте{)ом (лока/1Ьньу|)\Загку»,^ ;idg|xj 1 ДискО J Основной ГЬдктючаи IwindowsXP (С:) j '24,02 Го 1 /отравен (Система) jlDocunents (О:) 5,01''Ь‘ГР5 Исправен 1 IMiitknecte (G:) 45.64 ГЫГТБ .Исгравен ..IMtcrosoft-CO (F:) '.bS'iWbNTT'S • [исправен ^ Диск 1 ОсноекЛ 1 19.07 ГБ Год№»нен '2VS%Tcio\v«-rOv.6 .|20RIGI.\AL (Н:) 1.05 ГБ NT^s 15,54 ГБ =ДТЭ2 !истраееи .истрэеен 5’9 ГБ :Саободнз ,2Mode4-CO (l:j ■::&ЗГЬ ЧТ=Б ; испрае&' -2АРХИВ (J:J 5,57 т-Б FA’32 Исправен тоо^иь Подклю;еи -ой co-R»« г 1 ш. Дк W^dows-rX>,v.6. (К:) 'СО Vfe '£РЪ Истэавен ННВНР’ ■ o--ti 5,72 ГБ (I:) ‘72 ГБ ••;-с-5^вн 360 Глава 5 В окне отобразятся жесткие диски и оптические дисководы и существующие на них логические диски. Выберем свободный раздел диска (отмечен зеленым цветом) и создадим на нем логический диск. 2. В контекстном меню свободного раздела диска выбрать пункт Создать логический диск... Будет вызван Мастер создания разделов. В третьем диалоговом окне указать размер раздела. Щелкнуть по кнопке Далее. Мастер создания разделов -SJ Указание размера раздела Выберьпе размер разаепа е г^еделах кн<нимапьмогс и максимального значений Мака*1«алы1ыйрвзмсррв«»ла|М£^: -5936 Минимальный рвзм{9Радшелв(ИБ^ 8 -Вьи^ямнь» размер разоела 5930 <Нг>эас j Да/мё > | Отмейа | 3, в четвертом диалоговом окне указать букву для обозначения логического диска. 4. В пятом диалоговом окне указать тип файловой системы, размер кластера и метку тома. Мастер создания разделов xj Форматировзние раздела Для сохранения данных на этом раэделе его необходимо сначала Отформатировать Выберите, требуется ли фермтфоеать этот раэдел. и устаноеите параметры Формвп«юе»«я. если это необходимо- С Не Ф<рмвпровагьданный раздел ^^ормапгмроватьдатыйраэаеяслеАувирвнобразои Файловая система: Zl Ра»«19р кластера |По|длолчанм1£) Метка тома: По ЧГ'ЮЛ--1-5Ч11Ю 512 1024 Р Быстрое Формвпфо» 2048 4096 8192 !1«Г.Б 32 КБ 64 КБ Файлоеипапок Назад I > I Отмена Практические задания для тематического и итогового контроля 361 5. В шестом диалоговом окне проверить правильность введенных параметров и щелкнуть по кнопке Готово. В окне Управление компьютером отобразится процесс форматирования раздела. Для получения информации о дисках и логических разделах дисков можно воспользоваться программой тестирования компьютера SiSoft Sandra. Получение информации о дисках 6. Запустить информационный модуль Информация о дисках. В списке Накопитель выбрать созданный логический диск. В окне появится информация об объеме кластера, количестве кластеров на логическом диске и др. ЯВг Информация о дисках - SiSoftW, Это окно одержит сведений о лискох^ достутьи вшей laLsJ т«с к удаленных, Наютпигеп» j _j новый той (М ) “3 Не испол5^«тся i Логический диск ^ Сектооов из Кластер в ^Бзйтов из Сек тор 512 byle(s) ^Размер кластера 4кВ ^Всего кластеров 1518134 Свободных кластеров 1509370 '•у'Физический диск ^Цилиндры 2491 ■^Головки 255 ^Секторов на дорояску 63 Байтов ча Сек’ор 512Ьу1еЫ d / Практическая работа 1.2 Запись CD- или DVD-диска Задание. Произвести запись CD- или DVD-диска (например, с помощью приложения DeepBurner). При необходимости произвести предварительное стирание CD-RW или DVD+RW диска. Варианты выполнения работы: • запись CD-R или CD-RW или DVD£R или DVD±RW диска; • создание мультисессионного или односессионного диска; • запись на диск различных наборов файлов. Н Информатика и ИКТ. !0к,т 362 Глава 5 Запись CD- или DVD-диска 1. Вставить в оптический дисковод перезаписываемый диск. Ввести команду [Запись-Стереть^. В появившемся диалоговом окне Стирание диска щелкнуть по кнопке Быстрое и наблюдать прогресс стирания. I С1ирание дискг:> JsJM г-Пр»«оцг — 1:0:О.К: SAMSUNG CDRW/DV0 SM-352BT806 йадрость: ГмТГ "3 П|)<т<»сгмранмя;г Закрыть БЫС^фОв; J 2. Для записи оптического диска выбрать ввести команду [Файл-Новый], в появившемся диалоговом окне выбрать тип проекта и щелкнуть по кнопке Далее>. Выберите тип проекта: проекта:’' <5* С©8ЯйяивСО/ОУ0 csaHHtofrfi Г |лаА^в Ауаио-Ш = • j Г n^ioJioc IS0*<^e39 Открыть. Отмена 3. в появившемся диалоговом окне Новый проект выбрать тип мультисессии. Новый проект ’ Муяьп^есеин;---- ■ ---- С Созав1ъм9льтис«х>ю№ъй^шск С Прооолжигь <»ссио ^ Без м!^тисессми Отм«м Далее> 4. В окне Проводник выбрать файлы для записи и скопировать их в папку оптического диска. На нижней шкале будет показан объем, который файлы займут на оптическом диске. практические задания для тематического и итогового контроля 363 файл Правка Вид ; D Q? н :;Т Эашсь 1>Мгфумекп>) Oi440 Справка Й^^*;2'%5ЭСЗ ^ ' 0 Ш 8Я!Г.1!м;-.!г£ г : . ^JSl Ш- Unieethraixeteahies То> 0мр6ит«( Рюпом Содержим Автоэапуо Печать эт| Запись ди' !л»мь_________ ?^?бь'Тш7$гв1« ^х] ^ а ^ЗЛ1ПНГ.......... 2 J3 rtoimaJkelO riwtnatkaT ^ inf0ffndW(e8 '£ inlotmelJ^eS О тьгы ,W ^ ргаслсот 1+1 О so" [+1 ^ Jeaichet$ ^ Тел $ ^ tests “ О ^OKtbook Имя 1 PeoM*f> ■_)rJ..-natAa1C _Jr/y"'dlika7 ■_j fiiomabkdS inlof'ndlikeS ^jjpiecticum 4^ soft i^laaichets О Test O'es's taxttiooK 3Autoni\hf 41 content htm 25 512 jt)ndeKhtin 159 QSTARTEn EXE 27136 3 Statist in 153 ' Wm6 1|50DG§I iF s '-=j5|xf ■> Н=[¥ Hid Рабочий стол 2 CJ Мои документы ^ Мой "омгьютер 2 ДискЭ,5 (А:) т JWmcJowsXP (С:) % ^ 10оситпвГ|\а (О .) 2 2WMOf^C;0 V.6.Q I :+1 iMicrosoft-CD (F:) Е <«е iMultimedia (G;) Ш <ф 20RIGINAL (Н:) ' il<^2MoOel-CD(I:) 2 <и» 2АРХИ6 О ) 2 0 СО-Дисковод (К:) $ ^ OVO-RW дисковод (I ►J 4# Новый том (М;) Z Nero Scout 2 О Общие документь! • -т- О документы 2 Сетевое окружение М . : - \ И Onfbrmatka? Omfbrmatlcae Oinfbrmatkag QrifbrmatkalO i;;imer«i Cipracticum .JRECYCLER iiDsoft .jSystem volume information Otearchers QTest ^ tests OfBxttxxitc ^Autorun.nf t content, htm ndex.htm C3STARTER.EXE 3starter.ini Jj 100 M6 200 M6 SOOM6 бШМб 700Мб Для начала записи ввести команду [Вид-Запись диска], В появившемся диалоговом окне будут отображены: • время этапов создания диска; • прогресс записи; • процент выполнения; • оставшееся время записи; • прошедшее время с начала записи. 17:03:52 Пишущий привод d 17:03:52 Поиск закончен 17:04:11 Подготовка к записи 17:04:11 Т ип носителя в приводе: CD-RW 17:04:18 Добавление закончено 17:04:19 Сессии не импортирукугся 17:04:19 Создание образа CD 17.04:38 Проиесс записи нечет на скорости 4Х... ^ f Opteoa: — ““ Скорость: ;|мл- .i*‘ ir.', :Г r-:v/^C'VL' -iJ ■ E;\infOTT«til^104)e^>N\Tf«riflie\PK4e^1 е?» Г npa-p«sc 3«wcK--------------------------- i Выпотеко: Оставшееся Прошло времени. 35^ ia22 QQ:3^ г Буфер ycrpoiteiiM: 11т111шш1ш1п11шп1пптшшш11т Отмена Стереть Записать Соэдагь ISO 364 Глава 5 Практическая работа 1.3 Установка параметров BIOS Задание. Включить компьютер. С помощью программы BIOS Setup произвести установку новых параметров конфигурации компьютера. Варианты выполнения работы: • различные версии BIOS; • различные значения конфигурационных параметров. BIOS и загрузка операционной системы 1. Включить компьютер. Наблюдать процесс тестирования компьютера. В случае возникновения звуковых сигналов или сообщений об ошибке устранить неисправность. nodular BIOS v4.51PS/ йп Eneriii Star йПи If Copyright (C) 1904-56» Board Softwre. Irc. ^ hRB-N6(tiib2/366 CPU Found Пеяогу Test :^13107ZK OK hoard Plug and Play BIOS Extension vi.BB Copyright (C) 1998, hoard Softoare. Inc Found bm : CRMEtea Press Ш to enter SEIUT е7/В9/199в>1»РЭ-586В-1ТЕ-2йаШВС-е0 В некоторых случаях появление сообщения об ошибке связано с забывчивостью пользователя. Например, в случае появления сообщения «Invalid Boot Diskette» (пер. с англ. «Несистемная дискета») для продолжения загрузки необходимо просто извлечь несистемную дискету из дисковода. В процессе тестирования BIOS сравнивает получаемые данные о конфигурации компьютера с информацией, хранящейся в CMOS — специальной микросхеме памяти, расположенной на системной плате. Если данные не совпадают, то появляется сообщение: «System Option Not Set» (пер. англ. «Системные параметры не установлены»). В этом случае необходимо с помощью утилиты BIOS Setup установить новые конфигурационные параметры. Практические задания для тематического и итогового контроля 365 2. Для входа в BIOS Setup нажать клавишу, указанную на экране загрузки (чаще всего [Del]), в процессе тестирования. Утилита имеет интерфейс в виде системы иерархического меню, перемещение по которому производится с помощью клавиш управления курсором. Для правильной установки даты, времени и параметров жестких и гибких дисков необходимо использовать панель STANDARD CMOS SETUP (Стандартная установка). 3. Установить курсор на пункт меню STANDARD CMOS SETUP и нажать клавишу {Enter}, В появившемся окне установить курсор на элемент конфигурационных данных (выделяется цветом) и с помощью клавиш {PageUp} и [PageDown] установить требуемое значение параметра. 366 Глава 5 С помощью панели BIOS FEATURES SETUP (Возможности BIOS) можно установить защиту от заражения вирусом загрузочного сектора системного диска. В этом случае будет заблокировано любое изменение загрузочного сектора, и поэтому при переустановке или установке операционной системы защиту необходимо снять. 4. Установить курсор на пункт меню BIOS FEATURES SETUP и нажать клавишу {Enter}, На появившейся панели установить курсор на элемент конфигурационных данных Anti-Virus Protection и установить значение Enable, Для предохранения данных от несанкционированного доступа можно с помощью BIOS Setup установить пароль для входа в систему или в установку конфигурационных параметров. Обязательно хорошо запомните или запишите пароль, так как в случае его утери вход в систему становится невозможным (сброс пароля возможен только аппаратно, путем отключения микросхемы BIOS от источника питания — батарейки). 5. На панели BIOS FEATURES SETUP выбрать пункт Security Option и установить значение System или Setup, 6. Открыть панель SUPERVISOR PASSWORD, На появившейся панели Enter Password ввести пароль и нажать клавишу {Enter}, Повторно ввести пароль для подтверждения его правильности. Практические задания для тематического и итогового контроля 367 практическая работа 1.4 Защита информации Задание. Произвести комплексную защиту компьютера от вредоносных программ. Установить и настроить следующие программы защиты информации: • антивирусные программы: avast! или Antivir Personal Edition; • программу удаления рекламных и шпионских программ: Ad-Aware; • программу восстановления системы: CCleaner; • межсетевой экран: Outpost Firewall. Тема «Информация. Системы счисления» практическая работа 2.1 Кодирование текстовой, графической и звуковой информации Задание. Определить, сколько поместится на гибком диске, флэш-диске, жестком диске, CD-диске и DVD-диске страниц, каждая из которых содержит: • 40 строк текста по 50 символов в строке в кодировке Unicode\ • изображение 200 на 100 точек с палитрой 16 777 216 цветов; • звукозапись среднего качества с частотой дискретизации 24 000 Гц и глубиной кодирования 16 битов. 368 Глава 5 Варианты выполнения работы: • различная емкость гибкого диска, флэш-диска, жесткого диска, CD-диска и DVD-диска; • различное количество строк и символов в строке и кодировка текста; • различный размер и палитра цветов изображения; • различная частота дискретизации и глубина кодирования звукозаписи. Практическая работа 2.2 Системы счисления Задание. Перевести число, содержащее целую и дробную части, из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную системы. Варианты выполнения работы: • различные десятичные числа. Тема «Логика и логические основы компьютера» Практическая работа 3.1 Равносильность логических выражений Задание. Докажите, что логические выражения равносильны. Для доказательства постройте таблицы истинности логических выражений в электронных таблицах. Варианты логических выражений: • A& BvA&B&(CvD)=A&B; • (А V В V С) & (А V В V С) = В & А & С; • (А V Б) & (Б V А) & (С V В) = А & (С V Б); • (А ^ В) & (А V В) = (А о В) & (А & В) V (А 8^ Б). Таблицы истинности логических выражений в электронных таблицах Microsoft Excel и OpenOffice.org Calc .-РтП Windows-CD Вариант логических выражений: (А V В V С) 8с {А V В V С) - В & А Sz, С г Ilk ii ш \informatika10\logic\log.' практические задания для тематического и итогового контроля 369 113 Microsoft Excel - log.xis > файл □зс^са ^ Вст^ка Форизт CgDBMC Да>д->ые Окно Оправка - 5 X ; J i-J ' и 1 10 - А' ■ 1 F12 ▼ fit =И(В12,012;Е12) 3 В С \ D Е G ! Н ч 1 “2 A в С В Av BvC AvBv С AvBvC (Av В V Q & (Av Bv С) '.1 G 0 0 ИСТИНА ЛОЖЬ ИСТИНА ЛОЖЬ ЛОЖЬ I 3 0 0 1 ИСТИНА ИСТИНА ИСТИНА ЛОЖЬ ложь J .4 0 0 ЛОЖЬ ИСТИНА ЛОЖЬ ИСТИНА ИСТИНА s 0 1 ЛОЖЬ ИСТИНА ИСТИНА ложь ложь ■ 1 8 1 0 0 ИСТИНА ИСТИНА ИСТИНА ложь ложь '! 7 0 I ИСТИНА ИСТИНА ИСТИНА ложь ложь j .8 0 ЛОЖЬ ИСТИНА ИСТИНА ложь ложь 1 . 1 9 1 1 ложь ИСТИНА ИСТИНА ложь ложь ■ i 18 i iU A в с А С В&А&С / ж 0 0 0 ИСТИНА ИСТИНА 1 ЛОЖЬ \ ■1 13 0 0 1 ИСТИНА ЛОЖЬ ЛОЖЬ i 14 0 0 ИСТИНА ИСТИНА ИСТИНА 16 0 1 ИСТИНА ЛОЖЬ ЛОЖЬ J 16 1 0 0 ЛОЖЬ ИСТИНА ЛОЖЬ 17 1 0 1 ложь ЛОЖЬ ЛОЖЬ 18 1 1 0 ЛОЖЬ ИСТИНА ЛОЖЬ J9^ 1 1 1 ложь ЛОЖЬ ЛОЖЬ лг* w. • t Ir :н1/тупица MCTwiiocw / Псг«чео<иефункиии ( 1 Готово л Тема «Алгоритмизация и основы объектно-ориентированного программирования» Практическая работа 4.1 Проект «Визуализация сортировки числового массива» Задание. Заполнить числовой массив, содержащий 10 элементов, числами в диапазоне от 0 до 100. Произвести сортировку массива с отображением шагов сортировки: в списки вывести значения элементов, а в графические поля — линии, пропорциональные значениям элементов. Перед выводом каждого шага сортировки сделать паузу. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Варианты элементов управления для создания и запуска обработчиков событий (событийных процедур): • кнопки; • пункты меню; • кнопки на панели инструментов. 370 Fwiasa 5 Создание программного кода проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Варианты заполнения числового массива: • случайными числами; • с клавиатуры; • из файла. Варианты сортировки: • по возрастанию с поиском максимального (минимального) элемента; • по убыванию с поиском максимального (минимального) элемента. Варианты поиска максимального (минимального) элемента: • с помощью процедуры; • с помощью функции; • во вложенном цикле. Варианты создания области рисования: • метод CreateGraphics (); • создание растрового изображения Image 1; • событие Paint. Запуск проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Windows-CD Вариант проекта: • кнопки; • случайными числами; • по убыванию с поиском ...\informatika10\...\arrayStringSort3\ максимального элемента; • во вложенном цикле; • метод CreateGraphicsО. TurboDelphi-CD .. .\Projects\arrayStrlngSort3\ практические задания для тематического и итогового контроля 371 Сор1И|Ю(жо 4i^cjK>i.joi о массиоа-З -rifljxJ 1 2 3 4 5 6 7 8 9 0 ^9 79 79 79 79.' 79 ”■ 79 79 1 :9. 19 78 78 78 78- 78- 78' 78. 78 2 64 64 54 • 64 64’ 64 64. 64 64 64 3 ■ 79 29 29 29 62. 62- 62' 62 52 62 4 7 7 7 7 7 ; ■ 53 53^ 53 53.. 53 5 ' 50- 50 50 50 50': 50 5о; 50.. 50' 50 6 :■ б " 6 6 6 . 6 6 6 ■ 29 291 29 7 : 78:: 78-;' 19 19 19Г. ’9 . 19:i 19^- 19i : 19 8 i 62-•. 62' ■ 62 62 29- 29. 29^' 6 7 9 ^ 53' 53^: 53,- i 53,' 53^:' 7 7 7 ' ' 6 • Заполнить массив Сортировать Практическая работа 4.2 Проект «Тест» Задание. Считать из текстовых файлов вопросы и правильные ответы в строковые массивы. В цикле: • задать вопросы; • получить и запомнить ответ в строковом массиве; • проверить правильность введенного ответа (сравнить введенный ответ с правильным), если ответ правильный, вывести сообщение «Правильно» на надпись, иначе вывести сообщение «Неправильно» на надпись и прибавить 1 к счетчику ошибок. В зависимости от количества сделанных ошибок вывести на надпись отметку. Сохранить введенные ответы в текстовом файле. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Варианты элементов управления для создания и запуска обработчиков событий (событийных процедур); • кнопки; • пункты меню; • кнопки на панели инструментов. 372 Глава 5 Создание программного кода проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Количество вопросов и соответствующих правильных ответов может изменяться в широких пределах. Содержание вопросов и соответствующих правильных ответов может быть из различных предметов (информатики, физики, математики, химии, истории, географии и других предметов). Запуск проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Вариант проекта: • пункты меню; • количество вопросов — 10; • предмет — информатика. Windows-CD TurboDelphi-CD ...\Projects\Test\ практические задания для тематического и итогового контроля 373 Практическая работа 4.3 Проект «Шифровка и дешифровка» Задание. Проект должен шифровать и дешифровать текстовые сообщения. Используем алгоритм шифрования, который базируется на использовании ключевой фразы (ключа шифрования). В процессе шифровки секретного текста необходимо заменить каждый символ секретного текста на порядковый номер этого символа в ключевой фразе. В процессе дешифровки последовательность чисел должна преобразовываться обратно в секретный текст с помощью той же ключевой фразы. Ключевая фраза должна содержать все символы, которые будут использоваться в сообщениях, и должна быть известна только шифровальщику и получателю сообщений. Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Варианты состава проекта; • одна форма, на которой происходит шифровка и дешифровка; • две формы, на первой форме происходит шифровка, а на второй — дешифровка; • две формы и независимый программный модуль, на первой форме происходит шифровка, на второй — дешифровка, а в программном модуле содержится программный код поочередного открытия форм. Варианты для создания и запуска обработчиков событий (событийных процедур): • кнопки; • пункты меню; • кнопки на панели инструментов. Создание программного кода проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi m Указания no шифровке. Будем последовательно вырезать в цикле символы из секретного текста, а затем во вложенном цикле будем искать такой же символ в ключевой фразе и запоминать его порядковый номер в целочисленном массиве. 374 Глава 5 Таким образом, секретный текст будет зашифрован последовательностью чисел, хранящейся в целочисленном массиве. Секретный текст вводится с использованием текстового поля, а шифровка выводится с использованием надписи. Образец ключевой фразы: «электронно-вычислительные машины, компьютеры (железо) позволяют находить значения функций, а ещё свойства готовых объектов». Указания по дешифровке. Шифровка в форме целочисленного массива выводится на надпись, С помощью ключевой фразы необходимо превратить эту числовую последовательность в секретный текст. Считывая по очереди числа шифровки (элементы целочисленного массива), необходимо вырезать из ключевой фразы символ, номер которого по порядку равен значению числа шифровки. Полученные символы последовательно выводятся на надпись, на которой в результате отображается исходный секретный текст. Запуск проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi Windows-CD Вариант проекта: • все варианты состава проекта на ^ ^ различных языках программирова-ния; • кнопки. ...\informatika10\...\Shifr\ TurboDelphi-CD ,.\Projects\Shlfr\ информаи/ка I ^ Пспучить Зашифровать**^ 15 8 8375 27 28 515 4 28 ]5 8 S3 7 5 27 26 5 15 4 28 инфоо^атика 1 Перейти к дешифроЕке 1 шифров-е Ответы и решения Глава 1. Архитектура компьютера и защита информации Windows-CD \practicum\otvet\ Глава 2. Информация. Системы счисления Windows-CD \practicum\otvet\ Глава 3. Основы логики и логические основы компьютера 3.4. а) X < -3 или X > 8. б) -3 < X < 8. 3.5. 1 -1 1 1 -1 3.6. Л = «2 X 4»; В = «3 X 3 = 9»; (А & В) V (А & Б) = (1 & 1) V ( О & 0) = 1 V О = 1. 3.7. Таблица истинности логического выражения А v В совпадает с таблицей истинности логического выражения А & В. 376 Ответы и решен21я А Б А Б А& Б А vB 0 0 1 1 0 0 0 1 1 0 0 0 t 0 0 0 0 1 1 0 0 1 1 3.9. Первый закон де Моргана: А в А в Av в В А&В 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 Второй закон де Моргана; А в А в А&В Д&“В Av В 0 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 1 0 0 1 0 0 3.10. (А V В) & (А V В) = А V (В & В) = А V о = А 3.11. X & В & Х&В = А (X V В) & (X V В) = А X V (В & В) = А X V о = А X = А Таблица 1. Процессоры шний вид Технология Кол-во элементов Год выпуска Частота (МГц) Шина данных Ши адр . - * л « 10 мк 2300 1971 0, 1 4 12 3 мк 29000 1978 5-10 16 20 - 'f\ 1,5 мк 120000 1982 4-25 16 24 % 1,5 мк 275000 1985 16-40 32 32 шний вид Технология Кол-во элементов Год выпуска Частота (МГц) Шина данных адр 1 мк 1180000 1989 25-133 32 32 0,8 мк 3100000 1993 60-266 64 32 0,35 мк 7500000 1997 266-333 64 36 D 0,18 мк 24000000 1999 400-1000 64 36 0,13 мк 42000000 2000 1000-3200 64 36 Ч523Я^ ^ V 0,065 мк = 65 нм 376000000 2006 3300- 3700 64 64 Злица 2. Элементы управления для ввода и вывода даннь нешнии вид Назначение Свойства Методы Отображает данные, которые нельзя изменить в процессе выполнения проекта dOoxl Используется для ввода и;ш отображения данных iTextBoxI Р1спользустся для ввода и отображения форматируемого текста Name — имя Text — надпись Location (X/ Y) — координаты верхнего левого угла элемента управления на форме 51ге (Width; Height)— размер (ширина; высота) BachCoIor —цвет фона ForeColor — цвет текста Font (Name; Size; Bold и др.) — шрифт (название шрифта, размер и начертание) Show --- показывает элемент управления Hide — скрывает элемент управления Focus— делает активным выбранный элемент управления Scale — масштабирует форму или элемент управления Refresh — перерисовывает форму или элемент управления Предназначен для отображения графических объектов Image — путь к графическому файлу, которьш отображается в графическом Draw — рисует графические примити- поле Вох1 Отображает список, в котором можно выбрать один или несколько элементов Items — позволяет задать или получить 311ачсния элементов списка Sorted — позволяет сортировать элементы списка Add — добавляет элемент в список Remove — ■ удаляет элемент из списка Элементы управления для организации интерактивного ь1ешнии вид Назначение Свойства Butloni Щелчок по кнопке вызывает событийную процедуру Смотри в таблице 2 свойства надписи Butt проис по КН( RadioButlonI OieckBpxl Представляет собой набор из двух или более взаимоисключающих вариантов Используется для представления выбора «Да/Нет» или «Ис-тинаУЛожь» Checked—указывает, выбран или нет данный переключатель или флажок AutoCheck — вызывает автоматическое изменение состояния переключателя или флажка при его выборе Radi Chec проис [lepCK Chec Chec проис флаж1 LUJJ Используется для создания панели инструментов проекта Buttons — набор кнопок Tool Butt ЧОК П| инсгр I t t « f I I I к I 1°М ■ Используется для визуальной настройки числовых параметров Выводит и задает числовое значение в списке Value — содержит число, соответствующее положению ползунка, счетчика или движка полосы прокрутки Minimum — минимальное значение ползунка или счетчика Maximum — максимальное значение ползунка или счетчика Тгас проис ке noj Nume Valu проис ке знг лица 4. Элементы управления, не отображаемые на фop^ в процессе выполнения проекта Внешний вид Назначение Свойства ШропЮ1а1од1 Позволяет задать параметры шрифта Font — параметры шрифта, установленные по умолчанию ShowDi диалого [SColorDialogl Позволяет задать цвет Color — цвет, установленный по умолчанию ShowDi диалоге SopenFileDiabgl Позволяет в иерархической файловой системе выбрать файл InitialDirectory — папка, открывающаяся в диалоговом окне ShowDi диалого 13 SaveFileDialogl Позволяет в иерархической файловой системе сохранить файл InitialDirectory — папка, открь/вающаяся е диалоговом окне ShowDi диалого Сохранг MainMenul Позволяет иерархическое проекта____ создать меню Text — позволяет вводить названия пунктов иерархического меню ® Irr^ageListl Используется для хранения рисунков, которые могут отображаться другими элементами управления Images — позволяет создать коллекцию рисунков ^Timerl Вызывает событие через определенные интервалы времени Interval --интервал времени между событиями в миллисекундах Start - Таблица 5. Типы переменных C# Visual J# Turbo Delphi Занимаемая память Диапазон Целочисленные типы ubyte Byte 1 байт от 0 до 255 short Smallint 2 байта от -32 768 до 32 76 int Integer 4 байта от-2 147 483 648 д long Int64 8 байтов от -9 223 372 036 8 до 9 223 372 036 85 Типы с плавающей запятой float Single 4 байта от-1.5 • 10-'‘5доЗ. значащих цифр е double Double 8 байтов от -5.0 • до 1 значащих цифр а1 Нет Нет 16 байтов от ±1.0 X 10“ до ±" значащих цифр Строковые типы char Char 2 байта знак Unicode g Нет String 2 байта X количество символов от 0 до приблизите 2 миллиардов знак( Логический тип boolean Boolean 2 байта True или False Таблица 6. Встроенные функции (методы) Visual Basic .NET Visual C# Visual J# Математические функции (методы) Math . Sqrt {) Math,Sqrt() System.Math.Sqrt() Math.Pow () Math.Pow{) System.Math.Pow() Math . Int () Math . Int 0 System.Math.Int() Math.Round() Math,Round{) System.Math.Round() Math.Sin 0 Math.Sin () System.Math.S i n() Math.Cos() Math.Cos () System.Math.Cos() Rnd () Microsoft.Visual Basic. Rnd {) M.icrosoft,Visual-Basic, Rnd () Функции (методы) преобразования типов данных System.Convert, ToSouble() System.Convert. ToSingle() System.Convert. ToDouble() Sys tcm.Convert. ToS inqle () System.Convert. ToDouble() System.Convert. ToSlngle() System.Convert. ToByte () Systern.Conve rt. Tolnt32 0 System.Convert. ToByte() System.Convert. Toln132 0 System.Convert. To.Byte() System.Convert. ToInt32 0 System.Convert. Tostr i ng () Sys tem.Convert. ToString () System.Convert. ToString{) Функции (методы) ввода и вывода InputBox() Microsoft.Vi sualBdsic. TnputBox() MsgBox() Microsoft.VisualBasic. MsgBox() Мд crosoft.Visual Basic InpulBox() Microsott.VisualBasic MsgBox() J. Кодирование алгоритмических структур «ветвление» и Кодирование алгоритмической структуры «ветвление» slET Visual C# Visual J# Tui if (Условие) if (Условие) If Услови { { Then Серия 1; Серия 1; begin } } Серия [else [else r end t Серия 2; \ Серия 2; }] [Else }] begin Серия 2 end] ; Кодирование алгоритмической структуры «выбор» NJET Visual C# Visual J# Tu ение switch (Выражение) switch (Выражение) Case Выра (case СПИСОК1 констант; (case СПИСОК1 констант: СПИСОК1 к Серия 1; Серия 1; begin break; break; Серия : case СПИСОК2 констант: case СПИСОК2 констант: end; Серия 2; Серия 2; список2 н break; break; begin [default: [default; Серия ? Серия; Серия; end; break; break; [Else } } begin Серия end; ] end; блица 8. Кодирование алгоритмической структуры «цикл 1ирование алгоритмической структуры «цикл со счетчико! 4ЕТ ач То ] Visual C# 1 for {int Счетчик ^ 1 ; Счетчик < НачЗнач; '• Счетчик v + ) Тег-о цикла; Visual J# for (int Счетчик - 1; Счетчик < НачЗнач; Счетчик { Тело цикла; } Tut For Счстч КонЗнач D< begin Тело цикл end; эдирование алгоритмической структуры «цикл с предуслов!/ 4ЕТ Visual C# Visual J# Tui j While (Условие) While (Условие) while Уел , { { begin ; Тело цикла; Тело цикла; Тело циь } 1 > end; одирование алгоритмической структуры «цикл с постуслови JET Visual C# Visual J# Tui do 1 do Repeat { ' { Тело цикл 1 Тело цикла; j 1 Тело цикла; \ Until Уел while(Условие); 1 while(Условие); ^ Словарь компьютерных терминов BIOS Программы начальной загрузки, находящиеся в микросхеме памяти {англ. «Basic Input/Output System» — базовая система ввода/вь/вода) Blu-Ray Оптический диск повышенной информационной емкости (англ. «Blue-Ray» — голубой луч) CD Компакт-диск (англ. «Compact Disk») CDFS Файловая система для работы с оптическими дисками, предназначенная для использования под управлением различных операционных систем (англ. «Compact Disk File System» — файловая система для компакт-дисков) DDR Тип модулей (англ. «Double Data Rate» — удвоенная скорость передачи данных). Модули памяти DDR имеют 184 разъема DDR2 Тип модулей оперативной памяти, которые обладают меньшим энергопотреблением, чем модули DDR, и поэтому могут иметь большую частоту. Модули памяти DDR2 имеют 240 разъемов DVD Цифровой универсальный диск (англ. «Digital Versatile Disk») ext3 Журналируемая файловая система для операционной системы Linux (англ. «extS» — 3-я расширенная файловая система) FAT Таблица размещения файлов (англ. «File Allocation Table») HD DVD Цифровой универсальиьт диск повышенной информационной емкости (англ. «High Definition DVD») HFS Журналируемая файловая система для операционной системы Мае OS (англ. «Hierarchical File System» — иерархическая файловая система) Словарь компьютерных терминов 387 NTFS Журналируемая файловая система для операционной системы Windows (англ. «New Technology File System» — файловая система новой технологии) POST Система самотестирования компьютера при включении (англ. «Power Оп Self Test») ReiserFS Журналируемая файловая система для операционной системы Linux (англ. «ReiserFS» — файловая система Райзера). SFX Самораспаковывающийся архив (англ. «SelF-eXtracting») UDF Файловая система для работы с файлами на оптических дисках (англ. «Universal Disk Format» — универсальный дисковый формат) Кластер Логическая единица хранения данных в таблице размещения файлов, объединяющая группу секторов (англ, «cluster») Мультисессия При записи CD- или DVD-диска можно записывать файлы в несколько сессий (приемов) Полевой транзистор Транзистор, в котором ток изменяется в результате действия перпендикулярного току электрического поля, создаваемого входным сигналом Синергетика Наука 0 самоорганизующихся системах в неживой и живой природе, обменивающихся веществом, энергией и информацией с окружающей средой Хакер Компьютерный злоумьшленник, который организует сетевые атаки на Интернет-серверы, а также проникает на них с неблаговидными целями Учебное издание Угринович Николай Дмитриевич ИНФОРМАТИКА и ИКТ Учебник для 10 класса Профильный уровень Ведущий редактор О. Полежаева Художник С. Инфантэ Художественный редактор О.Лапко Корректор Е. Клитика Компьютерная верстка Л. Катуркина Подписано в печать 22.01.08. Формат 60x90 Бумага офсетная. Уел. печ. л. 24,5 Тираж 25 000 экз. Заказ 400 Издательство «БИНОМ. Лаборатория знаний» Адрес для переписки: 125167, Москва, проезд Аэропорта, 3 Телефон: (499) 157-5272. E-mail: [email protected] https://WWW. Lbz. ru При участии ООО «ЭМПРЕЗА» Отпечатано с готовых файлов заказчика в ОАО «ИПК <‘Ульяновский Дом печати'>. 432980, г. Ульяновск, ул. Гончарова, 14 ЭЛЕКТИВНЫЕ КУРСЫ ИНФОРМАТИКА ИМЕЕТСЯ В ПРОДАЖЕ Угринович Н. Д. Исследование информационных моделей. Элективный курс : учебное пособие / Н. Д. Угринович. — 2-е изд., испр.—2006.— 200 с. : ил. Данное учебное пособие является частью УМК наряду с компьютерным практикумом на CD-ROM. Курс учит создавать и исследовать информационные модели из различных предметных областей с использованием систем объектно-ориентированного программирования и электронных таблиц. На CD-ROM представлены; практикум по построению и исследованию моделей в форме проектов на языках Visual Basic и Delphi, а также компьютерных моделей в электронных таблицах: дистрибутивы систем объектно-ориентированного программирования Visual Basic и Delphi, а также электронных таблиц StarOffice Calc и OpenOffice Calc. Для учащихся старших классов информационно-технологического, физико-математического и естественно-научного профилей. Угринович Н. Д. Исследование информационных моделей. Элективный курс : компьютерный практикум на CD-ROM / Н. Д. Угринович. — 2-е изд., испр. —2006. —200 с. : ил. CD-ROM включает интерактивный практикум, содержащий указания по выполнению практических заданий и ответы на них, т. е. готовые проекты на языках Visual Basic и Delphi. На CD-ROM размещено программное обеспечение, необходимое для реализации компьютерного практикума, а именно свободно распространяемые версии систем программирования Visual Basic и Delphi, а также файлы электронных таблиц. И ЗДАТЕЛ ЬСТВО ^БИНОМ Лаборатория знаний» 125167, Москва, проезд Аэропорта, д. 3 Толсфои; (499)157-5272 e-maii; [email protected], https://www.Lb2.1u Оптовые поставки; (495)174-7616. *71-1954, 170-6674 ЭЛЕКТИВНЫЕ КУРСЫ ИНФОРМАТИКА ИМЕЕТСЯ В ПРОДАЖЕ Монахов М. Ю. Учимся проектировать на компьютере. Элективный курс : практикум / М. Ю. Монахов, С. Л. Солодов, Г. Е. Монахова. -2-е изд., испр. —2006. ~ 172 с. : ил. Практикум обеспечивает преподавание курса компьютерного проектирования в старших классах. Практикум позволяет освоить основы современных компьютерных технологий проектирования и дизайна. Рассмотрены компьютерные системы проектирования AutoCAD и 3D Studio МАХ. Главы практикума представляют собой законченные учебные модули, каждый из которых включает е себя краткую теорию по теме, типовые практические работы, вопросы для самоконтроля и проверочные задания. Для учащихся старших классов физико-математического, естественно-научного, технологического профилей и универсального обучения. ИЗДАТЕЛЬСТВО <'БИНОМ Лаборатория знаний» 125167, Москва пров-зд Азро^'орта. д. 3 "’елефсн; {499; 1 57-5272 e-n'-ail '..i https://'AfvAc/.LD2.'’j Оптовые '-остаики. (495)174^76^6. '7)-}954 }70-в674 ЭЛЕКТИВНЫЕ КУРСЫ МАТЕМАТИКА ИМЕЕТСЯ В ПРОДАЖЕ Андреева Е. В, Математические основы инфор-матики. Элективный курс : учебное пособие / Е. В. Андреева, Л. Л. Босова, И. Н. Фалина. — 2-е изд., испр. —2007. —328 с. : ил. Учебное пособие входит в УМК для старших классов наряду с методическим пособием и хрестоматией. Материал раскрывает взаимосвязь математики и информатики, показывает, как развитие одной из этих научных областей стимулировало развитие другой. Дается углубленное представление о математическом аппарате, используемом в информатике, демонстрируется, как результаты, полученные в математике, послужили источником новых идей и результатов в теории алгоритмов, программировании и в других разделах информатики. Для учащихся старших классов информационно-технологического, физико-математического и естественно-научного профилей, желающих расширить свои теоретические представления о математике в информатике и информатике в математике. ИЗДАТЕЛЬСТВО = БИНОМ Лаборатория знаний» 125167, Москва, проезд Аэропорта, д. 3 Телефон; (499)157-5272 e-mail: [email protected], https://www.Lb2.ru Оптовые поставки; (495)174-7616. 171-1954, 170-6674 ЛИТЕРАТУРА ДЛЯ ШКОЛ ■ ИНФОРМАТИКА ИМЕЕТСЯ В ПРОДАЖЕ КОМПЬЮТЕРНАЯ ГРАФИКА Учебное пособие Залогова Л. А. Компьютерная графика. Элективный курс: учебное пособие/Л. А. Залогова. — 2-е изд. —2007. —212 с. : 16 с. ил. : ил. Учебное пособие входит в УМК для старших классов наряду с практикумом. В учебном пособии рассмотрены вопросы представления графических изображений, описания цветовых оттенков на мониторе и принтере, форматы графических файлов, описаны основные возможности редакторов векторной графики CorelDRAW и растровой графики Adobe Photoshop. Для учащихся старших классов физико-математического, естественно-научного, социально-гуманитарного и технологического профилей. ИЗДАТЕЛЬСТВО = БИНОМ Лаборатория знаний» 125167. Москва, проезд Аэропорта, д. 3 Телефон: (499) 157-5272 e-rnail: [email protected]. https://www.Lb2.ru Оптовые поставки: (495)174-7616. 171-1954, 170-6674 Николай Дмитриевич Угринович — ученый методист, заведующий лабораторией информати Московского института открытого образования, ка дидат педагогических наук, автор учебного и пр граммно-методического комплекса по кур( «Информатика и ИКТ», который включает учебни! для 7-11 классов, элективный курс, методическс пособие для учителей, электронные материал! Данный учебник для 10 класса предназначен для обучения инфо матике и ИКТ на профильном уровне. Вы получите прочные знания по: • архитектуре компьютера и методам защиты информации • системам счисления и понятию информации • логике и логическим основам компьютера Вы научитесь программировать на четырех языках объектн! ориентированного программирования: • Visual Basic • Delphi • Visual C# • Visual J# Учебник рекомендуется для изучения в 10 классах информационн( технологического и физико-математического профилей. ISBN 97К-5-94774-828-4 785 94 7 748284